@pega/angular-sdk-components 0.242.13 → 0.242.14
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.
|
@@ -68,7 +68,18 @@ export class AngularPConnectService {
|
|
|
68
68
|
let fnUnsubscribe;
|
|
69
69
|
// console.log( `Bridge subscribing: ${theCompName} `);
|
|
70
70
|
if (inComp) {
|
|
71
|
-
|
|
71
|
+
let bSubscribed = true;
|
|
72
|
+
const wrappedCallback = () => {
|
|
73
|
+
if (bSubscribed && inCallback) {
|
|
74
|
+
console.log('inCallback::', inComp);
|
|
75
|
+
inCallback();
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const storeUnsubscribe = this.getStore().subscribe(wrappedCallback);
|
|
79
|
+
fnUnsubscribe = () => {
|
|
80
|
+
bSubscribed = false;
|
|
81
|
+
storeUnsubscribe();
|
|
82
|
+
};
|
|
72
83
|
}
|
|
73
84
|
return fnUnsubscribe;
|
|
74
85
|
}
|
|
@@ -441,4 +452,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
441
452
|
providedIn: 'root'
|
|
442
453
|
}]
|
|
443
454
|
}], ctorParameters: () => [{ type: i1.ProgressSpinnerService }, { type: i2.ErrorMessagesService }, { type: i3.Utils }] });
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1wY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsNENBQTRDO2FBQzdCLGFBQVEsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQUVoQyxZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLEtBQVk7UUFGWixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBeEJ0Qjs7V0FFRztRQUNLLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFFN0I7O1dBRUc7UUFDSyx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFFL0I7Ozs7O1dBS0c7UUFDSyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFVdkMseURBQXlEO1FBQ3pELDREQUE0RDtRQUM1RCxvREFBb0Q7UUFDcEQsa0RBQWtEO1FBQ2xELCtDQUErQztRQUMvQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFMUQsNkRBQTZEO1FBQzdELCtCQUErQjtRQUMvQiwrREFBK0Q7UUFDL0QsV0FBVztRQUNYLGtFQUFrRTtRQUNsRSxJQUFJO0lBQ04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQztRQUM3QixrRUFBa0U7UUFDbEUsNERBQTREO1FBQzVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssZ0JBQWdCLENBQUMsU0FBYyxJQUFJLEVBQUUsYUFBOEIsSUFBSTtRQUM3RSwrRkFBK0Y7UUFDL0YsSUFBSSxhQUFhLENBQUM7UUFDbEIsdURBQXVEO1FBQ3ZELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxTQUFjLElBQUk7UUFDMUMsSUFBSSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVsQixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCx1SEFBdUg7UUFDdkgsZ0hBQWdIO1FBQ2hILHNGQUFzRjtRQUN0RixJQUFJO1FBRUosSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksT0FBTyxNQUFNLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RixRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztRQUVELFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTNDLGlEQUFpRDtRQUVqRCw4SEFBOEg7UUFDOUgsMkZBQTJGO1FBQzNGLGtGQUFrRjtRQUNsRixNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhELElBQUksU0FBUyxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsZUFBZSxJQUFJLFNBQVMsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFLENBQUM7WUFDNUYsd0lBQXdJO1FBQzFJLENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxTQUFTO1lBQ1osR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE1BQU07UUFDMUIsT0FBTyxNQUFNLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFjLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNyRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLGdFQUFnRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBRWpELDRHQUE0RztRQUM1RyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxTQUFjLElBQUk7UUFDL0MsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1RUFBdUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsYUFBOEIsSUFBSTtRQUN0RSwyQ0FBMkM7UUFDM0MsTUFBTSxZQUFZLEdBQXdCO1lBQ3hDLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLFNBQVM7WUFDeEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztRQUVGLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyw4REFBOEQsTUFBTSxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNoSCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFekMsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0UsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsUUFBUSxzREFBc0QsQ0FBQyxDQUFDO1lBQ3hJLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsaUJBQWlCLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZGLE9BQU8sQ0FBQyxLQUFLLENBQ1gsMERBQTBELFFBQVEsZ0VBQWdFLENBQ25JLENBQUM7WUFDRixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0RixPQUFPLENBQUMsS0FBSyxDQUNYLDBEQUEwRCxRQUFRLCtEQUErRCxDQUNsSSxDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxlQUFlLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELFFBQVEsOERBQThELENBQUMsQ0FBQztZQUNoSixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQscUZBQXFGO1FBQ3JGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLDJDQUEyQztRQUMzQyxNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1RSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDaEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLFFBQVEsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELDREQUE0RDtRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUIsK0NBQStDO1FBQy9DLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBTTtRQUNqQixNQUFNLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBTTtRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pGLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGVBQWUsQ0FDM0MsV0FBVyxFQUNYLGFBQWEsRUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFDaEMsS0FBZSxDQUNoQixDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDbEYsdUNBQXVDO1lBQ3ZDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEtBQWUsQ0FBQyxDQUFDO1FBQzdILENBQUM7YUFBTSxDQUFDO1lBQ04sb0NBQW9DO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDNUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BJLENBQUM7SUFDSCxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLDBDQUEwQztJQUMxQyx1RUFBdUU7SUFDdkUsc0VBQXNFO0lBQ3RFLHFGQUFxRjtJQUNyRixvRkFBb0Y7SUFDcEYsMEdBQTBHO0lBQzFHLDRHQUE0RztJQUM1RywrQkFBK0I7SUFDL0I7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gscUJBQXFCLENBQUMsTUFBTTtRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtEQUErRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsZUFBZSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNyRixPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksNENBQTRDLENBQUMsQ0FBQztRQUM1SSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxNQUFNLFlBQVksR0FBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsTUFBTSxpQkFBaUIsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxHQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRCw0RkFBNEY7UUFDNUYsdURBQXVEO1FBQ3ZELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3JFLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3JFLGFBQWEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxrQkFBa0IsQ0FBQztRQUVqRyxpSkFBaUo7UUFDakosSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6SCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUM7UUFDL0MsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hJLHVGQUF1RjtRQUN2RixJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztZQUU3RCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3JELCtDQUErQztnQkFDL0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUVsQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksYUFBYSxHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRixhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQscUhBQXFIO1FBQ3JILHNEQUFzRDtRQUV0RCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsOERBQThEO1lBQzlELHNEQUFzRDtZQUN0RCx3REFBd0Q7WUFDeEQsK0dBQStHO1lBQy9HLHNJQUFzSTtZQUN0SSw0RUFBNEU7UUFDOUUsQ0FBQztRQUNELDJHQUEyRztRQUMzRyw4QkFBOEI7UUFDOUIsd0RBQXdEO1FBQ3hELDBEQUEwRDtRQUMxRCxpSEFBaUg7UUFFakgsSUFBSTtRQUVKLDJGQUEyRjtRQUUzRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUFhO1FBQy9CLE9BQU8sYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixnREFBZ0Q7UUFDbEQsQ0FBQztRQUNELDZCQUE2QjtRQUM3QixJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxLQUFLLENBQUMsdURBQXVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU87UUFDVCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSztRQUN4QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLCtDQUErQztRQUNqRCxDQUFDO1FBQ0QsNkJBQTZCO1FBQzdCLElBQUksU0FBUyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUYsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkRBQTZELFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkYsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsVUFBbUIsS0FBSyxFQUFFLFNBQWMsSUFBSTtRQUNuRCxNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sV0FBVyxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsNERBQTREO0lBQzVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxNQUFNO1FBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3REFBd0QsUUFBUSxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7K0dBcGZVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi9faGVscGVycy91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhclBDb25uZWN0RGF0YSB7XG4gIGNvbXBJRD86IHN0cmluZztcbiAgdW5zdWJzY3JpYmVGbj86IEZ1bmN0aW9uO1xuICB2YWxpZGF0ZU1lc3NhZ2U/OiBzdHJpbmc7XG4gIGFjdGlvbnM/OiB7XG4gICAgb25DaGFuZ2U6IEZ1bmN0aW9uO1xuICAgIG9uQmx1cjogRnVuY3Rpb247XG4gIH07XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2Uge1xuICAvKipcbiAgICogTG9jYWwgdmFyaWFibGUgZm9yIGFjY2VzcyB0byB0aGUgc3RvcmUgb25jZSB0aGUgc2VydmljZSBpcyBjb25uZWN0ZWQgdG8gaXQuXG4gICAqL1xuICBwcml2YXRlIHRoZVN0b3JlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBMb2NhbCB2YXJpYWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIG5leHQgY29tcG9uZW50SURcbiAgICovXG4gIHByaXZhdGUgY291bnRlckNvbXBvbmVudElEID0gMDtcblxuICAvKipcbiAgICogTG9jYWwgYXJyYXkgdXNlZCB0byBzdG9yZSB0aGUgYXNzb2NpYXRpb24gb2YgYW4gY29tcG9uZW50IHRvIGl0cyBtb3N0IHJlY2VudCBcInByb3BzXCJcbiAgICogIHdoZXJlIFwicHJvcHNcIiBpcyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudCdzIGdldENvbmZpZ1Byb3BzIGFsb25nIHdpdGhcbiAgICogYW55dGhpbmcgYWRkZWQgYnkgcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHMuXG4gICAqIEVhY2ggZW50cnkgaXM6IHsgX19jb21wb25lbnRJRF9fOiBfdGhlIGNvbXBvbmVudCdzIG1vc3QgcmVjZW50IHByb3BzXyB9XG4gICAqL1xuICBwcml2YXRlIGNvbXBvbmVudFByb3BzQXJyOiBPYmplY3RbXSA9IFtdO1xuXG4gIC8qIFVzZWQgdG8gdG9nZ2xlIHNvbWUgY2xhc3Mtd2lkZSBsb2dnaW5nICovXG4gIHByaXZhdGUgc3RhdGljIGJMb2dnaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge1xuICAgIC8vIEVzdGFibGlzaCBuZWNlc3Nhcnkgb3ZlcnJpZGUgZmxhZ3MgZm9yIG91ciB1c2Ugb2YgQ29yZVxuICAgIC8vIGNvbnN0IGNvcmVPdmVycmlkZXMgPSB7IFwiZHluYW1pY0xvYWRDb21wb25lbnRzXCI6IGZhbHNlIH07XG4gICAgLy8gbGV0IGNvcmVPdmVycmlkZXMgPSBQQ29yZS5nZXRCZWhhdmlvck92ZXJyaWRlcygpO1xuICAgIC8vIGNvcmVPdmVycmlkZXNbXCJkeW5hbWljTG9hZENvbXBvbmVudHNcIl0gPSBmYWxzZTtcbiAgICAvLyBQQ29yZS5zZXRCZWhhdmlvck92ZXJyaWRlcyggY29yZU92ZXJyaWRlcyApO1xuICAgIFBDb3JlLnNldEJlaGF2aW9yT3ZlcnJpZGUoJ2R5bmFtaWNMb2FkQ29tcG9uZW50cycsIGZhbHNlKTtcblxuICAgIC8vIEFsd2F5cyBiZXN0IHRvIHVzZSBkZWVwIG9iamVjdCBjb21wYXJlIHdoZW4gaXQncyBhdmFpbGFibGVcbiAgICAvLyBpZiAoaXNFcXVhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gY29uc29sZS5sb2coYEFuZ3VsYXJQQ29ubmVjdCBpcyB1c2luZyBkZWVwIG9iamVjdCBjb21wYXJlYCk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgQW5ndWxhclBDb25uZWN0IGlzIHVzaW5nIEpTT04uc3RyaW5naWZ5IGNvbXBhcmVgKTtcbiAgICAvLyB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHVuaXF1ZSAoZm9yIHRoaXMgc2Vzc2lvbikgQ29tcG9uZW50SUQgdGhhdCBzaG91bGRcbiAgICogYmUgdXNlZCBmb3IgdGhhdCBjb21wb25lbnQgdG8gdXBkYXRlIGl0cyBtb3N0IHJlY2VudCBwcm9wc1xuICAgKiAod2hpY2ggY2FuIGFsc28gYmUgY29tcGFyZWQgYWdhaW5zdCBpdHMgcHJldmlvdXMgdmFsdWVcbiAgICogYmVmb3JlIHVwZGF0aW5nKS4gTm90ZSB0aGF0IHRoaXMgcmV0dXJucyBhIHN0cmluZyBzbyB3ZSBjYW4gdXNlXG4gICAqIGl0IGFzIGEga2V5IGluIGFuIGFzc29jaWF0aXZlIGFycmF5XG4gICAqIEByZXR1cm5zIHRoZSBuZXh0IGNvbXBvbmVudElEXG4gICAqL1xuICBwcml2YXRlIGdldE5leHRDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIHRoaXMuY291bnRlckNvbXBvbmVudElEICs9IDE7XG4gICAgLy8gTm90ZSB0aGF0IHdlIHVzZSB0aGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIG51bWJlciBzbyB3ZSBoYXZlIGFuXG4gICAgLy8gIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgd2UgY2FuIGNsZWFuIHVwIGxhdGVyLCBpZiBuZWVkZWQuXG4gICAgcmV0dXJuIHRoaXMuY291bnRlckNvbXBvbmVudElELnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENhbGxpbmcgb2JqZWN0IChpbkNvbXApIHN1YnNjcmliZXMgdG8gc3RvcmUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IHRoYXQncyBzdWJzY3JpYmluZyB0byB0aGUgc3RvcmVcbiAgICogQHBhcmFtIGluQ2FsbGJhY2sgVGhlIGNvbXBvbmVudCdzIGNhbGxiYWNrIGZ1bmN0aW9uICh0eXBpY2FsbHkgY2FsbGVkIG9uU3RhdGVDaGFuZ2UpIHRoYXQgd2lsbFxuICAgKiBiZSBjYWxsZWQgd2hlbiB0aGUgc3RvcmUgY2hhbmdlcy5cbiAgICogQHJldHVybnMgVGhlICoqdW5zdWJzY3JpYmUqKiBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IG5lZWRzXG4gICAqIHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIHN0b3JlLiAoVHlwaWNhbGx5IGR1cmluZyBuZ09uRGVzdHJveSlcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9TdG9yZShpbkNvbXA6IGFueSA9IG51bGwsIGluQ2FsbGJhY2s6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGwpOiBGdW5jdGlvbiB7XG4gICAgLy8gY29uc3QgdGhlQ29tcE5hbWU6IHN0cmluZyA9IGluQ29tcCA/IGAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfWAgOiAnbm8gY29tcG9uZW50IHByb3ZpZGVkJztcbiAgICBsZXQgZm5VbnN1YnNjcmliZTtcbiAgICAvLyBjb25zb2xlLmxvZyggYEJyaWRnZSBzdWJzY3JpYmluZzogJHt0aGVDb21wTmFtZX0gYCk7XG4gICAgaWYgKGluQ29tcCkge1xuICAgICAgZm5VbnN1YnNjcmliZSA9IHRoaXMuZ2V0U3RvcmUoKS5zdWJzY3JpYmUoaW5DYWxsYmFjayk7XG4gICAgfVxuICAgIHJldHVybiBmblVuc3Vic2NyaWJlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIENvbXBvbmVudCdzIHByb3BlcnRpZXMgdGhhdCBhcmUgdXNlZCAoYSkgdG8gcG9wdWxhdGUgY29tcG9uZW50UHJvcHNBcnJcbiAgLy8gIGFuZCAoYikgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgd2hvc2UgcHJvcGVydGllcyBhcmUgYmVpbmcgb2J0YWluZWRcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50UHJvcHMoaW5Db21wOiBhbnkgPSBudWxsKTogT2JqZWN0IHtcbiAgICBsZXQgY29tcFByb3BzOiBhbnkgPSB7fTtcbiAgICBsZXQgYWRkUHJvcHMgPSB7fTtcblxuICAgIGlmIChpbkNvbXAgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogZ2V0Q29tcG9uZW50UHJvcHMgY2FsbGVkIHdpdGggYmFkIGNvbXBvbmVudDogJHtpbkNvbXB9YCk7XG4gICAgfVxuXG4gICAgLy8gaWYgKChpbkNvbXAuY29uc3RydWN0b3IubmFtZSA9PT0gXCJGbG93Q29udGFpbmVyQ29tcG9uZW50XCIpIHx8IChpbkNvbXAuY29uc3RydWN0b3IubmFtZSA9PT0gXCJWaWV3Q29udGFpbmVyQ29tcG9uZW50XCIpXG4gICAgLy8gICAgIHx8IChpbkNvbXAuY29uc3RydWN0b3IubmFtZSA9PT0gXCJWaWV3Q29tcG9uZW50XCIpIHx8IChpbkNvbXAuY29uc3RydWN0b3IubmFtZSA9PT0gXCJEZWZlckxvYWRDb21wb25lbnRcIikpIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGAtLT4gQW5ndWxhclBDb25uZWN0IGdldENvbXBvbmVudFByb3BzOiAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfWApO1xuICAgIC8vIH1cblxuICAgIGlmIChpbkNvbXAuYWRkaXRpb25hbFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5Db21wLmFkZGl0aW9uYWxQcm9wcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgYWRkUHJvcHMgPSBpbkNvbXAucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyhpbkNvbXAuYWRkaXRpb25hbFByb3BzKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGluQ29tcC5hZGRpdGlvbmFsUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgcHJvcHNUb0FkZCA9IGluQ29tcC5hZGRpdGlvbmFsUHJvcHMoUENvcmUuZ2V0U3RvcmUoKS5nZXRTdGF0ZSgpLCBpbkNvbXAucENvbm4kKTtcbiAgICAgICAgYWRkUHJvcHMgPSBpbkNvbXAucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyhwcm9wc1RvQWRkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wUHJvcHMgPSBpbkNvbXAucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG5cbiAgICAvLyBjb25zdCBjb21wb25lbnROYW1lID0gaW5Db21wLmNvbnN0cnVjdG9yLm5hbWU7XG5cbiAgICAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnQgaXMgZnJvbSB0aGUgTmVidWxhL0NvbnN0ZWxsYXRpb24gdmVyc2lvbiBvZiB0aGlzIGNvZGUuIE1lYW50IGFzIGEgcmVtaW5kZXIgdG8gY2hlY2sgdGhpcyBvY2Nhc2lvbmFsbHlcbiAgICAvLyBwb3B1bGF0ZSBhZGRpdGlvbmFsIHByb3BzIHdoaWNoIGFyZSBjb21wb25lbnQgc3BlY2lmaWMgYW5kIG5vdCBwcmVzZW50IGluIGNvbmZpZ3VyYXRpb25zXG4gICAgLy8gVGhpcyBibG9jayBjYW4gYmUgcmVtb3ZlZCBvbmNlIGFsbCB0aGVzZSBwcm9wcyB3aWxsIGJlIGFkZGVkIGFzIHBhcnQgb2YgY29uZmlnc1xuICAgIGluQ29tcC5wQ29ubiQucG9wdWxhdGVBZGRpdGlvbmFsUHJvcHMoY29tcFByb3BzKTtcblxuICAgIGNvbXBQcm9wcyA9IGluQ29tcC5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKGNvbXBQcm9wcyk7XG5cbiAgICBpZiAoY29tcFByb3BzICYmIHVuZGVmaW5lZCAhPT0gY29tcFByb3BzLnZhbGlkYXRlbWVzc2FnZSAmJiBjb21wUHJvcHMudmFsaWRhdGVtZXNzYWdlICE9ICcnKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyggYCAgIHZhbGlkYXRlbWVzc2FnZSBmb3IgJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX0gJHtpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS5jb21wSUR9OiAke2NvbXBQcm9wcy52YWxpZGF0ZW1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbXBQcm9wcyxcbiAgICAgIC4uLmFkZFByb3BzXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB1bmlxdWUgaWQgZm9yIGdpdmVuIGNvbXBvbmVudCBjcmVhdGVkIHdoZW4gcmVnaXN0ZXJpbmdcbiAgICogT3RoZXJ3aXNlLCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgd2hvc2UgcHJvcGVydHkgaXMgYmVpbmcgcmVxdWVzdGVkLlxuICAgKi9cbiAgcHVibGljIGdldENvbXBvbmVudElEKGluQ29tcCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGluQ29tcC5icmlkZ2VDb21wb25lbnRJRCB8fCBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS5jb21wSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgcmVxdWVzdGVkIHByb3BlcnR5IGZvciB0aGUgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAgICogT3RoZXJ3aXNlLCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgd2hvc2UgcHJvcGVydHkgaXMgYmVpbmcgcmVxdWVzdGVkLlxuICAgKiBAcGFyYW0gaW5Qcm9wIFRoZSBwcm9wZXJ0eSBiZWluZyByZXF1ZXN0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tcG9uZW50UHJvcChpbkNvbXA6IGFueSA9IG51bGwsIGluUHJvcCA9ICcnKSB7XG4gICAgaWYgKGluQ29tcCA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBnZXRDb21wb25lbnRQcm9wIGNhbGxlZCB3aXRoIGJhZCBjb21wb25lbnQ6ICR7aW5Db21wfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBJRCA9IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLmNvbXBJRDtcblxuICAgIC8vIExvb2sgdXAgcHJvcGVydHkgaW4gdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIGNvbXBvbmVudFByb3BBcnJheSAod2hpY2ggc2hvdWxkIGhhdmUgdGhlIG1vc3QgcmVjZW50IHZhbHVlKVxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFByb3BzQXJyW2NvbXBJRF1baW5Qcm9wXTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBjb21wbGV0ZSBzZXQgb2YgcmVzb2x2ZWQgcHJvcGVydGllcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGhcbiAgICogdGhpcyBjb21wb25lbnQuXG4gICAqIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgdHJhY2tlZCBpbiBSZWR1eCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudENvbXBsZXRlUHJvcHMoaW5Db21wOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKGluQ29tcCA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBnZXRDdXJyZW50Q29tcGxldGVQcm9wcyBjYWxsZWQgd2l0aCBiYWQgY29tcG9uZW50OiAke2luQ29tcH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UHJvcHNBcnJbaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuY29tcElEXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgdGhlIGNvbXBvbmVudCBhbmQgaXRzIGNhbGxiYWNrIGZ1bmN0aW9uLiBXaGVuIGEgY29tcG9uZW50IGNhbGxzIHRoaXMgbWV0aG9kXG4gICAqICh0eXBpY2FsbHkgZnJvbSBpdHMgbmdPbkluaXQpLCB0aGUgY29tcG9uZW50IGlzIGdpdmVuIGEgdW5pcXVlIGNvbXBvbmVudElEIChmb3IgdGhpcyBzZXNzaW9uKVxuICAgKiBhbmQgc3Vic2NyaWJlcyB0aGUgY29tcG9uZW50IHRvIHRoZSBzdG9yZS4gQXMgYSBzaWRlIGVmZmVjdCwgaXQgYWxzbyBhc3NpZ25zIHRoZSBjb21wb25lbnQnc1xuICAgKiBhY3Rpb25zIChmcm9tIGl0cyBtZXRhZGF0YSkgdG8gdGhlIGNvbXBvbmVudCdzIF9fX2FjdGlvbnNfX18gYW5kIGJpbmRzIHRoZSBjb21wb25lbnQncyBjYWxsYmFja1xuICAgKiAocGFzc2VkIGluIGFzIF9fX2luQ2FsbGJhY2tfX18pIHRvIHRoZSBjb21wb25lbnQuIElmIGEgcHJvYmxlbSBpcyBlbmNvdW50ZXJlZCwgYW4gZW1wdHkgb2JqZWN0LFxuICAgKiB7fSwgaXMgcmV0dXJuZWQuXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBiZWluZyByZWdpc3RlcmVkIGFuZCBzdWJzY3JpYmVkXG4gICAqIEBwYXJhbSBpbkNhbGxiYWNrIFRoZSBjb21wb25lbnQncyBjYWxsYmFjayBmdW5jdGlvbiAodHlwaWNhbGx5IGNhbGxlZCBvblN0YXRlQ2hhbmdlKSB0aGF0XG4gICAqIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBzdGF0ZSBjaGFuZ2VzLlxuICAgKiBAcmV0dXJucyBBIEpTT04gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzOlxuICAgKiBjb21wSUQ6IHRoZSB1bmlxdWUgSUQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50LFxuICAgKiB1bnN1YnNjcmliZUZuOiB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBuZWVkcyB0byB1bnN1YnNjcmliZSBmcm9tIHRoZSBzdG9yZSxcbiAgICogdmFsaWRhdGVNZXNzYWdlOiBhbnkgdmFsaWRhdGlvbi9lcnJvciBtZXNzYWdlIHRoYXQgZ2V0cyBnZW5lcmF0ZWQgZm9yIHRoaXMgb2JqZWN0LFxuICAgKiBhY3Rpb25zOiBhbnkgYWN0aW9ucyB0aGF0IGFyZSBkZWZpbmVkIGZvciB0aGlzIG9iamVjdFxuICAgKi9cbiAgcmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQoaW5Db21wLCBpbkNhbGxiYWNrOiBGdW5jdGlvbiB8IG51bGwgPSBudWxsKTogQW5ndWxhclBDb25uZWN0RGF0YSB7XG4gICAgLy8gQ3JlYXRlIGFuIGluaXRpYWwgb2JqZWN0IHRvIGJlIHJldHVybmVkLlxuICAgIGNvbnN0IHJldHVybk9iamVjdDogQW5ndWxhclBDb25uZWN0RGF0YSA9IHtcbiAgICAgIGNvbXBJRDogJycsXG4gICAgICB1bnN1YnNjcmliZUZuOiB1bmRlZmluZWQsXG4gICAgICB2YWxpZGF0ZU1lc3NhZ2U6ICcnLFxuICAgICAgYWN0aW9uczogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGlmIChpbkNvbXAgPT09IG51bGwgfHwgaW5DYWxsYmFjayA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byByZWdpc3RlckFuZFN1YnNjcmliZTogaW5Db21wOiAke2luQ29tcH0gaW5DYWxsYmFjazogJHtpbkNhbGxiYWNrfWApO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wVHlwZSA9IGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lO1xuXG4gICAgaWYgKEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UuYkxvZ2dpbmcpIHtcbiAgICAgIGNvbnNvbGUubG9nKGByZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudDogJHtjb21wVHlwZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodW5kZWZpbmVkICE9PSBpbkNvbXAuYnJpZGdlQ29tcG9uZW50SUQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE9MRCBTQ0hPT0w6ICR7Y29tcFR5cGV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLmFjdGlvbnMgJiYgdW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byByZWdpc3RlckFuZFN1YnNjcmliZSBmcm9tICR7Y29tcFR5cGV9OiBhY3Rpb25zIG5vdCBkZWZpbmVkIGFzIGEgY2xhc3MgdmFyaWFibGUgZm9yIGluQ29tcGApO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgICB9XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLmJyaWRnZUNvbXBvbmVudElEICYmIHVuZGVmaW5lZCA9PT0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHJlZ2lzdGVyQW5kU3Vic2NyaWJlIGZyb20gJHtjb21wVHlwZX06IGJyaWRnZUNvbXBvbmVudElEIG5vdCBkZWZpbmVkIGFzIGEgY2xhc3MgdmFyaWFibGUgZm9yIGluQ29tcGBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICAgIH1cbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAudW5zdWJzY3JpYmVTdG9yZSAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byByZWdpc3RlckFuZFN1YnNjcmliZSBmcm9tICR7Y29tcFR5cGV9OiB1bnN1YnNjcmliZVN0b3JlIG5vdCBkZWZpbmVkIGFzIGEgY2xhc3MgdmFyaWFibGUgZm9yIGluQ29tcGBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICAgIH1cbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAudmFsaWRhdGVNZXNzYWdlICYmIHVuZGVmaW5lZCA9PT0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUgZnJvbSAke2NvbXBUeXBlfTogdmFsaWRhdGVNZXNzYWdlIG5vdCBkZWZpbmVkIGFzIGEgY2xhc3MgdmFyaWFibGUgZm9yIGluQ29tcGApO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdDtcbiAgICB9XG5cbiAgICAvLyBjYWxsIHByb2Nlc3NBY3Rpb25zIHRvIHBvcHVsYXRlIG1ldGFkYXRhIHdpdGggYWN0aW9ucyBhcyBpbiBQQ29ubmVjdEhPUiBpbml0aWFsaXplXG4gICAgdGhpcy5wcm9jZXNzQWN0aW9ucyhpbkNvbXApO1xuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC5hY3Rpb25zKSB7XG4gICAgICByZXR1cm5PYmplY3QuYWN0aW9ucyA9IGluQ29tcC5wQ29ubiQuZ2V0QWN0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbkNvbXAuYWN0aW9ucyA9IGluQ29tcC5wQ29ubiQuZ2V0QWN0aW9ucygpO1xuICAgIH1cblxuICAgIC8vIGJpbmQgdGhlIHByb3ZpZGVkIGNhbGxiYWNrIHRvIHRoZSBjb21wb25lbnQgaXQncyBhc3NvY2lhdGVkIHdpdGhcbiAgICBpbkNhbGxiYWNrID0gaW5DYWxsYmFjay5iaW5kKGluQ29tcCk7XG5cbiAgICAvLyBOb3cgcHJvY2VlZCB0byByZWdpc3RlciBhbmQgc3Vic2NyaWJlLi4uXG4gICAgY29uc3QgdGhlQ29tcElEOiBzdHJpbmcgPSB0aGlzLmdldE5leHRDb21wb25lbnRJZCgpO1xuICAgIGNvbnN0IHRoZVVuc3ViOiBGdW5jdGlvbiB8IG51bGwgPSB0aGlzLnN1YnNjcmliZVRvU3RvcmUoaW5Db21wLCBpbkNhbGxiYWNrKTtcblxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBpbkNvbXAuYnJpZGdlQ29tcG9uZW50SUQgPSB0aGVDb21wSUQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybk9iamVjdC5jb21wSUQgPSB0aGVDb21wSUQ7XG4gICAgICByZXR1cm5PYmplY3QudW5zdWJzY3JpYmVGbiA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVGb3JtRmllbGQoaW5Db21wKTtcbiAgICAgICAgdGhlVW5zdWIoKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gaW5pdGlhbGl6ZSB0aGlzIGNvbXBvbmVudHMgZW50cnkgaW4gdGhlIGNvbXBvbmVudFByb3BzQXJyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wc0Fyclt0aGVDb21wSURdID0ge307XG5cbiAgICB0aGlzLmFkZEZvcm1GaWVsZChpbkNvbXApO1xuXG4gICAgLy8gcmV0dXJuIG9iamVjdCB3aXRoIGNvbXBJRCBhbmQgdW5zdWJzY3JpYmUuLi5cbiAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICB9XG5cbiAgYWRkRm9ybUZpZWxkKGluQ29tcCkge1xuICAgIGluQ29tcC5wQ29ubiQ/LmFkZEZvcm1GaWVsZCgpO1xuICB9XG5cbiAgcmVtb3ZlRm9ybUZpZWxkKGluQ29tcCkge1xuICAgIGlmIChpbkNvbXAucENvbm4kPy5yZW1vdmVGb3JtRmllbGQpIHtcbiAgICAgIGluQ29tcC5wQ29ubiQ/LnJlbW92ZUZvcm1GaWVsZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHROYW1lID0gaW5Db21wLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IHBhZ2VSZWZlcmVuY2UgPSBpbkNvbXAucENvbm4kLmdldFBhZ2VSZWZlcmVuY2UoKTtcbiAgICBjb25zdCByYXdDb25maWcgPSBpbkNvbXAucENvbm4kLl9yYXdDb25maWc7XG4gICAgY29uc3QgaW5kZXggPSBpbkNvbXAucENvbm4kLmluZGV4O1xuXG4gICAgaWYgKE9iamVjdC5oYXNPd24ocmF3Q29uZmlnPy5jb25maWcgPz8ge30sICd2YWx1ZScpICYmIGluQ29tcC5wQ29ubiQuX3R5cGUgIT09ICdBZGRyZXNzJykge1xuICAgICAgUENvcmUuZ2V0Q29udGV4dFRyZWVNYW5hZ2VyKCkucmVtb3ZlRmllbGROb2RlKFxuICAgICAgICBjb250ZXh0TmFtZSxcbiAgICAgICAgcGFnZVJlZmVyZW5jZSxcbiAgICAgICAgaW5Db21wLnBDb25uJC52aWV3TmFtZSB8fCAnJyxcbiAgICAgICAgaW5Db21wLnBDb25uJC5fZ2V0UHJvcGVydHlOYW1lKCksXG4gICAgICAgIGluZGV4IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGluQ29tcC5wQ29ubiQuX3R5cGUgPT09ICdBZGRyZXNzJyAmJiByYXdDb25maWc/LmNvbmZpZz8uYXNzb2NpYXRlZFZpZXcpIHtcbiAgICAgIC8vIHJlbW92ZSBhZGRyZXNzIG5vZGUgYW5kIGl0cyBjaGlsZHJlblxuICAgICAgUENvcmUuZ2V0Q29udGV4dFRyZWVNYW5hZ2VyKCkucmVtb3ZlVmlld05vZGUoY29udGV4dE5hbWUsIHBhZ2VSZWZlcmVuY2UsIHJhd0NvbmZpZy5jb25maWcuYXNzb2NpYXRlZFZpZXcsIGluZGV4IGFzIG51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlbW92ZSB2aWV3IG5vZGUgYW5kIGl0cyBjaGlsZHJlblxuICAgICAgY29uc3QgcGFnZVJlZiA9IHJhd0NvbmZpZz8uY29uZmlnPy5jb250ZXh0ID8gYCR7cGFnZVJlZmVyZW5jZX0ke3Jhd0NvbmZpZz8uY29uZmlnLmNvbnRleHR9YCA6IHBhZ2VSZWZlcmVuY2U7XG4gICAgICBQQ29yZS5nZXRDb250ZXh0VHJlZU1hbmFnZXIoKS5yZW1vdmVWaWV3Tm9kZShjb250ZXh0TmFtZSwgcGFnZVJlZiwgcmF3Q29uZmlnPy5jb25maWc/Lm5hbWUgfHwgcmF3Q29uZmlnPy5jb25maWc/LmlkIHx8ICcnLCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb21wb25lbnQncyBlbnRyeSBpbiBfX19jb21wb25lbnRQcm9wc0Fycl9fXyBpc1xuICAvLyAgdGhlIHNhbWUgYXMgdGhlIGluQ29tcFByb3BzIHBhc3NlZCBpbi5cbiAgLy8gIEFzIGEgc2lkZSBlZmZlY3QsIHVwZGF0ZSB0aGUgY29tcG9uZW50J3MgZW50cnkgaW4gY29tcG9uZW50UHJvcHNBcnJcbiAgLy8gIE5PVEU6IEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgaW5jb21pbmcgY29tcG9uZW50IGhhcyB0aGUgZm9sbG93aW5nOlxuICAvLyAgKiBhIGJyaWRnZUNvbXBvbmVudElEIDxzdHJpbmc+IHByb3BlcnR5IC0gdXNlZCBhcyBsb29rdXAga2V5IGluIGNvbXBvbmVudFByb3BzQXJyXG4gIC8vICAqIGEgcENvbm4kIDw/PiBwcm9wZXJ0eSAtIHVzZWQgdG8gYWNjZXNzIGZ1bmN0aW9ucyBhY2Nlc3NlZCBpbiBnZXRDb21wb25lbnRQcm9wc1xuICAvLyBSZXR1cm4gdHJ1ZTogbWVhbnMgdGhlIGNvbXBvbmVudCBwcm9wcyBhcmUgZGlmZmVyZW50IGFuZCB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gIC8vIFJldHVybiBmYWxzZTogbWVhbnMgdGhlIGNvbXBvbmVudCBwcm9wcyBhcmUgdGhlIHNhbWUgYW5kIHRoZSBjb21wb25lbnQgZG9lc24ndCBuZWVkIHRvIHVwZGF0ZSAocmUtcmVuZGVyKVxuICAvLyAgT24gYmFkIGlucHV0LCByZXR1cm4gZmFsc2U7XG4gIC8qKlxuICAgKiBSZXR1cm5zICoqdHJ1ZSoqIGlmIHRoZSBjb21wb25lbnQncyBlbnRyeSBpbiBfX19jb21wb25lbnRQcm9wc0Fycl9fXyBpc1xuICAgKiB0aGUgc2FtZSBhcyB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBjdXJyZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50IChfX19pbkNvbXBfX18pIHBhc3NlZCBpbi5cbiAgICogQXMgYSBzaWRlIGVmZmVjdCwgdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fIGlzIHVwZGF0ZWQuXG4gICAqICoqTm90ZSoqOiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGluY29taW5nIGNvbXBvbmVudCBoYXMgdGhlIGZvbGxvd2luZzpcbiAgICogKGEpIGEgYnJpZGdlQ29tcG9uZW50SUQgX3N0cmluZ18gcHJvcGVydHkgdXNlZCBhcyBsb29rdXAga2V5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fXG4gICAqIGFuZCAoYikgYSBfX19wQ29ubiRfX18gcHJvcGVydHkgdXNlZCB0byBhY2Nlc3MgZnVuY3Rpb25zIGNhbGxlZCBpbiBfX19nZXRDb21wb25lbnRQcm9wc19fX1xuICAgKlxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgYXNraW5nIGlmIGl0IHNob3VsZCB1cGRhdGUgaXRzZWxmXG4gICAqIEByZXR1cm5zIFJldHVybiAqKnRydWUqKjogbWVhbnMgdGhlIGNvbXBvbmVudCBwcm9wcyBhcmUgZGlmZmVyZW50IGFuZCB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpLlxuICAgKiBSZXR1cm4gKipmYWxzZSoqOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSB0aGUgc2FtZSBhbmQgdGhlIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlIChyZS1yZW5kZXIpLlxuICAgKiBJZiB0aGUgKioqaW5Db21wKioqIGlucHV0IGlzIGJhZCwgZmFsc2UgaXMgYWxzbyByZXR1cm5lZC5cbiAgICovXG4gIHNob3VsZENvbXBvbmVudFVwZGF0ZShpbkNvbXApOiBib29sZWFuIHtcbiAgICAvLyBjb25zdCBiU2hvd0xvZ2dpbmcgPSBmYWxzZTtcbiAgICBsZXQgYlJldCA9IGZhbHNlO1xuICAgIC8vIGNoZWNrIGZvciByZWFzb25hYmxlIGlucHV0XG4gICAgaWYgKFV0aWxzLmlzRW1wdHlPYmplY3QoaW5Db21wKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBzaG91bGRDb21wb25lbnRVcGRhdGU6IGluQ29tcDogJHtKU09OLnN0cmluZ2lmeShpbkNvbXApfWApO1xuICAgICAgcmV0dXJuIGJSZXQ7XG4gICAgfVxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC52YWxpZGF0ZU1lc3NhZ2UgJiYgdW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBzaG91bGRDb21wb25lbnRVcGRhdGU6ICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9IGRvZXMgbm90IGhhdmUgYSB2YWxpZGF0ZU1lc3NhZ2UgcHJvcGVydHkuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcElEID0gdGhpcy5nZXRDb21wb25lbnRJRChpbkNvbXApO1xuXG4gICAgY29uc3QgY3VycmVudFByb3BzOiBhbnkgPSB0aGlzLmNvbXBvbmVudFByb3BzQXJyW2NvbXBJRF07XG4gICAgY29uc3QgY3VycmVudFByb3BzQXNTdHI6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcm9wcyk7XG5cbiAgICBjb25zdCBpbmNvbWluZ1Byb3BzOiBhbnkgPSB0aGlzLmdldENvbXBvbmVudFByb3BzKGluQ29tcCk7XG5cbiAgICAvLyBpZiBoYXZlIHBhZ2VNZXNzYWdlcywgYW5kIGl0IGlzIGJsYW5rLCByZW1vdmUgaXQuICBUaGlzIGNhdXNlcyBpc3N1ZXMgb2YgbWFraW5nIGl0IGFwcGVhclxuICAgIC8vIHRoYXQgYSB3aWxsIGNhdXNlIGFuIHVwZGF0ZSwgd2hlbiB0aGVyZSBpcyBubyBjaGFuZ2VcbiAgICBpZiAodGhpcy5pc1BhZ2VNZXNzYWdlc0VtcHR5KGluY29taW5nUHJvcHMpKSB7XG4gICAgICBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS5wYWdlTWVzc2FnZXMgPSBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcztcbiAgICAgIGRlbGV0ZSBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcztcbiAgICB9XG5cbiAgICBpZiAoaW5jb21pbmdQcm9wcy5odHRwTWVzc2FnZXMpIHtcbiAgICAgIGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLmh0dHBNZXNzYWdlcyA9IGluY29taW5nUHJvcHMuaHR0cE1lc3NhZ2VzO1xuICAgICAgaW5jb21pbmdQcm9wcy5odHRwTWVzc2FnZXMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgaW5jb21pbmdQcm9wc0FzU3RyOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShpbmNvbWluZ1Byb3BzKTtcblxuICAgIGJSZXQgPSBpc0VxdWFsID8gIWlzRXF1YWwoY3VycmVudFByb3BzLCBpbmNvbWluZ1Byb3BzKSA6IGN1cnJlbnRQcm9wc0FzU3RyICE9IGluY29taW5nUHJvcHNBc1N0cjtcblxuICAgIC8vIEJlbG93IHBpZWNlIG9mIGNvZGUgaXMgbmVlZGVkIHRvIHJlLXJlbmRlciB0aGUgY29tcG9uZW50IHNpbmNlIHdlIHdhbm5hIGV2YWx1YXRlIHRoZSBWaXNpYmlsaXR5IGV4cHJlc3Npb24gd2l0aGluIFZpZXcgY29tcG9uZW50IGluIHN1Y2ggY2FzZXNcbiAgICBpZiAoaW5Db21wLnBDb25uJC5tZXRhLmNvbmZpZy5jb250ZXh0Py5sZW5ndGggPiAwICYmIGluQ29tcC5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLmxlbmd0aCA+ICdjYXNlSW5mby5jb250ZW50Jy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIE5vdyB1cGRhdGUgdGhlIGVudHJ5IGluIGNvbXBvbmVudFByb3BzQXJyIHdpdGggdGhlIGluY29taW5nIHZhbHVlIHNvXG4gICAgLy8gIHdlIGNhbiBjb21wYXJlIGFnYWluc3QgdGhhdCBuZXh0IHRpbWUuLi5cbiAgICB0aGlzLmNvbXBvbmVudFByb3BzQXJyW2NvbXBJRF0gPSBpbmNvbWluZ1Byb3BzO1xuICAgIGNvbnN0IHZhbGlkYXRlbWVzc2FnZSA9IGluY29taW5nUHJvcHMudmFsaWRhdGVtZXNzYWdlID09PSB1bmRlZmluZWQgPyAnJyA6IHRoaXMudXRpbHMuaHRtbERlY29kZShpbmNvbWluZ1Byb3BzLnZhbGlkYXRlbWVzc2FnZSk7XG4gICAgLy8gYW5kIHVwZGF0ZSB0aGUgY29tcG9uZW50J3MgdmFsaWRhdGlvbiBtZXNzYWdlIChpZiB1bmRlZmluZWQsIGl0IHNob3VsZCBiZSBzZXQgdG8gXCJcIilcbiAgICBpZiAodW5kZWZpbmVkICE9PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID0gdmFsaWRhdGVtZXNzYWdlO1xuXG4gICAgICBpZiAoaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9ICcnKSB7XG4gICAgICAgIC8vIGlmIGhhdmUgYSB2YWxpZGF0ZSBtZXNzYWdlLCB0dXJuIG9mZiBzcGlubmVyXG4gICAgICAgIGNvbnN0IHRpbWVyID0gaW50ZXJ2YWwoMTAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcblxuICAgICAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBzRXJyb3JNZXNzYWdlID0gY3VycmVudFByb3BzICYmIGN1cnJlbnRQcm9wcy5sYWJlbCA/IGN1cnJlbnRQcm9wcy5sYWJlbC5jb25jYXQoJyAtICcpIDogJyc7XG4gICAgICAgIHNFcnJvck1lc3NhZ2UgPSBzRXJyb3JNZXNzYWdlLmNvbmNhdChpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UpO1xuICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgndXBkYXRlJywgc0Vycm9yTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluQ29tcC52YWxpZGF0ZU1lc3NhZ2UgPSB2YWxpZGF0ZW1lc3NhZ2U7XG4gICAgfVxuXG4gICAgaWYgKGJSZXQgJiYgY29tcElEID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGJSZXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyggYEFuZ3VsYXJQQ29ubmVjdCBjb21wb25lbnQgJHtjb21wSUR9IC0gJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX0gLSBzaG91bGRDb21wb25lbnRVcGRhdGU6ICR7YlJldH1gKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcImN1cnJlbnQgcHJvcHM6IFwiICsgY3VycmVudFByb3BzQXNTdHIpO1xuXG4gICAgaWYgKGJSZXQpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGAqKioqIGNoYW5nZSBmb3I6ICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcImN1cnJlbnQgcHJvcHM6IFwiICsgY3VycmVudFByb3BzQXNTdHIpO1xuICAgICAgLy8gY29uc29sZS5sb2coXCJpbmNvbWluZyBwcm9wczogXCIgKyBpbmNvbWluZ1Byb3BzQXNTdHIpO1xuICAgICAgLy8gY29uc29sZS5sb2coYCAgICAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogc2hvdWxkQ29tcG9uZW50VXBkYXRlIHJldHVybmluZzogJHtiUmV0fSwgY29tcElkOiAke2NvbXBJRH1gICk7XG4gICAgICAvLyBjb25zb2xlLmxvZyggYCAgICBVcGRhdGluZyB3aXRoIGNvbXBvbmVudFByb3BzIGZvciAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbXBvbmVudFByb3BzQXJyW2NvbXBJRF0pfWApO1xuICAgICAgLy8gY29uc29sZS5sb2coIGAgICAgICAgICAgYW5kIHZhbGlkYXRlTWVzc2FnZTogJHtpbkNvbXAudmFsaWRhdGVNZXNzYWdlfWApO1xuICAgIH1cbiAgICAvLyBlbHNlIGlmIChpbkNvbXAuY29uc3RydWN0b3IubmFtZS5pbmRleE9mKFwiVmlld1wiKSA+PSAwIHx8IGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lLmluZGV4T2YoXCJSb290XCIpID49IDApIHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKFwibm8gY2hhbmdlXCIpO1xuICAgIC8vICAgY29uc29sZS5sb2coXCJjdXJyZW50IHByb3BzOiBcIiArIGN1cnJlbnRQcm9wc0FzU3RyKTtcbiAgICAvLyAgIGNvbnNvbGUubG9nKFwiaW5jb21pbmcgcHJvcHM6IFwiICsgaW5jb21pbmdQcm9wc0FzU3RyKTtcbiAgICAvLyAgIGNvbnNvbGUubG9nKGAgICAgJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX06IHNob3VsZENvbXBvbmVudFVwZGF0ZSByZXR1cm5pbmc6ICR7YlJldH0sIGNvbXBJZDogJHtjb21wSUR9YCApO1xuXG4gICAgLy8gfVxuXG4gICAgLy8gY29uc29sZS5sb2coYCAgICAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogc2hvdWxkQ29tcG9uZW50VXBkYXRlIHJldHVybmluZzogJHtiUmV0fWApO1xuXG4gICAgcmV0dXJuIGJSZXQ7XG4gIH1cblxuICBpc1BhZ2VNZXNzYWdlc0VtcHR5KGluY29taW5nUHJvcHMpIHtcbiAgICByZXR1cm4gaW5jb21pbmdQcm9wcy5wYWdlTWVzc2FnZXMgJiYgaW5jb21pbmdQcm9wcy5wYWdlTWVzc2FnZXMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbiBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBlbmNvdW50ZXJlZCBhIGNoYW5nZSBldmVudFxuICAgKiBAcGFyYW0gaW5Db21wIFRoZSBjb21wb25lbnQgY2FsbGluZyB0aGUgY2hhbmdlIGV2ZW50XG4gICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnRcbiAgICovXG4gIGNoYW5nZUhhbmRsZXIoaW5Db21wLCBldmVudCkge1xuICAgIGNvbnN0IGJMb2dnaW5nID0gZmFsc2U7XG4gICAgaWYgKGJMb2dnaW5nKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgQW5ndWxhclBDb25uZWN0LmNoYW5nZUhhbmRsZXJgKTtcbiAgICB9XG4gICAgLy8gY2hlY2sgZm9yIHJlYXNvbmFibGUgaW5wdXRcbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAgfHwgVXRpbHMuaXNFbXB0eU9iamVjdChpbkNvbXApKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIGNoYW5nZUhhbmRsZXI6IGluQ29tcDogJHtKU09OLnN0cmluZ2lmeShpbkNvbXApfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBDb25uZWN0ID0gaW5Db21wLnBDb25uJDtcbiAgICBpZiAodW5kZWZpbmVkID09PSBwQ29ubmVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBjaGFuZ2VIYW5kbGVyOiBpbkNvbXAucENvbm4kOiAke3BDb25uZWN0fWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNsZWFyIG91dCBlcnJvcnNcbiAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgnZGlzbWlzcycsICcnKTtcblxuICAgIHBDb25uZWN0LmdldEFjdGlvbnNBcGkoKS5jaGFuZ2VIYW5kbGVyKHBDb25uZWN0LCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGVuY291bnRlcmVkIGFuIGV2ZW50IChzdWNoIGFzIGJsdXIpXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBjYWxsaW5nIHRoZSBldmVudFxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50XG4gICAqL1xuICBldmVudEhhbmRsZXIoaW5Db21wLCBldmVudCkge1xuICAgIGNvbnN0IGJMb2dnaW5nID0gZmFsc2U7XG4gICAgaWYgKGJMb2dnaW5nKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgQW5ndWxhclBDb25uZWN0LmV2ZW50SGFuZGxlcmApO1xuICAgIH1cbiAgICAvLyBjaGVjayBmb3IgcmVhc29uYWJsZSBpbnB1dFxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcCB8fCBVdGlscy5pc0VtcHR5T2JqZWN0KGluQ29tcCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gZXZlbnRIYW5kbGVyOiBpbkNvbXA6ICR7SlNPTi5zdHJpbmdpZnkoaW5Db21wKX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwQ29ubmVjdCA9IGluQ29tcC5wQ29ubiQ7XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gcENvbm5lY3QpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gZXZlbnRIYW5kbGVyOiBpbkNvbXAucENvbm4kOiAke3BDb25uZWN0fWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBDb25uZWN0LmdldEFjdGlvbnNBcGkoKS5ldmVudEhhbmRsZXIocENvbm5lY3QsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBBIGhhbmRsZSB0byB0aGUgYXBwbGljYXRpb24ncyBzdG9yZVxuICAgKi9cbiAgZ2V0U3RvcmUoKSB7XG4gICAgaWYgKHRoaXMudGhlU3RvcmUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMudGhlU3RvcmUgPSBQQ29yZS5nZXRTdG9yZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50aGVTdG9yZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gYkxvZ01zZyBJZiB0cnVlLCB3aWxsIHdyaXRlIHRoZSBzdHJpbmdpZmllZCBzdGF0ZSB0byB0aGUgc3RvcmUgZm9yIGRlYnVnZ2luZy9pbnNwZWN0aW9uXG4gICAqIEBwYXJhbSBpbkNvbXAgSWYgc3VwcGxpZWQsIHRoZSBjb21wb25lbnQgdGhhdCBpcyByZXF1ZXN0aW5nIHRoZSBzdG9yZSdzIHN0YXRlXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIHRvIHRoZSBfX3N0YXRlX18gb2YgYXBwbGljYXRpb24ncyBzdG9yZVxuICAgKi9cbiAgZ2V0U3RhdGUoYkxvZ01zZzogYm9vbGVhbiA9IGZhbHNlLCBpbkNvbXA6IGFueSA9IG51bGwpIHtcbiAgICBjb25zdCB0aGVTdGF0ZTogb2JqZWN0ID0gdGhpcy5nZXRTdG9yZSgpLmdldFN0YXRlKCk7XG4gICAgaWYgKGJMb2dNc2cpIHtcbiAgICAgIGNvbnN0IHRoZUNvbXBOYW1lOiBzdHJpbmcgPSBpbkNvbXAgPyBgJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX06IGAgOiAnJztcbiAgICAgIGNvbnNvbGUubG9nKGAke3RoZUNvbXBOYW1lfSBTdG9yZSBzdGF0ZTogJHtKU09OLnN0cmluZ2lmeSh0aGVTdGF0ZSl9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGVTdGF0ZTtcbiAgfVxuXG4gIC8vIHByb2Nlc3NBY3Rpb25zIC0gY2FycmllZCBvdmVyIGZyb20gUENvbm5lY3RIT0MgaW5pdGlhbGl6ZVxuICAvKipcbiAgICogIHByb2Nlc3NBY3Rpb25zIGV4cG9zZXMgYWxsIGFjdGlvbnMgaW4gdGhlIG1ldGFkYXRhLlxuICAgKiAgQXR0YWNoZXMgY29tbW9uIGhhbmRsZXIgKGV2ZW50SGFuZGxlcikgZm9yIGFsbCBhY3Rpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzQWN0aW9ucyhpbkNvbXApIHtcbiAgICBjb25zdCBwQ29ubmVjdCA9IGluQ29tcC5wQ29ubiQ7XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gcENvbm5lY3QpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcHJvY2Vzc0FjdGlvbnM6IHBDb25uJDogJHtwQ29ubmVjdH0gZnJvbSBjb21wb25lbnQ6ICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGluQ29tcC5wQ29ubiQuaXNFZGl0YWJsZSgpKSB7XG4gICAgICBpbkNvbXAucENvbm4kLnNldEFjdGlvbignb25DaGFuZ2UnLCB0aGlzLmNoYW5nZUhhbmRsZXIuYmluZCh0aGlzKSk7XG4gICAgICBpbkNvbXAucENvbm4kLnNldEFjdGlvbignb25CbHVyJywgdGhpcy5ldmVudEhhbmRsZXIuYmluZCh0aGlzKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1wY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFDO0FBR3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7QUFlMUMsTUFBTSxPQUFPLHNCQUFzQjtJQW1CakMsNENBQTRDO2FBQzdCLGFBQVEsR0FBRyxLQUFLLEFBQVIsQ0FBUztJQUVoQyxZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLEtBQVk7UUFGWixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBeEJ0Qjs7V0FFRztRQUNLLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFFN0I7O1dBRUc7UUFDSyx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFFL0I7Ozs7O1dBS0c7UUFDSyxzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFVdkMseURBQXlEO1FBQ3pELDREQUE0RDtRQUM1RCxvREFBb0Q7UUFDcEQsa0RBQWtEO1FBQ2xELCtDQUErQztRQUMvQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFMUQsNkRBQTZEO1FBQzdELCtCQUErQjtRQUMvQiwrREFBK0Q7UUFDL0QsV0FBVztRQUNYLGtFQUFrRTtRQUNsRSxJQUFJO0lBQ04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQztRQUM3QixrRUFBa0U7UUFDbEUsNERBQTREO1FBQzVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssZ0JBQWdCLENBQUMsU0FBYyxJQUFJLEVBQUUsYUFBOEIsSUFBSTtRQUM3RSwrRkFBK0Y7UUFDL0YsSUFBSSxhQUFhLENBQUM7UUFDbEIsdURBQXVEO1FBQ3ZELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDdkIsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO2dCQUMzQixJQUFJLFdBQVcsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ3BDLFVBQVUsRUFBRSxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDLENBQUM7WUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEUsYUFBYSxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxTQUFjLElBQUk7UUFDMUMsSUFBSSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVsQixJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLGlFQUFpRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCx1SEFBdUg7UUFDdkgsZ0hBQWdIO1FBQ2hILHNGQUFzRjtRQUN0RixJQUFJO1FBRUosSUFBSSxNQUFNLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksT0FBTyxNQUFNLENBQUMsZUFBZSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RixRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQztRQUVELFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTNDLGlEQUFpRDtRQUVqRCw4SEFBOEg7UUFDOUgsMkZBQTJGO1FBQzNGLGtGQUFrRjtRQUNsRixNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWpELFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhELElBQUksU0FBUyxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsZUFBZSxJQUFJLFNBQVMsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFLENBQUM7WUFDNUYsd0lBQXdJO1FBQzFJLENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxTQUFTO1lBQ1osR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLE1BQU07UUFDMUIsT0FBTyxNQUFNLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUN2RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFjLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUNyRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLGdFQUFnRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBRWpELDRHQUE0RztRQUM1RyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxTQUFjLElBQUk7UUFDL0MsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1RUFBdUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsYUFBOEIsSUFBSTtRQUN0RSwyQ0FBMkM7UUFDM0MsTUFBTSxZQUFZLEdBQXdCO1lBQ3hDLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLFNBQVM7WUFDeEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztRQUVGLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyw4REFBOEQsTUFBTSxnQkFBZ0IsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUNoSCxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFFekMsSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0UsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsUUFBUSxzREFBc0QsQ0FBQyxDQUFDO1lBQ3hJLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsaUJBQWlCLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZGLE9BQU8sQ0FBQyxLQUFLLENBQ1gsMERBQTBELFFBQVEsZ0VBQWdFLENBQ25JLENBQUM7WUFDRixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0RixPQUFPLENBQUMsS0FBSyxDQUNYLDBEQUEwRCxRQUFRLCtEQUErRCxDQUNsSSxDQUFDO1lBQ0YsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxlQUFlLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELFFBQVEsOERBQThELENBQUMsQ0FBQztZQUNoSixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDO1FBRUQscUZBQXFGO1FBQ3JGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLFlBQVksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLDJDQUEyQztRQUMzQyxNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFFBQVEsR0FBb0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU1RSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDaEMsWUFBWSxDQUFDLGFBQWEsR0FBRyxHQUFHLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLFFBQVEsRUFBRSxDQUFDO1lBQ2IsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELDREQUE0RDtRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUIsK0NBQStDO1FBQy9DLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBTTtRQUNqQixNQUFNLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBTTtRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pGLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGVBQWUsQ0FDM0MsV0FBVyxFQUNYLGFBQWEsRUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFDaEMsS0FBZSxDQUNoQixDQUFDO1FBQ0osQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7WUFDbEYsdUNBQXVDO1lBQ3ZDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEtBQWUsQ0FBQyxDQUFDO1FBQzdILENBQUM7YUFBTSxDQUFDO1lBQ04sb0NBQW9DO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFDNUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BJLENBQUM7SUFDSCxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLDBDQUEwQztJQUMxQyx1RUFBdUU7SUFDdkUsc0VBQXNFO0lBQ3RFLHFGQUFxRjtJQUNyRixvRkFBb0Y7SUFDcEYsMEdBQTBHO0lBQzFHLDRHQUE0RztJQUM1RywrQkFBK0I7SUFDL0I7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gscUJBQXFCLENBQUMsTUFBTTtRQUMxQiw4QkFBOEI7UUFDOUIsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtEQUErRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsZUFBZSxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNyRixPQUFPLENBQUMsS0FBSyxDQUFDLHVEQUF1RCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksNENBQTRDLENBQUMsQ0FBQztRQUM1SSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxNQUFNLFlBQVksR0FBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsTUFBTSxpQkFBaUIsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0sYUFBYSxHQUFRLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRCw0RkFBNEY7UUFDNUYsdURBQXVEO1FBQ3ZELElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3JFLE9BQU8sYUFBYSxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3JFLGFBQWEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxrQkFBa0IsQ0FBQztRQUVqRyxpSkFBaUo7UUFDakosSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6SCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUM7UUFDL0MsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hJLHVGQUF1RjtRQUN2RixJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsbUJBQW1CLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztZQUU3RCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3JELCtDQUErQztnQkFDL0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUVsQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksYUFBYSxHQUFHLFlBQVksSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRixhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2pGLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQscUhBQXFIO1FBQ3JILHNEQUFzRDtRQUV0RCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsOERBQThEO1lBQzlELHNEQUFzRDtZQUN0RCx3REFBd0Q7WUFDeEQsK0dBQStHO1lBQy9HLHNJQUFzSTtZQUN0SSw0RUFBNEU7UUFDOUUsQ0FBQztRQUNELDJHQUEyRztRQUMzRyw4QkFBOEI7UUFDOUIsd0RBQXdEO1FBQ3hELDBEQUEwRDtRQUMxRCxpSEFBaUg7UUFFakgsSUFBSTtRQUVKLDJGQUEyRjtRQUUzRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxhQUFhO1FBQy9CLE9BQU8sYUFBYSxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixnREFBZ0Q7UUFDbEQsQ0FBQztRQUNELDZCQUE2QjtRQUM3QixJQUFJLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxLQUFLLENBQUMsdURBQXVELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU87UUFDVCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSztRQUN4QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLCtDQUErQztRQUNqRCxDQUFDO1FBQ0QsNkJBQTZCO1FBQzdCLElBQUksU0FBUyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUYsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkRBQTZELFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdkYsT0FBTztRQUNULENBQUM7UUFFRCxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsVUFBbUIsS0FBSyxFQUFFLFNBQWMsSUFBSTtRQUNuRCxNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sV0FBVyxHQUFXLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsNERBQTREO0lBQzVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxNQUFNO1FBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDL0IsSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3REFBd0QsUUFBUSxvQkFBb0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDbkUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7K0dBL2ZVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi9faGVscGVycy91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhclBDb25uZWN0RGF0YSB7XG4gIGNvbXBJRD86IHN0cmluZztcbiAgdW5zdWJzY3JpYmVGbj86IEZ1bmN0aW9uO1xuICB2YWxpZGF0ZU1lc3NhZ2U/OiBzdHJpbmc7XG4gIGFjdGlvbnM/OiB7XG4gICAgb25DaGFuZ2U6IEZ1bmN0aW9uO1xuICAgIG9uQmx1cjogRnVuY3Rpb247XG4gIH07XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2Uge1xuICAvKipcbiAgICogTG9jYWwgdmFyaWFibGUgZm9yIGFjY2VzcyB0byB0aGUgc3RvcmUgb25jZSB0aGUgc2VydmljZSBpcyBjb25uZWN0ZWQgdG8gaXQuXG4gICAqL1xuICBwcml2YXRlIHRoZVN0b3JlOiBhbnkgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBMb2NhbCB2YXJpYWJsZSB1c2VkIHRvIGNvbXB1dGUgdGhlIG5leHQgY29tcG9uZW50SURcbiAgICovXG4gIHByaXZhdGUgY291bnRlckNvbXBvbmVudElEID0gMDtcblxuICAvKipcbiAgICogTG9jYWwgYXJyYXkgdXNlZCB0byBzdG9yZSB0aGUgYXNzb2NpYXRpb24gb2YgYW4gY29tcG9uZW50IHRvIGl0cyBtb3N0IHJlY2VudCBcInByb3BzXCJcbiAgICogIHdoZXJlIFwicHJvcHNcIiBpcyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudCdzIGdldENvbmZpZ1Byb3BzIGFsb25nIHdpdGhcbiAgICogYW55dGhpbmcgYWRkZWQgYnkgcG9wdWxhdGVBZGRpdGlvbmFsUHJvcHMuXG4gICAqIEVhY2ggZW50cnkgaXM6IHsgX19jb21wb25lbnRJRF9fOiBfdGhlIGNvbXBvbmVudCdzIG1vc3QgcmVjZW50IHByb3BzXyB9XG4gICAqL1xuICBwcml2YXRlIGNvbXBvbmVudFByb3BzQXJyOiBPYmplY3RbXSA9IFtdO1xuXG4gIC8qIFVzZWQgdG8gdG9nZ2xlIHNvbWUgY2xhc3Mtd2lkZSBsb2dnaW5nICovXG4gIHByaXZhdGUgc3RhdGljIGJMb2dnaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge1xuICAgIC8vIEVzdGFibGlzaCBuZWNlc3Nhcnkgb3ZlcnJpZGUgZmxhZ3MgZm9yIG91ciB1c2Ugb2YgQ29yZVxuICAgIC8vIGNvbnN0IGNvcmVPdmVycmlkZXMgPSB7IFwiZHluYW1pY0xvYWRDb21wb25lbnRzXCI6IGZhbHNlIH07XG4gICAgLy8gbGV0IGNvcmVPdmVycmlkZXMgPSBQQ29yZS5nZXRCZWhhdmlvck92ZXJyaWRlcygpO1xuICAgIC8vIGNvcmVPdmVycmlkZXNbXCJkeW5hbWljTG9hZENvbXBvbmVudHNcIl0gPSBmYWxzZTtcbiAgICAvLyBQQ29yZS5zZXRCZWhhdmlvck92ZXJyaWRlcyggY29yZU92ZXJyaWRlcyApO1xuICAgIFBDb3JlLnNldEJlaGF2aW9yT3ZlcnJpZGUoJ2R5bmFtaWNMb2FkQ29tcG9uZW50cycsIGZhbHNlKTtcblxuICAgIC8vIEFsd2F5cyBiZXN0IHRvIHVzZSBkZWVwIG9iamVjdCBjb21wYXJlIHdoZW4gaXQncyBhdmFpbGFibGVcbiAgICAvLyBpZiAoaXNFcXVhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gY29uc29sZS5sb2coYEFuZ3VsYXJQQ29ubmVjdCBpcyB1c2luZyBkZWVwIG9iamVjdCBjb21wYXJlYCk7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgQW5ndWxhclBDb25uZWN0IGlzIHVzaW5nIEpTT04uc3RyaW5naWZ5IGNvbXBhcmVgKTtcbiAgICAvLyB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHVuaXF1ZSAoZm9yIHRoaXMgc2Vzc2lvbikgQ29tcG9uZW50SUQgdGhhdCBzaG91bGRcbiAgICogYmUgdXNlZCBmb3IgdGhhdCBjb21wb25lbnQgdG8gdXBkYXRlIGl0cyBtb3N0IHJlY2VudCBwcm9wc1xuICAgKiAod2hpY2ggY2FuIGFsc28gYmUgY29tcGFyZWQgYWdhaW5zdCBpdHMgcHJldmlvdXMgdmFsdWVcbiAgICogYmVmb3JlIHVwZGF0aW5nKS4gTm90ZSB0aGF0IHRoaXMgcmV0dXJucyBhIHN0cmluZyBzbyB3ZSBjYW4gdXNlXG4gICAqIGl0IGFzIGEga2V5IGluIGFuIGFzc29jaWF0aXZlIGFycmF5XG4gICAqIEByZXR1cm5zIHRoZSBuZXh0IGNvbXBvbmVudElEXG4gICAqL1xuICBwcml2YXRlIGdldE5leHRDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIHRoaXMuY291bnRlckNvbXBvbmVudElEICs9IDE7XG4gICAgLy8gTm90ZSB0aGF0IHdlIHVzZSB0aGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIG51bWJlciBzbyB3ZSBoYXZlIGFuXG4gICAgLy8gIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgd2UgY2FuIGNsZWFuIHVwIGxhdGVyLCBpZiBuZWVkZWQuXG4gICAgcmV0dXJuIHRoaXMuY291bnRlckNvbXBvbmVudElELnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENhbGxpbmcgb2JqZWN0IChpbkNvbXApIHN1YnNjcmliZXMgdG8gc3RvcmUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IHRoYXQncyBzdWJzY3JpYmluZyB0byB0aGUgc3RvcmVcbiAgICogQHBhcmFtIGluQ2FsbGJhY2sgVGhlIGNvbXBvbmVudCdzIGNhbGxiYWNrIGZ1bmN0aW9uICh0eXBpY2FsbHkgY2FsbGVkIG9uU3RhdGVDaGFuZ2UpIHRoYXQgd2lsbFxuICAgKiBiZSBjYWxsZWQgd2hlbiB0aGUgc3RvcmUgY2hhbmdlcy5cbiAgICogQHJldHVybnMgVGhlICoqdW5zdWJzY3JpYmUqKiBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IG5lZWRzXG4gICAqIHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIHN0b3JlLiAoVHlwaWNhbGx5IGR1cmluZyBuZ09uRGVzdHJveSlcbiAgICovXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9TdG9yZShpbkNvbXA6IGFueSA9IG51bGwsIGluQ2FsbGJhY2s6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGwpOiBGdW5jdGlvbiB7XG4gICAgLy8gY29uc3QgdGhlQ29tcE5hbWU6IHN0cmluZyA9IGluQ29tcCA/IGAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfWAgOiAnbm8gY29tcG9uZW50IHByb3ZpZGVkJztcbiAgICBsZXQgZm5VbnN1YnNjcmliZTtcbiAgICAvLyBjb25zb2xlLmxvZyggYEJyaWRnZSBzdWJzY3JpYmluZzogJHt0aGVDb21wTmFtZX0gYCk7XG4gICAgaWYgKGluQ29tcCkge1xuICAgICAgbGV0IGJTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHdyYXBwZWRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGJTdWJzY3JpYmVkICYmIGluQ2FsbGJhY2spIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnaW5DYWxsYmFjazo6JywgaW5Db21wKTtcbiAgICAgICAgICBpbkNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBzdG9yZVVuc3Vic2NyaWJlID0gdGhpcy5nZXRTdG9yZSgpLnN1YnNjcmliZSh3cmFwcGVkQ2FsbGJhY2spO1xuICAgICAgZm5VbnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICAgICAgYlN1YnNjcmliZWQgPSBmYWxzZTtcbiAgICAgICAgc3RvcmVVbnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZuVW5zdWJzY3JpYmU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQ29tcG9uZW50J3MgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIChhKSB0byBwb3B1bGF0ZSBjb21wb25lbnRQcm9wc0FyclxuICAvLyAgYW5kIChiKSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCB3aG9zZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBvYnRhaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb21wb25lbnRQcm9wcyhpbkNvbXA6IGFueSA9IG51bGwpOiBPYmplY3Qge1xuICAgIGxldCBjb21wUHJvcHM6IGFueSA9IHt9O1xuICAgIGxldCBhZGRQcm9wcyA9IHt9O1xuXG4gICAgaWYgKGluQ29tcCA9PT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBnZXRDb21wb25lbnRQcm9wcyBjYWxsZWQgd2l0aCBiYWQgY29tcG9uZW50OiAke2luQ29tcH1gKTtcbiAgICB9XG5cbiAgICAvLyBpZiAoKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIkZsb3dDb250YWluZXJDb21wb25lbnRcIikgfHwgKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIlZpZXdDb250YWluZXJDb21wb25lbnRcIilcbiAgICAvLyAgICAgfHwgKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIlZpZXdDb21wb25lbnRcIikgfHwgKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIkRlZmVyTG9hZENvbXBvbmVudFwiKSkge1xuICAgIC8vICAgY29uc29sZS5sb2coYC0tPiBBbmd1bGFyUENvbm5lY3QgZ2V0Q29tcG9uZW50UHJvcHM6ICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9YCk7XG4gICAgLy8gfVxuXG4gICAgaWYgKGluQ29tcC5hZGRpdGlvbmFsUHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBpbkNvbXAuYWRkaXRpb25hbFByb3BzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBhZGRQcm9wcyA9IGluQ29tcC5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKGluQ29tcC5hZGRpdGlvbmFsUHJvcHMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5Db21wLmFkZGl0aW9uYWxQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBwcm9wc1RvQWRkID0gaW5Db21wLmFkZGl0aW9uYWxQcm9wcyhQQ29yZS5nZXRTdG9yZSgpLmdldFN0YXRlKCksIGluQ29tcC5wQ29ubiQpO1xuICAgICAgICBhZGRQcm9wcyA9IGluQ29tcC5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHByb3BzVG9BZGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBQcm9wcyA9IGluQ29tcC5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKTtcblxuICAgIC8vIGNvbnN0IGNvbXBvbmVudE5hbWUgPSBpbkNvbXAuY29uc3RydWN0b3IubmFtZTtcblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgY29tbWVudCBpcyBmcm9tIHRoZSBOZWJ1bGEvQ29uc3RlbGxhdGlvbiB2ZXJzaW9uIG9mIHRoaXMgY29kZS4gTWVhbnQgYXMgYSByZW1pbmRlciB0byBjaGVjayB0aGlzIG9jY2FzaW9uYWxseVxuICAgIC8vIHBvcHVsYXRlIGFkZGl0aW9uYWwgcHJvcHMgd2hpY2ggYXJlIGNvbXBvbmVudCBzcGVjaWZpYyBhbmQgbm90IHByZXNlbnQgaW4gY29uZmlndXJhdGlvbnNcbiAgICAvLyBUaGlzIGJsb2NrIGNhbiBiZSByZW1vdmVkIG9uY2UgYWxsIHRoZXNlIHByb3BzIHdpbGwgYmUgYWRkZWQgYXMgcGFydCBvZiBjb25maWdzXG4gICAgaW5Db21wLnBDb25uJC5wb3B1bGF0ZUFkZGl0aW9uYWxQcm9wcyhjb21wUHJvcHMpO1xuXG4gICAgY29tcFByb3BzID0gaW5Db21wLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHMoY29tcFByb3BzKTtcblxuICAgIGlmIChjb21wUHJvcHMgJiYgdW5kZWZpbmVkICE9PSBjb21wUHJvcHMudmFsaWRhdGVtZXNzYWdlICYmIGNvbXBQcm9wcy52YWxpZGF0ZW1lc3NhZ2UgIT0gJycpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCBgICAgdmFsaWRhdGVtZXNzYWdlIGZvciAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfSAke2luQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLmNvbXBJRH06ICR7Y29tcFByb3BzLnZhbGlkYXRlbWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uY29tcFByb3BzLFxuICAgICAgLi4uYWRkUHJvcHNcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBmb3IgZ2l2ZW4gY29tcG9uZW50IGNyZWF0ZWQgd2hlbiByZWdpc3RlcmluZ1xuICAgKiBPdGhlcndpc2UsIHJldHVybiB1bmRlZmluZWQuXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCB3aG9zZSBwcm9wZXJ0eSBpcyBiZWluZyByZXF1ZXN0ZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tcG9uZW50SUQoaW5Db21wKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW5Db21wLmJyaWRnZUNvbXBvbmVudElEIHx8IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLmNvbXBJRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiByZXF1ZXN0ZWQgcHJvcGVydHkgZm9yIHRoZSBjb21wb25lbnQgaWYgaXQgZXhpc3RzLlxuICAgKiBPdGhlcndpc2UsIHJldHVybiB1bmRlZmluZWQuXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCB3aG9zZSBwcm9wZXJ0eSBpcyBiZWluZyByZXF1ZXN0ZWQuXG4gICAqIEBwYXJhbSBpblByb3AgVGhlIHByb3BlcnR5IGJlaW5nIHJlcXVlc3RlZC5cbiAgICovXG4gIHB1YmxpYyBnZXRDb21wb25lbnRQcm9wKGluQ29tcDogYW55ID0gbnVsbCwgaW5Qcm9wID0gJycpIHtcbiAgICBpZiAoaW5Db21wID09PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGdldENvbXBvbmVudFByb3AgY2FsbGVkIHdpdGggYmFkIGNvbXBvbmVudDogJHtpbkNvbXB9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcElEID0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuY29tcElEO1xuXG4gICAgLy8gTG9vayB1cCBwcm9wZXJ0eSBpbiB0aGUgY29tcG9uZW50J3MgZW50cnkgaW4gY29tcG9uZW50UHJvcEFycmF5ICh3aGljaCBzaG91bGQgaGF2ZSB0aGUgbW9zdCByZWNlbnQgdmFsdWUpXG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXVtpblByb3BdO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGNvbXBsZXRlIHNldCBvZiByZXNvbHZlZCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aFxuICAgKiB0aGlzIGNvbXBvbmVudC5cbiAgICogVGhpcyBpcyB0aGUgZnVsbCBzZXQgb2YgcHJvcGVydGllcyB0aGF0IGFyZSB0cmFja2VkIGluIFJlZHV4IGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50Q29tcGxldGVQcm9wcyhpbkNvbXA6IGFueSA9IG51bGwpIHtcbiAgICBpZiAoaW5Db21wID09PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGdldEN1cnJlbnRDb21wbGV0ZVByb3BzIGNhbGxlZCB3aXRoIGJhZCBjb21wb25lbnQ6ICR7aW5Db21wfWApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRQcm9wc0FycltpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS5jb21wSURdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgY29tcG9uZW50IGFuZCBpdHMgY2FsbGJhY2sgZnVuY3Rpb24uIFdoZW4gYSBjb21wb25lbnQgY2FsbHMgdGhpcyBtZXRob2RcbiAgICogKHR5cGljYWxseSBmcm9tIGl0cyBuZ09uSW5pdCksIHRoZSBjb21wb25lbnQgaXMgZ2l2ZW4gYSB1bmlxdWUgY29tcG9uZW50SUQgKGZvciB0aGlzIHNlc3Npb24pXG4gICAqIGFuZCBzdWJzY3JpYmVzIHRoZSBjb21wb25lbnQgdG8gdGhlIHN0b3JlLiBBcyBhIHNpZGUgZWZmZWN0LCBpdCBhbHNvIGFzc2lnbnMgdGhlIGNvbXBvbmVudCdzXG4gICAqIGFjdGlvbnMgKGZyb20gaXRzIG1ldGFkYXRhKSB0byB0aGUgY29tcG9uZW50J3MgX19fYWN0aW9uc19fXyBhbmQgYmluZHMgdGhlIGNvbXBvbmVudCdzIGNhbGxiYWNrXG4gICAqIChwYXNzZWQgaW4gYXMgX19faW5DYWxsYmFja19fXykgdG8gdGhlIGNvbXBvbmVudC4gSWYgYSBwcm9ibGVtIGlzIGVuY291bnRlcmVkLCBhbiBlbXB0eSBvYmplY3QsXG4gICAqIHt9LCBpcyByZXR1cm5lZC5cbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IGJlaW5nIHJlZ2lzdGVyZWQgYW5kIHN1YnNjcmliZWRcbiAgICogQHBhcmFtIGluQ2FsbGJhY2sgVGhlIGNvbXBvbmVudCdzIGNhbGxiYWNrIGZ1bmN0aW9uICh0eXBpY2FsbHkgY2FsbGVkIG9uU3RhdGVDaGFuZ2UpIHRoYXRcbiAgICogd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHN0YXRlIGNoYW5nZXMuXG4gICAqIEByZXR1cm5zIEEgSlNPTiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIGtleXM6XG4gICAqIGNvbXBJRDogdGhlIHVuaXF1ZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQsXG4gICAqIHVuc3Vic2NyaWJlRm46IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IG5lZWRzIHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIHN0b3JlLFxuICAgKiB2YWxpZGF0ZU1lc3NhZ2U6IGFueSB2YWxpZGF0aW9uL2Vycm9yIG1lc3NhZ2UgdGhhdCBnZXRzIGdlbmVyYXRlZCBmb3IgdGhpcyBvYmplY3QsXG4gICAqIGFjdGlvbnM6IGFueSBhY3Rpb25zIHRoYXQgYXJlIGRlZmluZWQgZm9yIHRoaXMgb2JqZWN0XG4gICAqL1xuICByZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudChpbkNvbXAsIGluQ2FsbGJhY2s6IEZ1bmN0aW9uIHwgbnVsbCA9IG51bGwpOiBBbmd1bGFyUENvbm5lY3REYXRhIHtcbiAgICAvLyBDcmVhdGUgYW4gaW5pdGlhbCBvYmplY3QgdG8gYmUgcmV0dXJuZWQuXG4gICAgY29uc3QgcmV0dXJuT2JqZWN0OiBBbmd1bGFyUENvbm5lY3REYXRhID0ge1xuICAgICAgY29tcElEOiAnJyxcbiAgICAgIHVuc3Vic2NyaWJlRm46IHVuZGVmaW5lZCxcbiAgICAgIHZhbGlkYXRlTWVzc2FnZTogJycsXG4gICAgICBhY3Rpb25zOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKGluQ29tcCA9PT0gbnVsbCB8fCBpbkNhbGxiYWNrID09PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHJlZ2lzdGVyQW5kU3Vic2NyaWJlOiBpbkNvbXA6ICR7aW5Db21wfSBpbkNhbGxiYWNrOiAke2luQ2FsbGJhY2t9YCk7XG4gICAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBUeXBlID0gaW5Db21wLmNvbnN0cnVjdG9yLm5hbWU7XG5cbiAgICBpZiAoQW5ndWxhclBDb25uZWN0U2VydmljZS5iTG9nZ2luZykge1xuICAgICAgY29uc29sZS5sb2coYHJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50OiAke2NvbXBUeXBlfWApO1xuICAgIH1cblxuICAgIGlmICh1bmRlZmluZWQgIT09IGluQ29tcC5icmlkZ2VDb21wb25lbnRJRCkge1xuICAgICAgY29uc29sZS5lcnJvcihgT0xEIFNDSE9PTDogJHtjb21wVHlwZX1gKTtcbiAgICB9XG5cbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAuYWN0aW9ucyAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHJlZ2lzdGVyQW5kU3Vic2NyaWJlIGZyb20gJHtjb21wVHlwZX06IGFjdGlvbnMgbm90IGRlZmluZWQgYXMgYSBjbGFzcyB2YXJpYWJsZSBmb3IgaW5Db21wYCk7XG4gICAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICAgIH1cbiAgICBpZiAodW5kZWZpbmVkID09PSBpbkNvbXAuYnJpZGdlQ29tcG9uZW50SUQgJiYgdW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUgZnJvbSAke2NvbXBUeXBlfTogYnJpZGdlQ29tcG9uZW50SUQgbm90IGRlZmluZWQgYXMgYSBjbGFzcyB2YXJpYWJsZSBmb3IgaW5Db21wYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gICAgfVxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC51bnN1YnNjcmliZVN0b3JlICYmIHVuZGVmaW5lZCA9PT0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHJlZ2lzdGVyQW5kU3Vic2NyaWJlIGZyb20gJHtjb21wVHlwZX06IHVuc3Vic2NyaWJlU3RvcmUgbm90IGRlZmluZWQgYXMgYSBjbGFzcyB2YXJpYWJsZSBmb3IgaW5Db21wYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gICAgfVxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcC52YWxpZGF0ZU1lc3NhZ2UgJiYgdW5kZWZpbmVkID09PSBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byByZWdpc3RlckFuZFN1YnNjcmliZSBmcm9tICR7Y29tcFR5cGV9OiB2YWxpZGF0ZU1lc3NhZ2Ugbm90IGRlZmluZWQgYXMgYSBjbGFzcyB2YXJpYWJsZSBmb3IgaW5Db21wYCk7XG4gICAgICByZXR1cm4gcmV0dXJuT2JqZWN0O1xuICAgIH1cblxuICAgIC8vIGNhbGwgcHJvY2Vzc0FjdGlvbnMgdG8gcG9wdWxhdGUgbWV0YWRhdGEgd2l0aCBhY3Rpb25zIGFzIGluIFBDb25uZWN0SE9SIGluaXRpYWxpemVcbiAgICB0aGlzLnByb2Nlc3NBY3Rpb25zKGluQ29tcCk7XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLmFjdGlvbnMpIHtcbiAgICAgIHJldHVybk9iamVjdC5hY3Rpb25zID0gaW5Db21wLnBDb25uJC5nZXRBY3Rpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluQ29tcC5hY3Rpb25zID0gaW5Db21wLnBDb25uJC5nZXRBY3Rpb25zKCk7XG4gICAgfVxuXG4gICAgLy8gYmluZCB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgdG8gdGhlIGNvbXBvbmVudCBpdCdzIGFzc29jaWF0ZWQgd2l0aFxuICAgIGluQ2FsbGJhY2sgPSBpbkNhbGxiYWNrLmJpbmQoaW5Db21wKTtcblxuICAgIC8vIE5vdyBwcm9jZWVkIHRvIHJlZ2lzdGVyIGFuZCBzdWJzY3JpYmUuLi5cbiAgICBjb25zdCB0aGVDb21wSUQ6IHN0cmluZyA9IHRoaXMuZ2V0TmV4dENvbXBvbmVudElkKCk7XG4gICAgY29uc3QgdGhlVW5zdWI6IEZ1bmN0aW9uIHwgbnVsbCA9IHRoaXMuc3Vic2NyaWJlVG9TdG9yZShpbkNvbXAsIGluQ2FsbGJhY2spO1xuXG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEpIHtcbiAgICAgIGluQ29tcC5icmlkZ2VDb21wb25lbnRJRCA9IHRoZUNvbXBJRDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuT2JqZWN0LmNvbXBJRCA9IHRoZUNvbXBJRDtcbiAgICAgIHJldHVybk9iamVjdC51bnN1YnNjcmliZUZuID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZUZvcm1GaWVsZChpbkNvbXApO1xuICAgICAgICB0aGVVbnN1YigpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBpbml0aWFsaXplIHRoaXMgY29tcG9uZW50cyBlbnRyeSBpbiB0aGUgY29tcG9uZW50UHJvcHNBcnJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BzQXJyW3RoZUNvbXBJRF0gPSB7fTtcblxuICAgIHRoaXMuYWRkRm9ybUZpZWxkKGluQ29tcCk7XG5cbiAgICAvLyByZXR1cm4gb2JqZWN0IHdpdGggY29tcElEIGFuZCB1bnN1YnNjcmliZS4uLlxuICAgIHJldHVybiByZXR1cm5PYmplY3Q7XG4gIH1cblxuICBhZGRGb3JtRmllbGQoaW5Db21wKSB7XG4gICAgaW5Db21wLnBDb25uJD8uYWRkRm9ybUZpZWxkKCk7XG4gIH1cblxuICByZW1vdmVGb3JtRmllbGQoaW5Db21wKSB7XG4gICAgaWYgKGluQ29tcC5wQ29ubiQ/LnJlbW92ZUZvcm1GaWVsZCkge1xuICAgICAgaW5Db21wLnBDb25uJD8ucmVtb3ZlRm9ybUZpZWxkKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dE5hbWUgPSBpbkNvbXAucENvbm4kLmdldENvbnRleHROYW1lKCk7XG4gICAgY29uc3QgcGFnZVJlZmVyZW5jZSA9IGluQ29tcC5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpO1xuICAgIGNvbnN0IHJhd0NvbmZpZyA9IGluQ29tcC5wQ29ubiQuX3Jhd0NvbmZpZztcbiAgICBjb25zdCBpbmRleCA9IGluQ29tcC5wQ29ubiQuaW5kZXg7XG5cbiAgICBpZiAoT2JqZWN0Lmhhc093bihyYXdDb25maWc/LmNvbmZpZyA/PyB7fSwgJ3ZhbHVlJykgJiYgaW5Db21wLnBDb25uJC5fdHlwZSAhPT0gJ0FkZHJlc3MnKSB7XG4gICAgICBQQ29yZS5nZXRDb250ZXh0VHJlZU1hbmFnZXIoKS5yZW1vdmVGaWVsZE5vZGUoXG4gICAgICAgIGNvbnRleHROYW1lLFxuICAgICAgICBwYWdlUmVmZXJlbmNlLFxuICAgICAgICBpbkNvbXAucENvbm4kLnZpZXdOYW1lIHx8ICcnLFxuICAgICAgICBpbkNvbXAucENvbm4kLl9nZXRQcm9wZXJ0eU5hbWUoKSxcbiAgICAgICAgaW5kZXggYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaW5Db21wLnBDb25uJC5fdHlwZSA9PT0gJ0FkZHJlc3MnICYmIHJhd0NvbmZpZz8uY29uZmlnPy5hc3NvY2lhdGVkVmlldykge1xuICAgICAgLy8gcmVtb3ZlIGFkZHJlc3Mgbm9kZSBhbmQgaXRzIGNoaWxkcmVuXG4gICAgICBQQ29yZS5nZXRDb250ZXh0VHJlZU1hbmFnZXIoKS5yZW1vdmVWaWV3Tm9kZShjb250ZXh0TmFtZSwgcGFnZVJlZmVyZW5jZSwgcmF3Q29uZmlnLmNvbmZpZy5hc3NvY2lhdGVkVmlldywgaW5kZXggYXMgbnVtYmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmVtb3ZlIHZpZXcgbm9kZSBhbmQgaXRzIGNoaWxkcmVuXG4gICAgICBjb25zdCBwYWdlUmVmID0gcmF3Q29uZmlnPy5jb25maWc/LmNvbnRleHQgPyBgJHtwYWdlUmVmZXJlbmNlfSR7cmF3Q29uZmlnPy5jb25maWcuY29udGV4dH1gIDogcGFnZVJlZmVyZW5jZTtcbiAgICAgIFBDb3JlLmdldENvbnRleHRUcmVlTWFuYWdlcigpLnJlbW92ZVZpZXdOb2RlKGNvbnRleHROYW1lLCBwYWdlUmVmLCByYXdDb25maWc/LmNvbmZpZz8ubmFtZSB8fCByYXdDb25maWc/LmNvbmZpZz8uaWQgfHwgJycsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fIGlzXG4gIC8vICB0aGUgc2FtZSBhcyB0aGUgaW5Db21wUHJvcHMgcGFzc2VkIGluLlxuICAvLyAgQXMgYSBzaWRlIGVmZmVjdCwgdXBkYXRlIHRoZSBjb21wb25lbnQncyBlbnRyeSBpbiBjb21wb25lbnRQcm9wc0FyclxuICAvLyAgTk9URTogSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBpbmNvbWluZyBjb21wb25lbnQgaGFzIHRoZSBmb2xsb3dpbmc6XG4gIC8vICAqIGEgYnJpZGdlQ29tcG9uZW50SUQgPHN0cmluZz4gcHJvcGVydHkgLSB1c2VkIGFzIGxvb2t1cCBrZXkgaW4gY29tcG9uZW50UHJvcHNBcnJcbiAgLy8gICogYSBwQ29ubiQgPD8+IHByb3BlcnR5IC0gdXNlZCB0byBhY2Nlc3MgZnVuY3Rpb25zIGFjY2Vzc2VkIGluIGdldENvbXBvbmVudFByb3BzXG4gIC8vIFJldHVybiB0cnVlOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSBkaWZmZXJlbnQgYW5kIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgLy8gUmV0dXJuIGZhbHNlOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSB0aGUgc2FtZSBhbmQgdGhlIGNvbXBvbmVudCBkb2Vzbid0IG5lZWQgdG8gdXBkYXRlIChyZS1yZW5kZXIpXG4gIC8vICBPbiBiYWQgaW5wdXQsIHJldHVybiBmYWxzZTtcbiAgLyoqXG4gICAqIFJldHVybnMgKip0cnVlKiogaWYgdGhlIGNvbXBvbmVudCdzIGVudHJ5IGluIF9fX2NvbXBvbmVudFByb3BzQXJyX19fIGlzXG4gICAqIHRoZSBzYW1lIGFzIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIGN1cnJlbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wb25lbnQgKF9fX2luQ29tcF9fXykgcGFzc2VkIGluLlxuICAgKiBBcyBhIHNpZGUgZWZmZWN0LCB0aGUgY29tcG9uZW50J3MgZW50cnkgaW4gX19fY29tcG9uZW50UHJvcHNBcnJfX18gaXMgdXBkYXRlZC5cbiAgICogKipOb3RlKio6IEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgaW5jb21pbmcgY29tcG9uZW50IGhhcyB0aGUgZm9sbG93aW5nOlxuICAgKiAoYSkgYSBicmlkZ2VDb21wb25lbnRJRCBfc3RyaW5nXyBwcm9wZXJ0eSB1c2VkIGFzIGxvb2t1cCBrZXkgaW4gX19fY29tcG9uZW50UHJvcHNBcnJfX19cbiAgICogYW5kIChiKSBhIF9fX3BDb25uJF9fXyBwcm9wZXJ0eSB1c2VkIHRvIGFjY2VzcyBmdW5jdGlvbnMgY2FsbGVkIGluIF9fX2dldENvbXBvbmVudFByb3BzX19fXG4gICAqXG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBhc2tpbmcgaWYgaXQgc2hvdWxkIHVwZGF0ZSBpdHNlbGZcbiAgICogQHJldHVybnMgUmV0dXJuICoqdHJ1ZSoqOiBtZWFucyB0aGUgY29tcG9uZW50IHByb3BzIGFyZSBkaWZmZXJlbnQgYW5kIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcikuXG4gICAqIFJldHVybiAqKmZhbHNlKio6IG1lYW5zIHRoZSBjb21wb25lbnQgcHJvcHMgYXJlIHRoZSBzYW1lIGFuZCB0aGUgY29tcG9uZW50IGRvZXNuJ3QgbmVlZCB0byB1cGRhdGUgKHJlLXJlbmRlcikuXG4gICAqIElmIHRoZSAqKippbkNvbXAqKiogaW5wdXQgaXMgYmFkLCBmYWxzZSBpcyBhbHNvIHJldHVybmVkLlxuICAgKi9cbiAgc2hvdWxkQ29tcG9uZW50VXBkYXRlKGluQ29tcCk6IGJvb2xlYW4ge1xuICAgIC8vIGNvbnN0IGJTaG93TG9nZ2luZyA9IGZhbHNlO1xuICAgIGxldCBiUmV0ID0gZmFsc2U7XG4gICAgLy8gY2hlY2sgZm9yIHJlYXNvbmFibGUgaW5wdXRcbiAgICBpZiAoVXRpbHMuaXNFbXB0eU9iamVjdChpbkNvbXApKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHNob3VsZENvbXBvbmVudFVwZGF0ZTogaW5Db21wOiAke0pTT04uc3RyaW5naWZ5KGluQ29tcCl9YCk7XG4gICAgICByZXR1cm4gYlJldDtcbiAgICB9XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wLnZhbGlkYXRlTWVzc2FnZSAmJiB1bmRlZmluZWQgPT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX0gZG9lcyBub3QgaGF2ZSBhIHZhbGlkYXRlTWVzc2FnZSBwcm9wZXJ0eS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wSUQgPSB0aGlzLmdldENvbXBvbmVudElEKGluQ29tcCk7XG5cbiAgICBjb25zdCBjdXJyZW50UHJvcHM6IGFueSA9IHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXTtcbiAgICBjb25zdCBjdXJyZW50UHJvcHNBc1N0cjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY3VycmVudFByb3BzKTtcblxuICAgIGNvbnN0IGluY29taW5nUHJvcHM6IGFueSA9IHRoaXMuZ2V0Q29tcG9uZW50UHJvcHMoaW5Db21wKTtcblxuICAgIC8vIGlmIGhhdmUgcGFnZU1lc3NhZ2VzLCBhbmQgaXQgaXMgYmxhbmssIHJlbW92ZSBpdC4gIFRoaXMgY2F1c2VzIGlzc3VlcyBvZiBtYWtpbmcgaXQgYXBwZWFyXG4gICAgLy8gdGhhdCBhIHdpbGwgY2F1c2UgYW4gdXBkYXRlLCB3aGVuIHRoZXJlIGlzIG5vIGNoYW5nZVxuICAgIGlmICh0aGlzLmlzUGFnZU1lc3NhZ2VzRW1wdHkoaW5jb21pbmdQcm9wcykpIHtcbiAgICAgIGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLnBhZ2VNZXNzYWdlcyA9IGluY29taW5nUHJvcHMucGFnZU1lc3NhZ2VzO1xuICAgICAgZGVsZXRlIGluY29taW5nUHJvcHMucGFnZU1lc3NhZ2VzO1xuICAgIH1cblxuICAgIGlmIChpbmNvbWluZ1Byb3BzLmh0dHBNZXNzYWdlcykge1xuICAgICAgaW5Db21wLmFuZ3VsYXJQQ29ubmVjdERhdGEuaHR0cE1lc3NhZ2VzID0gaW5jb21pbmdQcm9wcy5odHRwTWVzc2FnZXM7XG4gICAgICBpbmNvbWluZ1Byb3BzLmh0dHBNZXNzYWdlcyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBpbmNvbWluZ1Byb3BzQXNTdHI6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGluY29taW5nUHJvcHMpO1xuXG4gICAgYlJldCA9IGlzRXF1YWwgPyAhaXNFcXVhbChjdXJyZW50UHJvcHMsIGluY29taW5nUHJvcHMpIDogY3VycmVudFByb3BzQXNTdHIgIT0gaW5jb21pbmdQcm9wc0FzU3RyO1xuXG4gICAgLy8gQmVsb3cgcGllY2Ugb2YgY29kZSBpcyBuZWVkZWQgdG8gcmUtcmVuZGVyIHRoZSBjb21wb25lbnQgc2luY2Ugd2Ugd2FubmEgZXZhbHVhdGUgdGhlIFZpc2liaWxpdHkgZXhwcmVzc2lvbiB3aXRoaW4gVmlldyBjb21wb25lbnQgaW4gc3VjaCBjYXNlc1xuICAgIGlmIChpbkNvbXAucENvbm4kLm1ldGEuY29uZmlnLmNvbnRleHQ/Lmxlbmd0aCA+IDAgJiYgaW5Db21wLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCkubGVuZ3RoID4gJ2Nhc2VJbmZvLmNvbnRlbnQnLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTm93IHVwZGF0ZSB0aGUgZW50cnkgaW4gY29tcG9uZW50UHJvcHNBcnIgd2l0aCB0aGUgaW5jb21pbmcgdmFsdWUgc29cbiAgICAvLyAgd2UgY2FuIGNvbXBhcmUgYWdhaW5zdCB0aGF0IG5leHQgdGltZS4uLlxuICAgIHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXSA9IGluY29taW5nUHJvcHM7XG4gICAgY29uc3QgdmFsaWRhdGVtZXNzYWdlID0gaW5jb21pbmdQcm9wcy52YWxpZGF0ZW1lc3NhZ2UgPT09IHVuZGVmaW5lZCA/ICcnIDogdGhpcy51dGlscy5odG1sRGVjb2RlKGluY29taW5nUHJvcHMudmFsaWRhdGVtZXNzYWdlKTtcbiAgICAvLyBhbmQgdXBkYXRlIHRoZSBjb21wb25lbnQncyB2YWxpZGF0aW9uIG1lc3NhZ2UgKGlmIHVuZGVmaW5lZCwgaXQgc2hvdWxkIGJlIHNldCB0byBcIlwiKVxuICAgIGlmICh1bmRlZmluZWQgIT09IGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhKSB7XG4gICAgICBpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgPSB2YWxpZGF0ZW1lc3NhZ2U7XG5cbiAgICAgIGlmIChpbkNvbXAuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgICAgLy8gaWYgaGF2ZSBhIHZhbGlkYXRlIG1lc3NhZ2UsIHR1cm4gb2ZmIHNwaW5uZXJcbiAgICAgICAgY29uc3QgdGltZXIgPSBpbnRlcnZhbCgxMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuXG4gICAgICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IHNFcnJvck1lc3NhZ2UgPSBjdXJyZW50UHJvcHMgJiYgY3VycmVudFByb3BzLmxhYmVsID8gY3VycmVudFByb3BzLmxhYmVsLmNvbmNhdCgnIC0gJykgOiAnJztcbiAgICAgICAgc0Vycm9yTWVzc2FnZSA9IHNFcnJvck1lc3NhZ2UuY29uY2F0KGluQ29tcC5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSk7XG4gICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCd1cGRhdGUnLCBzRXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5Db21wLnZhbGlkYXRlTWVzc2FnZSA9IHZhbGlkYXRlbWVzc2FnZTtcbiAgICB9XG5cbiAgICBpZiAoYlJldCAmJiBjb21wSUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYlJldCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKCBgQW5ndWxhclBDb25uZWN0IGNvbXBvbmVudCAke2NvbXBJRH0gLSAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfSAtIHNob3VsZENvbXBvbmVudFVwZGF0ZTogJHtiUmV0fWApO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcm9wczogXCIgKyBjdXJyZW50UHJvcHNBc1N0cik7XG5cbiAgICBpZiAoYlJldCkge1xuICAgICAgLy8gY29uc29sZS5sb2coYCoqKiogY2hhbmdlIGZvcjogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcm9wczogXCIgKyBjdXJyZW50UHJvcHNBc1N0cik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcImluY29taW5nIHByb3BzOiBcIiArIGluY29taW5nUHJvcHNBc1N0cik7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgICAgICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiBzaG91bGRDb21wb25lbnRVcGRhdGUgcmV0dXJuaW5nOiAke2JSZXR9LCBjb21wSWQ6ICR7Y29tcElEfWAgKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCBgICAgIFVwZGF0aW5nIHdpdGggY29tcG9uZW50UHJvcHMgZm9yICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiAke0pTT04uc3RyaW5naWZ5KHRoaXMuY29tcG9uZW50UHJvcHNBcnJbY29tcElEXSl9YCk7XG4gICAgICAvLyBjb25zb2xlLmxvZyggYCAgICAgICAgICBhbmQgdmFsaWRhdGVNZXNzYWdlOiAke2luQ29tcC52YWxpZGF0ZU1lc3NhZ2V9YCk7XG4gICAgfVxuICAgIC8vIGVsc2UgaWYgKGluQ29tcC5jb25zdHJ1Y3Rvci5uYW1lLmluZGV4T2YoXCJWaWV3XCIpID49IDAgfHwgaW5Db21wLmNvbnN0cnVjdG9yLm5hbWUuaW5kZXhPZihcIlJvb3RcIikgPj0gMCkge1xuICAgIC8vICAgY29uc29sZS5sb2coXCJubyBjaGFuZ2VcIik7XG4gICAgLy8gICBjb25zb2xlLmxvZyhcImN1cnJlbnQgcHJvcHM6IFwiICsgY3VycmVudFByb3BzQXNTdHIpO1xuICAgIC8vICAgY29uc29sZS5sb2coXCJpbmNvbWluZyBwcm9wczogXCIgKyBpbmNvbWluZ1Byb3BzQXNTdHIpO1xuICAgIC8vICAgY29uc29sZS5sb2coYCAgICAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogc2hvdWxkQ29tcG9uZW50VXBkYXRlIHJldHVybmluZzogJHtiUmV0fSwgY29tcElkOiAke2NvbXBJRH1gICk7XG5cbiAgICAvLyB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgICAgICR7aW5Db21wLmNvbnN0cnVjdG9yLm5hbWV9OiBzaG91bGRDb21wb25lbnRVcGRhdGUgcmV0dXJuaW5nOiAke2JSZXR9YCk7XG5cbiAgICByZXR1cm4gYlJldDtcbiAgfVxuXG4gIGlzUGFnZU1lc3NhZ2VzRW1wdHkoaW5jb21pbmdQcm9wcykge1xuICAgIHJldHVybiBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcyAmJiBpbmNvbWluZ1Byb3BzLnBhZ2VNZXNzYWdlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogQ2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGVuY291bnRlcmVkIGEgY2hhbmdlIGV2ZW50XG4gICAqIEBwYXJhbSBpbkNvbXAgVGhlIGNvbXBvbmVudCBjYWxsaW5nIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudFxuICAgKi9cbiAgY2hhbmdlSGFuZGxlcihpbkNvbXAsIGV2ZW50KSB7XG4gICAgY29uc3QgYkxvZ2dpbmcgPSBmYWxzZTtcbiAgICBpZiAoYkxvZ2dpbmcpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBBbmd1bGFyUENvbm5lY3QuY2hhbmdlSGFuZGxlcmApO1xuICAgIH1cbiAgICAvLyBjaGVjayBmb3IgcmVhc29uYWJsZSBpbnB1dFxuICAgIGlmICh1bmRlZmluZWQgPT09IGluQ29tcCB8fCBVdGlscy5pc0VtcHR5T2JqZWN0KGluQ29tcCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFuZ3VsYXJQQ29ubmVjdDogYmFkIGNhbGwgdG8gY2hhbmdlSGFuZGxlcjogaW5Db21wOiAke0pTT04uc3RyaW5naWZ5KGluQ29tcCl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcENvbm5lY3QgPSBpbkNvbXAucENvbm4kO1xuICAgIGlmICh1bmRlZmluZWQgPT09IHBDb25uZWN0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBBbmd1bGFyUENvbm5lY3Q6IGJhZCBjYWxsIHRvIGNoYW5nZUhhbmRsZXI6IGluQ29tcC5wQ29ubiQ6ICR7cENvbm5lY3R9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgb3V0IGVycm9yc1xuICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdkaXNtaXNzJywgJycpO1xuXG4gICAgcENvbm5lY3QuZ2V0QWN0aW9uc0FwaSgpLmNoYW5nZUhhbmRsZXIocENvbm5lY3QsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW4gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgZW5jb3VudGVyZWQgYW4gZXZlbnQgKHN1Y2ggYXMgYmx1cilcbiAgICogQHBhcmFtIGluQ29tcCBUaGUgY29tcG9uZW50IGNhbGxpbmcgdGhlIGV2ZW50XG4gICAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnRcbiAgICovXG4gIGV2ZW50SGFuZGxlcihpbkNvbXAsIGV2ZW50KSB7XG4gICAgY29uc3QgYkxvZ2dpbmcgPSBmYWxzZTtcbiAgICBpZiAoYkxvZ2dpbmcpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBBbmd1bGFyUENvbm5lY3QuZXZlbnRIYW5kbGVyYCk7XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciByZWFzb25hYmxlIGlucHV0XG4gICAgaWYgKHVuZGVmaW5lZCA9PT0gaW5Db21wIHx8IFV0aWxzLmlzRW1wdHlPYmplY3QoaW5Db21wKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBldmVudEhhbmRsZXI6IGluQ29tcDogJHtKU09OLnN0cmluZ2lmeShpbkNvbXApfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBDb25uZWN0ID0gaW5Db21wLnBDb25uJDtcbiAgICBpZiAodW5kZWZpbmVkID09PSBwQ29ubmVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBldmVudEhhbmRsZXI6IGluQ29tcC5wQ29ubiQ6ICR7cENvbm5lY3R9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcENvbm5lY3QuZ2V0QWN0aW9uc0FwaSgpLmV2ZW50SGFuZGxlcihwQ29ubmVjdCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIEEgaGFuZGxlIHRvIHRoZSBhcHBsaWNhdGlvbidzIHN0b3JlXG4gICAqL1xuICBnZXRTdG9yZSgpIHtcbiAgICBpZiAodGhpcy50aGVTdG9yZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy50aGVTdG9yZSA9IFBDb3JlLmdldFN0b3JlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRoZVN0b3JlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBiTG9nTXNnIElmIHRydWUsIHdpbGwgd3JpdGUgdGhlIHN0cmluZ2lmaWVkIHN0YXRlIHRvIHRoZSBzdG9yZSBmb3IgZGVidWdnaW5nL2luc3BlY3Rpb25cbiAgICogQHBhcmFtIGluQ29tcCBJZiBzdXBwbGllZCwgdGhlIGNvbXBvbmVudCB0aGF0IGlzIHJlcXVlc3RpbmcgdGhlIHN0b3JlJ3Mgc3RhdGVcbiAgICogQHJldHVybnMgQSBoYW5kbGUgdG8gdGhlIF9fc3RhdGVfXyBvZiBhcHBsaWNhdGlvbidzIHN0b3JlXG4gICAqL1xuICBnZXRTdGF0ZShiTG9nTXNnOiBib29sZWFuID0gZmFsc2UsIGluQ29tcDogYW55ID0gbnVsbCkge1xuICAgIGNvbnN0IHRoZVN0YXRlOiBvYmplY3QgPSB0aGlzLmdldFN0b3JlKCkuZ2V0U3RhdGUoKTtcbiAgICBpZiAoYkxvZ01zZykge1xuICAgICAgY29uc3QgdGhlQ29tcE5hbWU6IHN0cmluZyA9IGluQ29tcCA/IGAke2luQ29tcC5jb25zdHJ1Y3Rvci5uYW1lfTogYCA6ICcnO1xuICAgICAgY29uc29sZS5sb2coYCR7dGhlQ29tcE5hbWV9IFN0b3JlIHN0YXRlOiAke0pTT04uc3RyaW5naWZ5KHRoZVN0YXRlKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoZVN0YXRlO1xuICB9XG5cbiAgLy8gcHJvY2Vzc0FjdGlvbnMgLSBjYXJyaWVkIG92ZXIgZnJvbSBQQ29ubmVjdEhPQyBpbml0aWFsaXplXG4gIC8qKlxuICAgKiAgcHJvY2Vzc0FjdGlvbnMgZXhwb3NlcyBhbGwgYWN0aW9ucyBpbiB0aGUgbWV0YWRhdGEuXG4gICAqICBBdHRhY2hlcyBjb21tb24gaGFuZGxlciAoZXZlbnRIYW5kbGVyKSBmb3IgYWxsIGFjdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NBY3Rpb25zKGluQ29tcCkge1xuICAgIGNvbnN0IHBDb25uZWN0ID0gaW5Db21wLnBDb25uJDtcbiAgICBpZiAodW5kZWZpbmVkID09PSBwQ29ubmVjdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgQW5ndWxhclBDb25uZWN0OiBiYWQgY2FsbCB0byBwcm9jZXNzQWN0aW9uczogcENvbm4kOiAke3BDb25uZWN0fSBmcm9tIGNvbXBvbmVudDogJHtpbkNvbXAuY29uc3RydWN0b3IubmFtZX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaW5Db21wLnBDb25uJC5pc0VkaXRhYmxlKCkpIHtcbiAgICAgIGluQ29tcC5wQ29ubiQuc2V0QWN0aW9uKCdvbkNoYW5nZScsIHRoaXMuY2hhbmdlSGFuZGxlci5iaW5kKHRoaXMpKTtcbiAgICAgIGluQ29tcC5wQ29ubiQuc2V0QWN0aW9uKCdvbkJsdXInLCB0aGlzLmV2ZW50SGFuZGxlci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -842,7 +842,18 @@ class AngularPConnectService {
|
|
|
842
842
|
let fnUnsubscribe;
|
|
843
843
|
// console.log( `Bridge subscribing: ${theCompName} `);
|
|
844
844
|
if (inComp) {
|
|
845
|
-
|
|
845
|
+
let bSubscribed = true;
|
|
846
|
+
const wrappedCallback = () => {
|
|
847
|
+
if (bSubscribed && inCallback) {
|
|
848
|
+
console.log('inCallback::', inComp);
|
|
849
|
+
inCallback();
|
|
850
|
+
}
|
|
851
|
+
};
|
|
852
|
+
const storeUnsubscribe = this.getStore().subscribe(wrappedCallback);
|
|
853
|
+
fnUnsubscribe = () => {
|
|
854
|
+
bSubscribed = false;
|
|
855
|
+
storeUnsubscribe();
|
|
856
|
+
};
|
|
846
857
|
}
|
|
847
858
|
return fnUnsubscribe;
|
|
848
859
|
}
|