@awc-ui/angular 1.0.0-beta → 1.0.0-beta.10

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.
@@ -3,6 +3,87 @@ import { __decorate } from "tslib";
3
3
  /* auto-generated angular directive proxies */
4
4
  import { ChangeDetectionStrategy, Component } from '@angular/core';
5
5
  import { ProxyCmp, proxyOutputs } from './angular-component-lib/utils';
6
+ import { defineCustomElement as defineMdAccordion } from '@awc-ui/core/dist/components/md-accordion.js';
7
+ import { defineCustomElement as defineMdAccordionItem } from '@awc-ui/core/dist/components/md-accordion-item.js';
8
+ import { defineCustomElement as defineMdAppBar } from '@awc-ui/core/dist/components/md-app-bar.js';
9
+ import { defineCustomElement as defineMdAreaChart } from '@awc-ui/core/dist/components/md-area-chart.js';
10
+ import { defineCustomElement as defineMdAutocomplete } from '@awc-ui/core/dist/components/md-autocomplete.js';
11
+ import { defineCustomElement as defineMdAvatar } from '@awc-ui/core/dist/components/md-avatar.js';
12
+ import { defineCustomElement as defineMdBadge } from '@awc-ui/core/dist/components/md-badge.js';
13
+ import { defineCustomElement as defineMdBarChart } from '@awc-ui/core/dist/components/md-bar-chart.js';
14
+ import { defineCustomElement as defineMdBottomSheet } from '@awc-ui/core/dist/components/md-bottom-sheet.js';
15
+ import { defineCustomElement as defineMdBreadcrumbItem } from '@awc-ui/core/dist/components/md-breadcrumb-item.js';
16
+ import { defineCustomElement as defineMdBreadcrumbs } from '@awc-ui/core/dist/components/md-breadcrumbs.js';
17
+ import { defineCustomElement as defineMdButton } from '@awc-ui/core/dist/components/md-button.js';
18
+ import { defineCustomElement as defineMdButtonGroup } from '@awc-ui/core/dist/components/md-button-group.js';
19
+ import { defineCustomElement as defineMdCard } from '@awc-ui/core/dist/components/md-card.js';
20
+ import { defineCustomElement as defineMdCheckbox } from '@awc-ui/core/dist/components/md-checkbox.js';
21
+ import { defineCustomElement as defineMdChip } from '@awc-ui/core/dist/components/md-chip.js';
22
+ import { defineCustomElement as defineMdColorPicker } from '@awc-ui/core/dist/components/md-color-picker.js';
23
+ import { defineCustomElement as defineMdDatePicker } from '@awc-ui/core/dist/components/md-date-picker.js';
24
+ import { defineCustomElement as defineMdDialog } from '@awc-ui/core/dist/components/md-dialog.js';
25
+ import { defineCustomElement as defineMdDivider } from '@awc-ui/core/dist/components/md-divider.js';
26
+ import { defineCustomElement as defineMdFab } from '@awc-ui/core/dist/components/md-fab.js';
27
+ import { defineCustomElement as defineMdFabMenu } from '@awc-ui/core/dist/components/md-fab-menu.js';
28
+ import { defineCustomElement as defineMdFabMenuItem } from '@awc-ui/core/dist/components/md-fab-menu-item.js';
29
+ import { defineCustomElement as defineMdIconButton } from '@awc-ui/core/dist/components/md-icon-button.js';
30
+ import { defineCustomElement as defineMdLineChart } from '@awc-ui/core/dist/components/md-line-chart.js';
31
+ import { defineCustomElement as defineMdList } from '@awc-ui/core/dist/components/md-list.js';
32
+ import { defineCustomElement as defineMdListItem } from '@awc-ui/core/dist/components/md-list-item.js';
33
+ import { defineCustomElement as defineMdLoadingIndicator } from '@awc-ui/core/dist/components/md-loading-indicator.js';
34
+ import { defineCustomElement as defineMdMenu } from '@awc-ui/core/dist/components/md-menu.js';
35
+ import { defineCustomElement as defineMdMenuItem } from '@awc-ui/core/dist/components/md-menu-item.js';
36
+ import { defineCustomElement as defineMdMenuItemGroup } from '@awc-ui/core/dist/components/md-menu-item-group.js';
37
+ import { defineCustomElement as defineMdMeter } from '@awc-ui/core/dist/components/md-meter.js';
38
+ import { defineCustomElement as defineMdMultiSelect } from '@awc-ui/core/dist/components/md-multi-select.js';
39
+ import { defineCustomElement as defineMdNavigationBar } from '@awc-ui/core/dist/components/md-navigation-bar.js';
40
+ import { defineCustomElement as defineMdNavigationRail } from '@awc-ui/core/dist/components/md-navigation-rail.js';
41
+ import { defineCustomElement as defineMdNavigationRailTab } from '@awc-ui/core/dist/components/md-navigation-rail-tab.js';
42
+ import { defineCustomElement as defineMdNavigationTab } from '@awc-ui/core/dist/components/md-navigation-tab.js';
43
+ import { defineCustomElement as defineMdNumberField } from '@awc-ui/core/dist/components/md-number-field.js';
44
+ import { defineCustomElement as defineMdOrganizationChart } from '@awc-ui/core/dist/components/md-organization-chart.js';
45
+ import { defineCustomElement as defineMdOtpField } from '@awc-ui/core/dist/components/md-otp-field.js';
46
+ import { defineCustomElement as defineMdPieChart } from '@awc-ui/core/dist/components/md-pie-chart.js';
47
+ import { defineCustomElement as defineMdProgressIndicator } from '@awc-ui/core/dist/components/md-progress-indicator.js';
48
+ import { defineCustomElement as defineMdRadio } from '@awc-ui/core/dist/components/md-radio.js';
49
+ import { defineCustomElement as defineMdRating } from '@awc-ui/core/dist/components/md-rating.js';
50
+ import { defineCustomElement as defineMdRipple } from '@awc-ui/core/dist/components/md-ripple.js';
51
+ import { defineCustomElement as defineMdSearch } from '@awc-ui/core/dist/components/md-search.js';
52
+ import { defineCustomElement as defineMdSegmentedButton } from '@awc-ui/core/dist/components/md-segmented-button.js';
53
+ import { defineCustomElement as defineMdSegmentedButtonSet } from '@awc-ui/core/dist/components/md-segmented-button-set.js';
54
+ import { defineCustomElement as defineMdSelect } from '@awc-ui/core/dist/components/md-select.js';
55
+ import { defineCustomElement as defineMdSelectOption } from '@awc-ui/core/dist/components/md-select-option.js';
56
+ import { defineCustomElement as defineMdSideSheet } from '@awc-ui/core/dist/components/md-side-sheet.js';
57
+ import { defineCustomElement as defineMdSkeleton } from '@awc-ui/core/dist/components/md-skeleton.js';
58
+ import { defineCustomElement as defineMdSlider } from '@awc-ui/core/dist/components/md-slider.js';
59
+ import { defineCustomElement as defineMdSnackbar } from '@awc-ui/core/dist/components/md-snackbar.js';
60
+ import { defineCustomElement as defineMdSparkline } from '@awc-ui/core/dist/components/md-sparkline.js';
61
+ import { defineCustomElement as defineMdSplitButton } from '@awc-ui/core/dist/components/md-split-button.js';
62
+ import { defineCustomElement as defineMdStatusDot } from '@awc-ui/core/dist/components/md-status-dot.js';
63
+ import { defineCustomElement as defineMdStep } from '@awc-ui/core/dist/components/md-step.js';
64
+ import { defineCustomElement as defineMdStepper } from '@awc-ui/core/dist/components/md-stepper.js';
65
+ import { defineCustomElement as defineMdSubMenuItem } from '@awc-ui/core/dist/components/md-sub-menu-item.js';
66
+ import { defineCustomElement as defineMdSwitch } from '@awc-ui/core/dist/components/md-switch.js';
67
+ import { defineCustomElement as defineMdTab } from '@awc-ui/core/dist/components/md-tab.js';
68
+ import { defineCustomElement as defineMdTabPanel } from '@awc-ui/core/dist/components/md-tab-panel.js';
69
+ import { defineCustomElement as defineMdTabPanels } from '@awc-ui/core/dist/components/md-tab-panels.js';
70
+ import { defineCustomElement as defineMdTable } from '@awc-ui/core/dist/components/md-table.js';
71
+ import { defineCustomElement as defineMdTableBody } from '@awc-ui/core/dist/components/md-table-body.js';
72
+ import { defineCustomElement as defineMdTableCell } from '@awc-ui/core/dist/components/md-table-cell.js';
73
+ import { defineCustomElement as defineMdTableContainer } from '@awc-ui/core/dist/components/md-table-container.js';
74
+ import { defineCustomElement as defineMdTableExpandToggle } from '@awc-ui/core/dist/components/md-table-expand-toggle.js';
75
+ import { defineCustomElement as defineMdTableFoot } from '@awc-ui/core/dist/components/md-table-foot.js';
76
+ import { defineCustomElement as defineMdTableHead } from '@awc-ui/core/dist/components/md-table-head.js';
77
+ import { defineCustomElement as defineMdTablePagination } from '@awc-ui/core/dist/components/md-table-pagination.js';
78
+ import { defineCustomElement as defineMdTableRow } from '@awc-ui/core/dist/components/md-table-row.js';
79
+ import { defineCustomElement as defineMdTableSortLabel } from '@awc-ui/core/dist/components/md-table-sort-label.js';
80
+ import { defineCustomElement as defineMdTableToolbar } from '@awc-ui/core/dist/components/md-table-toolbar.js';
81
+ import { defineCustomElement as defineMdTabs } from '@awc-ui/core/dist/components/md-tabs.js';
82
+ import { defineCustomElement as defineMdTextField } from '@awc-ui/core/dist/components/md-text-field.js';
83
+ import { defineCustomElement as defineMdTimePicker } from '@awc-ui/core/dist/components/md-time-picker.js';
84
+ import { defineCustomElement as defineMdToolbar } from '@awc-ui/core/dist/components/md-toolbar.js';
85
+ import { defineCustomElement as defineMdTooltip } from '@awc-ui/core/dist/components/md-tooltip.js';
86
+ import { defineCustomElement as defineMdTransferList } from '@awc-ui/core/dist/components/md-transfer-list.js';
6
87
  import * as i0 from "@angular/core";
7
88
  let MdAccordion = class MdAccordion {
8
89
  constructor(c, r, z) {
@@ -12,10 +93,11 @@ let MdAccordion = class MdAccordion {
12
93
  proxyOutputs(this, this.el, ['mdToggle', 'mdReorder', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
13
94
  }
14
95
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordion, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordion, selector: "md-accordion", inputs: { bringToFront: "bringToFront", defaultExpanded: "defaultExpanded", density: "density", elevation: "elevation", exclusive: "exclusive", floating: "floating", headingLevel: "headingLevel", initialX: "initialX", initialY: "initialY", keepOneExpanded: "keepOneExpanded", region: "region", regionThreshold: "regionThreshold", reorderable: "reorderable", transition: "transition", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordion, isStandalone: true, selector: "md-accordion", inputs: { bringToFront: "bringToFront", defaultExpanded: "defaultExpanded", density: "density", elevation: "elevation", exclusive: "exclusive", floating: "floating", headingLevel: "headingLevel", initialX: "initialX", initialY: "initialY", keepOneExpanded: "keepOneExpanded", region: "region", regionThreshold: "regionThreshold", reorderable: "reorderable", transition: "transition", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
97
  };
17
98
  MdAccordion = __decorate([
18
99
  ProxyCmp({
100
+ defineCustomElementFn: defineMdAccordion,
19
101
  inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant']
20
102
  })
21
103
  ], MdAccordion);
@@ -28,6 +110,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
28
110
  template: '<ng-content></ng-content>',
29
111
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
30
112
  inputs: ['bringToFront', 'defaultExpanded', 'density', 'elevation', 'exclusive', 'floating', 'headingLevel', 'initialX', 'initialY', 'keepOneExpanded', 'region', 'regionThreshold', 'reorderable', 'transition', 'variant'],
113
+ standalone: true
31
114
  }]
32
115
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
33
116
  let MdAccordionItem = class MdAccordionItem {
@@ -38,10 +121,11 @@ let MdAccordionItem = class MdAccordionItem {
38
121
  proxyOutputs(this, this.el, ['mdItemToggle', 'mdItemRequestFocus', 'mdItemRequestReorder']);
39
122
  }
40
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAccordionItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordionItem, selector: "md-accordion-item", inputs: { collapsible: "collapsible", contentMaxHeight: "contentMaxHeight", density: "density", disabled: "disabled", expanded: "expanded", headingLevel: "headingLevel", headline: "headline", icon: "icon", regionRole: "regionRole", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAccordionItem, isStandalone: true, selector: "md-accordion-item", inputs: { collapsible: "collapsible", contentMaxHeight: "contentMaxHeight", density: "density", disabled: "disabled", expanded: "expanded", headingLevel: "headingLevel", headline: "headline", icon: "icon", regionRole: "regionRole", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
125
  };
43
126
  MdAccordionItem = __decorate([
44
127
  ProxyCmp({
128
+ defineCustomElementFn: defineMdAccordionItem,
45
129
  inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
46
130
  methods: ['toggle', 'focusHeader']
47
131
  })
@@ -55,6 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
55
139
  template: '<ng-content></ng-content>',
56
140
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
57
141
  inputs: ['collapsible', 'contentMaxHeight', 'density', 'disabled', 'expanded', 'headingLevel', 'headline', 'icon', 'regionRole', 'supportingText'],
142
+ standalone: true
58
143
  }]
59
144
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
60
145
  let MdAppBar = class MdAppBar {
@@ -65,10 +150,11 @@ let MdAppBar = class MdAppBar {
65
150
  proxyOutputs(this, this.el, ['mdLeadingClick', 'mdSearchActivate', 'mdSearchInput']);
66
151
  }
67
152
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAppBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAppBar, selector: "md-app-bar", inputs: { density: "density", headline: "headline", leadingIcon: "leadingIcon", leadingIconLabel: "leadingIconLabel", scrolled: "scrolled", searchAriaLabel: "searchAriaLabel", searchDisabled: "searchDisabled", searchPlaceholder: "searchPlaceholder", searchValue: "searchValue", subtitle: "subtitle", titleAlignment: "titleAlignment", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAppBar, isStandalone: true, selector: "md-app-bar", inputs: { density: "density", headline: "headline", leadingIcon: "leadingIcon", leadingIconLabel: "leadingIconLabel", scrolled: "scrolled", searchAriaLabel: "searchAriaLabel", searchDisabled: "searchDisabled", searchPlaceholder: "searchPlaceholder", searchValue: "searchValue", subtitle: "subtitle", titleAlignment: "titleAlignment", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
154
  };
70
155
  MdAppBar = __decorate([
71
156
  ProxyCmp({
157
+ defineCustomElementFn: defineMdAppBar,
72
158
  inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant']
73
159
  })
74
160
  ], MdAppBar);
@@ -81,6 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
81
167
  template: '<ng-content></ng-content>',
82
168
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
83
169
  inputs: ['density', 'headline', 'leadingIcon', 'leadingIconLabel', 'scrolled', 'searchAriaLabel', 'searchDisabled', 'searchPlaceholder', 'searchValue', 'subtitle', 'titleAlignment', 'variant'],
170
+ standalone: true
84
171
  }]
85
172
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
86
173
  let MdAreaChart = class MdAreaChart {
@@ -91,12 +178,13 @@ let MdAreaChart = class MdAreaChart {
91
178
  proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
92
179
  }
93
180
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAreaChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAreaChart, selector: "md-area-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", fillOpacity: "fillOpacity", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAreaChart, isStandalone: true, selector: "md-area-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", fillOpacity: "fillOpacity", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
95
182
  };
96
183
  MdAreaChart = __decorate([
97
184
  ProxyCmp({
185
+ defineCustomElementFn: defineMdAreaChart,
98
186
  inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
99
- methods: ['resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
187
+ methods: ['refreshTheme', 'resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
100
188
  })
101
189
  ], MdAreaChart);
102
190
  export { MdAreaChart };
@@ -108,6 +196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
108
196
  template: '<ng-content></ng-content>',
109
197
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
110
198
  inputs: ['animation', 'animationDuration', 'axisTicks', 'connectNulls', 'curve', 'density', 'fillOpacity', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'zoom'],
199
+ standalone: true
111
200
  }]
112
201
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
113
202
  let MdAutocomplete = class MdAutocomplete {
@@ -118,10 +207,11 @@ let MdAutocomplete = class MdAutocomplete {
118
207
  proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdClear', 'mdValidityChange']);
119
208
  }
120
209
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAutocomplete, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAutocomplete, selector: "md-autocomplete", inputs: { chipPosition: "chipPosition", clearIcon: "clearIcon", clearOnBlur: "clearOnBlur", clearable: "clearable", density: "density", disableCloseOnSelect: "disableCloseOnSelect", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterMode: "filterMode", filterer: "filterer", freeSolo: "freeSolo", inputValue: "inputValue", label: "label", limitResults: "limitResults", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", multiple: "multiple", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", softDisabled: "softDisabled", statusTemplate: "statusTemplate", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAutocomplete, isStandalone: true, selector: "md-autocomplete", inputs: { chipPosition: "chipPosition", clearIcon: "clearIcon", clearOnBlur: "clearOnBlur", clearable: "clearable", density: "density", disableCloseOnSelect: "disableCloseOnSelect", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterMode: "filterMode", filterer: "filterer", freeSolo: "freeSolo", inputValue: "inputValue", label: "label", limitResults: "limitResults", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", multiple: "multiple", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", softDisabled: "softDisabled", statusTemplate: "statusTemplate", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
122
211
  };
123
212
  MdAutocomplete = __decorate([
124
213
  ProxyCmp({
214
+ defineCustomElementFn: defineMdAutocomplete,
125
215
  inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
126
216
  methods: ['focusInput', 'showMenu', 'closeMenu', 'loadOptions', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
127
217
  })
@@ -135,6 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
135
225
  template: '<ng-content></ng-content>',
136
226
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
137
227
  inputs: ['chipPosition', 'clearIcon', 'clearOnBlur', 'clearable', 'density', 'disableCloseOnSelect', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterMode', 'filterer', 'freeSolo', 'inputValue', 'label', 'limitResults', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'multiple', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'softDisabled', 'statusTemplate', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
228
+ standalone: true
138
229
  }]
139
230
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
140
231
  let MdAvatar = class MdAvatar {
@@ -145,10 +236,11 @@ let MdAvatar = class MdAvatar {
145
236
  proxyOutputs(this, this.el, ['mdLoad', 'mdError']);
146
237
  }
147
238
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdAvatar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
148
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAvatar, selector: "md-avatar", inputs: { alt: "alt", colorFromName: "colorFromName", crossorigin: "crossorigin", density: "density", initials: "initials", label: "label", loading: "loading", name: "name", shape: "shape", size: "size", src: "src" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdAvatar, isStandalone: true, selector: "md-avatar", inputs: { alt: "alt", colorFromName: "colorFromName", crossorigin: "crossorigin", density: "density", initials: "initials", label: "label", loading: "loading", name: "name", shape: "shape", size: "size", src: "src" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
149
240
  };
150
241
  MdAvatar = __decorate([
151
242
  ProxyCmp({
243
+ defineCustomElementFn: defineMdAvatar,
152
244
  inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src']
153
245
  })
154
246
  ], MdAvatar);
@@ -161,6 +253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
161
253
  template: '<ng-content></ng-content>',
162
254
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
163
255
  inputs: ['alt', 'colorFromName', 'crossorigin', 'density', 'initials', 'label', 'loading', 'name', 'shape', 'size', 'src'],
256
+ standalone: true
164
257
  }]
165
258
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
166
259
  let MdBadge = class MdBadge {
@@ -170,11 +263,12 @@ let MdBadge = class MdBadge {
170
263
  this.el = r.nativeElement;
171
264
  }
172
265
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBadge, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBadge, selector: "md-badge", inputs: { density: "density", icon: "icon", max: "max", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
266
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBadge, isStandalone: true, selector: "md-badge", inputs: { density: "density", icon: "icon", max: "max", shape: "shape", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
267
  };
175
268
  MdBadge = __decorate([
176
269
  ProxyCmp({
177
- inputs: ['density', 'icon', 'max', 'value', 'variant']
270
+ defineCustomElementFn: defineMdBadge,
271
+ inputs: ['density', 'icon', 'max', 'shape', 'value', 'variant']
178
272
  })
179
273
  ], MdBadge);
180
274
  export { MdBadge };
@@ -185,7 +279,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
185
279
  changeDetection: ChangeDetectionStrategy.OnPush,
186
280
  template: '<ng-content></ng-content>',
187
281
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
188
- inputs: ['density', 'icon', 'max', 'value', 'variant'],
282
+ inputs: ['density', 'icon', 'max', 'shape', 'value', 'variant'],
283
+ standalone: true
189
284
  }]
190
285
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
191
286
  let MdBarChart = class MdBarChart {
@@ -196,12 +291,13 @@ let MdBarChart = class MdBarChart {
196
291
  proxyOutputs(this, this.el, ['mdBarClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
197
292
  }
198
293
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBarChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBarChart, selector: "md-bar-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", barGap: "barGap", barWidth: "barWidth", categoryGap: "categoryGap", chevron: "chevron", clickable: "clickable", cornerRadius: "cornerRadius", density: "density", heightProp: "heightProp", label: "label", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", layout: "layout", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", noAnimation: "noAnimation", polar: "polar", polarHole: "polarHole", polarSweep: "polarSweep", series: "series", showLabels: "showLabels", showTotals: "showTotals", stack: "stack", subtitle: "subtitle", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", yAxis2: "yAxis2", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBarChart, isStandalone: true, selector: "md-bar-chart", inputs: { animation: "animation", animationDuration: "animationDuration", axisTicks: "axisTicks", barGap: "barGap", barWidth: "barWidth", categoryGap: "categoryGap", chevron: "chevron", clickable: "clickable", cornerRadius: "cornerRadius", density: "density", heightProp: "heightProp", label: "label", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", layout: "layout", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", noAnimation: "noAnimation", polar: "polar", polarHole: "polarHole", polarSweep: "polarSweep", series: "series", showLabels: "showLabels", showTotals: "showTotals", stack: "stack", subtitle: "subtitle", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxis: "yAxis", yAxis2: "yAxis2", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
200
295
  };
201
296
  MdBarChart = __decorate([
202
297
  ProxyCmp({
298
+ defineCustomElementFn: defineMdBarChart,
203
299
  inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
204
- methods: ['resize', 'replay', 'drill', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
300
+ methods: ['refreshTheme', 'resize', 'replay', 'drill', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
205
301
  })
206
302
  ], MdBarChart);
207
303
  export { MdBarChart };
@@ -213,6 +309,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
213
309
  template: '<ng-content></ng-content>',
214
310
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
215
311
  inputs: ['animation', 'animationDuration', 'axisTicks', 'barGap', 'barWidth', 'categoryGap', 'chevron', 'clickable', 'cornerRadius', 'density', 'heightProp', 'label', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'layout', 'legend', 'loading', 'loadingLabel', 'locale', 'noAnimation', 'polar', 'polarHole', 'polarSweep', 'series', 'showLabels', 'showTotals', 'stack', 'subtitle', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxis', 'yAxis2', 'zoom'],
312
+ standalone: true
216
313
  }]
217
314
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
218
315
  let MdBottomSheet = class MdBottomSheet {
@@ -223,10 +320,11 @@ let MdBottomSheet = class MdBottomSheet {
223
320
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
224
321
  }
225
322
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBottomSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBottomSheet, selector: "md-bottom-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", contentAlign: "contentAlign", density: "density", headline: "headline", headlineAlign: "headlineAlign", open: "open", scrimDismissible: "scrimDismissible", scrollShadow: "scrollShadow", sheetAriaLabel: "sheetAriaLabel", showDragHandle: "showDragHandle", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
323
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBottomSheet, isStandalone: true, selector: "md-bottom-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", contentAlign: "contentAlign", density: "density", headline: "headline", headlineAlign: "headlineAlign", open: "open", scrimDismissible: "scrimDismissible", scrollShadow: "scrollShadow", sheetAriaLabel: "sheetAriaLabel", showDragHandle: "showDragHandle", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
227
324
  };
228
325
  MdBottomSheet = __decorate([
229
326
  ProxyCmp({
327
+ defineCustomElementFn: defineMdBottomSheet,
230
328
  inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
231
329
  methods: ['show', 'close']
232
330
  })
@@ -240,6 +338,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
240
338
  template: '<ng-content></ng-content>',
241
339
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
242
340
  inputs: ['bottomDivider', 'closeable', 'contentAlign', 'density', 'headline', 'headlineAlign', 'open', 'scrimDismissible', 'scrollShadow', 'sheetAriaLabel', 'showDragHandle', 'topDivider', 'variant'],
341
+ standalone: true
243
342
  }]
244
343
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
245
344
  let MdBreadcrumbItem = class MdBreadcrumbItem {
@@ -250,10 +349,11 @@ let MdBreadcrumbItem = class MdBreadcrumbItem {
250
349
  proxyOutputs(this, this.el, ['mdSelect']);
251
350
  }
252
351
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbItem, selector: "md-breadcrumb-item", inputs: { collapsed: "collapsed", current: "current", density: "density", disabled: "disabled", href: "href", icon: "icon", itemIndex: "itemIndex", itemTotal: "itemTotal", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
352
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbItem, isStandalone: true, selector: "md-breadcrumb-item", inputs: { collapsed: "collapsed", current: "current", density: "density", disabled: "disabled", href: "href", icon: "icon", itemIndex: "itemIndex", itemTotal: "itemTotal", rel: "rel", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
254
353
  };
255
354
  MdBreadcrumbItem = __decorate([
256
355
  ProxyCmp({
356
+ defineCustomElementFn: defineMdBreadcrumbItem,
257
357
  inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target']
258
358
  })
259
359
  ], MdBreadcrumbItem);
@@ -266,6 +366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
266
366
  template: '<ng-content></ng-content>',
267
367
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
268
368
  inputs: ['collapsed', 'current', 'density', 'disabled', 'href', 'icon', 'itemIndex', 'itemTotal', 'rel', 'target'],
369
+ standalone: true
269
370
  }]
270
371
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
271
372
  let MdBreadcrumbs = class MdBreadcrumbs {
@@ -276,10 +377,11 @@ let MdBreadcrumbs = class MdBreadcrumbs {
276
377
  proxyOutputs(this, this.el, ['mdExpand']);
277
378
  }
278
379
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdBreadcrumbs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
279
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbs, selector: "md-breadcrumbs", inputs: { density: "density", expandLabel: "expandLabel", itemsAfterCollapse: "itemsAfterCollapse", itemsBeforeCollapse: "itemsBeforeCollapse", label: "label", maxItems: "maxItems", separator: "separator" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdBreadcrumbs, isStandalone: true, selector: "md-breadcrumbs", inputs: { density: "density", expandLabel: "expandLabel", itemsAfterCollapse: "itemsAfterCollapse", itemsBeforeCollapse: "itemsBeforeCollapse", label: "label", maxItems: "maxItems", separator: "separator" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
280
381
  };
281
382
  MdBreadcrumbs = __decorate([
282
383
  ProxyCmp({
384
+ defineCustomElementFn: defineMdBreadcrumbs,
283
385
  inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
284
386
  methods: ['expand', 'collapse']
285
387
  })
@@ -293,6 +395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
293
395
  template: '<ng-content></ng-content>',
294
396
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
295
397
  inputs: ['density', 'expandLabel', 'itemsAfterCollapse', 'itemsBeforeCollapse', 'label', 'maxItems', 'separator'],
398
+ standalone: true
296
399
  }]
297
400
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
298
401
  let MdButton = class MdButton {
@@ -303,10 +406,11 @@ let MdButton = class MdButton {
303
406
  proxyOutputs(this, this.el, ['mdClick', 'mdChange']);
304
407
  }
305
408
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
306
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButton, selector: "md-button", inputs: { density: "density", disabled: "disabled", fullWidth: "fullWidth", href: "href", icon: "icon", loading: "loading", mirrorIcon: "mirrorIcon", ripple: "ripple", roleOverride: "roleOverride", selected: "selected", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", suppressExpandIconFlip: "suppressExpandIconFlip", target: "target", toggle: "toggle", trailingIcon: "trailingIcon", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
409
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButton, isStandalone: true, selector: "md-button", inputs: { density: "density", disabled: "disabled", fullWidth: "fullWidth", href: "href", icon: "icon", loading: "loading", mirrorIcon: "mirrorIcon", ripple: "ripple", roleOverride: "roleOverride", selected: "selected", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", suppressExpandIconFlip: "suppressExpandIconFlip", target: "target", toggle: "toggle", trailingIcon: "trailingIcon", type: "type", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
307
410
  };
308
411
  MdButton = __decorate([
309
412
  ProxyCmp({
413
+ defineCustomElementFn: defineMdButton,
310
414
  inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant']
311
415
  })
312
416
  ], MdButton);
@@ -319,6 +423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
319
423
  template: '<ng-content></ng-content>',
320
424
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
321
425
  inputs: ['density', 'disabled', 'fullWidth', 'href', 'icon', 'loading', 'mirrorIcon', 'ripple', 'roleOverride', 'selected', 'shape', 'shapeMorph', 'size', 'softDisabled', 'suppressExpandIconFlip', 'target', 'toggle', 'trailingIcon', 'type', 'variant'],
426
+ standalone: true
322
427
  }]
323
428
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
324
429
  let MdButtonGroup = class MdButtonGroup {
@@ -329,10 +434,11 @@ let MdButtonGroup = class MdButtonGroup {
329
434
  proxyOutputs(this, this.el, ['mdSelectionChange']);
330
435
  }
331
436
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdButtonGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
332
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButtonGroup, selector: "md-button-group", inputs: { density: "density", fullWidth: "fullWidth", required: "required", selectionMode: "selectionMode", shape: "shape", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdButtonGroup, isStandalone: true, selector: "md-button-group", inputs: { density: "density", fullWidth: "fullWidth", required: "required", selectionMode: "selectionMode", shape: "shape", size: "size", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
333
438
  };
334
439
  MdButtonGroup = __decorate([
335
440
  ProxyCmp({
441
+ defineCustomElementFn: defineMdButtonGroup,
336
442
  inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant']
337
443
  })
338
444
  ], MdButtonGroup);
@@ -345,6 +451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
345
451
  template: '<ng-content></ng-content>',
346
452
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
347
453
  inputs: ['density', 'fullWidth', 'required', 'selectionMode', 'shape', 'size', 'variant'],
454
+ standalone: true
348
455
  }]
349
456
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
350
457
  let MdCard = class MdCard {
@@ -355,10 +462,11 @@ let MdCard = class MdCard {
355
462
  proxyOutputs(this, this.el, ['mdClick', 'mdDragStart', 'mdDragMove', 'mdDragEnd']);
356
463
  }
357
464
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
358
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCard, selector: "md-card", inputs: { density: "density", disabled: "disabled", dragEnabled: "dragEnabled", fullHeight: "fullHeight", fullWidth: "fullWidth", interactive: "interactive", ripple: "ripple", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
465
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCard, isStandalone: true, selector: "md-card", inputs: { density: "density", disabled: "disabled", dragEnabled: "dragEnabled", fullHeight: "fullHeight", fullWidth: "fullWidth", interactive: "interactive", ripple: "ripple", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
359
466
  };
360
467
  MdCard = __decorate([
361
468
  ProxyCmp({
469
+ defineCustomElementFn: defineMdCard,
362
470
  inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant']
363
471
  })
364
472
  ], MdCard);
@@ -371,6 +479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
371
479
  template: '<ng-content></ng-content>',
372
480
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
373
481
  inputs: ['density', 'disabled', 'dragEnabled', 'fullHeight', 'fullWidth', 'interactive', 'ripple', 'softDisabled', 'variant'],
482
+ standalone: true
374
483
  }]
375
484
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
376
485
  let MdCheckbox = class MdCheckbox {
@@ -381,10 +490,11 @@ let MdCheckbox = class MdCheckbox {
381
490
  proxyOutputs(this, this.el, ['mdChange', 'mdValidityChange']);
382
491
  }
383
492
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
384
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCheckbox, selector: "md-checkbox", inputs: { checked: "checked", density: "density", disabled: "disabled", error: "error", errorText: "errorText", indeterminate: "indeterminate", name: "name", required: "required", softDisabled: "softDisabled", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
493
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdCheckbox, isStandalone: true, selector: "md-checkbox", inputs: { checked: "checked", density: "density", disabled: "disabled", error: "error", errorText: "errorText", indeterminate: "indeterminate", name: "name", required: "required", softDisabled: "softDisabled", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
385
494
  };
386
495
  MdCheckbox = __decorate([
387
496
  ProxyCmp({
497
+ defineCustomElementFn: defineMdCheckbox,
388
498
  inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
389
499
  methods: ['getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
390
500
  })
@@ -398,6 +508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
398
508
  template: '<ng-content></ng-content>',
399
509
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
400
510
  inputs: ['checked', 'density', 'disabled', 'error', 'errorText', 'indeterminate', 'name', 'required', 'softDisabled', 'supportingText', 'value', 'valueMissingLabel'],
511
+ standalone: true
401
512
  }]
402
513
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
403
514
  let MdChip = class MdChip {
@@ -408,11 +519,12 @@ let MdChip = class MdChip {
408
519
  proxyOutputs(this, this.el, ['mdClick', 'mdSelect', 'mdRemove']);
409
520
  }
410
521
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
411
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdChip, selector: "md-chip", inputs: { appearance: "appearance", color: "color", density: "density", disabled: "disabled", elevated: "elevated", icon: "icon", label: "label", removable: "removable", selectable: "selectable", selected: "selected", softDisabled: "softDisabled", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
522
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdChip, isStandalone: true, selector: "md-chip", inputs: { appearance: "appearance", color: "color", contentAlign: "contentAlign", density: "density", disabled: "disabled", elevated: "elevated", icon: "icon", label: "label", removable: "removable", selectable: "selectable", selected: "selected", softDisabled: "softDisabled", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
412
523
  };
413
524
  MdChip = __decorate([
414
525
  ProxyCmp({
415
- inputs: ['appearance', 'color', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant']
526
+ defineCustomElementFn: defineMdChip,
527
+ inputs: ['appearance', 'color', 'contentAlign', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant']
416
528
  })
417
529
  ], MdChip);
418
530
  export { MdChip };
@@ -423,7 +535,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
423
535
  changeDetection: ChangeDetectionStrategy.OnPush,
424
536
  template: '<ng-content></ng-content>',
425
537
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
426
- inputs: ['appearance', 'color', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant'],
538
+ inputs: ['appearance', 'color', 'contentAlign', 'density', 'disabled', 'elevated', 'icon', 'label', 'removable', 'selectable', 'selected', 'softDisabled', 'trailingIcon', 'variant'],
539
+ standalone: true
427
540
  }]
428
541
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
429
542
  let MdColorPicker = class MdColorPicker {
@@ -434,11 +547,12 @@ let MdColorPicker = class MdColorPicker {
434
547
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdOpenChange']);
435
548
  }
436
549
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdColorPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
437
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdColorPicker, selector: "md-color-picker", inputs: { alpha: "alpha", ariaLabelProp: "ariaLabelProp", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", format: "format", open: "open", presets: "presets", showHex: "showHex", showInputs: "showInputs", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
550
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdColorPicker, isStandalone: true, selector: "md-color-picker", inputs: { alpha: "alpha", ariaLabelProp: "ariaLabelProp", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", format: "format", locale: "locale", open: "open", presets: "presets", showHex: "showHex", showInputs: "showInputs", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
438
551
  };
439
552
  MdColorPicker = __decorate([
440
553
  ProxyCmp({
441
- inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
554
+ defineCustomElementFn: defineMdColorPicker,
555
+ inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'locale', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
442
556
  methods: ['show', 'close']
443
557
  })
444
558
  ], MdColorPicker);
@@ -450,7 +564,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
450
564
  changeDetection: ChangeDetectionStrategy.OnPush,
451
565
  template: '<ng-content></ng-content>',
452
566
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
453
- inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
567
+ inputs: ['alpha', 'ariaLabelProp', 'density', 'disabled', 'dismissOnOutsideClick', 'format', 'locale', 'open', 'presets', 'showHex', 'showInputs', 'value', 'variant'],
568
+ standalone: true
454
569
  }]
455
570
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
456
571
  let MdDatePicker = class MdDatePicker {
@@ -461,10 +576,11 @@ let MdDatePicker = class MdDatePicker {
461
576
  proxyOutputs(this, this.el, ['mdChange', 'mdSelected', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdViewChange', 'mdMenuOpen', 'mdMenuSelect', 'mdModeChange', 'mdValidityChange']);
462
577
  }
463
578
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
464
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDatePicker, selector: "md-date-picker", inputs: { calendarIcon: "calendarIcon", cancelLabel: "cancelLabel", chooseMonthAndYearLabel: "chooseMonthAndYearLabel", chooseMonthLabel: "chooseMonthLabel", chooseMonthYearLabel: "chooseMonthYearLabel", chooseYearLabel: "chooseYearLabel", clearLabel: "clearLabel", clearable: "clearable", closeCalendarLabel: "closeCalendarLabel", commitOnSelect: "commitOnSelect", dateSeparator: "dateSeparator", density: "density", disabled: "disabled", enterDatesLabel: "enterDatesLabel", error: "error", errorText: "errorText", fieldVariant: "fieldVariant", firstDayOfWeek: "firstDayOfWeek", headline: "headline", invalidDateLabel: "invalidDateLabel", isDateDisabled: "isDateDisabled", label: "label", locale: "locale", max: "max", min: "min", name: "name", nextMonthLabel: "nextMonthLabel", nextYearLabel: "nextYearLabel", okLabel: "okLabel", open: "open", openCalendarLabel: "openCalendarLabel", outsideClickDismissible: "outsideClickDismissible", placeholder: "placeholder", previousMonthLabel: "previousMonthLabel", previousYearLabel: "previousYearLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", scrimDismissible: "scrimDismissible", selectDateLabel: "selectDateLabel", supportingText: "supportingText", toggleCalendarLabel: "toggleCalendarLabel", toggleTextLabel: "toggleTextLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", yearGridLabel: "yearGridLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
579
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDatePicker, isStandalone: true, selector: "md-date-picker", inputs: { calendarIcon: "calendarIcon", cancelLabel: "cancelLabel", chooseMonthAndYearLabel: "chooseMonthAndYearLabel", chooseMonthLabel: "chooseMonthLabel", chooseMonthYearLabel: "chooseMonthYearLabel", chooseYearLabel: "chooseYearLabel", clearLabel: "clearLabel", clearable: "clearable", closeCalendarLabel: "closeCalendarLabel", commitOnSelect: "commitOnSelect", dateSeparator: "dateSeparator", density: "density", disabled: "disabled", enterDatesLabel: "enterDatesLabel", error: "error", errorText: "errorText", fieldVariant: "fieldVariant", firstDayOfWeek: "firstDayOfWeek", headline: "headline", invalidDateLabel: "invalidDateLabel", isDateDisabled: "isDateDisabled", label: "label", locale: "locale", max: "max", min: "min", name: "name", nextMonthLabel: "nextMonthLabel", nextYearLabel: "nextYearLabel", okLabel: "okLabel", open: "open", openCalendarLabel: "openCalendarLabel", outsideClickDismissible: "outsideClickDismissible", placeholder: "placeholder", previousMonthLabel: "previousMonthLabel", previousYearLabel: "previousYearLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", scrimDismissible: "scrimDismissible", selectDateLabel: "selectDateLabel", supportingText: "supportingText", toggleCalendarLabel: "toggleCalendarLabel", toggleTextLabel: "toggleTextLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", yearGridLabel: "yearGridLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
465
580
  };
466
581
  MdDatePicker = __decorate([
467
582
  ProxyCmp({
583
+ defineCustomElementFn: defineMdDatePicker,
468
584
  inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
469
585
  methods: ['show', 'close', 'clear', 'focusInput', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
470
586
  })
@@ -478,6 +594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
478
594
  template: '<ng-content></ng-content>',
479
595
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
480
596
  inputs: ['calendarIcon', 'cancelLabel', 'chooseMonthAndYearLabel', 'chooseMonthLabel', 'chooseMonthYearLabel', 'chooseYearLabel', 'clearLabel', 'clearable', 'closeCalendarLabel', 'commitOnSelect', 'dateSeparator', 'density', 'disabled', 'enterDatesLabel', 'error', 'errorText', 'fieldVariant', 'firstDayOfWeek', 'headline', 'invalidDateLabel', 'isDateDisabled', 'label', 'locale', 'max', 'min', 'name', 'nextMonthLabel', 'nextYearLabel', 'okLabel', 'open', 'openCalendarLabel', 'outsideClickDismissible', 'placeholder', 'previousMonthLabel', 'previousYearLabel', 'required', 'reserveSupportingSpace', 'scrimDismissible', 'selectDateLabel', 'supportingText', 'toggleCalendarLabel', 'toggleTextLabel', 'value', 'valueMissingLabel', 'variant', 'yearGridLabel'],
597
+ standalone: true
481
598
  }]
482
599
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
483
600
  let MdDialog = class MdDialog {
@@ -488,10 +605,11 @@ let MdDialog = class MdDialog {
488
605
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel']);
489
606
  }
490
607
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDialog, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
491
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDialog, selector: "md-dialog", inputs: { cancelLabel: "cancelLabel", closeLabel: "closeLabel", density: "density", divider: "divider", fullscreen: "fullscreen", headerDivider: "headerDivider", headline: "headline", icon: "icon", locale: "locale", okLabel: "okLabel", open: "open", scrimDismissible: "scrimDismissible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
608
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDialog, isStandalone: true, selector: "md-dialog", inputs: { cancelLabel: "cancelLabel", closeLabel: "closeLabel", density: "density", divider: "divider", fullscreen: "fullscreen", headerDivider: "headerDivider", headline: "headline", icon: "icon", locale: "locale", okLabel: "okLabel", open: "open", scrimDismissible: "scrimDismissible" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
492
609
  };
493
610
  MdDialog = __decorate([
494
611
  ProxyCmp({
612
+ defineCustomElementFn: defineMdDialog,
495
613
  inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
496
614
  methods: ['show', 'close']
497
615
  })
@@ -505,6 +623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
505
623
  template: '<ng-content></ng-content>',
506
624
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
507
625
  inputs: ['cancelLabel', 'closeLabel', 'density', 'divider', 'fullscreen', 'headerDivider', 'headline', 'icon', 'locale', 'okLabel', 'open', 'scrimDismissible'],
626
+ standalone: true
508
627
  }]
509
628
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
510
629
  let MdDivider = class MdDivider {
@@ -514,10 +633,11 @@ let MdDivider = class MdDivider {
514
633
  this.el = r.nativeElement;
515
634
  }
516
635
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdDivider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
517
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDivider, selector: "md-divider", inputs: { inset: "inset", insetEnd: "insetEnd", insetStart: "insetStart", vertical: "vertical" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
636
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdDivider, isStandalone: true, selector: "md-divider", inputs: { inset: "inset", insetEnd: "insetEnd", insetStart: "insetStart", vertical: "vertical" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
518
637
  };
519
638
  MdDivider = __decorate([
520
639
  ProxyCmp({
640
+ defineCustomElementFn: defineMdDivider,
521
641
  inputs: ['inset', 'insetEnd', 'insetStart', 'vertical']
522
642
  })
523
643
  ], MdDivider);
@@ -530,6 +650,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
530
650
  template: '<ng-content></ng-content>',
531
651
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
532
652
  inputs: ['inset', 'insetEnd', 'insetStart', 'vertical'],
653
+ standalone: true
533
654
  }]
534
655
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
535
656
  let MdFab = class MdFab {
@@ -540,10 +661,11 @@ let MdFab = class MdFab {
540
661
  proxyOutputs(this, this.el, ['mdClick']);
541
662
  }
542
663
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
543
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFab, selector: "md-fab", inputs: { density: "density", disabled: "disabled", extended: "extended", icon: "icon", label: "label", lowered: "lowered", ripple: "ripple", size: "size", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
664
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFab, isStandalone: true, selector: "md-fab", inputs: { density: "density", disabled: "disabled", extended: "extended", icon: "icon", label: "label", lowered: "lowered", ripple: "ripple", size: "size", softDisabled: "softDisabled", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
544
665
  };
545
666
  MdFab = __decorate([
546
667
  ProxyCmp({
668
+ defineCustomElementFn: defineMdFab,
547
669
  inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant']
548
670
  })
549
671
  ], MdFab);
@@ -556,6 +678,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
556
678
  template: '<ng-content></ng-content>',
557
679
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
558
680
  inputs: ['density', 'disabled', 'extended', 'icon', 'label', 'lowered', 'ripple', 'size', 'softDisabled', 'variant'],
681
+ standalone: true
559
682
  }]
560
683
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
561
684
  let MdFabMenu = class MdFabMenu {
@@ -566,10 +689,11 @@ let MdFabMenu = class MdFabMenu {
566
689
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
567
690
  }
568
691
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
569
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenu, selector: "md-fab-menu", inputs: { anchor: "anchor", density: "density", menuLabel: "menuLabel", open: "open", placement: "placement", quick: "quick", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
692
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenu, isStandalone: true, selector: "md-fab-menu", inputs: { anchor: "anchor", density: "density", menuLabel: "menuLabel", open: "open", placement: "placement", quick: "quick", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
570
693
  };
571
694
  MdFabMenu = __decorate([
572
695
  ProxyCmp({
696
+ defineCustomElementFn: defineMdFabMenu,
573
697
  inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
574
698
  methods: ['show', 'close']
575
699
  })
@@ -583,6 +707,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
583
707
  template: '<ng-content></ng-content>',
584
708
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
585
709
  inputs: ['anchor', 'density', 'menuLabel', 'open', 'placement', 'quick', 'variant'],
710
+ standalone: true
586
711
  }]
587
712
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
588
713
  let MdFabMenuItem = class MdFabMenuItem {
@@ -593,10 +718,11 @@ let MdFabMenuItem = class MdFabMenuItem {
593
718
  proxyOutputs(this, this.el, ['mdClick']);
594
719
  }
595
720
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdFabMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
596
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenuItem, selector: "md-fab-menu-item", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", rovingFocusVisible: "rovingFocusVisible", softDisabled: "softDisabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
721
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdFabMenuItem, isStandalone: true, selector: "md-fab-menu-item", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", rovingFocusVisible: "rovingFocusVisible", softDisabled: "softDisabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
597
722
  };
598
723
  MdFabMenuItem = __decorate([
599
724
  ProxyCmp({
725
+ defineCustomElementFn: defineMdFabMenuItem,
600
726
  inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled']
601
727
  })
602
728
  ], MdFabMenuItem);
@@ -609,6 +735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
609
735
  template: '<ng-content></ng-content>',
610
736
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
611
737
  inputs: ['density', 'disabled', 'icon', 'label', 'rovingFocusVisible', 'softDisabled'],
738
+ standalone: true
612
739
  }]
613
740
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
614
741
  let MdIconButton = class MdIconButton {
@@ -619,10 +746,11 @@ let MdIconButton = class MdIconButton {
619
746
  proxyOutputs(this, this.el, ['mdClick']);
620
747
  }
621
748
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdIconButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
622
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdIconButton, selector: "md-icon-button", inputs: { buttonWidth: "buttonWidth", density: "density", disabled: "disabled", href: "href", icon: "icon", ripple: "ripple", selected: "selected", selectedIcon: "selectedIcon", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", target: "target", toggle: "toggle", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdIconButton, isStandalone: true, selector: "md-icon-button", inputs: { buttonWidth: "buttonWidth", density: "density", disabled: "disabled", href: "href", icon: "icon", ripple: "ripple", selected: "selected", selectedIcon: "selectedIcon", shape: "shape", shapeMorph: "shapeMorph", size: "size", softDisabled: "softDisabled", target: "target", toggle: "toggle", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
623
750
  };
624
751
  MdIconButton = __decorate([
625
752
  ProxyCmp({
753
+ defineCustomElementFn: defineMdIconButton,
626
754
  inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant']
627
755
  })
628
756
  ], MdIconButton);
@@ -635,6 +763,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
635
763
  template: '<ng-content></ng-content>',
636
764
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
637
765
  inputs: ['buttonWidth', 'density', 'disabled', 'href', 'icon', 'ripple', 'selected', 'selectedIcon', 'shape', 'shapeMorph', 'size', 'softDisabled', 'target', 'toggle', 'variant'],
766
+ standalone: true
638
767
  }]
639
768
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
640
769
  let MdLineChart = class MdLineChart {
@@ -645,12 +774,13 @@ let MdLineChart = class MdLineChart {
645
774
  proxyOutputs(this, this.el, ['mdMarkerClick', 'mdLineClick', 'mdAreaClick', 'mdAxisClick', 'mdLegendClick', 'mdHover', 'mdReady', 'mdZoom']);
646
775
  }
647
776
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLineChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
648
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLineChart, selector: "md-line-chart", inputs: { animation: "animation", animationDuration: "animationDuration", area: "area", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markLines: "markLines", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxes: "yAxes", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
777
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLineChart, isStandalone: true, selector: "md-line-chart", inputs: { animation: "animation", animationDuration: "animationDuration", area: "area", axisTicks: "axisTicks", connectNulls: "connectNulls", curve: "curve", density: "density", grid: "grid", heightProp: "heightProp", inverted: "inverted", label: "label", labelEmpty: "labelEmpty", labelPlot: "labelPlot", labelPoint: "labelPoint", labelZoomEnd: "labelZoomEnd", labelZoomStart: "labelZoomStart", legend: "legend", lineWidth: "lineWidth", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", markLines: "markLines", markSize: "markSize", noAnimation: "noAnimation", series: "series", seriesLabels: "seriesLabels", showLabels: "showLabels", showLine: "showLine", showMarks: "showMarks", stack: "stack", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter", xAxis: "xAxis", yAxes: "yAxes", yAxis: "yAxis", zoom: "zoom" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
649
778
  };
650
779
  MdLineChart = __decorate([
651
780
  ProxyCmp({
781
+ defineCustomElementFn: defineMdLineChart,
652
782
  inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
653
- methods: ['resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
783
+ methods: ['refreshTheme', 'resize', 'replay', 'toDataURL', 'getInstance', 'setZoom', 'resetZoom']
654
784
  })
655
785
  ], MdLineChart);
656
786
  export { MdLineChart };
@@ -662,6 +792,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
662
792
  template: '<ng-content></ng-content>',
663
793
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
664
794
  inputs: ['animation', 'animationDuration', 'area', 'axisTicks', 'connectNulls', 'curve', 'density', 'grid', 'heightProp', 'inverted', 'label', 'labelEmpty', 'labelPlot', 'labelPoint', 'labelZoomEnd', 'labelZoomStart', 'legend', 'lineWidth', 'loading', 'loadingLabel', 'locale', 'markLines', 'markSize', 'noAnimation', 'series', 'seriesLabels', 'showLabels', 'showLine', 'showMarks', 'stack', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter', 'xAxis', 'yAxes', 'yAxis', 'zoom'],
795
+ standalone: true
665
796
  }]
666
797
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
667
798
  let MdList = class MdList {
@@ -672,10 +803,11 @@ let MdList = class MdList {
672
803
  proxyOutputs(this, this.el, ['mdSelect', 'mdActivate', 'mdReorder']);
673
804
  }
674
805
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
675
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdList, selector: "md-list", inputs: { density: "density", interactionMode: "interactionMode", label: "label", labelledby: "labelledby", listStyle: "listStyle", reorderable: "reorderable", roleOverride: "roleOverride", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
806
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdList, isStandalone: true, selector: "md-list", inputs: { density: "density", interactionMode: "interactionMode", label: "label", labelledby: "labelledby", listStyle: "listStyle", reorderable: "reorderable", roleOverride: "roleOverride", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
676
807
  };
677
808
  MdList = __decorate([
678
809
  ProxyCmp({
810
+ defineCustomElementFn: defineMdList,
679
811
  inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
680
812
  methods: ['activateNext', 'activatePrevious', 'selectItem', 'getSelectedIndices']
681
813
  })
@@ -689,6 +821,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
689
821
  template: '<ng-content></ng-content>',
690
822
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
691
823
  inputs: ['density', 'interactionMode', 'label', 'labelledby', 'listStyle', 'reorderable', 'roleOverride', 'selectionMode'],
824
+ standalone: true
692
825
  }]
693
826
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
694
827
  let MdListItem = class MdListItem {
@@ -699,10 +832,11 @@ let MdListItem = class MdListItem {
699
832
  proxyOutputs(this, this.el, ['mdClick', 'mdItemClick', 'mdItemSelect', 'mdRequestActivation', 'mdItemRequestReorder', 'mdExpand']);
700
833
  }
701
834
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdListItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
702
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdListItem, selector: "md-list-item", inputs: { containerRole: "containerRole", density: "density", disabled: "disabled", expandable: "expandable", expanded: "expanded", headline: "headline", href: "href", interactionMode: "interactionMode", leadingAvatar: "leadingAvatar", leadingAvatarAlt: "leadingAvatarAlt", leadingAvatarLabel: "leadingAvatarLabel", leadingAvatarName: "leadingAvatarName", leadingIcon: "leadingIcon", leadingImage: "leadingImage", leadingImageAlt: "leadingImageAlt", lines: "lines", overline: "overline", reorderable: "reorderable", rovingFocusVisible: "rovingFocusVisible", selected: "selected", selectionMode: "selectionMode", softDisabled: "softDisabled", supportingText: "supportingText", tabbable: "tabbable", target: "target", trailingIcon: "trailingIcon", trailingSupportingText: "trailingSupportingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
835
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdListItem, isStandalone: true, selector: "md-list-item", inputs: { containerRole: "containerRole", density: "density", disabled: "disabled", expandable: "expandable", expanded: "expanded", headline: "headline", href: "href", interactionMode: "interactionMode", leadingAvatar: "leadingAvatar", leadingAvatarAlt: "leadingAvatarAlt", leadingAvatarLabel: "leadingAvatarLabel", leadingAvatarName: "leadingAvatarName", leadingIcon: "leadingIcon", leadingImage: "leadingImage", leadingImageAlt: "leadingImageAlt", lines: "lines", overline: "overline", reorderable: "reorderable", rovingFocusVisible: "rovingFocusVisible", selected: "selected", selectionMode: "selectionMode", softDisabled: "softDisabled", supportingText: "supportingText", tabbable: "tabbable", target: "target", trailingIcon: "trailingIcon", trailingSupportingText: "trailingSupportingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
703
836
  };
704
837
  MdListItem = __decorate([
705
838
  ProxyCmp({
839
+ defineCustomElementFn: defineMdListItem,
706
840
  inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
707
841
  methods: ['setFocus', 'focusItem', 'toggle', 'expand', 'collapse']
708
842
  })
@@ -716,6 +850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
716
850
  template: '<ng-content></ng-content>',
717
851
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
718
852
  inputs: ['containerRole', 'density', 'disabled', 'expandable', 'expanded', 'headline', 'href', 'interactionMode', 'leadingAvatar', 'leadingAvatarAlt', 'leadingAvatarLabel', 'leadingAvatarName', 'leadingIcon', 'leadingImage', 'leadingImageAlt', 'lines', 'overline', 'reorderable', 'rovingFocusVisible', 'selected', 'selectionMode', 'softDisabled', 'supportingText', 'tabbable', 'target', 'trailingIcon', 'trailingSupportingText', 'type'],
853
+ standalone: true
719
854
  }]
720
855
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
721
856
  let MdLoadingIndicator = class MdLoadingIndicator {
@@ -725,10 +860,11 @@ let MdLoadingIndicator = class MdLoadingIndicator {
725
860
  this.el = r.nativeElement;
726
861
  }
727
862
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdLoadingIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
728
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLoadingIndicator, selector: "md-loading-indicator", inputs: { density: "density", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
863
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdLoadingIndicator, isStandalone: true, selector: "md-loading-indicator", inputs: { density: "density", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
729
864
  };
730
865
  MdLoadingIndicator = __decorate([
731
866
  ProxyCmp({
867
+ defineCustomElementFn: defineMdLoadingIndicator,
732
868
  inputs: ['density', 'label', 'variant']
733
869
  })
734
870
  ], MdLoadingIndicator);
@@ -741,6 +877,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
741
877
  template: '<ng-content></ng-content>',
742
878
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
743
879
  inputs: ['density', 'label', 'variant'],
880
+ standalone: true
744
881
  }]
745
882
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
746
883
  let MdMenu = class MdMenu {
@@ -751,10 +888,11 @@ let MdMenu = class MdMenu {
751
888
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
752
889
  }
753
890
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
754
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenu, selector: "md-menu", inputs: { anchor: "anchor", autoFocus: "autoFocus", density: "density", emptyText: "emptyText", layout: "layout", listLabel: "listLabel", listbox: "listbox", matchAnchorWidth: "matchAnchorWidth", maxHeight: "maxHeight", open: "open", persistent: "persistent", placement: "placement", quick: "quick", responsive: "responsive", useGap: "useGap", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
891
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenu, isStandalone: true, selector: "md-menu", inputs: { anchor: "anchor", autoFocus: "autoFocus", density: "density", emptyText: "emptyText", layout: "layout", listLabel: "listLabel", listbox: "listbox", matchAnchorWidth: "matchAnchorWidth", maxHeight: "maxHeight", open: "open", persistent: "persistent", placement: "placement", quick: "quick", responsive: "responsive", useGap: "useGap", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
755
892
  };
756
893
  MdMenu = __decorate([
757
894
  ProxyCmp({
895
+ defineCustomElementFn: defineMdMenu,
758
896
  inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
759
897
  methods: ['setComboboxElement', 'setVirtualProvider', 'getScrollViewport', 'show', 'reposition', 'close']
760
898
  })
@@ -768,6 +906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
768
906
  template: '<ng-content></ng-content>',
769
907
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
770
908
  inputs: ['anchor', 'autoFocus', 'density', 'emptyText', 'layout', 'listLabel', 'listbox', 'matchAnchorWidth', 'maxHeight', 'open', 'persistent', 'placement', 'quick', 'responsive', 'useGap', 'variant'],
909
+ standalone: true
771
910
  }]
772
911
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
773
912
  let MdMenuItem = class MdMenuItem {
@@ -778,10 +917,11 @@ let MdMenuItem = class MdMenuItem {
778
917
  proxyOutputs(this, this.el, ['mdClick']);
779
918
  }
780
919
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
781
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItem, selector: "md-menu-item", inputs: { badge: "badge", checkPosition: "checkPosition", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", indeterminate: "indeterminate", keepOpen: "keepOpen", presentation: "presentation", roleOverride: "roleOverride", selected: "selected", supportingText: "supportingText", trailingText: "trailingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
920
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItem, isStandalone: true, selector: "md-menu-item", inputs: { badge: "badge", checkPosition: "checkPosition", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", indeterminate: "indeterminate", keepOpen: "keepOpen", presentation: "presentation", roleOverride: "roleOverride", selected: "selected", supportingText: "supportingText", trailingText: "trailingText", type: "type" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
782
921
  };
783
922
  MdMenuItem = __decorate([
784
923
  ProxyCmp({
924
+ defineCustomElementFn: defineMdMenuItem,
785
925
  inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type']
786
926
  })
787
927
  ], MdMenuItem);
@@ -794,6 +934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
794
934
  template: '<ng-content></ng-content>',
795
935
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
796
936
  inputs: ['badge', 'checkPosition', 'density', 'disabled', 'divider', 'gap', 'headline', 'indeterminate', 'keepOpen', 'presentation', 'roleOverride', 'selected', 'supportingText', 'trailingText', 'type'],
937
+ standalone: true
797
938
  }]
798
939
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
799
940
  let MdMenuItemGroup = class MdMenuItemGroup {
@@ -803,10 +944,11 @@ let MdMenuItemGroup = class MdMenuItemGroup {
803
944
  this.el = r.nativeElement;
804
945
  }
805
946
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMenuItemGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
806
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItemGroup, selector: "md-menu-item-group", inputs: { density: "density", label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
947
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMenuItemGroup, isStandalone: true, selector: "md-menu-item-group", inputs: { density: "density", label: "label" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
807
948
  };
808
949
  MdMenuItemGroup = __decorate([
809
950
  ProxyCmp({
951
+ defineCustomElementFn: defineMdMenuItemGroup,
810
952
  inputs: ['density', 'label']
811
953
  })
812
954
  ], MdMenuItemGroup);
@@ -819,6 +961,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
819
961
  template: '<ng-content></ng-content>',
820
962
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
821
963
  inputs: ['density', 'label'],
964
+ standalone: true
822
965
  }]
823
966
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
824
967
  let MdMeter = class MdMeter {
@@ -828,10 +971,11 @@ let MdMeter = class MdMeter {
828
971
  this.el = r.nativeElement;
829
972
  }
830
973
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMeter, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
831
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMeter, selector: "md-meter", inputs: { color: "color", density: "density", formatOptions: "formatOptions", label: "label", locale: "locale", max: "max", min: "min", showLabel: "showLabel", showValue: "showValue", size: "size", thickness: "thickness", value: "value", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
974
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMeter, isStandalone: true, selector: "md-meter", inputs: { color: "color", density: "density", formatOptions: "formatOptions", label: "label", locale: "locale", max: "max", min: "min", showLabel: "showLabel", showValue: "showValue", size: "size", thickness: "thickness", value: "value", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
832
975
  };
833
976
  MdMeter = __decorate([
834
977
  ProxyCmp({
978
+ defineCustomElementFn: defineMdMeter,
835
979
  inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant']
836
980
  })
837
981
  ], MdMeter);
@@ -844,6 +988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
844
988
  template: '<ng-content></ng-content>',
845
989
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
846
990
  inputs: ['color', 'density', 'formatOptions', 'label', 'locale', 'max', 'min', 'showLabel', 'showValue', 'size', 'thickness', 'value', 'valueText', 'variant'],
991
+ standalone: true
847
992
  }]
848
993
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
849
994
  let MdMultiSelect = class MdMultiSelect {
@@ -854,10 +999,11 @@ let MdMultiSelect = class MdMultiSelect {
854
999
  proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdRemove', 'mdClear', 'mdValidityChange']);
855
1000
  }
856
1001
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdMultiSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
857
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMultiSelect, selector: "md-multi-select", inputs: { chipOverflow: "chipOverflow", chipPosition: "chipPosition", clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", countFormatter: "countFormatter", density: "density", disabled: "disabled", displayMode: "displayMode", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", selectAllLabel: "selectAllLabel", showSelectAll: "showSelectAll", softDisabled: "softDisabled", supportingText: "supportingText", trigger: "trigger", triggerIcon: "triggerIcon", triggerLabel: "triggerLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1002
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdMultiSelect, isStandalone: true, selector: "md-multi-select", inputs: { chipOverflow: "chipOverflow", chipPosition: "chipPosition", clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", countFormatter: "countFormatter", density: "density", disabled: "disabled", displayMode: "displayMode", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", maxSelected: "maxSelected", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", selectAllLabel: "selectAllLabel", showSelectAll: "showSelectAll", softDisabled: "softDisabled", supportingText: "supportingText", trigger: "trigger", triggerIcon: "triggerIcon", triggerLabel: "triggerLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
858
1003
  };
859
1004
  MdMultiSelect = __decorate([
860
1005
  ProxyCmp({
1006
+ defineCustomElementFn: defineMdMultiSelect,
861
1007
  inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
862
1008
  methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
863
1009
  })
@@ -871,6 +1017,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
871
1017
  template: '<ng-content></ng-content>',
872
1018
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
873
1019
  inputs: ['chipOverflow', 'chipPosition', 'clearIcon', 'clearLabel', 'clearable', 'countFormatter', 'density', 'disabled', 'displayMode', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'maxSelected', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'selectAllLabel', 'showSelectAll', 'softDisabled', 'supportingText', 'trigger', 'triggerIcon', 'triggerLabel', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1020
+ standalone: true
874
1021
  }]
875
1022
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
876
1023
  let MdNavigationBar = class MdNavigationBar {
@@ -881,10 +1028,11 @@ let MdNavigationBar = class MdNavigationBar {
881
1028
  proxyOutputs(this, this.el, ['mdChange']);
882
1029
  }
883
1030
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationBar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
884
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationBar, selector: "md-navigation-bar", inputs: { activeIndex: "activeIndex", density: "density", labelBehavior: "labelBehavior", manualActivation: "manualActivation" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1031
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationBar, isStandalone: true, selector: "md-navigation-bar", inputs: { activeIndex: "activeIndex", density: "density", labelBehavior: "labelBehavior", manualActivation: "manualActivation" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
885
1032
  };
886
1033
  MdNavigationBar = __decorate([
887
1034
  ProxyCmp({
1035
+ defineCustomElementFn: defineMdNavigationBar,
888
1036
  inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
889
1037
  methods: ['select', 'focusTab']
890
1038
  })
@@ -898,6 +1046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
898
1046
  template: '<ng-content></ng-content>',
899
1047
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
900
1048
  inputs: ['activeIndex', 'density', 'labelBehavior', 'manualActivation'],
1049
+ standalone: true
901
1050
  }]
902
1051
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
903
1052
  let MdNavigationRail = class MdNavigationRail {
@@ -908,10 +1057,11 @@ let MdNavigationRail = class MdNavigationRail {
908
1057
  proxyOutputs(this, this.el, ['mdTabChange', 'mdExpand', 'mdCollapse']);
909
1058
  }
910
1059
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRail, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
911
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRail, selector: "md-navigation-rail", inputs: { activeIndex: "activeIndex", alignment: "alignment", density: "density", disableFocusManagement: "disableFocusManagement", expandable: "expandable", fullHeight: "fullHeight", label: "label", labelVisibility: "labelVisibility", maxVisible: "maxVisible", modal: "modal", orientation: "orientation", overflowIcon: "overflowIcon", overflowLabel: "overflowLabel", toggleLabel: "toggleLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1060
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRail, isStandalone: true, selector: "md-navigation-rail", inputs: { activeIndex: "activeIndex", alignment: "alignment", density: "density", disableFocusManagement: "disableFocusManagement", expandable: "expandable", fullHeight: "fullHeight", label: "label", labelVisibility: "labelVisibility", maxVisible: "maxVisible", modal: "modal", orientation: "orientation", overflowIcon: "overflowIcon", overflowLabel: "overflowLabel", toggleLabel: "toggleLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
912
1061
  };
913
1062
  MdNavigationRail = __decorate([
914
1063
  ProxyCmp({
1064
+ defineCustomElementFn: defineMdNavigationRail,
915
1065
  inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
916
1066
  methods: ['expand', 'collapse', 'toggle', 'focusTab']
917
1067
  })
@@ -925,6 +1075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
925
1075
  template: '<ng-content></ng-content>',
926
1076
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
927
1077
  inputs: ['activeIndex', 'alignment', 'density', 'disableFocusManagement', 'expandable', 'fullHeight', 'label', 'labelVisibility', 'maxVisible', 'modal', 'orientation', 'overflowIcon', 'overflowLabel', 'toggleLabel', 'variant'],
1078
+ standalone: true
928
1079
  }]
929
1080
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
930
1081
  let MdNavigationRailTab = class MdNavigationRailTab {
@@ -935,10 +1086,11 @@ let MdNavigationRailTab = class MdNavigationRailTab {
935
1086
  proxyOutputs(this, this.el, ['mdTabClick', 'mdSubmenuToggle']);
936
1087
  }
937
1088
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationRailTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
938
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRailTab, selector: "md-navigation-rail-tab", inputs: { active: "active", badge: "badge", badgeValue: "badgeValue", density: "density", disabled: "disabled", expanded: "expanded", href: "href", icon: "icon", label: "label", labelVisibility: "labelVisibility", target: "target", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1089
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationRailTab, isStandalone: true, selector: "md-navigation-rail-tab", inputs: { active: "active", badge: "badge", badgeValue: "badgeValue", density: "density", disabled: "disabled", expanded: "expanded", href: "href", icon: "icon", label: "label", labelVisibility: "labelVisibility", target: "target", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
939
1090
  };
940
1091
  MdNavigationRailTab = __decorate([
941
1092
  ProxyCmp({
1093
+ defineCustomElementFn: defineMdNavigationRailTab,
942
1094
  inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
943
1095
  methods: ['clearSubmenuSelection']
944
1096
  })
@@ -952,6 +1104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
952
1104
  template: '<ng-content></ng-content>',
953
1105
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
954
1106
  inputs: ['active', 'badge', 'badgeValue', 'density', 'disabled', 'expanded', 'href', 'icon', 'label', 'labelVisibility', 'target', 'value'],
1107
+ standalone: true
955
1108
  }]
956
1109
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
957
1110
  let MdNavigationTab = class MdNavigationTab {
@@ -962,10 +1115,11 @@ let MdNavigationTab = class MdNavigationTab {
962
1115
  proxyOutputs(this, this.el, ['mdTabClick']);
963
1116
  }
964
1117
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNavigationTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
965
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationTab, selector: "md-navigation-tab", inputs: { active: "active", activeIcon: "activeIcon", badge: "badge", badgeMax: "badgeMax", badgeValue: "badgeValue", density: "density", disabled: "disabled", href: "href", icon: "icon", label: "label", labelBehavior: "labelBehavior", softDisabled: "softDisabled", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNavigationTab, isStandalone: true, selector: "md-navigation-tab", inputs: { active: "active", activeIcon: "activeIcon", badge: "badge", badgeMax: "badgeMax", badgeValue: "badgeValue", density: "density", disabled: "disabled", href: "href", icon: "icon", label: "label", labelBehavior: "labelBehavior", softDisabled: "softDisabled", target: "target" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
966
1119
  };
967
1120
  MdNavigationTab = __decorate([
968
1121
  ProxyCmp({
1122
+ defineCustomElementFn: defineMdNavigationTab,
969
1123
  inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
970
1124
  methods: ['focusEl']
971
1125
  })
@@ -979,6 +1133,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
979
1133
  template: '<ng-content></ng-content>',
980
1134
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
981
1135
  inputs: ['active', 'activeIcon', 'badge', 'badgeMax', 'badgeValue', 'density', 'disabled', 'href', 'icon', 'label', 'labelBehavior', 'softDisabled', 'target'],
1136
+ standalone: true
982
1137
  }]
983
1138
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
984
1139
  let MdNumberField = class MdNumberField {
@@ -989,10 +1144,11 @@ let MdNumberField = class MdNumberField {
989
1144
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
990
1145
  }
991
1146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdNumberField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
992
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNumberField, selector: "md-number-field", inputs: { allowOutOfRange: "allowOutOfRange", allowWheelScrub: "allowWheelScrub", decrementLabel: "decrementLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", formatOptions: "formatOptions", incrementLabel: "incrementLabel", label: "label", largeStep: "largeStep", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", smallStep: "smallStep", snapOnStep: "snapOnStep", step: "step", steppers: "steppers", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdNumberField, isStandalone: true, selector: "md-number-field", inputs: { allowOutOfRange: "allowOutOfRange", allowWheelScrub: "allowWheelScrub", decrementLabel: "decrementLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", formatOptions: "formatOptions", incrementLabel: "incrementLabel", label: "label", largeStep: "largeStep", locale: "locale", max: "max", min: "min", name: "name", placeholder: "placeholder", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", smallStep: "smallStep", snapOnStep: "snapOnStep", step: "step", steppers: "steppers", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
993
1148
  };
994
1149
  MdNumberField = __decorate([
995
1150
  ProxyCmp({
1151
+ defineCustomElementFn: defineMdNumberField,
996
1152
  inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
997
1153
  methods: ['setFocus', 'select', 'stepUp', 'stepDown', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
998
1154
  })
@@ -1006,6 +1162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1006
1162
  template: '<ng-content></ng-content>',
1007
1163
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1008
1164
  inputs: ['allowOutOfRange', 'allowWheelScrub', 'decrementLabel', 'density', 'disabled', 'error', 'errorText', 'formatOptions', 'incrementLabel', 'label', 'largeStep', 'locale', 'max', 'min', 'name', 'placeholder', 'readOnly', 'required', 'reserveSupportingSpace', 'smallStep', 'snapOnStep', 'step', 'steppers', 'supportingText', 'value', 'valueMissingLabel', 'variant'],
1165
+ standalone: true
1009
1166
  }]
1010
1167
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1011
1168
  let MdOrganizationChart = class MdOrganizationChart {
@@ -1016,10 +1173,11 @@ let MdOrganizationChart = class MdOrganizationChart {
1016
1173
  proxyOutputs(this, this.el, ['mdSelectionChange', 'mdNodeToggle']);
1017
1174
  }
1018
1175
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOrganizationChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1019
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOrganizationChart, selector: "md-organization-chart", inputs: { collapseLabel: "collapseLabel", collapsible: "collapsible", density: "density", expandLabel: "expandLabel", label: "label", nodes: "nodes", orientation: "orientation", selectedIds: "selectedIds", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1176
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOrganizationChart, isStandalone: true, selector: "md-organization-chart", inputs: { collapseLabel: "collapseLabel", collapsible: "collapsible", density: "density", expandLabel: "expandLabel", label: "label", nodes: "nodes", orientation: "orientation", selectedIds: "selectedIds", selectionMode: "selectionMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1020
1177
  };
1021
1178
  MdOrganizationChart = __decorate([
1022
1179
  ProxyCmp({
1180
+ defineCustomElementFn: defineMdOrganizationChart,
1023
1181
  inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode']
1024
1182
  })
1025
1183
  ], MdOrganizationChart);
@@ -1032,6 +1190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1032
1190
  template: '<ng-content></ng-content>',
1033
1191
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1034
1192
  inputs: ['collapseLabel', 'collapsible', 'density', 'expandLabel', 'label', 'nodes', 'orientation', 'selectedIds', 'selectionMode'],
1193
+ standalone: true
1035
1194
  }]
1036
1195
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1037
1196
  let MdOtpField = class MdOtpField {
@@ -1042,10 +1201,11 @@ let MdOtpField = class MdOtpField {
1042
1201
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdComplete', 'mdInvalidInput', 'mdValidityChange']);
1043
1202
  }
1044
1203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdOtpField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1045
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOtpField, selector: "md-otp-field", inputs: { autoSubmit: "autoSubmit", cellLabelTemplate: "cellLabelTemplate", density: "density", disabled: "disabled", error: "error", errorText: "errorText", groupSize: "groupSize", incompleteLabel: "incompleteLabel", inputMode: "inputMode", label: "label", length: "length", mask: "mask", name: "name", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", supportingText: "supportingText", transform: "transform", validationType: "validationType", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdOtpField, isStandalone: true, selector: "md-otp-field", inputs: { autoSubmit: "autoSubmit", cellLabelTemplate: "cellLabelTemplate", density: "density", disabled: "disabled", error: "error", errorText: "errorText", groupSize: "groupSize", incompleteLabel: "incompleteLabel", inputMode: "inputMode", label: "label", length: "length", mask: "mask", name: "name", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", supportingText: "supportingText", transform: "transform", validationType: "validationType", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1046
1205
  };
1047
1206
  MdOtpField = __decorate([
1048
1207
  ProxyCmp({
1208
+ defineCustomElementFn: defineMdOtpField,
1049
1209
  inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1050
1210
  methods: ['setFocus', 'clear', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
1051
1211
  })
@@ -1059,6 +1219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1059
1219
  template: '<ng-content></ng-content>',
1060
1220
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1061
1221
  inputs: ['autoSubmit', 'cellLabelTemplate', 'density', 'disabled', 'error', 'errorText', 'groupSize', 'incompleteLabel', 'inputMode', 'label', 'length', 'mask', 'name', 'readOnly', 'required', 'reserveSupportingSpace', 'supportingText', 'transform', 'validationType', 'value', 'valueMissingLabel'],
1222
+ standalone: true
1062
1223
  }]
1063
1224
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1064
1225
  let MdPieChart = class MdPieChart {
@@ -1069,12 +1230,13 @@ let MdPieChart = class MdPieChart {
1069
1230
  proxyOutputs(this, this.el, ['mdSliceClick', 'mdLegendClick', 'mdReady']);
1070
1231
  }
1071
1232
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdPieChart, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1072
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdPieChart, selector: "md-pie-chart", inputs: { animation: "animation", animationDuration: "animationDuration", cornerRadius: "cornerRadius", data: "data", density: "density", endAngle: "endAngle", gradient: "gradient", heightProp: "heightProp", highlight: "highlight", innerRadius: "innerRadius", label: "label", labelEmpty: "labelEmpty", labelMode: "labelMode", labelPlot: "labelPlot", labelPoint: "labelPoint", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", monochrome: "monochrome", noAnimation: "noAnimation", outerRadius: "outerRadius", paddingAngle: "paddingAngle", ringWidths: "ringWidths", showLabels: "showLabels", startAngle: "startAngle", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1233
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdPieChart, isStandalone: true, selector: "md-pie-chart", inputs: { animation: "animation", animationDuration: "animationDuration", cornerRadius: "cornerRadius", data: "data", density: "density", endAngle: "endAngle", gradient: "gradient", heightProp: "heightProp", highlight: "highlight", innerRadius: "innerRadius", label: "label", labelEmpty: "labelEmpty", labelMode: "labelMode", labelPlot: "labelPlot", labelPoint: "labelPoint", legend: "legend", loading: "loading", loadingLabel: "loadingLabel", locale: "locale", monochrome: "monochrome", noAnimation: "noAnimation", outerRadius: "outerRadius", paddingAngle: "paddingAngle", ringWidths: "ringWidths", showLabels: "showLabels", startAngle: "startAngle", subtitle: "subtitle", summary: "summary", tableLabels: "tableLabels", titleAlign: "titleAlign", tooltip: "tooltip", tooltipRenderer: "tooltipRenderer", valueFormatter: "valueFormatter" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1073
1234
  };
1074
1235
  MdPieChart = __decorate([
1075
1236
  ProxyCmp({
1237
+ defineCustomElementFn: defineMdPieChart,
1076
1238
  inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1077
- methods: ['resize', 'replay', 'drill', 'toDataURL', 'getInstance']
1239
+ methods: ['refreshTheme', 'resize', 'replay', 'drill', 'toDataURL', 'getInstance']
1078
1240
  })
1079
1241
  ], MdPieChart);
1080
1242
  export { MdPieChart };
@@ -1086,6 +1248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1086
1248
  template: '<ng-content></ng-content>',
1087
1249
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1088
1250
  inputs: ['animation', 'animationDuration', 'cornerRadius', 'data', 'density', 'endAngle', 'gradient', 'heightProp', 'highlight', 'innerRadius', 'label', 'labelEmpty', 'labelMode', 'labelPlot', 'labelPoint', 'legend', 'loading', 'loadingLabel', 'locale', 'monochrome', 'noAnimation', 'outerRadius', 'paddingAngle', 'ringWidths', 'showLabels', 'startAngle', 'subtitle', 'summary', 'tableLabels', 'titleAlign', 'tooltip', 'tooltipRenderer', 'valueFormatter'],
1251
+ standalone: true
1089
1252
  }]
1090
1253
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1091
1254
  let MdProgressIndicator = class MdProgressIndicator {
@@ -1096,10 +1259,11 @@ let MdProgressIndicator = class MdProgressIndicator {
1096
1259
  proxyOutputs(this, this.el, ['mdComplete']);
1097
1260
  }
1098
1261
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdProgressIndicator, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1099
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdProgressIndicator, selector: "md-progress-indicator", inputs: { complete: "complete", density: "density", fourColor: "fourColor", indeterminate: "indeterminate", label: "label", max: "max", size: "size", thickness: "thickness", value: "value", variant: "variant", wave: "wave", waveAmplitude: "waveAmplitude", waveLength: "waveLength", waveSpeed: "waveSpeed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1262
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdProgressIndicator, isStandalone: true, selector: "md-progress-indicator", inputs: { complete: "complete", density: "density", fourColor: "fourColor", indeterminate: "indeterminate", label: "label", max: "max", size: "size", thickness: "thickness", value: "value", variant: "variant", wave: "wave", waveAmplitude: "waveAmplitude", waveLength: "waveLength", waveSpeed: "waveSpeed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1100
1263
  };
1101
1264
  MdProgressIndicator = __decorate([
1102
1265
  ProxyCmp({
1266
+ defineCustomElementFn: defineMdProgressIndicator,
1103
1267
  inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed']
1104
1268
  })
1105
1269
  ], MdProgressIndicator);
@@ -1112,6 +1276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1112
1276
  template: '<ng-content></ng-content>',
1113
1277
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1114
1278
  inputs: ['complete', 'density', 'fourColor', 'indeterminate', 'label', 'max', 'size', 'thickness', 'value', 'variant', 'wave', 'waveAmplitude', 'waveLength', 'waveSpeed'],
1279
+ standalone: true
1115
1280
  }]
1116
1281
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1117
1282
  let MdRadio = class MdRadio {
@@ -1122,10 +1287,11 @@ let MdRadio = class MdRadio {
1122
1287
  proxyOutputs(this, this.el, ['mdChange', 'mdFocus', 'mdBlur', 'mdValidityChange']);
1123
1288
  }
1124
1289
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRadio, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1125
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRadio, selector: "md-radio", inputs: { checked: "checked", density: "density", disabled: "disabled", name: "name", required: "required", softDisabled: "softDisabled", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1290
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRadio, isStandalone: true, selector: "md-radio", inputs: { checked: "checked", density: "density", disabled: "disabled", name: "name", required: "required", softDisabled: "softDisabled", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1126
1291
  };
1127
1292
  MdRadio = __decorate([
1128
1293
  ProxyCmp({
1294
+ defineCustomElementFn: defineMdRadio,
1129
1295
  inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1130
1296
  methods: ['syncValidityFromGroup', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity', 'setFocus', 'setBlur', 'select']
1131
1297
  })
@@ -1139,6 +1305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1139
1305
  template: '<ng-content></ng-content>',
1140
1306
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1141
1307
  inputs: ['checked', 'density', 'disabled', 'name', 'required', 'softDisabled', 'value', 'valueMissingLabel'],
1308
+ standalone: true
1142
1309
  }]
1143
1310
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1144
1311
  let MdRating = class MdRating {
@@ -1149,10 +1316,11 @@ let MdRating = class MdRating {
1149
1316
  proxyOutputs(this, this.el, ['mdHover', 'mdChange']);
1150
1317
  }
1151
1318
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRating, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRating, selector: "md-rating", inputs: { defaultValue: "defaultValue", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", getLabel: "getLabel", hover: "hover", icon: "icon", max: "max", name: "name", outlineEmpty: "outlineEmpty", precision: "precision", ratingLabel: "ratingLabel", readonly: "readonly", showValueLabel: "showValueLabel", size: "size", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1319
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRating, isStandalone: true, selector: "md-rating", inputs: { defaultValue: "defaultValue", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", getLabel: "getLabel", hover: "hover", icon: "icon", max: "max", name: "name", outlineEmpty: "outlineEmpty", precision: "precision", ratingLabel: "ratingLabel", readonly: "readonly", showValueLabel: "showValueLabel", size: "size", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1153
1320
  };
1154
1321
  MdRating = __decorate([
1155
1322
  ProxyCmp({
1323
+ defineCustomElementFn: defineMdRating,
1156
1324
  inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1157
1325
  methods: ['focusRating']
1158
1326
  })
@@ -1166,6 +1334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1166
1334
  template: '<ng-content></ng-content>',
1167
1335
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1168
1336
  inputs: ['defaultValue', 'density', 'disabled', 'emptyIcon', 'getLabel', 'hover', 'icon', 'max', 'name', 'outlineEmpty', 'precision', 'ratingLabel', 'readonly', 'showValueLabel', 'size', 'softDisabled', 'value'],
1337
+ standalone: true
1169
1338
  }]
1170
1339
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1171
1340
  let MdRipple = class MdRipple {
@@ -1175,10 +1344,11 @@ let MdRipple = class MdRipple {
1175
1344
  this.el = r.nativeElement;
1176
1345
  }
1177
1346
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdRipple, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRipple, selector: "md-ripple", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1347
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdRipple, isStandalone: true, selector: "md-ripple", inputs: { disabled: "disabled" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1179
1348
  };
1180
1349
  MdRipple = __decorate([
1181
1350
  ProxyCmp({
1351
+ defineCustomElementFn: defineMdRipple,
1182
1352
  inputs: ['disabled'],
1183
1353
  methods: ['whenSettled', 'trigger']
1184
1354
  })
@@ -1192,6 +1362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1192
1362
  template: '<ng-content></ng-content>',
1193
1363
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1194
1364
  inputs: ['disabled'],
1365
+ standalone: true
1195
1366
  }]
1196
1367
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1197
1368
  let MdSearch = class MdSearch {
@@ -1202,10 +1373,11 @@ let MdSearch = class MdSearch {
1202
1373
  proxyOutputs(this, this.el, ['mdInput', 'mdSearch', 'mdSubmit', 'mdChange', 'mdOpen', 'mdClose', 'mdClear', 'mdVoice', 'mdLeadingIconClick', 'mdTrailingIconClick']);
1203
1374
  }
1204
1375
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSearch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1205
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSearch, selector: "md-search", inputs: { announceResults: "announceResults", debounce: "debounce", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", elevation: "elevation", escapeCloses: "escapeCloses", fullWidth: "fullWidth", initialFocus: "initialFocus", inputAriaLabel: "inputAriaLabel", layout: "layout", leadingIcon: "leadingIcon", loading: "loading", loadingLabel: "loadingLabel", maxBlockSize: "maxBlockSize", noResultsLabel: "noResultsLabel", open: "open", openLeadingIcon: "openLeadingIcon", placeholder: "placeholder", resultsLabel: "resultsLabel", scrollShadow: "scrollShadow", showClearButton: "showClearButton", throttle: "throttle", trigger: "trigger", triggerElement: "triggerElement", triggerFor: "triggerFor", triggerIcon: "triggerIcon", value: "value", variant: "variant", voiceSearch: "voiceSearch" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSearch, isStandalone: true, selector: "md-search", inputs: { announceResults: "announceResults", debounce: "debounce", density: "density", disabled: "disabled", dismissOnOutsideClick: "dismissOnOutsideClick", elevation: "elevation", escapeCloses: "escapeCloses", fullWidth: "fullWidth", initialFocus: "initialFocus", inputAriaLabel: "inputAriaLabel", layout: "layout", leadingIcon: "leadingIcon", loading: "loading", loadingLabel: "loadingLabel", maxBlockSize: "maxBlockSize", noResultsLabel: "noResultsLabel", open: "open", openLeadingIcon: "openLeadingIcon", placeholder: "placeholder", resultsLabel: "resultsLabel", scrollShadow: "scrollShadow", showClearButton: "showClearButton", throttle: "throttle", trigger: "trigger", triggerElement: "triggerElement", triggerFor: "triggerFor", triggerIcon: "triggerIcon", value: "value", variant: "variant", voiceSearch: "voiceSearch" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1206
1377
  };
1207
1378
  MdSearch = __decorate([
1208
1379
  ProxyCmp({
1380
+ defineCustomElementFn: defineMdSearch,
1209
1381
  inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1210
1382
  methods: ['show', 'close', 'toggle', 'focusInput', 'startVoice', 'stopVoice']
1211
1383
  })
@@ -1219,6 +1391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1219
1391
  template: '<ng-content></ng-content>',
1220
1392
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1221
1393
  inputs: ['announceResults', 'debounce', 'density', 'disabled', 'dismissOnOutsideClick', 'elevation', 'escapeCloses', 'fullWidth', 'initialFocus', 'inputAriaLabel', 'layout', 'leadingIcon', 'loading', 'loadingLabel', 'maxBlockSize', 'noResultsLabel', 'open', 'openLeadingIcon', 'placeholder', 'resultsLabel', 'scrollShadow', 'showClearButton', 'throttle', 'trigger', 'triggerElement', 'triggerFor', 'triggerIcon', 'value', 'variant', 'voiceSearch'],
1394
+ standalone: true
1222
1395
  }]
1223
1396
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1224
1397
  let MdSegmentedButton = class MdSegmentedButton {
@@ -1229,10 +1402,11 @@ let MdSegmentedButton = class MdSegmentedButton {
1229
1402
  proxyOutputs(this, this.el, ['mdSegmentClick']);
1230
1403
  }
1231
1404
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1232
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButton, selector: "md-segmented-button", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", noCheckmark: "noCheckmark", ripple: "ripple", segmentDensity: "segmentDensity", segmentIndex: "segmentIndex", segmentMultiselect: "segmentMultiselect", segmentTotal: "segmentTotal", selected: "selected", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1405
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButton, isStandalone: true, selector: "md-segmented-button", inputs: { density: "density", disabled: "disabled", icon: "icon", label: "label", noCheckmark: "noCheckmark", ripple: "ripple", segmentDensity: "segmentDensity", segmentIndex: "segmentIndex", segmentMultiselect: "segmentMultiselect", segmentTotal: "segmentTotal", selected: "selected", softDisabled: "softDisabled", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1233
1406
  };
1234
1407
  MdSegmentedButton = __decorate([
1235
1408
  ProxyCmp({
1409
+ defineCustomElementFn: defineMdSegmentedButton,
1236
1410
  inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value']
1237
1411
  })
1238
1412
  ], MdSegmentedButton);
@@ -1245,6 +1419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1245
1419
  template: '<ng-content></ng-content>',
1246
1420
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1247
1421
  inputs: ['density', 'disabled', 'icon', 'label', 'noCheckmark', 'ripple', 'segmentDensity', 'segmentIndex', 'segmentMultiselect', 'segmentTotal', 'selected', 'softDisabled', 'value'],
1422
+ standalone: true
1248
1423
  }]
1249
1424
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1250
1425
  let MdSegmentedButtonSet = class MdSegmentedButtonSet {
@@ -1255,10 +1430,11 @@ let MdSegmentedButtonSet = class MdSegmentedButtonSet {
1255
1430
  proxyOutputs(this, this.el, ['mdChange']);
1256
1431
  }
1257
1432
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSegmentedButtonSet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButtonSet, selector: "md-segmented-button-set", inputs: { density: "density", multiselect: "multiselect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSegmentedButtonSet, isStandalone: true, selector: "md-segmented-button-set", inputs: { density: "density", multiselect: "multiselect" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1259
1434
  };
1260
1435
  MdSegmentedButtonSet = __decorate([
1261
1436
  ProxyCmp({
1437
+ defineCustomElementFn: defineMdSegmentedButtonSet,
1262
1438
  inputs: ['density', 'multiselect']
1263
1439
  })
1264
1440
  ], MdSegmentedButtonSet);
@@ -1271,6 +1447,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1271
1447
  template: '<ng-content></ng-content>',
1272
1448
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1273
1449
  inputs: ['density', 'multiselect'],
1450
+ standalone: true
1274
1451
  }]
1275
1452
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1276
1453
  let MdSelect = class MdSelect {
@@ -1281,10 +1458,11 @@ let MdSelect = class MdSelect {
1281
1458
  proxyOutputs(this, this.el, ['mdChange', 'mdOpen', 'mdClose', 'mdValidityChange']);
1282
1459
  }
1283
1460
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1284
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelect, selector: "md-select", inputs: { clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", density: "density", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", fullWidth: "fullWidth", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1461
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelect, isStandalone: true, selector: "md-select", inputs: { clearIcon: "clearIcon", clearLabel: "clearLabel", clearable: "clearable", density: "density", disabled: "disabled", dropdownIcon: "dropdownIcon", error: "error", errorText: "errorText", filterLabel: "filterLabel", filterMode: "filterMode", filterable: "filterable", fullWidth: "fullWidth", label: "label", loading: "loading", loadingText: "loadingText", matchTriggerWidth: "matchTriggerWidth", maxHeight: "maxHeight", name: "name", noOptionsText: "noOptionsText", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", placement: "placement", required: "required", reserveSupportingSpace: "reserveSupportingSpace", rowHeight: "rowHeight", searchPlaceholder: "searchPlaceholder", searchingLabel: "searchingLabel", supportingText: "supportingText", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant", virtualize: "virtualize" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1285
1462
  };
1286
1463
  MdSelect = __decorate([
1287
1464
  ProxyCmp({
1465
+ defineCustomElementFn: defineMdSelect,
1288
1466
  inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1289
1467
  methods: ['show', 'close', 'focusTrigger', 'reset', 'loadOptions', 'setQuery', 'getLabels', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1290
1468
  })
@@ -1298,6 +1476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1298
1476
  template: '<ng-content></ng-content>',
1299
1477
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1300
1478
  inputs: ['clearIcon', 'clearLabel', 'clearable', 'density', 'disabled', 'dropdownIcon', 'error', 'errorText', 'filterLabel', 'filterMode', 'filterable', 'fullWidth', 'label', 'loading', 'loadingText', 'matchTriggerWidth', 'maxHeight', 'name', 'noOptionsText', 'noResultsText', 'open', 'options', 'placeholder', 'placement', 'required', 'reserveSupportingSpace', 'rowHeight', 'searchPlaceholder', 'searchingLabel', 'supportingText', 'value', 'valueMissingLabel', 'variant', 'virtualize'],
1479
+ standalone: true
1301
1480
  }]
1302
1481
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1303
1482
  let MdSelectOption = class MdSelectOption {
@@ -1308,10 +1487,11 @@ let MdSelectOption = class MdSelectOption {
1308
1487
  proxyOutputs(this, this.el, ['mdSelectOptionChange']);
1309
1488
  }
1310
1489
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSelectOption, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1311
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelectOption, selector: "md-select-option", inputs: { disabled: "disabled", icon: "icon", iconColor: "iconColor", label: "label", selected: "selected", supportingText: "supportingText", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1490
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSelectOption, isStandalone: true, selector: "md-select-option", inputs: { disabled: "disabled", icon: "icon", iconColor: "iconColor", label: "label", selected: "selected", supportingText: "supportingText", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1312
1491
  };
1313
1492
  MdSelectOption = __decorate([
1314
1493
  ProxyCmp({
1494
+ defineCustomElementFn: defineMdSelectOption,
1315
1495
  inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value']
1316
1496
  })
1317
1497
  ], MdSelectOption);
@@ -1324,6 +1504,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1324
1504
  template: '<ng-content></ng-content>',
1325
1505
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1326
1506
  inputs: ['disabled', 'icon', 'iconColor', 'label', 'selected', 'supportingText', 'value'],
1507
+ standalone: true
1327
1508
  }]
1328
1509
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1329
1510
  let MdSideSheet = class MdSideSheet {
@@ -1334,10 +1515,11 @@ let MdSideSheet = class MdSideSheet {
1334
1515
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdCancel', 'mdBack']);
1335
1516
  }
1336
1517
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSideSheet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1337
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSideSheet, selector: "md-side-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", density: "density", detached: "detached", headline: "headline", open: "open", scrimDismissible: "scrimDismissible", sheetAriaLabel: "sheetAriaLabel", showBack: "showBack", side: "side", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1518
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSideSheet, isStandalone: true, selector: "md-side-sheet", inputs: { bottomDivider: "bottomDivider", closeable: "closeable", density: "density", detached: "detached", headline: "headline", open: "open", scrimDismissible: "scrimDismissible", sheetAriaLabel: "sheetAriaLabel", showBack: "showBack", side: "side", topDivider: "topDivider", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1338
1519
  };
1339
1520
  MdSideSheet = __decorate([
1340
1521
  ProxyCmp({
1522
+ defineCustomElementFn: defineMdSideSheet,
1341
1523
  inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1342
1524
  methods: ['show', 'close']
1343
1525
  })
@@ -1351,6 +1533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1351
1533
  template: '<ng-content></ng-content>',
1352
1534
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1353
1535
  inputs: ['bottomDivider', 'closeable', 'density', 'detached', 'headline', 'open', 'scrimDismissible', 'sheetAriaLabel', 'showBack', 'side', 'topDivider', 'variant'],
1536
+ standalone: true
1354
1537
  }]
1355
1538
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1356
1539
  let MdSkeleton = class MdSkeleton {
@@ -1360,10 +1543,11 @@ let MdSkeleton = class MdSkeleton {
1360
1543
  this.el = r.nativeElement;
1361
1544
  }
1362
1545
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSkeleton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1363
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSkeleton, selector: "md-skeleton", inputs: { animation: "animation", announce: "announce", ariaLabelProp: "ariaLabelProp", density: "density", fullHeight: "fullHeight", fullWidth: "fullWidth", height: "height", lines: "lines", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1546
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSkeleton, isStandalone: true, selector: "md-skeleton", inputs: { animation: "animation", announce: "announce", ariaLabelProp: "ariaLabelProp", density: "density", fullHeight: "fullHeight", fullWidth: "fullWidth", height: "height", lines: "lines", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1364
1547
  };
1365
1548
  MdSkeleton = __decorate([
1366
1549
  ProxyCmp({
1550
+ defineCustomElementFn: defineMdSkeleton,
1367
1551
  inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width']
1368
1552
  })
1369
1553
  ], MdSkeleton);
@@ -1376,6 +1560,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1376
1560
  template: '<ng-content></ng-content>',
1377
1561
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1378
1562
  inputs: ['animation', 'announce', 'ariaLabelProp', 'density', 'fullHeight', 'fullWidth', 'height', 'lines', 'variant', 'width'],
1563
+ standalone: true
1379
1564
  }]
1380
1565
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1381
1566
  let MdSlider = class MdSlider {
@@ -1386,10 +1571,11 @@ let MdSlider = class MdSlider {
1386
1571
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdFocus', 'mdBlur', 'mdDragStart', 'mdDragEnd']);
1387
1572
  }
1388
1573
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSlider, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1389
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSlider, selector: "md-slider", inputs: { ariaLabelEnd: "ariaLabelEnd", ariaLabelStart: "ariaLabelStart", controlled: "controlled", density: "density", disabled: "disabled", fullHeight: "fullHeight", icon: "icon", insetIcon: "insetIcon", labeled: "labeled", max: "max", min: "min", name: "name", nameEnd: "nameEnd", nameStart: "nameStart", orientation: "orientation", range: "range", size: "size", sliderAriaLabel: "sliderAriaLabel", step: "step", stops: "stops", value: "value", valueEnd: "valueEnd", valueEndText: "valueEndText", valueIndicator: "valueIndicator", valueStart: "valueStart", valueStartText: "valueStartText", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1574
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSlider, isStandalone: true, selector: "md-slider", inputs: { ariaLabelEnd: "ariaLabelEnd", ariaLabelStart: "ariaLabelStart", controlled: "controlled", density: "density", disabled: "disabled", fullHeight: "fullHeight", icon: "icon", insetIcon: "insetIcon", labeled: "labeled", max: "max", min: "min", name: "name", nameEnd: "nameEnd", nameStart: "nameStart", orientation: "orientation", range: "range", size: "size", sliderAriaLabel: "sliderAriaLabel", step: "step", stops: "stops", value: "value", valueEnd: "valueEnd", valueEndText: "valueEndText", valueIndicator: "valueIndicator", valueStart: "valueStart", valueStartText: "valueStartText", valueText: "valueText", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1390
1575
  };
1391
1576
  MdSlider = __decorate([
1392
1577
  ProxyCmp({
1578
+ defineCustomElementFn: defineMdSlider,
1393
1579
  inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant']
1394
1580
  })
1395
1581
  ], MdSlider);
@@ -1402,6 +1588,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1402
1588
  template: '<ng-content></ng-content>',
1403
1589
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1404
1590
  inputs: ['ariaLabelEnd', 'ariaLabelStart', 'controlled', 'density', 'disabled', 'fullHeight', 'icon', 'insetIcon', 'labeled', 'max', 'min', 'name', 'nameEnd', 'nameStart', 'orientation', 'range', 'size', 'sliderAriaLabel', 'step', 'stops', 'value', 'valueEnd', 'valueEndText', 'valueIndicator', 'valueStart', 'valueStartText', 'valueText', 'variant'],
1591
+ standalone: true
1405
1592
  }]
1406
1593
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1407
1594
  let MdSnackbar = class MdSnackbar {
@@ -1412,10 +1599,11 @@ let MdSnackbar = class MdSnackbar {
1412
1599
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose', 'mdAction']);
1413
1600
  }
1414
1601
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSnackbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1415
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSnackbar, selector: "md-snackbar", inputs: { action: "action", autoHide: "autoHide", autoHideDuration: "autoHideDuration", closeable: "closeable", density: "density", dismissLabel: "dismissLabel", message: "message", open: "open", politeness: "politeness", position: "position", stacked: "stacked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1602
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSnackbar, isStandalone: true, selector: "md-snackbar", inputs: { action: "action", autoHide: "autoHide", autoHideDuration: "autoHideDuration", closeable: "closeable", density: "density", dismissLabel: "dismissLabel", message: "message", open: "open", politeness: "politeness", position: "position", stacked: "stacked" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1416
1603
  };
1417
1604
  MdSnackbar = __decorate([
1418
1605
  ProxyCmp({
1606
+ defineCustomElementFn: defineMdSnackbar,
1419
1607
  inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1420
1608
  methods: ['show', 'hide']
1421
1609
  })
@@ -1429,6 +1617,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1429
1617
  template: '<ng-content></ng-content>',
1430
1618
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1431
1619
  inputs: ['action', 'autoHide', 'autoHideDuration', 'closeable', 'density', 'dismissLabel', 'message', 'open', 'politeness', 'position', 'stacked'],
1620
+ standalone: true
1432
1621
  }]
1433
1622
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1434
1623
  let MdSparkline = class MdSparkline {
@@ -1439,12 +1628,13 @@ let MdSparkline = class MdSparkline {
1439
1628
  proxyOutputs(this, this.el, ['mdSparkClick', 'mdReady']);
1440
1629
  }
1441
1630
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSparkline, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1442
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSparkline, selector: "md-sparkline", inputs: { barWidth: "barWidth", color: "color", cornerRadius: "cornerRadius", curve: "curve", data: "data", heightProp: "heightProp", labels: "labels", lineWidth: "lineWidth", markSize: "markSize", max: "max", min: "min", noAnimation: "noAnimation", referenceAreas: "referenceAreas", showMarks: "showMarks", showTooltip: "showTooltip", valueFormatter: "valueFormatter", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSparkline, isStandalone: true, selector: "md-sparkline", inputs: { barWidth: "barWidth", color: "color", cornerRadius: "cornerRadius", curve: "curve", data: "data", heightProp: "heightProp", labels: "labels", lineWidth: "lineWidth", markSize: "markSize", max: "max", min: "min", noAnimation: "noAnimation", referenceAreas: "referenceAreas", showMarks: "showMarks", showTooltip: "showTooltip", valueFormatter: "valueFormatter", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1443
1632
  };
1444
1633
  MdSparkline = __decorate([
1445
1634
  ProxyCmp({
1635
+ defineCustomElementFn: defineMdSparkline,
1446
1636
  inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1447
- methods: ['resize', 'getInstance']
1637
+ methods: ['refreshTheme', 'resize', 'getInstance']
1448
1638
  })
1449
1639
  ], MdSparkline);
1450
1640
  export { MdSparkline };
@@ -1456,6 +1646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1456
1646
  template: '<ng-content></ng-content>',
1457
1647
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1458
1648
  inputs: ['barWidth', 'color', 'cornerRadius', 'curve', 'data', 'heightProp', 'labels', 'lineWidth', 'markSize', 'max', 'min', 'noAnimation', 'referenceAreas', 'showMarks', 'showTooltip', 'valueFormatter', 'variant'],
1649
+ standalone: true
1459
1650
  }]
1460
1651
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1461
1652
  let MdSplitButton = class MdSplitButton {
@@ -1466,10 +1657,11 @@ let MdSplitButton = class MdSplitButton {
1466
1657
  proxyOutputs(this, this.el, ['mdLeadingClick', 'mdTrailingClick']);
1467
1658
  }
1468
1659
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSplitButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1469
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSplitButton, selector: "md-split-button", inputs: { controls: "controls", density: "density", disabled: "disabled", fullWidth: "fullWidth", haspopup: "haspopup", icon: "icon", label: "label", menuLabel: "menuLabel", ripple: "ripple", size: "size", softDisabled: "softDisabled", trailingChecked: "trailingChecked", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1660
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSplitButton, isStandalone: true, selector: "md-split-button", inputs: { controls: "controls", density: "density", disabled: "disabled", fullWidth: "fullWidth", haspopup: "haspopup", icon: "icon", label: "label", menuLabel: "menuLabel", ripple: "ripple", size: "size", softDisabled: "softDisabled", trailingChecked: "trailingChecked", trailingIcon: "trailingIcon", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1470
1661
  };
1471
1662
  MdSplitButton = __decorate([
1472
1663
  ProxyCmp({
1664
+ defineCustomElementFn: defineMdSplitButton,
1473
1665
  inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant']
1474
1666
  })
1475
1667
  ], MdSplitButton);
@@ -1482,6 +1674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1482
1674
  template: '<ng-content></ng-content>',
1483
1675
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1484
1676
  inputs: ['controls', 'density', 'disabled', 'fullWidth', 'haspopup', 'icon', 'label', 'menuLabel', 'ripple', 'size', 'softDisabled', 'trailingChecked', 'trailingIcon', 'variant'],
1677
+ standalone: true
1485
1678
  }]
1486
1679
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1487
1680
  let MdStatusDot = class MdStatusDot {
@@ -1491,11 +1684,12 @@ let MdStatusDot = class MdStatusDot {
1491
1684
  this.el = r.nativeElement;
1492
1685
  }
1493
1686
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStatusDot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1494
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStatusDot, selector: "md-status-dot", inputs: { density: "density", label: "label", live: "live", size: "size", state: "state" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1687
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStatusDot, isStandalone: true, selector: "md-status-dot", inputs: { density: "density", inline: "inline", label: "label", live: "live", shape: "shape", size: "size", state: "state" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1495
1688
  };
1496
1689
  MdStatusDot = __decorate([
1497
1690
  ProxyCmp({
1498
- inputs: ['density', 'label', 'live', 'size', 'state']
1691
+ defineCustomElementFn: defineMdStatusDot,
1692
+ inputs: ['density', 'inline', 'label', 'live', 'shape', 'size', 'state']
1499
1693
  })
1500
1694
  ], MdStatusDot);
1501
1695
  export { MdStatusDot };
@@ -1506,7 +1700,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1506
1700
  changeDetection: ChangeDetectionStrategy.OnPush,
1507
1701
  template: '<ng-content></ng-content>',
1508
1702
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1509
- inputs: ['density', 'label', 'live', 'size', 'state'],
1703
+ inputs: ['density', 'inline', 'label', 'live', 'shape', 'size', 'state'],
1704
+ standalone: true
1510
1705
  }]
1511
1706
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1512
1707
  let MdStep = class MdStep {
@@ -1517,10 +1712,11 @@ let MdStep = class MdStep {
1517
1712
  proxyOutputs(this, this.el, ['mdStepClick', 'mdStepNext', 'mdStepBack']);
1518
1713
  }
1519
1714
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStep, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1520
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStep, selector: "md-step", inputs: { accessibleName: "accessibleName", active: "active", completed: "completed", completedIcon: "completedIcon", density: "density", description: "description", disabled: "disabled", editable: "editable", error: "error", errorIcon: "errorIcon", errorText: "errorText", hideActions: "hideActions", icon: "icon", label: "label", optional: "optional" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1715
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStep, isStandalone: true, selector: "md-step", inputs: { accessibleName: "accessibleName", active: "active", completed: "completed", completedIcon: "completedIcon", density: "density", description: "description", disabled: "disabled", editable: "editable", error: "error", errorIcon: "errorIcon", errorText: "errorText", hideActions: "hideActions", icon: "icon", label: "label", optional: "optional" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1521
1716
  };
1522
1717
  MdStep = __decorate([
1523
1718
  ProxyCmp({
1719
+ defineCustomElementFn: defineMdStep,
1524
1720
  inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional']
1525
1721
  })
1526
1722
  ], MdStep);
@@ -1533,6 +1729,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1533
1729
  template: '<ng-content></ng-content>',
1534
1730
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1535
1731
  inputs: ['accessibleName', 'active', 'completed', 'completedIcon', 'density', 'description', 'disabled', 'editable', 'error', 'errorIcon', 'errorText', 'hideActions', 'icon', 'label', 'optional'],
1732
+ standalone: true
1536
1733
  }]
1537
1734
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1538
1735
  let MdStepper = class MdStepper {
@@ -1543,11 +1740,12 @@ let MdStepper = class MdStepper {
1543
1740
  proxyOutputs(this, this.el, ['mdBeforeChange', 'mdStepChange', 'mdComplete']);
1544
1741
  }
1545
1742
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1546
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStepper, selector: "md-stepper", inputs: { active: "active", autoComplete: "autoComplete", backLabel: "backLabel", completedWord: "completedWord", currentWord: "currentWord", density: "density", errorWord: "errorWord", finishLabel: "finishLabel", indicator: "indicator", label: "label", lazy: "lazy", loading: "loading", mode: "mode", nav: "nav", nextDisabled: "nextDisabled", nextLabel: "nextLabel", ofWord: "ofWord", optionalWord: "optionalWord", orientation: "orientation", stepWord: "stepWord", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1743
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdStepper, isStandalone: true, selector: "md-stepper", inputs: { active: "active", autoComplete: "autoComplete", backLabel: "backLabel", completedWord: "completedWord", currentWord: "currentWord", density: "density", errorWord: "errorWord", finishLabel: "finishLabel", indicator: "indicator", label: "label", lazy: "lazy", loading: "loading", mode: "mode", nav: "nav", nextDisabled: "nextDisabled", nextLabel: "nextLabel", ofWord: "ofWord", optionalWord: "optionalWord", orientation: "orientation", readonly: "readonly", stepWord: "stepWord", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1547
1744
  };
1548
1745
  MdStepper = __decorate([
1549
1746
  ProxyCmp({
1550
- inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'stepWord', 'variant'],
1747
+ defineCustomElementFn: defineMdStepper,
1748
+ inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'readonly', 'stepWord', 'variant'],
1551
1749
  methods: ['next', 'prev', 'goTo', 'reset']
1552
1750
  })
1553
1751
  ], MdStepper);
@@ -1559,7 +1757,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1559
1757
  changeDetection: ChangeDetectionStrategy.OnPush,
1560
1758
  template: '<ng-content></ng-content>',
1561
1759
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1562
- inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'stepWord', 'variant'],
1760
+ inputs: ['active', 'autoComplete', 'backLabel', 'completedWord', 'currentWord', 'density', 'errorWord', 'finishLabel', 'indicator', 'label', 'lazy', 'loading', 'mode', 'nav', 'nextDisabled', 'nextLabel', 'ofWord', 'optionalWord', 'orientation', 'readonly', 'stepWord', 'variant'],
1761
+ standalone: true
1563
1762
  }]
1564
1763
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1565
1764
  let MdSubMenuItem = class MdSubMenuItem {
@@ -1570,11 +1769,12 @@ let MdSubMenuItem = class MdSubMenuItem {
1570
1769
  proxyOutputs(this, this.el, ['mdClick']);
1571
1770
  }
1572
1771
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSubMenuItem, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSubMenuItem, selector: "md-sub-menu-item", inputs: { badge: "badge", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1772
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSubMenuItem, isStandalone: true, selector: "md-sub-menu-item", inputs: { badge: "badge", closeDelay: "closeDelay", density: "density", disabled: "disabled", divider: "divider", gap: "gap", headline: "headline", openDelay: "openDelay", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1574
1773
  };
1575
1774
  MdSubMenuItem = __decorate([
1576
1775
  ProxyCmp({
1577
- inputs: ['badge', 'density', 'disabled', 'divider', 'gap', 'headline', 'supportingText'],
1776
+ defineCustomElementFn: defineMdSubMenuItem,
1777
+ inputs: ['badge', 'closeDelay', 'density', 'disabled', 'divider', 'gap', 'headline', 'openDelay', 'supportingText'],
1578
1778
  methods: ['collapse']
1579
1779
  })
1580
1780
  ], MdSubMenuItem);
@@ -1586,7 +1786,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1586
1786
  changeDetection: ChangeDetectionStrategy.OnPush,
1587
1787
  template: '<ng-content></ng-content>',
1588
1788
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1589
- inputs: ['badge', 'density', 'disabled', 'divider', 'gap', 'headline', 'supportingText'],
1789
+ inputs: ['badge', 'closeDelay', 'density', 'disabled', 'divider', 'gap', 'headline', 'openDelay', 'supportingText'],
1790
+ standalone: true
1590
1791
  }]
1591
1792
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1592
1793
  let MdSwitch = class MdSwitch {
@@ -1597,10 +1798,11 @@ let MdSwitch = class MdSwitch {
1597
1798
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdValidityChange']);
1598
1799
  }
1599
1800
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1600
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSwitch, selector: "md-switch", inputs: { density: "density", disabled: "disabled", icons: "icons", name: "name", required: "required", selected: "selected", selectedIcon: "selectedIcon", showOnlySelectedIcon: "showOnlySelectedIcon", softDisabled: "softDisabled", unselectedIcon: "unselectedIcon", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1801
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdSwitch, isStandalone: true, selector: "md-switch", inputs: { density: "density", disabled: "disabled", icons: "icons", name: "name", required: "required", selected: "selected", selectedIcon: "selectedIcon", showOnlySelectedIcon: "showOnlySelectedIcon", softDisabled: "softDisabled", unselectedIcon: "unselectedIcon", value: "value", valueMissingLabel: "valueMissingLabel" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1601
1802
  };
1602
1803
  MdSwitch = __decorate([
1603
1804
  ProxyCmp({
1805
+ defineCustomElementFn: defineMdSwitch,
1604
1806
  inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1605
1807
  methods: ['setFocus', 'getValidity', 'checkValidity', 'reportValidity', 'setCustomValidity']
1606
1808
  })
@@ -1614,6 +1816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1614
1816
  template: '<ng-content></ng-content>',
1615
1817
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1616
1818
  inputs: ['density', 'disabled', 'icons', 'name', 'required', 'selected', 'selectedIcon', 'showOnlySelectedIcon', 'softDisabled', 'unselectedIcon', 'value', 'valueMissingLabel'],
1819
+ standalone: true
1617
1820
  }]
1618
1821
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1619
1822
  let MdTab = class MdTab {
@@ -1624,10 +1827,11 @@ let MdTab = class MdTab {
1624
1827
  proxyOutputs(this, this.el, ['mdTabClick']);
1625
1828
  }
1626
1829
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTab, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1627
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTab, selector: "md-tab", inputs: { active: "active", badge: "badge", controls: "controls", density: "density", disabled: "disabled", icon: "icon", inlineIcon: "inlineIcon", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1830
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTab, isStandalone: true, selector: "md-tab", inputs: { active: "active", badge: "badge", controls: "controls", density: "density", disabled: "disabled", icon: "icon", inlineIcon: "inlineIcon", label: "label", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1628
1831
  };
1629
1832
  MdTab = __decorate([
1630
1833
  ProxyCmp({
1834
+ defineCustomElementFn: defineMdTab,
1631
1835
  inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant']
1632
1836
  })
1633
1837
  ], MdTab);
@@ -1640,6 +1844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1640
1844
  template: '<ng-content></ng-content>',
1641
1845
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1642
1846
  inputs: ['active', 'badge', 'controls', 'density', 'disabled', 'icon', 'inlineIcon', 'label', 'variant'],
1847
+ standalone: true
1643
1848
  }]
1644
1849
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1645
1850
  let MdTabPanel = class MdTabPanel {
@@ -1649,10 +1854,11 @@ let MdTabPanel = class MdTabPanel {
1649
1854
  this.el = r.nativeElement;
1650
1855
  }
1651
1856
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1652
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanel, selector: "md-tab-panel", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1857
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanel, isStandalone: true, selector: "md-tab-panel", inputs: { active: "active" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1653
1858
  };
1654
1859
  MdTabPanel = __decorate([
1655
1860
  ProxyCmp({
1861
+ defineCustomElementFn: defineMdTabPanel,
1656
1862
  inputs: ['active']
1657
1863
  })
1658
1864
  ], MdTabPanel);
@@ -1665,6 +1871,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1665
1871
  template: '<ng-content></ng-content>',
1666
1872
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1667
1873
  inputs: ['active'],
1874
+ standalone: true
1668
1875
  }]
1669
1876
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1670
1877
  let MdTabPanels = class MdTabPanels {
@@ -1674,10 +1881,11 @@ let MdTabPanels = class MdTabPanels {
1674
1881
  this.el = r.nativeElement;
1675
1882
  }
1676
1883
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabPanels, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1677
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanels, selector: "md-tab-panels", inputs: { for: "for", sizing: "sizing" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabPanels, isStandalone: true, selector: "md-tab-panels", inputs: { for: "for", sizing: "sizing" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1678
1885
  };
1679
1886
  MdTabPanels = __decorate([
1680
1887
  ProxyCmp({
1888
+ defineCustomElementFn: defineMdTabPanels,
1681
1889
  inputs: ['for', 'sizing']
1682
1890
  })
1683
1891
  ], MdTabPanels);
@@ -1690,6 +1898,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1690
1898
  template: '<ng-content></ng-content>',
1691
1899
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1692
1900
  inputs: ['for', 'sizing'],
1901
+ standalone: true
1693
1902
  }]
1694
1903
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1695
1904
  let MdTable = class MdTable {
@@ -1700,10 +1909,11 @@ let MdTable = class MdTable {
1700
1909
  proxyOutputs(this, this.el, ['mdSortChange', 'mdSelectionChange', 'mdPinChange', 'mdColumnVisibilityChange', 'mdScroll']);
1701
1910
  }
1702
1911
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1703
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTable, selector: "md-table", inputs: { caption: "caption", columnTemplate: "columnTemplate", columns: "columns", density: "density", empty: "empty", frozenHeader: "frozenHeader", hoverable: "hoverable", keepHeight: "keepHeight", label: "label", loading: "loading", loadingMode: "loadingMode", loadingRows: "loadingRows", minWidth: "minWidth", motion: "motion", noDividers: "noDividers", pinIcon: "pinIcon", pinMode: "pinMode", rowCount: "rowCount", rowOffset: "rowOffset", scrollbar: "scrollbar", selection: "selection", sortBy: "sortBy", sortOrder: "sortOrder", stickyFooter: "stickyFooter", stickyHeader: "stickyHeader", striped: "striped", summary: "summary" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1912
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTable, isStandalone: true, selector: "md-table", inputs: { caption: "caption", columnTemplate: "columnTemplate", columns: "columns", density: "density", empty: "empty", frozenHeader: "frozenHeader", hoverable: "hoverable", keepHeight: "keepHeight", label: "label", loading: "loading", loadingMode: "loadingMode", loadingRows: "loadingRows", minWidth: "minWidth", motion: "motion", noDividers: "noDividers", pinIcon: "pinIcon", pinMode: "pinMode", rowCount: "rowCount", rowOffset: "rowOffset", scrollbar: "scrollbar", selection: "selection", sortBy: "sortBy", sortOrder: "sortOrder", stickyFooter: "stickyFooter", stickyHeader: "stickyHeader", striped: "striped", summary: "summary" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1704
1913
  };
1705
1914
  MdTable = __decorate([
1706
1915
  ProxyCmp({
1916
+ defineCustomElementFn: defineMdTable,
1707
1917
  inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1708
1918
  methods: ['getSelection', 'selectAll', 'deselectAll', 'toggleSelectAll', 'setSort', 'pinColumn', 'setColumnVisibility', 'animateNextChange']
1709
1919
  })
@@ -1717,6 +1927,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1717
1927
  template: '<ng-content></ng-content>',
1718
1928
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1719
1929
  inputs: ['caption', 'columnTemplate', 'columns', 'density', 'empty', 'frozenHeader', 'hoverable', 'keepHeight', 'label', 'loading', 'loadingMode', 'loadingRows', 'minWidth', 'motion', 'noDividers', 'pinIcon', 'pinMode', 'rowCount', 'rowOffset', 'scrollbar', 'selection', 'sortBy', 'sortOrder', 'stickyFooter', 'stickyHeader', 'striped', 'summary'],
1930
+ standalone: true
1720
1931
  }]
1721
1932
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1722
1933
  let MdTableBody = class MdTableBody {
@@ -1726,10 +1937,12 @@ let MdTableBody = class MdTableBody {
1726
1937
  this.el = r.nativeElement;
1727
1938
  }
1728
1939
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1729
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableBody, selector: "md-table-body", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1940
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableBody, isStandalone: true, selector: "md-table-body", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1730
1941
  };
1731
1942
  MdTableBody = __decorate([
1732
- ProxyCmp({})
1943
+ ProxyCmp({
1944
+ defineCustomElementFn: defineMdTableBody
1945
+ })
1733
1946
  ], MdTableBody);
1734
1947
  export { MdTableBody };
1735
1948
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableBody, decorators: [{
@@ -1740,6 +1953,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1740
1953
  template: '<ng-content></ng-content>',
1741
1954
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1742
1955
  inputs: [],
1956
+ standalone: true
1743
1957
  }]
1744
1958
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1745
1959
  let MdTableCell = class MdTableCell {
@@ -1749,10 +1963,11 @@ let MdTableCell = class MdTableCell {
1749
1963
  this.el = r.nativeElement;
1750
1964
  }
1751
1965
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableCell, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1752
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableCell, selector: "md-table-cell", inputs: { align: "align", colSpan: "colSpan", density: "density", ellipsis: "ellipsis", head: "head", noPinIndicator: "noPinIndicator", numeric: "numeric", padding: "padding", pinIcon: "pinIcon", rowSpan: "rowSpan", scope: "scope", sticky: "sticky", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1966
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableCell, isStandalone: true, selector: "md-table-cell", inputs: { align: "align", colSpan: "colSpan", density: "density", ellipsis: "ellipsis", head: "head", noPinIndicator: "noPinIndicator", numeric: "numeric", padding: "padding", pinIcon: "pinIcon", rowSpan: "rowSpan", scope: "scope", sticky: "sticky", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1753
1967
  };
1754
1968
  MdTableCell = __decorate([
1755
1969
  ProxyCmp({
1970
+ defineCustomElementFn: defineMdTableCell,
1756
1971
  inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant']
1757
1972
  })
1758
1973
  ], MdTableCell);
@@ -1765,6 +1980,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1765
1980
  template: '<ng-content></ng-content>',
1766
1981
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1767
1982
  inputs: ['align', 'colSpan', 'density', 'ellipsis', 'head', 'noPinIndicator', 'numeric', 'padding', 'pinIcon', 'rowSpan', 'scope', 'sticky', 'variant'],
1983
+ standalone: true
1768
1984
  }]
1769
1985
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1770
1986
  let MdTableContainer = class MdTableContainer {
@@ -1774,10 +1990,11 @@ let MdTableContainer = class MdTableContainer {
1774
1990
  this.el = r.nativeElement;
1775
1991
  }
1776
1992
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableContainer, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableContainer, selector: "md-table-container", inputs: { elevation: "elevation", maxHeight: "maxHeight", minHeight: "minHeight", shape: "shape", variant: "variant", vibrant: "vibrant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1993
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableContainer, isStandalone: true, selector: "md-table-container", inputs: { elevation: "elevation", maxHeight: "maxHeight", minHeight: "minHeight", shape: "shape", variant: "variant", vibrant: "vibrant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1778
1994
  };
1779
1995
  MdTableContainer = __decorate([
1780
1996
  ProxyCmp({
1997
+ defineCustomElementFn: defineMdTableContainer,
1781
1998
  inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant']
1782
1999
  })
1783
2000
  ], MdTableContainer);
@@ -1790,6 +2007,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1790
2007
  template: '<ng-content></ng-content>',
1791
2008
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1792
2009
  inputs: ['elevation', 'maxHeight', 'minHeight', 'shape', 'variant', 'vibrant'],
2010
+ standalone: true
1793
2011
  }]
1794
2012
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1795
2013
  let MdTableExpandToggle = class MdTableExpandToggle {
@@ -1799,10 +2017,11 @@ let MdTableExpandToggle = class MdTableExpandToggle {
1799
2017
  this.el = r.nativeElement;
1800
2018
  }
1801
2019
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableExpandToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1802
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableExpandToggle, selector: "md-table-expand-toggle", inputs: { buttonLabel: "buttonLabel", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2020
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableExpandToggle, isStandalone: true, selector: "md-table-expand-toggle", inputs: { buttonLabel: "buttonLabel", icon: "icon" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1803
2021
  };
1804
2022
  MdTableExpandToggle = __decorate([
1805
2023
  ProxyCmp({
2024
+ defineCustomElementFn: defineMdTableExpandToggle,
1806
2025
  inputs: ['buttonLabel', 'icon']
1807
2026
  })
1808
2027
  ], MdTableExpandToggle);
@@ -1815,6 +2034,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1815
2034
  template: '<ng-content></ng-content>',
1816
2035
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1817
2036
  inputs: ['buttonLabel', 'icon'],
2037
+ standalone: true
1818
2038
  }]
1819
2039
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1820
2040
  let MdTableFoot = class MdTableFoot {
@@ -1824,10 +2044,12 @@ let MdTableFoot = class MdTableFoot {
1824
2044
  this.el = r.nativeElement;
1825
2045
  }
1826
2046
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1827
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableFoot, selector: "md-table-foot", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2047
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableFoot, isStandalone: true, selector: "md-table-foot", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1828
2048
  };
1829
2049
  MdTableFoot = __decorate([
1830
- ProxyCmp({})
2050
+ ProxyCmp({
2051
+ defineCustomElementFn: defineMdTableFoot
2052
+ })
1831
2053
  ], MdTableFoot);
1832
2054
  export { MdTableFoot };
1833
2055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableFoot, decorators: [{
@@ -1838,6 +2060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1838
2060
  template: '<ng-content></ng-content>',
1839
2061
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1840
2062
  inputs: [],
2063
+ standalone: true
1841
2064
  }]
1842
2065
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1843
2066
  let MdTableHead = class MdTableHead {
@@ -1847,10 +2070,12 @@ let MdTableHead = class MdTableHead {
1847
2070
  this.el = r.nativeElement;
1848
2071
  }
1849
2072
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1850
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableHead, selector: "md-table-head", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2073
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableHead, isStandalone: true, selector: "md-table-head", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1851
2074
  };
1852
2075
  MdTableHead = __decorate([
1853
- ProxyCmp({})
2076
+ ProxyCmp({
2077
+ defineCustomElementFn: defineMdTableHead
2078
+ })
1854
2079
  ], MdTableHead);
1855
2080
  export { MdTableHead };
1856
2081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableHead, decorators: [{
@@ -1861,6 +2086,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1861
2086
  template: '<ng-content></ng-content>',
1862
2087
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1863
2088
  inputs: [],
2089
+ standalone: true
1864
2090
  }]
1865
2091
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1866
2092
  let MdTablePagination = class MdTablePagination {
@@ -1871,10 +2097,11 @@ let MdTablePagination = class MdTablePagination {
1871
2097
  proxyOutputs(this, this.el, ['mdPageChange', 'mdRowsPerPageChange']);
1872
2098
  }
1873
2099
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTablePagination, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1874
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTablePagination, selector: "md-table-pagination", inputs: { compact: "compact", count: "count", density: "density", disabled: "disabled", labelAll: "labelAll", labelDisplayedRows: "labelDisplayedRows", labelFirstPage: "labelFirstPage", labelLastPage: "labelLastPage", labelNextPage: "labelNextPage", labelPreviousPage: "labelPreviousPage", labelRowsPerPage: "labelRowsPerPage", page: "page", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions", showFirstLast: "showFirstLast" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTablePagination, isStandalone: true, selector: "md-table-pagination", inputs: { compact: "compact", count: "count", density: "density", disabled: "disabled", labelAll: "labelAll", labelDisplayedRows: "labelDisplayedRows", labelFirstPage: "labelFirstPage", labelLastPage: "labelLastPage", labelNextPage: "labelNextPage", labelPreviousPage: "labelPreviousPage", labelRowsPerPage: "labelRowsPerPage", page: "page", rowsPerPage: "rowsPerPage", rowsPerPageOptions: "rowsPerPageOptions", showFirstLast: "showFirstLast" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1875
2101
  };
1876
2102
  MdTablePagination = __decorate([
1877
2103
  ProxyCmp({
2104
+ defineCustomElementFn: defineMdTablePagination,
1878
2105
  inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
1879
2106
  methods: ['goToPage', 'setRowsPerPage']
1880
2107
  })
@@ -1888,6 +2115,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1888
2115
  template: '<ng-content></ng-content>',
1889
2116
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1890
2117
  inputs: ['compact', 'count', 'density', 'disabled', 'labelAll', 'labelDisplayedRows', 'labelFirstPage', 'labelLastPage', 'labelNextPage', 'labelPreviousPage', 'labelRowsPerPage', 'page', 'rowsPerPage', 'rowsPerPageOptions', 'showFirstLast'],
2118
+ standalone: true
1891
2119
  }]
1892
2120
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1893
2121
  let MdTableRow = class MdTableRow {
@@ -1898,10 +2126,11 @@ let MdTableRow = class MdTableRow {
1898
2126
  proxyOutputs(this, this.el, ['mdRowClick', 'mdRowSelectionChange', 'mdRowExpandedChange']);
1899
2127
  }
1900
2128
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableRow, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1901
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableRow, selector: "md-table-row", inputs: { clickable: "clickable", disabled: "disabled", expandable: "expandable", expanded: "expanded", highlight: "highlight", rowgroup: "rowgroup", selectable: "selectable", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableRow, isStandalone: true, selector: "md-table-row", inputs: { clickable: "clickable", disabled: "disabled", expandable: "expandable", expanded: "expanded", highlight: "highlight", rowgroup: "rowgroup", selectable: "selectable", selected: "selected", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1902
2130
  };
1903
2131
  MdTableRow = __decorate([
1904
2132
  ProxyCmp({
2133
+ defineCustomElementFn: defineMdTableRow,
1905
2134
  inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
1906
2135
  methods: ['toggle']
1907
2136
  })
@@ -1915,6 +2144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1915
2144
  template: '<ng-content></ng-content>',
1916
2145
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1917
2146
  inputs: ['clickable', 'disabled', 'expandable', 'expanded', 'highlight', 'rowgroup', 'selectable', 'selected', 'value'],
2147
+ standalone: true
1918
2148
  }]
1919
2149
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1920
2150
  let MdTableSortLabel = class MdTableSortLabel {
@@ -1925,11 +2155,12 @@ let MdTableSortLabel = class MdTableSortLabel {
1925
2155
  proxyOutputs(this, this.el, ['mdSortRequest']);
1926
2156
  }
1927
2157
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableSortLabel, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableSortLabel, selector: "md-table-sort-label", inputs: { active: "active", column: "column", defaultOrder: "defaultOrder", density: "density", disabled: "disabled", icon: "icon", iconPosition: "iconPosition", order: "order" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2158
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableSortLabel, isStandalone: true, selector: "md-table-sort-label", inputs: { active: "active", column: "column", defaultOrder: "defaultOrder", density: "density", disabled: "disabled", icon: "icon", iconPosition: "iconPosition", inactiveIcon: "inactiveIcon", order: "order" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1929
2159
  };
1930
2160
  MdTableSortLabel = __decorate([
1931
2161
  ProxyCmp({
1932
- inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'order']
2162
+ defineCustomElementFn: defineMdTableSortLabel,
2163
+ inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'inactiveIcon', 'order']
1933
2164
  })
1934
2165
  ], MdTableSortLabel);
1935
2166
  export { MdTableSortLabel };
@@ -1940,7 +2171,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1940
2171
  changeDetection: ChangeDetectionStrategy.OnPush,
1941
2172
  template: '<ng-content></ng-content>',
1942
2173
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1943
- inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'order'],
2174
+ inputs: ['active', 'column', 'defaultOrder', 'density', 'disabled', 'icon', 'iconPosition', 'inactiveIcon', 'order'],
2175
+ standalone: true
1944
2176
  }]
1945
2177
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1946
2178
  let MdTableToolbar = class MdTableToolbar {
@@ -1950,10 +2182,11 @@ let MdTableToolbar = class MdTableToolbar {
1950
2182
  this.el = r.nativeElement;
1951
2183
  }
1952
2184
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTableToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1953
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableToolbar, selector: "md-table-toolbar", inputs: { autoBind: "autoBind", compact: "compact", density: "density", headline: "headline", labelSelected: "labelSelected", numSelected: "numSelected", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTableToolbar, isStandalone: true, selector: "md-table-toolbar", inputs: { autoBind: "autoBind", compact: "compact", density: "density", headline: "headline", labelSelected: "labelSelected", numSelected: "numSelected", supportingText: "supportingText" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1954
2186
  };
1955
2187
  MdTableToolbar = __decorate([
1956
2188
  ProxyCmp({
2189
+ defineCustomElementFn: defineMdTableToolbar,
1957
2190
  inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText']
1958
2191
  })
1959
2192
  ], MdTableToolbar);
@@ -1966,6 +2199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1966
2199
  template: '<ng-content></ng-content>',
1967
2200
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1968
2201
  inputs: ['autoBind', 'compact', 'density', 'headline', 'labelSelected', 'numSelected', 'supportingText'],
2202
+ standalone: true
1969
2203
  }]
1970
2204
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1971
2205
  let MdTabs = class MdTabs {
@@ -1976,11 +2210,12 @@ let MdTabs = class MdTabs {
1976
2210
  proxyOutputs(this, this.el, ['mdTabChange']);
1977
2211
  }
1978
2212
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
1979
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabs, selector: "md-tabs", inputs: { activeTabIndex: "activeTabIndex", ariaLabelProp: "ariaLabelProp", tabWidth: "tabWidth", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTabs, isStandalone: true, selector: "md-tabs", inputs: { activeTabIndex: "activeTabIndex", ariaLabelProp: "ariaLabelProp", divider: "divider", tabWidth: "tabWidth", variant: "variant", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1980
2214
  };
1981
2215
  MdTabs = __decorate([
1982
2216
  ProxyCmp({
1983
- inputs: ['activeTabIndex', 'ariaLabelProp', 'tabWidth', 'variant', 'width'],
2217
+ defineCustomElementFn: defineMdTabs,
2218
+ inputs: ['activeTabIndex', 'ariaLabelProp', 'divider', 'tabWidth', 'variant', 'width'],
1984
2219
  methods: ['selectTab']
1985
2220
  })
1986
2221
  ], MdTabs);
@@ -1992,7 +2227,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1992
2227
  changeDetection: ChangeDetectionStrategy.OnPush,
1993
2228
  template: '<ng-content></ng-content>',
1994
2229
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1995
- inputs: ['activeTabIndex', 'ariaLabelProp', 'tabWidth', 'variant', 'width'],
2230
+ inputs: ['activeTabIndex', 'ariaLabelProp', 'divider', 'tabWidth', 'variant', 'width'],
2231
+ standalone: true
1996
2232
  }]
1997
2233
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
1998
2234
  let MdTextField = class MdTextField {
@@ -2003,10 +2239,11 @@ let MdTextField = class MdTextField {
2003
2239
  proxyOutputs(this, this.el, ['mdInput', 'mdChange', 'mdSearch', 'mdClear', 'mdPasswordToggle', 'mdSpeechResult', 'mdValidityChange']);
2004
2240
  }
2005
2241
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTextField, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2006
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTextField, selector: "md-text-field", inputs: { appearFocused: "appearFocused", autoCapitalize: "autoCapitalize", autocomplete: "autocomplete", chipsWrap: "chipsWrap", clearable: "clearable", debounce: "debounce", density: "density", disabled: "disabled", enterKeyHint: "enterKeyHint", error: "error", errorText: "errorText", focusBorderWidth: "focusBorderWidth", formatOn: "formatOn", formatter: "formatter", inputAriaAutocomplete: "inputAriaAutocomplete", inputExpanded: "inputExpanded", inputMode: "inputMode", inputRole: "inputRole", label: "label", max: "max", maxLength: "maxLength", min: "min", minLength: "minLength", multiline: "multiline", name: "name", parser: "parser", passwordToggle: "passwordToggle", pattern: "pattern", placeholder: "placeholder", prefixText: "prefixText", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", restrict: "restrict", rows: "rows", speechLang: "speechLang", speechToText: "speechToText", spellcheck: "spellcheck", step: "step", suffixText: "suffixText", supportingText: "supportingText", throttle: "throttle", type: "type", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2242
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTextField, isStandalone: true, selector: "md-text-field", inputs: { appearFocused: "appearFocused", autoCapitalize: "autoCapitalize", autocomplete: "autocomplete", chipsWrap: "chipsWrap", clearable: "clearable", debounce: "debounce", density: "density", disabled: "disabled", enterKeyHint: "enterKeyHint", error: "error", errorText: "errorText", focusBorderWidth: "focusBorderWidth", formatOn: "formatOn", formatter: "formatter", inputAriaAutocomplete: "inputAriaAutocomplete", inputExpanded: "inputExpanded", inputMode: "inputMode", inputRole: "inputRole", label: "label", max: "max", maxLength: "maxLength", min: "min", minLength: "minLength", multiline: "multiline", name: "name", parser: "parser", passwordToggle: "passwordToggle", pattern: "pattern", placeholder: "placeholder", prefixText: "prefixText", readOnly: "readOnly", required: "required", reserveSupportingSpace: "reserveSupportingSpace", restrict: "restrict", rows: "rows", speechLang: "speechLang", speechToText: "speechToText", spellcheck: "spellcheck", step: "step", suffixText: "suffixText", supportingText: "supportingText", throttle: "throttle", type: "type", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2007
2243
  };
2008
2244
  MdTextField = __decorate([
2009
2245
  ProxyCmp({
2246
+ defineCustomElementFn: defineMdTextField,
2010
2247
  inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2011
2248
  methods: ['setFocus', 'select', 'getInputElement', 'getValidity', 'setCustomValidity', 'checkValidity', 'reportValidity']
2012
2249
  })
@@ -2020,6 +2257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2020
2257
  template: '<ng-content></ng-content>',
2021
2258
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2022
2259
  inputs: ['appearFocused', 'autoCapitalize', 'autocomplete', 'chipsWrap', 'clearable', 'debounce', 'density', 'disabled', 'enterKeyHint', 'error', 'errorText', 'focusBorderWidth', 'formatOn', 'formatter', 'inputAriaAutocomplete', 'inputExpanded', 'inputMode', 'inputRole', 'label', 'max', 'maxLength', 'min', 'minLength', 'multiline', 'name', 'parser', 'passwordToggle', 'pattern', 'placeholder', 'prefixText', 'readOnly', 'required', 'reserveSupportingSpace', 'restrict', 'rows', 'speechLang', 'speechToText', 'spellcheck', 'step', 'suffixText', 'supportingText', 'throttle', 'type', 'value', 'variant'],
2260
+ standalone: true
2023
2261
  }]
2024
2262
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2025
2263
  let MdTimePicker = class MdTimePicker {
@@ -2030,11 +2268,12 @@ let MdTimePicker = class MdTimePicker {
2030
2268
  proxyOutputs(this, this.el, ['mdChange', 'mdInput', 'mdOpen', 'mdClose', 'mdCancel', 'mdModeChange', 'mdValidityChange']);
2031
2269
  }
2032
2270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2033
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTimePicker, selector: "md-time-picker", inputs: { amLabel: "amLabel", cancelLabel: "cancelLabel", density: "density", disabled: "disabled", format: "format", headline: "headline", headlineDialLabel: "headlineDialLabel", headlineInputLabel: "headlineInputLabel", hideTrigger: "hideTrigger", hourLabel: "hourLabel", label: "label", max: "max", min: "min", minuteLabel: "minuteLabel", minuteStep: "minuteStep", name: "name", okLabel: "okLabel", open: "open", orientation: "orientation", periodLabel: "periodLabel", periodLayout: "periodLayout", pmLabel: "pmLabel", rangeOutsideLabel: "rangeOutsideLabel", rangeOverflowLabel: "rangeOverflowLabel", rangeUnderflowLabel: "rangeUnderflowLabel", required: "required", responsive: "responsive", toggleDialLabel: "toggleDialLabel", toggleInputLabel: "toggleInputLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTimePicker, isStandalone: true, selector: "md-time-picker", inputs: { amLabel: "amLabel", cancelLabel: "cancelLabel", density: "density", disabled: "disabled", error: "error", errorText: "errorText", format: "format", headline: "headline", headlineDialLabel: "headlineDialLabel", headlineInputLabel: "headlineInputLabel", hideTrigger: "hideTrigger", hourLabel: "hourLabel", label: "label", max: "max", min: "min", minuteLabel: "minuteLabel", minuteStep: "minuteStep", name: "name", okLabel: "okLabel", open: "open", orientation: "orientation", periodLabel: "periodLabel", periodLayout: "periodLayout", pmLabel: "pmLabel", rangeOutsideLabel: "rangeOutsideLabel", rangeOverflowLabel: "rangeOverflowLabel", rangeUnderflowLabel: "rangeUnderflowLabel", required: "required", reserveSupportingSpace: "reserveSupportingSpace", responsive: "responsive", supportingText: "supportingText", toggleDialLabel: "toggleDialLabel", toggleInputLabel: "toggleInputLabel", value: "value", valueMissingLabel: "valueMissingLabel", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2034
2272
  };
2035
2273
  MdTimePicker = __decorate([
2036
2274
  ProxyCmp({
2037
- inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'responsive', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2275
+ defineCustomElementFn: defineMdTimePicker,
2276
+ inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'error', 'errorText', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'reserveSupportingSpace', 'responsive', 'supportingText', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2038
2277
  methods: ['show', 'hide', 'checkValidity', 'reportValidity', 'getValidity']
2039
2278
  })
2040
2279
  ], MdTimePicker);
@@ -2046,7 +2285,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2046
2285
  changeDetection: ChangeDetectionStrategy.OnPush,
2047
2286
  template: '<ng-content></ng-content>',
2048
2287
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2049
- inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'responsive', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2288
+ inputs: ['amLabel', 'cancelLabel', 'density', 'disabled', 'error', 'errorText', 'format', 'headline', 'headlineDialLabel', 'headlineInputLabel', 'hideTrigger', 'hourLabel', 'label', 'max', 'min', 'minuteLabel', 'minuteStep', 'name', 'okLabel', 'open', 'orientation', 'periodLabel', 'periodLayout', 'pmLabel', 'rangeOutsideLabel', 'rangeOverflowLabel', 'rangeUnderflowLabel', 'required', 'reserveSupportingSpace', 'responsive', 'supportingText', 'toggleDialLabel', 'toggleInputLabel', 'value', 'valueMissingLabel', 'variant'],
2289
+ standalone: true
2050
2290
  }]
2051
2291
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2052
2292
  let MdToolbar = class MdToolbar {
@@ -2056,10 +2296,11 @@ let MdToolbar = class MdToolbar {
2056
2296
  this.el = r.nativeElement;
2057
2297
  }
2058
2298
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdToolbar, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2059
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdToolbar, selector: "md-toolbar", inputs: { alignment: "alignment", ariaLabelProp: "ariaLabelProp", ariaLabelledby: "ariaLabelledby", color: "color", containerSemantics: "containerSemantics", density: "density", layout: "layout", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2299
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdToolbar, isStandalone: true, selector: "md-toolbar", inputs: { alignment: "alignment", ariaLabelProp: "ariaLabelProp", ariaLabelledby: "ariaLabelledby", color: "color", containerSemantics: "containerSemantics", density: "density", layout: "layout", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2060
2300
  };
2061
2301
  MdToolbar = __decorate([
2062
2302
  ProxyCmp({
2303
+ defineCustomElementFn: defineMdToolbar,
2063
2304
  inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2064
2305
  methods: ['setFocus']
2065
2306
  })
@@ -2073,6 +2314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2073
2314
  template: '<ng-content></ng-content>',
2074
2315
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2075
2316
  inputs: ['alignment', 'ariaLabelProp', 'ariaLabelledby', 'color', 'containerSemantics', 'density', 'layout', 'variant'],
2317
+ standalone: true
2076
2318
  }]
2077
2319
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2078
2320
  let MdTooltip = class MdTooltip {
@@ -2083,10 +2325,11 @@ let MdTooltip = class MdTooltip {
2083
2325
  proxyOutputs(this, this.el, ['mdOpen', 'mdClose']);
2084
2326
  }
2085
2327
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTooltip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2086
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTooltip, selector: "md-tooltip", inputs: { autoPosition: "autoPosition", crossOffset: "crossOffset", density: "density", disabled: "disabled", hideDelay: "hideDelay", offset: "offset", open: "open", position: "position", showDelay: "showDelay", subhead: "subhead", text: "text", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2328
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTooltip, isStandalone: true, selector: "md-tooltip", inputs: { autoPosition: "autoPosition", crossOffset: "crossOffset", density: "density", disabled: "disabled", hideDelay: "hideDelay", offset: "offset", open: "open", position: "position", showDelay: "showDelay", subhead: "subhead", text: "text", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2087
2329
  };
2088
2330
  MdTooltip = __decorate([
2089
2331
  ProxyCmp({
2332
+ defineCustomElementFn: defineMdTooltip,
2090
2333
  inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2091
2334
  methods: ['show', 'hide']
2092
2335
  })
@@ -2100,6 +2343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2100
2343
  template: '<ng-content></ng-content>',
2101
2344
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2102
2345
  inputs: ['autoPosition', 'crossOffset', 'density', 'disabled', 'hideDelay', 'offset', 'open', 'position', 'showDelay', 'subhead', 'text', 'variant'],
2346
+ standalone: true
2103
2347
  }]
2104
2348
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2105
2349
  let MdTransferList = class MdTransferList {
@@ -2110,10 +2354,11 @@ let MdTransferList = class MdTransferList {
2110
2354
  proxyOutputs(this, this.el, ['mdChange', 'mdMove']);
2111
2355
  }
2112
2356
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MdTransferList, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
2113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTransferList, selector: "md-transfer-list", inputs: { countTemplate: "countTemplate", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", emptyText: "emptyText", items: "items", moveAllLeftIcon: "moveAllLeftIcon", moveAllLeftLabel: "moveAllLeftLabel", moveAllRightIcon: "moveAllRightIcon", moveAllRightLabel: "moveAllRightLabel", moveLeftIcon: "moveLeftIcon", moveLeftLabel: "moveLeftLabel", moveRightIcon: "moveRightIcon", moveRightLabel: "moveRightLabel", searchIcon: "searchIcon", searchable: "searchable", showSelectAll: "showSelectAll", singleStepOnly: "singleStepOnly", sourceSearchPlaceholder: "sourceSearchPlaceholder", sourceTitle: "sourceTitle", targetSearchPlaceholder: "targetSearchPlaceholder", targetTitle: "targetTitle", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2357
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MdTransferList, isStandalone: true, selector: "md-transfer-list", inputs: { countTemplate: "countTemplate", density: "density", disabled: "disabled", emptyIcon: "emptyIcon", emptyText: "emptyText", items: "items", moveAllLeftIcon: "moveAllLeftIcon", moveAllLeftLabel: "moveAllLeftLabel", moveAllRightIcon: "moveAllRightIcon", moveAllRightLabel: "moveAllRightLabel", moveLeftIcon: "moveLeftIcon", moveLeftLabel: "moveLeftLabel", moveRightIcon: "moveRightIcon", moveRightLabel: "moveRightLabel", searchIcon: "searchIcon", searchable: "searchable", showSelectAll: "showSelectAll", singleStepOnly: "singleStepOnly", sourceSearchPlaceholder: "sourceSearchPlaceholder", sourceTitle: "sourceTitle", targetSearchPlaceholder: "targetSearchPlaceholder", targetTitle: "targetTitle", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2114
2358
  };
2115
2359
  MdTransferList = __decorate([
2116
2360
  ProxyCmp({
2361
+ defineCustomElementFn: defineMdTransferList,
2117
2362
  inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2118
2363
  methods: ['moveSelectedRight', 'moveSelectedLeft']
2119
2364
  })
@@ -2127,6 +2372,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2127
2372
  template: '<ng-content></ng-content>',
2128
2373
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2129
2374
  inputs: ['countTemplate', 'density', 'disabled', 'emptyIcon', 'emptyText', 'items', 'moveAllLeftIcon', 'moveAllLeftLabel', 'moveAllRightIcon', 'moveAllRightLabel', 'moveLeftIcon', 'moveLeftLabel', 'moveRightIcon', 'moveRightLabel', 'searchIcon', 'searchable', 'showSelectAll', 'singleStepOnly', 'sourceSearchPlaceholder', 'sourceTitle', 'targetSearchPlaceholder', 'targetTitle', 'value'],
2375
+ standalone: true
2130
2376
  }]
2131
2377
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });
2132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL3Byb3hpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBZWhFLElBQU0sV0FBVyxHQUFqQixNQUFNLFdBQVc7SUFFdEIsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDMUIsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQzsrR0FOVSxXQUFXO21HQUFYLFdBQVcsMGNBSlosMkJBQTJCOztBQUkxQixXQUFXO0lBVnZCLFFBQVEsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDO0tBQzdOLENBQUM7R0FRVyxXQUFXLENBT3ZCOzs0RkFQWSxXQUFXO2tCQVB2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtv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QU8sQ0FBQztpQkFDcFkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuLyogYXV0by1nZW5lcmF0ZWQgYW5ndWxhciBkaXJlY3RpdmUgcHJveGllcyAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydicmluZ1RvRnJvbnQnLCAnZGVmYXVsdEV4cGFuZGVkJywgJ2RlbnNpdHknLCAnZWxldmF0aW9uJywgJ2V4Y2x1c2l2ZScsICdmbG9hdGluZycsICdoZWFkaW5nTGV2ZWwnLCAnaW5pdGlhbFgnLCAnaW5pdGlhbFknLCAna2VlcE9uZUV4cGFuZGVkJywgJ3JlZ2lvbicsICdyZWdpb25UaHJlc2hvbGQnLCAncmVvcmRlcmFibGUnLCAndHJhbnNpdGlvbicsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JyaW5nVG9Gcm9udCcsICdkZWZhdWx0RXhwYW5kZWQnLCAnZGVuc2l0eScsICdlbGV2YXRpb24nLCAnZXhjbHVzaXZlJywgJ2Zsb2F0aW5nJywgJ2hlYWRpbmdMZXZlbCcsICdpbml0aWFsWCcsICdpbml0aWFsWScsICdrZWVwT25lRXhwYW5kZWQnLCAncmVnaW9uJywgJ3JlZ2lvblRocmVzaG9sZCcsICdyZW9yZGVyYWJsZScsICd0cmFuc2l0aW9uJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRBY2NvcmRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRvZ2dsZScsICdtZFJlb3JkZXInLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnTW92ZScsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQWNjb3JkaW9uRHJhZ0RldGFpbCBhcyBJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBY2NvcmRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBpdGVtIGV4cGFuZHMgb3IgY29sbGFwc2VzLiBEZXRhaWwgY2FycmllcyB0aGVcbmZ1bGwgc2V0IG9mIGV4cGFuZGVkIGluZGljZXMuXG4gICAqL1xuICBtZFRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgZXhwYW5kZWQ6IGJvb2xlYW47IGV4cGFuZGVkSW5kaWNlczogbnVtYmVyW107IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkIHZpYSBkcmFnLWFuZC1kcm9wIG9yIGtleWJvYXJkXG4oQWx0K0Fycm93VXAgLyBBbHQrQXJyb3dEb3duKS4gYG9yZGVyYCBpcyB0aGUgbmV3IGluZGV4IHNlcXVlbmNlXG5yZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwgb3JkZXIsIGUuZy4gbW92aW5nIHRoZSBpdGVtIHRoYXQgd2FzIGF0XG5pbmRleCAwIHRvIGluZGV4IDIgeWllbGRzIGBvcmRlcjogWzEsIDIsIDBdYC5cbiAgICovXG4gIG1kUmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyOyBvcmRlcjogbnVtYmVyW107IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb25jZSBhIGZsb2F0aW5nIHBhbmVsIHN0YXJ0cyBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgbWREcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgY29udGludW91c2x5IHdoaWxlIGEgZmxvYXRpbmcgcGFuZWwgaXMgYmVpbmcgZHJhZ2dlZC5cbiAgICovXG4gIG1kRHJhZ01vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGZsb2F0aW5nIHBhbmVsIGlzIHJlbGVhc2VkLlxuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQWNjb3JkaW9uTWRBY2NvcmRpb25EcmFnRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNpYmxlJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdoZWFkaW5nTGV2ZWwnLCAnaGVhZGxpbmUnLCAnaWNvbicsICdyZWdpb25Sb2xlJywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJywgJ2ZvY3VzSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2libGUnLCAnY29udGVudE1heEhlaWdodCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hlYWRpbmdMZXZlbCcsICdoZWFkbGluZScsICdpY29uJywgJ3JlZ2lvblJvbGUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRBY2NvcmRpb25JdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJdGVtVG9nZ2xlJywgJ21kSXRlbVJlcXVlc3RGb2N1cycsICdtZEl0ZW1SZXF1ZXN0UmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFjY29yZGlvbkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kQWNjb3JkaW9uSXRlbSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIHRoZSBpdGVtIHRvZ2dsZXMuIFRoZSBwYXJlbnQgYG1kLWFjY29yZGlvbmAgdXNlc1xudGhpcyB0byBjb29yZGluYXRlIGV4Y2x1c2l2ZSBtb2RlLlxuICAgKi9cbiAgbWRJdGVtVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbjsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGxpc3RlbnMgdG8gZm9yIGFycm93LWtleSByb3ZpbmcgZm9jdXMuXG5CdWJibGVzICsgY29tcG9zZWQgc28gdGhlIHBhcmVudCByZWNlaXZlcyBpdCB0aHJvdWdoIHRoZSBzaGFkb3cuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0Rm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRpcmVjdGlvbjogJ25leHQnIHwgJ3ByZXYnIHwgJ2ZpcnN0JyB8ICdsYXN0JzsgZnJvbTogbnVtYmVyOyB9Pj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGxpc3RlbnMgdG8gZm9yIEFsdCtBcnJvdyBrZXlib2FyZFxucmVvcmRlcmluZy4gQnViYmxlcyArIGNvbXBvc2VkIHNvIHRoZSBwYXJlbnQgcmVjZWl2ZXMgaXRcbnRocm91Z2ggdGhlIHNoYWRvdy5cbiAgICovXG4gIG1kSXRlbVJlcXVlc3RSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkaXJlY3Rpb246ICd1cCcgfCAnZG93bic7IGZyb206IG51bWJlcjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2xlYWRpbmdJY29uJywgJ2xlYWRpbmdJY29uTGFiZWwnLCAnc2Nyb2xsZWQnLCAnc2VhcmNoQXJpYUxhYmVsJywgJ3NlYXJjaERpc2FibGVkJywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaFZhbHVlJywgJ3N1YnRpdGxlJywgJ3RpdGxlQWxpZ25tZW50JywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFwcC1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ljb25MYWJlbCcsICdzY3JvbGxlZCcsICdzZWFyY2hBcmlhTGFiZWwnLCAnc2VhcmNoRGlzYWJsZWQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoVmFsdWUnLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbm1lbnQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEFwcEJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTGVhZGluZ0NsaWNrJywgJ21kU2VhcmNoQWN0aXZhdGUnLCAnbWRTZWFyY2hJbnB1dCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFwcEJhciBleHRlbmRzIENvbXBvbmVudHMuTWRBcHBCYXIge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwcm9wLWJhc2VkIGxlYWRpbmcgaWNvbiBidXR0b24gaXMgYWN0aXZhdGVkLlxuICAgKi9cbiAgbWRMZWFkaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBTZWFyY2ggdmFyaWFudCBvbmx5OiBlbWl0dGVkIHdoZW4gdGhlIGlubGluZSBzZWFyY2ggZmllbGQgaXMgc2VsZWN0ZWRcbihjbGljaywgZm9jdXMsIEVudGVyLCBvciBTcGFjZSkuIFdpcmUgdGhpcyB0byBgbWQtc2VhcmNoLnNob3coKWAgdG8gb3BlblxudGhlIGZ1bGwtc2NyZWVuIHNlYXJjaCB2aWV3IHBlciB0aGUgTUQzIHNwZWMuXG4gICAqL1xuICBtZFNlYXJjaEFjdGl2YXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIFNlYXJjaCB2YXJpYW50IG9ubHk6IGVtaXR0ZWQgb24gZXZlcnkgaW5saW5lIHNlYXJjaCBmaWVsZCBpbnB1dCBjaGFuZ2UuXG4gICAqL1xuICBtZFNlYXJjaElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdjb25uZWN0TnVsbHMnLCAnY3VydmUnLCAnZGVuc2l0eScsICdmaWxsT3BhY2l0eScsICdncmlkJywgJ2hlaWdodFByb3AnLCAnaW52ZXJ0ZWQnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGVnZW5kJywgJ2xpbmVXaWR0aCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbWFya1NpemUnLCAnbm9BbmltYXRpb24nLCAnc2VyaWVzJywgJ3Nlcmllc0xhYmVscycsICdzaG93TGFiZWxzJywgJ3Nob3dMaW5lJywgJ3Nob3dNYXJrcycsICdzdGFjaycsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInLCAneEF4aXMnLCAneUF4aXMnLCAnem9vbSddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hcmVhLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXhpc1RpY2tzJywgJ2Nvbm5lY3ROdWxscycsICdjdXJ2ZScsICdkZW5zaXR5JywgJ2ZpbGxPcGFjaXR5JywgJ2dyaWQnLCAnaGVpZ2h0UHJvcCcsICdpbnZlcnRlZCcsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xhYmVsWm9vbUVuZCcsICdsYWJlbFpvb21TdGFydCcsICdsZWdlbmQnLCAnbGluZVdpZHRoJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhpcycsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQXJlYUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRNYXJrZXJDbGljaycsICdtZExpbmVDbGljaycsICdtZEFyZWFDbGljaycsICdtZEF4aXNDbGljaycsICdtZExlZ2VuZENsaWNrJywgJ21kSG92ZXInLCAnbWRSZWFkeScsICdtZFpvb20nXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRDbGlja0RldGFpbCBhcyBJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0U2VyaWVzIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRTZXJpZXMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXJlYUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5NZEFyZWFDaGFydCB7XG5cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNlcmllcycgZHJhd24gbGluZSBpcyBjbGlja2VkICpiZXR3ZWVuKiBpdHMgZGF0YSBwb2ludHMgKGFcbmNsaWNrIG9uIGEgcG9pbnQgZW1pdHMgYG1kTWFya2VyQ2xpY2tgIGluc3RlYWQpLlxuICAgKi9cbiAgbWRMaW5lQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQg4oCUIHRoZSBiYW5kIGJldHdlZW4gaXRzIGxpbmVcbmFuZCBpdHMgYmFzZSAoaXRzIG93biBiYW5kIHdoZW4gc3RhY2tlZCksIGV4Y2x1ZGluZyBpdHMgbGluZSBhbmQgcG9pbnRzLlxuICAgKi9cbiAgbWRBcmVhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJyB2YWx1ZSB0aGVyZS5cbiAgICovXG4gIG1kQXhpc0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydEF4aXNDbGlja0RldGFpbD4+O1xuXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG5cbiAgbWRIb3ZlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIgb3IgYHNldFpvb21gL2ByZXNldFpvb21gKS5cbiAgICovXG4gIG1kWm9vbTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyByZXNldDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJPbkJsdXInLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZUNsb3NlT25TZWxlY3QnLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmVyJywgJ2ZyZWVTb2xvJywgJ2lucHV0VmFsdWUnLCAnbGFiZWwnLCAnbGltaXRSZXN1bHRzJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ211bHRpcGxlJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc29mdERpc2FibGVkJywgJ3N0YXR1c1RlbXBsYXRlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxuICBtZXRob2RzOiBbJ2ZvY3VzSW5wdXQnLCAnc2hvd01lbnUnLCAnY2xvc2VNZW51JywgJ2xvYWRPcHRpb25zJywgJ2dldExhYmVscycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hdXRvY29tcGxldGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJPbkJsdXInLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZUNsb3NlT25TZWxlY3QnLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmVyJywgJ2ZyZWVTb2xvJywgJ2lucHV0VmFsdWUnLCAnbGFiZWwnLCAnbGltaXRSZXN1bHRzJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ211bHRpcGxlJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc29mdERpc2FibGVkJywgJ3N0YXR1c1RlbXBsYXRlJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEF1dG9jb21wbGV0ZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kSW5wdXQnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDbGVhcicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXV0b2NvbXBsZXRlIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF1dG9jb21wbGV0ZSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuZXZlciB0aGUgY29tbWl0dGVkIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIGxpdmUgaW5wdXQgc3RyaW5nIGNoYW5nZXMuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgdXNlciBjbGVhcnMgdGhlIHZhbHVlLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbHQnLCAnY29sb3JGcm9tTmFtZScsICdjcm9zc29yaWdpbicsICdkZW5zaXR5JywgJ2luaXRpYWxzJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbmFtZScsICdzaGFwZScsICdzaXplJywgJ3NyYyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYXZhdGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHQnLCAnY29sb3JGcm9tTmFtZScsICdjcm9zc29yaWdpbicsICdkZW5zaXR5JywgJ2luaXRpYWxzJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbmFtZScsICdzaGFwZScsICdzaXplJywgJ3NyYyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTG9hZCcsICdtZEVycm9yJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF2YXRhciB7XG4gIC8qKlxuICAgKiBJbWFnZSBzdWNjZXNzZnVsbHkgbG9hZGVkLlxuICAgKi9cbiAgbWRMb2FkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzcmM6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBJbWFnZSBmYWlsZWQgdG8gbG9hZCDigJQgY29tcG9uZW50IGZlbGwgYmFjayB0byBpbml0aWFscy9pY29uLlxuICAgKi9cbiAgbWRFcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3JjOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ljb24nLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJhZGdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ljb24nLCAnbWF4JywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRCYWRnZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLk1kQmFkZ2Uge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVzaXplJywgJ3JlcGxheScsICdkcmlsbCcsICd0b0RhdGFVUkwnLCAnZ2V0SW5zdGFuY2UnLCAnc2V0Wm9vbScsICdyZXNldFpvb20nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJhci1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFyQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEJhckNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydFNlcmllcyBhcyBJTWRCYXJDaGFydE1kQ2hhcnRTZXJpZXMgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kQmFyQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCYXJDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRCYXJDaGFydCB7XG5cbiAgbWRCYXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEJhckNoYXJ0TWRDaGFydFNlcmllcz4+PjtcblxuICBtZExlZ2VuZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZXJpZXNJbmRleDogbnVtYmVyOyBzZXJpZXNJZD86IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIsIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdjb250ZW50QWxpZ24nLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdoZWFkbGluZUFsaWduJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzY3JvbGxTaGFkb3cnLCAnc2hlZXRBcmlhTGFiZWwnLCAnc2hvd0RyYWdIYW5kbGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYm90dG9tLXNoZWV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdjb250ZW50QWxpZ24nLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdoZWFkbGluZUFsaWduJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzY3JvbGxTaGFkb3cnLCAnc2hlZXRBcmlhTGFiZWwnLCAnc2hvd0RyYWdIYW5kbGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQm90dG9tU2hlZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJvdHRvbVNoZWV0IGV4dGVuZHMgQ29tcG9uZW50cy5NZEJvdHRvbVNoZWV0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNoZWV0IG9wZW5zXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gY2xpY2ssIEVzY2FwZSwgZHJhZywgb3IgY2xvc2UgYnV0dG9uXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sbGFwc2VkJywgJ2N1cnJlbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnaXRlbUluZGV4JywgJ2l0ZW1Ub3RhbCcsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZCcsICdjdXJyZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2l0ZW1JbmRleCcsICdpdGVtVG90YWwnLCAncmVsJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEJyZWFkY3J1bWJJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3QnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnJlYWRjcnVtYlNlbGVjdERldGFpbCBhcyBJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIGEgbmF2aWdhYmxlIGNydW1iIOKAlCBpLmUuIHdoZW4gYW4gaXRlbSB3aXRoXG5hIG5vbi1lbXB0eSBgaHJlZmAgKGFuZCBub3QgbWFya2VkIGBjdXJyZW50YCAvIGBkaXNhYmxlZGApIGlzIGNsaWNrZWQgb3JcbmFjdGl2YXRlZCB3aXRoIGBFbnRlcmAgd2hpbGUgZm9jdXNlZC4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqOlxuY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSB0aGUgbGlzdGVuZXIgdG8gc3RvcCB0aGUgYnJvd3NlcidzXG5kZWZhdWx0IG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGhvb2sgZm9yIFNQQSByb3V0aW5nIOKAlCBsZXRcbnRoZSBicmVhZGNydW1iIHJlbmRlciBhIHJlYWwgYDxhPmAgKHNvIHJpZ2h0LWNsaWNrIC8gbWlkZGxlLWNsaWNrIC9cblwiT3BlbiBpbiBuZXcgdGFiXCIgc3RpbGwgd29yayksIHRoZW4gaW50ZXJjZXB0IGBtZFNlbGVjdGAgdG8gcHVzaCB0aGVcbnJvdXRlIHRocm91Z2ggeW91ciBjbGllbnQtc2lkZSByb3V0ZXIgaW5zdGVhZCBvZiBhIGZ1bGwgcGFnZSByZWxvYWQuXG5cblRoZSBldmVudCBidWJibGVzLCBzbyBjb25zdW1lcnMgY2FuIGF0dGFjaCBhIHNpbmdsZSBsaXN0ZW5lciBvbiB0aGVcbnBhcmVudCBgPG1kLWJyZWFkY3J1bWJzPmAgZm9yIGRlbGVnYXRpb24uIFRoZSBldmVudCBpcyBjb21wb3NlZCwgc29cbmxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSAodGhlIHR5cGljYWwgY2FzZSkgcmVjZWl2ZSBpdC5cblxuYGBgdHNcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21kLWJyZWFkY3J1bWJzJykhXG4gIC5hZGRFdmVudExpc3RlbmVyKCdtZFNlbGVjdCcsIChlKSA9PiB7XG4gICAgY29uc3QgeyBocmVmLCBsYWJlbCwgaXRlbUluZGV4IH0gPSAoZSBhcyBDdXN0b21FdmVudCkuZGV0YWlsO1xuICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgICAgIC8vIHN0b3AgdGhlIDxhPiBmcm9tIG5hdmlnYXRpbmdcbiAgICBteVJvdXRlci5wdXNoKGhyZWYpOyAgICAgICAgICAgICAvLyBTUEEgbmF2aWdhdGlvblxuICB9KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2V4cGFuZExhYmVsJywgJ2l0ZW1zQWZ0ZXJDb2xsYXBzZScsICdpdGVtc0JlZm9yZUNvbGxhcHNlJywgJ2xhYmVsJywgJ21heEl0ZW1zJywgJ3NlcGFyYXRvciddLFxuICBtZXRob2RzOiBbJ2V4cGFuZCcsICdjb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYnJlYWRjcnVtYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZXhwYW5kTGFiZWwnLCAnaXRlbXNBZnRlckNvbGxhcHNlJywgJ2l0ZW1zQmVmb3JlQ29sbGFwc2UnLCAnbGFiZWwnLCAnbWF4SXRlbXMnLCAnc2VwYXJhdG9yJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQnJlYWRjcnVtYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEV4cGFuZCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCcmVhZGNydW1ic0V4cGFuZERldGFpbCBhcyBJTWRCcmVhZGNydW1ic01kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCcmVhZGNydW1icyBleHRlbmRzIENvbXBvbmVudHMuTWRCcmVhZGNydW1icyB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB1c2VyIHJldmVhbHMgdGhlIGZ1bGwgYnJlYWRjcnVtYiB0cmFpbCBieSBhY3RpdmF0aW5nXG50aGUgb3ZlcmZsb3cgKFwi4oCmXCIpIHRvZ2dsZSwgb3Igd2hlbiBjb25zdW1lcnMgcHJvZ3JhbW1hdGljYWxseSBjYWxsXG5gZXhwYW5kKClgIC8gYGNvbGxhcHNlKClgLiBOb3QgY2FuY2VsYWJsZSDigJQgdGhlIHZpc2liaWxpdHkgY2hhbmdlXG5oYXMgYWxyZWFkeSBoYXBwZW5lZC4gVXNlIGl0IGZvciBhbmFseXRpY3Mgb3IgdG8gcmVhY3QgdG8gYSB1c2VyXG53aG8gd2FudHMgdG8gc2VlIHRoZSBmdWxsIHBhdGguXG5cbkJ1YmJsZXMgKyBjb21wb3NlZCwgc28gY29uc3VtZXJzIG91dHNpZGUgdGhlIHNoYWRvdyB0cmVlICh0aGUgdHlwaWNhbFxuY2FzZSkgcmVjZWl2ZSBpdC5cbiAgICovXG4gIG1kRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnJlYWRjcnVtYnNNZEJyZWFkY3J1bWJzRXhwYW5kRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hyZWYnLCAnaWNvbicsICdsb2FkaW5nJywgJ21pcnJvckljb24nLCAncmlwcGxlJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3N1cHByZXNzRXhwYW5kSWNvbkZsaXAnLCAndGFyZ2V0JywgJ3RvZ2dsZScsICd0cmFpbGluZ0ljb24nLCAndHlwZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hyZWYnLCAnaWNvbicsICdsb2FkaW5nJywgJ21pcnJvckljb24nLCAncmlwcGxlJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3N1cHByZXNzRXhwYW5kSWNvbkZsaXAnLCAndGFyZ2V0JywgJ3RvZ2dsZScsICd0cmFpbGluZ0ljb24nLCAndHlwZScsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljaycsICdtZENoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCdXR0b25DbGlja0RldGFpbCBhcyBJTWRCdXR0b25NZEJ1dHRvbkNsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRCdXR0b25DaGFuZ2VEZXRhaWwgYXMgSU1kQnV0dG9uTWRCdXR0b25DaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBidXR0b24gKG1vdXNlIGNsaWNrLCB0b3VjaCxcbm9yIGBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqIGFuZFxudGhlIGRldGFpbCBwYXlsb2FkIGRlc2NyaWJlcyB3aGF0ICp3b3VsZCogaGFwcGVuOiB0aGUgcG9zdC1jbGlja1xudG9nZ2xlIHN0YXRlLCB0aGUgbmF2aWdhdGlvbiBgaHJlZmAsIGFuZCBzbyBvbi5cblxuQ2FsbGluZyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSBhIGxpc3RlbmVyIHN1cHByZXNzZXMgdGhlXG5kZWZhdWx0IHNpZGUgZWZmZWN0cyAodG9nZ2xlIGZsaXAgKyBgaHJlZmAgbmF2aWdhdGlvbikgYnV0IGxldHNcbnRoZSB1bmRlcmx5aW5nIERPTSBjbGljayBidWJibGUuIFRoaXMgaXMgdGhlIGhvb2sgdG8gdXNlIGZvciBTUEFcbnJvdXRpbmcsIFwiYXJlIHlvdSBzdXJlP1wiIHByb21wdHMsIGFzeW5jIGNvbmZpcm1hdGlvbiwgZXRjLlxuXG5UaGUgZXZlbnQgYnViYmxlcyBhbmQgaXMgY29tcG9zZWQsIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZVxuc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsIGNhc2UpIHJlY2VpdmUgaXQuXG5cbmBgYHRzXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZC1idXR0b24nKSEuYWRkRXZlbnRMaXN0ZW5lcignbWRDbGljaycsIChlKSA9PiB7XG4gIGNvbnN0IHsgaHJlZiwgc2VsZWN0ZWQgfSA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gIGlmICghY29uZmlybSgnQ29udGludWU/JykpIGUucHJldmVudERlZmF1bHQoKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0b2dnbGUgbW9kZSBmbGlwcyB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpbiByZXNwb25zZSB0byBhXG51c2VyIGFjdGl2YXRpb24uIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgc3RhdGUgY2hhbmdlIGhhcyBhbHJlYWR5XG5oYXBwZW5lZC4gUGFpciB3aXRoIGBtZENsaWNrYCAoY2FuY2VsYWJsZSkgd2hlbiB5b3UgbmVlZCBhIHZldG8uXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Z1bGxXaWR0aCcsICdyZXF1aXJlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Z1bGxXaWR0aCcsICdyZXF1aXJlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEJ1dHRvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3Rpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWwgYXMgSU1kQnV0dG9uR3JvdXBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQnV0dG9uR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uR3JvdXAge1xuICAvKipcbiAgICogRmlyZXMgZXZlcnkgdGltZSBhIHVzZXIgYWN0aXZhdGlvbiB0b2dnbGVzIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2ZcbmEgY2hpbGQgYnV0dG9uLiBUaGUgZGV0YWlsIG9iamVjdCBkZXNjcmliZXMgYm90aCB0aGUgbmV3IHNlbGVjdGlvblxuc25hcHNob3QgKGB2YWx1ZXNgKSBhbmQgdGhlIGRpZmYgZnJvbSB0aGUgcHJldmlvdXMgc2VsZWN0aW9uXG4oYGFkZGVkYCwgYHJlbW92ZWRgKSwgcGx1cyB0aGUgdW5kZXJseWluZyBgb3JpZ2luYWxFdmVudGAuXG5cbkRpc3RpbmN0IGZyb20gZWFjaCBjaGlsZCBidXR0b24ncyBvd24gYG1kQ2hhbmdlYCAod2hpY2ggZmlyZXMgcGVyXG5pbmRpdmlkdWFsIGJ1dHRvbiB0b2dnbGUpOyB0aGUgZ3JvdXAncyBgbWRTZWxlY3Rpb25DaGFuZ2VgIGZpcmVzXG5vbmNlIHBlciB1c2VyIGFjdGl2YXRpb24gYW5kIHJlcG9ydHMgdGhlICpncm91cC1sZXZlbCogc3RhdGUuXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZVxucmVjZWl2ZSBpdC4gQGV4YW1wbGUgYGBgdHNcbmdyb3VwLmFkZEV2ZW50TGlzdGVuZXIoJ21kU2VsZWN0aW9uQ2hhbmdlJywgKGU6IEN1c3RvbUV2ZW50PE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWw+KSA9PiB7XG4gIGNvbnNvbGUubG9nKCdub3cgc2VsZWN0ZWQ6JywgZS5kZXRhaWwudmFsdWVzKTtcbiAgY29uc29sZS5sb2coJ2p1c3QgYWRkZWQ6JywgZS5kZXRhaWwuYWRkZWQpO1xuICBjb25zb2xlLmxvZygnanVzdCByZW1vdmVkOicsIGUuZGV0YWlsLnJlbW92ZWQpO1xufSk7XG5gYGBcbiAgICovXG4gIG1kU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uR3JvdXBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJhZ0VuYWJsZWQnLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaW50ZXJhY3RpdmUnLCAncmlwcGxlJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RyYWdFbmFibGVkJywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2ludGVyYWN0aXZlJywgJ3JpcHBsZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENhcmQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kRHJhZ1N0YXJ0JywgJ21kRHJhZ01vdmUnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZENhcmREcmFnRGV0YWlsIGFzIElNZENhcmRNZENhcmREcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTWRDYXJkIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYW4gaW50ZXJhY3RpdmUgY2FyZCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmRcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBzdGFydHMgYmVpbmcgZHJhZ2dlZCAoYWZ0ZXIgY3Jvc3NpbmcgdGhlIG1vdmVtZW50IHRocmVzaG9sZClcbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIGNvbnRpbnVvdXNseSBhcyBhIGRyYWdnZWQgY2FyZCBtb3ZlcyDigJQgdXNlIGZvciBkcm9wLXpvbmUgZGV0ZWN0aW9uIG9yIHBvc2l0aW9uIHRyYWNraW5nXG4gICAqL1xuICBtZERyYWdNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBpcyByZWxlYXNlZCBhZnRlciBkcmFnZ2luZ1xuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY2hlY2tib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnaW5kZXRlcm1pbmF0ZScsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZENoZWNrYm94IGV4dGVuZHMgQ29tcG9uZW50cy5NZENoZWNrYm94IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gY2hlY2tlZCBvciBpbmRldGVybWluYXRlIHN0YXRlIGNoYW5nZXNcbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuOyBpbmRldGVybWluYXRlOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJhbmNlJywgJ2NvbG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWNoaXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbGV2YXRlZCcsICdpY29uJywgJ2xhYmVsJywgJ3JlbW92YWJsZScsICdzZWxlY3RhYmxlJywgJ3NlbGVjdGVkJywgJ3NvZnREaXNhYmxlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZENoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kU2VsZWN0JywgJ21kUmVtb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGlwIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoaXAgaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0ZWQgc3RhdGUgY2hhbmdlcyAoZmlsdGVyL2lucHV0KVxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHRyYWlsaW5nIHJlbW92ZSAoXCLinJVcIikgYnV0dG9uIGlzIGFjdGl2YXRlZCBvbiBhIHJlbW92YWJsZVxuY2hpcCAoYnkgY2xpY2ssIEVudGVyLCBTcGFjZSwgRGVsZXRlLCBvciBCYWNrc3BhY2UpLlxuXG5UaGUgZXZlbnQgaXMgKipjYW5jZWxhYmxlKio6IGJ5IGRlZmF1bHQsIGFmdGVyIGBtZFJlbW92ZWAgaXMgZGlzcGF0Y2hlZFxudGhlIGNoaXAgcmVtb3ZlcyBpdHNlbGYgZnJvbSB0aGUgRE9NLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpbiBhXG5oYW5kbGVyIHRvIGtlZXAgdGhlIGNoaXAgbW91bnRlZCAoZS5nLiB3aGVuIHlvdXIgc3RhdGUgbGF5ZXIgb3ducyB0aGVcbmxpc3QgYW5kIHdpbGwgcmUtcmVuZGVyIHdpdGggdGhlIGNoaXAgZ29uZSkuXG4gICAqL1xuICBtZFJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWxwaGEnLCAnYXJpYUxhYmVsUHJvcCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdmb3JtYXQnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdvcGVuJywgJ3ByZXNldHMnLCAnc2hvd0hleCcsICdzaG93SW5wdXRzJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRDb2xvclBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRPcGVuQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQ29sb3JQaWNrZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBvbiBldmVyeSBjaGFuZ2Ugd2hpbGUgdGhlIHVzZXIgZHJhZ3MgLyB0eXBlcy5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocmVsZWFzZSBwb2ludGVyLCBibHVyIGlucHV0LFxuRW50ZXIsIG9yIGNsaWNrIGEgcHJlc2V0KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBvcGVucyBvciBjbG9zZXMuXG4gICAqL1xuICBtZE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYWxlbmRhckljb24nLCAnY2FuY2VsTGFiZWwnLCAnY2hvb3NlTW9udGhBbmRZZWFyTGFiZWwnLCAnY2hvb3NlTW9udGhMYWJlbCcsICdjaG9vc2VNb250aFllYXJMYWJlbCcsICdjaG9vc2VZZWFyTGFiZWwnLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY2xvc2VDYWxlbmRhckxhYmVsJywgJ2NvbW1pdE9uU2VsZWN0JywgJ2RhdGVTZXBhcmF0b3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlckRhdGVzTGFiZWwnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpZWxkVmFyaWFudCcsICdmaXJzdERheU9mV2VlaycsICdoZWFkbGluZScsICdpbnZhbGlkRGF0ZUxhYmVsJywgJ2lzRGF0ZURpc2FibGVkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmV4dE1vbnRoTGFiZWwnLCAnbmV4dFllYXJMYWJlbCcsICdva0xhYmVsJywgJ29wZW4nLCAnb3BlbkNhbGVuZGFyTGFiZWwnLCAnb3V0c2lkZUNsaWNrRGlzbWlzc2libGUnLCAncGxhY2Vob2xkZXInLCAncHJldmlvdXNNb250aExhYmVsJywgJ3ByZXZpb3VzWWVhckxhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzZWxlY3REYXRlTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndG9nZ2xlQ2FsZW5kYXJMYWJlbCcsICd0b2dnbGVUZXh0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd5ZWFyR3JpZExhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdjbGVhcicsICdmb2N1c0lucHV0JywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYWxlbmRhckljb24nLCAnY2FuY2VsTGFiZWwnLCAnY2hvb3NlTW9udGhBbmRZZWFyTGFiZWwnLCAnY2hvb3NlTW9udGhMYWJlbCcsICdjaG9vc2VNb250aFllYXJMYWJlbCcsICdjaG9vc2VZZWFyTGFiZWwnLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY2xvc2VDYWxlbmRhckxhYmVsJywgJ2NvbW1pdE9uU2VsZWN0JywgJ2RhdGVTZXBhcmF0b3InLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlckRhdGVzTGFiZWwnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpZWxkVmFyaWFudCcsICdmaXJzdERheU9mV2VlaycsICdoZWFkbGluZScsICdpbnZhbGlkRGF0ZUxhYmVsJywgJ2lzRGF0ZURpc2FibGVkJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmV4dE1vbnRoTGFiZWwnLCAnbmV4dFllYXJMYWJlbCcsICdva0xhYmVsJywgJ29wZW4nLCAnb3BlbkNhbGVuZGFyTGFiZWwnLCAnb3V0c2lkZUNsaWNrRGlzbWlzc2libGUnLCAncGxhY2Vob2xkZXInLCAncHJldmlvdXNNb250aExhYmVsJywgJ3ByZXZpb3VzWWVhckxhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzZWxlY3REYXRlTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndG9nZ2xlQ2FsZW5kYXJMYWJlbCcsICd0b2dnbGVUZXh0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd5ZWFyR3JpZExhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kU2VsZWN0ZWQnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZFZpZXdDaGFuZ2UnLCAnbWRNZW51T3BlbicsICdtZE1lbnVTZWxlY3QnLCAnbWRNb2RlQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlckNoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlclNlbGVjdGVkRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWREYXRlUGlja2VyVmlld0NoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyVmlld0NoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVPcGVuRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWREYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb21taXRzIGEgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRheSBpbiB0aGUgY2FsZW5kYXIgKGNsaWNrIG9yIGtleWJvYXJkKS5cbiAgICovXG4gIG1kU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkga2V5c3Ryb2tlIGluIGEgdGV4dC1lbnRyeSBmaWVsZC5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlciBjbG9zZXMgZm9yIGFueSByZWFzb24uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGRpc21pc3NlcyB3aXRob3V0IGNvbW1pdHRpbmcgKHNjcmltLCBDYW5jZWwsIEVzYykuXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheWVkIGNhbGVuZGFyIG1vbnRoL3llYXIgY2hhbmdlcyBmcm9tIHVzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1kVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIG1vbnRoIG9yIHllYXIgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51T3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHBpY2tzIGEgbW9udGggb3IgeWVhciBmcm9tIGEgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIGJldHdlZW4gY2FsZW5kYXIgYW5kIHR5cGVkLWVudHJ5IHZpZXdzLlxuICAgKi9cbiAgbWRNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdjbG9zZUxhYmVsJywgJ2RlbnNpdHknLCAnZGl2aWRlcicsICdmdWxsc2NyZWVuJywgJ2hlYWRlckRpdmlkZXInLCAnaGVhZGxpbmUnLCAnaWNvbicsICdsb2NhbGUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ3NjcmltRGlzbWlzc2libGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NhbmNlbExhYmVsJywgJ2Nsb3NlTGFiZWwnLCAnZGVuc2l0eScsICdkaXZpZGVyJywgJ2Z1bGxzY3JlZW4nLCAnaGVhZGVyRGl2aWRlcicsICdoZWFkbGluZScsICdpY29uJywgJ2xvY2FsZScsICdva0xhYmVsJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZERpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQ2FuY2VsJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5NZERpYWxvZyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkaWFsb2cgb3BlbnNcbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRpYWxvZyBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gb3IgRXNjYXBlXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZGl2aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZERpdmlkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZERpdmlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kRGl2aWRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4dGVuZGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbG93ZXJlZCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZmFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4dGVuZGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbG93ZXJlZCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRGYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBGQUIgKG1vdXNlIGNsaWNrLCB0b3VjaCwgb3JcbmBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gTm90IGVtaXR0ZWQgd2hlbiBgZGlzYWJsZWRgIG9yXG5gc29mdC1kaXNhYmxlZGAuIEJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkIHNvIGEgZGVsZWdhdGVkIGxpc3RlbmVyXG5vbiBhIHBhcmVudCBlbGVtZW50IHdvcmtzLlxuXG5gYGB0c1xuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWQtZmFiJykhLmFkZEV2ZW50TGlzdGVuZXIoJ21kQ2xpY2snLCAoZSkgPT4ge1xuICBjb25zdCBtb3VzZUV2ZW50ID0gKGUgYXMgQ3VzdG9tRXZlbnQ8TW91c2VFdmVudD4pLmRldGFpbDtcbiAgY29uc29sZS5sb2coJ0ZBQiBjbGlja2VkIGF0JywgbW91c2VFdmVudC5jbGllbnRYLCBtb3VzZUV2ZW50LmNsaWVudFkpO1xufSk7XG5gYGBcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdkZW5zaXR5JywgJ21lbnVMYWJlbCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdxdWljaycsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZmFiLW1lbnUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdkZW5zaXR5JywgJ21lbnVMYWJlbCcsICdvcGVuJywgJ3BsYWNlbWVudCcsICdxdWljaycsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kRmFiTWVudSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRmFiTWVudSBleHRlbmRzIENvbXBvbmVudHMuTWRGYWJNZW51IHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IGNsb3Nlcy5cbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc29mdERpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAncm92aW5nRm9jdXNWaXNpYmxlJywgJ3NvZnREaXNhYmxlZCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEZhYk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEZhYk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gaXMgYWN0aXZhdGVkLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYnV0dG9uV2lkdGgnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAncmlwcGxlJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCcsICd0b2dnbGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtaWNvbi1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbldpZHRoJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ3JpcHBsZScsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hhcGUnLCAnc2hhcGVNb3JwaCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRJY29uQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEljb25CdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kSWNvbkJ1dHRvbiB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBwb2ludGVyIG9yIGtleWJvYXJkIGFjdGl2YXRpb24uIERldGFpbCBpbmNsdWRlcyB0b2dnbGUgYHNlbGVjdGVkYCBzdGF0ZS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2FyZWEnLCAnYXhpc1RpY2tzJywgJ2Nvbm5lY3ROdWxscycsICdjdXJ2ZScsICdkZW5zaXR5JywgJ2dyaWQnLCAnaGVpZ2h0UHJvcCcsICdpbnZlcnRlZCcsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xhYmVsWm9vbUVuZCcsICdsYWJlbFpvb21TdGFydCcsICdsZWdlbmQnLCAnbGluZVdpZHRoJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtYXJrTGluZXMnLCAnbWFya1NpemUnLCAnbm9BbmltYXRpb24nLCAnc2VyaWVzJywgJ3Nlcmllc0xhYmVscycsICdzaG93TGFiZWxzJywgJ3Nob3dMaW5lJywgJ3Nob3dNYXJrcycsICdzdGFjaycsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInLCAneEF4aXMnLCAneUF4ZXMnLCAneUF4aXMnLCAnem9vbSddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saW5lLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTGluZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRNYXJrZXJDbGljaycsICdtZExpbmVDbGljaycsICdtZEFyZWFDbGljaycsICdtZEF4aXNDbGljaycsICdtZExlZ2VuZENsaWNrJywgJ21kSG92ZXInLCAnbWRSZWFkeScsICdtZFpvb20nXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRDbGlja0RldGFpbCBhcyBJTWRMaW5lQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0WFlTZXJpZXMgYXMgSU1kTGluZUNoYXJ0TWRDaGFydFhZU2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEF4aXNDbGlja0RldGFpbCBhcyBJTWRMaW5lQ2hhcnRNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEhvdmVyRGV0YWlsIGFzIElNZExpbmVDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZExpbmVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRMaW5lQ2hhcnQge1xuICAvKipcbiAgICogRmlyZXMgb24gbWFya2VyIGNsaWNrLiBgZGF0YUluZGV4YCBhZGRyZXNzZXMgdGhlIGNsaWNrZWQgc2VyaWVzJyBvd25cbmBkYXRhYCBhcnJheSAoaXRzIHBvaW50IGluZGV4LCBmb3Igc2VyaWVzIHRoYXQgY2FycnkgdGhlaXIgb3duIHgpLlxuICAgKi9cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRMaW5lQ2hhcnRNZENoYXJ0WFlTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuIGBkYXRhSW5kZXhgIGlzIHRoZSBwb2ludFxudGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kTGluZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQgKGBhcmVhYCBjaGFydHMgb25seSkg4oCUIHRoZVxucmVnaW9uIGJldHdlZW4gdGhhdCBzZXJpZXMnIGxpbmUgYW5kIGl0cyBiYXNlbGluZSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZFxucG9pbnRzLiBgZGF0YUluZGV4YCBpcyB0aGUgcG9pbnQgdGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kQXJlYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwb3NpdGlvbiBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJ1xudmFsdWUgdGhlcmUuXG4gICAqL1xuICBtZEF4aXNDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBsZWdlbmQgZW50cnkgaXMgY2xpY2tlZC5cbiAgICovXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAodGhyb3R0bGVkIHRvIHJBRikgYXMgdGhlIHBvaW50ZXIgY3Jvc3NlcyB0aGUgcGxvdC5cbiAgICovXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaW5lQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIHRoZSBjaGFydCBmaW5pc2hlcyBpdHMgaW5pdGlhbCByZW5kZXIuXG4gICAqL1xuICBtZFJlYWR5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgem9vbSB3aW5kb3cgY2hhbmdlcyAoZHJhZywgc2xpZGVyIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ludGVyYWN0aW9uTW9kZScsICdsYWJlbCcsICdsYWJlbGxlZGJ5JywgJ2xpc3RTdHlsZScsICdyZW9yZGVyYWJsZScsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0aW9uTW9kZSddLFxuICBtZXRob2RzOiBbJ2FjdGl2YXRlTmV4dCcsICdhY3RpdmF0ZVByZXZpb3VzJywgJ3NlbGVjdEl0ZW0nLCAnZ2V0U2VsZWN0ZWRJbmRpY2VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2ludGVyYWN0aW9uTW9kZScsICdsYWJlbCcsICdsYWJlbGxlZGJ5JywgJ2xpc3RTdHlsZScsICdyZW9yZGVyYWJsZScsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0aW9uTW9kZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCcsICdtZEFjdGl2YXRlJywgJ21kUmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0U2VsZWN0RGV0YWlsIGFzIElNZExpc3RNZExpc3RTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRMaXN0IGV4dGVuZHMgQ29tcG9uZW50cy5NZExpc3Qge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzIHZpYSB1c2VyIGlucHV0IChjbGljayAvIEVudGVyIC8gU3BhY2UpLlxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0TWRMaXN0U2VsZWN0RGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW5ldmVyIHJvdmluZyBmb2N1cyBsYW5kcyBvbiBhIGRpZmZlcmVudCByb3cuXG4gICAqL1xuICBtZEFjdGl2YXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBpdGVtOiBIVE1MTWRMaXN0SXRlbUVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciBhIGRyYWcgKG9yIGtleWJvYXJkKSByZW9yZGVyIGNvbXBsZXRlcy5cblxuLSBgZnJvbWAgLyBgdG9gOiB0aGUgbW92ZWQgcm93J3Mgb2xkIGFuZCBuZXcgcG9zaXRpb25zIChpdGVtIGluZGljZXMsXG4gIGlnbm9yaW5nIG5vbi1pdGVtIGNoaWxkcmVuIGxpa2UgZGl2aWRlcnMpLlxuLSBgb3JkZXJgOiB0aGUgbmV3IG9yZGVyIGV4cHJlc3NlZCBhcyB0aGUgb3JpZ2luYWwgKGFzLWF1dGhvcmVkKSBpbmRpY2VzLFxuICBzbyBgb3JkZXJbbmV3UG9zaXRpb25dID09PSBvcmlnaW5hbFBvc2l0aW9uYC4gVXNlIGl0IHRvIHJlb3JkZXIgYVxuICBiYWNraW5nIGRhdGEgYXJyYXkgaW4gb25lIHBhc3MuXG4gICAqL1xuICBtZFJlb3JkZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGZyb206IG51bWJlcjsgdG86IG51bWJlcjsgb3JkZXI6IG51bWJlcltdIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29udGFpbmVyUm9sZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGFibGUnLCAnZXhwYW5kZWQnLCAnaGVhZGxpbmUnLCAnaHJlZicsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGVhZGluZ0F2YXRhcicsICdsZWFkaW5nQXZhdGFyQWx0JywgJ2xlYWRpbmdBdmF0YXJMYWJlbCcsICdsZWFkaW5nQXZhdGFyTmFtZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSW1hZ2UnLCAnbGVhZGluZ0ltYWdlQWx0JywgJ2xpbmVzJywgJ292ZXJsaW5lJywgJ3Jlb3JkZXJhYmxlJywgJ3JvdmluZ0ZvY3VzVmlzaWJsZScsICdzZWxlY3RlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0YWJiYWJsZScsICd0YXJnZXQnLCAndHJhaWxpbmdJY29uJywgJ3RyYWlsaW5nU3VwcG9ydGluZ1RleHQnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ2ZvY3VzSXRlbScsICd0b2dnbGUnLCAnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRhaW5lclJvbGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRhYmxlJywgJ2V4cGFuZGVkJywgJ2hlYWRsaW5lJywgJ2hyZWYnLCAnaW50ZXJhY3Rpb25Nb2RlJywgJ2xlYWRpbmdBdmF0YXInLCAnbGVhZGluZ0F2YXRhckFsdCcsICdsZWFkaW5nQXZhdGFyTGFiZWwnLCAnbGVhZGluZ0F2YXRhck5hbWUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ltYWdlJywgJ2xlYWRpbmdJbWFnZUFsdCcsICdsaW5lcycsICdvdmVybGluZScsICdyZW9yZGVyYWJsZScsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc2VsZWN0ZWQnLCAnc2VsZWN0aW9uTW9kZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGFiYmFibGUnLCAndGFyZ2V0JywgJ3RyYWlsaW5nSWNvbicsICd0cmFpbGluZ1N1cHBvcnRpbmdUZXh0JywgJ3R5cGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRMaXN0SXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWRJdGVtQ2xpY2snLCAnbWRJdGVtU2VsZWN0JywgJ21kUmVxdWVzdEFjdGl2YXRpb24nLCAnbWRJdGVtUmVxdWVzdFJlb3JkZXInLCAnbWRFeHBhbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kTGlzdEl0ZW1FeHBhbmREZXRhaWwgYXMgSU1kTGlzdEl0ZW1NZExpc3RJdGVtRXhwYW5kRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTGlzdEl0ZW0ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBpbnRlcmFjdGl2ZSByb3cgaXMgYWN0aXZhdGVkIChjbGljaywgRW50ZXIsIG9yIFNwYWNlKS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGl0ZW06IEhUTUxFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEJ1YmJsZXMgdG8gcGFyZW50IGBtZC1saXN0YCBzbyBpdCBjYW4gbWFuYWdlIHNlbGVjdGlvbiBzdGF0ZS5cbiAgICovXG4gIG1kSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBCdWJibGVzIHRvIHBhcmVudCBgbWQtbGlzdGAgd2hlbiBhbiBgZXhwYW5kZWQtY29udGVudGAgY2hpbGQgcm93IGlzXG5zZWxlY3RlZC4gVGhlIGxpc3QgcmUtZW1pdHMgYG1kU2VsZWN0YCB3aXRoIHRoZSBwYXJlbnQncyBsaXN0IGluZGV4LFxuYGNoaWxkSW5kZXhgLCBgZXhwYW5kZWRgLCBhbmQgdGhlIGNoaWxkIGluIGBpdGVtYC5cbiAgICovXG4gIG1kSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW47IGl0ZW06IEhUTUxNZExpc3RJdGVtRWxlbWVudDsgfT4+O1xuICAvKipcbiAgICogQXNrcyB0aGUgcGFyZW50IGBtZC1saXN0YCB0byBnaXZlIHRoaXMgcm93IHJvdmluZyBmb2N1cy5cbiAgICovXG4gIG1kUmVxdWVzdEFjdGl2YXRpb246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGBtZC1saXN0YCBsaXN0ZW5zIHRvIGZvciBrZXlib2FyZCByZW9yZGVyaW5nXG4oYEFsdCArIEFycm93VXAgLyBBcnJvd0Rvd25gKS4gQnViYmxlcyArIGNvbXBvc2VkIHNvIGl0IGNyb3NzZXMgdGhlXG5zaGFkb3cgYm91bmRhcnkgdXAgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0UmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhbiBleHBhbmRhYmxlIHJvdyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1sb2FkaW5nLWluZGljYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTG9hZGluZ0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTG9hZGluZ0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRMb2FkaW5nSW5kaWNhdG9yIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FuY2hvcicsICdhdXRvRm9jdXMnLCAnZGVuc2l0eScsICdlbXB0eVRleHQnLCAnbGF5b3V0JywgJ2xpc3RMYWJlbCcsICdsaXN0Ym94JywgJ21hdGNoQW5jaG9yV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ29wZW4nLCAncGVyc2lzdGVudCcsICdwbGFjZW1lbnQnLCAncXVpY2snLCAncmVzcG9uc2l2ZScsICd1c2VHYXAnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldENvbWJvYm94RWxlbWVudCcsICdzZXRWaXJ0dWFsUHJvdmlkZXInLCAnZ2V0U2Nyb2xsVmlld3BvcnQnLCAnc2hvdycsICdyZXBvc2l0aW9uJywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmNob3InLCAnYXV0b0ZvY3VzJywgJ2RlbnNpdHknLCAnZW1wdHlUZXh0JywgJ2xheW91dCcsICdsaXN0TGFiZWwnLCAnbGlzdGJveCcsICdtYXRjaEFuY2hvcldpZHRoJywgJ21heEhlaWdodCcsICdvcGVuJywgJ3BlcnNpc3RlbnQnLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3Jlc3BvbnNpdmUnLCAndXNlR2FwJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBvcGVucy4gU2NvcGVkIHRvIHRoZSBtZW51IGVsZW1lbnQ6IGBidWJibGVzOiBmYWxzZWBcbnN0b3BzIGl0IGNsaW1iaW5nIHRoZSBsaWdodC1ET00gdHJlZSwgYW5kIGBjb21wb3NlZDogZmFsc2VgIHN0b3BzIGl0XG5lc2NhcGluZyB0aGUgc2hhZG93IHJvb3Qgb2YgYSBob3N0IHRoYXQgZW1iZWRzIHRoaXMgbWVudSAobWQtc2VsZWN0LFxubWQtbXVsdGktc2VsZWN0LCBtZC1kYXRlLXBpY2tlciDigKYpLiBXaXRob3V0IGBjb21wb3NlZDogZmFsc2VgIGFcbmBjb21wb3NlZGAgZXZlbnQgc3RpbGwgc3VyZmFjZXMgYXQgdGhlIGVtYmVkZGluZyBob3N0IGFzIGFuXG5gQVRfVEFSR0VUYCBldmVudCDigJQgc28gYSBjb25zdW1lcidzIGBtZE9wZW5gIGxpc3RlbmVyIG9uIHRoZSB3cmFwcGVyXG53b3VsZCBmaXJlIGZvciBib3RoIHRoZSB3cmFwcGVyJ3Mgb3duIGV2ZW50IGFuZCB0aGlzIGlubmVyIG9uZVxuKGR1cGxpY2F0ZSBvcGVuL2Nsb3NlKS4gV3JhcHBlcnMgbGlzdGVuIHZpYSBgb25NZE9wZW5gIG9uIHRoZSBtZW51XG5lbGVtZW50IGl0c2VsZiwgd2hpY2ggc3RpbGwgZmlyZXMgcmVnYXJkbGVzcy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLiBTY29wZWQgbGlrZSBgbWRPcGVuYCDigJQgc2VlIGl0cyBub3RlLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYmFkZ2UnLCAnY2hlY2tQb3NpdGlvbicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RpdmlkZXInLCAnZ2FwJywgJ2hlYWRsaW5lJywgJ2luZGV0ZXJtaW5hdGUnLCAna2VlcE9wZW4nLCAncHJlc2VudGF0aW9uJywgJ3JvbGVPdmVycmlkZScsICdzZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFpbGluZ1RleHQnLCAndHlwZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYWRnZScsICdjaGVja1Bvc2l0aW9uJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnaW5kZXRlcm1pbmF0ZScsICdrZWVwT3BlbicsICdwcmVzZW50YXRpb24nLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyYWlsaW5nVGV4dCcsICd0eXBlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTWVudUl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaXRlbSBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2xhYmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51LWl0ZW0tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51SXRlbUdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51SXRlbUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnVJdGVtR3JvdXAge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29sb3InLCAnZGVuc2l0eScsICdmb3JtYXRPcHRpb25zJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ3Nob3dMYWJlbCcsICdzaG93VmFsdWUnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFsdWVUZXh0JywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW1ldGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkZW5zaXR5JywgJ2Zvcm1hdE9wdGlvbnMnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnc2hvd0xhYmVsJywgJ3Nob3dWYWx1ZScsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE1ldGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZXRlciBleHRlbmRzIENvbXBvbmVudHMuTWRNZXRlciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjaGlwT3ZlcmZsb3cnLCAnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhckxhYmVsJywgJ2NsZWFyYWJsZScsICdjb3VudEZvcm1hdHRlcicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc3BsYXlNb2RlJywgJ2Ryb3Bkb3duSWNvbicsICdlcnJvcicsICdlcnJvclRleHQnLCAnZmlsdGVyTGFiZWwnLCAnZmlsdGVyTW9kZScsICdmaWx0ZXJhYmxlJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFNlbGVjdGVkJywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc2VsZWN0QWxsTGFiZWwnLCAnc2hvd1NlbGVjdEFsbCcsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJpZ2dlcicsICd0cmlnZ2VySWNvbicsICd0cmlnZ2VyTGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW11bHRpLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hpcE92ZXJmbG93JywgJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY291bnRGb3JtYXR0ZXInLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXNwbGF5TW9kZScsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdsYWJlbCcsICdsb2FkaW5nJywgJ2xvYWRpbmdUZXh0JywgJ21hdGNoVHJpZ2dlcldpZHRoJywgJ21heEhlaWdodCcsICdtYXhTZWxlY3RlZCcsICduYW1lJywgJ25vT3B0aW9uc1RleHQnLCAnbm9SZXN1bHRzVGV4dCcsICdvcGVuJywgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncm93SGVpZ2h0JywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaGluZ0xhYmVsJywgJ3NlbGVjdEFsbExhYmVsJywgJ3Nob3dTZWxlY3RBbGwnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyaWdnZXInLCAndHJpZ2dlckljb24nLCAndHJpZ2dlckxhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE11bHRpU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRSZW1vdmUnLCAnbWRDbGVhcicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTXVsdGlTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kTXVsdGlTZWxlY3Qge1xuICAvKipcbiAgICogRW1pdHMgdGhlIGZ1bGwgc2VsZWN0ZWQtdmFsdWUgYXJyYXkgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgbWVudSBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSByZW1vdmVkIHZhbHVlIHdoZW4gYSBjaGlwIGlzIGRpc21pc3NlZC5cbiAgICovXG4gIG1kUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjbGVhciBidXR0b24gZW1wdGllcyB0aGUgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdkZW5zaXR5JywgJ2xhYmVsQmVoYXZpb3InLCAnbWFudWFsQWN0aXZhdGlvbiddLFxuICBtZXRob2RzOiBbJ3NlbGVjdCcsICdmb2N1c1RhYiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi1iYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZUluZGV4JywgJ2RlbnNpdHknLCAnbGFiZWxCZWhhdmlvcicsICdtYW51YWxBY3RpdmF0aW9uJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvbkJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvbkJhciBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uQmFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZGVzdGluYXRpb24gY2hhbmdlcyAodXNlciBjbGljayxcbmtleWJvYXJkIGFjdGl2YXRpb24sIG9yIHByb2dyYW1tYXRpYyBgc2VsZWN0KClgIGNhbGwpLlxuRGV0YWlsIGluY2x1ZGVzIGJvdGggdGhlIG5ldyBhbmQgcHJldmlvdXMgaW5kaWNlcyBzbyBsaXN0ZW5lcnNcbmNhbiBzaG9ydC1jaXJjdWl0IG5vLW9wIHJlc2VsZWN0cy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91c0luZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdhbGlnbm1lbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlRm9jdXNNYW5hZ2VtZW50JywgJ2V4cGFuZGFibGUnLCAnZnVsbEhlaWdodCcsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAnbWF4VmlzaWJsZScsICdtb2RhbCcsICdvcmllbnRhdGlvbicsICdvdmVyZmxvd0ljb24nLCAnb3ZlcmZsb3dMYWJlbCcsICd0b2dnbGVMYWJlbCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnZXhwYW5kJywgJ2NvbGxhcHNlJywgJ3RvZ2dsZScsICdmb2N1c1RhYiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbmF2aWdhdGlvbi1yYWlsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdhbGlnbm1lbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlRm9jdXNNYW5hZ2VtZW50JywgJ2V4cGFuZGFibGUnLCAnZnVsbEhlaWdodCcsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAnbWF4VmlzaWJsZScsICdtb2RhbCcsICdvcmllbnRhdGlvbicsICdvdmVyZmxvd0ljb24nLCAnb3ZlcmZsb3dMYWJlbCcsICd0b2dnbGVMYWJlbCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblJhaWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNoYW5nZScsICdtZEV4cGFuZCcsICdtZENvbGxhcHNlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblJhaWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kTmF2aWdhdGlvblJhaWwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBkZXN0aW5hdGlvbi5cbiAgICovXG4gIG1kVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGNvbGxhcHNlZCDihpIgZXhwYW5kZWQuXG4gICAqL1xuICBtZEV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcmFpbCB0cmFuc2l0aW9ucyBmcm9tIGV4cGFuZGVkIOKGkiBjb2xsYXBzZWQuXG4gICAqL1xuICBtZENvbGxhcHNlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXJTdWJtZW51U2VsZWN0aW9uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1uYXZpZ2F0aW9uLXJhaWwtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblJhaWxUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJywgJ21kU3VibWVudVRvZ2dsZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE5hdmlnYXRpb25SYWlsVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZE5hdmlnYXRpb25SYWlsVGFiIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBkZXN0aW5hdGlvbiAoY2xpY2sgLyBFbnRlciAvIFNwYWNlKS5cbiAgICovXG4gIG1kVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGlzIGRlc3RpbmF0aW9uJ3Mgc2xvdHRlZCBkcm9wZG93biBvcGVucyBvciBjbG9zZXMuIGBtZC1tZW51YCdzXG5vd24gYG1kT3BlbmAgLyBgbWRDbG9zZWAgYXJlIGRlbGliZXJhdGVseSBub24tYnViYmxpbmcgYW5kIG5vbi1jb21wb3NlZCwgc29cbnRoZSByYWlsIGhhcyBubyB3YXkgdG8gaGVhciB0aGVtIOKAlCB0aGlzIGlzIHRoZSBzaWduYWwgaXQgbGlzdGVucyBmb3IgKGl0XG5saWZ0cyBpdHMgc3RhY2tpbmcgY29udGV4dCBzbyB0aGUgZml4ZWQtcG9zaXRpb24gbWVudSBpcyBub3QgdHJhcHBlZCkuXG4gICAqL1xuICBtZFN1Ym1lbnVUb2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ2ZvY3VzRWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZE5hdmlnYXRpb25UYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblRhYiBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uVGFiIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHRhYiBpcyBhY3RpdmF0ZWQgKGNsaWNrLCBFbnRlciwgb3IgU3BhY2UpIGFuZCB0aGUgdGFiIGlzXG5ub3QgZGlzYWJsZWQuIFRoZSBwYXJlbnQgYG1kLW5hdmlnYXRpb24tYmFyYCBsaXN0ZW5zIGZvciB0aGlzIHRvIGRyaXZlXG5zZWxlY3Rpb247IGV4dGVybmFsIGNvZGUgbWF5IGFsc28gbGlzdGVuIHRvIGRldGVjdCBwZXItdGFiIGFjdGl2YXRpb25cbihpbmNsdWRpbmcgYSByZS1jbGljayBvZiB0aGUgYWxyZWFkeS1hY3RpdmUgdGFiLCB3aGljaCBkb2VzIG5vdCBlbWl0XG5gbWRDaGFuZ2VgIG9uIHRoZSBiYXIpLlxuICAgKi9cbiAgbWRUYWJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsbG93T3V0T2ZSYW5nZScsICdhbGxvd1doZWVsU2NydWInLCAnZGVjcmVtZW50TGFiZWwnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9ybWF0T3B0aW9ucycsICdpbmNyZW1lbnRMYWJlbCcsICdsYWJlbCcsICdsYXJnZVN0ZXAnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NtYWxsU3RlcCcsICdzbmFwT25TdGVwJywgJ3N0ZXAnLCAnc3RlcHBlcnMnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ3NlbGVjdCcsICdzdGVwVXAnLCAnc3RlcERvd24nLCAnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbnVtYmVyLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGxvd091dE9mUmFuZ2UnLCAnYWxsb3dXaGVlbFNjcnViJywgJ2RlY3JlbWVudExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2Zvcm1hdE9wdGlvbnMnLCAnaW5jcmVtZW50TGFiZWwnLCAnbGFiZWwnLCAnbGFyZ2VTdGVwJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzbWFsbFN0ZXAnLCAnc25hcE9uU3RlcCcsICdzdGVwJywgJ3N0ZXBwZXJzJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWROdW1iZXJGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWROdW1iZXJGaWVsZENoYW5nZURldGFpbCBhcyBJTWROdW1iZXJGaWVsZE1kTnVtYmVyRmllbGRDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROdW1iZXJGaWVsZCBleHRlbmRzIENvbXBvbmVudHMuTWROdW1iZXJGaWVsZCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSB2YWx1ZSBjaGFuZ2UgKHR5cGluZyBpbmNsdWRlZCkuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTnVtYmVyRmllbGRNZE51bWJlckZpZWxkQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyBhdCBjb21taXQgcG9pbnRzOiBibHVyL0VudGVyIHJlZm9ybWF0LCBzdGVwcGluZywgd2hlZWwuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE51bWJlckZpZWxkTWROdW1iZXJGaWVsZENoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGVtYmVkZGluZyBhIGZpZWxkIHdvdWxkXG5vdGhlcndpc2UgaGVhciB0d28gZXZlbnRzIGZvciBvbmUgbG9naWNhbCBjb250cm9sOyBgYnViYmxlczogdHJ1ZWAgc3RpbGxcbmxldHMgYSBgPGZvcm0+YCBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1vcmdhbml6YXRpb24tY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kT3JnYW5pemF0aW9uQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdGlvbkNoYW5nZScsICdtZE5vZGVUb2dnbGUnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE9yZ0NoYXJ0U2VsZWN0aW9uQ2hhbmdlRGV0YWlsIGFzIElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBPcmdDaGFydFRvZ2dsZURldGFpbCBhcyBJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0VG9nZ2xlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kT3JnYW5pemF0aW9uQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1kT3JnYW5pemF0aW9uQ2hhcnQge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBtZFNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkIG9yIGNvbGxhcHNlZC5cbiAgICovXG4gIG1kTm9kZVRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE9yZ2FuaXphdGlvbkNoYXJ0T3JnQ2hhcnRUb2dnbGVEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYXV0b1N1Ym1pdCcsICdjZWxsTGFiZWxUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdncm91cFNpemUnLCAnaW5jb21wbGV0ZUxhYmVsJywgJ2lucHV0TW9kZScsICdsYWJlbCcsICdsZW5ndGgnLCAnbWFzaycsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJhbnNmb3JtJywgJ3ZhbGlkYXRpb25UeXBlJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnLCAnY2xlYXInLCAnZ2V0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtb3RwLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvU3VibWl0JywgJ2NlbGxMYWJlbFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2dyb3VwU2l6ZScsICdpbmNvbXBsZXRlTGFiZWwnLCAnaW5wdXRNb2RlJywgJ2xhYmVsJywgJ2xlbmd0aCcsICdtYXNrJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFuc2Zvcm0nLCAndmFsaWRhdGlvblR5cGUnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRPdHBGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRDb21wbGV0ZScsICdtZEludmFsaWRJbnB1dCcsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZE90cEZpZWxkQ29tcGxldGVEZXRhaWwgYXMgSU1kT3RwRmllbGRNZE90cEZpZWxkQ29tcGxldGVEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZE90cEZpZWxkSW52YWxpZERldGFpbCBhcyBJTWRPdHBGaWVsZE1kT3RwRmllbGRJbnZhbGlkRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIGFzIElNZE90cEZpZWxkTWRPdHBGaWVsZFZhbGlkaXR5RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kT3RwRmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kT3RwRmllbGQge1xuICAvKipcbiAgICogRmlyZXMgb24gZXZlcnkgdmFsdWUgY2hhbmdlIGZyb20gdXNlciBpbnB1dCAodHlwaW5nLCBjbGVhcmluZywgcGFzdGUsIGF1dG9maWxsKS5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIENvbW1pdCBldmVudDogZmlyZXMgd2hlbiB0aGUgY29kZSBiZWNvbWVzIGNvbXBsZXRlIGFuZCB3aGVuIGZvY3VzIGxlYXZlcyB0aGUgd2hvbGUgZ3JvdXAuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBldmVyeSBjZWxsIGlzIGZpbGxlZC4gQSBjb21wbGV0ZSBwYXN0ZSByZS1maXJlcyBpdCBldmVuIGlmIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBtZENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kT3RwRmllbGRNZE90cEZpZWxkQ29tcGxldGVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdHlwZWQvcGFzdGVkIGNoYXJhY3RlcnMgYXJlIHJlamVjdGVkIGJ5IHRoZSBgdmFsaWRhdGlvblR5cGVgIGNoYXJzZXQuXG4gICAqL1xuICBtZEludmFsaWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE90cEZpZWxkTWRPdHBGaWVsZEludmFsaWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gbW91bnQsIG5ldmVyIGZvciBhXG5yZS1wdWJsaXNoIGxhbmRpbmcgb24gdGhlIHNhbWUgc3RhdGUuIGBjb21wb3NlZDogZmFsc2VgIGJ5IHRoZSBsaWJyYXJ5XG5jb252ZW50aW9uOiBlYWNoIGNvbnRyb2wgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGY7IGBidWJibGVzOiB0cnVlYCBzdGlsbFxucmVhY2hlcyBgPGZvcm0+YC1sZXZlbCBsaXN0ZW5lcnMgaW4gdGhlIHNhbWUgRE9NIHRyZWUuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kT3RwRmllbGRNZE90cEZpZWxkVmFsaWRpdHlEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2Nvcm5lclJhZGl1cycsICdkYXRhJywgJ2RlbnNpdHknLCAnZW5kQW5nbGUnLCAnZ3JhZGllbnQnLCAnaGVpZ2h0UHJvcCcsICdoaWdobGlnaHQnLCAnaW5uZXJSYWRpdXMnLCAnbGFiZWwnLCAnbGFiZWxFbXB0eScsICdsYWJlbE1vZGUnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGVnZW5kJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ2xvY2FsZScsICdtb25vY2hyb21lJywgJ25vQW5pbWF0aW9uJywgJ291dGVyUmFkaXVzJywgJ3BhZGRpbmdBbmdsZScsICdyaW5nV2lkdGhzJywgJ3Nob3dMYWJlbHMnLCAnc3RhcnRBbmdsZScsICdzdWJ0aXRsZScsICdzdW1tYXJ5JywgJ3RhYmxlTGFiZWxzJywgJ3RpdGxlQWxpZ24nLCAndG9vbHRpcCcsICd0b29sdGlwUmVuZGVyZXInLCAndmFsdWVGb3JtYXR0ZXInXSxcbiAgbWV0aG9kczogWydyZXNpemUnLCAncmVwbGF5JywgJ2RyaWxsJywgJ3RvRGF0YVVSTCcsICdnZXRJbnN0YW5jZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcGllLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnY29ybmVyUmFkaXVzJywgJ2RhdGEnLCAnZGVuc2l0eScsICdlbmRBbmdsZScsICdncmFkaWVudCcsICdoZWlnaHRQcm9wJywgJ2hpZ2hsaWdodCcsICdpbm5lclJhZGl1cycsICdsYWJlbCcsICdsYWJlbEVtcHR5JywgJ2xhYmVsTW9kZScsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsZWdlbmQnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21vbm9jaHJvbWUnLCAnbm9BbmltYXRpb24nLCAnb3V0ZXJSYWRpdXMnLCAncGFkZGluZ0FuZ2xlJywgJ3JpbmdXaWR0aHMnLCAnc2hvd0xhYmVscycsICdzdGFydEFuZ2xlJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlciddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFBpZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTbGljZUNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRSZWFkeSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZFBpZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcbmltcG9ydCB0eXBlIHsgTWRQaWVEYXR1bSBhcyBJTWRQaWVDaGFydE1kUGllRGF0dW0gfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRQaWVDaGFydCB7XG5cbiAgbWRTbGljZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kUGllQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kUGllQ2hhcnRNZFBpZURhdHVtPj4+O1xuXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRhdGFJbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG5cbiAgbWRSZWFkeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29tcGxldGUnLCAnZGVuc2l0eScsICdmb3VyQ29sb3InLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFyaWFudCcsICd3YXZlJywgJ3dhdmVBbXBsaXR1ZGUnLCAnd2F2ZUxlbmd0aCcsICd3YXZlU3BlZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXByb2dyZXNzLWluZGljYXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29tcGxldGUnLCAnZGVuc2l0eScsICdmb3VyQ29sb3InLCAnaW5kZXRlcm1pbmF0ZScsICdsYWJlbCcsICdtYXgnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFyaWFudCcsICd3YXZlJywgJ3dhdmVBbXBsaXR1ZGUnLCAnd2F2ZUxlbmd0aCcsICd3YXZlU3BlZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ29tcGxldGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQcm9ncmVzc0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRQcm9ncmVzc0luZGljYXRvciB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBjb21wbGV0aW9uIGFuaW1hdGlvbiBmaW5pc2hlcyAoYW5kIHRoZSBpbmRpY2F0b3IgaGFzIGhpZGRlblxuaXRzZWxmLCBvciDigJQgZm9yIGZsYXQgY2lyY3VsYXIg4oCUIHNldHRsZWQgb24gaXRzIGVtcHR5IHRyYWNrIHJpbmcpLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc3luY1ZhbGlkaXR5RnJvbUdyb3VwJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnc2V0Rm9jdXMnLCAnc2V0Qmx1cicsICdzZWxlY3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXJhZGlvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRSYWRpbyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kRm9jdXMnLCAnbWRCbHVyJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSYWRpbyBleHRlbmRzIENvbXBvbmVudHMuTWRSYWRpbyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjaGVja2VkIHN0YXRlIGNoYW5nZXMgdmlhIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHJhZGlvIHJlY2VpdmVzIGZvY3VzXG4gICAqL1xuICBtZEZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgcmFkaW8gbG9zZXMgZm9jdXNcbiAgICovXG4gIG1kQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZWZhdWx0VmFsdWUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbXB0eUljb24nLCAnZ2V0TGFiZWwnLCAnaG92ZXInLCAnaWNvbicsICdtYXgnLCAnbmFtZScsICdvdXRsaW5lRW1wdHknLCAncHJlY2lzaW9uJywgJ3JhdGluZ0xhYmVsJywgJ3JlYWRvbmx5JywgJ3Nob3dWYWx1ZUxhYmVsJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnZm9jdXNSYXRpbmcnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXJhdGluZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVmYXVsdFZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW1wdHlJY29uJywgJ2dldExhYmVsJywgJ2hvdmVyJywgJ2ljb24nLCAnbWF4JywgJ25hbWUnLCAnb3V0bGluZUVtcHR5JywgJ3ByZWNpc2lvbicsICdyYXRpbmdMYWJlbCcsICdyZWFkb25seScsICdzaG93VmFsdWVMYWJlbCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFJhdGluZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSG92ZXInLCAnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSYXRpbmcgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmF0aW5nIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoaWxlIHRoZSB1c2VyIGlzIGhvdmVyaW5nIChvciBgbnVsbGAgd2hlbiB0aGUgY3Vyc29yIGxlYXZlcykuXG4gICAqL1xuICBtZEhvdmVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyIHwgbnVsbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHZhbHVlIGNoYW5nZXMgdmlhIGludGVyYWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnXSxcbiAgbWV0aG9kczogWyd3aGVuU2V0dGxlZCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1yaXBwbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kUmlwcGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSaXBwbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmlwcGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2Fubm91bmNlUmVzdWx0cycsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdlbGV2YXRpb24nLCAnZXNjYXBlQ2xvc2VzJywgJ2Z1bGxXaWR0aCcsICdpbml0aWFsRm9jdXMnLCAnaW5wdXRBcmlhTGFiZWwnLCAnbGF5b3V0JywgJ2xlYWRpbmdJY29uJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ21heEJsb2NrU2l6ZScsICdub1Jlc3VsdHNMYWJlbCcsICdvcGVuJywgJ29wZW5MZWFkaW5nSWNvbicsICdwbGFjZWhvbGRlcicsICdyZXN1bHRzTGFiZWwnLCAnc2Nyb2xsU2hhZG93JywgJ3Nob3dDbGVhckJ1dHRvbicsICd0aHJvdHRsZScsICd0cmlnZ2VyJywgJ3RyaWdnZXJFbGVtZW50JywgJ3RyaWdnZXJGb3InLCAndHJpZ2dlckljb24nLCAndmFsdWUnLCAndmFyaWFudCcsICd2b2ljZVNlYXJjaCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAndG9nZ2xlJywgJ2ZvY3VzSW5wdXQnLCAnc3RhcnRWb2ljZScsICdzdG9wVm9pY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlYXJjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5ub3VuY2VSZXN1bHRzJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2VsZXZhdGlvbicsICdlc2NhcGVDbG9zZXMnLCAnZnVsbFdpZHRoJywgJ2luaXRpYWxGb2N1cycsICdpbnB1dEFyaWFMYWJlbCcsICdsYXlvdXQnLCAnbGVhZGluZ0ljb24nLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbWF4QmxvY2tTaXplJywgJ25vUmVzdWx0c0xhYmVsJywgJ29wZW4nLCAnb3BlbkxlYWRpbmdJY29uJywgJ3BsYWNlaG9sZGVyJywgJ3Jlc3VsdHNMYWJlbCcsICdzY3JvbGxTaGFkb3cnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Rocm90dGxlJywgJ3RyaWdnZXInLCAndHJpZ2dlckVsZW1lbnQnLCAndHJpZ2dlckZvcicsICd0cmlnZ2VySWNvbicsICd2YWx1ZScsICd2YXJpYW50JywgJ3ZvaWNlU2VhcmNoJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VhcmNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZFNlYXJjaCcsICdtZFN1Ym1pdCcsICdtZENoYW5nZScsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENsZWFyJywgJ21kVm9pY2UnLCAnbWRMZWFkaW5nSWNvbkNsaWNrJywgJ21kVHJhaWxpbmdJY29uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbCBhcyBJTWRTZWFyY2hNZFNlYXJjaExlYWRpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNlYXJjaFRyYWlsaW5nSWNvbkNsaWNrRGV0YWlsIGFzIElNZFNlYXJjaE1kU2VhcmNoVHJhaWxpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWFyY2ggZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VhcmNoIHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIGV2ZXJ5IGlucHV0IGNoYW5nZSAoaW1tZWRpYXRlLCBldmVyeSBrZXlzdHJva2UpLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBEZWJvdW5jZWQsIGRlLWR1cGxpY2F0ZWQgcXVlcnkgZXZlbnQg4oCUIHRoZSBvbmUgdG8gd2lyZSBhbiBhc3luYyByZXN1bHRzXG5mZXRjaCB0by4gSG9ub3VycyBgZGVib3VuY2VgIC8gYHRocm90dGxlYCBhbmQgYXBwbGllcyBhXG5kaXN0aW5jdC11bnRpbC1jaGFuZ2VkIGd1YXJkIG9uIHRoZSB0cmltbWVkIHF1ZXJ5IChzbyByZS10eXBpbmcgdGhlIHNhbWVcbnRlcm0sIG9yIG9ubHkgYWRkaW5nIHN1cnJvdW5kaW5nIHdoaXRlc3BhY2UsIHdvbid0IHJlLXRyaWdnZXIgYSBmZXRjaCkuXG5QcmVzc2luZyBFbnRlciBvciBjbGVhcmluZyB0aGUgZmllbGQgZmx1c2hlcyBpdCBpbW1lZGlhdGVseS5cbiAgICovXG4gIG1kU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBFbnRlciB0byBzdWJtaXQgYSBxdWVyeS5cbiAgICovXG4gIG1kU3VibWl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzIHdpdGggYSBkaWZmZXJlbnQgdmFsdWUgdGhhbiBvbiBmb2N1cy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBhbmVsIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGFuZWwgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciAow5cpIGJ1dHRvbi5cbiAgICovXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGlsZSB2b2ljZSBzZWFyY2ggaXMgYWN0aXZlIGFzIHRoZSB0cmFuc2NyaXB0IHN0cmVhbXMgaW4uIGB2YWx1ZWBcbmlzIHRoZSBjdXJyZW50IChpbnRlcmltIG9yIGZpbmFsKSB0cmFuc2NyaXB0OyBgZmluYWxgIGlzIGB0cnVlYCBvbiB0aGVcbnJlY29nbmlzZWQgZmluYWwgcmVzdWx0LiBUaGUgY29tcG9uZW50IGFscmVhZHkgbWlycm9ycyB0aGUgdHJhbnNjcmlwdCBpbnRvXG50aGUgaW5wdXQgYW5kIGZpcmVzIGBtZElucHV0YCAvIGBtZFNlYXJjaGAsIHNvIGxpc3RlbiB0byB0aGlzIG9ubHkgaWYgeW91XG5uZWVkIHZvaWNlLXNwZWNpZmljIFVJIChlLmcuIGEgdHJhbnNjcmlwdCBwcmV2aWV3KS5cbiAgICovXG4gIG1kVm9pY2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IGZpbmFsOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGludGVyYWN0aXZlIGxlYWRpbmcgYWZmb3JkYW5jZSBpcyBjbGlja2VkIOKAlCB0aGUgbW9ycGhpbmdcbmJhY2sgLyBkaXNtaXNzIGJ1dHRvbiB3aGlsZSB0aGUgYmFyIGlzIG9wZW4sIG9yIGEgY3VzdG9tIHNsb3R0ZWQgYGxlYWRpbmdgXG5pY29uLiBUaGUgZGVmYXVsdCBiYWNrIGJ1dHRvbiBzdGlsbCBkaXNtaXNzZXMgdGhlIHBhbmVsIGFzIGJlZm9yZTsgdGhpc1xuZXZlbnQgaXMgYWRkaXRpdmUuIFRoZSBjbG9zZWQgcmVzdGluZyBzZWFyY2ggZ2x5cGggaXMgaW50ZW50aW9uYWxseSBOT1QgYVxuY2xpY2sgdGFyZ2V0IChhIGNsaWNrIHRoZXJlIGZvY3VzZXMgdGhlIGlucHV0KSwgc28gaXQgZG9lcyBub3QgZW1pdC5cbiAgICovXG4gIG1kTGVhZGluZ0ljb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNlYXJjaE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsb3R0ZWQgYHRyYWlsaW5nYCBhZmZvcmRhbmNlIGlzIGNsaWNrZWQuIFRoZSBidWlsdC1pbiBjbGVhclxuKMOXKSBhbmQgdm9pY2UgKG1pYykgYnV0dG9ucyBvd24gdGhlaXIgZGVkaWNhdGVkIGBtZENsZWFyYCAvIGBtZFZvaWNlYFxuZXZlbnRzIGFuZCBkbyBOT1QgdHJpZ2dlciB0aGlzLiBPbmx5IGVtaXR0ZWQgd2hlbiBzbG90dGVkIHRyYWlsaW5nIGNvbnRlbnRcbmlzIGFjdHVhbGx5IHByZXNlbnQgYW5kIHdhcyB0aGUgY2xpY2sgdGFyZ2V0LlxuICAgKi9cbiAgbWRUcmFpbGluZ0ljb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNlYXJjaE1kU2VhcmNoVHJhaWxpbmdJY29uQ2xpY2tEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2xhYmVsJywgJ25vQ2hlY2ttYXJrJywgJ3JpcHBsZScsICdzZWdtZW50RGVuc2l0eScsICdzZWdtZW50SW5kZXgnLCAnc2VnbWVudE11bHRpc2VsZWN0JywgJ3NlZ21lbnRUb3RhbCcsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlZ21lbnRlZC1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdub0NoZWNrbWFyaycsICdyaXBwbGUnLCAnc2VnbWVudERlbnNpdHknLCAnc2VnbWVudEluZGV4JywgJ3NlZ21lbnRNdWx0aXNlbGVjdCcsICdzZWdtZW50VG90YWwnLCAnc2VsZWN0ZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VnbWVudGVkQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWdtZW50Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWdtZW50ZWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VnbWVudGVkQnV0dG9uIHtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IOKAlCBjYXVnaHQgYnkgdGhlIHNldFxuICAgKi9cbiAgbWRTZWdtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdtdWx0aXNlbGVjdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VnbWVudGVkLWJ1dHRvbi1zZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbXVsdGlzZWxlY3QnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlZ21lbnRlZEJ1dHRvblNldCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWdtZW50ZWRCdXR0b25TZXQge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgc2V0IG9mIHNlbGVjdGVkIHNlZ21lbnQgdmFsdWVzIGNoYW5nZXNcbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZScsICdmb2N1c1RyaWdnZXInLCAncmVzZXQnLCAnbG9hZE9wdGlvbnMnLCAnc2V0UXVlcnknLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlbGVjdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnZnVsbFdpZHRoJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnbG9hZGluZ1RleHQnLCAnbWF0Y2hUcmlnZ2VyV2lkdGgnLCAnbWF4SGVpZ2h0JywgJ25hbWUnLCAnbm9PcHRpb25zVGV4dCcsICdub1Jlc3VsdHNUZXh0JywgJ29wZW4nLCAnb3B0aW9ucycsICdwbGFjZWhvbGRlcicsICdwbGFjZW1lbnQnLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyb3dIZWlnaHQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoaW5nTGFiZWwnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNlbGVjdCBleHRlbmRzIENvbXBvbmVudHMuTWRTZWxlY3Qge1xuICAvKipcbiAgICogRW1pdHMgdGhlIG5ld2x5IHNlbGVjdGVkIHZhbHVlIHdoZW5ldmVyIHRoZSBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkcm9wZG93biBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRyb3Bkb3duIGNsb3Nlcy5cbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQ29sb3InLCAnbGFiZWwnLCAnc2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlbGVjdC1vcHRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VsZWN0T3B0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3RPcHRpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWxlY3RPcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VsZWN0T3B0aW9uIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIG9wdGlvbiBtb3VudHMsIHVubW91bnRzLCBvciBpdHMgZGF0YSBjaGFuZ2VzIHNvIHRoZVxucGFyZW50IHBpY2tlciBjYW4gcmUtcmVhZCBpdHMgb3B0aW9uIHNldC5cbiAgICovXG4gIG1kU2VsZWN0T3B0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2RldGFjaGVkJywgJ2hlYWRsaW5lJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzaGVldEFyaWFMYWJlbCcsICdzaG93QmFjaycsICdzaWRlJywgJ3RvcERpdmlkZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNpZGUtc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGV0YWNoZWQnLCAnaGVhZGxpbmUnLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3NoZWV0QXJpYUxhYmVsJywgJ3Nob3dCYWNrJywgJ3NpZGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU2lkZVNoZWV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnLCAnbWRCYWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2lkZVNoZWV0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFNpZGVTaGVldCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBvcGVuc1xuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2hlZXQgY2xvc2VzXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBkaXNtaXNzZWQgdmlhIHNjcmltIGNsaWNrIG9yIEVzY2FwZVxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBiYWNrIGJ1dHRvbiBpcyBwcmVzc2VkIChtb2RhbCBvbmx5KVxuICAgKi9cbiAgbWRCYWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5ub3VuY2UnLCAnYXJpYUxhYmVsUHJvcCcsICdkZW5zaXR5JywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2hlaWdodCcsICdsaW5lcycsICd2YXJpYW50JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1za2VsZXRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2Fubm91bmNlJywgJ2FyaWFMYWJlbFByb3AnLCAnZGVuc2l0eScsICdmdWxsSGVpZ2h0JywgJ2Z1bGxXaWR0aCcsICdoZWlnaHQnLCAnbGluZXMnLCAndmFyaWFudCcsICd3aWR0aCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTa2VsZXRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNsaWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRGb2N1cycsICdtZEJsdXInLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclZhbHVlRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclRodW1iRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlckRyYWdEZXRhaWwgYXMgSU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2xpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNsaWRlciB7XG4gIC8qKlxuICAgKiBGaXJlcyBjb250aW51b3VzbHkgd2hpbGUgdGhlIHVzZXIgZHJhZ3Mgb3IgcHJlc3NlcyBhcnJvdyBrZXlzLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIG9uY2Ugd2hlbiB0aGUgdXNlciBjb21taXRzIGEgdmFsdWUgKHBvaW50ZXIgdXAsIGtleWJvYXJkIHJlbGVhc2UsIGNoYW5nZSBldmVudCkuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVmFsdWVEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzbGlkZXIgdGh1bWIgcmVjZWl2ZXMgZm9jdXMuXG4gICAqL1xuICBtZEZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJUaHVtYkRldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsaWRlciB0aHVtYiBsb3NlcyBmb2N1cy5cbiAgICovXG4gIG1kQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBkcmFnL2tleWJvYXJkIGludGVyYWN0aW9uIGJlZ2lucy5cbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgZHJhZy9rZXlib2FyZCBpbnRlcmFjdGlvbiBlbmRzLlxuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJEcmFnRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGlvbicsICdhdXRvSGlkZScsICdhdXRvSGlkZUR1cmF0aW9uJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2Rpc21pc3NMYWJlbCcsICdtZXNzYWdlJywgJ29wZW4nLCAncG9saXRlbmVzcycsICdwb3NpdGlvbicsICdzdGFja2VkJ10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zbmFja2JhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2F1dG9IaWRlJywgJ2F1dG9IaWRlRHVyYXRpb24nLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGlzbWlzc0xhYmVsJywgJ21lc3NhZ2UnLCAnb3BlbicsICdwb2xpdGVuZXNzJywgJ3Bvc2l0aW9uJywgJ3N0YWNrZWQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTbmFja2JhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQWN0aW9uJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU25hY2tiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU25hY2tiYXIge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc25hY2tiYXIgYmVjb21lcyB2aXNpYmxlXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzbmFja2JhciBpcyBkaXNtaXNzZWQsIHdpdGggcmVhc29uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246ICdhdXRvJyB8ICdhY3Rpb24nIHwgJ2Nsb3NlJyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIG1kQWN0aW9uOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Jlc2l6ZScsICdnZXRJbnN0YW5jZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3BhcmtsaW5lJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNwYXJrbGluZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU3BhcmtDbGljaycsICdtZFJlYWR5J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BhcmtsaW5lIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwYXJrbGluZSB7XG5cbiAgbWRTcGFya0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkYXRhSW5kZXg6IG51bWJlcjsgdmFsdWU6IG51bWJlciB8IG51bGwgfT4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2NvbnRyb2xzJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ2hhc3BvcHVwJywgJ2ljb24nLCAnbGFiZWwnLCAnbWVudUxhYmVsJywgJ3JpcHBsZScsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0cmFpbGluZ0NoZWNrZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNwbGl0LWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaGFzcG9wdXAnLCAnaWNvbicsICdsYWJlbCcsICdtZW51TGFiZWwnLCAncmlwcGxlJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RyYWlsaW5nQ2hlY2tlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFNwbGl0QnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRMZWFkaW5nQ2xpY2snLCAnbWRUcmFpbGluZ0NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BsaXRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU3BsaXRCdXR0b24ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgbGVhZGluZyBidXR0b24gaXMgYWN0aXZhdGVkXG4gICAqL1xuICBtZExlYWRpbmdDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHRyYWlsaW5nIGJ1dHRvbiBpcyB0b2dnbGVkXG4gICAqL1xuICBtZFRyYWlsaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2xhYmVsJywgJ2xpdmUnLCAnc2l6ZScsICdzdGF0ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RhdHVzLWRvdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCcsICdsaXZlJywgJ3NpemUnLCAnc3RhdGUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGF0dXNEb3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN0YXR1c0RvdCBleHRlbmRzIENvbXBvbmVudHMuTWRTdGF0dXNEb3Qge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWNjZXNzaWJsZU5hbWUnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWRJY29uJywgJ2RlbnNpdHknLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZWRpdGFibGUnLCAnZXJyb3InLCAnZXJyb3JJY29uJywgJ2Vycm9yVGV4dCcsICdoaWRlQWN0aW9ucycsICdpY29uJywgJ2xhYmVsJywgJ29wdGlvbmFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY2Nlc3NpYmxlTmFtZScsICdhY3RpdmUnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZEljb24nLCAnZGVuc2l0eScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlZGl0YWJsZScsICdlcnJvcicsICdlcnJvckljb24nLCAnZXJyb3JUZXh0JywgJ2hpZGVBY3Rpb25zJywgJ2ljb24nLCAnbGFiZWwnLCAnb3B0aW9uYWwnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGVwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTdGVwQ2xpY2snLCAnbWRTdGVwTmV4dCcsICdtZFN0ZXBCYWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RlcCBleHRlbmRzIENvbXBvbmVudHMuTWRTdGVwIHtcbiAgLyoqXG4gICAqIEJ1YmJsZWQgdG8gdGhlIHBhcmVudCBzdGVwcGVyLCB3aGljaCBkZWNpZGVzIHdoZXRoZXIgdGhlIG1vdmUgaXMgYWxsb3dlZC5cbkludGVybmFsIGNvb3JkaW5hdGlvbiBldmVudCDigJQgY29uc3VtZWQgKGFuZCBzdG9wcGVkKSBieSBgbWQtc3RlcHBlcmAuXG4gICAqL1xuICBtZFN0ZXBDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBDb250aW51ZSBwcmVzc2VkIGluIHRoaXMgc3RlcCdzIGNvbnRlbnQgcGFuZWwuIENvbnN1bWVkIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcE5leHQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xuICAvKipcbiAgICogQmFjayBwcmVzc2VkIGluIHRoaXMgc3RlcCdzIGNvbnRlbnQgcGFuZWwuIENvbnN1bWVkIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcEJhY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYXV0b0NvbXBsZXRlJywgJ2JhY2tMYWJlbCcsICdjb21wbGV0ZWRXb3JkJywgJ2N1cnJlbnRXb3JkJywgJ2RlbnNpdHknLCAnZXJyb3JXb3JkJywgJ2ZpbmlzaExhYmVsJywgJ2luZGljYXRvcicsICdsYWJlbCcsICdsYXp5JywgJ2xvYWRpbmcnLCAnbW9kZScsICduYXYnLCAnbmV4dERpc2FibGVkJywgJ25leHRMYWJlbCcsICdvZldvcmQnLCAnb3B0aW9uYWxXb3JkJywgJ29yaWVudGF0aW9uJywgJ3N0ZXBXb3JkJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWyduZXh0JywgJ3ByZXYnLCAnZ29UbycsICdyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2F1dG9Db21wbGV0ZScsICdiYWNrTGFiZWwnLCAnY29tcGxldGVkV29yZCcsICdjdXJyZW50V29yZCcsICdkZW5zaXR5JywgJ2Vycm9yV29yZCcsICdmaW5pc2hMYWJlbCcsICdpbmRpY2F0b3InLCAnbGFiZWwnLCAnbGF6eScsICdsb2FkaW5nJywgJ21vZGUnLCAnbmF2JywgJ25leHREaXNhYmxlZCcsICduZXh0TGFiZWwnLCAnb2ZXb3JkJywgJ29wdGlvbmFsV29yZCcsICdvcmllbnRhdGlvbicsICdzdGVwV29yZCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU3RlcHBlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQmVmb3JlQ2hhbmdlJywgJ21kU3RlcENoYW5nZScsICdtZENvbXBsZXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RlcHBlciBleHRlbmRzIENvbXBvbmVudHMuTWRTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIEJFRk9SRSBhIHVzZXItZHJpdmVuIHN0ZXAgY2hhbmdlIGNvbW1pdHMgKHN0ZXAgY2xpY2ssIGJ1aWx0LWluIG5hdiwgb3JcbmBuZXh0KClgL2BwcmV2KClgL2Bnb1RvKClgKS4gQ2FuY2VsYWJsZTogY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgdG9cbnZldG8gdGhlIHRyYW5zaXRpb24gKGUuZy4gYmxvY2sgQ29udGludWUgdW50aWwgdGhlIGN1cnJlbnQgc3RlcCB2YWxpZGF0ZXMpLlxuYGRldGFpbC5pbmRleGAgaXMgdGhlIHJlcXVlc3RlZCBzdGVwLCBgZGV0YWlsLnByZXZpb3VzYCB0aGUgY3VycmVudCBvbmUuXG5Eb2VzIG5vdCBmaXJlIGZvciBhIGRpcmVjdCBgYWN0aXZlYCBwcm9wZXJ0eSBhc3NpZ25tZW50IOKAlCBzZXQgYGFjdGl2ZWBcbnlvdXJzZWxmIHRvIGNvbW1pdCBhdXRob3JpdGF0aXZlbHkgKGUuZy4gYWZ0ZXIgYXN5bmMgdmFsaWRhdGlvbikuXG4gICAqL1xuICBtZEJlZm9yZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgcHJldmlvdXM6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBBY3RpdmUgc3RlcCBjaGFuZ2VkIChhZnRlciBpdCBjb21taXRzKS5cbiAgICovXG4gIG1kU3RlcENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgcHJldmlvdXM6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBDb250aW51ZSBwcmVzc2VkIG9uIHRoZSBsYXN0IHN0ZXAgKHRoZSBmbG93IGlzIGZpbmlzaGVkKS5cbiAgICovXG4gIG1kQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgbWV0aG9kczogWydjb2xsYXBzZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3ViLW1lbnUtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFkZ2UnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdzdXBwb3J0aW5nVGV4dCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFN1Yk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN1Yk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN1Yk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gcm93IGl0c2VsZiBpcyBjbGlja2VkIChub3QgdGhlIHN1Ym1lbnUpLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29ucycsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaG93T25seVNlbGVjdGVkSWNvbicsICdzb2Z0RGlzYWJsZWQnLCAndW5zZWxlY3RlZEljb24nLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbnMnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hvd09ubHlTZWxlY3RlZEljb24nLCAnc29mdERpc2FibGVkJywgJ3Vuc2VsZWN0ZWRJY29uJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kU3dpdGNoIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3dpdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN3aXRjaCB7XG4gIC8qKlxuICAgKiBGaXJlcyAqKmJlZm9yZSoqIHRoZSBzdGF0ZSBjaGFuZ2VzLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCB0b1xuYmxvY2sgdGhlIGludGVybmFsIHRvZ2dsZSBhbmQgbWFuYWdlIHN0YXRlIGV4dGVybmFsbHkgKGNvbnRyb2xsZWQgbW9kZSkuXG5cbmBgYHRzXG5zd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignbWRJbnB1dCcsIChlKSA9PiB7XG4gIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgLy8gcHJldmVudCBpbnRlcm5hbCB0b2dnbGVcbiAgbXlTdGF0ZS52YWx1ZSA9IGUuZGV0YWlsLnNlbGVjdGVkOyAvLyB1cGRhdGUgeW91ciBvd24gc3RhdGVcbn0pO1xuYGBgXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAqKmFmdGVyKiogdGhlIGludGVybmFsIHN0YXRlIGhhcyBjb21taXR0ZWQuIFVzZSBmb3Igc2lkZSBlZmZlY3RzXG5saWtlIHNhdmluZyBwcmVmZXJlbmNlcywgYW5hbHl0aWNzLCBvciBzeW5jaW5nIHdpdGggb3RoZXIgY29tcG9uZW50cy5cbk5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgdG9nZ2xlIGhhcyBhbHJlYWR5IGhhcHBlbmVkLlxuXG5gYGB0c1xuc3dpdGNoLmFkZEV2ZW50TGlzdGVuZXIoJ21kQ2hhbmdlJywgKGUpID0+IHtcbiAgY29uc29sZS5sb2coJ1N3aXRjaCBpcyBub3cnLCBlLmRldGFpbC5zZWxlY3RlZCA/ICdPTicgOiAnT0ZGJyk7XG59KTtcbmBgYFxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2lubGluZUljb24nLCAnbGFiZWwnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2lubGluZUljb24nLCAnbGFiZWwnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kVGFiQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFiIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRhYiBpcyBhY3RpdmF0ZWQgYnkgY2xpY2sgb3Iga2V5Ym9hcmRcbiAgICovXG4gIG1kVGFiQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFiUGFuZWwge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnZm9yJywgJ3NpemluZyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVscycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZm9yJywgJ3NpemluZyddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYlBhbmVscyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiUGFuZWxzIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYlBhbmVscyB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBtZXRob2RzOiBbJ2dldFNlbGVjdGlvbicsICdzZWxlY3RBbGwnLCAnZGVzZWxlY3RBbGwnLCAndG9nZ2xlU2VsZWN0QWxsJywgJ3NldFNvcnQnLCAncGluQ29sdW1uJywgJ3NldENvbHVtblZpc2liaWxpdHknLCAnYW5pbWF0ZU5leHRDaGFuZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTb3J0Q2hhbmdlJywgJ21kU2VsZWN0aW9uQ2hhbmdlJywgJ21kUGluQ2hhbmdlJywgJ21kQ29sdW1uVmlzaWJpbGl0eUNoYW5nZScsICdtZFNjcm9sbCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRUYWJsZVNvcnRTdGF0ZSBhcyBJTWRUYWJsZU1kVGFibGVTb3J0U3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU2VsZWN0aW9uU3RhdGUgYXMgSU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZSBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZSB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gc29ydCBjaGFuZ2VzIChhZnRlciBhIGBtZC10YWJsZS1zb3J0LWxhYmVsYCBpcyBjbGlja2VkKS5cbiAgICovXG4gIG1kU29ydENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRhYmxlTWRUYWJsZVNvcnRTdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgcm93IHNlbGVjdGlvbiBzdGF0ZSBjaGFuZ2VzLlxuICAgKi9cbiAgbWRTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUYWJsZU1kVGFibGVTZWxlY3Rpb25TdGF0ZT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGNvbHVtbiBpcyBwaW5uZWQvdW5waW5uZWQgdmlhIGBwaW5Db2x1bW5gLlxuICAgKi9cbiAgbWRQaW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNvbHVtbjogbnVtYmVyOyBzaWRlOiAnc3RhcnQnIHwgJ2VuZCcgfCBudWxsIH0+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBjb2x1bW4gaXMgaGlkZGVuL3Nob3duIHZpYSBgc2V0Q29sdW1uVmlzaWJpbGl0eWAuXG4gICAqL1xuICBtZENvbHVtblZpc2liaWxpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNvbHVtbjogbnVtYmVyOyB2aXNpYmxlOiBib29sZWFuOyBoaWRkZW46IG51bWJlcltdIH0+PjtcbiAgLyoqXG4gICAqIHJBRi10aHJvdHRsZWQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBmcm96ZW4gYm9keSBzY3JvbGxlci5cbiAgICovXG4gIG1kU2Nyb2xsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzY3JvbGxMZWZ0OiBudW1iZXI7IHNjcm9sbFRvcDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUJvZHkge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQm9keSBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUJvZHkge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnYWxpZ24nLCAnY29sU3BhbicsICdkZW5zaXR5JywgJ2VsbGlwc2lzJywgJ2hlYWQnLCAnbm9QaW5JbmRpY2F0b3InLCAnbnVtZXJpYycsICdwYWRkaW5nJywgJ3Bpbkljb24nLCAncm93U3BhbicsICdzY29wZScsICdzdGlja3knLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxpZ24nLCAnY29sU3BhbicsICdkZW5zaXR5JywgJ2VsbGlwc2lzJywgJ2hlYWQnLCAnbm9QaW5JbmRpY2F0b3InLCAnbnVtZXJpYycsICdwYWRkaW5nJywgJ3Bpbkljb24nLCAncm93U3BhbicsICdzY29wZScsICdzdGlja3knLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlQ2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVDZWxsIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQ2VsbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydlbGV2YXRpb24nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdzaGFwZScsICd2YXJpYW50JywgJ3ZpYnJhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZWxldmF0aW9uJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnc2hhcGUnLCAndmFyaWFudCcsICd2aWJyYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVDb250YWluZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQ29udGFpbmVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQ29udGFpbmVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2J1dHRvbkxhYmVsJywgJ2ljb24nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWV4cGFuZC10b2dnbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbkxhYmVsJywgJ2ljb24nXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUV4cGFuZFRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVFeHBhbmRUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVFeHBhbmRUb2dnbGUge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWZvb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUZvb3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlRm9vdCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUZvb3Qge31cblxuXG5AUHJveHlDbXAoe1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUhlYWQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlSGVhZCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUhlYWQge31cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY29tcGFjdCcsICdjb3VudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2xhYmVsQWxsJywgJ2xhYmVsRGlzcGxheWVkUm93cycsICdsYWJlbEZpcnN0UGFnZScsICdsYWJlbExhc3RQYWdlJywgJ2xhYmVsTmV4dFBhZ2UnLCAnbGFiZWxQcmV2aW91c1BhZ2UnLCAnbGFiZWxSb3dzUGVyUGFnZScsICdwYWdlJywgJ3Jvd3NQZXJQYWdlJywgJ3Jvd3NQZXJQYWdlT3B0aW9ucycsICdzaG93Rmlyc3RMYXN0J10sXG4gIG1ldGhvZHM6IFsnZ29Ub1BhZ2UnLCAnc2V0Um93c1BlclBhZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXBhZ2luYXRpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbXBhY3QnLCAnY291bnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdsYWJlbEFsbCcsICdsYWJlbERpc3BsYXllZFJvd3MnLCAnbGFiZWxGaXJzdFBhZ2UnLCAnbGFiZWxMYXN0UGFnZScsICdsYWJlbE5leHRQYWdlJywgJ2xhYmVsUHJldmlvdXNQYWdlJywgJ2xhYmVsUm93c1BlclBhZ2UnLCAncGFnZScsICdyb3dzUGVyUGFnZScsICdyb3dzUGVyUGFnZU9wdGlvbnMnLCAnc2hvd0ZpcnN0TGFzdCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kUGFnZUNoYW5nZScsICdtZFJvd3NQZXJQYWdlQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlUGFnaW5hdGlvbiB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHBhZ2UuXG4gICAqL1xuICBtZFBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHBhZ2U6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgcm93cy1wZXItcGFnZS5cbiAgICovXG4gIG1kUm93c1BlclBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHJvd3NQZXJQYWdlOiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRSb3dDbGljaycsICdtZFJvd1NlbGVjdGlvbkNoYW5nZScsICdtZFJvd0V4cGFuZGVkQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVSb3cgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVSb3cge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgKG9yIEVudGVyL1NwYWNlLWFjdGl2YXRlcykgdGhlIHJvdy5cbiAgICovXG4gIG1kUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHJvdzogSFRNTEVsZW1lbnQgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBjaGFuZ2VzICh1c2VkIGJ5IGA8bWQtdGFibGU+YCBmb3JcbnNlbGVjdGlvbiBjb29yZGluYXRpb24pLlxuICAgKi9cbiAgbWRSb3dTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHJvdydzIGV4cGFuZGVkIHN0YXRlIGNoYW5nZXMuXG4gICAqL1xuICBtZFJvd0V4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBleHBhbmRlZDogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2x1bW4nLCAnZGVmYXVsdE9yZGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uUG9zaXRpb24nLCAnb3JkZXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXNvcnQtbGFiZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdjb2x1bW4nLCAnZGVmYXVsdE9yZGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uUG9zaXRpb24nLCAnb3JkZXInXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZVNvcnRMYWJlbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU29ydFJlcXVlc3QnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZVNvcnRMYWJlbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVNvcnRMYWJlbCB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHRvIHNvcnQgYnkgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBtZFNvcnRSZXF1ZXN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IHN0cmluZzsgZGVmYXVsdE9yZGVyOiAnYXNjJyB8ICdkZXNjJyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9CaW5kJywgJ2NvbXBhY3QnLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdsYWJlbFNlbGVjdGVkJywgJ251bVNlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS10b29sYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvQmluZCcsICdjb21wYWN0JywgJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGFiZWxTZWxlY3RlZCcsICdudW1TZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVUb29sYmFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlVG9vbGJhciB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdhcmlhTGFiZWxQcm9wJywgJ3RhYldpZHRoJywgJ3ZhcmlhbnQnLCAnd2lkdGgnXSxcbiAgbWV0aG9kczogWydzZWxlY3RUYWInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYnMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZVRhYkluZGV4JywgJ2FyaWFMYWJlbFByb3AnLCAndGFiV2lkdGgnLCAndmFyaWFudCcsICd3aWR0aCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYnMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYnMgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFicyB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXNcbiAgICovXG4gIG1kVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91c0luZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhcHBlYXJGb2N1c2VkJywgJ2F1dG9DYXBpdGFsaXplJywgJ2F1dG9jb21wbGV0ZScsICdjaGlwc1dyYXAnLCAnY2xlYXJhYmxlJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJLZXlIaW50JywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmb2N1c0JvcmRlcldpZHRoJywgJ2Zvcm1hdE9uJywgJ2Zvcm1hdHRlcicsICdpbnB1dEFyaWFBdXRvY29tcGxldGUnLCAnaW5wdXRFeHBhbmRlZCcsICdpbnB1dE1vZGUnLCAnaW5wdXRSb2xlJywgJ2xhYmVsJywgJ21heCcsICdtYXhMZW5ndGgnLCAnbWluJywgJ21pbkxlbmd0aCcsICdtdWx0aWxpbmUnLCAnbmFtZScsICdwYXJzZXInLCAncGFzc3dvcmRUb2dnbGUnLCAncGF0dGVybicsICdwbGFjZWhvbGRlcicsICdwcmVmaXhUZXh0JywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncmVzdHJpY3QnLCAncm93cycsICdzcGVlY2hMYW5nJywgJ3NwZWVjaFRvVGV4dCcsICdzcGVsbGNoZWNrJywgJ3N0ZXAnLCAnc3VmZml4VGV4dCcsICdzdXBwb3J0aW5nVGV4dCcsICd0aHJvdHRsZScsICd0eXBlJywgJ3ZhbHVlJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdzZWxlY3QnLCAnZ2V0SW5wdXRFbGVtZW50JywgJ2dldFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRleHQtZmllbGQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhckZvY3VzZWQnLCAnYXV0b0NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzV3JhcCcsICdjbGVhcmFibGUnLCAnZGVib3VuY2UnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlcktleUhpbnQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZvY3VzQm9yZGVyV2lkdGgnLCAnZm9ybWF0T24nLCAnZm9ybWF0dGVyJywgJ2lucHV0QXJpYUF1dG9jb21wbGV0ZScsICdpbnB1dEV4cGFuZGVkJywgJ2lucHV0TW9kZScsICdpbnB1dFJvbGUnLCAnbGFiZWwnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3BhcnNlcicsICdwYXNzd29yZFRvZ2dsZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeFRleHQnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyZXN0cmljdCcsICdyb3dzJywgJ3NwZWVjaExhbmcnLCAnc3BlZWNoVG9UZXh0JywgJ3NwZWxsY2hlY2snLCAnc3RlcCcsICdzdWZmaXhUZXh0JywgJ3N1cHBvcnRpbmdUZXh0JywgJ3Rocm90dGxlJywgJ3R5cGUnLCAndmFsdWUnLCAndmFyaWFudCddLFxufSlcbmV4cG9ydCBjbGFzcyBNZFRleHRGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRTZWFyY2gnLCAnbWRDbGVhcicsICdtZFBhc3N3b3JkVG9nZ2xlJywgJ21kU3BlZWNoUmVzdWx0JywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUZXh0RmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGV4dEZpZWxkIHtcblxuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2l0aCBkZWJvdW5jZS90aHJvdHRsZSBjb250cm9sLiBVc2VmdWwgZm9yIHNlYXJjaC1hcy15b3UtdHlwZSwgQVBJIGNhbGxzLCBvciBmaWx0ZXJpbmcuXG4gICAqL1xuICBtZFNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbiAgbWRQYXNzd29yZFRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmlzaWJsZTogYm9vbGVhbiB9Pj47XG5cbiAgbWRTcGVlY2hSZXN1bHQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHRyYW5zY3JpcHQ6IHN0cmluZzsgbGlzdGVuaW5nOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGlucHV0czogWydhbUxhYmVsJywgJ2NhbmNlbExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZm9ybWF0JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lRGlhbExhYmVsJywgJ2hlYWRsaW5lSW5wdXRMYWJlbCcsICdoaWRlVHJpZ2dlcicsICdob3VyTGFiZWwnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdtaW51dGVMYWJlbCcsICdtaW51dGVTdGVwJywgJ25hbWUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29yaWVudGF0aW9uJywgJ3BlcmlvZExhYmVsJywgJ3BlcmlvZExheW91dCcsICdwbUxhYmVsJywgJ3JhbmdlT3V0c2lkZUxhYmVsJywgJ3JhbmdlT3ZlcmZsb3dMYWJlbCcsICdyYW5nZVVuZGVyZmxvd0xhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc3BvbnNpdmUnLCAndG9nZ2xlRGlhbExhYmVsJywgJ3RvZ2dsZUlucHV0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ2dldFZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10aW1lLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW1MYWJlbCcsICdjYW5jZWxMYWJlbCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Zvcm1hdCcsICdoZWFkbGluZScsICdoZWFkbGluZURpYWxMYWJlbCcsICdoZWFkbGluZUlucHV0TGFiZWwnLCAnaGlkZVRyaWdnZXInLCAnaG91ckxhYmVsJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbWludXRlTGFiZWwnLCAnbWludXRlU3RlcCcsICduYW1lJywgJ29rTGFiZWwnLCAnb3BlbicsICdvcmllbnRhdGlvbicsICdwZXJpb2RMYWJlbCcsICdwZXJpb2RMYXlvdXQnLCAncG1MYWJlbCcsICdyYW5nZU91dHNpZGVMYWJlbCcsICdyYW5nZU92ZXJmbG93TGFiZWwnLCAncmFuZ2VVbmRlcmZsb3dMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNwb25zaXZlJywgJ3RvZ2dsZURpYWxMYWJlbCcsICd0b2dnbGVJbnB1dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUaW1lUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZE1vZGVDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsIGFzIElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBNZFRpbWVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIGFzIElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJNb2RlQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGltZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWRUaW1lUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb25maXJtcyB0aGUgY2hvc2VuIHRpbWUgKE9LIGJ1dHRvbiwgb3JcbkVudGVyIGluc2lkZSB0aGUgSEgvTU0gZmllbGRzIHdoaWxlIHRoZSBidWZmZXJzIGFyZSB2YWxpZCkuXG5UaGlzIGlzIHRoZSBjYW5vbmljYWwgXCJ0aGUgdXNlciBoYXMgY29tbWl0dGVkIGEgdmFsdWVcIiBldmVudCDigJRcbnVzZSBpdCBmb3IgZm9ybSBpbnRlZ3JhdGlvbiwgcGVyc2lzdGVuY2UsIGFuZCBhbmFseXRpY3MuXG5cblRoZSBkZXRhaWwgYnVuZGxlIGluY2x1ZGVzIGJvdGggdGhlIGh1bWFuLWZyaWVuZGx5IGB2YWx1ZWAgYW5kXG50aHJlZSBpbmR1c3RyeS1zdGFuZGFyZCBJU08gLyBEYXRlIHJlcHJlc2VudGF0aW9ucyBzb1xuZG93bnN0cmVhbSBjb2RlIG5ldmVyIGhhcyB0byByZS1mb3JtYXQgdGhlIHRpbWUgaXRzZWxmLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGV2ZXJ5IGludGVybWVkaWF0ZSBjaGFuZ2Ugd2hpbGUgdGhlIGRpYWxvZyBpc1xub3BlbiDigJQgZGlhbCBkcmFnLCBkaWFsLW1vZGUga2V5Ym9hcmQgdHlwaW5nLCBBTS9QTSB0b2dnbGUsXG5hbmQgaW5wdXQtdmFyaWFudCBrZXlzdHJva2VzIHRoYXQgcHJvZHVjZSBhIHZhbGlkIEhIOk1NLlxuXG5NaXJyb3JzIHRoZSBIVE1MIGBpbnB1dGAgZXZlbnQgc2VtYW50aWNzIChcImZpcmVzIGZvciBldmVyeVxudXNlci1kcml2ZW4gbXV0YXRpb25cIikgYW5kIG1hdGNoZXMgdGhlIHBhdHRlcm4gdXNlZCBieVxuYG1kLWRhdGUtcGlja2VyYCAvIGBtZC10ZXh0LWZpZWxkYC4gVXNlIGBtZElucHV0YCBmb3IgbGl2ZVxucHJldmlld3MgYW5kIGBtZENoYW5nZWAgZm9yIHRoZSBmaW5hbCBjb21taXQuIFRoZSBkZXRhaWxcbnNoYXBlIGlzIGlkZW50aWNhbCB0byBgbWRDaGFuZ2VgIHNvIGEgcHJldmlld2VyIGNhbiByZWFkIHRoZVxuc2FtZSBmaWVsZHMgcmVnYXJkbGVzcyBvZiB3aGljaCBldmVudCBhcnJpdmVkLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgY2xvc2VzICh3aGV0aGVyIGNvbmZpcm1lZCwgY2FuY2VsbGVkLCBvciBkaXNtaXNzZWQpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIGlzIGNhbmNlbGxlZCBvciBkaXNtaXNzZWQgd2l0aG91dCBjb21taXR0aW5nLlxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiB0aGUgZGlhbCBhbmQgaW5wdXRcbnZhcmlhbnRzIHZpYSB0aGUgZGlhbG9nJ3Mga2V5Ym9hcmQgLyBjbG9jayB0b2dnbGUuIExldHNcbmFuYWx5dGljcyBvciBzaWJsaW5nIFVJIHJlYWN0IHRvIHRoZSB2YXJpYW50IGNoYW5nZSAoZS5nLlxuYW5ub3VuY2UgdGhlIG5ldyBtb2RlIHRvIHNjcmVlbiByZWFkZXJzLCBvciByZXNpemUgYSBob3N0aW5nXG5kaWFsb2cgd3JhcHBlcikuXG4gICAqL1xuICBtZE1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyTW9kZUNoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2xiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdhcmlhTGFiZWxQcm9wJywgJ2FyaWFMYWJlbGxlZGJ5JywgJ2NvbG9yJywgJ2NvbnRhaW5lclNlbWFudGljcycsICdkZW5zaXR5JywgJ2xheW91dCcsICd2YXJpYW50J10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVG9vbGJhciBleHRlbmRzIENvbXBvbmVudHMuTWRUb29sYmFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9Qb3NpdGlvbicsICdjcm9zc09mZnNldCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2hpZGVEZWxheScsICdvZmZzZXQnLCAnb3BlbicsICdwb3NpdGlvbicsICdzaG93RGVsYXknLCAnc3ViaGVhZCcsICd0ZXh0JywgJ3ZhcmlhbnQnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRvb2x0aXAge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdG9vbHRpcCBiZWNvbWVzIHZpc2libGUuIGBidWJibGVzOmZhbHNlYCArIGBjb21wb3NlZDpmYWxzZWAga2VlcCBpdFxuZnJvbSBjcm9zc2luZyB0aGUgc2hhZG93IGJvdW5kYXJ5IGFuZCByZXRhcmdldGluZyBvbnRvIGFuIGVtYmVkZGluZyBob3N0ICh0aGUgcmVwbydzXG5kb2N1bWVudGVkIGNvbXBvc2VkLWV2ZW50LWxlYWsgY2xhc3Mg4oCUIHNlZSBtZC1kYXRlLXBpY2tlcidzIHN3YWxsb3cgZ3VhcmRzKS5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRvb2x0aXAgaXMgZGlzbWlzc2VkIChkb2VzIG5vdCBidWJibGUgb3IgY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnbW92ZVNlbGVjdGVkUmlnaHQnLCAnbW92ZVNlbGVjdGVkTGVmdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdHJhbnNmZXItbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG59KVxuZXhwb3J0IGNsYXNzIE1kVHJhbnNmZXJMaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRNb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVHJhbnNmZXJMaXN0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFRyYW5zZmVyTGlzdCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSBjaGFuZ2UgdG8gdGhlIHRhcmdldCB2YWx1ZS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGl0ZW1zIGFyZSBtb3ZlZC4gZGV0YWlsIGRlc2NyaWJlcyB0aGUgb3BlcmF0aW9uLlxuICAgKi9cbiAgbWRNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkaXJlY3Rpb246ICdsZWZ0JyB8ICdyaWdodCc7IG1vdmVkOiBzdHJpbmdbXTsgdGFyZ2V0OiBzdHJpbmdbXTsgfT4+O1xufVxuXG5cbiJdfQ==
2378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaXJlY3RpdmVzL3Byb3hpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjtBQUNwQiw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBRXhILE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJdkUsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDakgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGNBQWMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzlHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLElBQUksYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixJQUFJLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUcsT0FBTyxFQUFFLG1CQUFtQixJ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RSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7UUFDblksT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7S0FDbkQsQ0FBQztHQVNXLGNBQWMsQ0FPMUI7OzRGQVBZLGNBQWM7a0JBUjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLHVFQUF1RTtvQkFDdkUsTUFBTSxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUM7b0JBQ25ZLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHJveHlDbXAsIHByb3h5T3V0cHV0cyB9IGZyb20gJy4vYW5ndWxhci1jb21wb25lbnQtbGliL3V0aWxzJztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRBY2NvcmRpb24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWFjY29yZGlvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQWNjb3JkaW9uSXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtYWNjb3JkaW9uLWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEFwcEJhciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtYXBwLWJhci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQXJlYUNoYXJ0IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1hcmVhLWNoYXJ0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRBdXRvY29tcGxldGUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWF1dG9jb21wbGV0ZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQXZhdGFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1hdmF0YXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEJhZGdlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1iYWRnZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQmFyQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJhci1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQm90dG9tU2hlZXQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJvdHRvbS1zaGVldC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnJlYWRjcnVtYkl0ZW0gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJyZWFkY3J1bWItaXRlbS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnJlYWRjcnVtYnMgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJyZWFkY3J1bWJzLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQnV0dG9uR3JvdXAgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWJ1dHRvbi1ncm91cC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQ2FyZCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtY2FyZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kQ2hlY2tib3ggfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWNoZWNrYm94LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRDaGlwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1jaGlwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRDb2xvclBpY2tlciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtY29sb3ItcGlja2VyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWREYXRlUGlja2VyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1kYXRlLXBpY2tlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kRGlhbG9nIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1kaWFsb2cuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZERpdmlkZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWRpdmlkZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEZhYiB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtZmFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRGYWJNZW51IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1mYWItbWVudS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kRmFiTWVudUl0ZW0gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWZhYi1tZW51LWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZEljb25CdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWljb24tYnV0dG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRMaW5lQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxpbmUtY2hhcnQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExpc3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxpc3QuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExpc3RJdGVtIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1saXN0LWl0ZW0uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZExvYWRpbmdJbmRpY2F0b3IgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLWxvYWRpbmctaW5kaWNhdG9yLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZW51LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51SXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtbWVudS1pdGVtLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRNZW51SXRlbUdyb3VwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZW51LWl0ZW0tZ3JvdXAuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE1ldGVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1tZXRlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTXVsdGlTZWxlY3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW11bHRpLXNlbGVjdC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTmF2aWdhdGlvbkJhciB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtbmF2aWdhdGlvbi1iYXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE5hdmlnYXRpb25SYWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXJhaWwuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZE5hdmlnYXRpb25SYWlsVGFiIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXJhaWwtdGFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWROYXZpZ2F0aW9uVGFiIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1uYXZpZ2F0aW9uLXRhYi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kTnVtYmVyRmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW51bWJlci1maWVsZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kT3JnYW5pemF0aW9uQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW9yZ2FuaXphdGlvbi1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kT3RwRmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLW90cC1maWVsZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUGllQ2hhcnQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXBpZS1jaGFydC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUHJvZ3Jlc3NJbmRpY2F0b3IgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXByb2dyZXNzLWluZGljYXRvci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUmFkaW8gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXJhZGlvLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRSYXRpbmcgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXJhdGluZy5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kUmlwcGxlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1yaXBwbGUuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlYXJjaCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VhcmNoLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTZWdtZW50ZWRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNlZ21lbnRlZC1idXR0b24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlZ21lbnRlZEJ1dHRvblNldCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VnbWVudGVkLWJ1dHRvbi1zZXQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNlbGVjdCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2VsZWN0LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTZWxlY3RPcHRpb24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNlbGVjdC1vcHRpb24uanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFNpZGVTaGVldCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc2lkZS1zaGVldC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU2tlbGV0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNrZWxldG9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTbGlkZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNsaWRlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU25hY2tiYXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNuYWNrYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTcGFya2xpbmUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNwYXJrbGluZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3BsaXRCdXR0b24gfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXNwbGl0LWJ1dHRvbi5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3RhdHVzRG90IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGF0dXMtZG90LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdGVwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGVwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdGVwcGVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zdGVwcGVyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRTdWJNZW51SXRlbSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtc3ViLW1lbnUtaXRlbS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kU3dpdGNoIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC1zd2l0Y2guanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYiB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFiLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJQYW5lbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFiLXBhbmVsLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJQYW5lbHMgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYi1wYW5lbHMuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVCb2R5IH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1ib2R5LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZUNlbGwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYmxlLWNlbGwuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlQ29udGFpbmVyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1jb250YWluZXIuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlRXhwYW5kVG9nZ2xlIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1leHBhbmQtdG9nZ2xlLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZUZvb3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRhYmxlLWZvb3QuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRhYmxlSGVhZCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtaGVhZC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVQYWdpbmF0aW9uIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS1wYWdpbmF0aW9uLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZVJvdyB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtcm93LmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJsZVNvcnRMYWJlbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMvbWQtdGFibGUtc29ydC1sYWJlbC5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDdXN0b21FbGVtZW50IGFzIGRlZmluZU1kVGFibGVUb29sYmFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJsZS10b29sYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUYWJzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10YWJzLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUZXh0RmllbGQgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRleHQtZmllbGQuanMnO1xuaW1wb3J0IHsgZGVmaW5lQ3VzdG9tRWxlbWVudCBhcyBkZWZpbmVNZFRpbWVQaWNrZXIgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRpbWUtcGlja2VyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUb29sYmFyIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10b29sYmFyLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUb29sdGlwIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cy9tZC10b29sdGlwLmpzJztcbmltcG9ydCB7IGRlZmluZUN1c3RvbUVsZW1lbnQgYXMgZGVmaW5lTWRUcmFuc2Zlckxpc3QgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzL21kLXRyYW5zZmVyLWxpc3QuanMnO1xuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFjY29yZGlvbixcbiAgaW5wdXRzOiBbJ2JyaW5nVG9Gcm9udCcsICdkZWZhdWx0RXhwYW5kZWQnLCAnZGVuc2l0eScsICdlbGV2YXRpb24nLCAnZXhjbHVzaXZlJywgJ2Zsb2F0aW5nJywgJ2hlYWRpbmdMZXZlbCcsICdpbml0aWFsWCcsICdpbml0aWFsWScsICdrZWVwT25lRXhwYW5kZWQnLCAncmVnaW9uJywgJ3JlZ2lvblRocmVzaG9sZCcsICdyZW9yZGVyYWJsZScsICd0cmFuc2l0aW9uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFjY29yZGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYnJpbmdUb0Zyb250JywgJ2RlZmF1bHRFeHBhbmRlZCcsICdkZW5zaXR5JywgJ2VsZXZhdGlvbicsICdleGNsdXNpdmUnLCAnZmxvYXRpbmcnLCAnaGVhZGluZ0xldmVsJywgJ2luaXRpYWxYJywgJ2luaXRpYWxZJywgJ2tlZXBPbmVFeHBhbmRlZCcsICdyZWdpb24nLCAncmVnaW9uVGhyZXNob2xkJywgJ3Jlb3JkZXJhYmxlJywgJ3RyYW5zaXRpb24nLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQWNjb3JkaW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUb2dnbGUnLCAnbWRSZW9yZGVyJywgJ21kRHJhZ1N0YXJ0JywgJ21kRHJhZ01vdmUnLCAnbWREcmFnRW5kJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZEFjY29yZGlvbkRyYWdEZXRhaWwgYXMgSU1kQWNjb3JkaW9uTWRBY2NvcmRpb25EcmFnRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEFjY29yZGlvbiBleHRlbmRzIENvbXBvbmVudHMuTWRBY2NvcmRpb24ge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gZXhwYW5kcyBvciBjb2xsYXBzZXMuIERldGFpbCBjYXJyaWVzIHRoZVxuZnVsbCBzZXQgb2YgZXhwYW5kZWQgaW5kaWNlcy5cbiAgICovXG4gIG1kVG9nZ2xlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBleHBhbmRlZDogYm9vbGVhbjsgZXhwYW5kZWRJbmRpY2VzOiBudW1iZXJbXTsgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGl0ZW1zIGFyZSByZW9yZGVyZWQgdmlhIGRyYWctYW5kLWRyb3Agb3Iga2V5Ym9hcmRcbihBbHQrQXJyb3dVcCAvIEFsdCtBcnJvd0Rvd24pLiBgb3JkZXJgIGlzIHRoZSBuZXcgaW5kZXggc2VxdWVuY2VcbnJlbGF0aXZlIHRvIHRoZSBvcmlnaW5hbCBvcmRlciwgZS5nLiBtb3ZpbmcgdGhlIGl0ZW0gdGhhdCB3YXMgYXRcbmluZGV4IDAgdG8gaW5kZXggMiB5aWVsZHMgYG9yZGVyOiBbMSwgMiwgMF1gLlxuICAgKi9cbiAgbWRSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXI7IG9yZGVyOiBudW1iZXJbXTsgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCBvbmNlIGEgZmxvYXRpbmcgcGFuZWwgc3RhcnRzIGJlaW5nIGRyYWdnZWQuXG4gICAqL1xuICBtZERyYWdTdGFydDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFjY29yZGlvbk1kQWNjb3JkaW9uRHJhZ0RldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCBjb250aW51b3VzbHkgd2hpbGUgYSBmbG9hdGluZyBwYW5lbCBpcyBiZWluZyBkcmFnZ2VkLlxuICAgKi9cbiAgbWREcmFnTW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFjY29yZGlvbk1kQWNjb3JkaW9uRHJhZ0RldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgZmxvYXRpbmcgcGFuZWwgaXMgcmVsZWFzZWQuXG4gICAqL1xuICBtZERyYWdFbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBY2NvcmRpb25NZEFjY29yZGlvbkRyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQWNjb3JkaW9uSXRlbSxcbiAgaW5wdXRzOiBbJ2NvbGxhcHNpYmxlJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRlZCcsICdoZWFkaW5nTGV2ZWwnLCAnaGVhZGxpbmUnLCAnaWNvbicsICdyZWdpb25Sb2xlJywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJywgJ2ZvY3VzSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1hY2NvcmRpb24taXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29sbGFwc2libGUnLCAnY29udGVudE1heEhlaWdodCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hlYWRpbmdMZXZlbCcsICdoZWFkbGluZScsICdpY29uJywgJ3JlZ2lvblJvbGUnLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEFjY29yZGlvbkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEl0ZW1Ub2dnbGUnLCAnbWRJdGVtUmVxdWVzdEZvY3VzJywgJ21kSXRlbVJlcXVlc3RSZW9yZGVyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQWNjb3JkaW9uSXRlbSBleHRlbmRzIENvbXBvbmVudHMuTWRBY2NvcmRpb25JdGVtIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbmV2ZXIgdGhlIGl0ZW0gdG9nZ2xlcy4gVGhlIHBhcmVudCBgbWQtYWNjb3JkaW9uYCB1c2VzXG50aGlzIHRvIGNvb3JkaW5hdGUgZXhjbHVzaXZlIG1vZGUuXG4gICAqL1xuICBtZEl0ZW1Ub2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuOyBpbmRleDogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IHRoZSBwYXJlbnQgbGlzdGVucyB0byBmb3IgYXJyb3cta2V5IHJvdmluZyBmb2N1cy5cbkJ1YmJsZXMgKyBjb21wb3NlZCBzbyB0aGUgcGFyZW50IHJlY2VpdmVzIGl0IHRocm91Z2ggdGhlIHNoYWRvdy5cbiAgICovXG4gIG1kSXRlbVJlcXVlc3RGb2N1czogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAnbmV4dCcgfCAncHJldicgfCAnZmlyc3QnIHwgJ2xhc3QnOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IHRoZSBwYXJlbnQgbGlzdGVucyB0byBmb3IgQWx0K0Fycm93IGtleWJvYXJkXG5yZW9yZGVyaW5nLiBCdWJibGVzICsgY29tcG9zZWQgc28gdGhlIHBhcmVudCByZWNlaXZlcyBpdFxudGhyb3VnaCB0aGUgc2hhZG93LlxuICAgKi9cbiAgbWRJdGVtUmVxdWVzdFJlb3JkZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJzsgZnJvbTogbnVtYmVyOyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFwcEJhcixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaGVhZGxpbmUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ljb25MYWJlbCcsICdzY3JvbGxlZCcsICdzZWFyY2hBcmlhTGFiZWwnLCAnc2VhcmNoRGlzYWJsZWQnLCAnc2VhcmNoUGxhY2Vob2xkZXInLCAnc2VhcmNoVmFsdWUnLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbm1lbnQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYXBwLWJhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdoZWFkbGluZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSWNvbkxhYmVsJywgJ3Njcm9sbGVkJywgJ3NlYXJjaEFyaWFMYWJlbCcsICdzZWFyY2hEaXNhYmxlZCcsICdzZWFyY2hQbGFjZWhvbGRlcicsICdzZWFyY2hWYWx1ZScsICdzdWJ0aXRsZScsICd0aXRsZUFsaWdubWVudCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRBcHBCYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZExlYWRpbmdDbGljaycsICdtZFNlYXJjaEFjdGl2YXRlJywgJ21kU2VhcmNoSW5wdXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBcHBCYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQXBwQmFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcHJvcC1iYXNlZCBsZWFkaW5nIGljb24gYnV0dG9uIGlzIGFjdGl2YXRlZC5cbiAgICovXG4gIG1kTGVhZGluZ0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW91c2VFdmVudD4+O1xuICAvKipcbiAgICogU2VhcmNoIHZhcmlhbnQgb25seTogZW1pdHRlZCB3aGVuIHRoZSBpbmxpbmUgc2VhcmNoIGZpZWxkIGlzIHNlbGVjdGVkXG4oY2xpY2ssIGZvY3VzLCBFbnRlciwgb3IgU3BhY2UpLiBXaXJlIHRoaXMgdG8gYG1kLXNlYXJjaC5zaG93KClgIHRvIG9wZW5cbnRoZSBmdWxsLXNjcmVlbiBzZWFyY2ggdmlldyBwZXIgdGhlIE1EMyBzcGVjLlxuICAgKi9cbiAgbWRTZWFyY2hBY3RpdmF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBTZWFyY2ggdmFyaWFudCBvbmx5OiBlbWl0dGVkIG9uIGV2ZXJ5IGlubGluZSBzZWFyY2ggZmllbGQgaW5wdXQgY2hhbmdlLlxuICAgKi9cbiAgbWRTZWFyY2hJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEFyZWFDaGFydCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZmlsbE9wYWNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtTaXplJywgJ25vQW5pbWF0aW9uJywgJ3NlcmllcycsICdzZXJpZXNMYWJlbHMnLCAnc2hvd0xhYmVscycsICdzaG93TGluZScsICdzaG93TWFya3MnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3pvb20nXSxcbiAgbWV0aG9kczogWydyZWZyZXNoVGhlbWUnLCAncmVzaXplJywgJ3JlcGxheScsICd0b0RhdGFVUkwnLCAnZ2V0SW5zdGFuY2UnLCAnc2V0Wm9vbScsICdyZXNldFpvb20nXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWFyZWEtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZmlsbE9wYWNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtTaXplJywgJ25vQW5pbWF0aW9uJywgJ3NlcmllcycsICdzZXJpZXNMYWJlbHMnLCAnc2hvd0xhYmVscycsICdzaG93TGluZScsICdzaG93TWFya3MnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3pvb20nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEFyZWFDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTWFya2VyQ2xpY2snLCAnbWRMaW5lQ2xpY2snLCAnbWRBcmVhQ2xpY2snLCAnbWRBeGlzQ2xpY2snLCAnbWRMZWdlbmRDbGljaycsICdtZEhvdmVyJywgJ21kUmVhZHknLCAnbWRab29tJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZENoYXJ0Q2xpY2tEZXRhaWwgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRTZXJpZXMgYXMgSU1kQXJlYUNoYXJ0TWRDaGFydFNlcmllcyB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0QXhpc0NsaWNrRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRDaGFydEhvdmVyRGV0YWlsIGFzIElNZEFyZWFDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRBcmVhQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLk1kQXJlYUNoYXJ0IHtcblxuICBtZE1hcmtlckNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEFyZWFDaGFydE1kQ2hhcnRTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuXG4gICAqL1xuICBtZExpbmVDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNlcmllcycgZmlsbGVkIGFyZWEgaXMgY2xpY2tlZCDigJQgdGhlIGJhbmQgYmV0d2VlbiBpdHMgbGluZVxuYW5kIGl0cyBiYXNlIChpdHMgb3duIGJhbmQgd2hlbiBzdGFja2VkKSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZCBwb2ludHMuXG4gICAqL1xuICBtZEFyZWFDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEFyZWFDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRBcmVhQ2hhcnRNZENoYXJ0U2VyaWVzPj4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGxvdCBiYWNrZ3JvdW5kIGlzIGNsaWNrZWQgKGluc2lkZSB0aGUgcGxvdCwgYnV0IG5vdCBvbiBhXG5tYXJrLCBsaW5lIG9yIGFyZWEpOiB0aGUgbmVhcmVzdCB4IHBsdXMgZXZlcnkgdmlzaWJsZSBzZXJpZXMnIHZhbHVlIHRoZXJlLlxuICAgKi9cbiAgbWRBeGlzQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRBcmVhQ2hhcnRNZENoYXJ0QXhpc0NsaWNrRGV0YWlsPj47XG5cbiAgbWRMZWdlbmRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VyaWVzSW5kZXg6IG51bWJlcjsgc2VyaWVzSWQ/OiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcblxuICBtZEhvdmVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQXJlYUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsPj47XG5cbiAgbWRSZWFkeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHpvb20gd2luZG93IGNoYW5nZXMgKGRyYWcsIHNsaWRlciBvciBgc2V0Wm9vbWAvYHJlc2V0Wm9vbWApLlxuICAgKi9cbiAgbWRab29tOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXI7IHJlc2V0OiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQXV0b2NvbXBsZXRlLFxuICBpbnB1dHM6IFsnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhck9uQmx1cicsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyZXInLCAnZnJlZVNvbG8nLCAnaW5wdXRWYWx1ZScsICdsYWJlbCcsICdsaW1pdFJlc3VsdHMnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4U2VsZWN0ZWQnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzb2Z0RGlzYWJsZWQnLCAnc3RhdHVzVGVtcGxhdGUnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIG1ldGhvZHM6IFsnZm9jdXNJbnB1dCcsICdzaG93TWVudScsICdjbG9zZU1lbnUnLCAnbG9hZE9wdGlvbnMnLCAnZ2V0TGFiZWxzJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWF1dG9jb21wbGV0ZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hpcFBvc2l0aW9uJywgJ2NsZWFySWNvbicsICdjbGVhck9uQmx1cicsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlQ2xvc2VPblNlbGVjdCcsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyZXInLCAnZnJlZVNvbG8nLCAnaW5wdXRWYWx1ZScsICdsYWJlbCcsICdsaW1pdFJlc3VsdHMnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4U2VsZWN0ZWQnLCAnbXVsdGlwbGUnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzb2Z0RGlzYWJsZWQnLCAnc3RhdHVzVGVtcGxhdGUnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCcsICd2aXJ0dWFsaXplJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRBdXRvY29tcGxldGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZElucHV0JywgJ21kT3BlbicsICdtZENsb3NlJywgJ21kQ2xlYXInLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEF1dG9jb21wbGV0ZSBleHRlbmRzIENvbXBvbmVudHMuTWRBdXRvY29tcGxldGUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIGNvbW1pdHRlZCBzZWxlY3Rpb24gY2hhbmdlcy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBsaXZlIGlucHV0IHN0cmluZyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgY2xlYXJzIHRoZSB2YWx1ZS5cbiAgICovXG4gIG1kQ2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQXZhdGFyLFxuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yRnJvbU5hbWUnLCAnY3Jvc3NvcmlnaW4nLCAnZGVuc2l0eScsICdpbml0aWFscycsICdsYWJlbCcsICdsb2FkaW5nJywgJ25hbWUnLCAnc2hhcGUnLCAnc2l6ZScsICdzcmMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWF2YXRhcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWx0JywgJ2NvbG9yRnJvbU5hbWUnLCAnY3Jvc3NvcmlnaW4nLCAnZGVuc2l0eScsICdpbml0aWFscycsICdsYWJlbCcsICdsb2FkaW5nJywgJ25hbWUnLCAnc2hhcGUnLCAnc2l6ZScsICdzcmMnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEF2YXRhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTG9hZCcsICdtZEVycm9yJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQXZhdGFyIGV4dGVuZHMgQ29tcG9uZW50cy5NZEF2YXRhciB7XG4gIC8qKlxuICAgKiBJbWFnZSBzdWNjZXNzZnVsbHkgbG9hZGVkLlxuICAgKi9cbiAgbWRMb2FkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzcmM6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBJbWFnZSBmYWlsZWQgdG8gbG9hZCDigJQgY29tcG9uZW50IGZlbGwgYmFjayB0byBpbml0aWFscy9pY29uLlxuICAgKi9cbiAgbWRFcnJvcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc3JjOiBzdHJpbmcgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCYWRnZSxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaWNvbicsICdtYXgnLCAnc2hhcGUnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtYmFkZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnaWNvbicsICdtYXgnLCAnc2hhcGUnLCAndmFsdWUnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFkZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJhZGdlIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJhZGdlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEJhckNoYXJ0LFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJ2F4aXNUaWNrcycsICdiYXJHYXAnLCAnYmFyV2lkdGgnLCAnY2F0ZWdvcnlHYXAnLCAnY2hldnJvbicsICdjbGlja2FibGUnLCAnY29ybmVyUmFkaXVzJywgJ2RlbnNpdHknLCAnaGVpZ2h0UHJvcCcsICdsYWJlbCcsICdsYWJlbFBsb3QnLCAnbGFiZWxQb2ludCcsICdsYWJlbFpvb21FbmQnLCAnbGFiZWxab29tU3RhcnQnLCAnbGF5b3V0JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbm9BbmltYXRpb24nLCAncG9sYXInLCAncG9sYXJIb2xlJywgJ3BvbGFyU3dlZXAnLCAnc2VyaWVzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd1RvdGFscycsICdzdGFjaycsICdzdWJ0aXRsZScsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3hBeGlzJywgJ3lBeGlzJywgJ3lBeGlzMicsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVmcmVzaFRoZW1lJywgJ3Jlc2l6ZScsICdyZXBsYXknLCAnZHJpbGwnLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1iYXItY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdheGlzVGlja3MnLCAnYmFyR2FwJywgJ2JhcldpZHRoJywgJ2NhdGVnb3J5R2FwJywgJ2NoZXZyb24nLCAnY2xpY2thYmxlJywgJ2Nvcm5lclJhZGl1cycsICdkZW5zaXR5JywgJ2hlaWdodFByb3AnLCAnbGFiZWwnLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xheW91dCcsICdsZWdlbmQnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ25vQW5pbWF0aW9uJywgJ3BvbGFyJywgJ3BvbGFySG9sZScsICdwb2xhclN3ZWVwJywgJ3NlcmllcycsICdzaG93TGFiZWxzJywgJ3Nob3dUb3RhbHMnLCAnc3RhY2snLCAnc3VidGl0bGUnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhpcycsICd5QXhpczInLCAnem9vbSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQmFyQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEJhckNsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRTZXJpZXMgYXMgSU1kQmFyQ2hhcnRNZENoYXJ0U2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRIb3ZlckRldGFpbCBhcyBJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCYXJDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRCYXJDaGFydCB7XG5cbiAgbWRCYXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZEJhckNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZEJhckNoYXJ0TWRDaGFydFNlcmllcz4+PjtcblxuICBtZExlZ2VuZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBzZXJpZXNJbmRleDogbnVtYmVyOyBzZXJpZXNJZD86IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCYXJDaGFydE1kQ2hhcnRIb3ZlckRldGFpbD4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB6b29tIHdpbmRvdyBjaGFuZ2VzIChkcmFnLCBzbGlkZXIsIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCb3R0b21TaGVldCxcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2NvbnRlbnRBbGlnbicsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lQWxpZ24nLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3Njcm9sbFNoYWRvdycsICdzaGVldEFyaWFMYWJlbCcsICdzaG93RHJhZ0hhbmRsZScsICd0b3BEaXZpZGVyJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1ib3R0b20tc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2NvbnRlbnRBbGlnbicsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lQWxpZ24nLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3Njcm9sbFNoYWRvdycsICdzaGVldEFyaWFMYWJlbCcsICdzaG93RHJhZ0hhbmRsZScsICd0b3BEaXZpZGVyJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJvdHRvbVNoZWV0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCb3R0b21TaGVldCBleHRlbmRzIENvbXBvbmVudHMuTWRCb3R0b21TaGVldCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBvcGVuc1xuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2hlZXQgY2xvc2VzXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiBkaXNtaXNzZWQgdmlhIHNjcmltIGNsaWNrLCBFc2NhcGUsIGRyYWcsIG9yIGNsb3NlIGJ1dHRvblxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEJyZWFkY3J1bWJJdGVtLFxuICBpbnB1dHM6IFsnY29sbGFwc2VkJywgJ2N1cnJlbnQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAnaXRlbUluZGV4JywgJ2l0ZW1Ub3RhbCcsICdyZWwnLCAndGFyZ2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1iLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlZCcsICdjdXJyZW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2l0ZW1JbmRleCcsICdpdGVtVG90YWwnLCAncmVsJywgJ3RhcmdldCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQnJlYWRjcnVtYkl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRCcmVhZGNydW1iU2VsZWN0RGV0YWlsIGFzIElNZEJyZWFkY3J1bWJJdGVtTWRCcmVhZGNydW1iU2VsZWN0RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgYWN0aXZhdGVzIGEgbmF2aWdhYmxlIGNydW1iIOKAlCBpLmUuIHdoZW4gYW4gaXRlbSB3aXRoXG5hIG5vbi1lbXB0eSBgaHJlZmAgKGFuZCBub3QgbWFya2VkIGBjdXJyZW50YCAvIGBkaXNhYmxlZGApIGlzIGNsaWNrZWQgb3JcbmFjdGl2YXRlZCB3aXRoIGBFbnRlcmAgd2hpbGUgZm9jdXNlZC4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqOlxuY2FsbCBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSB0aGUgbGlzdGVuZXIgdG8gc3RvcCB0aGUgYnJvd3NlcidzXG5kZWZhdWx0IG5hdmlnYXRpb24uIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGhvb2sgZm9yIFNQQSByb3V0aW5nIOKAlCBsZXRcbnRoZSBicmVhZGNydW1iIHJlbmRlciBhIHJlYWwgYDxhPmAgKHNvIHJpZ2h0LWNsaWNrIC8gbWlkZGxlLWNsaWNrIC9cblwiT3BlbiBpbiBuZXcgdGFiXCIgc3RpbGwgd29yayksIHRoZW4gaW50ZXJjZXB0IGBtZFNlbGVjdGAgdG8gcHVzaCB0aGVcbnJvdXRlIHRocm91Z2ggeW91ciBjbGllbnQtc2lkZSByb3V0ZXIgaW5zdGVhZCBvZiBhIGZ1bGwgcGFnZSByZWxvYWQuXG5cblRoZSBldmVudCBidWJibGVzLCBzbyBjb25zdW1lcnMgY2FuIGF0dGFjaCBhIHNpbmdsZSBsaXN0ZW5lciBvbiB0aGVcbnBhcmVudCBgPG1kLWJyZWFkY3J1bWJzPmAgZm9yIGRlbGVnYXRpb24uIFRoZSBldmVudCBpcyBjb21wb3NlZCwgc29cbmxpc3RlbmVycyBvdXRzaWRlIHRoZSBzaGFkb3cgdHJlZSAodGhlIHR5cGljYWwgY2FzZSkgcmVjZWl2ZSBpdC5cblxuYGBgdHNcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21kLWJyZWFkY3J1bWJzJykhXG4gIC5hZGRFdmVudExpc3RlbmVyKCdtZFNlbGVjdCcsIChlKSA9PiB7XG4gICAgY29uc3QgeyBocmVmLCBsYWJlbCwgaXRlbUluZGV4IH0gPSAoZSBhcyBDdXN0b21FdmVudCkuZGV0YWlsO1xuICAgIGUucHJldmVudERlZmF1bHQoKTsgICAgICAgICAgICAgIC8vIHN0b3AgdGhlIDxhPiBmcm9tIG5hdmlnYXRpbmdcbiAgICBteVJvdXRlci5wdXNoKGhyZWYpOyAgICAgICAgICAgICAvLyBTUEEgbmF2aWdhdGlvblxuICB9KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1iSXRlbU1kQnJlYWRjcnVtYlNlbGVjdERldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCcmVhZGNydW1icyxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZXhwYW5kTGFiZWwnLCAnaXRlbXNBZnRlckNvbGxhcHNlJywgJ2l0ZW1zQmVmb3JlQ29sbGFwc2UnLCAnbGFiZWwnLCAnbWF4SXRlbXMnLCAnc2VwYXJhdG9yJ10sXG4gIG1ldGhvZHM6IFsnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1icmVhZGNydW1icycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdpdGVtc0FmdGVyQ29sbGFwc2UnLCAnaXRlbXNCZWZvcmVDb2xsYXBzZScsICdsYWJlbCcsICdtYXhJdGVtcycsICdzZXBhcmF0b3InXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJyZWFkY3J1bWJzIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRFeHBhbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWwgYXMgSU1kQnJlYWRjcnVtYnNNZEJyZWFkY3J1bWJzRXhwYW5kRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEJyZWFkY3J1bWJzIGV4dGVuZHMgQ29tcG9uZW50cy5NZEJyZWFkY3J1bWJzIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHVzZXIgcmV2ZWFscyB0aGUgZnVsbCBicmVhZGNydW1iIHRyYWlsIGJ5IGFjdGl2YXRpbmdcbnRoZSBvdmVyZmxvdyAoXCLigKZcIikgdG9nZ2xlLCBvciB3aGVuIGNvbnN1bWVycyBwcm9ncmFtbWF0aWNhbGx5IGNhbGxcbmBleHBhbmQoKWAgLyBgY29sbGFwc2UoKWAuIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VcbmhhcyBhbHJlYWR5IGhhcHBlbmVkLiBVc2UgaXQgZm9yIGFuYWx5dGljcyBvciB0byByZWFjdCB0byBhIHVzZXJcbndobyB3YW50cyB0byBzZWUgdGhlIGZ1bGwgcGF0aC5cblxuQnViYmxlcyArIGNvbXBvc2VkLCBzbyBjb25zdW1lcnMgb3V0c2lkZSB0aGUgc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsXG5jYXNlKSByZWNlaXZlIGl0LlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCcmVhZGNydW1ic01kQnJlYWRjcnVtYnNFeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQnV0dG9uLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaHJlZicsICdpY29uJywgJ2xvYWRpbmcnLCAnbWlycm9ySWNvbicsICdyaXBwbGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NoYXBlTW9ycGgnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcHJlc3NFeHBhbmRJY29uRmxpcCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3RyYWlsaW5nSWNvbicsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaHJlZicsICdpY29uJywgJ2xvYWRpbmcnLCAnbWlycm9ySWNvbicsICdyaXBwbGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NoYXBlTW9ycGgnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcHJlc3NFeHBhbmRJY29uRmxpcCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3RyYWlsaW5nSWNvbicsICd0eXBlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQnV0dG9uQ2xpY2tEZXRhaWwgYXMgSU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZEJ1dHRvbkNoYW5nZURldGFpbCBhcyBJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIGV2ZXJ5IHRpbWUgdGhlIHVzZXIgYWN0aXZhdGVzIHRoZSBidXR0b24gKG1vdXNlIGNsaWNrLCB0b3VjaCxcbm9yIGBFbnRlcmAvYFNwYWNlYCB3aGlsZSBmb2N1c2VkKS4gVGhlIGV2ZW50IGlzICoqY2FuY2VsYWJsZSoqIGFuZFxudGhlIGRldGFpbCBwYXlsb2FkIGRlc2NyaWJlcyB3aGF0ICp3b3VsZCogaGFwcGVuOiB0aGUgcG9zdC1jbGlja1xudG9nZ2xlIHN0YXRlLCB0aGUgbmF2aWdhdGlvbiBgaHJlZmAsIGFuZCBzbyBvbi5cblxuQ2FsbGluZyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgZnJvbSBhIGxpc3RlbmVyIHN1cHByZXNzZXMgdGhlXG5kZWZhdWx0IHNpZGUgZWZmZWN0cyAodG9nZ2xlIGZsaXAgKyBgaHJlZmAgbmF2aWdhdGlvbikgYnV0IGxldHNcbnRoZSB1bmRlcmx5aW5nIERPTSBjbGljayBidWJibGUuIFRoaXMgaXMgdGhlIGhvb2sgdG8gdXNlIGZvciBTUEFcbnJvdXRpbmcsIFwiYXJlIHlvdSBzdXJlP1wiIHByb21wdHMsIGFzeW5jIGNvbmZpcm1hdGlvbiwgZXRjLlxuXG5UaGUgZXZlbnQgYnViYmxlcyBhbmQgaXMgY29tcG9zZWQsIHNvIGxpc3RlbmVycyBvdXRzaWRlIHRoZVxuc2hhZG93IHRyZWUgKHRoZSB0eXBpY2FsIGNhc2UpIHJlY2VpdmUgaXQuXG5cbmBgYHRzXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtZC1idXR0b24nKSEuYWRkRXZlbnRMaXN0ZW5lcignbWRDbGljaycsIChlKSA9PiB7XG4gIGNvbnN0IHsgaHJlZiwgc2VsZWN0ZWQgfSA9IChlIGFzIEN1c3RvbUV2ZW50KS5kZXRhaWw7XG4gIGlmICghY29uZmlybSgnQ29udGludWU/JykpIGUucHJldmVudERlZmF1bHQoKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQnV0dG9uTWRCdXR0b25DbGlja0RldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0b2dnbGUgbW9kZSBmbGlwcyB0aGUgYHNlbGVjdGVkYCBzdGF0ZSBpbiByZXNwb25zZSB0byBhXG51c2VyIGFjdGl2YXRpb24uIE5vdCBjYW5jZWxhYmxlIOKAlCB0aGUgc3RhdGUgY2hhbmdlIGhhcyBhbHJlYWR5XG5oYXBwZW5lZC4gUGFpciB3aXRoIGBtZENsaWNrYCAoY2FuY2VsYWJsZSkgd2hlbiB5b3UgbmVlZCBhIHZldG8uXG5cbkJ1YmJsZXMgYW5kIGlzIGNvbXBvc2VkLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25NZEJ1dHRvbkNoYW5nZURldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRCdXR0b25Hcm91cCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZnVsbFdpZHRoJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1idXR0b24tZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZnVsbFdpZHRoJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGlvbk1vZGUnLCAnc2hhcGUnLCAnc2l6ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRCdXR0b25Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2VsZWN0aW9uQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZEJ1dHRvbkdyb3VwQ2hhbmdlRGV0YWlsIGFzIElNZEJ1dHRvbkdyb3VwTWRCdXR0b25Hcm91cENoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuTWRCdXR0b25Hcm91cCB7XG4gIC8qKlxuICAgKiBGaXJlcyBldmVyeSB0aW1lIGEgdXNlciBhY3RpdmF0aW9uIHRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZlxuYSBjaGlsZCBidXR0b24uIFRoZSBkZXRhaWwgb2JqZWN0IGRlc2NyaWJlcyBib3RoIHRoZSBuZXcgc2VsZWN0aW9uXG5zbmFwc2hvdCAoYHZhbHVlc2ApIGFuZCB0aGUgZGlmZiBmcm9tIHRoZSBwcmV2aW91cyBzZWxlY3Rpb25cbihgYWRkZWRgLCBgcmVtb3ZlZGApLCBwbHVzIHRoZSB1bmRlcmx5aW5nIGBvcmlnaW5hbEV2ZW50YC5cblxuRGlzdGluY3QgZnJvbSBlYWNoIGNoaWxkIGJ1dHRvbidzIG93biBgbWRDaGFuZ2VgICh3aGljaCBmaXJlcyBwZXJcbmluZGl2aWR1YWwgYnV0dG9uIHRvZ2dsZSk7IHRoZSBncm91cCdzIGBtZFNlbGVjdGlvbkNoYW5nZWAgZmlyZXNcbm9uY2UgcGVyIHVzZXIgYWN0aXZhdGlvbiBhbmQgcmVwb3J0cyB0aGUgKmdyb3VwLWxldmVsKiBzdGF0ZS5cblxuQnViYmxlcyBhbmQgaXMgY29tcG9zZWQgc28gbGlzdGVuZXJzIG91dHNpZGUgdGhlIHNoYWRvdyB0cmVlXG5yZWNlaXZlIGl0LiBAZXhhbXBsZSBgYGB0c1xuZ3JvdXAuYWRkRXZlbnRMaXN0ZW5lcignbWRTZWxlY3Rpb25DaGFuZ2UnLCAoZTogQ3VzdG9tRXZlbnQ8TWRCdXR0b25Hcm91cENoYW5nZURldGFpbD4pID0+IHtcbiAgY29uc29sZS5sb2coJ25vdyBzZWxlY3RlZDonLCBlLmRldGFpbC52YWx1ZXMpO1xuICBjb25zb2xlLmxvZygnanVzdCBhZGRlZDonLCBlLmRldGFpbC5hZGRlZCk7XG4gIGNvbnNvbGUubG9nKCdqdXN0IHJlbW92ZWQ6JywgZS5kZXRhaWwucmVtb3ZlZCk7XG59KTtcbmBgYFxuICAgKi9cbiAgbWRTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRCdXR0b25Hcm91cE1kQnV0dG9uR3JvdXBDaGFuZ2VEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2FyZCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZHJhZ0VuYWJsZWQnLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaW50ZXJhY3RpdmUnLCAncmlwcGxlJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2RyYWdFbmFibGVkJywgJ2Z1bGxIZWlnaHQnLCAnZnVsbFdpZHRoJywgJ2ludGVyYWN0aXZlJywgJ3JpcHBsZScsICdzb2Z0RGlzYWJsZWQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2xpY2snLCAnbWREcmFnU3RhcnQnLCAnbWREcmFnTW92ZScsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2FyZERyYWdEZXRhaWwgYXMgSU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2FyZCBleHRlbmRzIENvbXBvbmVudHMuTWRDYXJkIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYW4gaW50ZXJhY3RpdmUgY2FyZCBpcyBjbGlja2VkIG9yIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmRcbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxNb3VzZUV2ZW50Pj47XG4gIC8qKlxuICAgKiBFbWl0cyBvbmNlIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBzdGFydHMgYmVpbmcgZHJhZ2dlZCAoYWZ0ZXIgY3Jvc3NpbmcgdGhlIG1vdmVtZW50IHRocmVzaG9sZClcbiAgICovXG4gIG1kRHJhZ1N0YXJ0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIGNvbnRpbnVvdXNseSBhcyBhIGRyYWdnZWQgY2FyZCBtb3ZlcyDigJQgdXNlIGZvciBkcm9wLXpvbmUgZGV0ZWN0aW9uIG9yIHBvc2l0aW9uIHRyYWNraW5nXG4gICAqL1xuICBtZERyYWdNb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBkcmFnZ2FibGUgY2FyZCBpcyByZWxlYXNlZCBhZnRlciBkcmFnZ2luZ1xuICAgKi9cbiAgbWREcmFnRW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kQ2FyZE1kQ2FyZERyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2hlY2tib3gsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2luZGV0ZXJtaW5hdGUnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1jaGVja2JveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdpbmRldGVybWluYXRlJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRDaGVja2JveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGVja2JveCB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGNoZWNrZWQgb3IgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBjaGFuZ2VzXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgY2hlY2tlZDogYm9vbGVhbjsgaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ2hpcCxcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnY29udGVudEFsaWduJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLWNoaXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FwcGVhcmFuY2UnLCAnY29sb3InLCAnY29udGVudEFsaWduJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZWxldmF0ZWQnLCAnaWNvbicsICdsYWJlbCcsICdyZW1vdmFibGUnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdJY29uJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZENoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJywgJ21kU2VsZWN0JywgJ21kUmVtb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuTWRDaGlwIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoaXAgaXMgY2xpY2tlZCBvciBhY3RpdmF0ZWQgdmlhIGtleWJvYXJkXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0ZWQgc3RhdGUgY2hhbmdlcyAoZmlsdGVyL2lucHV0KVxuICAgKi9cbiAgbWRTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHRyYWlsaW5nIHJlbW92ZSAoXCLinJVcIikgYnV0dG9uIGlzIGFjdGl2YXRlZCBvbiBhIHJlbW92YWJsZVxuY2hpcCAoYnkgY2xpY2ssIEVudGVyLCBTcGFjZSwgRGVsZXRlLCBvciBCYWNrc3BhY2UpLlxuXG5UaGUgZXZlbnQgaXMgKipjYW5jZWxhYmxlKio6IGJ5IGRlZmF1bHQsIGFmdGVyIGBtZFJlbW92ZWAgaXMgZGlzcGF0Y2hlZFxudGhlIGNoaXAgcmVtb3ZlcyBpdHNlbGYgZnJvbSB0aGUgRE9NLiBDYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpbiBhXG5oYW5kbGVyIHRvIGtlZXAgdGhlIGNoaXAgbW91bnRlZCAoZS5nLiB3aGVuIHlvdXIgc3RhdGUgbGF5ZXIgb3ducyB0aGVcbmxpc3QgYW5kIHdpbGwgcmUtcmVuZGVyIHdpdGggdGhlIGNoaXAgZ29uZSkuXG4gICAqL1xuICBtZFJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kQ29sb3JQaWNrZXIsXG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdsb2NhbGUnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbHBoYScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2Zvcm1hdCcsICdsb2NhbGUnLCAnb3BlbicsICdwcmVzZXRzJywgJ3Nob3dIZXgnLCAnc2hvd0lucHV0cycsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRDb2xvclBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRPcGVuQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kQ29sb3JQaWNrZXIge1xuICAvKipcbiAgICogRW1pdHRlZCBvbiBldmVyeSBjaGFuZ2Ugd2hpbGUgdGhlIHVzZXIgZHJhZ3MgLyB0eXBlcy5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocmVsZWFzZSBwb2ludGVyLCBibHVyIGlucHV0LFxuRW50ZXIsIG9yIGNsaWNrIGEgcHJlc2V0KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcG9wb3ZlciBvcGVucyBvciBjbG9zZXMuXG4gICAqL1xuICBtZE9wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IG9wZW46IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWREYXRlUGlja2VyLFxuICBpbnB1dHM6IFsnY2FsZW5kYXJJY29uJywgJ2NhbmNlbExhYmVsJywgJ2Nob29zZU1vbnRoQW5kWWVhckxhYmVsJywgJ2Nob29zZU1vbnRoTGFiZWwnLCAnY2hvb3NlTW9udGhZZWFyTGFiZWwnLCAnY2hvb3NlWWVhckxhYmVsJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2Nsb3NlQ2FsZW5kYXJMYWJlbCcsICdjb21taXRPblNlbGVjdCcsICdkYXRlU2VwYXJhdG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJEYXRlc0xhYmVsJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWVsZFZhcmlhbnQnLCAnZmlyc3REYXlPZldlZWsnLCAnaGVhZGxpbmUnLCAnaW52YWxpZERhdGVMYWJlbCcsICdpc0RhdGVEaXNhYmxlZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ25leHRNb250aExhYmVsJywgJ25leHRZZWFyTGFiZWwnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29wZW5DYWxlbmRhckxhYmVsJywgJ291dHNpZGVDbGlja0Rpc21pc3NpYmxlJywgJ3BsYWNlaG9sZGVyJywgJ3ByZXZpb3VzTW9udGhMYWJlbCcsICdwcmV2aW91c1llYXJMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NjcmltRGlzbWlzc2libGUnLCAnc2VsZWN0RGF0ZUxhYmVsJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RvZ2dsZUNhbGVuZGFyTGFiZWwnLCAndG9nZ2xlVGV4dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAneWVhckdyaWRMYWJlbCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAnY2xlYXInLCAnZm9jdXNJbnB1dCcsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kYXRlLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY2FsZW5kYXJJY29uJywgJ2NhbmNlbExhYmVsJywgJ2Nob29zZU1vbnRoQW5kWWVhckxhYmVsJywgJ2Nob29zZU1vbnRoTGFiZWwnLCAnY2hvb3NlTW9udGhZZWFyTGFiZWwnLCAnY2hvb3NlWWVhckxhYmVsJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2Nsb3NlQ2FsZW5kYXJMYWJlbCcsICdjb21taXRPblNlbGVjdCcsICdkYXRlU2VwYXJhdG9yJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZW50ZXJEYXRlc0xhYmVsJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWVsZFZhcmlhbnQnLCAnZmlyc3REYXlPZldlZWsnLCAnaGVhZGxpbmUnLCAnaW52YWxpZERhdGVMYWJlbCcsICdpc0RhdGVEaXNhYmxlZCcsICdsYWJlbCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ25leHRNb250aExhYmVsJywgJ25leHRZZWFyTGFiZWwnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29wZW5DYWxlbmRhckxhYmVsJywgJ291dHNpZGVDbGlja0Rpc21pc3NpYmxlJywgJ3BsYWNlaG9sZGVyJywgJ3ByZXZpb3VzTW9udGhMYWJlbCcsICdwcmV2aW91c1llYXJMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3NjcmltRGlzbWlzc2libGUnLCAnc2VsZWN0RGF0ZUxhYmVsJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RvZ2dsZUNhbGVuZGFyTGFiZWwnLCAndG9nZ2xlVGV4dExhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAneWVhckdyaWRMYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kU2VsZWN0ZWQnLCAnbWRJbnB1dCcsICdtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZFZpZXdDaGFuZ2UnLCAnbWRNZW51T3BlbicsICdtZE1lbnVTZWxlY3QnLCAnbWRNb2RlQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlckNoYW5nZURldGFpbCBhcyBJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlclNlbGVjdGVkRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJTZWxlY3RlZERldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1lbnVPcGVuRGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZERhdGVQaWNrZXJNZW51U2VsZWN0RGV0YWlsIGFzIElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51U2VsZWN0RGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgYXMgSU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGF0ZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWREYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb21taXRzIGEgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRheSBpbiB0aGUgY2FsZW5kYXIgKGNsaWNrIG9yIGtleWJvYXJkKS5cbiAgICovXG4gIG1kU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWREYXRlUGlja2VyTWREYXRlUGlja2VyU2VsZWN0ZWREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkga2V5c3Ryb2tlIGluIGEgdGV4dC1lbnRyeSBmaWVsZC5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlciBjbG9zZXMgZm9yIGFueSByZWFzb24uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGRpc21pc3NlcyB3aXRob3V0IGNvbW1pdHRpbmcgKHNjcmltLCBDYW5jZWwsIEVzYykuXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgZGlzcGxheWVkIGNhbGVuZGFyIG1vbnRoL3llYXIgY2hhbmdlcyBmcm9tIHVzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1kVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJWaWV3Q2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgb3BlbnMgdGhlIG1vbnRoIG9yIHllYXIgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51T3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZERhdGVQaWNrZXJNZERhdGVQaWNrZXJNZW51T3BlbkRldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHBpY2tzIGEgbW9udGggb3IgeWVhciBmcm9tIGEgc2VsZWN0aW9uIG1lbnUgLyBncmlkLlxuICAgKi9cbiAgbWRNZW51U2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1lbnVTZWxlY3REZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIGJldHdlZW4gY2FsZW5kYXIgYW5kIHR5cGVkLWVudHJ5IHZpZXdzLlxuICAgKi9cbiAgbWRNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kRGF0ZVBpY2tlck1kRGF0ZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWREaWFsb2csXG4gIGlucHV0czogWydjYW5jZWxMYWJlbCcsICdjbG9zZUxhYmVsJywgJ2RlbnNpdHknLCAnZGl2aWRlcicsICdmdWxsc2NyZWVuJywgJ2hlYWRlckRpdmlkZXInLCAnaGVhZGxpbmUnLCAnaWNvbicsICdsb2NhbGUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ3NjcmltRGlzbWlzc2libGUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1kaWFsb2cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NhbmNlbExhYmVsJywgJ2Nsb3NlTGFiZWwnLCAnZGVuc2l0eScsICdkaXZpZGVyJywgJ2Z1bGxzY3JlZW4nLCAnaGVhZGVyRGl2aWRlcicsICdoZWFkbGluZScsICdpY29uJywgJ2xvY2FsZScsICdva0xhYmVsJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRGlhbG9nIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWREaWFsb2cgZXh0ZW5kcyBDb21wb25lbnRzLk1kRGlhbG9nIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGRpYWxvZyBvcGVuc1xuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZGlhbG9nIGNsb3Nlc1xuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gZGlzbWlzc2VkIHZpYSBzY3JpbSBvciBFc2NhcGVcbiAgICovXG4gIG1kQ2FuY2VsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWREaXZpZGVyLFxuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtZGl2aWRlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnaW5zZXQnLCAnaW5zZXRFbmQnLCAnaW5zZXRTdGFydCcsICd2ZXJ0aWNhbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRGl2aWRlciBleHRlbmRzIENvbXBvbmVudHMuTWREaXZpZGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZEZhYixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXh0ZW5kZWQnLCAnaWNvbicsICdsYWJlbCcsICdsb3dlcmVkJywgJ3JpcHBsZScsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXh0ZW5kZWQnLCAnaWNvbicsICdsYWJlbCcsICdsb3dlcmVkJywgJ3JpcHBsZScsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRGYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRmFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZEZhYiB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgRkFCIChtb3VzZSBjbGljaywgdG91Y2gsIG9yXG5gRW50ZXJgL2BTcGFjZWAgd2hpbGUgZm9jdXNlZCkuIE5vdCBlbWl0dGVkIHdoZW4gYGRpc2FibGVkYCBvclxuYHNvZnQtZGlzYWJsZWRgLiBCdWJibGVzIGFuZCBpcyBjb21wb3NlZCBzbyBhIGRlbGVnYXRlZCBsaXN0ZW5lclxub24gYSBwYXJlbnQgZWxlbWVudCB3b3Jrcy5cblxuYGBgdHNcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21kLWZhYicpIS5hZGRFdmVudExpc3RlbmVyKCdtZENsaWNrJywgKGUpID0+IHtcbiAgY29uc3QgbW91c2VFdmVudCA9IChlIGFzIEN1c3RvbUV2ZW50PE1vdXNlRXZlbnQ+KS5kZXRhaWw7XG4gIGNvbnNvbGUubG9nKCdGQUIgY2xpY2tlZCBhdCcsIG1vdXNlRXZlbnQuY2xpZW50WCwgbW91c2VFdmVudC5jbGllbnRZKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8TW91c2VFdmVudD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRGYWJNZW51LFxuICBpbnB1dHM6IFsnYW5jaG9yJywgJ2RlbnNpdHknLCAnbWVudUxhYmVsJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5jaG9yJywgJ2RlbnNpdHknLCAnbWVudUxhYmVsJywgJ29wZW4nLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEZhYk1lbnUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZEZhYk1lbnUgZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiTWVudSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBtZW51IG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRGYWJNZW51SXRlbSxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc29mdERpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1mYWItbWVudS1pdGVtJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAncm92aW5nRm9jdXNWaXNpYmxlJywgJ3NvZnREaXNhYmxlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kRmFiTWVudUl0ZW0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kRmFiTWVudUl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kRmFiTWVudUl0ZW0ge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgaXRlbSBpcyBhY3RpdmF0ZWQuXG4gICAqL1xuICBtZENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRJY29uQnV0dG9uLFxuICBpbnB1dHM6IFsnYnV0dG9uV2lkdGgnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdocmVmJywgJ2ljb24nLCAncmlwcGxlJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaGFwZScsICdzaGFwZU1vcnBoJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCcsICd0b2dnbGUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtaWNvbi1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2J1dHRvbldpZHRoJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ3JpcHBsZScsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hhcGUnLCAnc2hhcGVNb3JwaCcsICdzaXplJywgJ3NvZnREaXNhYmxlZCcsICd0YXJnZXQnLCAndG9nZ2xlJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZEljb25CdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kSWNvbkJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRJY29uQnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIHBvaW50ZXIgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbi4gRGV0YWlsIGluY2x1ZGVzIHRvZ2dsZSBgc2VsZWN0ZWRgIHN0YXRlLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRMaW5lQ2hhcnQsXG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG4gIG1ldGhvZHM6IFsncmVmcmVzaFRoZW1lJywgJ3Jlc2l6ZScsICdyZXBsYXknLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJywgJ3NldFpvb20nLCAncmVzZXRab29tJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saW5lLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYW5pbWF0aW9uRHVyYXRpb24nLCAnYXJlYScsICdheGlzVGlja3MnLCAnY29ubmVjdE51bGxzJywgJ2N1cnZlJywgJ2RlbnNpdHknLCAnZ3JpZCcsICdoZWlnaHRQcm9wJywgJ2ludmVydGVkJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxQbG90JywgJ2xhYmVsUG9pbnQnLCAnbGFiZWxab29tRW5kJywgJ2xhYmVsWm9vbVN0YXJ0JywgJ2xlZ2VuZCcsICdsaW5lV2lkdGgnLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbG9jYWxlJywgJ21hcmtMaW5lcycsICdtYXJrU2l6ZScsICdub0FuaW1hdGlvbicsICdzZXJpZXMnLCAnc2VyaWVzTGFiZWxzJywgJ3Nob3dMYWJlbHMnLCAnc2hvd0xpbmUnLCAnc2hvd01hcmtzJywgJ3N0YWNrJywgJ3N1YnRpdGxlJywgJ3N1bW1hcnknLCAndGFibGVMYWJlbHMnLCAndGl0bGVBbGlnbicsICd0b29sdGlwJywgJ3Rvb2x0aXBSZW5kZXJlcicsICd2YWx1ZUZvcm1hdHRlcicsICd4QXhpcycsICd5QXhlcycsICd5QXhpcycsICd6b29tJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRMaW5lQ2hhcnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE1hcmtlckNsaWNrJywgJ21kTGluZUNsaWNrJywgJ21kQXJlYUNsaWNrJywgJ21kQXhpc0NsaWNrJywgJ21kTGVnZW5kQ2xpY2snLCAnbWRIb3ZlcicsICdtZFJlYWR5JywgJ21kWm9vbSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRDaGFydENsaWNrRGV0YWlsIGFzIElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0WFlTZXJpZXMgYXMgSU1kTGluZUNoYXJ0TWRDaGFydFhZU2VyaWVzIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWwgYXMgSU1kTGluZUNoYXJ0TWRDaGFydEF4aXNDbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZENoYXJ0SG92ZXJEZXRhaWwgYXMgSU1kTGluZUNoYXJ0TWRDaGFydEhvdmVyRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZExpbmVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRMaW5lQ2hhcnQge1xuICAvKipcbiAgICogRmlyZXMgb24gbWFya2VyIGNsaWNrLiBgZGF0YUluZGV4YCBhZGRyZXNzZXMgdGhlIGNsaWNrZWQgc2VyaWVzJyBvd25cbmBkYXRhYCBhcnJheSAoaXRzIHBvaW50IGluZGV4LCBmb3Igc2VyaWVzIHRoYXQgY2FycnkgdGhlaXIgb3duIHgpLlxuICAgKi9cbiAgbWRNYXJrZXJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRDbGlja0RldGFpbDxJTWRMaW5lQ2hhcnRNZENoYXJ0WFlTZXJpZXM+Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2VyaWVzJyBkcmF3biBsaW5lIGlzIGNsaWNrZWQgKmJldHdlZW4qIGl0cyBkYXRhIHBvaW50cyAoYVxuY2xpY2sgb24gYSBwb2ludCBlbWl0cyBgbWRNYXJrZXJDbGlja2AgaW5zdGVhZCkuIGBkYXRhSW5kZXhgIGlzIHRoZSBwb2ludFxudGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kTGluZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzZXJpZXMnIGZpbGxlZCBhcmVhIGlzIGNsaWNrZWQgKGBhcmVhYCBjaGFydHMgb25seSkg4oCUIHRoZVxucmVnaW9uIGJldHdlZW4gdGhhdCBzZXJpZXMnIGxpbmUgYW5kIGl0cyBiYXNlbGluZSwgZXhjbHVkaW5nIGl0cyBsaW5lIGFuZFxucG9pbnRzLiBgZGF0YUluZGV4YCBpcyB0aGUgcG9pbnQgdGhlIGNsaWNrIGlzIG5lYXJlc3QgYWxvbmcgeC5cbiAgICovXG4gIG1kQXJlYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGluZUNoYXJ0TWRDaGFydENsaWNrRGV0YWlsPElNZExpbmVDaGFydE1kQ2hhcnRYWVNlcmllcz4+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBsb3QgYmFja2dyb3VuZCBpcyBjbGlja2VkIChpbnNpZGUgdGhlIHBsb3QsIGJ1dCBub3Qgb24gYVxubWFyaywgbGluZSBvciBhcmVhKTogdGhlIG5lYXJlc3QgeCBwb3NpdGlvbiBwbHVzIGV2ZXJ5IHZpc2libGUgc2VyaWVzJ1xudmFsdWUgdGhlcmUuXG4gICAqL1xuICBtZEF4aXNDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZExpbmVDaGFydE1kQ2hhcnRBeGlzQ2xpY2tEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBsZWdlbmQgZW50cnkgaXMgY2xpY2tlZC5cbiAgICovXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlcmllc0luZGV4OiBudW1iZXI7IHNlcmllc0lkPzogc3RyaW5nOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyAodGhyb3R0bGVkIHRvIHJBRikgYXMgdGhlIHBvaW50ZXIgY3Jvc3NlcyB0aGUgcGxvdC5cbiAgICovXG4gIG1kSG92ZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaW5lQ2hhcnRNZENoYXJ0SG92ZXJEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIHRoZSBjaGFydCBmaW5pc2hlcyBpdHMgaW5pdGlhbCByZW5kZXIuXG4gICAqL1xuICBtZFJlYWR5OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgem9vbSB3aW5kb3cgY2hhbmdlcyAoZHJhZywgc2xpZGVyIG9yIGBzZXRab29tYC9gcmVzZXRab29tYCkuXG4gICAqL1xuICBtZFpvb206IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgcmVzZXQ6IGJvb2xlYW4gfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRMaXN0LFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGFiZWwnLCAnbGFiZWxsZWRieScsICdsaXN0U3R5bGUnLCAncmVvcmRlcmFibGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGlvbk1vZGUnXSxcbiAgbWV0aG9kczogWydhY3RpdmF0ZU5leHQnLCAnYWN0aXZhdGVQcmV2aW91cycsICdzZWxlY3RJdGVtJywgJ2dldFNlbGVjdGVkSW5kaWNlcyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGFiZWwnLCAnbGFiZWxsZWRieScsICdsaXN0U3R5bGUnLCAncmVvcmRlcmFibGUnLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGlvbk1vZGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNlbGVjdCcsICdtZEFjdGl2YXRlJywgJ21kUmVvcmRlciddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0U2VsZWN0RGV0YWlsIGFzIElNZExpc3RNZExpc3RTZWxlY3REZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdCBleHRlbmRzIENvbXBvbmVudHMuTWRMaXN0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcyB2aWEgdXNlciBpbnB1dCAoY2xpY2sgLyBFbnRlciAvIFNwYWNlKS5cbiAgICovXG4gIG1kU2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kTGlzdE1kTGlzdFNlbGVjdERldGFpbD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuZXZlciByb3ZpbmcgZm9jdXMgbGFuZHMgb24gYSBkaWZmZXJlbnQgcm93LlxuICAgKi9cbiAgbWRBY3RpdmF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgaXRlbTogSFRNTE1kTGlzdEl0ZW1FbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgYSBkcmFnIChvciBrZXlib2FyZCkgcmVvcmRlciBjb21wbGV0ZXMuXG5cbi0gYGZyb21gIC8gYHRvYDogdGhlIG1vdmVkIHJvdydzIG9sZCBhbmQgbmV3IHBvc2l0aW9ucyAoaXRlbSBpbmRpY2VzLFxuICBpZ25vcmluZyBub24taXRlbSBjaGlsZHJlbiBsaWtlIGRpdmlkZXJzKS5cbi0gYG9yZGVyYDogdGhlIG5ldyBvcmRlciBleHByZXNzZWQgYXMgdGhlIG9yaWdpbmFsIChhcy1hdXRob3JlZCkgaW5kaWNlcyxcbiAgc28gYG9yZGVyW25ld1Bvc2l0aW9uXSA9PT0gb3JpZ2luYWxQb3NpdGlvbmAuIFVzZSBpdCB0byByZW9yZGVyIGFcbiAgYmFja2luZyBkYXRhIGFycmF5IGluIG9uZSBwYXNzLlxuICAgKi9cbiAgbWRSZW9yZGVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBmcm9tOiBudW1iZXI7IHRvOiBudW1iZXI7IG9yZGVyOiBudW1iZXJbXSB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZExpc3RJdGVtLFxuICBpbnB1dHM6IFsnY29udGFpbmVyUm9sZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGFibGUnLCAnZXhwYW5kZWQnLCAnaGVhZGxpbmUnLCAnaHJlZicsICdpbnRlcmFjdGlvbk1vZGUnLCAnbGVhZGluZ0F2YXRhcicsICdsZWFkaW5nQXZhdGFyQWx0JywgJ2xlYWRpbmdBdmF0YXJMYWJlbCcsICdsZWFkaW5nQXZhdGFyTmFtZScsICdsZWFkaW5nSWNvbicsICdsZWFkaW5nSW1hZ2UnLCAnbGVhZGluZ0ltYWdlQWx0JywgJ2xpbmVzJywgJ292ZXJsaW5lJywgJ3Jlb3JkZXJhYmxlJywgJ3JvdmluZ0ZvY3VzVmlzaWJsZScsICdzZWxlY3RlZCcsICdzZWxlY3Rpb25Nb2RlJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0YWJiYWJsZScsICd0YXJnZXQnLCAndHJhaWxpbmdJY29uJywgJ3RyYWlsaW5nU3VwcG9ydGluZ1RleHQnLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ2ZvY3VzSXRlbScsICd0b2dnbGUnLCAnZXhwYW5kJywgJ2NvbGxhcHNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1saXN0LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbnRhaW5lclJvbGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdleHBhbmRhYmxlJywgJ2V4cGFuZGVkJywgJ2hlYWRsaW5lJywgJ2hyZWYnLCAnaW50ZXJhY3Rpb25Nb2RlJywgJ2xlYWRpbmdBdmF0YXInLCAnbGVhZGluZ0F2YXRhckFsdCcsICdsZWFkaW5nQXZhdGFyTGFiZWwnLCAnbGVhZGluZ0F2YXRhck5hbWUnLCAnbGVhZGluZ0ljb24nLCAnbGVhZGluZ0ltYWdlJywgJ2xlYWRpbmdJbWFnZUFsdCcsICdsaW5lcycsICdvdmVybGluZScsICdyZW9yZGVyYWJsZScsICdyb3ZpbmdGb2N1c1Zpc2libGUnLCAnc2VsZWN0ZWQnLCAnc2VsZWN0aW9uTW9kZScsICdzb2Z0RGlzYWJsZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGFiYmFibGUnLCAndGFyZ2V0JywgJ3RyYWlsaW5nSWNvbicsICd0cmFpbGluZ1N1cHBvcnRpbmdUZXh0JywgJ3R5cGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZExpc3RJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljaycsICdtZEl0ZW1DbGljaycsICdtZEl0ZW1TZWxlY3QnLCAnbWRSZXF1ZXN0QWN0aXZhdGlvbicsICdtZEl0ZW1SZXF1ZXN0UmVvcmRlcicsICdtZEV4cGFuZCddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRMaXN0SXRlbUV4cGFuZERldGFpbCBhcyBJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTGlzdEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLk1kTGlzdEl0ZW0ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBpbnRlcmFjdGl2ZSByb3cgaXMgYWN0aXZhdGVkIChjbGljaywgRW50ZXIsIG9yIFNwYWNlKS5cbiAgICovXG4gIG1kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGl0ZW06IEhUTUxFbGVtZW50IH0+PjtcbiAgLyoqXG4gICAqIEJ1YmJsZXMgdG8gcGFyZW50IGBtZC1saXN0YCBzbyBpdCBjYW4gbWFuYWdlIHNlbGVjdGlvbiBzdGF0ZS5cbiAgICovXG4gIG1kSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBCdWJibGVzIHRvIHBhcmVudCBgbWQtbGlzdGAgd2hlbiBhbiBgZXhwYW5kZWQtY29udGVudGAgY2hpbGQgcm93IGlzXG5zZWxlY3RlZC4gVGhlIGxpc3QgcmUtZW1pdHMgYG1kU2VsZWN0YCB3aXRoIHRoZSBwYXJlbnQncyBsaXN0IGluZGV4LFxuYGNoaWxkSW5kZXhgLCBgZXhwYW5kZWRgLCBhbmQgdGhlIGNoaWxkIGluIGBpdGVtYC5cbiAgICovXG4gIG1kSXRlbVNlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgdmFsdWU6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW47IGl0ZW06IEhUTUxNZExpc3RJdGVtRWxlbWVudDsgfT4+O1xuICAvKipcbiAgICogQXNrcyB0aGUgcGFyZW50IGBtZC1saXN0YCB0byBnaXZlIHRoaXMgcm93IHJvdmluZyBmb2N1cy5cbiAgICovXG4gIG1kUmVxdWVzdEFjdGl2YXRpb246IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBJbnRlcm5hbCBldmVudCB0aGUgcGFyZW50IGBtZC1saXN0YCBsaXN0ZW5zIHRvIGZvciBrZXlib2FyZCByZW9yZGVyaW5nXG4oYEFsdCArIEFycm93VXAgLyBBcnJvd0Rvd25gKS4gQnViYmxlcyArIGNvbXBvc2VkIHNvIGl0IGNyb3NzZXMgdGhlXG5zaGFkb3cgYm91bmRhcnkgdXAgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBtZEl0ZW1SZXF1ZXN0UmVvcmRlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nOyBmcm9tOiBudW1iZXI7IH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBleHBhbmRlZCBzdGF0ZSBvZiBhbiBleHBhbmRhYmxlIHJvdyBjaGFuZ2VzLlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRMaXN0SXRlbU1kTGlzdEl0ZW1FeHBhbmREZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTG9hZGluZ0luZGljYXRvcixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbG9hZGluZy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTG9hZGluZ0luZGljYXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTG9hZGluZ0luZGljYXRvciBleHRlbmRzIENvbXBvbmVudHMuTWRMb2FkaW5nSW5kaWNhdG9yIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE1lbnUsXG4gIGlucHV0czogWydhbmNob3InLCAnYXV0b0ZvY3VzJywgJ2RlbnNpdHknLCAnZW1wdHlUZXh0JywgJ2xheW91dCcsICdsaXN0TGFiZWwnLCAnbGlzdGJveCcsICdtYXRjaEFuY2hvcldpZHRoJywgJ21heEhlaWdodCcsICdvcGVuJywgJ3BlcnNpc3RlbnQnLCAncGxhY2VtZW50JywgJ3F1aWNrJywgJ3Jlc3BvbnNpdmUnLCAndXNlR2FwJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRDb21ib2JveEVsZW1lbnQnLCAnc2V0VmlydHVhbFByb3ZpZGVyJywgJ2dldFNjcm9sbFZpZXdwb3J0JywgJ3Nob3cnLCAncmVwb3NpdGlvbicsICdjbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtbWVudScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5jaG9yJywgJ2F1dG9Gb2N1cycsICdkZW5zaXR5JywgJ2VtcHR5VGV4dCcsICdsYXlvdXQnLCAnbGlzdExhYmVsJywgJ2xpc3Rib3gnLCAnbWF0Y2hBbmNob3JXaWR0aCcsICdtYXhIZWlnaHQnLCAnb3BlbicsICdwZXJzaXN0ZW50JywgJ3BsYWNlbWVudCcsICdxdWljaycsICdyZXNwb25zaXZlJywgJ3VzZUdhcCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRNZW51IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRNZW51IGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbWVudSBvcGVucy4gU2NvcGVkIHRvIHRoZSBtZW51IGVsZW1lbnQ6IGBidWJibGVzOiBmYWxzZWBcbnN0b3BzIGl0IGNsaW1iaW5nIHRoZSBsaWdodC1ET00gdHJlZSwgYW5kIGBjb21wb3NlZDogZmFsc2VgIHN0b3BzIGl0XG5lc2NhcGluZyB0aGUgc2hhZG93IHJvb3Qgb2YgYSBob3N0IHRoYXQgZW1iZWRzIHRoaXMgbWVudSAobWQtc2VsZWN0LFxubWQtbXVsdGktc2VsZWN0LCBtZC1kYXRlLXBpY2tlciDigKYpLiBXaXRob3V0IGBjb21wb3NlZDogZmFsc2VgIGFcbmBjb21wb3NlZGAgZXZlbnQgc3RpbGwgc3VyZmFjZXMgYXQgdGhlIGVtYmVkZGluZyBob3N0IGFzIGFuXG5gQVRfVEFSR0VUYCBldmVudCDigJQgc28gYSBjb25zdW1lcidzIGBtZE9wZW5gIGxpc3RlbmVyIG9uIHRoZSB3cmFwcGVyXG53b3VsZCBmaXJlIGZvciBib3RoIHRoZSB3cmFwcGVyJ3Mgb3duIGV2ZW50IGFuZCB0aGlzIGlubmVyIG9uZVxuKGR1cGxpY2F0ZSBvcGVuL2Nsb3NlKS4gV3JhcHBlcnMgbGlzdGVuIHZpYSBgb25NZE9wZW5gIG9uIHRoZSBtZW51XG5lbGVtZW50IGl0c2VsZiwgd2hpY2ggc3RpbGwgZmlyZXMgcmVnYXJkbGVzcy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLiBTY29wZWQgbGlrZSBgbWRPcGVuYCDigJQgc2VlIGl0cyBub3RlLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTWVudUl0ZW0sXG4gIGlucHV0czogWydiYWRnZScsICdjaGVja1Bvc2l0aW9uJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnaW5kZXRlcm1pbmF0ZScsICdrZWVwT3BlbicsICdwcmVzZW50YXRpb24nLCAncm9sZU92ZXJyaWRlJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyYWlsaW5nVGV4dCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tZW51LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2NoZWNrUG9zaXRpb24nLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdpbmRldGVybWluYXRlJywgJ2tlZXBPcGVuJywgJ3ByZXNlbnRhdGlvbicsICdyb2xlT3ZlcnJpZGUnLCAnc2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJhaWxpbmdUZXh0JywgJ3R5cGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZE1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gaXMgYWN0aXZhdGVkLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTWVudUl0ZW1Hcm91cCxcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW1lbnUtaXRlbS1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdsYWJlbCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTWVudUl0ZW1Hcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTWVudUl0ZW1Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuTWRNZW51SXRlbUdyb3VwIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE1ldGVyLFxuICBpbnB1dHM6IFsnY29sb3InLCAnZGVuc2l0eScsICdmb3JtYXRPcHRpb25zJywgJ2xhYmVsJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ3Nob3dMYWJlbCcsICdzaG93VmFsdWUnLCAnc2l6ZScsICd0aGlja25lc3MnLCAndmFsdWUnLCAndmFsdWVUZXh0JywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW1ldGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb2xvcicsICdkZW5zaXR5JywgJ2Zvcm1hdE9wdGlvbnMnLCAnbGFiZWwnLCAnbG9jYWxlJywgJ21heCcsICdtaW4nLCAnc2hvd0xhYmVsJywgJ3Nob3dWYWx1ZScsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTWV0ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE1ldGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZE1ldGVyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE11bHRpU2VsZWN0LFxuICBpbnB1dHM6IFsnY2hpcE92ZXJmbG93JywgJ2NoaXBQb3NpdGlvbicsICdjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnY291bnRGb3JtYXR0ZXInLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXNwbGF5TW9kZScsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdsYWJlbCcsICdsb2FkaW5nJywgJ2xvYWRpbmdUZXh0JywgJ21hdGNoVHJpZ2dlcldpZHRoJywgJ21heEhlaWdodCcsICdtYXhTZWxlY3RlZCcsICduYW1lJywgJ25vT3B0aW9uc1RleHQnLCAnbm9SZXN1bHRzVGV4dCcsICdvcGVuJywgJ29wdGlvbnMnLCAncGxhY2Vob2xkZXInLCAncGxhY2VtZW50JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncm93SGVpZ2h0JywgJ3NlYXJjaFBsYWNlaG9sZGVyJywgJ3NlYXJjaGluZ0xhYmVsJywgJ3NlbGVjdEFsbExhYmVsJywgJ3Nob3dTZWxlY3RBbGwnLCAnc29mdERpc2FibGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3RyaWdnZXInLCAndHJpZ2dlckljb24nLCAndHJpZ2dlckxhYmVsJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnLCAndmlydHVhbGl6ZSddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAnZm9jdXNUcmlnZ2VyJywgJ3Jlc2V0JywgJ2xvYWRPcHRpb25zJywgJ3NldFF1ZXJ5JywgJ2dldExhYmVscycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1tdWx0aS1zZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NoaXBPdmVyZmxvdycsICdjaGlwUG9zaXRpb24nLCAnY2xlYXJJY29uJywgJ2NsZWFyTGFiZWwnLCAnY2xlYXJhYmxlJywgJ2NvdW50Rm9ybWF0dGVyJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzcGxheU1vZGUnLCAnZHJvcGRvd25JY29uJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmaWx0ZXJMYWJlbCcsICdmaWx0ZXJNb2RlJywgJ2ZpbHRlcmFibGUnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbWF4U2VsZWN0ZWQnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzZWFyY2hQbGFjZWhvbGRlcicsICdzZWFyY2hpbmdMYWJlbCcsICdzZWxlY3RBbGxMYWJlbCcsICdzaG93U2VsZWN0QWxsJywgJ3NvZnREaXNhYmxlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd0cmlnZ2VyJywgJ3RyaWdnZXJJY29uJywgJ3RyaWdnZXJMYWJlbCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50JywgJ3ZpcnR1YWxpemUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE11bHRpU2VsZWN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRSZW1vdmUnLCAnbWRDbGVhcicsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTXVsdGlTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kTXVsdGlTZWxlY3Qge1xuICAvKipcbiAgICogRW1pdHMgdGhlIGZ1bGwgc2VsZWN0ZWQtdmFsdWUgYXJyYXkgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgbWVudSBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIG1lbnUgY2xvc2VzLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSByZW1vdmVkIHZhbHVlIHdoZW4gYSBjaGlwIGlzIGRpc21pc3NlZC5cbiAgICovXG4gIG1kUmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBjbGVhciBidXR0b24gZW1wdGllcyB0aGUgc2VsZWN0aW9uLlxuICAgKi9cbiAgbWRDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBsaWtlIG1kLXNlbGVjdCBlbWJlZCBhblxubWQtdGV4dC1maWVsZCwgYW5kIGEgY29tcG9zZWQgZXZlbnQgZXNjYXBlcyB0aGF0IGlubmVyIHNoYWRvdyByb290LCBzbyBhXG5saXN0ZW5lciBvbiBtZC1zZWxlY3Qgd291bGQgcmVjZWl2ZSB0aGUgaW5uZXIgZmllbGQncyBldmVudCBhcyB3ZWxsIGFzIHRoZVxuaG9zdCdzIOKAlCB0d28gZXZlbnRzLCBkaWZmZXJlbnQgcGF5bG9hZHMsIGZvciBvbmUgbG9naWNhbCBjb250cm9sLiBLZWVwaW5nXG5pdCB1bmNvbXBvc2VkIG1lYW5zIGVhY2ggY29tcG9uZW50IHJlcG9ydHMgb25seSBmb3IgaXRzZWxmLCB3aGlsZVxuYGJ1YmJsZXM6IHRydWVgIHN0aWxsIGxldHMgYSA8Zm9ybT4gb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWROYXZpZ2F0aW9uQmFyLFxuICBpbnB1dHM6IFsnYWN0aXZlSW5kZXgnLCAnZGVuc2l0eScsICdsYWJlbEJlaGF2aW9yJywgJ21hbnVhbEFjdGl2YXRpb24nXSxcbiAgbWV0aG9kczogWydzZWxlY3QnLCAnZm9jdXNUYWInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVJbmRleCcsICdkZW5zaXR5JywgJ2xhYmVsQmVoYXZpb3InLCAnbWFudWFsQWN0aXZhdGlvbiddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvbkJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvbkJhciBleHRlbmRzIENvbXBvbmVudHMuTWROYXZpZ2F0aW9uQmFyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZGVzdGluYXRpb24gY2hhbmdlcyAodXNlciBjbGljayxcbmtleWJvYXJkIGFjdGl2YXRpb24sIG9yIHByb2dyYW1tYXRpYyBgc2VsZWN0KClgIGNhbGwpLlxuRGV0YWlsIGluY2x1ZGVzIGJvdGggdGhlIG5ldyBhbmQgcHJldmlvdXMgaW5kaWNlcyBzbyBsaXN0ZW5lcnNcbmNhbiBzaG9ydC1jaXJjdWl0IG5vLW9wIHJlc2VsZWN0cy5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91c0luZGV4OiBudW1iZXIgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWROYXZpZ2F0aW9uUmFpbCxcbiAgaW5wdXRzOiBbJ2FjdGl2ZUluZGV4JywgJ2FsaWdubWVudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVGb2N1c01hbmFnZW1lbnQnLCAnZXhwYW5kYWJsZScsICdmdWxsSGVpZ2h0JywgJ2xhYmVsJywgJ2xhYmVsVmlzaWJpbGl0eScsICdtYXhWaXNpYmxlJywgJ21vZGFsJywgJ29yaWVudGF0aW9uJywgJ292ZXJmbG93SWNvbicsICdvdmVyZmxvd0xhYmVsJywgJ3RvZ2dsZUxhYmVsJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydleHBhbmQnLCAnY29sbGFwc2UnLCAndG9nZ2xlJywgJ2ZvY3VzVGFiJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1uYXZpZ2F0aW9uLXJhaWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZUluZGV4JywgJ2FsaWdubWVudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVGb2N1c01hbmFnZW1lbnQnLCAnZXhwYW5kYWJsZScsICdmdWxsSGVpZ2h0JywgJ2xhYmVsJywgJ2xhYmVsVmlzaWJpbGl0eScsICdtYXhWaXNpYmxlJywgJ21vZGFsJywgJ29yaWVudGF0aW9uJywgJ292ZXJmbG93SWNvbicsICdvdmVyZmxvd0xhYmVsJywgJ3RvZ2dsZUxhYmVsJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE5hdmlnYXRpb25SYWlsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRUYWJDaGFuZ2UnLCAnbWRFeHBhbmQnLCAnbWRDb2xsYXBzZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE5hdmlnYXRpb25SYWlsIGV4dGVuZHMgQ29tcG9uZW50cy5NZE5hdmlnYXRpb25SYWlsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZGVzdGluYXRpb24uXG4gICAqL1xuICBtZFRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlcjsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHJhaWwgdHJhbnNpdGlvbnMgZnJvbSBjb2xsYXBzZWQg4oaSIGV4cGFuZGVkLlxuICAgKi9cbiAgbWRFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHJhaWwgdHJhbnNpdGlvbnMgZnJvbSBleHBhbmRlZCDihpIgY29sbGFwc2VkLlxuICAgKi9cbiAgbWRDb2xsYXBzZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTmF2aWdhdGlvblJhaWxUYWIsXG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXJTdWJtZW51U2VsZWN0aW9uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1uYXZpZ2F0aW9uLXJhaWwtdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYmFkZ2UnLCAnYmFkZ2VWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2V4cGFuZGVkJywgJ2hyZWYnLCAnaWNvbicsICdsYWJlbCcsICdsYWJlbFZpc2liaWxpdHknLCAndGFyZ2V0JywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWROYXZpZ2F0aW9uUmFpbFRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kVGFiQ2xpY2snLCAnbWRTdWJtZW51VG9nZ2xlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTmF2aWdhdGlvblJhaWxUYWIgZXh0ZW5kcyBDb21wb25lbnRzLk1kTmF2aWdhdGlvblJhaWxUYWIge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBhY3RpdmF0ZXMgdGhlIGRlc3RpbmF0aW9uIChjbGljayAvIEVudGVyIC8gU3BhY2UpLlxuICAgKi9cbiAgbWRUYWJDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoaXMgZGVzdGluYXRpb24ncyBzbG90dGVkIGRyb3Bkb3duIG9wZW5zIG9yIGNsb3Nlcy4gYG1kLW1lbnVgJ3Ncbm93biBgbWRPcGVuYCAvIGBtZENsb3NlYCBhcmUgZGVsaWJlcmF0ZWx5IG5vbi1idWJibGluZyBhbmQgbm9uLWNvbXBvc2VkLCBzb1xudGhlIHJhaWwgaGFzIG5vIHdheSB0byBoZWFyIHRoZW0g4oCUIHRoaXMgaXMgdGhlIHNpZ25hbCBpdCBsaXN0ZW5zIGZvciAoaXRcbmxpZnRzIGl0cyBzdGFja2luZyBjb250ZXh0IHNvIHRoZSBmaXhlZC1wb3NpdGlvbiBtZW51IGlzIG5vdCB0cmFwcGVkKS5cbiAgICovXG4gIG1kU3VibWVudVRvZ2dsZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgb3BlbjogYm9vbGVhbiB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE5hdmlnYXRpb25UYWIsXG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ2ZvY3VzRWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW5hdmlnYXRpb24tdGFiJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnLCAnYWN0aXZlSWNvbicsICdiYWRnZScsICdiYWRnZU1heCcsICdiYWRnZVZhbHVlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaHJlZicsICdpY29uJywgJ2xhYmVsJywgJ2xhYmVsQmVoYXZpb3InLCAnc29mdERpc2FibGVkJywgJ3RhcmdldCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kTmF2aWdhdGlvblRhYiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kVGFiQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWROYXZpZ2F0aW9uVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZE5hdmlnYXRpb25UYWIge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdGFiIGlzIGFjdGl2YXRlZCAoY2xpY2ssIEVudGVyLCBvciBTcGFjZSkgYW5kIHRoZSB0YWIgaXNcbm5vdCBkaXNhYmxlZC4gVGhlIHBhcmVudCBgbWQtbmF2aWdhdGlvbi1iYXJgIGxpc3RlbnMgZm9yIHRoaXMgdG8gZHJpdmVcbnNlbGVjdGlvbjsgZXh0ZXJuYWwgY29kZSBtYXkgYWxzbyBsaXN0ZW4gdG8gZGV0ZWN0IHBlci10YWIgYWN0aXZhdGlvblxuKGluY2x1ZGluZyBhIHJlLWNsaWNrIG9mIHRoZSBhbHJlYWR5LWFjdGl2ZSB0YWIsIHdoaWNoIGRvZXMgbm90IGVtaXRcbmBtZENoYW5nZWAgb24gdGhlIGJhcikuXG4gICAqL1xuICBtZFRhYkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kTnVtYmVyRmllbGQsXG4gIGlucHV0czogWydhbGxvd091dE9mUmFuZ2UnLCAnYWxsb3dXaGVlbFNjcnViJywgJ2RlY3JlbWVudExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2Zvcm1hdE9wdGlvbnMnLCAnaW5jcmVtZW50TGFiZWwnLCAnbGFiZWwnLCAnbGFyZ2VTdGVwJywgJ2xvY2FsZScsICdtYXgnLCAnbWluJywgJ25hbWUnLCAncGxhY2Vob2xkZXInLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzbWFsbFN0ZXAnLCAnc25hcE9uU3RlcCcsICdzdGVwJywgJ3N0ZXBwZXJzJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdzZWxlY3QnLCAnc3RlcFVwJywgJ3N0ZXBEb3duJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLW51bWJlci1maWVsZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWxsb3dPdXRPZlJhbmdlJywgJ2FsbG93V2hlZWxTY3J1YicsICdkZWNyZW1lbnRMYWJlbCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdmb3JtYXRPcHRpb25zJywgJ2luY3JlbWVudExhYmVsJywgJ2xhYmVsJywgJ2xhcmdlU3RlcCcsICdsb2NhbGUnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc21hbGxTdGVwJywgJ3NuYXBPblN0ZXAnLCAnc3RlcCcsICdzdGVwcGVycycsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWROdW1iZXJGaWVsZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kSW5wdXQnLCAnbWRDaGFuZ2UnLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWROdW1iZXJGaWVsZENoYW5nZURldGFpbCBhcyBJTWROdW1iZXJGaWVsZE1kTnVtYmVyRmllbGRDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kTnVtYmVyRmllbGQgZXh0ZW5kcyBDb21wb25lbnRzLk1kTnVtYmVyRmllbGQge1xuICAvKipcbiAgICogRmlyZXMgb24gZXZlcnkgdmFsdWUgY2hhbmdlICh0eXBpbmcgaW5jbHVkZWQpLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZE51bWJlckZpZWxkTWROdW1iZXJGaWVsZENoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgYXQgY29tbWl0IHBvaW50czogYmx1ci9FbnRlciByZWZvcm1hdCwgc3RlcHBpbmcsIHdoZWVsLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWROdW1iZXJGaWVsZE1kTnVtYmVyRmllbGRDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhpcyBjb250cm9sJ3MgdmFsaWRpdHkgQ0hBTkdFUyDigJQgbmV2ZXIgb24gZXZlcnkga2V5c3Ryb2tlLCBhbmRcbm5ldmVyIGZvciBhIHJlLXB1Ymxpc2ggdGhhdCBsYW5kcyBvbiB0aGUgc2FtZSBzdGF0ZS5cblxuYGNvbXBvc2VkOiBmYWxzZWAgaXMgZGVsaWJlcmF0ZS4gQ29tcG9zaXRlcyBlbWJlZGRpbmcgYSBmaWVsZCB3b3VsZFxub3RoZXJ3aXNlIGhlYXIgdHdvIGV2ZW50cyBmb3Igb25lIGxvZ2ljYWwgY29udHJvbDsgYGJ1YmJsZXM6IHRydWVgIHN0aWxsXG5sZXRzIGEgYDxmb3JtPmAgb3IgYXBwIHJvb3QgaGVhciBldmVyeSBjb250cm9sLlxuICAgKi9cbiAgbWRWYWxpZGl0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsaWQ6IGJvb2xlYW47IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7IGZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgfT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRPcmdhbml6YXRpb25DaGFydCxcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1vcmdhbml6YXRpb24tY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2NvbGxhcHNlTGFiZWwnLCAnY29sbGFwc2libGUnLCAnZGVuc2l0eScsICdleHBhbmRMYWJlbCcsICdsYWJlbCcsICdub2RlcycsICdvcmllbnRhdGlvbicsICdzZWxlY3RlZElkcycsICdzZWxlY3Rpb25Nb2RlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRPcmdhbml6YXRpb25DaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2VsZWN0aW9uQ2hhbmdlJywgJ21kTm9kZVRvZ2dsZSddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgT3JnQ2hhcnRTZWxlY3Rpb25DaGFuZ2VEZXRhaWwgYXMgSU1kT3JnYW5pemF0aW9uQ2hhcnRPcmdDaGFydFNlbGVjdGlvbkNoYW5nZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBPcmdDaGFydFRvZ2dsZURldGFpbCBhcyBJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0VG9nZ2xlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZE9yZ2FuaXphdGlvbkNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5NZE9yZ2FuaXphdGlvbkNoYXJ0IHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKi9cbiAgbWRTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0U2VsZWN0aW9uQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZCBvciBjb2xsYXBzZWQuXG4gICAqL1xuICBtZE5vZGVUb2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRPcmdhbml6YXRpb25DaGFydE9yZ0NoYXJ0VG9nZ2xlRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZE90cEZpZWxkLFxuICBpbnB1dHM6IFsnYXV0b1N1Ym1pdCcsICdjZWxsTGFiZWxUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2Vycm9yVGV4dCcsICdncm91cFNpemUnLCAnaW5jb21wbGV0ZUxhYmVsJywgJ2lucHV0TW9kZScsICdsYWJlbCcsICdsZW5ndGgnLCAnbWFzaycsICduYW1lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAnc3VwcG9ydGluZ1RleHQnLCAndHJhbnNmb3JtJywgJ3ZhbGlkYXRpb25UeXBlJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc2V0Rm9jdXMnLCAnY2xlYXInLCAnZ2V0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtb3RwLWZpZWxkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvU3VibWl0JywgJ2NlbGxMYWJlbFRlbXBsYXRlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2dyb3VwU2l6ZScsICdpbmNvbXBsZXRlTGFiZWwnLCAnaW5wdXRNb2RlJywgJ2xhYmVsJywgJ2xlbmd0aCcsICdtYXNrJywgJ25hbWUnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdzdXBwb3J0aW5nVGV4dCcsICd0cmFuc2Zvcm0nLCAndmFsaWRhdGlvblR5cGUnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZE90cEZpZWxkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZENvbXBsZXRlJywgJ21kSW52YWxpZElucHV0JywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kT3RwRmllbGRDb21wbGV0ZURldGFpbCBhcyBJTWRPdHBGaWVsZE1kT3RwRmllbGRDb21wbGV0ZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZE90cEZpZWxkSW52YWxpZERldGFpbCBhcyBJTWRPdHBGaWVsZE1kT3RwRmllbGRJbnZhbGlkRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kT3RwRmllbGRWYWxpZGl0eURldGFpbCBhcyBJTWRPdHBGaWVsZE1kT3RwRmllbGRWYWxpZGl0eURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRPdHBGaWVsZCBleHRlbmRzIENvbXBvbmVudHMuTWRPdHBGaWVsZCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSB2YWx1ZSBjaGFuZ2UgZnJvbSB1c2VyIGlucHV0ICh0eXBpbmcsIGNsZWFyaW5nLCBwYXN0ZSwgYXV0b2ZpbGwpLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQ29tbWl0IGV2ZW50OiBmaXJlcyB3aGVuIHRoZSBjb2RlIGJlY29tZXMgY29tcGxldGUgYW5kIHdoZW4gZm9jdXMgbGVhdmVzIHRoZSB3aG9sZSBncm91cC5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGV2ZXJ5IGNlbGwgaXMgZmlsbGVkLiBBIGNvbXBsZXRlIHBhc3RlIHJlLWZpcmVzIGl0IGV2ZW4gaWYgdGhlIHZhbHVlIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIG1kQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRPdHBGaWVsZE1kT3RwRmllbGRDb21wbGV0ZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0eXBlZC9wYXN0ZWQgY2hhcmFjdGVycyBhcmUgcmVqZWN0ZWQgYnkgdGhlIGB2YWxpZGF0aW9uVHlwZWAgY2hhcnNldC5cbiAgICovXG4gIG1kSW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kT3RwRmllbGRNZE90cEZpZWxkSW52YWxpZERldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBtb3VudCwgbmV2ZXIgZm9yIGFcbnJlLXB1Ymxpc2ggbGFuZGluZyBvbiB0aGUgc2FtZSBzdGF0ZS4gYGNvbXBvc2VkOiBmYWxzZWAgYnkgdGhlIGxpYnJhcnlcbmNvbnZlbnRpb246IGVhY2ggY29udHJvbCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZjsgYGJ1YmJsZXM6IHRydWVgIHN0aWxsXG5yZWFjaGVzIGA8Zm9ybT5gLWxldmVsIGxpc3RlbmVycyBpbiB0aGUgc2FtZSBET00gdHJlZS5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRPdHBGaWVsZE1kT3RwRmllbGRWYWxpZGl0eURldGFpbD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRQaWVDaGFydCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdjb3JuZXJSYWRpdXMnLCAnZGF0YScsICdkZW5zaXR5JywgJ2VuZEFuZ2xlJywgJ2dyYWRpZW50JywgJ2hlaWdodFByb3AnLCAnaGlnaGxpZ2h0JywgJ2lubmVyUmFkaXVzJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxNb2RlJywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbW9ub2Nocm9tZScsICdub0FuaW1hdGlvbicsICdvdXRlclJhZGl1cycsICdwYWRkaW5nQW5nbGUnLCAncmluZ1dpZHRocycsICdzaG93TGFiZWxzJywgJ3N0YXJ0QW5nbGUnLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJ10sXG4gIG1ldGhvZHM6IFsncmVmcmVzaFRoZW1lJywgJ3Jlc2l6ZScsICdyZXBsYXknLCAnZHJpbGwnLCAndG9EYXRhVVJMJywgJ2dldEluc3RhbmNlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1waWUtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbmltYXRpb25EdXJhdGlvbicsICdjb3JuZXJSYWRpdXMnLCAnZGF0YScsICdkZW5zaXR5JywgJ2VuZEFuZ2xlJywgJ2dyYWRpZW50JywgJ2hlaWdodFByb3AnLCAnaGlnaGxpZ2h0JywgJ2lubmVyUmFkaXVzJywgJ2xhYmVsJywgJ2xhYmVsRW1wdHknLCAnbGFiZWxNb2RlJywgJ2xhYmVsUGxvdCcsICdsYWJlbFBvaW50JywgJ2xlZ2VuZCcsICdsb2FkaW5nJywgJ2xvYWRpbmdMYWJlbCcsICdsb2NhbGUnLCAnbW9ub2Nocm9tZScsICdub0FuaW1hdGlvbicsICdvdXRlclJhZGl1cycsICdwYWRkaW5nQW5nbGUnLCAncmluZ1dpZHRocycsICdzaG93TGFiZWxzJywgJ3N0YXJ0QW5nbGUnLCAnc3VidGl0bGUnLCAnc3VtbWFyeScsICd0YWJsZUxhYmVscycsICd0aXRsZUFsaWduJywgJ3Rvb2x0aXAnLCAndG9vbHRpcFJlbmRlcmVyJywgJ3ZhbHVlRm9ybWF0dGVyJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRQaWVDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU2xpY2VDbGljaycsICdtZExlZ2VuZENsaWNrJywgJ21kUmVhZHknXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kQ2hhcnRDbGlja0RldGFpbCBhcyBJTWRQaWVDaGFydE1kQ2hhcnRDbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFBpZURhdHVtIGFzIElNZFBpZUNoYXJ0TWRQaWVEYXR1bSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuTWRQaWVDaGFydCB7XG5cbiAgbWRTbGljZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kUGllQ2hhcnRNZENoYXJ0Q2xpY2tEZXRhaWw8SU1kUGllQ2hhcnRNZFBpZURhdHVtPj4+O1xuXG4gIG1kTGVnZW5kQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRhdGFJbmRleDogbnVtYmVyOyBzZWxlY3RlZDogYm9vbGVhbiB9Pj47XG5cbiAgbWRSZWFkeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kUHJvZ3Jlc3NJbmRpY2F0b3IsXG4gIGlucHV0czogWydjb21wbGV0ZScsICdkZW5zaXR5JywgJ2ZvdXJDb2xvcicsICdpbmRldGVybWluYXRlJywgJ2xhYmVsJywgJ21heCcsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YXJpYW50JywgJ3dhdmUnLCAnd2F2ZUFtcGxpdHVkZScsICd3YXZlTGVuZ3RoJywgJ3dhdmVTcGVlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcHJvZ3Jlc3MtaW5kaWNhdG9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb21wbGV0ZScsICdkZW5zaXR5JywgJ2ZvdXJDb2xvcicsICdpbmRldGVybWluYXRlJywgJ2xhYmVsJywgJ21heCcsICdzaXplJywgJ3RoaWNrbmVzcycsICd2YWx1ZScsICd2YXJpYW50JywgJ3dhdmUnLCAnd2F2ZUFtcGxpdHVkZScsICd3YXZlTGVuZ3RoJywgJ3dhdmVTcGVlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kUHJvZ3Jlc3NJbmRpY2F0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENvbXBsZXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kUHJvZ3Jlc3NJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRzLk1kUHJvZ3Jlc3NJbmRpY2F0b3Ige1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgY29tcGxldGlvbiBhbmltYXRpb24gZmluaXNoZXMgKGFuZCB0aGUgaW5kaWNhdG9yIGhhcyBoaWRkZW5cbml0c2VsZiwgb3Ig4oCUIGZvciBmbGF0IGNpcmN1bGFyIOKAlCBzZXR0bGVkIG9uIGl0cyBlbXB0eSB0cmFjayByaW5nKS5cbiAgICovXG4gIG1kQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFJhZGlvLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ25hbWUnLCAncmVxdWlyZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIG1ldGhvZHM6IFsnc3luY1ZhbGlkaXR5RnJvbUdyb3VwJywgJ2dldFZhbGlkaXR5JywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnc2V0Rm9jdXMnLCAnc2V0Qmx1cicsICdzZWxlY3QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXJhZGlvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjaGVja2VkJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFJhZGlvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDaGFuZ2UnLCAnbWRGb2N1cycsICdtZEJsdXInLCAnbWRWYWxpZGl0eUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFJhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5NZFJhZGlvIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGNoZWNrZWQgc3RhdGUgY2hhbmdlcyB2aWEgdXNlciBpbnRlcmFjdGlvblxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNoZWNrZWQ6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgcmFkaW8gcmVjZWl2ZXMgZm9jdXNcbiAgICovXG4gIG1kRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSByYWRpbyBsb3NlcyBmb2N1c1xuICAgKi9cbiAgbWRCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFJhdGluZyxcbiAgaW5wdXRzOiBbJ2RlZmF1bHRWYWx1ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdnZXRMYWJlbCcsICdob3ZlcicsICdpY29uJywgJ21heCcsICduYW1lJywgJ291dGxpbmVFbXB0eScsICdwcmVjaXNpb24nLCAncmF0aW5nTGFiZWwnLCAncmVhZG9ubHknLCAnc2hvd1ZhbHVlTGFiZWwnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydmb2N1c1JhdGluZyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcmF0aW5nJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZWZhdWx0VmFsdWUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbXB0eUljb24nLCAnZ2V0TGFiZWwnLCAnaG92ZXInLCAnaWNvbicsICdtYXgnLCAnbmFtZScsICdvdXRsaW5lRW1wdHknLCAncHJlY2lzaW9uJywgJ3JhdGluZ0xhYmVsJywgJ3JlYWRvbmx5JywgJ3Nob3dWYWx1ZUxhYmVsJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRSYXRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZEhvdmVyJywgJ21kQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kUmF0aW5nIGV4dGVuZHMgQ29tcG9uZW50cy5NZFJhdGluZyB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGlsZSB0aGUgdXNlciBpcyBob3ZlcmluZyAob3IgYG51bGxgIHdoZW4gdGhlIGN1cnNvciBsZWF2ZXMpLlxuICAgKi9cbiAgbWRIb3ZlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlciB8IG51bGw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzIHZpYSBpbnRlcmFjdGlvbi5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFJpcHBsZSxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIG1ldGhvZHM6IFsnd2hlblNldHRsZWQnLCAndHJpZ2dlciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtcmlwcGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlZCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kUmlwcGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRSaXBwbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kUmlwcGxlIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNlYXJjaCxcbiAgaW5wdXRzOiBbJ2Fubm91bmNlUmVzdWx0cycsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Rpc21pc3NPbk91dHNpZGVDbGljaycsICdlbGV2YXRpb24nLCAnZXNjYXBlQ2xvc2VzJywgJ2Z1bGxXaWR0aCcsICdpbml0aWFsRm9jdXMnLCAnaW5wdXRBcmlhTGFiZWwnLCAnbGF5b3V0JywgJ2xlYWRpbmdJY29uJywgJ2xvYWRpbmcnLCAnbG9hZGluZ0xhYmVsJywgJ21heEJsb2NrU2l6ZScsICdub1Jlc3VsdHNMYWJlbCcsICdvcGVuJywgJ29wZW5MZWFkaW5nSWNvbicsICdwbGFjZWhvbGRlcicsICdyZXN1bHRzTGFiZWwnLCAnc2Nyb2xsU2hhZG93JywgJ3Nob3dDbGVhckJ1dHRvbicsICd0aHJvdHRsZScsICd0cmlnZ2VyJywgJ3RyaWdnZXJFbGVtZW50JywgJ3RyaWdnZXJGb3InLCAndHJpZ2dlckljb24nLCAndmFsdWUnLCAndmFyaWFudCcsICd2b2ljZVNlYXJjaCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnLCAndG9nZ2xlJywgJ2ZvY3VzSW5wdXQnLCAnc3RhcnRWb2ljZScsICdzdG9wVm9pY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNlYXJjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYW5ub3VuY2VSZXN1bHRzJywgJ2RlYm91bmNlJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGlzbWlzc09uT3V0c2lkZUNsaWNrJywgJ2VsZXZhdGlvbicsICdlc2NhcGVDbG9zZXMnLCAnZnVsbFdpZHRoJywgJ2luaXRpYWxGb2N1cycsICdpbnB1dEFyaWFMYWJlbCcsICdsYXlvdXQnLCAnbGVhZGluZ0ljb24nLCAnbG9hZGluZycsICdsb2FkaW5nTGFiZWwnLCAnbWF4QmxvY2tTaXplJywgJ25vUmVzdWx0c0xhYmVsJywgJ29wZW4nLCAnb3BlbkxlYWRpbmdJY29uJywgJ3BsYWNlaG9sZGVyJywgJ3Jlc3VsdHNMYWJlbCcsICdzY3JvbGxTaGFkb3cnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Rocm90dGxlJywgJ3RyaWdnZXInLCAndHJpZ2dlckVsZW1lbnQnLCAndHJpZ2dlckZvcicsICd0cmlnZ2VySWNvbicsICd2YWx1ZScsICd2YXJpYW50JywgJ3ZvaWNlU2VhcmNoJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTZWFyY2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZElucHV0JywgJ21kU2VhcmNoJywgJ21kU3VibWl0JywgJ21kQ2hhbmdlJywgJ21kT3BlbicsICdtZENsb3NlJywgJ21kQ2xlYXInLCAnbWRWb2ljZScsICdtZExlYWRpbmdJY29uQ2xpY2snLCAnbWRUcmFpbGluZ0ljb25DbGljayddKTtcbiAgfVxufVxuXG5cbmltcG9ydCB0eXBlIHsgTWRTZWFyY2hMZWFkaW5nSWNvbkNsaWNrRGV0YWlsIGFzIElNZFNlYXJjaE1kU2VhcmNoTGVhZGluZ0ljb25DbGlja0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFNlYXJjaFRyYWlsaW5nSWNvbkNsaWNrRGV0YWlsIGFzIElNZFNlYXJjaE1kU2VhcmNoVHJhaWxpbmdJY29uQ2xpY2tEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2VhcmNoIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNlYXJjaCB7XG4gIC8qKlxuICAgKiBGaXJlcyBvbiBldmVyeSBpbnB1dCBjaGFuZ2UgKGltbWVkaWF0ZSwgZXZlcnkga2V5c3Ryb2tlKS5cbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRGVib3VuY2VkLCBkZS1kdXBsaWNhdGVkIHF1ZXJ5IGV2ZW50IOKAlCB0aGUgb25lIHRvIHdpcmUgYW4gYXN5bmMgcmVzdWx0c1xuZmV0Y2ggdG8uIEhvbm91cnMgYGRlYm91bmNlYCAvIGB0aHJvdHRsZWAgYW5kIGFwcGxpZXMgYVxuZGlzdGluY3QtdW50aWwtY2hhbmdlZCBndWFyZCBvbiB0aGUgdHJpbW1lZCBxdWVyeSAoc28gcmUtdHlwaW5nIHRoZSBzYW1lXG50ZXJtLCBvciBvbmx5IGFkZGluZyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlLCB3b24ndCByZS10cmlnZ2VyIGEgZmV0Y2gpLlxuUHJlc3NpbmcgRW50ZXIgb3IgY2xlYXJpbmcgdGhlIGZpZWxkIGZsdXNoZXMgaXQgaW1tZWRpYXRlbHkuXG4gICAqL1xuICBtZFNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgRW50ZXIgdG8gc3VibWl0IGEgcXVlcnkuXG4gICAqL1xuICBtZFN1Ym1pdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBpbnB1dCBsb3NlcyBmb2N1cyB3aXRoIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4gb24gZm9jdXMuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZyB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwYW5lbCBvcGVucy5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHBhbmVsIGNsb3Nlcy5cbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgY2xlYXIgKMOXKSBidXR0b24uXG4gICAqL1xuICBtZENsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hpbGUgdm9pY2Ugc2VhcmNoIGlzIGFjdGl2ZSBhcyB0aGUgdHJhbnNjcmlwdCBzdHJlYW1zIGluLiBgdmFsdWVgXG5pcyB0aGUgY3VycmVudCAoaW50ZXJpbSBvciBmaW5hbCkgdHJhbnNjcmlwdDsgYGZpbmFsYCBpcyBgdHJ1ZWAgb24gdGhlXG5yZWNvZ25pc2VkIGZpbmFsIHJlc3VsdC4gVGhlIGNvbXBvbmVudCBhbHJlYWR5IG1pcnJvcnMgdGhlIHRyYW5zY3JpcHQgaW50b1xudGhlIGlucHV0IGFuZCBmaXJlcyBgbWRJbnB1dGAgLyBgbWRTZWFyY2hgLCBzbyBsaXN0ZW4gdG8gdGhpcyBvbmx5IGlmIHlvdVxubmVlZCB2b2ljZS1zcGVjaWZpYyBVSSAoZS5nLiBhIHRyYW5zY3JpcHQgcHJldmlldykuXG4gICAqL1xuICBtZFZvaWNlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBmaW5hbDogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBpbnRlcmFjdGl2ZSBsZWFkaW5nIGFmZm9yZGFuY2UgaXMgY2xpY2tlZCDigJQgdGhlIG1vcnBoaW5nXG5iYWNrIC8gZGlzbWlzcyBidXR0b24gd2hpbGUgdGhlIGJhciBpcyBvcGVuLCBvciBhIGN1c3RvbSBzbG90dGVkIGBsZWFkaW5nYFxuaWNvbi4gVGhlIGRlZmF1bHQgYmFjayBidXR0b24gc3RpbGwgZGlzbWlzc2VzIHRoZSBwYW5lbCBhcyBiZWZvcmU7IHRoaXNcbmV2ZW50IGlzIGFkZGl0aXZlLiBUaGUgY2xvc2VkIHJlc3Rpbmcgc2VhcmNoIGdseXBoIGlzIGludGVudGlvbmFsbHkgTk9UIGFcbmNsaWNrIHRhcmdldCAoYSBjbGljayB0aGVyZSBmb2N1c2VzIHRoZSBpbnB1dCksIHNvIGl0IGRvZXMgbm90IGVtaXQuXG4gICAqL1xuICBtZExlYWRpbmdJY29uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTZWFyY2hNZFNlYXJjaExlYWRpbmdJY29uQ2xpY2tEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBzbG90dGVkIGB0cmFpbGluZ2AgYWZmb3JkYW5jZSBpcyBjbGlja2VkLiBUaGUgYnVpbHQtaW4gY2xlYXJcbijDlykgYW5kIHZvaWNlIChtaWMpIGJ1dHRvbnMgb3duIHRoZWlyIGRlZGljYXRlZCBgbWRDbGVhcmAgLyBgbWRWb2ljZWBcbmV2ZW50cyBhbmQgZG8gTk9UIHRyaWdnZXIgdGhpcy4gT25seSBlbWl0dGVkIHdoZW4gc2xvdHRlZCB0cmFpbGluZyBjb250ZW50XG5pcyBhY3R1YWxseSBwcmVzZW50IGFuZCB3YXMgdGhlIGNsaWNrIHRhcmdldC5cbiAgICovXG4gIG1kVHJhaWxpbmdJY29uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTZWFyY2hNZFNlYXJjaFRyYWlsaW5nSWNvbkNsaWNrRGV0YWlsPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNlZ21lbnRlZEJ1dHRvbixcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbicsICdsYWJlbCcsICdub0NoZWNrbWFyaycsICdyaXBwbGUnLCAnc2VnbWVudERlbnNpdHknLCAnc2VnbWVudEluZGV4JywgJ3NlZ21lbnRNdWx0aXNlbGVjdCcsICdzZWdtZW50VG90YWwnLCAnc2VsZWN0ZWQnLCAnc29mdERpc2FibGVkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zZWdtZW50ZWQtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnbGFiZWwnLCAnbm9DaGVja21hcmsnLCAncmlwcGxlJywgJ3NlZ21lbnREZW5zaXR5JywgJ3NlZ21lbnRJbmRleCcsICdzZWdtZW50TXVsdGlzZWxlY3QnLCAnc2VnbWVudFRvdGFsJywgJ3NlbGVjdGVkJywgJ3NvZnREaXNhYmxlZCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VnbWVudGVkQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWdtZW50Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWdtZW50ZWRCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VnbWVudGVkQnV0dG9uIHtcbiAgLyoqXG4gICAqIEludGVybmFsIGV2ZW50IOKAlCBjYXVnaHQgYnkgdGhlIHNldFxuICAgKi9cbiAgbWRTZWdtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbHVlOiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU2VnbWVudGVkQnV0dG9uU2V0LFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdtdWx0aXNlbGVjdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VnbWVudGVkLWJ1dHRvbi1zZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnbXVsdGlzZWxlY3QnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNlZ21lbnRlZEJ1dHRvblNldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU2VnbWVudGVkQnV0dG9uU2V0IGV4dGVuZHMgQ29tcG9uZW50cy5NZFNlZ21lbnRlZEJ1dHRvblNldCB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZXQgb2Ygc2VsZWN0ZWQgc2VnbWVudCB2YWx1ZXMgY2hhbmdlc1xuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTZWxlY3QsXG4gIGlucHV0czogWydjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdmdWxsV2lkdGgnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzZWFyY2hQbGFjZWhvbGRlcicsICdzZWFyY2hpbmdMYWJlbCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50JywgJ3ZpcnR1YWxpemUnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2Nsb3NlJywgJ2ZvY3VzVHJpZ2dlcicsICdyZXNldCcsICdsb2FkT3B0aW9ucycsICdzZXRRdWVyeScsICdnZXRMYWJlbHMnLCAnZ2V0VmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eScsICdzZXRDdXN0b21WYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2VsZWN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbGVhckljb24nLCAnY2xlYXJMYWJlbCcsICdjbGVhcmFibGUnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkcm9wZG93bkljb24nLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZpbHRlckxhYmVsJywgJ2ZpbHRlck1vZGUnLCAnZmlsdGVyYWJsZScsICdmdWxsV2lkdGgnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nVGV4dCcsICdtYXRjaFRyaWdnZXJXaWR0aCcsICdtYXhIZWlnaHQnLCAnbmFtZScsICdub09wdGlvbnNUZXh0JywgJ25vUmVzdWx0c1RleHQnLCAnb3BlbicsICdvcHRpb25zJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlbWVudCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jvd0hlaWdodCcsICdzZWFyY2hQbGFjZWhvbGRlcicsICdzZWFyY2hpbmdMYWJlbCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50JywgJ3ZpcnR1YWxpemUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kT3BlbicsICdtZENsb3NlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VsZWN0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBuZXdseSBzZWxlY3RlZCB2YWx1ZSB3aGVuZXZlciB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgZHJvcGRvd24gb3BlbnMuXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBkcm9wZG93biBjbG9zZXMuXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNlbGVjdE9wdGlvbixcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0JywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zZWxlY3Qtb3B0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpY29uJywgJ2ljb25Db2xvcicsICdsYWJlbCcsICdzZWxlY3RlZCcsICdzdXBwb3J0aW5nVGV4dCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kU2VsZWN0T3B0aW9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTZWxlY3RPcHRpb25DaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTZWxlY3RPcHRpb24gZXh0ZW5kcyBDb21wb25lbnRzLk1kU2VsZWN0T3B0aW9uIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIG9wdGlvbiBtb3VudHMsIHVubW91bnRzLCBvciBpdHMgZGF0YSBjaGFuZ2VzIHNvIHRoZVxucGFyZW50IHBpY2tlciBjYW4gcmUtcmVhZCBpdHMgb3B0aW9uIHNldC5cbiAgICovXG4gIG1kU2VsZWN0T3B0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTaWRlU2hlZXQsXG4gIGlucHV0czogWydib3R0b21EaXZpZGVyJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2RldGFjaGVkJywgJ2hlYWRsaW5lJywgJ29wZW4nLCAnc2NyaW1EaXNtaXNzaWJsZScsICdzaGVldEFyaWFMYWJlbCcsICdzaG93QmFjaycsICdzaWRlJywgJ3RvcERpdmlkZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnY2xvc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNpZGUtc2hlZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JvdHRvbURpdmlkZXInLCAnY2xvc2VhYmxlJywgJ2RlbnNpdHknLCAnZGV0YWNoZWQnLCAnaGVhZGxpbmUnLCAnb3BlbicsICdzY3JpbURpc21pc3NpYmxlJywgJ3NoZWV0QXJpYUxhYmVsJywgJ3Nob3dCYWNrJywgJ3NpZGUnLCAndG9wRGl2aWRlcicsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTaWRlU2hlZXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZE9wZW4nLCAnbWRDbG9zZScsICdtZENhbmNlbCcsICdtZEJhY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTaWRlU2hlZXQgZXh0ZW5kcyBDb21wb25lbnRzLk1kU2lkZVNoZWV0IHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHNoZWV0IG9wZW5zXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzaGVldCBjbG9zZXNcbiAgICovXG4gIG1kQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGRpc21pc3NlZCB2aWEgc2NyaW0gY2xpY2sgb3IgRXNjYXBlXG4gICAqL1xuICBtZENhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGJhY2sgYnV0dG9uIGlzIHByZXNzZWQgKG1vZGFsIG9ubHkpXG4gICAqL1xuICBtZEJhY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNrZWxldG9uLFxuICBpbnB1dHM6IFsnYW5pbWF0aW9uJywgJ2Fubm91bmNlJywgJ2FyaWFMYWJlbFByb3AnLCAnZGVuc2l0eScsICdmdWxsSGVpZ2h0JywgJ2Z1bGxXaWR0aCcsICdoZWlnaHQnLCAnbGluZXMnLCAndmFyaWFudCcsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2tlbGV0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdhbm5vdW5jZScsICdhcmlhTGFiZWxQcm9wJywgJ2RlbnNpdHknLCAnZnVsbEhlaWdodCcsICdmdWxsV2lkdGgnLCAnaGVpZ2h0JywgJ2xpbmVzJywgJ3ZhcmlhbnQnLCAnd2lkdGgnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTa2VsZXRvbiBleHRlbmRzIENvbXBvbmVudHMuTWRTa2VsZXRvbiB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTbGlkZXIsXG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc2xpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhcmlhTGFiZWxFbmQnLCAnYXJpYUxhYmVsU3RhcnQnLCAnY29udHJvbGxlZCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxIZWlnaHQnLCAnaWNvbicsICdpbnNldEljb24nLCAnbGFiZWxlZCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnbmFtZUVuZCcsICduYW1lU3RhcnQnLCAnb3JpZW50YXRpb24nLCAncmFuZ2UnLCAnc2l6ZScsICdzbGlkZXJBcmlhTGFiZWwnLCAnc3RlcCcsICdzdG9wcycsICd2YWx1ZScsICd2YWx1ZUVuZCcsICd2YWx1ZUVuZFRleHQnLCAndmFsdWVJbmRpY2F0b3InLCAndmFsdWVTdGFydCcsICd2YWx1ZVN0YXJ0VGV4dCcsICd2YWx1ZVRleHQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kU2xpZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRJbnB1dCcsICdtZENoYW5nZScsICdtZEZvY3VzJywgJ21kQmx1cicsICdtZERyYWdTdGFydCcsICdtZERyYWdFbmQnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kU2xpZGVyVmFsdWVEZXRhaWwgYXMgSU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFNsaWRlclRodW1iRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyVGh1bWJEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgTWRTbGlkZXJEcmFnRGV0YWlsIGFzIElNZFNsaWRlck1kU2xpZGVyRHJhZ0RldGFpbCB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTbGlkZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU2xpZGVyIHtcbiAgLyoqXG4gICAqIEZpcmVzIGNvbnRpbnVvdXNseSB3aGlsZSB0aGUgdXNlciBkcmFncyBvciBwcmVzc2VzIGFycm93IGtleXMuXG4gICAqL1xuICBtZElucHV0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgb25jZSB3aGVuIHRoZSB1c2VyIGNvbW1pdHMgYSB2YWx1ZSAocG9pbnRlciB1cCwga2V5Ym9hcmQgcmVsZWFzZSwgY2hhbmdlIGV2ZW50KS5cbiAgICovXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJWYWx1ZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIHNsaWRlciB0aHVtYiByZWNlaXZlcyBmb2N1cy5cbiAgICovXG4gIG1kRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlclRodW1iRGV0YWlsPj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGEgc2xpZGVyIHRodW1iIGxvc2VzIGZvY3VzLlxuICAgKi9cbiAgbWRCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kU2xpZGVyTWRTbGlkZXJUaHVtYkRldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhIGRyYWcva2V5Ym9hcmQgaW50ZXJhY3Rpb24gYmVnaW5zLlxuICAgKi9cbiAgbWREcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlckRyYWdEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYSBkcmFnL2tleWJvYXJkIGludGVyYWN0aW9uIGVuZHMuXG4gICAqL1xuICBtZERyYWdFbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRTbGlkZXJNZFNsaWRlckRyYWdEZXRhaWw+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU25hY2tiYXIsXG4gIGlucHV0czogWydhY3Rpb24nLCAnYXV0b0hpZGUnLCAnYXV0b0hpZGVEdXJhdGlvbicsICdjbG9zZWFibGUnLCAnZGVuc2l0eScsICdkaXNtaXNzTGFiZWwnLCAnbWVzc2FnZScsICdvcGVuJywgJ3BvbGl0ZW5lc3MnLCAncG9zaXRpb24nLCAnc3RhY2tlZCddLFxuICBtZXRob2RzOiBbJ3Nob3cnLCAnaGlkZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc25hY2tiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGlvbicsICdhdXRvSGlkZScsICdhdXRvSGlkZUR1cmF0aW9uJywgJ2Nsb3NlYWJsZScsICdkZW5zaXR5JywgJ2Rpc21pc3NMYWJlbCcsICdtZXNzYWdlJywgJ29wZW4nLCAncG9saXRlbmVzcycsICdwb3NpdGlvbicsICdzdGFja2VkJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTbmFja2JhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kT3BlbicsICdtZENsb3NlJywgJ21kQWN0aW9uJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU25hY2tiYXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kU25hY2tiYXIge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc25hY2tiYXIgYmVjb21lcyB2aXNpYmxlXG4gICAqL1xuICBtZE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBzbmFja2JhciBpcyBkaXNtaXNzZWQsIHdpdGggcmVhc29uXG4gICAqL1xuICBtZENsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByZWFzb246ICdhdXRvJyB8ICdhY3Rpb24nIHwgJ2Nsb3NlJyB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIG1kQWN0aW9uOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTcGFya2xpbmUsXG4gIGlucHV0czogWydiYXJXaWR0aCcsICdjb2xvcicsICdjb3JuZXJSYWRpdXMnLCAnY3VydmUnLCAnZGF0YScsICdoZWlnaHRQcm9wJywgJ2xhYmVscycsICdsaW5lV2lkdGgnLCAnbWFya1NpemUnLCAnbWF4JywgJ21pbicsICdub0FuaW1hdGlvbicsICdyZWZlcmVuY2VBcmVhcycsICdzaG93TWFya3MnLCAnc2hvd1Rvb2x0aXAnLCAndmFsdWVGb3JtYXR0ZXInLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3JlZnJlc2hUaGVtZScsICdyZXNpemUnLCAnZ2V0SW5zdGFuY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXNwYXJrbGluZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYmFyV2lkdGgnLCAnY29sb3InLCAnY29ybmVyUmFkaXVzJywgJ2N1cnZlJywgJ2RhdGEnLCAnaGVpZ2h0UHJvcCcsICdsYWJlbHMnLCAnbGluZVdpZHRoJywgJ21hcmtTaXplJywgJ21heCcsICdtaW4nLCAnbm9BbmltYXRpb24nLCAncmVmZXJlbmNlQXJlYXMnLCAnc2hvd01hcmtzJywgJ3Nob3dUb29sdGlwJywgJ3ZhbHVlRm9ybWF0dGVyJywgJ3ZhcmlhbnQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFNwYXJrbGluZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kU3BhcmtDbGljaycsICdtZFJlYWR5J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3BhcmtsaW5lIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwYXJrbGluZSB7XG5cbiAgbWRTcGFya0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBkYXRhSW5kZXg6IG51bWJlcjsgdmFsdWU6IG51bWJlciB8IG51bGwgfT4+O1xuXG4gIG1kUmVhZHk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFNwbGl0QnV0dG9uLFxuICBpbnB1dHM6IFsnY29udHJvbHMnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdmdWxsV2lkdGgnLCAnaGFzcG9wdXAnLCAnaWNvbicsICdsYWJlbCcsICdtZW51TGFiZWwnLCAncmlwcGxlJywgJ3NpemUnLCAnc29mdERpc2FibGVkJywgJ3RyYWlsaW5nQ2hlY2tlZCcsICd0cmFpbGluZ0ljb24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3BsaXQtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2Z1bGxXaWR0aCcsICdoYXNwb3B1cCcsICdpY29uJywgJ2xhYmVsJywgJ21lbnVMYWJlbCcsICdyaXBwbGUnLCAnc2l6ZScsICdzb2Z0RGlzYWJsZWQnLCAndHJhaWxpbmdDaGVja2VkJywgJ3RyYWlsaW5nSWNvbicsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTcGxpdEJ1dHRvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kTGVhZGluZ0NsaWNrJywgJ21kVHJhaWxpbmdDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFNwbGl0QnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5NZFNwbGl0QnV0dG9uIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIGxlYWRpbmcgYnV0dG9uIGlzIGFjdGl2YXRlZFxuICAgKi9cbiAgbWRMZWFkaW5nQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB0cmFpbGluZyBidXR0b24gaXMgdG9nZ2xlZFxuICAgKi9cbiAgbWRUcmFpbGluZ0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjaGVja2VkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3RhdHVzRG90LFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdpbmxpbmUnLCAnbGFiZWwnLCAnbGl2ZScsICdzaGFwZScsICdzaXplJywgJ3N0YXRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGF0dXMtZG90JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydkZW5zaXR5JywgJ2lubGluZScsICdsYWJlbCcsICdsaXZlJywgJ3NoYXBlJywgJ3NpemUnLCAnc3RhdGUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN0YXR1c0RvdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kU3RhdHVzRG90IGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0YXR1c0RvdCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRTdGVwLFxuICBpbnB1dHM6IFsnYWNjZXNzaWJsZU5hbWUnLCAnYWN0aXZlJywgJ2NvbXBsZXRlZCcsICdjb21wbGV0ZWRJY29uJywgJ2RlbnNpdHknLCAnZGVzY3JpcHRpb24nLCAnZGlzYWJsZWQnLCAnZWRpdGFibGUnLCAnZXJyb3InLCAnZXJyb3JJY29uJywgJ2Vycm9yVGV4dCcsICdoaWRlQWN0aW9ucycsICdpY29uJywgJ2xhYmVsJywgJ29wdGlvbmFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY2Nlc3NpYmxlTmFtZScsICdhY3RpdmUnLCAnY29tcGxldGVkJywgJ2NvbXBsZXRlZEljb24nLCAnZGVuc2l0eScsICdkZXNjcmlwdGlvbicsICdkaXNhYmxlZCcsICdlZGl0YWJsZScsICdlcnJvcicsICdlcnJvckljb24nLCAnZXJyb3JUZXh0JywgJ2hpZGVBY3Rpb25zJywgJ2ljb24nLCAnbGFiZWwnLCAnb3B0aW9uYWwnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN0ZXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFN0ZXBDbGljaycsICdtZFN0ZXBOZXh0JywgJ21kU3RlcEJhY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTdGVwIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0ZXAge1xuICAvKipcbiAgICogQnViYmxlZCB0byB0aGUgcGFyZW50IHN0ZXBwZXIsIHdoaWNoIGRlY2lkZXMgd2hldGhlciB0aGUgbW92ZSBpcyBhbGxvd2VkLlxuSW50ZXJuYWwgY29vcmRpbmF0aW9uIGV2ZW50IOKAlCBjb25zdW1lZCAoYW5kIHN0b3BwZWQpIGJ5IGBtZC1zdGVwcGVyYC5cbiAgICovXG4gIG1kU3RlcENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIENvbnRpbnVlIHByZXNzZWQgaW4gdGhpcyBzdGVwJ3MgY29udGVudCBwYW5lbC4gQ29uc3VtZWQgYnkgYG1kLXN0ZXBwZXJgLlxuICAgKi9cbiAgbWRTdGVwTmV4dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG4gIC8qKlxuICAgKiBCYWNrIHByZXNzZWQgaW4gdGhpcyBzdGVwJ3MgY29udGVudCBwYW5lbC4gQ29uc3VtZWQgYnkgYG1kLXN0ZXBwZXJgLlxuICAgKi9cbiAgbWRTdGVwQmFjazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgaW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFN0ZXBwZXIsXG4gIGlucHV0czogWydhY3RpdmUnLCAnYXV0b0NvbXBsZXRlJywgJ2JhY2tMYWJlbCcsICdjb21wbGV0ZWRXb3JkJywgJ2N1cnJlbnRXb3JkJywgJ2RlbnNpdHknLCAnZXJyb3JXb3JkJywgJ2ZpbmlzaExhYmVsJywgJ2luZGljYXRvcicsICdsYWJlbCcsICdsYXp5JywgJ2xvYWRpbmcnLCAnbW9kZScsICduYXYnLCAnbmV4dERpc2FibGVkJywgJ25leHRMYWJlbCcsICdvZldvcmQnLCAnb3B0aW9uYWxXb3JkJywgJ29yaWVudGF0aW9uJywgJ3JlYWRvbmx5JywgJ3N0ZXBXb3JkJywgJ3ZhcmlhbnQnXSxcbiAgbWV0aG9kczogWyduZXh0JywgJ3ByZXYnLCAnZ29UbycsICdyZXNldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtc3RlcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2F1dG9Db21wbGV0ZScsICdiYWNrTGFiZWwnLCAnY29tcGxldGVkV29yZCcsICdjdXJyZW50V29yZCcsICdkZW5zaXR5JywgJ2Vycm9yV29yZCcsICdmaW5pc2hMYWJlbCcsICdpbmRpY2F0b3InLCAnbGFiZWwnLCAnbGF6eScsICdsb2FkaW5nJywgJ21vZGUnLCAnbmF2JywgJ25leHREaXNhYmxlZCcsICduZXh0TGFiZWwnLCAnb2ZXb3JkJywgJ29wdGlvbmFsV29yZCcsICdvcmllbnRhdGlvbicsICdyZWFkb25seScsICdzdGVwV29yZCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRCZWZvcmVDaGFuZ2UnLCAnbWRTdGVwQ2hhbmdlJywgJ21kQ29tcGxldGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTdGVwcGVyIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN0ZXBwZXIge1xuICAvKipcbiAgICogRmlyZXMgQkVGT1JFIGEgdXNlci1kcml2ZW4gc3RlcCBjaGFuZ2UgY29tbWl0cyAoc3RlcCBjbGljaywgYnVpbHQtaW4gbmF2LCBvclxuYG5leHQoKWAvYHByZXYoKWAvYGdvVG8oKWApLiBDYW5jZWxhYmxlOiBjYWxsIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCB0b1xudmV0byB0aGUgdHJhbnNpdGlvbiAoZS5nLiBibG9jayBDb250aW51ZSB1bnRpbCB0aGUgY3VycmVudCBzdGVwIHZhbGlkYXRlcykuXG5gZGV0YWlsLmluZGV4YCBpcyB0aGUgcmVxdWVzdGVkIHN0ZXAsIGBkZXRhaWwucHJldmlvdXNgIHRoZSBjdXJyZW50IG9uZS5cbkRvZXMgbm90IGZpcmUgZm9yIGEgZGlyZWN0IGBhY3RpdmVgIHByb3BlcnR5IGFzc2lnbm1lbnQg4oCUIHNldCBgYWN0aXZlYFxueW91cnNlbGYgdG8gY29tbWl0IGF1dGhvcml0YXRpdmVseSAoZS5nLiBhZnRlciBhc3luYyB2YWxpZGF0aW9uKS5cbiAgICovXG4gIG1kQmVmb3JlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91czogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIEFjdGl2ZSBzdGVwIGNoYW5nZWQgKGFmdGVyIGl0IGNvbW1pdHMpLlxuICAgKi9cbiAgbWRTdGVwQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBpbmRleDogbnVtYmVyOyBwcmV2aW91czogbnVtYmVyIH0+PjtcbiAgLyoqXG4gICAqIENvbnRpbnVlIHByZXNzZWQgb24gdGhlIGxhc3Qgc3RlcCAodGhlIGZsb3cgaXMgZmluaXNoZWQpLlxuICAgKi9cbiAgbWRDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3ViTWVudUl0ZW0sXG4gIGlucHV0czogWydiYWRnZScsICdjbG9zZURlbGF5JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdnYXAnLCAnaGVhZGxpbmUnLCAnb3BlbkRlbGF5JywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIG1ldGhvZHM6IFsnY29sbGFwc2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXN1Yi1tZW51LWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2JhZGdlJywgJ2Nsb3NlRGVsYXknLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2dhcCcsICdoZWFkbGluZScsICdvcGVuRGVsYXknLCAnc3VwcG9ydGluZ1RleHQnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFN1Yk1lbnVJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFN1Yk1lbnVJdGVtIGV4dGVuZHMgQ29tcG9uZW50cy5NZFN1Yk1lbnVJdGVtIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGl0ZW0gcm93IGl0c2VsZiBpcyBjbGlja2VkIChub3QgdGhlIHN1Ym1lbnUpLlxuICAgKi9cbiAgbWRDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kU3dpdGNoLFxuICBpbnB1dHM6IFsnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29ucycsICduYW1lJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGVkJywgJ3NlbGVjdGVkSWNvbicsICdzaG93T25seVNlbGVjdGVkSWNvbicsICdzb2Z0RGlzYWJsZWQnLCAndW5zZWxlY3RlZEljb24nLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnXSxcbiAgbWV0aG9kczogWydzZXRGb2N1cycsICdnZXRWYWxpZGl0eScsICdjaGVja1ZhbGlkaXR5JywgJ3JlcG9ydFZhbGlkaXR5JywgJ3NldEN1c3RvbVZhbGlkaXR5J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC1zd2l0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnaWNvbnMnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzZWxlY3RlZCcsICdzZWxlY3RlZEljb24nLCAnc2hvd09ubHlTZWxlY3RlZEljb24nLCAnc29mdERpc2FibGVkJywgJ3Vuc2VsZWN0ZWRJY29uJywgJ3ZhbHVlJywgJ3ZhbHVlTWlzc2luZ0xhYmVsJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZElucHV0JywgJ21kQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLk1kU3dpdGNoIHtcbiAgLyoqXG4gICAqIEZpcmVzICoqYmVmb3JlKiogdGhlIHN0YXRlIGNoYW5nZXMuIENhbGwgYGV2ZW50LnByZXZlbnREZWZhdWx0KClgIHRvXG5ibG9jayB0aGUgaW50ZXJuYWwgdG9nZ2xlIGFuZCBtYW5hZ2Ugc3RhdGUgZXh0ZXJuYWxseSAoY29udHJvbGxlZCBtb2RlKS5cblxuYGBgdHNcbnN3aXRjaC5hZGRFdmVudExpc3RlbmVyKCdtZElucHV0JywgKGUpID0+IHtcbiAgZS5wcmV2ZW50RGVmYXVsdCgpOyAgICAgICAgICAvLyBwcmV2ZW50IGludGVybmFsIHRvZ2dsZVxuICBteVN0YXRlLnZhbHVlID0gZS5kZXRhaWwuc2VsZWN0ZWQ7IC8vIHVwZGF0ZSB5b3VyIG93biBzdGF0ZVxufSk7XG5gYGBcbiAgICovXG4gIG1kSW5wdXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHNlbGVjdGVkOiBib29sZWFuIH0+PjtcbiAgLyoqXG4gICAqIEZpcmVzICoqYWZ0ZXIqKiB0aGUgaW50ZXJuYWwgc3RhdGUgaGFzIGNvbW1pdHRlZC4gVXNlIGZvciBzaWRlIGVmZmVjdHNcbmxpa2Ugc2F2aW5nIHByZWZlcmVuY2VzLCBhbmFseXRpY3MsIG9yIHN5bmNpbmcgd2l0aCBvdGhlciBjb21wb25lbnRzLlxuTm90IGNhbmNlbGFibGUg4oCUIHRoZSB0b2dnbGUgaGFzIGFscmVhZHkgaGFwcGVuZWQuXG5cbmBgYHRzXG5zd2l0Y2guYWRkRXZlbnRMaXN0ZW5lcignbWRDaGFuZ2UnLCAoZSkgPT4ge1xuICBjb25zb2xlLmxvZygnU3dpdGNoIGlzIG5vdycsIGUuZGV0YWlsLnNlbGVjdGVkID8gJ09OJyA6ICdPRkYnKTtcbn0pO1xuYGBgXG4gICAqL1xuICBtZENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW4gfT4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYixcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaW5saW5lSWNvbicsICdsYWJlbCcsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2FjdGl2ZScsICdiYWRnZScsICdjb250cm9scycsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaW5saW5lSWNvbicsICdsYWJlbCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFRhYkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFiIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYiB7XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSB0YWIgaXMgYWN0aXZhdGVkIGJ5IGNsaWNrIG9yIGtleWJvYXJkXG4gICAqL1xuICBtZFRhYkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xufVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJQYW5lbCxcbiAgaW5wdXRzOiBbJ2FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFiLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmUnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYlBhbmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJQYW5lbCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJQYW5lbHMsXG4gIGlucHV0czogWydmb3InLCAnc2l6aW5nJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWItcGFuZWxzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydmb3InLCAnc2l6aW5nJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJQYW5lbHMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYlBhbmVscyBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJQYW5lbHMge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGUsXG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBtZXRob2RzOiBbJ2dldFNlbGVjdGlvbicsICdzZWxlY3RBbGwnLCAnZGVzZWxlY3RBbGwnLCAndG9nZ2xlU2VsZWN0QWxsJywgJ3NldFNvcnQnLCAncGluQ29sdW1uJywgJ3NldENvbHVtblZpc2liaWxpdHknLCAnYW5pbWF0ZU5leHRDaGFuZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjYXB0aW9uJywgJ2NvbHVtblRlbXBsYXRlJywgJ2NvbHVtbnMnLCAnZGVuc2l0eScsICdlbXB0eScsICdmcm96ZW5IZWFkZXInLCAnaG92ZXJhYmxlJywgJ2tlZXBIZWlnaHQnLCAnbGFiZWwnLCAnbG9hZGluZycsICdsb2FkaW5nTW9kZScsICdsb2FkaW5nUm93cycsICdtaW5XaWR0aCcsICdtb3Rpb24nLCAnbm9EaXZpZGVycycsICdwaW5JY29uJywgJ3Bpbk1vZGUnLCAncm93Q291bnQnLCAncm93T2Zmc2V0JywgJ3Njcm9sbGJhcicsICdzZWxlY3Rpb24nLCAnc29ydEJ5JywgJ3NvcnRPcmRlcicsICdzdGlja3lGb290ZXInLCAnc3RpY2t5SGVhZGVyJywgJ3N0cmlwZWQnLCAnc3VtbWFyeSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFNvcnRDaGFuZ2UnLCAnbWRTZWxlY3Rpb25DaGFuZ2UnLCAnbWRQaW5DaGFuZ2UnLCAnbWRDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlJywgJ21kU2Nyb2xsJ10pO1xuICB9XG59XG5cblxuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU29ydFN0YXRlIGFzIElNZFRhYmxlTWRUYWJsZVNvcnRTdGF0ZSB9IGZyb20gJ0Bhd2MtdWkvY29yZS9kaXN0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHR5cGUgeyBNZFRhYmxlU2VsZWN0aW9uU3RhdGUgYXMgSU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGUge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHNvcnQgY2hhbmdlcyAoYWZ0ZXIgYSBgbWQtdGFibGUtc29ydC1sYWJlbGAgaXMgY2xpY2tlZCkuXG4gICAqL1xuICBtZFNvcnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUYWJsZU1kVGFibGVTb3J0U3RhdGU+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbmV2ZXIgdGhlIHJvdyBzZWxlY3Rpb24gc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG1kU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SU1kVGFibGVNZFRhYmxlU2VsZWN0aW9uU3RhdGU+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gYSBjb2x1bW4gaXMgcGlubmVkL3VucGlubmVkIHZpYSBgcGluQ29sdW1uYC5cbiAgICovXG4gIG1kUGluQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IG51bWJlcjsgc2lkZTogJ3N0YXJ0JyB8ICdlbmQnIHwgbnVsbCB9Pj47XG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgY29sdW1uIGlzIGhpZGRlbi9zaG93biB2aWEgYHNldENvbHVtblZpc2liaWxpdHlgLlxuICAgKi9cbiAgbWRDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBjb2x1bW46IG51bWJlcjsgdmlzaWJsZTogYm9vbGVhbjsgaGlkZGVuOiBudW1iZXJbXSB9Pj47XG4gIC8qKlxuICAgKiByQUYtdGhyb3R0bGVkIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZnJvemVuIGJvZHkgc2Nyb2xsZXIuXG4gICAqL1xuICBtZFNjcm9sbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2Nyb2xsTGVmdDogbnVtYmVyOyBzY3JvbGxUb3A6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYmxlQm9keVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlQm9keSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVCb2R5IGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlQm9keSB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJsZUNlbGwsXG4gIGlucHV0czogWydhbGlnbicsICdjb2xTcGFuJywgJ2RlbnNpdHknLCAnZWxsaXBzaXMnLCAnaGVhZCcsICdub1BpbkluZGljYXRvcicsICdudW1lcmljJywgJ3BhZGRpbmcnLCAncGluSWNvbicsICdyb3dTcGFuJywgJ3Njb3BlJywgJ3N0aWNreScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGlnbicsICdjb2xTcGFuJywgJ2RlbnNpdHknLCAnZWxsaXBzaXMnLCAnaGVhZCcsICdub1BpbkluZGljYXRvcicsICdudW1lcmljJywgJ3BhZGRpbmcnLCAncGluSWNvbicsICdyb3dTcGFuJywgJ3Njb3BlJywgJ3N0aWNreScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUNlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZUNlbGwge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVDb250YWluZXIsXG4gIGlucHV0czogWydlbGV2YXRpb24nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdzaGFwZScsICd2YXJpYW50JywgJ3ZpYnJhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZWxldmF0aW9uJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnc2hhcGUnLCAndmFyaWFudCcsICd2aWJyYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUNvbnRhaW5lciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVDb250YWluZXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVFeHBhbmRUb2dnbGUsXG4gIGlucHV0czogWydidXR0b25MYWJlbCcsICdpY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJsZS1leHBhbmQtdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydidXR0b25MYWJlbCcsICdpY29uJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZUV4cGFuZFRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVFeHBhbmRUb2dnbGUgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVFeHBhbmRUb2dnbGUge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVGb290XG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtZm9vdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFtdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVGb290IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZUZvb3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kVGFibGVGb290IHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRhYmxlSGVhZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlSGVhZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFibGVIZWFkIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlSGVhZCB7fVxuXG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogZGVmaW5lTWRUYWJsZVBhZ2luYXRpb24sXG4gIGlucHV0czogWydjb21wYWN0JywgJ2NvdW50JywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnbGFiZWxBbGwnLCAnbGFiZWxEaXNwbGF5ZWRSb3dzJywgJ2xhYmVsRmlyc3RQYWdlJywgJ2xhYmVsTGFzdFBhZ2UnLCAnbGFiZWxOZXh0UGFnZScsICdsYWJlbFByZXZpb3VzUGFnZScsICdsYWJlbFJvd3NQZXJQYWdlJywgJ3BhZ2UnLCAncm93c1BlclBhZ2UnLCAncm93c1BlclBhZ2VPcHRpb25zJywgJ3Nob3dGaXJzdExhc3QnXSxcbiAgbWV0aG9kczogWydnb1RvUGFnZScsICdzZXRSb3dzUGVyUGFnZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcGFnaW5hdGlvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY29tcGFjdCcsICdjb3VudCcsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2xhYmVsQWxsJywgJ2xhYmVsRGlzcGxheWVkUm93cycsICdsYWJlbEZpcnN0UGFnZScsICdsYWJlbExhc3RQYWdlJywgJ2xhYmVsTmV4dFBhZ2UnLCAnbGFiZWxQcmV2aW91c1BhZ2UnLCAnbGFiZWxSb3dzUGVyUGFnZScsICdwYWdlJywgJ3Jvd3NQZXJQYWdlJywgJ3Jvd3NQZXJQYWdlT3B0aW9ucycsICdzaG93Rmlyc3RMYXN0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZVBhZ2luYXRpb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFBhZ2VDaGFuZ2UnLCAnbWRSb3dzUGVyUGFnZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlUGFnaW5hdGlvbiBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVBhZ2luYXRpb24ge1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBwYWdlLlxuICAgKi9cbiAgbWRQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBwYWdlOiBudW1iZXIgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIHJvd3MtcGVyLXBhZ2UuXG4gICAqL1xuICBtZFJvd3NQZXJQYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyByb3dzUGVyUGFnZTogbnVtYmVyIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVSb3csXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydjbGlja2FibGUnLCAnZGlzYWJsZWQnLCAnZXhwYW5kYWJsZScsICdleHBhbmRlZCcsICdoaWdobGlnaHQnLCAncm93Z3JvdXAnLCAnc2VsZWN0YWJsZScsICdzZWxlY3RlZCcsICd2YWx1ZSddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFibGVSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZFJvd0NsaWNrJywgJ21kUm93U2VsZWN0aW9uQ2hhbmdlJywgJ21kUm93RXhwYW5kZWRDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUYWJsZVJvdyBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVJvdyB7XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyAob3IgRW50ZXIvU3BhY2UtYWN0aXZhdGVzKSB0aGUgcm93LlxuICAgKi9cbiAgbWRSb3dDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdmFsdWU6IHN0cmluZzsgcm93OiBIVE1MRWxlbWVudCB9Pj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBgc2VsZWN0ZWRgIHN0YXRlIGNoYW5nZXMgKHVzZWQgYnkgYDxtZC10YWJsZT5gIGZvclxuc2VsZWN0aW9uIGNvb3JkaW5hdGlvbikuXG4gICAqL1xuICBtZFJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgc2VsZWN0ZWQ6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgcm93J3MgZXhwYW5kZWQgc3RhdGUgY2hhbmdlcy5cbiAgICovXG4gIG1kUm93RXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGV4cGFuZGVkOiBib29sZWFuIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVTb3J0TGFiZWwsXG4gIGlucHV0czogWydhY3RpdmUnLCAnY29sdW1uJywgJ2RlZmF1bHRPcmRlcicsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvblBvc2l0aW9uJywgJ2luYWN0aXZlSWNvbicsICdvcmRlciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGFibGUtc29ydC1sYWJlbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYWN0aXZlJywgJ2NvbHVtbicsICdkZWZhdWx0T3JkZXInLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdpY29uJywgJ2ljb25Qb3NpdGlvbicsICdpbmFjdGl2ZUljb24nLCAnb3JkZXInXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZFRhYmxlU29ydExhYmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRTb3J0UmVxdWVzdCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlU29ydExhYmVsIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRhYmxlU29ydExhYmVsIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHVzZXIgcmVxdWVzdHMgdG8gc29ydCBieSB0aGlzIGNvbHVtbi5cbiAgICovXG4gIG1kU29ydFJlcXVlc3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGNvbHVtbjogc3RyaW5nOyBkZWZhdWx0T3JkZXI6ICdhc2MnIHwgJ2Rlc2MnIH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFibGVUb29sYmFyLFxuICBpbnB1dHM6IFsnYXV0b0JpbmQnLCAnY29tcGFjdCcsICdkZW5zaXR5JywgJ2hlYWRsaW5lJywgJ2xhYmVsU2VsZWN0ZWQnLCAnbnVtU2VsZWN0ZWQnLCAnc3VwcG9ydGluZ1RleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRhYmxlLXRvb2xiYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dHMtbWV0YWRhdGEtcHJvcGVydHlcbiAgaW5wdXRzOiBbJ2F1dG9CaW5kJywgJ2NvbXBhY3QnLCAnZGVuc2l0eScsICdoZWFkbGluZScsICdsYWJlbFNlbGVjdGVkJywgJ251bVNlbGVjdGVkJywgJ3N1cHBvcnRpbmdUZXh0J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUYWJsZVRvb2xiYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNZFRhYmxlVG9vbGJhciBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJsZVRvb2xiYXIge31cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGFicyxcbiAgaW5wdXRzOiBbJ2FjdGl2ZVRhYkluZGV4JywgJ2FyaWFMYWJlbFByb3AnLCAnZGl2aWRlcicsICd0YWJXaWR0aCcsICd2YXJpYW50JywgJ3dpZHRoJ10sXG4gIG1ldGhvZHM6IFsnc2VsZWN0VGFiJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10YWJzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhY3RpdmVUYWJJbmRleCcsICdhcmlhTGFiZWxQcm9wJywgJ2RpdmlkZXInLCAndGFiV2lkdGgnLCAndmFyaWFudCcsICd3aWR0aCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGFicyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kVGFiQ2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGFicyBleHRlbmRzIENvbXBvbmVudHMuTWRUYWJzIHtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlc1xuICAgKi9cbiAgbWRUYWJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGluZGV4OiBudW1iZXI7IHByZXZpb3VzSW5kZXg6IG51bWJlciB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRleHRGaWVsZCxcbiAgaW5wdXRzOiBbJ2FwcGVhckZvY3VzZWQnLCAnYXV0b0NhcGl0YWxpemUnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzV3JhcCcsICdjbGVhcmFibGUnLCAnZGVib3VuY2UnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlbnRlcktleUhpbnQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2ZvY3VzQm9yZGVyV2lkdGgnLCAnZm9ybWF0T24nLCAnZm9ybWF0dGVyJywgJ2lucHV0QXJpYUF1dG9jb21wbGV0ZScsICdpbnB1dEV4cGFuZGVkJywgJ2lucHV0TW9kZScsICdpbnB1dFJvbGUnLCAnbGFiZWwnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ211bHRpbGluZScsICduYW1lJywgJ3BhcnNlcicsICdwYXNzd29yZFRvZ2dsZScsICdwYXR0ZXJuJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeFRleHQnLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAncmVzZXJ2ZVN1cHBvcnRpbmdTcGFjZScsICdyZXN0cmljdCcsICdyb3dzJywgJ3NwZWVjaExhbmcnLCAnc3BlZWNoVG9UZXh0JywgJ3NwZWxsY2hlY2snLCAnc3RlcCcsICdzdWZmaXhUZXh0JywgJ3N1cHBvcnRpbmdUZXh0JywgJ3Rocm90dGxlJywgJ3R5cGUnLCAndmFsdWUnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJywgJ3NlbGVjdCcsICdnZXRJbnB1dEVsZW1lbnQnLCAnZ2V0VmFsaWRpdHknLCAnc2V0Q3VzdG9tVmFsaWRpdHknLCAnY2hlY2tWYWxpZGl0eScsICdyZXBvcnRWYWxpZGl0eSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdGV4dC1maWVsZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnYXBwZWFyRm9jdXNlZCcsICdhdXRvQ2FwaXRhbGl6ZScsICdhdXRvY29tcGxldGUnLCAnY2hpcHNXcmFwJywgJ2NsZWFyYWJsZScsICdkZWJvdW5jZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VudGVyS2V5SGludCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9jdXNCb3JkZXJXaWR0aCcsICdmb3JtYXRPbicsICdmb3JtYXR0ZXInLCAnaW5wdXRBcmlhQXV0b2NvbXBsZXRlJywgJ2lucHV0RXhwYW5kZWQnLCAnaW5wdXRNb2RlJywgJ2lucHV0Um9sZScsICdsYWJlbCcsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbXVsdGlsaW5lJywgJ25hbWUnLCAncGFyc2VyJywgJ3Bhc3N3b3JkVG9nZ2xlJywgJ3BhdHRlcm4nLCAncGxhY2Vob2xkZXInLCAncHJlZml4VGV4dCcsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jlc3RyaWN0JywgJ3Jvd3MnLCAnc3BlZWNoTGFuZycsICdzcGVlY2hUb1RleHQnLCAnc3BlbGxjaGVjaycsICdzdGVwJywgJ3N1ZmZpeFRleHQnLCAnc3VwcG9ydGluZ1RleHQnLCAndGhyb3R0bGUnLCAndHlwZScsICd2YWx1ZScsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUZXh0RmllbGQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZElucHV0JywgJ21kQ2hhbmdlJywgJ21kU2VhcmNoJywgJ21kQ2xlYXInLCAnbWRQYXNzd29yZFRvZ2dsZScsICdtZFNwZWVjaFJlc3VsdCcsICdtZFZhbGlkaXR5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGV4dEZpZWxkIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRleHRGaWVsZCB7XG5cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG4gIG1kQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdpdGggZGVib3VuY2UvdGhyb3R0bGUgY29udHJvbC4gVXNlZnVsIGZvciBzZWFyY2gtYXMteW91LXR5cGUsIEFQSSBjYWxscywgb3IgZmlsdGVyaW5nLlxuICAgKi9cbiAgbWRTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxuICBtZENsZWFyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuXG4gIG1kUGFzc3dvcmRUb2dnbGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZpc2libGU6IGJvb2xlYW4gfT4+O1xuXG4gIG1kU3BlZWNoUmVzdWx0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0cmFuc2NyaXB0OiBzdHJpbmc7IGxpc3RlbmluZzogYm9vbGVhbiB9Pj47XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoaXMgY29udHJvbCdzIHZhbGlkaXR5IENIQU5HRVMg4oCUIG5ldmVyIG9uIGV2ZXJ5IGtleXN0cm9rZSwgYW5kXG5uZXZlciBmb3IgYSByZS1wdWJsaXNoIHRoYXQgbGFuZHMgb24gdGhlIHNhbWUgc3RhdGUuXG5cbmBjb21wb3NlZDogZmFsc2VgIGlzIGRlbGliZXJhdGUuIENvbXBvc2l0ZXMgbGlrZSBtZC1zZWxlY3QgZW1iZWQgYW5cbm1kLXRleHQtZmllbGQsIGFuZCBhIGNvbXBvc2VkIGV2ZW50IGVzY2FwZXMgdGhhdCBpbm5lciBzaGFkb3cgcm9vdCwgc28gYVxubGlzdGVuZXIgb24gbWQtc2VsZWN0IHdvdWxkIHJlY2VpdmUgdGhlIGlubmVyIGZpZWxkJ3MgZXZlbnQgYXMgd2VsbCBhcyB0aGVcbmhvc3QncyDigJQgdHdvIGV2ZW50cywgZGlmZmVyZW50IHBheWxvYWRzLCBmb3Igb25lIGxvZ2ljYWwgY29udHJvbC4gS2VlcGluZ1xuaXQgdW5jb21wb3NlZCBtZWFucyBlYWNoIGNvbXBvbmVudCByZXBvcnRzIG9ubHkgZm9yIGl0c2VsZiwgd2hpbGVcbmBidWJibGVzOiB0cnVlYCBzdGlsbCBsZXRzIGEgPGZvcm0+IG9yIGFwcCByb290IGhlYXIgZXZlcnkgY29udHJvbC5cbiAgICovXG4gIG1kVmFsaWRpdHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IHZhbGlkOiBib29sZWFuOyB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nOyBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IH0+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVGltZVBpY2tlcixcbiAgaW5wdXRzOiBbJ2FtTGFiZWwnLCAnY2FuY2VsTGFiZWwnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdlcnJvcicsICdlcnJvclRleHQnLCAnZm9ybWF0JywgJ2hlYWRsaW5lJywgJ2hlYWRsaW5lRGlhbExhYmVsJywgJ2hlYWRsaW5lSW5wdXRMYWJlbCcsICdoaWRlVHJpZ2dlcicsICdob3VyTGFiZWwnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdtaW51dGVMYWJlbCcsICdtaW51dGVTdGVwJywgJ25hbWUnLCAnb2tMYWJlbCcsICdvcGVuJywgJ29yaWVudGF0aW9uJywgJ3BlcmlvZExhYmVsJywgJ3BlcmlvZExheW91dCcsICdwbUxhYmVsJywgJ3JhbmdlT3V0c2lkZUxhYmVsJywgJ3JhbmdlT3ZlcmZsb3dMYWJlbCcsICdyYW5nZVVuZGVyZmxvd0xhYmVsJywgJ3JlcXVpcmVkJywgJ3Jlc2VydmVTdXBwb3J0aW5nU3BhY2UnLCAncmVzcG9uc2l2ZScsICdzdXBwb3J0aW5nVGV4dCcsICd0b2dnbGVEaWFsTGFiZWwnLCAndG9nZ2xlSW5wdXRMYWJlbCcsICd2YWx1ZScsICd2YWx1ZU1pc3NpbmdMYWJlbCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJywgJ2NoZWNrVmFsaWRpdHknLCAncmVwb3J0VmFsaWRpdHknLCAnZ2V0VmFsaWRpdHknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21kLXRpbWUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbUxhYmVsJywgJ2NhbmNlbExhYmVsJywgJ2RlbnNpdHknLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXJyb3JUZXh0JywgJ2Zvcm1hdCcsICdoZWFkbGluZScsICdoZWFkbGluZURpYWxMYWJlbCcsICdoZWFkbGluZUlucHV0TGFiZWwnLCAnaGlkZVRyaWdnZXInLCAnaG91ckxhYmVsJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbWludXRlTGFiZWwnLCAnbWludXRlU3RlcCcsICduYW1lJywgJ29rTGFiZWwnLCAnb3BlbicsICdvcmllbnRhdGlvbicsICdwZXJpb2RMYWJlbCcsICdwZXJpb2RMYXlvdXQnLCAncG1MYWJlbCcsICdyYW5nZU91dHNpZGVMYWJlbCcsICdyYW5nZU92ZXJmbG93TGFiZWwnLCAncmFuZ2VVbmRlcmZsb3dMYWJlbCcsICdyZXF1aXJlZCcsICdyZXNlcnZlU3VwcG9ydGluZ1NwYWNlJywgJ3Jlc3BvbnNpdmUnLCAnc3VwcG9ydGluZ1RleHQnLCAndG9nZ2xlRGlhbExhYmVsJywgJ3RvZ2dsZUlucHV0TGFiZWwnLCAndmFsdWUnLCAndmFsdWVNaXNzaW5nTGFiZWwnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVGltZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ21kQ2hhbmdlJywgJ21kSW5wdXQnLCAnbWRPcGVuJywgJ21kQ2xvc2UnLCAnbWRDYW5jZWwnLCAnbWRNb2RlQ2hhbmdlJywgJ21kVmFsaWRpdHlDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5pbXBvcnQgdHlwZSB7IE1kVGltZVBpY2tlckNoYW5nZURldGFpbCBhcyBJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGF3Yy11aS9jb3JlL2Rpc3QvY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1kVGltZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgYXMgSU1kVGltZVBpY2tlck1kVGltZVBpY2tlck1vZGVDaGFuZ2VEZXRhaWwgfSBmcm9tICdAYXdjLXVpL2NvcmUvZGlzdC9jb21wb25lbnRzJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVGltZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuTWRUaW1lUGlja2VyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjb25maXJtcyB0aGUgY2hvc2VuIHRpbWUgKE9LIGJ1dHRvbiwgb3JcbkVudGVyIGluc2lkZSB0aGUgSEgvTU0gZmllbGRzIHdoaWxlIHRoZSBidWZmZXJzIGFyZSB2YWxpZCkuXG5UaGlzIGlzIHRoZSBjYW5vbmljYWwgXCJ0aGUgdXNlciBoYXMgY29tbWl0dGVkIGEgdmFsdWVcIiBldmVudCDigJRcbnVzZSBpdCBmb3IgZm9ybSBpbnRlZ3JhdGlvbiwgcGVyc2lzdGVuY2UsIGFuZCBhbmFseXRpY3MuXG5cblRoZSBkZXRhaWwgYnVuZGxlIGluY2x1ZGVzIGJvdGggdGhlIGh1bWFuLWZyaWVuZGx5IGB2YWx1ZWAgYW5kXG50aHJlZSBpbmR1c3RyeS1zdGFuZGFyZCBJU08gLyBEYXRlIHJlcHJlc2VudGF0aW9ucyBzb1xuZG93bnN0cmVhbSBjb2RlIG5ldmVyIGhhcyB0byByZS1mb3JtYXQgdGhlIHRpbWUgaXRzZWxmLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIG9uIGV2ZXJ5IGludGVybWVkaWF0ZSBjaGFuZ2Ugd2hpbGUgdGhlIGRpYWxvZyBpc1xub3BlbiDigJQgZGlhbCBkcmFnLCBkaWFsLW1vZGUga2V5Ym9hcmQgdHlwaW5nLCBBTS9QTSB0b2dnbGUsXG5hbmQgaW5wdXQtdmFyaWFudCBrZXlzdHJva2VzIHRoYXQgcHJvZHVjZSBhIHZhbGlkIEhIOk1NLlxuXG5NaXJyb3JzIHRoZSBIVE1MIGBpbnB1dGAgZXZlbnQgc2VtYW50aWNzIChcImZpcmVzIGZvciBldmVyeVxudXNlci1kcml2ZW4gbXV0YXRpb25cIikgYW5kIG1hdGNoZXMgdGhlIHBhdHRlcm4gdXNlZCBieVxuYG1kLWRhdGUtcGlja2VyYCAvIGBtZC10ZXh0LWZpZWxkYC4gVXNlIGBtZElucHV0YCBmb3IgbGl2ZVxucHJldmlld3MgYW5kIGBtZENoYW5nZWAgZm9yIHRoZSBmaW5hbCBjb21taXQuIFRoZSBkZXRhaWxcbnNoYXBlIGlzIGlkZW50aWNhbCB0byBgbWRDaGFuZ2VgIHNvIGEgcHJldmlld2VyIGNhbiByZWFkIHRoZVxuc2FtZSBmaWVsZHMgcmVnYXJkbGVzcyBvZiB3aGljaCBldmVudCBhcnJpdmVkLlxuICAgKi9cbiAgbWRJbnB1dDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElNZFRpbWVQaWNrZXJNZFRpbWVQaWNrZXJDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIG9wZW5zLlxuICAgKi9cbiAgbWRPcGVuOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwaWNrZXIgY2xvc2VzICh3aGV0aGVyIGNvbmZpcm1lZCwgY2FuY2VsbGVkLCBvciBkaXNtaXNzZWQpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgcGlja2VyIGlzIGNhbmNlbGxlZCBvciBkaXNtaXNzZWQgd2l0aG91dCBjb21taXR0aW5nLlxuICAgKi9cbiAgbWRDYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmV0d2VlbiB0aGUgZGlhbCBhbmQgaW5wdXRcbnZhcmlhbnRzIHZpYSB0aGUgZGlhbG9nJ3Mga2V5Ym9hcmQgLyBjbG9jayB0b2dnbGUuIExldHNcbmFuYWx5dGljcyBvciBzaWJsaW5nIFVJIHJlYWN0IHRvIHRoZSB2YXJpYW50IGNoYW5nZSAoZS5nLlxuYW5ub3VuY2UgdGhlIG5ldyBtb2RlIHRvIHNjcmVlbiByZWFkZXJzLCBvciByZXNpemUgYSBob3N0aW5nXG5kaWFsb2cgd3JhcHBlcikuXG4gICAqL1xuICBtZE1vZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJTWRUaW1lUGlja2VyTWRUaW1lUGlja2VyTW9kZUNoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGlzIGNvbnRyb2wncyB2YWxpZGl0eSBDSEFOR0VTIOKAlCBuZXZlciBvbiBldmVyeSBrZXlzdHJva2UsIGFuZFxubmV2ZXIgZm9yIGEgcmUtcHVibGlzaCB0aGF0IGxhbmRzIG9uIHRoZSBzYW1lIHN0YXRlLlxuXG5gY29tcG9zZWQ6IGZhbHNlYCBpcyBkZWxpYmVyYXRlLiBDb21wb3NpdGVzIGxpa2UgbWQtc2VsZWN0IGVtYmVkIGFuXG5tZC10ZXh0LWZpZWxkLCBhbmQgYSBjb21wb3NlZCBldmVudCBlc2NhcGVzIHRoYXQgaW5uZXIgc2hhZG93IHJvb3QsIHNvIGFcbmxpc3RlbmVyIG9uIG1kLXNlbGVjdCB3b3VsZCByZWNlaXZlIHRoZSBpbm5lciBmaWVsZCdzIGV2ZW50IGFzIHdlbGwgYXMgdGhlXG5ob3N0J3Mg4oCUIHR3byBldmVudHMsIGRpZmZlcmVudCBwYXlsb2FkcywgZm9yIG9uZSBsb2dpY2FsIGNvbnRyb2wuIEtlZXBpbmdcbml0IHVuY29tcG9zZWQgbWVhbnMgZWFjaCBjb21wb25lbnQgcmVwb3J0cyBvbmx5IGZvciBpdHNlbGYsIHdoaWxlXG5gYnViYmxlczogdHJ1ZWAgc3RpbGwgbGV0cyBhIDxmb3JtPiBvciBhcHAgcm9vdCBoZWFyIGV2ZXJ5IGNvbnRyb2wuXG4gICAqL1xuICBtZFZhbGlkaXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB2YWxpZDogYm9vbGVhbjsgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZzsgZmxhZ3M6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyB9Pj47XG59XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRvb2xiYXIsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnYXJpYUxhYmVsUHJvcCcsICdhcmlhTGFiZWxsZWRieScsICdjb2xvcicsICdjb250YWluZXJTZW1hbnRpY3MnLCAnZGVuc2l0eScsICdsYXlvdXQnLCAndmFyaWFudCddLFxuICBtZXRob2RzOiBbJ3NldEZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10b29sYmFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnYXJpYUxhYmVsUHJvcCcsICdhcmlhTGFiZWxsZWRieScsICdjb2xvcicsICdjb250YWluZXJTZW1hbnRpY3MnLCAnZGVuc2l0eScsICdsYXlvdXQnLCAndmFyaWFudCddLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE1kVG9vbGJhciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIE1kVG9vbGJhciBleHRlbmRzIENvbXBvbmVudHMuTWRUb29sYmFyIHt9XG5cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiBkZWZpbmVNZFRvb2x0aXAsXG4gIGlucHV0czogWydhdXRvUG9zaXRpb24nLCAnY3Jvc3NPZmZzZXQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdoaWRlRGVsYXknLCAnb2Zmc2V0JywgJ29wZW4nLCAncG9zaXRpb24nLCAnc2hvd0RlbGF5JywgJ3N1YmhlYWQnLCAndGV4dCcsICd2YXJpYW50J10sXG4gIG1ldGhvZHM6IFsnc2hvdycsICdoaWRlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtZC10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogWydhdXRvUG9zaXRpb24nLCAnY3Jvc3NPZmZzZXQnLCAnZGVuc2l0eScsICdkaXNhYmxlZCcsICdoaWRlRGVsYXknLCAnb2Zmc2V0JywgJ29wZW4nLCAncG9zaXRpb24nLCAnc2hvd0RlbGF5JywgJ3N1YmhlYWQnLCAndGV4dCcsICd2YXJpYW50J10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsnbWRPcGVuJywgJ21kQ2xvc2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5NZFRvb2x0aXAge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgdG9vbHRpcCBiZWNvbWVzIHZpc2libGUuIGBidWJibGVzOmZhbHNlYCArIGBjb21wb3NlZDpmYWxzZWAga2VlcCBpdFxuZnJvbSBjcm9zc2luZyB0aGUgc2hhZG93IGJvdW5kYXJ5IGFuZCByZXRhcmdldGluZyBvbnRvIGFuIGVtYmVkZGluZyBob3N0ICh0aGUgcmVwbydzXG5kb2N1bWVudGVkIGNvbXBvc2VkLWV2ZW50LWxlYWsgY2xhc3Mg4oCUIHNlZSBtZC1kYXRlLXBpY2tlcidzIHN3YWxsb3cgZ3VhcmRzKS5cbiAgICovXG4gIG1kT3BlbjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEVtaXRzIHdoZW4gdGhlIHRvb2x0aXAgaXMgZGlzbWlzc2VkIChkb2VzIG5vdCBidWJibGUgb3IgY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMpLlxuICAgKi9cbiAgbWRDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+Pjtcbn1cblxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IGRlZmluZU1kVHJhbnNmZXJMaXN0LFxuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnbW92ZVNlbGVjdGVkUmlnaHQnLCAnbW92ZVNlbGVjdGVkTGVmdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWQtdHJhbnNmZXItbGlzdCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnY291bnRUZW1wbGF0ZScsICdkZW5zaXR5JywgJ2Rpc2FibGVkJywgJ2VtcHR5SWNvbicsICdlbXB0eVRleHQnLCAnaXRlbXMnLCAnbW92ZUFsbExlZnRJY29uJywgJ21vdmVBbGxMZWZ0TGFiZWwnLCAnbW92ZUFsbFJpZ2h0SWNvbicsICdtb3ZlQWxsUmlnaHRMYWJlbCcsICdtb3ZlTGVmdEljb24nLCAnbW92ZUxlZnRMYWJlbCcsICdtb3ZlUmlnaHRJY29uJywgJ21vdmVSaWdodExhYmVsJywgJ3NlYXJjaEljb24nLCAnc2VhcmNoYWJsZScsICdzaG93U2VsZWN0QWxsJywgJ3NpbmdsZVN0ZXBPbmx5JywgJ3NvdXJjZVNlYXJjaFBsYWNlaG9sZGVyJywgJ3NvdXJjZVRpdGxlJywgJ3RhcmdldFNlYXJjaFBsYWNlaG9sZGVyJywgJ3RhcmdldFRpdGxlJywgJ3ZhbHVlJ10sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWRUcmFuc2Zlckxpc3Qge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWydtZENoYW5nZScsICdtZE1vdmUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTWRUcmFuc2Zlckxpc3QgZXh0ZW5kcyBDb21wb25lbnRzLk1kVHJhbnNmZXJMaXN0IHtcbiAgLyoqXG4gICAqIEZpcmVzIG9uIGV2ZXJ5IGNoYW5nZSB0byB0aGUgdGFyZ2V0IHZhbHVlLlxuICAgKi9cbiAgbWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogRmlyZXMgYWZ0ZXIgaXRlbXMgYXJlIG1vdmVkLiBkZXRhaWwgZGVzY3JpYmVzIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICBtZE1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx7IGRpcmVjdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JzsgbW92ZWQ6IHN0cmluZ1tdOyB0YXJnZXQ6IHN0cmluZ1tdOyB9Pj47XG59XG5cblxuIl19