igniteui-angular 18.0.0 → 18.0.2
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/esm2022/lib/calendar/month-picker/month-picker.component.mjs +9 -1
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +13 -2
- package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -1
- package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -2
- package/esm2022/lib/grids/common/events.mjs +1 -1
- package/esm2022/lib/grids/common/grid.interface.mjs +1 -1
- package/esm2022/lib/grids/common/strategy.mjs +2 -2
- package/esm2022/lib/grids/common/types.mjs +1 -1
- package/esm2022/lib/grids/grid-base.directive.mjs +45 -45
- package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +2 -2
- package/esm2022/lib/grids/selection/selection.service.mjs +12 -16
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +7 -5
- package/fesm2022/igniteui-angular.mjs +89 -66
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/directives/for-of/for_of.directive.d.ts +5 -0
- package/lib/grids/common/events.d.ts +30 -30
- package/lib/grids/common/grid.interface.d.ts +49 -49
- package/lib/grids/common/strategy.d.ts +1 -1
- package/lib/grids/common/types.d.ts +2 -2
- package/lib/grids/grid-base.directive.d.ts +2 -1
- package/migrations/update-18_0_0/index.js +13 -5
- package/package.json +1 -1
|
@@ -15,6 +15,11 @@ export class IgxForOfSyncService {
|
|
|
15
15
|
*/
|
|
16
16
|
setMaster(directive, forced = false) {
|
|
17
17
|
const orientation = directive.igxForScrollOrientation;
|
|
18
|
+
// in case master is not in dom, set a new master
|
|
19
|
+
const isMasterInDom = this._master.get(orientation)?.dc?.instance?._viewContainer.element.nativeElement.isConnected;
|
|
20
|
+
if (!isMasterInDom) {
|
|
21
|
+
forced = true;
|
|
22
|
+
}
|
|
18
23
|
if (orientation && (forced || !this._master.has(orientation))) {
|
|
19
24
|
this._master.set(orientation, directive);
|
|
20
25
|
}
|
|
@@ -65,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
65
70
|
providedIn: 'root',
|
|
66
71
|
}]
|
|
67
72
|
}] });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yX29mLnN5bmMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2Yuc3luYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFLWSxZQUFPLEdBQW1ELElBQUksR0FBRyxFQUE2QyxDQUFDO0tBNEMxSDtJQTFDRzs7T0FFRztJQUNJLFFBQVEsQ0FBQyxTQUE0QztRQUN4RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsU0FBNEMsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUN6RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDdEQsaURBQWlEO1FBQ2pELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ3BILElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQixNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLFdBQVcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxHQUFXO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNqRCxDQUFDOzhHQTdDUSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZoQixNQUFNOzsyRkFFVCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOztBQW9ERCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSVksa0JBQWEsR0FBNEMsSUFBSSxHQUFHLEVBQWUsQ0FBQztLQVEzRjtJQVBVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsTUFBa0M7UUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBVztRQUM5QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OEdBUlEseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FGdEIsTUFBTTs7MkZBRVQseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4vZm9yX29mLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaXJ0dWFsSGVscGVyQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vYmFzZS5oZWxwZXIuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWd4Rm9yT2ZTeW5jU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9tYXN0ZXI6IE1hcDxzdHJpbmcsIElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnksIGFueVtdPj4gPSBuZXcgTWFwPHN0cmluZywgSWd4R3JpZEZvck9mRGlyZWN0aXZlPGFueSwgYW55W10+PigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBpc01hc3RlcihkaXJlY3RpdmU6IElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnksIGFueVtdPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXJlY3RpdmUuaWd4Rm9yU2Nyb2xsT3JpZW50YXRpb24pID09PSBkaXJlY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRNYXN0ZXIoZGlyZWN0aXZlOiBJZ3hHcmlkRm9yT2ZEaXJlY3RpdmU8YW55LCBhbnlbXT4sIGZvcmNlZCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG9yaWVudGF0aW9uID0gZGlyZWN0aXZlLmlneEZvclNjcm9sbE9yaWVudGF0aW9uO1xuICAgICAgICAvLyBpbiBjYXNlIG1hc3RlciBpcyBub3QgaW4gZG9tLCBzZXQgYSBuZXcgbWFzdGVyXG4gICAgICAgIGNvbnN0IGlzTWFzdGVySW5Eb20gPSB0aGlzLl9tYXN0ZXIuZ2V0KG9yaWVudGF0aW9uKT8uZGM/Lmluc3RhbmNlPy5fdmlld0NvbnRhaW5lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaXNDb25uZWN0ZWQ7XG4gICAgICAgIGlmICghaXNNYXN0ZXJJbkRvbSkge1xuICAgICAgICAgICAgZm9yY2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3JpZW50YXRpb24gJiYgKGZvcmNlZCB8fCAhdGhpcy5fbWFzdGVyLmhhcyhvcmllbnRhdGlvbikpKSB7XG4gICAgICAgICAgICB0aGlzLl9tYXN0ZXIuc2V0KG9yaWVudGF0aW9uLCBkaXJlY3RpdmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyByZXNldE1hc3RlcigpIHtcbiAgICAgICAgdGhpcy5fbWFzdGVyLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplc0NhY2hlKGRpcjogc3RyaW5nKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXIpLnNpemVzQ2FjaGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBjaHVua1NpemUoZGlyOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzdGVyLmdldChkaXIpLnN0YXRlLmNodW5rU2l6ZTtcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElneEZvck9mU2Nyb2xsU3luY1NlcnZpY2Uge1xuICAgIHByaXZhdGUgX21hc3RlclNjcm9sbDogTWFwPHN0cmluZywgVmlydHVhbEhlbHBlckJhc2VEaXJlY3RpdmU+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBwdWJsaWMgc2V0U2Nyb2xsTWFzdGVyKGRpcjogc3RyaW5nLCBzY3JvbGw6IFZpcnR1YWxIZWxwZXJCYXNlRGlyZWN0aXZlKSB7XG4gICAgICAgIHRoaXMuX21hc3RlclNjcm9sbC5zZXQoZGlyLCBzY3JvbGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY3JvbGxNYXN0ZXIoZGlyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc3RlclNjcm9sbC5nZXQoZGlyKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -5,6 +5,7 @@ import { takeUntil } from 'rxjs/operators';
|
|
|
5
5
|
import { AutoPositionStrategy, HorizontalAlignment } from '../../services/public_api';
|
|
6
6
|
import { IgxToggleActionDirective } from '../toggle/toggle.directive';
|
|
7
7
|
import { IgxTooltipComponent } from './tooltip.component';
|
|
8
|
+
import { IgxTooltipDirective } from './tooltip.directive';
|
|
8
9
|
import { fadeOut, scaleInCenter } from 'igniteui-angular/animations';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "../../core/navigation";
|
|
@@ -27,7 +28,7 @@ export class IgxTooltipTargetDirective extends IgxToggleActionDirective {
|
|
|
27
28
|
* @hidden
|
|
28
29
|
*/
|
|
29
30
|
set target(target) {
|
|
30
|
-
if (target
|
|
31
|
+
if (target instanceof IgxTooltipDirective) {
|
|
31
32
|
this._target = target;
|
|
32
33
|
}
|
|
33
34
|
}
|
|
@@ -381,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
381
382
|
type: HostListener,
|
|
382
383
|
args: ['document:touchstart', ['$event']]
|
|
383
384
|
}] } });
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBb0IsTUFBTTtRQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9B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O3dFQXBJTixTQUFTO3NCQURmLEtBQUs7dUJBQUMsV0FBVztnQkFrQlgsU0FBUztzQkFEZixLQUFLO3VCQUFDLFdBQVc7Z0JBb0JYLGVBQWU7c0JBRHJCLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU81QyxNQUFNO3NCQUR6QixLQUFLO3VCQUFDLGtCQUFrQjtnQkFxQmQsT0FBTztzQkFEakIsS0FBSztnQkFnREMsV0FBVztzQkFEakIsTUFBTTtnQkFtQkEsV0FBVztzQkFEakIsTUFBTTtnQkFjUyxPQUFPO3NCQUR0QixZQUFZO3VCQUFDLE9BQU87Z0JBV2QsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQThCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQXlCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQWFuQixvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIFZpZXdDb250YWluZXJSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIEV2ZW50RW1pdHRlciwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEF1dG9Qb3NpdGlvblN0cmF0ZWd5LCBIb3Jpem9udGFsQWxpZ25tZW50LCBQb3NpdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBmYWRlT3V0LCBzY2FsZUluQ2VudGVyIH0gZnJvbSAnaWduaXRldWktYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcFNob3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcEhpZGVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0KiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL3Rvb2x0aXApXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIFRhcmdldCBkaXJlY3RpdmUgaXMgdXNlZCB0byBtYXJrIGFuIEhUTUwgZWxlbWVudCBpbiB0aGUgbWFya3VwIGFzIG9uZSB0aGF0IGhhcyBhIHRvb2x0aXAuXG4gKiBUaGUgdG9vbHRpcCB0YXJnZXQgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBieSBhc3NpZ25pbmcgdGhlIGV4cG9ydGVkIHRvb2x0aXAgcmVmZXJlbmNlIHRvIHRoZVxuICogdGFyZ2V0J3Mgc2VsZWN0b3IgcHJvcGVydHkuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBleHBvcnRBczogJ3Rvb2x0aXBUYXJnZXQnLFxuICAgIHNlbGVjdG9yOiAnW2lneFRvb2x0aXBUYXJnZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBTaG93RGVsYXkgPSB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd0RlbGF5O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFtzaG93RGVsYXldPVwiMTUwMFwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnc2hvd0RlbGF5JylcbiAgICBwdWJsaWMgc2hvd0RlbGF5ID0gNTAwO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIGhpZGluZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcEhpZGVEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5oaWRlRGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW2hpZGVEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdoaWRlRGVsYXknKVxuICAgIHB1YmxpYyBoaWRlRGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWYgdGhlIHRvb2x0aXAgc2hvdWxkIG5vdCBzaG93IHdoZW4gaG92ZXJpbmcgaXRzIHRhcmdldCB3aXRoIHRoZSBtb3VzZS4gKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgICAqIFdoaWxlIHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byAndHJ1ZScgd2lsbCBkaXNhYmxlIHRoZSB1c2VyIGludGVyYWN0aW9ucyB0aGF0IHNob3dzL2hpZGVzIHRoZSB0b29sdGlwLFxuICAgICAqIHRoZSBkZXZlbG9wZXIgd2lsbCBzdGlsbCBiZSBhYmxlIHRvIHNob3cvaGlkZSB0aGUgdG9vbHRpcCB0aHJvdWdoIHRoZSBBUEkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBEaXNhYmxlZFZhbHVlID0gdGhpcy50b29sdGlwVGFyZ2V0LnRvb2x0aXBEaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbdG9vbHRpcERpc2FibGVkXT1cInRydWVcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3Rvb2x0aXBEaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyB0b29sdGlwRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFRvb2x0aXBUYXJnZXQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgdGFyZ2V0KHRhcmdldDogYW55KSB7XG4gICAgICAgIGlmICh0YXJnZXQgIT09IG51bGwgJiYgdGFyZ2V0ICE9PSAnJykge1xuICAgICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgdGFyZ2V0KCk6IGFueSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fdGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25TZXJ2aWNlLmdldCh0aGlzLl90YXJnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBAaGlkZGVuXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldCAmJiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnIHx8IGNvbnRlbnQgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XG4gICAgICAgICAgICBjb25zdCB0b29sdGlwQ29tcG9uZW50ID0gdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoSWd4VG9vbHRpcENvbXBvbmVudCk7XG4gICAgICAgICAgICB0b29sdGlwQ29tcG9uZW50Lmluc3RhbmNlLmNvbnRlbnQgPSBjb250ZW50IGFzIHN0cmluZztcblxuICAgICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdG9vbHRpcENvbXBvbmVudC5pbnN0YW5jZS50b29sdGlwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcmVzcGVjdGl2ZSBuYXRpdmUgZWxlbWVudCBvZiB0aGUgZGlyZWN0aXZlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwVGFyZ2V0RWxlbWVudCA9IHRoaXMudG9vbHRpcFRhcmdldC5uYXRpdmVFbGVtZW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHRvb2x0aXAgdGhhdCBpcyBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgaXMgY3VycmVudGx5IGhpZGRlbi5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdG9vbHRpcEhpZGRlblZhbHVlID0gdGhpcy50b29sdGlwVGFyZ2V0LnRvb2x0aXBIaWRkZW47XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB0b29sdGlwSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMudGFyZ2V0IHx8IHRoaXMudGFyZ2V0LmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0b29sdGlwIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IHN0YXJ0cyBzaG93aW5nLlxuICAgICAqIFRoaXMgZXZlbnQgaXMgZmlyZWQgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgY291bnRkb3duIHRvIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdG9vbHRpcFNob3dpbmcoYXJnczogSVRvb2x0aXBTaG93RXZlbnRBcmdzKSB7XG4gICAgICogICAgYWxlcnQoXCJUb29sdGlwIHN0YXJ0ZWQgc2hvd2luZyFcIik7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgKHRvb2x0aXBTaG93KT0ndG9vbHRpcFNob3dpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBTaG93ID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcFNob3dFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0b29sdGlwIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFyZ2V0IHN0YXJ0cyBoaWRpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRvb2x0aXBIaWRpbmcoYXJnczogSVRvb2x0aXBIaWRlRXZlbnRBcmdzKSB7XG4gICAgICogICAgYWxlcnQoXCJUb29sdGlwIHN0YXJ0ZWQgaGlkaW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiAodG9vbHRpcEhpZGUpPSd0b29sdGlwSGlkaW5nKCRldmVudCknPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwSGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVRvb2x0aXBIaWRlRXZlbnRBcmdzPigpO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9uYXZpZ2F0aW9uU2VydmljZTogSWd4TmF2aWdhdGlvblNlcnZpY2UsIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgc3VwZXIoX2VsZW1lbnQsIF9uYXZpZ2F0aW9uU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25DbGljaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIHB1YmxpYyBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja091dGxldEFuZE91dHNpZGVDbGljaygpO1xuICAgICAgICBjb25zdCBzaG91bGRSZXR1cm4gPSB0aGlzLnByZU1vdXNlRW50ZXJDaGVjaygpO1xuICAgICAgICBpZiAoc2hvdWxkUmV0dXJuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzaG93aW5nQXJncyA9IHsgdGFyZ2V0OiB0aGlzLCB0b29sdGlwOiB0aGlzLnRhcmdldCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLnRvb2x0aXBTaG93LmVtaXQoc2hvd2luZ0FyZ3MpO1xuXG4gICAgICAgIGlmIChzaG93aW5nQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IHRydWU7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQub3Blbih0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7IC8vIENhbGwgb3BlbigpIG9mIElneFRvb2x0aXBEaXJlY3RpdmVcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLnNob3dEZWxheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIHB1YmxpYyBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja091dGxldEFuZE91dHNpZGVDbGljaygpO1xuICAgICAgICBjb25zdCBzaG91bGRSZXR1cm4gPSB0aGlzLnByZU1vdXNlTGVhdmVDaGVjaygpO1xuICAgICAgICBpZiAoc2hvdWxkUmV0dXJuIHx8IHRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IHRydWU7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTsgLy8gQ2FsbCBjbG9zZSgpIG9mIElneFRvb2x0aXBEaXJlY3RpdmVcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5oaWRlRGVsYXkpO1xuXG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcpXG4gICAgcHVibGljIG9uVG91Y2hTdGFydCgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dUb29sdGlwKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnRvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRvY3VtZW50VG91Y2hTdGFydChldmVudCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQgIT09IGV2ZW50LnRhcmdldCAmJlxuICAgICAgICAgICAgIXRoaXMubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICAgICAgaG9yaXpvbnRhbERpcmVjdGlvbjogSG9yaXpvbnRhbEFsaWdubWVudC5DZW50ZXIsXG4gICAgICAgICAgICBob3Jpem9udGFsU3RhcnRQb2ludDogSG9yaXpvbnRhbEFsaWdubWVudC5DZW50ZXIsXG4gICAgICAgICAgICBvcGVuQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oc2NhbGVJbkNlbnRlciwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcxNTBtcycgfSB9KSxcbiAgICAgICAgICAgIGNsb3NlQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oZmFkZU91dCwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICc3NW1zJyB9IH0pXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLnBvc2l0aW9uU3RyYXRlZ3kgPSBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3kocG9zaXRpb25TZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5jbG9zZU9uT3V0c2lkZUNsaWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX292ZXJsYXlEZWZhdWx0cy5jbG9zZU9uRXNjYXBlID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnRhcmdldC5jbG9zaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoaWRpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBIaWRlLmVtaXQoaGlkaW5nQXJncyk7XG5cbiAgICAgICAgICAgIGlmIChoaWRpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmNhbmNlbCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvd3MgdGhlIHRvb2x0aXAgYnkgcmVzcGVjdGluZyB0aGUgJ3Nob3dEZWxheScgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50b29sdGlwVGFyZ2V0LnNob3dUb29sdGlwKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNob3dUb29sdGlwKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcblxuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgLy8gIGlmIGNsb3NlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBmaW5pc2ggaXQsIG9yIGNsb3NlIHRoZSB0b29sdGlwIHdpdGggbm8gYW5pbWF0aW9uXG4gICAgICAgICAgICB0aGlzLnRhcmdldC5mb3JjZUNsb3NlKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnaGlkZURlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuaGlkZVRvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaGlkZVRvb2x0aXAoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5jb2xsYXBzZWQgJiYgdGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC5jb2xsYXBzZWQgfHwgdGhpcy50YXJnZXQudG9CZUhpZGRlbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IHRydWU7XG4gICAgICAgIHRoaXMudGFyZ2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuY2xvc2UoKTsgLy8gQ2FsbCBjbG9zZSgpIG9mIElneFRvb2x0aXBEaXJlY3RpdmVcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5oaWRlRGVsYXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tPdXRsZXRBbmRPdXRzaWRlQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLm91dGxldCkge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLm91dGxldCA9IHRoaXMub3V0bGV0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbWVyZ2VkT3ZlcmxheVNldHRpbmdzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fb3ZlcmxheURlZmF1bHRzLCB0aGlzLm92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGV4ZWN1dGlvbiBpbiBvbk1vdXNlRW50ZXIgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgYWZ0ZXIgdGhpcyBtZXRob2RcbiAgICBwcml2YXRlIHByZU1vdXNlRW50ZXJDaGVjaygpIHtcbiAgICAgICAgLy8gSWYgdG9vbHRpcCBpcyBhYm91dCB0byBiZSBvcGVuZWRcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LnRvQmVTaG93bikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFyZ2V0LnRpbWVvdXRJZCk7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIFRvb2x0aXAgaXMgb3BlbmVkIG9yIGFib3V0IHRvIGJlIGhpZGRlblxuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcblxuICAgICAgICAgICAgLy8gIGlmIGNsb3NlIGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBmaW5pc2ggaXQsIG9yIGNsb3NlIHRoZSB0b29sdGlwIHdpdGggbm8gYW5pbWF0aW9uXG4gICAgICAgICAgICB0aGlzLnRhcmdldC5mb3JjZUNsb3NlKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VMZWF2ZSBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VMZWF2ZUNoZWNrKCk6IGJvb2xlYW4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcblxuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sRUFBYyxRQUFRLEVBQW9CLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xLLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFhckU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQU1ILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFzRG5FOztPQUVHO0lBQ0gsSUFDb0IsTUFBTSxDQUFDLE1BQVc7UUFDbEMsSUFBSSxNQUFNLFlBQVksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBb0IsTUFBTTtR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QUUsSUFBSTtpQkFDbkI7OzBCQXFKUSxRQUFRO3dFQXBJTixTQUFTO3NCQURmLEtBQUs7dUJBQUMsV0FBVztnQkFrQlgsU0FBUztzQkFEZixLQUFLO3VCQUFDLFdBQVc7Z0JBb0JYLGVBQWU7c0JBRHJCLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU81QyxNQUFNO3NCQUR6QixLQUFLO3VCQUFDLGtCQUFrQjtnQkFxQmQsT0FBTztzQkFEakIsS0FBSztnQkFnREMsV0FBVztzQkFEakIsTUFBTTtnQkFtQkEsV0FBVztzQkFEakIsTUFBTTtnQkFjUyxPQUFPO3NCQUR0QixZQUFZO3VCQUFDLE9BQU87Z0JBV2QsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQThCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQXlCbkIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxZQUFZO2dCQWFuQixvQkFBb0I7c0JBRDFCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25Jbml0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRWxlbWVudFJlZiwgT3B0aW9uYWwsIFZpZXdDb250YWluZXJSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIEV2ZW50RW1pdHRlciwgYm9vbGVhbkF0dHJpYnV0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4TmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEF1dG9Qb3NpdGlvblN0cmF0ZWd5LCBIb3Jpem9udGFsQWxpZ25tZW50LCBQb3NpdGlvblNldHRpbmdzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgfSBmcm9tICcuLi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBmYWRlT3V0LCBzY2FsZUluQ2VudGVyIH0gZnJvbSAnaWduaXRldWktYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcFNob3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVG9vbHRpcEhpZGVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgdGFyZ2V0OiBJZ3hUb29sdGlwVGFyZ2V0RGlyZWN0aXZlO1xuICAgIHRvb2x0aXA6IElneFRvb2x0aXBEaXJlY3RpdmU7XG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIFRvb2x0aXAgVGFyZ2V0KiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL3Rvb2x0aXApXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBUb29sdGlwIFRhcmdldCBkaXJlY3RpdmUgaXMgdXNlZCB0byBtYXJrIGFuIEhUTUwgZWxlbWVudCBpbiB0aGUgbWFya3VwIGFzIG9uZSB0aGF0IGhhcyBhIHRvb2x0aXAuXG4gKiBUaGUgdG9vbHRpcCB0YXJnZXQgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVG9vbHRpcCBieSBhc3NpZ25pbmcgdGhlIGV4cG9ydGVkIHRvb2x0aXAgcmVmZXJlbmNlIHRvIHRoZVxuICogdGFyZ2V0J3Mgc2VsZWN0b3IgcHJvcGVydHkuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBleHBvcnRBczogJ3Rvb2x0aXBUYXJnZXQnLFxuICAgIHNlbGVjdG9yOiAnW2lneFRvb2x0aXBUYXJnZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFRvb2x0aXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBJZ3hUb2dnbGVBY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBTaG93RGVsYXkgPSB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd0RlbGF5O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiIFtzaG93RGVsYXldPVwiMTUwMFwiPkhvdmVyIG1lPC9idXR0b24+XG4gICAgICogPHNwYW4gI3Rvb2x0aXBSZWY9XCJ0b29sdGlwXCIgaWd4VG9vbHRpcD5IZWxsbyB0aGVyZSwgSSBhbSBhIHRvb2x0aXAhPC9zcGFuPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnc2hvd0RlbGF5JylcbiAgICBwdWJsaWMgc2hvd0RlbGF5ID0gNTAwO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIHRoYXQgc2hvdWxkIHBhc3MgYmVmb3JlIGhpZGluZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdG9vbHRpcEhpZGVEZWxheSA9IHRoaXMudG9vbHRpcFRhcmdldC5oaWRlRGVsYXk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbiBbaWd4VG9vbHRpcFRhcmdldF09XCJ0b29sdGlwUmVmXCIgW2hpZGVEZWxheV09XCIxNTAwXCI+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdoaWRlRGVsYXknKVxuICAgIHB1YmxpYyBoaWRlRGVsYXkgPSA1MDA7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgaWYgdGhlIHRvb2x0aXAgc2hvdWxkIG5vdCBzaG93IHdoZW4gaG92ZXJpbmcgaXRzIHRhcmdldCB3aXRoIHRoZSBtb3VzZS4gKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgICAqIFdoaWxlIHNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byAndHJ1ZScgd2lsbCBkaXNhYmxlIHRoZSB1c2VyIGludGVyYWN0aW9ucyB0aGF0IHNob3dzL2hpZGVzIHRoZSB0b29sdGlwLFxuICAgICAqIHRoZSBkZXZlbG9wZXIgd2lsbCBzdGlsbCBiZSBhYmxlIHRvIHNob3cvaGlkZSB0aGUgdG9vbHRpcCB0aHJvdWdoIHRoZSBBUEkuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IHRvb2x0aXBEaXNhYmxlZFZhbHVlID0gdGhpcy50b29sdGlwVGFyZ2V0LnRvb2x0aXBEaXNhYmxlZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiBbdG9vbHRpcERpc2FibGVkXT1cInRydWVcIj5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ3Rvb2x0aXBEaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyB0b29sdGlwRGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFRvb2x0aXBUYXJnZXQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgdGFyZ2V0KHRhcmdldDogYW55KSB7XG4gICAgICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBJZ3hUb29sdGlwRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB0YXJnZXQoKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90YXJnZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvblNlcnZpY2UuZ2V0KHRoaXMuX3RhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0b29sdGlwKGNvbnRlbnQ6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0ICYmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgfHwgY29udGVudCBpbnN0YW5jZW9mIFN0cmluZykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXBDb21wb25lbnQgPSB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChJZ3hUb29sdGlwQ29tcG9uZW50KTtcbiAgICAgICAgICAgIHRvb2x0aXBDb21wb25lbnQuaW5zdGFuY2UuY29udGVudCA9IGNvbnRlbnQgYXMgc3RyaW5nO1xuXG4gICAgICAgICAgICB0aGlzLl90YXJnZXQgPSB0b29sdGlwQ29tcG9uZW50Lmluc3RhbmNlLnRvb2x0aXA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSByZXNwZWN0aXZlIG5hdGl2ZSBlbGVtZW50IG9mIHRoZSBkaXJlY3RpdmUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRvb2x0aXBUYXJnZXRFbGVtZW50ID0gdGhpcy50b29sdGlwVGFyZ2V0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgdG9vbHRpcCB0aGF0IGlzIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhcmdldCBpcyBjdXJyZW50bHkgaGlkZGVuLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b29sdGlwSGlkZGVuVmFsdWUgPSB0aGlzLnRvb2x0aXBUYXJnZXQudG9vbHRpcEhpZGRlbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvb2x0aXBIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIHNob3dpbmcuXG4gICAgICogVGhpcyBldmVudCBpcyBmaXJlZCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBjb3VudGRvd24gdG8gc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0b29sdGlwU2hvd2luZyhhcmdzOiBJVG9vbHRpcFNob3dFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBzaG93aW5nIVwiKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIFtpZ3hUb29sdGlwVGFyZ2V0XT1cInRvb2x0aXBSZWZcIiAodG9vbHRpcFNob3cpPSd0b29sdGlwU2hvd2luZygkZXZlbnQpJz5Ib3ZlciBtZTwvYnV0dG9uPlxuICAgICAqIDxzcGFuICN0b29sdGlwUmVmPVwidG9vbHRpcFwiIGlneFRvb2x0aXA+SGVsbG8gdGhlcmUsIEkgYW0gYSB0b29sdGlwITwvc3Bhbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdG9vbHRpcFNob3cgPSBuZXcgRXZlbnRFbWl0dGVyPElUb29sdGlwU2hvd0V2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIHRvb2x0aXAgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyB0YXJnZXQgc3RhcnRzIGhpZGluZy5cbiAgICAgKiBUaGlzIGV2ZW50IGlzIGZpcmVkIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGNvdW50ZG93biB0byBoaWRpbmcgdGhlIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdG9vbHRpcEhpZGluZyhhcmdzOiBJVG9vbHRpcEhpZGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgICBhbGVydChcIlRvb2x0aXAgc3RhcnRlZCBoaWRpbmchXCIpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gW2lneFRvb2x0aXBUYXJnZXRdPVwidG9vbHRpcFJlZlwiICh0b29sdGlwSGlkZSk9J3Rvb2x0aXBIaWRpbmcoJGV2ZW50KSc+SG92ZXIgbWU8L2J1dHRvbj5cbiAgICAgKiA8c3BhbiAjdG9vbHRpcFJlZj1cInRvb2x0aXBcIiBpZ3hUb29sdGlwPkhlbGxvIHRoZXJlLCBJIGFtIGEgdG9vbHRpcCE8L3NwYW4+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRvb2x0aXBIaWRlID0gbmV3IEV2ZW50RW1pdHRlcjxJVG9vbHRpcEhpZGVFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX25hdmlnYXRpb25TZXJ2aWNlOiBJZ3hOYXZpZ2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcihfZWxlbWVudCwgX25hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIHB1YmxpYyBvdmVycmlkZSBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy50YXJnZXQuZm9yY2VDbG9zZSh0aGlzLm1lcmdlZE92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgcHVibGljIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VFbnRlckNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNob3dpbmdBcmdzID0geyB0YXJnZXQ6IHRoaXMsIHRvb2x0aXA6IHRoaXMudGFyZ2V0LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMudG9vbHRpcFNob3cuZW1pdChzaG93aW5nQXJncyk7XG5cbiAgICAgICAgaWYgKHNob3dpbmdBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5vcGVuKHRoaXMubWVyZ2VkT3ZlcmxheVNldHRpbmdzKTsgLy8gQ2FsbCBvcGVuKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZVNob3duID0gZmFsc2U7XG4gICAgICAgIH0sIHRoaXMuc2hvd0RlbGF5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHVibGljIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcERpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoZWNrT3V0bGV0QW5kT3V0c2lkZUNsaWNrKCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJldHVybiA9IHRoaXMucHJlTW91c2VMZWF2ZUNoZWNrKCk7XG4gICAgICAgIGlmIChzaG91bGRSZXR1cm4gfHwgdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG5cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JylcbiAgICBwdWJsaWMgb25Ub3VjaFN0YXJ0KCkge1xuICAgICAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRG9jdW1lbnRUb3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudCAhPT0gZXZlbnQudGFyZ2V0ICYmXG4gICAgICAgICAgICAhdGhpcy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU2V0dGluZ3M6IFBvc2l0aW9uU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICBob3Jpem9udGFsRGlyZWN0aW9uOiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIGhvcml6b250YWxTdGFydFBvaW50OiBIb3Jpem9udGFsQWxpZ25tZW50LkNlbnRlcixcbiAgICAgICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihzY2FsZUluQ2VudGVyLCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzE1MG1zJyB9IH0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7IHBhcmFtczogeyBkdXJhdGlvbjogJzc1bXMnIH0gfSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMucG9zaXRpb25TdHJhdGVneSA9IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25PdXRzaWRlQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheURlZmF1bHRzLmNsb3NlT25Fc2NhcGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGFyZ2V0LmNsb3NpbmcucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhpZGluZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEhpZGUuZW1pdChoaWRpbmdBcmdzKTtcblxuICAgICAgICAgICAgaWYgKGhpZGluZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgdG9vbHRpcCBieSByZXNwZWN0aW5nIHRoZSAnc2hvd0RlbGF5JyBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRvb2x0aXBUYXJnZXQuc2hvd1Rvb2x0aXAoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hvd2luZ0FyZ3MgPSB7IHRhcmdldDogdGhpcywgdG9vbHRpcDogdGhpcy50YXJnZXQsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgdGhpcy50b29sdGlwU2hvdy5lbWl0KHNob3dpbmdBcmdzKTtcblxuICAgICAgICBpZiAoc2hvd2luZ0FyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSB0cnVlO1xuICAgICAgICB0aGlzLnRhcmdldC50aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0Lm9wZW4odGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpOyAvLyBDYWxsIG9wZW4oKSBvZiBJZ3hUb29sdGlwRGlyZWN0aXZlXG4gICAgICAgICAgICB0aGlzLnRhcmdldC50b0JlU2hvd24gPSBmYWxzZTtcbiAgICAgICAgfSwgdGhpcy5zaG93RGVsYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGVzIHRoZSB0b29sdGlwIGJ5IHJlc3BlY3RpbmcgdGhlICdoaWRlRGVsYXknIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudG9vbHRpcFRhcmdldC5oaWRlVG9vbHRpcCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCAmJiB0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0LmNvbGxhcHNlZCB8fCB0aGlzLnRhcmdldC50b0JlSGlkZGVuKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhcmdldC50b0JlSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50YXJnZXQudGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldC5jbG9zZSgpOyAvLyBDYWxsIGNsb3NlKCkgb2YgSWd4VG9vbHRpcERpcmVjdGl2ZVxuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja091dGxldEFuZE91dHNpZGVDbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMub3V0bGV0KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5RGVmYXVsdHMub3V0bGV0ID0gdGhpcy5vdXRsZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBtZXJnZWRPdmVybGF5U2V0dGluZ3MoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5RGVmYXVsdHMsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZXhlY3V0aW9uIGluIG9uTW91c2VFbnRlciBzaG91bGQgYmUgdGVybWluYXRlZCBhZnRlciB0aGlzIG1ldGhvZFxuICAgIHByaXZhdGUgcHJlTW91c2VFbnRlckNoZWNrKCkge1xuICAgICAgICAvLyBJZiB0b29sdGlwIGlzIGFib3V0IHRvIGJlIG9wZW5lZFxuICAgICAgICBpZiAodGhpcy50YXJnZXQudG9CZVNob3duKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YXJnZXQudGltZW91dElkKTtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgVG9vbHRpcCBpcyBvcGVuZWQgb3IgYWJvdXQgdG8gYmUgaGlkZGVuXG4gICAgICAgIGlmICghdGhpcy50YXJnZXQuY29sbGFwc2VkIHx8IHRoaXMudGFyZ2V0LnRvQmVIaWRkZW4pIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgICAgICAvLyAgaWYgY2xvc2UgYW5pbWF0aW9uIGhhcyBzdGFydGVkIGZpbmlzaCBpdCwgb3IgY2xvc2UgdGhlIHRvb2x0aXAgd2l0aCBubyBhbmltYXRpb25cbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LmZvcmNlQ2xvc2UodGhpcy5tZXJnZWRPdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBleGVjdXRpb24gaW4gb25Nb3VzZUxlYXZlIHNob3VsZCBiZSB0ZXJtaW5hdGVkIGFmdGVyIHRoaXMgbWV0aG9kXG4gICAgcHJpdmF0ZSBwcmVNb3VzZUxlYXZlQ2hlY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRhcmdldC50aW1lb3V0SWQpO1xuXG4gICAgICAgIC8vIElmIHRvb2x0aXAgaXMgYWJvdXQgdG8gYmUgb3BlbmVkXG4gICAgICAgIGlmICh0aGlzLnRhcmdldC50b0JlU2hvd24pIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRvQmVTaG93biA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50YXJnZXQudG9CZUhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkS2V5ZG93blRhcmdldFR5cGUgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IENlbGxUeXBlLCBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEJhc2VFeHBvcnRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcbmltcG9ydCB7IElneEV4cG9ydGVyT3B0aW9uc0Jhc2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnRlci1jb21tb24vZXhwb3J0ZXItb3B0aW9ucy1iYXNlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElCYXNlU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlJztcblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBkYXRhIGZyb20gYSBncmlkIGlzIGJlaW5nIGNvcGllZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDbGlwYm9hcmRFdmVudCB7XG4gICAgLyoqIGBkYXRhYCBjYW4gYmUgb2YgYW55IHR5cGUgYW5kIHJlZmVyZXMgdG8gdGhlIGRhdGEgdGhhdCBpcyBiZWluZyBjb3BpZWQvc3RvcmVkIHRvIHRoZSBjbGlwYm9hcmQgKi9cbiAgICBkYXRhOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgYW4gZXh0ZXJuYWwgZXZlbnQgaGFzIGludGVyZXB0ZWQgdGhlIGNvcHlpbmdcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXZlbnQgYXJndW1lbnQgcmVsYXRlZCB0byBncmlkIGNlbGwgaW50ZXJhY3Rpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZENlbGxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgY2VsbCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuICovXG4gICAgY2VsbDogQ2VsbFR5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCByZWxhdGVkIHRvIGdyaWQgcm93IGludGVyYWN0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgcm93IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC4gKi9cbiAgICByb3c6IFJvd1R5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCBmb3IgdGhlIGdyaWQgY29udGV4dE1lbnUgb3V0cHV0ICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkQ29udGV4dE1lbnVFdmVudEFyZ3MgZXh0ZW5kcyBJR3JpZENlbGxFdmVudEFyZ3MsIElHcmlkUm93RXZlbnRBcmdzIHt9XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGdyaWQgZWRpdGluZyBjb21wbGV0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZEVkaXREb25lRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHByaW1hcnlLZXk6IGFueTtcbiAgICByb3dLZXk6IGFueTtcbiAgICBjZWxsSUQ/OiB7XG4gICAgICAgIHJvd0lEOiBhbnk7XG4gICAgICAgIGNvbHVtbklEOiBhbnk7XG4gICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBgcm93RGF0YWAgcmVwcmVzZW50cyB0aGUgdXBkYXRlZC9jb21taXR0ZWQgZGF0YSBvZiB0aGUgcm93IGFmdGVyIHRoZSBlZGl0IChuZXdWYWx1ZSlcbiAgICAgKiBUaGUgb25seSBjYXNlIHJvd0RhdGEgKG9mIHRoZSBjdXJyZW50IG9iamVjdCkgaXMgdXNlZCBkaXJlY3RseSwgaXMgd2hlbiB0aGVyZSBpcyBubyByb3dFZGl0aW5nIG9yIHRyYW5zYWN0aW9ucyBlbmFibGVkXG4gICAgICovXG4gICAgcm93RGF0YTogYW55O1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHByZXZpb3VzIChiZWZvcmUgZWRpdGluZykgdmFsdWUgb2YgdGhlIGVkaXRlZCBjZWxsLlxuICAgICAqIEl0J3MgdXNlZCB3aGVuIHRoZSBldmVudCBoYXMgYmVlbiBzdG9wZWQvZXhpdGVkLlxuICAgICAqL1xuICAgIG9sZFZhbHVlOiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSB2YWx1ZSwgdGhhdCBpcyBiZWluZyBlbnRlcmVkIGluIHRoZSBlZGl0ZWQgY2VsbFxuICAgICAqIFdoZW4gdGhlcmUgaXMgbm8gYG5ld1ZhbHVlYCBhbmQgdGhlIGV2ZW50IGhhcyBlbmRlZCwgdGhlIHZhbHVlIG9mIHRoZSBjZWxsIHJldHVybnMgdG8gdGhlIGBvbGRWYWx1ZWBcbiAgICAgKi9cbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGVkaXRcbiAgICAgKi9cbiAgICBldmVudD86IEV2ZW50O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29sdW1uIGluZm9ybWF0aW9uIG9mIHRoZSBlZGl0ZWQgY2VsbFxuICAgICAqL1xuICAgIGNvbHVtbj86IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBncmlkIGluc3RhbmNlIHRoYXQgb3ducyB0aGUgZWRpdCBldmVudC5cbiAgICAgKi9cbiAgICBvd25lcj86IEdyaWRUeXBlO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBlZGl0aW5nIGNvc2lzdHMgb2YgYWRkaW5nIGEgbmV3IHJvd1xuICAgICAqL1xuICAgIGlzQWRkUm93PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgbmV3IHZhbHVlIHdvdWxkIGJlIHZhbGlkLlxuICAgICAqIEl0IGNhbiBiZSBzZXQgdG8gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIG1ldGhvZHMgZm9yIHZhbGlkYXRpb24gb2YgdGhlIGdyaWRcbiAgICAgKi9cbiAgICB2YWxpZD86IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGdyaWQgZWRpdGluZy5cbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcm93IGFuZCB0aGUgY29sdW1uLCBhcyB3ZWxsIGFzIHRoZSBvbGQgYW5kIG53ZSB2YWx1ZSBvZiB0aGUgZWxlbWVudC9jZWxsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRFZGl0RXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RhdGFDYW5jZWxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSVJvd0RhdGFFdmVudEFyZ3MsIElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBjZWxsSUQ/OiB7XG4gICAgICAgIHJvd0lEOiBhbnk7XG4gICAgICAgIGNvbHVtbklEOiBhbnk7XG4gICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIG9sZFZhbHVlOiBhbnk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGlzQWRkUm93PzogYm9vbGVhbjtcbiAgICBvd25lcjogR3JpZFR5cGU7XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyBhZnRlciBhIGNvbHVtbidzIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkLlxuICogYGluc2VydEF0SW5kZXhgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQvdW5waW5uZWQgYXJlYSB0aGUgY29sdW1uIHdhcyBpbnNlcnRlZC5cbiAqIGBpc1Bpbm5lZGAgcmV0dXJucyB0aGUgYWN0dWFsIHBpbiBzdGF0ZSBvZiB0aGUgY29sdW1uIGFmdGVyIHRoZSBvcGVyYXRpb24gY29tcGxldGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQaW5Db2x1bW5FdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIElmIHBpbm5lZCwgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQgYXJlYSB0aGUgY29sdW1uIGlzIGluc2VydGVkLlxuICAgICAqIElmIHVucGlubmVkLCBzcGVjaWZpZXMgYXQgd2hpY2ggaW5kZXggaW4gdGhlIHVucGlubmVkIGFyZWEgdGhlIGNvbHVtbiBpcyBpbnNlcnRlZC5cbiAgICAgKi9cbiAgICBpbnNlcnRBdEluZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHBpbiBzdGF0ZSBvZiB0aGUgY29sdW1uLlxuICAgICAqIElmIHBpbm5pbmcvdW5waW5uaW5nIGlzIHN1Y2Nlc2Z1bGwsIHZhbHVlIG9mIGBpc1Bpbm5lZGAgd2lsbCBjaGFuZ2UgYWNjb3JkaW5nbHkgd2hlbiByZWFkIGluIHRoZSBcIi1pbmdcIiBhbmQgXCItZWRcIiBldmVudC5cbiAgICAgKi9cbiAgICBpc1Bpbm5lZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIGJlZm9yZSBhIGNvbHVtbidzIHBpbiBzdGF0ZSBpcyBjaGFuZ2VkLlxuICogYGluc2VydEF0SW5kZXhgc3BlY2lmaWVzIGF0IHdoaWNoIGluZGV4IGluIHRoZSBwaW5uZWQvdW5waW5uZWQgYXJlYSB0aGUgY29sdW1uIGlzIGluc2VydGVkLlxuICogQ2FuIGJlIGNoYW5nZWQgaW4gdGhlIGBjb2x1bW5QaW5gIGV2ZW50LlxuICogYGlzUGlubmVkYCByZXR1cm5zIHRoZSBhY3R1YWwgcGluIHN0YXRlIG9mIHRoZSBjb2x1bW4uIFdoZW4gcGlubmluZy91bnBpbm5pbmcgaXMgc3VjY2VzZnVsbCxcbiAqIHRoZSB2YWx1ZSBvZiBgaXNQaW5uZWRgIHdpbGwgY2hhbmdlIGFjY29yZGluZ2x5IHdoZW4gcmVhZCBpbiB0aGUgXCItaW5nXCIgYW5kIFwiLWVkXCIgZXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpbkNvbHVtbkNhbmNlbGxhYmxlRXZlbnRBcmdzIGV4dGVuZHMgSVBpbkNvbHVtbkV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBldmVudHMsIHRoYXQgY2FuIG9jY3VyIGZvciByb3dzIGluIGEgZ3JpZFxuICogRXhhbXBsZSBmb3IgZXZlbnRzOiBhZGRpbmcsIGRlbGV0aW5nLCBzZWxlY3Rpb24sIHRyYW5zYWN0aW9uLCBldGMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RhdGFFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0RhdGFgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgZGF0YTogYW55O1xuICAgIHJvd0RhdGE6IGFueVxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHVuaXF1ZSBrZXksIHRoZSByb3cgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aC5cbiAgICAgKiBBdmFpbGFibGUgaWYgYHByaW1hcnlLZXlgIGV4aXN0c1xuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcHJpbWFyeUtleTogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBncmlkIGluc3RhbmNlIHRoYXQgb3ducyB0aGUgZWRpdCBldmVudC4gKi9cbiAgICBvd25lcjogR3JpZFR5cGU7XG59XG5cblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGNvbHVtbiBpcyBiZWluZyByZXNpemVkICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5SZXNpemVFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGluZm9ybWFudGlvbiBvZiB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgcmVzaXplZCAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgb2xkIHdpZHRoIG9mIHRoZSBjb2x1bW4gYmVmb3JlIHRoZSByZXNpemluZyAqL1xuICAgIHByZXZXaWR0aDogc3RyaW5nO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBuZXcgd2lkdGgsIHRoZSBjb2x1bW4gaXMgYmVpbmcgcmVzaXplZCB0byAqL1xuICAgIG5ld1dpZHRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIGEgY29sdW1uIGlzIGJlaW5nIHJlc2l6ZWRcbiAqIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2x1bW4sIGl0J3Mgb2xkIGFuZCBuZXcgd2lkdGhcbiAqIFRoZSBldmVudCBjYW4gYmUgY2FuY2VsZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uUmVzaXppbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQ29sdW1uUmVzaXplRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBhIHJvdyBpcyBiZWluZyBjaGFuZ2VkXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dTZWxlY3Rpb25FdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2Ygcm93cywgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzZWxlY3RlZCAqL1xuICAgIHJlYWRvbmx5IG9sZFNlbGVjdGlvbjogYW55W107XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5ld2x5IHNlbGVjdGVkIHJvd3MgKi9cbiAgICBuZXdTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgYWxsIGFkZGVkIHJvd3NcbiAgICAgKiBXaGVuZXZlciBhIHJvdyBoYXMgYmVlbiBzZWxlY3RlZCwgdGhlIGFycmF5IGlzIFwicmVmcmVzaGVkXCIgd2l0aCB0aGUgc2VsZWN0ZWQgcm93c1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGFkZGVkOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCByb3dzLCByZW1vdmVkIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAqIFdoZW5ldmVyIGEgcm93IGhhcyBiZWVuIGRlc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIHJvd3MsXG4gICAgICogdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseSBzZWxlY3RlZCwgYnV0IGFyZSBubyBsb25nZXJcbiAgICAgKi9cbiAgICByZWFkb25seSByZW1vdmVkOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBzZWxlY3Rpb24gY2hhbmdlXG4gICAgICogc2VsZWN0aW5nLCBkZXNlbGVjdGluZ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGV2ZW50PzogRXZlbnQ7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhbGwgcm93cyBvZiB0aGUgZ3JpZCBoYXZlIGJlZW4gc2VsZWN0ZWQgKi9cbiAgICByZWFkb25seSBhbGxSb3dzU2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGEgY29sdW1uIGlzIGJlaW5nIGNoYWdlZFxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uU2VsZWN0aW9uRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGNvbHVtbnMsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWQgKi9cbiAgICByZWFkb25seSBvbGRTZWxlY3Rpb246IHN0cmluZ1tdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBuZXdseSBzZWxlY3RlZCBjb2x1bW5zICovXG4gICAgbmV3U2VsZWN0aW9uOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCBhZGRlZCBjb2x1bW5zXG4gICAgICogV2hlbmV2ZXIgYSBjb2x1bW4gaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIHNlbGVjdGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICByZWFkb25seSBhZGRlZDogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgY29sdW1ucywgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgKiBXaGVuZXZlciBhIGNvbHVtbiBoYXMgYmVlbiBkZXNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSBjb2x1bW5zLCB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IHNlbGVjdGVkLCBidXQgYXJlIG5vIGxvbmdlclxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlbW92ZWQ6IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIHNlbGVjdGlvbiBjaGFuZ2VcbiAgICAgKiBzZWxlY3RpbmcsIGRlc2VsZWN0aW5nXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2VhcmNoSW5mbyBleHRlbmRzIElCYXNlU2VhcmNoSW5mbyB7XG4gICAgbWF0Y2hJbmZvQ2FjaGU6IGFueVtdO1xuICAgIGFjdGl2ZU1hdGNoSW5kZXg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBncmlkIHRvb2xiYXIgZXhwb3J0IGV2ZW50LlxuICogSXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyaWQgaW5zdGFuY2UsIGV4cG9ydGVyIHNlcnZpY2UsIGV4cG9ydCBvcHRpb25zLFxuICogYW5kIGFsbG93cyB0aGUgZXZlbnQgdG8gYmUgY2FuY2VsZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRUb29sYmFyRXhwb3J0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBgZ3JpZGAgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byB0aGUgaW5zdGFuY2Ugb2YgdGhlIGdyaWQgdGUgZXZlbnQgb3JpZ2luYXRlZCBmcm9tICovXG4gICAgZ3JpZDogR3JpZFR5cGU7XG4gICAgLyoqXG4gICAgICogVGhlIGBleHBvcnRlcmAgaXMgYSBiYXNlIHNlcnZpY2UuXG4gICAgICogVGhlIHR5cGUgKGFuIGFic3RyYWN0IGNsYXNzIGBJZ3hCYXNlRXhwb3J0ZXJgKSBoYXMgaXQncyBvd24gcHJvcGVydGllcyBhbmQgbWV0aG9kc1xuICAgICAqIEl0IGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBmb3JtYXQgYW5kIG9wdGlvbnMgb2YgdGhlIGV4cG9ydCwgdGhlIGV4cG9ydGVkIGVsZW1lbnRcbiAgICAgKiBhbmQgbWV0aG9kcyBmb3IgcHJlcGFyaW5nIHRoZSBkYXRhIGZyb20gdGhlIGVsZW1lbnRzIGZvciBleHBvcnRpbmdcbiAgICAgKi9cbiAgICBleHBvcnRlcjogSWd4QmFzZUV4cG9ydGVyO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCBzZXR0aW5ncywgdGhhdCBjYW4gYmUgZ2l2ZW4gdG8gYW4gZXhwb3J0XG4gICAgICogVGhlIHR5cGUgKGFuIGFic3RyYWN0IGNsYXNzIGBJZ3hFeHBvcnRlck9wdGlvbnNCYXNlYCkgaGFzIHByb3BlcnRpZXMgZm9yIGNvbHVtbiBzZXR0aW5nc1xuICAgICAqICh3aGV0aGVyIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQpIGFzIHdlbGwgYXMgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGEgZmlsZSBuYW1lXG4gICAgICovXG4gICAgb3B0aW9uczogSWd4RXhwb3J0ZXJPcHRpb25zQmFzZTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gdGhlIHN0YXJ0IG9mIGEgY29sdW1uIG1vdmluZyBvcGVyYXRpb24gaW4gYSBncmlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uTW92aW5nU3RhcnRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRvaW4gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNvdXJjZTogQ29sdW1uVHlwZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gYSBjb2x1bW4gbW92aW5nIG9wZXJhdGlvbiBpbiBhIGdyaWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbk1vdmluZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhhdCBpcyBiZWluZyBtb3ZlZC5cbiAgICAgKiBUaGUgYENvbHVtblR5cGVgIGNvbnRhaW5zIHRoZSBpbmZvcm1hdG9pbiAodGhlIGdyaWQgaXQgYmVsb25ncyB0bywgY3NzIGRhdGEsIHNldHRpbmdzLCBldGMuKSBvZiB0aGUgY29sdW1uIGluIGl0cyBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgc291cmNlOiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaGFzIGJlZW4gaW50ZXJlcHRlZCBhbmQgc3RvcHBlZFxuICAgICAqIElmIHRoZSB2YWx1ZSBiZWNvbWVzIFwidHJ1ZVwiLCBpdCByZXR1cm5zL2V4aXRzIGZyb20gdGhlIG1ldGhvZCwgaW5zdGFuY2lhdGluZyB0aGUgaW50ZXJmYWNlXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKiogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byB0aGUgZW5kIG9mIGEgY29sdW1uIG1vdmluZyBvcGVyYXRpb24gaW4gYSBncmlkICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5Nb3ZpbmdFbmRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogVGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgcmVwcmVzZW50cyB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRvaW4gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNvdXJjZTogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBUaGUgdGFyZ2V0IG9mIHRoZSBldmVudCByZXByZXNlbnRzIHRoZSBjb2x1bW4sIHRoZSBzb3VyY2UgaXMgYmVpbmcgbW92ZWQgdG8uXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRvaW4gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHRhcmdldDogQ29sdW1uVHlwZTtcbiAgICAvKipcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGV2ZW50LCBlbWl0dGVkIHdoZW4ga2V5ZG93biBpcyB0cmlnZ2VyZWQgb3ZlciBlbGVtZW50IGluc2lkZSBncmlkJ3MgYm9keVxuICogVGhpcyBldmVudCBpcyBmaXJlZCBvbmx5IGlmIHRoZSBrZXkgY29tYmluYXRpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkS2V5ZG93bkV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIGB0YXJnZXRUeXBlYCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXRlZCBvYmplY3QuIEZvciBleGFtcGxlIGEgY2VsbCBvciBhIHJvdyAqL1xuICAgIHRhcmdldFR5cGU6IEdyaWRLZXlkb3duVGFyZ2V0VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gYW5kIGRldGFpbHMgb2YgdGhlIG9iamVjdCBpdHNlbGYgKi9cbiAgICB0YXJnZXQ6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgb2NjdXJlZC4gKi9cbiAgICBldmVudDogRXZlbnQ7XG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFRoZSBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiBnZXR0aW5nIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGEgY2VydGFpbiBjZWxsICovXG5leHBvcnQgaW50ZXJmYWNlIElDZWxsUG9zaXRpb24ge1xuICAgIC8qKiBJdCByZXR1cm5zIHRoZSBwb3NpdGlvbiAoaW5kZXgpIG9mIHRoZSByb3csIHRoZSBjZWxsIGlzIGluICovXG4gICAgcm93SW5kZXg6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBJdCByZXR1cm5zIHRoZSBwb3NpdGlvbiAoaW5kZXgpIG9mIHRoZSBjb2x1bm0sIHRoZSBjZWxsIGlzIGluXG4gICAgICogQ291bnRzIG9ubHkgdGhlIHZpc2libGUgKG5vbiBoaWRkZW4pIGNvbHVtbnNcbiAgICAgKi9cbiAgICB2aXNpYmxlQ29sdW1uSW5kZXg6IG51bWJlcjtcbn1cblxuLyoqIEVtaXR0ZWQgd2hlbiBhIGRyYWdnaW5nIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCAod2hlbiB0aGUgcm93IGlzIGRyb3BwZWQpICovXG5leHBvcnQgaW50ZXJmYWNlIElSb3dEcmFnRW5kRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBkcmFnIGRpcmVjdGl2ZSBvciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGRyYWcgb3BlcmF0aW9uICovXG4gICAgZHJhZ0RpcmVjdGl2ZTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgcm93IHRoYXQgaXMgYmVpbmcgZHJhZ2dlZC4gKi9cbiAgICBkcmFnRGF0YTogUm93VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgSFRNTCBlbGVtZW50IGl0c2VsZiAqL1xuICAgIGRyYWdFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICAvKiogYGFuaW1hdGlvbmAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBpcyBhbmltYXRlZCAqL1xuICAgIGFuaW1hdGlvbjogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFbWl0dGVkIHdoZW4gYSBkcmFnZ2luZyBvcGVyYXRpb24gaXMgc3RhcnRpbmcgKHdoZW4gdGhlIHJvdyBpcyBcInBpY2tlZFwiKVxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93RHJhZ1N0YXJ0RXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBkcmFnIGRpcmVjdGl2ZSBvciBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGRyYWcgb3BlcmF0aW9uICovXG4gICAgZHJhZ0RpcmVjdGl2ZTogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgcm93IHRoYXQgaXMgYmVpbmcgZHJhZ2dlZC4gKi9cbiAgICBkcmFnRGF0YTogUm93VHlwZTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgSFRNTCBlbGVtZW50IGl0c2VsZiAqL1xuICAgIGRyYWdFbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqINCgZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHRoZSByb3cncyBleHBhbnNpb24gc3RhdGUgYmVpbmcgY2hhbmdlZCBpbiBhIGdyaWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd1RvZ2dsZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBJRCBvZiB0aGUgcm93IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQgKHdoaWNoIHN0YXRlIGlzIGNoYW5nZWQpXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICByb3dJRDogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSByb3cgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBoYXMgZW5kZWRcbiAgICAgKiBJbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBpcyBiZWluZyBleHBhbmRlZCAodHJ1ZSkgb3IgY29sbGFwc2VkIChmYWxzZSlcbiAgICAgKi9cbiAgICBleHBhbmRlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGV4cGFudGlvbi9jb2xsYXBzZVxuICAgICAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbmNpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gYSByb3cncyBwaW4gc3RhdGUgY2hhbmdlcy5cbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpblJvd0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgSUQgb2YgdGhlIHJvdywgdGhhdCB3YXMgcGlubmVkL3VucGlubmVkLlxuICAgICAqIElEIGlzIGVpdGhlciB0aGUgcHJpbWFyeUtleSB2YWx1ZSBvciB0aGUgZGF0YSByZWNvcmQgaW5zdGFuY2UuXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICByZWFkb25seSByb3dJRDogYW55O1xuICAgIHJlYWRvbmx5IHJvd0tleTogYW55O1xuICAgIHJvdz86IFJvd1R5cGU7XG4gICAgLyoqIFRoZSBpbmRleCBhdCB3aGljaCB0byBwaW4gdGhlIHJvdyBpbiB0aGUgcGlubmVkIHJvd3MgY29sbGVjdGlvbi4gKi9cbiAgICBpbnNlcnRBdEluZGV4PzogbnVtYmVyO1xuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgcm93IGlzIHBpbm5lZCBvciB1bnBpbm5lZC4gKi9cbiAgICByZWFkb25seSBpc1Bpbm5lZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBncmlkIGlzIHNjcm9sbGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkU2Nyb2xsRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBUaGUgc2Nyb2xsIGRpcmVjdGlvbiAtIHZlcnRpY2FsIG9yIGhvcml6b250YWwuICovXG4gICAgZGlyZWN0aW9uOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBvcmlnaW5hbCBicm93c2VyIHNjcm9sbCBldmVudC4gKi9cbiAgICBldmVudDogRXZlbnQ7XG4gICAgLyoqIFRoZSBuZXcgc2Nyb2xsIHBvc2l0aW9uICovXG4gICAgc2Nyb2xsUG9zaXRpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBjaGVja2JveCBpbiB0aGUgY2hlY2tib3hcbiAqIGxpc3Qgb2YgYW4gSWd4Q29sdW1uQWN0aW9ucyBjb21wb25lbnQgaXMgY2xpY2tlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uVG9nZ2xlZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIGNvbHVtbiB0aGF0IGlzIHRvZ2dsZWQuICovXG4gICAgY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIC8qKiBUaGUgY2hlY2tlZCBzdGF0ZSBhZnRlciB0aGUgYWN0aW9uLiAqL1xuICAgIGNoZWNrZWQ6IGJvb2xlYW47XG59XG5cbi8qKiBFbW1pdGVkIHdoZW4gdGhlIGFjdGl2ZSBub2RlIGlzIGNoYW5nZWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGl2ZU5vZGVDaGFuZ2VFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHJvdyBpbmRleCBvZiB0aGUgYWN0aXZlIG5vZGUgKi9cbiAgICByb3c6IG51bWJlcjtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgY29sdW1uIGluZGV4IG9mIHRoZSBhY3RpdmUgbm9kZSAqL1xuICAgIGNvbHVtbjogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgaGllcmFyY2hpY2FsIGxldmVsIG9mIHRoZSBhY3RpdmUgbm9kZVxuICAgICAqL1xuICAgIGxldmVsPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlIGFjdGl2ZSBub2RlLlxuICAgICAqIFRoZSBHcmlkS2V5ZG93blRhcmdldFR5cGUgaXMgYW4gZW51bSBvciB0aGF0IHNwZWNpZmllcyB0aGUgcG9zc2libGUgdGFyZ2V0IHR5cGVzXG4gICAgICovXG4gICAgdGFnOiBHcmlkS2V5ZG93blRhcmdldFR5cGU7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBldmVudCBhcmd1bWVudHMgcmVsYXRlZCB0byBzb3J0aW5nIGFuZCBncm91cGluZyBvcGVyYXRpb25zXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTb3J0aW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgc29ydGluZyBleHByZXNzaW9ucyBhcHBsaWVkIHRvIHRoZSBncmlkLlxuICAgICAqIEl0IGNhbiBiZSBhIHNpbmdsZSBzb3J0aW5nIGV4cHJlc3Npb24gb3IgYW4gYXJyYXkgb2YgdGhlbVxuICAgICAqIFRoZSBleHByZXNzaW9uIGNvbnRhaW5zIGluZm9ybWF0aW9uIGxpa2UgZmlsZSBuYW1lLCB3aGV0aGVyIHRoZSBsZXR0ZXIgY2FzZSBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50LCBldGMuXG4gICAgICovXG4gICAgc29ydGluZ0V4cHJlc3Npb25zPzogSVNvcnRpbmdFeHByZXNzaW9uIHwgQXJyYXk8SVNvcnRpbmdFeHByZXNzaW9uPjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGdvdXBpbmcgZXhwcmVzc2lvbnMgYXBwbGllZCB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCBjYW4gYmUgYSBzaW5nbGUgZ3JvdXBpbmcgZXhwcmVzc2lvbiBvciBhbiBhcnJheSBvZiB0aGVtXG4gICAgICogVGhlIGV4cHJlc3Npb24gY29udGFpbnMgaW5mb3JtYXRpb24gbGlrZSB0aGUgc29ydGluZyBleHByZXNzaW9uIGFuZCBjcml0ZXJpYSBieSB3aGljaCB0aGUgZWxlbWVudHMgd2lsbCBiZSBncm91cGVkXG4gICAgICovXG4gICAgZ3JvdXBpbmdFeHByZXNzaW9ucz86IElHcm91cGluZ0V4cHJlc3Npb24gfCBBcnJheTxJR3JvdXBpbmdFeHByZXNzaW9uPjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGZpbHRlcmluZyBvcGVyYXRpb25zXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZmlsdGVyaW5nIGV4cHJlc3Npb25zIGFwcGxpZWQgdG8gdGhlIGdyaWQuXG4gICAgICogVGhlIGV4cHJlc3Npb24gY29udGFpbnMgaW5mb3JtYXRpb24gbGlrZSBmaWx0ZXJpbmcgb3BlcmFuZHMgYW5kIG9wZXJhdG9yLCBhbiBleHByZXNzaW9uIG9yIGNvbmRpdGlvbiwgZXRjLlxuICAgICAqL1xuICAgIGZpbHRlcmluZ0V4cHJlc3Npb25zOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xufVxuXG4vKiogVGhlIGV2ZW50IGFyZ3VtZW50cyBhZnRlciBhIGNvbHVtbidzIHZpc2liaWxpdHkgaXMgY2hhbmdlZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhlIGV2ZW50IG9yaWdpbmF0ZWQgZnJvbSAqL1xuICAgIGNvbHVtbjogYW55O1xuICAgIC8qKlxuICAgICAqIFRoZSBuZXcgaGlkZGVuIHN0YXRlIHRoYXQgdGhlIGNvbHVtbiB3aWxsIGhhdmUsIGlmIG9wZXJhdGlvbiBpcyBzdWNjZXNmdWxsLlxuICAgICAqIFdpbGwgYmUgYHRydWVgIHdoZW4gaGlkaW5nIGFuZCBgZmFsc2VgIHdoZW4gc2hvd2luZy5cbiAgICAgKi9cbiAgICBuZXdWYWx1ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gYSBjb2x1bW4ncyB2aXNpYmlsaXR5IGlzIGNoYW5nZWQuXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICogSXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbHVtbiBhbmQgdGhlIGl0J3MgdmlzaWJpbGl0eSBhZnRlciB0aGUgb3BlcmF0aW9uICh3aWxsIGJlIGB0cnVlYCB3aGVuIGhpZGluZyBhbmQgYGZhbHNlYCB3aGVuIHNob3dpbmcpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2luZ0V2ZW50QXJncyBleHRlbmRzIElDb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZEV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBHcmlkS2V5ZG93blRhcmdldFR5cGUgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7IENlbGxUeXBlLCBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgUm93VHlwZSB9IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneEJhc2VFeHBvcnRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cG9ydGVyLWNvbW1vbi9iYXNlLWV4cG9ydC1zZXJ2aWNlJztcbmltcG9ydCB7IElneEV4cG9ydGVyT3B0aW9uc0Jhc2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnRlci1jb21tb24vZXhwb3J0ZXItb3B0aW9ucy1iYXNlJztcbmltcG9ydCB7IElTb3J0aW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElCYXNlU2VhcmNoSW5mbyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdGV4dC1oaWdobGlnaHQvdGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlJztcblxuLyoqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBkYXRhIGZyb20gYSBncmlkIGlzIGJlaW5nIGNvcGllZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRDbGlwYm9hcmRFdmVudCB7XG4gICAgLyoqIGBkYXRhYCBjYW4gYmUgb2YgYW55IHR5cGUgYW5kIHJlZmVycyB0byB0aGUgZGF0YSB0aGF0IGlzIGJlaW5nIGNvcGllZC9zdG9yZWQgdG8gdGhlIGNsaXBib2FyZCAqL1xuICAgIGRhdGE6IGFueVtdO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciBhbiBleHRlcm5hbCBldmVudCBoYXMgaW50ZXJjZXB0ZWQgdGhlIGNvcHlpbmdcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbnRpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgYW4gZXZlbnQgYXJndW1lbnQgcmVsYXRlZCB0byBncmlkIGNlbGwgaW50ZXJhY3Rpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZENlbGxFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgY2VsbCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQuICovXG4gICAgY2VsbDogQ2VsbFR5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCByZWxhdGVkIHRvIGdyaWQgcm93IGludGVyYWN0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgcm93IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudC4gKi9cbiAgICByb3c6IFJvd1R5cGU7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQgdGhhdCBvY3VycmVkXG4gICAgICogRXhhbXBsZXMgb2Ygc3VjaCBldmVudHMgaW5jbHVkZTogc2VsZWN0aW5nLCBjbGlja2luZywgZG91YmxlIGNsaWNraW5nLCBldGMuXG4gICAgICovXG4gICAgZXZlbnQ6IEV2ZW50O1xufVxuXG4vKiogUmVwcmVzZW50cyBhbiBldmVudCBhcmd1bWVudCBmb3IgdGhlIGdyaWQgY29udGV4dE1lbnUgb3V0cHV0ICovXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkQ29udGV4dE1lbnVFdmVudEFyZ3MgZXh0ZW5kcyBJR3JpZENlbGxFdmVudEFyZ3MsIElHcmlkUm93RXZlbnRBcmdzIHt9XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGdyaWQgZWRpdGluZyBjb21wbGV0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZEVkaXREb25lRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcm93SUQ6IGFueTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93S2V5YCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHByaW1hcnlLZXk6IGFueTtcbiAgICByb3dLZXk6IGFueTtcbiAgICBjZWxsSUQ/OiB7XG4gICAgICAgIHJvd0lEOiBhbnk7XG4gICAgICAgIGNvbHVtbklEOiBhbnk7XG4gICAgICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBgcm93RGF0YWAgcmVwcmVzZW50cyB0aGUgdXBkYXRlZC9jb21taXR0ZWQgZGF0YSBvZiB0aGUgcm93IGFmdGVyIHRoZSBlZGl0IChuZXdWYWx1ZSlcbiAgICAgKiBUaGUgb25seSBjYXNlIHJvd0RhdGEgKG9mIHRoZSBjdXJyZW50IG9iamVjdCkgaXMgdXNlZCBkaXJlY3RseSwgaXMgd2hlbiB0aGVyZSBpcyBubyByb3dFZGl0aW5nIG9yIHRyYW5zYWN0aW9ucyBlbmFibGVkXG4gICAgICovXG4gICAgcm93RGF0YTogYW55O1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIHByZXZpb3VzIChiZWZvcmUgZWRpdGluZykgdmFsdWUgb2YgdGhlIGVkaXRlZCBjZWxsLlxuICAgICAqIEl0J3MgdXNlZCB3aGVuIHRoZSBldmVudCBoYXMgYmVlbiBzdG9wcGVkL2V4aXRlZC5cbiAgICAgKi9cbiAgICBvbGRWYWx1ZTogYW55O1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgdmFsdWUsIHRoYXQgaXMgYmVpbmcgZW50ZXJlZCBpbiB0aGUgZWRpdGVkIGNlbGxcbiAgICAgKiBXaGVuIHRoZXJlIGlzIG5vIGBuZXdWYWx1ZWAgYW5kIHRoZSBldmVudCBoYXMgZW5kZWQsIHRoZSB2YWx1ZSBvZiB0aGUgY2VsbCByZXR1cm5zIHRvIHRoZSBgb2xkVmFsdWVgXG4gICAgICovXG4gICAgbmV3VmFsdWU/OiBhbnk7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBoYXMgdHJpZ2dlcmVkIHRoZSBlZGl0XG4gICAgICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiBvZiB0aGUgZWRpdGVkIGNlbGxcbiAgICAgKi9cbiAgICBjb2x1bW4/OiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogUmVwcmVzZW50cyB0aGUgZ3JpZCBpbnN0YW5jZSB0aGF0IG93bnMgdGhlIGVkaXQgZXZlbnQuXG4gICAgICovXG4gICAgb3duZXI/OiBHcmlkVHlwZTtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIEluZGljYXRlcyBpZiB0aGUgZWRpdGluZyBjb25zaXN0cyBvZiBhZGRpbmcgYSBuZXcgcm93XG4gICAgICovXG4gICAgaXNBZGRSb3c/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsXG4gICAgICogSW5kaWNhdGVzIGlmIHRoZSBuZXcgdmFsdWUgd291bGQgYmUgdmFsaWQuXG4gICAgICogSXQgY2FuIGJlIHNldCB0byByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbWV0aG9kcyBmb3IgdmFsaWRhdGlvbiBvZiB0aGUgZ3JpZFxuICAgICAqL1xuICAgIHZhbGlkPzogYm9vbGVhbjtcbn1cblxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gZ3JpZCBlZGl0aW5nLlxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb3cgYW5kIHRoZSBjb2x1bW4sIGFzIHdlbGwgYXMgdGhlIG9sZCBhbmQgbndlIHZhbHVlIG9mIHRoZSBlbGVtZW50L2NlbGxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZEVkaXRFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUm93RGF0YUNhbmNlbGFibGVFdmVudEFyZ3MgZXh0ZW5kcyBJUm93RGF0YUV2ZW50QXJncywgSUdyaWRFZGl0RXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIGNlbGxJRD86IHtcbiAgICAgICAgcm93SUQ6IGFueTtcbiAgICAgICAgY29sdW1uSUQ6IGFueTtcbiAgICAgICAgcm93SW5kZXg6IG51bWJlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgb2xkVmFsdWU6IGFueTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIG5ld1ZhbHVlPzogYW55O1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgaXNBZGRSb3c/OiBib29sZWFuO1xuICAgIG93bmVyOiBHcmlkVHlwZTtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIGFmdGVyIGEgY29sdW1uJ3MgcGluIHN0YXRlIGlzIGNoYW5nZWQuXG4gKiBgaW5zZXJ0QXRJbmRleGBzcGVjaWZpZXMgYXQgd2hpY2ggaW5kZXggaW4gdGhlIHBpbm5lZC91bnBpbm5lZCBhcmVhIHRoZSBjb2x1bW4gd2FzIGluc2VydGVkLlxuICogYGlzUGlubmVkYCByZXR1cm5zIHRoZSBhY3R1YWwgcGluIHN0YXRlIG9mIHRoZSBjb2x1bW4gYWZ0ZXIgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpbkNvbHVtbkV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogSWYgcGlubmVkLCBzcGVjaWZpZXMgYXQgd2hpY2ggaW5kZXggaW4gdGhlIHBpbm5lZCBhcmVhIHRoZSBjb2x1bW4gaXMgaW5zZXJ0ZWQuXG4gICAgICogSWYgdW5waW5uZWQsIHNwZWNpZmllcyBhdCB3aGljaCBpbmRleCBpbiB0aGUgdW5waW5uZWQgYXJlYSB0aGUgY29sdW1uIGlzIGluc2VydGVkLlxuICAgICAqL1xuICAgIGluc2VydEF0SW5kZXg6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhY3R1YWwgcGluIHN0YXRlIG9mIHRoZSBjb2x1bW4uXG4gICAgICogSWYgcGlubmluZy91bnBpbm5pbmcgaXMgc3VjY2Vzc2Z1bCwgdmFsdWUgb2YgYGlzUGlubmVkYCB3aWxsIGNoYW5nZSBhY2NvcmRpbmdseSB3aGVuIHJlYWQgaW4gdGhlIFwiLWluZ1wiIGFuZCBcIi1lZFwiIGV2ZW50LlxuICAgICAqL1xuICAgIGlzUGlubmVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgYmVmb3JlIGEgY29sdW1uJ3MgcGluIHN0YXRlIGlzIGNoYW5nZWQuXG4gKiBgaW5zZXJ0QXRJbmRleGBzcGVjaWZpZXMgYXQgd2hpY2ggaW5kZXggaW4gdGhlIHBpbm5lZC91bnBpbm5lZCBhcmVhIHRoZSBjb2x1bW4gaXMgaW5zZXJ0ZWQuXG4gKiBDYW4gYmUgY2hhbmdlZCBpbiB0aGUgYGNvbHVtblBpbmAgZXZlbnQuXG4gKiBgaXNQaW5uZWRgIHJldHVybnMgdGhlIGFjdHVhbCBwaW4gc3RhdGUgb2YgdGhlIGNvbHVtbi4gV2hlbiBwaW5uaW5nL3VucGlubmluZyBpcyBzdWNjZXNzZnVsLFxuICogdGhlIHZhbHVlIG9mIGBpc1Bpbm5lZGAgd2lsbCBjaGFuZ2UgYWNjb3JkaW5nbHkgd2hlbiByZWFkIGluIHRoZSBcIi1pbmdcIiBhbmQgXCItZWRcIiBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUGluQ29sdW1uQ2FuY2VsbGFibGVFdmVudEFyZ3MgZXh0ZW5kcyBJUGluQ29sdW1uRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIGV2ZW50cywgdGhhdCBjYW4gb2NjdXIgZm9yIHJvd3MgaW4gYSBncmlkXG4gKiBFeGFtcGxlIGZvciBldmVudHM6IGFkZGluZywgZGVsZXRpbmcsIHNlbGVjdGlvbiwgdHJhbnNhY3Rpb24sIGV0Yy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93RGF0YUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDE3LjEuMC4gVXNlIHRoZSBgcm93RGF0YWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBkYXRhOiBhbnk7XG4gICAgcm93RGF0YTogYW55XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgdW5pcXVlIGtleSwgdGhlIHJvdyBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoLlxuICAgICAqIEF2YWlsYWJsZSBpZiBgcHJpbWFyeUtleWAgZXhpc3RzXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwcmltYXJ5S2V5OiBhbnk7XG4gICAgcm93S2V5OiBhbnk7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGdyaWQgaW5zdGFuY2UgdGhhdCBvd25zIHRoZSBlZGl0IGV2ZW50LiAqL1xuICAgIG93bmVyOiBHcmlkVHlwZTtcbn1cblxuXG4vKiogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIGEgY29sdW1uIGlzIGJlaW5nIHJlc2l6ZWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblJlc2l6ZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIHJlc2l6ZWQgKi9cbiAgICBjb2x1bW46IENvbHVtblR5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG9sZCB3aWR0aCBvZiB0aGUgY29sdW1uIGJlZm9yZSB0aGUgcmVzaXppbmcgKi9cbiAgICBwcmV2V2lkdGg6IHN0cmluZztcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbmV3IHdpZHRoLCB0aGUgY29sdW1uIGlzIGJlaW5nIHJlc2l6ZWQgdG8gKi9cbiAgICBuZXdXaWR0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGNvbHVtbiBpcyBiZWluZyByZXNpemVkXG4gKiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sdW1uLCBpdCdzIG9sZCBhbmQgbmV3IHdpZHRoXG4gKiBUaGUgZXZlbnQgY2FuIGJlIGNhbmNlbGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblJlc2l6aW5nRXZlbnRBcmdzIGV4dGVuZHMgSUNvbHVtblJlc2l6ZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG59XG5cbi8qKlxuICogVGhlIGV2ZW50IGFyZ3VtZW50cyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYSByb3cgaXMgYmVpbmcgY2hhbmdlZFxuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93U2VsZWN0aW9uRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIHJvd3MsIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gc2VsZWN0ZWQgKi9cbiAgICByZWFkb25seSBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBuZXdseSBzZWxlY3RlZCByb3dzICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCBhZGRlZCByb3dzXG4gICAgICogV2hlbmV2ZXIgYSByb3cgaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIHNlbGVjdGVkIHJvd3NcbiAgICAgKi9cbiAgICByZWFkb25seSBhZGRlZDogYW55W107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBhcnJheSBvZiBhbGwgcm93cywgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgKiBXaGVuZXZlciBhIHJvdyBoYXMgYmVlbiBkZXNlbGVjdGVkLCB0aGUgYXJyYXkgaXMgXCJyZWZyZXNoZWRcIiB3aXRoIHRoZSByb3dzLFxuICAgICAqIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc2VsZWN0ZWQsIGJ1dCBhcmUgbm8gbG9uZ2VyXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVtb3ZlZDogYW55W107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICAgICAqIHNlbGVjdGluZywgZGVzZWxlY3RpbmdcbiAgICAgKi9cbiAgICByZWFkb25seSBldmVudD86IEV2ZW50O1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYWxsIHJvd3Mgb2YgdGhlIGdyaWQgaGF2ZSBiZWVuIHNlbGVjdGVkICovXG4gICAgcmVhZG9ubHkgYWxsUm93c1NlbGVjdGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnQgYXJndW1lbnRzIHdoZW4gdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBhIGNvbHVtbiBpcyBiZWluZyBjaGFuZ2VkXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5TZWxlY3Rpb25FdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgY29sdW1ucywgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzZWxlY3RlZCAqL1xuICAgIHJlYWRvbmx5IG9sZFNlbGVjdGlvbjogc3RyaW5nW107XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG5ld2x5IHNlbGVjdGVkIGNvbHVtbnMgKi9cbiAgICBuZXdTZWxlY3Rpb246IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgYWxsIGFkZGVkIGNvbHVtbnNcbiAgICAgKiBXaGVuZXZlciBhIGNvbHVtbiBoYXMgYmVlbiBzZWxlY3RlZCwgdGhlIGFycmF5IGlzIFwicmVmcmVzaGVkXCIgd2l0aCB0aGUgc2VsZWN0ZWQgY29sdW1uc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGFkZGVkOiBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGFsbCBjb2x1bW5zLCByZW1vdmVkIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAqIFdoZW5ldmVyIGEgY29sdW1uIGhhcyBiZWVuIGRlc2VsZWN0ZWQsIHRoZSBhcnJheSBpcyBcInJlZnJlc2hlZFwiIHdpdGggdGhlIGNvbHVtbnMsIHRoYXQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgc2VsZWN0ZWQsIGJ1dCBhcmUgbm8gbG9uZ2VyXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVtb3ZlZDogc3RyaW5nW107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgb3JpZ2luYWwgZXZlbnQsIHRoYXQgaGFzIHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZVxuICAgICAqIHNlbGVjdGluZywgZGVzZWxlY3RpbmdcbiAgICAgKi9cbiAgICByZWFkb25seSBldmVudD86IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hJbmZvIGV4dGVuZHMgSUJhc2VTZWFyY2hJbmZvIHtcbiAgICBtYXRjaEluZm9DYWNoZTogYW55W107XG4gICAgYWN0aXZlTWF0Y2hJbmRleDogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGdyaWQgdG9vbGJhciBleHBvcnQgZXZlbnQuXG4gKiBJdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZCBpbnN0YW5jZSwgZXhwb3J0ZXIgc2VydmljZSwgZXhwb3J0IG9wdGlvbnMsXG4gKiBhbmQgYWxsb3dzIHRoZSBldmVudCB0byBiZSBjYW5jZWxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFRvb2xiYXJFeHBvcnRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIGBncmlkYCByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW5jZSBvZiB0aGUgZ3JpZCB0ZSBldmVudCBvcmlnaW5hdGVkIGZyb20gKi9cbiAgICBncmlkOiBHcmlkVHlwZTtcbiAgICAvKipcbiAgICAgKiBUaGUgYGV4cG9ydGVyYCBpcyBhIGJhc2Ugc2VydmljZS5cbiAgICAgKiBUaGUgdHlwZSAoYW4gYWJzdHJhY3QgY2xhc3MgYElneEJhc2VFeHBvcnRlcmApIGhhcyBpdCdzIG93biBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzXG4gICAgICogSXQgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGZvcm1hdCBhbmQgb3B0aW9ucyBvZiB0aGUgZXhwb3J0LCB0aGUgZXhwb3J0ZWQgZWxlbWVudFxuICAgICAqIGFuZCBtZXRob2RzIGZvciBwcmVwYXJpbmcgdGhlIGRhdGEgZnJvbSB0aGUgZWxlbWVudHMgZm9yIGV4cG9ydGluZ1xuICAgICAqL1xuICAgIGV4cG9ydGVyOiBJZ3hCYXNlRXhwb3J0ZXI7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHNldHRpbmdzLCB0aGF0IGNhbiBiZSBnaXZlbiB0byBhbiBleHBvcnRcbiAgICAgKiBUaGUgdHlwZSAoYW4gYWJzdHJhY3QgY2xhc3MgYElneEV4cG9ydGVyT3B0aW9uc0Jhc2VgKSBoYXMgcHJvcGVydGllcyBmb3IgY29sdW1uIHNldHRpbmdzXG4gICAgICogKHdoZXRoZXIgdGhleSBzaG91bGQgYmUgaWdub3JlZCkgYXMgd2VsbCBhcyBtZXRob2QgZm9yIGdlbmVyYXRpbmcgYSBmaWxlIG5hbWVcbiAgICAgKi9cbiAgICBvcHRpb25zOiBJZ3hFeHBvcnRlck9wdGlvbnNCYXNlO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaGFzIGJlZW4gaW50ZXJjZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbnRpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gdGhlIHN0YXJ0IG9mIGEgY29sdW1uIG1vdmluZyBvcGVyYXRpb24gaW4gYSBncmlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uTW92aW5nU3RhcnRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29sdW1uIHRoYXQgaXMgYmVpbmcgbW92ZWQuXG4gICAgICogVGhlIGBDb2x1bW5UeXBlYCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gKHRoZSBncmlkIGl0IGJlbG9uZ3MgdG8sIGNzcyBkYXRhLCBzZXR0aW5ncywgZXRjLikgb2YgdGhlIGNvbHVtbiBpbiBpdHMgcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNvdXJjZTogQ29sdW1uVHlwZTtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gYSBjb2x1bW4gbW92aW5nIG9wZXJhdGlvbiBpbiBhIGdyaWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbk1vdmluZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb2x1bW4gdGhhdCBpcyBiZWluZyBtb3ZlZC5cbiAgICAgKiBUaGUgYENvbHVtblR5cGVgIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiAodGhlIGdyaWQgaXQgYmVsb25ncyB0bywgY3NzIGRhdGEsIHNldHRpbmdzLCBldGMuKSBvZiB0aGUgY29sdW1uIGluIGl0cyBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgc291cmNlOiBDb2x1bW5UeXBlO1xuICAgIC8qKlxuICAgICAqIGBjYW5jZWxgIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaGFzIGJlZW4gaW50ZXJjZXB0ZWQgYW5kIHN0b3BwZWRcbiAgICAgKiBJZiB0aGUgdmFsdWUgYmVjb21lcyBcInRydWVcIiwgaXQgcmV0dXJucy9leGl0cyBmcm9tIHRoZSBtZXRob2QsIGluc3RhbnRpYXRpbmcgdGhlIGludGVyZmFjZVxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuLyoqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gdGhlIGVuZCBvZiBhIGNvbHVtbiBtb3Zpbmcgb3BlcmF0aW9uIGluIGEgZ3JpZCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uTW92aW5nRW5kRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50IHJlcHJlc2VudHMgdGhlIGNvbHVtbiB0aGF0IGlzIGJlaW5nIG1vdmVkLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBzb3VyY2U6IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogVGhlIHRhcmdldCBvZiB0aGUgZXZlbnQgcmVwcmVzZW50cyB0aGUgY29sdW1uLCB0aGUgc291cmNlIGlzIGJlaW5nIG1vdmVkIHRvLlxuICAgICAqIFRoZSBgQ29sdW1uVHlwZWAgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uICh0aGUgZ3JpZCBpdCBiZWxvbmdzIHRvLCBjc3MgZGF0YSwgc2V0dGluZ3MsIGV0Yy4pIG9mIHRoZSBjb2x1bW4gaW4gaXRzIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICB0YXJnZXQ6IENvbHVtblR5cGU7XG4gICAgLyoqXG4gICAgICogYGNhbmNlbGAgcmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCBoYXMgYmVlbiBpbnRlcmNlcHRlZCBhbmQgc3RvcHBlZFxuICAgICAqIElmIHRoZSB2YWx1ZSBiZWNvbWVzIFwidHJ1ZVwiLCBpdCByZXR1cm5zL2V4aXRzIGZyb20gdGhlIG1ldGhvZCwgaW5zdGFudGlhdGluZyB0aGUgaW50ZXJmYWNlXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gZXZlbnQsIGVtaXR0ZWQgd2hlbiBrZXlkb3duIGlzIHRyaWdnZXJlZCBvdmVyIGVsZW1lbnQgaW5zaWRlIGdyaWQncyBib2R5XG4gKiBUaGlzIGV2ZW50IGlzIGZpcmVkIG9ubHkgaWYgdGhlIGtleSBjb21iaW5hdGlvbiBpcyBzdXBwb3J0ZWQgaW4gdGhlIGdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdyaWRLZXlkb3duRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBUaGUgYHRhcmdldFR5cGVgIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlIHRhcmdldGVkIG9iamVjdC4gRm9yIGV4YW1wbGUgYSBjZWxsIG9yIGEgcm93ICovXG4gICAgdGFyZ2V0VHlwZTogR3JpZEtleWRvd25UYXJnZXRUeXBlO1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiBhbmQgZGV0YWlscyBvZiB0aGUgb2JqZWN0IGl0c2VsZiAqL1xuICAgIHRhcmdldDogYW55O1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBvcmlnaW5hbCBldmVudCwgdGhhdCBvY2N1cnJlZC4gKi9cbiAgICBldmVudDogRXZlbnQ7XG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyY2VwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW50aWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gZ2V0dGluZyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBhIGNlcnRhaW4gY2VsbCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2VsbFBvc2l0aW9uIHtcbiAgICAvKiogSXQgcmV0dXJucyB0aGUgcG9zaXRpb24gKGluZGV4KSBvZiB0aGUgcm93LCB0aGUgY2VsbCBpcyBpbiAqL1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogSXQgcmV0dXJucyB0aGUgcG9zaXRpb24gKGluZGV4KSBvZiB0aGUgY29sdW1uLCB0aGUgY2VsbCBpcyBpblxuICAgICAqIENvdW50cyBvbmx5IHRoZSB2aXNpYmxlIChub24gaGlkZGVuKSBjb2x1bW5zXG4gICAgICovXG4gICAgdmlzaWJsZUNvbHVtbkluZGV4OiBudW1iZXI7XG59XG5cbi8qKiBFbWl0dGVkIHdoZW4gYSBkcmFnZ2luZyBvcGVyYXRpb24gaXMgZmluaXNoZWQgKHdoZW4gdGhlIHJvdyBpcyBkcm9wcGVkKSAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93RHJhZ0VuZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZHJhZyBkaXJlY3RpdmUgb3IgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkcmFnIG9wZXJhdGlvbiAqL1xuICAgIGRyYWdEaXJlY3RpdmU6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuICovXG4gICAgZHJhZ0RhdGE6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIEhUTUwgZWxlbWVudCBpdHNlbGYgKi9cbiAgICBkcmFnRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgLyoqIGBhbmltYXRpb25gIHJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgaXMgYW5pbWF0ZWQgKi9cbiAgICBhbmltYXRpb246IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW1pdHRlZCB3aGVuIGEgZHJhZ2dpbmcgb3BlcmF0aW9uIGlzIHN0YXJ0aW5nICh3aGVuIHRoZSByb3cgaXMgXCJwaWNrZWRcIilcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd0RyYWdTdGFydEV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgZHJhZyBkaXJlY3RpdmUgb3IgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBkcmFnIG9wZXJhdGlvbiAqL1xuICAgIGRyYWdEaXJlY3RpdmU6IGFueTtcbiAgICAvKiogUmVwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlIHJvdyB0aGF0IGlzIGJlaW5nIGRyYWdnZWQuICovXG4gICAgZHJhZ0RhdGE6IFJvd1R5cGU7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIEhUTUwgZWxlbWVudCBpdHNlbGYgKi9cbiAgICBkcmFnRWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKiBSZXByZXNlbnRzIGV2ZW50IGFyZ3VtZW50cyByZWxhdGVkIHRvIHRoZSByb3cncyBleHBhbnNpb24gc3RhdGUgYmVpbmcgY2hhbmdlZCBpbiBhIGdyaWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvd1RvZ2dsZUV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBJRCBvZiB0aGUgcm93IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQgKHdoaWNoIHN0YXRlIGlzIGNoYW5nZWQpXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxNy4xLjAuIFVzZSB0aGUgYHJvd0tleWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICByb3dJRDogYW55O1xuICAgIHJvd0tleTogYW55O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSByb3cgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBoYXMgZW5kZWRcbiAgICAgKiBJbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBpcyBiZWluZyBleHBhbmRlZCAodHJ1ZSkgb3IgY29sbGFwc2VkIChmYWxzZSlcbiAgICAgKi9cbiAgICBleHBhbmRlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIG9yaWdpbmFsIGV2ZW50LCB0aGF0IGhhcyB0cmlnZ2VyZWQgdGhlIGV4cGFuc2lvbi9jb2xsYXBzZVxuICAgICAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAgICAgKiBgY2FuY2VsYCByZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IGhhcyBiZWVuIGludGVyY2VwdGVkIGFuZCBzdG9wcGVkXG4gICAgICogSWYgdGhlIHZhbHVlIGJlY29tZXMgXCJ0cnVlXCIsIGl0IHJldHVybnMvZXhpdHMgZnJvbSB0aGUgbWV0aG9kLCBpbnN0YW50aWF0aW5nIHRoZSBpbnRlcmZhY2VcbiAgICAgKi9cbiAgICBjYW5jZWw6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcm93J3MgcGluIHN0YXRlIGNoYW5nZXMuXG4gKiBUaGUgZXZlbnQgaXMgY2FuY2VsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElQaW5Sb3dFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogVGhlIElEIG9mIHRoZSByb3csIHRoYXQgd2FzIHBpbm5lZC91bnBpbm5lZC5cbiAgICAgKiBJRCBpcyBlaXRoZXIgdGhlIHByaW1hcnlLZXkgdmFsdWUgb3IgdGhlIGRhdGEgcmVjb3JkIGluc3RhbmNlLlxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMTcuMS4wLiBVc2UgdGhlIGByb3dLZXlgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcm93SUQ6IGFueTtcbiAgICByZWFkb25seSByb3dLZXk6IGFueTtcbiAgICByb3c/OiBSb3dUeXBlO1xuICAgIC8qKiBUaGUgaW5kZXggYXQgd2hpY2ggdG8gcGluIHRoZSByb3cgaW4gdGhlIHBpbm5lZCByb3dzIGNvbGxlY3Rpb24uICovXG4gICAgaW5zZXJ0QXRJbmRleD86IG51bWJlcjtcbiAgICAvKiogV2hldGhlciBvciBub3QgdGhlIHJvdyBpcyBwaW5uZWQgb3IgdW5waW5uZWQuICovXG4gICAgcmVhZG9ubHkgaXNQaW5uZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgZ3JpZCBpcyBzY3JvbGxlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZFNjcm9sbEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHNjcm9sbCBkaXJlY3Rpb24gLSB2ZXJ0aWNhbCBvciBob3Jpem9udGFsLiAqL1xuICAgIGRpcmVjdGlvbjogc3RyaW5nO1xuICAgIC8qKiBUaGUgb3JpZ2luYWwgYnJvd3NlciBzY3JvbGwgZXZlbnQuICovXG4gICAgZXZlbnQ6IEV2ZW50O1xuICAgIC8qKiBUaGUgbmV3IHNjcm9sbCBwb3NpdGlvbiAqL1xuICAgIHNjcm9sbFBvc2l0aW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgY2hlY2tib3ggaW4gdGhlIGNoZWNrYm94XG4gKiBsaXN0IG9mIGFuIElneENvbHVtbkFjdGlvbnMgY29tcG9uZW50IGlzIGNsaWNrZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtblRvZ2dsZWRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSBjb2x1bW4gdGhhdCBpcyB0b2dnbGVkLiAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogVGhlIGNoZWNrZWQgc3RhdGUgYWZ0ZXIgdGhlIGFjdGlvbi4gKi9cbiAgICBjaGVja2VkOiBib29sZWFuO1xufVxuXG4vKiogRW1pdHRlZCB3aGVuIHRoZSBhY3RpdmUgbm9kZSBpcyBjaGFuZ2VkICovXG5leHBvcnQgaW50ZXJmYWNlIElBY3RpdmVOb2RlQ2hhbmdlRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIC8qKiBSZXByZXNlbnRzIHRoZSByb3cgaW5kZXggb2YgdGhlIGFjdGl2ZSBub2RlICovXG4gICAgcm93OiBudW1iZXI7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiBpbmRleCBvZiB0aGUgYWN0aXZlIG5vZGUgKi9cbiAgICBjb2x1bW46IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIGhpZXJhcmNoaWNhbCBsZXZlbCBvZiB0aGUgYWN0aXZlIG5vZGVcbiAgICAgKi9cbiAgICBsZXZlbD86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZSBhY3RpdmUgbm9kZS5cbiAgICAgKiBUaGUgR3JpZEtleWRvd25UYXJnZXRUeXBlIGlzIGFuIGVudW0gb3IgdGhhdCBzcGVjaWZpZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB0eXBlc1xuICAgICAqL1xuICAgIHRhZzogR3JpZEtleWRvd25UYXJnZXRUeXBlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gc29ydGluZyBhbmQgZ3JvdXBpbmcgb3BlcmF0aW9uc1xuICogVGhlIGV2ZW50IGlzIGNhbmNlbGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU29ydGluZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbFxuICAgICAqIFJlcHJlc2VudHMgdGhlIHNvcnRpbmcgZXhwcmVzc2lvbnMgYXBwbGllZCB0byB0aGUgZ3JpZC5cbiAgICAgKiBJdCBjYW4gYmUgYSBzaW5nbGUgc29ydGluZyBleHByZXNzaW9uIG9yIGFuIGFycmF5IG9mIHRoZW1cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBpbmZvcm1hdGlvbiBsaWtlIGZpbGUgbmFtZSwgd2hldGhlciB0aGUgbGV0dGVyIGNhc2Ugc2hvdWxkIGJlIHRha2VuIGludG8gYWNjb3VudCwgZXRjLlxuICAgICAqL1xuICAgIHNvcnRpbmdFeHByZXNzaW9ucz86IElTb3J0aW5nRXhwcmVzc2lvbiB8IEFycmF5PElTb3J0aW5nRXhwcmVzc2lvbj47XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWxcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBncm91cGluZyBleHByZXNzaW9ucyBhcHBsaWVkIHRvIHRoZSBncmlkLlxuICAgICAqIEl0IGNhbiBiZSBhIHNpbmdsZSBncm91cGluZyBleHByZXNzaW9uIG9yIGFuIGFycmF5IG9mIHRoZW1cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBpbmZvcm1hdGlvbiBsaWtlIHRoZSBzb3J0aW5nIGV4cHJlc3Npb24gYW5kIGNyaXRlcmlhIGJ5IHdoaWNoIHRoZSBlbGVtZW50cyB3aWxsIGJlIGdyb3VwZWRcbiAgICAgKi9cbiAgICBncm91cGluZ0V4cHJlc3Npb25zPzogSUdyb3VwaW5nRXhwcmVzc2lvbiB8IEFycmF5PElHcm91cGluZ0V4cHJlc3Npb24+O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgZXZlbnQgYXJndW1lbnRzIHJlbGF0ZWQgdG8gZmlsdGVyaW5nIG9wZXJhdGlvbnNcbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbHRlcmluZ0V2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmaWx0ZXJpbmcgZXhwcmVzc2lvbnMgYXBwbGllZCB0byB0aGUgZ3JpZC5cbiAgICAgKiBUaGUgZXhwcmVzc2lvbiBjb250YWlucyBpbmZvcm1hdGlvbiBsaWtlIGZpbHRlcmluZyBvcGVyYW5kcyBhbmQgb3BlcmF0b3IsIGFuIGV4cHJlc3Npb24gb3IgY29uZGl0aW9uLCBldGMuXG4gICAgICovXG4gICAgZmlsdGVyaW5nRXhwcmVzc2lvbnM6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG59XG5cbi8qKiBUaGUgZXZlbnQgYXJndW1lbnRzIGFmdGVyIGEgY29sdW1uJ3MgdmlzaWJpbGl0eSBpcyBjaGFuZ2VkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uVmlzaWJpbGl0eUNoYW5nZWRFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGNvbHVtbiB0aGUgZXZlbnQgb3JpZ2luYXRlZCBmcm9tICovXG4gICAgY29sdW1uOiBhbnk7XG4gICAgLyoqXG4gICAgICogVGhlIG5ldyBoaWRkZW4gc3RhdGUgdGhhdCB0aGUgY29sdW1uIHdpbGwgaGF2ZSwgaWYgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gICAgICogV2lsbCBiZSBgdHJ1ZWAgd2hlbiBoaWRpbmcgYW5kIGBmYWxzZWAgd2hlbiBzaG93aW5nLlxuICAgICAqL1xuICAgIG5ld1ZhbHVlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBldmVudCBhcmd1bWVudHMgd2hlbiBhIGNvbHVtbidzIHZpc2liaWxpdHkgaXMgY2hhbmdlZC5cbiAqIFRoZSBldmVudCBpcyBjYW5jZWxhYmxlXG4gKiBJdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sdW1uIGFuZCB0aGUgaXQncyB2aXNpYmlsaXR5IGFmdGVyIHRoZSBvcGVyYXRpb24gKHdpbGwgYmUgYHRydWVgIHdoZW4gaGlkaW5nIGFuZCBgZmFsc2VgIHdoZW4gc2hvd2luZylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29sdW1uVmlzaWJpbGl0eUNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSUNvbHVtblZpc2liaWxpdHlDaGFuZ2VkRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbn1cblxuIl19
|