tnx-shared 5.0.76 → 5.0.77
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/bundles/tnx-shared.umd.js +1032 -892
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-form-base.d.ts +2 -2
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/base/data-list-base.d.ts +1 -3
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/constants.d.ts +0 -4
- package/classes/constants.d.ts.map +1 -1
- package/classes/form-schema.d.ts +25 -38
- package/classes/form-schema.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/address/address.component.d.ts.map +1 -1
- package/components/address-new/address-new.component.d.ts +37 -0
- package/components/address-new/address-new.component.d.ts.map +1 -0
- package/components/address-new/address-new.component.ngfactory.d.ts.map +1 -0
- package/components/address-new/address-new.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/address-new/models/don-vi-hanh-chinh.d.ts +6 -0
- package/components/address-new/models/don-vi-hanh-chinh.d.ts.map +1 -0
- package/components/address-new/services/address.service.d.ts +8 -0
- package/components/address-new/services/address.service.d.ts.map +1 -0
- package/components/address-new/services/address.service.ngfactory.d.ts.map +1 -0
- package/components/autocomplete-picker/autocomplete-picker.component.d.ts +0 -1
- package/components/autocomplete-picker/autocomplete-picker.component.d.ts.map +1 -1
- package/components/common-app-component/common-app-component.d.ts +1 -4
- package/components/common-app-component/common-app-component.d.ts.map +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
- package/components/crud/crud-list/crud-list.component.d.ts +1 -6
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.d.ts.map +1 -1
- package/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +3 -0
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/components/file-explorer/services/download-link.service.d.ts +1 -0
- package/components/file-explorer/services/download-link.service.d.ts.map +1 -1
- package/components/file-explorer/services/file-explorer.service.d.ts +2 -0
- package/components/file-explorer/services/file-explorer.service.d.ts.map +1 -1
- package/components/file-explorer/services/file-object.service.d.ts +2 -0
- package/components/file-explorer/services/file-object.service.d.ts.map +1 -1
- package/components/file-explorer/signature-detail/signature-detail.component.d.ts +8 -0
- package/components/file-explorer/signature-detail/signature-detail.component.d.ts.map +1 -0
- package/components/file-explorer/signature-detail/signature-detail.component.ngfactory.d.ts.map +1 -0
- package/components/file-explorer/signature-detail/signature-detail.component.scss.shim.ngstyle.d.ts.map +1 -0
- package/components/file-upload/file-upload.component.d.ts +3 -0
- package/components/file-upload/file-upload.component.d.ts.map +1 -1
- package/components/mask/mask.component.d.ts +0 -2
- package/components/mask/mask.component.d.ts.map +1 -1
- package/components/service-file-upload/service-file-upload.component.d.ts +3 -0
- package/components/service-file-upload/service-file-upload.component.d.ts.map +1 -1
- package/configs/component-context.constant.d.ts +0 -1
- package/configs/component-context.constant.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +5 -5
- package/esm2015/classes/base/data-list-base.js +23 -48
- package/esm2015/classes/constants.js +1 -6
- package/esm2015/classes/form-schema.js +29 -34
- package/esm2015/components/address/address.component.js +10 -4
- package/esm2015/components/address-new/address-new.component.js +224 -0
- package/esm2015/components/address-new/models/don-vi-hanh-chinh.js +8 -0
- package/esm2015/components/address-new/services/address.service.js +25 -0
- package/esm2015/components/autocomplete-picker/autocomplete-picker.component.js +16 -72
- package/esm2015/components/common-app-component/app.menu.component.js +2 -2
- package/esm2015/components/common-app-component/common-app-component.js +3 -26
- package/esm2015/components/crud/crud-form/crud-form.component.js +11 -10
- package/esm2015/components/crud/crud-list/crud-list.component.js +6 -71
- package/esm2015/components/entity-picker/entity-picker-dialog/components/entity-picker-data/entity-picker-data.component.js +3 -29
- package/esm2015/components/entity-picker/entity-picker-dialog/components/entity-picker-selected/entity-picker-selected.component.js +3 -29
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +155 -14
- package/esm2015/components/file-explorer/services/download-link.service.js +4 -1
- package/esm2015/components/file-explorer/services/file-explorer.service.js +21 -7
- package/esm2015/components/file-explorer/services/file-object.service.js +18 -1
- package/esm2015/components/file-explorer/signature-detail/signature-detail.component.js +66 -0
- package/esm2015/components/file-upload/file-upload.component.js +34 -2
- package/esm2015/components/mask/mask.component.js +4 -8
- package/esm2015/components/service-file-upload/service-file-upload.component.js +32 -2
- package/esm2015/components/workflow/services/entity-workflow-history.service.js +3 -3
- package/esm2015/components/workflow/services/entity-workflow-setting.service.js +4 -4
- package/esm2015/configs/component-context.constant.js +2 -3
- package/esm2015/models/grid-info.js +1 -1
- package/esm2015/pipes/tn-date.pipe.js +2 -12
- package/esm2015/public-api.js +7 -3
- package/esm2015/services/base.service.js +1 -16
- package/esm2015/services/common.service.js +1 -9
- package/esm2015/services/crud.service.js +4 -23
- package/esm2015/services/menu.service.js +3 -6
- package/esm2015/services/notifier.service.js +2 -2
- package/esm2015/services/permission.service.js +2 -9
- package/esm2015/services/template-text-v4.service.js +1 -1
- package/esm2015/services/user-v5.service.js +1 -1
- package/esm2015/services/user.service.js +2 -8
- package/esm2015/tnx-shared.js +94 -94
- package/esm2015/tnx-shared.module.js +6 -2
- package/fesm2015/tnx-shared.js +693 -536
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/grid-info.d.ts +0 -1
- package/models/grid-info.d.ts.map +1 -1
- package/package.json +2 -2
- package/pipes/tn-date.pipe.d.ts +0 -2
- package/pipes/tn-date.pipe.d.ts.map +1 -1
- package/public-api.d.ts +6 -2
- package/public-api.d.ts.map +1 -1
- package/services/base.service.d.ts +0 -1
- package/services/base.service.d.ts.map +1 -1
- package/services/common.service.d.ts +0 -4
- package/services/common.service.d.ts.map +1 -1
- package/services/crud.service.d.ts.map +1 -1
- package/services/menu.service.d.ts +1 -1
- package/services/menu.service.d.ts.map +1 -1
- package/services/permission.service.d.ts +0 -1
- package/services/permission.service.d.ts.map +1 -1
- package/services/template-text-v4.service.d.ts.map +1 -1
- package/services/user.service.d.ts.map +1 -1
- package/tnx-shared.d.ts +93 -93
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +3 -2
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
- package/components/file-explorer/models/file-settings.d.ts +0 -46
- package/components/file-explorer/models/file-settings.d.ts.map +0 -1
- package/esm2015/components/file-explorer/models/file-settings.js +0 -60
- package/esm2015/services/organization-base.service.js +0 -57
- package/services/organization-base.service.d.ts +0 -16
- package/services/organization-base.service.d.ts.map +0 -1
- package/services/organization-base.service.ngfactory.d.ts.map +0 -1
|
@@ -116,6 +116,9 @@ export class DownloadLinkService extends BaseService {
|
|
|
116
116
|
});
|
|
117
117
|
return promise;
|
|
118
118
|
}
|
|
119
|
+
getDownloadForSignUrl(hash) {
|
|
120
|
+
return `${this.serviceUri}/DownloadForSign/${hash}`;
|
|
121
|
+
}
|
|
119
122
|
}
|
|
120
123
|
DownloadLinkService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DownloadLinkService_Factory() { return new DownloadLinkService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService), i0.ɵɵinject(i3.CrudService), i0.ɵɵinject(i4.NotifierService)); }, token: DownloadLinkService, providedIn: "root" });
|
|
121
124
|
DownloadLinkService.decorators = [
|
|
@@ -130,4 +133,4 @@ DownloadLinkService.ctorParameters = () => [
|
|
|
130
133
|
{ type: CrudService },
|
|
131
134
|
{ type: NotifierService }
|
|
132
135
|
];
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtbGluay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9kb3dubG9hZC1saW5rLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFLL0UsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFTaEQsWUFBWSxJQUFnQixFQUFFLFFBQWtCLEVBQ3BDLG9CQUF5QyxFQUN6QyxZQUF5QixFQUN6QixnQkFBaUM7UUFDekMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxlQUFlLENBQUMsQ0FBQztRQUhoSyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFYN0MsZUFBVSxHQUFHLGNBQWMsQ0FBQztRQUM1QixxQkFBZ0IsR0FDWjtZQUNJLEdBQUcsRUFBRSxDQUFDO1lBQ04sU0FBUyxFQUFFLENBQUM7U0FDZixDQUFBO1FBQ0wsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFPeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztRQUNwRixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsU0FBUyxDQUFDO0lBQ3JLLENBQUM7SUFHRCxRQUFRLENBQUMsS0FBOEI7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQzthQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDUCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ1osSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekQsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM3QjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFBO2FBQzdDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELDRCQUE0QixDQUFDLFlBQThCO1FBQ3ZELElBQUksS0FBSyxHQUFHLElBQUksdUJBQXVCLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDO1NBQ2xDO2FBQU07WUFDSCxLQUFLLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7U0FDcEM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBOEI7UUFDL0MsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx1QkFBdUIsQ0FBQztRQUV4RCxJQUFJLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQzdDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUN0QztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQXFDO1FBQ2xELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7YUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNaLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTthQUM3QztRQUNMLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxLQUFnQztRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLCtCQUErQixDQUFDO1FBRWhFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQVk7UUFDaEMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLGFBQWEsSUFBSSxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFlBQVksQ0FBQyxRQUFnQixFQUFFLGNBQXNCLEVBQUUscUJBQTZCO1FBQ2hGLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsdUJBQXVCLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUc7WUFDVixRQUFRO1lBQ1IsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUc7WUFDckMsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7R0FNRDtJQUNDLDRCQUE0QixDQUFDLFdBQW1CLEVBQUUsTUFBYyxFQUFFLFNBQWlCO1FBQy9FLElBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFpQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLGlDQUFpQyxXQUFXLElBQUksTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3hHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7aUJBQ3RCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDUCxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7b0JBQ1osS0FBSyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFO3dCQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsYUFBYSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7cUJBQzFFO2lCQUNKO2dCQUVELE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDUixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzs7OztZQTFISixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVpRLFVBQVU7WUFDRSxRQUFRO1lBSXBCLG1CQUFtQjtZQURuQixXQUFXO1lBRVgsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ3J1ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jcnVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGVFeHBsb3Jlckl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZmlsZS1leHBsb3Jlci1pdGVtJztcclxuaW1wb3J0IHsgR2VuZXJhdGVMaW5rRG93bmxvYWREVE8gfSBmcm9tICcuLi9tb2RlbHMvZ2VuZXJhdGUtbGluay1kb3dubG9hZC1kdG8nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb3dubG9hZExpbmtTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgZW50aXR5TmFtZSA9ICdEb3dubG9hZExpbmsnO1xyXG4gICAgY29udmVydE1vZGVsVHlwZSA9XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwZGY6IDAsXHJcbiAgICAgICAgICAgIHBkZkJhc2U2NDogMVxyXG4gICAgICAgIH1cclxuICAgIGZvbGRlckVuZHBvaW50OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9jcnVkU2VydmljZTogQ3J1ZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9Eb3dubG9hZExpbmtgKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludDtcclxuICAgICAgICB0aGlzLmZvbGRlckVuZHBvaW50ID0gYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9Gb2xkZXJgO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBkb3dubG9hZChtb2RlbDogR2VuZXJhdGVMaW5rRG93bmxvYWREVE8pIHtcclxuICAgICAgICB0aGlzLmdlbmVyYXRlRG93bmxvYWRMaW5rKG1vZGVsKVxyXG4gICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3dubG9hZExpbmsgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKHJzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRvd25sb2FkTGluayk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhcIlThuqNpIHh14buRbmcgY2jGsGEgdGjDoG5oIGPDtG5nXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRHZW5lcmF0ZURvd25sb2FkTGlua01vZGVsKGV4cGxvcmVySXRlbTogRmlsZUV4cGxvcmVySXRlbSkge1xyXG4gICAgICAgIGxldCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICAgIGlmIChleHBsb3Jlckl0ZW0uaXNGaWxlKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLmZpbGVJZCA9IGV4cGxvcmVySXRlbS5pZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtb2RlbC5mb2xkZXJJZCA9IGV4cGxvcmVySXRlbS5pZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZURvd25sb2FkTGluayhtb2RlbDogR2VuZXJhdGVMaW5rRG93bmxvYWREVE8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dlbmVyYXRlRG93bmxvYWRMaW5rYDtcclxuXHJcbiAgICAgICAgaWYgKG1vZGVsLmlzRmlsZVZlcnNpb24gJiYgIW1vZGVsLmZpbGVWZXJzaW9uSWQpIHtcclxuICAgICAgICAgICAgbW9kZWwuZmlsZVZlcnNpb25JZCA9IG1vZGVsLmZpbGVJZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHN2VXJsLCBtb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRNdWx0aXBsZShtb2RlbDogQXJyYXk8R2VuZXJhdGVMaW5rRG93bmxvYWREVE8+KSB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURvd25sb2FkTGlua011bHRpcGxlKG1vZGVsKVxyXG4gICAgICAgICAgICAudGhlbihycyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3dubG9hZExpbmsgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKHJzLmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGRvd25sb2FkTGluayk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NydWRTZXJ2aWNlLnByb2Nlc3NFcnJvclJlc3BvbnNlKHJzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWVyU2VydmljZS5zaG93V2FybmluZyhcIlThuqNpIHh14buRbmcgY2jGsGEgdGjDoG5oIGPDtG5nXCIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZURvd25sb2FkTGlua011bHRpcGxlKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUT1tdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZW5lcmF0ZURvd25sb2FkTGlua011bHRpcGxlYDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3Qoc3ZVcmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBbm9ueW1vdXNEb3dubG9hZFVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Eb3dubG9hZC8ke2hhc2h9YDtcclxuICAgIH1cclxuXHJcbiAgICBjb252ZXJ0VG9QZGYoZmlsZU5hbWU6IHN0cmluZywgZmlsZUluc3RhbmNlSWQ6IHN0cmluZywgZmlsZVZlcnNpb25JbnN0YW5jZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ29udmVydERvY3VtZW50VG9QZGZgO1xyXG4gICAgICAgIGNvbnN0IG1vZGVsID0ge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSxcclxuICAgICAgICAgICAgZmlsZUluc3RhbmNlSWQsXHJcbiAgICAgICAgICAgIGZpbGVWZXJzaW9uSW5zdGFuY2VJZCxcclxuICAgICAgICAgICAgb3V0cHV0VHlwZTogdGhpcy5jb252ZXJ0TW9kZWxUeXBlLnBkZixcclxuICAgICAgICAgICAgdG9CYXNlNjQ6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgbW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gKiBM4bqleSBkYW5oIHPDoWNoIGZpbGUgdHJvbmcgbeG7mXQgdGjGsCBt4bulY1xyXG4gKiBAcGFyYW0gc2VydmljZUNvZGUgOiBtw6MgZOG7i2NoIHbhu6VcclxuICogQHBhcmFtIGVudGl0eSA6IHTDqm4gbOG7m3BcclxuICogQHBhcmFtIGVudGl0eUtleSA6IGtleSh0aMaw4budbmcgbMOgIGlkKSBj4bunYSBi4bqjbiBnaGlcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG4gICAgZ2V0RmlsZUFuZERvd25sb2FkTGlua1B1YmxpYyhzZXJ2aWNlQ29kZTogc3RyaW5nLCBlbnRpdHk6IHN0cmluZywgZW50aXR5S2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmZvbGRlckVuZHBvaW50fS9HZXRGaWxlSW5zZXJ2aWNlRm9sZGVyUHVibGljLyR7c2VydmljZUNvZGV9LyR7ZW50aXR5fS8ke2VudGl0eUtleX1gO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0R2V0KHVybClcclxuICAgICAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocnMuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcnMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5kb3dubG9hZExpbmsgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0Rvd25sb2FkLyR7ZmlsZS5kb3dubG9hZEhhc2h9YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShycyk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoJ05ldHdvcmsgZXJyb3InKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvbiBzZW5kIHJlcXVlc3QgdG8gc2VydmVyJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtbGluay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9kb3dubG9hZC1saW5rLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFLL0UsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFTaEQsWUFBWSxJQUFnQixFQUFFLFFBQWtCLEVBQ3BDLG9CQUF5QyxFQUN6QyxZQUF5QixFQUN6QixnQkFBaUM7UUFDekMsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxlQUFlLENBQUMsQ0FBQztRQUhoSyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFYN0MsZUFBVSxHQUFHLGNBQWMsQ0FBQztRQUM1QixxQkFBZ0Is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RUFBRTtnQkFDUixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQVk7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztJQUN4RCxDQUFDOzs7O1lBOUhKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBWlEsVUFBVTtZQUNFLFFBQVE7WUFJcEIsbUJBQW1CO1lBRG5CLFdBQVc7WUFFWCxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcnVkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NydWQuc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2R1bGUtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ub3RpZmllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZUV4cGxvcmVySXRlbSB9IGZyb20gJy4uL21vZGVscy9maWxlLWV4cGxvcmVyLWl0ZW0nO1xyXG5pbXBvcnQgeyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyB9IGZyb20gJy4uL21vZGVscy9nZW5lcmF0ZS1saW5rLWRvd25sb2FkLWR0byc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERvd25sb2FkTGlua1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBlbnRpdHlOYW1lID0gJ0Rvd25sb2FkTGluayc7XHJcbiAgICBjb252ZXJ0TW9kZWxUeXBlID1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHBkZjogMCxcclxuICAgICAgICAgICAgcGRmQmFzZTY0OiAxXHJcbiAgICAgICAgfVxyXG4gICAgZm9sZGVyRW5kcG9pbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQsIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgX2NydWRTZXJ2aWNlOiBDcnVkU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0Rvd25sb2FkTGlua2ApO1xyXG4gICAgICAgIHRoaXMuZW5kUG9pbnQgPSBfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50O1xyXG4gICAgICAgIHRoaXMuZm9sZGVyRW5kcG9pbnQgPSBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0ZvbGRlcmA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRvd25sb2FkKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTykge1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEb3dubG9hZExpbmsobW9kZWwpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd25sb2FkTGluayA9IHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwocnMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZG93bmxvYWRMaW5rKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKFwiVOG6o2kgeHXhu5FuZyBjaMawYSB0aMOgbmggY8O0bmdcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdlbmVyYXRlRG93bmxvYWRMaW5rTW9kZWwoZXhwbG9yZXJJdGVtOiBGaWxlRXhwbG9yZXJJdGVtKSB7XHJcbiAgICAgICAgbGV0IG1vZGVsID0gbmV3IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKCk7XHJcbiAgICAgICAgaWYgKGV4cGxvcmVySXRlbS5pc0ZpbGUpIHtcclxuICAgICAgICAgICAgbW9kZWwuZmlsZUlkID0gZXhwbG9yZXJJdGVtLmlkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1vZGVsLmZvbGRlcklkID0gZXhwbG9yZXJJdGVtLmlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlRG93bmxvYWRMaW5rKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vR2VuZXJhdGVEb3dubG9hZExpbmtgO1xyXG5cclxuICAgICAgICBpZiAobW9kZWwuaXNGaWxlVmVyc2lvbiAmJiAhbW9kZWwuZmlsZVZlcnNpb25JZCkge1xyXG4gICAgICAgICAgICBtb2RlbC5maWxlVmVyc2lvbklkID0gbW9kZWwuZmlsZUlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3Qoc3ZVcmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZE11bHRpcGxlKG1vZGVsOiBBcnJheTxHZW5lcmF0ZUxpbmtEb3dubG9hZERUTz4pIHtcclxuICAgICAgICB0aGlzLmdlbmVyYXRlRG93bmxvYWRMaW5rTXVsdGlwbGUobW9kZWwpXHJcbiAgICAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd25sb2FkTGluayA9IHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwocnMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4oZG93bmxvYWRMaW5rKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3J1ZFNlcnZpY2UucHJvY2Vzc0Vycm9yUmVzcG9uc2UocnMpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKFwiVOG6o2kgeHXhu5FuZyBjaMawYSB0aMOgbmggY8O0bmdcIik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlRG93bmxvYWRMaW5rTXVsdGlwbGUobW9kZWw6IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPW10pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dlbmVyYXRlRG93bmxvYWRMaW5rTXVsdGlwbGVgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdChzdlVybCwgbW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFub255bW91c0Rvd25sb2FkVXJsKGhhc2g6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L0Rvd25sb2FkLyR7aGFzaH1gO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnZlcnRUb1BkZihmaWxlTmFtZTogc3RyaW5nLCBmaWxlSW5zdGFuY2VJZDogc3RyaW5nLCBmaWxlVmVyc2lvbkluc3RhbmNlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9Db252ZXJ0RG9jdW1lbnRUb1BkZmA7XHJcbiAgICAgICAgY29uc3QgbW9kZWwgPSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBmaWxlSW5zdGFuY2VJZCxcclxuICAgICAgICAgICAgZmlsZVZlcnNpb25JbnN0YW5jZUlkLFxyXG4gICAgICAgICAgICBvdXRwdXRUeXBlOiB0aGlzLmNvbnZlcnRNb2RlbFR5cGUucGRmLFxyXG4gICAgICAgICAgICB0b0Jhc2U2NDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAqIEzhuqV5IGRhbmggc8OhY2ggZmlsZSB0cm9uZyBt4buZdCB0aMawIG3hu6VjXHJcbiAqIEBwYXJhbSBzZXJ2aWNlQ29kZSA6IG3DoyBk4buLY2ggduG7pVxyXG4gKiBAcGFyYW0gZW50aXR5IDogdMOqbiBs4bubcFxyXG4gKiBAcGFyYW0gZW50aXR5S2V5IDoga2V5KHRoxrDhu51uZyBsw6AgaWQpIGPhu6dhIGLhuqNuIGdoaVxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbiAgICBnZXRGaWxlQW5kRG93bmxvYWRMaW5rUHVibGljKHNlcnZpY2VDb2RlOiBzdHJpbmcsIGVudGl0eTogc3RyaW5nLCBlbnRpdHlLZXk6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZm9sZGVyRW5kcG9pbnR9L0dldEZpbGVJbnNlcnZpY2VGb2xkZXJQdWJsaWMvJHtzZXJ2aWNlQ29kZX0vJHtlbnRpdHl9LyR7ZW50aXR5S2V5fWA7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRHZXQodXJsKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChycy5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBycy5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLmRvd25sb2FkTGluayA9IGAke3RoaXMuc2VydmljZVVyaX0vRG93bmxvYWQvJHtmaWxlLmRvd25sb2FkSGFzaH1gO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJzKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCgnTmV0d29yayBlcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9uIHNlbmQgcmVxdWVzdCB0byBzZXJ2ZXInKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREb3dubG9hZEZvclNpZ25VcmwoaGFzaDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVyaX0vRG93bmxvYWRGb3JTaWduLyR7aGFzaH1gO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -7,7 +7,7 @@ import { AuthenService } from '../../../services/authen.service';
|
|
|
7
7
|
import { CommonService } from '../../../services/common.service';
|
|
8
8
|
import { ModuleConfigService } from '../../../services/module-config.service';
|
|
9
9
|
import { GenerateLinkDownloadDTO } from '../models/generate-link-download-dto';
|
|
10
|
-
import
|
|
10
|
+
import FileSaver from 'file-saver';
|
|
11
11
|
import { NotifierService } from '../../../services/notifier.service';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@angular/common/http";
|
|
@@ -182,10 +182,10 @@ export class FileExplorerService {
|
|
|
182
182
|
return `${this._serviceUri}/DownloadLink/${hash}`;
|
|
183
183
|
}
|
|
184
184
|
getDownloadForSignUrl(hash) {
|
|
185
|
-
return `${this._serviceUri}/
|
|
185
|
+
return `${this._serviceUri}/DownloadLink/downloadforsign/${hash}`;
|
|
186
186
|
}
|
|
187
187
|
generateLinkDownload(model) {
|
|
188
|
-
const svUrl = `${this._serviceUri}/
|
|
188
|
+
const svUrl = `${this._serviceUri}/DownloadLink/GenerateDownloadLink`;
|
|
189
189
|
if (model.isFileVersion && !model.fileVersionId) {
|
|
190
190
|
model.fileVersionId = model.fileId;
|
|
191
191
|
}
|
|
@@ -362,13 +362,13 @@ export class FileExplorerService {
|
|
|
362
362
|
return regex.test(ext);
|
|
363
363
|
}
|
|
364
364
|
saveSignedFile(data) {
|
|
365
|
-
return this._http.post(`${this._serviceUri}/
|
|
365
|
+
return this._http.post(`${this._serviceUri}/KySoFile/SaveSignedFile`, data).toPromise();
|
|
366
366
|
}
|
|
367
367
|
getSignatureInfoByFileId(fileId) {
|
|
368
|
-
return this._http.get(`${this._serviceUri}/
|
|
368
|
+
return this._http.get(`${this._serviceUri}/KySoFile/GetListSignatureByFileId?fileId=${fileId}`).toPromise();
|
|
369
369
|
}
|
|
370
370
|
getSignatureInfoByFileVersionId(fileVersionId) {
|
|
371
|
-
return this._http.get(`${this._serviceUri}/
|
|
371
|
+
return this._http.get(`${this._serviceUri}/KySoFile/GetListSignatureByFileVersionId?fileVersionId=${fileVersionId}`).toPromise();
|
|
372
372
|
}
|
|
373
373
|
getUploadFileVersionApiUrl() {
|
|
374
374
|
return `${this._serviceUri}/FileVersion/SaveVersionOnEdit`;
|
|
@@ -418,6 +418,20 @@ export class FileExplorerService {
|
|
|
418
418
|
const svUrl = `${this._serviceUri}/FileObject/CreateServiceFileAnonymous`;
|
|
419
419
|
return this._http.post(svUrl, serviceFileObjectDTO).pipe(catchError((err) => this.handleError(err))).toPromise();
|
|
420
420
|
}
|
|
421
|
+
needConvertBeforeSign(fileName) {
|
|
422
|
+
if (fileName.lastIndexOf('.') === -1) {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
const fileType = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
|
|
426
|
+
if ((/(doc|docx|dot|dotm|dotx|xls|xlsx|ppt|pptx)$/i).test(fileType)) {
|
|
427
|
+
return true;
|
|
428
|
+
}
|
|
429
|
+
return false;
|
|
430
|
+
}
|
|
431
|
+
changeFileExtension(fileName, newExtension) {
|
|
432
|
+
const arr = fileName.split('.');
|
|
433
|
+
return fileName.replace(`.${arr[arr.length - 1]}`, `.${newExtension}`);
|
|
434
|
+
}
|
|
421
435
|
}
|
|
422
436
|
FileExplorerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileExplorerService_Factory() { return new FileExplorerService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.ModuleConfigService), i0.ɵɵinject(i3.AuthenService), i0.ɵɵinject(i4.CommonService), i0.ɵɵinject(i2.ModuleConfigService), i0.ɵɵinject(i5.NotifierService)); }, token: FileExplorerService, providedIn: "root" });
|
|
423
437
|
FileExplorerService.decorators = [
|
|
@@ -433,4 +447,4 @@ FileExplorerService.ctorParameters = () => [
|
|
|
433
447
|
{ type: ModuleConfigService },
|
|
434
448
|
{ type: NotifierService }
|
|
435
449
|
];
|
|
436
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSy9FLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQUVyRSxxQkFBcUI7QUFDckIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBS3pCLE1BQU0sT0FBTyxtQkFBbUI7SUFRN0IsWUFDVyxLQUFpQixFQUNqQixhQUFrQyxFQUNsQyxjQUE2QixFQUM3QixjQUE2QixFQUM3QixvQkFBeUMsRUFDekMsZ0JBQWlDO1FBTGpDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FB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LEdBQUcsQ0FBQyxDQUFDLENBQy9ELENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQixDQUFDLG9CQUE4QjtRQUM3QyxNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLCtCQUErQixDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQWlCLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FDckUsVUFBVSxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUMvRCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxvQkFBOEI7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyx3Q0FBd0MsQ0FBQztRQUUxRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFpQixLQUFLLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQ3JFLFVBQVUsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDL0QsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7O1lBNWpCSCxVQUFVLFNBQUM7Z0JBQ1QsVUFBVSxFQUFFLE1BQU07YUFDcEI7OztZQXZCUSxVQUFVO1lBT1YsbUJBQW1CO1lBRm5CLGFBQWE7WUFDYixhQUFhO1lBQ2IsbUJBQW1CO1lBU25CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBwcmludEpTXyBmcm9tICdwcmludC1qcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5LCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcHlGaWxlRHRvIH0gZnJvbSAnLi4vbW9kZWxzL2NvcHktZmlsZS1kdG8nO1xyXG5pbXBvcnQgeyBGb2xkZXJDcmVhdGVBbmRTZXRQZXJtaXNzaW9uRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2ZvbGRlci1jcmVhdGUtYW5kLXNldC1wZXJtaXNzaW9uLWR0byc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlLWxpbmstZG93bmxvYWQtZHRvJztcclxuaW1wb3J0IHsgTW92ZUZpbGVEVE8gfSBmcm9tICcuLi9tb2RlbHMvbW92ZS1maWxlLWR0byc7XHJcbmltcG9ydCB7IFNlcnZpY2VSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2VydmljZS1yZXF1ZXN0LW1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVGaWxlRFRPIH0gZnJvbSAnLi4vbW9kZWxzL3NoYXJlLWZpbGUtZHRvJztcclxuaW1wb3J0IHsgU2hhcmVGb2xkZXJEVE8gfSBmcm9tICcuLi9tb2RlbHMvc2hhcmUtZm9sZGVyLWR0byc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbm90aWZpZXIuc2VydmljZSc7XHJcblxyXG4vLyBmaXggZm9yIGJ1aWxkIHByb2RcclxuY29uc3QgcHJpbnRKUyA9IHByaW50SlNfO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVFeHBsb3JlclNlcnZpY2Uge1xyXG5cclxuICAgcmVhZG9ubHkgUkVUUllfQ09VTlQ6IG51bWJlciA9IDA7XHJcbiAgIHJlYWRvbmx5IFJFUExBWV9DT1VOVDogbnVtYmVyID0gMTtcclxuXHJcbiAgIHByaXZhdGUgX3NlcnZpY2VVcmk6IHN0cmluZztcclxuICAgX2RvY3VtZW50U2VydmVyVXJsOiBhbnk7XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9hdXRoZW5TZXJ2aWNlOiBBdXRoZW5TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9jb21tb25TZXJpdmNlOiBDb21tb25TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9tb2R1bGVDb25maWdTZXJ2aWNlOiBNb2R1bGVDb25maWdTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIF9ub3RpZmllclNlcnZpY2U6IE5vdGlmaWVyU2VydmljZVxyXG4gICApIHtcclxuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fbW9kdWxlQ29uZmlnLmdldENvbmZpZygpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSA9IGAke2NvbmZpZy5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke2NvbmZpZy5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufWA7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLl9kb2N1bWVudFNlcnZlclVybCA9IHRoaXMuX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmRvY3VtZW50U2VydmVyO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeUZpbGVzKCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldE15RmlsZXNgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTZXJ2aWNlRm9sZGVySWQobW9kZWw6IFNlcnZpY2VSZXF1ZXN0TW9kZWwpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyL0dldFNlcnZpY2VGb2xkZXI/c2VydmljZT0ke21vZGVsLnNlcnZpY2V9JmVudGl0eT0ke21vZGVsLmVudGl0eX0mZW50aXR5SW5zdGFuY2VJZD0ke21vZGVsLmVudGl0eUluc3RhbmNlSWR9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybClcclxuICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKSlcclxuICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVTZXJ2aWNlRm9sZGVyKG1vZGVsOiBTZXJ2aWNlUmVxdWVzdE1vZGVsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9EZWxldGVTZXJ2aWNlRm9sZGVyP3NlcnZpY2U9JHttb2RlbC5zZXJ2aWNlfSZlbnRpdHk9JHttb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHttb2RlbC5lbnRpdHlJbnN0YW5jZUlkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0QnlGb2xkZXJJZChmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAoZm9sZGVySWQgPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpIHtcclxuICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHsgc3RhdHVzOiA0MDAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldE15RHJpdmUoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKGZvbGRlcklkID09ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0TXlEcml2ZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBzaGFyZVJlcGxheSh0aGlzLlJFUExBWV9DT1VOVCksXHJcbiAgICAgICAgIHJldHJ5KHRoaXMuUkVUUllfQ09VTlQpLFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldE15U2hhcmUodXNlcklkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmICh1c2VySWQgPCAwKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRNeVNoYXJlP3VzZXJJZD0ke3VzZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuXHJcbiAgIGdldE15U2hhcmVUb090aGVyKG93bmVySWQ6IG51bWJlcik6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKG93bmVySWQgPCAwKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRNeVNoYXJlVG9PdGhlcj9vd25lcklkPSR7b3duZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRGb2xkZXJUcmVlKGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChmb2xkZXJJZCA9PSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJykge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYXBpVXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRUcmVlP2ZvbGRlcklkPSR7Zm9sZGVySWR9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY29weUZpbGUoY29weUZpbGVEdG86IENvcHlGaWxlRHRvKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ29weUZpbGVgO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgY29weUZpbGVEdG8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY29udmVydERvY3VtZW50VG9QZGZBbmRTYXZlKGNvcHlGaWxlRHRvOiBDb3B5RmlsZUR0byk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NvbnZlcnREb2N1bWVudFRvUGRmQW5kU2F2ZWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBjb3B5RmlsZUR0bykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVOZXdGb2xkZXIoZm9sZGVyOiBGb2xkZXJDcmVhdGVBbmRTZXRQZXJtaXNzaW9uRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZm9sZGVyKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmRlbGV0ZTxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlTXVsdGlwbGVGb2xkZXIoZm9sZGVySWRzKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9kZWxldGVNdWx0aXBsZUZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZm9sZGVySWRzKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHJlbmFtZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nLCBuZXdGb2xkZXJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyLyR7Zm9sZGVySWR9L1JlbmFtZUZvbGRlci8ke25ld0ZvbGRlck5hbWV9YDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucGF0Y2g8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCB7fSkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBzaGFyZUZvbGRlcihzaGFyZUZvbGRlcjogU2hhcmVGb2xkZXJEVE8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRm9sZGVyL1NoYXJlRm9sZGVyYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzaGFyZUZvbGRlcikucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVTaGFyZUZvbGRlcihmb2xkZXJJZDogc3RyaW5nLCBvYmplY3RJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfS9EZWxldGVTaGFyZUZvbGRlci8ke29iamVjdElkfWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFVwbG9hZFVybCgpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3RgO1xyXG4gICB9XHJcblxyXG4gICBnZXRTZXJ2aWNlQ3JlYXRlRmlsZSgpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2VydmljZUZpbGVgO1xyXG4gICB9XHJcblxyXG4gICBnZXRGaWxlRG93bmxvYWRVcmwoZmlsZUlkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvcHVibGljLyR7ZmlsZUlkfS9kb3dubG9hZGA7XHJcbiAgIH1cclxuXHJcbiAgIGdldEJpbmFyeUZpbGVCeUZpbGVJZChmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgIHRoaXMuX2h0dHAuZ2V0KHRoaXMuZ2V0RmlsZURvd25sb2FkVXJsKGZpbGVJZCkpLnRvUHJvbWlzZSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhycyk7XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2NhbkZpbGVVcGxvYWRFbmRwb2ludChjb3JyZWxhdGlvbklkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2Nhbm5lZEZpbGUvJHtjb3JyZWxhdGlvbklkfWA7XHJcbiAgIH1cclxuXHJcbiAgIGdldEZpbGUoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC8ke2ZpbGVJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBhc3luYyBnZXRCYXNlNjRGcm9tRmlsZUlkKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgaXNGaWxlVmVyc2lvblxyXG4gICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKTtcclxuICAgICAgY29uc3QgdXJsRG93bmxvYWQgPSB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKGxpbmsuZGF0YSk7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEJhc2U2NEltYWdlRnJvbVVybCh1cmxEb3dubG9hZCk7XHJcbiAgIH1cclxuXHJcbiAgIGFzeW5jIGdldEJhc2U2NEltYWdlRnJvbVVybChpbWFnZVVybCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGltYWdlVXJsKTtcclxuICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlcy5ibG9iKCk7XHJcblxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgIH07XHJcblxyXG4gICAgICAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlamVjdCgnJyk7XHJcbiAgICAgICAgIH07XHJcbiAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgYXN5bmMgZ2V0QmFzZTY0RnJvbUZpbGVJZFRvVXJsKGZpbGVJZDogc3RyaW5nLCBpc0ZpbGVWZXJzaW9uOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCBsaW5rID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZCh7XHJcbiAgICAgICAgIGZpbGVJZCxcclxuICAgICAgICAgaXNGaWxlVmVyc2lvblxyXG4gICAgICB9IGFzIEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwobGluay5kYXRhKTtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZVZlcnNpb25Eb3dubG9hZFVybChmaWxlVmVyc2lvbklkOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVWZXJzaW9uLyR7ZmlsZVZlcnNpb25JZH0vZG93bmxvYWRgO1xyXG4gICB9XHJcblxyXG4gICBnZXRBbm9ueW1vdXNEb3dubG9hZFVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkTGluay8ke2hhc2h9YDtcclxuICAgfVxyXG5cclxuICAgZ2V0RG93bmxvYWRGb3JTaWduVXJsKGhhc2g6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWQvZG93bmxvYWRmb3JzaWduLyR7aGFzaH1gO1xyXG4gICB9XHJcblxyXG4gICBnZW5lcmF0ZUxpbmtEb3dubG9hZChtb2RlbDogR2VuZXJhdGVMaW5rRG93bmxvYWREVE8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRG93bmxvYWQvR2VuZXJhdGVEb3dubG9hZExpbmtgO1xyXG5cclxuICAgICAgaWYgKG1vZGVsLmlzRmlsZVZlcnNpb24gJiYgIW1vZGVsLmZpbGVWZXJzaW9uSWQpIHtcclxuICAgICAgICAgbW9kZWwuZmlsZVZlcnNpb25JZCA9IG1vZGVsLmZpbGVJZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuXHJcbiAgIGRvd25sb2FkRmlsZShmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlLCBmaWxlTmFtZT8pIHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBuZXcgR2VuZXJhdGVMaW5rRG93bmxvYWREVE8oKTtcclxuICAgICAgbW9kZWwuZmlsZUlkID0gZmlsZUlkO1xyXG4gICAgICBtb2RlbC5pc0ZpbGVWZXJzaW9uID0gaXNGaWxlVmVyc2lvbjtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZChtb2RlbCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgaWYgKGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZVdpdGhGaWxlTmFtZShkb3dubG9hZFVybCwgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aW5kb3cub3Blbihkb3dubG9hZFVybCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBTYXZlIGZpbGUgdOG6o2kgdOG7qyBzZXJ2ZXIgduG7m2kgdMOqbiDEkcaw4bujYyB0cnV54buBbiB2w6BvLCBjaG8gcGjDqXAgbMawdSBj4bqjIGF1ZGlvLCB2aWRlby5cclxuICAgICovXHJcbiAgIHNhdmVXaXRoRmlsZU5hbWUodXJsLCBmaWxlTmFtZSkge1xyXG4gICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhycywgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9KVxyXG4gICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdM4buXaSB04bqjaSBmaWxlJyk7XHJcbiAgICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBnZW5lcmF0ZUxpbmtEb3dubG9hZE11bHRpcGxlKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUT1tdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkL0dlbmVyYXRlRG93bmxvYWRNdWx0aXBsZUxpbmtgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZG93bmxvYWRGb2xkZXIoZm9sZGVySWQ6IHN0cmluZykge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICBtb2RlbC5mb2xkZXJJZCA9IGZvbGRlcklkO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlTGlua0Rvd25sb2FkTXVsdGlwbGUoW21vZGVsXSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgd2luZG93Lm9wZW4oZG93bmxvYWRVcmwpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgZ2V0QmluYXJ5RmlsZShsaW5rRG93bmxvYWQ6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQobGlua0Rvd25sb2FkKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2V0TW92ZUZpbGVJdGVtKG1vdmVGaWxlOiBNb3ZlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L01vdmVGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBtb3ZlRmlsZSkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvRmlsZS8ke2ZpbGVJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVNdWx0aXBsZUZpbGUoZmlsZUlkcyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L2RlbGV0ZU11bHRpcGxlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZmlsZUlkcykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICByZW5hbWVGaWxlKGZpbGVJZDogc3RyaW5nLCBuZXdGaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9L1JlbmFtZUZpbGUvJHtuZXdGaWxlTmFtZX1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wYXRjaDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHt9KS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHNoYXJlRmlsZShzaGFyZUZpbGU6IFNoYXJlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L1NoYXJlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2hhcmVGaWxlKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZVNoYXJlRmlsZShmaWxlSWQ6IHN0cmluZywgb2JqZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0LyR7ZmlsZUlkfS9EZWxldGVTaGFyZUZpbGUvJHtvYmplY3RJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaGFyZWRGaWxlcyhmb2xkZXJJZD86IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRNeVNoYXJlZEZpbGVzYDtcclxuICAgICAgaWYgKGZvbGRlcklkKSB7XHJcbiAgICAgICAgIHN2VXJsID0gYCR7c3ZVcmx9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVc2VyU2hhcmluZ0J5RmlsZShmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRVc2VyU2hhcmluZ0J5RmlsZWA7XHJcbiAgICAgIGlmIChmaWxlSWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/ZmlsZUlkPSR7ZmlsZUlkfWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0Rm9sZGVySWQodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGxldCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRGb2xkZXJJZGA7XHJcbiAgICAgIGlmICh1c2VySWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/dXNlcklkPSR7dXNlcklkfWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuICAgaXNTdXBwb3J0ZWRWaWV3T25saW5lKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgLy8gZmlsZSBraMO0bmcgY8OzIMSRdeG7lWkgLT4gbG/huqFpXHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuXHJcbiAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHBkZnxydGZ8dHh0fGRqdnV8eHBzKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoKC8oY3N2fGZvZHN8b2RzfG90c3x4bHN8eGxzbXx4bHN4fHhsdHx4bHRtfHhsdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICB9XHJcblxyXG4gICBjb252ZXJ0VG9QZGYoZmlsZU5hbWU6IHN0cmluZywgZmlsZUlkOiBzdHJpbmcsIGlzRmlsZVZlcnNpb246IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCBjb252ZXJ0U2VydmljZSA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0NvbnZlcnQvQ29udmVydERvY3VtZW50VG9QZGZgO1xyXG4gICAgICAgICB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGNvbnZlcnRTZXJ2aWNlLCB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGlzRmlsZVZlcnNpb24sXHJcbiAgICAgICAgICAgIG91dHB1dFR5cGU6IDBcclxuICAgICAgICAgfSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSkudG9Qcm9taXNlKCkudGhlbigocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHByaW50KGRhdGE6IGFueSkge1xyXG4gICAgICBpZiAoZGF0YS5pbmRleE9mKCdiYXNlNjQsJykgPiAtMSkge1xyXG4gICAgICAgICBkYXRhID0gZGF0YS5zcGxpdCgnYmFzZTY0LCcpWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHByaW50SlMoeyBwcmludGFibGU6IGRhdGEsIHR5cGU6ICdwZGYnLCBiYXNlNjQ6IHRydWUgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGRvd25sb2FkQnlJZnJhbWUoX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGZpbGVJZCkge1xyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmdldEZpbGVEb3dubG9hZFVybChmaWxlSWQpO1xyXG4gICAgICBjb25zdCBpZnJhbWUgPSBgPGlmcmFtZSBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiB3aWR0aD1cIjBcIiBoZWlnaHQ9XCIwXCIgc3JjPVwiJHt1cmx9XCI+PC9pZnJhbWU+YDtcclxuICAgICAgX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGlmcmFtZSk7XHJcbiAgIH1cclxuXHJcbiAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgIHRoaXMuX2F1dGhlblNlcnZpY2UudHJ5TG9naW5BbmRMb2dvdXRJZkZhbHNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgfVxyXG5cclxuICAgc3VwcG9ydERpZ2l0YWxTaWduYXR1cmUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICBpZiAoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgICBjb25zdCBmaWxlRXh0QXJyID0gZmlsZU5hbWUuc3BsaXQoJy4nKTtcclxuICAgICAgY29uc3QgZXh0ID0gJy4nICsgZmlsZUV4dEFycltmaWxlRXh0QXJyLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gKC9cXC4ocGRmfHhscz94fGRvYz94fG9kdHx0dGYpJC9pKTtcclxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZXh0KTtcclxuICAgfVxyXG5cclxuICAgc2F2ZVNpZ25lZEZpbGUoZGF0YTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9TaWduYXR1cmUvU2F2ZVNpZ25lZEZpbGVgLCBkYXRhKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2lnbmF0dXJlSW5mb0J5RmlsZUlkKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuX3NlcnZpY2VVcml9L1NpZ25hdHVyZS9HZXRMaXN0U2lnbmF0dXJlQnlGaWxlSWQ/ZmlsZUlkPSR7ZmlsZUlkfWApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaWduYXR1cmVJbmZvQnlGaWxlVmVyc2lvbklkKGZpbGVWZXJzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9TaWduYXR1cmUvR2V0TGlzdFNpZ25hdHVyZUJ5RmlsZVZlcnNpb25JZD9maWxlVmVyc2lvbklkPSR7ZmlsZVZlcnNpb25JZH1gKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0VXBsb2FkRmlsZVZlcnNpb25BcGlVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbi9TYXZlVmVyc2lvbk9uRWRpdGA7XHJcbiAgIH1cclxuXHJcbiAgIGdldFJlbW92ZUZpbGVWZXJzaW9uQXBpVXJsKCkge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZVZlcnNpb25gO1xyXG4gICB9XHJcblxyXG4gICBkb3dubG9hZEZpbGVCeVNlcnZpY2VSZXF1ZXN0TW9kZWwoc2VydmljZVJlcXVlc3RNb2RlbDogYW55KSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldERvd25sb2FkRmlsZVNlcnZpY2U/c2VydmljZT0ke3NlcnZpY2VSZXF1ZXN0TW9kZWwuc2VydmljZX0mZW50aXR5PSR7c2VydmljZVJlcXVlc3RNb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHtzZXJ2aWNlUmVxdWVzdE1vZGVsLmVudGl0eUluc3RhbmNlSWR9YDtcclxuICAgfVxyXG5cclxuICAgZ2V0SW1hZ2VGaWxlQmFzZTY0KGZpbGVJZDogc3RyaW5nLCBleHRlbnNpb24gPSAnanBnJywgd2lkdGggPSAwLCBoZWlnaHQgPSAwKTogUHJvbWlzZTxhbnk+IHsgLy8gcmV0dXJuIGJhc2UgNjRcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9nZXRJbWFnZUZpbGVCYXNlNjQ/ZmlsZUlkPSR7ZmlsZUlkfSZleHRlbnNpb249JHtleHRlbnNpb259JndpZHRoPSR7d2lkdGh9JmhlaWdodD0ke2hlaWdodH1gO1xyXG4gICAgICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBM4bqleSBmaWxlIGLhurFuZyBi4buZIDMga2V5OiBzZXJ2aWNlLCBlbnRpdHksIGVudGl0eUluc3RhbmNlSWRcclxuICAgICovXHJcbiAgIGdldFNpbmdsZVNlcnZpY2VGaWxlKHNlcnZpY2VSZXF1ZXN0TW9kZWw6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldFNpbmdsZVNlcnZpY2VGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzZXJ2aWNlUmVxdWVzdE1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNlcnZpY2VGaWxlRXhwbG9yZXIoc2VydmljZUNvZGU6IHN0cmluZywgZW50aXR5OiBzdHJpbmcsIGVudGl0eUtleTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0U2VydmljZUZpbGVFeHBsb3Jlcj9zZXJ2aWNlQ29kZT0ke3NlcnZpY2VDb2RlfSZlbnRpdHk9JHtlbnRpdHl9JmVudGl0eUtleT0ke2VudGl0eUtleX1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVTZXJ2aWNlRmlsZShzZXJ2aWNlRmlsZU9iamVjdERUTzogRm9ybURhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9DcmVhdGVTZXJ2aWNlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2VydmljZUZpbGVPYmplY3REVE8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXMoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXNgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxufVxyXG4iXX0=
|
|
450
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1leHBsb3Jlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWV4cGxvcmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEtBQUssUUFBUSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBSy9FLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFFckUscUJBQXFCO0FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztBQUt6QixNQUFNLE9BQU8sbUJBQW1CO0lBUTdCLFlBQ1csS0FBaUIsRUFDakIsYUFBa0MsRUFDbEMsY0FBNkIsRUFDN0IsY0FBNkIsRUFDN0Isb0JBQXlDLEVBQ3pDLGdCQUFpQztRQUxqQyxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3Qix5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aEIsQ0FBQztJQUNELG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsWUFBb0I7UUFDdkQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7O1lBMWtCSCxVQUFVLFNBQUM7Z0JBQ1QsVUFBVSxFQUFFLE1BQU07YUFDcEI7OztZQXZCUSxVQUFVO1lBT1YsbUJBQW1CO1lBRm5CLGFBQWE7WUFDYixhQUFhO1lBQ2IsbUJBQW1CO1lBU25CLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBwcmludEpTXyBmcm9tICdwcmludC1qcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5LCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQXV0aGVuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcHlGaWxlRHRvIH0gZnJvbSAnLi4vbW9kZWxzL2NvcHktZmlsZS1kdG8nO1xyXG5pbXBvcnQgeyBGb2xkZXJDcmVhdGVBbmRTZXRQZXJtaXNzaW9uRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2ZvbGRlci1jcmVhdGUtYW5kLXNldC1wZXJtaXNzaW9uLWR0byc7XHJcbmltcG9ydCB7IEdlbmVyYXRlTGlua0Rvd25sb2FkRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2dlbmVyYXRlLWxpbmstZG93bmxvYWQtZHRvJztcclxuaW1wb3J0IHsgTW92ZUZpbGVEVE8gfSBmcm9tICcuLi9tb2RlbHMvbW92ZS1maWxlLWR0byc7XHJcbmltcG9ydCB7IFNlcnZpY2VSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2VydmljZS1yZXF1ZXN0LW1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVGaWxlRFRPIH0gZnJvbSAnLi4vbW9kZWxzL3NoYXJlLWZpbGUtZHRvJztcclxuaW1wb3J0IHsgU2hhcmVGb2xkZXJEVE8gfSBmcm9tICcuLi9tb2RlbHMvc2hhcmUtZm9sZGVyLWR0byc7XHJcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IE5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25vdGlmaWVyLnNlcnZpY2UnO1xyXG5cclxuLy8gZml4IGZvciBidWlsZCBwcm9kXHJcbmNvbnN0IHByaW50SlMgPSBwcmludEpTXztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlRXhwbG9yZXJTZXJ2aWNlIHtcclxuXHJcbiAgIHJlYWRvbmx5IFJFVFJZX0NPVU5UOiBudW1iZXIgPSAwO1xyXG4gICByZWFkb25seSBSRVBMQVlfQ09VTlQ6IG51bWJlciA9IDE7XHJcblxyXG4gICBwcml2YXRlIF9zZXJ2aWNlVXJpOiBzdHJpbmc7XHJcbiAgIF9kb2N1bWVudFNlcnZlclVybDogYW55O1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZzogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfYXV0aGVuU2VydmljZTogQXV0aGVuU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfY29tbW9uU2VyaXZjZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBfbm90aWZpZXJTZXJ2aWNlOiBOb3RpZmllclNlcnZpY2VcclxuICAgKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX21vZHVsZUNvbmZpZy5nZXRDb25maWcoKTtcclxuXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgPSBgJHtjb25maWcuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludH0vJHtjb25maWcuZW52aXJvbm1lbnQuYXBpVmVyc2lvbn1gO1xyXG5cclxuICAgICAgdGhpcy5fZG9jdW1lbnRTZXJ2ZXJVcmwgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5kb2N1bWVudFNlcnZlcjtcclxuICAgfVxyXG5cclxuICAgZ2V0TXlGaWxlcygpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRNeUZpbGVzYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2VydmljZUZvbGRlcklkKG1vZGVsOiBTZXJ2aWNlUmVxdWVzdE1vZGVsKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRTZXJ2aWNlRm9sZGVyP3NlcnZpY2U9JHttb2RlbC5zZXJ2aWNlfSZlbnRpdHk9JHttb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHttb2RlbC5lbnRpdHlJbnN0YW5jZUlkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpXHJcbiAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSkpXHJcbiAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlU2VydmljZUZvbGRlcihtb2RlbDogU2VydmljZVJlcXVlc3RNb2RlbCk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvRGVsZXRlU2VydmljZUZvbGRlcj9zZXJ2aWNlPSR7bW9kZWwuc2VydmljZX0mZW50aXR5PSR7bW9kZWwuZW50aXR5fSZlbnRpdHlJbnN0YW5jZUlkPSR7bW9kZWwuZW50aXR5SW5zdGFuY2VJZH1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKVxyXG4gICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKVxyXG4gICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldEJ5Rm9sZGVySWQoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgaWYgKGZvbGRlcklkID09ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKSB7XHJcbiAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7IHN0YXR1czogNDAwIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGU/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeURyaXZlKGZvbGRlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChmb2xkZXJJZCA9PSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJykge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldE15RHJpdmU/Zm9sZGVySWQ9JHtmb2xkZXJJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRNeVNoYXJlKHVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAodXNlcklkIDwgMCkge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvR2V0TXlTaGFyZT91c2VySWQ9JHt1c2VySWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuXHJcblxyXG4gICBnZXRNeVNoYXJlVG9PdGhlcihvd25lcklkOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGlmIChvd25lcklkIDwgMCkge1xyXG4gICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoeyBzdGF0dXM6IDQwMCB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvR2V0TXlTaGFyZVRvT3RoZXI/b3duZXJJZD0ke293bmVySWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0Rm9sZGVyVHJlZShmb2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBpZiAoZm9sZGVySWQgPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpIHtcclxuICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHsgc3RhdHVzOiA0MDAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFwaVVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0VHJlZT9mb2xkZXJJZD0ke2ZvbGRlcklkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsKVxyXG4gICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKVxyXG4gICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGNvcHlGaWxlKGNvcHlGaWxlRHRvOiBDb3B5RmlsZUR0byk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NvcHlGaWxlYDtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGNvcHlGaWxlRHRvKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGNvbnZlcnREb2N1bWVudFRvUGRmQW5kU2F2ZShjb3B5RmlsZUR0bzogQ29weUZpbGVEdG8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9Db252ZXJ0RG9jdW1lbnRUb1BkZkFuZFNhdmVgO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgY29weUZpbGVEdG8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY3JlYXRlTmV3Rm9sZGVyKGZvbGRlcjogRm9sZGVyQ3JlYXRlQW5kU2V0UGVybWlzc2lvbkRUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXJgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGZvbGRlcikucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvJHtmb2xkZXJJZH1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZU11bHRpcGxlRm9sZGVyKGZvbGRlcklkcyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvZGVsZXRlTXVsdGlwbGVGb2xkZXJgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIGZvbGRlcklkcykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICByZW5hbWVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZywgbmV3Rm9sZGVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci8ke2ZvbGRlcklkfS9SZW5hbWVGb2xkZXIvJHtuZXdGb2xkZXJOYW1lfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBhdGNoPFJlc3BvbnNlUmVzdWx0PihzdlVybCwge30pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2hhcmVGb2xkZXIoc2hhcmVGb2xkZXI6IFNoYXJlRm9sZGVyRFRPKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9TaGFyZUZvbGRlcmA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2hhcmVGb2xkZXIpLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZGVsZXRlU2hhcmVGb2xkZXIoZm9sZGVySWQ6IHN0cmluZywgb2JqZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Gb2xkZXIvJHtmb2xkZXJJZH0vRGVsZXRlU2hhcmVGb2xkZXIvJHtvYmplY3RJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVcGxvYWRVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0YDtcclxuICAgfVxyXG5cclxuICAgZ2V0U2VydmljZUNyZWF0ZUZpbGUoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NyZWF0ZVNlcnZpY2VGaWxlYDtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZURvd25sb2FkVXJsKGZpbGVJZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L3B1YmxpYy8ke2ZpbGVJZH0vZG93bmxvYWRgO1xyXG4gICB9XHJcblxyXG4gICBnZXRCaW5hcnlGaWxlQnlGaWxlSWQoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICB0aGlzLl9odHRwLmdldCh0aGlzLmdldEZpbGVEb3dubG9hZFVybChmaWxlSWQpKS50b1Byb21pc2UoKS50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cocnMpO1xyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNjYW5GaWxlVXBsb2FkRW5kcG9pbnQoY29ycmVsYXRpb25JZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0NyZWF0ZVNjYW5uZWRGaWxlLyR7Y29ycmVsYXRpb25JZH1gO1xyXG4gICB9XHJcblxyXG4gICBnZXRGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9YDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgYXN5bmMgZ2V0QmFzZTY0RnJvbUZpbGVJZChmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgY29uc3QgbGluayA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWQoe1xyXG4gICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgIGlzRmlsZVZlcnNpb25cclxuICAgICAgfSBhcyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk7XHJcbiAgICAgIGNvbnN0IHVybERvd25sb2FkID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChsaW5rLmRhdGEpO1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRCYXNlNjRJbWFnZUZyb21VcmwodXJsRG93bmxvYWQpO1xyXG4gICB9XHJcblxyXG4gICBhc3luYyBnZXRCYXNlNjRJbWFnZUZyb21VcmwoaW1hZ2VVcmwpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChpbWFnZVVybCk7XHJcbiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCByZXMuYmxvYigpO1xyXG5cclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG5cclxuICAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0LnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICB9O1xyXG5cclxuICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoJycpO1xyXG4gICAgICAgICB9O1xyXG4gICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGFzeW5jIGdldEJhc2U2NEZyb21GaWxlSWRUb1VybChmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgY29uc3QgbGluayA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVMaW5rRG93bmxvYWQoe1xyXG4gICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgIGlzRmlsZVZlcnNpb25cclxuICAgICAgfSBhcyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEFub255bW91c0Rvd25sb2FkVXJsKGxpbmsuZGF0YSk7XHJcbiAgIH1cclxuXHJcbiAgIGdldEZpbGVWZXJzaW9uRG93bmxvYWRVcmwoZmlsZVZlcnNpb25JZDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbi8ke2ZpbGVWZXJzaW9uSWR9L2Rvd25sb2FkYDtcclxuICAgfVxyXG5cclxuICAgZ2V0QW5vbnltb3VzRG93bmxvYWRVcmwoaGFzaDogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Eb3dubG9hZExpbmsvJHtoYXNofWA7XHJcbiAgIH1cclxuXHJcbiAgIGdldERvd25sb2FkRm9yU2lnblVybChoYXNoOiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkTGluay9kb3dubG9hZGZvcnNpZ24vJHtoYXNofWA7XHJcbiAgIH1cclxuXHJcbiAgIGdlbmVyYXRlTGlua0Rvd25sb2FkKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9Eb3dubG9hZExpbmsvR2VuZXJhdGVEb3dubG9hZExpbmtgO1xyXG5cclxuICAgICAgaWYgKG1vZGVsLmlzRmlsZVZlcnNpb24gJiYgIW1vZGVsLmZpbGVWZXJzaW9uSWQpIHtcclxuICAgICAgICAgbW9kZWwuZmlsZVZlcnNpb25JZCA9IG1vZGVsLmZpbGVJZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuXHJcbiAgIGRvd25sb2FkRmlsZShmaWxlSWQ6IHN0cmluZywgaXNGaWxlVmVyc2lvbjogYm9vbGVhbiA9IGZhbHNlLCBmaWxlTmFtZT8pIHtcclxuICAgICAgY29uc3QgbW9kZWwgPSBuZXcgR2VuZXJhdGVMaW5rRG93bmxvYWREVE8oKTtcclxuICAgICAgbW9kZWwuZmlsZUlkID0gZmlsZUlkO1xyXG4gICAgICBtb2RlbC5pc0ZpbGVWZXJzaW9uID0gaXNGaWxlVmVyc2lvbjtcclxuICAgICAgdGhpcy5nZW5lcmF0ZUxpbmtEb3dubG9hZChtb2RlbCkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgaWYgKGZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZVdpdGhGaWxlTmFtZShkb3dubG9hZFVybCwgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aW5kb3cub3Blbihkb3dubG9hZFVybCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBTYXZlIGZpbGUgdOG6o2kgdOG7qyBzZXJ2ZXIgduG7m2kgdMOqbiDEkcaw4bujYyB0cnV54buBbiB2w6BvLCBjaG8gcGjDqXAgbMawdSBj4bqjIGF1ZGlvLCB2aWRlby5cclxuICAgICovXHJcbiAgIHNhdmVXaXRoRmlsZU5hbWUodXJsLCBmaWxlTmFtZSkge1xyXG4gICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgIC50aGVuKHJzID0+IHtcclxuICAgICAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhycywgZmlsZU5hbWUpO1xyXG4gICAgICAgICB9KVxyXG4gICAgICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm90aWZpZXJTZXJ2aWNlLnNob3dXYXJuaW5nKCdM4buXaSB04bqjaSBmaWxlJyk7XHJcbiAgICAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICBnZW5lcmF0ZUxpbmtEb3dubG9hZE11bHRpcGxlKG1vZGVsOiBHZW5lcmF0ZUxpbmtEb3dubG9hZERUT1tdKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0Rvd25sb2FkL0dlbmVyYXRlRG93bmxvYWRNdWx0aXBsZUxpbmtgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIG1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZG93bmxvYWRGb2xkZXIoZm9sZGVySWQ6IHN0cmluZykge1xyXG4gICAgICBjb25zdCBtb2RlbCA9IG5ldyBHZW5lcmF0ZUxpbmtEb3dubG9hZERUTygpO1xyXG4gICAgICBtb2RlbC5mb2xkZXJJZCA9IGZvbGRlcklkO1xyXG4gICAgICB0aGlzLmdlbmVyYXRlTGlua0Rvd25sb2FkTXVsdGlwbGUoW21vZGVsXSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgIGNvbnN0IGRvd25sb2FkVXJsID0gdGhpcy5nZXRBbm9ueW1vdXNEb3dubG9hZFVybChyZXNwb25zZS5kYXRhKTtcclxuICAgICAgICAgd2luZG93Lm9wZW4oZG93bmxvYWRVcmwpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgZ2V0QmluYXJ5RmlsZShsaW5rRG93bmxvYWQ6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQobGlua0Rvd25sb2FkKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgc2V0TW92ZUZpbGVJdGVtKG1vdmVGaWxlOiBNb3ZlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L01vdmVGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBtb3ZlRmlsZSkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVGaWxlKGZpbGVJZDogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvRmlsZS8ke2ZpbGVJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBkZWxldGVNdWx0aXBsZUZpbGUoZmlsZUlkcyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L2RlbGV0ZU11bHRpcGxlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgZmlsZUlkcykucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICByZW5hbWVGaWxlKGZpbGVJZDogc3RyaW5nLCBuZXdGaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvJHtmaWxlSWR9L1JlbmFtZUZpbGUvJHtuZXdGaWxlTmFtZX1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wYXRjaDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHt9KS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIHNoYXJlRmlsZShzaGFyZUZpbGU6IFNoYXJlRmlsZURUTyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L1NoYXJlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2hhcmVGaWxlKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGRlbGV0ZVNoYXJlRmlsZShmaWxlSWQ6IHN0cmluZywgb2JqZWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0LyR7ZmlsZUlkfS9EZWxldGVTaGFyZUZpbGUvJHtvYmplY3RJZH1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaGFyZWRGaWxlcyhmb2xkZXJJZD86IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRNeVNoYXJlZEZpbGVzYDtcclxuICAgICAgaWYgKGZvbGRlcklkKSB7XHJcbiAgICAgICAgIHN2VXJsID0gYCR7c3ZVcmx9P2ZvbGRlcklkPSR7Zm9sZGVySWR9YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRVc2VyU2hhcmluZ0J5RmlsZShmaWxlSWQ6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgbGV0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9HZXRVc2VyU2hhcmluZ0J5RmlsZWA7XHJcbiAgICAgIGlmIChmaWxlSWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/ZmlsZUlkPSR7ZmlsZUlkfWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwpLnBpcGUoXHJcbiAgICAgICAgIHNoYXJlUmVwbGF5KHRoaXMuUkVQTEFZX0NPVU5UKSxcclxuICAgICAgICAgcmV0cnkodGhpcy5SRVRSWV9DT1VOVCksXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0Rm9sZGVySWQodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGxldCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZvbGRlci9HZXRGb2xkZXJJZGA7XHJcbiAgICAgIGlmICh1c2VySWQpIHtcclxuICAgICAgICAgc3ZVcmwgPSBgJHtzdlVybH0/dXNlcklkPSR7dXNlcklkfWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgc2hhcmVSZXBsYXkodGhpcy5SRVBMQVlfQ09VTlQpLFxyXG4gICAgICAgICByZXRyeSh0aGlzLlJFVFJZX0NPVU5UKSxcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG5cclxuICAgaXNTdXBwb3J0ZWRWaWV3T25saW5lKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgLy8gZmlsZSBraMO0bmcgY8OzIMSRdeG7lWkgLT4gbG/huqFpXHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuXHJcbiAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHBkZnxydGZ8dHh0fGRqdnV8eHBzKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoKC8oY3N2fGZvZHN8b2RzfG90c3x4bHN8eGxzbXx4bHN4fHhsdHx4bHRtfHhsdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgfVxyXG5cclxuICAgZ2V0RmlsZVR5cGUoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIGlmIChmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpID09PSAtMSkge1xyXG4gICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICB9XHJcblxyXG4gICBjb252ZXJ0VG9QZGYoZmlsZU5hbWU6IHN0cmluZywgZmlsZUlkOiBzdHJpbmcsIGlzRmlsZVZlcnNpb246IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICBjb25zdCBjb252ZXJ0U2VydmljZSA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0NvbnZlcnQvQ29udmVydERvY3VtZW50VG9QZGZgO1xyXG4gICAgICAgICB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KGNvbnZlcnRTZXJ2aWNlLCB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBmaWxlSWQsXHJcbiAgICAgICAgICAgIGlzRmlsZVZlcnNpb24sXHJcbiAgICAgICAgICAgIG91dHB1dFR5cGU6IDBcclxuICAgICAgICAgfSwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSkudG9Qcm9taXNlKCkudGhlbigocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIHByaW50KGRhdGE6IGFueSkge1xyXG4gICAgICBpZiAoZGF0YS5pbmRleE9mKCdiYXNlNjQsJykgPiAtMSkge1xyXG4gICAgICAgICBkYXRhID0gZGF0YS5zcGxpdCgnYmFzZTY0LCcpWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHByaW50SlMoeyBwcmludGFibGU6IGRhdGEsIHR5cGU6ICdwZGYnLCBiYXNlNjQ6IHRydWUgfSk7XHJcbiAgIH1cclxuXHJcbiAgIGRvd25sb2FkQnlJZnJhbWUoX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGZpbGVJZCkge1xyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmdldEZpbGVEb3dubG9hZFVybChmaWxlSWQpO1xyXG4gICAgICBjb25zdCBpZnJhbWUgPSBgPGlmcmFtZSBzdHlsZT1cImRpc3BsYXk6bm9uZTtcIiB3aWR0aD1cIjBcIiBoZWlnaHQ9XCIwXCIgc3JjPVwiJHt1cmx9XCI+PC9pZnJhbWU+YDtcclxuICAgICAgX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGlmcmFtZSk7XHJcbiAgIH1cclxuXHJcbiAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpIHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgIHRoaXMuX2F1dGhlblNlcnZpY2UudHJ5TG9naW5BbmRMb2dvdXRJZkZhbHNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuICAgfVxyXG5cclxuICAgc3VwcG9ydERpZ2l0YWxTaWduYXR1cmUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICBpZiAoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgICBjb25zdCBmaWxlRXh0QXJyID0gZmlsZU5hbWUuc3BsaXQoJy4nKTtcclxuICAgICAgY29uc3QgZXh0ID0gJy4nICsgZmlsZUV4dEFycltmaWxlRXh0QXJyLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gKC9cXC4ocGRmfHhscz94fGRvYz94fG9kdHx0dGYpJC9pKTtcclxuICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoZXh0KTtcclxuICAgfVxyXG5cclxuICAgc2F2ZVNpZ25lZEZpbGUoZGF0YTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihgJHt0aGlzLl9zZXJ2aWNlVXJpfS9LeVNvRmlsZS9TYXZlU2lnbmVkRmlsZWAsIGRhdGEpLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBnZXRTaWduYXR1cmVJbmZvQnlGaWxlSWQoZmlsZUlkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5fc2VydmljZVVyaX0vS3lTb0ZpbGUvR2V0TGlzdFNpZ25hdHVyZUJ5RmlsZUlkP2ZpbGVJZD0ke2ZpbGVJZH1gKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0U2lnbmF0dXJlSW5mb0J5RmlsZVZlcnNpb25JZChmaWxlVmVyc2lvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5fc2VydmljZVVyaX0vS3lTb0ZpbGUvR2V0TGlzdFNpZ25hdHVyZUJ5RmlsZVZlcnNpb25JZD9maWxlVmVyc2lvbklkPSR7ZmlsZVZlcnNpb25JZH1gKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgZ2V0VXBsb2FkRmlsZVZlcnNpb25BcGlVcmwoKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlVmVyc2lvbi9TYXZlVmVyc2lvbk9uRWRpdGA7XHJcbiAgIH1cclxuXHJcbiAgIGdldFJlbW92ZUZpbGVWZXJzaW9uQXBpVXJsKCkge1xyXG4gICAgICByZXR1cm4gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZVZlcnNpb25gO1xyXG4gICB9XHJcblxyXG4gICBkb3dubG9hZEZpbGVCeVNlcnZpY2VSZXF1ZXN0TW9kZWwoc2VydmljZVJlcXVlc3RNb2RlbDogYW55KSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldERvd25sb2FkRmlsZVNlcnZpY2U/c2VydmljZT0ke3NlcnZpY2VSZXF1ZXN0TW9kZWwuc2VydmljZX0mZW50aXR5PSR7c2VydmljZVJlcXVlc3RNb2RlbC5lbnRpdHl9JmVudGl0eUluc3RhbmNlSWQ9JHtzZXJ2aWNlUmVxdWVzdE1vZGVsLmVudGl0eUluc3RhbmNlSWR9YDtcclxuICAgfVxyXG5cclxuICAgZ2V0SW1hZ2VGaWxlQmFzZTY0KGZpbGVJZDogc3RyaW5nLCBleHRlbnNpb24gPSAnanBnJywgd2lkdGggPSAwLCBoZWlnaHQgPSAwKTogUHJvbWlzZTxhbnk+IHsgLy8gcmV0dXJuIGJhc2UgNjRcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9nZXRJbWFnZUZpbGVCYXNlNjQ/ZmlsZUlkPSR7ZmlsZUlkfSZleHRlbnNpb249JHtleHRlbnNpb259JndpZHRoPSR7d2lkdGh9JmhlaWdodD0ke2hlaWdodH1gO1xyXG4gICAgICAgICB0aGlzLl9odHRwLmdldDxhbnk+KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicgfSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4ocnMgPT4ge1xyXG4gICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgfSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICBpZiAocnMpIHtcclxuICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwocnMpO1xyXG4gICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKlxyXG4gICAgKiBM4bqleSBmaWxlIGLhurFuZyBi4buZIDMga2V5OiBzZXJ2aWNlLCBlbnRpdHksIGVudGl0eUluc3RhbmNlSWRcclxuICAgICovXHJcbiAgIGdldFNpbmdsZVNlcnZpY2VGaWxlKHNlcnZpY2VSZXF1ZXN0TW9kZWw6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgY29uc3Qgc3ZVcmwgPSBgJHt0aGlzLl9zZXJ2aWNlVXJpfS9GaWxlT2JqZWN0L0dldFNpbmdsZVNlcnZpY2VGaWxlYDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHN2VXJsLCBzZXJ2aWNlUmVxdWVzdE1vZGVsKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuXHJcbiAgIGdldFNlcnZpY2VGaWxlRXhwbG9yZXIoc2VydmljZUNvZGU6IHN0cmluZywgZW50aXR5OiBzdHJpbmcsIGVudGl0eUtleTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvR2V0U2VydmljZUZpbGVFeHBsb3Jlcj9zZXJ2aWNlQ29kZT0ke3NlcnZpY2VDb2RlfSZlbnRpdHk9JHtlbnRpdHl9JmVudGl0eUtleT0ke2VudGl0eUtleX1gO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJlc3BvbnNlUmVzdWx0PihzdlVybCkucGlwZShcclxuICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpKVxyXG4gICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICB9XHJcblxyXG4gICBjcmVhdGVTZXJ2aWNlRmlsZShzZXJ2aWNlRmlsZU9iamVjdERUTzogRm9ybURhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgIGNvbnN0IHN2VXJsID0gYCR7dGhpcy5fc2VydmljZVVyaX0vRmlsZU9iamVjdC9DcmVhdGVTZXJ2aWNlRmlsZWA7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFJlc3BvbnNlUmVzdWx0PihzdlVybCwgc2VydmljZUZpbGVPYmplY3REVE8pLnBpcGUoXHJcbiAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyKSlcclxuICAgICAgKS50b1Byb21pc2UoKTtcclxuICAgfVxyXG5cclxuICAgY3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXMoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICBjb25zdCBzdlVybCA9IGAke3RoaXMuX3NlcnZpY2VVcml9L0ZpbGVPYmplY3QvQ3JlYXRlU2VydmljZUZpbGVBbm9ueW1vdXNgO1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxSZXNwb25zZVJlc3VsdD4oc3ZVcmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKS5waXBlKFxyXG4gICAgICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycikpXHJcbiAgICAgICkudG9Qcm9taXNlKCk7XHJcbiAgIH1cclxuICAgbmVlZENvbnZlcnRCZWZvcmVTaWduKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgaWYgKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgaWYgKCgvKGRvY3xkb2N4fGRvdHxkb3RtfGRvdHh8eGxzfHhsc3h8cHB0fHBwdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgIH1cclxuICAgY2hhbmdlRmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nLCBuZXdFeHRlbnNpb246IHN0cmluZykge1xyXG4gICAgICBjb25zdCBhcnIgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgICByZXR1cm4gZmlsZU5hbWUucmVwbGFjZShgLiR7YXJyW2Fyci5sZW5ndGggLSAxXX1gLCBgLiR7bmV3RXh0ZW5zaW9ufWApO1xyXG4gICB9XHJcbn1cclxuIl19
|
|
@@ -113,6 +113,23 @@ export class FileObjectService extends BaseService {
|
|
|
113
113
|
getScanFileUploadEndpoint(correlationId) {
|
|
114
114
|
return `${this.serviceCode}/CreateScannedFile/${correlationId}`;
|
|
115
115
|
}
|
|
116
|
+
isTypeFileKySo(fileName) {
|
|
117
|
+
let fileExtension = this.getFileExtension(fileName);
|
|
118
|
+
if (fileExtension) {
|
|
119
|
+
fileExtension = fileExtension.toLowerCase();
|
|
120
|
+
if (fileExtension.indexOf('.') > -1) {
|
|
121
|
+
const arr = fileExtension.split('.');
|
|
122
|
+
fileExtension = arr[arr.length - 1];
|
|
123
|
+
}
|
|
124
|
+
if ((/(pdf|doc|docx|xls|xlsm|xlsx)$/i).test(fileExtension)) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
getPublicDownloadLinkByFileId(fileId) {
|
|
131
|
+
return `${this.serviceUri}/public/${fileId}/download`;
|
|
132
|
+
}
|
|
116
133
|
}
|
|
117
134
|
FileObjectService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileObjectService_Factory() { return new FileObjectService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.ModuleConfigService)); }, token: FileObjectService, providedIn: "root" });
|
|
118
135
|
FileObjectService.decorators = [
|
|
@@ -125,4 +142,4 @@ FileObjectService.ctorParameters = () => [
|
|
|
125
142
|
{ type: Injector },
|
|
126
143
|
{ type: ModuleConfigService }
|
|
127
144
|
];
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1vYmplY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQUs5RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUM5QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFEOUoseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUVqRCxJQUFJLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLHVCQUF1QixDQUFDO0lBQ3JELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDO0lBQ3RE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QUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx1QkFBdUIsQ0FBQztRQUV0RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHlCQUF5QixDQUFDLGFBQXFCO1FBQzNDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxzQkFBc0IsYUFBYSxFQUFFLENBQUM7SUFDcEUsQ0FBQzs7OztZQXZISixVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7OztZQVRRLFVBQVU7WUFDRSxRQUFRO1lBSXBCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZJTEVfVFlQRVMgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jlc3BvbnNlLXJlc3VsdCc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kdWxlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVPYmplY3RTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoaHR0cDogSHR0cENsaWVudCwgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgX21vZHVsZUNvbmZpZ1NlcnZpY2U6IE1vZHVsZUNvbmZpZ1NlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihodHRwLCBpbmplY3RvciwgYCR7X21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludH0vJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlWZXJzaW9ufS9GaWxlT2JqZWN0YCk7XHJcbiAgICAgICAgdGhpcy5lbmRQb2ludCA9IF9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaURvbWFpbi5maWxlRW5kcG9pbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VXBsb2FkVXJsKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L1VwbG9hZEZpbGVJbnRvRm9sZGVyYDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRVcGxvYWRNdWx0aXBsZVVybCgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRGaWxlc0ludG9Gb2xkZXJgO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVwbG9hZEludG9TaGFyZWRGb2xkZXJVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU3VwcG9ydGVkVmlld09ubGluZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcclxuXHJcbiAgICAgICAgaWYgKCgvKGdpZnxqcGd8anBlZ3x0aWZmfHBuZykkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKC8oZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGVwdWJ8Zm9kdHxodG18aHRtbHxtaHR8b2R0fG90dHxwZGZ8cnRmfHR4dHxkanZ1fHhwcykkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKC8oY3N2fGZvZHN8b2RzfG90c3x4bHN8eGxzbXx4bHN4fHhsdHx4bHRtfHhsdHgpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCgvKGZvZHB8b2RwfG90cHxwb3R8cG90bXxwb3R4fHBwc3xwcHNtfHBwc3h8cHB0fHBwdG18cHB0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKC8obXA0fG1vdnxhdml8d212fHZvYnxybXxhc2Z8M2dwKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFmaWxlTmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBhcnIgPSBmaWxlTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgICAgIGlmIChhcnIubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJyW2Fyci5sZW5ndGggLSAxXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVUeXBlKGZpbGVFeHRlbnNpb246IHN0cmluZykge1xyXG4gICAgICAgIGlmIChmaWxlRXh0ZW5zaW9uKSB7XHJcbiAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIGlmIChmaWxlRXh0ZW5zaW9uLmluZGV4T2YoJy4nKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBmaWxlRXh0ZW5zaW9uLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uID0gYXJyW2Fyci5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKC8oZ2lmfGpwZ3xqcGVnfHRpZmZ8cG5nKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuSU1BR0U7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKC8oZG9jfGRvY218ZG9jeHxkb3R8ZG90bXxkb3R4fGVwdWJ8Zm9kdHxodG18aHRtbHxtaHR8b2R0fG90dHxwZGZ8cnRmfHR4dHxkanZ1fHhwcykkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLlRFWFQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKC8oY3N2fGZvZHN8b2RzfG90c3x4bHN8eGxzbXx4bHN4fHhsdHx4bHRtfHhsdHgpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5TUFJFQURTSEVFVDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgoLyhmb2RwfG9kcHxvdHB8cG90fHBvdG18cG90eHxwcHN8cHBzbXxwcHN4fHBwdHxwcHRtfHBwdHgpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5QUkVTRU5UQVRJT047XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKC8obXA0fG1vdnxhdml8d212fHZvYnxybXxhc2Z8M2dwKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVklERU87XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKC8obXAzfHdtYXx3YXZ8d212fG9nZykkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLkFVRElPO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpc0ZpbGVUeXBlKGZpbGVFeHRlbnNpb246IHN0cmluZywgdHlwZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEZpbGVUeXBlKGZpbGVFeHRlbnNpb24pID09PSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUZpbGVJbnRvU2hhcmVkRm9sZGVyKGZvcm1EYXRhKSB7XHJcbiAgICAgICAgdmFyIHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9TaGFyZWRGb2xkZXJgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIGZvcm1EYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWxlSW5TaGFyZWRGb2xkZXIobW9kZWwpIHtcclxuICAgICAgICB2YXIgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRGaWxlSW5TaGFyZWRGb2xkZXJgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVGaWxlRnJvbVNoYXJlZEZvbGRlcihtb2RlbCkge1xyXG4gICAgICAgIHZhciB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0RlbGV0ZUZpbGVGcm9tU2hhcmVkRm9sZGVyYDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBtb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlU2VydmljZUZpbGUoc2VydmljZUZpbGVPYmplY3REVE86IEZvcm1EYXRhKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vQ3JlYXRlU2VydmljZUZpbGVgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIHNlcnZpY2VGaWxlT2JqZWN0RFRPKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTaW5nbGVTZXJ2aWNlRmlsZShzZXJ2aWNlUmVxdWVzdE1vZGVsOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9HZXRTaW5nbGVTZXJ2aWNlRmlsZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgc2VydmljZVJlcXVlc3RNb2RlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2NhbkZpbGVVcGxvYWRFbmRwb2ludChjb3JyZWxhdGlvbklkOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlQ29kZX0vQ3JlYXRlU2Nhbm5lZEZpbGUvJHtjb3JyZWxhdGlvbklkfWA7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1vYmplY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1vYmplY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7OztBQUs5RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUM5QyxZQUFZLElBQWdCLEVBQUUsUUFBa0IsRUFDcEMsb0JBQXlDO1FBQ2pELEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDLENBQUM7UUFEOUoseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQUVqRCxJQUFJLENBQUMsUUFBUSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLHVCQUF1QixDQUFDO0lBQ3JELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUFDO0lBQ3RE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QUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSx1QkFBdUIsQ0FBQztRQUV0RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELHlCQUF5QixDQUFDLGFBQXFCO1FBQzNDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxzQkFBc0IsYUFBYSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUNELGNBQWMsQ0FBQyxRQUFnQjtRQUMzQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEQsSUFBSSxhQUFhLEVBQUU7WUFDZixhQUFhLEdBQUcsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDakMsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLElBQUksQ0FBQzthQUNmO1NBQ0o7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsNkJBQTZCLENBQUMsTUFBTTtRQUNoQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsV0FBVyxNQUFNLFdBQVcsQ0FBQztJQUMxRCxDQUFDOzs7O1lBeElKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBVFEsVUFBVTtZQUNFLFFBQVE7WUFJcEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRklMRV9UWVBFUyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgUmVzcG9uc2VSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UtcmVzdWx0JztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kdWxlLWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZU9iamVjdFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihodHRwOiBIdHRwQ2xpZW50LCBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGh0dHAsIGluamVjdG9yLCBgJHtfbW9kdWxlQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5lbnZpcm9ubWVudC5hcGlEb21haW4uZmlsZUVuZHBvaW50fS8ke19tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50LmFwaVZlcnNpb259L0ZpbGVPYmplY3RgKTtcclxuICAgICAgICB0aGlzLmVuZFBvaW50ID0gX21vZHVsZUNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuZW52aXJvbm1lbnQuYXBpRG9tYWluLmZpbGVFbmRwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRVcGxvYWRVcmwoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVyaX0vVXBsb2FkRmlsZUludG9Gb2xkZXJgO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFVwbG9hZE11bHRpcGxlVXJsKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L1VwbG9hZEZpbGVzSW50b0ZvbGRlcmA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VXBsb2FkSW50b1NoYXJlZEZvbGRlclVybCgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRGaWxlSW50b1NoYXJlZEZvbGRlcmA7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTdXBwb3J0ZWRWaWV3T25saW5lKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpO1xyXG5cclxuICAgICAgICBpZiAoKC8oZ2lmfGpwZ3xqcGVnfHRpZmZ8cG5nKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHBkZnxydGZ8dHh0fGRqdnV8eHBzKSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKC8oZm9kcHxvZHB8b3RwfHBvdHxwb3RtfHBvdHh8cHBzfHBwc218cHBzeHxwcHR8cHB0bXxwcHR4KSQvaSkudGVzdChmaWxlVHlwZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9IGVsc2UgaWYgKCgvKG1wM3x3bWF8d2F2fHdtdnxvZ2cpJC9pKS50ZXN0KGZpbGVUeXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWZpbGVOYW1lKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGFyciA9IGZpbGVOYW1lLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgaWYgKGFyci5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmlsZVR5cGUoZmlsZUV4dGVuc2lvbjogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcclxuICAgICAgICAgICAgZmlsZUV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24uaW5kZXhPZignLicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcclxuICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoLyhnaWZ8anBnfGpwZWd8dGlmZnxwbmcpJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5JTUFHRTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgoLyhkb2N8ZG9jbXxkb2N4fGRvdHxkb3RtfGRvdHh8ZXB1Ynxmb2R0fGh0bXxodG1sfG1odHxvZHR8b3R0fHBkZnxydGZ8dHh0fGRqdnV8eHBzKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuVEVYVDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgoLyhjc3Z8Zm9kc3xvZHN8b3RzfHhsc3x4bHNtfHhsc3h8eGx0fHhsdG18eGx0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLlNQUkVBRFNIRUVUO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCgvKGZvZHB8b2RwfG90cHxwb3R8cG90bXxwb3R4fHBwc3xwcHNtfHBwc3h8cHB0fHBwdG18cHB0eCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBGSUxFX1RZUEVTLlBSRVNFTlRBVElPTjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgoLyhtcDR8bW92fGF2aXx3bXZ8dm9ifHJtfGFzZnwzZ3ApJC9pKS50ZXN0KGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9UWVBFUy5WSURFTztcclxuICAgICAgICAgICAgfSBlbHNlIGlmICgoLyhtcDN8d21hfHdhdnx3bXZ8b2dnKSQvaSkudGVzdChmaWxlRXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZJTEVfVFlQRVMuQVVESU87XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRmlsZVR5cGUoZmlsZUV4dGVuc2lvbjogc3RyaW5nLCB0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsZVR5cGUoZmlsZUV4dGVuc2lvbikgPT09IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlRmlsZUludG9TaGFyZWRGb2xkZXIoZm9ybURhdGEpIHtcclxuICAgICAgICB2YXIgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9VcGxvYWRGaWxlSW50b1NoYXJlZEZvbGRlcmA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbGVJblNoYXJlZEZvbGRlcihtb2RlbCkge1xyXG4gICAgICAgIHZhciB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldEZpbGVJblNoYXJlZEZvbGRlcmA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgbW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUZpbGVGcm9tU2hhcmVkRm9sZGVyKG1vZGVsKSB7XHJcbiAgICAgICAgdmFyIHVybCA9IGAke3RoaXMuc2VydmljZVVyaX0vRGVsZXRlRmlsZUZyb21TaGFyZWRGb2xkZXJgO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0UG9zdCh1cmwsIG1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVTZXJ2aWNlRmlsZShzZXJ2aWNlRmlsZU9iamVjdERUTzogRm9ybURhdGEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zZXJ2aWNlVXJpfS9DcmVhdGVTZXJ2aWNlRmlsZWA7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRQb3N0KHVybCwgc2VydmljZUZpbGVPYmplY3REVE8pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNpbmdsZVNlcnZpY2VGaWxlKHNlcnZpY2VSZXF1ZXN0TW9kZWw6IGFueSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnNlcnZpY2VVcml9L0dldFNpbmdsZVNlcnZpY2VGaWxlYDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFBvc3QodXJsLCBzZXJ2aWNlUmVxdWVzdE1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTY2FuRmlsZVVwbG9hZEVuZHBvaW50KGNvcnJlbGF0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VDb2RlfS9DcmVhdGVTY2FubmVkRmlsZS8ke2NvcnJlbGF0aW9uSWR9YDtcclxuICAgIH1cclxuICAgIGlzVHlwZUZpbGVLeVNvKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlTmFtZSk7XHJcbiAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24pIHtcclxuICAgICAgICAgICAgZmlsZUV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKGZpbGVFeHRlbnNpb24uaW5kZXhPZignLicpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IGZpbGVFeHRlbnNpb24uc3BsaXQoJy4nKTtcclxuICAgICAgICAgICAgICAgIGZpbGVFeHRlbnNpb24gPSBhcnJbYXJyLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICgoLyhwZGZ8ZG9jfGRvY3h8eGxzfHhsc218eGxzeCkkL2kpLnRlc3QoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGdldFB1YmxpY0Rvd25sb2FkTGlua0J5RmlsZUlkKGZpbGVJZCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcml9L3B1YmxpYy8ke2ZpbGVJZH0vZG93bmxvYWRgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, Injector } from '@angular/core';
|
|
2
|
+
import { ComponentBase } from '../../../classes/base/component-base';
|
|
3
|
+
import { ComponentContextService } from '../../../app-context/component-context.service';
|
|
4
|
+
import * as moment_ from 'moment';
|
|
5
|
+
// fix for build prod
|
|
6
|
+
const moment = moment_;
|
|
7
|
+
export class SignatureDetailComponent extends ComponentBase {
|
|
8
|
+
constructor(injector) {
|
|
9
|
+
super(injector);
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.model.data = this.parentModel.advanceData;
|
|
13
|
+
this.buildTree();
|
|
14
|
+
}
|
|
15
|
+
buildTree() {
|
|
16
|
+
const nodes = [];
|
|
17
|
+
for (const ind in this.model.data) {
|
|
18
|
+
const item = this.model.data[ind];
|
|
19
|
+
const childNodes = { expanded: true, children: [] };
|
|
20
|
+
childNodes.label = `${item.reason}`;
|
|
21
|
+
childNodes.expandedIcon = 'fas fa-signature';
|
|
22
|
+
childNodes.collapsedIcon = 'fas fa-signature';
|
|
23
|
+
childNodes.leaf = false;
|
|
24
|
+
if (item.reason) {
|
|
25
|
+
childNodes.children.push({
|
|
26
|
+
label: 'Người ký: ' + item.certificate.subject.nameOfSigner,
|
|
27
|
+
expandedIcon: 'fas fa-user-tag',
|
|
28
|
+
collapsedIcon: 'fas fa-user-tag',
|
|
29
|
+
leaf: true
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
childNodes.children.push({
|
|
33
|
+
label: 'Đơn vị: ' + item.certificate.subject.organizationUnit + ' - ' + item.certificate.subject.organization,
|
|
34
|
+
expandedIcon: 'fas fa-building',
|
|
35
|
+
collapsedIcon: 'fas fa-building',
|
|
36
|
+
leaf: true
|
|
37
|
+
});
|
|
38
|
+
childNodes.children.push({
|
|
39
|
+
label: 'Chứng thư cấp bởi: ' + item.certificate.issuerDN.nameOfIssuer,
|
|
40
|
+
expandedIcon: 'fas fa-certificate',
|
|
41
|
+
collapsedIcon: 'fas fa-certificate',
|
|
42
|
+
leaf: true
|
|
43
|
+
});
|
|
44
|
+
childNodes.children.push({
|
|
45
|
+
label: 'Thời gian ký: ' + moment(item.signDate).format('D/MM/Y hh:mm:ss Z'),
|
|
46
|
+
expandedIcon: 'fas fa-clock',
|
|
47
|
+
collapsedIcon: 'fas fa-clock',
|
|
48
|
+
leaf: true
|
|
49
|
+
});
|
|
50
|
+
nodes.push(childNodes);
|
|
51
|
+
}
|
|
52
|
+
this.model.dataSource = nodes;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
SignatureDetailComponent.decorators = [
|
|
56
|
+
{ type: Component, args: [{
|
|
57
|
+
selector: 'signature-detail',
|
|
58
|
+
template: "<div class=\"tree-signature\">\r\n <p-tree [value]=\"model.dataSource\" [filter]=\"true\" [emptyMessage]=\"'Kh\u00F4ng c\u00F3 ch\u1EEF k\u00FD'\" styleClass=\"signature-tree\">\r\n </p-tree>\r\n</div>",
|
|
59
|
+
providers: [ComponentContextService],
|
|
60
|
+
styles: [":host::ng-deep .signature-tree{border:none;width:100%}:host::ng-deep .signature-tree .ui-treenode-icon{color:#888;padding-right:10px}:host::ng-deep .signature-tree span.fas.fa-signature+span{font-weight:700}:host::ng-deep .signature-tree span.ui-treenode-icon.fas.fa-signature{color:#212529!important;padding-left:5px}:host::ng-deep .signature-tree span.ui-tree-toggler{color:#212529!important}"]
|
|
61
|
+
},] }
|
|
62
|
+
];
|
|
63
|
+
SignatureDetailComponent.ctorParameters = () => [
|
|
64
|
+
{ type: Injector }
|
|
65
|
+
];
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLWRldGFpbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NpZ25hdHVyZS1kZXRhaWwvc2lnbmF0dXJlLWRldGFpbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBR2xDLHFCQUFxQjtBQUNyQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFRdkIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFDdkQsWUFDSSxRQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLEtBQUssR0FBZSxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQzlELFVBQVUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsVUFBVSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztZQUM3QyxVQUFVLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDO1lBQzlDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBRXhCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDckIsS0FBSyxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZO29CQUMzRCxZQUFZLEVBQUUsaUJBQWlCO29CQUMvQixhQUFhLEVBQUUsaUJBQWlCO29CQUNoQyxJQUFJLEVBQUUsSUFBSTtpQkFDYixDQUFDLENBQUM7YUFDTjtZQUVELFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZO2dCQUM3RyxZQUFZLEVBQUUsaUJBQWlCO2dCQUMvQixhQUFhLEVBQUUsaUJBQWlCO2dCQUNoQyxJQUFJLEVBQUUsSUFBSTthQUNiLENBQUMsQ0FBQztZQUVILFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWTtnQkFDckUsWUFBWSxFQUFFLG9CQUFvQjtnQkFDbEMsYUFBYSxFQUFFLG9CQUFvQjtnQkFDbkMsSUFBSSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDckIsS0FBSyxFQUFFLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO2dCQUMzRSxZQUFZLEVBQUUsY0FBYztnQkFDNUIsYUFBYSxFQUFFLGNBQWM7Z0JBQzdCLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1lBRUgsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDOzs7WUE3REosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDJOQUFnRDtnQkFFaEQsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7O2FBQ3ZDOzs7WUFkMkIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9iYXNlL2NvbXBvbmVudC1iYXNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcHAtY29udGV4dC9jb21wb25lbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcblxyXG4vLyBmaXggZm9yIGJ1aWxkIHByb2RcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzaWduYXR1cmUtZGV0YWlsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaWduYXR1cmUtZGV0YWlsLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3NpZ25hdHVyZS1kZXRhaWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW0NvbXBvbmVudENvbnRleHRTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlRGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLnBhcmVudE1vZGVsLmFkdmFuY2VEYXRhO1xyXG4gICAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRUcmVlKCkge1xyXG4gICAgICAgIGNvbnN0IG5vZGVzOiBUcmVlTm9kZVtdID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpbmQgaW4gdGhpcy5tb2RlbC5kYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm1vZGVsLmRhdGFbaW5kXTtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlczogVHJlZU5vZGUgPSB7IGV4cGFuZGVkOiB0cnVlLCBjaGlsZHJlbjogW10gfTtcclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5sYWJlbCA9IGAke2l0ZW0ucmVhc29ufWA7XHJcbiAgICAgICAgICAgIGNoaWxkTm9kZXMuZXhwYW5kZWRJY29uID0gJ2ZhcyBmYS1zaWduYXR1cmUnO1xyXG4gICAgICAgICAgICBjaGlsZE5vZGVzLmNvbGxhcHNlZEljb24gPSAnZmFzIGZhLXNpZ25hdHVyZSc7XHJcbiAgICAgICAgICAgIGNoaWxkTm9kZXMubGVhZiA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0ucmVhc29uKSB7XHJcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGVzLmNoaWxkcmVuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTmfGsOG7nWkga8O9OiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5zdWJqZWN0Lm5hbWVPZlNpZ25lcixcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtdXNlci10YWcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZEljb246ICdmYXMgZmEtdXNlci10YWcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxlYWY6IHRydWVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjaGlsZE5vZGVzLmNoaWxkcmVuLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICfEkMahbiB24buLOiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5zdWJqZWN0Lm9yZ2FuaXphdGlvblVuaXQgKyAnIC0gJyArIGl0ZW0uY2VydGlmaWNhdGUuc3ViamVjdC5vcmdhbml6YXRpb24sXHJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtYnVpbGRpbmcnLFxyXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkSWNvbjogJ2ZhcyBmYS1idWlsZGluZycsXHJcbiAgICAgICAgICAgICAgICBsZWFmOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5jaGlsZHJlbi5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQ2jhu6luZyB0aMawIGPhuqVwIGLhu59pOiAnICsgaXRlbS5jZXJ0aWZpY2F0ZS5pc3N1ZXJETi5uYW1lT2ZJc3N1ZXIsXHJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb246ICdmYXMgZmEtY2VydGlmaWNhdGUnLFxyXG4gICAgICAgICAgICAgICAgY29sbGFwc2VkSWNvbjogJ2ZhcyBmYS1jZXJ0aWZpY2F0ZScsXHJcbiAgICAgICAgICAgICAgICBsZWFmOiB0cnVlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgY2hpbGROb2Rlcy5jaGlsZHJlbi5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGxhYmVsOiAnVGjhu51pIGdpYW4ga8O9OiAnICsgbW9tZW50KGl0ZW0uc2lnbkRhdGUpLmZvcm1hdCgnRC9NTS9ZIGhoOm1tOnNzIFonKSxcclxuICAgICAgICAgICAgICAgIGV4cGFuZGVkSWNvbjogJ2ZhcyBmYS1jbG9jaycsXHJcbiAgICAgICAgICAgICAgICBjb2xsYXBzZWRJY29uOiAnZmFzIGZhLWNsb2NrJyxcclxuICAgICAgICAgICAgICAgIGxlYWY6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBub2Rlcy5wdXNoKGNoaWxkTm9kZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGFTb3VyY2UgPSBub2RlcztcclxuICAgIH1cclxufVxyXG4iXX0=
|