igniteui-angular 14.0.0-rc.0 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -5
- package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +17 -5
- package/esm2020/lib/combo/combo.component.mjs +4 -1
- package/esm2020/lib/directives/drag-drop/drag-drop.directive.mjs +22 -4
- package/esm2020/lib/simple-combo/simple-combo.component.mjs +4 -1
- package/fesm2015/igniteui-angular.mjs +43 -7
- package/fesm2015/igniteui-angular.mjs.map +1 -1
- package/fesm2020/igniteui-angular.mjs +43 -7
- package/fesm2020/igniteui-angular.mjs.map +1 -1
- package/lib/action-strip/grid-actions/grid-editing-actions.component.d.ts +11 -3
- package/lib/directives/drag-drop/drag-drop.directive.d.ts +5 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<a href="#">
|
|
3
|
-
<img alt="ignite-ui-logo" src="src/assets/
|
|
3
|
+
<img alt="ignite-ui-logo" src="src/assets/svg/ignite-ui-logo-flames.svg" width="">
|
|
4
4
|
</a>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
@@ -8,10 +8,6 @@
|
|
|
8
8
|
Ignite UI for Angular - from Infragistics
|
|
9
9
|
</h1>
|
|
10
10
|
|
|
11
|
-
<p align="center">
|
|
12
|
-
A compiler for generating <a href="https://www.webcomponents.org/introduction">Web Components</a>
|
|
13
|
-
</p>
|
|
14
|
-
|
|
15
11
|
|
|
16
12
|

