@skyux/progress-indicator 8.0.0-alpha.2 → 8.0.0-alpha.21
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 +93 -93
- package/esm2020/lib/modules/progress-indicator/progress-indicator-item/progress-indicator-item.component.mjs +16 -16
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-class.pipe.mjs +3 -3
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-disabled.pipe.mjs +3 -3
- package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button.component.mjs +23 -23
- package/esm2020/lib/modules/progress-indicator/progress-indicator-reset-button/progress-indicator-reset-button.component.mjs +15 -15
- package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker-class.pipe.mjs +3 -3
- package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker.component.mjs +17 -17
- package/esm2020/lib/modules/progress-indicator/progress-indicator-title/progress-indicator-title.component.mjs +3 -3
- package/esm2020/lib/modules/progress-indicator/progress-indicator.component.mjs +28 -28
- package/esm2020/lib/modules/progress-indicator/progress-indicator.module.mjs +4 -4
- package/esm2020/lib/modules/shared/sky-progress-indicator-resources.module.mjs +4 -4
- package/fesm2015/skyux-progress-indicator.mjs +113 -113
- package/fesm2015/skyux-progress-indicator.mjs.map +1 -1
- package/fesm2020/skyux-progress-indicator.mjs +114 -114
- package/fesm2020/skyux-progress-indicator.mjs.map +1 -1
- package/lib/modules/progress-indicator/types/progress-indicator-display-mode-type.d.ts +1 -1
- package/lib/modules/progress-indicator/types/progress-indicator-nav-button-type.d.ts +1 -1
- package/package.json +8 -8
|
@@ -12,30 +12,6 @@ import * as i1 from "@skyux/core";
|
|
|
12
12
|
import * as i2 from "@angular/common";
|
|
13
13
|
import * as i3 from "./progress-indicator-status-marker/progress-indicator-status-marker.component";
|
|
14
14
|
export class SkyProgressIndicatorComponent {
|
|
15
|
-
constructor(changeDetector, windowRef, logger) {
|
|
16
|
-
_SkyProgressIndicatorComponent_instances.add(this);
|
|
17
|
-
/**
|
|
18
|
-
* Fires when the progress indicator changes the status of an item.
|
|
19
|
-
*/
|
|
20
|
-
this.progressChanges = new EventEmitter();
|
|
21
|
-
this.cssClassNames = [];
|
|
22
|
-
this.itemStatuses = [];
|
|
23
|
-
_SkyProgressIndicatorComponent__activeIndex.set(this, 0);
|
|
24
|
-
_SkyProgressIndicatorComponent__displayMode.set(this, 'vertical');
|
|
25
|
-
_SkyProgressIndicatorComponent__hasFinishButton.set(this, void 0);
|
|
26
|
-
_SkyProgressIndicatorComponent__isPassive.set(this, false);
|
|
27
|
-
_SkyProgressIndicatorComponent__startingIndex.set(this, 0);
|
|
28
|
-
_SkyProgressIndicatorComponent_messageStreamSub.set(this, void 0);
|
|
29
|
-
_SkyProgressIndicatorComponent_initialized.set(this, false);
|
|
30
|
-
_SkyProgressIndicatorComponent_ngUnsubscribe.set(this, new Subject());
|
|
31
|
-
_SkyProgressIndicatorComponent_messageStream.set(this, new Subject());
|
|
32
|
-
_SkyProgressIndicatorComponent_changeDetector.set(this, void 0);
|
|
33
|
-
_SkyProgressIndicatorComponent_windowRef.set(this, void 0);
|
|
34
|
-
_SkyProgressIndicatorComponent_logger.set(this, void 0);
|
|
35
|
-
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_changeDetector, changeDetector, "f");
|
|
36
|
-
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_windowRef, windowRef, "f");
|
|
37
|
-
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_logger, logger, "f");
|
|
38
|
-
}
|
|
39
15
|
/**
|
|
40
16
|
* The orientation of the progress indicator, which can be vertical or horizontal.
|
|
41
17
|
* For [passive progress indicators](https://developer.blackbaud.com/skyux-progress-indicator/docs/passive-indicator)
|
|
@@ -105,6 +81,30 @@ export class SkyProgressIndicatorComponent {
|
|
|
105
81
|
set hasFinishButton(value) {
|
|
106
82
|
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent__hasFinishButton, value, "f");
|
|
107
83
|
}
|
|
84
|
+
constructor(changeDetector, windowRef, logger) {
|
|
85
|
+
_SkyProgressIndicatorComponent_instances.add(this);
|
|
86
|
+
/**
|
|
87
|
+
* Fires when the progress indicator changes the status of an item.
|
|
88
|
+
*/
|
|
89
|
+
this.progressChanges = new EventEmitter();
|
|
90
|
+
this.cssClassNames = [];
|
|
91
|
+
this.itemStatuses = [];
|
|
92
|
+
_SkyProgressIndicatorComponent__activeIndex.set(this, 0);
|
|
93
|
+
_SkyProgressIndicatorComponent__displayMode.set(this, 'vertical');
|
|
94
|
+
_SkyProgressIndicatorComponent__hasFinishButton.set(this, void 0);
|
|
95
|
+
_SkyProgressIndicatorComponent__isPassive.set(this, false);
|
|
96
|
+
_SkyProgressIndicatorComponent__startingIndex.set(this, 0);
|
|
97
|
+
_SkyProgressIndicatorComponent_messageStreamSub.set(this, void 0);
|
|
98
|
+
_SkyProgressIndicatorComponent_initialized.set(this, false);
|
|
99
|
+
_SkyProgressIndicatorComponent_ngUnsubscribe.set(this, new Subject());
|
|
100
|
+
_SkyProgressIndicatorComponent_messageStream.set(this, new Subject());
|
|
101
|
+
_SkyProgressIndicatorComponent_changeDetector.set(this, void 0);
|
|
102
|
+
_SkyProgressIndicatorComponent_windowRef.set(this, void 0);
|
|
103
|
+
_SkyProgressIndicatorComponent_logger.set(this, void 0);
|
|
104
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_changeDetector, changeDetector, "f");
|
|
105
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_windowRef, windowRef, "f");
|
|
106
|
+
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_logger, logger, "f");
|
|
107
|
+
}
|
|
108
108
|
ngOnInit() {
|
|
109
109
|
__classPrivateFieldSet(this, _SkyProgressIndicatorComponent_initialized, true, "f");
|
|
110
110
|
__classPrivateFieldGet(this, _SkyProgressIndicatorComponent_instances, "m", _SkyProgressIndicatorComponent_updateCssClassNames).call(this);
|
|
@@ -290,9 +290,9 @@ _SkyProgressIndicatorComponent__activeIndex = new WeakMap(), _SkyProgressIndicat
|
|
|
290
290
|
}, _SkyProgressIndicatorComponent_getLastIndex = function _SkyProgressIndicatorComponent_getLastIndex() {
|
|
291
291
|
return (this.itemComponents?.length || 0) - 1;
|
|
292
292
|
};
|
|
293
|
-
SkyProgressIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
294
|
-
SkyProgressIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1
|
|
295
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
293
|
+
SkyProgressIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyAppWindowRef }, { token: i1.SkyLogService }], target: i0.ɵɵFactoryTarget.Component });
|
|
294
|
+
SkyProgressIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyProgressIndicatorComponent, selector: "sky-progress-indicator", inputs: { displayMode: "displayMode", isPassive: "isPassive", messageStream: "messageStream", startingIndex: "startingIndex" }, outputs: { progressChanges: "progressChanges" }, queries: [{ propertyName: "itemComponents", predicate: SkyProgressIndicatorItemComponent }], ngImport: i0, template: "<div class=\"sky-progress-indicator\" [ngClass]=\"cssClassNames\">\n <div\n *ngIf=\"displayMode === 'horizontal'\"\n class=\"sky-progress-indicator-horizontal-status-markers\"\n >\n <sky-progress-indicator-status-marker\n *ngFor=\"let status of itemStatuses\"\n [displayMode]=\"displayMode\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-progress-indicator ::ng-deep sky-progress-indicator-item:last-of-type .sky-progress-indicator-status-marker-line{display:none}.sky-progress-indicator-mode-vertical{max-width:400px;min-width:250px;margin:0 auto}.sky-progress-indicator-mode-vertical ::ng-deep .sky-progress-indicator-item-body{text-align:center;margin-left:-30px}.sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,.sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{display:block;padding-top:30px;padding-left:15px}::ng-deep .sky-popover ::ng-deep .sky-progress-indicator-mode-vertical{min-width:auto}.sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:600;font-size:16px}.sky-progress-indicator-horizontal-status-markers{display:flex;margin-bottom:10px}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker{flex-basis:45px;flex-grow:0}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:first-of-type{margin-left:-5px}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:first-of-type .sky-progress-indicator-status-marker .sky-progress-indicator-status-marker-icon:before{display:none!important}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:last-of-type .sky-progress-indicator-status-marker-line{display:none}:host-context(.sky-theme-modern) .sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:inherit;font-size:inherit}:host-context(.sky-theme-modern) .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,:host-context(.sky-theme-modern) .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{padding:0;margin:60px 0 0;text-align:center}.sky-theme-modern .sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:inherit;font-size:inherit}.sky-theme-modern .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,.sky-theme-modern .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{padding:0;margin:60px 0 0;text-align:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SkyProgressIndicatorStatusMarkerComponent, selector: "sky-progress-indicator-status-marker", inputs: ["displayMode", "status"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorComponent, decorators: [{
|
|
296
296
|
type: Component,
|
|
297
297
|
args: [{ selector: 'sky-progress-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sky-progress-indicator\" [ngClass]=\"cssClassNames\">\n <div\n *ngIf=\"displayMode === 'horizontal'\"\n class=\"sky-progress-indicator-horizontal-status-markers\"\n >\n <sky-progress-indicator-status-marker\n *ngFor=\"let status of itemStatuses\"\n [displayMode]=\"displayMode\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n </div>\n <ng-content></ng-content>\n</div>\n", styles: [".sky-progress-indicator ::ng-deep sky-progress-indicator-item:last-of-type .sky-progress-indicator-status-marker-line{display:none}.sky-progress-indicator-mode-vertical{max-width:400px;min-width:250px;margin:0 auto}.sky-progress-indicator-mode-vertical ::ng-deep .sky-progress-indicator-item-body{text-align:center;margin-left:-30px}.sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,.sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{display:block;padding-top:30px;padding-left:15px}::ng-deep .sky-popover ::ng-deep .sky-progress-indicator-mode-vertical{min-width:auto}.sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:600;font-size:16px}.sky-progress-indicator-horizontal-status-markers{display:flex;margin-bottom:10px}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker{flex-basis:45px;flex-grow:0}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:first-of-type{margin-left:-5px}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:first-of-type .sky-progress-indicator-status-marker .sky-progress-indicator-status-marker-icon:before{display:none!important}.sky-progress-indicator-horizontal-status-markers ::ng-deep sky-progress-indicator-status-marker:last-of-type .sky-progress-indicator-status-marker-line{display:none}:host-context(.sky-theme-modern) .sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:inherit;font-size:inherit}:host-context(.sky-theme-modern) .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,:host-context(.sky-theme-modern) .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{padding:0;margin:60px 0 0;text-align:center}.sky-theme-modern .sky-progress-indicator-mode-horizontal ::ng-deep .sky-progress-indicator-item-heading{font-weight:inherit;font-size:inherit}.sky-theme-modern .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-nav-button,.sky-theme-modern .sky-progress-indicator-mode-vertical ::ng-deep sky-progress-indicator-reset-button{padding:0;margin:60px 0 0;text-align:center}\n"] }]
|
|
298
298
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyAppWindowRef }, { type: i1.SkyLogService }]; }, propDecorators: { displayMode: [{
|
|
@@ -309,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
309
309
|
type: ContentChildren,
|
|
310
310
|
args: [SkyProgressIndicatorItemComponent]
|
|
311
311
|
}] } });
|
|
312
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR2hILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQVFsRixNQUFNLE9BQU8sNkJBQTZCO0lBb0l4QyxZQUNFLGNBQWlDLEVBQ2pDLFNBQTBCLEVBQzFCLE1BQXFCOztRQWxEdkI7O1dBRUc7UUFFSSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBZWpFLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLGlCQUFZLEdBQXFDLEVB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LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0vcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItY2hhbmdlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yRGlzcGxheU1vZGVUeXBlIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItZGlzcGxheS1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS1zdGF0dXMnO1xuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbWVzc2FnZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yRGlzcGxheU1vZGUgfSBmcm9tICcuL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1tb2RlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXByb2dyZXNzLWluZGljYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLCB3aGljaCBjYW4gYmUgdmVydGljYWwgb3IgaG9yaXpvbnRhbC5cbiAgICogRm9yIFtwYXNzaXZlIHByb2dyZXNzIGluZGljYXRvcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgtcHJvZ3Jlc3MtaW5kaWNhdG9yL2RvY3MvcGFzc2l2ZS1pbmRpY2F0b3IpXG4gICAqIGFuZCBbd2F0ZXJmYWxsIHByb2dyZXNzIGluZGljYXRvcnNdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivd2F0ZXJmYWxsLXByb2dyZXNzLWluZGljYXRvciksXG4gICAqIHVzZSB0aGUgdmVydGljYWwgZGlzcGxheSBtb2RlLiBGb3IgW21vZGFsIHdpemFyZHNdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy93aXphcmQpLFxuICAgKiB1c2UgdGhlIGhvcml6b250YWwgZGlzcGxheSBtb2RlLlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgcHJvcGVydHkgd2FzIGRlc2lnbmVkIHRvIGNyZWF0ZSB3aXphcmRzIGJ5IHNldHRpbmcgYGRpc3BsYXlNb2RlPVwiaG9yaXpvbnRhbFwiYCBvbiBwcm9ncmVzcyBpbmRpY2F0b3JzIGluIG1vZGFscyxcbiAgICogYnV0IHRoaXMgd2l6YXJkIGltcGxlbWVudGF0aW9uIHdhcyByZXBsYWNlZCBieSB0aGVcbiAgICogW1dpemFyZCAoVGFicykgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yKS5cbiAgICogQGRlZmF1bHQgXCJ2ZXJ0aWNhbFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNb2RlKFxuICAgIHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckRpc3BsYXlNb2RlVHlwZSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9yRGlzcGxheU1vZGUuSG9yaXpvbnRhbDpcbiAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgICB0aGlzLiNfZGlzcGxheU1vZGUgPSAnaG9yaXpvbnRhbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy4jX2Rpc3BsYXlNb2RlID0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICB0aGlzLiN1cGRhdGVDc3NDbGFzc05hbWVzKCk7XG5cbiAgICBpZiAodGhpcy4jX2Rpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lQcm9ncmVzc0luZGljYXRvciB3aXphcmQnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA2LFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIFdpemFyZCAoVGFicykgaW5zdGVhZC4nLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5TW9kZSgpOiBTa3lQcm9ncmVzc0luZGljYXRvckRpc3BsYXlNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNwbGF5TW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgaXMgcGFzc2l2ZS4gUGFzc2l2ZSBwcm9ncmVzcyBpbmRpY2F0b3JzIGluZm9ybSB1c2VycyBvZlxuICAgKiBwcm9ncmVzcyB0aGF0IGNvbmNlcm5zIHRoZW0gYnV0IHRoYXQgdGhleSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciwgYW5kIHRoZXkgbXVzdCB1c2UgdGhlIHZlcnRpY2FsIGRpc3BsYXkgbW9kZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXNQYXNzaXZlKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2lzUGFzc2l2ZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUNzc0NsYXNzTmFtZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNQYXNzaXZlKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaXNQYXNzaXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvYnNlcnZhYmxlIG9mIGBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VgIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc3RhdHVzIHRvXG4gICAqIGRpc3BsYXkgZm9yIGl0ZW1zIGluIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuIFRoZSBtZXNzYWdlIHN0cmVhbSBpcyBhIHF1ZXVlIG9mXG4gICAqIGNvbW1hbmRpbmcgbWVzc2FnZXMgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGJhc2VkIG9uIHRoZSBtZXNzYWdlIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lc3NhZ2VTdHJlYW0oXG4gICAgdmFsdWU6XG4gICAgICB8IFN1YmplY3Q8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlIHwgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZT5cbiAgICAgIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuI21lc3NhZ2VTdHJlYW0gPSB2YWx1ZSB8fCBuZXcgU3ViamVjdCgpO1xuICAgIHRoaXMuI3N1YnNjcmliZVRvTWVzc2FnZVN0cmVhbSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBmb3IgdGhlIGl0ZW0gdG8gbWFrZSBhY3RpdmUgd2hlbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yXG4gICAqIGxvYWRzLiBBbGwgc3RlcHMgdGhhdCBwcmVjZWRlIHRoZSBhY3RpdmUgaXRlbSBhcmUgbWFya2VkIGFzIGNvbXBsZXRlLCBhbmQgYWxsIHN0ZXBzXG4gICAqIHRoYXQgZm9sbG93IHRoZSBhY3RpdmUgaXRlbSBhcmUgbWFya2VkIGFzIGluY29tcGxldGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0YXJ0aW5nSW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19zdGFydGluZ0luZGV4ID0gdmFsdWUgfHwgMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhcnRpbmdJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfc3RhcnRpbmdJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgY2hhbmdlcyB0aGUgc3RhdHVzIG9mIGFuIGl0ZW0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHByb2dyZXNzQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2U+KCk7XG5cbiAgcHVibGljIGdldCBoYXNGaW5pc2hCdXR0b24oKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19oYXNGaW5pc2hCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IGhhc0ZpbmlzaEJ1dHRvbih2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oYXNGaW5pc2hCdXR0b24gPSB2YWx1ZTtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtQ29tcG9uZW50KVxuICBwdWJsaWMgaXRlbUNvbXBvbmVudHM6XG4gICAgfCBRdWVyeUxpc3Q8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtQ29tcG9uZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjc3NDbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgaXRlbVN0YXR1c2VzOiBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXNbXSA9IFtdO1xuXG4gIHNldCAjYWN0aXZlSW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9ICh0aGlzLml0ZW1Db21wb25lbnRzPy5sZW5ndGggfHwgMCkgLSAxO1xuICAgIHRoaXMuI19hY3RpdmVJbmRleCA9IE1hdGgubWF4KE1hdGgubWluKHZhbHVlIHx8IDAsIGxhc3RJbmRleCksIDApO1xuICB9XG5cbiAgZ2V0ICNhY3RpdmVJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlSW5kZXg7XG4gIH1cblxuICAjX2FjdGl2ZUluZGV4ID0gMDtcbiAgI19kaXNwbGF5TW9kZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5TW9kZVR5cGUgPSAndmVydGljYWwnO1xuICAjX2hhc0ZpbmlzaEJ1dHRvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19pc1Bhc3NpdmU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgI19zdGFydGluZ0luZGV4ID0gMDtcblxuICAjbWVzc2FnZVN0cmVhbVN1YjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFxuICAgIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZSB8IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGVcbiAgPigpO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG4gICNsb2dnZXI6IFNreUxvZ1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIGxvZ2dlcjogU2t5TG9nU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcbiAgICB0aGlzLiNsb2dnZXIgPSBsb2dnZXI7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy4jdXBkYXRlQ3NzQ2xhc3NOYW1lcygpO1xuICAgIHRoaXMuI3N1YnNjcmliZVRvTWVzc2FnZVN0cmVhbSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVJbmRleCA9IHRoaXMuc3RhcnRpbmdJbmRleDtcblxuICAgIHRoaXMuI3VwZGF0ZVN0ZXBzKCk7XG5cbiAgICAvLyBOb3RlOiBUaGUgZGVsYXkgaGVyZSBpcyB0byBlbnN1cmUgYWxsIGNoYW5nZSBkZXRlY3Rpb24gb24gdGhlIGl0ZW1zIGhhcyBmaW5pc2hlZC4gV2l0aG91dFxuICAgIC8vIHRoZSBkZWxheSB3ZSByZWNlaXZlIGEgY2hhbmdlZCBiZWZvcmUgY2hlY2tlZCBlcnJvciBmb3IgdmVydGljYWwgcHJvZ3Jlc3MgaW5kaWNhdG9yc1xuICAgIHRoaXMuaXRlbUNvbXBvbmVudHM/LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSwgZGVsYXkoMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3RlcHMoKTtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3RhdHVzZXNBbmROb3RpZnkoKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gV2FpdCBmb3IgaXRlbSBjb21wb25lbnRzJyBjaGFuZ2UgZGV0ZWN0aW9uIHRvIGNvbXBsZXRlXG4gICAgLy8gYmVmb3JlIG5vdGlmeWluZyBjaGFuZ2VzIHRvIHRoZSBjb25zdW1lci5cbiAgICB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jdXBkYXRlU3RhdHVzZXNBbmROb3RpZnkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VuZE1lc3NhZ2UobWVzc2FnZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy4jbWVzc2FnZVN0cmVhbS5uZXh0KG1lc3NhZ2UpO1xuICB9XG5cbiAgI2lzUGFzc2l2ZUFuZFZlcnRpY2FsKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIC8vIEN1cnJlbnRseSwgcGFzc2l2ZSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGhvcml6b250YWwgZGlzcGxheXMuXG4gICAgaWYgKHRoaXMuZGlzcGxheU1vZGUgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzUGFzc2l2ZTtcbiAgfVxuXG4gICNnb3RvTmV4dFN0ZXAoKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gdGhpcy4jYWN0aXZlSW5kZXggKyAxO1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IHRoaXMuI2dldExhc3RJbmRleCgpO1xuXG4gICAgaWYgKG5leHRJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2dvdG9TdGVwKG5leHRJbmRleCk7XG4gIH1cblxuICAjZ290b1ByZXZpb3VzU3RlcCgpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gdGhpcy4jYWN0aXZlSW5kZXggLSAxO1xuXG4gICAgaWYgKHByZXZpb3VzSW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jZ290b1N0ZXAocHJldmlvdXNJbmRleCk7XG4gIH1cblxuICAjZ290b1N0ZXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgdGhpcy4jdXBkYXRlU3RlcHMoKTtcbiAgICB0aGlzLiN1cGRhdGVTdGF0dXNlc0FuZE5vdGlmeSgpO1xuICB9XG5cbiAgI2ZpbmlzaFN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZUluZGV4ID0gdGhpcy4jZ2V0TGFzdEluZGV4KCk7XG5cbiAgICB0aGlzLml0ZW1Db21wb25lbnRzPy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgIGNvbXBvbmVudC5zdGF0dXMgPSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQ29tcGxldGU7XG4gICAgfSk7XG5cbiAgICB0aGlzLiN1cGRhdGVTdGF0dXNlc0FuZE5vdGlmeSh7XG4gICAgICBpc0NvbXBsZXRlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgI3Jlc2V0U3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy4jZ290b1N0ZXAoMCk7XG4gIH1cblxuICAjdXBkYXRlU3RlcHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2FjdGl2ZUluZGV4ID4gdGhpcy4jZ2V0TGFzdEluZGV4KCkpIHtcbiAgICAgIHRoaXMuI2FjdGl2ZUluZGV4ID0gdGhpcy4jYWN0aXZlSW5kZXggLSAxO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy4jYWN0aXZlSW5kZXg7XG4gICAgY29uc3QgaXNQYXNzaXZlQW5kVmVydGljYWwgPSB0aGlzLiNpc1Bhc3NpdmVBbmRWZXJ0aWNhbCgpO1xuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLmRpc3BsYXlNb2RlID09PSAndmVydGljYWwnO1xuXG4gICAgdGhpcy5pdGVtQ29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50LCBpKSA9PiB7XG4gICAgICAvLyBTZXQgdmlzaWJpbGl0eS5cbiAgICAgIGNvbXBvbmVudC5pc1Zpc2libGUgPSBhY3RpdmVJbmRleCA9PT0gaSB8fCBpc1ZlcnRpY2FsO1xuXG4gICAgICAvLyBTZXQgc3RhdHVzLlxuICAgICAgbGV0IHN0YXR1czogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzO1xuICAgICAgaWYgKGFjdGl2ZUluZGV4ID09PSBpKSB7XG4gICAgICAgIGlmIChpc1Bhc3NpdmVBbmRWZXJ0aWNhbCkge1xuICAgICAgICAgIHN0YXR1cyA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5QZW5kaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1cyA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5BY3RpdmU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYWN0aXZlSW5kZXggPiBpKSB7XG4gICAgICAgIHN0YXR1cyA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5Db21wbGV0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXR1cyA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlO1xuICAgICAgfVxuXG4gICAgICBjb21wb25lbnQuc3RhdHVzID0gc3RhdHVzO1xuXG4gICAgICAvLyBTaG93IG9yIGhpZGUgdGhlIHN0YXR1cyBtYXJrZXJzLlxuICAgICAgY29tcG9uZW50LnNob3dTdGF0dXNNYXJrZXIgPSBpc1ZlcnRpY2FsO1xuXG4gICAgICAvLyBTaG93IG9yIGhpZGUgdGhlIHN0ZXAgbnVtYmVyLlxuICAgICAgaWYgKGlzUGFzc2l2ZUFuZFZlcnRpY2FsKSB7XG4gICAgICAgIGNvbXBvbmVudC5oaWRlU3RlcE51bWJlcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnNob3dTdGVwTnVtYmVyKGkgKyAxKTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UncmUgaW4gcGFzc2l2ZSBtb2RlLCBkb24ndCBzaG93IHRpdGxlcyBmb3IgaW5jb21wbGV0ZSBpdGVtcy5cbiAgICAgIGNvbXBvbmVudC5zaG93VGl0bGUgPSAhKGlzUGFzc2l2ZUFuZFZlcnRpY2FsICYmIGFjdGl2ZUluZGV4IDwgaSk7XG4gICAgfSk7XG4gIH1cblxuICAjdXBkYXRlSXRlbVN0YXR1c2VzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgdGhpcy5pdGVtU3RhdHVzZXMgPSB0aGlzLml0ZW1Db21wb25lbnRzPy5tYXAoKGMpID0+IGMuc3RhdHVzKSB8fCBbXTtcbiAgfVxuXG4gICN1cGRhdGVDc3NDbGFzc05hbWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbYHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbW9kZS0ke3RoaXMuZGlzcGxheU1vZGV9YF07XG5cbiAgICBpZiAodGhpcy4jaXNQYXNzaXZlQW5kVmVydGljYWwoKSkge1xuICAgICAgY2xhc3NOYW1lcy5wdXNoKCdza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLXBhc3NpdmUnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNzc0NsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuICB9XG5cbiAgI2hhbmRsZUluY29taW5nTWVzc2FnZShcbiAgICBtZXNzYWdlOiBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2UgfCBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGluZGljYXRvck1lc3NhZ2UgPSBtZXNzYWdlIGFzIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZTtcblxuICAgIGxldCB0eXBlOiBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlO1xuXG4gICAgLy8gUHJpbnRzIGEgZGVwcmVjYXRpb24gd2FybmluZyBpZiB0aGUgY29uc3VtZXIgcHJvdmlkZXMgb25seSBgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZWAuXG4gICAgaWYgKGluZGljYXRvck1lc3NhZ2UudHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0RlcHJlY2F0aW9uIHdhcm5pbmddIFRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgY29tcG9uZW50J3MgYG1lc3NhZ2VTdHJlYW1gIGlucHV0IGlzIHNldCBcIiArXG4gICAgICAgICAgJ3RvIGBTdWJqZWN0PFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGU+YC4gV2Ugd2lsbCByZW1vdmUgdGhpcyBkZXByZWNhdGVkIHR5cGUgaW4gJyArXG4gICAgICAgICAgJ3RoZSBuZXh0IG1ham9yIHZlcnNpb24gcmVsZWFzZS4gSW5zdGVhZCwgc2V0IHRoZSBgbWVzc2FnZVN0cmVhbWAgaW5wdXQgdG8gYSB2YWx1ZSBvZiAnICtcbiAgICAgICAgICAnYFN1YmplY3Q8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlPmAuJ1xuICAgICAgKTtcblxuICAgICAgdHlwZSA9IG1lc3NhZ2UgYXMgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9IGluZGljYXRvck1lc3NhZ2UudHlwZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5Qcm9ncmVzczpcbiAgICAgICAgdGhpcy4jZ290b05leHRTdGVwKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVncmVzczpcbiAgICAgICAgdGhpcy4jZ290b1ByZXZpb3VzU3RlcCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkZpbmlzaDpcbiAgICAgICAgdGhpcy4jZmluaXNoU3RlcHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5SZXNldDpcbiAgICAgICAgdGhpcy4jcmVzZXRTdGVwcygpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkdvVG86XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaW5kaWNhdG9yTWVzc2FnZS5kYXRhIHx8XG4gICAgICAgICAgaW5kaWNhdG9yTWVzc2FnZS5kYXRhLmFjdGl2ZUluZGV4ID09PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgJ0EgbWVzc2FnZSB0eXBlIG9mIGBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkdvVG9gIHdhcyBwYXNzZWQgdG8gdGhlIHByb2dyZXNzICcgK1xuICAgICAgICAgICAgICAnaW5kaWNhdG9yLCBidXQgbm8gc3RlcCBpbmRleCB3YXMgcHJvdmlkZWQuIFlvdSBjYW4gcGFzcyB0aGUgZGVzaXJlZCBhY3RpdmUgJyArXG4gICAgICAgICAgICAgICdpbmRleCB2aWE6XFxuJyArXG4gICAgICAgICAgICAgICd7XFxuJyArXG4gICAgICAgICAgICAgICcgIHR5cGU6IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuR29UbyxcXG4nICtcbiAgICAgICAgICAgICAgJyAgZGF0YTogeyBhY3RpdmVJbmRleDogMCB9XFxuJyArXG4gICAgICAgICAgICAgICd9J1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jZ290b1N0ZXAoaW5kaWNhdG9yTWVzc2FnZS5kYXRhLmFjdGl2ZUluZGV4KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgdmlldyBhZnRlciBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjc3Vic2NyaWJlVG9NZXNzYWdlU3RyZWFtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNpbml0aWFsaXplZCkge1xuICAgICAgaWYgKHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIpIHtcbiAgICAgICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLiNtZXNzYWdlU3RyZWFtU3ViID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4jbWVzc2FnZVN0cmVhbSkge1xuICAgICAgICB0aGlzLiNtZXNzYWdlU3RyZWFtU3ViID0gdGhpcy4jbWVzc2FnZVN0cmVhbVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiNoYW5kbGVJbmNvbWluZ01lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVN0YXR1c2VzQW5kTm90aWZ5KGNoYW5nZT86IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlSXRlbVN0YXR1c2VzKCk7XG5cbiAgICB0aGlzLnByb2dyZXNzQ2hhbmdlcy5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBhY3RpdmVJbmRleDogdGhpcy4jYWN0aXZlSW5kZXgsXG4gICAgICAgICAgaXRlbVN0YXR1c2VzOiB0aGlzLml0ZW1TdGF0dXNlcyxcbiAgICAgICAgfSxcbiAgICAgICAgY2hhbmdlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gICNnZXRMYXN0SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuaXRlbUNvbXBvbmVudHM/Lmxlbmd0aCB8fCAwKSAtIDE7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yXCIgW25nQ2xhc3NdPVwiY3NzQ2xhc3NOYW1lc1wiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJkaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnXCJcbiAgICBjbGFzcz1cInNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaG9yaXpvbnRhbC1zdGF0dXMtbWFya2Vyc1wiXG4gID5cbiAgICA8c2t5LXByb2dyZXNzLWluZGljYXRvci1zdGF0dXMtbWFya2VyXG4gICAgICAqbmdGb3I9XCJsZXQgc3RhdHVzIG9mIGl0ZW1TdGF0dXNlc1wiXG4gICAgICBbZGlzcGxheU1vZGVdPVwiZGlzcGxheU1vZGVcIlxuICAgICAgW3N0YXR1c109XCJzdGF0dXNcIlxuICAgID5cbiAgICA8L3NreS1wcm9ncmVzcy1pbmRpY2F0b3Itc3RhdHVzLW1hcmtlcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR2hILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQVFsRixNQUFNLE9BQU8sNkJBQTZCO0lBR3hDOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUNXLFdBQVcsQ0FDcEIsS0FBc0Q7UUFFdEQsUUFBUSxLQUFLLEVBQUU7WUFDYixLQUFLLCtCQUErQixDQUFDLFVBQVUsQ0FBQztZQUNoRCxLQUFLLFlBQVk7Z0JBQ2YsdUJBQUEsSUFBSSwrQ0FBaUIs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biAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcFdpbmRvd1JlZiwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzLWluZGljYXRvci1pdGVtL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckNoYW5nZSB9IGZyb20gJy4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckRpc3BsYXlNb2RlVHlwZSB9IGZyb20gJy4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWRpc3BsYXktbW9kZS10eXBlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cyB9IGZyb20gJy4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tc3RhdHVzJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZSB9IGZyb20gJy4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLW1lc3NhZ2UnO1xuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZSB9IGZyb20gJy4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckRpc3BsYXlNb2RlIH0gZnJvbSAnLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbW9kZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1wcm9ncmVzcy1pbmRpY2F0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHByb2dyZXNzIGluZGljYXRvciwgd2hpY2ggY2FuIGJlIHZlcnRpY2FsIG9yIGhvcml6b250YWwuXG4gICAqIEZvciBbcGFzc2l2ZSBwcm9ncmVzcyBpbmRpY2F0b3JzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4LXByb2dyZXNzLWluZGljYXRvci9kb2NzL3Bhc3NpdmUtaW5kaWNhdG9yKVxuICAgKiBhbmQgW3dhdGVyZmFsbCBwcm9ncmVzcyBpbmRpY2F0b3JzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3dhdGVyZmFsbC1wcm9ncmVzcy1pbmRpY2F0b3IpLFxuICAgKiB1c2UgdGhlIHZlcnRpY2FsIGRpc3BsYXkgbW9kZS4gRm9yIFttb2RhbCB3aXphcmRzXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvd2l6YXJkKSxcbiAgICogdXNlIHRoZSBob3Jpem9udGFsIGRpc3BsYXkgbW9kZS5cbiAgICogQGRlcHJlY2F0ZWQgVGhlIHByb3BlcnR5IHdhcyBkZXNpZ25lZCB0byBjcmVhdGUgd2l6YXJkcyBieSBzZXR0aW5nIGBkaXNwbGF5TW9kZT1cImhvcml6b250YWxcImAgb24gcHJvZ3Jlc3MgaW5kaWNhdG9ycyBpbiBtb2RhbHMsXG4gICAqIGJ1dCB0aGlzIHdpemFyZCBpbXBsZW1lbnRhdGlvbiB3YXMgcmVwbGFjZWQgYnkgdGhlXG4gICAqIFtXaXphcmQgKFRhYnMpIGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvcikuXG4gICAqIEBkZWZhdWx0IFwidmVydGljYWxcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5TW9kZShcbiAgICB2YWx1ZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5TW9kZVR5cGUgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckRpc3BsYXlNb2RlLkhvcml6b250YWw6XG4gICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgdGhpcy4jX2Rpc3BsYXlNb2RlID0gJ2hvcml6b250YWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuI19kaXNwbGF5TW9kZSA9ICd2ZXJ0aWNhbCc7XG4gICAgfVxuXG4gICAgdGhpcy4jdXBkYXRlQ3NzQ2xhc3NOYW1lcygpO1xuXG4gICAgaWYgKHRoaXMuI19kaXNwbGF5TW9kZSA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICB0aGlzLiNsb2dnZXIuZGVwcmVjYXRlZCgnU2t5UHJvZ3Jlc3NJbmRpY2F0b3Igd2l6YXJkJywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogNixcbiAgICAgICAgcmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbjogJ1VzZSBXaXphcmQgKFRhYnMpIGluc3RlYWQuJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzcGxheU1vZGUoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5TW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfZGlzcGxheU1vZGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGlzIHBhc3NpdmUuIFBhc3NpdmUgcHJvZ3Jlc3MgaW5kaWNhdG9ycyBpbmZvcm0gdXNlcnMgb2ZcbiAgICogcHJvZ3Jlc3MgdGhhdCBjb25jZXJucyB0aGVtIGJ1dCB0aGF0IHRoZXkgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IsIGFuZCB0aGV5IG11c3QgdXNlIHRoZSB2ZXJ0aWNhbCBkaXNwbGF5IG1vZGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzUGFzc2l2ZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19pc1Bhc3NpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVDc3NDbGFzc05hbWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUGFzc2l2ZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzUGFzc2l2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb2JzZXJ2YWJsZSBvZiBgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlYCB0aGF0IGRldGVybWluZXMgdGhlIHN0YXR1cyB0b1xuICAgKiBkaXNwbGF5IGZvciBpdGVtcyBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiBUaGUgbWVzc2FnZSBzdHJlYW0gaXMgYSBxdWV1ZSBvZlxuICAgKiBjb21tYW5kaW5nIG1lc3NhZ2VzIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvciBiYXNlZCBvbiB0aGUgbWVzc2FnZSB0eXBlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXNzYWdlU3RyZWFtKFxuICAgIHZhbHVlOlxuICAgICAgfCBTdWJqZWN0PFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZSB8IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGU+XG4gICAgICB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNtZXNzYWdlU3RyZWFtID0gdmFsdWUgfHwgbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLiNzdWJzY3JpYmVUb01lc3NhZ2VTdHJlYW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZm9yIHRoZSBpdGVtIHRvIG1ha2UgYWN0aXZlIHdoZW4gdGhlIHByb2dyZXNzIGluZGljYXRvclxuICAgKiBsb2Fkcy4gQWxsIHN0ZXBzIHRoYXQgcHJlY2VkZSB0aGUgYWN0aXZlIGl0ZW0gYXJlIG1hcmtlZCBhcyBjb21wbGV0ZSwgYW5kIGFsbCBzdGVwc1xuICAgKiB0aGF0IGZvbGxvdyB0aGUgYWN0aXZlIGl0ZW0gYXJlIG1hcmtlZCBhcyBpbmNvbXBsZXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdGFydGluZ0luZGV4KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc3RhcnRpbmdJbmRleCA9IHZhbHVlIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0aW5nSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0YXJ0aW5nSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNoYW5nZXMgdGhlIHN0YXR1cyBvZiBhbiBpdGVtLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBwcm9ncmVzc0NoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBnZXQgaGFzRmluaXNoQnV0dG9uKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaGFzRmluaXNoQnV0dG9uO1xuICB9XG5cbiAgcHVibGljIHNldCBoYXNGaW5pc2hCdXR0b24odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaGFzRmluaXNoQnV0dG9uID0gdmFsdWU7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbUNvbXBvbmVudClcbiAgcHVibGljIGl0ZW1Db21wb25lbnRzOlxuICAgIHwgUXVlcnlMaXN0PFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbUNvbXBvbmVudD5cbiAgICB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgY3NzQ2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGl0ZW1TdGF0dXNlczogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzW10gPSBbXTtcblxuICBzZXQgI2FjdGl2ZUluZGV4KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsYXN0SW5kZXggPSAodGhpcy5pdGVtQ29tcG9uZW50cz8ubGVuZ3RoIHx8IDApIC0gMTtcbiAgICB0aGlzLiNfYWN0aXZlSW5kZXggPSBNYXRoLm1heChNYXRoLm1pbih2YWx1ZSB8fCAwLCBsYXN0SW5kZXgpLCAwKTtcbiAgfVxuXG4gIGdldCAjYWN0aXZlSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy4jX2FjdGl2ZUluZGV4O1xuICB9XG5cbiAgI19hY3RpdmVJbmRleCA9IDA7XG4gICNfZGlzcGxheU1vZGU6IFNreVByb2dyZXNzSW5kaWNhdG9yRGlzcGxheU1vZGVUeXBlID0gJ3ZlcnRpY2FsJztcbiAgI19oYXNGaW5pc2hCdXR0b246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICNfaXNQYXNzaXZlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gICNfc3RhcnRpbmdJbmRleCA9IDA7XG5cbiAgI21lc3NhZ2VTdHJlYW1TdWI6IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgI2luaXRpYWxpemVkID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI21lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxcbiAgICBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2UgfCBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlXG4gID4oKTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICAjbG9nZ2VyOiBTa3lMb2dTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBsb2dnZXI6IFNreUxvZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gICAgdGhpcy4jbG9nZ2VyID0gbG9nZ2VyO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHRoaXMuI3VwZGF0ZUNzc0NsYXNzTmFtZXMoKTtcbiAgICB0aGlzLiNzdWJzY3JpYmVUb01lc3NhZ2VTdHJlYW0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jYWN0aXZlSW5kZXggPSB0aGlzLnN0YXJ0aW5nSW5kZXg7XG5cbiAgICB0aGlzLiN1cGRhdGVTdGVwcygpO1xuXG4gICAgLy8gTm90ZTogVGhlIGRlbGF5IGhlcmUgaXMgdG8gZW5zdXJlIGFsbCBjaGFuZ2UgZGV0ZWN0aW9uIG9uIHRoZSBpdGVtcyBoYXMgZmluaXNoZWQuIFdpdGhvdXRcbiAgICAvLyB0aGUgZGVsYXkgd2UgcmVjZWl2ZSBhIGNoYW5nZWQgYmVmb3JlIGNoZWNrZWQgZXJyb3IgZm9yIHZlcnRpY2FsIHByb2dyZXNzIGluZGljYXRvcnNcbiAgICB0aGlzLml0ZW1Db21wb25lbnRzPy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSksIGRlbGF5KDApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0ZXBzKCk7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0YXR1c2VzQW5kTm90aWZ5KCk7XG4gICAgICB9KTtcblxuICAgIC8vIFdhaXQgZm9yIGl0ZW0gY29tcG9uZW50cycgY2hhbmdlIGRldGVjdGlvbiB0byBjb21wbGV0ZVxuICAgIC8vIGJlZm9yZSBub3RpZnlpbmcgY2hhbmdlcyB0byB0aGUgY29uc3VtZXIuXG4gICAgdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI3VwZGF0ZVN0YXR1c2VzQW5kTm90aWZ5KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMuI21lc3NhZ2VTdHJlYW0ubmV4dChtZXNzYWdlKTtcbiAgfVxuXG4gICNpc1Bhc3NpdmVBbmRWZXJ0aWNhbCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBDdXJyZW50bHksIHBhc3NpdmUgbW9kZSBpcyBub3Qgc3VwcG9ydGVkIGZvciBob3Jpem9udGFsIGRpc3BsYXlzLlxuICAgIGlmICh0aGlzLmRpc3BsYXlNb2RlID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pc1Bhc3NpdmU7XG4gIH1cblxuICAjZ290b05leHRTdGVwKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuI2FjdGl2ZUluZGV4ICsgMTtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLiNnZXRMYXN0SW5kZXgoKTtcblxuICAgIGlmIChuZXh0SW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNnb3RvU3RlcChuZXh0SW5kZXgpO1xuICB9XG5cbiAgI2dvdG9QcmV2aW91c1N0ZXAoKTogdm9pZCB7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IHRoaXMuI2FjdGl2ZUluZGV4IC0gMTtcblxuICAgIGlmIChwcmV2aW91c0luZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2dvdG9TdGVwKHByZXZpb3VzSW5kZXgpO1xuICB9XG5cbiAgI2dvdG9TdGVwKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuI3VwZGF0ZVN0ZXBzKCk7XG4gICAgdGhpcy4jdXBkYXRlU3RhdHVzZXNBbmROb3RpZnkoKTtcbiAgfVxuXG4gICNmaW5pc2hTdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVJbmRleCA9IHRoaXMuI2dldExhc3RJbmRleCgpO1xuXG4gICAgdGhpcy5pdGVtQ29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50KSA9PiB7XG4gICAgICBjb21wb25lbnQuc3RhdHVzID0gU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzLkNvbXBsZXRlO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlU3RhdHVzZXNBbmROb3RpZnkoe1xuICAgICAgaXNDb21wbGV0ZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gICNyZXNldFN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuI2dvdG9TdGVwKDApO1xuICB9XG5cbiAgI3VwZGF0ZVN0ZXBzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNhY3RpdmVJbmRleCA+IHRoaXMuI2dldExhc3RJbmRleCgpKSB7XG4gICAgICB0aGlzLiNhY3RpdmVJbmRleCA9IHRoaXMuI2FjdGl2ZUluZGV4IC0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuI2FjdGl2ZUluZGV4O1xuICAgIGNvbnN0IGlzUGFzc2l2ZUFuZFZlcnRpY2FsID0gdGhpcy4jaXNQYXNzaXZlQW5kVmVydGljYWwoKTtcbiAgICBjb25zdCBpc1ZlcnRpY2FsID0gdGhpcy5kaXNwbGF5TW9kZSA9PT0gJ3ZlcnRpY2FsJztcblxuICAgIHRoaXMuaXRlbUNvbXBvbmVudHM/LmZvckVhY2goKGNvbXBvbmVudCwgaSkgPT4ge1xuICAgICAgLy8gU2V0IHZpc2liaWxpdHkuXG4gICAgICBjb21wb25lbnQuaXNWaXNpYmxlID0gYWN0aXZlSW5kZXggPT09IGkgfHwgaXNWZXJ0aWNhbDtcblxuICAgICAgLy8gU2V0IHN0YXR1cy5cbiAgICAgIGxldCBzdGF0dXM6IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cztcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gaSkge1xuICAgICAgICBpZiAoaXNQYXNzaXZlQW5kVmVydGljYWwpIHtcbiAgICAgICAgICBzdGF0dXMgPSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuUGVuZGluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0dXMgPSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQWN0aXZlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZUluZGV4ID4gaSkge1xuICAgICAgICBzdGF0dXMgPSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQ29tcGxldGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0dXMgPSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuSW5jb21wbGV0ZTtcbiAgICAgIH1cblxuICAgICAgY29tcG9uZW50LnN0YXR1cyA9IHN0YXR1cztcblxuICAgICAgLy8gU2hvdyBvciBoaWRlIHRoZSBzdGF0dXMgbWFya2Vycy5cbiAgICAgIGNvbXBvbmVudC5zaG93U3RhdHVzTWFya2VyID0gaXNWZXJ0aWNhbDtcblxuICAgICAgLy8gU2hvdyBvciBoaWRlIHRoZSBzdGVwIG51bWJlci5cbiAgICAgIGlmIChpc1Bhc3NpdmVBbmRWZXJ0aWNhbCkge1xuICAgICAgICBjb21wb25lbnQuaGlkZVN0ZXBOdW1iZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC5zaG93U3RlcE51bWJlcihpICsgMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlJ3JlIGluIHBhc3NpdmUgbW9kZSwgZG9uJ3Qgc2hvdyB0aXRsZXMgZm9yIGluY29tcGxldGUgaXRlbXMuXG4gICAgICBjb21wb25lbnQuc2hvd1RpdGxlID0gIShpc1Bhc3NpdmVBbmRWZXJ0aWNhbCAmJiBhY3RpdmVJbmRleCA8IGkpO1xuICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZUl0ZW1TdGF0dXNlcygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuaXRlbVN0YXR1c2VzID0gdGhpcy5pdGVtQ29tcG9uZW50cz8ubWFwKChjKSA9PiBjLnN0YXR1cykgfHwgW107XG4gIH1cblxuICAjdXBkYXRlQ3NzQ2xhc3NOYW1lcygpOiB2b2lkIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW2Bza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLW1vZGUtJHt0aGlzLmRpc3BsYXlNb2RlfWBdO1xuXG4gICAgaWYgKHRoaXMuI2lzUGFzc2l2ZUFuZFZlcnRpY2FsKCkpIHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LXByb2dyZXNzLWluZGljYXRvci1wYXNzaXZlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jc3NDbGFzc05hbWVzID0gY2xhc3NOYW1lcztcbiAgfVxuXG4gICNoYW5kbGVJbmNvbWluZ01lc3NhZ2UoXG4gICAgbWVzc2FnZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlIHwgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpbmRpY2F0b3JNZXNzYWdlID0gbWVzc2FnZSBhcyBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2U7XG5cbiAgICBsZXQgdHlwZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZTtcblxuICAgIC8vIFByaW50cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgaWYgdGhlIGNvbnN1bWVyIHByb3ZpZGVzIG9ubHkgYFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGVgLlxuICAgIGlmIChpbmRpY2F0b3JNZXNzYWdlLnR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIltEZXByZWNhdGlvbiB3YXJuaW5nXSBUaGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudCdzIGBtZXNzYWdlU3RyZWFtYCBpbnB1dCBpcyBzZXQgXCIgK1xuICAgICAgICAgICd0byBgU3ViamVjdDxTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlPmAuIFdlIHdpbGwgcmVtb3ZlIHRoaXMgZGVwcmVjYXRlZCB0eXBlIGluICcgK1xuICAgICAgICAgICd0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIHJlbGVhc2UuIEluc3RlYWQsIHNldCB0aGUgYG1lc3NhZ2VTdHJlYW1gIGlucHV0IHRvIGEgdmFsdWUgb2YgJyArXG4gICAgICAgICAgJ2BTdWJqZWN0PFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZT5gLidcbiAgICAgICk7XG5cbiAgICAgIHR5cGUgPSBtZXNzYWdlIGFzIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGUgPSBpbmRpY2F0b3JNZXNzYWdlLnR5cGU7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUHJvZ3Jlc3M6XG4gICAgICAgIHRoaXMuI2dvdG9OZXh0U3RlcCgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLlJlZ3Jlc3M6XG4gICAgICAgIHRoaXMuI2dvdG9QcmV2aW91c1N0ZXAoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5GaW5pc2g6XG4gICAgICAgIHRoaXMuI2ZpbmlzaFN0ZXBzKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVzZXQ6XG4gICAgICAgIHRoaXMuI3Jlc2V0U3RlcHMoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5Hb1RvOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWluZGljYXRvck1lc3NhZ2UuZGF0YSB8fFxuICAgICAgICAgIGluZGljYXRvck1lc3NhZ2UuZGF0YS5hY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdBIG1lc3NhZ2UgdHlwZSBvZiBgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5Hb1RvYCB3YXMgcGFzc2VkIHRvIHRoZSBwcm9ncmVzcyAnICtcbiAgICAgICAgICAgICAgJ2luZGljYXRvciwgYnV0IG5vIHN0ZXAgaW5kZXggd2FzIHByb3ZpZGVkLiBZb3UgY2FuIHBhc3MgdGhlIGRlc2lyZWQgYWN0aXZlICcgK1xuICAgICAgICAgICAgICAnaW5kZXggdmlhOlxcbicgK1xuICAgICAgICAgICAgICAne1xcbicgK1xuICAgICAgICAgICAgICAnICB0eXBlOiBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkdvVG8sXFxuJyArXG4gICAgICAgICAgICAgICcgIGRhdGE6IHsgYWN0aXZlSW5kZXg6IDAgfVxcbicgK1xuICAgICAgICAgICAgICAnfSdcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuI2dvdG9TdGVwKGluZGljYXRvck1lc3NhZ2UuZGF0YS5hY3RpdmVJbmRleCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHZpZXcgYWZ0ZXIgYSBtZXNzYWdlIGlzIHJlY2VpdmVkLlxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgI3N1YnNjcmliZVRvTWVzc2FnZVN0cmVhbSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmICh0aGlzLiNtZXNzYWdlU3RyZWFtU3ViKSB7XG4gICAgICAgIHRoaXMuI21lc3NhZ2VTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1YiA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI21lc3NhZ2VTdHJlYW0pIHtcbiAgICAgICAgdGhpcy4jbWVzc2FnZVN0cmVhbVN1YiA9IHRoaXMuI21lc3NhZ2VTdHJlYW1cbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jaGFuZGxlSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTdGF0dXNlc0FuZE5vdGlmeShjaGFuZ2U/OiBTa3lQcm9ncmVzc0luZGljYXRvckNoYW5nZSk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZUl0ZW1TdGF0dXNlcygpO1xuXG4gICAgdGhpcy5wcm9ncmVzc0NoYW5nZXMubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aXZlSW5kZXg6IHRoaXMuI2FjdGl2ZUluZGV4LFxuICAgICAgICAgIGl0ZW1TdGF0dXNlczogdGhpcy5pdGVtU3RhdHVzZXMsXG4gICAgICAgIH0sXG4gICAgICAgIGNoYW5nZVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAjZ2V0TGFzdEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuICh0aGlzLml0ZW1Db21wb25lbnRzPy5sZW5ndGggfHwgMCkgLSAxO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvclwiIFtuZ0NsYXNzXT1cImNzc0NsYXNzTmFtZXNcIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiZGlzcGxheU1vZGUgPT09ICdob3Jpem9udGFsJ1wiXG4gICAgY2xhc3M9XCJza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWhvcml6b250YWwtc3RhdHVzLW1hcmtlcnNcIlxuICA+XG4gICAgPHNreS1wcm9ncmVzcy1pbmRpY2F0b3Itc3RhdHVzLW1hcmtlclxuICAgICAgKm5nRm9yPVwibGV0IHN0YXR1cyBvZiBpdGVtU3RhdHVzZXNcIlxuICAgICAgW2Rpc3BsYXlNb2RlXT1cImRpc3BsYXlNb2RlXCJcbiAgICAgIFtzdGF0dXNdPVwic3RhdHVzXCJcbiAgICA+XG4gICAgPC9za3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLXN0YXR1cy1tYXJrZXI+XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -17,8 +17,8 @@ import { SkyProgressIndicatorComponent } from './progress-indicator.component';
|
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
18
18
|
export class SkyProgressIndicatorModule {
|
|
19
19
|
}
|
|
20
|
-
SkyProgressIndicatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
21
|
-
SkyProgressIndicatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
20
|
+
SkyProgressIndicatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
21
|
+
SkyProgressIndicatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorModule, declarations: [SkyProgressIndicatorComponent,
|
|
22
22
|
SkyProgressIndicatorItemComponent,
|
|
23
23
|
SkyProgressIndicatorMarkerClassPipe,
|
|
24
24
|
SkyProgressIndicatorNavButtonClass,
|
|
@@ -36,13 +36,13 @@ SkyProgressIndicatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.
|
|
|
36
36
|
SkyProgressIndicatorNavButtonComponent,
|
|
37
37
|
SkyProgressIndicatorResetButtonComponent,
|
|
38
38
|
SkyProgressIndicatorTitleComponent] });
|
|
39
|
-
SkyProgressIndicatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
39
|
+
SkyProgressIndicatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorModule, imports: [CommonModule,
|
|
40
40
|
SkyI18nModule,
|
|
41
41
|
SkyIconModule,
|
|
42
42
|
SkyProgressIndicatorResourcesModule,
|
|
43
43
|
SkyThemeModule,
|
|
44
44
|
SkyTrimModule] });
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorModule, decorators: [{
|
|
46
46
|
type: NgModule,
|
|
47
47
|
args: [{
|
|
48
48
|
declarations: [
|
|
@@ -25,16 +25,16 @@ export class SkyProgressIndicatorResourcesProvider {
|
|
|
25
25
|
*/
|
|
26
26
|
export class SkyProgressIndicatorResourcesModule {
|
|
27
27
|
}
|
|
28
|
-
SkyProgressIndicatorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1
|
|
29
|
-
SkyProgressIndicatorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1
|
|
30
|
-
SkyProgressIndicatorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1
|
|
28
|
+
SkyProgressIndicatorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
29
|
+
SkyProgressIndicatorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorResourcesModule, exports: [SkyI18nModule] });
|
|
30
|
+
SkyProgressIndicatorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorResourcesModule, providers: [
|
|
31
31
|
{
|
|
32
32
|
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
33
33
|
useClass: SkyProgressIndicatorResourcesProvider,
|
|
34
34
|
multi: true,
|
|
35
35
|
},
|
|
36
36
|
], imports: [SkyI18nModule] });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyProgressIndicatorResourcesModule, decorators: [{
|
|
38
38
|
type: NgModule,
|
|
39
39
|
args: [{
|
|
40
40
|
exports: [SkyI18nModule],
|