@eui/components 18.0.0-next.50 → 18.0.0-next.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/docs/components/EuiAppSidebarMenuComponent.html +1 -1
  2. package/docs/components/EuiMenuComponent.html +1 -25
  3. package/docs/components/EuiMenuItemComponent.html +1 -25
  4. package/docs/components/EuiSidebarMenuComponent.html +1 -25
  5. package/docs/components/EuiTimebarComponent.html +25 -326
  6. package/docs/components/EuiTimelineComponent.html +1 -1
  7. package/docs/components/EuiTimelineItemComponent.html +2 -2
  8. package/docs/components/EuiTreeListComponent.html +51 -272
  9. package/docs/components/EuiTreeListItemComponent.html +57 -399
  10. package/docs/components/EuiTreeListItemContentComponent.html +3 -3
  11. package/docs/dependencies.html +1 -1
  12. package/docs/js/menu-wc.js +3 -3
  13. package/docs/js/menu-wc_es5.js +1 -1
  14. package/docs/js/search/search_index.js +2 -2
  15. package/esm2022/eui-card/eui-card.component.mjs +2 -2
  16. package/esm2022/eui-icon/eui-icon-svg.component.mjs +3 -3
  17. package/esm2022/eui-menu/eui-menu-item.component.mjs +3 -7
  18. package/esm2022/eui-menu/eui-menu.component.mjs +3 -7
  19. package/esm2022/eui-sidebar-menu/eui-sidebar-menu.component.mjs +3 -7
  20. package/esm2022/eui-tabs/eui-tabs.component.mjs +13 -12
  21. package/esm2022/eui-timebar/eui-timebar.component.mjs +18 -44
  22. package/esm2022/eui-timeline/eui-timeline-item.component.mjs +1 -1
  23. package/esm2022/eui-timeline/eui-timeline.component.mjs +1 -1
  24. package/esm2022/eui-tree-list/eui-tree-list-item.component.mjs +48 -79
  25. package/esm2022/eui-tree-list/eui-tree-list.component.mjs +19 -46
  26. package/esm2022/eui-tree-list/item-content/item-content.component.mjs +6 -3
  27. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.mjs +3 -3
  28. package/eui-menu/eui-menu-item.component.d.ts +1 -3
  29. package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
  30. package/eui-menu/eui-menu.component.d.ts +1 -3
  31. package/eui-menu/eui-menu.component.d.ts.map +1 -1
  32. package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts +1 -3
  33. package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts.map +1 -1
  34. package/eui-tabs/eui-tabs.component.d.ts +1 -0
  35. package/eui-tabs/eui-tabs.component.d.ts.map +1 -1
  36. package/eui-timebar/eui-timebar.component.d.ts +10 -16
  37. package/eui-timebar/eui-timebar.component.d.ts.map +1 -1
  38. package/eui-timeline/eui-timeline-item.component.d.ts +2 -3
  39. package/eui-timeline/eui-timeline-item.component.d.ts.map +1 -1
  40. package/eui-timeline/eui-timeline.component.d.ts +1 -2
  41. package/eui-timeline/eui-timeline.component.d.ts.map +1 -1
  42. package/eui-tree-list/eui-tree-list-item.component.d.ts +16 -23
  43. package/eui-tree-list/eui-tree-list-item.component.d.ts.map +1 -1
  44. package/eui-tree-list/eui-tree-list.component.d.ts +10 -19
  45. package/eui-tree-list/eui-tree-list.component.d.ts.map +1 -1
  46. package/fesm2022/eui-components-eui-card.mjs +2 -2
  47. package/fesm2022/eui-components-eui-card.mjs.map +1 -1
  48. package/fesm2022/eui-components-eui-icon.mjs +2 -2
  49. package/fesm2022/eui-components-eui-icon.mjs.map +1 -1
  50. package/fesm2022/eui-components-eui-menu.mjs +17 -25
  51. package/fesm2022/eui-components-eui-menu.mjs.map +2 -2
  52. package/fesm2022/eui-components-eui-sidebar-menu.mjs +2 -6
  53. package/fesm2022/eui-components-eui-sidebar-menu.mjs.map +2 -2
  54. package/fesm2022/eui-components-eui-tabs.mjs +12 -11
  55. package/fesm2022/eui-components-eui-tabs.mjs.map +2 -2
  56. package/fesm2022/eui-components-eui-timebar.mjs +17 -43
  57. package/fesm2022/eui-components-eui-timebar.mjs.map +2 -2
  58. package/fesm2022/eui-components-eui-timeline.mjs.map +2 -2
  59. package/fesm2022/eui-components-eui-tree-list.mjs +76 -128
  60. package/fesm2022/eui-components-eui-tree-list.mjs.map +4 -4
  61. package/fesm2022/eui-components-layout.mjs +2 -2
  62. package/fesm2022/eui-components-layout.mjs.map +2 -2
  63. package/package.json +3 -3
