@smarterplan/ngx-smarterplan-core 1.2.47 → 1.2.49
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/esm2020/lib/components/csv-export/csv-export.component.mjs +4 -4
- package/esm2020/lib/components/loader/loader.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +4 -4
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +7 -5
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +16 -11
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +4 -4
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +4 -4
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +4 -4
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +2 -2
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +5 -5
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +4 -4
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +4 -4
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +4 -4
- package/esm2020/lib/pipes/safe-url.pipe.mjs +4 -4
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +4 -4
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +4 -4
- package/esm2020/lib/services/amplify-cache.service.mjs +4 -4
- package/esm2020/lib/services/base-tab.service.mjs +4 -4
- package/esm2020/lib/services/baseVisibility.service.mjs +4 -4
- package/esm2020/lib/services/content.service.mjs +4 -4
- package/esm2020/lib/services/filter.service.mjs +4 -4
- package/esm2020/lib/services/intervention.service.mjs +4 -4
- package/esm2020/lib/services/locale.service.mjs +4 -4
- package/esm2020/lib/services/matterport-import.service.mjs +4 -4
- package/esm2020/lib/services/matterport.service.mjs +4 -4
- package/esm2020/lib/services/models/affectation.service.mjs +4 -4
- package/esm2020/lib/services/models/base-object.service.mjs +4 -4
- package/esm2020/lib/services/models/capture.service.mjs +4 -4
- package/esm2020/lib/services/models/comment.service.mjs +4 -4
- package/esm2020/lib/services/models/domain.service.mjs +4 -4
- package/esm2020/lib/services/models/equipment.service.mjs +4 -4
- package/esm2020/lib/services/models/event.service.mjs +4 -4
- package/esm2020/lib/services/models/feature.service.mjs +4 -4
- package/esm2020/lib/services/models/hashtag.service.mjs +4 -4
- package/esm2020/lib/services/models/layer.service.mjs +4 -4
- package/esm2020/lib/services/models/measurement.service.mjs +4 -4
- package/esm2020/lib/services/models/mission.service.mjs +4 -4
- package/esm2020/lib/services/models/navigation.service.mjs +4 -4
- package/esm2020/lib/services/models/node.service.mjs +4 -4
- package/esm2020/lib/services/models/object3D.service.mjs +4 -4
- package/esm2020/lib/services/models/operation.service.mjs +4 -4
- package/esm2020/lib/services/models/organisation.service.mjs +4 -4
- package/esm2020/lib/services/models/plan.service.mjs +4 -4
- package/esm2020/lib/services/models/poi.service.mjs +4 -4
- package/esm2020/lib/services/models/profile.service.mjs +4 -4
- package/esm2020/lib/services/models/property.service.mjs +4 -4
- package/esm2020/lib/services/models/space.service.mjs +4 -4
- package/esm2020/lib/services/models/template.service.mjs +4 -4
- package/esm2020/lib/services/models/ticket.service.mjs +4 -4
- package/esm2020/lib/services/models/visit.service.mjs +4 -4
- package/esm2020/lib/services/models/zone.service.mjs +4 -4
- package/esm2020/lib/services/navigator.service.mjs +4 -4
- package/esm2020/lib/services/search.service.mjs +4 -4
- package/esm2020/lib/services/support.service.mjs +4 -4
- package/esm2020/lib/services/tag.service.mjs +4 -4
- package/esm2020/lib/services/user.service.mjs +4 -4
- package/esm2020/lib/services/validators.service.mjs +4 -4
- package/esm2020/lib/services/viewer.service.mjs +4 -4
- package/esm2020/lib/services/zoneChange.service.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +192 -186
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +192 -186
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/menu-bar/menu-bar.component.d.ts +1 -0
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +4 -1
- package/package.json +13 -13
- package/src/assets/vs-app.json +67 -0
|
@@ -785,9 +785,9 @@ export class PlanService {
|
|
|
785
785
|
return { x, y, coeffX: newCoeffX, coeffY: newCoeffY };
|
|
786
786
|
}
|
|
787
787
|
}
|
|
788
|
-
PlanService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
789
|
-
PlanService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
790
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
788
|
+
PlanService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlanService, deps: [{ token: 'currentAPIService' }, { token: i1.ZoneService }, { token: i2.NavigationService }, { token: i3.ViewerService }, { token: i4.Router }, { token: i5.MatterportService }, { token: i6.BaseVisibilityService }, { token: i7.ContentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
789
|
+
PlanService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlanService, providedIn: 'root' });
|
|
790
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlanService, decorators: [{
|
|
791
791
|
type: Injectable,
|
|
792
792
|
args: [{
|
|
793
793
|
providedIn: 'root',
|
|
@@ -796,4 +796,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
796
796
|
type: Inject,
|
|
797
797
|
args: ['currentAPIService']
|
|
798
798
|
}] }, { type: i1.ZoneService }, { type: i2.NavigationService }, { type: i3.ViewerService }, { type: i4.Router }, { type: i5.MatterportService }, { type: i6.BaseVisibilityService }, { type: i7.ContentService }]; } });
|
|
799
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvcGxhbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILFdBQVcsRUFDWCxXQUFXLEVBRVgsT0FBTyxHQUVWLE1BQU0scUJBQXFCLENBQUM7QUFNN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFNeEQsTUFBTSxPQUFPLFdBQVc7SUEwRXBCLFlBQ2lDLFdBQWdCLEVBQ3JDLFdBQXdCLEVBQ3hCLGlCQUFvQztJQUM1Qyw4QkFBOEI7SUFDdEIsYUFBNEIsRUFDNUIsTUFBYyxFQUNkLGlCQUFvQztJQUM1Qyw2QkFBNkI7SUFDckIsaUJBQXdDLEVBQ3hDLGNBQThCO1FBUjlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFq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U0FBUyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7d0dBcjlCUSxXQUFXLGtCQTJFUixtQkFBbUI7NEdBM0V0QixXQUFXLGNBRlIsTUFBTTsyRkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBNEVRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZnVuYy1uYW1lcyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXREb2N1bWVudCwgR2xvYmFsV29ya2VyT3B0aW9ucyB9IGZyb20gJ3BkZmpzLWRpc3QnO1xyXG5pbXBvcnQgcGFuem9vbSBmcm9tICdwYW56b29tJztcclxuaW1wb3J0IHZpZGVvanMgZnJvbSBcInZpZGVvLmpzXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICAgIENvbW1lbnRUeXBlLFxyXG4gICAgRmVhdHVyZVR5cGUsXHJcbiAgICBQbGFuLFxyXG4gICAgUG9pVHlwZSxcclxuICAgIFpvbmUsXHJcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL2Jhc2VWaXNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXR0ZXJwb3J0U2VydmljZSB9IGZyb20gJy4uL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0U2lnbmVkRmlsZSwgdXBsb2FkRmlsZVRvUzMgfSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVRhZ1NlcnZpY2UgfSBmcm9tICcuLi90YWcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IGdldENvZWZmaWNpZW50c0ZvckltYWdlIH0gZnJvbSAnLi4vem9uZS1kcmF3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldE1ldGFGb3JJbWFnZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYW5TZXJ2aWNlIHtcclxuICAgIGNob3NlblBsYW46IFBsYW47XHJcblxyXG4gICAgY3VycmVudFBsYW46IFBsYW47XHJcblxyXG4gICAgY3VycmVudFN3ZWVwOiBzdHJpbmc7XHJcblxyXG4gICAgcGxhbkZpbGVDYWNoZTogRmlsZTtcclxuXHJcbiAgICBwbGFuQ2FudmFzOiBhbnk7XHJcblxyXG4gICAgcGxhbkRpdjogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50O1xyXG4gICAgcGxhbkRpdkNvbnRlbnQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHBhbnpvb206IGFueTtcclxuXHJcbiAgICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgdXNlclBvc2l0aW9uQnRuOiBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgICBjb2VmZlBsYW5YOiBudW1iZXI7XHJcblxyXG4gICAgY29lZmZQbGFuWTogbnVtYmVyO1xyXG5cclxuICAgIGNhbGlicmF0aW9uUGxhbjogYW55O1xyXG5cclxuICAgIGRldGFpbFRhZ0RpdjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgZGV0YWlsVGFnRGl2SXNIb3ZlciA9IGZhbHNlO1xyXG5cclxuICAgIGJ0blRhZ0lzSG92ZXIgPSBmYWxzZTtcclxuXHJcbiAgICByZXNpemVQbGFuU3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBpbWdQbGFuOiBIVE1MSW1hZ2VFbGVtZW50O1xyXG5cclxuICAgIGxhc3RUb3VjaFRpbWUgPSAwO1xyXG5cclxuICAgIGRlbGF5RGJsVG91Y2ggPSA1MDA7XHJcblxyXG4gICAgbGFzdFJvdGF0aW9uOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGh0bWxDb250ZW50VG9JbmplY3Q6IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgICAgIGNvbnRlbnQ6IHN0cmluZztcclxuICAgICAgICBlbGVtZW50SUQ6IHN0cmluZztcclxuICAgICAgICB5OiBudW1iZXI7XHJcbiAgICAgICAgeDogbnVtYmVyO1xyXG4gICAgICAgIHRhZ0ljb246IHN0cmluZztcclxuICAgICAgICB1cmw6IHN0cmluZztcclxuICAgIH1bXSA9IFtdO1xyXG5cclxuICAgIGNhY2hlOiB7XHJcbiAgICAgICAgZXF1aXBJRHM6IHN0cmluZ1tdO1xyXG4gICAgICAgIHRpY2tldElEczogc3RyaW5nW107XHJcbiAgICAgICAgbWVhc3VyZW1lbnRzSURzOiBzdHJpbmdbXTtcclxuICAgICAgICBmZWF0dXJlSURzOiBzdHJpbmdbXTtcclxuICAgICAgICB6b25lSUQ6IHN0cmluZztcclxuICAgICAgICBwbGFuOiBQbGFuO1xyXG4gICAgICAgIGh0bWxDb250ZW50OiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0cmluZztcclxuICAgICAgICAgICAgZWxlbWVudElEOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHk6IG51bWJlcjtcclxuICAgICAgICAgICAgeDogbnVtYmVyO1xyXG4gICAgICAgICAgICB0YWdJY29uOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHVybDogc3RyaW5nO1xyXG4gICAgICAgIH1bXTtcclxuICAgIH07XHJcblxyXG4gICAgZm9jdXNNb3VzZVRhZ0RpdjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEFQSTogYW55OyAvL0FXU1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICAvLyB0YWdTZXJ2aWNlOiBCYXNlVGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIGNvbmZpZzogQXBwQ29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgdmlzaWJpbGl0eVNlcnZpY2U6IEJhc2VWaXNpYmlsaXR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRDYW1lcmFQb3NlLnN1YnNjcmliZSgocG9zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvdGF0aW9uKHBvc2Uucm90YXRpb24ueSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlUGxhbihwbGFuSW5wdXQ6IFBsYW4pOiBQcm9taXNlPFBsYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVBsYW4ocGxhbklucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVQbGFuKHBsYW46IFBsYW4pOiBQcm9taXNlPFBsYW4+IHtcclxuICAgICAgICAvLyBhd2FpdCBkZWxldGVGcm9tUzMocGxhbi5hbm5leGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlUGxhbih7IGlkOiBwbGFuLmlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFBsYW5zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgICAgICAgIC5QbGFuc0J5U3BhY2Uoc3BhY2VJRClcclxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UGxhbnNGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgICAgICAgIC5QbGFuc0J5Wm9uZSh6b25lSUQpXHJcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNpbmdlZFBsYW5zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICBjb25zdCBwbGFuc0Zyb21EQiA9IGF3YWl0IHRoaXMuZ2V0UGxhbnNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhwbGFuc0Zyb21EQik7XHJcbiAgICAgICAgY29uc3QgcGxhbnMgPSBbXTtcclxuICAgICAgICBpZiAocGxhbnNGcm9tREIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIHBsYW5zRnJvbURCLm1hcChhc3luYyAocGxhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYW5PYmplY3QgPSB7IC4uLnBsYW4gfSBhcyBQbGFuO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFubmV4ZSBsb29rcyBsaWtlIHZpc2l0cy9tb2RlbElEL3BsYW5zL2ZpbGUuZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShwbGFuLmFubmV4ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ25lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0LmZpbGVwYXRoID0gc2lnbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocGxhbi5hbm5leGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgbW9kZWxJRCwgLCBmaWxlbmFtZVdpdGhFeHRlbnNpb25dID0gcGxhbi5hbm5leGUuc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgZXh0ZW50aW9uXSA9IGZpbGVuYW1lV2l0aEV4dGVuc2lvbi5zcGxpdCgnLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0Lm1vZGVsM2QgPSBtb2RlbElEO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0LmV4dGVuc2lvbiA9IGV4dGVudGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhbnMucHVzaChwbGFuT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgcGxhbiBoYXZlIG5vdCBhbm5leGUgPT4gYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBsYW4uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwbGFucztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRQbGFuc1dpdGhab25lc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8UGxhbltdPiB7XHJcbiAgICAgICAgY29uc3QgcGxhbnMgPSBhd2FpdCB0aGlzLmdldFBsYW5zRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgcGxhbnNab25lcyA9IHBsYW5zLmZpbHRlcigocGxhbikgPT4gcGxhbi56b25lICYmIHBsYW4uY2FsaWJyYXRpb24pO1xyXG4gICAgICAgIHJldHVybiBwbGFuc1pvbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENob3NlblBsYW4oY2hvc2VuUGxhbjogUGxhbikge1xyXG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IGNob3NlblBsYW47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2hvc2VuUGxhbigpOiBQbGFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaG9zZW5QbGFuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsYW5GaWxlQ2FjaGUocGxhbkZpbGVDYWNoZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMucGxhbkZpbGVDYWNoZSA9IHBsYW5GaWxlQ2FjaGU7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsYW5GaWxlQ2FjaGUoKTogRmlsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhbkZpbGVDYWNoZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVQbGFuV2l0aEFubmV4ZShwbGFuOiBQbGFuLCBmaWxlOiBGaWxlKTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZFBsYW4gPSBhd2FpdCB0aGlzLmNyZWF0ZVBsYW4ocGxhbik7XHJcbiAgICAgICAgY29uc3QgbW9kZWwzRCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0TW9kZWwzREZvclpvbmUocGxhbi56b25lSUQpO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKFxyXG4gICAgICAgICAgICBgdmlzaXRzLyR7bW9kZWwzRH0vcGxhbnMvYCxcclxuICAgICAgICAgICAgZmlsZSxcclxuICAgICAgICAgICAgY3JlYXRlZFBsYW4uaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQbGFuKHsgaWQ6IGNyZWF0ZWRQbGFuLmlkLCBhbm5leGU6IHVybCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRQbGFuO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVBsYW4ocGxhbjogYW55KTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQbGFuKHBsYW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVBsYW5GaWxlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hvc2VuUGxhbiAmJiB0aGlzLnBsYW5GaWxlQ2FjaGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwzRCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0TW9kZWwzREZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uem9uZUlEXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhcclxuICAgICAgICAgICAgICAgIGB2aXNpdHMvJHttb2RlbDNEfS9wbGFucy9gLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuRmlsZUNhY2hlLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuLmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNldEFsbFBsYW5zRm9yWm9uZU5vdEN1cnJlbnQoem9uZUlEOiBzdHJpbmcsIGN1cnJlbnRQbGFuSUQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBsYW5zID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkxpc3RQbGFucyh7XHJcbiAgICAgICAgICAgIHpvbmVJRDogeyBlcTogem9uZUlEIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIHBsYW5zLml0ZW1zLm1hcChhc3luYyAocGxhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYW4uaXNDdXJyZW50Rm9yWm9uZSAmJiBwbGFuLmlkICE9PSBjdXJyZW50UGxhbklEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVQbGFuKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBsYW4uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudEZvclpvbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29uZmlndXJlUGxhbihcclxuICAgICAgICBjdXJyZW50UGxhbjogUGxhbixcclxuICAgICAgICBkaXZJZDogc3RyaW5nID0gJ3BsYW5EaXZQYW5lJyxcclxuICAgICAgICBkaXZDb250ZW50SWQ6IHN0cmluZyA9ICdwbGFuRGl2UGFuZUNvbnRlbnQnXHJcbiAgICApOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuZGV0YWlsVGFnRGl2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgICAgIGAjZGV0YWlsVGFnRGl2YFxyXG4gICAgICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTW91c2VUYWdEaXYgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYnRuVGFnSXNIb3ZlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTW91c2VUYWdEaXYgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4gPSBKU09OLnBhcnNlKGN1cnJlbnRQbGFuLmNhbGlicmF0aW9uKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gY3VycmVudFBsYW47XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZGl2SWR9YCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAgIGAjJHtkaXZDb250ZW50SWR9YFxyXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMucGxhbkRpdi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVUb3VjaC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLnBsYW5EaXYuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCB0aGlzLm9uRGJsQ2xpY2tQbGFuLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICBpZiAoIWN1cnJlbnRQbGFuLmFubmV4ZS5pbmNsdWRlcygncGRmJykpIHtcclxuICAgICAgICAgICAgdGhpcy5pbWdQbGFuID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKGN1cnJlbnRQbGFuLmZpbGVwYXRoKTtcclxuICAgICAgICAgICAgLy9SZWN0IHVzZSBvZmZzZXRXaWR0aCA6IGhlaWdodCwgbm90IGFjdHVhbCBib3VuZGluZ0NsaWVudFJlY3QgYmVjYXVzZSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSB6b29tLlxyXG4gICAgICAgICAgICBjb25zdCByZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZWZmWCwgY29lZmZZIH0gPSBnZXRDb2VmZmljaWVudHNGb3JJbWFnZSh0aGlzLmltZ1BsYW4sIHJlY3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvZWZmUGxhblggPSBjb2VmZlg7XHJcbiAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSA9IGNvZWZmWTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke2N1cnJlbnRQbGFuLmZpbGVwYXRofSlgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJhd1BkZihjdXJyZW50UGxhbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XHJcblxyXG4gICAgICAgIHRoaXMucGFuem9vbSA9IHBhbnpvb20odGhpcy5wbGFuRGl2LCB7XHJcbiAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgYm91bmRzUGFkZGluZzogMCxcclxuICAgICAgICAgICAgbWF4Wm9vbTogNCxcclxuICAgICAgICAgICAgem9vbURvdWJsZUNsaWNrU3BlZWQ6IDEsIC8vZGlzYWJsZXMgZG91YmxlIGNsaWNrIHpvb21cclxuICAgICAgICAgICAgLy9pbml0aWFsWm9vbTogNFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucGFuem9vbS56b29tQWJzKDAsIDAsIDQpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvdGF0aW9uKHRoaXMubGFzdFJvdGF0aW9uKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyUGxhbkltYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXZDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZHJhd1BkZihjdXJyZW50UGxhbjogUGxhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHBkZmpzV29ya2VyID0gYXdhaXQgaW1wb3J0KCdwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIuZW50cnknKTtcclxuXHJcbiAgICAgICAgICAgIEdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gcGRmanNXb3JrZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHBkZiA9IGF3YWl0IGdldERvY3VtZW50KGN1cnJlbnRQbGFuLmZpbGVwYXRoKS5wcm9taXNlO1xyXG4gICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgcGRmLmdldFBhZ2UoMSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB2aWV3UG9ydFBhcmFtZXRlcnMgPSB7IHNjYWxlOiAxLjUgfTtcclxuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBwYWdlLmdldFZpZXdwb3J0KHZpZXdQb3J0UGFyYW1ldGVycyk7XHJcblxyXG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcclxuICAgICAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyVGFzayA9IHBhZ2UucmVuZGVyKHJlbmRlckNvbnRleHQpLnByb21pc2U7XHJcbiAgICAgICAgICAgIHJlbmRlclRhc2sudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWdVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1nUGxhbiA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZShpbWdVcmwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5wbGFuRGl2Q29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29lZmZYLCBjb2VmZlkgfSA9IGdldENvZWZmaWNpZW50c0ZvckltYWdlKHRoaXMuaW1nUGxhbiwgcmVjdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblggPSBjb2VmZlg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblkgPSBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYW5EaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke2ltZ1VybH0pYDtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZHJhd0VsZW1lbnQoXHJcbiAgICAgICAgZWxlbWVudDogYW55LFxyXG4gICAgICAgIHRhZ1R5cGU6IFBvaVR5cGUsXHJcbiAgICAgICAgY3VycmVudFBsYW46IFBsYW4sXHJcbiAgICAgICAgdGFnU2VydmljZTogQmFzZVRhZ1NlcnZpY2UsXHJcbiAgICAgICAgY29uZmlnOiBDb25maWcsXHJcbiAgICAgICAgc2l6ZUJ1dHRvbjogbnVtYmVyID0gMTBcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IFtwb2ldID0gZWxlbWVudC5wb2lzLml0ZW1zO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLmNvb3JkaW5hdGUgJiYgY3VycmVudFBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3QgeyB6b25lIH0gPSBjdXJyZW50UGxhbjtcclxuICAgICAgICAgICAgaWYgKHpvbmUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShwb2kuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50VGl0bGU6IHN0cmluZztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHRhZ1NlcnZpY2UuZ2V0VXJsRm9yU2VlRGV0YWlscyhlbGVtZW50LCB0YWdUeXBlKTtcclxuICAgICAgICAgICAgICAgIGxldCB0YWdJY29uSW1hZ2U6IHN0cmluZztcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGFnVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gY29uZmlnLm15X2NvbmZpZy5pY29uX3RpY2tldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gY29uZmlnLm15X2NvbmZpZy5pY29uX2VxdWlwbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fbWVhc3VyZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQb2lUeXBlLk9CSkVDVDNEOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fb2JqZWN0M2Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0ljb25JbWFnZSA9IGNvbmZpZy5teV9jb25maWcuaWNvbl9kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pLnRhZ0ljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdJY29uID0gSlNPTi5wYXJzZShwb2kudGFnSWNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdUeXBlID09PSBQb2lUeXBlLkRBVEEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBGZWF0dXJlVHlwZS5JTkRJQ0FUT1JfVEVNUFxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uLnNyYyA9IHRhZ1NlcnZpY2UuZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZShlbGVtZW50LCBwb2kpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBwb2kudGFnSWNvbiA9IHRhZ0ljb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdJY29uLnNyYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCBnZXRTaWduZWRGaWxlKHRhZ0ljb24uc3JjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gc291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZUJ1dHRvbihidXR0b24sIHRhZ0ljb25JbWFnZSwgc2l6ZUJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uaWQgPSBlbGVtZW50LmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5hcHBlbmQoYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgeTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm5ldykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZXJ0KFwibmV3IGNhbGlicmF0aW9uIHBsYW46IHBvc2l0aW9uaW5nIG5vdCByZWFkeSB5ZXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24yRCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtUG9zaXRpb24zREZvck5ld0NhbGlicmF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gcG9zaXRpb24yRC54O1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPSBwb3NpdGlvbjJELnk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLnRvcCA9IGAke3kgLyBwb3NpdGlvbjJELmNvZWZmWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7eCAvIHBvc2l0aW9uMkQuY29lZmZYIC0gNX1weGA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlbW92ZSB3aGVuIGFsbCBjYWxpYnJhdGlvbnMgYXJlIG5ld1xyXG4gICAgICAgICAgICAgICAgICAgIHggPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYICsgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLng7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFkgKyBwb3NpdGlvbi56ICogdGhpcy5jYWxpYnJhdGlvblBsYW4ueTtcclxuICAgICAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudG9wID0gYCR7eSAvIHRoaXMuY29lZmZQbGFuWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7eCAvIHRoaXMuY29lZmZQbGFuWCAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0YWdTZXJ2aWNlLmdldEh0bWxUb0luamVjdCh0YWdUeXBlLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIGlmIChodG1sICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sQ29udGVudFRvSW5qZWN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50SUQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaHRtbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbjogdGFnSWNvbkltYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgZG9uJ3QgaGF2ZSBodG1sID0+IGNhc2Ugb2YgRU1CRUQgQ29tbWVudCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEVtYmVkID0gZWxlbWVudC5jb21tZW50cz8uaXRlbXMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkVNQkVEICYmIGNvbS5zaG93bkluVGFnXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWVudEVtYmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbENvbnRlbnRUb0luamVjdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJRDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlbGVtZW50LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYDxpZnJhbWUgc3JjPSR7Y29tbWVudEVtYmVkLmV4dGVybmFsTGlua30gaGVpZ2h0PVwiMjAwcHhcIiB3aWR0aD1cIjEwMCVcIj48L2lmcmFtZT5gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uOiB0YWdJY29uSW1hZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyc1RvQnV0dG9uKGJ1dHRvbiwgdXJsLCB0YWdTZXJ2aWNlLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm90YXRpb24odGhpcy5sYXN0Um90YXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRyYXdVc2VyUG9zaXRpb24oY3VycmVudFN3ZWVwID0gdGhpcy5jdXJyZW50U3dlZXAsIHNpemVCdXR0b246IG51bWJlciA9IDEwKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBjdXJyZW50U3dlZXA7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuICYmIGN1cnJlbnRTd2VlcCkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRDYW1lcmFQb3NpdGlvbigpPy5wb3NpdGlvbjtcclxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXNlclBvc2l0aW9uQnRuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyUG9zaXRpb25CdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi5pZCA9ICdjdXJyZW50UG9zaXRpb24nO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuYXBwZW5kKHRoaXMudXNlclBvc2l0aW9uQnRuKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi50aXRsZSA9ICdZb3UgYXJlIGhlcmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVCdXR0b24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vYng6YnhzLXVzZXItY2lyY2xlLnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgeTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm5ldykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uMkQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybVBvc2l0aW9uM0RGb3JOZXdDYWxpYnJhdGlvbihwb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IHBvc2l0aW9uMkQueCAvIHBvc2l0aW9uMkQuY29lZmZYIC0gNTtcclxuICAgICAgICAgICAgICAgICAgICB5ID0gcG9zaXRpb24yRC55IC8gcG9zaXRpb24yRC5jb2VmZlkgLSA1O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLngpIC9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5YO1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi56ICogdGhpcy5jYWxpYnJhdGlvblBsYW4ueSkgL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi5zdHlsZS50b3AgPSBgJHt5fXB4YDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uUG9pbnQoeyB4OiB4ICsgNSwgeTogeSArIDUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDZW50ZXIgdGhlIHZpZXcgb2YgdGhlIHBsYW4gb24gY29vcmRpbmF0ZXNcclxuICAgICAqIEBwYXJhbSBjb29yZGluYXRlIENvb3JkaW5hdGUgb24gdGhlIHBsYW5cclxuICAgICAqL1xyXG4gICAgbW92ZU9uUG9pbnQoY29vcmRpbmF0ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXYpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnBhbnpvb20uZ2V0VHJhbnNmb3JtKCkuc2NhbGU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdmVYID0gdGhpcy5wbGFuRGl2LmNsaWVudFdpZHRoIC8gMiAtIGNvb3JkaW5hdGUueCAqIHNjYWxlO1xyXG4gICAgICAgICAgICBjb25zdCBtb3ZlWSA9IHRoaXMucGxhbkRpdi5jbGllbnRIZWlnaHQgLyAyIC0gY29vcmRpbmF0ZS55ICogc2NhbGU7XHJcbiAgICAgICAgICAgIHRoaXMucGFuem9vbS5tb3ZlVG8obW92ZVgsIG1vdmVZKTtcclxuICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSBgJHtjb29yZGluYXRlLnh9cHggJHtjb29yZGluYXRlLnl9cHhgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFwcGx5IGEgcm90YXRpb24gdG8gdGhlIHBsYW5cclxuICAgICAqIEJ1dHRvbnMgd2lsbCByZW1haW4gaW4gdGhlIGNvcnJlY3Qgcm90YXRpb25cclxuICAgICAqIEBwYXJhbSByb3RhdGlvblxyXG4gICAgICovXHJcbiAgICB1cGRhdGVSb3RhdGlvbihyb3RhdGlvbikge1xyXG4gICAgICAgIHRoaXMubGFzdFJvdGF0aW9uID0gcm90YXRpb247XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbkRpdkNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlKCR7cm90YXRpb259ZGVnKWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnBsYW5EaXZDb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpO1xyXG4gICAgICAgICAgICBsZXQgcm90YXRpb25SZWdleCA9IC8ocm90YXRlXFwoLT9cXGQqXFwuP1xcZCtkZWdcXCkpL2c7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LWZvci1lYWNoXHJcbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYnV0dG9uLnN0eWxlLnRyYW5zZm9ybS5yZXBsYWNlKHJvdGF0aW9uUmVnZXgsIFwiXCIpICsgYCByb3RhdGUoJHstcm90YXRpb259ZGVnKWA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDdXJyZW50UG9zaXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1cnJlbnRQb3NpdGlvbicpO1xyXG4gICAgICAgIGlmIChidXR0b24pIHtcclxuICAgICAgICAgICAgYnV0dG9uLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0biA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0eWxlQnV0dG9uKGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQsIHVybDogc3RyaW5nLCBzaXplQnV0dG9uOiBudW1iZXIgPSAxMCkge1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dXJsfSlgO1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJvcmRlciA9ICdub25lJztcclxuICAgICAgICBidXR0b24uc3R5bGUud2lkdGggPSBgMTBweGA7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmhlaWdodCA9IGAxMHB4YDtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcclxuICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlKCR7c2l6ZUJ1dHRvbi8xMH0pYFxyXG4gIH1cclxuXHJcbiAgICBhZGRMaXN0ZW5lcnNUb0J1dHRvbihcclxuICAgICAgICBidXR0b246IEhUTUxCdXR0b25FbGVtZW50LFxyXG4gICAgICAgIHVybDogc3RyaW5nLFxyXG4gICAgICAgIHRhZ1NlcnZpY2U6IEJhc2VUYWdTZXJ2aWNlID0gbnVsbCxcclxuICAgICAgICBlbGVtZW50OiBhbnkgPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgICBsZXQgdmlkZW9Kc1BsYXllcjtcclxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50Rm9yQnV0dG9uID0gdGhpcy5odG1sQ29udGVudFRvSW5qZWN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAob2JqZWN0KSA9PiBvYmplY3QuZWxlbWVudElEID09PSBidXR0b24uaWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5idG5UYWdJc0hvdmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjdGl0bGVUYWdEaXZgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGNvbnRlbnRGb3JCdXR0b24udGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJztcclxuICAgICAgICAgICAgICAgIHRpdGxlLmlubmVySFRNTCA9IGNvbnRlbnRGb3JCdXR0b24udGl0bGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2h0bWxUYWdEaXZgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUudG9wID0gYCR7ZXZlbnQuY2xpZW50WSArIDEwfXB4YDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggPCAxMjAgPyAwIDogZXZlbnQuY2xpZW50WCAtIDEyMFxyXG4gICAgICAgICAgICAgICAgfXB4YDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNvbnRlbnRGb3JCdXR0b24uY29udGVudCk7XHJcbiAgICAgICAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gY29udGVudEZvckJ1dHRvbi5jb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCBkZXRhaWxCdXR0b24gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNkZXRhaWxCdG4nKTtcclxuICAgICAgICAgICAgaWYgKGRldGFpbEJ1dHRvbikge1xyXG4gICAgICAgICAgICAgICAgZGV0YWlsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuZGV0YWlsU2hvd2luZy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgaW1hZ2UgY2Fyb3VzZWwgZnVsbHNjcmVlbiBidXR0b25cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VGdWxsc2NyZWVuQnRuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKCcjaW1hZ2UtZm9vdGVyJyk7XHJcbiAgICAgICAgICAgIGlmIChpbWFnZUZ1bGxzY3JlZW5CdG4pIHtcclxuICAgICAgICAgICAgICAgIGltYWdlRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uSW1hZ2VDbGljayhjb250ZW50Rm9yQnV0dG9uLmVsZW1lbnRJRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBib29raW5nIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGJvb2tpbmdCdXR0b24gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNib29raW5nQnRuJyk7XHJcbiAgICAgICAgICAgIGlmIChib29raW5nQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICBib29raW5nQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuZGV0YWlsU2hvd2luZy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgZG9jdW1lbnQgcGRmIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGRvY0Z1bGxzY3JlZW5CdG4gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNkb2MtZm9vdGVyJyk7XHJcbiAgICAgICAgICAgIGlmIChkb2NGdWxsc2NyZWVuQnRuICYmIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VXJsID0gdGFnU2VydmljZS5nZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZShcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIENvbW1lbnRUeXBlLkRPQ1VNRU5UXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZG9jRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uRG9jQ2xpY2soZG9jdW1lbnRVcmwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgdmlkZW8gZnVsbHNjcmVlbiBidXR0b25cclxuICAgICAgICAgICAgY29uc3QgdmlkZW9GdWxsc2NyZWVuQnRuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKCcjYnRuLXZpZGVvLWZ1bGxzY3JlZW4nKTtcclxuICAgICAgICAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkJ0biAmJiBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1VybCA9IHRhZ1NlcnZpY2UuZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBDb21tZW50VHlwZS5WSURFT1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uVmlkZW9DbGljayh2aWRlb1VybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBZb3V0dWJlIHZpZGVvIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IHlvdXR1YmVGdWxsU2NyZWVuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICAgICAgJyNidG4tdmlkZW8tZnVsbHNjcmVlbi15b3V0dWJlJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoeW91dHViZUZ1bGxTY3JlZW4gJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeW91dHViZVVybCA9IHRhZ1NlcnZpY2UuZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBDb21tZW50VHlwZS5ZT1VUVUJFXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgeW91dHViZUZ1bGxTY3JlZW4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnU2VydmljZS5vbkFjdGlvbllvdXR1YmVDbGljayh5b3V0dWJlVXJsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaGFuZGxlIG11dGUgdmlkZW8gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGJ0bk11dGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLW11dGUnKTtcclxuICAgICAgICAgICAgY29uc3QgaW1nT24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291bmQtb24nKTtcclxuICAgICAgICAgICAgY29uc3QgaW1nT2ZmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdW5kLW9mZicpO1xyXG4gICAgICAgICAgICBjb25zdCBwbGF5ZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtdXMtdmlkZW8tdGFnXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBsYXllckVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHZpZGVvSnNQbGF5ZXIgPSB2aWRlb2pzKFwibXVzLXZpZGVvLXRhZ1wiKTtcclxuICAgICAgICAgICAgICAgIGlmIChidG5NdXRlICYmIHZpZGVvSnNQbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBidG5NdXRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllci5tdXRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLm11dGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWdPbiAmJiBpbWdPZmYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdPbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nT2ZmLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLm11dGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltZ09uICYmIGltZ09mZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ09uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nT2ZmLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gaGFuZGxlIGF1ZGlvIHBsYXllciBidXR0b25zXHJcbiAgICAgICAgICAgIGNvbnN0IHBsYXllckJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdWRpby1wbGF5LWJ1dHRvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpby10YWcnKSBhcyBIVE1MTWVkaWFFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lbGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAgICAgICAnLnRpbWVsaW5lLXRhZydcclxuICAgICAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgICAgICAvLyBjb25zdCB0aW1lbGluZVZhbHVlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRpbWVsaW5lLXRhZycpLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzb3VuZEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdWRpby1zb3VuZC1idG4nKTtcclxuICAgICAgICAgICAgY29uc3QgcGxheUF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYXknKTtcclxuICAgICAgICAgICAgY29uc3QgcGF1c2VBdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXVzZScpO1xyXG4gICAgICAgICAgICBjb25zdCBpbWdTb3VuZE9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvLXNvdW5kLW9uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGltZ1NvdW5kT2ZmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvLXNvdW5kLW9mZicpO1xyXG4gICAgICAgICAgICBjb25zdCBhdWRpb01vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bi1hdWRpby1tb2RhbCcpO1xyXG4gICAgICAgICAgICBpZiAoYXVkaW8gJiYgcGxheWVyQnV0dG9uICYmIHRpbWVsaW5lKSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5ZXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQXVkaW8uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5QXVkaW8uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUF1ZGlvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlBdWRpby5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzb3VuZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8ubXV0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ubXV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nU291bmRPbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1NvdW5kT2ZmLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ubXV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWdTb3VuZE9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1NvdW5kT2ZmLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVRpbWVsaW5lUG9zaXRpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvLmR1cmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VQb3NpdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwICogYXVkaW8uY3VycmVudFRpbWUpIC8gYXVkaW8uZHVyYXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VQb3NpdGlvblN0cmluZyA9IHBlcmNlbnRhZ2VQb3NpdGlvbiArICclJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBwZXJjZW50YWdlUG9zaXRpb25TdHJpbmcgKyAnIDEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGluZS52YWx1ZSA9IHBlcmNlbnRhZ2VQb3NpdGlvbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF1ZGlvLm9udGltZXVwZGF0ZSA9IGNoYW5nZVRpbWVsaW5lUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGFuZ2VTZWVrKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSAocGFyc2VJbnQodGltZWxpbmUudmFsdWUpICogYXVkaW8uZHVyYXRpb24pIC8gMTAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gdGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNoYW5nZVNlZWspO1xyXG4gICAgICAgICAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBjaGFuZ2VTZWVrKTtcclxuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhdWRpbyBjbGlja1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1ZGlvTW9kYWwgJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudCA9IGVsZW1lbnQuY29tbWVudHM/Lml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5BVURJTyAmJiBjb20uc2hvd25JblRhZ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXVkaW9Db21tZW50SUQgPSBhdWRpb0NvbW1lbnQgPyBhdWRpb0NvbW1lbnQuaWQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBhdWRpb01vZGFsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnU2VydmljZS5vbkFjdGlvbkF1ZGlvQ2xpY2soYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHdlIHdhaXQgaWYgdXNlciBob3ZlcnMgb24gdG8gZGl2IG9mIHRoZSB0YWcgKGNoYW5nZXMgdGhpcy5mb2N1c01vdXNlVGFnRGl2KVxyXG4gICAgICAgICAgICB0aGlzLmJ0blRhZ0lzSG92ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9jdXNNb3VzZVRhZ0RpdiAmJiAhdGhpcy5idG5UYWdJc0hvdmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllcikge1xyXG4gICAgICAgICAgICAgICAgdmlkZW9Kc1BsYXllci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhidXR0b24uaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmRldGFpbFNob3dpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQnRuKGlkTGlzdDogYW55W10pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGlkTGlzdCkge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgICAgIGlmIChidXR0b24pIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5yZW1vdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhckFsbEJ1dHRvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbkRpdkNvbnRlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IHRoaXMucGxhbkRpdkNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LWZvci1lYWNoXHJcbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0biA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUFsbEJ1dHRvbnNTdHlsZShwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZXM6IEFycmF5PHN0cmluZz4pIHtcclxuICAgICAgICBpZiAodGhpcy5wbGFuRGl2Q29udGVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b25zID0gdGhpcy5wbGFuRGl2Q29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tYXJyYXktZm9yLWVhY2hcclxuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHksIGkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT09IFwidHJhbnNmb3JtXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9Gb3Igc2F2aW5nIHRoZSByb3RhdGlvbiBhbmQgYWRkaW5nIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByb3RhdGlvblJlZ2V4ID0gLyhyb3RhdGVcXCgtP1xcZCpcXC4/XFxkK2RlZ1xcKSkvZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvdGF0aW9uTWF0Y2ggPSBjdXJyZW50VmFsdWUuc3R5bGVbcHJvcGVydHldLm1hdGNoKHJvdGF0aW9uUmVnZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm90YXRpb25NYXRjaC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUuc3R5bGVbcHJvcGVydHldID0gYCR7dmFsdWVzW2ldfSAke3JvdGF0aW9uTWF0Y2hbMF19YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zdHlsZVtwcm9wZXJ0eV0gPSB2YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25QbGFuUmVtb3ZlKCkge1xyXG4gICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXNpemVQbGFuKGlzUmVtb3Zpbmc6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZVBsYW5TdWJzY3JpcHRpb24ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgaWYgKGlzUmVtb3ZpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygnaW4gcmVzaXplUGxhbicpO1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXYgJiYgdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgICAgdGhpcy5wYW56b29tID0gcGFuem9vbSh0aGlzLnBsYW5EaXYsIHtcclxuICAgICAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgICAgICBtYXhab29tOiA0LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBsYW5EaXZDb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFuRGl2Q29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb2VmZlgsIGNvZWZmWSB9ID0gZ2V0Q29lZmZpY2llbnRzRm9ySW1hZ2UodGhpcy5pbWdQbGFuLCByZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWCA9IGNvZWZmWDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSA9IGNvZWZmWTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFuem9vbS56b29tQWJzKDAsIDAsIDQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVQbGFuU3Vic2NyaXB0aW9uLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVRvdWNoKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobm93IC0gdGhpcy5sYXN0VG91Y2hUaW1lIDwgdGhpcy5kZWxheURibFRvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGFzdFRvdWNoVGltZSA9IDA7XHJcbiAgICAgICAgICAgIC8vIHRoaXMub25EYmxDbGlja1BsYW4oZXZlbnQpO1xyXG4gICAgICAgICAgICAvKiogU2ltdWxhdGUgYSBkYmxjbGljayBmb3IgcGhvbmUgKHdlIGRvbid0IGdldCBvZmZzZXRYL1kgb24gdG91Y2hldmVudCkgKi9cclxuICAgICAgICAgICAgY29uc3QgbmV3RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2ggPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICAgICAgICAgICAgbmV3RXZlbnQuaW5pdE1vdXNlRXZlbnQoXHJcbiAgICAgICAgICAgICAgICAnZGJsY2xpY2snLFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgICBldmVudC50YXJnZXQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICB0b3VjaC5zY3JlZW5YLFxyXG4gICAgICAgICAgICAgICAgdG91Y2guc2NyZWVuWSxcclxuICAgICAgICAgICAgICAgIHRvdWNoLmNsaWVudFgsXHJcbiAgICAgICAgICAgICAgICB0b3VjaC5jbGllbnRZLFxyXG4gICAgICAgICAgICAgICAgZXZlbnQuY3RybEtleSxcclxuICAgICAgICAgICAgICAgIGV2ZW50LmFsdEtleSxcclxuICAgICAgICAgICAgICAgIGV2ZW50LnNoaXJ0S2V5LFxyXG4gICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxhc3RUb3VjaFRpbWUgPSBub3c7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRGJsQ2xpY2tQbGFuKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBjb25zdCBjbGlja1ggPSBldmVudC5vZmZzZXRYO1xyXG4gICAgICAgIGNvbnN0IGNsaWNrWSA9IGV2ZW50Lm9mZnNldFk7XHJcbiAgICAgICAgY29uc3Qgem9uZVBsYW4gPSB0aGlzLmN1cnJlbnRQbGFuLnpvbmU7XHJcbiAgICAgICAgaWYgKHpvbmVQbGFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb25zOiBhbnkgPVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0ZvclpvbmUoem9uZVBsYW4pO1xyXG4gICAgICAgICAgICBpZiAobmF2aWdhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbnMubWFwKGFzeW5jIChuYXYpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdi5wb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGlicmF0aW9uUGxhbi5uZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uMkQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtUG9zaXRpb24zREZvck5ld0NhbGlicmF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbjJELnggLyBwb3NpdGlvbjJELmNvZWZmWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBwb3NpdGlvbjJELnkgLyBwb3NpdGlvbjJELmNvZWZmWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLngpIC9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLnogKiB0aGlzLmNhbGlicmF0aW9uUGxhbi55KSAvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5ZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0WCA9IE1hdGguYWJzKGNsaWNrWCAtIHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0WSA9IE1hdGguYWJzKGNsaWNrWSAtIHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXYuZGlzdCA9IE1hdGguc3FydChNYXRoLnBvdyhkaXN0WCwgMikgKyBNYXRoLnBvdyhkaXN0WSwgMikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbnMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRpc3QgLSBiLmRpc3Q7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX3N3ZWVwKFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zWzBdLm1hdHRlcnBvcnRTd2VlcElEXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJlcyBwbGFuIGZyb20gY2FjaGUgKHByZXZpb3VzIHBsYW4pLlxyXG4gICAgICovXHJcbiAgICBhc3luYyB1cGxvYWRQbGFuRnJvbUNhY2hlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuaHRtbENvbnRlbnRUb0luamVjdCA9IHRoaXMuY2FjaGUuaHRtbENvbnRlbnQ7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVQbGFuKHRoaXMuY2FjaGUucGxhbik7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHV0cyBidXR0b25zICh0YWdzKSBmcm9tIGNhY2hlIGFjY29yZGluZyB0byBwYXNzZWQgZWxlbWVudCBJRHMgKGZvciBmaWx0ZXIgaWYgYW55KVxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRJRHMgZWxlbWVudHMgKHRpY2tldHMsIGVxdWlwbWVudHMsIGV0YykgdG8gYmUgc2hvd24gb24gcGxhblxyXG4gICAgICovXHJcbiAgICB1cGxvYWRUYWdzRnJvbUNhY2hlKHNpemVCdXR0b246IG51bWJlciA9IDEwKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1cGxvYWRpbmcgdGFncyBmcm9tIGNhY2hlXCIpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhY2hlZCBvZiB0aGlzLmNhY2hlLmh0bWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAgICAgICB0aGlzLnN0eWxlQnV0dG9uKGJ1dHRvbiwgY2FjaGVkLnRhZ0ljb24sIHNpemVCdXR0b24pO1xyXG4gICAgICAgICAgICBidXR0b24uaWQgPSBjYWNoZWQuZWxlbWVudElEO1xyXG4gICAgICAgICAgICB0aGlzLnBsYW5EaXZDb250ZW50LmFwcGVuZChidXR0b24pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jYWxpYnJhdGlvblBsYW4ubmV3KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDb2VmZlggPVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWCAvXHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW1nUGxhbi53aWR0aCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ1dpZHRoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvZWZmWSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5ZIC9cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5pbWdQbGFuLmhlaWdodCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ0hlaWdodCk7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudG9wID0gYCR7Y2FjaGVkLnkgLyBuZXdDb2VmZlkgLSA1fXB4YDtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7Y2FjaGVkLnggLyBuZXdDb2VmZlggLSA1fXB4YDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS50b3AgPSBgJHtjYWNoZWQueSAvIHRoaXMuY29lZmZQbGFuWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmxlZnQgPSBgJHtjYWNoZWQueCAvIHRoaXMuY29lZmZQbGFuWCAtIDV9cHhgO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyc1RvQnV0dG9uKGJ1dHRvbiwgY2FjaGVkLnVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENhbGlicmF0ZWRQbGFuRm9yWm9uZSh6b25lOiBab25lKTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgbGV0IHBsYW5zID0gKGF3YWl0IHRoaXMuQVBJLlBsYW5zQnlab25lKHpvbmUuaWQpKS5pdGVtcztcclxuICAgICAgICBsZXQgcGFyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHBsYW5zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyB0cnkgdG8gZmluZCBwYXJlbnQgem9uZVxyXG4gICAgICAgICAgICBwYXJlbnRab25lID0gYXdhaXQgdGhpcy5BUEkuR2V0Wm9uZSh6b25lLnBhcmVudElEKTtcclxuICAgICAgICAgICAgcGxhbnMgPSAoYXdhaXQgdGhpcy5BUEkuUGxhbnNCeVpvbmUoem9uZS5wYXJlbnRJRCkpLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjYWxpYnJhdGVkUGxhbiA9IHBsYW5zLmZpbmQoXHJcbiAgICAgICAgICAgIChwbGFuKSA9PiBwbGFuLmNhbGlicmF0aW9uICYmIHBsYW4uaXNDdXJyZW50Rm9yWm9uZVxyXG4gICAgICAgICkgYXMgUGxhbjtcclxuICAgICAgICBpZiAoY2FsaWJyYXRlZFBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShjYWxpYnJhdGVkUGxhbi5hbm5leGUpO1xyXG4gICAgICAgICAgICBpZiAoc2lnbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxpYnJhdGVkUGxhbi5maWxlcGF0aCA9IHNpZ25lZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxpYnJhdGVkUGxhbi5uYXZpZ2F0aW9uSURzID0gcGFyZW50Wm9uZVxyXG4gICAgICAgICAgICAgICAgPyBwYXJlbnRab25lLnN3ZWVwSURzXHJcbiAgICAgICAgICAgICAgICA6IHpvbmUuc3dlZXBJRHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYWxpYnJhdGVkUGxhbiB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVBvc2l0aW9uM0RGb3JOZXdDYWxpYnJhdGlvbihwb3NpdGlvbjoge1xyXG4gICAgICAgIHg6IG51bWJlcjtcclxuICAgICAgICB5OiBudW1iZXI7XHJcbiAgICAgICAgejogbnVtYmVyO1xyXG4gICAgfSk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGNvZWZmWDogbnVtYmVyOyBjb2VmZlk6IG51bWJlcjsgfSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25YID1cclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4ubmFtZVhBeGlzID09PSAneCcgPyBwb3NpdGlvbi54IDogcG9zaXRpb24uejtcclxuICAgICAgICBjb25zdCBwb3NpdGlvblkgPVxyXG4gICAgICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbi5uYW1lWUF4aXMgPT09ICd4JyA/IHBvc2l0aW9uLnggOiBwb3NpdGlvbi56O1xyXG4gICAgICAgIGxldCB4ID1cclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WCArIHBvc2l0aW9uWCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLnNjYWxlWDtcclxuICAgICAgICBsZXQgeSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFkgKyBwb3NpdGlvblkgKiB0aGlzLmNhbGlicmF0aW9uUGxhbi5zY2FsZVk7XHJcbiAgICAgICAgY29uc3QgbmV3Q29lZmZYID1cclxuICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5YIC8gKHRoaXMuaW1nUGxhbi53aWR0aCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ1dpZHRoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm5ld0NvZWZmWFwiLCBuZXdDb2VmZlgpO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvZWZmWSA9XHJcbiAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSAvICh0aGlzLmltZ1BsYW4uaGVpZ2h0IC8gdGhpcy5jYWxpYnJhdGlvblBsYW4uaW1nSGVpZ2h0KTtcclxuICAgICAgICB4ID0gKHggLSB0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYUGxhbikgLyB0aGlzLmNhbGlicmF0aW9uUGxhbi5zY2FsZVBsYW47XHJcblxyXG4gICAgICAgIHkgPSAoeSAtIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFlQbGFuKSAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLnNjYWxlUGxhbjtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh4LCB5KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgY29lZmZYOiBuZXdDb2VmZlgsIGNvZWZmWTogbmV3Q29lZmZZIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
799
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvcGxhbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM5RCxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUNILFdBQVcsRUFDWCxXQUFXLEVBRVgsT0FBTyxHQUVWLE1BQU0scUJBQXFCLENBQUM7QUFNN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7QUFNeEQsTUFBTSxPQUFPLFdBQVc7SUEwRXBCLFlBQ2lDLFdBQWdCLEVBQ3JDLFdBQXdCLEVBQ3hCLGlCQUFvQztJQUM1Qyw4QkFBOEI7SUFDdEIsYUFBNEIsRUFDNUIsTUFBYyxFQUNkLGlCQUFvQztJQUM1Qyw2QkFBNkI7SUFDckIsaUJBQXdDLEVBQ3hDLGNBQThCO1FBUjlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFcEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFq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U0FBUyxFQUFFLENBQUM7SUFDMUQsQ0FBQzs7eUdBcjlCUSxXQUFXLGtCQTJFUixtQkFBbUI7NkdBM0V0QixXQUFXLGNBRlIsTUFBTTs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBNEVRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZnVuYy1uYW1lcyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBnZXREb2N1bWVudCwgR2xvYmFsV29ya2VyT3B0aW9ucyB9IGZyb20gJ3BkZmpzLWRpc3QnO1xyXG5pbXBvcnQgcGFuem9vbSBmcm9tICdwYW56b29tJztcclxuaW1wb3J0IHZpZGVvanMgZnJvbSBcInZpZGVvLmpzXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICAgIENvbW1lbnRUeXBlLFxyXG4gICAgRmVhdHVyZVR5cGUsXHJcbiAgICBQbGFuLFxyXG4gICAgUG9pVHlwZSxcclxuICAgIFpvbmUsXHJcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL2Jhc2VWaXNpYmlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXR0ZXJwb3J0U2VydmljZSB9IGZyb20gJy4uL21hdHRlcnBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFpvbmVTZXJ2aWNlIH0gZnJvbSAnLi96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0U2lnbmVkRmlsZSwgdXBsb2FkRmlsZVRvUzMgfSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVRhZ1NlcnZpY2UgfSBmcm9tICcuLi90YWcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IGdldENvZWZmaWNpZW50c0ZvckltYWdlIH0gZnJvbSAnLi4vem9uZS1kcmF3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGdldE1ldGFGb3JJbWFnZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29udGVudC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYW5TZXJ2aWNlIHtcclxuICAgIGNob3NlblBsYW46IFBsYW47XHJcblxyXG4gICAgY3VycmVudFBsYW46IFBsYW47XHJcblxyXG4gICAgY3VycmVudFN3ZWVwOiBzdHJpbmc7XHJcblxyXG4gICAgcGxhbkZpbGVDYWNoZTogRmlsZTtcclxuXHJcbiAgICBwbGFuQ2FudmFzOiBhbnk7XHJcblxyXG4gICAgcGxhbkRpdjogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50O1xyXG4gICAgcGxhbkRpdkNvbnRlbnQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHBhbnpvb206IGFueTtcclxuXHJcbiAgICBpc1JlYWR5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgdXNlclBvc2l0aW9uQnRuOiBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgICBjb2VmZlBsYW5YOiBudW1iZXI7XHJcblxyXG4gICAgY29lZmZQbGFuWTogbnVtYmVyO1xyXG5cclxuICAgIGNhbGlicmF0aW9uUGxhbjogYW55O1xyXG5cclxuICAgIGRldGFpbFRhZ0RpdjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgZGV0YWlsVGFnRGl2SXNIb3ZlciA9IGZhbHNlO1xyXG5cclxuICAgIGJ0blRhZ0lzSG92ZXIgPSBmYWxzZTtcclxuXHJcbiAgICByZXNpemVQbGFuU3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBpbWdQbGFuOiBIVE1MSW1hZ2VFbGVtZW50O1xyXG5cclxuICAgIGxhc3RUb3VjaFRpbWUgPSAwO1xyXG5cclxuICAgIGRlbGF5RGJsVG91Y2ggPSA1MDA7XHJcblxyXG4gICAgbGFzdFJvdGF0aW9uOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIGh0bWxDb250ZW50VG9JbmplY3Q6IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgICAgIGNvbnRlbnQ6IHN0cmluZztcclxuICAgICAgICBlbGVtZW50SUQ6IHN0cmluZztcclxuICAgICAgICB5OiBudW1iZXI7XHJcbiAgICAgICAgeDogbnVtYmVyO1xyXG4gICAgICAgIHRhZ0ljb246IHN0cmluZztcclxuICAgICAgICB1cmw6IHN0cmluZztcclxuICAgIH1bXSA9IFtdO1xyXG5cclxuICAgIGNhY2hlOiB7XHJcbiAgICAgICAgZXF1aXBJRHM6IHN0cmluZ1tdO1xyXG4gICAgICAgIHRpY2tldElEczogc3RyaW5nW107XHJcbiAgICAgICAgbWVhc3VyZW1lbnRzSURzOiBzdHJpbmdbXTtcclxuICAgICAgICBmZWF0dXJlSURzOiBzdHJpbmdbXTtcclxuICAgICAgICB6b25lSUQ6IHN0cmluZztcclxuICAgICAgICBwbGFuOiBQbGFuO1xyXG4gICAgICAgIGh0bWxDb250ZW50OiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0cmluZztcclxuICAgICAgICAgICAgZWxlbWVudElEOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHk6IG51bWJlcjtcclxuICAgICAgICAgICAgeDogbnVtYmVyO1xyXG4gICAgICAgICAgICB0YWdJY29uOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHVybDogc3RyaW5nO1xyXG4gICAgICAgIH1bXTtcclxuICAgIH07XHJcblxyXG4gICAgZm9jdXNNb3VzZVRhZ0RpdjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEFQSTogYW55OyAvL0FXU1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICAvLyB0YWdTZXJ2aWNlOiBCYXNlVGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICAgICAgICAvLyBwcml2YXRlIGNvbmZpZzogQXBwQ29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgdmlzaWJpbGl0eVNlcnZpY2U6IEJhc2VWaXNpYmlsaXR5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRDYW1lcmFQb3NlLnN1YnNjcmliZSgocG9zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvdGF0aW9uKHBvc2Uucm90YXRpb24ueSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlUGxhbihwbGFuSW5wdXQ6IFBsYW4pOiBQcm9taXNlPFBsYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVBsYW4ocGxhbklucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVQbGFuKHBsYW46IFBsYW4pOiBQcm9taXNlPFBsYW4+IHtcclxuICAgICAgICAvLyBhd2FpdCBkZWxldGVGcm9tUzMocGxhbi5hbm5leGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlUGxhbih7IGlkOiBwbGFuLmlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFBsYW5zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgICAgICAgIC5QbGFuc0J5U3BhY2Uoc3BhY2VJRClcclxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UGxhbnNGb3Jab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgICAgICAgIC5QbGFuc0J5Wm9uZSh6b25lSUQpXHJcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFNpbmdlZFBsYW5zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxQbGFuW10+IHtcclxuICAgICAgICBjb25zdCBwbGFuc0Zyb21EQiA9IGF3YWl0IHRoaXMuZ2V0UGxhbnNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhwbGFuc0Zyb21EQik7XHJcbiAgICAgICAgY29uc3QgcGxhbnMgPSBbXTtcclxuICAgICAgICBpZiAocGxhbnNGcm9tREIubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgIHBsYW5zRnJvbURCLm1hcChhc3luYyAocGxhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYW5PYmplY3QgPSB7IC4uLnBsYW4gfSBhcyBQbGFuO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFubmV4ZSBsb29rcyBsaWtlIHZpc2l0cy9tb2RlbElEL3BsYW5zL2ZpbGUuZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShwbGFuLmFubmV4ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ25lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0LmZpbGVwYXRoID0gc2lnbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAocGxhbi5hbm5leGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgbW9kZWxJRCwgLCBmaWxlbmFtZVdpdGhFeHRlbnNpb25dID0gcGxhbi5hbm5leGUuc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgZXh0ZW50aW9uXSA9IGZpbGVuYW1lV2l0aEV4dGVuc2lvbi5zcGxpdCgnLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0Lm1vZGVsM2QgPSBtb2RlbElEO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFuT2JqZWN0LmV4dGVuc2lvbiA9IGV4dGVudGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhbnMucHVzaChwbGFuT2JqZWN0KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgcGxhbiBoYXZlIG5vdCBhbm5leGUgPT4gYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBsYW4uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwbGFucztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRQbGFuc1dpdGhab25lc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8UGxhbltdPiB7XHJcbiAgICAgICAgY29uc3QgcGxhbnMgPSBhd2FpdCB0aGlzLmdldFBsYW5zRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgcGxhbnNab25lcyA9IHBsYW5zLmZpbHRlcigocGxhbikgPT4gcGxhbi56b25lICYmIHBsYW4uY2FsaWJyYXRpb24pO1xyXG4gICAgICAgIHJldHVybiBwbGFuc1pvbmVzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldENob3NlblBsYW4oY2hvc2VuUGxhbjogUGxhbikge1xyXG4gICAgICAgIHRoaXMuY2hvc2VuUGxhbiA9IGNob3NlblBsYW47XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2hvc2VuUGxhbigpOiBQbGFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jaG9zZW5QbGFuO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsYW5GaWxlQ2FjaGUocGxhbkZpbGVDYWNoZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMucGxhbkZpbGVDYWNoZSA9IHBsYW5GaWxlQ2FjaGU7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsYW5GaWxlQ2FjaGUoKTogRmlsZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhbkZpbGVDYWNoZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGVQbGFuV2l0aEFubmV4ZShwbGFuOiBQbGFuLCBmaWxlOiBGaWxlKTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgY29uc3QgY3JlYXRlZFBsYW4gPSBhd2FpdCB0aGlzLmNyZWF0ZVBsYW4ocGxhbik7XHJcbiAgICAgICAgY29uc3QgbW9kZWwzRCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0TW9kZWwzREZvclpvbmUocGxhbi56b25lSUQpO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKFxyXG4gICAgICAgICAgICBgdmlzaXRzLyR7bW9kZWwzRH0vcGxhbnMvYCxcclxuICAgICAgICAgICAgZmlsZSxcclxuICAgICAgICAgICAgY3JlYXRlZFBsYW4uaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQbGFuKHsgaWQ6IGNyZWF0ZWRQbGFuLmlkLCBhbm5leGU6IHVybCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRQbGFuO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVBsYW4ocGxhbjogYW55KTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQbGFuKHBsYW4pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZVBsYW5GaWxlKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hvc2VuUGxhbiAmJiB0aGlzLnBsYW5GaWxlQ2FjaGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbW9kZWwzRCA9IGF3YWl0IHRoaXMuem9uZVNlcnZpY2UuZ2V0TW9kZWwzREZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNob3NlblBsYW4uem9uZUlEXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhcclxuICAgICAgICAgICAgICAgIGB2aXNpdHMvJHttb2RlbDNEfS9wbGFucy9gLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuRmlsZUNhY2hlLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaG9zZW5QbGFuLmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNldEFsbFBsYW5zRm9yWm9uZU5vdEN1cnJlbnQoem9uZUlEOiBzdHJpbmcsIGN1cnJlbnRQbGFuSUQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBsYW5zID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkxpc3RQbGFucyh7XHJcbiAgICAgICAgICAgIHpvbmVJRDogeyBlcTogem9uZUlEIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgIHBsYW5zLml0ZW1zLm1hcChhc3luYyAocGxhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYW4uaXNDdXJyZW50Rm9yWm9uZSAmJiBwbGFuLmlkICE9PSBjdXJyZW50UGxhbklEKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVQbGFuKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBsYW4uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudEZvclpvbmU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY29uZmlndXJlUGxhbihcclxuICAgICAgICBjdXJyZW50UGxhbjogUGxhbixcclxuICAgICAgICBkaXZJZDogc3RyaW5nID0gJ3BsYW5EaXZQYW5lJyxcclxuICAgICAgICBkaXZDb250ZW50SWQ6IHN0cmluZyA9ICdwbGFuRGl2UGFuZUNvbnRlbnQnXHJcbiAgICApOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICB0aGlzLmlzUmVhZHkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuZGV0YWlsVGFnRGl2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgICAgIGAjZGV0YWlsVGFnRGl2YFxyXG4gICAgICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTW91c2VUYWdEaXYgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYnRuVGFnSXNIb3ZlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzTW91c2VUYWdEaXYgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4gPSBKU09OLnBhcnNlKGN1cnJlbnRQbGFuLmNhbGlicmF0aW9uKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQbGFuID0gY3VycmVudFBsYW47XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZGl2SWR9YCkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAgIGAjJHtkaXZDb250ZW50SWR9YFxyXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMucGxhbkRpdi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5oYW5kbGVUb3VjaC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLnBsYW5EaXYuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCB0aGlzLm9uRGJsQ2xpY2tQbGFuLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgICBpZiAoIWN1cnJlbnRQbGFuLmFubmV4ZS5pbmNsdWRlcygncGRmJykpIHtcclxuICAgICAgICAgICAgdGhpcy5pbWdQbGFuID0gYXdhaXQgZ2V0TWV0YUZvckltYWdlKGN1cnJlbnRQbGFuLmZpbGVwYXRoKTtcclxuICAgICAgICAgICAgLy9SZWN0IHVzZSBvZmZzZXRXaWR0aCA6IGhlaWdodCwgbm90IGFjdHVhbCBib3VuZGluZ0NsaWVudFJlY3QgYmVjYXVzZSB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSB6b29tLlxyXG4gICAgICAgICAgICBjb25zdCByZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZWZmWCwgY29lZmZZIH0gPSBnZXRDb2VmZmljaWVudHNGb3JJbWFnZSh0aGlzLmltZ1BsYW4sIHJlY3QpO1xyXG4gICAgICAgICAgICB0aGlzLmNvZWZmUGxhblggPSBjb2VmZlg7XHJcbiAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSA9IGNvZWZmWTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke2N1cnJlbnRQbGFuLmZpbGVwYXRofSlgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJhd1BkZihjdXJyZW50UGxhbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XHJcbiAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS5iYWNrZ3JvdW5kUmVwZWF0ID0gJ25vLXJlcGVhdCc7XHJcblxyXG4gICAgICAgIHRoaXMucGFuem9vbSA9IHBhbnpvb20odGhpcy5wbGFuRGl2LCB7XHJcbiAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgYm91bmRzUGFkZGluZzogMCxcclxuICAgICAgICAgICAgbWF4Wm9vbTogNCxcclxuICAgICAgICAgICAgem9vbURvdWJsZUNsaWNrU3BlZWQ6IDEsIC8vZGlzYWJsZXMgZG91YmxlIGNsaWNrIHpvb21cclxuICAgICAgICAgICAgLy9pbml0aWFsWm9vbTogNFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucGFuem9vbS56b29tQWJzKDAsIDAsIDQpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvdGF0aW9uKHRoaXMubGFzdFJvdGF0aW9uKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyUGxhbkltYWdlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXZDb250ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZHJhd1BkZihjdXJyZW50UGxhbjogUGxhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKSBhcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHBkZmpzV29ya2VyID0gYXdhaXQgaW1wb3J0KCdwZGZqcy1kaXN0L2J1aWxkL3BkZi53b3JrZXIuZW50cnknKTtcclxuXHJcbiAgICAgICAgICAgIEdsb2JhbFdvcmtlck9wdGlvbnMud29ya2VyU3JjID0gcGRmanNXb3JrZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHBkZiA9IGF3YWl0IGdldERvY3VtZW50KGN1cnJlbnRQbGFuLmZpbGVwYXRoKS5wcm9taXNlO1xyXG4gICAgICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgcGRmLmdldFBhZ2UoMSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB2aWV3UG9ydFBhcmFtZXRlcnMgPSB7IHNjYWxlOiAxLjUgfTtcclxuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBwYWdlLmdldFZpZXdwb3J0KHZpZXdQb3J0UGFyYW1ldGVycyk7XHJcblxyXG4gICAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlld3BvcnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICBjYW52YXMud2lkdGggPSB2aWV3cG9ydC53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyQ29udGV4dCA9IHtcclxuICAgICAgICAgICAgICAgIGNhbnZhc0NvbnRleHQ6IGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgcmVuZGVyVGFzayA9IHBhZ2UucmVuZGVyKHJlbmRlckNvbnRleHQpLnByb21pc2U7XHJcbiAgICAgICAgICAgIHJlbmRlclRhc2sudGhlbihhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbWdVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1nUGxhbiA9IGF3YWl0IGdldE1ldGFGb3JJbWFnZShpbWdVcmwpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy5wbGFuRGl2Q29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMucGxhbkRpdkNvbnRlbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgY29lZmZYLCBjb2VmZlkgfSA9IGdldENvZWZmaWNpZW50c0ZvckltYWdlKHRoaXMuaW1nUGxhbiwgcmVjdCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblggPSBjb2VmZlg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblkgPSBjb2VmZlk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYW5EaXYuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke2ltZ1VybH0pYDtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZHJhd0VsZW1lbnQoXHJcbiAgICAgICAgZWxlbWVudDogYW55LFxyXG4gICAgICAgIHRhZ1R5cGU6IFBvaVR5cGUsXHJcbiAgICAgICAgY3VycmVudFBsYW46IFBsYW4sXHJcbiAgICAgICAgdGFnU2VydmljZTogQmFzZVRhZ1NlcnZpY2UsXHJcbiAgICAgICAgY29uZmlnOiBDb25maWcsXHJcbiAgICAgICAgc2l6ZUJ1dHRvbjogbnVtYmVyID0gMTBcclxuICAgICkge1xyXG4gICAgICAgIGNvbnN0IFtwb2ldID0gZWxlbWVudC5wb2lzLml0ZW1zO1xyXG4gICAgICAgIGlmIChwb2kgJiYgcG9pLmNvb3JkaW5hdGUgJiYgY3VycmVudFBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3QgeyB6b25lIH0gPSBjdXJyZW50UGxhbjtcclxuICAgICAgICAgICAgaWYgKHpvbmUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gSlNPTi5wYXJzZShwb2kuY29vcmRpbmF0ZSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50VGl0bGU6IHN0cmluZztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHRhZ1NlcnZpY2UuZ2V0VXJsRm9yU2VlRGV0YWlscyhlbGVtZW50LCB0YWdUeXBlKTtcclxuICAgICAgICAgICAgICAgIGxldCB0YWdJY29uSW1hZ2U6IHN0cmluZztcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGFnVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gY29uZmlnLm15X2NvbmZpZy5pY29uX3RpY2tldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gY29uZmlnLm15X2NvbmZpZy5pY29uX2VxdWlwbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fbWVhc3VyZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQb2lUeXBlLk9CSkVDVDNEOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fb2JqZWN0M2Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uSW1hZ2UgPSBjb25maWcubXlfY29uZmlnLmljb25fZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0ljb25JbWFnZSA9IGNvbmZpZy5teV9jb25maWcuaWNvbl9kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocG9pLnRhZ0ljb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YWdJY29uID0gSlNPTi5wYXJzZShwb2kudGFnSWNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdUeXBlID09PSBQb2lUeXBlLkRBVEEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBGZWF0dXJlVHlwZS5JTkRJQ0FUT1JfVEVNUFxyXG4gICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uLnNyYyA9IHRhZ1NlcnZpY2UuZ2V0SWNvblRhZ0ltYWdlRm9yRmVhdHVyZShlbGVtZW50LCBwb2kpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyBwb2kudGFnSWNvbiA9IHRhZ0ljb247XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdJY29uLnNyYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCBnZXRTaWduZWRGaWxlKHRhZ0ljb24uc3JjKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbkltYWdlID0gc291cmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZUJ1dHRvbihidXR0b24sIHRhZ0ljb25JbWFnZSwgc2l6ZUJ1dHRvbik7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uaWQgPSBlbGVtZW50LmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5hcHBlbmQoYnV0dG9uKTtcclxuICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgeTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm5ldykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZXJ0KFwibmV3IGNhbGlicmF0aW9uIHBsYW46IHBvc2l0aW9uaW5nIG5vdCByZWFkeSB5ZXRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24yRCA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtUG9zaXRpb24zREZvck5ld0NhbGlicmF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICB4ID0gcG9zaXRpb24yRC54O1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPSBwb3NpdGlvbjJELnk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLnRvcCA9IGAke3kgLyBwb3NpdGlvbjJELmNvZWZmWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7eCAvIHBvc2l0aW9uMkQuY29lZmZYIC0gNX1weGA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlbW92ZSB3aGVuIGFsbCBjYWxpYnJhdGlvbnMgYXJlIG5ld1xyXG4gICAgICAgICAgICAgICAgICAgIHggPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYICsgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLng7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFkgKyBwb3NpdGlvbi56ICogdGhpcy5jYWxpYnJhdGlvblBsYW4ueTtcclxuICAgICAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudG9wID0gYCR7eSAvIHRoaXMuY29lZmZQbGFuWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7eCAvIHRoaXMuY29lZmZQbGFuWCAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBhd2FpdCB0YWdTZXJ2aWNlLmdldEh0bWxUb0luamVjdCh0YWdUeXBlLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIGlmIChodG1sICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5odG1sQ29udGVudFRvSW5qZWN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50SUQ6IGVsZW1lbnQuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogaHRtbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnSWNvbjogdGFnSWNvbkltYWdlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gd2UgZG9uJ3QgaGF2ZSBodG1sID0+IGNhc2Ugb2YgRU1CRUQgQ29tbWVudCB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudEVtYmVkID0gZWxlbWVudC5jb21tZW50cz8uaXRlbXMuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkVNQkVEICYmIGNvbS5zaG93bkluVGFnXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWVudEVtYmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaHRtbENvbnRlbnRUb0luamVjdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJRDogZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlbGVtZW50LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYDxpZnJhbWUgc3JjPSR7Y29tbWVudEVtYmVkLmV4dGVybmFsTGlua30gaGVpZ2h0PVwiMjAwcHhcIiB3aWR0aD1cIjEwMCVcIj48L2lmcmFtZT5gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdJY29uOiB0YWdJY29uSW1hZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyc1RvQnV0dG9uKGJ1dHRvbiwgdXJsLCB0YWdTZXJ2aWNlLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUm90YXRpb24odGhpcy5sYXN0Um90YXRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRyYXdVc2VyUG9zaXRpb24oY3VycmVudFN3ZWVwID0gdGhpcy5jdXJyZW50U3dlZXAsIHNpemVCdXR0b246IG51bWJlciA9IDEwKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBjdXJyZW50U3dlZXA7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuICYmIGN1cnJlbnRTd2VlcCkge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRDYW1lcmFQb3NpdGlvbigpPy5wb3NpdGlvbjtcclxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudXNlclBvc2l0aW9uQnRuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyUG9zaXRpb25CdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi5pZCA9ICdjdXJyZW50UG9zaXRpb24nO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxhbkRpdkNvbnRlbnQuYXBwZW5kKHRoaXMudXNlclBvc2l0aW9uQnRuKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi50aXRsZSA9ICdZb3UgYXJlIGhlcmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVCdXR0b24oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ24vYng6YnhzLXVzZXItY2lyY2xlLnN2Zz9jb2xvcj1ncmVlbiZoZWlnaHQ9MTcmd2lkdGg9MTcnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgeTogbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm5ldykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uMkQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zZm9ybVBvc2l0aW9uM0RGb3JOZXdDYWxpYnJhdGlvbihwb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IHBvc2l0aW9uMkQueCAvIHBvc2l0aW9uMkQuY29lZmZYIC0gNTtcclxuICAgICAgICAgICAgICAgICAgICB5ID0gcG9zaXRpb24yRC55IC8gcG9zaXRpb24yRC5jb2VmZlkgLSA1O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB4ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLngpIC9cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5YO1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbi56ICogdGhpcy5jYWxpYnJhdGlvblBsYW4ueSkgL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0bi5zdHlsZS50b3AgPSBgJHt5fXB4YDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuLnN0eWxlLmxlZnQgPSBgJHt4fXB4YDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZU9uUG9pbnQoeyB4OiB4ICsgNSwgeTogeSArIDUgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDZW50ZXIgdGhlIHZpZXcgb2YgdGhlIHBsYW4gb24gY29vcmRpbmF0ZXNcclxuICAgICAqIEBwYXJhbSBjb29yZGluYXRlIENvb3JkaW5hdGUgb24gdGhlIHBsYW5cclxuICAgICAqL1xyXG4gICAgbW92ZU9uUG9pbnQoY29vcmRpbmF0ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXYpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLnBhbnpvb20uZ2V0VHJhbnNmb3JtKCkuc2NhbGU7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdmVYID0gdGhpcy5wbGFuRGl2LmNsaWVudFdpZHRoIC8gMiAtIGNvb3JkaW5hdGUueCAqIHNjYWxlO1xyXG4gICAgICAgICAgICBjb25zdCBtb3ZlWSA9IHRoaXMucGxhbkRpdi5jbGllbnRIZWlnaHQgLyAyIC0gY29vcmRpbmF0ZS55ICogc2NhbGU7XHJcbiAgICAgICAgICAgIHRoaXMucGFuem9vbS5tb3ZlVG8obW92ZVgsIG1vdmVZKTtcclxuICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS50cmFuc2Zvcm1PcmlnaW4gPSBgJHtjb29yZGluYXRlLnh9cHggJHtjb29yZGluYXRlLnl9cHhgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFwcGx5IGEgcm90YXRpb24gdG8gdGhlIHBsYW5cclxuICAgICAqIEJ1dHRvbnMgd2lsbCByZW1haW4gaW4gdGhlIGNvcnJlY3Qgcm90YXRpb25cclxuICAgICAqIEBwYXJhbSByb3RhdGlvblxyXG4gICAgICovXHJcbiAgICB1cGRhdGVSb3RhdGlvbihyb3RhdGlvbikge1xyXG4gICAgICAgIHRoaXMubGFzdFJvdGF0aW9uID0gcm90YXRpb247XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbkRpdkNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGFuRGl2Q29udGVudC5zdHlsZS50cmFuc2Zvcm0gPSBgcm90YXRlKCR7cm90YXRpb259ZGVnKWA7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLnBsYW5EaXZDb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbicpO1xyXG4gICAgICAgICAgICBsZXQgcm90YXRpb25SZWdleCA9IC8ocm90YXRlXFwoLT9cXGQqXFwuP1xcZCtkZWdcXCkpL2c7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LWZvci1lYWNoXHJcbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYnV0dG9uLnN0eWxlLnRyYW5zZm9ybS5yZXBsYWNlKHJvdGF0aW9uUmVnZXgsIFwiXCIpICsgYCByb3RhdGUoJHstcm90YXRpb259ZGVnKWA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDdXJyZW50UG9zaXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1cnJlbnRQb3NpdGlvbicpO1xyXG4gICAgICAgIGlmIChidXR0b24pIHtcclxuICAgICAgICAgICAgYnV0dG9uLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0biA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0eWxlQnV0dG9uKGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQsIHVybDogc3RyaW5nLCBzaXplQnV0dG9uOiBudW1iZXIgPSAxMCkge1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKCR7dXJsfSlgO1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJvcmRlciA9ICdub25lJztcclxuICAgICAgICBidXR0b24uc3R5bGUud2lkdGggPSBgMTBweGA7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmhlaWdodCA9IGAxMHB4YDtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZFNpemUgPSAnY29udGFpbic7XHJcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRSZXBlYXQgPSAnbm8tcmVwZWF0JztcclxuICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlKCR7c2l6ZUJ1dHRvbi8xMH0pYFxyXG4gIH1cclxuXHJcbiAgICBhZGRMaXN0ZW5lcnNUb0J1dHRvbihcclxuICAgICAgICBidXR0b246IEhUTUxCdXR0b25FbGVtZW50LFxyXG4gICAgICAgIHVybDogc3RyaW5nLFxyXG4gICAgICAgIHRhZ1NlcnZpY2U6IEJhc2VUYWdTZXJ2aWNlID0gbnVsbCxcclxuICAgICAgICBlbGVtZW50OiBhbnkgPSBudWxsXHJcbiAgICApIHtcclxuICAgICAgICBsZXQgdmlkZW9Kc1BsYXllcjtcclxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50Rm9yQnV0dG9uID0gdGhpcy5odG1sQ29udGVudFRvSW5qZWN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAob2JqZWN0KSA9PiBvYmplY3QuZWxlbWVudElEID09PSBidXR0b24uaWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5idG5UYWdJc0hvdmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjdGl0bGVUYWdEaXZgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGNvbnRlbnRGb3JCdXR0b24udGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIHRpdGxlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJztcclxuICAgICAgICAgICAgICAgIHRpdGxlLmlubmVySFRNTCA9IGNvbnRlbnRGb3JCdXR0b24udGl0bGU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI2h0bWxUYWdEaXZgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUudG9wID0gYCR7ZXZlbnQuY2xpZW50WSArIDEwfXB4YDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUubGVmdCA9IGAke2V2ZW50LmNsaWVudFggPCAxMjAgPyAwIDogZXZlbnQuY2xpZW50WCAtIDEyMFxyXG4gICAgICAgICAgICAgICAgfXB4YDtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGNvbnRlbnRGb3JCdXR0b24uY29udGVudCk7XHJcbiAgICAgICAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gY29udGVudEZvckJ1dHRvbi5jb250ZW50O1xyXG4gICAgICAgICAgICBjb25zdCBkZXRhaWxCdXR0b24gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNkZXRhaWxCdG4nKTtcclxuICAgICAgICAgICAgaWYgKGRldGFpbEJ1dHRvbikge1xyXG4gICAgICAgICAgICAgICAgZGV0YWlsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuZGV0YWlsU2hvd2luZy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgaW1hZ2UgY2Fyb3VzZWwgZnVsbHNjcmVlbiBidXR0b25cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VGdWxsc2NyZWVuQnRuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKCcjaW1hZ2UtZm9vdGVyJyk7XHJcbiAgICAgICAgICAgIGlmIChpbWFnZUZ1bGxzY3JlZW5CdG4pIHtcclxuICAgICAgICAgICAgICAgIGltYWdlRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uSW1hZ2VDbGljayhjb250ZW50Rm9yQnV0dG9uLmVsZW1lbnRJRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBib29raW5nIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGJvb2tpbmdCdXR0b24gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNib29raW5nQnRuJyk7XHJcbiAgICAgICAgICAgIGlmIChib29raW5nQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICBib29raW5nQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UuZGV0YWlsU2hvd2luZy5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgZG9jdW1lbnQgcGRmIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGRvY0Z1bGxzY3JlZW5CdG4gPSBjb250ZW50LnF1ZXJ5U2VsZWN0b3IoJyNkb2MtZm9vdGVyJyk7XHJcbiAgICAgICAgICAgIGlmIChkb2NGdWxsc2NyZWVuQnRuICYmIGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50VXJsID0gdGFnU2VydmljZS5nZXRBbm5leGVGb3JDb21tZW50VHlwZUluRmVhdHVyZShcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxyXG4gICAgICAgICAgICAgICAgICAgIENvbW1lbnRUeXBlLkRPQ1VNRU5UXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZG9jRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uRG9jQ2xpY2soZG9jdW1lbnRVcmwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBoYW5kbGUgdmlkZW8gZnVsbHNjcmVlbiBidXR0b25cclxuICAgICAgICAgICAgY29uc3QgdmlkZW9GdWxsc2NyZWVuQnRuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKCcjYnRuLXZpZGVvLWZ1bGxzY3JlZW4nKTtcclxuICAgICAgICAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkJ0biAmJiBlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb1VybCA9IHRhZ1NlcnZpY2UuZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBDb21tZW50VHlwZS5WSURFT1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdTZXJ2aWNlLm9uQWN0aW9uVmlkZW9DbGljayh2aWRlb1VybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGhhbmRsZSBZb3V0dWJlIHZpZGVvIGZ1bGxzY3JlZW4gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IHlvdXR1YmVGdWxsU2NyZWVuID0gY29udGVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICAgICAgJyNidG4tdmlkZW8tZnVsbHNjcmVlbi15b3V0dWJlJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoeW91dHViZUZ1bGxTY3JlZW4gJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeW91dHViZVVybCA9IHRhZ1NlcnZpY2UuZ2V0QW5uZXhlRm9yQ29tbWVudFR5cGVJbkZlYXR1cmUoXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgICBDb21tZW50VHlwZS5ZT1VUVUJFXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgeW91dHViZUZ1bGxTY3JlZW4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnU2VydmljZS5vbkFjdGlvbllvdXR1YmVDbGljayh5b3V0dWJlVXJsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gaGFuZGxlIG11dGUgdmlkZW8gYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbnN0IGJ0bk11dGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLW11dGUnKTtcclxuICAgICAgICAgICAgY29uc3QgaW1nT24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc291bmQtb24nKTtcclxuICAgICAgICAgICAgY29uc3QgaW1nT2ZmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdW5kLW9mZicpO1xyXG4gICAgICAgICAgICBjb25zdCBwbGF5ZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJtdXMtdmlkZW8tdGFnXCIpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHBsYXllckVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHZpZGVvSnNQbGF5ZXIgPSB2aWRlb2pzKFwibXVzLXZpZGVvLXRhZ1wiKTtcclxuICAgICAgICAgICAgICAgIGlmIChidG5NdXRlICYmIHZpZGVvSnNQbGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBidG5NdXRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllci5tdXRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLm11dGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWdPbiAmJiBpbWdPZmYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWdPbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nT2ZmLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLm11dGVkKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltZ09uICYmIGltZ09mZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZ09uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nT2ZmLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gaGFuZGxlIGF1ZGlvIHBsYXllciBidXR0b25zXHJcbiAgICAgICAgICAgIGNvbnN0IHBsYXllckJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdWRpby1wbGF5LWJ1dHRvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpby10YWcnKSBhcyBIVE1MTWVkaWFFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lbGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAgICAgICAnLnRpbWVsaW5lLXRhZydcclxuICAgICAgICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICAgICAgICAvLyBjb25zdCB0aW1lbGluZVZhbHVlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRpbWVsaW5lLXRhZycpLnZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzb3VuZEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdWRpby1zb3VuZC1idG4nKTtcclxuICAgICAgICAgICAgY29uc3QgcGxheUF1ZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BsYXknKTtcclxuICAgICAgICAgICAgY29uc3QgcGF1c2VBdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXVzZScpO1xyXG4gICAgICAgICAgICBjb25zdCBpbWdTb3VuZE9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvLXNvdW5kLW9uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGltZ1NvdW5kT2ZmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvLXNvdW5kLW9mZicpO1xyXG4gICAgICAgICAgICBjb25zdCBhdWRpb01vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bi1hdWRpby1tb2RhbCcpO1xyXG4gICAgICAgICAgICBpZiAoYXVkaW8gJiYgcGxheWVyQnV0dG9uICYmIHRpbWVsaW5lKSB7XHJcbiAgICAgICAgICAgICAgICBwbGF5ZXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvLnBhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wbGF5KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdXNlQXVkaW8uc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5QXVkaW8uc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdWRpby5wYXVzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXVzZUF1ZGlvLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlBdWRpby5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBzb3VuZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXVkaW8ubXV0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ubXV0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nU291bmRPbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1NvdW5kT2ZmLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ubXV0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWdTb3VuZE9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZ1NvdW5kT2ZmLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoYW5nZVRpbWVsaW5lUG9zaXRpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1ZGlvLmR1cmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VQb3NpdGlvbiA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwICogYXVkaW8uY3VycmVudFRpbWUpIC8gYXVkaW8uZHVyYXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNlbnRhZ2VQb3NpdGlvblN0cmluZyA9IHBlcmNlbnRhZ2VQb3NpdGlvbiArICclJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBwZXJjZW50YWdlUG9zaXRpb25TdHJpbmcgKyAnIDEwMCUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGluZS52YWx1ZSA9IHBlcmNlbnRhZ2VQb3NpdGlvbi50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGF1ZGlvLm9udGltZXVwZGF0ZSA9IGNoYW5nZVRpbWVsaW5lUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGFuZ2VTZWVrKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSAocGFyc2VJbnQodGltZWxpbmUudmFsdWUpICogYXVkaW8uZHVyYXRpb24pIC8gMTAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGF1ZGlvLmN1cnJlbnRUaW1lID0gdGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNoYW5nZVNlZWspO1xyXG4gICAgICAgICAgICAgICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBjaGFuZ2VTZWVrKTtcclxuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhdWRpbyBjbGlja1xyXG4gICAgICAgICAgICAgICAgaWYgKGF1ZGlvTW9kYWwgJiYgZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudCA9IGVsZW1lbnQuY29tbWVudHM/Lml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5BVURJTyAmJiBjb20uc2hvd25JblRhZ1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXVkaW9Db21tZW50SUQgPSBhdWRpb0NvbW1lbnQgPyBhdWRpb0NvbW1lbnQuaWQgOiAnJztcclxuICAgICAgICAgICAgICAgICAgICBhdWRpb01vZGFsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnU2VydmljZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnU2VydmljZS5vbkFjdGlvbkF1ZGlvQ2xpY2soYXVkaW9Db21tZW50SUQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHdlIHdhaXQgaWYgdXNlciBob3ZlcnMgb24gdG8gZGl2IG9mIHRoZSB0YWcgKGNoYW5nZXMgdGhpcy5mb2N1c01vdXNlVGFnRGl2KVxyXG4gICAgICAgICAgICB0aGlzLmJ0blRhZ0lzSG92ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9jdXNNb3VzZVRhZ0RpdiAmJiAhdGhpcy5idG5UYWdJc0hvdmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxUYWdEaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0pzUGxheWVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbFRhZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICBpZiAodmlkZW9Kc1BsYXllcikge1xyXG4gICAgICAgICAgICAgICAgdmlkZW9Kc1BsYXllci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy52aWV3ZXJTZXJ2aWNlLmFjdGlvbl9tb3ZlX3RvX3RhZyhidXR0b24uaWQpO1xyXG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLmRldGFpbFNob3dpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQnRuKGlkTGlzdDogYW55W10pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGlkTGlzdCkge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgICAgICAgIGlmIChidXR0b24pIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5yZW1vdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGVhckFsbEJ1dHRvbnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGxhbkRpdkNvbnRlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgYnV0dG9ucyA9IHRoaXMucGxhbkRpdkNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LWZvci1lYWNoXHJcbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaChmdW5jdGlvbiAoY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJQb3NpdGlvbkJ0biA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUFsbEJ1dHRvbnNTdHlsZShwcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZXM6IEFycmF5PHN0cmluZz4pIHtcclxuICAgICAgICBpZiAodGhpcy5wbGFuRGl2Q29udGVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBidXR0b25zID0gdGhpcy5wbGFuRGl2Q29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24nKTtcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tYXJyYXktZm9yLWVhY2hcclxuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHksIGkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT09IFwidHJhbnNmb3JtXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9Gb3Igc2F2aW5nIHRoZSByb3RhdGlvbiBhbmQgYWRkaW5nIHNjYWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByb3RhdGlvblJlZ2V4ID0gLyhyb3RhdGVcXCgtP1xcZCpcXC4/XFxkK2RlZ1xcKSkvZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJvdGF0aW9uTWF0Y2ggPSBjdXJyZW50VmFsdWUuc3R5bGVbcHJvcGVydHldLm1hdGNoKHJvdGF0aW9uUmVnZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm90YXRpb25NYXRjaC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUuc3R5bGVbcHJvcGVydHldID0gYCR7dmFsdWVzW2ldfSAke3JvdGF0aW9uTWF0Y2hbMF19YDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5zdHlsZVtwcm9wZXJ0eV0gPSB2YWx1ZXNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25QbGFuUmVtb3ZlKCkge1xyXG4gICAgICAgIHRoaXMudXNlclBvc2l0aW9uQnRuID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsVGFnRGl2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyByZXNpemVQbGFuKGlzUmVtb3Zpbmc6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZVBsYW5TdWJzY3JpcHRpb24ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgaWYgKGlzUmVtb3ZpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmxvZygnaW4gcmVzaXplUGxhbicpO1xyXG4gICAgICAgIGlmICh0aGlzLnBsYW5EaXYgJiYgdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgICAgdGhpcy5wYW56b29tID0gcGFuem9vbSh0aGlzLnBsYW5EaXYsIHtcclxuICAgICAgICAgICAgICAgIGJvdW5kczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGJvdW5kc1BhZGRpbmc6IDAsXHJcbiAgICAgICAgICAgICAgICBtYXhab29tOiA0LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnBsYW5EaXZDb250ZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFuRGl2Q29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBjb2VmZlgsIGNvZWZmWSB9ID0gZ2V0Q29lZmZpY2llbnRzRm9ySW1hZ2UodGhpcy5pbWdQbGFuLCByZWN0KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWCA9IGNvZWZmWDtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSA9IGNvZWZmWTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFuem9vbS56b29tQWJzKDAsIDAsIDQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVQbGFuU3Vic2NyaXB0aW9uLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVRvdWNoKGV2ZW50KSB7XHJcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBpZiAobm93IC0gdGhpcy5sYXN0VG91Y2hUaW1lIDwgdGhpcy5kZWxheURibFRvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGFzdFRvdWNoVGltZSA9IDA7XHJcbiAgICAgICAgICAgIC8vIHRoaXMub25EYmxDbGlja1BsYW4oZXZlbnQpO1xyXG4gICAgICAgICAgICAvKiogU2ltdWxhdGUgYSBkYmxjbGljayBmb3IgcGhvbmUgKHdlIGRvbid0IGdldCBvZmZzZXRYL1kgb24gdG91Y2hldmVudCkgKi9cclxuICAgICAgICAgICAgY29uc3QgbmV3RXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2ggPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICAgICAgICAgICAgbmV3RXZlbnQuaW5pdE1vdXNlRXZlbnQoXHJcbiAgICAgICAgICAgICAgICAnZGJsY2xpY2snLFxyXG4gICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgICBldmVudC50YXJnZXQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICB0b3VjaC5zY3JlZW5YLFxyXG4gICAgICAgICAgICAgICAgdG91Y2guc2NyZWVuWSxcclxuICAgICAgICAgICAgICAgIHRvdWNoLmNsaWVudFgsXHJcbiAgICAgICAgICAgICAgICB0b3VjaC5jbGllbnRZLFxyXG4gICAgICAgICAgICAgICAgZXZlbnQuY3RybEtleSxcclxuICAgICAgICAgICAgICAgIGV2ZW50LmFsdEtleSxcclxuICAgICAgICAgICAgICAgIGV2ZW50LnNoaXJ0S2V5LFxyXG4gICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICBudWxsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxhc3RUb3VjaFRpbWUgPSBub3c7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uRGJsQ2xpY2tQbGFuKGV2ZW50KSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBjb25zdCBjbGlja1ggPSBldmVudC5vZmZzZXRYO1xyXG4gICAgICAgIGNvbnN0IGNsaWNrWSA9IGV2ZW50Lm9mZnNldFk7XHJcbiAgICAgICAgY29uc3Qgem9uZVBsYW4gPSB0aGlzLmN1cnJlbnRQbGFuLnpvbmU7XHJcbiAgICAgICAgaWYgKHpvbmVQbGFuKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hdmlnYXRpb25zOiBhbnkgPVxyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nZXROYXZpZ2F0aW9uc0ZvclpvbmUoem9uZVBsYW4pO1xyXG4gICAgICAgICAgICBpZiAobmF2aWdhdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbnMubWFwKGFzeW5jIChuYXYpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdi5wb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB5OiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhbGlicmF0aW9uUGxhbi5uZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uMkQgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmb3JtUG9zaXRpb24zREZvck5ld0NhbGlicmF0aW9uKHBvc2l0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbjJELnggLyBwb3NpdGlvbjJELmNvZWZmWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBwb3NpdGlvbjJELnkgLyBwb3NpdGlvbjJELmNvZWZmWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24ueCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLngpIC9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZWZmUGxhblg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLnogKiB0aGlzLmNhbGlicmF0aW9uUGxhbi55KSAvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5ZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0WCA9IE1hdGguYWJzKGNsaWNrWCAtIHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXN0WSA9IE1hdGguYWJzKGNsaWNrWSAtIHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYXYuZGlzdCA9IE1hdGguc3FydChNYXRoLnBvdyhkaXN0WCwgMikgKyBNYXRoLnBvdyhkaXN0WSwgMikpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmF2aWdhdGlvbnMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRpc3QgLSBiLmRpc3Q7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX3N3ZWVwKFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25zWzBdLm1hdHRlcnBvcnRTd2VlcElEXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uZmlndXJlcyBwbGFuIGZyb20gY2FjaGUgKHByZXZpb3VzIHBsYW4pLlxyXG4gICAgICovXHJcbiAgICBhc3luYyB1cGxvYWRQbGFuRnJvbUNhY2hlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuaHRtbENvbnRlbnRUb0luamVjdCA9IHRoaXMuY2FjaGUuaHRtbENvbnRlbnQ7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jb25maWd1cmVQbGFuKHRoaXMuY2FjaGUucGxhbik7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHV0cyBidXR0b25zICh0YWdzKSBmcm9tIGNhY2hlIGFjY29yZGluZyB0byBwYXNzZWQgZWxlbWVudCBJRHMgKGZvciBmaWx0ZXIgaWYgYW55KVxyXG4gICAgICogQHBhcmFtIGVsZW1lbnRJRHMgZWxlbWVudHMgKHRpY2tldHMsIGVxdWlwbWVudHMsIGV0YykgdG8gYmUgc2hvd24gb24gcGxhblxyXG4gICAgICovXHJcbiAgICB1cGxvYWRUYWdzRnJvbUNhY2hlKHNpemVCdXR0b246IG51bWJlciA9IDEwKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJ1cGxvYWRpbmcgdGFncyBmcm9tIGNhY2hlXCIpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGNhY2hlZCBvZiB0aGlzLmNhY2hlLmh0bWxDb250ZW50KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAgICAgICB0aGlzLnN0eWxlQnV0dG9uKGJ1dHRvbiwgY2FjaGVkLnRhZ0ljb24sIHNpemVCdXR0b24pO1xyXG4gICAgICAgICAgICBidXR0b24uaWQgPSBjYWNoZWQuZWxlbWVudElEO1xyXG4gICAgICAgICAgICB0aGlzLnBsYW5EaXZDb250ZW50LmFwcGVuZChidXR0b24pO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jYWxpYnJhdGlvblBsYW4ubmV3KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdDb2VmZlggPVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWCAvXHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW1nUGxhbi53aWR0aCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ1dpZHRoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvZWZmWSA9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5ZIC9cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5pbWdQbGFuLmhlaWdodCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ0hlaWdodCk7XHJcbiAgICAgICAgICAgICAgICBidXR0b24uc3R5bGUudG9wID0gYCR7Y2FjaGVkLnkgLyBuZXdDb2VmZlkgLSA1fXB4YDtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gYCR7Y2FjaGVkLnggLyBuZXdDb2VmZlggLSA1fXB4YDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS50b3AgPSBgJHtjYWNoZWQueSAvIHRoaXMuY29lZmZQbGFuWSAtIDV9cHhgO1xyXG4gICAgICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmxlZnQgPSBgJHtjYWNoZWQueCAvIHRoaXMuY29lZmZQbGFuWCAtIDV9cHhgO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFkZExpc3RlbmVyc1RvQnV0dG9uKGJ1dHRvbiwgY2FjaGVkLnVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldENhbGlicmF0ZWRQbGFuRm9yWm9uZSh6b25lOiBab25lKTogUHJvbWlzZTxQbGFuPiB7XHJcbiAgICAgICAgbGV0IHBsYW5zID0gKGF3YWl0IHRoaXMuQVBJLlBsYW5zQnlab25lKHpvbmUuaWQpKS5pdGVtcztcclxuICAgICAgICBsZXQgcGFyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgaWYgKHBsYW5zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAvLyB0cnkgdG8gZmluZCBwYXJlbnQgem9uZVxyXG4gICAgICAgICAgICBwYXJlbnRab25lID0gYXdhaXQgdGhpcy5BUEkuR2V0Wm9uZSh6b25lLnBhcmVudElEKTtcclxuICAgICAgICAgICAgcGxhbnMgPSAoYXdhaXQgdGhpcy5BUEkuUGxhbnNCeVpvbmUoem9uZS5wYXJlbnRJRCkpLml0ZW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjYWxpYnJhdGVkUGxhbiA9IHBsYW5zLmZpbmQoXHJcbiAgICAgICAgICAgIChwbGFuKSA9PiBwbGFuLmNhbGlicmF0aW9uICYmIHBsYW4uaXNDdXJyZW50Rm9yWm9uZVxyXG4gICAgICAgICkgYXMgUGxhbjtcclxuICAgICAgICBpZiAoY2FsaWJyYXRlZFBsYW4pIHtcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmVkID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShjYWxpYnJhdGVkUGxhbi5hbm5leGUpO1xyXG4gICAgICAgICAgICBpZiAoc2lnbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxpYnJhdGVkUGxhbi5maWxlcGF0aCA9IHNpZ25lZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxpYnJhdGVkUGxhbi5uYXZpZ2F0aW9uSURzID0gcGFyZW50Wm9uZVxyXG4gICAgICAgICAgICAgICAgPyBwYXJlbnRab25lLnN3ZWVwSURzXHJcbiAgICAgICAgICAgICAgICA6IHpvbmUuc3dlZXBJRHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYWxpYnJhdGVkUGxhbiB8fCBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYW5zZm9ybVBvc2l0aW9uM0RGb3JOZXdDYWxpYnJhdGlvbihwb3NpdGlvbjoge1xyXG4gICAgICAgIHg6IG51bWJlcjtcclxuICAgICAgICB5OiBudW1iZXI7XHJcbiAgICAgICAgejogbnVtYmVyO1xyXG4gICAgfSk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IGNvZWZmWDogbnVtYmVyOyBjb2VmZlk6IG51bWJlcjsgfSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25YID1cclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4ubmFtZVhBeGlzID09PSAneCcgPyBwb3NpdGlvbi54IDogcG9zaXRpb24uejtcclxuICAgICAgICBjb25zdCBwb3NpdGlvblkgPVxyXG4gICAgICAgICAgICB0aGlzLmNhbGlicmF0aW9uUGxhbi5uYW1lWUF4aXMgPT09ICd4JyA/IHBvc2l0aW9uLnggOiBwb3NpdGlvbi56O1xyXG4gICAgICAgIGxldCB4ID1cclxuICAgICAgICAgICAgdGhpcy5jYWxpYnJhdGlvblBsYW4ub2Zmc2V0WCArIHBvc2l0aW9uWCAqIHRoaXMuY2FsaWJyYXRpb25QbGFuLnNjYWxlWDtcclxuICAgICAgICBsZXQgeSA9XHJcbiAgICAgICAgICAgIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFkgKyBwb3NpdGlvblkgKiB0aGlzLmNhbGlicmF0aW9uUGxhbi5zY2FsZVk7XHJcbiAgICAgICAgY29uc3QgbmV3Q29lZmZYID1cclxuICAgICAgICAgICAgdGhpcy5jb2VmZlBsYW5YIC8gKHRoaXMuaW1nUGxhbi53aWR0aCAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLmltZ1dpZHRoKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm5ld0NvZWZmWFwiLCBuZXdDb2VmZlgpO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvZWZmWSA9XHJcbiAgICAgICAgICAgIHRoaXMuY29lZmZQbGFuWSAvICh0aGlzLmltZ1BsYW4uaGVpZ2h0IC8gdGhpcy5jYWxpYnJhdGlvblBsYW4uaW1nSGVpZ2h0KTtcclxuICAgICAgICB4ID0gKHggLSB0aGlzLmNhbGlicmF0aW9uUGxhbi5vZmZzZXRYUGxhbikgLyB0aGlzLmNhbGlicmF0aW9uUGxhbi5zY2FsZVBsYW47XHJcblxyXG4gICAgICAgIHkgPSAoeSAtIHRoaXMuY2FsaWJyYXRpb25QbGFuLm9mZnNldFlQbGFuKSAvIHRoaXMuY2FsaWJyYXRpb25QbGFuLnNjYWxlUGxhbjtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh4LCB5KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgY29lZmZYOiBuZXdDb2VmZlgsIGNvZWZmWTogbmV3Q29lZmZZIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -86,9 +86,9 @@ export class PoiService {
|
|
|
86
86
|
this.destroy$.complete();
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
PoiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
90
|
-
PoiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
89
|
+
PoiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PoiService, deps: [{ token: 'currentAPIService' }, { token: 'currentAwsKinesisAnalyticsService' }, { token: i1.BaseUserService }, { token: i2.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
90
|
+
PoiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PoiService, providedIn: 'root' });
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PoiService, decorators: [{
|
|
92
92
|
type: Injectable,
|
|
93
93
|
args: [{
|
|
94
94
|
providedIn: 'root',
|
|
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
100
100
|
type: Inject,
|
|
101
101
|
args: ['currentAwsKinesisAnalyticsService']
|
|
102
102
|
}] }, { type: i1.BaseUserService }, { type: i2.ZoneChangeService }]; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9wb2kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLE9BQU8sRUFBWSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUMsd0JBQXdCLEVBQVksTUFBTSx1QkFBdUIsQ0FBQzs7OztBQVExRSxNQUFNLE9BQU8sVUFBVTtJQVdyQixZQUMrQixXQUFnQixFQUUzQywyQkFBZ0MsRUFDMUIsV0FBNEIsRUFDNUIsaUJBQW9DLENBQUMsa0ZBQWtGOztRQUR2SCxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWI5QyxrQkFBYSxHQUFTLElBQUksQ0FBQztRQU1uQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQVMvQixJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7UUFFdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUNULE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzFCO2lCQUFNLElBQUks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QUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxFQUFDLEVBQUUsR0FBRyxDQUFDO2FBQy9DLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7d0dBeEdVLFVBQVUsa0JBWVgsbUJBQW1CLGFBQ25CLG1DQUFtQzs0R0FibEMsVUFBVSxjQUZULE1BQU07NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0LCB0YWtlVW50aWx9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge3JlbW92ZU51bGxLZXlzRnJvbU9iamVjdCwgd2FpdFVudGlsfSBmcm9tICcuLi8uLi9oZWxwZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1BPSSwgUG9pVHlwZSwgWm9uZX0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7Wm9uZUNoYW5nZVNlcnZpY2V9IGZyb20gJy4uL3pvbmVDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7QmFzZVVzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvaVNlcnZpY2Uge1xyXG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXHJcbiAgYXdzS2luZXNpc0FuYWx5dGljczogYW55OyAvL0FXU1xyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxyXG4gICAgQEluamVjdCgnY3VycmVudEF3c0tpbmVzaXNBbmFseXRpY3NTZXJ2aWNlJylcclxuICAgICAgYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkOiBhbnksXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSAvLyBpbmplY3QgWm9uZUNoYW5nZVNlcnZpY2UgaW5zdGVhZCBvZiBOYXZpZ2F0b3JTZXJ2aWNlIHRvIGZpeCBjaXJjdWxhciBkZXBlbmRhbmN5XHJcbiAgKSB7XHJcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzID0gYXdzS2luZXNpc0FuYWx5dGljc0luamVjdGVkO1xyXG5cclxuICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgaWYgKCF6b25lKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh6b25lLnNwYWNlSUQpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gem9uZS5zcGFjZUlEO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuc3Vic2NyaWJlKChmbG9vcikgPT4ge1xyXG4gICAgICBpZiAoZmxvb3IpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRQb2lCeUVsZW1lbnRJZChlbGVtZW50SWQ6IHN0cmluZyk6IFByb21pc2U8UE9JIHwgbnVsbD4ge1xyXG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5Qb2lzQnlFbGVtZW50KGVsZW1lbnRJZCk7XHJcbiAgICBpZiAocG9pcyAmJiBwb2lzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuIHBvaXMuaXRlbXNbMF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFBvaXNCeVR5cGUodHlwZTogUG9pVHlwZSk6IFByb21pc2U8W1BPSV0gfCBhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uUG9pc0J5VHlwZSh0eXBlKS50aGVuKChwb2lzKSA9PiBwb2lzLml0ZW1zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZVBPSUZvclNwYWNlSUQocG9pOiBQT0kpOiBQcm9taXNlPFBPST4ge1xyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KHBvaSk7XHJcbiAgICBpZiAoISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MgJiYgISF0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MucmVjb3JkICYmIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQoKSkge1xyXG4gICAgICB0aGlzLmF3c0tpbmVzaXNBbmFseXRpY3MuZ2V0SW5zdGFuY2UoKS5yZWNvcmQoXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgZXZlbnRUeXBlOiAnT2JqZWN0IENyZWF0aW9uJyxcclxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ3BvaScsXHJcbiAgICAgICAgICAgIHBvaTogcG9pLFxyXG4gICAgICAgICAgICB1c2VyOiB0aGlzLnVzZXJTZXJ2aWNlLmN1LFxyXG4gICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uSWQ6IHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgIHpvbmVJZDogdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVBPSShwb2kpO1xyXG4gIH1cclxuXHJcbiAgcG9pSXNWaXJ0dWFsKHBvaTogUE9JKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB7Y29vcmRpbmF0ZX0gPSBwb2k7XHJcbiAgICByZXR1cm4gIWNvb3JkaW5hdGU7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVQb2kocG9pOiB7fSk6IFByb21pc2U8UE9JPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVBPSShwb2kpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlUG9pKHBvaUlEOiBzdHJpbmcpOiBQcm9taXNlPFBPST4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVQT0koe2lkOiBwb2lJRH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UG9pc0J5TWF0dGVycG9ydFN3ZWVwQnlUeXBlKFxyXG4gICAgc3dlZXA6IHN0cmluZyxcclxuICAgIHR5cGU6IFBvaVR5cGVcclxuICApOiBQcm9taXNlPFBPSVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5MaXN0UE9Jcyh7bWF0dGVycG9ydFN3ZWVwSUQ6IHtlcTogc3dlZXB9fSwgMzAwKVxyXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLmZpbHRlcigocG9pKSA9PiBwb2kudHlwZSA9PT0gdHlwZSkpO1xyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -44,9 +44,9 @@ export class ProfileService {
|
|
|
44
44
|
})).items;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
ProfileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.
|
|
48
|
-
ProfileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.
|
|
49
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.
|
|
47
|
+
ProfileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProfileService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
ProfileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProfileService, providedIn: "root" });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ProfileService, decorators: [{
|
|
50
50
|
type: Injectable,
|
|
51
51
|
args: [{
|
|
52
52
|
providedIn: "root",
|
|
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
55
55
|
type: Inject,
|
|
56
56
|
args: ['currentAPIService']
|
|
57
57
|
}] }]; } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFHdkIsWUFBeUMsV0FBZ0I7UUFDckQsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakUsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFZO1FBQzVCLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFVO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxNQUFjO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEUsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFZO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3pFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDUixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBYztRQUNyQyxPQUFPLENBQ0gsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDbEMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRTtTQUN6QixDQUFDLENBQ0wsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDOzs0R0F2RFEsY0FBYyxrQkFHSCxtQkFBbUI7Z0hBSDlCLGNBQWMsY0FGWCxNQUFNOzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFJZ0IsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQVdTVHlwZSwgUHJvZmlsZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVTZXJ2aWNlIHtcclxuICAgIEFQSTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY3JlYXRlUHJvZmlsZShwcm9maWxlOiBQcm9maWxlKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVQcm9maWxlKHByb2ZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFByb2ZpbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0UHJvZmlsZShpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbGlzdEN1cnJlbnRQcm9maWxlcygpOiBQcm9taXNlPFByb2ZpbGVbXT4ge1xyXG4gICAgICAgIGNvbnN0IHByb2ZpbGVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvZmlsZXMoKSkuaXRlbXM7XHJcbiAgICAgICAgcmV0dXJuIHByb2ZpbGVzLmZpbHRlcigocCkgPT4gIXAuZGVsZXRlZEF0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVQcm9maWxlKHByb2ZpbGU6IGFueSk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIGlmIChwcm9maWxlLmlkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYGFuIElEIGlzIHJlcXVpcmVkIGZvciB1cGRhdGUgUHJvZmlsZWApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVQcm9maWxlKHByb2ZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZVByb2ZpbGUoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZmlsZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlUHJvZmlsZSh7IGlkOiBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRQcm9maWxlRnJvbUFXU0lEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxQcm9maWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5Qcm9maWxlc0J5VXNlcklEKHVzZXJJRCkudGhlbigocmVzdWx0cykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0cy5pdGVtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRzLml0ZW1zWzBdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldFVzZXJzRm9yTWFpbChtYWlsOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdFByb2ZpbGVzKHsgbWV0YWRhdGE6IHsgY29udGFpbnM6IG1haWwgfSB9KS50aGVuKFxyXG4gICAgICAgICAgICAocmVzdWx0cykgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuaXRlbXMuZmlsdGVyKChwcm9maWxlKSA9PiAhcHJvZmlsZS5kZWxldGVkQXQpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0UHJvZmlsZXNGb3JTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBQcm9taXNlPFByb2ZpbGVbXT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5MaXN0UHJvZmlsZXMoe1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiB7IGVxOiBzdGF0dXMgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApLml0ZW1zO1xyXG4gICAgfVxyXG59Il19
|