@skyux/lists 6.0.1 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +518 -251
- package/esm2020/lib/modules/repeater/repeater-item-roles.type.mjs +2 -0
- package/esm2020/lib/modules/repeater/repeater-item.component.mjs +118 -29
- package/esm2020/lib/modules/repeater/repeater-role.type.mjs +2 -0
- package/esm2020/lib/modules/repeater/repeater.component.mjs +66 -4
- package/esm2020/lib/modules/repeater/repeater.module.mjs +5 -1
- package/esm2020/lib/modules/repeater/repeater.service.mjs +8 -3
- package/fesm2015/skyux-lists.mjs +191 -32
- package/fesm2015/skyux-lists.mjs.map +1 -1
- package/fesm2020/skyux-lists.mjs +192 -32
- package/fesm2020/skyux-lists.mjs.map +1 -1
- package/lib/modules/repeater/repeater-item-roles.type.d.ts +5 -0
- package/lib/modules/repeater/repeater-item.component.d.ts +17 -2
- package/lib/modules/repeater/repeater-role.type.d.ts +1 -0
- package/lib/modules/repeater/repeater.component.d.ts +7 -2
- package/lib/modules/repeater/repeater.module.d.ts +6 -5
- package/lib/modules/repeater/repeater.service.d.ts +2 -0
- package/package.json +11 -10
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS1yb2xlcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci1pdGVtLXJvbGVzLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZSA9IHtcbiAgaXRlbTogJ2xpc3RpdGVtJyB8ICdvcHRpb24nIHwgJ3JvdycgfCB1bmRlZmluZWQ7XG4gIHRpdGxlOiAncm93aGVhZGVyJyB8IHVuZGVmaW5lZDtcbiAgY29udGVudDogJ2dyaWRjZWxsJyB8IHVuZGVmaW5lZDtcbn07XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, Input, Output, QueryList, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, QueryList, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { skyAnimationSlide } from '@skyux/animations';
|
|
3
3
|
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
4
4
|
import { Subject, forkJoin as observableForkJoin } from 'rxjs';
|
|
@@ -63,6 +63,7 @@ export class SkyRepeaterItemComponent {
|
|
|
63
63
|
this.keyboardReorderingEnabled = false;
|
|
64
64
|
this.ngUnsubscribe = new Subject();
|
|
65
65
|
this._isCollapsible = true;
|
|
66
|
+
this._isDisabled = false;
|
|
66
67
|
this._isExpanded = true;
|
|
67
68
|
this._isSelected = false;
|
|
68
69
|
this.slideForExpanded(false);
|
|
@@ -80,6 +81,42 @@ export class SkyRepeaterItemComponent {
|
|
|
80
81
|
this.reorderMovedText = translatedStrings[4];
|
|
81
82
|
this.reorderButtonLabel = this.reorderInstructions;
|
|
82
83
|
});
|
|
84
|
+
this.itemRole$ = this.repeaterService.itemRole.asObservable();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Make the first, non-disabled item tab-focusable.
|
|
88
|
+
* - Disabled items should not be focusable per [W3C](https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_disabled_controls).
|
|
89
|
+
* - One item per list/grid/listbox should be tab focusable per [W3C](https://www.w3.org/TR/wai-aria-practices-1.1/#grid).
|
|
90
|
+
*/
|
|
91
|
+
get tabindex() {
|
|
92
|
+
return this.repeaterService.items.filter((item) => !item.disabled)[0] ===
|
|
93
|
+
this
|
|
94
|
+
? 0
|
|
95
|
+
: -1;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Whether to exclude an item when cycling through.
|
|
99
|
+
*/
|
|
100
|
+
set disabled(value) {
|
|
101
|
+
if (this._isDisabled !== value) {
|
|
102
|
+
if (value) {
|
|
103
|
+
this.isSelected = false;
|
|
104
|
+
this._isDisabled = true;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this._isDisabled = false;
|
|
108
|
+
}
|
|
109
|
+
if (this.isActive) {
|
|
110
|
+
this.repeaterService.activateItemByIndex(undefined);
|
|
111
|
+
}
|
|
112
|
+
if (this.elementRef.nativeElement.matches(':focus-within')) {
|
|
113
|
+
this.elementRef.nativeElement.ownerDocument.activeElement.blur();
|
|
114
|
+
}
|
|
115
|
+
this.changeDetector.markForCheck();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
get disabled() {
|
|
119
|
+
return this._isDisabled;
|
|
83
120
|
}
|
|
84
121
|
/**
|
|
85
122
|
* Indicates whether the repeater item is expanded.
|
|
@@ -97,7 +134,7 @@ export class SkyRepeaterItemComponent {
|
|
|
97
134
|
* @default false
|
|
98
135
|
*/
|
|
99
136
|
set isSelected(value) {
|
|
100
|
-
if (value !== this._isSelected) {
|
|
137
|
+
if (!this.disabled && value !== this._isSelected) {
|
|
101
138
|
this._isSelected = value;
|
|
102
139
|
this.isSelectedChange.emit(this._isSelected);
|
|
103
140
|
}
|
|
@@ -146,6 +183,74 @@ export class SkyRepeaterItemComponent {
|
|
|
146
183
|
this.ngUnsubscribe.complete();
|
|
147
184
|
this.repeaterService.unregisterItem(this);
|
|
148
185
|
}
|
|
186
|
+
onKeydown($event) {
|
|
187
|
+
if ([' ', 'Enter', 'Home', 'End', 'ArrowUp', 'ArrowDown'].includes($event.key)) {
|
|
188
|
+
if ($event.target.matches('input, textarea, select, option, [contenteditable], [contenteditable] *')) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
$event.preventDefault();
|
|
192
|
+
$event.stopPropagation();
|
|
193
|
+
let activateItem = undefined;
|
|
194
|
+
/* istanbul ignore else */
|
|
195
|
+
if ([' ', 'Enter'].includes($event.key)) {
|
|
196
|
+
if (this.selectable) {
|
|
197
|
+
this.isSelected = !this.isSelected;
|
|
198
|
+
}
|
|
199
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
200
|
+
activateItem = this;
|
|
201
|
+
}
|
|
202
|
+
/* istanbul ignore else */
|
|
203
|
+
if (['Home', 'End'].includes($event.key)) {
|
|
204
|
+
const items = this.repeaterService.items.filter((item) => !item.disabled);
|
|
205
|
+
if ($event.key === 'Home') {
|
|
206
|
+
activateItem = items.shift();
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
activateItem = items.pop();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/* istanbul ignore else */
|
|
213
|
+
if (['ArrowUp', 'ArrowDown'].includes($event.key)) {
|
|
214
|
+
const currentIndex = this.repeaterService.items.findIndex((item) => item === this);
|
|
215
|
+
let sliceFrom;
|
|
216
|
+
let sliceTo;
|
|
217
|
+
if ($event.key === 'ArrowUp') {
|
|
218
|
+
sliceFrom = 0;
|
|
219
|
+
sliceTo = currentIndex;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
sliceFrom = currentIndex + 1;
|
|
223
|
+
sliceTo = undefined;
|
|
224
|
+
}
|
|
225
|
+
const items = this.repeaterService.items
|
|
226
|
+
.slice(sliceFrom, sliceTo)
|
|
227
|
+
.filter((item) => !item.disabled);
|
|
228
|
+
activateItem = $event.key === 'ArrowUp' ? items.pop() : items.shift();
|
|
229
|
+
if (!activateItem) {
|
|
230
|
+
// Wrap around.
|
|
231
|
+
if ($event.key === 'ArrowDown') {
|
|
232
|
+
sliceFrom = 0;
|
|
233
|
+
sliceTo = currentIndex;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
sliceFrom = currentIndex + 1;
|
|
237
|
+
sliceTo = undefined;
|
|
238
|
+
}
|
|
239
|
+
const items = this.repeaterService.items
|
|
240
|
+
.slice(sliceFrom, sliceTo)
|
|
241
|
+
.filter((item) => !item.disabled);
|
|
242
|
+
activateItem = $event.key === 'ArrowUp' ? items.pop() : items.shift();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/* istanbul ignore else */
|
|
246
|
+
if (activateItem && !activateItem.isActive) {
|
|
247
|
+
this.repeaterService.activateItem(activateItem);
|
|
248
|
+
if (!activateItem.elementRef.nativeElement.matches(':focus-within')) {
|
|
249
|
+
activateItem.elementRef.nativeElement.focus();
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
149
254
|
headerClick() {
|
|
150
255
|
if (this.isCollapsible) {
|
|
151
256
|
this.updateForExpanded(!this.isExpanded, true);
|
|
@@ -253,29 +358,6 @@ export class SkyRepeaterItemComponent {
|
|
|
253
358
|
this.reorderButtonLabel = this.reorderInstructions;
|
|
254
359
|
this.reorderState = undefined;
|
|
255
360
|
}
|
|
256
|
-
onItemKeyDown(event) {
|
|
257
|
-
/*istanbul ignore else */
|
|
258
|
-
if (event.key) {
|
|
259
|
-
switch (event.key.toLowerCase()) {
|
|
260
|
-
case ' ':
|
|
261
|
-
case 'enter':
|
|
262
|
-
/* istanbul ignore else */
|
|
263
|
-
/* Sanity check */
|
|
264
|
-
// Space/enter should never execute unless focused on the parent item element.
|
|
265
|
-
if (event.target === this.itemRef.nativeElement) {
|
|
266
|
-
if (this.selectable) {
|
|
267
|
-
this.isSelected = !this.isSelected;
|
|
268
|
-
}
|
|
269
|
-
this.repeaterService.activateItem(this);
|
|
270
|
-
event.preventDefault();
|
|
271
|
-
}
|
|
272
|
-
break;
|
|
273
|
-
/* istanbul ignore next */
|
|
274
|
-
default:
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
361
|
slideForExpanded(animate) {
|
|
280
362
|
this.slideDirection = this.isExpanded ? 'down' : 'up';
|
|
281
363
|
}
|
|
@@ -328,11 +410,15 @@ export class SkyRepeaterItemComponent {
|
|
|
328
410
|
}
|
|
329
411
|
}
|
|
330
412
|
SkyRepeaterItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyRepeaterItemComponent, deps: [{ token: i1.SkyRepeaterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyRepeaterAdapterService }, { token: i0.ElementRef }, { token: i3.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
331
|
-
SkyRepeaterItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyRepeaterItemComponent, selector: "sky-repeater-item", inputs: { itemName: "itemName", inlineFormConfig: "inlineFormConfig", inlineFormTemplate: "inlineFormTemplate", isExpanded: "isExpanded", isSelected: "isSelected", reorderable: "reorderable", selectable: "selectable", showInlineForm: "showInlineForm", tag: "tag" }, outputs: { collapse: "collapse", expand: "expand", inlineFormClose: "inlineFormClose", isSelectedChange: "isSelectedChange" }, host: { properties: { "class": "this.repeaterGroupClass" } }, queries: [{ propertyName: "contextMenu", first: true, predicate: SkyRepeaterItemContextMenuComponent, descendants: true, read: ElementRef }, { propertyName: "repeaterItemContentComponents", predicate: SkyRepeaterItemContentComponent }], viewQueries: [{ propertyName: "grabHandle", first: true, predicate: ["grabHandle"], descendants: true, read: ElementRef }, { propertyName: "itemContentRef", first: true, predicate: ["itemContentRef"], descendants: true, read: ElementRef }, { propertyName: "itemHeaderRef", first: true, predicate: ["itemHeaderRef"], descendants: true, read: ElementRef }, { propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n role=\"option\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : null\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n (keydown)=\"onItemKeyDown($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div class=\"sky-repeater-item-title sky-emphasized\" #titleRef>\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"], components: [{ type: i4.λ1, selector: "sky-inline-form", inputs: ["config", "template", "showForm"], outputs: ["close"] }, { type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { type: i5.λ2, selector: "sky-chevron", inputs: ["ariaControls", "ariaLabel", "direction", "disabled"], outputs: ["directionChange"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "skyLibResources": i3.SkyLibResourcesPipe }, animations: [skyAnimationSlide], encapsulation: i0.ViewEncapsulation.None });
|
|
413
|
+
SkyRepeaterItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: SkyRepeaterItemComponent, selector: "sky-repeater-item", inputs: { disabled: "disabled", itemName: "itemName", inlineFormConfig: "inlineFormConfig", inlineFormTemplate: "inlineFormTemplate", isExpanded: "isExpanded", isSelected: "isSelected", reorderable: "reorderable", selectable: "selectable", showInlineForm: "showInlineForm", tag: "tag" }, outputs: { collapse: "collapse", expand: "expand", inlineFormClose: "inlineFormClose", isSelectedChange: "isSelectedChange" }, host: { listeners: { "keydown": "onKeydown($event)" }, properties: { "tabindex": "this.tabindex", "class": "this.repeaterGroupClass" } }, queries: [{ propertyName: "contextMenu", first: true, predicate: SkyRepeaterItemContextMenuComponent, descendants: true, read: ElementRef }, { propertyName: "repeaterItemContentComponents", predicate: SkyRepeaterItemContentComponent }], viewQueries: [{ propertyName: "grabHandle", first: true, predicate: ["grabHandle"], descendants: true, read: ElementRef }, { propertyName: "itemContentRef", first: true, predicate: ["itemContentRef"], descendants: true, read: ElementRef }, { propertyName: "itemHeaderRef", first: true, predicate: ["itemHeaderRef"], descendants: true, read: ElementRef }, { propertyName: "itemRef", first: true, predicate: ["itemRef"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : undefined\"\n [attr.role]=\"(itemRole$ | async).item\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div\n class=\"sky-repeater-item-title sky-emphasized\"\n #titleRef\n [attr.role]=\"(itemRole$ | async).title\"\n >\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n [attr.role]=\"(itemRole$ | async).content\"\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"], components: [{ type: i4.λ1, selector: "sky-inline-form", inputs: ["config", "template", "showForm"], outputs: ["close"] }, { type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "required"], outputs: ["change", "checkedChange", "disabledChange"] }, { type: i5.λ2, selector: "sky-chevron", inputs: ["ariaControls", "ariaLabel", "direction", "disabled"], outputs: ["directionChange"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i7.AsyncPipe, "skyLibResources": i3.SkyLibResourcesPipe }, animations: [skyAnimationSlide], encapsulation: i0.ViewEncapsulation.None });
|
|
332
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: SkyRepeaterItemComponent, decorators: [{
|
|
333
415
|
type: Component,
|
|
334
|
-
args: [{ selector: 'sky-repeater-item', animations: [skyAnimationSlide], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n
|
|
335
|
-
}], ctorParameters: function () { return [{ type: i1.SkyRepeaterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyRepeaterAdapterService }, { type: i0.ElementRef }, { type: i3.SkyLibResourcesService }]; }, propDecorators: {
|
|
416
|
+
args: [{ selector: 'sky-repeater-item', animations: [skyAnimationSlide], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"sky-repeater-item sky-padding-even-default\"\n [attr.aria-label]=\"itemName\"\n [attr.aria-selected]=\"selectable ? isSelected : undefined\"\n [attr.role]=\"(itemRole$ | async).item\"\n [ngClass]=\"{\n 'sky-repeater-item-active': isActive,\n 'sky-repeater-item-collapsible': isCollapsible,\n 'sky-repeater-item-selected': isSelected\n }\"\n (click)=\"onRepeaterItemClick($event)\"\n #itemRef\n>\n <div #inlineDelete>\n <ng-content select=\"sky-inline-delete\"></ng-content>\n </div>\n\n <ng-container *ngIf=\"inlineFormTemplate\">\n <sky-inline-form\n [config]=\"inlineFormConfig\"\n [showForm]=\"showInlineForm\"\n [template]=\"inlineFormTemplate\"\n (close)=\"onInlineFormClose($event)\"\n >\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </sky-inline-form>\n </ng-container>\n\n <ng-container *ngIf=\"!inlineFormTemplate\">\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemLeft\"></ng-container>\n <ng-container *ngTemplateOutlet=\"skyRepeaterItemRight\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #skyRepeaterItemLeft>\n <div class=\"sky-repeater-item-left\">\n <ng-container *ngIf=\"reorderable\">\n <span\n aria-live=\"assertive\"\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-state'\"\n >\n {{ reorderState }}\n </span>\n <span\n class=\"sky-screen-reader-only\"\n [id]=\"contentId + '-reorder-instructions'\"\n >{{ reorderButtonLabel }}</span\n >\n <button\n class=\"sky-btn sky-tile-tools-control sky-repeater-item-grab-handle\"\n type=\"button\"\n [attr.aria-describedby]=\"contentId + '-reorder-instructions'\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_label_default' | skyLibResources)\n \"\n (blur)=\"onReorderHandleBlur($event)\"\n (keydown)=\"onReorderHandleKeyDown($event)\"\n #grabHandle\n >\n <sky-icon icon=\"arrows-v\"></sky-icon>\n </button>\n </ng-container>\n <sky-checkbox\n *ngIf=\"selectable\"\n class=\"sky-repeater-item-checkbox\"\n [checked]=\"isSelected\"\n [label]=\"\n itemName\n ? ('skyux_repeater_item_checkbox_label' | skyLibResources: itemName)\n : ('skyux_repeater_item_checkbox_label_default' | skyLibResources)\n \"\n (change)=\"onCheckboxChange($event)\"\n >\n </sky-checkbox>\n <div\n class=\"sky-repeater-item-context-menu\"\n [hidden]=\"contextMenuEl.children.length === 0\"\n #contextMenuEl\n >\n <ng-content select=\"sky-repeater-item-context-menu\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #skyRepeaterItemRight>\n <div class=\"sky-repeater-item-right\" #itemHeaderRef>\n <div\n class=\"sky-repeater-item-header\"\n [hidden]=\"titleRef.children.length === 0\"\n (click)=\"headerClick()\"\n >\n <div\n class=\"sky-repeater-item-title sky-emphasized\"\n #titleRef\n [attr.role]=\"(itemRole$ | async).title\"\n >\n <ng-content select=\"sky-repeater-item-title\"></ng-content>\n </div>\n <button\n *ngIf=\"reorderable\"\n class=\"sky-btn sky-btn-link sky-repeater-item-reorder-top\"\n type=\"button\"\n [attr.aria-label]=\"\n itemName\n ? ('skyux_repeater_item_reorder_top_label'\n | skyLibResources: itemName)\n : ('skyux_repeater_item_reorder_top_label_default'\n | skyLibResources)\n \"\n (click)=\"moveToTop($event)\"\n >\n <sky-icon icon=\"arrow-circle-up\"></sky-icon>\n {{ 'skyux_repeater_item_reorder_top' | skyLibResources }}\n </button>\n <div *ngIf=\"isCollapsible\" class=\"sky-repeater-item-chevron\">\n <sky-chevron\n [ariaControls]=\"contentId\"\n [ariaLabel]=\"\n itemName\n ? ('skyux_repeater_item_expand' | skyLibResources: itemName)\n : ('skyux_repeater_item_expand_default' | skyLibResources)\n \"\n [direction]=\"isExpanded ? 'up' : 'down'\"\n (directionChange)=\"chevronDirectionChange($event)\"\n >\n </sky-chevron>\n </div>\n <!-- Used for when the chevron is hidden to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"!isCollapsible && !contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder\"\n ></div>\n <!-- Used to ensure that the right side is the same height as the left.-->\n <div\n *ngIf=\"contextMenu\"\n class=\"sky-repeater-item-chevron-placeholder-with-context\"\n ></div>\n </div>\n <div\n class=\"sky-repeater-item-content\"\n [id]=\"contentId\"\n [@skyAnimationSlide]=\"slideDirection\"\n #itemContentRef\n [attr.role]=\"(itemRole$ | async).content\"\n >\n <ng-content select=\"sky-repeater-item-content\"></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: ["sky-repeater-item .sky-repeater-item{display:flex;border-bottom:1px dotted #cdcfd2;padding-top:0;position:relative;transition:box-shadow .15s;align-items:flex-start}sky-repeater-item .sky-repeater-item sky-inline-form{display:block;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form>:first-child,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-first,sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{display:flex;flex:1 0 auto;width:100%}sky-repeater-item .sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:10px}sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}sky-repeater-item .sky-repeater-item.sky-repeater-item-active .sky-inline-delete{margin-left:-4px;width:calc(100% + 4px)}sky-repeater-item .sky-repeater-item-left{display:flex;padding-top:10px;align-items:center}sky-repeater-item .sky-repeater-item-left sky-checkbox{display:flex}sky-repeater-item .sky-repeater-item-right{max-width:100%;flex-grow:1;align-self:center}sky-repeater-item .sky-repeater-item-header{align-items:center;display:flex;padding-top:10px}sky-repeater-item .sky-repeater-item-chevron{margin-left:10px}sky-repeater-item .sky-repeater-item-chevron-placeholder{height:24px}sky-repeater-item .sky-repeater-item-chevron-placeholder-with-context{height:29px}sky-repeater-item .sky-repeater-item-context-menu{padding:0 10px 0 0}sky-repeater-item .sky-repeater-item-checkbox{padding:0 5px 0 0}sky-repeater-item .sky-repeater-item-selected{background-color:#f1eef6;transition:background-color .15s}sky-repeater-item .sky-repeater-item-title{margin:0;flex-grow:1;line-height:1.1;color:#212327}sky-repeater-item sky-repeater-item-content{display:block;margin:10px 0 0}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-header{cursor:pointer}sky-repeater-item .sky-repeater-item-collapsible .sky-repeater-item-content{padding-right:34px}sky-repeater-item .sky-repeater-item-collapsed .sky-repeater-item-content{display:none}sky-repeater-item .sky-repeater-item-grab-handle{color:#cdcfd2;cursor:pointer;border:0;width:24px;height:24px;cursor:grab;cursor:-moz-grab;padding:0;margin-right:10px}sky-repeater-item .sky-repeater-item-grab-handle:hover{color:#979ba2;transition:color .15s}sky-repeater-item.sky-repeater-item-dragging.gu-mirror{opacity:initial;-ms-filter:initial;filter:initial;background-color:#fff;box-shadow:0 0 5px #0000004d}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item{background-color:#d8d8d8}sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-left,sky-repeater-item.sky-repeater-item-dragging.gu-transit .sky-repeater-item .sky-repeater-item-right{visibility:hidden}sky-repeater-item.sky-repeater-item-dragging .sky-repeater-item-grab-handle{cursor:grabbing;cursor:-webkit-grabbing}.sky-theme-modern sky-repeater-item .sky-repeater-item{padding-bottom:20px}.sky-theme-modern sky-repeater-item .sky-repeater-item.sky-repeater-item-active{background-color:transparent;border-left-color:#1870b8}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus,.sky-theme-modern sky-repeater-item .sky-repeater-item:active:focus{outline:solid 2px #1870B8;outline-offset:-2px}.sky-theme-modern sky-repeater-item .sky-repeater-item:focus:not(:active){box-shadow:0 1px 8px #0000004d}.sky-theme-modern sky-repeater-item .sky-repeater-item-header[hidden]+.sky-repeater-item-content sky-repeater-item-content{margin:20px 0 0}.sky-theme-modern sky-repeater-item .sky-repeater-item-header,.sky-theme-modern sky-repeater-item .sky-repeater-item-left{padding-top:20px}.sky-theme-modern sky-repeater-item sky-inline-form .sky-slide-dissolve-last{padding-top:20px}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item{border-bottom-color:#686c73}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item.sky-repeater-item-active{color:#fbfcfe}.sky-theme-modern.sky-theme-mode-dark sky-repeater-item .sky-repeater-item-title{color:#fbfcfe}\n"] }]
|
|
417
|
+
}], ctorParameters: function () { return [{ type: i1.SkyRepeaterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyRepeaterAdapterService }, { type: i0.ElementRef }, { type: i3.SkyLibResourcesService }]; }, propDecorators: { tabindex: [{
|
|
418
|
+
type: HostBinding
|
|
419
|
+
}], disabled: [{
|
|
420
|
+
type: Input
|
|
421
|
+
}], itemName: [{
|
|
336
422
|
type: Input
|
|
337
423
|
}], inlineFormConfig: [{
|
|
338
424
|
type: Input
|
|
@@ -379,5 +465,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
|
379
465
|
}], repeaterItemContentComponents: [{
|
|
380
466
|
type: ContentChildren,
|
|
381
467
|
args: [SkyRepeaterItemContentComponent]
|
|
468
|
+
}], onKeydown: [{
|
|
469
|
+
type: HostListener,
|
|
470
|
+
args: ['keydown', ['$event']]
|
|
382
471
|
}] } });
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBRXhELElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUV0Qjs7R0FFRztBQVFILE1B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O2dCQU9BLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFJQSxXQUFXO3NCQURqQixZQUFZO3VCQUFDLG1DQUFtQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFtQ25FLGtCQUFrQjtzQkFEckIsV0FBVzt1QkFBQyxPQUFPO2dCQU1aLFVBQVU7c0JBRGpCLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJckMsY0FBYztzQkFEckIsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXpDLGFBQWE7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJeEMsT0FBTztzQkFEZCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSWxDLDZCQUE2QjtzQkFEcEMsZUFBZTt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2t5QW5pbWF0aW9uU2xpZGUgfSBmcm9tICdAc2t5dXgvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTa3lDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHtcbiAgU2t5SW5saW5lRm9ybUNsb3NlQXJncyxcbiAgU2t5SW5saW5lRm9ybUNvbmZpZyxcbn0gZnJvbSAnQHNreXV4L2lubGluZS1mb3JtJztcblxuaW1wb3J0IHsgU3ViamVjdCwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci5zZXJ2aWNlJztcblxubGV0IG5leHRDb250ZW50SWQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gaW5kaXZpZHVhbCByZXBlYXRlciBpdGVtLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmVwZWF0ZXItaXRlbScsXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBhbmltYXRpb25zOiBbc2t5QW5pbWF0aW9uU2xpZGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogU3BlY2lmaWVzIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJlcGVhdGVyIGl0ZW0gdGhhdCBpcyBhdmFpbGFibGUgZm9yIG11bHRpcGxlIHB1cnBvc2VzLFxuICAgKiBzdWNoIGFzIGFjY2Vzc2liaWxpdHkgYW5kIGluc3RydW1lbnRhdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBjb21wb25lbnQgdXNlcyB0aGUgbmFtZSB0b1xuICAgKiBjb25zdHJ1Y3QgQVJJQSBsYWJlbHMgZm9yIHRoZSByZXBlYXRlciBpdGVtIGNvbnRyb2xzXG4gICAqIHRvIFtzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSBvbiBhbiBpbmxpbmUgZm9ybVxuICAgKiB3aXRoaW4gdGhlIHJlcGVhdGVyLiBUaGlzIHByb3BlcnR5IGFjY2VwdHNcbiAgICogW2EgYFNreUlubGluZUZvcm1Db25maWdgIG9iamVjdF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2lubGluZS1mb3JtI3NreWlubGluZWZvcm1jb25maWctcHJvcGVydGllcykuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW5saW5lRm9ybUNvbmZpZzogU2t5SW5saW5lRm9ybUNvbmZpZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIFthbiBBbmd1bGFyIGBUZW1wbGF0ZVJlZmBdKGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29yZS9UZW1wbGF0ZVJlZikgdG8gdXNlXG4gICAqIGFzIGEgdGVtcGxhdGUgdG8gaW5zdGFudGlhdGUgYW4gaW5saW5lIGZvcm0gd2l0aGluIHRoZSByZXBlYXRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmxpbmVGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyBleHBhbmRlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc0V4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy51cGRhdGVGb3JFeHBhbmRlZCh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRXhwYW5kZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlcGVhdGVyIGl0ZW0ncyBjaGVja2JveCBpcyBzZWxlY3RlZC5cbiAgICogV2hlbiB1c2VycyBzZWxlY3QgdGhlIHJlcGVhdGVyIGl0ZW0sIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb24geW91ciBtb2RlbCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc1NlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9pc1NlbGVjdGVkID0gdmFsdWU7XG4gICAgICB0aGlzLmlzU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLl9pc1NlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2VsZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqIFRoZSByZXBlYXRlciBjb21wb25lbnQncyBgcmVvcmRlcmFibGVgIHByb3BlcnR5IG11c3QgYWxzbyBiZSBzZXQgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJlb3JkZXJhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBjaGVja2JveCBpbiB0aGUgbGVmdCBvZiB0aGUgcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gaW5saW5lIGZvcm0gd2l0aGluIHRoZSByZXBlYXRlci5cbiAgICogVXNlcnMgY2FuIHRvZ2dsZSBiZXR3ZWVuIGRpc3BsYXlpbmcgYW5kIGhpZGluZyB0aGUgaW5saW5lIGZvcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0lubGluZUZvcm0gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIG9iamVjdCB0aGF0IHRoZSByZXBlYXRlciBjb21wb25lbnQgcmV0dXJucyBmb3IgdGhpcyByZXBlYXRlciBpdGVtXG4gICAqIHdoZW4gdGhlIGBvcmRlckNoYW5nZWAgZXZlbnQgZmlyZXMuIFRoaXMgaXMgcmVxdWlyZWRcbiAgICogaWYgeW91IHNldCB0aGUgYHJlb3JkZXJhYmxlYCBwcm9wZXJ0eSB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFnOiBhbnk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY29sbGFwc2UgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNvbGxhcHNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGV4cGFuZCB0aGUgcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByZXBlYXRlciBpbmNsdWRlcyBhbiBpbmxpbmUgZm9ybSBhbmQgdXNlcnMgY2xvc2UgaXQuIFRoaXMgZXZlbnQgZW1pdHNcbiAgICogW2EgYFNreUlubGluZUZvcm1DbG9zZUFyZ3NgIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9pbmxpbmUtZm9ybSNza3lpbmxpbmVmb3JtY2xvc2VhcmdzLXByb3BlcnRpZXMpLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbmxpbmVGb3JtQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUlubGluZUZvcm1DbG9zZUFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IG9yIGNsZWFyIHRoZSBjaGVja2JveCBmb3IgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGlzU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChTa3lSZXBlYXRlckl0ZW1Db250ZXh0TWVudUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBjb250ZXh0TWVudTogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgY29udGVudElkID0gYHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQtJHsrK25leHRDb250ZW50SWR9YDtcblxuICBwdWJsaWMgaGFzSXRlbUNvbnRlbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwdWJsaWMgc2V0IGlzQ29sbGFwc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNpYmxlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5faXNDb2xsYXBzaWJsZSA9IHZhbHVlO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9yRXhwYW5kZWQodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ29sbGFwc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQ29sbGFwc2libGU7XG4gIH1cblxuICBwdWJsaWMga2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZW9yZGVyQnV0dG9uTGFiZWw6IHN0cmluZztcblxuICBwdWJsaWMgcmVvcmRlclN0YXRlOiBzdHJpbmc7XG5cbiAgcHVibGljIHNsaWRlRGlyZWN0aW9uOiBzdHJpbmc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCByZXBlYXRlckdyb3VwQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NreS1yZXBlYXRlci1pdGVtLWdyb3VwLScgKyB0aGlzLnJlcGVhdGVyU2VydmljZS5yZXBlYXRlckdyb3VwSWQ7XG4gIH1cblxuICBAVmlld0NoaWxkKCdncmFiSGFuZGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgZ3JhYkhhbmRsZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdpdGVtQ29udGVudFJlZicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGl0ZW1Db250ZW50UmVmOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1IZWFkZXJSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpdGVtSGVhZGVyUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1SZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpdGVtUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudClcbiAgcHJpdmF0ZSByZXBlYXRlckl0ZW1Db250ZW50Q29tcG9uZW50czogUXVlcnlMaXN0PFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZW9yZGVyQ2FuY2VsVGV4dDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVvcmRlckN1cnJlbnRJbmRleDogbnVtYmVyO1xuXG4gIHByaXZhdGUgcmVvcmRlckZpbmlzaFRleHQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlb3JkZXJJbnN0cnVjdGlvbnM6IHN0cmluZztcblxuICBwcml2YXRlIHJlb3JkZXJNb3ZlZFRleHQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlb3JkZXJTdGF0ZURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZW9yZGVyU3RlcHM6IG51bWJlcjtcblxuICBwcml2YXRlIF9pc0NvbGxhcHNpYmxlID0gdHJ1ZTtcblxuICBwcml2YXRlIF9pc0V4cGFuZGVkID0gdHJ1ZTtcblxuICBwcml2YXRlIF9pc1NlbGVjdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXBlYXRlclNlcnZpY2U6IFNreVJlcGVhdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGFkYXB0ZXJTZXJ2aWNlOiBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlc291cmNlU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNsaWRlRm9yRXhwYW5kZWQoZmFsc2UpO1xuXG4gICAgb2JzZXJ2YWJsZUZvcmtKb2luKFtcbiAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfcmVwZWF0ZXJfaXRlbV9yZW9yZGVyX2NhbmNlbCcpLFxuICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfZmluaXNoJyksXG4gICAgICB0aGlzLnJlc291cmNlU2VydmljZS5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfaW5zdHJ1Y3Rpb25zJ1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfcmVwZWF0ZXJfaXRlbV9yZW9yZGVyX29wZXJhdGlvbicpLFxuICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfbW92ZWQnKSxcbiAgICBdKS5zdWJzY3JpYmUoKHRyYW5zbGF0ZWRTdHJpbmdzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgdGhpcy5yZW9yZGVyQ2FuY2VsVGV4dCA9IHRyYW5zbGF0ZWRTdHJpbmdzWzBdO1xuICAgICAgdGhpcy5yZW9yZGVyRmluaXNoVGV4dCA9IHRyYW5zbGF0ZWRTdHJpbmdzWzFdO1xuICAgICAgdGhpcy5yZW9yZGVyU3RhdGVEZXNjcmlwdGlvbiA9IHRyYW5zbGF0ZWRTdHJpbmdzWzJdO1xuICAgICAgdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zID0gdHJhbnNsYXRlZFN0cmluZ3NbM107XG4gICAgICB0aGlzLnJlb3JkZXJNb3ZlZFRleHQgPSB0cmFuc2xhdGVkU3RyaW5nc1s0XTtcbiAgICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLnJlZ2lzdGVySXRlbSh0aGlzKTtcbiAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5hY3RpdmVJdGVtQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJc0FjdGl2ZVZhbHVlID0gdGhpcyA9PT0gaXRlbTtcbiAgICAgICAgaWYgKG5ld0lzQWN0aXZlVmFsdWUgIT09IHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gbmV3SXNBY3RpdmVWYWx1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNJdGVtQ29udGVudCA9IHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMubGVuZ3RoID4gMDtcbiAgICB0aGlzLnVwZGF0ZUV4cGFuZE9uQ29udGVudENoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGFwc2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmV4cGFuZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuaW5saW5lRm9ybUNsb3NlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5pc1NlbGVjdGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5yZXBlYXRlclNlcnZpY2UudW5yZWdpc3Rlckl0ZW0odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaGVhZGVyQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDb2xsYXBzaWJsZSkge1xuICAgICAgdGhpcy51cGRhdGVGb3JFeHBhbmRlZCghdGhpcy5pc0V4cGFuZGVkLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hldnJvbkRpcmVjdGlvbkNoYW5nZShkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRm9yRXhwYW5kZWQoZGlyZWN0aW9uID09PSAndXAnLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlcGVhdGVySXRlbUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gT25seSBhY3RpdmF0ZSBpdGVtIGlmIGNsaWNraW5nIG9uIHRoZSB0aXRsZSwgY29udGVudCwgb3IgcGFyZW50IGl0ZW0gZGl2LlxuICAgIC8vIFRoaXMgd2lsbCBhdm9pZCBhY2NpZGVudGFsIGFjdGl2YXRpb25zIHdoZW4gY2xpY2tpbmcgaW5zaWRlIGludGVyYWN0aXZlIGVsZW1lbnRzIGxpa2VcbiAgICAvLyB0aGUgZXhwYW5kL2NvbGxhcHNlIGNoZXZyb24sIGRyb3Bkb3duLCBpbmxpbmUtZGVsZXRlLCBldGMuLi5cbiAgICBpZiAoXG4gICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuaXRlbVJlZi5uYXRpdmVFbGVtZW50IHx8XG4gICAgICB0aGlzLml0ZW1Db250ZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgdGhpcy5pdGVtSGVhZGVyUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbiwgYW5pbWF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ29sbGFwc2libGUgPT09IGZhbHNlICYmIHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgU2V0dGluZyBpc0V4cGFuZGVkIHRvIGZhbHNlIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaXMgbm90IGNvbGxhcHNpYmxlXG4gICAgICAgIHdpbGwgaGF2ZSBubyBlZmZlY3QuYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lzRXhwYW5kZWQgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pc0V4cGFuZGVkID0gdmFsdWU7XG5cbiAgICAgIGlmICh0aGlzLl9pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kLmVtaXQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2UuZW1pdCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5vbkl0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5zbGlkZUZvckV4cGFuZGVkKGFuaW1hdGUpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENoYW5nZSh2YWx1ZTogU2t5Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSB2YWx1ZS5jaGVja2VkO1xuICB9XG5cbiAgcHVibGljIG9uSW5saW5lRm9ybUNsb3NlKGlubGluZUZvcm1DbG9zZUFyZ3M6IFNreUlubGluZUZvcm1DbG9zZUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLmlubGluZUZvcm1DbG9zZS5lbWl0KGlubGluZUZvcm1DbG9zZUFyZ3MpO1xuICB9XG5cbiAgcHVibGljIG1vdmVUb1RvcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLm1vdmVJdGVtVXAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpO1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZm9jdXNFbGVtZW50KGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgdGhpcy5yZXBlYXRlclNlcnZpY2UucmVnaXN0ZXJPcmRlckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG9uUmVvcmRlckhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIHRoaXMua2V5Ym9hcmRUb2dnbGVSZW9yZGVyKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJldmVydFJlb3JkZXJTdGVwcygpO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyQnV0dG9uTGFiZWwgPVxuICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJDYW5jZWxUZXh0ICsgJyAnICsgdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zO1xuICAgICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJVcCgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2UucmVnaXN0ZXJPcmRlckNoYW5nZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJEb3duKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5yZWdpc3Rlck9yZGVyQ2hhbmdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93bGVmdCc6XG4gICAgICAgIGNhc2UgJ2Fycm93cmlnaHQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblJlb3JkZXJIYW5kbGVCbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJldmVydFJlb3JkZXJTdGVwcygpO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zO1xuICAgIHRoaXMucmVvcmRlclN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgICAgICAgLy8gU3BhY2UvZW50ZXIgc2hvdWxkIG5ldmVyIGV4ZWN1dGUgdW5sZXNzIGZvY3VzZWQgb24gdGhlIHBhcmVudCBpdGVtIGVsZW1lbnQuXG4gICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5pdGVtUmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gIXRoaXMuaXNTZWxlY3RlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbSh0aGlzKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzbGlkZUZvckV4cGFuZGVkKGFuaW1hdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gdGhpcy5pc0V4cGFuZGVkID8gJ2Rvd24nIDogJ3VwJztcbiAgfVxuXG4gIHByaXZhdGUga2V5Ym9hcmRSZW9yZGVyVXAoKTogdm9pZCB7XG4gICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ID0gdGhpcy5hZGFwdGVyU2VydmljZS5tb3ZlSXRlbVVwKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMucmVvcmRlclN0ZXBzLS07XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQodGhpcy5ncmFiSGFuZGxlKTtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gYCR7dGhpcy5yZW9yZGVyTW92ZWRUZXh0fSAke1xuICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlib2FyZFJlb3JkZXJEb3duKCk6IHZvaWQge1xuICAgIHRoaXMucmVvcmRlckN1cnJlbnRJbmRleCA9IHRoaXMuYWRhcHRlclNlcnZpY2UubW92ZUl0ZW1Eb3duKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMucmVvcmRlclN0ZXBzKys7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQodGhpcy5ncmFiSGFuZGxlKTtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gYCR7dGhpcy5yZW9yZGVyTW92ZWRUZXh0fSAke1xuICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlib2FyZFRvZ2dsZVJlb3JkZXIoKTogdm9pZCB7XG4gICAgdGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkID0gIXRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZDtcbiAgICB0aGlzLnJlb3JkZXJTdGVwcyA9IDA7XG5cbiAgICBpZiAodGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkKSB7XG4gICAgICB0aGlzLnJlb3JkZXJTdGF0ZSA9IHRoaXMucmVvcmRlclN0YXRlRGVzY3JpcHRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVvcmRlclN0YXRlID0gYCR7dGhpcy5yZW9yZGVyRmluaXNoVGV4dH0gJHtcbiAgICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgICAgfSAke3RoaXMucmVvcmRlckluc3RydWN0aW9uc31gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV2ZXJ0UmVvcmRlclN0ZXBzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlb3JkZXJTdGVwcyA8IDApIHtcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UubW92ZUl0ZW1Eb3duKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgTWF0aC5hYnModGhpcy5yZW9yZGVyU3RlcHMpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZW9yZGVyU3RlcHMgPiAwKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLm1vdmVJdGVtVXAoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdGhpcy5yZW9yZGVyU3RlcHNcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLnJlZ2lzdGVyT3JkZXJDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRXhwYW5kT25Db250ZW50Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNJdGVtQ29udGVudCA9IHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMubGVuZ3RoID4gMDtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdGhpcy5pc0NvbGxhcHNpYmxlID1cbiAgICAgICAgICB0aGlzLmhhc0l0ZW1Db250ZW50ICYmIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGUgIT09ICdub25lJztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2Uub25JdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbSBza3ktcGFkZGluZy1ldmVuLWRlZmF1bHRcIlxuICByb2xlPVwib3B0aW9uXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtTmFtZVwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic2VsZWN0YWJsZSA/IGlzU2VsZWN0ZWQgOiBudWxsXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktcmVwZWF0ZXItaXRlbS1hY3RpdmUnOiBpc0FjdGl2ZSxcbiAgICAnc2t5LXJlcGVhdGVyLWl0ZW0tY29sbGFwc2libGUnOiBpc0NvbGxhcHNpYmxlLFxuICAgICdza3ktcmVwZWF0ZXItaXRlbS1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfVwiXG4gIChjbGljayk9XCJvblJlcGVhdGVySXRlbUNsaWNrKCRldmVudClcIlxuICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudClcIlxuICAjaXRlbVJlZlxuPlxuICA8ZGl2ICNpbmxpbmVEZWxldGU+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWlubGluZS1kZWxldGVcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmxpbmVGb3JtVGVtcGxhdGVcIj5cbiAgICA8c2t5LWlubGluZS1mb3JtXG4gICAgICBbY29uZmlnXT1cImlubGluZUZvcm1Db25maWdcIlxuICAgICAgW3Nob3dGb3JtXT1cInNob3dJbmxpbmVGb3JtXCJcbiAgICAgIFt0ZW1wbGF0ZV09XCJpbmxpbmVGb3JtVGVtcGxhdGVcIlxuICAgICAgKGNsb3NlKT1cIm9uSW5saW5lRm9ybUNsb3NlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJza3lSZXBlYXRlckl0ZW1MZWZ0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2t5UmVwZWF0ZXJJdGVtUmlnaHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NreS1pbmxpbmUtZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmxpbmVGb3JtVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2t5UmVwZWF0ZXJJdGVtTGVmdFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJza3lSZXBlYXRlckl0ZW1SaWdodFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NreVJlcGVhdGVySXRlbUxlZnQ+XG4gIDxkaXYgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1sZWZ0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJhYmxlXCI+XG4gICAgICA8c3BhblxuICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgICAgICBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIlxuICAgICAgICBbaWRdPVwiY29udGVudElkICsgJy1yZW9yZGVyLXN0YXRlJ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJlb3JkZXJTdGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgW2lkXT1cImNvbnRlbnRJZCArICctcmVvcmRlci1pbnN0cnVjdGlvbnMnXCJcbiAgICAgICAgPnt7IHJlb3JkZXJCdXR0b25MYWJlbCB9fTwvc3BhblxuICAgICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LXRpbGUtdG9vbHMtY29udHJvbCBza3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvbnRlbnRJZCArICctcmVvcmRlci1pbnN0cnVjdGlvbnMnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICBpdGVtTmFtZVxuICAgICAgICAgICAgPyAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXM6IGl0ZW1OYW1lKVxuICAgICAgICAgICAgOiAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9sYWJlbF9kZWZhdWx0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgKGJsdXIpPVwib25SZW9yZGVySGFuZGxlQmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25SZW9yZGVySGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgI2dyYWJIYW5kbGVcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJhcnJvd3MtdlwiPjwvc2t5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c2t5LWNoZWNrYm94XG4gICAgICAqbmdJZj1cInNlbGVjdGFibGVcIlxuICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jaGVja2JveFwiXG4gICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCJcbiAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgaXRlbU5hbWVcbiAgICAgICAgICA/ICgnc2t5dXhfcmVwZWF0ZXJfaXRlbV9jaGVja2JveF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXM6IGl0ZW1OYW1lKVxuICAgICAgICAgIDogKCdza3l1eF9yZXBlYXRlcl9pdGVtX2NoZWNrYm94X2xhYmVsX2RlZmF1bHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9za3ktY2hlY2tib3g+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jb250ZXh0LW1lbnVcIlxuICAgICAgW2hpZGRlbl09XCJjb250ZXh0TWVudUVsLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICAjY29udGV4dE1lbnVFbFxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1yZXBlYXRlci1pdGVtLWNvbnRleHQtbWVudVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NreVJlcGVhdGVySXRlbVJpZ2h0PlxuICA8ZGl2IGNsYXNzPVwic2t5LXJlcGVhdGVyLWl0ZW0tcmlnaHRcIiAjaXRlbUhlYWRlclJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLWhlYWRlclwiXG4gICAgICBbaGlkZGVuXT1cInRpdGxlUmVmLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICAoY2xpY2spPVwiaGVhZGVyQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLXRpdGxlIHNreS1lbXBoYXNpemVkXCIgI3RpdGxlUmVmPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktcmVwZWF0ZXItaXRlbS10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInJlb3JkZXJhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tbGluayBza3ktcmVwZWF0ZXItaXRlbS1yZW9yZGVyLXRvcFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgIGl0ZW1OYW1lXG4gICAgICAgICAgICA/ICgnc2t5dXhfcmVwZWF0ZXJfaXRlbV9yZW9yZGVyX3RvcF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXM6IGl0ZW1OYW1lKVxuICAgICAgICAgICAgOiAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl90b3BfbGFiZWxfZGVmYXVsdCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCJtb3ZlVG9Ub3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktaWNvbiBpY29uPVwiYXJyb3ctY2lyY2xlLXVwXCI+PC9za3ktaWNvbj5cbiAgICAgICAge3sgJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl90b3AnIHwgc2t5TGliUmVzb3VyY2VzIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0NvbGxhcHNpYmxlXCIgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jaGV2cm9uXCI+XG4gICAgICAgIDxza3ktY2hldnJvblxuICAgICAgICAgIFthcmlhQ29udHJvbHNdPVwiY29udGVudElkXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgaXRlbU5hbWVcbiAgICAgICAgICAgICAgPyAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fZXhwYW5kJyB8IHNreUxpYlJlc291cmNlczogaXRlbU5hbWUpXG4gICAgICAgICAgICAgIDogKCdza3l1eF9yZXBlYXRlcl9pdGVtX2V4cGFuZF9kZWZhdWx0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkaXJlY3Rpb25dPVwiaXNFeHBhbmRlZCA/ICd1cCcgOiAnZG93bidcIlxuICAgICAgICAgIChkaXJlY3Rpb25DaGFuZ2UpPVwiY2hldnJvbkRpcmVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3NreS1jaGV2cm9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIFVzZWQgZm9yIHdoZW4gdGhlIGNoZXZyb24gaXMgaGlkZGVuIHRvIGVuc3VyZSB0aGF0IHRoZSByaWdodCBzaWRlIGlzIHRoZSBzYW1lIGhlaWdodCBhcyB0aGUgbGVmdC4tLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaXNDb2xsYXBzaWJsZSAmJiAhY29udGV4dE1lbnVcIlxuICAgICAgICBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLWNoZXZyb24tcGxhY2Vob2xkZXJcIlxuICAgICAgPjwvZGl2PlxuICAgICAgPCEtLSBVc2VkIHRvIGVuc3VyZSB0aGF0IHRoZSByaWdodCBzaWRlIGlzIHRoZSBzYW1lIGhlaWdodCBhcyB0aGUgbGVmdC4tLT5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0TWVudVwiXG4gICAgICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyLWl0ZW0tY2hldnJvbi1wbGFjZWhvbGRlci13aXRoLWNvbnRleHRcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudFwiXG4gICAgICBbaWRdPVwiY29udGVudElkXCJcbiAgICAgIFtAc2t5QW5pbWF0aW9uU2xpZGVdPVwic2xpZGVEaXJlY3Rpb25cIlxuICAgICAgI2l0ZW1Db250ZW50UmVmXG4gICAgPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU1yRCxPQUFPLEVBQWMsT0FBTyxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQUV4RCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFFdEI7O0dB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QkFEaEIsS0FBSztnQkFRQyxjQUFjO3NCQURwQixLQUFLO2dCQVNDLEdBQUc7c0JBRFQsS0FBSztnQkFPQyxRQUFRO3NCQURkLE1BQU07Z0JBT0EsTUFBTTtzQkFEWixNQUFNO2dCQVFBLGVBQWU7c0JBRHJCLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsbUNBQW1DLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXFDbkUsa0JBQWtCO3NCQURyQixXQUFXO3VCQUFDLE9BQU87Z0JBTVosVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlyQyxjQUFjO3NCQURyQixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJekMsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl4QyxPQUFPO3NCQURkLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJbEMsNkJBQTZCO3NCQURwQyxlQUFlO3VCQUFDLCtCQUErQjtnQkF1RnpDLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBza3lBbmltYXRpb25TbGlkZSB9IGZyb20gJ0Bza3l1eC9hbmltYXRpb25zJztcbmltcG9ydCB7IFNreUNoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQge1xuICBTa3lJbmxpbmVGb3JtQ2xvc2VBcmdzLFxuICBTa3lJbmxpbmVGb3JtQ29uZmlnLFxufSBmcm9tICdAc2t5dXgvaW5saW5lLWZvcm0nO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vcmVwZWF0ZXItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tcm9sZXMudHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLnNlcnZpY2UnO1xuXG5sZXQgbmV4dENvbnRlbnRJZCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbmRpdmlkdWFsIHJlcGVhdGVyIGl0ZW0uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yZXBlYXRlci1pdGVtJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwZWF0ZXItaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtza3lBbmltYXRpb25TbGlkZV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlcGVhdGVySXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBNYWtlIHRoZSBmaXJzdCwgbm9uLWRpc2FibGVkIGl0ZW0gdGFiLWZvY3VzYWJsZS5cbiAgICogLSBEaXNhYmxlZCBpdGVtcyBzaG91bGQgbm90IGJlIGZvY3VzYWJsZSBwZXIgW1czQ10oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjEvI2tiZF9kaXNhYmxlZF9jb250cm9scykuXG4gICAqIC0gT25lIGl0ZW0gcGVyIGxpc3QvZ3JpZC9saXN0Ym94IHNob3VsZCBiZSB0YWIgZm9jdXNhYmxlIHBlciBbVzNDXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZ3JpZCkuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoKVxuICBwdWJsaWMgZ2V0IHRhYmluZGV4KCk6IDAgfCAtMSB7XG4gICAgcmV0dXJuIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZWQpWzBdID09PVxuICAgICAgdGhpc1xuICAgICAgPyAwXG4gICAgICA6IC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZXhjbHVkZSBhbiBpdGVtIHdoZW4gY3ljbGluZyB0aHJvdWdoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLl9pc0Rpc2FibGVkICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5tYXRjaGVzKCc6Zm9jdXMtd2l0aGluJykpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIHJlcGVhdGVyIGl0ZW0gdGhhdCBpcyBhdmFpbGFibGUgZm9yIG11bHRpcGxlIHB1cnBvc2VzLFxuICAgKiBzdWNoIGFzIGFjY2Vzc2liaWxpdHkgYW5kIGluc3RydW1lbnRhdGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBjb21wb25lbnQgdXNlcyB0aGUgbmFtZSB0b1xuICAgKiBjb25zdHJ1Y3QgQVJJQSBsYWJlbHMgZm9yIHRoZSByZXBlYXRlciBpdGVtIGNvbnRyb2xzXG4gICAqIHRvIFtzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaXRlbU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSBvbiBhbiBpbmxpbmUgZm9ybVxuICAgKiB3aXRoaW4gdGhlIHJlcGVhdGVyLiBUaGlzIHByb3BlcnR5IGFjY2VwdHNcbiAgICogW2EgYFNreUlubGluZUZvcm1Db25maWdgIG9iamVjdF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2lubGluZS1mb3JtI3NreWlubGluZWZvcm1jb25maWctcHJvcGVydGllcykuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW5saW5lRm9ybUNvbmZpZzogU2t5SW5saW5lRm9ybUNvbmZpZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIFthbiBBbmd1bGFyIGBUZW1wbGF0ZVJlZmBdKGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29yZS9UZW1wbGF0ZVJlZikgdG8gdXNlXG4gICAqIGFzIGEgdGVtcGxhdGUgdG8gaW5zdGFudGlhdGUgYW4gaW5saW5lIGZvcm0gd2l0aGluIHRoZSByZXBlYXRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbmxpbmVGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVwZWF0ZXIgaXRlbSBpcyBleHBhbmRlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc0V4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy51cGRhdGVGb3JFeHBhbmRlZCh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRXhwYW5kZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlcGVhdGVyIGl0ZW0ncyBjaGVja2JveCBpcyBzZWxlY3RlZC5cbiAgICogV2hlbiB1c2VycyBzZWxlY3QgdGhlIHJlcGVhdGVyIGl0ZW0sIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb24geW91ciBtb2RlbCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc1NlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHZhbHVlICE9PSB0aGlzLl9pc1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9pc1NlbGVjdGVkID0gdmFsdWU7XG4gICAgICB0aGlzLmlzU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLl9pc1NlbGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2VsZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqIFRoZSByZXBlYXRlciBjb21wb25lbnQncyBgcmVvcmRlcmFibGVgIHByb3BlcnR5IG11c3QgYWxzbyBiZSBzZXQgdG8gYHRydWVgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJlb3JkZXJhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBjaGVja2JveCBpbiB0aGUgbGVmdCBvZiB0aGUgcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gaW5saW5lIGZvcm0gd2l0aGluIHRoZSByZXBlYXRlci5cbiAgICogVXNlcnMgY2FuIHRvZ2dsZSBiZXR3ZWVuIGRpc3BsYXlpbmcgYW5kIGhpZGluZyB0aGUgaW5saW5lIGZvcm0uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0lubGluZUZvcm0gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIG9iamVjdCB0aGF0IHRoZSByZXBlYXRlciBjb21wb25lbnQgcmV0dXJucyBmb3IgdGhpcyByZXBlYXRlciBpdGVtXG4gICAqIHdoZW4gdGhlIGBvcmRlckNoYW5nZWAgZXZlbnQgZmlyZXMuIFRoaXMgaXMgcmVxdWlyZWRcbiAgICogaWYgeW91IHNldCB0aGUgYHJlb3JkZXJhYmxlYCBwcm9wZXJ0eSB0byBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFnOiBhbnk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY29sbGFwc2UgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNvbGxhcHNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGV4cGFuZCB0aGUgcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZXhwYW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSByZXBlYXRlciBpbmNsdWRlcyBhbiBpbmxpbmUgZm9ybSBhbmQgdXNlcnMgY2xvc2UgaXQuIFRoaXMgZXZlbnQgZW1pdHNcbiAgICogW2EgYFNreUlubGluZUZvcm1DbG9zZUFyZ3NgIHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9pbmxpbmUtZm9ybSNza3lpbmxpbmVmb3JtY2xvc2VhcmdzLXByb3BlcnRpZXMpLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbmxpbmVGb3JtQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUlubGluZUZvcm1DbG9zZUFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IG9yIGNsZWFyIHRoZSBjaGVja2JveCBmb3IgdGhlIHJlcGVhdGVyIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGlzU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChTa3lSZXBlYXRlckl0ZW1Db250ZXh0TWVudUNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHB1YmxpYyBjb250ZXh0TWVudTogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgY29udGVudElkID0gYHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQtJHsrK25leHRDb250ZW50SWR9YDtcblxuICBwdWJsaWMgaGFzSXRlbUNvbnRlbnQgPSBmYWxzZTtcblxuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwdWJsaWMgc2V0IGlzQ29sbGFwc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0NvbGxhcHNpYmxlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5faXNDb2xsYXBzaWJsZSA9IHZhbHVlO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9yRXhwYW5kZWQodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ29sbGFwc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQ29sbGFwc2libGU7XG4gIH1cblxuICBwdWJsaWMgaXRlbVJvbGUkOiBPYnNlcnZhYmxlPFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZT47XG5cbiAgcHVibGljIGtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVvcmRlckJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlb3JkZXJTdGF0ZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzbGlkZURpcmVjdGlvbjogc3RyaW5nO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgcmVwZWF0ZXJHcm91cENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdza3ktcmVwZWF0ZXItaXRlbS1ncm91cC0nICsgdGhpcy5yZXBlYXRlclNlcnZpY2UucmVwZWF0ZXJHcm91cElkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnZ3JhYkhhbmRsZScsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGdyYWJIYW5kbGU6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnaXRlbUNvbnRlbnRSZWYnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpdGVtQ29udGVudFJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdpdGVtSGVhZGVyUmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaXRlbUhlYWRlclJlZjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdpdGVtUmVmJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaXRlbVJlZjogRWxlbWVudFJlZjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQpXG4gIHByaXZhdGUgcmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxTa3lSZXBlYXRlckl0ZW1Db250ZW50Q29tcG9uZW50PjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVvcmRlckNhbmNlbFRleHQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlb3JkZXJDdXJyZW50SW5kZXg6IG51bWJlcjtcblxuICBwcml2YXRlIHJlb3JkZXJGaW5pc2hUZXh0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZW9yZGVySW5zdHJ1Y3Rpb25zOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZW9yZGVyTW92ZWRUZXh0OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZW9yZGVyU3RhdGVEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVvcmRlclN0ZXBzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfaXNDb2xsYXBzaWJsZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2lzRXhwYW5kZWQgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2lzU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlcGVhdGVyU2VydmljZTogU2t5UmVwZWF0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVzb3VyY2VTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2xpZGVGb3JFeHBhbmRlZChmYWxzZSk7XG5cbiAgICBvYnNlcnZhYmxlRm9ya0pvaW4oW1xuICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfY2FuY2VsJyksXG4gICAgICB0aGlzLnJlc291cmNlU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9maW5pc2gnKSxcbiAgICAgIHRoaXMucmVzb3VyY2VTZXJ2aWNlLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9pbnN0cnVjdGlvbnMnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZVNlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfb3BlcmF0aW9uJyksXG4gICAgICB0aGlzLnJlc291cmNlU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9tb3ZlZCcpLFxuICAgIF0pLnN1YnNjcmliZSgodHJhbnNsYXRlZFN0cmluZ3M6IHN0cmluZ1tdKSA9PiB7XG4gICAgICB0aGlzLnJlb3JkZXJDYW5jZWxUZXh0ID0gdHJhbnNsYXRlZFN0cmluZ3NbMF07XG4gICAgICB0aGlzLnJlb3JkZXJGaW5pc2hUZXh0ID0gdHJhbnNsYXRlZFN0cmluZ3NbMV07XG4gICAgICB0aGlzLnJlb3JkZXJTdGF0ZURlc2NyaXB0aW9uID0gdHJhbnNsYXRlZFN0cmluZ3NbMl07XG4gICAgICB0aGlzLnJlb3JkZXJJbnN0cnVjdGlvbnMgPSB0cmFuc2xhdGVkU3RyaW5nc1szXTtcbiAgICAgIHRoaXMucmVvcmRlck1vdmVkVGV4dCA9IHRyYW5zbGF0ZWRTdHJpbmdzWzRdO1xuICAgICAgdGhpcy5yZW9yZGVyQnV0dG9uTGFiZWwgPSB0aGlzLnJlb3JkZXJJbnN0cnVjdGlvbnM7XG4gICAgfSk7XG5cbiAgICB0aGlzLml0ZW1Sb2xlJCA9IHRoaXMucmVwZWF0ZXJTZXJ2aWNlLml0ZW1Sb2xlLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLnJlZ2lzdGVySXRlbSh0aGlzKTtcbiAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5hY3RpdmVJdGVtQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBjb25zdCBuZXdJc0FjdGl2ZVZhbHVlID0gdGhpcyA9PT0gaXRlbTtcbiAgICAgICAgaWYgKG5ld0lzQWN0aXZlVmFsdWUgIT09IHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gbmV3SXNBY3RpdmVWYWx1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNJdGVtQ29udGVudCA9IHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMubGVuZ3RoID4gMDtcbiAgICB0aGlzLnVwZGF0ZUV4cGFuZE9uQ29udGVudENoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGFwc2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmV4cGFuZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuaW5saW5lRm9ybUNsb3NlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5pc1NlbGVjdGVkQ2hhbmdlLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5yZXBlYXRlclNlcnZpY2UudW5yZWdpc3Rlckl0ZW0odGhpcyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoXG4gICAgICBbJyAnLCAnRW50ZXInLCAnSG9tZScsICdFbmQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcygkZXZlbnQua2V5KVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICAoJGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkubWF0Y2hlcyhcbiAgICAgICAgICAnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIG9wdGlvbiwgW2NvbnRlbnRlZGl0YWJsZV0sIFtjb250ZW50ZWRpdGFibGVdIConXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGxldCBhY3RpdmF0ZUl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoJGV2ZW50LmtleSkpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZCA9ICF0aGlzLmlzU2VsZWN0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICAgIGFjdGl2YXRlSXRlbSA9IHRoaXM7XG4gICAgICB9XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKFsnSG9tZScsICdFbmQnXS5pbmNsdWRlcygkZXZlbnQua2V5KSkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucmVwZWF0ZXJTZXJ2aWNlLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCRldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgICAgIGFjdGl2YXRlSXRlbSA9IGl0ZW1zLnNoaWZ0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWN0aXZhdGVJdGVtID0gaXRlbXMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoWydBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKCRldmVudC5rZXkpKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMucmVwZWF0ZXJTZXJ2aWNlLml0ZW1zLmZpbmRJbmRleChcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbSA9PT0gdGhpc1xuICAgICAgICApO1xuICAgICAgICBsZXQgc2xpY2VGcm9tOiBudW1iZXI7XG4gICAgICAgIGxldCBzbGljZVRvOiBudW1iZXI7XG4gICAgICAgIGlmICgkZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICBzbGljZUZyb20gPSAwO1xuICAgICAgICAgIHNsaWNlVG8gPSBjdXJyZW50SW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpY2VGcm9tID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgICAgICBzbGljZVRvID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5yZXBlYXRlclNlcnZpY2UuaXRlbXNcbiAgICAgICAgICAuc2xpY2Uoc2xpY2VGcm9tLCBzbGljZVRvKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmRpc2FibGVkKTtcbiAgICAgICAgYWN0aXZhdGVJdGVtID0gJGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnID8gaXRlbXMucG9wKCkgOiBpdGVtcy5zaGlmdCgpO1xuICAgICAgICBpZiAoIWFjdGl2YXRlSXRlbSkge1xuICAgICAgICAgIC8vIFdyYXAgYXJvdW5kLlxuICAgICAgICAgIGlmICgkZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgc2xpY2VGcm9tID0gMDtcbiAgICAgICAgICAgIHNsaWNlVG8gPSBjdXJyZW50SW5kZXg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNsaWNlRnJvbSA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICAgICAgICBzbGljZVRvID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMucmVwZWF0ZXJTZXJ2aWNlLml0ZW1zXG4gICAgICAgICAgICAuc2xpY2Uoc2xpY2VGcm9tLCBzbGljZVRvKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZWQpO1xuICAgICAgICAgIGFjdGl2YXRlSXRlbSA9ICRldmVudC5rZXkgPT09ICdBcnJvd1VwJyA/IGl0ZW1zLnBvcCgpIDogaXRlbXMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChhY3RpdmF0ZUl0ZW0gJiYgIWFjdGl2YXRlSXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW0oYWN0aXZhdGVJdGVtKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICEoYWN0aXZhdGVJdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50KS5tYXRjaGVzKFxuICAgICAgICAgICAgJzpmb2N1cy13aXRoaW4nXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICBhY3RpdmF0ZUl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGVhZGVyQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNDb2xsYXBzaWJsZSkge1xuICAgICAgdGhpcy51cGRhdGVGb3JFeHBhbmRlZCghdGhpcy5pc0V4cGFuZGVkLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hldnJvbkRpcmVjdGlvbkNoYW5nZShkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRm9yRXhwYW5kZWQoZGlyZWN0aW9uID09PSAndXAnLCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlcGVhdGVySXRlbUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gT25seSBhY3RpdmF0ZSBpdGVtIGlmIGNsaWNraW5nIG9uIHRoZSB0aXRsZSwgY29udGVudCwgb3IgcGFyZW50IGl0ZW0gZGl2LlxuICAgIC8vIFRoaXMgd2lsbCBhdm9pZCBhY2NpZGVudGFsIGFjdGl2YXRpb25zIHdoZW4gY2xpY2tpbmcgaW5zaWRlIGludGVyYWN0aXZlIGVsZW1lbnRzIGxpa2VcbiAgICAvLyB0aGUgZXhwYW5kL2NvbGxhcHNlIGNoZXZyb24sIGRyb3Bkb3duLCBpbmxpbmUtZGVsZXRlLCBldGMuLi5cbiAgICBpZiAoXG4gICAgICBldmVudC50YXJnZXQgPT09IHRoaXMuaXRlbVJlZi5uYXRpdmVFbGVtZW50IHx8XG4gICAgICB0aGlzLml0ZW1Db250ZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSB8fFxuICAgICAgdGhpcy5pdGVtSGVhZGVyUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JFeHBhbmRlZCh2YWx1ZTogYm9vbGVhbiwgYW5pbWF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQ29sbGFwc2libGUgPT09IGZhbHNlICYmIHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgU2V0dGluZyBpc0V4cGFuZGVkIHRvIGZhbHNlIHdoZW4gdGhlIHJlcGVhdGVyIGl0ZW0gaXMgbm90IGNvbGxhcHNpYmxlXG4gICAgICAgIHdpbGwgaGF2ZSBubyBlZmZlY3QuYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lzRXhwYW5kZWQgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pc0V4cGFuZGVkID0gdmFsdWU7XG5cbiAgICAgIGlmICh0aGlzLl9pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kLmVtaXQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2UuZW1pdCgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5vbkl0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlKHRoaXMpO1xuICAgICAgdGhpcy5zbGlkZUZvckV4cGFuZGVkKGFuaW1hdGUpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENoYW5nZSh2YWx1ZTogU2t5Q2hlY2tib3hDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzU2VsZWN0ZWQgPSB2YWx1ZS5jaGVja2VkO1xuICB9XG5cbiAgcHVibGljIG9uSW5saW5lRm9ybUNsb3NlKGlubGluZUZvcm1DbG9zZUFyZ3M6IFNreUlubGluZUZvcm1DbG9zZUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLmlubGluZUZvcm1DbG9zZS5lbWl0KGlubGluZUZvcm1DbG9zZUFyZ3MpO1xuICB9XG5cbiAgcHVibGljIG1vdmVUb1RvcChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLm1vdmVJdGVtVXAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpO1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZm9jdXNFbGVtZW50KGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgdGhpcy5yZXBlYXRlclNlcnZpY2UucmVnaXN0ZXJPcmRlckNoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG9uUmVvcmRlckhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGV2ZW50LmtleSkge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgICAgIHRoaXMua2V5Ym9hcmRUb2dnbGVSZW9yZGVyKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJldmVydFJlb3JkZXJTdGVwcygpO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyQnV0dG9uTGFiZWwgPVxuICAgICAgICAgICAgICB0aGlzLnJlb3JkZXJDYW5jZWxUZXh0ICsgJyAnICsgdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zO1xuICAgICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJVcCgpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2UucmVnaXN0ZXJPcmRlckNoYW5nZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd2Rvd24nOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZFJlb3JkZXJEb3duKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdGVyU2VydmljZS5yZWdpc3Rlck9yZGVyQ2hhbmdlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93bGVmdCc6XG4gICAgICAgIGNhc2UgJ2Fycm93cmlnaHQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblJlb3JkZXJIYW5kbGVCbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJldmVydFJlb3JkZXJTdGVwcygpO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gdGhpcy5yZW9yZGVySW5zdHJ1Y3Rpb25zO1xuICAgIHRoaXMucmVvcmRlclN0YXRlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzbGlkZUZvckV4cGFuZGVkKGFuaW1hdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNsaWRlRGlyZWN0aW9uID0gdGhpcy5pc0V4cGFuZGVkID8gJ2Rvd24nIDogJ3VwJztcbiAgfVxuXG4gIHByaXZhdGUga2V5Ym9hcmRSZW9yZGVyVXAoKTogdm9pZCB7XG4gICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ID0gdGhpcy5hZGFwdGVyU2VydmljZS5tb3ZlSXRlbVVwKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMucmVvcmRlclN0ZXBzLS07XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQodGhpcy5ncmFiSGFuZGxlKTtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gYCR7dGhpcy5yZW9yZGVyTW92ZWRUZXh0fSAke1xuICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlib2FyZFJlb3JkZXJEb3duKCk6IHZvaWQge1xuICAgIHRoaXMucmVvcmRlckN1cnJlbnRJbmRleCA9IHRoaXMuYWRhcHRlclNlcnZpY2UubW92ZUl0ZW1Eb3duKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICAgIHRoaXMucmVvcmRlclN0ZXBzKys7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5mb2N1c0VsZW1lbnQodGhpcy5ncmFiSGFuZGxlKTtcbiAgICB0aGlzLmtleWJvYXJkUmVvcmRlcmluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMucmVvcmRlckJ1dHRvbkxhYmVsID0gYCR7dGhpcy5yZW9yZGVyTW92ZWRUZXh0fSAke1xuICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgIH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBrZXlib2FyZFRvZ2dsZVJlb3JkZXIoKTogdm9pZCB7XG4gICAgdGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkID0gIXRoaXMua2V5Ym9hcmRSZW9yZGVyaW5nRW5hYmxlZDtcbiAgICB0aGlzLnJlb3JkZXJTdGVwcyA9IDA7XG5cbiAgICBpZiAodGhpcy5rZXlib2FyZFJlb3JkZXJpbmdFbmFibGVkKSB7XG4gICAgICB0aGlzLnJlb3JkZXJTdGF0ZSA9IHRoaXMucmVvcmRlclN0YXRlRGVzY3JpcHRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVvcmRlclN0YXRlID0gYCR7dGhpcy5yZW9yZGVyRmluaXNoVGV4dH0gJHtcbiAgICAgICAgdGhpcy5yZW9yZGVyQ3VycmVudEluZGV4ICsgMVxuICAgICAgfSAke3RoaXMucmVvcmRlckluc3RydWN0aW9uc31gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV2ZXJ0UmVvcmRlclN0ZXBzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlb3JkZXJTdGVwcyA8IDApIHtcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UubW92ZUl0ZW1Eb3duKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgTWF0aC5hYnModGhpcy5yZW9yZGVyU3RlcHMpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZW9yZGVyU3RlcHMgPiAwKSB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLm1vdmVJdGVtVXAoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgdGhpcy5yZW9yZGVyU3RlcHNcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLnJlZ2lzdGVyT3JkZXJDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRXhwYW5kT25Db250ZW50Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5oYXNJdGVtQ29udGVudCA9IHRoaXMucmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudHMubGVuZ3RoID4gMDtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgdGhpcy5pc0NvbGxhcHNpYmxlID1cbiAgICAgICAgICB0aGlzLmhhc0l0ZW1Db250ZW50ICYmIHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGUgIT09ICdub25lJztcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMucmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgdGhpcy5yZXBlYXRlclNlcnZpY2Uub25JdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZSh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbSBza3ktcGFkZGluZy1ldmVuLWRlZmF1bHRcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW1OYW1lXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzZWxlY3RhYmxlID8gaXNTZWxlY3RlZCA6IHVuZGVmaW5lZFwiXG4gIFthdHRyLnJvbGVdPVwiKGl0ZW1Sb2xlJCB8IGFzeW5jKS5pdGVtXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktcmVwZWF0ZXItaXRlbS1hY3RpdmUnOiBpc0FjdGl2ZSxcbiAgICAnc2t5LXJlcGVhdGVyLWl0ZW0tY29sbGFwc2libGUnOiBpc0NvbGxhcHNpYmxlLFxuICAgICdza3ktcmVwZWF0ZXItaXRlbS1zZWxlY3RlZCc6IGlzU2VsZWN0ZWRcbiAgfVwiXG4gIChjbGljayk9XCJvblJlcGVhdGVySXRlbUNsaWNrKCRldmVudClcIlxuICAjaXRlbVJlZlxuPlxuICA8ZGl2ICNpbmxpbmVEZWxldGU+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWlubGluZS1kZWxldGVcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmxpbmVGb3JtVGVtcGxhdGVcIj5cbiAgICA8c2t5LWlubGluZS1mb3JtXG4gICAgICBbY29uZmlnXT1cImlubGluZUZvcm1Db25maWdcIlxuICAgICAgW3Nob3dGb3JtXT1cInNob3dJbmxpbmVGb3JtXCJcbiAgICAgIFt0ZW1wbGF0ZV09XCJpbmxpbmVGb3JtVGVtcGxhdGVcIlxuICAgICAgKGNsb3NlKT1cIm9uSW5saW5lRm9ybUNsb3NlKCRldmVudClcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJza3lSZXBlYXRlckl0ZW1MZWZ0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2t5UmVwZWF0ZXJJdGVtUmlnaHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NreS1pbmxpbmUtZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmxpbmVGb3JtVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2t5UmVwZWF0ZXJJdGVtTGVmdFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJza3lSZXBlYXRlckl0ZW1SaWdodFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NreVJlcGVhdGVySXRlbUxlZnQ+XG4gIDxkaXYgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1sZWZ0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJhYmxlXCI+XG4gICAgICA8c3BhblxuICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgICAgICBjbGFzcz1cInNreS1zY3JlZW4tcmVhZGVyLW9ubHlcIlxuICAgICAgICBbaWRdPVwiY29udGVudElkICsgJy1yZW9yZGVyLXN0YXRlJ1wiXG4gICAgICA+XG4gICAgICAgIHt7IHJlb3JkZXJTdGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCJcbiAgICAgICAgW2lkXT1cImNvbnRlbnRJZCArICctcmVvcmRlci1pbnN0cnVjdGlvbnMnXCJcbiAgICAgICAgPnt7IHJlb3JkZXJCdXR0b25MYWJlbCB9fTwvc3BhblxuICAgICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LXRpbGUtdG9vbHMtY29udHJvbCBza3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImNvbnRlbnRJZCArICctcmVvcmRlci1pbnN0cnVjdGlvbnMnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICBpdGVtTmFtZVxuICAgICAgICAgICAgPyAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXM6IGl0ZW1OYW1lKVxuICAgICAgICAgICAgOiAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fcmVvcmRlcl9sYWJlbF9kZWZhdWx0JyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgKGJsdXIpPVwib25SZW9yZGVySGFuZGxlQmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25SZW9yZGVySGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgI2dyYWJIYW5kbGVcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJhcnJvd3MtdlwiPjwvc2t5LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8c2t5LWNoZWNrYm94XG4gICAgICAqbmdJZj1cInNlbGVjdGFibGVcIlxuICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jaGVja2JveFwiXG4gICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkXCJcbiAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgaXRlbU5hbWVcbiAgICAgICAgICA/ICgnc2t5dXhfcmVwZWF0ZXJfaXRlbV9jaGVja2JveF9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXM6IGl0ZW1OYW1lKVxuICAgICAgICAgIDogKCdza3l1eF9yZXBlYXRlcl9pdGVtX2NoZWNrYm94X2xhYmVsX2RlZmF1bHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9za3ktY2hlY2tib3g+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jb250ZXh0LW1lbnVcIlxuICAgICAgW2hpZGRlbl09XCJjb250ZXh0TWVudUVsLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICAjY29udGV4dE1lbnVFbFxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1yZXBlYXRlci1pdGVtLWNvbnRleHQtbWVudVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NreVJlcGVhdGVySXRlbVJpZ2h0PlxuICA8ZGl2IGNsYXNzPVwic2t5LXJlcGVhdGVyLWl0ZW0tcmlnaHRcIiAjaXRlbUhlYWRlclJlZj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLWhlYWRlclwiXG4gICAgICBbaGlkZGVuXT1cInRpdGxlUmVmLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICAoY2xpY2spPVwiaGVhZGVyQ2xpY2soKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLXRpdGxlIHNreS1lbXBoYXNpemVkXCJcbiAgICAgICAgI3RpdGxlUmVmXG4gICAgICAgIFthdHRyLnJvbGVdPVwiKGl0ZW1Sb2xlJCB8IGFzeW5jKS50aXRsZVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1yZXBlYXRlci1pdGVtLXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwicmVvcmRlcmFibGVcIlxuICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1saW5rIHNreS1yZXBlYXRlci1pdGVtLXJlb3JkZXItdG9wXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgaXRlbU5hbWVcbiAgICAgICAgICAgID8gKCdza3l1eF9yZXBlYXRlcl9pdGVtX3Jlb3JkZXJfdG9wX2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlczogaXRlbU5hbWUpXG4gICAgICAgICAgICA6ICgnc2t5dXhfcmVwZWF0ZXJfaXRlbV9yZW9yZGVyX3RvcF9sYWJlbF9kZWZhdWx0J1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cIm1vdmVUb1RvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1pY29uIGljb249XCJhcnJvdy1jaXJjbGUtdXBcIj48L3NreS1pY29uPlxuICAgICAgICB7eyAnc2t5dXhfcmVwZWF0ZXJfaXRlbV9yZW9yZGVyX3RvcCcgfCBza3lMaWJSZXNvdXJjZXMgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiAqbmdJZj1cImlzQ29sbGFwc2libGVcIiBjbGFzcz1cInNreS1yZXBlYXRlci1pdGVtLWNoZXZyb25cIj5cbiAgICAgICAgPHNreS1jaGV2cm9uXG4gICAgICAgICAgW2FyaWFDb250cm9sc109XCJjb250ZW50SWRcIlxuICAgICAgICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgICAgICBpdGVtTmFtZVxuICAgICAgICAgICAgICA/ICgnc2t5dXhfcmVwZWF0ZXJfaXRlbV9leHBhbmQnIHwgc2t5TGliUmVzb3VyY2VzOiBpdGVtTmFtZSlcbiAgICAgICAgICAgICAgOiAoJ3NreXV4X3JlcGVhdGVyX2l0ZW1fZXhwYW5kX2RlZmF1bHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2RpcmVjdGlvbl09XCJpc0V4cGFuZGVkID8gJ3VwJyA6ICdkb3duJ1wiXG4gICAgICAgICAgKGRpcmVjdGlvbkNoYW5nZSk9XCJjaGV2cm9uRGlyZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWNoZXZyb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gVXNlZCBmb3Igd2hlbiB0aGUgY2hldnJvbiBpcyBoaWRkZW4gdG8gZW5zdXJlIHRoYXQgdGhlIHJpZ2h0IHNpZGUgaXMgdGhlIHNhbWUgaGVpZ2h0IGFzIHRoZSBsZWZ0Li0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFpc0NvbGxhcHNpYmxlICYmICFjb250ZXh0TWVudVwiXG4gICAgICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyLWl0ZW0tY2hldnJvbi1wbGFjZWhvbGRlclwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8IS0tIFVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJpZ2h0IHNpZGUgaXMgdGhlIHNhbWUgaGVpZ2h0IGFzIHRoZSBsZWZ0Li0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImNvbnRleHRNZW51XCJcbiAgICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jaGV2cm9uLXBsYWNlaG9sZGVyLXdpdGgtY29udGV4dFwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50XCJcbiAgICAgIFtpZF09XCJjb250ZW50SWRcIlxuICAgICAgW0Bza3lBbmltYXRpb25TbGlkZV09XCJzbGlkZURpcmVjdGlvblwiXG4gICAgICAjaXRlbUNvbnRlbnRSZWZcbiAgICAgIFthdHRyLnJvbGVdPVwiKGl0ZW1Sb2xlJCB8IGFzeW5jKS5jb250ZW50XCJcbiAgICA+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktcmVwZWF0ZXItaXRlbS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItcm9sZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci1yb2xlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNreVJlcGVhdGVyUm9sZVR5cGUgPSAnbGlzdCcgfCAnbGlzdGJveCcgfCAnZ3JpZCc7XG4iXX0=
|