@@ -1,7 +1,6 @@
1
- import { Component, ContentChild, ContentChildren, Directive, EventEmitter, forwardRef, Host, HostBinding, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
1
+ import { booleanAttribute, Component, ContentChild, ContentChildren, Directive, EventEmitter, forwardRef, Host, HostBinding, Inject, Input, Optional, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
2
2
  import { EuiTreeListComponent } from './eui-tree-list.component';
3
3
  import { consumeEvent, uniqueId } from '@eui/core';
4
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
4
  import { EuiTreeListItemContentComponent } from './item-content/item-content.component';
6
5
  import { BaseStatesDirective } from '@eui/components/shared';
7
6
  import * as i0 from "@angular/core";
@@ -14,62 +13,26 @@ export class EuiTreeListItemComponent {
14
13
  get cssClasses() {
15
14
  return this.getCssClasses();
16
15
  }
17
- get active() {
18
- return this._active;
19
- }
20
- set active(value) {
21
- this._active = coerceBooleanProperty(value);
22
- }
23
- get expanded() {
24
- return this._expanded;
25
- }
26
- set expanded(value) {
27
- this._expanded = coerceBooleanProperty(value);
28
- }
29
- get alwaysExpanded() {
30
- return this._alwaysExpanded;
31
- }
32
- set alwaysExpanded(value) {
33
- this._alwaysExpanded = coerceBooleanProperty(value);
34
- }
35
- get isDisplaySubLinksOnHover() {
36
- return this._isDisplaySubLinksOnHover;
37
- }
38
- set isDisplaySubLinksOnHover(value) {
39
- this._isDisplaySubLinksOnHover = coerceBooleanProperty(value);
40
- }
41
- get isNavigateOnlyOnLabelClick() {
42
- return this._isNavigateOnlyOnLabelClick;
43
- }
44
- set isNavigateOnlyOnLabelClick(value) {
45
- this._isNavigateOnlyOnLabelClick = coerceBooleanProperty(value);
46
- }
47
- get isVisible() {
48
- return this._isVisible;
49
- }
50
- set isVisible(value) {
51
- this._isVisible = coerceBooleanProperty(value);
52
- }
53
16
  constructor(treeListComponent, router, elementRef, baseStatesDirective) {
54
17
  this.router = router;
55
18
  this.elementRef = elementRef;
56
19
  this.baseStatesDirective = baseStatesDirective;
57
20
  this.tabIndex = '0';
21
+ this.ariaRole = 'treeitem';
58
22
  this.e2eAttr = 'eui-tree-list-item';
59
23
  this.subLinks = [];
24
+ this.isActive = false;
25
+ this.isExpanded = false;
26
+ this.isAlwaysExpanded = false;
27
+ this.isVisible = true;
28
+ this.isDisplaySubLinksOnHover = false;
29
+ this.isNavigateOnlyOnLabelClick = false;
60
30
  this.toggled = new EventEmitter();
61
31
  this.isHovered = false;
62
32
  // tree states
63
33
  this.hasSub = false;
64
34
  // custom content
65
35
  this.hasCustomContent = false;
66
- this.ariaRole = 'treeitem';
67
- this._active = false;
68
- this._expanded = false;
69
- this._alwaysExpanded = false;
70
- this._isDisplaySubLinksOnHover = false;
71
- this._isNavigateOnlyOnLabelClick = false;
72
- this._isVisible = true;
73
36
  this.treeListComponent = treeListComponent;
74
37
  }
75
38
  ngAfterContentInit() {
@@ -92,25 +55,25 @@ export class EuiTreeListItemComponent {
92
55
  if (this.subTreeList) {
93
56
  this.subTreeList.forEach((subtree) => {
94
57
  subtree.disableFocus();
95
- subtree.ariaRole = 'group';
58
+ subtree.ariaRoleTree = 'group';
96
59
  });
97
60
  }
98
61
  }
99
62
  toggle(event) {
100
63
  event.preventDefault();
101
64
  event.stopPropagation();
102
- this.expanded = !this.expanded;
65
+ this.isExpanded = !this.isExpanded;
103
66
  this.toggled.next(this);
104
67
  }
105
68
  onKeyDown(event) {
106
69
  switch (event.keyCode) {
107
70
  case 13: // ENTER
108
71
  case 32: // SPACE
109
- this.expanded = !this.expanded;
72
+ this.isExpanded = !this.isExpanded;
110
73
  consumeEvent(event);
111
74
  break;
112
75
  case 37: // ARROW LEFT
113
- this.expanded = false;
76
+ this.isExpanded = false;
114
77
  consumeEvent(event);
115
78
  break;
116
79
  case 38: // ARROW UP
@@ -122,7 +85,7 @@ export class EuiTreeListItemComponent {
122
85
  consumeEvent(event);
123
86
  break;
124
87
  case 39: // ARROW RIGHT
125
- this.expanded = true;
88
+ this.isExpanded = true;
126
89
  consumeEvent(event);
127
90
  break;
128
91
  case 40: // ARROW DOWN
@@ -142,7 +105,7 @@ export class EuiTreeListItemComponent {
142
105
  }
143
106
  }
144
107
  setExpandedState(state) {
145
- this.expanded = state;
108
+ this.isExpanded = state;
146
109
  if (this.subTreeList.length !== 0) {
147
110
  this.subTreeList.toArray().forEach((item) => {
148
111
  item.setExpandedState(state);
@@ -170,7 +133,7 @@ export class EuiTreeListItemComponent {
170
133
  }
171
134
  }
172
135
  focusOnNextTreeItem() {
173
- if (this.expanded && this.subTreeList && this.subTreeList.length > 0) {
136
+ if (this.isExpanded && this.subTreeList && this.subTreeList.length > 0) {
174
137
  this.subTreeList.first.focus();
175
138
  return true;
176
139
  }
@@ -192,14 +155,14 @@ export class EuiTreeListItemComponent {
192
155
  getCssClasses() {
193
156
  return [
194
157
  this.baseStatesDirective.getCssClasses('eui-tree-list-item'),
195
- this.active ? 'eui-tree-list-item--active' : '',
158
+ this.isActive ? 'eui-tree-list-item--active' : '',
196
159
  !this.isVisible ? 'eui-tree-list-item--hidden' : '',
197
160
  ]
198
161
  .join(' ')
199
162
  .trim();
200
163
  }
201
164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0-next.6", ngImport: i0, type: EuiTreeListItemComponent, deps: [{ token: forwardRef(() => EuiTreeListComponent), host: true, optional: true }, { token: i1.Router }, { token: i0.ElementRef }, { token: i2.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.0-next.6", type: EuiTreeListItemComponent, selector: "eui-tree-list-item", inputs: { e2eAttr: "e2eAttr", id: "id", label: "label", linkUrl: "linkUrl", subLabel: "subLabel", active: "active", expanded: "expanded", alwaysExpanded: "alwaysExpanded", url: "url", isDisplaySubLinksOnHover: "isDisplaySubLinksOnHover", subLinks: "subLinks", isNavigateOnlyOnLabelClick: "isNavigateOnlyOnLabelClick", isVisible: "isVisible", ariaLabel: "ariaLabel" }, outputs: { toggled: "toggled" }, host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabIndex", "attr.data-e2e": "this.e2eAttr", "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.role": "this.ariaRole" } }, queries: [{ propertyName: "customLabel", first: true, predicate: i0.forwardRef(() => EuiTreeListItemLabelTagDirective), descendants: true }, { propertyName: "customDetailContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemDetailsContentTagDirective), descendants: true }, { propertyName: "customSubContainerContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemSubContainerContentTagDirective), descendants: true }, { propertyName: "subTreeList", predicate: i0.forwardRef(() => EuiTreeListComponent), descendants: true }, { propertyName: "customContent", predicate: i0.forwardRef(() => EuiTreeListItemContentComponent) }], viewQueries: [{ propertyName: "focusable", first: true, predicate: ["focusable"], descendants: true }], hostDirectives: [{ directive: i2.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiSecondary", "euiSecondary", "euiInfo", "euiInfo", "euiSuccess", "euiSuccess", "euiWarning", "euiWarning", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant"] }], ngImport: i0, template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <eui-icon-button-expander *ngIf=\"hasSub && !alwaysExpanded\"\n (buttonClick)=\"toggle($event)\"\n [isExpanded]=\"expanded\"\n isDirectionForward>\n </eui-icon-button-expander>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiIconButtonExpanderComponent, selector: "eui-icon-button-expander", inputs: ["fillColor", "size", "ariaLabel", "isExpanded", "isDirectionForward", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }], encapsulation: i0.ViewEncapsulation.None }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.0-next.6", type: EuiTreeListItemComponent, selector: "eui-tree-list-item", inputs: { id: "id", ariaLabel: "ariaLabel", e2eAttr: "e2eAttr", label: "label", linkUrl: "linkUrl", subLabel: "subLabel", url: "url", subLinks: "subLinks", isActive: ["isActive", "isActive", booleanAttribute], isExpanded: ["isExpanded", "isExpanded", booleanAttribute], isAlwaysExpanded: ["isAlwaysExpanded", "isAlwaysExpanded", booleanAttribute], isVisible: ["isVisible", "isVisible", booleanAttribute], isDisplaySubLinksOnHover: ["isDisplaySubLinksOnHover", "isDisplaySubLinksOnHover", booleanAttribute], isNavigateOnlyOnLabelClick: ["isNavigateOnlyOnLabelClick", "isNavigateOnlyOnLabelClick", booleanAttribute] }, outputs: { toggled: "toggled" }, host: { properties: { "class": "this.cssClasses", "attr.tabindex": "this.tabIndex", "attr.role": "this.ariaRole", "attr.id": "this.id", "attr.aria-label": "this.ariaLabel", "attr.data-e2e": "this.e2eAttr" } }, queries: [{ propertyName: "customLabel", first: true, predicate: i0.forwardRef(() => EuiTreeListItemLabelTagDirective), descendants: true }, { propertyName: "customDetailContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemDetailsContentTagDirective), descendants: true }, { propertyName: "customSubContainerContent", first: true, predicate: i0.forwardRef(() => EuiTreeListItemSubContainerContentTagDirective), descendants: true }, { propertyName: "subTreeList", predicate: i0.forwardRef(() => EuiTreeListComponent), descendants: true }, { propertyName: "customContent", predicate: i0.forwardRef(() => EuiTreeListItemContentComponent) }], viewQueries: [{ propertyName: "focusable", first: true, predicate: ["focusable"], descendants: true }], hostDirectives: [{ directive: i2.BaseStatesDirective, inputs: ["euiPrimary", "euiPrimary", "euiSecondary", "euiSecondary", "euiInfo", "euiInfo", "euiSuccess", "euiSuccess", "euiWarning", "euiWarning", "euiDanger", "euiDanger", "euiAccent", "euiAccent", "euiVariant", "euiVariant"] }], ngImport: i0, template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"isExpanded || isAlwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <eui-icon-button-expander *ngIf=\"hasSub && !isAlwaysExpanded\"\n (buttonClick)=\"toggle($event)\"\n [isExpanded]=\"isExpanded\"\n isDirectionForward>\n </eui-icon-button-expander>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiIconButtonExpanderComponent, selector: "eui-icon-button-expander", inputs: ["fillColor", "size", "ariaLabel", "isExpanded", "isDirectionForward", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }], encapsulation: i0.ViewEncapsulation.None }); }
203
166
  }
204
167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.6", ngImport: i0, type: EuiTreeListItemComponent, decorators: [{
205
168
  type: Component,
@@ -208,7 +171,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.6",
208
171
  directive: BaseStatesDirective,
209
172
  inputs: ['euiPrimary', 'euiSecondary', 'euiInfo', 'euiSuccess', 'euiWarning', 'euiDanger', 'euiAccent', 'euiVariant'],
210
173
  },
211
- ], template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"expanded || alwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <eui-icon-button-expander *ngIf=\"hasSub && !alwaysExpanded\"\n (buttonClick)=\"toggle($event)\"\n [isExpanded]=\"expanded\"\n isDirectionForward>\n </eui-icon-button-expander>\n </div>\n </div>\n</ng-template>\n" }]
174
+ ], template: "<div class=\"eui-tree-list-item-header\">\n <div\n #focusable\n class=\"eui-tree-list-item-header__content\"\n (keydown)=\"onKeyDown($event)\"\n attr.aria-label=\"{{ label }} {{ subLabel }}\">\n\n <ng-container *ngIf=\"hasCustomContent; else noCustomContent\">\n <ng-content select=\"eui-tree-list-item-content\"></ng-content>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-container>\n\n <ng-template #noCustomContent>\n <div class=\"eui-u-flex\">\n <eui-label *ngIf=\"!customLabel\">\n {{label}}\n <eui-label *ngIf=\"subLabel\" euiSublabel>{{subLabel}}</eui-label>\n </eui-label>\n\n <eui-label *ngIf=\"customLabel\">\n <div class=\"eui-u-flex\">\n <ng-content select=\"eui-tree-list-item-label\"></ng-content>\n </div>\n </eui-label>\n </div>\n <ng-container *ngTemplateOutlet=\"rightContent\"></ng-container>\n </ng-template>\n </div>\n\n <ng-container *ngIf=\"customDetailContent\">\n <div class=\"eui-tree-list-item-header__details-content\">\n <ng-content select=\"eui-tree-list-item-details\"></ng-content>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"customSubContainerContent\">\n <ng-content select=\"eui-tree-list-item-sub-container\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template [ngIf]=\"isExpanded || isAlwaysExpanded\">\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #rightContent>\n <div class=\"eui-tree-list-item-header__content-right-content\">\n <div class=\"eui-tree-list-item-header__content-expand-toggle-wrapper\">\n <eui-icon-button-expander *ngIf=\"hasSub && !isAlwaysExpanded\"\n (buttonClick)=\"toggle($event)\"\n [isExpanded]=\"isExpanded\"\n isDirectionForward>\n </eui-icon-button-expander>\n </div>\n </div>\n</ng-template>\n" }]
212
175
  }], ctorParameters: () => [{ type: undefined, decorators: [{
213
176
  type: Host
214
177
  }, {
@@ -222,45 +185,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.6",
222
185
  }], tabIndex: [{
223
186
  type: HostBinding,
224
187
  args: ['attr.tabindex']
225
- }], e2eAttr: [{
188
+ }], ariaRole: [{
226
189
  type: HostBinding,
227
- args: ['attr.data-e2e']
228
- }, {
229
- type: Input
190
+ args: ['attr.role']
230
191
  }], id: [{
231
192
  type: HostBinding,
232
193
  args: ['attr.id']
233
194
  }, {
234
195
  type: Input
196
+ }], ariaLabel: [{
197
+ type: HostBinding,
198
+ args: ['attr.aria-label']
199
+ }, {
200
+ type: Input
201
+ }], e2eAttr: [{
202
+ type: HostBinding,
203
+ args: ['attr.data-e2e']
204
+ }, {
205
+ type: Input
235
206
  }], label: [{
236
207
  type: Input
237
208
  }], linkUrl: [{
238
209
  type: Input
239
210
  }], subLabel: [{
240
211
  type: Input
241
- }], active: [{
242
- type: Input
243
- }], expanded: [{
244
- type: Input
245
- }], alwaysExpanded: [{
246
- type: Input
247
212
  }], url: [{
248
213
  type: Input
249
- }], isDisplaySubLinksOnHover: [{
250
- type: Input
251
214
  }], subLinks: [{
252
215
  type: Input
216
+ }], isActive: [{
217
+ type: Input,
218
+ args: [{ transform: booleanAttribute }]
219
+ }], isExpanded: [{
220
+ type: Input,
221
+ args: [{ transform: booleanAttribute }]
222
+ }], isAlwaysExpanded: [{
223
+ type: Input,
224
+ args: [{ transform: booleanAttribute }]
225
+ }], isVisible: [{
226
+ type: Input,
227
+ args: [{ transform: booleanAttribute }]
228
+ }], isDisplaySubLinksOnHover: [{
229
+ type: Input,
230
+ args: [{ transform: booleanAttribute }]
253
231
  }], isNavigateOnlyOnLabelClick: [{
254
- type: Input
232
+ type: Input,
233
+ args: [{ transform: booleanAttribute }]
255
234
  }], toggled: [{
256
235
  type: Output
257
- }], isVisible: [{
258
- type: Input
259
- }], ariaLabel: [{
260
- type: HostBinding,
261
- args: ['attr.aria-label']
262
- }, {
263
- type: Input
264
236
  }], focusable: [{
265
237
  type: ViewChild,
266
238
  args: ['focusable']
@@ -279,9 +251,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.6",
279
251
  }], customContent: [{
280
252
  type: ContentChildren,
281
253
  args: [forwardRef(() => EuiTreeListItemContentComponent), { descendants: false }]
282
- }], ariaRole: [{
283
- type: HostBinding,
284
- args: ['attr.role']
285
254
  }] } });
286
255
  /* eslint-disable */
287
256
  export class EuiTreeListItemLabelTagDirective {
@@ -308,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0-next.6",
308
277
  type: Directive,
309
278
  args: [{ selector: 'eui-tree-list-item-sub-container' }]
310
279
  }] });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQWE3RCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBV0QsSUFDSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxT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LENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTlFLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7Z0JBR3RELFFBQVE7c0JBQTNDLFdBQVc7dUJBQUMsV0FBVzs7QUFrSzVCLG9CQUFvQjtBQUVwQixNQUFNLE9BQU8sZ0NBQWdDO3FIQUFoQyxnQ0FBZ0M7eUdBQWhDLGdDQUFnQzs7a0dBQWhDLGdDQUFnQztrQkFENUMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRTs7QUFHbkQsTUFBTSxPQUFPLHlDQUF5QztxSEFBekMseUNBQXlDO3lHQUF6Qyx5Q0FBeUM7O2tHQUF6Qyx5Q0FBeUM7a0JBRHJELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7O0FBR3JELE1BQU0sT0FBTyw4Q0FBOEM7cUhBQTlDLDhDQUE4Qzt5R0FBOUMsOENBQThDOztrR0FBOUMsOENBQThDO2tCQUQxRCxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3QsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVeExpbmtMZWdhY3kgfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5pbXBvcnQgeyBFdWlUcmVlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZXVpLXRyZWUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29uc3VtZUV2ZW50LCB1bmlxdWVJZCB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFdWlUcmVlTGlzdEl0ZW1Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9pdGVtLWNvbnRlbnQvaXRlbS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlU3RhdGVzRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXRyZWUtbGlzdC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogWydldWlQcmltYXJ5JywgJ2V1aVNlY29uZGFyeScsICdldWlJbmZvJywgJ2V1aVN1Y2Nlc3MnLCAnZXVpV2FybmluZycsICdldWlEYW5nZXInLCAnZXVpQWNjZW50JywgJ2V1aVZhcmlhbnQnXSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3NzQ2xhc3NlcygpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJJbmRleCA9ICcwJztcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1lMmUnKVxuICAgIEBJbnB1dCgpXG4gICAgZTJlQXR0ciA9ICdldWktdHJlZS1saXN0LWl0ZW0nO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGxpbmtVcmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJMYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cbiAgICBzZXQgYWN0aXZlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcbiAgICB9XG4gICAgc2V0IGV4cGFuZGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIGdldCBhbHdheXNFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fsd2F5c0V4cGFuZGVkO1xuICAgIH1cbiAgICBzZXQgYWx3YXlzRXhwYW5kZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hbHdheXNFeHBhbmRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzRGlzcGxheVN1YkxpbmtzT25Ib3ZlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRGlzcGxheVN1YkxpbmtzT25Ib3ZlcjtcbiAgICB9XG4gICAgc2V0IGlzRGlzcGxheVN1YkxpbmtzT25Ib3Zlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzRGlzcGxheVN1YkxpbmtzT25Ib3ZlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHN1YkxpbmtzOiBVeExpbmtMZWdhY3lbXSA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2s7XG4gICAgfVxuICAgIHNldCBpc05hdmlnYXRlT25seU9uTGFiZWxDbGljayh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgQE91dHB1dCgpIHRvZ2dsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aVRyZWVMaXN0SXRlbUNvbXBvbmVudD4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG4gICAgc2V0IGlzVmlzaWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG4gICAgaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdHJlZUxpc3RDb21wb25lbnQ6IEV1aVRyZWVMaXN0Q29tcG9uZW50O1xuXG4gICAgLy8gdHJlZSBzdGF0ZXNcbiAgICBoYXNTdWIgPSBmYWxzZTtcblxuICAgIC8vIGN1c3RvbSBjb250ZW50XG4gICAgaGFzQ3VzdG9tQ29udGVudCA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZCgnZm9jdXNhYmxlJykgZm9jdXNhYmxlOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdEl0ZW1MYWJlbFRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tTGFiZWw6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1MYWJlbFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtRGV0YWlsc0NvbnRlbnRUYWdEaXJlY3RpdmUpKVxuICAgIGN1c3RvbURldGFpbENvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtU3ViQ29udGFpbmVyQ29udGVudFRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tU3ViQ29udGFpbmVyQ29udGVudDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbVN1YkNvbnRhaW5lckNvbnRlbnRUYWdEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0Q29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHN1YlRyZWVMaXN0OiBRdWVyeUxpc3Q8RXVpVHJlZUxpc3RDb21wb25lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbUNvbnRlbnRDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICAgIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1Db250ZW50Q29tcG9uZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcHJvdGVjdGVkIGFyaWFSb2xlID0gJ3RyZWVpdGVtJztcbiAgICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9leHBhbmRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Fsd2F5c0V4cGFuZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNOYXZpZ2F0ZU9ubHlPbkxhYmVsQ2xpY2sgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1Zpc2libGUgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0Q29tcG9uZW50KSkgdHJlZUxpc3RDb21wb25lbnQsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgYmFzZVN0YXRlc0RpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy50cmVlTGlzdENvbXBvbmVudCA9IHRyZWVMaXN0Q29tcG9uZW50IGFzIEV1aVRyZWVMaXN0Q29tcG9uZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmFyaWFMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5hcmlhTGFiZWwgPSB0aGlzLmxhYmVsID8gdGhpcy5sYWJlbCA6ICdDdXN0b20gY29udGVudCc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgdHJlZSBpdGVtIGNhbiBiZSBhcmlhLW93bmVkIGJ5IGEgcGFyZW50IHRyZWUgZm9yIFdBSS1BUklBIGF0dHJpYnV0ZXM6XG4gICAgICAgIGlmICghdGhpcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5pZCA9IHVuaXF1ZUlkKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRyZWUgc3RhdGVzXG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5oYXNTdWIgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2tpbmcgaWYgY3VzdG9tQ29udGVudCBzZXRcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ29udGVudC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGFzQ3VzdG9tQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBhbnkgY2hpbGQgdHJlZS1saXN0IGlzIG5vbi1mb2N1c2FibGUgYW5kIHRoYXQgaXQgaGFzIHRoZSByb2xlIG9mIGEgV0FJLUFSSUEgZ3JvdXA6XG4gICAgICAgIGlmICh0aGlzLnN1YlRyZWVMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnN1YlRyZWVMaXN0LmZvckVhY2goKHN1YnRyZWU6IEV1aVRyZWVMaXN0Q29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgc3VidHJlZS5kaXNhYmxlRm9jdXMoKTtcbiAgICAgICAgICAgICAgICBzdWJ0cmVlLmFyaWFSb2xlID0gJ2dyb3VwJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLnRvZ2dsZWQubmV4dCh0aGlzKTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIDEzOiAvLyBFTlRFUlxuICAgICAgICAgICAgY2FzZSAzMjogLy8gU1BBQ0VcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzc6IC8vIEFSUk9XIExFRlRcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzg6IC8vIEFSUk9XIFVQXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQuZm9jdXNPblByZXZpb3VzVHJlZUl0ZW0odGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOTogLy8gQVJST1cgUklHSFRcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0MDogLy8gQVJST1cgRE9XTlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzT25OZXh0VHJlZUl0ZW0oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVGb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmlzaWJsZVN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gc3RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuc3ViVHJlZUxpc3QgJiYgdGhpcy5zdWJUcmVlTGlzdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3ViVHJlZUxpc3QudG9BcnJheSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldFZpc2libGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFeHBhbmRlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBzdGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3ViVHJlZUxpc3QudG9BcnJheSgpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLnNldEV4cGFuZGVkU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVGb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRyZWVMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVMaXN0Q29tcG9uZW50LmRpc2FibGVGb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzT25MYXN0RXhwYW5kZWRUcmVlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdEV4cGFuZGVkID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQnKTtcbiAgICAgICAgaWYgKGxhc3RFeHBhbmRlZCAmJiBsYXN0RXhwYW5kZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGxhc3RFeHBhbmRlZFtsYXN0RXhwYW5kZWQubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpO1xuICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZvY3VzT25OZXh0VHJlZUl0ZW0oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkICYmIHRoaXMuc3ViVHJlZUxpc3QgJiYgdGhpcy5zdWJUcmVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1YlRyZWVMaXN0LmZpcnN0LmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyZWVMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlTGlzdENvbXBvbmVudC5mb2N1c09uTmV4dFRyZWVJdGVtKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkaXNhYmxlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW5hYmxlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS10cmVlLWxpc3QtaXRlbScpLFxuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPyAnZXVpLXRyZWUtbGlzdC1pdGVtLS1hY3RpdmUnIDogJycsXG4gICAgICAgICAgICAhdGhpcy5pc1Zpc2libGUgPyAnZXVpLXRyZWUtbGlzdC1pdGVtLS1oaWRkZW4nIDogJycsXG4gICAgICAgIF1cbiAgICAgICAgICAgIC5qb2luKCcgJylcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpLXRyZWUtbGlzdC1pdGVtLWxhYmVsJyB9KVxuZXhwb3J0IGNsYXNzIEV1aVRyZWVMaXN0SXRlbUxhYmVsVGFnRGlyZWN0aXZlIHt9XG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0tZGV0YWlscycgfSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFRhZ0RpcmVjdGl2ZSB7fVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpLXRyZWUtbGlzdC1pdGVtLXN1Yi1jb250YWluZXInIH0pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtU3ViQ29udGFpbmVyQ29udGVudFRhZ0RpcmVjdGl2ZSB7fVxuLyogZXNsaW50LWVuYWJsZSAqL1xuIiwiPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICAgICNmb2N1c2FibGVcbiAgICAgICAgY2xhc3M9XCJldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50XCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBsYWJlbCB9fSB7eyBzdWJMYWJlbCB9fVwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDdXN0b21Db250ZW50OyBlbHNlIG5vQ3VzdG9tQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmlnaHRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DdXN0b21Db250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS11LWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWxhYmVsICpuZ0lmPVwiIWN1c3RvbUxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWxhYmVsICpuZ0lmPVwic3ViTGFiZWxcIiBldWlTdWJsYWJlbD57e3N1YkxhYmVsfX08L2V1aS1sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2V1aS1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxldWktbGFiZWwgKm5nSWY9XCJjdXN0b21MYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXUtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWxhYmVsXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJpZ2h0Q29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbURldGFpbENvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2RldGFpbHMtY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLWRldGFpbHNcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVN1YkNvbnRhaW5lckNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLXRyZWUtbGlzdC1pdGVtLXN1Yi1jb250YWluZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImV4cGFuZGVkIHx8IGFsd2F5c0V4cGFuZGVkXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyaWdodENvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQtcmlnaHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudC1leHBhbmQtdG9nZ2xlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1idXR0b24tZXhwYW5kZXIgKm5nSWY9XCJoYXNTdWIgJiYgIWFsd2F5c0V4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwidG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICBpc0RpcmVjdGlvbkZvcndhcmQ+XG4gICAgICAgICAgICA8L2V1aS1pY29uLWJ1dHRvbi1leHBhbmRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS10cmVlLWxpc3QvZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7OztBQWE3RCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2pDLElBQ1csVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBaURELFlBQ3dFLGlCQUFpQixFQUM3RSxNQUFjLEVBQ1osVUFBc0IsRUFDekIsbUJBQXdDO1FBRnZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDWixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3pCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFwRHJCLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDVCxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBSW5CLFlBQU8sR0FBRyxvQkFBb0IsQ0FB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QUFNO2dCQVdpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBR3RCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBSWhFLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUNBQXlDLENBQUM7Z0JBSXpFLHlCQUF5QjtzQkFEeEIsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsOENBQThDLENBQUM7Z0JBSTlFLFdBQVc7c0JBRFYsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTlFLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7O0FBNko5RixvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLGdDQUFnQztxSEFBaEMsZ0NBQWdDO3lHQUFoQyxnQ0FBZ0M7O2tHQUFoQyxnQ0FBZ0M7a0JBRDVDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUU7O0FBR25ELE1BQU0sT0FBTyx5Q0FBeUM7cUhBQXpDLHlDQUF5Qzt5R0FBekMseUNBQXlDOztrR0FBekMseUNBQXlDO2tCQURyRCxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFOztBQUdyRCxNQUFNLE9BQU8sOENBQThDO3FIQUE5Qyw4Q0FBOEM7eUdBQTlDLDhDQUE4Qzs7a0dBQTlDLDhDQUE4QztrQkFEMUQsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQ0FBa0MsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3QsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVeExpbmtMZWdhY3kgfSBmcm9tICdAZXVpL2Jhc2UnO1xuXG5pbXBvcnQgeyBFdWlUcmVlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZXVpLXRyZWUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29uc3VtZUV2ZW50LCB1bmlxdWVJZCB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlUcmVlTGlzdEl0ZW1Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9pdGVtLWNvbnRlbnQvaXRlbS1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlU3RhdGVzRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXRyZWUtbGlzdC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRyZWUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogWydldWlQcmltYXJ5JywgJ2V1aVNlY29uZGFyeScsICdldWlJbmZvJywgJ2V1aVN1Y2Nlc3MnLCAnZXVpV2FybmluZycsICdldWlEYW5nZXInLCAnZXVpQWNjZW50JywgJ2V1aVZhcmlhbnQnXSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3NzQ2xhc3NlcygpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJJbmRleCA9ICcwJztcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHByb3RlY3RlZCBhcmlhUm9sZSA9ICd0cmVlaXRlbSc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZTJlJykgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdHJlZS1saXN0LWl0ZW0nO1xuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBsaW5rVXJsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3ViTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSB1cmw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWJMaW5rczogVXhMaW5rTGVnYWN5W10gPSBbXTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQWx3YXlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNEaXNwbGF5U3ViTGlua3NPbkhvdmVyID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzTmF2aWdhdGVPbmx5T25MYWJlbENsaWNrID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpVHJlZUxpc3RJdGVtQ29tcG9uZW50PigpO1xuXG4gICAgaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgdHJlZUxpc3RDb21wb25lbnQ6IEV1aVRyZWVMaXN0Q29tcG9uZW50O1xuXG4gICAgLy8gdHJlZSBzdGF0ZXNcbiAgICBoYXNTdWIgPSBmYWxzZTtcblxuICAgIC8vIGN1c3RvbSBjb250ZW50XG4gICAgaGFzQ3VzdG9tQ29udGVudCA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZCgnZm9jdXNhYmxlJykgZm9jdXNhYmxlOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdEl0ZW1MYWJlbFRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tTGFiZWw6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1MYWJlbFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtRGV0YWlsc0NvbnRlbnRUYWdEaXJlY3RpdmUpKVxuICAgIGN1c3RvbURldGFpbENvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1EZXRhaWxzQ29udGVudFRhZ0RpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gRXVpVHJlZUxpc3RJdGVtU3ViQ29udGFpbmVyQ29udGVudFRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tU3ViQ29udGFpbmVyQ29udGVudDogUXVlcnlMaXN0PEV1aVRyZWVMaXN0SXRlbVN1YkNvbnRhaW5lckNvbnRlbnRUYWdEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0Q29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHN1YlRyZWVMaXN0OiBRdWVyeUxpc3Q8RXVpVHJlZUxpc3RDb21wb25lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRyZWVMaXN0SXRlbUNvbnRlbnRDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxuICAgIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlUcmVlTGlzdEl0ZW1Db250ZW50Q29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpIEBPcHRpb25hbCgpIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBFdWlUcmVlTGlzdENvbXBvbmVudCkpIHRyZWVMaXN0Q29tcG9uZW50LFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgKSB7XG4gICAgICAgIHRoaXMudHJlZUxpc3RDb21wb25lbnQgPSB0cmVlTGlzdENvbXBvbmVudCBhcyBFdWlUcmVlTGlzdENvbXBvbmVudDtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hcmlhTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuYXJpYUxhYmVsID0gdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiAnQ3VzdG9tIGNvbnRlbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHRyZWUgaXRlbSBjYW4gYmUgYXJpYS1vd25lZCBieSBhIHBhcmVudCB0cmVlIGZvciBXQUktQVJJQSBhdHRyaWJ1dGVzOlxuICAgICAgICBpZiAoIXRoaXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSB1bmlxdWVJZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dGluZyB0cmVlIHN0YXRlc1xuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGFzU3ViID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNraW5nIGlmIGN1c3RvbUNvbnRlbnQgc2V0XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbUNvbnRlbnQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0N1c3RvbUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgYW55IGNoaWxkIHRyZWUtbGlzdCBpcyBub24tZm9jdXNhYmxlIGFuZCB0aGF0IGl0IGhhcyB0aGUgcm9sZSBvZiBhIFdBSS1BUklBIGdyb3VwOlxuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC5mb3JFYWNoKChzdWJ0cmVlOiBFdWlUcmVlTGlzdENvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnRyZWUuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgc3VidHJlZS5hcmlhUm9sZVRyZWUgPSAnZ3JvdXAnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICAgICAgICB0aGlzLnRvZ2dsZWQubmV4dCh0aGlzKTtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIDEzOiAvLyBFTlRFUlxuICAgICAgICAgICAgY2FzZSAzMjogLy8gU1BBQ0VcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM3OiAvLyBBUlJPVyBMRUZUXG4gICAgICAgICAgICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzg6IC8vIEFSUk9XIFVQXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJlZUxpc3RDb21wb25lbnQuZm9jdXNPblByZXZpb3VzVHJlZUl0ZW0odGhpcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOTogLy8gQVJST1cgUklHSFRcbiAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQwOiAvLyBBUlJPVyBET1dOXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNPbk5leHRUcmVlSXRlbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRWaXNpYmxlU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBzdGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5zdWJUcmVlTGlzdCAmJiB0aGlzLnN1YlRyZWVMaXN0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdWJUcmVlTGlzdC50b0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uc2V0VmlzaWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEV4cGFuZGVkU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0V4cGFuZGVkID0gc3RhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuc3ViVHJlZUxpc3QubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1YlRyZWVMaXN0LnRvQXJyYXkoKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5zZXRFeHBhbmRlZFN0YXRlKHN0YXRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNhYmxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50cmVlTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy50cmVlTGlzdENvbXBvbmVudC5kaXNhYmxlRm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uTGFzdEV4cGFuZGVkVHJlZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxhc3RFeHBhbmRlZCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ldWktdHJlZS1saXN0LWl0ZW0taGVhZGVyX19jb250ZW50Jyk7XG4gICAgICAgIGlmIChsYXN0RXhwYW5kZWQgJiYgbGFzdEV4cGFuZGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBsYXN0RXhwYW5kZWRbbGFzdEV4cGFuZGVkLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c09uTmV4dFRyZWVJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc0V4cGFuZGVkICYmIHRoaXMuc3ViVHJlZUxpc3QgJiYgdGhpcy5zdWJUcmVlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnN1YlRyZWVMaXN0LmZpcnN0LmZvY3VzKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRyZWVMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmVlTGlzdENvbXBvbmVudC5mb2N1c09uTmV4dFRyZWVJdGVtKHRoaXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBkaXNhYmxlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW5hYmxlRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c2FibGUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS10cmVlLWxpc3QtaXRlbScpLFxuICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA/ICdldWktdHJlZS1saXN0LWl0ZW0tLWFjdGl2ZScgOiAnJyxcbiAgICAgICAgICAgICF0aGlzLmlzVmlzaWJsZSA/ICdldWktdHJlZS1saXN0LWl0ZW0tLWhpZGRlbicgOiAnJyxcbiAgICAgICAgXVxuICAgICAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAgICAgLnRyaW0oKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0tbGFiZWwnIH0pXG5leHBvcnQgY2xhc3MgRXVpVHJlZUxpc3RJdGVtTGFiZWxUYWdEaXJlY3RpdmUge31cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2V1aS10cmVlLWxpc3QtaXRlbS1kZXRhaWxzJyB9KVxuZXhwb3J0IGNsYXNzIEV1aVRyZWVMaXN0SXRlbURldGFpbHNDb250ZW50VGFnRGlyZWN0aXZlIHt9XG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktdHJlZS1saXN0LWl0ZW0tc3ViLWNvbnRhaW5lcicgfSlcbmV4cG9ydCBjbGFzcyBFdWlUcmVlTGlzdEl0ZW1TdWJDb250YWluZXJDb250ZW50VGFnRGlyZWN0aXZlIHt9XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iLCI8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlclwiPlxuICAgIDxkaXZcbiAgICAgICAgI2ZvY3VzYWJsZVxuICAgICAgICBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnRcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7IGxhYmVsIH19IHt7IHN1YkxhYmVsIH19XCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0N1c3RvbUNvbnRlbnQ7IGVsc2Ugbm9DdXN0b21Db250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktdHJlZS1saXN0LWl0ZW0tY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyaWdodENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub0N1c3RvbUNvbnRlbnQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXUtZmxleFwiPlxuICAgICAgICAgICAgICAgIDxldWktbGFiZWwgKm5nSWY9XCIhY3VzdG9tTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3tsYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIDxldWktbGFiZWwgKm5nSWY9XCJzdWJMYWJlbFwiIGV1aVN1YmxhYmVsPnt7c3ViTGFiZWx9fTwvZXVpLWxhYmVsPlxuICAgICAgICAgICAgICAgIDwvZXVpLWxhYmVsPlxuXG4gICAgICAgICAgICAgICAgPGV1aS1sYWJlbCAqbmdJZj1cImN1c3RvbUxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdS1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktdHJlZS1saXN0LWl0ZW0tbGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZXVpLWxhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmlnaHRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRGV0YWlsQ29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktdHJlZS1saXN0LWl0ZW0tZGV0YWlsc1wiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU3ViQ29udGFpbmVyQ29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWktdHJlZS1saXN0LWl0ZW0tc3ViLWNvbnRhaW5lclwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwiaXNFeHBhbmRlZCB8fCBpc0Fsd2F5c0V4cGFuZGVkXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyaWdodENvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImV1aS10cmVlLWxpc3QtaXRlbS1oZWFkZXJfX2NvbnRlbnQtcmlnaHQtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRyZWUtbGlzdC1pdGVtLWhlYWRlcl9fY29udGVudC1leHBhbmQtdG9nZ2xlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxldWktaWNvbi1idXR0b24tZXhwYW5kZXIgKm5nSWY9XCJoYXNTdWIgJiYgIWlzQWx3YXlzRXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgaXNEaXJlY3Rpb25Gb3J3YXJkPlxuICAgICAgICAgICAgPC9ldWktaWNvbi1idXR0b24tZXhwYW5kZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==