systelab-virtual-keyboard 17.0.0 → 17.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/constants.mjs +7 -7
- package/esm2022/lib/systelab-virtual-keyboard-overlay.service.mjs +35 -19
- package/esm2022/lib/systelab-virtual-keyboard.component.mjs +13 -22
- package/esm2022/lib/systelab-virtual-keyboard.config.mjs +1 -1
- package/esm2022/lib/systelab-virtual-keyboard.directive.mjs +41 -20
- package/fesm2022/systelab-virtual-keyboard.mjs +91 -63
- package/fesm2022/systelab-virtual-keyboard.mjs.map +1 -1
- package/lib/constants.d.ts +2 -2
- package/lib/constants.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard-overlay.service.d.ts +6 -2
- package/lib/systelab-virtual-keyboard-overlay.service.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.component.d.ts +1 -2
- package/lib/systelab-virtual-keyboard.component.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.config.d.ts +1 -0
- package/lib/systelab-virtual-keyboard.config.d.ts.map +1 -1
- package/lib/systelab-virtual-keyboard.directive.d.ts +3 -1
- package/lib/systelab-virtual-keyboard.directive.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,4 +42,4 @@ The configuration params are describe into the interface [SystelabVirtualKeyboar
|
|
|
42
42
|
| layout | SystelabVirtualKeyboardLayouts | | Usually the virtual keyboard select the layout between *default* or *numeric* depending on the input type. But with the config object you can override this behaviour and force the desired layout. The available layouts are described in the enum *SystelabVirtualKeyboardLayouts*
|
|
43
43
|
| inputMethod | SystelabVirtualKeyboardInputMethods | | The method detected for the keyboard to click or touch the keys
|
|
44
44
|
| showButton | boolean | false | Show or hide the button for showing the keyboard
|
|
45
|
-
|
|
45
|
+
| showOnMouseClick | boolean | false | Shows virtual keyboard upon mouse click on input field
|
|
@@ -28,10 +28,10 @@ export var SystelabVirtualKeyboardInputMethods;
|
|
|
28
28
|
SystelabVirtualKeyboardInputMethods["onlyMouseEvents"] = "onlyMouseEvents";
|
|
29
29
|
SystelabVirtualKeyboardInputMethods["onlyTouchEvents"] = "onlyTouchEvents";
|
|
30
30
|
})(SystelabVirtualKeyboardInputMethods || (SystelabVirtualKeyboardInputMethods = {}));
|
|
31
|
-
export var
|
|
32
|
-
(function (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
})(
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
export var SystelabVirtualKeyboardInputModes;
|
|
32
|
+
(function (SystelabVirtualKeyboardInputModes) {
|
|
33
|
+
SystelabVirtualKeyboardInputModes["text"] = "text";
|
|
34
|
+
SystelabVirtualKeyboardInputModes["numeric"] = "numeric";
|
|
35
|
+
SystelabVirtualKeyboardInputModes["password"] = "password";
|
|
36
|
+
})(SystelabVirtualKeyboardInputModes || (SystelabVirtualKeyboardInputModes = {}));
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC9zcmMvbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsTUFBTSxDQUFOLElBQVksNkJBU1g7QUFURCxXQUFZLDZCQUE2QjtJQUNyQyxnREFBZSxDQUFBO0lBQ2Ysa0RBQWlCLENBQUE7SUFDakIsa0RBQWlCLENBQUE7SUFDakIsZ0RBQWUsQ0FBQTtJQUNmLHFEQUFvQixDQUFBO0lBQ3BCLHdEQUF1QixDQUFBO0lBQ3ZCLGtEQUFpQixDQUFBO0lBQ2pCLDhDQUFhLENBQUE7QUFDakIsQ0FBQyxFQVRXLDZCQUE2QixLQUE3Qiw2QkFBNkIsUUFTeEM7QUFFRCxNQUFNLENBQU4sSUFBWSw4QkFJWDtBQUpELFdBQVksOEJBQThCO0lBQ3RDLHFEQUFtQixDQUFBO0lBQ25CLGlEQUFlLENBQUE7SUFDZixxREFBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsOEJBQThCLEtBQTlCLDhCQUE4QixRQUl6QztBQUVELE1BQU0sQ0FBTixJQUFZLG1DQUdYO0FBSEQsV0FBWSxtQ0FBbUM7SUFDM0MsMEVBQW1DLENBQUE7SUFDbkMsMEVBQW1DLENBQUE7QUFDdkMsQ0FBQyxFQUhXLG1DQUFtQyxLQUFuQyxtQ0FBbUMsUUFHOUM7QUFFRCxNQUFNLENBQU4sSUFBWSxpQ0FJWDtBQUpELFdBQVksaUNBQWlDO0lBQ3pDLGtEQUFhLENBQUE7SUFDYix3REFBbUIsQ0FBQTtJQUNuQiwwREFBcUIsQ0FBQTtBQUN6QixDQUFDLEVBSlcsaUNBQWlDLEtBQWpDLGlDQUFpQyxRQUk1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDI0IC0gSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgU3lzdGVsYWIgVGVjaG5vbG9naWVzLCBTQS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAqIGFmZmlsaWF0ZXMsIGlmIGFueS4gIFRoZSBpbnRlbGxlY3R1YWwgYW5kIHRlY2huaWNhbCBjb25jZXB0cyBjb250YWluZWQgaGVyZWluIGFyZSBwcm9wcmlldGFyeSB0byBJbnN0cnVtZW50YXRpb25cbiAqIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzIGFmZmlsaWF0ZXMgYW5kIG1heSBiZSBjb3ZlcmVkIGJ5IFUuUy4gYW5kIGZvcmVpZ24gcGF0ZW50cyBhbmQgcGF0ZW50IGFwcGxpY2F0aW9ucywgYW5kL29yXG4gKiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAqIHN0cmljdGx5IGZvcmJpZGRlbiB1bmxlc3MgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGlzIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkuXG4gKi9cblxuZXhwb3J0IGVudW0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24ge1xuICAgIERvbmUgPSAne2RvbmV9JyxcbiAgICBFbnRlciA9ICd7ZW50ZXJ9JyxcbiAgICBTaGlmdCA9ICd7c2hpZnR9JyxcbiAgICBMb2NrID0gJ3tsb2NrfScsXG4gICAgQmFja3NwYWNlID0gJ3tia3NwfScsXG4gICAgTGFuZ3VhZ2UgPSAne2xhbmd1YWdlfScsXG4gICAgU3BhY2UgPSAne3NwYWNlfScsXG4gICAgVGFiID0gJ3t0YWJ9Jyxcbn1cblxuZXhwb3J0IGVudW0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIHNoaWZ0ID0gJ3NoaWZ0JyxcbiAgICBudW1lcmljID0gJ251bWVyaWMnLFxufVxuXG5leHBvcnQgZW51bSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcyB7XG4gICAgb25seU1vdXNlRXZlbnRzID0gJ29ubHlNb3VzZUV2ZW50cycsXG4gICAgb25seVRvdWNoRXZlbnRzID0gJ29ubHlUb3VjaEV2ZW50cycsXG59XG5cbmV4cG9ydCBlbnVtIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRNb2RlcyB7XG4gICAgdGV4dCA9ICd0ZXh0JyxcbiAgICBudW1lcmljID0gJ251bWVyaWMnLFxuICAgIHBhc3N3b3JkID0gJ3Bhc3N3b3JkJyxcbn1cbiJdfQ==
|
|
@@ -7,7 +7,8 @@ import * as i1 from "@angular/cdk/overlay";
|
|
|
7
7
|
export class SystelabVirtualKeyboardOverlayService {
|
|
8
8
|
constructor(overlay) {
|
|
9
9
|
this.overlay = overlay;
|
|
10
|
-
this.
|
|
10
|
+
this.clickAlreadyHandled = false;
|
|
11
|
+
this.touchEndAlreadyHandled = false;
|
|
11
12
|
this.initListener();
|
|
12
13
|
}
|
|
13
14
|
isCreated() {
|
|
@@ -38,8 +39,11 @@ export class SystelabVirtualKeyboardOverlayService {
|
|
|
38
39
|
updatePosition() {
|
|
39
40
|
this.updatePositionStrategy(this.inputOrigin, this.fixedBottom);
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
-
this.
|
|
42
|
+
setClickAlreadyHandled() {
|
|
43
|
+
this.clickAlreadyHandled = true;
|
|
44
|
+
}
|
|
45
|
+
setTouchEndAlreadyHandled() {
|
|
46
|
+
this.touchEndAlreadyHandled = true;
|
|
43
47
|
}
|
|
44
48
|
destroy() {
|
|
45
49
|
if (this.overlayRef) {
|
|
@@ -50,25 +54,33 @@ export class SystelabVirtualKeyboardOverlayService {
|
|
|
50
54
|
}
|
|
51
55
|
initListener() {
|
|
52
56
|
document.addEventListener('click', this.handleClick.bind(this));
|
|
57
|
+
document.addEventListener('touchend', this.handleTouchEnd.bind(this));
|
|
53
58
|
}
|
|
54
59
|
handleClick(event) {
|
|
55
|
-
if (this.
|
|
56
|
-
this.
|
|
60
|
+
if (this.clickAlreadyHandled) {
|
|
61
|
+
this.clickAlreadyHandled = false;
|
|
57
62
|
return;
|
|
58
63
|
}
|
|
59
|
-
console.log('Document clicked:', event);
|
|
60
64
|
event.stopPropagation();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
this.handleEventTarget(event.target);
|
|
66
|
+
}
|
|
67
|
+
handleTouchEnd(event) {
|
|
68
|
+
if (this.touchEndAlreadyHandled) {
|
|
69
|
+
this.touchEndAlreadyHandled = false;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
this.handleEventTarget(event.target);
|
|
74
|
+
}
|
|
75
|
+
handleEventTarget(target) {
|
|
76
|
+
const showKeyboardButtonTarget = target?.classList.contains('virtual-keyboard-show-button');
|
|
77
|
+
const virtualKeyboardTarget = document.querySelector('.simple-keyboard')?.contains(target);
|
|
78
|
+
const inputElementTarget = this.inputOrigin?.contains(target);
|
|
79
|
+
const containsShowButton = this.showKeyboardButtonElement?.contains(target);
|
|
80
|
+
if (!virtualKeyboardTarget &&
|
|
81
|
+
!inputElementTarget &&
|
|
70
82
|
!containsShowButton &&
|
|
71
|
-
!
|
|
83
|
+
!showKeyboardButtonTarget) {
|
|
72
84
|
if (this.isCreated()) {
|
|
73
85
|
this.destroy();
|
|
74
86
|
}
|
|
@@ -78,10 +90,14 @@ export class SystelabVirtualKeyboardOverlayService {
|
|
|
78
90
|
return this.overlayRef?.hasAttached();
|
|
79
91
|
}
|
|
80
92
|
updatePositionStrategy(inputOrigin, fixedBottom) {
|
|
81
|
-
this.overlayRef
|
|
93
|
+
if (!!this.overlayRef) {
|
|
94
|
+
this.overlayRef.updatePositionStrategy(this.getPositionStrategy(inputOrigin, fixedBottom));
|
|
95
|
+
}
|
|
82
96
|
}
|
|
83
97
|
updateSize() {
|
|
84
|
-
this.overlayRef
|
|
98
|
+
if (!!this.overlayRef) {
|
|
99
|
+
this.overlayRef.updateSize(this.getOverlaySize());
|
|
100
|
+
}
|
|
85
101
|
}
|
|
86
102
|
getPositionStrategy(inputOrigin, fixedBottom) {
|
|
87
103
|
if (fixedBottom) {
|
|
@@ -157,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
157
173
|
providedIn: 'root',
|
|
158
174
|
}]
|
|
159
175
|
}], ctorParameters: () => [{ type: i1.Overlay }] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBWXpGLE1BQU0sT0FBTyxxQ0FBcUM7SUFTOUMsWUFBNkIsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUZyQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQ1QsV0FBNkIsRUFDN0IseUJBQXNDLEVBQ3RDLFdBQW9CLEVBQ3BCLFNBQXlDLDhCQUE4QixDQUFDLE9BQU87UUFFL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFD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QUFDLENBQUMsQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFFN0QsTUFBTSxVQUFVLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBbkxRLHFDQUFxQztrSEFBckMscUNBQXFDLGNBRmxDLE1BQU07OzJGQUVULHFDQUFxQztrQkFIakQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIC0gMjAyNCAtIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIFN5c3RlbGFiIFRlY2hub2xvZ2llcywgU0EuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBOT1RJQ0U6ICBBbGwgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBhbmQgcmVtYWlucyB0aGUgcHJvcGVydHkgb2YgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueSBhbmQgaXRzXG4gKiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gKiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0cyBhZmZpbGlhdGVzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBmb3JlaWduIHBhdGVudHMgYW5kIHBhdGVudCBhcHBsaWNhdGlvbnMsIGFuZC9vclxuICogYXJlIHByb3RlY3RlZCBieSB0cmFkZSBzZWNyZXQgb3IgY29weXJpZ2h0IGxhdy4gRGlzc2VtaW5hdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIGlzXG4gKiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICovXG5cbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYsIE92ZXJsYXlTaXplQ29uZmlnLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkT3ZlcmxheVNlcnZpY2Uge1xuICAgIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudDtcbiAgICBwcml2YXRlIGZpeGVkQm90dG9tOiBib29sZWFuO1xuICAgIHByaXZhdGUgc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBvcGVuOiBib29sZWFuO1xuICAgIHByaXZhdGUgbGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHM7XG4gICAgcHJpdmF0ZSBmb2N1c0Rpc3BhdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSkge1xuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0NyZWF0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMub3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUoXG4gICAgICAgIGlucHV0T3JpZ2luOiBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgICBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICAgICAgZml4ZWRCb3R0b206IGJvb2xlYW4sXG4gICAgICAgIGxheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzID0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQsXG4gICAgKTogQ29tcG9uZW50UmVmPFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50PiB7XG4gICAgICAgIHRoaXMuaW5wdXRPcmlnaW4gPSBpbnB1dE9yaWdpbjtcbiAgICAgICAgdGhpcy5maXhlZEJvdHRvbSA9IGZpeGVkQm90dG9tO1xuICAgICAgICB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQgPSBzaG93S2V5Ym9hcmRCdXR0b25FbGVtZW50O1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKCd2aXJ0dWFsLWtleWJvYXJkLW92ZXJsYXktcGFuZScpO1xuICAgICAgICBpZiAoZml4ZWRCb3R0b20pIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKCd2aXJ0dWFsLWtleWJvYXJkLWZpeGVkLWJvdHRvbScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luLCBmaXhlZEJvdHRvbSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMub3BlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwoU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmlucHV0T3JpZ2luLCB0aGlzLmZpeGVkQm90dG9tKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Rm9jdXNEaXNwYXRjaGVkKGRpc3BhdGNoZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c0Rpc3BhdGNoZWQgPSBkaXNwYXRjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdExpc3RlbmVyKCkge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5mb2N1c0Rpc3BhdGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNEaXNwYXRjaGVkID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ0RvY3VtZW50IGNsaWNrZWQ6JywgZXZlbnQpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3Qgc2ltcGxlS2V5Ym9hcmRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpbXBsZS1rZXlib2FyZCcpO1xuICAgICAgICBjb25zdCBzaG93S2V5Ym9hcmRCdXR0b25DbGlja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsYXNzTGlzdC5jb250YWlucygndmlydHVhbC1rZXlib2FyZC1zaG93LWJ1dHRvbicpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRhaW5zS2V5Ym9hcmQgPSBzaW1wbGVLZXlib2FyZEVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKTtcbiAgICAgICAgY29uc3QgY29udGFpbnNFbGVtZW50UmVmID0gdGhpcy5pbnB1dE9yaWdpbj8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICAvLyBjb25zdCBjb250YWluc0ZvY3VzZWRFbGVtZW50ID0gdGhpcy5mb2N1c2VkRWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICBjb25zdCBjb250YWluc1Nob3dCdXR0b24gPSB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWNvbnRhaW5zS2V5Ym9hcmQgJiZcbiAgICAgICFjb250YWluc0VsZW1lbnRSZWYgJiZcbiAgICAgIC8vICFjb250YWluc0ZvY3VzZWRFbGVtZW50ICYmXG4gICAgICAhY29udGFpbnNTaG93QnV0dG9uICYmXG4gICAgICAhc2hvd0tleWJvYXJkQnV0dG9uQ2xpY2tlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQXR0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luOiBIVE1MSW5wdXRFbGVtZW50LCBmaXhlZEJvdHRvbTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW4sIGZpeGVkQm90dG9tKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh0aGlzLmdldE92ZXJsYXlTaXplKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneShpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudCwgZml4ZWRCb3R0b206IGJvb2xlYW4pOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICAgICAgaWYgKGZpeGVkQm90dG9tKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuYm90dG9tKCcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludFdpdGhEaW1lbnNpb25zOiBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luID0gdGhpcy5jb21wdXRlUG9zaXRpb25TdHJhdGVneU9yaWdpbihpbnB1dE9yaWdpbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHBvaW50V2l0aERpbWVuc2lvbnMpXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSlcbiAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSlcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPdmVybGF5U2l6ZSgpOiBPdmVybGF5U2l6ZUNvbmZpZyB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlXaWR0aCA9IHRoaXMubGF5b3V0ID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMubnVtZXJpYyA/ICc0MDBweCcgOiAnMTIwMHB4JztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IG92ZXJsYXlXaWR0aCxcbiAgICAgICAgICAgIG1heFdpZHRoOiBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICBtaW5XaWR0aDogb3ZlcmxheVdpZHRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY29tcHV0ZVBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4oaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQpOiBQb3NpdGlvblN0cmF0ZWd5T3JpZ2luIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheU9mZnNldFggPSB0aGlzLmNvbXB1dGVPdmVybGF5T2Zmc2V0WChpbnB1dE9yaWdpbik7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgICAgICBjb25zdCBvdmVybGF5V2lkdGggPSBOdW1iZXIoKG92ZXJsYXlXaWR0aFN0cmluZyBhcyBzdHJpbmcpLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICAgICAgY29uc3Qge3gsIHksIHdpZHRoLCBoZWlnaHR9ID0gaW5wdXRPcmlnaW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHg6IHdpZHRoIDwgb3ZlcmxheVdpZHRoID8geCAtIG92ZXJsYXlPZmZzZXRYIDogeCArIG92ZXJsYXlPZmZzZXRYLFxuICAgICAgICAgICAgeSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVPdmVybGF5T2Zmc2V0WChpbnB1dE9yaWdpbjogSFRNTElucHV0RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IG92ZXJsYXlXaWR0aFN0cmluZyB9ID0gdGhpcy5nZXRPdmVybGF5U2l6ZSgpO1xuICAgICAgICBjb25zdCBvdmVybGF5V2lkdGggPSBOdW1iZXIoKG92ZXJsYXlXaWR0aFN0cmluZyBhcyBzdHJpbmcpLnJlcGxhY2UoJ3B4JywgJycpKTtcbiAgICAgICAgY29uc3QgaW5wdXRXaWR0aCA9IGlucHV0T3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhV2lkdGggPSBvdmVybGF5V2lkdGggLSBpbnB1dFdpZHRoO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhleHRyYVdpZHRoKSAvIDI7XG4gICAgfVxufVxuIl19
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC1vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBWXpGLE1BQU0sT0FBTyxxQ0FBcUM7SUFVOUMsWUFBNkIsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUhyQyx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBRzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVNLE1BQU0sQ0FDVCxXQUE2QixFQUM3Qix5QkFBc0MsRUFDdEMsV0FBb0IsRUFDcEIsU0FBeUMsOEJBQThCLENBQUMsT0FBTztRQUUvRSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMseUJBQXlCLEdBQUcseUJBQXlCLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7WUFDMUQsbUJBQW1CLEVBQUUsSUFBSTtTQUM1QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9ELElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNsRTtRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFTSxjQUFjO1FBQ2pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVNLHlCQUF5QjtRQUM1QixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRU8sWUFBWTtRQUNoQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBaUI7UUFDakMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNqQyxPQUFPO1NBQ1Y7UUFFRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWlCO1FBQ3BDLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7WUFDcEMsT0FBTztTQUNWO1FBRUQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQW1CO1FBQ3pDLE1BQU0sd0JBQXdCLEdBQWEsTUFBc0IsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDdEgsTUFBTSxxQkFBcUIsR0FBWSxRQUFRLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQWMsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sa0JBQWtCLEdBQVksSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsTUFBYyxDQUFDLENBQUM7UUFDL0UsTUFBTSxrQkFBa0IsR0FBWSxJQUFJLENBQUMseUJBQXlCLEVBQUUsUUFBUSxDQUFDLE1BQWMsQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxxQkFBcUI7WUFDdEIsQ0FBQyxrQkFBa0I7WUFDbkIsQ0FBQyxrQkFBa0I7WUFDbkIsQ0FBQyx3QkFBd0IsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1NBQ0o7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsV0FBNkIsRUFBRSxXQUFvQjtRQUM5RSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQzlGO0lBQ0wsQ0FBQztJQUVPLFVBQVU7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFdBQTZCLEVBQUUsV0FBb0I7UUFDM0UsSUFBSSxXQUFXLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUU7UUFFRCxNQUFNLG1CQUFtQixHQUEyQixJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEcsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNkLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDO2FBQ3hDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixrQkFBa0IsQ0FBQyxJQUFJLENBQUM7YUFDeEIsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUNmLGFBQWEsQ0FBQztZQUNYO2dCQUNJLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsUUFBUTtnQkFDakIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsUUFBUTthQUNyQjtZQUNEO2dCQUNJLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNEO2dCQUNJLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ3JCO1NBQ0osQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGNBQWM7UUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRWpHLE9BQU87WUFDSCxLQUFLLEVBQUUsWUFBWTtZQUNuQixRQUFRLEVBQUUsWUFBWTtZQUN0QixRQUFRLEVBQUUsWUFBWTtTQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVPLDZCQUE2QixDQUFDLFdBQTZCO1FBQy9ELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBRSxrQkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ2xFLE9BQU87WUFDSCxLQUFLO1lBQ0wsTUFBTTtZQUNOLENBQUMsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYztZQUNqRSxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUE2QjtRQUN2RCxNQUFNLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzVELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBRSxrQkFBNkIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUUsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO1FBRTdELE1BQU0sVUFBVSxHQUFHLFlBQVksR0FBRyxVQUFVLENBQUM7UUFFN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDOzhHQXRNUSxxQ0FBcUM7a0hBQXJDLHFDQUFxQyxjQUZsQyxNQUFNOzsyRkFFVCxxQ0FBcUM7a0JBSGpELFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogTk9USUNFOiAgQWxsIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBoZXJlaW4gaXMgYW5kIHJlbWFpbnMgdGhlIHByb3BlcnR5IG9mIEluc3RydW1lbnRhdGlvbiBMYWJvcmF0b3J5IENvbXBhbnkgYW5kIGl0c1xuICogYWZmaWxpYXRlcywgaWYgYW55LiAgVGhlIGludGVsbGVjdHVhbCBhbmQgdGVjaG5pY2FsIGNvbmNlcHRzIGNvbnRhaW5lZCBoZXJlaW4gYXJlIHByb3ByaWV0YXJ5IHRvIEluc3RydW1lbnRhdGlvblxuICogTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAqIGFyZSBwcm90ZWN0ZWQgYnkgdHJhZGUgc2VjcmV0IG9yIGNvcHlyaWdodCBsYXcuIERpc3NlbWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbiBvciByZXByb2R1Y3Rpb24gb2YgdGhpcyBtYXRlcmlhbCBpc1xuICogc3RyaWN0bHkgZm9yYmlkZGVuIHVubGVzcyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gaXMgSW5zdHJ1bWVudGF0aW9uIExhYm9yYXRvcnkgQ29tcGFueS5cbiAqL1xuXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmLCBPdmVybGF5U2l6ZUNvbmZpZywgUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgUG9zaXRpb25TdHJhdGVneU9yaWdpbiB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZE92ZXJsYXlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuICAgIHByaXZhdGUgaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBmaXhlZEJvdHRvbTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgb3BlbjogYm9vbGVhbjtcbiAgICBwcml2YXRlIGxheW91dDogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzO1xuICAgIHByaXZhdGUgY2xpY2tBbHJlYWR5SGFuZGxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgdG91Y2hFbmRBbHJlYWR5SGFuZGxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvdmVybGF5OiBPdmVybGF5KSB7XG4gICAgICAgIHRoaXMuaW5pdExpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ3JlYXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vdmVybGF5UmVmO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZShcbiAgICAgICAgaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgICAgIHNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgICBmaXhlZEJvdHRvbTogYm9vbGVhbixcbiAgICAgICAgbGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdCxcbiAgICApOiBDb21wb25lbnRSZWY8U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb21wb25lbnQ+IHtcbiAgICAgICAgdGhpcy5pbnB1dE9yaWdpbiA9IGlucHV0T3JpZ2luO1xuICAgICAgICB0aGlzLmZpeGVkQm90dG9tID0gZml4ZWRCb3R0b207XG4gICAgICAgIHRoaXMuc2hvd0tleWJvYXJkQnV0dG9uRWxlbWVudCA9IHNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICAgICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmFkZFBhbmVsQ2xhc3MoJ3ZpcnR1YWwta2V5Ym9hcmQtb3ZlcmxheS1wYW5lJyk7XG4gICAgICAgIGlmIChmaXhlZEJvdHRvbSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmFkZFBhbmVsQ2xhc3MoJ3ZpcnR1YWwta2V5Ym9hcmQtZml4ZWQtYm90dG9tJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW4sIGZpeGVkQm90dG9tKTtcbiAgICAgICAgdGhpcy51cGRhdGVTaXplKCk7XG5cbiAgICAgICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuaW5wdXRPcmlnaW4sIHRoaXMuZml4ZWRCb3R0b20pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDbGlja0FscmVhZHlIYW5kbGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsaWNrQWxyZWFkeUhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUb3VjaEVuZEFscmVhZHlIYW5kbGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdWNoRW5kQWxyZWFkeUhhbmRsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdExpc3RlbmVyKCkge1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmNsaWNrQWxyZWFkeUhhbmRsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tBbHJlYWR5SGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVRvdWNoRW5kKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnRvdWNoRW5kQWxyZWFkeUhhbmRsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG91Y2hFbmRBbHJlYWR5SGFuZGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnRUYXJnZXQoZXZlbnQudGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUV2ZW50VGFyZ2V0KHRhcmdldDogRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgY29uc3Qgc2hvd0tleWJvYXJkQnV0dG9uVGFyZ2V0OiBib29sZWFuID0gKHRhcmdldCBhcyBIVE1MRWxlbWVudCk/LmNsYXNzTGlzdC5jb250YWlucygndmlydHVhbC1rZXlib2FyZC1zaG93LWJ1dHRvbicpO1xuICAgICAgICBjb25zdCB2aXJ0dWFsS2V5Ym9hcmRUYXJnZXQ6IGJvb2xlYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2ltcGxlLWtleWJvYXJkJyk/LmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKTtcbiAgICAgICAgY29uc3QgaW5wdXRFbGVtZW50VGFyZ2V0OiBib29sZWFuID0gdGhpcy5pbnB1dE9yaWdpbj8uY29udGFpbnModGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgICBjb25zdCBjb250YWluc1Nob3dCdXR0b246IGJvb2xlYW4gPSB0aGlzLnNob3dLZXlib2FyZEJ1dHRvbkVsZW1lbnQ/LmNvbnRhaW5zKHRhcmdldCBhcyBOb2RlKTtcblxuICAgICAgICBpZiAoIXZpcnR1YWxLZXlib2FyZFRhcmdldCAmJlxuICAgICAgICAgICAgIWlucHV0RWxlbWVudFRhcmdldCAmJlxuICAgICAgICAgICAgIWNvbnRhaW5zU2hvd0J1dHRvbiAmJlxuICAgICAgICAgICAgIXNob3dLZXlib2FyZEJ1dHRvblRhcmdldCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDcmVhdGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYXNBdHRhY2hlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsIGZpeGVkQm90dG9tOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghIXRoaXMub3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KGlucHV0T3JpZ2luLCBmaXhlZEJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAoISF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVTaXplKHRoaXMuZ2V0T3ZlcmxheVNpemUoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQsIGZpeGVkQm90dG9tOiBib29sZWFuKTogUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIGlmIChmaXhlZEJvdHRvbSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLmNlbnRlckhvcml6b250YWxseSgpLmJvdHRvbSgnMCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9pbnRXaXRoRGltZW5zaW9uczogUG9zaXRpb25TdHJhdGVneU9yaWdpbiA9IHRoaXMuY29tcHV0ZVBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4oaW5wdXRPcmlnaW4pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhwb2ludFdpdGhEaW1lbnNpb25zKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aExvY2tlZFBvc2l0aW9uKHRydWUpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3ZlcmxheVNpemUoKTogT3ZlcmxheVNpemVDb25maWcge1xuICAgICAgICBjb25zdCBvdmVybGF5V2lkdGggPSB0aGlzLmxheW91dCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLm51bWVyaWMgPyAnNDAwcHgnIDogJzEyMDBweCc7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiBvdmVybGF5V2lkdGgsXG4gICAgICAgICAgICBtYXhXaWR0aDogb3ZlcmxheVdpZHRoLFxuICAgICAgICAgICAgbWluV2lkdGg6IG92ZXJsYXlXaWR0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVQb3NpdGlvblN0cmF0ZWd5T3JpZ2luKGlucHV0T3JpZ2luOiBIVE1MSW5wdXRFbGVtZW50KTogUG9zaXRpb25TdHJhdGVneU9yaWdpbiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlPZmZzZXRYID0gdGhpcy5jb21wdXRlT3ZlcmxheU9mZnNldFgoaW5wdXRPcmlnaW4pO1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBvdmVybGF5V2lkdGhTdHJpbmcgfSA9IHRoaXMuZ2V0T3ZlcmxheVNpemUoKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVdpZHRoID0gTnVtYmVyKChvdmVybGF5V2lkdGhTdHJpbmcgYXMgc3RyaW5nKS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICAgIGNvbnN0IHt4LCB5LCB3aWR0aCwgaGVpZ2h0fSA9IGlucHV0T3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiB3aWR0aCA8IG92ZXJsYXlXaWR0aCA/IHggLSBvdmVybGF5T2Zmc2V0WCA6IHggKyBvdmVybGF5T2Zmc2V0WCxcbiAgICAgICAgICAgIHksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlT3ZlcmxheU9mZnNldFgoaW5wdXRPcmlnaW46IEhUTUxJbnB1dEVsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7IHdpZHRoOiBvdmVybGF5V2lkdGhTdHJpbmcgfSA9IHRoaXMuZ2V0T3ZlcmxheVNpemUoKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVdpZHRoID0gTnVtYmVyKChvdmVybGF5V2lkdGhTdHJpbmcgYXMgc3RyaW5nKS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICAgIGNvbnN0IGlucHV0V2lkdGggPSBpbnB1dE9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICBjb25zdCBleHRyYVdpZHRoID0gb3ZlcmxheVdpZHRoIC0gaW5wdXRXaWR0aDtcblxuICAgICAgICByZXR1cm4gTWF0aC5hYnMoZXh0cmFXaWR0aCkgLyAyO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, EventEmitter, HostListener, Inject, Optional, Output } from '@angular/core';
|
|
2
2
|
import { SimpleKeyboard } from 'simple-keyboard';
|
|
3
|
-
import { SystelabVirtualKeyboardButton, SystelabVirtualKeyboardInputMethods,
|
|
3
|
+
import { SystelabVirtualKeyboardButton, SystelabVirtualKeyboardInputMethods, SystelabVirtualKeyboardLayouts } from './constants';
|
|
4
4
|
import { VIRTUAL_KEYBOARD_CONFIG } from './systelab-virtual-keyboard.config';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class SystelabVirtualKeyboardComponent {
|
|
@@ -65,20 +65,12 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
65
65
|
const inputType = this.activeInputElement?.type;
|
|
66
66
|
console.log('Layout:', `${inputType}_${this.selectedLayout}`);
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
let selectionEnd;
|
|
70
|
-
if (this.isInputNumeric(input)) {
|
|
71
|
-
selectionStart = this.activeInputElement.value.toString().length;
|
|
72
|
-
selectionEnd = this.activeInputElement.value.toString().length;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
selectionStart = this.activeInputElement.selectionStart;
|
|
76
|
-
selectionEnd = this.activeInputElement.selectionEnd;
|
|
77
|
-
}
|
|
68
|
+
const { selectionStart, selectionEnd } = this.activeInputElement;
|
|
78
69
|
this.setCaretPosition(selectionStart, selectionEnd);
|
|
79
70
|
if (this.debug) {
|
|
80
71
|
console.log('Caret start at:', this.caretPosition, this.caretPositionEnd);
|
|
81
72
|
}
|
|
73
|
+
this.focusActiveInput();
|
|
82
74
|
}
|
|
83
75
|
setLayout(layout) {
|
|
84
76
|
this.selectedLayout = layout;
|
|
@@ -137,14 +129,6 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
137
129
|
}
|
|
138
130
|
return keyboardOptions;
|
|
139
131
|
}
|
|
140
|
-
isInputAlphabetic(activeInputElement) {
|
|
141
|
-
const inputType = activeInputElement?.type;
|
|
142
|
-
return inputType && [SystelabVirtualKeyboardInputTypes.text, SystelabVirtualKeyboardInputTypes.password].some((i) => i === inputType);
|
|
143
|
-
}
|
|
144
|
-
isInputNumeric(activeInputElement) {
|
|
145
|
-
const inputType = activeInputElement?.type;
|
|
146
|
-
return inputType && [SystelabVirtualKeyboardInputTypes.number].some((i) => i === inputType);
|
|
147
|
-
}
|
|
148
132
|
handleKeyPress(button, e) {
|
|
149
133
|
if (this.debug) {
|
|
150
134
|
console.log('Key press:', button);
|
|
@@ -187,7 +171,7 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
187
171
|
output = this.addStringAt(output, ' ', ...commonParams);
|
|
188
172
|
}
|
|
189
173
|
else if (button === SystelabVirtualKeyboardButton.Tab) {
|
|
190
|
-
|
|
174
|
+
// Do nothing for tab
|
|
191
175
|
}
|
|
192
176
|
else if (button === SystelabVirtualKeyboardButton.Enter) {
|
|
193
177
|
if (this.isTextarea) {
|
|
@@ -340,6 +324,10 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
340
324
|
}
|
|
341
325
|
}
|
|
342
326
|
}
|
|
327
|
+
focusActiveInput() {
|
|
328
|
+
this.activeInputElement?.focus();
|
|
329
|
+
this.activeInputElement?.setSelectionRange(this.caretPosition, this.caretPositionEnd);
|
|
330
|
+
}
|
|
343
331
|
updateCaretPosition(length, minus = false) {
|
|
344
332
|
const newCaretPos = this.computeNewCaretPosition(length, minus);
|
|
345
333
|
this.setCaretPosition(newCaretPos);
|
|
@@ -368,7 +356,7 @@ export class SystelabVirtualKeyboardComponent {
|
|
|
368
356
|
this.caretPositionEnd = endPosition;
|
|
369
357
|
}
|
|
370
358
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, deps: [{ token: i0.ElementRef }, { token: VIRTUAL_KEYBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
371
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }); }
|
|
359
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: SystelabVirtualKeyboardComponent, isStandalone: true, selector: "systelab-virtual-keyboard.component", outputs: { closePanel: "closePanel" }, host: { listeners: { "window:keyup": "handleKeyUp($event)", "window:pointerup": "handleMouseUp($event)", "window:mouseup": "handleMouseUp($event)", "window:select": "handleSelect($event)", "window:selectionchange": "handleSelectionChange($event)" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2020 - 2024 - Instrumentation Laboratory Company and Systelab Technologies, SA. All rights reserved.\n ~ NOTICE: All information contained herein is and remains the property of Instrumentation Laboratory Company and its\n ~ affiliates, if any. The intellectual and technical concepts contained herein are proprietary to Instrumentation\n ~ Laboratory Company and its affiliates and may be covered by U.S. and foreign patents and patent applications, and/or\n ~ are protected by trade secret or copyright law. Dissemination of this information or reproduction of this material is\n ~ strictly forbidden unless prior written permission is Instrumentation Laboratory Company.\n -->\n\n<div class=\"simple-keyboard\"></div>\n", styles: [":host{width:100%}.simple-keyboard.hg-theme-default.myTheme{font-family:Lato,HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif}\n"] }); }
|
|
372
360
|
}
|
|
373
361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: SystelabVirtualKeyboardComponent, decorators: [{
|
|
374
362
|
type: Component,
|
|
@@ -384,6 +372,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
384
372
|
}], handleMouseUp: [{
|
|
385
373
|
type: HostListener,
|
|
386
374
|
args: ['window:pointerup', ['$event']]
|
|
375
|
+
}, {
|
|
376
|
+
type: HostListener,
|
|
377
|
+
args: ['window:mouseup', ['$event']]
|
|
387
378
|
}], handleSelect: [{
|
|
388
379
|
type: HostListener,
|
|
389
380
|
args: ['window:select', ['$event']]
|
|
@@ -393,4 +384,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
393
384
|
}], closePanel: [{
|
|
394
385
|
type: Output
|
|
395
386
|
}] } });
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDakMsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFpQyx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVU1RyxNQUFNLE9BQU8sZ0NBQWdDO0lBRXpDLFdBQVcsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUdELGFBQWEsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0QscUJBQXFCLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLENB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QUFDO29CQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNILGFBQWEsR0FBRyxhQUFhLEdBQUcsTUFBTSxDQUFDO2FBQzFDO1NBQ0o7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBdUIsRUFBRSxXQUFXLEdBQUcsUUFBUTtRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0lBQ3hDLENBQUM7OEdBaGFRLGdDQUFnQyw0Q0F5Q3lDLHVCQUF1QjtrR0F6Q2hHLGdDQUFnQyx1VkMzQjdDLG12QkFVQTs7MkZEaUJhLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDSSxxQ0FBcUMsY0FDbkMsSUFBSSxXQUNQLEVBQUU7OzBCQTZDb0QsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBdkN6RyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVF4QyxhQUFhO3NCQURaLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTTVDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQnhDLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2ltcGxlS2V5Ym9hcmQgfSBmcm9tICdzaW1wbGUta2V5Ym9hcmQnO1xuaW1wb3J0IHtcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbixcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcyxcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMsXG4gICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnLCBWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRyB9IGZyb20gJy4vc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcnO1xuaW1wb3J0IHsgS2V5Ym9hcmRPcHRpb25zIH0gZnJvbSAnc2ltcGxlLWtleWJvYXJkL2J1aWxkL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29tcG9uZW50JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJ3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmlzVHJ1c3RlZCkge1xuICAgICAgICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cG9pbnRlcnVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZVVwKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNlbGVjdCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlU2VsZWN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2VsZWN0aW9uY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZXRFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5tYXhMZW5ndGggPz8gLTE7XG4gICAgfVxuXG4gICAgZ2V0IGlzVGV4dGFyZWEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8udHlwZSA9PT0gJ3RleHRhcmVhJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVidWcgPSBmYWxzZTtcbiAgICBwcml2YXRlIHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcbiAgICBwcml2YXRlIGtleWJvYXJkOiBTaW1wbGVLZXlib2FyZDtcbiAgICBwcml2YXRlIGNhcmV0UG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY2FyZXRQb3NpdGlvbkVuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBhY3RpdmVJbnB1dEVsZW1lbnQhOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw7XG4gICAgcHJpdmF0ZSBzaGlmdFByZXNzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBjbG9zZVBhbmVsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LCBAT3B0aW9uYWwoKSBASW5qZWN0KFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHKSBwcml2YXRlIHZpcnR1YWxLZXlib2FyZENvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSB7XG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHRdOiBbXG4gICAgICAgICAgICAgICAgJ2AgMSAyIDMgNCA1IDYgNyA4IDkgMCAtID0ge2Jrc3B9JyxcbiAgICAgICAgICAgICAgICAne3RhYn0gcSB3IGUgciB0IHkgdSBpIG8gcCBbIF0gXFxcXCcsXG4gICAgICAgICAgICAgICAgXCJ7bG9ja30gYSBzIGQgZiBnIGggaiBrIGwgOyAnIHtlbnRlcn1cIixcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSB6IHggYyB2IGIgbiBtICwgLiAvIHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLnNoaWZ0XTogW1xuICAgICAgICAgICAgICAgICd+ICEgQCAjICQgJSBeICZhbXA7ICogKCApIF8gKyB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBRIFcgRSBSIFQgWSBVIEkgTyBQIHsgfSB8JyxcbiAgICAgICAgICAgICAgICAne2xvY2t9IEEgUyBEIEYgRyBIIEogSyBMIDogXCIge2VudGVyfScsXG4gICAgICAgICAgICAgICAgJ3tzaGlmdH0gWiBYIEMgViBCIE4gTSAmbHQ7ICZndDsgPyB7c2hpZnR9JyxcbiAgICAgICAgICAgICAgICAne3NwYWNlfScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljXTogWyc3IDggOScsICc0IDUgNicsICcxIDIgMycsICcwIHtia3NwfSddLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0gdGhpcy5wcmVwYXJlS2V5Ym9hcmRDb25maWcoKTtcbiAgICAgICAgdGhpcy5rZXlib2FyZCA9IG5ldyBTaW1wbGVLZXlib2FyZCgnLnNpbXBsZS1rZXlib2FyZCcsIGtleWJvYXJkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0TGF5b3V0KHRoaXMuc2VsZWN0ZWRMYXlvdXQpO1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0xheW91dDogJywgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVJbnB1dChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTGF5b3V0OicsIGAke2lucHV0VHlwZX1fJHt0aGlzLnNlbGVjdGVkTGF5b3V0fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbGVjdGlvblN0YXJ0OiBudW1iZXI7XG4gICAgICAgIGxldCBzZWxlY3Rpb25FbmQ6IG51bWJlcjtcbiAgICAgICAgaWYgKHRoaXMuaXNJbnB1dE51bWVyaWMoaW5wdXQpKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50LnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydCA9IHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgc2VsZWN0aW9uRW5kID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgc3RhcnQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldExheW91dChsYXlvdXQ6IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGF5b3V0ID0gbGF5b3V0O1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZCkge1xuICAgICAgICAgICAgdGhpcy5rZXlib2FyZC5zZXRPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBsYXlvdXROYW1lOiBsYXlvdXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZUtleWJvYXJkQ29uZmlnKCk6IEtleWJvYXJkT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGxheW91dCA9IHtcbiAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdF06IFtcbiAgICAgICAgICAgICAgICAnYCAxIDIgMyA0IDUgNiA3IDggOSAwIC0gPSB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBxIHcgZSByIHQgeSB1IGkgbyBwIFsgXSBcXFxcJyxcbiAgICAgICAgICAgICAgICBcIntsb2NrfSBhIHMgZCBmIGcgaCBqIGsgbCA7ICcge2VudGVyfVwiLFxuICAgICAgICAgICAgICAgICd7c2hpZnR9IHogeCBjIHYgYiBuIG0gLCAuIC8ge3NoaWZ0fScsXG4gICAgICAgICAgICAgICAgJ3tzcGFjZX0nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnRdOiBbXG4gICAgICAgICAgICAgICAgJ34gISBAICMgJCAlIF4gJmFtcDsgKiAoICkgXyArIHtia3NwfScsXG4gICAgICAgICAgICAgICAgJ3t0YWJ9IFEgVyBFIFIgVCBZIFUgSSBPIFAgeyB9IHwnLFxuICAgICAgICAgICAgICAgICd7bG9ja30gQSBTIEQgRiBHIEggSiBLIEwgOiBcIiB7ZW50ZXJ9JyxcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSBaIFggQyBWIEIgTiBNICZsdDsgJmd0OyA/IHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLm51bWVyaWNdOiBbJzcgOCA5JywgJzQgNSA2JywgJzEgMiAzJywgJzAge2Jrc3B9J10sXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0ge1xuICAgICAgICAgICAgb25LZXlQcmVzczogKGJ1dHRvbikgPT4gdGhpcy5oYW5kbGVLZXlQcmVzcyhidXR0b24pLFxuICAgICAgICAgICAgbWVyZ2VEaXNwbGF5OiB0cnVlLFxuICAgICAgICAgICAgdGhlbWU6ICdoZy10aGVtZS1kZWZhdWx0IGhnLWxheW91dC1kZWZhdWx0IG15VGhlbWUnLFxuICAgICAgICAgICAgZGlzcGxheToge1xuICAgICAgICAgICAgICAgIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2VdOiAnZGVsZXRlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25UaGVtZTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICd2aXJ0dWFsLWtleWJvYXJkLWRlbGV0ZS1idXR0b24nLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBgJHtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2V9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxheW91dCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWc/Lmhhc093blByb3BlcnR5KCdpbnB1dE1ldGhvZCcpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52aXJ0dWFsS2V5Ym9hcmRDb25maWcuaW5wdXRNZXRob2QgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRNZXRob2RzLm9ubHlNb3VzZUV2ZW50cykge1xuICAgICAgICAgICAgICAgIGtleWJvYXJkT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ua2V5Ym9hcmRPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICB1c2VNb3VzZUV2ZW50czogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlydHVhbEtleWJvYXJkQ29uZmlnLmlucHV0TWV0aG9kID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcy5vbmx5VG91Y2hFdmVudHMpIHtcbiAgICAgICAgICAgICAgICBrZXlib2FyZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmtleWJvYXJkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVG91Y2hFdmVudHM6IHRydWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtleWJvYXJkT3B0aW9ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW5wdXRBbHBoYWJldGljKGFjdGl2ZUlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gYWN0aXZlSW5wdXRFbGVtZW50Py50eXBlO1xuICAgICAgICByZXR1cm4gaW5wdXRUeXBlICYmIFtTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0VHlwZXMudGV4dCwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dFR5cGVzLnBhc3N3b3JkXS5zb21lKChpKSA9PiBpID09PSBpbnB1dFR5cGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNJbnB1dE51bWVyaWMoYWN0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSBhY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICAgIHJldHVybiBpbnB1dFR5cGUgJiYgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkSW5wdXRUeXBlcy5udW1iZXJdLnNvbWUoKGkpID0+IGkgPT09IGlucHV0VHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlQcmVzcyhidXR0b246IHN0cmluZywgZT86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2V5IHByZXNzOicsIGJ1dHRvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnV0dG9uWzBdID09PSAnJicgJiYgYnV0dG9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGJ1dHRvbiA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYnV0dG9uLCAndGV4dC9odG1sJykuYm9keS50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0IHx8IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uTG9jaykge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSBidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0O1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTaGlmdExheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uRG9uZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVsLmVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uKSAmJiAhdGhpcy5pc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuaGFuZGxlQnV0dG9uT3V0cHV0KGJ1dHRvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQsICdCdXR0b24nLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudHMoYnV0dG9uKTtcblxuICAgICAgICBpZiAodGhpcy5zaGlmdFByZXNzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2hpZnRMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uU2hpZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVCdXR0b25PdXRwdXQoYnV0dG9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb21tb25QYXJhbXM6IFtudW1iZXIsIG51bWJlciwgYm9vbGVhbl0gPSB0aGlzLmdldENvbW1vblBhcmFtcygpO1xuICAgICAgICBsZXQgb3V0cHV0ID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnZhbHVlIHx8ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNTdGFuZGFyZEJ1dHRvbihidXR0b24pKSB7XG4gICAgICAgICAgICBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLnJlbW92ZUF0KG91dHB1dCwgLi4uY29tbW9uUGFyYW1zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5TcGFjZSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuYWRkU3RyaW5nQXQob3V0cHV0LCAnICcsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uVGFiKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcy5hZGRTdHJpbmdBdChvdXRwdXQsICdcXHQnLCAuLi5jb21tb25QYXJhbXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkVudGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUZXh0YXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFkZFN0cmluZ0F0KG91dHB1dCwgJ1xcbicsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdXRwdXQgPSB0aGlzLmFkZFN0cmluZ0F0KG91dHB1dCwgYnV0dG9uLCAuLi5jb21tb25QYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbW1vblBhcmFtcygpOiBbbnVtYmVyLCBudW1iZXIsIGJvb2xlYW5dIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmNhcmV0UG9zaXRpb24gfHwgMCwgdGhpcy5jYXJldFBvc2l0aW9uRW5kIHx8IDAsIHRydWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY2NlcHRlZE5vblN0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNwYWNlLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5UYWIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkVudGVyLnRvU3RyaW5nKCksXG4gICAgICAgIF0uaW5jbHVkZXMoYnV0dG9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRpc3BhdGNoRXZlbnRzKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHtrZXksIGNvZGV9ID0gdGhpcy5jb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b24pO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50SW5pdDogS2V5Ym9hcmRFdmVudEluaXQgPSB7XG4gICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHNoaWZ0S2V5OiB0aGlzLnNlbGVjdGVkTGF5b3V0ID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnQsXG4gICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgIGNvZGU6IGNvZGUsXG4gICAgICAgICAgICBsb2NhdGlvbjogMCxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBTaW11bGF0ZSBhbGwgbmVlZGVkIGV2ZW50cyBvbiBiYXNlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCBldmVudEluaXQpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXByZXNzJywgZXZlbnRJbml0KSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7YnViYmxlczogdHJ1ZX0pKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgZXZlbnRJbml0KSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBVVhJTElBUlkgTUVUSE9EU1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b246IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9IHtcbiAgICAgICAgbGV0IGtleTogc3RyaW5nO1xuICAgICAgICBsZXQgY29kZTogc3RyaW5nO1xuICAgICAgICBpZiAoYnV0dG9uLmluY2x1ZGVzKCd7JykgJiYgYnV0dG9uLmluY2x1ZGVzKCd9JykpIHtcbiAgICAgICAgICAgIC8vIENhcGl0YWxpemUgbmFtZVxuICAgICAgICAgICAga2V5ID0gYnV0dG9uLnNsaWNlKDEsIGJ1dHRvbi5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAga2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgICAgY29kZSA9IGtleTtcblxuICAgICAgICAgICAgLy8gRml4IHRvIHN0YW5kYXJkIGtleSBjb2RlXG4gICAgICAgICAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2Uuc2xpY2UoMSwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjb2RlID0gJ0JhY2tzcGFjZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBidXR0b247XG4gICAgICAgICAgICBjb2RlID0gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoYnV0dG9uKSkgPyBgRGlnaXQke2J1dHRvbn1gIDogYEtleSR7YnV0dG9uLnRvVXBwZXJDYXNlKCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7a2V5LCBjb2RlfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNoaWZ0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5rZXlib2FyZC5vcHRpb25zLmxheW91dE5hbWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPVxuICAgICAgICAgICAgY3VycmVudExheW91dCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQgPyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnQgOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcblxuICAgICAgICB0aGlzLnNldExheW91dChzZWxlY3RlZExheW91dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBidXR0b24gJiYgIShidXR0b25bMF0gPT09ICd7JyAmJiBidXR0b25bYnV0dG9uLmxlbmd0aCAtIDFdID09PSAnfScpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogT1VUUFVUIFNUUklORyBNRVRIT0RTXG4gICAgICogKi9cbiAgICBwcml2YXRlIHJlbW92ZUF0KHNvdXJjZTogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAocG9zaXRpb24gPT09IDAgJiYgcG9zaXRpb25FbmQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBwb3NpdGlvbkVuZCkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgcG9zaXRpb24gLSAxKSArIHNvdXJjZS5zbGljZShwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmV0UG9zaXRpb24oMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlQ2FyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKDEsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dCA9IHNvdXJjZS5zbGljZSgwLCBwb3NpdGlvbikgKyBzb3VyY2Uuc2xpY2UocG9zaXRpb25FbmQpO1xuICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3RyaW5nQXQoc291cmNlOiBzdHJpbmcsIHN0cjogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5tYXhMZW5ndGggIT09IC0xICYmIHNvdXJjZS5sZW5ndGggPj0gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKCFwb3NpdGlvbiAmJiBwb3NpdGlvbiAhPT0gMCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gc291cmNlICsgc3RyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0ID0gW3NvdXJjZS5zbGljZSgwLCBwb3NpdGlvbiksIHN0ciwgc291cmNlLnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJyk7XG4gICAgICAgICAgICBpZiAobW92ZUNhcmV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKHN0ci5sZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgICAqIENBUkVUIE1FVEhPRFNcbiAgICAgICAqICovXG4gICAgcHJpdmF0ZSBjYXJldEV2ZW50SGFuZGxlcihldmVudDogYW55KSB7XG4gICAgICAgIGxldCB0YXJnZXRUYWdOYW1lID0gJyc7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSkge1xuICAgICAgICAgICAgdGFyZ2V0VGFnTmFtZSA9IGV2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RleHRJbnB1dCA9XG4gICAgICAgICAgICB0YXJnZXRUYWdOYW1lID09PSAndGV4dGFyZWEnIHx8XG4gICAgICAgICAgICAodGFyZ2V0VGFnTmFtZSA9PT0gJ2lucHV0JyAmJiBbJ3RleHQnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3Bhc3N3b3JkJywgJ3VybCcsICd0ZWwnXS5pbmNsdWRlcyhldmVudC50YXJnZXQudHlwZSkpO1xuXG4gICAgICAgIGNvbnN0IGlzS2V5Ym9hcmQgPVxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCAoZXZlbnQudGFyZ2V0ICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuXG4gICAgICAgIGlmIChpc1RleHRJbnB1dCAmJiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudCA9PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhY2tzIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uXG4gICAgICAgICAgICAgKiBBcyBrZXlzIGFyZSBwcmVzc2VkLCB0ZXh0IHdpbGwgYmUgYWRkZWQvcmVtb3ZlZCBhdCB0aGF0IHBvc2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXJldCBhdDonLCB0aGlzLmNhcmV0UG9zaXRpb24sIHRoaXMuY2FyZXRQb3NpdGlvbkVuZCwgZXZlbnQgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdwb2ludGVydXAnICYmIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzS2V5Ym9hcmQgJiYgZXZlbnQ/LnR5cGUgIT09ICdzZWxlY3Rpb25jaGFuZ2UnKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHdlIG11c3QgZW5zdXJlIGNhcmV0UG9zaXRpb24gZG9lc24ndCBwZXJzaXN0IG9uY2UgcmVhY3RpdmF0ZWQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihudWxsKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FyZXQgcG9zaXRpb24gcmVzZXQgZHVlIHRvIFwiJHtldmVudD8udHlwZX1cIiBldmVudGAsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2FyZXRQb3NpdGlvbihsZW5ndGg6IG51bWJlciwgbWludXMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBuZXdDYXJldFBvcyA9IHRoaXMuY29tcHV0ZU5ld0NhcmV0UG9zaXRpb24obGVuZ3RoLCBtaW51cyk7XG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihuZXdDYXJldFBvcyk7XG4gICAgICAgIC8vIFNjcm9sbCB0byBib3R0b21cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8uc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgIHRvcDogdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgfSBhcyBTY3JvbGxUb09wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVOZXdDYXJldFBvc2l0aW9uKGxlbmd0aDogbnVtYmVyLCBtaW51cyA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYXJldFBvc2l0aW9uID0gdGhpcy5jYXJldFBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChjYXJldFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChtaW51cykge1xuICAgICAgICAgICAgICAgIGlmIChjYXJldFBvc2l0aW9uID4gMCkgY2FyZXRQb3NpdGlvbiA9IGNhcmV0UG9zaXRpb24gLSBsZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zaXRpb24gPSBjYXJldFBvc2l0aW9uICsgbGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYXJldFBvc2l0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyIHwgbnVsbCwgZW5kUG9zaXRpb24gPSBwb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5jYXJldFBvc2l0aW9uRW5kID0gZW5kUG9zaXRpb247XG4gICAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICB+IE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAgfiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gIH4gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAgfiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAgfiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICAtLT5cblxuPGRpdiBjbGFzcz1cInNpbXBsZS1rZXlib2FyZFwiPjwvZGl2PlxuIl19
|
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLDhCQUE4QixFQUNqQyxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQWlDLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBVTVHLE1BQU0sT0FBTyxnQ0FBZ0M7SUFFekMsV0FBVyxDQUFDLEtBQW9CO1FBQzVCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBSUQsYUFBYSxDQUFDLEtBQW1CO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQVk7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxLQUFZO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMs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Z0JBTTFDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXpDLHFCQUFxQjtzQkFEcEIsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxQnhDLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2ltcGxlS2V5Ym9hcmQgfSBmcm9tICdzaW1wbGUta2V5Ym9hcmQnO1xuaW1wb3J0IHtcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbixcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcyxcbiAgICBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHNcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsIFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHIH0gZnJvbSAnLi9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkLmNvbmZpZyc7XG5pbXBvcnQgeyBLZXlib2FyZE9wdGlvbnMgfSBmcm9tICdzaW1wbGUta2V5Ym9hcmQvYnVpbGQvaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3N5c3RlbGFiLXZpcnR1YWwta2V5Ym9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQuaXNUcnVzdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpwb2ludGVydXAnLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZVVwKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJldEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNlbGVjdCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlU2VsZWN0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0RXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2VsZWN0aW9uY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZXRFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgIH1cblxuICAgIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5tYXhMZW5ndGggPz8gLTE7XG4gICAgfVxuXG4gICAgZ2V0IGlzVGV4dGFyZWEoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8udHlwZSA9PT0gJ3RleHRhcmVhJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVidWcgPSBmYWxzZTtcbiAgICBwcml2YXRlIHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcbiAgICBwcml2YXRlIGtleWJvYXJkOiBTaW1wbGVLZXlib2FyZDtcbiAgICBwcml2YXRlIGNhcmV0UG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgY2FyZXRQb3NpdGlvbkVuZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBhY3RpdmVJbnB1dEVsZW1lbnQhOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGw7XG4gICAgcHJpdmF0ZSBzaGlmdFByZXNzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBjbG9zZVBhbmVsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LCBAT3B0aW9uYWwoKSBASW5qZWN0KFZJUlRVQUxfS0VZQk9BUkRfQ09ORklHKSBwcml2YXRlIHZpcnR1YWxLZXlib2FyZENvbmZpZzogU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWcsKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSB7XG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHRdOiBbXG4gICAgICAgICAgICAgICAgJ2AgMSAyIDMgNCA1IDYgNyA4IDkgMCAtID0ge2Jrc3B9JyxcbiAgICAgICAgICAgICAgICAne3RhYn0gcSB3IGUgciB0IHkgdSBpIG8gcCBbIF0gXFxcXCcsXG4gICAgICAgICAgICAgICAgXCJ7bG9ja30gYSBzIGQgZiBnIGggaiBrIGwgOyAnIHtlbnRlcn1cIixcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSB6IHggYyB2IGIgbiBtICwgLiAvIHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLnNoaWZ0XTogW1xuICAgICAgICAgICAgICAgICd+ICEgQCAjICQgJSBeICZhbXA7ICogKCApIF8gKyB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBRIFcgRSBSIFQgWSBVIEkgTyBQIHsgfSB8JyxcbiAgICAgICAgICAgICAgICAne2xvY2t9IEEgUyBEIEYgRyBIIEogSyBMIDogXCIge2VudGVyfScsXG4gICAgICAgICAgICAgICAgJ3tzaGlmdH0gWiBYIEMgViBCIE4gTSAmbHQ7ICZndDsgPyB7c2hpZnR9JyxcbiAgICAgICAgICAgICAgICAne3NwYWNlfScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljXTogWyc3IDggOScsICc0IDUgNicsICcxIDIgMycsICcwIHtia3NwfSddLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGtleWJvYXJkT3B0aW9uczogS2V5Ym9hcmRPcHRpb25zID0gdGhpcy5wcmVwYXJlS2V5Ym9hcmRDb25maWcoKTtcbiAgICAgICAgdGhpcy5rZXlib2FyZCA9IG5ldyBTaW1wbGVLZXlib2FyZCgnLnNpbXBsZS1rZXlib2FyZCcsIGtleWJvYXJkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0TGF5b3V0KHRoaXMuc2VsZWN0ZWRMYXlvdXQpO1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0xheW91dDogJywgbGF5b3V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVJbnB1dChpbnB1dDogSFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnR5cGU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTGF5b3V0OicsIGAke2lucHV0VHlwZX1fJHt0aGlzLnNlbGVjdGVkTGF5b3V0fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kIH0gPSB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudDtcbiAgICAgICAgdGhpcy5zZXRDYXJldFBvc2l0aW9uKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgc3RhcnQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9jdXNBY3RpdmVJbnB1dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMYXlvdXQobGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExheW91dCA9IGxheW91dDtcbiAgICAgICAgaWYgKHRoaXMua2V5Ym9hcmQpIHtcbiAgICAgICAgICAgIHRoaXMua2V5Ym9hcmQuc2V0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgbGF5b3V0TmFtZTogbGF5b3V0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByZXBhcmVLZXlib2FyZENvbmZpZygpOiBLZXlib2FyZE9wdGlvbnMge1xuICAgICAgICBjb25zdCBsYXlvdXQgPSB7XG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHRdOiBbXG4gICAgICAgICAgICAgICAgJ2AgMSAyIDMgNCA1IDYgNyA4IDkgMCAtID0ge2Jrc3B9JyxcbiAgICAgICAgICAgICAgICAne3RhYn0gcSB3IGUgciB0IHkgdSBpIG8gcCBbIF0gXFxcXCcsXG4gICAgICAgICAgICAgICAgXCJ7bG9ja30gYSBzIGQgZiBnIGggaiBrIGwgOyAnIHtlbnRlcn1cIixcbiAgICAgICAgICAgICAgICAne3NoaWZ0fSB6IHggYyB2IGIgbiBtICwgLiAvIHtzaGlmdH0nLFxuICAgICAgICAgICAgICAgICd7c3BhY2V9JyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLnNoaWZ0XTogW1xuICAgICAgICAgICAgICAgICd+ICEgQCAjICQgJSBeICZhbXA7ICogKCApIF8gKyB7YmtzcH0nLFxuICAgICAgICAgICAgICAgICd7dGFifSBRIFcgRSBSIFQgWSBVIEkgTyBQIHsgfSB8JyxcbiAgICAgICAgICAgICAgICAne2xvY2t9IEEgUyBEIEYgRyBIIEogSyBMIDogXCIge2VudGVyfScsXG4gICAgICAgICAgICAgICAgJ3tzaGlmdH0gWiBYIEMgViBCIE4gTSAmbHQ7ICZndDsgPyB7c2hpZnR9JyxcbiAgICAgICAgICAgICAgICAne3NwYWNlfScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1N5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5udW1lcmljXTogWyc3IDggOScsICc0IDUgNicsICcxIDIgMycsICcwIHtia3NwfSddLFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBrZXlib2FyZE9wdGlvbnM6IEtleWJvYXJkT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG9uS2V5UHJlc3M6IChidXR0b24pID0+IHRoaXMuaGFuZGxlS2V5UHJlc3MoYnV0dG9uKSxcbiAgICAgICAgICAgIG1lcmdlRGlzcGxheTogdHJ1ZSxcbiAgICAgICAgICAgIHRoZW1lOiAnaGctdGhlbWUtZGVmYXVsdCBoZy1sYXlvdXQtZGVmYXVsdCBteVRoZW1lJyxcbiAgICAgICAgICAgIGRpc3BsYXk6IHtcbiAgICAgICAgICAgICAgICBbU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlXTogJ2RlbGV0ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uVGhlbWU6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOiAndmlydHVhbC1rZXlib2FyZC1kZWxldGUtYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogYCR7U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsYXlvdXQsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMudmlydHVhbEtleWJvYXJkQ29uZmlnPy5oYXNPd25Qcm9wZXJ0eSgnaW5wdXRNZXRob2QnKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmlydHVhbEtleWJvYXJkQ29uZmlnLmlucHV0TWV0aG9kID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcy5vbmx5TW91c2VFdmVudHMpIHtcbiAgICAgICAgICAgICAgICBrZXlib2FyZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmtleWJvYXJkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdXNlTW91c2VFdmVudHM6IHRydWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpcnR1YWxLZXlib2FyZENvbmZpZy5pbnB1dE1ldGhvZCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRJbnB1dE1ldGhvZHMub25seVRvdWNoRXZlbnRzKSB7XG4gICAgICAgICAgICAgICAga2V5Ym9hcmRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5rZXlib2FyZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIHVzZVRvdWNoRXZlbnRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXlib2FyZE9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlQcmVzcyhidXR0b246IHN0cmluZywgZT86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2V5IHByZXNzOicsIGJ1dHRvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnV0dG9uWzBdID09PSAnJicgJiYgYnV0dG9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGJ1dHRvbiA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoYnV0dG9uLCAndGV4dC9odG1sJykuYm9keS50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0IHx8IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uTG9jaykge1xuICAgICAgICAgICAgdGhpcy5zaGlmdFByZXNzZWQgPSBidXR0b24gPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlNoaWZ0O1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTaGlmdExheW91dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uRG9uZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVBhbmVsLmVtaXQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uKSAmJiAhdGhpcy5pc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuaGFuZGxlQnV0dG9uT3V0cHV0KGJ1dHRvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudC52YWx1ZSA9IG91dHB1dDtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FyZXQgYXQ6JywgdGhpcy5jYXJldFBvc2l0aW9uLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQsICdCdXR0b24nLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudHMoYnV0dG9uKTtcblxuICAgICAgICBpZiAodGhpcy5zaGlmdFByZXNzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2hpZnRMYXlvdXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uU2hpZnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVCdXR0b25PdXRwdXQoYnV0dG9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjb21tb25QYXJhbXM6IFtudW1iZXIsIG51bWJlciwgYm9vbGVhbl0gPSB0aGlzLmdldENvbW1vblBhcmFtcygpO1xuICAgICAgICBsZXQgb3V0cHV0ID0gdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LnZhbHVlIHx8ICcnO1xuICAgICAgICBpZiAoIXRoaXMuaXNTdGFuZGFyZEJ1dHRvbihidXR0b24pKSB7XG4gICAgICAgICAgICBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLnJlbW92ZUF0KG91dHB1dCwgLi4uY29tbW9uUGFyYW1zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5TcGFjZSkge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuYWRkU3RyaW5nQXQob3V0cHV0LCAnICcsIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uVGFiKSB7XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZyBmb3IgdGFiXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbiA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uRW50ZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RleHRhcmVhKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuYWRkU3RyaW5nQXQob3V0cHV0LCAnXFxuJywgLi4uY29tbW9uUGFyYW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dCA9IHRoaXMuYWRkU3RyaW5nQXQob3V0cHV0LCBidXR0b24sIC4uLmNvbW1vblBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29tbW9uUGFyYW1zKCk6IFtudW1iZXIsIG51bWJlciwgYm9vbGVhbl0ge1xuICAgICAgICByZXR1cm4gW3RoaXMuY2FyZXRQb3NpdGlvbiB8fCAwLCB0aGlzLmNhcmV0UG9zaXRpb25FbmQgfHwgMCwgdHJ1ZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0FjY2VwdGVkTm9uU3RhbmRhcmRCdXR0b24oYnV0dG9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLkJhY2tzcGFjZS50b1N0cmluZygpLFxuICAgICAgICAgICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uU3BhY2UudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQnV0dG9uLlRhYi50b1N0cmluZygpLFxuICAgICAgICAgICAgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uRW50ZXIudG9TdHJpbmcoKSxcbiAgICAgICAgXS5pbmNsdWRlcyhidXR0b24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGF0Y2hFdmVudHMoYnV0dG9uOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qge2tleSwgY29kZX0gPSB0aGlzLmNvbnZlcnRGcm9tQnV0dG9uVG9Db2RlKGJ1dHRvbik7XG5cbiAgICAgICAgY29uc3QgZXZlbnRJbml0OiBLZXlib2FyZEV2ZW50SW5pdCA9IHtcbiAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgc2hpZnRLZXk6IHRoaXMuc2VsZWN0ZWRMYXlvdXQgPT09IFN5c3RlbGFiVmlydHVhbEtleWJvYXJkTGF5b3V0cy5zaGlmdCxcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgY29kZTogY29kZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiAwLFxuICAgICAgICB9O1xuICAgICAgICAvLyBTaW11bGF0ZSBhbGwgbmVlZGVkIGV2ZW50cyBvbiBiYXNlIGVsZW1lbnRcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCBldmVudEluaXQpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXByZXNzJywgZXZlbnRJbml0KSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7YnViYmxlczogdHJ1ZX0pKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoJ2tleXVwJywgZXZlbnRJbml0KSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBVVhJTElBUlkgTUVUSE9EU1xuICAgICAqICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0RnJvbUJ1dHRvblRvQ29kZShidXR0b246IHN0cmluZyk6IHsga2V5OiBzdHJpbmc7IGNvZGU6IHN0cmluZyB9IHtcbiAgICAgICAgbGV0IGtleTogc3RyaW5nO1xuICAgICAgICBsZXQgY29kZTogc3RyaW5nO1xuICAgICAgICBpZiAoYnV0dG9uLmluY2x1ZGVzKCd7JykgJiYgYnV0dG9uLmluY2x1ZGVzKCd9JykpIHtcbiAgICAgICAgICAgIC8vIENhcGl0YWxpemUgbmFtZVxuICAgICAgICAgICAga2V5ID0gYnV0dG9uLnNsaWNlKDEsIGJ1dHRvbi5sZW5ndGggLSAxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAga2V5ID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgICAgY29kZSA9IGtleTtcblxuICAgICAgICAgICAgLy8gRml4IHRvIHN0YW5kYXJkIGtleSBjb2RlXG4gICAgICAgICAgICBpZiAoY29kZS50b0xvd2VyQ2FzZSgpID09PSBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZEJ1dHRvbi5CYWNrc3BhY2Uuc2xpY2UoMSwgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRCdXR0b24uQmFja3NwYWNlLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICBjb2RlID0gJ0JhY2tzcGFjZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBidXR0b247XG4gICAgICAgICAgICBjb2RlID0gTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoYnV0dG9uKSkgPyBgRGlnaXQke2J1dHRvbn1gIDogYEtleSR7YnV0dG9uLnRvVXBwZXJDYXNlKCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7a2V5LCBjb2RlfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZVNoaWZ0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50TGF5b3V0ID0gdGhpcy5rZXlib2FyZC5vcHRpb25zLmxheW91dE5hbWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTGF5b3V0OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMgPVxuICAgICAgICAgICAgY3VycmVudExheW91dCA9PT0gU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzLmRlZmF1bHQgPyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuc2hpZnQgOiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHMuZGVmYXVsdDtcblxuICAgICAgICB0aGlzLnNldExheW91dChzZWxlY3RlZExheW91dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1N0YW5kYXJkQnV0dG9uKGJ1dHRvbjogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBidXR0b24gJiYgIShidXR0b25bMF0gPT09ICd7JyAmJiBidXR0b25bYnV0dG9uLmxlbmd0aCAtIDFdID09PSAnfScpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogT1VUUFVUIFNUUklORyBNRVRIT0RTXG4gICAgICogKi9cbiAgICBwcml2YXRlIHJlbW92ZUF0KHNvdXJjZTogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAocG9zaXRpb24gPT09IDAgJiYgcG9zaXRpb25FbmQgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSBwb3NpdGlvbkVuZCkge1xuICAgICAgICAgICAgaWYgKHBvc2l0aW9uICYmIHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgcG9zaXRpb24gLSAxKSArIHNvdXJjZS5zbGljZShwb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcmV0UG9zaXRpb24oMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSBzb3VyY2Uuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmIChtb3ZlQ2FyZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKDEsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dCA9IHNvdXJjZS5zbGljZSgwLCBwb3NpdGlvbikgKyBzb3VyY2Uuc2xpY2UocG9zaXRpb25FbmQpO1xuICAgICAgICAgICAgaWYgKG1vdmVDYXJldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3RyaW5nQXQoc291cmNlOiBzdHJpbmcsIHN0cjogc3RyaW5nLCBwb3NpdGlvbiA9IHNvdXJjZS5sZW5ndGgsIHBvc2l0aW9uRW5kID0gc291cmNlLmxlbmd0aCwgbW92ZUNhcmV0ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5tYXhMZW5ndGggIT09IC0xICYmIHNvdXJjZS5sZW5ndGggPj0gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3V0cHV0OiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKCFwb3NpdGlvbiAmJiBwb3NpdGlvbiAhPT0gMCkge1xuICAgICAgICAgICAgb3V0cHV0ID0gc291cmNlICsgc3RyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0cHV0ID0gW3NvdXJjZS5zbGljZSgwLCBwb3NpdGlvbiksIHN0ciwgc291cmNlLnNsaWNlKHBvc2l0aW9uRW5kKV0uam9pbignJyk7XG4gICAgICAgICAgICBpZiAobW92ZUNhcmV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJldFBvc2l0aW9uKHN0ci5sZW5ndGgsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgICAqIENBUkVUIE1FVEhPRFNcbiAgICAgICAqICovXG4gICAgcHJpdmF0ZSBjYXJldEV2ZW50SGFuZGxlcihldmVudDogYW55KSB7XG4gICAgICAgIGxldCB0YXJnZXRUYWdOYW1lID0gJyc7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQudGFnTmFtZSkge1xuICAgICAgICAgICAgdGFyZ2V0VGFnTmFtZSA9IGV2ZW50LnRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RleHRJbnB1dCA9XG4gICAgICAgICAgICB0YXJnZXRUYWdOYW1lID09PSAndGV4dGFyZWEnIHx8XG4gICAgICAgICAgICAodGFyZ2V0VGFnTmFtZSA9PT0gJ2lucHV0JyAmJiBbJ3RleHQnLCAnc2VhcmNoJywgJ2VtYWlsJywgJ3Bhc3N3b3JkJywgJ3VybCcsICd0ZWwnXS5pbmNsdWRlcyhldmVudC50YXJnZXQudHlwZSkpO1xuXG4gICAgICAgIGNvbnN0IGlzS2V5Ym9hcmQgPVxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCAoZXZlbnQudGFyZ2V0ICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpO1xuXG4gICAgICAgIGlmIChpc1RleHRJbnB1dCAmJiB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudCA9PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVHJhY2tzIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uXG4gICAgICAgICAgICAgKiBBcyBrZXlzIGFyZSBwcmVzc2VkLCB0ZXh0IHdpbGwgYmUgYWRkZWQvcmVtb3ZlZCBhdCB0aGF0IHBvc2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQsIGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXJldCBhdDonLCB0aGlzLmNhcmV0UG9zaXRpb24sIHRoaXMuY2FyZXRQb3NpdGlvbkVuZCwgZXZlbnQgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdwb2ludGVydXAnICYmIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzS2V5Ym9hcmQgJiYgZXZlbnQ/LnR5cGUgIT09ICdzZWxlY3Rpb25jaGFuZ2UnKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHdlIG11c3QgZW5zdXJlIGNhcmV0UG9zaXRpb24gZG9lc24ndCBwZXJzaXN0IG9uY2UgcmVhY3RpdmF0ZWQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihudWxsKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FyZXQgcG9zaXRpb24gcmVzZXQgZHVlIHRvIFwiJHtldmVudD8udHlwZX1cIiBldmVudGAsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNBY3RpdmVJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuYWN0aXZlSW5wdXRFbGVtZW50Py5zZXRTZWxlY3Rpb25SYW5nZShcbiAgICAgICAgICAgIHRoaXMuY2FyZXRQb3NpdGlvbixcbiAgICAgICAgICAgIHRoaXMuY2FyZXRQb3NpdGlvbkVuZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2FyZXRQb3NpdGlvbihsZW5ndGg6IG51bWJlciwgbWludXMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBuZXdDYXJldFBvcyA9IHRoaXMuY29tcHV0ZU5ld0NhcmV0UG9zaXRpb24obGVuZ3RoLCBtaW51cyk7XG4gICAgICAgIHRoaXMuc2V0Q2FyZXRQb3NpdGlvbihuZXdDYXJldFBvcyk7XG4gICAgICAgIC8vIFNjcm9sbCB0byBib3R0b21cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUlucHV0RWxlbWVudD8uc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgIHRvcDogdGhpcy5hY3RpdmVJbnB1dEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgfSBhcyBTY3JvbGxUb09wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVOZXdDYXJldFBvc2l0aW9uKGxlbmd0aDogbnVtYmVyLCBtaW51cyA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYXJldFBvc2l0aW9uID0gdGhpcy5jYXJldFBvc2l0aW9uO1xuXG4gICAgICAgIGlmIChjYXJldFBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChtaW51cykge1xuICAgICAgICAgICAgICAgIGlmIChjYXJldFBvc2l0aW9uID4gMCkgY2FyZXRQb3NpdGlvbiA9IGNhcmV0UG9zaXRpb24gLSBsZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zaXRpb24gPSBjYXJldFBvc2l0aW9uICsgbGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYXJldFBvc2l0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyIHwgbnVsbCwgZW5kUG9zaXRpb24gPSBwb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmV0UG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgdGhpcy5jYXJldFBvc2l0aW9uRW5kID0gZW5kUG9zaXRpb247XG4gICAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAoYykgMjAyMCAtIDIwMjQgLSBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBTeXN0ZWxhYiBUZWNobm9sb2dpZXMsIFNBLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICB+IE5PVElDRTogIEFsbCBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzIGFuZCByZW1haW5zIHRoZSBwcm9wZXJ0eSBvZiBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHNcbiAgfiBhZmZpbGlhdGVzLCBpZiBhbnkuICBUaGUgaW50ZWxsZWN0dWFsIGFuZCB0ZWNobmljYWwgY29uY2VwdHMgY29udGFpbmVkIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gSW5zdHJ1bWVudGF0aW9uXG4gIH4gTGFib3JhdG9yeSBDb21wYW55IGFuZCBpdHMgYWZmaWxpYXRlcyBhbmQgbWF5IGJlIGNvdmVyZWQgYnkgVS5TLiBhbmQgZm9yZWlnbiBwYXRlbnRzIGFuZCBwYXRlbnQgYXBwbGljYXRpb25zLCBhbmQvb3JcbiAgfiBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LiBEaXNzZW1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24gb3IgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgaXNcbiAgfiBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBJbnN0cnVtZW50YXRpb24gTGFib3JhdG9yeSBDb21wYW55LlxuICAtLT5cblxuPGRpdiBjbGFzcz1cInNpbXBsZS1rZXlib2FyZFwiPjwvZGl2PlxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const VIRTUAL_KEYBOARD_CONFIG = new InjectionToken('VIRTUAL_KEYBOARD_CONFIG');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcywgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc+KCdWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnIHtcbiAgICBsYXlvdXQ/OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHM7XG4gICAgaW5wdXRNZXRob2Q/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi12aXJ0dWFsLWtleWJvYXJkL3NyYy9saWIvc3lzdGVsYWItdmlydHVhbC1rZXlib2FyZC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0MseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcywgU3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRMYXlvdXRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgVklSVFVBTF9LRVlCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U3lzdGVsYWJWaXJ0dWFsS2V5Ym9hcmRDb25maWc+KCdWSVJUVUFMX0tFWUJPQVJEX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbGFiVmlydHVhbEtleWJvYXJkQ29uZmlnIHtcbiAgICBsYXlvdXQ/OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZExheW91dHM7XG4gICAgaW5wdXRNZXRob2Q/OiBTeXN0ZWxhYlZpcnR1YWxLZXlib2FyZElucHV0TWV0aG9kcztcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XG4gICAgc2hvd09uTW91c2VDbGljaz86IGJvb2xlYW47XG59XG4iXX0=
|