@microsoft/windows-admin-center-sdk 2.154.1 → 2.165.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/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +150 -142
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +1 -1
- package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
- package/angular/esm2015/src/controls/data-table/data-table.component.js +133 -127
- package/angular/esm2015/src/controls/dialog/dialog.component.js +10 -4
- package/angular/esm2015/src/controls/dialog/dialog.service.js +6 -13
- package/angular/esm2015/src/service/connectivity-enforcer.js +5 -2
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +150 -142
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
- package/core/azure/azure-constants.d.ts +8 -0
- package/core/azure/azure-constants.js +8 -0
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-manager.d.ts +1 -0
- package/core/azure/azure-manager.js +7 -1
- package/core/azure/azure-manager.js.map +1 -1
- package/core/base/environment.d.ts +3 -0
- package/core/base/environment.js.map +1 -1
- package/core/base/msft-sme.mock.js +3 -0
- package/core/base/msft-sme.mock.js.map +1 -1
- package/core/base/utilities.d.ts +0 -3
- package/core/base/utilities.js +0 -34
- package/core/base/utilities.js.map +1 -1
- package/core/data/settings-manager.d.ts +3 -0
- package/core/data/settings-manager.js +14 -1
- package/core/data/settings-manager.js.map +1 -1
- package/core/dom/dom.d.ts +5 -0
- package/core/dom/dom.js +20 -0
- package/core/dom/dom.js.map +1 -1
- package/core/manifest/environment-modules.js +3 -0
- package/core/manifest/environment-modules.js.map +1 -1
- package/core/notification/client-notification-instance.d.ts +5 -2
- package/core/notification/client-notification-instance.js +9 -5
- package/core/notification/client-notification-instance.js.map +1 -1
- package/core/notification/client-notification.d.ts +4 -0
- package/core/notification/client-notification.js.map +1 -1
- package/core/notification/notification.d.ts +6 -1
- package/core/notification/notification.js +3 -1
- package/core/notification/notification.js.map +1 -1
- package/core/rpc/credssp/rpc-credssp-model.d.ts +4 -0
- package/core/rpc/credssp/rpc-credssp-model.js.map +1 -1
- package/core/rpc/dialog/rpc-dialog-client.js +11 -5
- package/core/rpc/dialog/rpc-dialog-client.js.map +1 -1
- package/core/rpc/rpc.d.ts +6 -6
- package/core/rpc/rpc.js +7 -7
- package/core/rpc/rpc.js.map +1 -1
- package/core/security/credssp-manager.d.ts +13 -6
- package/core/security/credssp-manager.js +37 -21
- package/core/security/credssp-manager.js.map +1 -1
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +2 -1
- package/core/shared/cluster-inventory/cluster-inventory-cache.js.map +1 -1
- package/e2e/assets/strings/cs-CZ/strings.json +1 -1
- package/e2e/assets/strings/de-DE/strings.json +1 -1
- package/e2e/assets/strings/es-ES/strings.json +1 -1
- package/e2e/assets/strings/fr-FR/strings.json +1 -1
- package/e2e/assets/strings/hu-HU/strings.json +1 -1
- package/e2e/assets/strings/it-IT/strings.json +1 -1
- package/e2e/assets/strings/ja-JP/strings.json +1 -1
- package/e2e/assets/strings/ko-KR/strings.json +1 -1
- package/e2e/assets/strings/nl-NL/strings.json +1 -1
- package/e2e/assets/strings/pl-PL/strings.json +1 -1
- package/e2e/assets/strings/pt-BR/strings.json +1 -1
- package/e2e/assets/strings/pt-PT/strings.json +1 -1
- package/e2e/assets/strings/ru-RU/strings.json +1 -1
- package/e2e/assets/strings/strings.json +1 -1
- package/e2e/assets/strings/sv-SE/strings.json +1 -1
- package/e2e/assets/strings/tr-TR/strings.json +1 -1
- package/e2e/assets/strings/zh-CN/strings.json +1 -1
- package/e2e/assets/strings/zh-TW/strings.json +1 -1
- package/package.json +7 -2
- package/angular/assets/strings/en-US/strings.json +0 -1
- package/core/assets/strings/en-US/strings.json +0 -1
- package/e2e/assets/strings/en-US/strings.json +0 -1
|
@@ -258,9 +258,15 @@ export class DialogComponent extends CoreBaseComponent {
|
|
|
258
258
|
*/
|
|
259
259
|
autoFocus() {
|
|
260
260
|
this.doAutoFocus = false;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
if (this.elementRef.nativeElement) {
|
|
262
|
+
// If the dialog has a loading wheel, focus first goes to the loading wheel then gets lost.
|
|
263
|
+
// TO avoid this, we get the parent element or native element of the dialog, then get the first
|
|
264
|
+
// focusable element in that element
|
|
265
|
+
const element = this.elementRef.nativeElement.parentElement || this.elementRef.nativeElement;
|
|
266
|
+
const firstFocusable = Dom.getFirstFocusableDescendent(element);
|
|
267
|
+
if (firstFocusable) {
|
|
268
|
+
firstFocusable.focus();
|
|
269
|
+
}
|
|
264
270
|
}
|
|
265
271
|
}
|
|
266
272
|
/**
|
|
@@ -397,4 +403,4 @@ __decorate([
|
|
|
397
403
|
type: HostListener,
|
|
398
404
|
args: ['document:keyup.escape']
|
|
399
405
|
}], autoFocus: [] }); })();
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUlSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7SUNWekQsaUNBRXNEO0lBRHBELDBNQUEwQjtJQUUxQiwwQkFBOEM7SUFDaEQsaUJBQVM7OztJQUZQLHdFQUFtRDtJQUR4Qiw4RUFBNkQ7OztJQWU1RiwrQkFBNkU7SUFBQSxZQUFhO0lBQUEsaUJBQU87OztJQUEvQywrQ0FBMEI7SUFBQyxlQUFhO0lBQWIsc0NBQWE7OztJQUMxRiwrQkFBeUY7SUFBQSxZQUFtQjtJQUFBLGlCQUFPOzs7SUFBM0QscURBQWdDO0lBQUMsZUFBbUI7SUFBbkIsNENBQW1COzs7O0lBdkI5Ryx1Q0FFc0Q7SUFGRix1T0FBcUQsRUFBRSxJQUFDO0lBRzFHLDhCQUU4RztJQUM1RyxxRkFJUztJQUNULDhCQUFtRDtJQUNqRCxrQkFBb0Q7SUFDdEQsaUJBQU07SUFDTiw4QkFDK007SUFDN00scUJBQXFEO0lBQ3ZELGlCQUFNO0lBQ04sOEJBQW1EO0lBQ2pELHFCQUFv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QUMsQ0FBQztZQUM3RixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztTQUNsRztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLFdBQVc7UUFDakIsT0FBTztZQUNILGFBQWEsRUFBRSxFQUFFO1lBQ2pCLG1CQUFtQixFQUFFLEVBQUU7U0FDMUIsQ0FBQztJQUNOLENBQUM7O0FBbE9EOztHQUVHO0FBQ1ksNEJBQVksR0FBRyxDQUFDLENBQUM7aUdBWHZCLGVBQWU7dUVBQWYsZUFBZTswR0FBZixhQUFTOzs7UUN0RnRCLG9GQXdCZTs7UUF4QkEsa0NBQWE7O0FEaU94QjtJQURDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Ozs7Z0RBT1g7dUZBakpRLGVBQWU7Y0FKM0IsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixXQUFXLEVBQUUseUJBQXlCO2FBQ3pDO29IQWdDbUIsMEJBQTBCO2tCQUF6QyxLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGFBQWE7a0JBQTVCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsZUFBZTtrQkFBOUIsS0FBSztZQVFjLFVBQVU7a0JBQTdCLEtBQUs7WUFlSyxVQUFVO2tCQURwQixLQUFLO1lBY1UsVUFBVTtrQkFBekIsS0FBSztZQUtVLFdBQVc7a0JBQTFCLEtBQUs7WUFvQ0MsT0FBTztrQkFEYixZQUFZO21CQUFDLHVCQUF1QjtZQTRCOUIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdDaGVja2VkLFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIFNpbXBsZUNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVib3VuY2UgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2Jhc2UvZGVjb3JhdG9ycy9kZWJvdW5jZS5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgRG9tIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kb20vZG9tJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICpcclxuICogQHNtZURvYyB7QGxhYmVsIERpYWxvZyBAaWQgc21lLWRpYWxvZ31cclxuICpcclxuICogQG92ZXJ2aWV3XHJcbiAqIEBmaWxlIHtAZmlsZXBhdGggLi9leGFtcGxlcy9kaWFsb2ctb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgQmFzaWMgVXNhZ2UgQGlkIGJhc2ljLXVzYWdlfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9kaWFsb2ctZXhhbXBsZS5jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGlhbG9nLWV4YW1wbGUuY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRGlhbG9nIENoYWluIEBpZCBkaWFsb2ctY2hhaW59XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50LnRzIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RpYWxvZy1leGFtcGxlLWRpYWxvZy1jaGFpbi5jb21wb25lbnQudHN9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGlhbG9nLWV4YW1wbGUtZGlhbG9nLWNoYWluLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEZ1bGwgU2NyZWVuIERpYWxvZyBAaWQgZnVsbC1zY3JlZW4tZGlhbG9nfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9kaWFsb2ctZXhhbXBsZS1mdWxsLXNjcmVlbi1kaWFsb2cuY29tcG9uZW50LnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RpYWxvZy1leGFtcGxlLWZ1bGwtc2NyZWVuLWRpYWxvZy5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtZGlhbG9nLWhlYWRlcicsXHJcbiAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9XCJzbWUtcGFkZGluZy1zcHJlYWQtaC1zbVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dIZWFkZXJDb21wb25lbnQge1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWRpYWxvZy1jb250ZW50JyxcclxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PidcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbnRlbnRDb21wb25lbnQge1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWRpYWxvZy1mb290ZXInLFxyXG4gICAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwic21lLWxheW91dC1mbG9hdC1yaWdodCBzbWUtcG9zaXRpb24tcmlnaHQtaW5saW5lIHNtZS1wYWRkaW5nLXNwcmVhZC1oLXNtIHNtZS1sYXlvdXQtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PmBcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0Zvb3RlckNvbXBvbmVudCB7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERpYWxvZ0Nsb3NlUmVhc29uIHtcclxuICAgIFNvZnREaXNtaXNzID0gMCxcclxuICAgIENsb3NlQnV0dG9uID0gMSxcclxuICAgIEVzY2FwZUtleSA9IDIsXHJcbiAgICBDb21wZXRpbmdEaWFsb2cgPSAzXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dNb2RlIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgcGFuZSA9ICdwYW5lJztcclxuICAgIHB1YmxpYyBzdGF0aWMgd2lkZVBhbmUgPSAnd2lkZS1wYW5lJztcclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFjdCA9ICdjb21wYWN0JztcclxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFjdFNxdWFyZSA9ICdjb21wYWN0LXNxdWFyZSc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGZ1bGxzY3JlZW4gPSAnZnVsbHNjcmVlbic7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNlbnRlcmVkID0gJ2NlbnRlcmVkJztcclxuICAgIHB1YmxpYyBzdGF0aWMgY2VudGVyZWRNZWRpdW0gPSAnY2VudGVyZWQtbWVkaXVtJztcclxuICAgIHB1YmxpYyBzdGF0aWMgY2VudGVyZWRMYXJnZSA9ICdjZW50ZXJlZC1sYXJnZSc7XHJcbiAgICBwdWJsaWMgc3RhdGljIG5vdGlmaWNhdGlvbiA9ICdub3RpZmljYXRpb24nO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgbW9kYWxEaWFsb2cgPSAnbW9kYWwnO1xyXG5leHBvcnQgY29uc3QgYWxlcnREaWFsb2cgPSAnYWxlcnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIENvcmVCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ0RpYWxvZ0NvbXBvbmVudCc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdGF0aWMgY29uc3RhbnQgdG8gcHJvdmlkZSB1bmlxdWUgaWRzIGZvciBlYWNoIG1hc3RlciB2aWV3XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIG5leHREaWFsb2dJZCA9IDA7XHJcbiAgICBwdWJsaWMgZGlhbG9nQ2xhc3Nlczogc3RyaW5nW107XHJcbiAgICBwdWJsaWMgZGlhbG9nUm9sZSA9ICdhbGVydGRpYWxvZyc7XHJcblxyXG4gICAgcHVibGljIHN0cmluZ3MgPSBNc2Z0U21lLmdldFN0cmluZ3M8U3RyaW5ncz4oKTtcclxuXHJcbiAgICBwdWJsaWMgZGlhbG9nTGV2ZWwgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBiYWcgb2YgaWRzIGdlbmVyYXRlZCB1c2luZyBAc2VlIHttYXN0ZXJWaWV3SWR9IGFuZCB0aGUgbWFwIHJldHVybmVkIGZyb20gQHNlZSB7Y3JlYXRlSWRCYWd9XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpZEJhZzogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVuaXF1ZSBpZCBvZiB0aGlzIG1hc3RlciB2aWV3LlxyXG4gICAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiBtYXN0ZXJWaWV3cyBuZWVkIHRvIHVzZSBhbiBJRCBidXQgbWF5IGFwcGVhciBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwYWdlLlxyXG4gICAgICogVXNpbmcgdGhpcyBJRCBhcyB0aGUgYmFzaXMgZm9yIHRoZSBjb250cm9scyBpbnRlcm5hbCBJRHMgZ2VuZXJhdGVkIGluIEBzZWUge2NyZWF0ZUlkQmFnfSBrZWVwcyB0aGUgSURzIHVuaXF1ZS5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGRpYWxvZ0lkOiBudW1iZXI7XHJcbiAgICBwcm90ZWN0ZWQgbW9kZTogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0JhY2tncm91bmRJbnRlcmFjdGlvbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dCYWNrZHJvcCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xpY2tCYWNrZHJvcCA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYUxhYmVsID0gJyc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXJpYURlc2NyaXB0aW9uID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHdoZXRoZXIgdGhpcyBzaG91bGQgYmUgYW4gYWN0aW9uIHBhbmUgb3IgYSBjZW50ZXJlZCBkaWFsb2dcclxuICAgICAqXHJcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgZGlhbG9nTW9kZSBpbnN0ZWFkXHJcbiAgICAgKiBAcGFyYW0gbmV3VmFsdWUgaWYgdHJ1ZSwgdXNlcyBhIGxlZnQgcGFuZSBkaWFsb2csIG90aGVyd2lzZSBhIGNlbnRlcmVkIGRpYWxvZ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGFjdGlvblBhbmUobmV3VmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAobmV3VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dNb2RlID0gRGlhbG9nTW9kZS5wYW5lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nTW9kZSA9IERpYWxvZ01vZGUuY2VudGVyZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldERpYWxvZ01vZGVGcm9tSW5wdXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGUgZGlhbG9nIG1vZGUgdG8gdXNlXHJcbiAgICAgKiBAc2VlIERpYWxvZ01vZGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgZGlhbG9nTW9kZShtb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZGlhbG9nTW9kZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGlhbG9nIHR5cGVzLiBNb3N0bHkgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eS4gVmFsaWQgdmFsdWVzOlxyXG4gICAgICogQHNlZSBtb2RhbERpYWxvZyA9ICdtb2RhbCc7XHJcbiAgICAgKiBAc2VlIGFsZXJ0RGlhbG9nID0gXCJhbGVydFwiO1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlhbG9nVHlwZSA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZGlhbG9nIHNob3VsZCBoYXZlIGEgY2xvc2UgYnV0dG9uIGluIHRvcCByaWdodCBvciBub3RcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGNsb3NlQnV0dG9uID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIGNsb3NlUmVxdWVzdGVkOiBTdWJqZWN0PERpYWxvZ0Nsb3NlUmVhc29uPjtcclxuXHJcbiAgICBwcml2YXRlIGRvQXV0b0ZvY3VzID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIGlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgcHVibGljIHNldCB2aXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHZpc2libGU7XHJcbiAgICAgICAgdGhpcy5kb0F1dG9Gb2N1cyA9IHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB2aXNpYmxlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGUgPSBEaWFsb2dNb2RlLnBhbmU7XHJcblxyXG4gICAgICAgIC8vIENyZWF0ZSBjbG9zZVJlcXVlc3RlZCBzdWJqZWN0IHRvIG5vdGlmeSBkaWFsb2dzIHdoZW4gYSBjbG9zZSBpcyByZXF1ZXN0ZWQgYW5kIGhvdyBpdCB3YXMgcmVxdWVzdGVkIChEaWFsb2dDbG9zZVJlYXNvbilcclxuICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkID0gbmV3IFN1YmplY3Q8RGlhbG9nQ2xvc2VSZWFzb24+KCk7XHJcbiAgICAgICAgdGhpcy5zZXREaWFsb2dNb2RlRnJvbUlucHV0KCk7XHJcblxyXG4gICAgICAgIC8vIHNldHVwIGRpYWxvZyBpZCBhbmQgaWRCYWdcclxuICAgICAgICB0aGlzLmRpYWxvZ0lkID0gRGlhbG9nQ29tcG9uZW50Lm5leHREaWFsb2dJZCsrO1xyXG4gICAgICAgIHRoaXMuaWRCYWcgPSB0aGlzLmNyZWF0ZUlkQmFnKCk7XHJcbiAgICAgICAgTXNmdFNtZS5mb3JFYWNoS2V5KHRoaXMuaWRCYWcsIChrZXkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pZEJhZ1trZXldID0gYGRpYWxvZy0ke3RoaXMuZGlhbG9nSWQudG9TdHJpbmcoKX0tJHtrZXl9YDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBkb2N1bWVudDprZXl1cC5lc2NhcGUgaXMgdXNlZCBzbyB0aGF0IGEgZGlhbG9nIGlzIG5vdCBjbG9zZWQgd2hlbiB0cnlpbmcgdG8gY2xvc2UgYSB0b29sdGlwXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cC5lc2NhcGUnKVxyXG4gICAgcHVibGljIG9uS2V5VXAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRXNjYXBlUHJlc3NlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFuZ3VsYXIgTGlmZSBDeWNsZSBob29rIGZvciBBZnRlciBWaWV3IENoZWNrZWQuXHJcbiAgICAgKiBXaGVuIHRoZSB2aXNpYmlsaXR5IGNoYW5nZXMsIHdlIGFyZSBnb2luZyB0byBmb2N1cyBvbiB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGhhcyB0aGUgYXV0b2ZvY3VzIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRvQXV0b0ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b0ZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGxldGVkIHRoZSBjbG9zZVJlcXVlc3RlZCBzdWJqZWN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdXRvIGZvY3VzIG9uIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyBmb2N1c2FibGVcclxuICAgICAqL1xyXG4gICAgQERlYm91bmNlKDApXHJcbiAgICBwdWJsaWMgYXV0b0ZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMuZG9BdXRvRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IERvbS5nZXRGaXJzdEZvY3VzYWJsZURlc2NlbmRlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChmaXJzdEZvY3VzYWJsZSkge1xyXG4gICAgICAgICAgICBmaXJzdEZvY3VzYWJsZS5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIHRoZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlcyB0aGUgZGlhbG9nLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vdGlmaWVzIGNsb3NlUmVxdWVzdGVkIHN1YnNjcmliZXJzIHRoYXQgdGhlIGJhY2tkcm9wIGhhcyBiZWVuIGNsaWNrZWQsIHJlcXVlc3RpbmcgYSBzb2Z0IGRpc21pc3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQmFja2dyb3VuZENsaWNrZWQoKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVJlcXVlc3RlZC5uZXh0KERpYWxvZ0Nsb3NlUmVhc29uLlNvZnREaXNtaXNzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vdGlmaWVzIGNsb3NlUmVxdWVzdGVkIHN1YnNjcmliZXJzIHRoYXQgdGhlIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLCByZXF1ZXN0aW5nIGEgY2xvc2UgYnV0dG9uIGRpc21pc3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ2xvc2VDbGlja2VkKCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VSZXF1ZXN0ZWQubmV4dChEaWFsb2dDbG9zZVJlYXNvbi5DbG9zZUJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRXNjYXBlUHJlc3NlZCgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkLm5leHQoRGlhbG9nQ2xvc2VSZWFzb24uRXNjYXBlS2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ01vZGVDaGFuZ2UgPSBjaGFuZ2VzWydkaWFsb2dNb2RlJ107XHJcbiAgICAgICAgaWYgKGRpYWxvZ01vZGVDaGFuZ2UgJiYgZGlhbG9nTW9kZUNoYW5nZS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREaWFsb2dNb2RlRnJvbUlucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXREaWFsb2dNb2RlRnJvbUlucHV0KCkge1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5kaWFsb2dNb2RlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBbJ3NtZS1sYXlvdXQtYWJzb2x1dGUnLCAnc21lLXNjaGVtZS1kaWFsb2cnLCAnc21lLWFuaW1hdGlvbi10cmFuc2l0aW9uLXdpZHRoLXhzJ107XHJcbiAgICAgICAgY29uc3QgY29tbW9uUGFuZUNsYXNzZXMgPSBbJ3NtZS1wb3NpdGlvbi12ZXJ0aWNhbC1ub25lJywgJ3NtZS1wb3NpdGlvbi1yaWdodC1ub25lJ107XHJcblxyXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gRGlhbG9nTW9kZS5wYW5lKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCguLi5jb21tb25QYW5lQ2xhc3NlcywgJ3NtZS1sYXlvdXQtZGlhbG9nLXBhbmUnLCAnc21lLXNoYWRvdy1hY3Rpb24tcGFuZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUud2lkZVBhbmUpIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNvbW1vblBhbmVDbGFzc2VzLCAnc21lLWxheW91dC1kaWFsb2ctd2lkZS1wYW5lJywgJ3NtZS1zaGFkb3ctYWN0aW9uLXBhbmUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLmNvbXBhY3QpIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNvbW1vblBhbmVDbGFzc2VzLCAnc21lLWxheW91dC1kaWFsb2ctY29tcGFjdCcsICdzbWUtc2hhZG93LWFjdGlvbi1wYW5lJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWx1ZSA9PT0gRGlhbG9nTW9kZS5jb21wYWN0U3F1YXJlKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc21lLXBvc2l0aW9uLWNlbnRlciBzbWUtbGF5b3V0LWRpYWxvZy1jZW50ZXJlZCBzbWUtbGF5b3V0LWRpYWxvZy1jb21wYWN0LXNxdWFyZScsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuZnVsbHNjcmVlbikge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uY29tbW9uUGFuZUNsYXNzZXMsICdzbWUtbGF5b3V0LWRpYWxvZy1mdWxsc2NyZWVuJywgJ3NtZS1zaGFkb3ctYWN0aW9uLXBhbmUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLmNlbnRlcmVkKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc21lLXBvc2l0aW9uLWNlbnRlciBzbWUtbGF5b3V0LWRpYWxvZy1jZW50ZXJlZCcsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuY2VudGVyZWRNZWRpdW0pIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzbWUtcG9zaXRpb24tY2VudGVyIHNtZS1sYXlvdXQtZGlhbG9nLWNlbnRlcmVkLW1lZGl1bScsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuY2VudGVyZWRMYXJnZSkge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NtZS1wb3NpdGlvbi1jZW50ZXIgc21lLWxheW91dC1kaWFsb2ctY2VudGVyZWQtbGFyZ2UnLCAnc21lLXNoYWRvdy1kaWFsb2cnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLm5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NtZS1wb3NpdGlvbi10b3Atc20gc21lLXBvc2l0aW9uLXJpZ2h0LXNtIHNtZS1sYXlvdXQtZGlhbG9nLW5vdGlmaWNhdGlvbicsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8nKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dDbGFzc2VzID0gY2xhc3NlcztcclxuXHJcbiAgICAgICAgLy8gYWNjZXNzaWJpbGl0eVxyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1R5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSb2xlID0gdGhpcy5kaWFsb2dUeXBlID09PSBtb2RhbERpYWxvZyA/ICdkaWFsb2cnIDogJ2FsZXJ0ZGlhbG9nJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBieSBkZWZhdWx0IGNlbnRlcmVkIGRpYWxvZ3MgYXJlIGNvbnNpZGVyZWQgYXMgYWxlcnRzXHJcbiAgICAgICAgICAgIGNvbnN0IGFsZXJ0TW9kZXMgPSBbRGlhbG9nTW9kZS5jZW50ZXJlZCwgRGlhbG9nTW9kZS5jZW50ZXJlZExhcmdlLCBEaWFsb2dNb2RlLmNvbXBhY3RTcXVhcmVdO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JvbGUgPSBhbGVydE1vZGVzLnNvbWUobW9kZSA9PiB0aGlzLmRpYWxvZ01vZGUgPT09IG1vZGUpID8gJ2FsZXJ0ZGlhbG9nJyA6ICdkaWFsb2cnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYXJpYUxhYmVsU3BhbjogJycsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmlwdGlvblNwYW46ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWJhY2tkcm9wICpuZ0lmPVwidmlzaWJsZVwiIFtsZXZlbF09XCJkaWFsb2dMZXZlbFwiIChjbGlja2VkKT1cIiEhY2xpY2tCYWNrZHJvcCA/IG9uQmFja2dyb3VuZENsaWNrZWQoKSA6ICcnXCJcclxuICBbc2hvd0JhY2tkcm9wXT1cInNob3dCYWNrZHJvcFwiIFthbGxvd0JhY2tncm91bmRJbnRlcmFjdGlvbl09XCJhbGxvd0JhY2tncm91bmRJbnRlcmFjdGlvblwiXHJcbiAgY2xhc3M9XCJzbWUtbGF5b3V0LWFic29sdXRlIHNtZS1wb3NpdGlvbi1pbnNldC1ub25lXCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJkaWFsb2dDbGFzc2VzXCIgW2F0dHIucm9sZV09XCJkaWFsb2dSb2xlXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIXZpc2libGVcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbCA/IGlkQmFnLmFyaWFMYWJlbFNwYW4gOidzbWUtZGlhbG9nLXRpdGxlJ1wiXHJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmlwdGlvbiA/IGlkQmFnLmFyaWFEZXNjcmlwdGlvblNwYW4gOiAnc21lLWRpYWxvZy1kZXNjJ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwiY2xvc2VCdXR0b25cIiBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWRpYWxvZy1jbG9zZS1idXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwib25DbG9zZUNsaWNrZWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2VcIlxyXG4gICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2VcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1jYW5jZWxcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1mb2N1cy16b25lXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1kaWFsb2ctaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwic21lLWxheW91dC1yZWxhdGl2ZSBzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1wYWRkaW5nLWhvcml6b250YWwtbGcgc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtZm9jdXMtem9uZSBzbWUtbGF5b3V0LXJlc3BvbnNpdmUtem9uZS14cyBzbWUtZGlhbG9nLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtZGlhbG9nLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1mb2N1cy16b25lXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1kaWFsb2ctZm9vdGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gKm5nSWY9XCJhcmlhTGFiZWxcIiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCIgW2lkXT1cImlkQmFnLmFyaWFMYWJlbFNwYW5cIj57e2FyaWFMYWJlbH19PC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwiYXJpYURlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiIFtpZF09XCJpZEJhZy5hcmlhRGVzY3JpcHRpb25TcGFuXCI+e3thcmlhRGVzY3JpcHRpb259fTwvc3Bhbj5cclxuPC9zbWUtYmFja2Ryb3A+XHJcbiJdfQ==
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUlSLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7SUNWekQsaUNBRXNEO0lBRHBELDBNQUEwQjtJQUUxQiwwQkFBOEM7SUFDaEQsaUJBQVM7OztJQUZQLHdFQUFtRDtJQUR4Qiw4RUFBNkQ7OztJQWU1RiwrQkFBNkU7SUFBQSxZQUFhO0lBQUEsaUJBQU87OztJQUEvQywrQ0FBMEI7SUFBQyxlQUFhO0lBQWIsc0NBQWE7OztJQUMxRiwrQkFBeUY7SUFBQSxZQUFtQjtJQUFBLGlCQUFPOzs7SUFBM0QscURBQWdDO0lBQUMsZUFBbUI7SUFBbkIsNENBQW1COzs7O0lBdkI5Ryx1Q0FFc0Q7SUFGRix1T0FBcUQsRUFBRSxJQUFDO0lBRzFHLDhCQUU4RztJQUM1RyxxRkFJUztJQUNULDhCQUFtRDtJQUNqRCxrQkFBb0Q7SUFDdEQsaUJBQU07SUFDTiw4QkFDK007SUFDN00scUJBQXFEO0lBQ3ZELGlCQUFNO0lBQ04sOEJBQW1EO0lBQ2pELHFCQUFv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Q29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVib3VuY2UuZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IERvbSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZG9tL2RvbSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgQ29yZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21tb24vYmFzZS5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBzbWVEb2Mge0BsYWJlbCBEaWFsb2cgQGlkIHNtZS1kaWFsb2d9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvZGlhbG9nLW92ZXJ2aWV3Lm1kfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIEJhc2ljIFVzYWdlIEBpZCBiYXNpYy11c2FnZX1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGlhbG9nLWV4YW1wbGUuY29tcG9uZW50LnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RpYWxvZy1leGFtcGxlLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIERpYWxvZyBDaGFpbiBAaWQgZGlhbG9nLWNoYWlufVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC50cyBAZmlsZXBhdGggLi9leGFtcGxlcy9kaWFsb2ctZXhhbXBsZS1kaWFsb2ctY2hhaW4uY29tcG9uZW50LnRzfVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGNvbXBvbmVudC5odG1sIEBmaWxlcGF0aCAuL2V4YW1wbGVzL2RpYWxvZy1leGFtcGxlLWRpYWxvZy1jaGFpbi5jb21wb25lbnQuaHRtbH1cclxuICpcclxuICogQGV4YW1wbGUge0BsYWJlbCBGdWxsIFNjcmVlbiBEaWFsb2cgQGlkIGZ1bGwtc2NyZWVuLWRpYWxvZ31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQudHMgQGZpbGVwYXRoIC4vZXhhbXBsZXMvZGlhbG9nLWV4YW1wbGUtZnVsbC1zY3JlZW4tZGlhbG9nLmNvbXBvbmVudC50c31cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9kaWFsb2ctZXhhbXBsZS1mdWxsLXNjcmVlbi1kaWFsb2cuY29tcG9uZW50Lmh0bWx9XHJcbiAqXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLWRpYWxvZy1oZWFkZXInLFxyXG4gICAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwic21lLXBhZGRpbmctc3ByZWFkLWgtc21cIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlhbG9nSGVhZGVyQ29tcG9uZW50IHtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1kaWFsb2ctY29udGVudCcsXHJcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb250ZW50Q29tcG9uZW50IHtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1kaWFsb2ctZm9vdGVyJyxcclxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInNtZS1sYXlvdXQtZmxvYXQtcmlnaHQgc21lLXBvc2l0aW9uLXJpZ2h0LWlubGluZSBzbWUtcGFkZGluZy1zcHJlYWQtaC1zbSBzbWUtbGF5b3V0LWRpYWxvZy1mb290ZXJcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dGb290ZXJDb21wb25lbnQge1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBEaWFsb2dDbG9zZVJlYXNvbiB7XHJcbiAgICBTb2Z0RGlzbWlzcyA9IDAsXHJcbiAgICBDbG9zZUJ1dHRvbiA9IDEsXHJcbiAgICBFc2NhcGVLZXkgPSAyLFxyXG4gICAgQ29tcGV0aW5nRGlhbG9nID0gM1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kZSB7XHJcbiAgICBwdWJsaWMgc3RhdGljIHBhbmUgPSAncGFuZSc7XHJcbiAgICBwdWJsaWMgc3RhdGljIHdpZGVQYW5lID0gJ3dpZGUtcGFuZSc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhY3QgPSAnY29tcGFjdCc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhY3RTcXVhcmUgPSAnY29tcGFjdC1zcXVhcmUnO1xyXG4gICAgcHVibGljIHN0YXRpYyBmdWxsc2NyZWVuID0gJ2Z1bGxzY3JlZW4nO1xyXG4gICAgcHVibGljIHN0YXRpYyBjZW50ZXJlZCA9ICdjZW50ZXJlZCc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNlbnRlcmVkTWVkaXVtID0gJ2NlbnRlcmVkLW1lZGl1bSc7XHJcbiAgICBwdWJsaWMgc3RhdGljIGNlbnRlcmVkTGFyZ2UgPSAnY2VudGVyZWQtbGFyZ2UnO1xyXG4gICAgcHVibGljIHN0YXRpYyBub3RpZmljYXRpb24gPSAnbm90aWZpY2F0aW9uJztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG1vZGFsRGlhbG9nID0gJ21vZGFsJztcclxuZXhwb3J0IGNvbnN0IGFsZXJ0RGlhbG9nID0gJ2FsZXJ0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2cuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdEaWFsb2dDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RhdGljIGNvbnN0YW50IHRvIHByb3ZpZGUgdW5pcXVlIGlkcyBmb3IgZWFjaCBtYXN0ZXIgdmlld1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBuZXh0RGlhbG9nSWQgPSAwO1xyXG4gICAgcHVibGljIGRpYWxvZ0NsYXNzZXM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIGRpYWxvZ1JvbGUgPSAnYWxlcnRkaWFsb2cnO1xyXG5cclxuICAgIHB1YmxpYyBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcblxyXG4gICAgcHVibGljIGRpYWxvZ0xldmVsID0gMTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgYmFnIG9mIGlkcyBnZW5lcmF0ZWQgdXNpbmcgQHNlZSB7bWFzdGVyVmlld0lkfSBhbmQgdGhlIG1hcCByZXR1cm5lZCBmcm9tIEBzZWUge2NyZWF0ZUlkQmFnfVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaWRCYWc6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz47XHJcbiAgICAvKipcclxuICAgICAqIFRoZSB1bmlxdWUgaWQgb2YgdGhpcyBtYXN0ZXIgdmlldy5cclxuICAgICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gbWFzdGVyVmlld3MgbmVlZCB0byB1c2UgYW4gSUQgYnV0IG1heSBhcHBlYXIgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgcGFnZS5cclxuICAgICAqIFVzaW5nIHRoaXMgSUQgYXMgdGhlIGJhc2lzIGZvciB0aGUgY29udHJvbHMgaW50ZXJuYWwgSURzIGdlbmVyYXRlZCBpbiBAc2VlIHtjcmVhdGVJZEJhZ30ga2VlcHMgdGhlIElEcyB1bmlxdWUuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBkaWFsb2dJZDogbnVtYmVyO1xyXG4gICAgcHJvdGVjdGVkIG1vZGU6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYWxsb3dCYWNrZ3JvdW5kSW50ZXJhY3Rpb24gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93QmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNsaWNrQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGFyaWFMYWJlbCA9ICcnO1xyXG4gICAgQElucHV0KCkgcHVibGljIGFyaWFEZXNjcmlwdGlvbiA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB3aGV0aGVyIHRoaXMgc2hvdWxkIGJlIGFuIGFjdGlvbiBwYW5lIG9yIGEgY2VudGVyZWQgZGlhbG9nXHJcbiAgICAgKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGRpYWxvZ01vZGUgaW5zdGVhZFxyXG4gICAgICogQHBhcmFtIG5ld1ZhbHVlIGlmIHRydWUsIHVzZXMgYSBsZWZ0IHBhbmUgZGlhbG9nLCBvdGhlcndpc2UgYSBjZW50ZXJlZCBkaWFsb2dcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHNldCBhY3Rpb25QYW5lKG5ld1ZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKG5ld1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nTW9kZSA9IERpYWxvZ01vZGUucGFuZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ01vZGUgPSBEaWFsb2dNb2RlLmNlbnRlcmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXREaWFsb2dNb2RlRnJvbUlucHV0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIGRpYWxvZyBtb2RlIHRvIHVzZVxyXG4gICAgICogQHNlZSBEaWFsb2dNb2RlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGRpYWxvZ01vZGUobW9kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGRpYWxvZ01vZGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpYWxvZyB0eXBlcy4gTW9zdGx5IHVzZWQgZm9yIGFjY2Vzc2liaWxpdHkuIFZhbGlkIHZhbHVlczpcclxuICAgICAqIEBzZWUgbW9kYWxEaWFsb2cgPSAnbW9kYWwnO1xyXG4gICAgICogQHNlZSBhbGVydERpYWxvZyA9IFwiYWxlcnRcIjtcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGRpYWxvZ1R5cGUgPSAnJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRpYWxvZyBzaG91bGQgaGF2ZSBhIGNsb3NlIGJ1dHRvbiBpbiB0b3AgcmlnaHQgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZUJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZDogU3ViamVjdDxEaWFsb2dDbG9zZVJlYXNvbj47XHJcblxyXG4gICAgcHJpdmF0ZSBkb0F1dG9Gb2N1cyA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSB2aXNpYmxlO1xyXG4gICAgICAgIHRoaXMuZG9BdXRvRm9jdXMgPSB2aXNpYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdmlzaWJsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RlID0gRGlhbG9nTW9kZS5wYW5lO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgY2xvc2VSZXF1ZXN0ZWQgc3ViamVjdCB0byBub3RpZnkgZGlhbG9ncyB3aGVuIGEgY2xvc2UgaXMgcmVxdWVzdGVkIGFuZCBob3cgaXQgd2FzIHJlcXVlc3RlZCAoRGlhbG9nQ2xvc2VSZWFzb24pXHJcbiAgICAgICAgdGhpcy5jbG9zZVJlcXVlc3RlZCA9IG5ldyBTdWJqZWN0PERpYWxvZ0Nsb3NlUmVhc29uPigpO1xyXG4gICAgICAgIHRoaXMuc2V0RGlhbG9nTW9kZUZyb21JbnB1dCgpO1xyXG5cclxuICAgICAgICAvLyBzZXR1cCBkaWFsb2cgaWQgYW5kIGlkQmFnXHJcbiAgICAgICAgdGhpcy5kaWFsb2dJZCA9IERpYWxvZ0NvbXBvbmVudC5uZXh0RGlhbG9nSWQrKztcclxuICAgICAgICB0aGlzLmlkQmFnID0gdGhpcy5jcmVhdGVJZEJhZygpO1xyXG4gICAgICAgIE1zZnRTbWUuZm9yRWFjaEtleSh0aGlzLmlkQmFnLCAoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaWRCYWdba2V5XSA9IGBkaWFsb2ctJHt0aGlzLmRpYWxvZ0lkLnRvU3RyaW5nKCl9LSR7a2V5fWA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZG9jdW1lbnQ6a2V5dXAuZXNjYXBlIGlzIHVzZWQgc28gdGhhdCBhIGRpYWxvZyBpcyBub3QgY2xvc2VkIHdoZW4gdHJ5aW5nIHRvIGNsb3NlIGEgdG9vbHRpcFxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJylcclxuICAgIHB1YmxpYyBvbktleVVwKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVzY2FwZVByZXNzZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmd1bGFyIExpZmUgQ3ljbGUgaG9vayBmb3IgQWZ0ZXIgVmlldyBDaGVja2VkLlxyXG4gICAgICogV2hlbiB0aGUgdmlzaWJpbGl0eSBjaGFuZ2VzLCB3ZSBhcmUgZ29pbmcgdG8gZm9jdXMgb24gdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBoYXMgdGhlIGF1dG9mb2N1cyBhdHRyaWJ1dGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgICAgICBpZiAodGhpcy5kb0F1dG9Gb2N1cykge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9Gb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbXBsZXRlZCB0aGUgY2xvc2VSZXF1ZXN0ZWQgc3ViamVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVJlcXVlc3RlZC5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXV0byBmb2N1cyBvbiBmaXJzdCBlbGVtZW50IHRoYXQgaXMgZm9jdXNhYmxlXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgwKVxyXG4gICAgcHVibGljIGF1dG9Gb2N1cygpIHtcclxuICAgICAgICB0aGlzLmRvQXV0b0ZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBkaWFsb2cgaGFzIGEgbG9hZGluZyB3aGVlbCwgZm9jdXMgZmlyc3QgZ29lcyB0byB0aGUgbG9hZGluZyB3aGVlbCB0aGVuIGdldHMgbG9zdC5cclxuICAgICAgICAgICAgLy8gVE8gYXZvaWQgdGhpcywgd2UgZ2V0IHRoZSBwYXJlbnQgZWxlbWVudCBvciBuYXRpdmUgZWxlbWVudCBvZiB0aGUgZGlhbG9nLCB0aGVuIGdldCB0aGUgZmlyc3RcclxuICAgICAgICAgICAgLy8gZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhhdCBlbGVtZW50XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50IHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZSA9IERvbS5nZXRGaXJzdEZvY3VzYWJsZURlc2NlbmRlbnQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGlmIChmaXJzdEZvY3VzYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgZmlyc3RGb2N1c2FibGUuZm9jdXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIHRoZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlcyB0aGUgZGlhbG9nLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGlkZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vdGlmaWVzIGNsb3NlUmVxdWVzdGVkIHN1YnNjcmliZXJzIHRoYXQgdGhlIGJhY2tkcm9wIGhhcyBiZWVuIGNsaWNrZWQsIHJlcXVlc3RpbmcgYSBzb2Z0IGRpc21pc3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQmFja2dyb3VuZENsaWNrZWQoKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVJlcXVlc3RlZC5uZXh0KERpYWxvZ0Nsb3NlUmVhc29uLlNvZnREaXNtaXNzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vdGlmaWVzIGNsb3NlUmVxdWVzdGVkIHN1YnNjcmliZXJzIHRoYXQgdGhlIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBwcmVzc2VkLCByZXF1ZXN0aW5nIGEgY2xvc2UgYnV0dG9uIGRpc21pc3NcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ2xvc2VDbGlja2VkKCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2VSZXF1ZXN0ZWQubmV4dChEaWFsb2dDbG9zZVJlYXNvbi5DbG9zZUJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRXNjYXBlUHJlc3NlZCgpIHtcclxuICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkLm5leHQoRGlhbG9nQ2xvc2VSZWFzb24uRXNjYXBlS2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ01vZGVDaGFuZ2UgPSBjaGFuZ2VzWydkaWFsb2dNb2RlJ107XHJcbiAgICAgICAgaWYgKGRpYWxvZ01vZGVDaGFuZ2UgJiYgZGlhbG9nTW9kZUNoYW5nZS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREaWFsb2dNb2RlRnJvbUlucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBzZXREaWFsb2dNb2RlRnJvbUlucHV0KCkge1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5kaWFsb2dNb2RlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xyXG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBbJ3NtZS1sYXlvdXQtYWJzb2x1dGUnLCAnc21lLXNjaGVtZS1kaWFsb2cnLCAnc21lLWFuaW1hdGlvbi10cmFuc2l0aW9uLXdpZHRoLXhzJ107XHJcbiAgICAgICAgY29uc3QgY29tbW9uUGFuZUNsYXNzZXMgPSBbJ3NtZS1wb3NpdGlvbi12ZXJ0aWNhbC1ub25lJywgJ3NtZS1wb3NpdGlvbi1yaWdodC1ub25lJ107XHJcblxyXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gRGlhbG9nTW9kZS5wYW5lKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCguLi5jb21tb25QYW5lQ2xhc3NlcywgJ3NtZS1sYXlvdXQtZGlhbG9nLXBhbmUnLCAnc21lLXNoYWRvdy1hY3Rpb24tcGFuZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUud2lkZVBhbmUpIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNvbW1vblBhbmVDbGFzc2VzLCAnc21lLWxheW91dC1kaWFsb2ctd2lkZS1wYW5lJywgJ3NtZS1zaGFkb3ctYWN0aW9uLXBhbmUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLmNvbXBhY3QpIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKC4uLmNvbW1vblBhbmVDbGFzc2VzLCAnc21lLWxheW91dC1kaWFsb2ctY29tcGFjdCcsICdzbWUtc2hhZG93LWFjdGlvbi1wYW5lJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWx1ZSA9PT0gRGlhbG9nTW9kZS5jb21wYWN0U3F1YXJlKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc21lLXBvc2l0aW9uLWNlbnRlciBzbWUtbGF5b3V0LWRpYWxvZy1jZW50ZXJlZCBzbWUtbGF5b3V0LWRpYWxvZy1jb21wYWN0LXNxdWFyZScsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuZnVsbHNjcmVlbikge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goLi4uY29tbW9uUGFuZUNsYXNzZXMsICdzbWUtbGF5b3V0LWRpYWxvZy1mdWxsc2NyZWVuJywgJ3NtZS1zaGFkb3ctYWN0aW9uLXBhbmUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLmNlbnRlcmVkKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc21lLXBvc2l0aW9uLWNlbnRlciBzbWUtbGF5b3V0LWRpYWxvZy1jZW50ZXJlZCcsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuY2VudGVyZWRNZWRpdW0pIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzbWUtcG9zaXRpb24tY2VudGVyIHNtZS1sYXlvdXQtZGlhbG9nLWNlbnRlcmVkLW1lZGl1bScsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgPT09IERpYWxvZ01vZGUuY2VudGVyZWRMYXJnZSkge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NtZS1wb3NpdGlvbi1jZW50ZXIgc21lLWxheW91dC1kaWFsb2ctY2VudGVyZWQtbGFyZ2UnLCAnc21lLXNoYWRvdy1kaWFsb2cnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09PSBEaWFsb2dNb2RlLm5vdGlmaWNhdGlvbikge1xyXG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NtZS1wb3NpdGlvbi10b3Atc20gc21lLXBvc2l0aW9uLXJpZ2h0LXNtIHNtZS1sYXlvdXQtZGlhbG9nLW5vdGlmaWNhdGlvbicsICdzbWUtc2hhZG93LWRpYWxvZycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdzbWUtYXJyYW5nZS1zdGFjay12IHNtZS1hcnJhbmdlLW92ZXJmbG93LWF1dG8nKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaWFsb2dDbGFzc2VzID0gY2xhc3NlcztcclxuXHJcbiAgICAgICAgLy8gYWNjZXNzaWJpbGl0eVxyXG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1R5cGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSb2xlID0gdGhpcy5kaWFsb2dUeXBlID09PSBtb2RhbERpYWxvZyA/ICdkaWFsb2cnIDogJ2FsZXJ0ZGlhbG9nJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBieSBkZWZhdWx0IGNlbnRlcmVkIGRpYWxvZ3MgYXJlIGNvbnNpZGVyZWQgYXMgYWxlcnRzXHJcbiAgICAgICAgICAgIGNvbnN0IGFsZXJ0TW9kZXMgPSBbRGlhbG9nTW9kZS5jZW50ZXJlZCwgRGlhbG9nTW9kZS5jZW50ZXJlZExhcmdlLCBEaWFsb2dNb2RlLmNvbXBhY3RTcXVhcmVdO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JvbGUgPSBhbGVydE1vZGVzLnNvbWUobW9kZSA9PiB0aGlzLmRpYWxvZ01vZGUgPT09IG1vZGUpID8gJ2FsZXJ0ZGlhbG9nJyA6ICdkaWFsb2cnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYXJpYUxhYmVsU3BhbjogJycsXHJcbiAgICAgICAgICAgIGFyaWFEZXNjcmlwdGlvblNwYW46ICcnXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8c21lLWJhY2tkcm9wICpuZ0lmPVwidmlzaWJsZVwiIFtsZXZlbF09XCJkaWFsb2dMZXZlbFwiIChjbGlja2VkKT1cIiEhY2xpY2tCYWNrZHJvcCA/IG9uQmFja2dyb3VuZENsaWNrZWQoKSA6ICcnXCJcclxuICBbc2hvd0JhY2tkcm9wXT1cInNob3dCYWNrZHJvcFwiIFthbGxvd0JhY2tncm91bmRJbnRlcmFjdGlvbl09XCJhbGxvd0JhY2tncm91bmRJbnRlcmFjdGlvblwiXHJcbiAgY2xhc3M9XCJzbWUtbGF5b3V0LWFic29sdXRlIHNtZS1wb3NpdGlvbi1pbnNldC1ub25lXCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJkaWFsb2dDbGFzc2VzXCIgW2F0dHIucm9sZV09XCJkaWFsb2dSb2xlXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIXZpc2libGVcIlxyXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbCA/IGlkQmFnLmFyaWFMYWJlbFNwYW4gOidzbWUtZGlhbG9nLXRpdGxlJ1wiXHJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmlwdGlvbiA/IGlkQmFnLmFyaWFEZXNjcmlwdGlvblNwYW4gOiAnc21lLWRpYWxvZy1kZXNjJ1wiIGFyaWEtbW9kYWw9XCJ0cnVlXCI+XHJcbiAgICA8YnV0dG9uICpuZ0lmPVwiY2xvc2VCdXR0b25cIiBjbGFzcz1cInNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWRpYWxvZy1jbG9zZS1idXR0b25cIlxyXG4gICAgICAoY2xpY2spPVwib25DbG9zZUNsaWNrZWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2VcIlxyXG4gICAgICBbdGl0bGVdPVwic3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb24uY2xvc2VcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1jYW5jZWxcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1mb2N1cy16b25lXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1kaWFsb2ctaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwic21lLWxheW91dC1yZWxhdGl2ZSBzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1wYWRkaW5nLWhvcml6b250YWwtbGcgc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by15IHNtZS1hcnJhbmdlLW92ZXJmbG93LWhpZGUteCBzbWUtZm9jdXMtem9uZSBzbWUtbGF5b3V0LXJlc3BvbnNpdmUtem9uZS14cyBzbWUtZGlhbG9nLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJzbWUtZGlhbG9nLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1mb2N1cy16b25lXCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNtZS1kaWFsb2ctZm9vdGVyXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPHNwYW4gKm5nSWY9XCJhcmlhTGFiZWxcIiBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCIgW2lkXT1cImlkQmFnLmFyaWFMYWJlbFNwYW5cIj57e2FyaWFMYWJlbH19PC9zcGFuPlxyXG4gIDxzcGFuICpuZ0lmPVwiYXJpYURlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbWUtc2NyZWVuLXJlYWRlclwiIFtpZF09XCJpZEJhZy5hcmlhRGVzY3JpcHRpb25TcGFuXCI+e3thcmlhRGVzY3JpcHRpb259fTwvc3Bhbj5cclxuPC9zbWUtYmFja2Ryb3A+XHJcbiJdfQ==
|
|
@@ -355,19 +355,12 @@ export class DialogService {
|
|
|
355
355
|
this.resumeFocus(id, 100);
|
|
356
356
|
}
|
|
357
357
|
else {
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
if (nextZoneElement) {
|
|
363
|
-
nextZoneElement.focus();
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
this.dialogOrigins[id].focus();
|
|
368
|
-
}
|
|
369
|
-
delete this.dialogOrigins[id];
|
|
358
|
+
const element = this.dialogOrigins[id];
|
|
359
|
+
const focusOn = Dom.getFocusOrigin(element);
|
|
360
|
+
if (focusOn) {
|
|
361
|
+
focusOn.focus();
|
|
370
362
|
}
|
|
363
|
+
delete this.dialogOrigins[id];
|
|
371
364
|
}
|
|
372
365
|
}, delay);
|
|
373
366
|
}
|
|
@@ -385,4 +378,4 @@ export class DialogService {
|
|
|
385
378
|
}, {
|
|
386
379
|
type: Optional
|
|
387
380
|
}] }]; }, null); })();
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDeEgsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUt0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBR3ZELE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDekIseURBQUksQ0FBQTtJQUNKLHlEQUFJLENBQUE7QUFDUixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQVFELE1BQU0sT0FBTyxhQUFhO0lBd0J0QixZQUFvQixVQUE2QixFQUFrQyxtQkFBbUM7UUFBbEcsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBa0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFnQjtRQXZCL0csY0FBUyxHQUFHO1lBQ2YsTUFBTSxFQUFFLDBCQUEwQjtZQUNsQyxZQUFZLEVBQUUsZ0NBQWdDO1lBQzlDLGdCQUFnQixFQUFFLHFDQUFxQztZQUN2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LENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZFLElBQUksZUFBZSxFQUFFO2dDQUNqQixlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7NkJBQzNCO3lCQUNKOzZCQUFNOzRCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7eUJBQ2xDO3dCQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDakM7aUJBQ0o7WUFFTCxDQUFDLEVBQ0QsS0FBSyxDQUFDLENBQUM7U0FDZDtJQUNMLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxRQUFnQixFQUFFLFdBQThCO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7OzZGQWhaUSxhQUFhLGlEQXdCbUYsYUFBYTt3RUF4QjdHLGFBQWEsV0FBYixhQUFhO3VGQUFiLGFBQWE7Y0FEekIsVUFBVTtzRUF5QmtHLGFBQWE7c0JBQWxFLFFBQVE7O3NCQUFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGVwcmVjYXRlZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlcHJlY2F0aW9uLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBOZXQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvbmV0JztcclxuaW1wb3J0IHsgRG9tIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kb20vZG9tJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRNb2R1bGVFbnRyeVBvaW50VHlwZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvbWFuaWZlc3QvZW52aXJvbm1lbnQtbW9kdWxlcyc7XHJcbmltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCB0YWtlTGFzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgQXBwQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dPcHRpb25zLCBEaWFsb2dSZXN1bHQgfSBmcm9tICcuL2Jhc2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob2ljZURpYWxvZ09wdGlvbnMsIENob2ljZURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vY2hvaWNlLWRpYWxvZy9jaG9pY2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnMsIENvbmZpcm1hdGlvbkRpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkxpc3REaWFsb2dPcHRpb25zLCBDb25maXJtYXRpb25MaXN0RGlhbG9nUmVzdWx0IH0gZnJvbSAnLi9jb25maXJtYXRpb24tbGlzdC1kaWFsb2cvY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVhc29uIH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZURpYWxvZ09wdGlvbnMgfSBmcm9tICcuL21lc3NhZ2UtZGlhbG9nL21lc3NhZ2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgZW51bSBEaWFsb2dDaGFuZ2VFdmVudCB7XHJcbiAgICBTaG93LFxyXG4gICAgSGlkZVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0V2ZW50IHtcclxuICAgIGRpYWxvZ0lkOiBzdHJpbmc7XHJcbiAgICBjaGFuZ2VFdmVudDogRGlhbG9nQ2hhbmdlRXZlbnQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG4gICAgcHVibGljIGNvbW1vbklkcyA9IHtcclxuICAgICAgICBjaG9pY2U6ICdzbWUtY29tbW9uLWNob2ljZS1kaWFsb2cnLFxyXG4gICAgICAgIGNvbmZpcm1hdGlvbjogJ3NtZS1jb21tb24tY29uZmlybWF0aW9uLWRpYWxvZycsXHJcbiAgICAgICAgY29uZmlybWF0aW9uTGlzdDogJ3NtZS1jb21tb24tY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nJyxcclxuICAgICAgICBtZXNzYWdlOiAnc21lLWNvbW1vbi1tZXNzYWdlLWRpYWxvZycsXHJcbiAgICAgICAgbm90aWZpY2F0aW9uc1BhbmU6ICdzbWUtY29tbW9uLW5vdGlmaWNhdGlvbnMtcGFuZScsXHJcbiAgICAgICAgc2V0dGluZ3M6ICdzbWUtY29tbW9uLXNldHRpbmdzLXBhbmUnLFxyXG4gICAgICAgIGhlbHA6ICdzbWUtY29tbW9uLWhlbHAtcGFuZScsXHJcbiAgICAgICAgdXNlclBhbmU6ICdzbWUtY29tbW9uLXVzZXItcGFuZScsXHJcbiAgICAgICAgbWFuYWdlQXM6ICdzbWUtY29tbW9uLW1hbmFnZS1hcy1kaWFsb2cnLFxyXG4gICAgICAgIHBvd2VyU2hlbGxTaG93U2NyaXB0OiAnc21lLWNvbW1vbi1wb3dlcnNoZWxsLXNob3ctc2NyaXB0JyxcclxuICAgICAgICBjcmVkU1NQQ29uZmlybWF0aW9uOiAnc21lLWNyZWRzc3AtY29uZmlybWF0aW9uLWRpYWxvZycsXHJcbiAgICAgICAgdXNlckFsaXZlOiAnc21lLXVzZXItYWxpdmUtZGlhbG9nJ1xyXG4gICAgfTtcclxuXHJcbiAgICBwdWJsaWMgYWN0aXZlRGlhbG9nc1N0YWNrOiBCYXNlRGlhbG9nQ29tcG9uZW50PERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdD5bXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgc3RyaW5ncyA9IE1zZnRTbWUuZ2V0U3RyaW5nczxTdHJpbmdzPigpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyO1xyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBCYXNlRGlhbG9nQ29tcG9uZW50PERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdD4gfSA9IHt9O1xyXG4gICAgcHJpdmF0ZSBhY3RpdmVEaWFsb2dSZXN1bHQ6IE9ic2VydmFibGU8RGlhbG9nUmVzdWx0PjtcclxuICAgIHByaXZhdGUgZGlhbG9nT3JpZ2luczogeyBbaW5kZXg6IHN0cmluZ106IEhUTUxFbGVtZW50IH0gPSB7fTtcclxuICAgIHByaXZhdGUgY2hhbmdlZEV2ZW50U3ViamVjdDogUmVwbGF5U3ViamVjdDxEaWFsb2dFdmVudD47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBDb250ZXh0OiBBcHBDb250ZXh0U2VydmljZSwgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnREaWFsb2dTZXJ2aWNlPzogRGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZEV2ZW50U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PERpYWxvZ0V2ZW50PigxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN1YmplY3Qgb2Ygbm90aWZpY2F0aW9uIGNoYW5nZWQgZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlZCgpOiBSZXBsYXlTdWJqZWN0PERpYWxvZ0V2ZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlZEV2ZW50U3ViamVjdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnREaWFsb2dMZXZlbCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayA/IHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLmxlbmd0aCArIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQgOiB0aGlzLmlGcmFtZURpYWxvZ0NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaUZyYW1lRGlhbG9nQ291bnQgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHRoZSBkaWFsb2cgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqXHJcbiAgICAgKiBUT3B0aW9ucyB0aGUgdHlwZSBvZiB0aGUgZGlhbG9nIG9wdGlvbnMuXHJcbiAgICAgKiBUUmVzdWx0IHRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgcmVzdWx0cy5cclxuICAgICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGRpYWxvZyBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcjxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+KFxyXG4gICAgICAgIGlkOiBzdHJpbmcsXHJcbiAgICAgICAgY29tcG9uZW50OiBCYXNlRGlhbG9nQ29tcG9uZW50PFRPcHRpb25zLCBUUmVzdWx0PlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NlcnZpY2UucmVnaXN0ZXI6IElEIGlzIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIGEgZGlhbG9nLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTZXJ2aWNlLnJlZ2lzdGVyOiBBIGRpYWxvZyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBhIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHJlbW92aW5nIHVudGlsIHdlIHVuZGVyc3RhbmQgY2FzZXMgd2hlcmUgYW5ndWxhciBjYW4gY2FsbCBuZ09uSW5pdCB0d2ljZS5cclxuICAgICAgICAgKiBzZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDI3MDAxMTYvYW5ndWxhcjItcm91dGluZy1pc3N1ZS1hbmQtbmdvbmluaXQtY2FsbGVkLXR3aWNlXHJcbiAgICAgICAgICogYW5kIEBtc2Z0LXNtZS9sb2NhbC11c2Vycy1ncm91cHMgZm9yIGV4YW1wbGVzXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuY29tcG9uZW50TWFwW2lkXSkge1xyXG4gICAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYERpYWxvZ1NlcnZpY2UucmVnaXN0ZXI6IEEgZGlhbG9nIHdpdGggdGhlIElEIFxcJyR7aWR9XFwnIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZGApO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRNYXBbaWRdID0gY29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5yZWdpc3RlcnMgdGhlIGRpYWxvZyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVucmVnaXN0ZXIoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudE1hcFtpZF0pIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29tcG9uZW50TWFwW2lkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayAmJiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5sZW5ndGggPiAwICYmIE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjaykuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkSUZyYW1lRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQrKztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlSUZyYW1lRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQgPSBNYXRoLm1heCh0aGlzLmlGcmFtZURpYWxvZ0NvdW50IC0gMSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIFRPcHRpb25zIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIFRSZXN1bHQgVGhlIHJlc3VsdCBvZiB0aGUgZGlhbG9nLlxyXG4gICAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZGlhbG9nLlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdzxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+KGlkOiBzdHJpbmcsIG9wdGlvbnM6IFRPcHRpb25zKTogT2JzZXJ2YWJsZTxUUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFpZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NlcnZpY2Uuc2hvdzogSUQgaXMgcmVxdWlyZWQgdG8gc2hvdyBhIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRNYXBbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2Uuc2hvdyhpZCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpYWxvZ1NlcnZpY2Uuc2hvdzogTm8gZGlhbG9nIGFzc29jaWF0ZWQgd2l0aCBwcm92aWRlZCBJRCBcXCcke2lkfVxcJy5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbmV3RGlhbG9nID0gdGhpcy5jb21wb25lbnRNYXBbaWRdO1xyXG4gICAgICAgIGNvbnN0IG9sZERpYWxvZyA9IE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayk7XHJcblxyXG4gICAgICAgIC8vIGFjY2Vzc2liaWxpdHlcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiAhKDxhbnk+b3B0aW9ucykuaXNGcm9tUnBjKSB7IC8vIGlmIGZyb20gUnBjIHRoZW4gZG9uJ3QgcmVzdW1lIGZvY3VzIHNpbmNlIGl0IHdpbGwgZm9jdXMgYmFjayBvbiBpZnJhbWVcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKG9yaWdpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dPcmlnaW5zW2lkXSA9IG9yaWdpbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9udCBkbyBhbnl0aGluZyB1bmxlc3Mgd2UgaGF2ZSBhIHN1YnNjcmliZXJcclxuICAgICAgICByZXR1cm4gb2Yob2xkRGlhbG9nKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGl0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBwbGFjZWhvbGRlciBmb3IgdGhlIG5ldyBkaWFsb2cgcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdE9ic2VydmFibGU6IE9ic2VydmFibGU8VFJlc3VsdD47XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgaWYgdGhlcmUgd2FzIGFuIGFjdGl2ZSBkaWFsb2cgd2hlbiB3ZSBzdGFydGVkXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3RpdmVEaWFsb2cgPSAhIW9sZERpYWxvZztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdBY3RpdmVEaWFsb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZERpYWxvZy5rZWVwT3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgZGlhbG9nIHdhbnRzIHRvIHN0YXkgb3BlbiwgdGhlbiBrZWVwIGl0IG9wZW4gYW5kIHNob3cgdGhlIG5ldyBkaWFsb2cgb24gdG9wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5wdXNoKG5ld0RpYWxvZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlPcGVuKHRydWUsIG5ld0RpYWxvZy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzZXQgdGhlIGRpYWxvZyBsZXZlbCBhcyB0aGUgbGVuZ3RoIG9mIHRoZSBhY3RpdmUgZGlhbG9ncyBzdGFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGlhbG9nLnNldExldmVsKHRoaXMuY3VycmVudERpYWxvZ0xldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nUmVzdWx0ID0gbmV3RGlhbG9nLnNob3cob3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbihmYWxzZSwgbmV3RGlhbG9nLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2dzU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGREaWFsb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZERpYWxvZy5hdXRvRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYnNlcnZhYmxlID0gPE9ic2VydmFibGU8VFJlc3VsdD4+dGhpcy5hY3RpdmVEaWFsb2dSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgZGlhbG9nLCB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSwgdGhlbiBzaG93IGEgdGhlIG5ldyBvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9ic2VydmFibGUgPSA8T2JzZXJ2YWJsZTxUUmVzdWx0Pj50aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlTGFzdCgxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhpZCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBkaWFsb2csIHRoZW4ganVzdCBzaG93IHRoZSBuZXcgb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLnB1c2gobmV3RGlhbG9nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbih0cnVlLCBuZXdEaWFsb2cuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdEaWFsb2cuc2V0TGV2ZWwodGhpcy5jdXJyZW50RGlhbG9nTGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdCA9IG5ld0RpYWxvZy5zaG93KG9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbihmYWxzZSwgbmV3RGlhbG9nLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZERpYWxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkRGlhbG9nLmF1dG9Gb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9ic2VydmFibGUgPSA8T2JzZXJ2YWJsZTxUUmVzdWx0Pj50aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhZCBhbiBhY3RpdmUgZGlhbG9nLCByZXF1ZXN0IHRoZSBwcmV2aW91cyBkaWFsb2cgdG8gY2xvc2UgdW5sZXNzIGl0IHdhbnRzIHRvIHN0YXkgb3BlblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0FjdGl2ZURpYWxvZyAmJiAhb2xkRGlhbG9nLmtlZXBPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZERpYWxvZy5jbG9zZVJlcXVlc3RlZChEaWFsb2dDbG9zZVJlYXNvbi5Db21wZXRpbmdEaWFsb2cpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0RGlhbG9nQ2hhbmdlRXZlbnQoaWQsIERpYWxvZ0NoYW5nZUV2ZW50LlNob3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRPYnNlcnZhYmxlO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICogQHJldHVybnMgQSBzdWJqZWN0IHRoYXQgd2lsbCBiZSBwdWJsaXNoZWQgb25lIHRpbWUgd2l0aCB0aGUgZGlhbG9nIHJlc3VsdFxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgMDIvMjAvMTguIFBsZWFzZSB1c2UgJ0FwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnNob3dEaWFsb2dNZXNzYWdlJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93TWVzc2FnZShvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IE9ic2VydmFibGU8RGlhbG9nUmVzdWx0PiB7XHJcbiAgICAgICAgLy8gaWYgcnVubmluZyBmcm9tIHNoZWxsLCBtYW51YWxseSBsYXVuY2ggZGlhbG9nXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwQ29udGV4dC5ycGMuaXNTaGVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93KHRoaXMuY29tbW9uSWRzLm1lc3NhZ2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBhc2sgdGhlIHNoZWxsIHRvIGRvIGl0IGZvciB1cy5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dC5mcmFtZS5zaG93RGlhbG9nTWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0OiBvcHRpb25zLmJ1dHRvblRleHQsXHJcbiAgICAgICAgICAgICAgICBjaGVja2JveFRleHQ6IG9wdGlvbnMuY2hlY2tib3hUZXh0LFxyXG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxMaW5rOiBvcHRpb25zLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhpZGUgYSBtZXNzYWdlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGVNZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZSh0aGlzLmNvbW1vbklkcy5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGEgY2hvaWNlIGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIEByZXR1cm5zIEEgc3ViamVjdCB0aGF0IHdpbGwgYmUgcHVibGlzaGVkIG9uZSB0aW1lIHdpdGggdGhlIGRpYWxvZyByZXN1bHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93Q2hvaWNlKG9wdGlvbnM6IENob2ljZURpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENob2ljZURpYWxvZ1Jlc3VsdD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQucnBjLmlzU2hlbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyh0aGlzLmNvbW1vbklkcy5jaG9pY2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcENvbnRleHQuZnJhbWUuc2hvd0RpYWxvZ0Nob2ljZSh7XHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBvcHRpb25zLmNhbmNlbEJ1dHRvblRleHQsXHJcbiAgICAgICAgICAgICAgICBjaG9pY2VzOiBvcHRpb25zLmNob2ljZXMsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogb3B0aW9ucy5jb25maXJtQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGZvb3Rub3RlOiBvcHRpb25zLmZvb3Rub3RlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSBhIGNob2ljZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlQ2hvaWNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZTxDaG9pY2VEaWFsb2dSZXN1bHQ+KHRoaXMuY29tbW9uSWRzLmNob2ljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIEByZXR1cm5zIEEgc3ViamVjdCB0aGF0IHdpbGwgYmUgcHVibGlzaGVkIG9uZSB0aW1lIHdpdGggdGhlIGRpYWxvZyByZXN1bHRcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDAyLzIwLzE4LiBQbGVhc2UgdXNlICdBcHBDb250ZXh0U2VydmljZS5mcmFtZS5zaG93RGlhbG9nQ29uZmlybWF0aW9uJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93Q29uZmlybWF0aW9uKG9wdGlvbnM6IENvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbkRpYWxvZ1Jlc3VsdD4ge1xyXG4gICAgICAgIC8vIGlmIHJ1bm5pbmcgZnJvbSBzaGVsbCwgbWFudWFsbHkgbGF1bmNoIGRpYWxvZ1xyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQucnBjLmlzU2hlbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyh0aGlzLmNvbW1vbklkcy5jb25maXJtYXRpb24sIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBhc2sgdGhlIHNoZWxsIHRvIGRvIGl0IGZvciB1cy5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dC5mcmFtZS5zaG93RGlhbG9nQ29uZmlybWF0aW9uKHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IG9wdGlvbnMuY2FuY2VsQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGNoZWNrYm94VGV4dDogb3B0aW9ucy5jaGVja2JveFRleHQsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogb3B0aW9ucy5jb25maXJtQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGRvdWJsZUNoZWNrVGV4dDogb3B0aW9ucy5kb3VibGVDaGVja1RleHQsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy50aXRsZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIGEgY29uZmlybWF0aW9uIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGVDb25maXJtYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKHRoaXMuY29tbW9uSWRzLmNvbmZpcm1hdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGNvbmZpcm1hdGlvbiBsaXN0IGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICogQHJldHVybnMgQSBzdWJqZWN0IHRoYXQgd2lsbCBiZSBwdWJsaXNoZWQgb25lIHRpbWUgd2l0aCB0aGUgZGlhbG9nIHJlc3VsdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbkxpc3Qob3B0aW9uczogQ29uZmlybWF0aW9uTGlzdERpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbkxpc3REaWFsb2dSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93KHRoaXMuY29tbW9uSWRzLmNvbmZpcm1hdGlvbkxpc3QsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSBhIGNvbmZpcm1hdGlvbiBsaXN0ICBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlQ29uZmlybWF0aW9uTGlzdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhpZGUodGhpcy5jb21tb25JZHMuY29uZmlybWF0aW9uTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlcyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIFRSZXN1bHQgVGhlIHR5cGUgb2YgdGhlIGRpYWxvZyByZXN1bHQuXHJcbiAgICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBkaWFsb2cuXHJcbiAgICAgKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU8VFJlc3VsdCBleHRlbmRzIERpYWxvZ1Jlc3VsdD4oaWQ6IHN0cmluZywgcmVzdWx0PzogVFJlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTZXJ2aWNlLmhpZGU6IElEIGlzIHJlcXVpcmVkIHRvIGhpZGUgYSBkaWFsb2cuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50TWFwW2lkXSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnREaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2UuaGlkZShpZCwgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlhbG9nU2VydmljZS5oaWRlOiBObyBkaWFsb2cgYXNzb2NpYXRlZCB3aXRoIHByb3ZpZGVkIElEIFxcJyR7aWR9XFwnLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudE1hcFtpZF0uaGlkZShyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZW1pdERpYWxvZ0NoYW5nZUV2ZW50KGlkLCBEaWFsb2dDaGFuZ2VFdmVudC5IaWRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgUnBjIHJlcXVlc3QgdG8gc2hlbGwgdG8gYWRkL3JlbW92ZSBvdmVybGF5XHJcbiAgICAgKiBAcGFyYW0gb3ZlcmxheSB0cnVlOiBhZGQsIGZhbHNlOiByZW1vdmVcclxuICAgICAqIEBwYXJhbSBpZCBpZCBvZiB0aGUgZGlhbG9nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVybGF5T3BlbihvdmVybGF5OiBib29sZWFuLCBpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRPdmVybGF5ID0gTXNmdFNtZS5pc0V4dGVuc2lvbigpXHJcbiAgICAgICAgICAgICYmIChNc2Z0U21lLmVudHJ5UG9pbnRUeXBlKCkgPT09IEVudmlyb25tZW50TW9kdWxlRW50cnlQb2ludFR5cGUuVG9vbFxyXG4gICAgICAgICAgICAgICAgfHwgTXNmdFNtZS5lbnRyeVBvaW50VHlwZSgpID09PSBFbnZpcm9ubWVudE1vZHVsZUVudHJ5UG9pbnRUeXBlLlNldHRpbmdzRm9ybSk7XHJcbiAgICAgICAgaWYgKHN0YXJ0T3ZlcmxheSkge1xyXG4gICAgICAgICAgICAvLyB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWFsb2cgc2VydmljZSBpbnN0YW5jZXMgZm9yIHNvbWUgcmVhc29uXHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC5yZWdpc3RlckRpYWxvZ1NlcnZpY2UodGhpcywgaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcENvbnRleHQuZnJhbWUub3ZlcmxheU9wZW4ob3ZlcmxheSwgaWQpXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5hcHBDb250ZXh0Lm5vdGlmaWNhdGlvbi5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5zaG93RXJyb3IodGhpcy5zdHJpbmdzLk92ZXJsYXkub3BlbkVycm9yVGl0bGUsIE5ldC5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZSBjbGlja2luZyBvbiBkaWFsb2cgYmFja2dyb3VuZCBpbiBzaGVsbFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0lkIGlkIG9mIGRpYWxvZyB3aG9zZSBiYWNrZ3JvdW5kIHdhcyBjbGlja2VkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVybGF5Q2xpY2tlZChkaWFsb2dJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbGFzdERpYWxvZyA9IE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayk7XHJcbiAgICAgICAgaWYgKGxhc3REaWFsb2cgJiYgbGFzdERpYWxvZy5pZCA9PT0gZGlhbG9nSWQpIHtcclxuICAgICAgICAgICAgbGFzdERpYWxvZy5vbkJhY2tncm91bmRDbGlja2VkKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN1bWUgZm9jdXMgYmFjayB0byB0aGUgb3JpZ2luYWwgZWxlbWVudCB0aGF0IHNob3dzIHRoZSBkaWFsb2cuXHJcbiAgICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRlbGF5IElmIHByb3ZpZGVkLCBkZWxheXMgcmVzdW1pbmcgZm9jdXMgZm9yIGEgcGVyaW9kIG9mIHRpbWUgaW4gbXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlc3VtZUZvY3VzKGlkOiBzdHJpbmcsIGRlbGF5ID0gMCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGRpYWxvZyBzdGFjayBjdXJyZW50bHkuXHJcbiAgICAgICAgY29uc3Qgd2FzSW5EaWFsb2dTdGFjayA9IHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrICYmIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nT3JpZ2luc1tpZF0pIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dChcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luRGlhbG9nU3RhY2sgPSB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayAmJiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghd2FzSW5EaWFsb2dTdGFjayAmJiBpc0luRGlhbG9nU3RhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWFsb2cgd2FzIG9wZW5lZCBkdXJpbmcgdGhlIHNldFRpbWVvdXQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgbmV3IGRpYWxvZyB3aWxsIHJlc3VtZSBmb2N1cyB0byB0aGUgd3JvbmcgZWxlbWVudCBhbmQgdGhlIG5ldyBkaWFsb2cgd2lsbCBvcGVuIHVuZm9jdXNlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dPcmlnaW5zW3RoaXMuYWN0aXZlRGlhbG9nc1N0YWNrWzBdLmlkXSA9IHRoaXMuZGlhbG9nT3JpZ2luc1tpZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpYWxvZ09yaWdpbnNbaWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0LmZyYW1lLmFjdGl2ZVJwY0RpYWxvZ3NPcmlnaW5zLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIHJwYyBkaWFsb2cgd2FzIG9wZW5lZCBkdXJpbmcgdGhlIHNldFRpbWVvdXQuIFNvIGp1c3Qgd2FpdCBhIGxpdHRsZSBsb25nZXIgYW5kIHRoZW4gcmVmb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VtZUZvY3VzKGlkLCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ09yaWdpbnNbaWRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBibG9jayBoYW5kbGVzIGJ1dHRvbiBlbGVtZW50cyB0aGF0IGdldCBkaXNhYmxlZCBkdXJpbmcgYW4gYWN0aW9uIGV4ZWN1dGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmRpYWxvZ09yaWdpbnNbaWRdIGFzIEhUTUxCdXR0b25FbGVtZW50KS5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRab25lRWxlbWVudCA9IERvbS5nZXROZXh0Wm9uZUVsZW1lbnQodGhpcy5kaWFsb2dPcmlnaW5zW2lkXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRab25lRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Wm9uZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nT3JpZ2luc1tpZF0uZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpYWxvZ09yaWdpbnNbaWRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlbWl0RGlhbG9nQ2hhbmdlRXZlbnQoZGlhbG9nSWQ6IFN0cmluZywgY2hhbmdlRXZlbnQ6IERpYWxvZ0NoYW5nZUV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkRXZlbnRTdWJqZWN0Lm5leHQoPERpYWxvZ0V2ZW50PnsgZGlhbG9nSWQ6IGRpYWxvZ0lkLCBjaGFuZ2VFdmVudDogY2hhbmdlRXZlbnQgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDeEgsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUt0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBR3ZELE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDekIseURBQUksQ0FBQTtJQUNKLHlEQUFJLENBQUE7QUFDUixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQVFELE1BQU0sT0FBTyxhQUFhO0lBd0J0QixZQUFvQixVQUE2QixFQUFrQyxtQkFBbUM7UUFBbEcsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFBa0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFnQjtRQXZCL0csY0FBUyxHQUFHO1lBQ2YsTUFBTSxFQUFFLDBCQUEwQjtZQUNsQyxZQUFZLEVBQUUsZ0NBQWdDO1lBQzlDLGdCQUFnQixFQUFFLHFDQUFxQztZQUN2RCxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLGlCQUFpQixFQUFFLCtCQUErQjtZQUNsRCxRQUFRLEVBQUUsMEJBQTBCO1lBQ3BDLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxRQUFRLEVBQUUsNkJBQTZCO1lBQ3ZDLG9CQUFvQixFQUFFLG1DQUFtQztZQUN6RCxtQkFBbUIsRUFBRSxpQ0FBaUM7WUFDdEQsU0FBUyxFQUFFLHVCQUF1QjtTQUNyQyxDQUFDO1FBRUssdUJBQWtCLEdBQXVELEVBQUUsQ0FBQztRQUUzRSxZQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDN0QsaUJBQVksR0FBMEUsRUFBRSxDQUFDO1FBRXpGLGtCQUFhLEdBQXFDLEVBQUUsQ0FBQztRQWtCckQsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBZDFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBYyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxrQkFBa0I7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDdEgsQ0FBQztJQUlEOzs7Ozs7O09BT0c7SUFDSSxRQUFRLENBQ1gsRUFBVSxFQUNWLFNBQWlEO1FBRWpELElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7U0FDbkY7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1NBQ3pGO1FBRUQ7Ozs7V0FJRztRQUNILCtCQUErQjtRQUMvQiwwR0FBMEc7UUFDMUcsSUFBSTtRQUVKLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLEVBQVU7UUFDeEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQztRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxJQUFJLENBQStELEVBQVUsRUFBRSxPQUFpQjtRQUNuRyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDckQ7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzRjtTQUNKO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXhELGdCQUFnQjtRQUNoQixJQUFJLE9BQU8sSUFBSSxDQUFPLE9BQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSx5RUFBeUU7WUFDakgsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQTRCLENBQUM7WUFDckQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7YUFDbkM7U0FDSjtRQUVELCtDQUErQztRQUMvQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDZixJQUFJLENBQ0QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1YsaURBQWlEO1lBQ2pELElBQUksZ0JBQXFDLENBQUM7WUFDMUMseURBQXlEO1lBQ3pELE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6QyxJQUFJLG9CQUFvQixFQUFFO2dCQUN0QixJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3BCLHNHQUFzRztvQkFDdEcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxvRUFBb0U7b0JBQ3BFLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzt5QkFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDZixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDOUIsSUFBSSxTQUFTLEVBQUU7NEJBQ1gsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO3lCQUN6Qjt3QkFFRCxPQUFPLE1BQU0sQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDUixnQkFBZ0IsR0FBd0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2lCQUNuRTtxQkFBTTtvQkFDSCxpRkFBaUY7b0JBQ2pGLGdCQUFnQixHQUF3QixJQUFJLENBQUMsa0JBQWtCO3lCQUMxRCxJQUFJLENBQ0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUNYLFFBQVEsQ0FBQyxHQUFHLEVBQUU7d0JBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDZjthQUNKO2lCQUFNO2dCQUNILDJEQUEyRDtnQkFDM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7cUJBQzVDLElBQUksQ0FDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN0QyxJQUFJLFNBQVMsRUFBRTt3QkFDWCxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7cUJBQ3pCO29CQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDOUIsT0FBTyxNQUFNLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osZ0JBQWdCLEdBQXdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQzthQUNuRTtZQUVELGdHQUFnRztZQUNoRyxJQUFJLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDN0MsU0FBUyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUMvRDtZQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsT0FBTyxnQkFBZ0IsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXLENBQUMsT0FBNkI7UUFDNUMsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRDthQUFNO1lBQ0gsMkNBQTJDO1lBQzNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQzNDLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDOUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO2dCQUNsQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7Z0JBQ2xDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztnQkFDeEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxVQUFVLENBQUMsT0FBNEI7UUFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2dCQUMxQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7Z0JBQzVDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO2dCQUN4QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBcUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZ0JBQWdCLENBQUMsT0FBa0M7UUFDdEQsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0gsMkNBQTJDO1lBQzNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2hELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzFDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtnQkFDbEMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtnQkFDNUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO2dCQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksb0JBQW9CLENBQUMsT0FBc0M7UUFDOUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksb0JBQW9CO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQStCLEVBQVUsRUFBRSxNQUFnQjtRQUNsRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1NBQzNFO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQyxPQUFPO2FBQ1Y7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUMzRjtTQUNKO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxPQUFnQixFQUFFLEVBQVU7UUFDM0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRTtlQUNuQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSywrQkFBK0IsQ0FBQyxJQUFJO21CQUM5RCxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssK0JBQStCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEYsSUFBSSxZQUFZLEVBQUU7WUFDZCxtRUFBbUU7WUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7aUJBQ3pDLElBQUksQ0FDRCxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3hGLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxRQUFnQjtRQUNsQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFO1lBQzFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxFQUFVLEVBQUUsS0FBSyxHQUFHLENBQUM7UUFDcEMscURBQXFEO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4QixVQUFVLENBQ04sR0FBRyxFQUFFO2dCQUNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLGdCQUFnQixJQUFJLGVBQWUsRUFBRTtvQkFDdEMsNkNBQTZDO29CQUM3QyxnSEFBZ0g7b0JBQ2hILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDakM7cUJBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO29CQUMvRCxnR0FBZ0c7b0JBQ2hHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2QyxNQUFNLE9BQU8sR0FBZ0IsR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDekQsSUFBSSxPQUFPLEVBQUU7d0JBQ1QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUNuQjtvQkFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ2pDO1lBRUwsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQixDQUFDLFFBQWdCLEVBQUUsV0FBOEI7UUFDekUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQzs7NkZBellRLGFBQWEsaURBd0JtRixhQUFhO3dFQXhCN0csYUFBYSxXQUFiLGFBQWE7dUZBQWIsYUFBYTtjQUR6QixVQUFVO3NFQXlCa0csYUFBYTtzQkFBbEUsUUFBUTs7c0JBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZXQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvbmV0JztcclxuaW1wb3J0IHsgRG9tIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kb20vZG9tJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRNb2R1bGVFbnRyeVBvaW50VHlwZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvbWFuaWZlc3QvZW52aXJvbm1lbnQtbW9kdWxlcyc7XHJcbmltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCB0YWtlTGFzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuaW1wb3J0IHsgQXBwQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FwcC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlRGlhbG9nQ29tcG9uZW50LCBEaWFsb2dPcHRpb25zLCBEaWFsb2dSZXN1bHQgfSBmcm9tICcuL2Jhc2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENob2ljZURpYWxvZ09wdGlvbnMsIENob2ljZURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vY2hvaWNlLWRpYWxvZy9jaG9pY2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnMsIENvbmZpcm1hdGlvbkRpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkxpc3REaWFsb2dPcHRpb25zLCBDb25maXJtYXRpb25MaXN0RGlhbG9nUmVzdWx0IH0gZnJvbSAnLi9jb25maXJtYXRpb24tbGlzdC1kaWFsb2cvY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVhc29uIH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVzc2FnZURpYWxvZ09wdGlvbnMgfSBmcm9tICcuL21lc3NhZ2UtZGlhbG9nL21lc3NhZ2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgZW51bSBEaWFsb2dDaGFuZ2VFdmVudCB7XHJcbiAgICBTaG93LFxyXG4gICAgSGlkZVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0V2ZW50IHtcclxuICAgIGRpYWxvZ0lkOiBzdHJpbmc7XHJcbiAgICBjaGFuZ2VFdmVudDogRGlhbG9nQ2hhbmdlRXZlbnQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG4gICAgcHVibGljIGNvbW1vbklkcyA9IHtcclxuICAgICAgICBjaG9pY2U6ICdzbWUtY29tbW9uLWNob2ljZS1kaWFsb2cnLFxyXG4gICAgICAgIGNvbmZpcm1hdGlvbjogJ3NtZS1jb21tb24tY29uZmlybWF0aW9uLWRpYWxvZycsXHJcbiAgICAgICAgY29uZmlybWF0aW9uTGlzdDogJ3NtZS1jb21tb24tY29uZmlybWF0aW9uLWxpc3QtZGlhbG9nJyxcclxuICAgICAgICBtZXNzYWdlOiAnc21lLWNvbW1vbi1tZXNzYWdlLWRpYWxvZycsXHJcbiAgICAgICAgbm90aWZpY2F0aW9uc1BhbmU6ICdzbWUtY29tbW9uLW5vdGlmaWNhdGlvbnMtcGFuZScsXHJcbiAgICAgICAgc2V0dGluZ3M6ICdzbWUtY29tbW9uLXNldHRpbmdzLXBhbmUnLFxyXG4gICAgICAgIGhlbHA6ICdzbWUtY29tbW9uLWhlbHAtcGFuZScsXHJcbiAgICAgICAgdXNlclBhbmU6ICdzbWUtY29tbW9uLXVzZXItcGFuZScsXHJcbiAgICAgICAgbWFuYWdlQXM6ICdzbWUtY29tbW9uLW1hbmFnZS1hcy1kaWFsb2cnLFxyXG4gICAgICAgIHBvd2VyU2hlbGxTaG93U2NyaXB0OiAnc21lLWNvbW1vbi1wb3dlcnNoZWxsLXNob3ctc2NyaXB0JyxcclxuICAgICAgICBjcmVkU1NQQ29uZmlybWF0aW9uOiAnc21lLWNyZWRzc3AtY29uZmlybWF0aW9uLWRpYWxvZycsXHJcbiAgICAgICAgdXNlckFsaXZlOiAnc21lLXVzZXItYWxpdmUtZGlhbG9nJ1xyXG4gICAgfTtcclxuXHJcbiAgICBwdWJsaWMgYWN0aXZlRGlhbG9nc1N0YWNrOiBCYXNlRGlhbG9nQ29tcG9uZW50PERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdD5bXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgc3RyaW5ncyA9IE1zZnRTbWUuZ2V0U3RyaW5nczxTdHJpbmdzPigpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyO1xyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBCYXNlRGlhbG9nQ29tcG9uZW50PERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdD4gfSA9IHt9O1xyXG4gICAgcHJpdmF0ZSBhY3RpdmVEaWFsb2dSZXN1bHQ6IE9ic2VydmFibGU8RGlhbG9nUmVzdWx0PjtcclxuICAgIHByaXZhdGUgZGlhbG9nT3JpZ2luczogeyBbaW5kZXg6IHN0cmluZ106IEhUTUxFbGVtZW50IH0gPSB7fTtcclxuICAgIHByaXZhdGUgY2hhbmdlZEV2ZW50U3ViamVjdDogUmVwbGF5U3ViamVjdDxEaWFsb2dFdmVudD47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBDb250ZXh0OiBBcHBDb250ZXh0U2VydmljZSwgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnREaWFsb2dTZXJ2aWNlPzogRGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZEV2ZW50U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PERpYWxvZ0V2ZW50PigxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN1YmplY3Qgb2Ygbm90aWZpY2F0aW9uIGNoYW5nZWQgZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlZCgpOiBSZXBsYXlTdWJqZWN0PERpYWxvZ0V2ZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlZEV2ZW50U3ViamVjdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnREaWFsb2dMZXZlbCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayA/IHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLmxlbmd0aCArIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQgOiB0aGlzLmlGcmFtZURpYWxvZ0NvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaUZyYW1lRGlhbG9nQ291bnQgPSAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHRoZSBkaWFsb2cgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqXHJcbiAgICAgKiBUT3B0aW9ucyB0aGUgdHlwZSBvZiB0aGUgZGlhbG9nIG9wdGlvbnMuXHJcbiAgICAgKiBUUmVzdWx0IHRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgcmVzdWx0cy5cclxuICAgICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGRpYWxvZyBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcjxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+KFxyXG4gICAgICAgIGlkOiBzdHJpbmcsXHJcbiAgICAgICAgY29tcG9uZW50OiBCYXNlRGlhbG9nQ29tcG9uZW50PFRPcHRpb25zLCBUUmVzdWx0PlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFpZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NlcnZpY2UucmVnaXN0ZXI6IElEIGlzIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIGEgZGlhbG9nLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTZXJ2aWNlLnJlZ2lzdGVyOiBBIGRpYWxvZyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBhIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHJlbW92aW5nIHVudGlsIHdlIHVuZGVyc3RhbmQgY2FzZXMgd2hlcmUgYW5ndWxhciBjYW4gY2FsbCBuZ09uSW5pdCB0d2ljZS5cclxuICAgICAgICAgKiBzZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDI3MDAxMTYvYW5ndWxhcjItcm91dGluZy1pc3N1ZS1hbmQtbmdvbmluaXQtY2FsbGVkLXR3aWNlXHJcbiAgICAgICAgICogYW5kIEBtc2Z0LXNtZS9sb2NhbC11c2Vycy1ncm91cHMgZm9yIGV4YW1wbGVzXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgLy8gaWYgKHRoaXMuY29tcG9uZW50TWFwW2lkXSkge1xyXG4gICAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYERpYWxvZ1NlcnZpY2UucmVnaXN0ZXI6IEEgZGlhbG9nIHdpdGggdGhlIElEIFxcJyR7aWR9XFwnIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZGApO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRNYXBbaWRdID0gY29tcG9uZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5yZWdpc3RlcnMgdGhlIGRpYWxvZyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHVucmVnaXN0ZXIoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudE1hcFtpZF0pIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY29tcG9uZW50TWFwW2lkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayAmJiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5sZW5ndGggPiAwICYmIE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjaykuaWQgPT09IGlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWRkSUZyYW1lRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQrKztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlSUZyYW1lRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaUZyYW1lRGlhbG9nQ291bnQgPSBNYXRoLm1heCh0aGlzLmlGcmFtZURpYWxvZ0NvdW50IC0gMSwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIFRPcHRpb25zIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIFRSZXN1bHQgVGhlIHJlc3VsdCBvZiB0aGUgZGlhbG9nLlxyXG4gICAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZGlhbG9nLlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdzxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+KGlkOiBzdHJpbmcsIG9wdGlvbnM6IFRPcHRpb25zKTogT2JzZXJ2YWJsZTxUUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFpZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ1NlcnZpY2Uuc2hvdzogSUQgaXMgcmVxdWlyZWQgdG8gc2hvdyBhIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnRNYXBbaWRdKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2Uuc2hvdyhpZCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERpYWxvZ1NlcnZpY2Uuc2hvdzogTm8gZGlhbG9nIGFzc29jaWF0ZWQgd2l0aCBwcm92aWRlZCBJRCBcXCcke2lkfVxcJy5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbmV3RGlhbG9nID0gdGhpcy5jb21wb25lbnRNYXBbaWRdO1xyXG4gICAgICAgIGNvbnN0IG9sZERpYWxvZyA9IE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayk7XHJcblxyXG4gICAgICAgIC8vIGFjY2Vzc2liaWxpdHlcclxuICAgICAgICBpZiAob3B0aW9ucyAmJiAhKDxhbnk+b3B0aW9ucykuaXNGcm9tUnBjKSB7IC8vIGlmIGZyb20gUnBjIHRoZW4gZG9uJ3QgcmVzdW1lIGZvY3VzIHNpbmNlIGl0IHdpbGwgZm9jdXMgYmFjayBvbiBpZnJhbWVcclxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKG9yaWdpbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dPcmlnaW5zW2lkXSA9IG9yaWdpbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZG9udCBkbyBhbnl0aGluZyB1bmxlc3Mgd2UgaGF2ZSBhIHN1YnNjcmliZXJcclxuICAgICAgICByZXR1cm4gb2Yob2xkRGlhbG9nKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGl0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBwbGFjZWhvbGRlciBmb3IgdGhlIG5ldyBkaWFsb2cgcmVzdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdE9ic2VydmFibGU6IE9ic2VydmFibGU8VFJlc3VsdD47XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgaWYgdGhlcmUgd2FzIGFuIGFjdGl2ZSBkaWFsb2cgd2hlbiB3ZSBzdGFydGVkXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBY3RpdmVEaWFsb2cgPSAhIW9sZERpYWxvZztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdBY3RpdmVEaWFsb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZERpYWxvZy5rZWVwT3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgZGlhbG9nIHdhbnRzIHRvIHN0YXkgb3BlbiwgdGhlbiBrZWVwIGl0IG9wZW4gYW5kIHNob3cgdGhlIG5ldyBkaWFsb2cgb24gdG9wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5wdXNoKG5ld0RpYWxvZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlPcGVuKHRydWUsIG5ld0RpYWxvZy5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzZXQgdGhlIGRpYWxvZyBsZXZlbCBhcyB0aGUgbGVuZ3RoIG9mIHRoZSBhY3RpdmUgZGlhbG9ncyBzdGFja1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RGlhbG9nLnNldExldmVsKHRoaXMuY3VycmVudERpYWxvZ0xldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nUmVzdWx0ID0gbmV3RGlhbG9nLnNob3cob3B0aW9ucylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbihmYWxzZSwgbmV3RGlhbG9nLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEaWFsb2dzU3RhY2sucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGREaWFsb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZERpYWxvZy5hdXRvRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRPYnNlcnZhYmxlID0gPE9ic2VydmFibGU8VFJlc3VsdD4+dGhpcy5hY3RpdmVEaWFsb2dSZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgZGlhbG9nLCB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSwgdGhlbiBzaG93IGEgdGhlIG5ldyBvbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9ic2VydmFibGUgPSA8T2JzZXJ2YWJsZTxUUmVzdWx0Pj50aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlTGFzdCgxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhpZCwgb3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIGFjdGl2ZSBkaWFsb2csIHRoZW4ganVzdCBzaG93IHRoZSBuZXcgb25lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLnB1c2gobmV3RGlhbG9nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbih0cnVlLCBuZXdEaWFsb2cuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdEaWFsb2cuc2V0TGV2ZWwodGhpcy5jdXJyZW50RGlhbG9nTGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdCA9IG5ld0RpYWxvZy5zaG93KG9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3BlbihmYWxzZSwgbmV3RGlhbG9nLmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZERpYWxvZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkRGlhbG9nLmF1dG9Gb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdE9ic2VydmFibGUgPSA8T2JzZXJ2YWJsZTxUUmVzdWx0Pj50aGlzLmFjdGl2ZURpYWxvZ1Jlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhZCBhbiBhY3RpdmUgZGlhbG9nLCByZXF1ZXN0IHRoZSBwcmV2aW91cyBkaWFsb2cgdG8gY2xvc2UgdW5sZXNzIGl0IHdhbnRzIHRvIHN0YXkgb3BlblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0FjdGl2ZURpYWxvZyAmJiAhb2xkRGlhbG9nLmtlZXBPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZERpYWxvZy5jbG9zZVJlcXVlc3RlZChEaWFsb2dDbG9zZVJlYXNvbi5Db21wZXRpbmdEaWFsb2cpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0RGlhbG9nQ2hhbmdlRXZlbnQoaWQsIERpYWxvZ0NoYW5nZUV2ZW50LlNob3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRPYnNlcnZhYmxlO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICogQHJldHVybnMgQSBzdWJqZWN0IHRoYXQgd2lsbCBiZSBwdWJsaXNoZWQgb25lIHRpbWUgd2l0aCB0aGUgZGlhbG9nIHJlc3VsdFxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgMDIvMjAvMTguIFBsZWFzZSB1c2UgJ0FwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnNob3dEaWFsb2dNZXNzYWdlJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93TWVzc2FnZShvcHRpb25zOiBNZXNzYWdlRGlhbG9nT3B0aW9ucyk6IE9ic2VydmFibGU8RGlhbG9nUmVzdWx0PiB7XHJcbiAgICAgICAgLy8gaWYgcnVubmluZyBmcm9tIHNoZWxsLCBtYW51YWxseSBsYXVuY2ggZGlhbG9nXHJcbiAgICAgICAgaWYgKHRoaXMuYXBwQ29udGV4dC5ycGMuaXNTaGVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaG93KHRoaXMuY29tbW9uSWRzLm1lc3NhZ2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBhc2sgdGhlIHNoZWxsIHRvIGRvIGl0IGZvciB1cy5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dC5mcmFtZS5zaG93RGlhbG9nTWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICBidXR0b25UZXh0OiBvcHRpb25zLmJ1dHRvblRleHQsXHJcbiAgICAgICAgICAgICAgICBjaGVja2JveFRleHQ6IG9wdGlvbnMuY2hlY2tib3hUZXh0LFxyXG4gICAgICAgICAgICAgICAgZXh0ZXJuYWxMaW5rOiBvcHRpb25zLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhpZGUgYSBtZXNzYWdlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGVNZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZSh0aGlzLmNvbW1vbklkcy5tZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3dzIGEgY2hvaWNlIGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIEByZXR1cm5zIEEgc3ViamVjdCB0aGF0IHdpbGwgYmUgcHVibGlzaGVkIG9uZSB0aW1lIHdpdGggdGhlIGRpYWxvZyByZXN1bHQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93Q2hvaWNlKG9wdGlvbnM6IENob2ljZURpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENob2ljZURpYWxvZ1Jlc3VsdD4ge1xyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQucnBjLmlzU2hlbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyh0aGlzLmNvbW1vbklkcy5jaG9pY2UsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcENvbnRleHQuZnJhbWUuc2hvd0RpYWxvZ0Nob2ljZSh7XHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiBvcHRpb25zLmNhbmNlbEJ1dHRvblRleHQsXHJcbiAgICAgICAgICAgICAgICBjaG9pY2VzOiBvcHRpb25zLmNob2ljZXMsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogb3B0aW9ucy5jb25maXJtQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGZvb3Rub3RlOiBvcHRpb25zLmZvb3Rub3RlLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbnMudGl0bGVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSBhIGNob2ljZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlQ2hvaWNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZTxDaG9pY2VEaWFsb2dSZXN1bHQ+KHRoaXMuY29tbW9uSWRzLmNob2ljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCB0aGUgZ2l2ZW4gb3B0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBkaWFsb2cgb3B0aW9ucy5cclxuICAgICAqIEByZXR1cm5zIEEgc3ViamVjdCB0aGF0IHdpbGwgYmUgcHVibGlzaGVkIG9uZSB0aW1lIHdpdGggdGhlIGRpYWxvZyByZXN1bHRcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDAyLzIwLzE4LiBQbGVhc2UgdXNlICdBcHBDb250ZXh0U2VydmljZS5mcmFtZS5zaG93RGlhbG9nQ29uZmlybWF0aW9uJyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaG93Q29uZmlybWF0aW9uKG9wdGlvbnM6IENvbmZpcm1hdGlvbkRpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbkRpYWxvZ1Jlc3VsdD4ge1xyXG4gICAgICAgIC8vIGlmIHJ1bm5pbmcgZnJvbSBzaGVsbCwgbWFudWFsbHkgbGF1bmNoIGRpYWxvZ1xyXG4gICAgICAgIGlmICh0aGlzLmFwcENvbnRleHQucnBjLmlzU2hlbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyh0aGlzLmNvbW1vbklkcy5jb25maXJtYXRpb24sIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBhc2sgdGhlIHNoZWxsIHRvIGRvIGl0IGZvciB1cy5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dC5mcmFtZS5zaG93RGlhbG9nQ29uZmlybWF0aW9uKHtcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IG9wdGlvbnMuY2FuY2VsQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGNoZWNrYm94VGV4dDogb3B0aW9ucy5jaGVja2JveFRleHQsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogb3B0aW9ucy5jb25maXJtQnV0dG9uVGV4dCxcclxuICAgICAgICAgICAgICAgIGRvdWJsZUNoZWNrVGV4dDogb3B0aW9ucy5kb3VibGVDaGVja1RleHQsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBvcHRpb25zLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9ucy50aXRsZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIGEgY29uZmlybWF0aW9uIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGVDb25maXJtYXRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKHRoaXMuY29tbW9uSWRzLmNvbmZpcm1hdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyBhIGNvbmZpcm1hdGlvbiBsaXN0IGRpYWxvZyB3aXRoIHRoZSBnaXZlbiBvcHRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGRpYWxvZyBvcHRpb25zLlxyXG4gICAgICogQHJldHVybnMgQSBzdWJqZWN0IHRoYXQgd2lsbCBiZSBwdWJsaXNoZWQgb25lIHRpbWUgd2l0aCB0aGUgZGlhbG9nIHJlc3VsdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbkxpc3Qob3B0aW9uczogQ29uZmlybWF0aW9uTGlzdERpYWxvZ09wdGlvbnMpOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbkxpc3REaWFsb2dSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zaG93KHRoaXMuY29tbW9uSWRzLmNvbmZpcm1hdGlvbkxpc3QsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZSBhIGNvbmZpcm1hdGlvbiBsaXN0ICBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlQ29uZmlybWF0aW9uTGlzdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhpZGUodGhpcy5jb21tb25JZHMuY29uZmlybWF0aW9uTGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlcyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIFRSZXN1bHQgVGhlIHR5cGUgb2YgdGhlIGRpYWxvZyByZXN1bHQuXHJcbiAgICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBkaWFsb2cuXHJcbiAgICAgKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGhpZGU8VFJlc3VsdCBleHRlbmRzIERpYWxvZ1Jlc3VsdD4oaWQ6IHN0cmluZywgcmVzdWx0PzogVFJlc3VsdCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dTZXJ2aWNlLmhpZGU6IElEIGlzIHJlcXVpcmVkIHRvIGhpZGUgYSBkaWFsb2cuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuY29tcG9uZW50TWFwW2lkXSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJlbnREaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudERpYWxvZ1NlcnZpY2UuaGlkZShpZCwgcmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlhbG9nU2VydmljZS5oaWRlOiBObyBkaWFsb2cgYXNzb2NpYXRlZCB3aXRoIHByb3ZpZGVkIElEIFxcJyR7aWR9XFwnLmApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudE1hcFtpZF0uaGlkZShyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZW1pdERpYWxvZ0NoYW5nZUV2ZW50KGlkLCBEaWFsb2dDaGFuZ2VFdmVudC5IaWRlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbmQgUnBjIHJlcXVlc3QgdG8gc2hlbGwgdG8gYWRkL3JlbW92ZSBvdmVybGF5XHJcbiAgICAgKiBAcGFyYW0gb3ZlcmxheSB0cnVlOiBhZGQsIGZhbHNlOiByZW1vdmVcclxuICAgICAqIEBwYXJhbSBpZCBpZCBvZiB0aGUgZGlhbG9nXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVybGF5T3BlbihvdmVybGF5OiBib29sZWFuLCBpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRPdmVybGF5ID0gTXNmdFNtZS5pc0V4dGVuc2lvbigpXHJcbiAgICAgICAgICAgICYmIChNc2Z0U21lLmVudHJ5UG9pbnRUeXBlKCkgPT09IEVudmlyb25tZW50TW9kdWxlRW50cnlQb2ludFR5cGUuVG9vbFxyXG4gICAgICAgICAgICAgICAgfHwgTXNmdFNtZS5lbnRyeVBvaW50VHlwZSgpID09PSBFbnZpcm9ubWVudE1vZHVsZUVudHJ5UG9pbnRUeXBlLlNldHRpbmdzRm9ybSk7XHJcbiAgICAgICAgaWYgKHN0YXJ0T3ZlcmxheSkge1xyXG4gICAgICAgICAgICAvLyB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWFsb2cgc2VydmljZSBpbnN0YW5jZXMgZm9yIHNvbWUgcmVhc29uXHJcbiAgICAgICAgICAgIHRoaXMuYXBwQ29udGV4dC5yZWdpc3RlckRpYWxvZ1NlcnZpY2UodGhpcywgaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmFwcENvbnRleHQuZnJhbWUub3ZlcmxheU9wZW4ob3ZlcmxheSwgaWQpXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5hcHBDb250ZXh0Lm5vdGlmaWNhdGlvbi5jcmVhdGUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5zaG93RXJyb3IodGhpcy5zdHJpbmdzLk92ZXJsYXkub3BlbkVycm9yVGl0bGUsIE5ldC5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZSBjbGlja2luZyBvbiBkaWFsb2cgYmFja2dyb3VuZCBpbiBzaGVsbFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0lkIGlkIG9mIGRpYWxvZyB3aG9zZSBiYWNrZ3JvdW5kIHdhcyBjbGlja2VkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvdmVybGF5Q2xpY2tlZChkaWFsb2dJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgbGFzdERpYWxvZyA9IE1zZnRTbWUubGFzdCh0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayk7XHJcbiAgICAgICAgaWYgKGxhc3REaWFsb2cgJiYgbGFzdERpYWxvZy5pZCA9PT0gZGlhbG9nSWQpIHtcclxuICAgICAgICAgICAgbGFzdERpYWxvZy5vbkJhY2tncm91bmRDbGlja2VkKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN1bWUgZm9jdXMgYmFjayB0byB0aGUgb3JpZ2luYWwgZWxlbWVudCB0aGF0IHNob3dzIHRoZSBkaWFsb2cuXHJcbiAgICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRlbGF5IElmIHByb3ZpZGVkLCBkZWxheXMgcmVzdW1pbmcgZm9jdXMgZm9yIGEgcGVyaW9kIG9mIHRpbWUgaW4gbXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlc3VtZUZvY3VzKGlkOiBzdHJpbmcsIGRlbGF5ID0gMCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGRpYWxvZyBzdGFjayBjdXJyZW50bHkuXHJcbiAgICAgICAgY29uc3Qgd2FzSW5EaWFsb2dTdGFjayA9IHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrICYmIHRoaXMuYWN0aXZlRGlhbG9nc1N0YWNrLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nT3JpZ2luc1tpZF0pIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dChcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0luRGlhbG9nU3RhY2sgPSB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjayAmJiB0aGlzLmFjdGl2ZURpYWxvZ3NTdGFjay5sZW5ndGggPiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghd2FzSW5EaWFsb2dTdGFjayAmJiBpc0luRGlhbG9nU3RhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWFsb2cgd2FzIG9wZW5lZCBkdXJpbmcgdGhlIHNldFRpbWVvdXQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgbmV3IGRpYWxvZyB3aWxsIHJlc3VtZSBmb2N1cyB0byB0aGUgd3JvbmcgZWxlbWVudCBhbmQgdGhlIG5ldyBkaWFsb2cgd2lsbCBvcGVuIHVuZm9jdXNlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dPcmlnaW5zW3RoaXMuYWN0aXZlRGlhbG9nc1N0YWNrWzBdLmlkXSA9IHRoaXMuZGlhbG9nT3JpZ2luc1tpZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmRpYWxvZ09yaWdpbnNbaWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb250ZXh0LmZyYW1lLmFjdGl2ZVJwY0RpYWxvZ3NPcmlnaW5zLnNpemUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIHJwYyBkaWFsb2cgd2FzIG9wZW5lZCBkdXJpbmcgdGhlIHNldFRpbWVvdXQuIFNvIGp1c3Qgd2FpdCBhIGxpdHRsZSBsb25nZXIgYW5kIHRoZW4gcmVmb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VtZUZvY3VzKGlkLCAxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmRpYWxvZ09yaWdpbnNbaWRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb2N1c09uOiBIVE1MRWxlbWVudCA9IERvbS5nZXRGb2N1c09yaWdpbihlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzT24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzT24uZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5kaWFsb2dPcmlnaW5zW2lkXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZW1pdERpYWxvZ0NoYW5nZUV2ZW50KGRpYWxvZ0lkOiBTdHJpbmcsIGNoYW5nZUV2ZW50OiBEaWFsb2dDaGFuZ2VFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZEV2ZW50U3ViamVjdC5uZXh0KDxEaWFsb2dFdmVudD57IGRpYWxvZ0lkOiBkaWFsb2dJZCwgY2hhbmdlRXZlbnQ6IGNoYW5nZUV2ZW50IH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -98,13 +98,16 @@ export class ConnectivityEnforcer {
|
|
|
98
98
|
static isRequestAllowed(connectivityLevel, requestUrl) {
|
|
99
99
|
const announcementsBlobGlobal = 'https://announcements.blob.core.windows.net';
|
|
100
100
|
const announcementsBlobChina = 'https://announcements.blob.core.chinacloudapi.cn';
|
|
101
|
+
const announcementsBlobFairfax = 'https://announcements.blob.core.usgovcloudapi.net';
|
|
101
102
|
// TODO: Load from manifest.
|
|
102
103
|
if (connectivityLevel === ConnectivityLevel.AzureAndGateway) {
|
|
103
104
|
const approvedUrls = [
|
|
104
105
|
AzureConstants.azureGlobalArmEndpoint,
|
|
105
106
|
AzureConstants.azureChinaArmEndpoint,
|
|
107
|
+
AzureConstants.azureUSGovArmEndpoint,
|
|
106
108
|
announcementsBlobGlobal,
|
|
107
|
-
announcementsBlobChina
|
|
109
|
+
announcementsBlobChina,
|
|
110
|
+
announcementsBlobFairfax
|
|
108
111
|
];
|
|
109
112
|
return approvedUrls.some(url => requestUrl.startsWith(url));
|
|
110
113
|
}
|
|
@@ -134,4 +137,4 @@ export class ConnectivityEnforcer {
|
|
|
134
137
|
}
|
|
135
138
|
}
|
|
136
139
|
ConnectivityEnforcer.monitorName = 'ConnectivityEnforcer';
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGl2aXR5LWVuZm9yY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9jb25uZWN0aXZpdHktZW5mb3JjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXJEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksaUJBYVg7QUFiRCxXQUFZLGlCQUFpQjtJQUN6Qjs7T0FFRztJQUNILGdDQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdEQUFtQyxDQUFBO0lBQ25DOztPQUVHO0lBQ0gsd0NBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQWJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFhNUI7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFHN0I7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBb0M7UUFDdkQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ25FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMx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LE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDaEgsS0FBSyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUs7Z0JBQzVDLFlBQVksRUFBRSxZQUFZO2FBQzdCLENBQUM7WUFFRixPQUFPLGFBQWEsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7O0FBckljLGdDQUFXLEdBQUcsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBenVyZUNvbnN0YW50cyB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYXp1cmUvYXp1cmUtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSHR0cCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9odHRwJztcclxuaW1wb3J0IHsgTG9nZ2luZyB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGlhZ25vc3RpY3MvbG9nZ2luZyc7XHJcbmltcG9ydCB7IGVtcHR5LCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBamF4RXJyb3IsIEFqYXhSZXF1ZXN0LCBBamF4UmVzcG9uc2UgfSBmcm9tICdyeGpzL2FqYXgnO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBcHBDb250ZXh0U2VydmljZSB9IGZyb20gJy4nO1xyXG5pbXBvcnQgeyBNZXNzYWdlRGlhbG9nTGluaywgTWVzc2FnZURpYWxvZ09wdGlvbnMgfSBmcm9tICcuLi9jb250cm9scyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9jb250cm9scy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5cclxuLyoqXHJcbiAqIERlZmluZXMgdGhlIGNvbm5lY3Rpdml0eSBsZXZlbHMuXHJcbiAqL1xyXG5leHBvcnQgZW51bSBDb25uZWN0aXZpdHlMZXZlbCB7XHJcbiAgICAvKipcclxuICAgICAqIEFsbCBjb25uZWN0aW9ucyBhcmUgYWxsb3dlZC5cclxuICAgICAqL1xyXG4gICAgQWxsID0gJ0FsbCcsXHJcbiAgICAvKipcclxuICAgICAqIENvbm5lY3Rpb25zIHRvIEF6dXJlIGFuZCBnYXRld2F5IGFyZSBhbGxvd2VkLlxyXG4gICAgICovXHJcbiAgICBBenVyZUFuZEdhdGV3YXkgPSAnQXp1cmVBbmRHYXRld2F5JyxcclxuICAgIC8qKlxyXG4gICAgICogT25seSBjb25uZWN0aW9ucyB0byBnYXRld2F5IGFyZSBhbGxvd2VkLlxyXG4gICAgICovXHJcbiAgICBHYXRld2F5ID0gJ0dhdGV3YXknXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25uZWN0aXZpdHkgZW5mb3JjZXIgY2xhc3NcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDb25uZWN0aXZpdHlFbmZvcmNlciB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBtb25pdG9yTmFtZSA9ICdDb25uZWN0aXZpdHlFbmZvcmNlcic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RlcnMgdGhlIGNvbm5lY3Rpdml0eSBlbmZvcmNlciB3aXRoIHRoZSBodHRwIGlmIGNvbm5lY3Rpdml0eSBsZXZlbCBpcyBub3QgJ0FsbCdcclxuICAgICAqIEBwYXJhbSBhcHBDb250ZXh0U2VydmljZSBUaGUgYXBwY29udGV4dCBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVnaXN0ZXIoYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IE1zZnRTbWUuc2VsZigpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpdml0eUxldmVsID0gc2VsZi5Jbml0LmNvbm5lY3Rpdml0eUxldmVsO1xyXG4gICAgICAgIGlmICghY29ubmVjdGl2aXR5TGV2ZWwgfHwgY29ubmVjdGl2aXR5TGV2ZWwgPT09IENvbm5lY3Rpdml0eUxldmVsLkFsbCkge1xyXG4gICAgICAgICAgICBIdHRwLnVucmVnaXN0ZXJNb25pdG9ycyhDb25uZWN0aXZpdHlFbmZvcmNlci5tb25pdG9yTmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEh0dHAucmVnaXN0ZXJNb25pdG9yU2V0KHtcclxuICAgICAgICAgICAgbmFtZTogQ29ubmVjdGl2aXR5RW5mb3JjZXIubW9uaXRvck5hbWUsXHJcbiAgICAgICAgICAgIHByZU1vbml0b3I6IChyZXF1ZXN0OiBBamF4UmVxdWVzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2luZy5sb2dXYXJuaW5nKCdDb25uZWN0aXZpdHlFbmZvcmNlcicsICdDb25uZWN0aXZpdHkgZW5mb3JjZXIgZmFpbGVkIHRvIGFjY2VzcyB0aGUgQWpheFJlcXVlc3Qgb2JqZWN0LicpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihyZXF1ZXN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0VXJsID0gcmVxdWVzdC51cmw7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0VXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgTG9nZ2luZy5sb2dXYXJuaW5nKCdDb25uZWN0aXZpdHlFbmZvcmNlcicsICdDb25uZWN0aXZpdHkgZW5mb3JjZXIgZmFpbGVkIHRvIGdldCB0aGUgcmVxdWVzdCB1cmwuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlcXVlc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChDb25uZWN0aXZpdHlFbmZvcmNlci5pc0dhdGV3YXlSZXF1ZXN0KGFwcENvbnRleHRTZXJ2aWNlLCByZXF1ZXN0VXJsKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICBDb25uZWN0aXZpdHlFbmZvcmNlci5pc1JlcXVlc3RBbGxvd2VkKGNvbm5lY3Rpdml0eUxldmVsLCByZXF1ZXN0VXJsKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIExldCByZXF1ZXN0IGdvIHRocm91Z2hcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocmVxdWVzdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIENvbm5lY3Rpdml0eUVuZm9yY2VyLmdldERpYWxvZ0NvbnRlbnQoYXBwQ29udGV4dFNlcnZpY2UsIGZhbHNlLCByZXF1ZXN0VXJsKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZU1hcChkaWFsb2dDb250ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHBDb250ZXh0U2VydmljZS5mcmFtZS5zaG93RGlhbG9nTWVzc2FnZShkaWFsb2dDb250ZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3NNb25pdG9yOiAocmVzcG9uc2U6IEFqYXhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3JNb25pdG9yOiAoZXJyb3I6IEFqYXhFcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgaWYgQXp1cmUgbG9naW4gaXMgYWxsb3dlZC4gU2hvd3MgYSBjb25uZWN0aXZpdHkgZGlhbG9nIGlmIGl0cyBub3QuXHJcbiAgICAgKiBAcGFyYW0gYXBwQ29udGV4dFNlcnZpY2UgVGhlIGFwcGNvbnRleHQgc2VydmljZVxyXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBBenVyZSBsb2dpbiBpcyBhbGxvd2VkLCBlbHNlIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNoZWNrQXp1cmVMb2dpbkFsbG93ZWQoYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlLCBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qgc2VsZiA9IE1zZnRTbWUuc2VsZigpO1xyXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpdml0eUxldmVsID0gc2VsZi5Jbml0LmNvbm5lY3Rpdml0eUxldmVsO1xyXG4gICAgICAgIGlmIChjb25uZWN0aXZpdHlMZXZlbCA9PT0gQ29ubmVjdGl2aXR5TGV2ZWwuR2F0ZXdheSkge1xyXG4gICAgICAgICAgICBDb25uZWN0aXZpdHlFbmZvcmNlci5nZXREaWFsb2dDb250ZW50KGFwcENvbnRleHRTZXJ2aWNlLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgICAgICBtZXJnZU1hcChkaWFsb2dDb250ZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpYWxvZ1NlcnZpY2Uuc2hvd01lc3NhZ2UoZGlhbG9nQ29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgcmVxdWVzdCBpcyBhIGdhdGV3YXkgcmVxdWVzdC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNHYXRld2F5UmVxdWVzdChhcHBDb250ZXh0U2VydmljZTogQXBwQ29udGV4dFNlcnZpY2UsIHJlcXVlc3RVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhcmVxdWVzdFVybC5zdGFydHNXaXRoKCdodHRwJykgfHwgcmVxdWVzdFVybC5zdGFydHNXaXRoKGFwcENvbnRleHRTZXJ2aWNlLmdhdGV3YXkuZ2F0ZXdheVVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVja3MgdG8gc2VlIGlmIHRoZSByZXF1ZXN0IGNhbiBiZSBhbGxvd2VkIHRvIGdvIHRocm91Z2guXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGlzUmVxdWVzdEFsbG93ZWQoY29ubmVjdGl2aXR5TGV2ZWw6IHN0cmluZywgcmVxdWVzdFVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgYW5ub3VuY2VtZW50c0Jsb2JHbG9iYWwgPSAnaHR0cHM6Ly9hbm5vdW5jZW1lbnRzLmJsb2IuY29yZS53aW5kb3dzLm5ldCc7XHJcbiAgICAgICAgY29uc3QgYW5ub3VuY2VtZW50c0Jsb2JDaGluYSA9ICdodHRwczovL2Fubm91bmNlbWVudHMuYmxvYi5jb3JlLmNoaW5hY2xvdWRhcGkuY24nO1xyXG4gICAgICAgIC8vIFRPRE86IExvYWQgZnJvbSBtYW5pZmVzdC5cclxuICAgICAgICBpZiAoY29ubmVjdGl2aXR5TGV2ZWwgPT09IENvbm5lY3Rpdml0eUxldmVsLkF6dXJlQW5kR2F0ZXdheSkge1xyXG4gICAgICAgICAgICBjb25zdCBhcHByb3ZlZFVybHMgPSBbXHJcbiAgICAgICAgICAgICAgICBBenVyZUNvbnN0YW50cy5henVyZUdsb2JhbEFybUVuZHBvaW50LFxyXG4gICAgICAgICAgICAgICAgQXp1cmVDb25zdGFudHMuYXp1cmVDaGluYUFybUVuZHBvaW50LFxyXG4gICAgICAgICAgICAgICAgYW5ub3VuY2VtZW50c0Jsb2JHbG9iYWwsXHJcbiAgICAgICAgICAgICAgICBhbm5vdW5jZW1lbnRzQmxvYkNoaW5hXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHJldHVybiBhcHByb3ZlZFVybHMuc29tZSh1cmwgPT4gcmVxdWVzdFVybC5zdGFydHNXaXRoKHVybCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBnZXREaWFsb2dDb250ZW50KFxyXG4gICAgICAgIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSxcclxuICAgICAgICBpc0F6dXJlTG9naW46IGJvb2xlYW4sXHJcbiAgICAgICAgcmVxdWVzdFVybDogc3RyaW5nID0gJycpOiBPYnNlcnZhYmxlPE1lc3NhZ2VEaWFsb2dPcHRpb25zPiB7XHJcbiAgICAgICAgLy8gVE9ETzogQ2hlY2sgaWYgc2VydmljZS9kZXNrdG9wIG1vZGVcclxuICAgICAgICByZXR1cm4gYXBwQ29udGV4dFNlcnZpY2UuZ2F0ZXdheS5nZXQoJ2dhdGV3YXkvYWNjZXNzL2NoZWNrJylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICAgICAgbWFwKGlzQWRtaW4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmluZ3MgPSBNc2Z0U21lLmdldFN0cmluZ3M8U3RyaW5ncz4oKS5Nc2Z0U21lU2hlbGwuQW5ndWxhcjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVybmFsTGluazogTWVzc2FnZURpYWxvZ0xpbms7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWRtaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxMaW5rID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcHBDb250ZXh0U2VydmljZS5nYXRld2F5LmdhdGV3YXlVcmwgKyAnL3NldHRpbmdzL2Nvbm5lY3Rpdml0eScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5ncy5Db25uZWN0aXZpdHkuUmVzdHJpY3RlZC5DaGFuZ2VTZXR0aW5ncy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dDb250ZW50OiBNZXNzYWdlRGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uVGV4dDogc3RyaW5ncy5Db21tb24uT0suc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGlzQXp1cmVMb2dpbiA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdzLkNvbm5lY3Rpdml0eS5SZXN0cmljdGVkLkF6dXJlLnRleHQgOiBzdHJpbmdzLkNvbm5lY3Rpdml0eS5SZXN0cmljdGVkLk9mZmxpbmUudGV4dC5mb3JtYXQocmVxdWVzdFVybCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmdzLkNvbm5lY3Rpdml0eS5SZXN0cmljdGVkLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbExpbms6IGV4dGVybmFsTGlua1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWFsb2dDb250ZW50O1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGl2aXR5LWVuZm9yY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9jb25uZWN0aXZpdHktZW5mb3JjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpELE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXJEOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksaUJBYVg7QUFiRCxXQUFZLGlCQUFpQjtJQUN6Qjs7T0FFRztJQUNILGdDQUFXLENBQUE7SUFDWDs7T0FFRztJQUNILHdEQUFtQyxDQUFBO0lBQ25DOztPQUVHO0lBQ0gsd0NBQW1CLENBQUE7QUFDdkIsQ0FBQyxFQWJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFhNUI7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFHN0I7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBb0M7UUFDdkQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ25FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMx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T0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSztnQkFDbkMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUNuQixPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ2hILEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLO2dCQUM1QyxZQUFZLEVBQUUsWUFBWTthQUM3QixDQUFDO1lBRUYsT0FBTyxhQUFhLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDOztBQXhJYyxnQ0FBVyxHQUFHLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXp1cmVDb25zdGFudHMgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2F6dXJlL2F6dXJlLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEh0dHAgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvaHR0cCc7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBlbXB0eSwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWpheEVycm9yLCBBamF4UmVxdWVzdCwgQWpheFJlc3BvbnNlIH0gZnJvbSAncnhqcy9hamF4JztcclxuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXBwQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuJztcclxuaW1wb3J0IHsgTWVzc2FnZURpYWxvZ0xpbmssIE1lc3NhZ2VEaWFsb2dPcHRpb25zIH0gZnJvbSAnLi4vY29udHJvbHMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vY29udHJvbHMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuXHJcbi8qKlxyXG4gKiBEZWZpbmVzIHRoZSBjb25uZWN0aXZpdHkgbGV2ZWxzLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gQ29ubmVjdGl2aXR5TGV2ZWwge1xyXG4gICAgLyoqXHJcbiAgICAgKiBBbGwgY29ubmVjdGlvbnMgYXJlIGFsbG93ZWQuXHJcbiAgICAgKi9cclxuICAgIEFsbCA9ICdBbGwnLFxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25uZWN0aW9ucyB0byBBenVyZSBhbmQgZ2F0ZXdheSBhcmUgYWxsb3dlZC5cclxuICAgICAqL1xyXG4gICAgQXp1cmVBbmRHYXRld2F5ID0gJ0F6dXJlQW5kR2F0ZXdheScsXHJcbiAgICAvKipcclxuICAgICAqIE9ubHkgY29ubmVjdGlvbnMgdG8gZ2F0ZXdheSBhcmUgYWxsb3dlZC5cclxuICAgICAqL1xyXG4gICAgR2F0ZXdheSA9ICdHYXRld2F5J1xyXG59XHJcblxyXG4vKipcclxuICogQ29ubmVjdGl2aXR5IGVuZm9yY2VyIGNsYXNzXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29ubmVjdGl2aXR5RW5mb3JjZXIge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgbW9uaXRvck5hbWUgPSAnQ29ubmVjdGl2aXR5RW5mb3JjZXInO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIHRoZSBjb25uZWN0aXZpdHkgZW5mb3JjZXIgd2l0aCB0aGUgaHR0cCBpZiBjb25uZWN0aXZpdHkgbGV2ZWwgaXMgbm90ICdBbGwnXHJcbiAgICAgKiBAcGFyYW0gYXBwQ29udGV4dFNlcnZpY2UgVGhlIGFwcGNvbnRleHQgc2VydmljZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyKGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSBNc2Z0U21lLnNlbGYoKTtcclxuICAgICAgICBjb25zdCBjb25uZWN0aXZpdHlMZXZlbCA9IHNlbGYuSW5pdC5jb25uZWN0aXZpdHlMZXZlbDtcclxuICAgICAgICBpZiAoIWNvbm5lY3Rpdml0eUxldmVsIHx8IGNvbm5lY3Rpdml0eUxldmVsID09PSBDb25uZWN0aXZpdHlMZXZlbC5BbGwpIHtcclxuICAgICAgICAgICAgSHR0cC51bnJlZ2lzdGVyTW9uaXRvcnMoQ29ubmVjdGl2aXR5RW5mb3JjZXIubW9uaXRvck5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBIdHRwLnJlZ2lzdGVyTW9uaXRvclNldCh7XHJcbiAgICAgICAgICAgIG5hbWU6IENvbm5lY3Rpdml0eUVuZm9yY2VyLm1vbml0b3JOYW1lLFxyXG4gICAgICAgICAgICBwcmVNb25pdG9yOiAocmVxdWVzdDogQWpheFJlcXVlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2dpbmcubG9nV2FybmluZygnQ29ubmVjdGl2aXR5RW5mb3JjZXInLCAnQ29ubmVjdGl2aXR5IGVuZm9yY2VyIGZhaWxlZCB0byBhY2Nlc3MgdGhlIEFqYXhSZXF1ZXN0IG9iamVjdC4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocmVxdWVzdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdFVybCA9IHJlcXVlc3QudXJsO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghcmVxdWVzdFVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2dpbmcubG9nV2FybmluZygnQ29ubmVjdGl2aXR5RW5mb3JjZXInLCAnQ29ubmVjdGl2aXR5IGVuZm9yY2VyIGZhaWxlZCB0byBnZXQgdGhlIHJlcXVlc3QgdXJsLicpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihyZXF1ZXN0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoQ29ubmVjdGl2aXR5RW5mb3JjZXIuaXNHYXRld2F5UmVxdWVzdChhcHBDb250ZXh0U2VydmljZSwgcmVxdWVzdFVybCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGl2aXR5RW5mb3JjZXIuaXNSZXF1ZXN0QWxsb3dlZChjb25uZWN0aXZpdHlMZXZlbCwgcmVxdWVzdFVybCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBMZXQgcmVxdWVzdCBnbyB0aHJvdWdoXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHJlcXVlc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBDb25uZWN0aXZpdHlFbmZvcmNlci5nZXREaWFsb2dDb250ZW50KGFwcENvbnRleHRTZXJ2aWNlLCBmYWxzZSwgcmVxdWVzdFVybClcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoZGlhbG9nQ29udGVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwQ29udGV4dFNlcnZpY2UuZnJhbWUuc2hvd0RpYWxvZ01lc3NhZ2UoZGlhbG9nQ29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHkoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzTW9uaXRvcjogKHJlc3BvbnNlOiBBamF4UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yTW9uaXRvcjogKGVycm9yOiBBamF4RXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIGlmIEF6dXJlIGxvZ2luIGlzIGFsbG93ZWQuIFNob3dzIGEgY29ubmVjdGl2aXR5IGRpYWxvZyBpZiBpdHMgbm90LlxyXG4gICAgICogQHBhcmFtIGFwcENvbnRleHRTZXJ2aWNlIFRoZSBhcHBjb250ZXh0IHNlcnZpY2VcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgQXp1cmUgbG9naW4gaXMgYWxsb3dlZCwgZWxzZSBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjaGVja0F6dXJlTG9naW5BbGxvd2VkKGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSwgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSBNc2Z0U21lLnNlbGYoKTtcclxuICAgICAgICBjb25zdCBjb25uZWN0aXZpdHlMZXZlbCA9IHNlbGYuSW5pdC5jb25uZWN0aXZpdHlMZXZlbDtcclxuICAgICAgICBpZiAoY29ubmVjdGl2aXR5TGV2ZWwgPT09IENvbm5lY3Rpdml0eUxldmVsLkdhdGV3YXkpIHtcclxuICAgICAgICAgICAgQ29ubmVjdGl2aXR5RW5mb3JjZXIuZ2V0RGlhbG9nQ29udGVudChhcHBDb250ZXh0U2VydmljZSwgdHJ1ZSlcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAoZGlhbG9nQ29udGVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWFsb2dTZXJ2aWNlLnNob3dNZXNzYWdlKGRpYWxvZ0NvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyB0byBzZWUgaWYgdGhlIHJlcXVlc3QgaXMgYSBnYXRld2F5IHJlcXVlc3QuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGlzR2F0ZXdheVJlcXVlc3QoYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlLCByZXF1ZXN0VXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXJlcXVlc3RVcmwuc3RhcnRzV2l0aCgnaHR0cCcpIHx8IHJlcXVlc3RVcmwuc3RhcnRzV2l0aChhcHBDb250ZXh0U2VydmljZS5nYXRld2F5LmdhdGV3YXlVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgcmVxdWVzdCBjYW4gYmUgYWxsb3dlZCB0byBnbyB0aHJvdWdoLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBpc1JlcXVlc3RBbGxvd2VkKGNvbm5lY3Rpdml0eUxldmVsOiBzdHJpbmcsIHJlcXVlc3RVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGFubm91bmNlbWVudHNCbG9iR2xvYmFsID0gJ2h0dHBzOi8vYW5ub3VuY2VtZW50cy5ibG9iLmNvcmUud2luZG93cy5uZXQnO1xyXG4gICAgICAgIGNvbnN0IGFubm91bmNlbWVudHNCbG9iQ2hpbmEgPSAnaHR0cHM6Ly9hbm5vdW5jZW1lbnRzLmJsb2IuY29yZS5jaGluYWNsb3VkYXBpLmNuJztcclxuICAgICAgICBjb25zdCBhbm5vdW5jZW1lbnRzQmxvYkZhaXJmYXggPSAnaHR0cHM6Ly9hbm5vdW5jZW1lbnRzLmJsb2IuY29yZS51c2dvdmNsb3VkYXBpLm5ldCc7XHJcbiAgICAgICAgLy8gVE9ETzogTG9hZCBmcm9tIG1hbmlmZXN0LlxyXG4gICAgICAgIGlmIChjb25uZWN0aXZpdHlMZXZlbCA9PT0gQ29ubmVjdGl2aXR5TGV2ZWwuQXp1cmVBbmRHYXRld2F5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFwcHJvdmVkVXJscyA9IFtcclxuICAgICAgICAgICAgICAgIEF6dXJlQ29uc3RhbnRzLmF6dXJlR2xvYmFsQXJtRW5kcG9pbnQsXHJcbiAgICAgICAgICAgICAgICBBenVyZUNvbnN0YW50cy5henVyZUNoaW5hQXJtRW5kcG9pbnQsXHJcbiAgICAgICAgICAgICAgICBBenVyZUNvbnN0YW50cy5henVyZVVTR292QXJtRW5kcG9pbnQsXHJcbiAgICAgICAgICAgICAgICBhbm5vdW5jZW1lbnRzQmxvYkdsb2JhbCxcclxuICAgICAgICAgICAgICAgIGFubm91bmNlbWVudHNCbG9iQ2hpbmEsXHJcbiAgICAgICAgICAgICAgICBhbm5vdW5jZW1lbnRzQmxvYkZhaXJmYXhcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgcmV0dXJuIGFwcHJvdmVkVXJscy5zb21lKHVybCA9PiByZXF1ZXN0VXJsLnN0YXJ0c1dpdGgodXJsKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGdldERpYWxvZ0NvbnRlbnQoXHJcbiAgICAgICAgYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlLFxyXG4gICAgICAgIGlzQXp1cmVMb2dpbjogYm9vbGVhbixcclxuICAgICAgICByZXF1ZXN0VXJsOiBzdHJpbmcgPSAnJyk6IE9ic2VydmFibGU8TWVzc2FnZURpYWxvZ09wdGlvbnM+IHtcclxuICAgICAgICAvLyBUT0RPOiBDaGVjayBpZiBzZXJ2aWNlL2Rlc2t0b3AgbW9kZVxyXG4gICAgICAgIHJldHVybiBhcHBDb250ZXh0U2VydmljZS5nYXRld2F5LmdldCgnZ2F0ZXdheS9hY2Nlc3MvY2hlY2snKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgICAgICBtYXAoaXNBZG1pbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5ncyA9IE1zZnRTbWUuZ2V0U3RyaW5nczxTdHJpbmdzPigpLk1zZnRTbWVTaGVsbC5Bbmd1bGFyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgZXh0ZXJuYWxMaW5rOiBNZXNzYWdlRGlhbG9nTGluaztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBZG1pbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbExpbmsgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwcENvbnRleHRTZXJ2aWNlLmdhdGV3YXkuZ2F0ZXdheVVybCArICcvc2V0dGluZ3MvY29ubmVjdGl2aXR5JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmdzLkNvbm5lY3Rpdml0eS5SZXN0cmljdGVkLkNoYW5nZVNldHRpbmdzLnRleHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0NvbnRlbnQ6IE1lc3NhZ2VEaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25UZXh0OiBzdHJpbmdzLkNvbW1vbi5PSy5zdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaXNBenVyZUxvZ2luID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ3MuQ29ubmVjdGl2aXR5LlJlc3RyaWN0ZWQuQXp1cmUudGV4dCA6IHN0cmluZ3MuQ29ubmVjdGl2aXR5LlJlc3RyaWN0ZWQuT2ZmbGluZS50ZXh0LmZvcm1hdChyZXF1ZXN0VXJsKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0cmluZ3MuQ29ubmVjdGl2aXR5LlJlc3RyaWN0ZWQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsTGluazogZXh0ZXJuYWxMaW5rXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpYWxvZ0NvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|