@alauda/ui 6.4.6-beta.2 → 6.4.6-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alauda-ui.d.ts +0 -3
- package/button/button.types.d.ts +0 -9
- package/esm2020/accordion/accordion-item/accordion-item.component.mjs +1 -3
- package/esm2020/alauda-ui.mjs +1 -4
- package/esm2020/anchor/anchor.component.mjs +1 -2
- package/esm2020/back-top/back-top.component.mjs +2 -4
- package/esm2020/button/button.component.mjs +1 -2
- package/esm2020/button/button.types.mjs +1 -10
- package/esm2020/date-picker/calendar/constant.mjs +1 -2
- package/esm2020/date-picker/calendar/header/component.mjs +1 -5
- package/esm2020/date-picker/calendar/panel/picker-panel.mjs +1 -5
- package/esm2020/date-picker/calendar/range-picker-panel/component.mjs +1 -3
- package/esm2020/date-picker/calendar/util.mjs +1 -2
- package/esm2020/dialog/dialog-content/dialog-content.component.mjs +1 -2
- package/esm2020/dialog/dialog.component.mjs +2 -2
- package/esm2020/dialog/dialog.service.mjs +1 -2
- package/esm2020/drawer/component/drawer.component.mjs +1 -4
- package/esm2020/drawer/component/helper-directives.mjs +1 -5
- package/esm2020/form/common-form.mjs +1 -8
- package/esm2020/icon/icon-register.service.mjs +1 -2
- package/esm2020/input/autosize.directive.mjs +2 -7
- package/esm2020/input/input.component.mjs +1 -5
- package/esm2020/input/tags-input/tags-input.component.mjs +2 -7
- package/esm2020/message/message.config.mjs +1 -6
- package/esm2020/notification/notification.component.mjs +1 -5
- package/esm2020/paginator/paginator-intl.mjs +1 -12
- package/esm2020/paginator/paginator.component.mjs +1 -9
- package/esm2020/radio/radio-button/radio-button.component.mjs +1 -2
- package/esm2020/radio/radio-group/radio-group.component.mjs +1 -4
- package/esm2020/radio/radio.component.mjs +1 -2
- package/esm2020/scrolling/fixed-size-table-virtual-scroll-strategy.mjs +1 -3
- package/esm2020/scrolling/fixed-size-table-virtual-scroll.directive.mjs +1 -3
- package/esm2020/scrolling/fixed-size-virtual-scroll.directive.mjs +1 -2
- package/esm2020/select/base-select.mjs +2 -5
- package/esm2020/select/multi-select/multi-select.component.mjs +2 -4
- package/esm2020/select/select.component.mjs +1 -2
- package/esm2020/select/validators.mjs +2 -6
- package/esm2020/sort/sort-errors.mjs +1 -5
- package/esm2020/sort/sort-header.component.mjs +1 -5
- package/esm2020/sort/sort.directive.mjs +1 -2
- package/esm2020/steps/steps.component.mjs +1 -5
- package/esm2020/table/table-cell-def.directive.mjs +1 -5
- package/esm2020/table/table-cell.directive.mjs +1 -3
- package/esm2020/table/table-column-def.directive.mjs +1 -7
- package/esm2020/table/table-header-cell-def.directive.mjs +1 -5
- package/esm2020/table/table-header-cell.directive.mjs +1 -3
- package/esm2020/table/table-header-row-def.directive.mjs +1 -5
- package/esm2020/table/table-header-row.component.mjs +1 -2
- package/esm2020/table/table-row-def.directive.mjs +1 -6
- package/esm2020/table/table-row.component.mjs +1 -2
- package/esm2020/table/table-scroll.directive.mjs +3 -4
- package/esm2020/table/table.component.mjs +1 -4
- package/esm2020/tabs/tab-body.component.mjs +1 -19
- package/esm2020/tabs/tab-context.service.mjs +1 -4
- package/esm2020/tabs/tab-group.component.mjs +1 -46
- package/esm2020/tabs/tab-header-active-indicator.component.mjs +1 -10
- package/esm2020/tabs/tab-header.component.mjs +3 -106
- package/esm2020/tabs/tab.component.mjs +1 -15
- package/esm2020/tabs/tabs.types.mjs +1 -4
- package/esm2020/tag/tag.component.mjs +1 -2
- package/esm2020/time-picker/panel/panel.component.mjs +1 -3
- package/esm2020/tooltip/tooltip-intl.mjs +1 -7
- package/esm2020/tree-select/tree-select.component.mjs +1 -2
- package/esm2020/types.mjs +1 -4
- package/esm2020/utils/bem.mjs +1 -2
- package/esm2020/utils/coercion.mjs +1 -5
- package/fesm2015/alauda-ui.mjs +11 -376
- package/fesm2015/alauda-ui.mjs.map +1 -1
- package/fesm2020/alauda-ui.mjs +11 -376
- package/fesm2020/alauda-ui.mjs.map +1 -1
- package/form/common-form.d.ts +0 -7
- package/input/autosize.directive.d.ts +0 -3
- package/input/input.component.d.ts +0 -3
- package/message/message.config.d.ts +0 -20
- package/notification/notification.component.d.ts +0 -4
- package/package.json +3 -2
- package/paginator/paginator-intl.d.ts +0 -9
- package/paginator/paginator.component.d.ts +0 -14
- package/radio/radio-group/radio-group.component.d.ts +0 -3
- package/select/base-select.d.ts +0 -3
- package/sort/sort-errors.d.ts +0 -4
- package/steps/steps.component.d.ts +0 -3
- package/steps/types.d.ts +0 -3
- package/table/table-cell-def.directive.d.ts +0 -4
- package/table/table-cell.directive.d.ts +0 -1
- package/table/table-column-def.directive.d.ts +0 -4
- package/table/table-header-cell-def.directive.d.ts +0 -4
- package/table/table-header-cell.directive.d.ts +0 -1
- package/table/table-header-row-def.directive.d.ts +0 -4
- package/table/table-header-row.component.d.ts +0 -1
- package/table/table-row-def.directive.d.ts +0 -5
- package/table/table-row.component.d.ts +0 -1
- package/table/table-scroll.directive.d.ts +2 -2
- package/tabs/tab-body.component.d.ts +0 -16
- package/tabs/tab-context.service.d.ts +0 -3
- package/tabs/tab-group.component.d.ts +0 -28
- package/tabs/tab-header-active-indicator.component.d.ts +0 -9
- package/tabs/tab-header.component.d.ts +0 -83
- package/tabs/tab.component.d.ts +0 -18
- package/tabs/tabs.types.d.ts +0 -3
- package/tooltip/tooltip-intl.d.ts +0 -4
- package/types.d.ts +0 -3
|
@@ -12,10 +12,6 @@ import * as i3 from "./tab-header-active-indicator.component";
|
|
|
12
12
|
import * as i4 from "@angular/common";
|
|
13
13
|
import * as i5 from "@angular/cdk/portal";
|
|
14
14
|
import * as i6 from "@angular/cdk/observers";
|
|
15
|
-
/**
|
|
16
|
-
* The distance in pixels that will be overshot when scrolling a tab label into view. This helps
|
|
17
|
-
* provide a small affordance to the label next to it.
|
|
18
|
-
*/
|
|
19
15
|
const EXAGGERATED_OVERSCROLL = 60;
|
|
20
16
|
export class TabHeaderComponent {
|
|
21
17
|
constructor(_changeDetectorRef, _viewportRuler) {
|
|
@@ -23,27 +19,18 @@ export class TabHeaderComponent {
|
|
|
23
19
|
this._viewportRuler = _viewportRuler;
|
|
24
20
|
this.bem = buildBem('aui-tab-header');
|
|
25
21
|
this._showAddon = false;
|
|
26
|
-
/** Whether the controls for pagination should be displayed */
|
|
27
22
|
this._showPaginationControls = false;
|
|
28
|
-
/** Whether the tab list can be scrolled more towards the end of the tab label list. */
|
|
29
23
|
this._disableScrollAfter = true;
|
|
30
|
-
/** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
|
|
31
24
|
this._disableScrollBefore = true;
|
|
32
|
-
/** Whether the header should scroll to the selected index after the view has been checked. */
|
|
33
25
|
this._selectedIndexChanged = false;
|
|
34
|
-
/** The distance in pixels that the tab labels should be translated to the left. */
|
|
35
26
|
this._scrollDistance = 0;
|
|
36
27
|
this._selectedIndex = 0;
|
|
37
|
-
/** Emits when the component is destroyed. */
|
|
38
28
|
this._destroyed = new Subject();
|
|
39
29
|
this.type = TabType.Line;
|
|
40
30
|
this.size = TabSize.Medium;
|
|
41
|
-
/** Event emitted when the option is selected. */
|
|
42
31
|
this.selectFocusedIndex = new EventEmitter();
|
|
43
|
-
/** Event emitted when a label is focused. */
|
|
44
32
|
this.indexFocused = new EventEmitter();
|
|
45
33
|
}
|
|
46
|
-
/** The index of the active tab. */
|
|
47
34
|
get selectedIndex() {
|
|
48
35
|
return this._selectedIndex;
|
|
49
36
|
}
|
|
@@ -60,14 +47,11 @@ export class TabHeaderComponent {
|
|
|
60
47
|
this._destroyed.complete();
|
|
61
48
|
}
|
|
62
49
|
ngAfterContentChecked() {
|
|
63
|
-
// If the number of tab labels have changed, check if scrolling should be enabled
|
|
64
50
|
if (this._tabLabelCount !== this._labelWrappers.length) {
|
|
65
51
|
this._updatePagination();
|
|
66
52
|
this._tabLabelCount = this._labelWrappers.length;
|
|
67
53
|
this._changeDetectorRef.markForCheck();
|
|
68
54
|
}
|
|
69
|
-
// If the selected index has changed, scroll to the label and check if the scrolling controls
|
|
70
|
-
// should be disabled.
|
|
71
55
|
if (this._selectedIndexChanged) {
|
|
72
56
|
this._scrollToLabel(this._selectedIndex);
|
|
73
57
|
this._checkScrollingControls();
|
|
@@ -75,8 +59,6 @@ export class TabHeaderComponent {
|
|
|
75
59
|
this._selectedIndexChanged = false;
|
|
76
60
|
this._changeDetectorRef.markForCheck();
|
|
77
61
|
}
|
|
78
|
-
// If the scroll distance has been changed (tab selected, focused, scroll controls activated),
|
|
79
|
-
// then translate the header to reflect this.
|
|
80
62
|
if (this._scrollDistanceChanged) {
|
|
81
63
|
this._updateTabScrollPosition();
|
|
82
64
|
this._scrollDistanceChanged = false;
|
|
@@ -88,9 +70,6 @@ export class TabHeaderComponent {
|
|
|
88
70
|
this._changeDetectorRef.markForCheck();
|
|
89
71
|
}
|
|
90
72
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Aligns the ink bar to the selected tab on load.
|
|
93
|
-
*/
|
|
94
73
|
ngAfterContentInit() {
|
|
95
74
|
const resize = this._viewportRuler.change(150);
|
|
96
75
|
const realign = () => {
|
|
@@ -101,19 +80,12 @@ export class TabHeaderComponent {
|
|
|
101
80
|
.withHorizontalOrientation('ltr')
|
|
102
81
|
.withWrap();
|
|
103
82
|
this._keyManager.updateActiveItem(0);
|
|
104
|
-
// Defer the first call in order to allow for slower browsers to lay out the elements.
|
|
105
|
-
// This helps in cases where the user lands directly on a page with paginated tabs.
|
|
106
83
|
typeof requestAnimationFrame !== 'undefined'
|
|
107
84
|
? requestAnimationFrame(realign)
|
|
108
85
|
: realign();
|
|
109
|
-
// On window resize, realign the ink bar and update the orientation of
|
|
110
|
-
// the key manager if the direction has changed.
|
|
111
86
|
resize.pipe(takeUntil(this._destroyed)).subscribe(() => {
|
|
112
87
|
realign();
|
|
113
88
|
});
|
|
114
|
-
// If there is a change in the focus key manager we need to emit the `indexFocused`
|
|
115
|
-
// event in order to provide a public event that notifies about focus changes. Also we realign
|
|
116
|
-
// the tabs container by scrolling the new focused tab into the visible section.
|
|
117
89
|
this._keyManager.change
|
|
118
90
|
.pipe(takeUntil(this._destroyed))
|
|
119
91
|
.subscribe(newFocusIndex => {
|
|
@@ -121,22 +93,17 @@ export class TabHeaderComponent {
|
|
|
121
93
|
this._setTabFocus(newFocusIndex);
|
|
122
94
|
});
|
|
123
95
|
}
|
|
124
|
-
/** Sets the distance in pixels that the tab header should be transformed in the X-axis. */
|
|
125
96
|
get scrollDistance() {
|
|
126
97
|
return this._scrollDistance;
|
|
127
98
|
}
|
|
128
99
|
set scrollDistance(v) {
|
|
129
100
|
this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), v));
|
|
130
|
-
// Mark that the scroll distance has changed so that after the view is checked, the CSS
|
|
131
|
-
// transformation can move the header.
|
|
132
101
|
this._scrollDistanceChanged = true;
|
|
133
102
|
this._checkScrollingControls();
|
|
134
103
|
}
|
|
135
|
-
/** Tracks which element has focus; used for keyboard navigation */
|
|
136
104
|
get focusIndex() {
|
|
137
105
|
return this._keyManager ? this._keyManager.activeItemIndex : 0;
|
|
138
106
|
}
|
|
139
|
-
/** When the focus index is set, we must manually send focus to the correct label */
|
|
140
107
|
set focusIndex(value) {
|
|
141
108
|
if (!this._isValidIndex(value) ||
|
|
142
109
|
this.focusIndex === value ||
|
|
@@ -145,10 +112,6 @@ export class TabHeaderComponent {
|
|
|
145
112
|
}
|
|
146
113
|
this._keyManager.setActiveItem(value);
|
|
147
114
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Determines if an index is valid. If the tabs are not ready yet, we assume that the user is
|
|
150
|
-
* providing a valid index and return true.
|
|
151
|
-
*/
|
|
152
115
|
_isValidIndex(index) {
|
|
153
116
|
if (!this._labelWrappers) {
|
|
154
117
|
return true;
|
|
@@ -177,29 +140,16 @@ export class TabHeaderComponent {
|
|
|
177
140
|
this._keyManager.onKeydown(event);
|
|
178
141
|
}
|
|
179
142
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Sets focus on the HTML element for the label wrapper and scrolls it into the view if
|
|
182
|
-
* scrolling is enabled.
|
|
183
|
-
*/
|
|
184
143
|
_setTabFocus(tabIndex) {
|
|
185
144
|
if (this._showPaginationControls) {
|
|
186
145
|
this._scrollToLabel(tabIndex);
|
|
187
146
|
}
|
|
188
147
|
if (this._labelWrappers?.length > 0) {
|
|
189
148
|
this._labelWrappers.toArray()[tabIndex].focus();
|
|
190
|
-
// Do not let the browser manage scrolling to focus the element, this will be handled
|
|
191
|
-
// by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width
|
|
192
|
-
// should be the full width minus the offset width.
|
|
193
149
|
const containerEl = this._tabListContainer.nativeElement;
|
|
194
150
|
containerEl.scrollLeft = 0;
|
|
195
151
|
}
|
|
196
152
|
}
|
|
197
|
-
/**
|
|
198
|
-
* Moves the tab list such that the desired tab label (marked by index) is moved into view.
|
|
199
|
-
*
|
|
200
|
-
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
201
|
-
* should be called sparingly.
|
|
202
|
-
*/
|
|
203
153
|
_scrollToLabel(labelIndex) {
|
|
204
154
|
const selectedLabel = this._labelWrappers
|
|
205
155
|
? this._labelWrappers.toArray()[labelIndex]
|
|
@@ -207,63 +157,37 @@ export class TabHeaderComponent {
|
|
|
207
157
|
if (!selectedLabel) {
|
|
208
158
|
return;
|
|
209
159
|
}
|
|
210
|
-
// The view length is the visible width of the tab labels.
|
|
211
160
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
212
161
|
const labelBeforePos = selectedLabel.getOffsetLeft();
|
|
213
162
|
const labelAfterPos = labelBeforePos + selectedLabel.getOffsetWidth();
|
|
214
163
|
const beforeVisiblePos = this.scrollDistance;
|
|
215
164
|
const afterVisiblePos = this.scrollDistance + viewLength;
|
|
216
165
|
if (labelBeforePos < beforeVisiblePos) {
|
|
217
|
-
// Scroll header to move label to the before direction
|
|
218
166
|
this.scrollDistance -=
|
|
219
167
|
beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;
|
|
220
168
|
}
|
|
221
169
|
else if (labelAfterPos > afterVisiblePos) {
|
|
222
|
-
// Scroll header to move label to the after direction
|
|
223
170
|
this.scrollDistance +=
|
|
224
171
|
labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;
|
|
225
172
|
}
|
|
226
173
|
}
|
|
227
|
-
/**
|
|
228
|
-
* Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or
|
|
229
|
-
* the end of the list, respectively). The distance to scroll is computed to be a third of the
|
|
230
|
-
* length of the tab list view window.
|
|
231
|
-
*
|
|
232
|
-
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
233
|
-
* should be called sparingly.
|
|
234
|
-
*/
|
|
235
174
|
_scrollHeader(scrollDir) {
|
|
236
175
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
237
|
-
// Move the scroll distance one-third the length of the tab list's viewport.
|
|
238
176
|
this.scrollDistance += ((scrollDir === 'before' ? -1 : 1) * viewLength) / 3;
|
|
239
177
|
}
|
|
240
|
-
/**
|
|
241
|
-
* Callback for when the MutationObserver detects that the content has changed.
|
|
242
|
-
*/
|
|
243
178
|
_onContentChanges() {
|
|
244
179
|
this._updatePagination();
|
|
245
180
|
this._alignActiveIndicatorToSelectedTab();
|
|
246
181
|
this._changeDetectorRef.markForCheck();
|
|
247
182
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Updating the view whether pagination should be enabled or not
|
|
250
|
-
*/
|
|
251
183
|
_updatePagination() {
|
|
252
184
|
this._checkPaginationEnabled();
|
|
253
185
|
this._checkScrollingControls();
|
|
254
186
|
this._updateTabScrollPosition();
|
|
255
187
|
}
|
|
256
|
-
/**
|
|
257
|
-
* Evaluate whether the pagination controls should be displayed. If the scroll width of the
|
|
258
|
-
* tab list is wider than the size of the header container, then the pagination controls should
|
|
259
|
-
* be shown.
|
|
260
|
-
*
|
|
261
|
-
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
262
|
-
* should be called sparingly.
|
|
263
|
-
*/
|
|
264
188
|
_checkPaginationEnabled() {
|
|
265
189
|
const isEnabled = this._tabList.nativeElement.scrollWidth >
|
|
266
|
-
this._paginationWrapper.nativeElement.offsetWidth + 2;
|
|
190
|
+
this._paginationWrapper.nativeElement.offsetWidth + 2;
|
|
267
191
|
if (!isEnabled) {
|
|
268
192
|
this.scrollDistance = 0;
|
|
269
193
|
}
|
|
@@ -273,45 +197,22 @@ export class TabHeaderComponent {
|
|
|
273
197
|
this._changeDetectorRef.markForCheck();
|
|
274
198
|
}
|
|
275
199
|
}
|
|
276
|
-
/**
|
|
277
|
-
* Evaluate whether the before and after controls should be enabled or disabled.
|
|
278
|
-
* If the header is at the beginning of the list (scroll distance is equal to 0) then disable the
|
|
279
|
-
* before button. If the header is at the end of the list (scroll distance is equal to the
|
|
280
|
-
* maximum distance we can scroll), then disable the after button.
|
|
281
|
-
*
|
|
282
|
-
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
283
|
-
* should be called sparingly.
|
|
284
|
-
*/
|
|
285
200
|
_checkScrollingControls() {
|
|
286
|
-
// Check if the pagination arrows should be activated.
|
|
287
201
|
this._disableScrollBefore = this.scrollDistance === 0;
|
|
288
202
|
this._disableScrollAfter =
|
|
289
203
|
this.scrollDistance === this._getMaxScrollDistance();
|
|
290
204
|
this._changeDetectorRef.markForCheck();
|
|
291
205
|
}
|
|
292
|
-
/**
|
|
293
|
-
* Determines what is the maximum length in pixels that can be set for the scroll distance. This
|
|
294
|
-
* is equal to the difference in width between the tab list container and tab header container.
|
|
295
|
-
*
|
|
296
|
-
* This is an expensive call that forces a layout reflow to compute box and scroll metrics and
|
|
297
|
-
* should be called sparingly.
|
|
298
|
-
*/
|
|
299
206
|
_getMaxScrollDistance() {
|
|
300
207
|
const lengthOfTabList = this._tabList.nativeElement.scrollWidth;
|
|
301
208
|
const viewLength = this._tabListContainer.nativeElement.offsetWidth;
|
|
302
209
|
return lengthOfTabList - viewLength || 0;
|
|
303
210
|
}
|
|
304
|
-
/** Performs the CSS transformation on the tab list that will cause the list to scroll. */
|
|
305
211
|
_updateTabScrollPosition() {
|
|
306
212
|
const scrollDistance = this.scrollDistance;
|
|
307
213
|
const translateX = -scrollDistance;
|
|
308
|
-
// Don't use `translate3d` here because we don't want to create a new layer. A new layer
|
|
309
|
-
// seems to cause flickering and overflow in Internet Explorer. For example, the ink bar
|
|
310
|
-
// and ripples will exceed the boundaries of the visible tab bar.
|
|
311
|
-
// See: https://github.com/angular/material2/issues/10276
|
|
312
214
|
this._tabList.nativeElement.style.transform = `translateX(${translateX}px)`;
|
|
313
215
|
}
|
|
314
|
-
/** Tells the active indicator to align itself to the current label wrapper */
|
|
315
216
|
_alignActiveIndicatorToSelectedTab() {
|
|
316
217
|
const selectedLabelWrapper = this._labelWrappers?.length > 0
|
|
317
218
|
? this._labelWrappers.toArray()[this.selectedIndex].elementRef
|
|
@@ -341,11 +242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
341
242
|
}], _title: [{
|
|
342
243
|
type: ContentChild,
|
|
343
244
|
args: [TabTitleDirective, { static: false }]
|
|
344
|
-
}],
|
|
345
|
-
/**
|
|
346
|
-
* workaround for @link https://github.com/microsoft/TypeScript/pull/42425
|
|
347
|
-
*/
|
|
348
|
-
_labelWrappers: [{
|
|
245
|
+
}], _labelWrappers: [{
|
|
349
246
|
type: ContentChildren,
|
|
350
247
|
args: [TabLabelWrapperDirective]
|
|
351
248
|
}], _tabListContainer: [{
|
|
@@ -361,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
361
258
|
type: ViewChild,
|
|
362
259
|
args: [TabHeaderActiveIndicatorComponent, { static: true }]
|
|
363
260
|
}] } });
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQU8sUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFRaEQ7OztHQUdHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFVbEMsTUFBTSxPQUFPLGtCQUFrQjtJQXNZN0IsWUFDbUIsa0JBQXFDLEVBQ3JDLGNBQTZCO1FBRDdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFyWWhELFFBQUcsR0FBUSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLDhEQUE4RDtRQUM5RCw0QkFBdUIsR0FBRyxLQUFLLENB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QkFBdUIsQ0FBQyxNQUFNO29JQTBDL0MsSUFBSTtzQkFESCxLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFLRixhQUFhO3NCQURoQixLQUFLO2dCQWlCRyxrQkFBa0I7c0JBRDFCLE1BQU07Z0JBS0UsWUFBWTtzQkFEcEIsTUFBTTtnQkFJUCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUl4RCxNQUFNO3NCQURMLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztRQUlsRDs7V0FFRztRQUNILGNBQWM7c0JBSmIsZUFBZTt1QkFBQyx3QkFBd0I7Z0JBT3pDLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSS9DLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl0QyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUloRCxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxpQ0FBaUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBWaWV3cG9ydFJ1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJlbSwgYnVpbGRCZW0sIGNvZXJjZU51bWJlciB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsXG4gIFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSxcbiAgVGFiVGl0bGVEaXJlY3RpdmUsXG59IGZyb20gJy4vdGFiLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJTaXplLCBUYWJUeXBlIH0gZnJvbSAnLi90YWJzLnR5cGVzJztcblxuLyoqXG4gKiBUaGUgZGlyZWN0aW9ucyB0aGF0IHNjcm9sbGluZyBjYW4gZ28gaW4gd2hlbiB0aGUgaGVhZGVyJ3MgdGFicyBleGNlZWQgdGhlIGhlYWRlciB3aWR0aC4gJ0FmdGVyJ1xuICogd2lsbCBzY3JvbGwgdGhlIGhlYWRlciB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIHRhYnMgbGlzdCBhbmQgJ2JlZm9yZScgd2lsbCBzY3JvbGwgdG93YXJkcyB0aGVcbiAqIGJlZ2lubmluZyBvZiB0aGUgbGlzdC5cbiAqL1xuZXhwb3J0IHR5cGUgU2Nyb2xsRGlyZWN0aW9uID0gJ2FmdGVyJyB8ICdiZWZvcmUnO1xuLyoqXG4gKiBUaGUgZGlzdGFuY2UgaW4gcGl4ZWxzIHRoYXQgd2lsbCBiZSBvdmVyc2hvdCB3aGVuIHNjcm9sbGluZyBhIHRhYiBsYWJlbCBpbnRvIHZpZXcuIFRoaXMgaGVscHNcbiAqIHByb3ZpZGUgYSBzbWFsbCBhZmZvcmRhbmNlIHRvIHRoZSBsYWJlbCBuZXh0IHRvIGl0LlxuICovXG5jb25zdCBFWEFHR0VSQVRFRF9PVkVSU0NST0xMID0gNjA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1aS10YWItaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWItaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGFiSGVhZGVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlckNvbnRlbnRJbml0XG57XG4gIGJlbTogQmVtID0gYnVpbGRCZW0oJ2F1aS10YWItaGVhZGVyJyk7XG5cbiAgX3Nob3dBZGRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb250cm9scyBmb3IgcGFnaW5hdGlvbiBzaG91bGQgYmUgZGlzcGxheWVkICovXG4gIF9zaG93UGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRhYiBsaXN0IGNhbiBiZSBzY3JvbGxlZCBtb3JlIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgdGFiIGxhYmVsIGxpc3QuICovXG4gIF9kaXNhYmxlU2Nyb2xsQWZ0ZXIgPSB0cnVlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB0YWIgbGlzdCBjYW4gYmUgc2Nyb2xsZWQgbW9yZSB0b3dhcmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRhYiBsYWJlbCBsaXN0LiAqL1xuICBfZGlzYWJsZVNjcm9sbEJlZm9yZSA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNjcm9sbCBkaXN0YW5jZSBoYXMgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgdGhlIHZpZXcgaXMgY2hlY2tlZC4gKi9cbiAgcHJpdmF0ZSBfc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBoZWFkZXIgc2hvdWxkIHNjcm9sbCB0byB0aGUgc2VsZWN0ZWQgaW5kZXggYWZ0ZXIgdGhlIHZpZXcgaGFzIGJlZW4gY2hlY2tlZC4gKi9cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleENoYW5nZWQgPSBmYWxzZTtcblxuICAvKiogVGhlIGRpc3RhbmNlIGluIHBpeGVscyB0aGF0IHRoZSB0YWIgbGFiZWxzIHNob3VsZCBiZSB0cmFuc2xhdGVkIHRvIHRoZSBsZWZ0LiAqL1xuICBwcml2YXRlIF9zY3JvbGxEaXN0YW5jZSA9IDA7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFVzZWQgdG8gbWFuYWdlIGZvY3VzIGJldHdlZW4gdGhlIHRhYnMuICovXG4gIHByaXZhdGUgX2tleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmU+O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRhYiBsYWJlbHMgdGhhdCBhcmUgZGlzcGxheWVkIG9uIHRoZSBoZWFkZXIuIFdoZW4gdGhpcyBjaGFuZ2VzLCB0aGUgaGVhZGVyXG4gICAqIHNob3VsZCByZS1ldmFsdWF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBfdGFiTGFiZWxDb3VudDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGU6IFRhYlR5cGUgPSBUYWJUeXBlLkxpbmU7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogVGFiU2l6ZSA9IFRhYlNpemUuTWVkaXVtO1xuXG4gIC8qKiBUaGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7XG4gIH1cblxuICBzZXQgc2VsZWN0ZWRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdmFsdWUgPSBjb2VyY2VOdW1iZXIodmFsdWUpO1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkID0gdGhpcy5fc2VsZWN0ZWRJbmRleCAhPT0gdmFsdWU7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX2tleU1hbmFnZXIpIHtcbiAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLiAqL1xuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0Rm9jdXNlZEluZGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIGxhYmVsIGlzIGZvY3VzZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBpbmRleEZvY3VzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBAQ29udGVudENoaWxkKFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX2hlYWRlckFkZG9uOiBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFRhYlRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgX3RpdGxlOiBUYWJUaXRsZURpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSlcbiAgLyoqXG4gICAqIHdvcmthcm91bmQgZm9yIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9wdWxsLzQyNDI1XG4gICAqL1xuICBfbGFiZWxXcmFwcGVyczogUXVlcnlMaXN0PFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSAmIHsgZGlzYWJsZWQ/OiBib29sZWFuIH0+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkxpc3RDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBfdGFiTGlzdENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgndGFiTGlzdCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF90YWJMaXN0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdwYWdpbmF0aW9uV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF9wYWdpbmF0aW9uV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZChUYWJIZWFkZXJBY3RpdmVJbmRpY2F0b3JDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF9hY3RpdmVJbmRpY2F0b3I6IFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudDtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIC8vIElmIHRoZSBudW1iZXIgb2YgdGFiIGxhYmVscyBoYXZlIGNoYW5nZWQsIGNoZWNrIGlmIHNjcm9sbGluZyBzaG91bGQgYmUgZW5hYmxlZFxuICAgIGlmICh0aGlzLl90YWJMYWJlbENvdW50ICE9PSB0aGlzLl9sYWJlbFdyYXBwZXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5fdGFiTGFiZWxDb3VudCA9IHRoaXMuX2xhYmVsV3JhcHBlcnMubGVuZ3RoO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHNlbGVjdGVkIGluZGV4IGhhcyBjaGFuZ2VkLCBzY3JvbGwgdG8gdGhlIGxhYmVsIGFuZCBjaGVjayBpZiB0aGUgc2Nyb2xsaW5nIGNvbnRyb2xzXG4gICAgLy8gc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZCkge1xuICAgICAgdGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KTtcbiAgICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgICAgIHRoaXMuX2FsaWduQWN0aXZlSW5kaWNhdG9yVG9TZWxlY3RlZFRhYigpO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBzY3JvbGwgZGlzdGFuY2UgaGFzIGJlZW4gY2hhbmdlZCAodGFiIHNlbGVjdGVkLCBmb2N1c2VkLCBzY3JvbGwgY29udHJvbHMgYWN0aXZhdGVkKSxcbiAgICAvLyB0aGVuIHRyYW5zbGF0ZSB0aGUgaGVhZGVyIHRvIHJlZmxlY3QgdGhpcy5cbiAgICBpZiAodGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2hvd0FkZG9uICE9PSAhIXRoaXMuX2hlYWRlckFkZG9uKSB7XG4gICAgICB0aGlzLl9zaG93QWRkb24gPSAhIXRoaXMuX2hlYWRlckFkZG9uO1xuICAgICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFsaWducyB0aGUgaW5rIGJhciB0byB0aGUgc2VsZWN0ZWQgdGFiIG9uIGxvYWQuXG4gICAqL1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29uc3QgcmVzaXplID0gdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKTtcbiAgICBjb25zdCByZWFsaWduID0gKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlUGFnaW5hdGlvbigpO1xuICAgICAgdGhpcy5fYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk7XG4gICAgfTtcblxuICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2xhYmVsV3JhcHBlcnMpXG4gICAgICAud2l0aEhvcml6b250YWxPcmllbnRhdGlvbignbHRyJylcbiAgICAgIC53aXRoV3JhcCgpO1xuICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSgwKTtcblxuICAgIC8vIERlZmVyIHRoZSBmaXJzdCBjYWxsIGluIG9yZGVyIHRvIGFsbG93IGZvciBzbG93ZXIgYnJvd3NlcnMgdG8gbGF5IG91dCB0aGUgZWxlbWVudHMuXG4gICAgLy8gVGhpcyBoZWxwcyBpbiBjYXNlcyB3aGVyZSB0aGUgdXNlciBsYW5kcyBkaXJlY3RseSBvbiBhIHBhZ2Ugd2l0aCBwYWdpbmF0ZWQgdGFicy5cbiAgICB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lICE9PSAndW5kZWZpbmVkJ1xuICAgICAgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVhbGlnbilcbiAgICAgIDogcmVhbGlnbigpO1xuXG4gICAgLy8gT24gd2luZG93IHJlc2l6ZSwgcmVhbGlnbiB0aGUgaW5rIGJhciBhbmQgdXBkYXRlIHRoZSBvcmllbnRhdGlvbiBvZlxuICAgIC8vIHRoZSBrZXkgbWFuYWdlciBpZiB0aGUgZGlyZWN0aW9uIGhhcyBjaGFuZ2VkLlxuICAgIHJlc2l6ZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcmVhbGlnbigpO1xuICAgIH0pO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIGZvY3VzIGtleSBtYW5hZ2VyIHdlIG5lZWQgdG8gZW1pdCB0aGUgYGluZGV4Rm9jdXNlZGBcbiAgICAvLyBldmVudCBpbiBvcmRlciB0byBwcm92aWRlIGEgcHVibGljIGV2ZW50IHRoYXQgbm90aWZpZXMgYWJvdXQgZm9jdXMgY2hhbmdlcy4gQWxzbyB3ZSByZWFsaWduXG4gICAgLy8gdGhlIHRhYnMgY29udGFpbmVyIGJ5IHNjcm9sbGluZyB0aGUgbmV3IGZvY3VzZWQgdGFiIGludG8gdGhlIHZpc2libGUgc2VjdGlvbi5cbiAgICB0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKG5ld0ZvY3VzSW5kZXggPT4ge1xuICAgICAgICB0aGlzLmluZGV4Rm9jdXNlZC5lbWl0KG5ld0ZvY3VzSW5kZXgpO1xuICAgICAgICB0aGlzLl9zZXRUYWJGb2N1cyhuZXdGb2N1c0luZGV4KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIGRpc3RhbmNlIGluIHBpeGVscyB0aGF0IHRoZSB0YWIgaGVhZGVyIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCBpbiB0aGUgWC1heGlzLiAqL1xuICBnZXQgc2Nyb2xsRGlzdGFuY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsRGlzdGFuY2U7XG4gIH1cblxuICBzZXQgc2Nyb2xsRGlzdGFuY2UodjogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2Nyb2xsRGlzdGFuY2UgPSBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICBNYXRoLm1pbih0aGlzLl9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpLCB2KSxcbiAgICApO1xuICAgIC8vIE1hcmsgdGhhdCB0aGUgc2Nyb2xsIGRpc3RhbmNlIGhhcyBjaGFuZ2VkIHNvIHRoYXQgYWZ0ZXIgdGhlIHZpZXcgaXMgY2hlY2tlZCwgdGhlIENTU1xuICAgIC8vIHRyYW5zZm9ybWF0aW9uIGNhbiBtb3ZlIHRoZSBoZWFkZXIuXG4gICAgdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCk7XG4gIH1cblxuICAvKiogVHJhY2tzIHdoaWNoIGVsZW1lbnQgaGFzIGZvY3VzOyB1c2VkIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uICovXG4gIGdldCBmb2N1c0luZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2tleU1hbmFnZXIgPyB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA6IDA7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgZm9jdXMgaW5kZXggaXMgc2V0LCB3ZSBtdXN0IG1hbnVhbGx5IHNlbmQgZm9jdXMgdG8gdGhlIGNvcnJlY3QgbGFiZWwgKi9cbiAgc2V0IGZvY3VzSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9pc1ZhbGlkSW5kZXgodmFsdWUpIHx8XG4gICAgICB0aGlzLmZvY3VzSW5kZXggPT09IHZhbHVlIHx8XG4gICAgICAhdGhpcy5fa2V5TWFuYWdlclxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gaW5kZXggaXMgdmFsaWQuICBJZiB0aGUgdGFicyBhcmUgbm90IHJlYWR5IHlldCwgd2UgYXNzdW1lIHRoYXQgdGhlIHVzZXIgaXNcbiAgICogcHJvdmlkaW5nIGEgdmFsaWQgaW5kZXggYW5kIHJldHVybiB0cnVlLlxuICAgKi9cbiAgX2lzVmFsaWRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLl9sYWJlbFdyYXBwZXJzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdGFiID0gdGhpcy5fbGFiZWxXcmFwcGVyc1xuICAgICAgPyB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVtpbmRleF1cbiAgICAgIDogbnVsbDtcbiAgICByZXR1cm4gISF0YWIgJiYgIXRhYi5kaXNhYmxlZDtcbiAgfVxuXG4gIF9oYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0TGFzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgIHRoaXMuc2VsZWN0Rm9jdXNlZEluZGV4LmVtaXQodGhpcy5mb2N1c0luZGV4KTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgZm9jdXMgb24gdGhlIEhUTUwgZWxlbWVudCBmb3IgdGhlIGxhYmVsIHdyYXBwZXIgYW5kIHNjcm9sbHMgaXQgaW50byB0aGUgdmlldyBpZlxuICAgKiBzY3JvbGxpbmcgaXMgZW5hYmxlZC5cbiAgICovXG4gIF9zZXRUYWJGb2N1cyh0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMpIHtcbiAgICAgIHRoaXMuX3Njcm9sbFRvTGFiZWwodGFiSW5kZXgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fbGFiZWxXcmFwcGVycz8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fbGFiZWxXcmFwcGVycy50b0FycmF5KClbdGFiSW5kZXhdLmZvY3VzKCk7XG4gICAgICAvLyBEbyBub3QgbGV0IHRoZSBicm93c2VyIG1hbmFnZSBzY3JvbGxpbmcgdG8gZm9jdXMgdGhlIGVsZW1lbnQsIHRoaXMgd2lsbCBiZSBoYW5kbGVkXG4gICAgICAvLyBieSB1c2luZyB0cmFuc2xhdGlvbi4gSW4gTFRSLCB0aGUgc2Nyb2xsIGxlZnQgc2hvdWxkIGJlIDAuIEluIFJUTCwgdGhlIHNjcm9sbCB3aWR0aFxuICAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHdpZHRoIG1pbnVzIHRoZSBvZmZzZXQgd2lkdGguXG4gICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgIGNvbnRhaW5lckVsLnNjcm9sbExlZnQgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgdGFiIGxpc3Qgc3VjaCB0aGF0IHRoZSBkZXNpcmVkIHRhYiBsYWJlbCAobWFya2VkIGJ5IGluZGV4KSBpcyBtb3ZlZCBpbnRvIHZpZXcuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfc2Nyb2xsVG9MYWJlbChsYWJlbEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzZWxlY3RlZExhYmVsID0gdGhpcy5fbGFiZWxXcmFwcGVyc1xuICAgICAgPyB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVtsYWJlbEluZGV4XVxuICAgICAgOiBudWxsO1xuICAgIGlmICghc2VsZWN0ZWRMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBUaGUgdmlldyBsZW5ndGggaXMgdGhlIHZpc2libGUgd2lkdGggb2YgdGhlIHRhYiBsYWJlbHMuXG4gICAgY29uc3Qgdmlld0xlbmd0aCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBsYWJlbEJlZm9yZVBvcyA9IHNlbGVjdGVkTGFiZWwuZ2V0T2Zmc2V0TGVmdCgpO1xuICAgIGNvbnN0IGxhYmVsQWZ0ZXJQb3MgPSBsYWJlbEJlZm9yZVBvcyArIHNlbGVjdGVkTGFiZWwuZ2V0T2Zmc2V0V2lkdGgoKTtcbiAgICBjb25zdCBiZWZvcmVWaXNpYmxlUG9zID0gdGhpcy5zY3JvbGxEaXN0YW5jZTtcbiAgICBjb25zdCBhZnRlclZpc2libGVQb3MgPSB0aGlzLnNjcm9sbERpc3RhbmNlICsgdmlld0xlbmd0aDtcbiAgICBpZiAobGFiZWxCZWZvcmVQb3MgPCBiZWZvcmVWaXNpYmxlUG9zKSB7XG4gICAgICAvLyBTY3JvbGwgaGVhZGVyIHRvIG1vdmUgbGFiZWwgdG8gdGhlIGJlZm9yZSBkaXJlY3Rpb25cbiAgICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgLT1cbiAgICAgICAgYmVmb3JlVmlzaWJsZVBvcyAtIGxhYmVsQmVmb3JlUG9zICsgRVhBR0dFUkFURURfT1ZFUlNDUk9MTDtcbiAgICB9IGVsc2UgaWYgKGxhYmVsQWZ0ZXJQb3MgPiBhZnRlclZpc2libGVQb3MpIHtcbiAgICAgIC8vIFNjcm9sbCBoZWFkZXIgdG8gbW92ZSBsYWJlbCB0byB0aGUgYWZ0ZXIgZGlyZWN0aW9uXG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlICs9XG4gICAgICAgIGxhYmVsQWZ0ZXJQb3MgLSBhZnRlclZpc2libGVQb3MgKyBFWEFHR0VSQVRFRF9PVkVSU0NST0xMO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgdGFiIGxpc3QgaW4gdGhlICdiZWZvcmUnIG9yICdhZnRlcicgZGlyZWN0aW9uICh0b3dhcmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3Qgb3JcbiAgICogdGhlIGVuZCBvZiB0aGUgbGlzdCwgcmVzcGVjdGl2ZWx5KS4gVGhlIGRpc3RhbmNlIHRvIHNjcm9sbCBpcyBjb21wdXRlZCB0byBiZSBhIHRoaXJkIG9mIHRoZVxuICAgKiBsZW5ndGggb2YgdGhlIHRhYiBsaXN0IHZpZXcgd2luZG93LlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX3Njcm9sbEhlYWRlcihzY3JvbGxEaXI6IFNjcm9sbERpcmVjdGlvbikge1xuICAgIGNvbnN0IHZpZXdMZW5ndGggPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgLy8gTW92ZSB0aGUgc2Nyb2xsIGRpc3RhbmNlIG9uZS10aGlyZCB0aGUgbGVuZ3RoIG9mIHRoZSB0YWIgbGlzdCdzIHZpZXdwb3J0LlxuICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgKz0gKChzY3JvbGxEaXIgPT09ICdiZWZvcmUnID8gLTEgOiAxKSAqIHZpZXdMZW5ndGgpIC8gMztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgTXV0YXRpb25PYnNlcnZlciBkZXRlY3RzIHRoYXQgdGhlIGNvbnRlbnQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBfb25Db250ZW50Q2hhbmdlcygpIHtcbiAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgdGhpcy5fYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRpbmcgdGhlIHZpZXcgd2hldGhlciBwYWdpbmF0aW9uIHNob3VsZCBiZSBlbmFibGVkIG9yIG5vdFxuICAgKi9cbiAgX3VwZGF0ZVBhZ2luYXRpb24oKSB7XG4gICAgdGhpcy5fY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpO1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgICB0aGlzLl91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIHdoZXRoZXIgdGhlIHBhZ2luYXRpb24gY29udHJvbHMgc2hvdWxkIGJlIGRpc3BsYXllZC4gSWYgdGhlIHNjcm9sbCB3aWR0aCBvZiB0aGVcbiAgICogdGFiIGxpc3QgaXMgd2lkZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIGNvbnRhaW5lciwgdGhlbiB0aGUgcGFnaW5hdGlvbiBjb250cm9scyBzaG91bGRcbiAgICogYmUgc2hvd24uXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpIHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPVxuICAgICAgdGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoID5cbiAgICAgIHRoaXMuX3BhZ2luYXRpb25XcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyAyOyAvLyAyIGlzIHRoZSBib3JkZXIgc2l6ZVxuICAgIGlmICghaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlID0gMDtcbiAgICB9XG4gICAgY29uc3QgZGV0ZWN0Q2hhbmdlcyA9IGlzRW5hYmxlZCAhPT0gdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scztcbiAgICB0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzID0gaXNFbmFibGVkO1xuXG4gICAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZSB3aGV0aGVyIHRoZSBiZWZvcmUgYW5kIGFmdGVyIGNvbnRyb2xzIHNob3VsZCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxuICAgKiBJZiB0aGUgaGVhZGVyIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QgKHNjcm9sbCBkaXN0YW5jZSBpcyBlcXVhbCB0byAwKSB0aGVuIGRpc2FibGUgdGhlXG4gICAqIGJlZm9yZSBidXR0b24uIElmIHRoZSBoZWFkZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCAoc2Nyb2xsIGRpc3RhbmNlIGlzIGVxdWFsIHRvIHRoZVxuICAgKiBtYXhpbXVtIGRpc3RhbmNlIHdlIGNhbiBzY3JvbGwpLCB0aGVuIGRpc2FibGUgdGhlIGFmdGVyIGJ1dHRvbi5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBwYWdpbmF0aW9uIGFycm93cyBzaG91bGQgYmUgYWN0aXZhdGVkLlxuICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmUgPSB0aGlzLnNjcm9sbERpc3RhbmNlID09PSAwO1xuICAgIHRoaXMuX2Rpc2FibGVTY3JvbGxBZnRlciA9XG4gICAgICB0aGlzLnNjcm9sbERpc3RhbmNlID09PSB0aGlzLl9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hhdCBpcyB0aGUgbWF4aW11bSBsZW5ndGggaW4gcGl4ZWxzIHRoYXQgY2FuIGJlIHNldCBmb3IgdGhlIHNjcm9sbCBkaXN0YW5jZS4gVGhpc1xuICAgKiBpcyBlcXVhbCB0byB0aGUgZGlmZmVyZW5jZSBpbiB3aWR0aCBiZXR3ZWVuIHRoZSB0YWIgbGlzdCBjb250YWluZXIgYW5kIHRhYiBoZWFkZXIgY29udGFpbmVyLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX2dldE1heFNjcm9sbERpc3RhbmNlKCk6IG51bWJlciB7XG4gICAgY29uc3QgbGVuZ3RoT2ZUYWJMaXN0ID0gdGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoO1xuICAgIGNvbnN0IHZpZXdMZW5ndGggPSB0aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgcmV0dXJuIGxlbmd0aE9mVGFiTGlzdCAtIHZpZXdMZW5ndGggfHwgMDtcbiAgfVxuXG4gIC8qKiBQZXJmb3JtcyB0aGUgQ1NTIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSB0YWIgbGlzdCB0aGF0IHdpbGwgY2F1c2UgdGhlIGxpc3QgdG8gc2Nyb2xsLiAqL1xuICBfdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgY29uc3Qgc2Nyb2xsRGlzdGFuY2UgPSB0aGlzLnNjcm9sbERpc3RhbmNlO1xuICAgIGNvbnN0IHRyYW5zbGF0ZVggPSAtc2Nyb2xsRGlzdGFuY2U7XG4gICAgLy8gRG9uJ3QgdXNlIGB0cmFuc2xhdGUzZGAgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGxheWVyLiBBIG5ldyBsYXllclxuICAgIC8vIHNlZW1zIHRvIGNhdXNlIGZsaWNrZXJpbmcgYW5kIG92ZXJmbG93IGluIEludGVybmV0IEV4cGxvcmVyLiBGb3IgZXhhbXBsZSwgdGhlIGluayBiYXJcbiAgICAvLyBhbmQgcmlwcGxlcyB3aWxsIGV4Y2VlZCB0aGUgYm91bmRhcmllcyBvZiB0aGUgdmlzaWJsZSB0YWIgYmFyLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvbWF0ZXJpYWwyL2lzc3Vlcy8xMDI3NlxuICAgIHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke3RyYW5zbGF0ZVh9cHgpYDtcbiAgfVxuXG4gIC8qKiBUZWxscyB0aGUgYWN0aXZlIGluZGljYXRvciB0byBhbGlnbiBpdHNlbGYgdG8gdGhlIGN1cnJlbnQgbGFiZWwgd3JhcHBlciAqL1xuICBfYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkTGFiZWxXcmFwcGVyID1cbiAgICAgIHRoaXMuX2xhYmVsV3JhcHBlcnM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVt0aGlzLnNlbGVjdGVkSW5kZXhdLmVsZW1lbnRSZWZcbiAgICAgICAgICAgIC5uYXRpdmVFbGVtZW50XG4gICAgICAgIDogbnVsbDtcbiAgICB0aGlzLl9hY3RpdmVJbmRpY2F0b3IuYWxpZ25Ub0VsZW1lbnQoc2VsZWN0ZWRMYWJlbFdyYXBwZXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICkge31cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwiYmVtLmJsb2NrKHR5cGUsIHNpemUpXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJfdGl0bGVcIj5cbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCd0aXRsZScpXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJfdGl0bGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgnaGVhZGVyLXdyYXBwZXInKVwiPlxuICAgIDxkaXZcbiAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLXdyYXBwZXInKVwiXG4gICAgICAjcGFnaW5hdGlvbldyYXBwZXJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiX3Nob3dQYWdpbmF0aW9uQ29udHJvbHNcIlxuICAgICAgICAoY2xpY2spPVwiX3Njcm9sbEhlYWRlcignYmVmb3JlJylcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbEJlZm9yZSA/ICcnIDogbnVsbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLWJ1dHRvbicpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJhbmdsZV9sZWZ0XCI+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgndGFiLWxpc3QtY29udGFpbmVyJylcIlxuICAgICAgICAoa2V5ZG93bik9XCJfaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgI3RhYkxpc3RDb250YWluZXJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJvbGU9XCJ0YWJsaXN0XCJcbiAgICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwiX29uQ29udGVudENoYW5nZXMoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3RhYi1saXN0JylcIlxuICAgICAgICAgICN0YWJMaXN0XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdsYWJlbHMnKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5cbiAgICAgICAgICA8YXVpLXRhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvclxuICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgPjwvYXVpLXRhYi1oZWFkZXItYWN0aXZlLWluZGljYXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJfc2hvd1BhZ2luYXRpb25Db250cm9sc1wiXG4gICAgICAgIChjbGljayk9XCJfc2Nyb2xsSGVhZGVyKCdhZnRlcicpXCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiX2Rpc2FibGVTY3JvbGxBZnRlciA/ICcnIDogbnVsbFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdwYWdpbmF0aW9uLWJ1dHRvbicpXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJhbmdsZV9yaWdodFwiPjwvYXVpLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIElmIHRoZXJlIGlzIGFkZG9uIHRlbXBsYXRlLCB1c2UgaXQuIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJfc2hvd0FkZG9uXCI+XG4gICAgICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdhZGRvbicpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl9oZWFkZXJBZGRvblwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFicy90YWItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90YWJzL3RhYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFHTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQU8sUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFZaEQsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFVbEMsTUFBTSxPQUFPLGtCQUFrQjtJQXNZN0IsWUFDbUIsa0JBQXFDLEVBQ3JDLGNBQTZCO1FBRDdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFyWWhELFFBQUcsR0FBUSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUdoQyx3QkFBbUIsR0FBRyxJQUFJ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QyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM3RCxDQUFDOzsrR0FwWVUsa0JBQWtCO21HQUFsQixrQkFBa0IsNlBBcUVmLHVCQUF1Qix5RUFHdkIsaUJBQWlCLG9FQUdkLHdCQUF3QixpYUFlOUIsaUNBQWlDLDhEQzdJOUMsaXdEQXFEQTsyRkRGYSxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTTtvSUEwQy9DLElBQUk7c0JBREgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBS0YsYUFBYTtzQkFEaEIsS0FBSztnQkFpQkcsa0JBQWtCO3NCQUQxQixNQUFNO2dCQUtFLFlBQVk7c0JBRHBCLE1BQU07Z0JBSVAsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJeEQsTUFBTTtzQkFETCxZQUFZO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPbEQsY0FBYztzQkFKYixlQUFlO3VCQUFDLHdCQUF3QjtnQkFPekMsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0MsUUFBUTtzQkFEUCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXRDLGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWhELGdCQUFnQjtzQkFEZixTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQmVtLCBidWlsZEJlbSwgY29lcmNlTnVtYmVyIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQge1xuICBUYWJIZWFkZXJBZGRvbkRpcmVjdGl2ZSxcbiAgVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlLFxuICBUYWJUaXRsZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi90YWItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiSGVhZGVyQWN0aXZlSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaGVhZGVyLWFjdGl2ZS1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYlNpemUsIFRhYlR5cGUgfSBmcm9tICcuL3RhYnMudHlwZXMnO1xuXG4vKipcbiAqIFRoZSBkaXJlY3Rpb25zIHRoYXQgc2Nyb2xsaW5nIGNhbiBnbyBpbiB3aGVuIHRoZSBoZWFkZXIncyB0YWJzIGV4Y2VlZCB0aGUgaGVhZGVyIHdpZHRoLiAnQWZ0ZXInXG4gKiB3aWxsIHNjcm9sbCB0aGUgaGVhZGVyIHRvd2FyZHMgdGhlIGVuZCBvZiB0aGUgdGFicyBsaXN0IGFuZCAnYmVmb3JlJyB3aWxsIHNjcm9sbCB0b3dhcmRzIHRoZVxuICogYmVnaW5uaW5nIG9mIHRoZSBsaXN0LlxuICovXG5leHBvcnQgdHlwZSBTY3JvbGxEaXJlY3Rpb24gPSAnYWZ0ZXInIHwgJ2JlZm9yZSc7XG4vKipcbiAqIFRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgdGhhdCB3aWxsIGJlIG92ZXJzaG90IHdoZW4gc2Nyb2xsaW5nIGEgdGFiIGxhYmVsIGludG8gdmlldy4gVGhpcyBoZWxwc1xuICogcHJvdmlkZSBhIHNtYWxsIGFmZm9yZGFuY2UgdG8gdGhlIGxhYmVsIG5leHQgdG8gaXQuXG4gKi9cbmNvbnN0IEVYQUdHRVJBVEVEX09WRVJTQ1JPTEwgPSA2MDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRhYi1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJIZWFkZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXRcbntcbiAgYmVtOiBCZW0gPSBidWlsZEJlbSgnYXVpLXRhYi1oZWFkZXInKTtcblxuICBfc2hvd0FkZG9uID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2xzIGZvciBwYWdpbmF0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgKi9cbiAgX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgdGFiIGxpc3QgY2FuIGJlIHNjcm9sbGVkIG1vcmUgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSB0YWIgbGFiZWwgbGlzdC4gKi9cbiAgX2Rpc2FibGVTY3JvbGxBZnRlciA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHRhYiBsaXN0IGNhbiBiZSBzY3JvbGxlZCBtb3JlIHRvd2FyZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGFiIGxhYmVsIGxpc3QuICovXG4gIF9kaXNhYmxlU2Nyb2xsQmVmb3JlID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0aGUgc2Nyb2xsIGRpc3RhbmNlIGhhcyBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgYXBwbGllZCBhZnRlciB0aGUgdmlldyBpcyBjaGVja2VkLiAqL1xuICBwcml2YXRlIF9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGhlYWRlciBzaG91bGQgc2Nyb2xsIHRvIHRoZSBzZWxlY3RlZCBpbmRleCBhZnRlciB0aGUgdmlldyBoYXMgYmVlbiBjaGVja2VkLiAqL1xuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4Q2hhbmdlZCA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgZGlzdGFuY2UgaW4gcGl4ZWxzIHRoYXQgdGhlIHRhYiBsYWJlbHMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgdG8gdGhlIGxlZnQuICovXG4gIHByaXZhdGUgX3Njcm9sbERpc3RhbmNlID0gMDtcblxuICBwcml2YXRlIF9zZWxlY3RlZEluZGV4ID0gMDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiogVXNlZCB0byBtYW5hZ2UgZm9jdXMgYmV0d2VlbiB0aGUgdGFicy4gKi9cbiAgcHJpdmF0ZSBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPFRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFiIGxhYmVscyB0aGF0IGFyZSBkaXNwbGF5ZWQgb24gdGhlIGhlYWRlci4gV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBoZWFkZXJcbiAgICogc2hvdWxkIHJlLWV2YWx1YXRlIHRoZSBzY3JvbGwgcG9zaXRpb24uXG4gICAqL1xuICBwcml2YXRlIF90YWJMYWJlbENvdW50OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgdHlwZTogVGFiVHlwZSA9IFRhYlR5cGUuTGluZTtcblxuICBASW5wdXQoKVxuICBzaXplOiBUYWJTaXplID0gVGFiU2l6ZS5NZWRpdW07XG5cbiAgLyoqIFRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgfVxuXG4gIHNldCBzZWxlY3RlZEluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICB2YWx1ZSA9IGNvZXJjZU51bWJlcih2YWx1ZSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQgPSB0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSB2YWx1ZTtcbiAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5fa2V5TWFuYWdlcikge1xuICAgICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBzZWxlY3RGb2N1c2VkSW5kZXggPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGEgbGFiZWwgaXMgZm9jdXNlZC4gKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IGluZGV4Rm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiSGVhZGVyQWRkb25EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfaGVhZGVyQWRkb246IFRhYkhlYWRlckFkZG9uRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGFiVGl0bGVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBfdGl0bGU6IFRhYlRpdGxlRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlKVxuICAvKipcbiAgICogd29ya2Fyb3VuZCBmb3IgQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L3B1bGwvNDI0MjVcbiAgICovXG4gIF9sYWJlbFdyYXBwZXJzOiBRdWVyeUxpc3Q8VGFiTGFiZWxXcmFwcGVyRGlyZWN0aXZlICYgeyBkaXNhYmxlZD86IGJvb2xlYW4gfT47XG5cbiAgQFZpZXdDaGlsZCgndGFiTGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIF90YWJMaXN0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCd0YWJMaXN0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX3RhYkxpc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luYXRpb25XcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgX3BhZ2luYXRpb25XcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKFRhYkhlYWRlckFjdGl2ZUluZGljYXRvckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgX2FjdGl2ZUluZGljYXRvcjogVGFiSGVhZGVyQWN0aXZlSW5kaWNhdG9yQ29tcG9uZW50O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy8gSWYgdGhlIG51bWJlciBvZiB0YWIgbGFiZWxzIGhhdmUgY2hhbmdlZCwgY2hlY2sgaWYgc2Nyb2xsaW5nIHNob3VsZCBiZSBlbmFibGVkXG4gICAgaWYgKHRoaXMuX3RhYkxhYmVsQ291bnQgIT09IHRoaXMuX2xhYmVsV3JhcHBlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICB0aGlzLl90YWJMYWJlbENvdW50ID0gdGhpcy5fbGFiZWxXcmFwcGVycy5sZW5ndGg7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgc2VsZWN0ZWQgaW5kZXggaGFzIGNoYW5nZWQsIHNjcm9sbCB0byB0aGUgbGFiZWwgYW5kIGNoZWNrIGlmIHRoZSBzY3JvbGxpbmcgY29udHJvbHNcbiAgICAvLyBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkKSB7XG4gICAgICB0aGlzLl9zY3JvbGxUb0xhYmVsKHRoaXMuX3NlbGVjdGVkSW5kZXgpO1xuICAgICAgdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpO1xuICAgICAgdGhpcy5fYWxpZ25BY3RpdmVJbmRpY2F0b3JUb1NlbGVjdGVkVGFiKCk7XG4gICAgICB0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHNjcm9sbCBkaXN0YW5jZSBoYXMgYmVlbiBjaGFuZ2VkICh0YWIgc2VsZWN0ZWQsIGZvY3VzZWQsIHNjcm9sbCBjb250cm9scyBhY3RpdmF0ZWQpLFxuICAgIC8vIHRoZW4gdHJhbnNsYXRlIHRoZSBoZWFkZXIgdG8gcmVmbGVjdCB0aGlzLlxuICAgIGlmICh0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCk7XG4gICAgICB0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zaG93QWRkb24gIT09ICEhdGhpcy5faGVhZGVyQWRkb24pIHtcbiAgICAgIHRoaXMuX3Nob3dBZGRvbiA9ICEhdGhpcy5faGVhZGVyQWRkb247XG4gICAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxpZ25zIHRoZSBpbmsgYmFyIHRvIHRoZSBzZWxlY3RlZCB0YWIgb24gbG9hZC5cbiAgICovXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBjb25zdCByZXNpemUgPSB0aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApO1xuICAgIGNvbnN0IHJlYWxpZ24gPSAoKSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgICB0aGlzLl9hbGlnbkFjdGl2ZUluZGljYXRvclRvU2VsZWN0ZWRUYWIoKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fbGFiZWxXcmFwcGVycylcbiAgICAgIC53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKCdsdHInKVxuICAgICAgLndpdGhXcmFwKCk7XG4gICAgdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKDApO1xuXG4gICAgLy8gRGVmZXIgdGhlIGZpcnN0IGNhbGwgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHNsb3dlciBicm93c2VycyB0byBsYXkgb3V0IHRoZSBlbGVtZW50cy5cbiAgICAvLyBUaGlzIGhlbHBzIGluIGNhc2VzIHdoZXJlIHRoZSB1c2VyIGxhbmRzIGRpcmVjdGx5IG9uIGEgcGFnZSB3aXRoIHBhZ2luYXRlZCB0YWJzLlxuICAgIHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgIT09ICd1bmRlZmluZWQnXG4gICAgICA/IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZWFsaWduKVxuICAgICAgOiByZWFsaWduKCk7XG5cbiAgICAvLyBPbiB3aW5kb3cgcmVzaXplLCByZWFsaWduIHRoZSBpbmsgYmFyIGFuZCB1cGRhdGUgdGhlIG9yaWVudGF0aW9uIG9mXG4gICAgLy8gdGhlIGtleSBtYW5hZ2VyIGlmIHRoZSBkaXJlY3Rpb24gaGFzIGNoYW5nZWQuXG4gICAgcmVzaXplLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICByZWFsaWduKCk7XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgZm9jdXMga2V5IG1hbmFnZXIgd2UgbmVlZCB0byBlbWl0IHRoZSBgaW5kZXhGb2N1c2VkYFxuICAgIC8vIGV2ZW50IGluIG9yZGVyIHRvIHByb3ZpZGUgYSBwdWJsaWMgZXZlbnQgdGhhdCBub3RpZmllcyBhYm91dCBmb2N1cyBjaGFuZ2VzLiBBbHNvIHdlIHJlYWxpZ25cbiAgICAvLyB0aGUgdGFicyBjb250YWluZXIgYnkgc2Nyb2xsaW5nIHRoZSBuZXcgZm9jdXNlZCB0YWIgaW50byB0aGUgdmlzaWJsZSBzZWN0aW9uLlxuICAgIHRoaXMuX2tleU1hbmFnZXIuY2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUobmV3Rm9jdXNJbmRleCA9PiB7XG4gICAgICAgIHRoaXMuaW5kZXhGb2N1c2VkLmVtaXQobmV3Rm9jdXNJbmRleCk7XG4gICAgICAgIHRoaXMuX3NldFRhYkZvY3VzKG5ld0ZvY3VzSW5kZXgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgZGlzdGFuY2UgaW4gcGl4ZWxzIHRoYXQgdGhlIHRhYiBoZWFkZXIgc2hvdWxkIGJlIHRyYW5zZm9ybWVkIGluIHRoZSBYLWF4aXMuICovXG4gIGdldCBzY3JvbGxEaXN0YW5jZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZTtcbiAgfVxuXG4gIHNldCBzY3JvbGxEaXN0YW5jZSh2OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zY3JvbGxEaXN0YW5jZSA9IE1hdGgubWF4KFxuICAgICAgMCxcbiAgICAgIE1hdGgubWluKHRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCksIHYpLFxuICAgICk7XG4gICAgLy8gTWFyayB0aGF0IHRoZSBzY3JvbGwgZGlzdGFuY2UgaGFzIGNoYW5nZWQgc28gdGhhdCBhZnRlciB0aGUgdmlldyBpcyBjaGVja2VkLCB0aGUgQ1NTXG4gICAgLy8gdHJhbnNmb3JtYXRpb24gY2FuIG1vdmUgdGhlIGhlYWRlci5cbiAgICB0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKTtcbiAgfVxuXG4gIC8qKiBUcmFja3Mgd2hpY2ggZWxlbWVudCBoYXMgZm9jdXM7IHVzZWQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gKi9cbiAgZ2V0IGZvY3VzSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5TWFuYWdlciA/IHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4IDogMDtcbiAgfVxuXG4gIC8qKiBXaGVuIHRoZSBmb2N1cyBpbmRleCBpcyBzZXQsIHdlIG11c3QgbWFudWFsbHkgc2VuZCBmb2N1cyB0byB0aGUgY29ycmVjdCBsYWJlbCAqL1xuICBzZXQgZm9jdXNJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2lzVmFsaWRJbmRleCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMuZm9jdXNJbmRleCA9PT0gdmFsdWUgfHxcbiAgICAgICF0aGlzLl9rZXlNYW5hZ2VyXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhbiBpbmRleCBpcyB2YWxpZC4gIElmIHRoZSB0YWJzIGFyZSBub3QgcmVhZHkgeWV0LCB3ZSBhc3N1bWUgdGhhdCB0aGUgdXNlciBpc1xuICAgKiBwcm92aWRpbmcgYSB2YWxpZCBpbmRleCBhbmQgcmV0dXJuIHRydWUuXG4gICAqL1xuICBfaXNWYWxpZEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2xhYmVsV3JhcHBlcnMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCB0YWIgPSB0aGlzLl9sYWJlbFdyYXBwZXJzXG4gICAgICA/IHRoaXMuX2xhYmVsV3JhcHBlcnMudG9BcnJheSgpW2luZGV4XVxuICAgICAgOiBudWxsO1xuICAgIHJldHVybiAhIXRhYiAmJiAhdGFiLmRpc2FibGVkO1xuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgdGhpcy5fa2V5TWFuYWdlci5zZXRMYXN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ1NwYWNlJzpcbiAgICAgICAgdGhpcy5zZWxlY3RGb2N1c2VkSW5kZXguZW1pdCh0aGlzLmZvY3VzSW5kZXgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBmb2N1cyBvbiB0aGUgSFRNTCBlbGVtZW50IGZvciB0aGUgbGFiZWwgd3JhcHBlciBhbmQgc2Nyb2xscyBpdCBpbnRvIHRoZSB2aWV3IGlmXG4gICAqIHNjcm9sbGluZyBpcyBlbmFibGVkLlxuICAgKi9cbiAgX3NldFRhYkZvY3VzKHRhYkluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scykge1xuICAgICAgdGhpcy5fc2Nyb2xsVG9MYWJlbCh0YWJJbmRleCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9sYWJlbFdyYXBwZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9sYWJlbFdyYXBwZXJzLnRvQXJyYXkoKVt0YWJJbmRleF0uZm9jdXMoKTtcbiAgICAgIC8vIERvIG5vdCBsZXQgdGhlIGJyb3dzZXIgbWFuYWdlIHNjcm9sbGluZyB0byBmb2N1cyB0aGUgZWxlbWVudCwgdGhpcyB3aWxsIGJlIGhhbmRsZWRcbiAgICAgIC8vIGJ5IHVzaW5nIHRyYW5zbGF0aW9uLiBJbiBMVFIsIHRoZSBzY3JvbGwgbGVmdCBzaG91bGQgYmUgMC4gSW4gUlRMLCB0aGUgc2Nyb2xsIHdpZHRoXG4gICAgICAvLyBzaG91bGQgYmUgdGhlIGZ1bGwgd2lkdGggbWludXMgdGhlIG9mZnNldCB3aWR0aC5cbiAgICAgIGNvbnN0IGNvbnRhaW5lckVsID0gdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgY29udGFpbmVyRWwuc2Nyb2xsTGVmdCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSB0YWIgbGlzdCBzdWNoIHRoYXQgdGhlIGRlc2lyZWQgdGFiIGxhYmVsIChtYXJrZWQgYnkgaW5kZXgpIGlzIG1vdmVkIGludG8gdmlldy5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9zY3JvbGxUb0xhYmVsKGxhYmVsSW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHNlbGVjdGVkTGFiZWwgPSB0aGlzLl9sYWJlbFdyYXBwZXJzXG4gICAgICA/IHRoaXMuX2xhYmVsV3JhcHBlcnMudG9BcnJheSgpW2xhYmVsSW5kZXhdXG4gICAgICA6IG51bGw7XG4gICAgaWYgKCFzZWxlY3RlZExhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRoZSB2aWV3IGxlbmd0aCBpcyB0aGUgdmlzaWJsZSB3aWR0aCBvZiB0aGUgdGFiIGxhYmVscy5cbiAgICBjb25zdCB2aWV3TGVuZ3RoID0gdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGxhYmVsQmVmb3JlUG9zID0gc2VsZWN0ZWRMYWJlbC5nZXRPZmZzZXRMZWZ0KCk7XG4gICAgY29uc3QgbGFiZWxBZnRlclBvcyA9IGxhYmVsQmVmb3JlUG9zICsgc2VsZWN0ZWRMYWJlbC5nZXRPZmZzZXRXaWR0aCgpO1xuICAgIGNvbnN0IGJlZm9yZVZpc2libGVQb3MgPSB0aGlzLnNjcm9sbERpc3RhbmNlO1xuICAgIGNvbnN0IGFmdGVyVmlzaWJsZVBvcyA9IHRoaXMuc2Nyb2xsRGlzdGFuY2UgKyB2aWV3TGVuZ3RoO1xuICAgIGlmIChsYWJlbEJlZm9yZVBvcyA8IGJlZm9yZVZpc2libGVQb3MpIHtcbiAgICAgIC8vIFNjcm9sbCBoZWFkZXIgdG8gbW92ZSBsYWJlbCB0byB0aGUgYmVmb3JlIGRpcmVjdGlvblxuICAgICAgdGhpcy5zY3JvbGxEaXN0YW5jZSAtPVxuICAgICAgICBiZWZvcmVWaXNpYmxlUG9zIC0gbGFiZWxCZWZvcmVQb3MgKyBFWEFHR0VSQVRFRF9PVkVSU0NST0xMO1xuICAgIH0gZWxzZSBpZiAobGFiZWxBZnRlclBvcyA+IGFmdGVyVmlzaWJsZVBvcykge1xuICAgICAgLy8gU2Nyb2xsIGhlYWRlciB0byBtb3ZlIGxhYmVsIHRvIHRoZSBhZnRlciBkaXJlY3Rpb25cbiAgICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgKz1cbiAgICAgICAgbGFiZWxBZnRlclBvcyAtIGFmdGVyVmlzaWJsZVBvcyArIEVYQUdHRVJBVEVEX09WRVJTQ1JPTEw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSB0YWIgbGlzdCBpbiB0aGUgJ2JlZm9yZScgb3IgJ2FmdGVyJyBkaXJlY3Rpb24gKHRvd2FyZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCBvclxuICAgKiB0aGUgZW5kIG9mIHRoZSBsaXN0LCByZXNwZWN0aXZlbHkpLiBUaGUgZGlzdGFuY2UgdG8gc2Nyb2xsIGlzIGNvbXB1dGVkIHRvIGJlIGEgdGhpcmQgb2YgdGhlXG4gICAqIGxlbmd0aCBvZiB0aGUgdGFiIGxpc3QgdmlldyB3aW5kb3cuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfc2Nyb2xsSGVhZGVyKHNjcm9sbERpcjogU2Nyb2xsRGlyZWN0aW9uKSB7XG4gICAgY29uc3Qgdmlld0xlbmd0aCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAvLyBNb3ZlIHRoZSBzY3JvbGwgZGlzdGFuY2Ugb25lLXRoaXJkIHRoZSBsZW5ndGggb2YgdGhlIHRhYiBsaXN0J3Mgdmlld3BvcnQuXG4gICAgdGhpcy5zY3JvbGxEaXN0YW5jZSArPSAoKHNjcm9sbERpciA9PT0gJ2JlZm9yZScgPyAtMSA6IDEpICogdmlld0xlbmd0aCkgLyAzO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBNdXRhdGlvbk9ic2VydmVyIGRldGVjdHMgdGhhdCB0aGUgY29udGVudCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIF9vbkNvbnRlbnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuX3VwZGF0ZVBhZ2luYXRpb24oKTtcbiAgICB0aGlzLl9hbGlnbkFjdGl2ZUluZGljYXRvclRvU2VsZWN0ZWRUYWIoKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGluZyB0aGUgdmlldyB3aGV0aGVyIHBhZ2luYXRpb24gc2hvdWxkIGJlIGVuYWJsZWQgb3Igbm90XG4gICAqL1xuICBfdXBkYXRlUGFnaW5hdGlvbigpIHtcbiAgICB0aGlzLl9jaGVja1BhZ2luYXRpb25FbmFibGVkKCk7XG4gICAgdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpO1xuICAgIHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgd2hldGhlciB0aGUgcGFnaW5hdGlvbiBjb250cm9scyBzaG91bGQgYmUgZGlzcGxheWVkLiBJZiB0aGUgc2Nyb2xsIHdpZHRoIG9mIHRoZVxuICAgKiB0YWIgbGlzdCBpcyB3aWRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgY29udGFpbmVyLCB0aGVuIHRoZSBwYWdpbmF0aW9uIGNvbnRyb2xzIHNob3VsZFxuICAgKiBiZSBzaG93bi5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBleHBlbnNpdmUgY2FsbCB0aGF0IGZvcmNlcyBhIGxheW91dCByZWZsb3cgdG8gY29tcHV0ZSBib3ggYW5kIHNjcm9sbCBtZXRyaWNzIGFuZFxuICAgKiBzaG91bGQgYmUgY2FsbGVkIHNwYXJpbmdseS5cbiAgICovXG4gIF9jaGVja1BhZ2luYXRpb25FbmFibGVkKCkge1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9XG4gICAgICB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGggPlxuICAgICAgdGhpcy5fcGFnaW5hdGlvbldyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIDI7IC8vIDIgaXMgdGhlIGJvcmRlciBzaXplXG4gICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgPSAwO1xuICAgIH1cbiAgICBjb25zdCBkZXRlY3RDaGFuZ2VzID0gaXNFbmFibGVkICE9PSB0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzO1xuICAgIHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMgPSBpc0VuYWJsZWQ7XG5cbiAgICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIHdoZXRoZXIgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgY29udHJvbHMgc2hvdWxkIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuXG4gICAqIElmIHRoZSBoZWFkZXIgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdCAoc2Nyb2xsIGRpc3RhbmNlIGlzIGVxdWFsIHRvIDApIHRoZW4gZGlzYWJsZSB0aGVcbiAgICogYmVmb3JlIGJ1dHRvbi4gSWYgdGhlIGhlYWRlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IChzY3JvbGwgZGlzdGFuY2UgaXMgZXF1YWwgdG8gdGhlXG4gICAqIG1heGltdW0gZGlzdGFuY2Ugd2UgY2FuIHNjcm9sbCksIHRoZW4gZGlzYWJsZSB0aGUgYWZ0ZXIgYnV0dG9uLlxuICAgKlxuICAgKiBUaGlzIGlzIGFuIGV4cGVuc2l2ZSBjYWxsIHRoYXQgZm9yY2VzIGEgbGF5b3V0IHJlZmxvdyB0byBjb21wdXRlIGJveCBhbmQgc2Nyb2xsIG1ldHJpY3MgYW5kXG4gICAqIHNob3VsZCBiZSBjYWxsZWQgc3BhcmluZ2x5LlxuICAgKi9cbiAgX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHBhZ2luYXRpb24gYXJyb3dzIHNob3VsZCBiZSBhY3RpdmF0ZWQuXG4gICAgdGhpcy5fZGlzYWJsZVNjcm9sbEJlZm9yZSA9IHRoaXMuc2Nyb2xsRGlzdGFuY2UgPT09IDA7XG4gICAgdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyID1cbiAgICAgIHRoaXMuc2Nyb2xsRGlzdGFuY2UgPT09IHRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCk7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGF0IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCBpbiBwaXhlbHMgdGhhdCBjYW4gYmUgc2V0IGZvciB0aGUgc2Nyb2xsIGRpc3RhbmNlLiBUaGlzXG4gICAqIGlzIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGluIHdpZHRoIGJldHdlZW4gdGhlIHRhYiBsaXN0IGNvbnRhaW5lciBhbmQgdGFiIGhlYWRlciBjb250YWluZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgYW4gZXhwZW5zaXZlIGNhbGwgdGhhdCBmb3JjZXMgYSBsYXlvdXQgcmVmbG93IHRvIGNvbXB1dGUgYm94IGFuZCBzY3JvbGwgbWV0cmljcyBhbmRcbiAgICogc2hvdWxkIGJlIGNhbGxlZCBzcGFyaW5nbHkuXG4gICAqL1xuICBfZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTogbnVtYmVyIHtcbiAgICBjb25zdCBsZW5ndGhPZlRhYkxpc3QgPSB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgY29uc3Qgdmlld0xlbmd0aCA9IHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICByZXR1cm4gbGVuZ3RoT2ZUYWJMaXN0IC0gdmlld0xlbmd0aCB8fCAwO1xuICB9XG5cbiAgLyoqIFBlcmZvcm1zIHRoZSBDU1MgdHJhbnNmb3JtYXRpb24gb24gdGhlIHRhYiBsaXN0IHRoYXQgd2lsbCBjYXVzZSB0aGUgbGlzdCB0byBzY3JvbGwuICovXG4gIF91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpIHtcbiAgICBjb25zdCBzY3JvbGxEaXN0YW5jZSA9IHRoaXMuc2Nyb2xsRGlzdGFuY2U7XG4gICAgY29uc3QgdHJhbnNsYXRlWCA9IC1zY3JvbGxEaXN0YW5jZTtcbiAgICAvLyBEb24ndCB1c2UgYHRyYW5zbGF0ZTNkYCBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjcmVhdGUgYSBuZXcgbGF5ZXIuIEEgbmV3IGxheWVyXG4gICAgLy8gc2VlbXMgdG8gY2F1c2UgZmxpY2tlcmluZyBhbmQgb3ZlcmZsb3cgaW4gSW50ZXJuZXQgRXhwbG9yZXIuIEZvciBleGFtcGxlLCB0aGUgaW5rIGJhclxuICAgIC8vIGFuZCByaXBwbGVzIHdpbGwgZXhjZWVkIHRoZSBib3VuZGFyaWVzIG9mIHRoZSB2aXNpYmxlIHRhYiBiYXIuXG4gICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9tYXRlcmlhbDIvaXNzdWVzLzEwMjc2XG4gICAgdGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7dHJhbnNsYXRlWH1weClgO1xuICB9XG5cbiAgLyoqIFRlbGxzIHRoZSBhY3RpdmUgaW5kaWNhdG9yIHRvIGFsaWduIGl0c2VsZiB0byB0aGUgY3VycmVudCBsYWJlbCB3cmFwcGVyICovXG4gIF9hbGlnbkFjdGl2ZUluZGljYXRvclRvU2VsZWN0ZWRUYWIoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRMYWJlbFdyYXBwZXIgPVxuICAgICAgdGhpcy5fbGFiZWxXcmFwcGVycz8ubGVuZ3RoID4gMFxuICAgICAgICA/IHRoaXMuX2xhYmVsV3JhcHBlcnMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF0uZWxlbWVudFJlZlxuICAgICAgICAgICAgLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgOiBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZUluZGljYXRvci5hbGlnblRvRWxlbWVudChzZWxlY3RlZExhYmVsV3JhcHBlcik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld3BvcnRSdWxlcjogVmlld3BvcnRSdWxlcixcbiAgKSB7fVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJiZW0uYmxvY2sodHlwZSwgc2l6ZSlcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl90aXRsZVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3RpdGxlJylcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cIl90aXRsZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2IFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCdoZWFkZXItd3JhcHBlcicpXCI+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24td3JhcHBlcicpXCJcbiAgICAgICNwYWdpbmF0aW9uV3JhcHBlclxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJfc2hvd1BhZ2luYXRpb25Db250cm9sc1wiXG4gICAgICAgIChjbGljayk9XCJfc2Nyb2xsSGVhZGVyKCdiZWZvcmUnKVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cIl9kaXNhYmxlU2Nyb2xsQmVmb3JlID8gJycgOiBudWxsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24tYnV0dG9uJylcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cImFuZ2xlX2xlZnRcIj48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtuZ0NsYXNzXT1cImJlbS5lbGVtZW50KCd0YWItbGlzdC1jb250YWluZXInKVwiXG4gICAgICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgICAgICAjdGFiTGlzdENvbnRhaW5lclxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICAgIChjZGtPYnNlcnZlQ29udGVudCk9XCJfb25Db250ZW50Q2hhbmdlcygpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJiZW0uZWxlbWVudCgndGFiLWxpc3QnKVwiXG4gICAgICAgICAgI3RhYkxpc3RcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2xhYmVscycpXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuICAgICAgICAgIDxhdWktdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yXG4gICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICA+PC9hdWktdGFiLWhlYWRlci1hY3RpdmUtaW5kaWNhdG9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzXCJcbiAgICAgICAgKGNsaWNrKT1cIl9zY3JvbGxIZWFkZXIoJ2FmdGVyJylcIlxuICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJfZGlzYWJsZVNjcm9sbEFmdGVyID8gJycgOiBudWxsXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ3BhZ2luYXRpb24tYnV0dG9uJylcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cImFuZ2xlX3JpZ2h0XCI+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSWYgdGhlcmUgaXMgYWRkb24gdGVtcGxhdGUsIHVzZSBpdC4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zaG93QWRkb25cIj5cbiAgICAgIDxkaXYgW25nQ2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2FkZG9uJylcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiX2hlYWRlckFkZG9uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-prototype-builtins */
|
|
2
1
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
2
|
import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
4
3
|
import { Subject } from 'rxjs';
|
|
@@ -11,28 +10,15 @@ export class TabComponent {
|
|
|
11
10
|
constructor(_viewContainerRef, tabContext) {
|
|
12
11
|
this._viewContainerRef = _viewContainerRef;
|
|
13
12
|
this.tabContext = tabContext;
|
|
14
|
-
/** Plain text label for the tab, used when there is no template label. */
|
|
15
13
|
this.textLabel = '';
|
|
16
|
-
/** Whether or not to show the close button in the header */
|
|
17
14
|
this.closeable = false;
|
|
18
15
|
this.close = new EventEmitter();
|
|
19
|
-
/**
|
|
20
|
-
* The relatively indexed position where 0 represents the center, negative is left, and positive
|
|
21
|
-
* represents the right.
|
|
22
|
-
*/
|
|
23
16
|
this.position = null;
|
|
24
|
-
/**
|
|
25
|
-
* The initial relatively index origin of the tab if it was created and selected after there
|
|
26
|
-
* was already a selected tab. Provides context of what position the tab should originate from.
|
|
27
|
-
*/
|
|
28
17
|
this.origin = null;
|
|
29
|
-
/** Emits whenever the internal state of the tab changes. */
|
|
30
18
|
this._stateChanges = new Subject();
|
|
31
|
-
/** Portal that will be the hosted content of the tab */
|
|
32
19
|
this._contentPortal = null;
|
|
33
20
|
this._disabled = false;
|
|
34
21
|
}
|
|
35
|
-
/** Whether or not the tab is disabled */
|
|
36
22
|
get disabled() {
|
|
37
23
|
return this._disabled;
|
|
38
24
|
}
|
|
@@ -82,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
82
68
|
type: ViewChild,
|
|
83
69
|
args: [TemplateRef, { static: true }]
|
|
84
70
|
}] } });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9zcmMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUVULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBVzFELE1BQU0sT0FBTyxZQUFZO0lBK0R2QixZQUNtQixpQkFBbUMsRUFDcEMsVUFBNkI7UUFENUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNwQyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQTNEL0MsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUlmLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFhbEIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUF3QmpDLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBTS9CLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBR3BCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUdyQyxtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFFN0MsY0FBUyxHQUFHLEtBQUssQ0FBQztJQUt2QixDQUFDO0lBckRKLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBbUJELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBMkJELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUN0QyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUNFLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ2xDLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQ25DO1lBQ0EsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7O3lHQXZGVSxZQUFZOzZGQUFaLFlBQVksMEtBRlosQ0FBQyxpQkFBaUIsQ0FBQyxxRUE0QmhCLGlCQUFpQixtRkFNakIsbUJBQW1CLDJCQUFVLFdBQVcsK0VBSTNDLFdBQVcseUdDdEV4QiwrUUFNQTsyRkQ0QmEsWUFBWTtrQkFUeEIsU0FBUzsrQkFDRSxTQUFTLFlBQ1QsUUFBUSxpQkFFSCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLHVCQUMxQixLQUFLLGFBQ2YsQ0FBQyxpQkFBaUIsQ0FBQzt1SUFJOUIsSUFBSTtzQkFESCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSzt1QkFBQyxPQUFPO2dCQUtkLFNBQVM7c0JBRFIsS0FBSztnQkFLRixRQUFRO3NCQURYLEtBQUs7Z0JBVU4sS0FBSztzQkFESixNQUFNO2dCQUtQLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBT2xELGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUt2RSxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IGNvZXJjZUF0dHJCb29sZWFuIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBUYWJDb250ZW50RGlyZWN0aXZlLCBUYWJMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi90YWItY29udGV4dC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRhYicsXG4gIGV4cG9ydEFzOiAnYXVpVGFiJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgcHJvdmlkZXJzOiBbVGFiQ29udGV4dFNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogUGxhaW4gdGV4dCBsYWJlbCBmb3IgdGhlIHRhYiwgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHRlbXBsYXRlIGxhYmVsLiAqL1xuICBASW5wdXQoJ2xhYmVsJylcbiAgdGV4dExhYmVsID0gJyc7XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgaGVhZGVyICovXG4gIEBJbnB1dCgpXG4gIGNsb3NlYWJsZSA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGFiIGlzIGRpc2FibGVkICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUF0dHJCb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogQ29udGVudCBmb3IgdGhlIHRhYiBsYWJlbCBnaXZlbiBieSBgPG5nLXRlbXBsYXRlIFthdWlUYWJMYWJlbF0+YC4gKi9cbiAgQENvbnRlbnRDaGlsZChUYWJMYWJlbERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHRlbXBsYXRlTGFiZWw6IFRhYkxhYmVsRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBwcm92aWRlZCBpbiB0aGUgdGFiIGNvbnRlbnQgdGhhdCB3aWxsIGJlIHVzZWQgaWYgcHJlc2VudCwgdXNlZCB0byBlbmFibGUgbGF6eS1sb2FkaW5nXG4gICAqL1xuICBAQ29udGVudENoaWxkKFRhYkNvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgX2V4cGxpY2l0Q29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGVtcGxhdGUgaW5zaWRlIHRoZSBBdWlUYWIgdmlldyB0aGF0IGNvbnRhaW5zIGFuIGA8bmctY29udGVudD5gLiAqL1xuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBfaW1wbGljaXRDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBjb250ZW50KCk6IFRlbXBsYXRlUG9ydGFsIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRQb3J0YWw7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbGF0aXZlbHkgaW5kZXhlZCBwb3NpdGlvbiB3aGVyZSAwIHJlcHJlc2VudHMgdGhlIGNlbnRlciwgbmVnYXRpdmUgaXMgbGVmdCwgYW5kIHBvc2l0aXZlXG4gICAqIHJlcHJlc2VudHMgdGhlIHJpZ2h0LlxuICAgKi9cbiAgcG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCByZWxhdGl2ZWx5IGluZGV4IG9yaWdpbiBvZiB0aGUgdGFiIGlmIGl0IHdhcyBjcmVhdGVkIGFuZCBzZWxlY3RlZCBhZnRlciB0aGVyZVxuICAgKiB3YXMgYWxyZWFkeSBhIHNlbGVjdGVkIHRhYi4gUHJvdmlkZXMgY29udGV4dCBvZiB3aGF0IHBvc2l0aW9uIHRoZSB0YWIgc2hvdWxkIG9yaWdpbmF0ZSBmcm9tLlxuICAgKi9cbiAgb3JpZ2luOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSB0YWIgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgX3N0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyoqIFBvcnRhbCB0aGF0IHdpbGwgYmUgdGhlIGhvc3RlZCBjb250ZW50IG9mIHRoZSB0YWIgKi9cbiAgcHJpdmF0ZSBfY29udGVudFBvcnRhbDogVGVtcGxhdGVQb3J0YWwgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHVibGljIHJlYWRvbmx5IHRhYkNvbnRleHQ6IFRhYkNvbnRleHRTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICB0aGlzLl9leHBsaWNpdENvbnRlbnQgfHwgdGhpcy5faW1wbGljaXRDb250ZW50LFxuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgndGV4dExhYmVsJykgfHxcbiAgICAgIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Rpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Nsb3NlYWJsZScpXG4gICAgKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuICBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxhdWktdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXNcbiAgVGVtcGxhdGVSZWYgYW5kIHVzZSBpdCBpbiBhIFBvcnRhbCB0byByZW5kZXIgdGhlIHRhYiBjb250ZW50IGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGVcbiAgdGFiLWdyb3VwLlxuLS0+XG48bmctdGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
export const TabSize = {
|
|
2
|
-
/** 卡片级尺寸 */
|
|
3
2
|
Large: 'large',
|
|
4
|
-
/** 页面级尺寸 */
|
|
5
3
|
Medium: 'medium',
|
|
6
|
-
/** 小尺寸 */
|
|
7
4
|
Small: 'small',
|
|
8
5
|
};
|
|
9
6
|
export const TabType = {
|
|
10
7
|
Line: 'line',
|
|
11
8
|
Card: 'card',
|
|
12
9
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJzL3RhYnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBRXJCLEtBQUssRUFBRSxPQUFPO0lBR2QsTUFBTSxFQUFFLFFBQVE7SUFHaEIsS0FBSyxFQUFFLE9BQU87Q0FDTixDQUFDO0FBSVgsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsdWVPZiB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRhYlNpemUgPSB7XG4gIC8qKiDljaHniYfnuqflsLrlr7ggKi9cbiAgTGFyZ2U6ICdsYXJnZScsXG5cbiAgLyoqIOmhtemdoue6p+WwuuWvuCAqL1xuICBNZWRpdW06ICdtZWRpdW0nLFxuXG4gIC8qKiDlsI/lsLrlr7ggKi9cbiAgU21hbGw6ICdzbWFsbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUYWJTaXplID0gVmFsdWVPZjx0eXBlb2YgVGFiU2l6ZT47XG5cbmV4cG9ydCBjb25zdCBUYWJUeXBlID0ge1xuICBMaW5lOiAnbGluZScsXG4gIENhcmQ6ICdjYXJkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFRhYlR5cGUgPSBWYWx1ZU9mPHR5cGVvZiBUYWJUeXBlPjtcbiJdfQ==
|
|
@@ -22,7 +22,6 @@ export class TagComponent {
|
|
|
22
22
|
get rootClass() {
|
|
23
23
|
return `${this.bem.block(this.type || TagType.Primary, this.size || ComponentSize.Medium)} ${this.solid ? 'isSolid' : ''} ${this.border ? 'hasBorder' : ''} ${this.invalid ? 'isInvalid' : ''} ${this.round ? 'isRound' : ''} ${this.allowClick && this.isNormalTag ? 'allowClick' : ''}`;
|
|
24
24
|
}
|
|
25
|
-
// 只有常规标签支持单击样式
|
|
26
25
|
get isNormalTag() {
|
|
27
26
|
return !this.solid && !this.closeable && !this.invalid;
|
|
28
27
|
}
|
|
@@ -61,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
|
|
|
61
60
|
}], close: [{
|
|
62
61
|
type: Output
|
|
63
62
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBTyxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQVV0QyxNQUFNLE9BQU8sWUFBWTtJQVJ6QjtRQVNFLFFBQUcsR0FBUSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHL0IsU0FBSSxHQUFZLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFHaEMsU0FBSSxHQUFrQixhQUFhLENBQUMsTUFBTSxDQUFDO1FBRzNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUdmLFVBQUssR0FBRyxLQUFLLENBQUM7UUFHZCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBR2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFHYixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBR1gsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQTBCbEM7SUF4QkMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUN0QixJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQzVCLElBQUksQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUMvQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUM3QixJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdkQsRUFBRSxDQUFDO0lBQ0wsQ0FBQztJQUdELElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU87WUFDTCxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNiLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JDLENBQUM7SUFDSixDQUFDOzt5R0F4RFUsWUFBWTs2RkFBWixZQUFZLDRQQ3RCekIsb1RBWUE7MkZEVWEsWUFBWTtrQkFSeEIsU0FBUzsrQkFDRSxTQUFTLG1CQUdGLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksdUJBQ2hCLEtBQUs7OEJBTTFCLElBQUk7c0JBREgsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLEtBQUs7c0JBREosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRTaXplIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQmVtLCBidWlsZEJlbSB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgVGFnVHlwZSB9IGZyb20gJy4vdGFnLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLXRhZycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBUYWdDb21wb25lbnQge1xuICBiZW06IEJlbSA9IGJ1aWxkQmVtKCdhdWktdGFnJyk7XG5cbiAgQElucHV0KClcbiAgdHlwZTogVGFnVHlwZSA9IFRhZ1R5cGUuUHJpbWFyeTtcblxuICBASW5wdXQoKVxuICBzaXplOiBDb21wb25lbnRTaXplID0gQ29tcG9uZW50U2l6ZS5NZWRpdW07XG5cbiAgQElucHV0KClcbiAgY2xvc2VhYmxlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYm9yZGVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc29saWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBpbnZhbGlkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcm91bmQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbG9yID0gJyc7XG5cbiAgQElucHV0KClcbiAgYWxsb3dDbGljayA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgcm9vdENsYXNzKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmJlbS5ibG9jayhcbiAgICAgIHRoaXMudHlwZSB8fCBUYWdUeXBlLlByaW1hcnksXG4gICAgICB0aGlzLnNpemUgfHwgQ29tcG9uZW50U2l6ZS5NZWRpdW0sXG4gICAgKX0gJHt0aGlzLnNvbGlkID8gJ2lzU29saWQnIDogJyd9ICR7dGhpcy5ib3JkZXIgPyAnaGFzQm9yZGVyJyA6ICcnfSAke1xuICAgICAgdGhpcy5pbnZhbGlkID8gJ2lzSW52YWxpZCcgOiAnJ1xuICAgIH0gJHt0aGlzLnJvdW5kID8gJ2lzUm91bmQnIDogJyd9ICR7XG4gICAgICB0aGlzLmFsbG93Q2xpY2sgJiYgdGhpcy5pc05vcm1hbFRhZyA/ICdhbGxvd0NsaWNrJyA6ICcnXG4gICAgfWA7XG4gIH1cblxuICAvLyDlj6rmnInluLjop4TmoIfnrb7mlK/mjIHljZXlh7vmoLflvI9cbiAgZ2V0IGlzTm9ybWFsVGFnKCkge1xuICAgIHJldHVybiAhdGhpcy5zb2xpZCAmJiAhdGhpcy5jbG9zZWFibGUgJiYgIXRoaXMuaW52YWxpZDtcbiAgfVxuXG4gIGdldCBjdXN0b21TdHlsZSgpIHtcbiAgICBjb25zdCBhcnIgPSB0aGlzLmNvbG9yLnNwbGl0KCcsJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiBhcnJbMF0sXG4gICAgICAnYm9yZGVyLWNvbG9yJzogYXJyWzBdLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBhcnJbMV0gfHwgYXJyWzBdLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgW2NsYXNzXT1cInJvb3RDbGFzc1wiXG4gIFtuZ1N0eWxlXT1cImN1c3RvbVN0eWxlXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJhdWktdGFnX19jb250ZW50XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgKm5nSWY9XCJjbG9zZWFibGVcIlxuICAgIGNsYXNzPVwiYXVpLXRhZ19fY2xvc2VcIlxuICAgIGljb249XCJjbG9zZV9zbWFsbFwiXG4gICAgKGNsaWNrKT1cImNsb3NlLmVtaXQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgPjwvYXVpLWljb24+XG48L2Rpdj5cbiJdfQ==
|