|
|
17
13
|
[](https://dev.azure.com/IgniteUI/igniteui-angular/_build/latest?definitionId=3)
|
|
@@ -15,6 +15,14 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
this.cssClass = 'igx-action-strip__editing-actions';
|
|
18
|
+
/**
|
|
19
|
+
* An input to enable/disable action strip row editing button
|
|
20
|
+
*/
|
|
21
|
+
this.editRow = true;
|
|
22
|
+
/**
|
|
23
|
+
* An input to enable/disable action strip row deleting button
|
|
24
|
+
*/
|
|
25
|
+
this.deleteRow = true;
|
|
18
26
|
/**
|
|
19
27
|
* An input to enable/disable action strip child row adding button
|
|
20
28
|
*/
|
|
@@ -100,10 +108,10 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
|
|
|
100
108
|
*
|
|
101
109
|
* @example
|
|
102
110
|
* ```typescript
|
|
103
|
-
* this.gridEditingActions.
|
|
111
|
+
* this.gridEditingActions.deleteRowHandler();
|
|
104
112
|
* ```
|
|
105
113
|
*/
|
|
106
|
-
|
|
114
|
+
deleteRowHandler(event) {
|
|
107
115
|
if (event) {
|
|
108
116
|
event.stopPropagation();
|
|
109
117
|
}
|
|
@@ -141,16 +149,20 @@ export class IgxGridEditingActionsComponent extends IgxGridActionsBaseDirective
|
|
|
141
149
|
}
|
|
142
150
|
}
|
|
143
151
|
IgxGridEditingActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: IgxGridEditingActionsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
144
|
-
IgxGridEditingActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: IgxGridEditingActionsComponent, selector: "igx-grid-editing-actions", inputs: { addRow: "addRow", addChild: "addChild" }, host: { properties: { "class.igx-action-strip__editing-actions": "this.cssClass" } }, providers: [{ provide: IgxGridActionsBaseDirective, useExisting: IgxGridEditingActionsComponent }], usesInheritance: true, ngImport: i0, template: "\n<ng-container *ngIf=\"isRowContext\">\n <igx-grid-action-button *ngIf=\"!disabled\" [asMenuItem]=\"asMenuItems\" iconName=\"edit\" [labelText]=\"grid.resourceStrings.igx_grid_actions_edit_label\" (actionClick)=\"startEdit($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addRow && isRootRow\" [asMenuItem]=\"asMenuItems\" iconName=\"add-row\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_label\" (actionClick)=\"addRowHandler($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addChild && hasChildren\" [asMenuItem]=\"asMenuItems\" iconName=\"add-child\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_child_label\" (actionClick)=\"addRowHandler($event, true)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"!disabled\" class=\"igx-action-strip__delete\" classNames='igx-action-strip__menu-item--danger' [asMenuItem]=\"asMenuItems\" iconName=\"delete\" [labelText]=\"grid.resourceStrings.igx_grid_actions_delete_label\" (actionClick)=\"
|
|
152
|
+
IgxGridEditingActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: IgxGridEditingActionsComponent, selector: "igx-grid-editing-actions", inputs: { addRow: "addRow", editRow: "editRow", deleteRow: "deleteRow", addChild: "addChild" }, host: { properties: { "class.igx-action-strip__editing-actions": "this.cssClass" } }, providers: [{ provide: IgxGridActionsBaseDirective, useExisting: IgxGridEditingActionsComponent }], usesInheritance: true, ngImport: i0, template: "\n<ng-container *ngIf=\"isRowContext\">\n <igx-grid-action-button *ngIf=\"!disabled && editRow\" [asMenuItem]=\"asMenuItems\" iconName=\"edit\" [labelText]=\"grid.resourceStrings.igx_grid_actions_edit_label\" (actionClick)=\"startEdit($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addRow && isRootRow\" [asMenuItem]=\"asMenuItems\" iconName=\"add-row\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_label\" (actionClick)=\"addRowHandler($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addChild && hasChildren\" [asMenuItem]=\"asMenuItems\" iconName=\"add-child\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_child_label\" (actionClick)=\"addRowHandler($event, true)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"!disabled && deleteRow\" class=\"igx-action-strip__delete\" classNames='igx-action-strip__menu-item--danger' [asMenuItem]=\"asMenuItems\" iconName=\"delete\" [labelText]=\"grid.resourceStrings.igx_grid_actions_delete_label\" (actionClick)=\"deleteRowHandler($event)\"></igx-grid-action-button>\n</ng-container>\n\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IgxGridActionButtonComponent, selector: "igx-grid-action-button", inputs: ["asMenuItem", "iconName", "classNames", "iconSet", "labelText"], outputs: ["actionClick"] }] });
|
|
145
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: IgxGridEditingActionsComponent, decorators: [{
|
|
146
154
|
type: Component,
|
|
147
|
-
args: [{ selector: 'igx-grid-editing-actions', providers: [{ provide: IgxGridActionsBaseDirective, useExisting: IgxGridEditingActionsComponent }], template: "\n<ng-container *ngIf=\"isRowContext\">\n <igx-grid-action-button *ngIf=\"!disabled\" [asMenuItem]=\"asMenuItems\" iconName=\"edit\" [labelText]=\"grid.resourceStrings.igx_grid_actions_edit_label\" (actionClick)=\"startEdit($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addRow && isRootRow\" [asMenuItem]=\"asMenuItems\" iconName=\"add-row\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_label\" (actionClick)=\"addRowHandler($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addChild && hasChildren\" [asMenuItem]=\"asMenuItems\" iconName=\"add-child\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_child_label\" (actionClick)=\"addRowHandler($event, true)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"!disabled\" class=\"igx-action-strip__delete\" classNames='igx-action-strip__menu-item--danger' [asMenuItem]=\"asMenuItems\" iconName=\"delete\" [labelText]=\"grid.resourceStrings.igx_grid_actions_delete_label\" (actionClick)=\"
|
|
155
|
+
args: [{ selector: 'igx-grid-editing-actions', providers: [{ provide: IgxGridActionsBaseDirective, useExisting: IgxGridEditingActionsComponent }], template: "\n<ng-container *ngIf=\"isRowContext\">\n <igx-grid-action-button *ngIf=\"!disabled && editRow\" [asMenuItem]=\"asMenuItems\" iconName=\"edit\" [labelText]=\"grid.resourceStrings.igx_grid_actions_edit_label\" (actionClick)=\"startEdit($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addRow && isRootRow\" [asMenuItem]=\"asMenuItems\" iconName=\"add-row\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_label\" (actionClick)=\"addRowHandler($event)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"addChild && hasChildren\" [asMenuItem]=\"asMenuItems\" iconName=\"add-child\" iconSet=\"imx-icons\" [labelText]=\"grid.resourceStrings.igx_grid_actions_add_child_label\" (actionClick)=\"addRowHandler($event, true)\"></igx-grid-action-button>\n <igx-grid-action-button *ngIf=\"!disabled && deleteRow\" class=\"igx-action-strip__delete\" classNames='igx-action-strip__menu-item--danger' [asMenuItem]=\"asMenuItems\" iconName=\"delete\" [labelText]=\"grid.resourceStrings.igx_grid_actions_delete_label\" (actionClick)=\"deleteRowHandler($event)\"></igx-grid-action-button>\n</ng-container>\n\n" }]
|
|
148
156
|
}], propDecorators: { cssClass: [{
|
|
149
157
|
type: HostBinding,
|
|
150
158
|
args: ['class.igx-action-strip__editing-actions']
|
|
151
159
|
}], addRow: [{
|
|
152
160
|
type: Input
|
|
161
|
+
}], editRow: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], deleteRow: [{
|
|
164
|
+
type: Input
|
|
153
165
|
}], addChild: [{
|
|
154
166
|
type: Input
|
|
155
167
|
}] } });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRyxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXRFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwyQkFBMkI7SUFOL0U7O1FBUUk7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsbUNBQW1DLENBQUM7UUFrRHREOztXQUVHO1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBaUZqQztJQXpJRzs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxh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QUFPLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxnQ0FBZ0MsRUFBRSxDQUFDOzhCQVkzRixRQUFRO3NCQURkLFdBQVc7dUJBQUMseUNBQXlDO2dCQU8zQyxNQUFNO3NCQURoQixLQUFLO2dCQWlEQyxRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9ncmlkLWFjdGlvbnMtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgc2hvd01lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGFkZFJvdywgYWRkQ2hpbGQgIH0gZnJvbSAnQGlnbml0ZXVpL21hdGVyaWFsLWljb25zLWV4dGVuZGVkJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1lZGl0aW5nLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogSWd4R3JpZEVkaXRpbmdBY3Rpb25zQ29tcG9uZW50IH1dXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4R3JpZEVkaXRpbmdBY3Rpb25zQ29tcG9uZW50IGV4dGVuZHMgSWd4R3JpZEFjdGlvbnNCYXNlRGlyZWN0aXZlIHtcblxuICAgIC8qKlxuICAgICAqIEhvc3QgYGNsYXNzLmlneC1hY3Rpb24tc3RyaXBgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYWN0aW9uLXN0cmlwX19lZGl0aW5nLWFjdGlvbnMnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtYWN0aW9uLXN0cmlwX19lZGl0aW5nLWFjdGlvbnMnO1xuXG4gICAgLyoqXG4gICAgICogQW4gaW5wdXQgdG8gZW5hYmxlL2Rpc2FibGUgYWN0aW9uIHN0cmlwIHJvdyBhZGRpbmcgYnV0dG9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGFkZFJvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hZGRSb3cgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIGdldCBhZGRSb3coKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pY29uc1JlbmRlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVySWNvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuaWNvbnNSZW5kZXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZFJvdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyBkaXNhYmxlZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyByb290LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNSb290Um93KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmlwLmNvbnRleHQuaXNSb290O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5oYXNDaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBpbnB1dCB0byBlbmFibGUvZGlzYWJsZSBhY3Rpb24gc3RyaXAgY2hpbGQgcm93IGFkZGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRDaGlsZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpc01lc3NhZ2VTaG93biA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2FkZFJvdyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaWNvbnNSZW5kZXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW50ZXIgcm93IG9yIGNlbGwgZWRpdCBtb2RlIGRlcGVuZGluZyB0aGUgZ3JpZCByb3dFZGl0YWJsZSBvcHRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZ3JpZEVkaXRpbmdBY3Rpb25zLnN0YXJ0RWRpdCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEVkaXQoZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZpcnN0RWRpdGFibGUgPSByb3cuY2VsbHMuZmlsdGVyKGNlbGwgPT4gY2VsbC5lZGl0YWJsZSlbMF07XG4gICAgICAgIGNvbnN0IGdyaWQgPSByb3cuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkLmhhc0VkaXRhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93biA9IHNob3dNZXNzYWdlKFxuICAgICAgICAgICAgICAgICdUaGUgZ3JpZCBzaG91bGQgYmUgZWRpdGFibGUgaW4gb3JkZXIgdG8gdXNlIElneEdyaWRFZGl0aW5nQWN0aW9uc0NvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJlIHN1cmUgcm93IGlzIGluIHZpZXdcbiAgICAgICAgaWYgKGdyaWQucm93TGlzdC5maWx0ZXIociA9PiByID09PSByb3cpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUoZmlyc3RFZGl0YWJsZSwgZXZlbnQpO1xuICAgICAgICAgICAgZmlyc3RFZGl0YWJsZS5hY3RpdmF0ZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgcm93IGFjY29yZGluZyB0byB0aGUgY29udGV4dFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkRWRpdGluZ0FjdGlvbnMuZGVsZXRlUm93KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZVJvdyhldmVudD8pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgIGdyaWQuZGVsZXRlUm93KGNvbnRleHQua2V5KTtcblxuICAgICAgICB0aGlzLnN0cmlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm93SGFuZGxlcihldmVudD8sIGFzQ2hpbGQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5zdHJpcC5jb250ZXh0O1xuICAgICAgICBjb25zdCBncmlkID0gY29udGV4dC5ncmlkO1xuICAgICAgICBpZiAoIWdyaWQucm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGdyaWQgbXVzdCB1c2Ugcm93IGVkaXQgbW9kZSB0byBwZXJmb3JtIHJvdyBhZGRpbmchIFBsZWFzZSBzZXQgcm93RWRpdGFibGUgdG8gdHJ1ZS4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuZW50ZXJBZGRSb3dNb2RlKGNvbnRleHQsIGFzQ2hpbGQsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgcmVnaXN0ZXJJY29ucygpIHtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkUm93Lm5hbWUsIGFkZFJvdy52YWx1ZSwgJ2lteC1pY29ucycsIHRydWUsKTtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQoYWRkQ2hpbGQubmFtZSwgYWRkQ2hpbGQudmFsdWUsICdpbXgtaWNvbnMnLCB0cnVlKTtcbiAgICB9XG59XG4iLCJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Jvd0NvbnRleHRcIj5cbiAgICA8aWd4LWdyaWQtYWN0aW9uLWJ1dHRvbiAqbmdJZj1cIiFkaXNhYmxlZFwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJlZGl0XCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2VkaXRfbGFiZWxcIiAoYWN0aW9uQ2xpY2spPVwic3RhcnRFZGl0KCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRSb3cgJiYgaXNSb290Um93XCIgW2FzTWVudUl0ZW1dPVwiYXNNZW51SXRlbXNcIiBpY29uTmFtZT1cImFkZC1yb3dcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudClcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCJhZGRDaGlsZCAmJiBoYXNDaGlsZHJlblwiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJhZGQtY2hpbGRcIiBpY29uU2V0PVwiaW14LWljb25zXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2FkZF9jaGlsZF9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJhZGRSb3dIYW5kbGVyKCRldmVudCwgdHJ1ZSlcIj48L2lneC1ncmlkLWFjdGlvbi1idXR0b24+XG4gICAgPGlneC1ncmlkLWFjdGlvbi1idXR0b24gKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz1cImlneC1hY3Rpb24tc3RyaXBfX2RlbGV0ZVwiIGNsYXNzTmFtZXM9J2lneC1hY3Rpb24tc3RyaXBfX21lbnUtaXRlbS0tZGFuZ2VyJyBbYXNNZW51SXRlbV09XCJhc01lbnVJdGVtc1wiIGljb25OYW1lPVwiZGVsZXRlXCIgW2xhYmVsVGV4dF09XCJncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9hY3Rpb25zX2RlbGV0ZV9sYWJlbFwiIChhY3Rpb25DbGljayk9XCJkZWxldGVSb3coJGV2ZW50KVwiPjwvaWd4LWdyaWQtYWN0aW9uLWJ1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2FjdGlvbi1zdHJpcC9ncmlkLWFjdGlvbnMvZ3JpZC1lZGl0aW5nLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRyxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXRFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwyQkFBMkI7SUFOL0U7O1FBUUk7Ozs7O1dBS0c7UUFFSSxhQUFRLEdBQUcsbUNBQW1DLENBQUM7UUFpQnREOztXQUVHO1FBRUksWUFBTyxHQUFHLElBQUksQ0FBQztRQUV0Qjs7VUFFRTtRQUVLLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFtQ3hCOztXQUVHO1FBRUksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0tBaUZqQztJQXJKRzs7T0FFRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQWM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBY0Q7Ozs7O09BS0c7SUFDSCxJQUFXLFFBQVE7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE9BQU87U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsU0FBUztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7SUFDMUMsQ0FBQztJQVlEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBTTtRQUNuQixJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsT0FBTztTQUNWO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUM3Qiw0RUFBNEUsRUFDNUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3JCLE9BQU87U0FDZDtRQUNELHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3RCxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGdCQUFnQixDQUFDLEtBQU07UUFDMUIsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pDLE9BQU87U0FDVjtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25DLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQU0sRUFBRSxPQUFpQjtRQUMxQyxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsT0FBTztTQUNWO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLHdGQUF3RixDQUFDLENBQUM7WUFDdkcsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssYUFBYTtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFFLENBQUM7UUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFGLENBQUM7OzJIQS9KUSw4QkFBOEI7K0dBQTlCLDhCQUE4Qix5T0FINUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsQ0FBQyxpRENSdEcsK29DQVFBOzJGREdhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDSSwwQkFBMEIsYUFFekIsQ0FBQyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLENBQUM7OEJBWTNGLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyx5Q0FBeUM7Z0JBTzNDLE1BQU07c0JBRGhCLEtBQUs7Z0JBZ0JDLE9BQU87c0JBRGIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBd0NDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2dyaWQtYWN0aW9ucy1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBzaG93TWVzc2FnZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgYWRkUm93LCBhZGRDaGlsZCAgfSBmcm9tICdAaWduaXRldWkvbWF0ZXJpYWwtaWNvbnMtZXh0ZW5kZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1ncmlkLWVkaXRpbmctYWN0aW9ucycsXG4gICAgdGVtcGxhdGVVcmw6ICdncmlkLWVkaXRpbmctYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBJZ3hHcmlkRWRpdGluZ0FjdGlvbnNDb21wb25lbnQgfV1cbn0pXG5cbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRWRpdGluZ0FjdGlvbnNDb21wb25lbnQgZXh0ZW5kcyBJZ3hHcmlkQWN0aW9uc0Jhc2VEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogSG9zdCBgY2xhc3MuaWd4LWFjdGlvbi1zdHJpcGAgYmluZGluZy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hY3Rpb24tc3RyaXBfX2VkaXRpbmctYWN0aW9ucycpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1hY3Rpb24tc3RyaXBfX2VkaXRpbmctYWN0aW9ucyc7XG5cbiAgICAvKipcbiAgICAgKiBBbiBpbnB1dCB0byBlbmFibGUvZGlzYWJsZSBhY3Rpb24gc3RyaXAgcm93IGFkZGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgYWRkUm93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2FkZFJvdyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGFkZFJvdygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmljb25zUmVuZGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJJY29ucygpO1xuICAgICAgICAgICAgdGhpcy5pY29uc1JlbmRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkUm93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGlucHV0IHRvIGVuYWJsZS9kaXNhYmxlIGFjdGlvbiBzdHJpcCByb3cgZWRpdGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0Um93ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICogQW4gaW5wdXQgdG8gZW5hYmxlL2Rpc2FibGUgYWN0aW9uIHN0cmlwIHJvdyBkZWxldGluZyBidXR0b25cbiAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbGV0ZVJvdyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyBkaXNhYmxlZFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXR0ZXIgaWYgdGhlIHJvdyBpcyByb290LlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNSb290Um93KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmlwLmNvbnRleHQuaXNSb290O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaXAuY29udGV4dC5oYXNDaGlsZHJlbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBpbnB1dCB0byBlbmFibGUvZGlzYWJsZSBhY3Rpb24gc3RyaXAgY2hpbGQgcm93IGFkZGluZyBidXR0b25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRDaGlsZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpc01lc3NhZ2VTaG93biA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2FkZFJvdyA9IGZhbHNlO1xuICAgIHByaXZhdGUgaWNvbnNSZW5kZXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW50ZXIgcm93IG9yIGNlbGwgZWRpdCBtb2RlIGRlcGVuZGluZyB0aGUgZ3JpZCByb3dFZGl0YWJsZSBvcHRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuZ3JpZEVkaXRpbmdBY3Rpb25zLnN0YXJ0RWRpdCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEVkaXQoZXZlbnQ/KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzUm93KHRoaXMuc3RyaXAuY29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3cgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGZpcnN0RWRpdGFibGUgPSByb3cuY2VsbHMuZmlsdGVyKGNlbGwgPT4gY2VsbC5lZGl0YWJsZSlbMF07XG4gICAgICAgIGNvbnN0IGdyaWQgPSByb3cuZ3JpZDtcbiAgICAgICAgaWYgKCFncmlkLmhhc0VkaXRhYmxlQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93biA9IHNob3dNZXNzYWdlKFxuICAgICAgICAgICAgICAgICdUaGUgZ3JpZCBzaG91bGQgYmUgZWRpdGFibGUgaW4gb3JkZXIgdG8gdXNlIElneEdyaWRFZGl0aW5nQWN0aW9uc0NvbXBvbmVudCcsXG4gICAgICAgICAgICAgICAgdGhpcy5pc01lc3NhZ2VTaG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJlIHN1cmUgcm93IGlzIGluIHZpZXdcbiAgICAgICAgaWYgKGdyaWQucm93TGlzdC5maWx0ZXIociA9PiByID09PSByb3cpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUoZmlyc3RFZGl0YWJsZSwgZXZlbnQpO1xuICAgICAgICAgICAgZmlyc3RFZGl0YWJsZS5hY3RpdmF0ZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJpcC5oaWRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgcm93IGFjY29yZGluZyB0byB0aGUgY29udGV4dFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkRWRpdGluZ0FjdGlvbnMuZGVsZXRlUm93SGFuZGxlcigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVSb3dIYW5kbGVyKGV2ZW50Pyk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pc1Jvdyh0aGlzLnN0cmlwLmNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuc3RyaXAuY29udGV4dDtcbiAgICAgICAgY29uc3QgZ3JpZCA9IGNvbnRleHQuZ3JpZDtcbiAgICAgICAgZ3JpZC5kZWxldGVSb3coY29udGV4dC5rZXkpO1xuXG4gICAgICAgIHRoaXMuc3RyaXAuaGlkZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRSb3dIYW5kbGVyKGV2ZW50PywgYXNDaGlsZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNSb3codGhpcy5zdHJpcC5jb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0cmlwLmNvbnRleHQ7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBjb250ZXh0LmdyaWQ7XG4gICAgICAgIGlmICghZ3JpZC5yb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdUaGUgZ3JpZCBtdXN0IHVzZSByb3cgZWRpdCBtb2RlIHRvIHBlcmZvcm0gcm93IGFkZGluZyEgUGxlYXNlIHNldCByb3dFZGl0YWJsZSB0byB0cnVlLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGdyaWQuZ3JpZEFQSS5jcnVkU2VydmljZS5lbnRlckFkZFJvd01vZGUoY29udGV4dCwgYXNDaGlsZCwgZXZlbnQpO1xuICAgICAgICB0aGlzLnN0cmlwLmhpZGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWdpc3Rlckljb25zKCkge1xuICAgICAgICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb25Gcm9tVGV4dChhZGRSb3cubmFtZSwgYWRkUm93LnZhbHVlLCAnaW14LWljb25zJywgdHJ1ZSwpO1xuICAgICAgICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb25Gcm9tVGV4dChhZGRDaGlsZC5uYW1lLCBhZGRDaGlsZC52YWx1ZSwgJ2lteC1pY29ucycsIHRydWUpO1xuICAgIH1cbn1cbiIsIlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUm93Q29udGV4dFwiPlxuICAgIDxpZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uICpuZ0lmPVwiIWRpc2FibGVkICYmIGVkaXRSb3dcIiBbYXNNZW51SXRlbV09XCJhc01lbnVJdGVtc1wiIGljb25OYW1lPVwiZWRpdFwiIFtsYWJlbFRleHRdPVwiZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfYWN0aW9uc19lZGl0X2xhYmVsXCIgKGFjdGlvbkNsaWNrKT1cInN0YXJ0RWRpdCgkZXZlbnQpXCI+PC9pZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uPlxuICAgIDxpZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uICpuZ0lmPVwiYWRkUm93ICYmIGlzUm9vdFJvd1wiIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJhZGQtcm93XCIgaWNvblNldD1cImlteC1pY29uc1wiIFtsYWJlbFRleHRdPVwiZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfYWN0aW9uc19hZGRfbGFiZWxcIiAoYWN0aW9uQ2xpY2spPVwiYWRkUm93SGFuZGxlcigkZXZlbnQpXCI+PC9pZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uPlxuICAgIDxpZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uICpuZ0lmPVwiYWRkQ2hpbGQgJiYgaGFzQ2hpbGRyZW5cIiBbYXNNZW51SXRlbV09XCJhc01lbnVJdGVtc1wiIGljb25OYW1lPVwiYWRkLWNoaWxkXCIgaWNvblNldD1cImlteC1pY29uc1wiIFtsYWJlbFRleHRdPVwiZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfYWN0aW9uc19hZGRfY2hpbGRfbGFiZWxcIiAoYWN0aW9uQ2xpY2spPVwiYWRkUm93SGFuZGxlcigkZXZlbnQsIHRydWUpXCI+PC9pZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uPlxuICAgIDxpZ3gtZ3JpZC1hY3Rpb24tYnV0dG9uICpuZ0lmPVwiIWRpc2FibGVkICYmIGRlbGV0ZVJvd1wiIGNsYXNzPVwiaWd4LWFjdGlvbi1zdHJpcF9fZGVsZXRlXCIgY2xhc3NOYW1lcz0naWd4LWFjdGlvbi1zdHJpcF9fbWVudS1pdGVtLS1kYW5nZXInIFthc01lbnVJdGVtXT1cImFzTWVudUl0ZW1zXCIgaWNvbk5hbWU9XCJkZWxldGVcIiBbbGFiZWxUZXh0XT1cImdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsXCIgKGFjdGlvbkNsaWNrKT1cImRlbGV0ZVJvd0hhbmRsZXIoJGV2ZW50KVwiPjwvaWd4LWdyaWQtYWN0aW9uLWJ1dHRvbj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
@@ -348,6 +348,9 @@ export class IgxComboComponent extends IgxComboBaseDirective {
|
|
|
348
348
|
}
|
|
349
349
|
this._onChangeCallback(args.newSelection);
|
|
350
350
|
}
|
|
351
|
+
else if (this.isRemote) {
|
|
352
|
+
this.registerRemoteEntries(args.added, false);
|
|
353
|
+
}
|
|
351
354
|
}
|
|
352
355
|
createDisplayText(newSelection, oldSelection) {
|
|
353
356
|
return this.isRemote
|
|
@@ -505,4 +508,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
|
|
|
505
508
|
]
|
|
506
509
|
}]
|
|
507
510
|
}] });
|
|
508
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUMrQixTQUFTLEVBQWMsUUFBUSxFQUNqRSxRQUFRLEVBQUUsTUFBTSxFQUFZLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDckUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVB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LFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLGlCQUFpQjt3QkFDakIseUJBQXlCO3dCQUN6QixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQiwyQkFBMkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRTt3QkFDTCx3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixtQkFBbUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDdEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBOZ01vZHVsZSwgT25Jbml0LCBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9FbXB0eURpcmVjdGl2ZSxcbiAgICBJZ3hDb21ib0hlYWRlckl0ZW1EaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9IZWFkZXJEaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9Gb290ZXJEaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLFxuICAgIElneENvbWJvVG9nZ2xlSWNvbkRpcmVjdGl2ZSxcbiAgICBJZ3hDb21ib0NsZWFySWNvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2NvbWJvLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneENoZWNrYm94TW9kdWxlIH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLCBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctY29uZGl0aW9uJztcbmltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hGb3JPZk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvbk1vZHVsZSwgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4UmlwcGxlTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8tZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQ2xlYW5QaXBlLCBJZ3hDb21ib0ZpbHRlcmluZ1BpcGUsIElneENvbWJvR3JvdXBpbmdQaXBlIH0gZnJvbSAnLi9jb21iby5waXBlcyc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zIH0gZnJvbSAnLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IElHWF9DT01CT19DT01QT05FTlQsIElneENvbWJvQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vY29tYm8uY29tbW9uJztcbmltcG9ydCB7IElneENvbWJvQWRkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8tYWRkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQVBJU2VydmljZSB9IGZyb20gJy4vY29tYm8uYXBpJztcbmltcG9ydCB7IEVkaXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vY29yZS9lZGl0LXByb3ZpZGVyJztcbmltcG9ydCB7IElneElucHV0R3JvdXBUeXBlLCBJR1hfSU5QVVRfR1JPVVBfVFlQRSB9IGZyb20gJy4uL2lucHV0LWdyb3VwL3B1YmxpY19hcGknO1xuXG4vKiogVGhlIGZpbHRlcmluZyBjcml0ZXJpYSB0byBiZSBhcHBsaWVkIG9uIGRhdGEgc2VhcmNoICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib0ZpbHRlcmluZ09wdGlvbnMge1xuICAgIC8qKiBEZWZpbmVzIGZpbHRlcmluZyBjYXNlLXNlbnNpdGl2aXR5ICovXG4gICAgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpZ3gtY29tYm8ncyBzZWxlY3Rpb24gaXMgY2hhbmdpbmcgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUNhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdGhhdCBhcmUgY3VycmVudGx5IHNlbGVjdGVkICovXG4gICAgb2xkU2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgcmVtb3ZlZDogYW55W107XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbWJvIHRleHQgYm94ICovXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHVzZXIgaW50ZXJhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIHNlbGVjdGlvbiBjaGFuZ2UgKi9cbiAgICBldmVudD86IEV2ZW50O1xufVxuXG4vKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpZ3gtY29tYm8ncyBzZWFyY2ggaW5wdXQgY2hhbmdlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29tYm9TZWFyY2hJbnB1dEV2ZW50QXJncyBleHRlbmRzIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgaGFzIGJlZW4gdHlwZWQgaW50byB0aGUgc2VhcmNoIGlucHV0ICovXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib0l0ZW1BZGRpdGlvbkV2ZW50IGV4dGVuZHMgSUJhc2VFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIG9sZENvbGxlY3Rpb246IGFueVtdO1xuICAgIGFkZGVkSXRlbTogYW55O1xuICAgIG5ld0NvbGxlY3Rpb246IGFueVtdO1xufVxuXG4vKipcbiAqIFdoZW4gY2FsbGVkIHdpdGggc2V0cyBBICYgQiwgcmV0dXJucyBBIC0gQiAoYXMgYXJyYXkpO1xuICpcbiAqIEBoaWRkZW5cbiAqL1xuY29uc3QgZGlmZkluU2V0cyA9IChzZXQxOiBTZXQ8YW55Piwgc2V0MjogU2V0PGFueT4pOiBhbnlbXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIHNldDEuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIGlmICghc2V0Mi5oYXMoZW50cnkpKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2goZW50cnkpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqICBSZXByZXNlbnRzIGEgZHJvcC1kb3duIGxpc3QgdGhhdCBwcm92aWRlcyBlZGl0YWJsZSBmdW5jdGlvbmFsaXRpZXMsIGFsbG93aW5nIHVzZXJzIHRvIGNob29zZSBhbiBvcHRpb24gZnJvbSBhIHByZWRlZmluZWQgbGlzdC5cbiAqXG4gKiBAaWd4TW9kdWxlIElneENvbWJvTW9kdWxlXG4gKiBAaWd4VGhlbWUgaWd4LWNvbWJvLXRoZW1lXG4gKiBAaWd4S2V5d29yZHMgY29tYm9ib3gsIGNvbWJvIHNlbGVjdGlvblxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqXG4gKiBAcmVtYXJrc1xuICogSXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIGl0ZW1zIGFzIHdlbGwgYXMgcGVyZm9ybSBzZWxlY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cbiAqIEFkZGl0aW9uYWxseSwgaXQgZXhwb3NlcyBrZXlib2FyZCBuYXZpZ2F0aW9uIGFuZCBjdXN0b20gc3R5bGluZyBjYXBhYmlsaXRpZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1jb21ibyBbaXRlbXNNYXhIZWlnaHRdPVwiMjUwXCIgW2RhdGFdPVwibG9jYXRpb25EYXRhXCJcbiAqICBbZGlzcGxheUtleV09XCInZmllbGQnXCIgW3ZhbHVlS2V5XT1cIidmaWVsZCdcIlxuICogIHBsYWNlaG9sZGVyPVwiTG9jYXRpb24ocylcIiBzZWFyY2hQbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiPlxuICogPC9pZ3gtY29tYm8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY29tYm8nLFxuICAgIHRlbXBsYXRlVXJsOiAnY29tYm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogSUdYX0NPTUJPX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hDb21ib0NvbXBvbmVudCwgbXVsdGk6IHRydWUgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29tYm9Db21wb25lbnQgZXh0ZW5kcyBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LFxuICAgIE9uRGVzdHJveSwgRWRpdG9yUHJvdmlkZXIge1xuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGNvbWJvJ3Mgc2VhcmNoIGJveFxuICAgICAqIHNob3VsZCBiZSBmb2N1c2VkIGFmdGVyIHRoZSBgb3BlbmVkYCBldmVudCBpcyBjYWxsZWRcbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvRm9jdXNTZWFyY2ggPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgZW5hYmxlZC9kaXNhYmxlcyBmaWx0ZXJpbmcgaW4gdGhlIGxpc3QuIFRoZSBkZWZhdWx0IGlzIGB0cnVlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBbZmlsdGVyYWJsZV09XCJmYWxzZVwiPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlcmFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIHRoZSBjb21ibyBkcm9wZG93biBzZWFyY2ggZmllbGRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib1NlYXJjaFBsYWNlaG9sZGVyID0gdGhpcy5jb21iby5zZWFyY2hQbGFjZWhvbGRlcjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbc2VhcmNoUGxhY2Vob2xkZXJdPSduZXdQbGFjZUhvbGRlcic+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoUGxhY2Vob2xkZXIgPSAnRW50ZXIgYSBTZWFyY2ggVGVybSc7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gaXRlbSBzZWxlY3Rpb24gaXMgY2hhbmdpbmcsIGJlZm9yZSB0aGUgc2VsZWN0aW9uIGNvbXBsZXRlc1xuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKHNlbGVjdGlvbkNoYW5naW5nKT0naGFuZGxlU2VsZWN0aW9uKCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneENvbWJvRHJvcERvd25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGRyb3Bkb3duOiBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlucHV0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy52YWx1ZSAmJiAhdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcmVkRGF0YSgpOiBhbnlbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmxlID8gdGhpcy5fZmlsdGVyZWREYXRhIDogdGhpcy5kYXRhO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmVkRGF0YSh2YWw6IGFueVtdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJlZERhdGEgPSB0aGlzLmdyb3VwS2V5ID8gKHZhbCB8fCBbXSkuZmlsdGVyKChlKSA9PiBlLmlzSGVhZGVyICE9PSB0cnVlKSA6IHZhbDtcbiAgICAgICAgdGhpcy5jaGVja01hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsdGVyaW5nTG9naWMgPSBGaWx0ZXJpbmdMb2dpYy5PcjtcblxuICAgIHByb3RlY3RlZCBzdHJpbmdGaWx0ZXJzID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZDtcbiAgICBwcm90ZWN0ZWQgYm9vbGVhbkZpbHRlcnMgPSBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZDtcbiAgICBwcm90ZWN0ZWQgX3ByZXZJbnB1dFZhbHVlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZTogSWd4U2VsZWN0aW9uQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbWJvQVBJOiBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBwcm90ZWN0ZWQgX2lucHV0R3JvdXBUeXBlOiBJZ3hJbnB1dEdyb3VwVHlwZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgX2ljb25TZXJ2aWNlLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUsIF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tYm9BUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5U2VhcmNoSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5hbGxvd0N1c3RvbVZhbHVlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPOiB1c2UgUGxhdGZvcm1VdGlsIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Rvd24nKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtID0gdGhpcy5kcm9wZG93bi5pdGVtc1swXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgfHwgZXZlbnQua2V5ID09PSAnRXNjJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZVNlbGVjdEFsbChldnQpIHtcbiAgICAgICAgaWYgKGV2dC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgc2VsZWN0aW9uLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLnNlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbGVhckl0ZW1zKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcyh0cnVlLCBldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0RWxlbWVudCgpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdJdGVtcyBuZXcgaXRlbXMgdG8gYmUgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2xlYXJDdXJyZW50U2VsZWN0aW9uIGlmIHRydWUgY2xlYXIgcHJldmlvdXMgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBjbGVhckN1cnJlbnRTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChuZXdJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmFkZF9pdGVtcyh0aGlzLmlkLCBuZXdJdGVtcywgY2xlYXJDdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3QgZGVmaW5lZCBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIHRvIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChbXCJOZXcgWW9ya1wiLCBcIk5ldyBKZXJzZXlcIl0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdChpdGVtczogQXJyYXk8YW55PiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYWxsIChmaWx0ZXJlZCkgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZ25vcmVGaWx0ZXIgaWYgc2V0IHRvIHRydWUsIHNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2Ugc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYWxsVmlzaWJsZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyhpZ25vcmVGaWx0ZXIgPyB0aGlzLmRhdGEgOiB0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgYWxsVmlzaWJsZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBkZXNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2UgZGVzZWxlY3RzIG9ubHkgdGhlIGZpbHRlcmVkIG9uZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfZW1wdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCAhPT0gdGhpcy5kYXRhLmxlbmd0aCAmJiAhaWdub3JlRmlsdGVyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyh0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvRGVzZWxlY3RzIGEgc2luZ2xlIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtSUQgdGhlIGl0ZW1JRCBvZiB0aGUgc3BlY2lmaWMgaXRlbVxuICAgICAqIEBwYXJhbSBzZWxlY3QgSWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHNlbGVjdGVkICh0cnVlKSBvciBkZXNlbGVjdGVkIChmYWxzZSlcbiAgICAgKlxuICAgICAqIFdpdGhvdXQgc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gbnVsbDtcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oaXRlbXNbMF0sIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqIFdpdGggc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gJ2ZpZWxkJztcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oJ0Nvbm5lY3RpY3V0JywgdHJ1ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpdGVtSUQ6IGFueSwgc2VsZWN0ID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbUlEID09PSBudWxsIHx8IGl0ZW1JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoW2l0ZW1JRF0sIGZhbHNlLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KFtpdGVtSURdLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuXG4gICAgICAgIC8vIERpc2FibGluZyBmb2N1cyBvZiB0aGUgc2VhcmNoIGlucHV0IHNob3VsZCBoYXBwZW4gb25seSB3aGVuIGRyb3AgZG93biBvcGVucy5cbiAgICAgICAgLy8gRHVyaW5nIGtleWJvYXJkIG5hdmlnYXRpb24gaW5wdXQgc2hvdWxkIHJlY2VpdmUgZm9jdXMsIGV2ZW4gdGhlIGF1dG9Gb2N1c1NlYXJjaCBpcyBkaXNhYmxlZC5cbiAgICAgICAgLy8gVGhhdCBpcyB3aHkgaW4gc3VjaCBjYXNlcyBmb2N1c2luZyBvZiB0aGUgZHJvcGRvd25Db250YWluZXIgaGFwcGVucyBvdXRzaWRlIGZvY3VzU2VhcmNoSW5wdXQgbWV0aG9kLlxuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXNTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5U2VhcmNoSW5wdXQgJiYgdGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbjogU2V0PGFueT4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRpZmZJblNldHModGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSwgbmV3U2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSBkaWZmSW5TZXRzKG5ld1NlbGVjdGlvbiwgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbkFzQXJyYXkgPSBBcnJheS5mcm9tKG5ld1NlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbkFzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCkgfHwgW10pO1xuICAgICAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uQXNBcnJheSwgb2xkU2VsZWN0aW9uQXNBcnJheSk7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uOiBuZXdTZWxlY3Rpb25Bc0FycmF5LFxuICAgICAgICAgICAgb2xkU2VsZWN0aW9uOiBvbGRTZWxlY3Rpb25Bc0FycmF5LFxuICAgICAgICAgICAgYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIGRpc3BsYXlUZXh0LFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJncy5uZXdTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcmdzLmRpc3BsYXlUZXh0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQoYXJncy5uZXdTZWxlY3Rpb24sIGFyZ3Mub2xkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soYXJncy5uZXdTZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbjogYW55W10sIG9sZFNlbGVjdGlvbjogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZW1vdGVcbiAgICAgICAgICAgID8gdGhpcy5nZXRSZW1vdGVTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pXG4gICAgICAgICAgICA6IHRoaXMuY29uY2F0RGlzcGxheVRleHQobmV3U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIHN0cmluZyB0aGF0IHNob3VsZCBiZSBwb3B1bGF0ZWQgaW4gdGhlIGNvbWJvJ3MgdGV4dCBib3ggKi9cbiAgICBwcml2YXRlIGNvbmNhdERpc3BsYXlUZXh0KHNlbGVjdGlvbjogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGlzcGxheUtleSAhPT0gbnVsbCAmJiB0aGlzLmRpc3BsYXlLZXkgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhzZWxlY3Rpb24pLm1hcChlbnRyeSA9PiBlbnRyeVt0aGlzLmRpc3BsYXlLZXldKS5qb2luKCcsICcpIDpcbiAgICAgICAgICAgIHNlbGVjdGlvbi5qb2luKCcsICcpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgSWd4Q29tYm9BZGRJdGVtQ29tcG9uZW50LFxuICAgICAgICBJZ3hDb21ib0FkZEl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvQ2xlYXJJY29uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0NvbXBvbmVudCxcbiAgICAgICAgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCxcbiAgICAgICAgSWd4Q29tYm9FbXB0eURpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9GaWx0ZXJpbmdQaXBlLFxuICAgICAgICBJZ3hDb21ib0NsZWFuUGlwZSxcbiAgICAgICAgSWd4Q29tYm9Gb290ZXJEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvR3JvdXBpbmdQaXBlLFxuICAgICAgICBJZ3hDb21ib0hlYWRlckRpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9IZWFkZXJJdGVtRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0l0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9Ub2dnbGVJY29uRGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0NsZWFySWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRW1wdHlEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9DbGVhblBpcGUsXG4gICAgICAgIElneENvbWJvRm9vdGVyRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0dyb3VwaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9IZWFkZXJEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvSGVhZGVySXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9JdGVtQ29tcG9uZW50LFxuICAgICAgICBJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvVG9nZ2xlSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgSWd4SW5wdXRHcm91cE1vZHVsZVxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBJZ3hCdXR0b25Nb2R1bGUsXG4gICAgICAgIElneENoZWNrYm94TW9kdWxlLFxuICAgICAgICBJZ3hEcm9wRG93bk1vZHVsZSxcbiAgICAgICAgSWd4Rm9yT2ZNb2R1bGUsXG4gICAgICAgIElneEljb25Nb2R1bGUsXG4gICAgICAgIElneElucHV0R3JvdXBNb2R1bGUsXG4gICAgICAgIElneFJpcHBsZU1vZHVsZSxcbiAgICAgICAgSWd4VG9nZ2xlTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDb21ib01vZHVsZSB7IH1cbiIsIjxpZ3gtaW5wdXQtZ3JvdXAgI2lucHV0R3JvdXAgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCIgW3R5cGVdPVwidHlwZVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiW2lneExhYmVsXVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtcHJlZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1wcmVmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cImlneC1oaW50LCBbaWd4SGludF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWhpbnQsIFtpZ3hIaW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8aW5wdXQgaWd4SW5wdXQgI2NvbWJvSW5wdXQgbmFtZT1cImNvbWJvSW5wdXRcIiB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJ2YWx1ZVwiIHJlYWRvbmx5IFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgKGJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtc3VmZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlneC1zdWZmaXggKm5nSWY9XCJ2YWx1ZS5sZW5ndGhcIiBhcmlhLWxhYmVsPVwiQ2xlYXIgU2VsZWN0aW9uXCIgY2xhc3M9XCJpZ3gtY29tYm9fX2NsZWFyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbGVhckl0ZW1zKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgY2xlYXJcbiAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1zdWZmaXg+XG4gICAgPGlneC1zdWZmaXggY2xhc3M9XCJpZ3gtY29tYm9fX3RvZ2dsZS1idXR0b25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvZ2dsZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvZ2dsZUljb25UZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogdGhpcy5jb2xsYXBzZWR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhdG9nZ2xlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICB7eyBkcm9wZG93bi5jb2xsYXBzZWQgPyAnYXJyb3dfZHJvcF9kb3duJyA6ICdhcnJvd19kcm9wX3VwJ319XG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9pZ3gtc3VmZml4PlxuPC9pZ3gtaW5wdXQtZ3JvdXA+XG48aWd4LWNvbWJvLWRyb3AtZG93biAjaWd4Q29tYm9Ecm9wRG93biBjbGFzcz1cImlneC1jb21ib19fZHJvcC1kb3duXCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCJcbiAgICBbd2lkdGhdPVwiaXRlbXNXaWR0aCB8fCAnMTAwJSdcIiAob3BlbmluZyk9XCJoYW5kbGVPcGVuaW5nKCRldmVudClcIiAoY2xvc2luZyk9XCJoYW5kbGVDbG9zaW5nKCRldmVudClcIlxuICAgIChvcGVuZWQpPVwiaGFuZGxlT3BlbmVkKClcIiAoY2xvc2VkKT1cImhhbmRsZUNsb3NlZCgpXCI+XG4gICAgPGlneC1pbnB1dC1ncm91cCAqbmdJZj1cImRpc3BsYXlTZWFyY2hJbnB1dFwiIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIHRoZW1lPVwibWF0ZXJpYWxcIiBjbGFzcz1cImlneC1jb21ib19fc2VhcmNoXCI+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cImlneC1jb21iby1pbnB1dFwiIGlneElucHV0ICNzZWFyY2hJbnB1dCBuYW1lPVwic2VhcmNoSW5wdXRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIChrZXl1cCk9XCJoYW5kbGVLZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChmb2N1cyk9XCJkcm9wZG93bi5vbkJsdXIoJGV2ZW50KVwiIFthdHRyLnBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwiYm90aFwiIFthdHRyLmFyaWEtb3duc109XCJkcm9wZG93bi5pZFwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiIC8+XG4gICAgICAgIDxpZ3gtc3VmZml4ICpuZ0lmPVwic2hvd1NlYXJjaENhc2VJY29uXCI+XG4gICAgICAgICAgICA8aWd4LWljb24gZmFtaWx5PVwiaW14LWljb25zXCIgbmFtZT1cImNhc2Utc2Vuc2l0aXZlXCIgW2FjdGl2ZV09XCJmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDYXNlU2Vuc2l0aXZlKClcIj5cbiAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgIDwvaWd4LXN1ZmZpeD5cbiAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICNkcm9wZG93bkl0ZW1Db250YWluZXIgY2xhc3M9XCJpZ3gtY29tYm9fX2NvbnRlbnRcIiBbc3R5bGUub3ZlcmZsb3ddPVwiJ2hpZGRlbidcIlxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cIml0ZW1zTWF4SGVpZ2h0XCIgW2lneERyb3BEb3duSXRlbU5hdmlnYXRpb25dPVwiZHJvcGRvd25cIiAoZm9jdXMpPVwiZHJvcGRvd24ub25Gb2N1cygpXCJcbiAgICAgICAgW3RhYmluZGV4XT1cImRyb3Bkb3duLmNvbGxhcHNlZCA/IC0xIDogMFwiIHJvbGU9XCJsaXN0Ym94XCIgW2F0dHIuaWRdPVwiZHJvcGRvd24uaWRcIj5cbiAgICAgICAgPGlneC1jb21iby1pdGVtIHJvbGU9XCJvcHRpb25cIiBbaXRlbUhlaWdodF09J2l0ZW1IZWlnaHQnICppZ3hGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXG4gICAgICAgICAgICB8IGNvbWJvRmlsdGVyaW5nOmZpbHRlclZhbHVlOmRpc3BsYXlLZXk6ZmlsdGVyaW5nT3B0aW9uczpmaWx0ZXJhYmxlXG4gICAgICAgICAgICB8IGNvbWJvR3JvdXBpbmc6Z3JvdXBLZXk6dmFsdWVLZXk6Z3JvdXBTb3J0aW5nRGlyZWN0aW9uO1xuICAgICAgICAgICAgaW5kZXggYXMgcm93SW5kZXg7IGNvbnRhaW5lclNpemU6IGl0ZW1zTWF4SGVpZ2h0OyBzY3JvbGxPcmllbnRhdGlvbjogJ3ZlcnRpY2FsJzsgaXRlbVNpemU6IGl0ZW1IZWlnaHRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIiBbaXNIZWFkZXJdPVwiaXRlbS5pc0hlYWRlclwiIFtpbmRleF09XCJyb3dJbmRleFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVySXRlbVRlbXBsYXRlID8gaGVhZGVySXRlbVRlbXBsYXRlIDogaGVhZGVySXRlbUJhc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHskaW1wbGljaXQ6IGl0ZW0sIGRhdGE6IGRhdGEsIHZhbHVlS2V5OiB2YWx1ZUtleSwgZ3JvdXBLZXk6IGdyb3VwS2V5LCBkaXNwbGF5S2V5OiBkaXNwbGF5S2V5fVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNsaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtLCBkYXRhOiBkYXRhLCB2YWx1ZUtleTogdmFsdWVLZXksIGRpc3BsYXlLZXk6IGRpc3BsYXlLZXl9O1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaWd4LWNvbWJvLWl0ZW0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlneC1jb21ib19fYWRkXCIgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID09PSAwIHx8IGlzQWRkQnV0dG9uVmlzaWJsZSgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2VtcHR5XCIgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZSA/IGVtcHR5VGVtcGxhdGUgOiBlbXB0eVwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aWd4LWNvbWJvLWFkZC1pdGVtIFtpdGVtSGVpZ2h0XT1cIml0ZW1IZWlnaHRcIiAqbmdJZj1cImlzQWRkQnV0dG9uVmlzaWJsZSgpXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJkcm9wZG93bi5jb2xsYXBzZWQgPyAtMSA6IGN1c3RvbVZhbHVlRmxhZyA/IDEgOiAtMVwiIGNsYXNzPVwiaWd4LWNvbWJvX19hZGQtaXRlbVwiIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZCBJdGVtXCIgW2luZGV4XT1cInZpcnR1YWxTY3JvbGxDb250YWluZXIuaWd4Rm9yT2YubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkSXRlbVRlbXBsYXRlID8gYWRkSXRlbVRlbXBsYXRlIDogYWRkSXRlbURlZmF1bHRcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1hZGQtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvaWd4LWNvbWJvLWRyb3AtZG93bj5cbjxuZy10ZW1wbGF0ZSAjY29tcGxleCBsZXQtZGlzcGxheSBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwiZGlzcGxheUtleVwiPlxuICAgIHt7ZGlzcGxheVtrZXldfX1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ByaW1pdGl2ZSBsZXQtZGlzcGxheT5cbiAgICB7e2Rpc3BsYXl9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgPHNwYW4+VGhlIGxpc3QgaXMgZW1wdHk8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNhZGRJdGVtRGVmYXVsdCBsZXQtY29udHJvbD5cbiAgICA8YnV0dG9uIGlneEJ1dHRvbj1cImZsYXRcIiBpZ3hSaXBwbGU+QWRkIGl0ZW08L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRlckl0ZW1CYXNlIGxldC1pdGVtIGxldC1rZXk9XCJ2YWx1ZUtleVwiIGxldC1ncm91cEtleT1cImdyb3VwS2V5XCI+XG4gICAge3sgaXRlbVtrZXldIH19XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
511
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUMrQixTQUFTLEVBQWMsUUFBUSxFQUNqRSxRQUFRLEVBQUUsTUFBTSxFQUFZLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDckUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxPQUFPLEVBQXFCLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQW9DcEY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBYyxFQUFFLElBQWMsRUFBUyxFQUFFO0lBQ3pELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkI7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFVSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBMkV4RCxZQUNjLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLGdCQUF3QyxFQUN4QyxRQUE0QixFQUM1QixZQUE0QixFQUNhLHNCQUE4QyxFQUM3QyxlQUFrQyxFQUNoRSxTQUFtQjtRQUN6QyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQVIzRyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFDeEMsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQ2EsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM3QyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDaEUsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQWpGN0M7Ozs7V0FJRztRQUVJLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTlCOzs7OztXQUtHO1FBRUksZUFBVSxHQUFHLElBQUksQ0FBQztRQUV6Qjs7Ozs7Ozs7Ozs7O1dBWUc7UUFFSSxzQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztRQUVqRDs7Ozs7O1dBTUc7UUFFSSxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBb0MsQ0FBQztRQXVCaEY7O1dBRUc7UUFDSSxtQkFBYyxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyx5QkFBeUIsQ0FBQztRQUMxQyxtQkFBYyxHQUFHLDBCQUEwQixDQUFDO1FBQzVDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBWTNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFyQ0Q7O09BRUc7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUM1RCxDQUFDO0lBQ0Qsd0JBQXdCO0lBQ3hCLElBQVcsWUFBWSxDQUFDLEdBQWlCO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDMUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUF3QkQsd0JBQXdCO0lBQ3hCLElBQVcsa0JBQWtCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLEtBQW9CO1FBQ25DLGlEQUFpRDtRQUNqRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFFO1lBQ25ELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEQ7YUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO1lBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxHQUFHO1FBQ3RCLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN6QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsS0FBWTtRQUMxQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPO1lBQ0gsU0FBUyxFQUFFLElBQUk7U0FDbEIsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQixDQUFDLEtBQVk7UUFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2pDO2FBQU07WUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7UUFDRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksTUFBTSxDQUFDLFFBQW9CLEVBQUUscUJBQStCLEVBQUUsS0FBYTtRQUM5RSxJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUMvRixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksUUFBUSxDQUFDLEtBQWlCLEVBQUUsS0FBYTtRQUM1QyxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksY0FBYyxDQUFDLFlBQXNCLEVBQUUsS0FBYTtRQUN2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEgsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksZ0JBQWdCLENBQUMsWUFBc0IsRUFBRSxLQUFhO1FBQ3pELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2hFLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ25JO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSSxlQUFlLENBQUMsTUFBVyxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsS0FBYTtRQUM1RCxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDakIsWUFBWTtRQUNmLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQiwrRUFBK0U7UUFDL0UsK0ZBQStGO1FBQy9GLHVHQUF1RztRQUN2RyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO2FBQU07WUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGdCQUFnQixDQUFDLE9BQWlCO1FBQ3JDLElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDMUM7YUFBTTtZQUNILElBQUksT0FBTyxFQUFFO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqQjtTQUNKO0lBQ0wsQ0FBQztJQUVTLFlBQVksQ0FBQyxZQUFzQixFQUFFLEtBQWE7UUFDeEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdFLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRSxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckQsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sSUFBSSxHQUFxQztZQUMzQyxZQUFZLEVBQUUsbUJBQW1CO1lBQ2pDLFlBQVksRUFBRSxtQkFBbUI7WUFDakMsS0FBSztZQUNMLE9BQU87WUFDUCxLQUFLO1lBQ0wsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXO1lBQ1gsTUFBTSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDOUU7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzdDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pEO0lBQ0wsQ0FBQztJQUVTLGlCQUFpQixDQUFDLFlBQW1CLEVBQUUsWUFBbUI7UUFDaEUsT0FBTyxJQUFJLENBQUMsUUFBUTtZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDckQsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsd0VBQXdFO0lBQ2hFLGlCQUFpQixDQUFDLFNBQWdCO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwRixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OzhHQWxVUSxpQkFBaUIsbUxBaUZGLG1CQUFtQiw2QkFDbkIsb0JBQW9CO2tHQWxGbkMsaUJBQWlCLDJNQU5mO1FBQ1Asa0JBQWtCO1FBQ2xCLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtRQUNoRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtLQUM5RSxvRUFnRFUseUJBQXlCLHFGQ2pLeEMsbXBMQW9HQSx1MEZEeVZRLHdCQUF3QixzR0FJeEIseUJBQXlCLCtIQVF6QixxQkFBcUIsbUlBTnJCLHFCQUFxQix5RkFHckIsb0JBQW9COzJGQW5WZixpQkFBaUI7a0JBVDdCLFNBQVM7K0JBQ0ksV0FBVyxhQUVWO3dCQUNQLGtCQUFrQjt3QkFDbEIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxtQkFBbUIsRUFBRTt3QkFDaEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUM5RTs7MEJBbUZJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDdEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUN2QyxRQUFROzRDQTNFTixlQUFlO3NCQURyQixLQUFLO2dCQVVDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFXQyxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBS0EsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7QUF1UjFEOztHQUVHO0FBbURILE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBaERuQix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQixFQTVVckIsaUJBQWlCLEVBOFV0Qix5QkFBeUI7UUFDekIsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsMkJBQTJCLGFBcUIzQixZQUFZO1FBQ1osV0FBVztRQUNYLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1CLGFBNUJuQix3QkFBd0I7UUFDeEIsd0JBQXdCO1FBQ3hCLDBCQUEwQixFQTdWckIsaUJBQWlCLEVBK1Z0Qix5QkFBeUI7UUFDekIsc0JBQXNCO1FBQ3RCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsMkJBQTJCO1FBQzNCLG1CQUFtQjs0R0FnQmQsY0FBYyxZQWJuQixZQUFZO1FBQ1osV0FBVztRQUNYLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxhQUFhO1FBQ2IsbUJBQW1CO1FBQ25CLGVBQWU7UUFDZixlQUFlO1FBQ2YsbUJBQW1CLEVBYm5CLG1CQUFtQjsyRkFnQmQsY0FBYztrQkFsRDFCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLGlCQUFpQjt3QkFDakIseUJBQXlCO3dCQUN6QixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQiwyQkFBMkI7cUJBQzlCO29CQUNELE9BQU8sRUFBRTt3QkFDTCx3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QixxQkFBcUI7d0JBQ3JCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsMkJBQTJCO3dCQUMzQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixtQkFBbUI7cUJBQ3RCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDdEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBOZ01vZHVsZSwgT25Jbml0LCBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsIEluamVjdCwgSW5qZWN0b3IsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9FbXB0eURpcmVjdGl2ZSxcbiAgICBJZ3hDb21ib0hlYWRlckl0ZW1EaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9IZWFkZXJEaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9Gb290ZXJEaXJlY3RpdmUsXG4gICAgSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLFxuICAgIElneENvbWJvVG9nZ2xlSWNvbkRpcmVjdGl2ZSxcbiAgICBJZ3hDb21ib0NsZWFySWNvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2NvbWJvLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneENoZWNrYm94TW9kdWxlIH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzLCBDYW5jZWxhYmxlRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hTdHJpbmdGaWx0ZXJpbmdPcGVyYW5kLCBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZCB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctY29uZGl0aW9uJztcbmltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hGb3JPZk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvbk1vZHVsZSwgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4UmlwcGxlTW9kdWxlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUb2dnbGVNb2R1bGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RvZ2dsZS90b2dnbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4RHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwTW9kdWxlIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8tZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQ2xlYW5QaXBlLCBJZ3hDb21ib0ZpbHRlcmluZ1BpcGUsIElneENvbWJvR3JvdXBpbmdQaXBlIH0gZnJvbSAnLi9jb21iby5waXBlcyc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zIH0gZnJvbSAnLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IElHWF9DT01CT19DT01QT05FTlQsIElneENvbWJvQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vY29tYm8uY29tbW9uJztcbmltcG9ydCB7IElneENvbWJvQWRkSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8tYWRkLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQVBJU2VydmljZSB9IGZyb20gJy4vY29tYm8uYXBpJztcbmltcG9ydCB7IEVkaXRvclByb3ZpZGVyIH0gZnJvbSAnLi4vY29yZS9lZGl0LXByb3ZpZGVyJztcbmltcG9ydCB7IElneElucHV0R3JvdXBUeXBlLCBJR1hfSU5QVVRfR1JPVVBfVFlQRSB9IGZyb20gJy4uL2lucHV0LWdyb3VwL3B1YmxpY19hcGknO1xuXG4vKiogVGhlIGZpbHRlcmluZyBjcml0ZXJpYSB0byBiZSBhcHBsaWVkIG9uIGRhdGEgc2VhcmNoICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib0ZpbHRlcmluZ09wdGlvbnMge1xuICAgIC8qKiBEZWZpbmVzIGZpbHRlcmluZyBjYXNlLXNlbnNpdGl2aXR5ICovXG4gICAgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpZ3gtY29tYm8ncyBzZWxlY3Rpb24gaXMgY2hhbmdpbmcgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUNhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdGhhdCBhcmUgY3VycmVudGx5IHNlbGVjdGVkICovXG4gICAgb2xkU2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3U2VsZWN0aW9uOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSB2YWx1ZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgcmVtb3ZlZDogYW55W107XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvbWJvIHRleHQgYm94ICovXG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICAvKiogVGhlIHVzZXIgaW50ZXJhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIHNlbGVjdGlvbiBjaGFuZ2UgKi9cbiAgICBldmVudD86IEV2ZW50O1xufVxuXG4vKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBpZ3gtY29tYm8ncyBzZWFyY2ggaW5wdXQgY2hhbmdlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29tYm9TZWFyY2hJbnB1dEV2ZW50QXJncyBleHRlbmRzIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgLyoqIFRoZSB0ZXh0IHRoYXQgaGFzIGJlZW4gdHlwZWQgaW50byB0aGUgc2VhcmNoIGlucHV0ICovXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib0l0ZW1BZGRpdGlvbkV2ZW50IGV4dGVuZHMgSUJhc2VFdmVudEFyZ3MsIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIG9sZENvbGxlY3Rpb246IGFueVtdO1xuICAgIGFkZGVkSXRlbTogYW55O1xuICAgIG5ld0NvbGxlY3Rpb246IGFueVtdO1xufVxuXG4vKipcbiAqIFdoZW4gY2FsbGVkIHdpdGggc2V0cyBBICYgQiwgcmV0dXJucyBBIC0gQiAoYXMgYXJyYXkpO1xuICpcbiAqIEBoaWRkZW5cbiAqL1xuY29uc3QgZGlmZkluU2V0cyA9IChzZXQxOiBTZXQ8YW55Piwgc2V0MjogU2V0PGFueT4pOiBhbnlbXSA9PiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIHNldDEuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIGlmICghc2V0Mi5oYXMoZW50cnkpKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2goZW50cnkpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqICBSZXByZXNlbnRzIGEgZHJvcC1kb3duIGxpc3QgdGhhdCBwcm92aWRlcyBlZGl0YWJsZSBmdW5jdGlvbmFsaXRpZXMsIGFsbG93aW5nIHVzZXJzIHRvIGNob29zZSBhbiBvcHRpb24gZnJvbSBhIHByZWRlZmluZWQgbGlzdC5cbiAqXG4gKiBAaWd4TW9kdWxlIElneENvbWJvTW9kdWxlXG4gKiBAaWd4VGhlbWUgaWd4LWNvbWJvLXRoZW1lXG4gKiBAaWd4S2V5d29yZHMgY29tYm9ib3gsIGNvbWJvIHNlbGVjdGlvblxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqXG4gKiBAcmVtYXJrc1xuICogSXQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIGl0ZW1zIGFzIHdlbGwgYXMgcGVyZm9ybSBzZWxlY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cbiAqIEFkZGl0aW9uYWxseSwgaXQgZXhwb3NlcyBrZXlib2FyZCBuYXZpZ2F0aW9uIGFuZCBjdXN0b20gc3R5bGluZyBjYXBhYmlsaXRpZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1jb21ibyBbaXRlbXNNYXhIZWlnaHRdPVwiMjUwXCIgW2RhdGFdPVwibG9jYXRpb25EYXRhXCJcbiAqICBbZGlzcGxheUtleV09XCInZmllbGQnXCIgW3ZhbHVlS2V5XT1cIidmaWVsZCdcIlxuICogIHBsYWNlaG9sZGVyPVwiTG9jYXRpb24ocylcIiBzZWFyY2hQbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiPlxuICogPC9pZ3gtY29tYm8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY29tYm8nLFxuICAgIHRlbXBsYXRlVXJsOiAnY29tYm8uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHsgcHJvdmlkZTogSUdYX0NPTUJPX0NPTVBPTkVOVCwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hDb21ib0NvbXBvbmVudCwgbXVsdGk6IHRydWUgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29tYm9Db21wb25lbnQgZXh0ZW5kcyBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LFxuICAgIE9uRGVzdHJveSwgRWRpdG9yUHJvdmlkZXIge1xuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIGNvbWJvJ3Mgc2VhcmNoIGJveFxuICAgICAqIHNob3VsZCBiZSBmb2N1c2VkIGFmdGVyIHRoZSBgb3BlbmVkYCBldmVudCBpcyBjYWxsZWRcbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvRm9jdXNTZWFyY2ggPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgZW5hYmxlZC9kaXNhYmxlcyBmaWx0ZXJpbmcgaW4gdGhlIGxpc3QuIFRoZSBkZWZhdWx0IGlzIGB0cnVlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBbZmlsdGVyYWJsZV09XCJmYWxzZVwiPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlcmFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIHRoZSBjb21ibyBkcm9wZG93biBzZWFyY2ggZmllbGRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib1NlYXJjaFBsYWNlaG9sZGVyID0gdGhpcy5jb21iby5zZWFyY2hQbGFjZWhvbGRlcjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbc2VhcmNoUGxhY2Vob2xkZXJdPSduZXdQbGFjZUhvbGRlcic+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoUGxhY2Vob2xkZXIgPSAnRW50ZXIgYSBTZWFyY2ggVGVybSc7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gaXRlbSBzZWxlY3Rpb24gaXMgY2hhbmdpbmcsIGJlZm9yZSB0aGUgc2VsZWN0aW9uIGNvbXBsZXRlc1xuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKHNlbGVjdGlvbkNoYW5naW5nKT0naGFuZGxlU2VsZWN0aW9uKCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvbWJvU2VsZWN0aW9uQ2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneENvbWJvRHJvcERvd25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGRyb3Bkb3duOiBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlucHV0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy52YWx1ZSAmJiAhdGhpcy5wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGZpbHRlcmVkRGF0YSgpOiBhbnlbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJhYmxlID8gdGhpcy5fZmlsdGVyZWREYXRhIDogdGhpcy5kYXRhO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmVkRGF0YSh2YWw6IGFueVtdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJlZERhdGEgPSB0aGlzLmdyb3VwS2V5ID8gKHZhbCB8fCBbXSkuZmlsdGVyKChlKSA9PiBlLmlzSGVhZGVyICE9PSB0cnVlKSA6IHZhbDtcbiAgICAgICAgdGhpcy5jaGVja01hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsdGVyaW5nTG9naWMgPSBGaWx0ZXJpbmdMb2dpYy5PcjtcblxuICAgIHByb3RlY3RlZCBzdHJpbmdGaWx0ZXJzID0gSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZDtcbiAgICBwcm90ZWN0ZWQgYm9vbGVhbkZpbHRlcnMgPSBJZ3hCb29sZWFuRmlsdGVyaW5nT3BlcmFuZDtcbiAgICBwcm90ZWN0ZWQgX3ByZXZJbnB1dFZhbHVlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZTogSWd4U2VsZWN0aW9uQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbWJvQVBJOiBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIHByb3RlY3RlZCBfZGlzcGxheURlbnNpdHlPcHRpb25zOiBJRGlzcGxheURlbnNpdHlPcHRpb25zLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKSBwcm90ZWN0ZWQgX2lucHV0R3JvdXBUeXBlOiBJZ3hJbnB1dEdyb3VwVHlwZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgX2ljb25TZXJ2aWNlLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUsIF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tYm9BUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5U2VhcmNoSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmFibGUgfHwgdGhpcy5hbGxvd0N1c3RvbVZhbHVlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPOiB1c2UgUGxhdGZvcm1VdGlsIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Rvd24nKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtID0gdGhpcy5kcm9wZG93bi5pdGVtc1swXTtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgfHwgZXZlbnQua2V5ID09PSAnRXNjJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZVNlbGVjdEFsbChldnQpIHtcbiAgICAgICAgaWYgKGV2dC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgc2VsZWN0aW9uLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jcmVhdGVEaXNwbGF5VGV4dCh0aGlzLnNlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9JbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250ZXh0KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbGVhckl0ZW1zKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcyh0cnVlLCBldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRFZGl0RWxlbWVudCgpLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdJdGVtcyBuZXcgaXRlbXMgdG8gYmUgc2VsZWN0ZWRcbiAgICAgKiBAcGFyYW0gY2xlYXJDdXJyZW50U2VsZWN0aW9uIGlmIHRydWUgY2xlYXIgcHJldmlvdXMgc2VsZWN0ZWQgaXRlbXNcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0KG5ld0l0ZW1zOiBBcnJheTxhbnk+LCBjbGVhckN1cnJlbnRTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChuZXdJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmFkZF9pdGVtcyh0aGlzLmlkLCBuZXdJdGVtcywgY2xlYXJDdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3QgZGVmaW5lZCBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIGl0ZW1zIHRvIGRlc2VsZWN0ZWRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5kZXNlbGVjdChbXCJOZXcgWW9ya1wiLCBcIk5ldyBKZXJzZXlcIl0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdChpdGVtczogQXJyYXk8YW55PiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGVfaXRlbXModGhpcy5pZCwgaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYWxsIChmaWx0ZXJlZCkgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZ25vcmVGaWx0ZXIgaWYgc2V0IHRvIHRydWUsIHNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2Ugc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnNlbGVjdEFsbEl0ZW1zKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYWxsVmlzaWJsZSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyhpZ25vcmVGaWx0ZXIgPyB0aGlzLmRhdGEgOiB0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgYWxsVmlzaWJsZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBkZXNlbGVjdHMgYWxsIGl0ZW1zLCBvdGhlcndpc2UgZGVzZWxlY3RzIG9ubHkgdGhlIGZpbHRlcmVkIG9uZXMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdEFsbEl0ZW1zKGlnbm9yZUZpbHRlcj86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfZW1wdHkoKTtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWREYXRhLmxlbmd0aCAhPT0gdGhpcy5kYXRhLmxlbmd0aCAmJiAhaWdub3JlRmlsdGVyKSB7XG4gICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXRfYWxsX2lkcyh0aGlzLmZpbHRlcmVkRGF0YSwgdGhpcy52YWx1ZUtleSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvRGVzZWxlY3RzIGEgc2luZ2xlIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtSUQgdGhlIGl0ZW1JRCBvZiB0aGUgc3BlY2lmaWMgaXRlbVxuICAgICAqIEBwYXJhbSBzZWxlY3QgSWYgdGhlIGl0ZW0gc2hvdWxkIGJlIHNlbGVjdGVkICh0cnVlKSBvciBkZXNlbGVjdGVkIChmYWxzZSlcbiAgICAgKlxuICAgICAqIFdpdGhvdXQgc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gbnVsbDtcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oaXRlbXNbMF0sIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqIFdpdGggc3BlY2lmaWVkIHZhbHVlS2V5O1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbHVlS2V5ID0gJ2ZpZWxkJztcbiAgICAgKiBjb25zdCBpdGVtczogeyBmaWVsZDogc3RyaW5nLCByZWdpb246IHN0cmluZ31bXSA9IGRhdGE7XG4gICAgICogdGhpcy5jb21iby5zZXRTZWxlY3RlZEl0ZW0oJ0Nvbm5lY3RpY3V0JywgdHJ1ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkSXRlbShpdGVtSUQ6IGFueSwgc2VsZWN0ID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbUlEID09PSBudWxsIHx8IGl0ZW1JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoW2l0ZW1JRF0sIGZhbHNlLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KFtpdGVtSURdLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuXG4gICAgICAgIC8vIERpc2FibGluZyBmb2N1cyBvZiB0aGUgc2VhcmNoIGlucHV0IHNob3VsZCBoYXBwZW4gb25seSB3aGVuIGRyb3AgZG93biBvcGVucy5cbiAgICAgICAgLy8gRHVyaW5nIGtleWJvYXJkIG5hdmlnYXRpb24gaW5wdXQgc2hvdWxkIHJlY2VpdmUgZm9jdXMsIGV2ZW4gdGhlIGF1dG9Gb2N1c1NlYXJjaCBpcyBkaXNhYmxlZC5cbiAgICAgICAgLy8gVGhhdCBpcyB3aHkgaW4gc3VjaCBjYXNlcyBmb2N1c2luZyBvZiB0aGUgZHJvcGRvd25Db250YWluZXIgaGFwcGVucyBvdXRzaWRlIGZvY3VzU2VhcmNoSW5wdXQgbWV0aG9kLlxuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXNTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5U2VhcmNoSW5wdXQgJiYgdGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbjogU2V0PGFueT4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IGRpZmZJblNldHModGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSwgbmV3U2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSBkaWZmSW5TZXRzKG5ld1NlbGVjdGlvbiwgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmdldCh0aGlzLmlkKSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbkFzQXJyYXkgPSBBcnJheS5mcm9tKG5ld1NlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbkFzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCkgfHwgW10pO1xuICAgICAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uQXNBcnJheSwgb2xkU2VsZWN0aW9uQXNBcnJheSk7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uOiBuZXdTZWxlY3Rpb25Bc0FycmF5LFxuICAgICAgICAgICAgb2xkU2VsZWN0aW9uOiBvbGRTZWxlY3Rpb25Bc0FycmF5LFxuICAgICAgICAgICAgYWRkZWQsXG4gICAgICAgICAgICByZW1vdmVkLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIGRpc3BsYXlUZXh0LFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5naW5nLmVtaXQoYXJncyk7XG4gICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RfaXRlbXModGhpcy5pZCwgYXJncy5uZXdTZWxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcmdzLmRpc3BsYXlUZXh0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQoYXJncy5uZXdTZWxlY3Rpb24sIGFyZ3Mub2xkU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soYXJncy5uZXdTZWxlY3Rpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZW1vdGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJSZW1vdGVFbnRyaWVzKGFyZ3MuYWRkZWQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVEaXNwbGF5VGV4dChuZXdTZWxlY3Rpb246IGFueVtdLCBvbGRTZWxlY3Rpb246IGFueVtdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUmVtb3RlXG4gICAgICAgICAgICA/IHRoaXMuZ2V0UmVtb3RlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgb2xkU2VsZWN0aW9uKVxuICAgICAgICAgICAgOiB0aGlzLmNvbmNhdERpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgYSBzdHJpbmcgdGhhdCBzaG91bGQgYmUgcG9wdWxhdGVkIGluIHRoZSBjb21ibydzIHRleHQgYm94ICovXG4gICAgcHJpdmF0ZSBjb25jYXREaXNwbGF5VGV4dChzZWxlY3Rpb246IGFueVtdKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRpc3BsYXlLZXkgIT09IG51bGwgJiYgdGhpcy5kaXNwbGF5S2V5ICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMoc2VsZWN0aW9uKS5tYXAoZW50cnkgPT4gZW50cnlbdGhpcy5kaXNwbGF5S2V5XSkuam9pbignLCAnKSA6XG4gICAgICAgICAgICBzZWxlY3Rpb24uam9pbignLCAnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0NsZWFySWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRW1wdHlEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9DbGVhblBpcGUsXG4gICAgICAgIElneENvbWJvRm9vdGVyRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0dyb3VwaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9IZWFkZXJEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvSGVhZGVySXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9JdGVtQ29tcG9uZW50LFxuICAgICAgICBJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvVG9nZ2xlSWNvbkRpcmVjdGl2ZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvQWRkSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9DbGVhckljb25EaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvQ29tcG9uZW50LFxuICAgICAgICBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LFxuICAgICAgICBJZ3hDb21ib0VtcHR5RGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0ZpbHRlcmluZ1BpcGUsXG4gICAgICAgIElneENvbWJvQ2xlYW5QaXBlLFxuICAgICAgICBJZ3hDb21ib0Zvb3RlckRpcmVjdGl2ZSxcbiAgICAgICAgSWd4Q29tYm9Hcm91cGluZ1BpcGUsXG4gICAgICAgIElneENvbWJvSGVhZGVyRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0hlYWRlckl0ZW1EaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4Q29tYm9JdGVtRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib1RvZ2dsZUljb25EaXJlY3RpdmUsXG4gICAgICAgIElneElucHV0R3JvdXBNb2R1bGVcbiAgICBdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgSWd4QnV0dG9uTW9kdWxlLFxuICAgICAgICBJZ3hDaGVja2JveE1vZHVsZSxcbiAgICAgICAgSWd4RHJvcERvd25Nb2R1bGUsXG4gICAgICAgIElneEZvck9mTW9kdWxlLFxuICAgICAgICBJZ3hJY29uTW9kdWxlLFxuICAgICAgICBJZ3hJbnB1dEdyb3VwTW9kdWxlLFxuICAgICAgICBJZ3hSaXBwbGVNb2R1bGUsXG4gICAgICAgIElneFRvZ2dsZU1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4Q29tYm9Nb2R1bGUgeyB9XG4iLCI8aWd4LWlucHV0LWdyb3VwICNpbnB1dEdyb3VwIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIFt0eXBlXT1cInR5cGVcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIltpZ3hMYWJlbF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lneExhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXByZWZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtcHJlZml4XCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtaGludCwgW2lneEhpbnRdXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1oaW50LCBbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlucHV0IGlneElucHV0ICNjb21ib0lucHV0IG5hbWU9XCJjb21ib0lucHV0XCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwidmFsdWVcIiByZWFkb25seSBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChibHVyKT1cIm9uQmx1cigpXCIgLz5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXN1ZmZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtc3VmZml4XCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxpZ3gtc3VmZml4ICpuZ0lmPVwidmFsdWUubGVuZ3RoXCIgYXJpYS1sYWJlbD1cIkNsZWFyIFNlbGVjdGlvblwiIGNsYXNzPVwiaWd4LWNvbWJvX19jbGVhci1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xlYXJJdGVtcygkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGVhckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFySWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhY2xlYXJJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIGNsZWFyXG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9pZ3gtc3VmZml4PlxuICAgIDxpZ3gtc3VmZml4IGNsYXNzPVwiaWd4LWNvbWJvX190b2dnbGUtYnV0dG9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2dnbGVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b2dnbGVJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHRoaXMuY29sbGFwc2VkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGlneC1pY29uICpuZ0lmPVwiIXRvZ2dsZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAge3sgZHJvcGRvd24uY29sbGFwc2VkID8gJ2Fycm93X2Ryb3BfZG93bicgOiAnYXJyb3dfZHJvcF91cCd9fVxuICAgICAgICA8L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbjwvaWd4LWlucHV0LWdyb3VwPlxuPGlneC1jb21iby1kcm9wLWRvd24gI2lneENvbWJvRHJvcERvd24gY2xhc3M9XCJpZ3gtY29tYm9fX2Ryb3AtZG93blwiIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiXG4gICAgW3dpZHRoXT1cIml0ZW1zV2lkdGggfHwgJzEwMCUnXCIgKG9wZW5pbmcpPVwiaGFuZGxlT3BlbmluZygkZXZlbnQpXCIgKGNsb3NpbmcpPVwiaGFuZGxlQ2xvc2luZygkZXZlbnQpXCJcbiAgICAob3BlbmVkKT1cImhhbmRsZU9wZW5lZCgpXCIgKGNsb3NlZCk9XCJoYW5kbGVDbG9zZWQoKVwiPlxuICAgIDxpZ3gtaW5wdXQtZ3JvdXAgKm5nSWY9XCJkaXNwbGF5U2VhcmNoSW5wdXRcIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIiB0aGVtZT1cIm1hdGVyaWFsXCIgY2xhc3M9XCJpZ3gtY29tYm9fX3NlYXJjaFwiPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJpZ3gtY29tYm8taW5wdXRcIiBpZ3hJbnB1dCAjc2VhcmNoSW5wdXQgbmFtZT1cInNlYXJjaElucHV0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZUlucHV0Q2hhbmdlKCRldmVudClcIiAoa2V5dXApPVwiaGFuZGxlS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAoZm9jdXMpPVwiZHJvcGRvd24ub25CbHVyKCRldmVudClcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImJvdGhcIiBbYXR0ci5hcmlhLW93bnNdPVwiZHJvcGRvd24uaWRcIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIiAvPlxuICAgICAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cInNob3dTZWFyY2hDYXNlSWNvblwiPlxuICAgICAgICAgICAgPGlneC1pY29uIGZhbWlseT1cImlteC1pY29uc1wiIG5hbWU9XCJjYXNlLXNlbnNpdGl2ZVwiIFthY3RpdmVdPVwiZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2FzZVNlbnNpdGl2ZSgpXCI+XG4gICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICA8L2lneC1zdWZmaXg+XG4gICAgPC9pZ3gtaW5wdXQtZ3JvdXA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAjZHJvcGRvd25JdGVtQ29udGFpbmVyIGNsYXNzPVwiaWd4LWNvbWJvX19jb250ZW50XCIgW3N0eWxlLm92ZXJmbG93XT1cIidoaWRkZW4nXCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJpdGVtc01heEhlaWdodFwiIFtpZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uXT1cImRyb3Bkb3duXCIgKGZvY3VzKT1cImRyb3Bkb3duLm9uRm9jdXMoKVwiXG4gICAgICAgIFt0YWJpbmRleF09XCJkcm9wZG93bi5jb2xsYXBzZWQgPyAtMSA6IDBcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmlkXT1cImRyb3Bkb3duLmlkXCI+XG4gICAgICAgIDxpZ3gtY29tYm8taXRlbSByb2xlPVwib3B0aW9uXCIgW2l0ZW1IZWlnaHRdPSdpdGVtSGVpZ2h0JyAqaWd4Rm9yPVwibGV0IGl0ZW0gb2YgZGF0YVxuICAgICAgICAgICAgfCBjb21ib0ZpbHRlcmluZzpmaWx0ZXJWYWx1ZTpkaXNwbGF5S2V5OmZpbHRlcmluZ09wdGlvbnM6ZmlsdGVyYWJsZVxuICAgICAgICAgICAgfCBjb21ib0dyb3VwaW5nOmdyb3VwS2V5OnZhbHVlS2V5Omdyb3VwU29ydGluZ0RpcmVjdGlvbjtcbiAgICAgICAgICAgIGluZGV4IGFzIHJvd0luZGV4OyBjb250YWluZXJTaXplOiBpdGVtc01heEhlaWdodDsgc2Nyb2xsT3JpZW50YXRpb246ICd2ZXJ0aWNhbCc7IGl0ZW1TaXplOiBpdGVtSGVpZ2h0XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCIgW2lzSGVhZGVyXT1cIml0ZW0uaXNIZWFkZXJcIiBbaW5kZXhdPVwicm93SW5kZXhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlckl0ZW1UZW1wbGF0ZSA/IGhlYWRlckl0ZW1UZW1wbGF0ZSA6IGhlYWRlckl0ZW1CYXNlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtLCBkYXRhOiBkYXRhLCB2YWx1ZUtleTogdmFsdWVLZXksIGdyb3VwS2V5OiBncm91cEtleSwgZGlzcGxheUtleTogZGlzcGxheUtleX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBkaXNwbGF5S2V5OiBkaXNwbGF5S2V5fTtcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2FkZFwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMCB8fCBpc0FkZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNvbWJvX19lbXB0eVwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgPyBlbXB0eVRlbXBsYXRlIDogZW1wdHlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlneC1jb21iby1hZGQtaXRlbSBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0XCIgKm5nSWY9XCJpc0FkZEJ1dHRvblZpc2libGUoKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZHJvcGRvd24uY29sbGFwc2VkID8gLTEgOiBjdXN0b21WYWx1ZUZsYWcgPyAxIDogLTFcIiBjbGFzcz1cImlneC1jb21ib19fYWRkLWl0ZW1cIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBZGQgSXRlbVwiIFtpbmRleF09XCJ2aXJ0dWFsU2Nyb2xsQ29udGFpbmVyLmlneEZvck9mLmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZEl0ZW1UZW1wbGF0ZSA/IGFkZEl0ZW1UZW1wbGF0ZSA6IGFkZEl0ZW1EZWZhdWx0XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9pZ3gtY29tYm8tYWRkLWl0ZW0+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlclRlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2lneC1jb21iby1kcm9wLWRvd24+XG48bmctdGVtcGxhdGUgI2NvbXBsZXggbGV0LWRpc3BsYXkgbGV0LWRhdGE9XCJkYXRhXCIgbGV0LWtleT1cImRpc3BsYXlLZXlcIj5cbiAgICB7e2Rpc3BsYXlba2V5XX19XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNwcmltaXRpdmUgbGV0LWRpc3BsYXk+XG4gICAge3tkaXNwbGF5fX1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgIDxzcGFuPlRoZSBsaXN0IGlzIGVtcHR5PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWRkSXRlbURlZmF1bHQgbGV0LWNvbnRyb2w+XG4gICAgPGJ1dHRvbiBpZ3hCdXR0b249XCJmbGF0XCIgaWd4UmlwcGxlPkFkZCBpdGVtPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNoZWFkZXJJdGVtQmFzZSBsZXQtaXRlbSBsZXQta2V5PVwidmFsdWVLZXlcIiBsZXQtZ3JvdXBLZXk9XCJncm91cEtleVwiPlxuICAgIHt7IGl0ZW1ba2V5XSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|