@smarterplan/ngx-smarterplan-core 1.4.4 → 1.4.6
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/esm2022/lib/components/csv-export/csv-export.component.mjs +5 -6
- package/esm2022/lib/components/loader/loader.component.mjs +7 -8
- package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +6 -7
- package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +7 -8
- package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +8 -9
- package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +6 -7
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +6 -7
- package/esm2022/lib/components/support-modal/support-modal.component.mjs +6 -7
- package/esm2022/lib/helpers.service.mjs +1 -1
- package/esm2022/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
- package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +1 -1
- package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +1 -1
- package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +1 -1
- package/esm2022/lib/mattertagData.mjs +1 -1
- package/esm2022/lib/ngx-smarterplan-core.module.mjs +6 -7
- package/esm2022/lib/ngx-smarterplan-core.service.mjs +6 -7
- package/esm2022/lib/pipes/duration-to-string.pipe.mjs +6 -7
- package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +6 -7
- package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +6 -7
- package/esm2022/lib/pipes/safe-url.pipe.mjs +6 -7
- package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +9 -10
- package/esm2022/lib/pipes/username-from-id.pipe.mjs +6 -7
- package/esm2022/lib/services/amplify-cache.service.mjs +7 -8
- package/esm2022/lib/services/base-tab.service.mjs +6 -7
- package/esm2022/lib/services/baseVisibility.service.mjs +6 -7
- package/esm2022/lib/services/content.service.mjs +6 -7
- package/esm2022/lib/services/filter.service.mjs +6 -7
- package/esm2022/lib/services/intervention.service.mjs +6 -7
- package/esm2022/lib/services/locale.service.mjs +9 -10
- package/esm2022/lib/services/matterport-import.service.mjs +6 -7
- package/esm2022/lib/services/matterport.service.mjs +7 -8
- package/esm2022/lib/services/models/affectation.service.mjs +7 -8
- package/esm2022/lib/services/models/base-object.service.mjs +6 -7
- package/esm2022/lib/services/models/capture.service.mjs +7 -8
- package/esm2022/lib/services/models/comment.service.mjs +7 -8
- package/esm2022/lib/services/models/domain.service.mjs +7 -8
- package/esm2022/lib/services/models/equipment.service.mjs +7 -8
- package/esm2022/lib/services/models/event.service.mjs +7 -8
- package/esm2022/lib/services/models/feature.service.mjs +7 -8
- package/esm2022/lib/services/models/hashtag.service.mjs +7 -8
- package/esm2022/lib/services/models/layer.service.mjs +7 -8
- package/esm2022/lib/services/models/measurement.service.mjs +7 -8
- package/esm2022/lib/services/models/mission.service.mjs +7 -8
- package/esm2022/lib/services/models/navigation.service.mjs +7 -8
- package/esm2022/lib/services/models/node.service.mjs +7 -8
- package/esm2022/lib/services/models/object3D.service.mjs +7 -8
- package/esm2022/lib/services/models/operation.service.mjs +7 -8
- package/esm2022/lib/services/models/organisation.service.mjs +7 -8
- package/esm2022/lib/services/models/plan.service.mjs +8 -10
- package/esm2022/lib/services/models/poi.service.mjs +7 -8
- package/esm2022/lib/services/models/profile.service.mjs +7 -8
- package/esm2022/lib/services/models/property.service.mjs +7 -8
- package/esm2022/lib/services/models/space.service.mjs +7 -8
- package/esm2022/lib/services/models/template.service.mjs +7 -8
- package/esm2022/lib/services/models/ticket.service.mjs +7 -8
- package/esm2022/lib/services/models/visit.service.mjs +6 -7
- package/esm2022/lib/services/models/zone.service.mjs +7 -8
- package/esm2022/lib/services/navigator.service.mjs +6 -7
- package/esm2022/lib/services/s3.service.mjs +1 -1
- package/esm2022/lib/services/search.service.mjs +6 -7
- package/esm2022/lib/services/support.service.mjs +6 -7
- package/esm2022/lib/services/tag.service.mjs +6 -7
- package/esm2022/lib/services/user.service.mjs +9 -10
- package/esm2022/lib/services/validators.service.mjs +6 -7
- package/esm2022/lib/services/viewer.service.mjs +6 -7
- package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
- package/esm2022/lib/services/zoneChange.service.mjs +6 -7
- package/esm2022/lib/types.service.mjs +1 -1
- package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
- package/esm2022/lib/validators/number.directive.mjs +1 -1
- package/esm2022/lib/validators/text.directive.mjs +1 -1
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +277 -278
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/package.json +26 -6
|
@@ -15,7 +15,7 @@ import * as i7 from "../user.service";
|
|
|
15
15
|
import * as i8 from "../viewer.service";
|
|
16
16
|
import * as i9 from "@ng-bootstrap/ng-bootstrap";
|
|
17
17
|
import * as i10 from "../zoneChange.service";
|
|
18
|
-
class EquipmentService extends BaseObjectService {
|
|
18
|
+
export class EquipmentService extends BaseObjectService {
|
|
19
19
|
operationService;
|
|
20
20
|
ticketsService;
|
|
21
21
|
navigatorService;
|
|
@@ -679,20 +679,19 @@ class EquipmentService extends BaseObjectService {
|
|
|
679
679
|
this.destroy$.next(true);
|
|
680
680
|
this.destroy$.complete();
|
|
681
681
|
}
|
|
682
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
683
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
682
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EquipmentService, deps: [{ token: 'currentAPIService' }, { token: 'currentAwsKinesisAnalyticsService' }, { token: i1.PoiService }, { token: i2.NavigationService }, { token: i3.OperationService }, { token: i4.TicketsService }, { token: i5.NavigatorService }, { token: i6.FilterService }, { token: i7.BaseUserService }, { token: i8.ViewerService }, { token: i9.NgbModal }, { token: i10.ZoneChangeService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
683
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EquipmentService, providedIn: 'root' });
|
|
684
684
|
}
|
|
685
|
-
|
|
686
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EquipmentService, decorators: [{
|
|
685
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EquipmentService, decorators: [{
|
|
687
686
|
type: Injectable,
|
|
688
687
|
args: [{
|
|
689
688
|
providedIn: 'root',
|
|
690
689
|
}]
|
|
691
|
-
}], ctorParameters:
|
|
690
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
692
691
|
type: Inject,
|
|
693
692
|
args: ['currentAPIService']
|
|
694
693
|
}] }, { type: undefined, decorators: [{
|
|
695
694
|
type: Inject,
|
|
696
695
|
args: ['currentAwsKinesisAnalyticsService']
|
|
697
|
-
}] }, { type: i1.PoiService }, { type: i2.NavigationService }, { type: i3.OperationService }, { type: i4.TicketsService }, { type: i5.NavigatorService }, { type: i6.FilterService }, { type: i7.BaseUserService }, { type: i8.ViewerService }, { type: i9.NgbModal }, { type: i10.ZoneChangeService }]
|
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1aXBtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9lcXVpcG1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUV6QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFNTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsNkJBQTZCLEVBQzdCLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3hELE1BR2EsZ0JBQWlCLFNBQVEsaUJBQWlCO0lBK0QzQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBckVGLE1BQU0sR0FBRztRQUNmLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixTQUFTLEVBQUUsNEJBQTRCO1FBQ3ZDLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixXQUFXLEVBQUUsOEJBQThCO0tBQzVDLENBQUM7SUFFRixpQkFBaUIsR0FHWixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRW5CLGlCQUFpQixHQUdiO1FBQ0YsS0FBSyxFQUFFLEVBQUU7UUFDVCxRQUFRLEVBQUUsSUFBSSxHQUFHLEVB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bnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nYk1vZGFsfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaCxcclxuICByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsXHJcbiAgd2FpdFVudGlsLFxyXG59IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7TWF0dGVydGFnRGF0YX0gZnJvbSAnLi4vLi4vbWF0dGVydGFnRGF0YSc7XHJcbmltcG9ydCB7XHJcbiAgTm90ZSxcclxuICBab25lLFxyXG4gIEVxdWlwbWVudCxcclxuICBFcXVpcG1lbnREb2N1bWVudCxcclxuICBUaWNrZXQsXHJcbiAgVHlwZU5vdGUsXHJcbiAgTWlzc2lvbixcclxuICBFdmVudFN0YXR1cyxcclxuICBFdmVudFR5cGUsXHJcbiAgT3BlcmF0aW9uLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIFJvbGVTdGF0dXMsXHJcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RmlsdGVyU2VydmljZX0gZnJvbSAnLi4vZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge05hdmlnYXRvclNlcnZpY2V9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBkZWxldGVGcm9tUzMsXHJcbiAgZ2V0U2lnbmVkRmlsZSxcclxuICBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudCxcclxuICB1cGxvYWRGaWxlVG9TMyxcclxufSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld2VyU2VydmljZX0gZnJvbSAnLi4vdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Jhc2VPYmplY3RTZXJ2aWNlfSBmcm9tICcuL2Jhc2Utb2JqZWN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge05hdmlnYXRpb25TZXJ2aWNlfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7T3BlcmF0aW9uU2VydmljZX0gZnJvbSAnLi9vcGVyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9wb2kuc2VydmljZSc7XHJcbmltcG9ydCB7VGlja2V0c1NlcnZpY2V9IGZyb20gJy4vdGlja2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXF1aXBtZW50U2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcclxuICBwcml2YXRlIHByZWZpeCA9IHtcclxuICAgIHRlY2huaWNhbDogJ2VxdWlwbWVudHMvbm90ZS90ZWNobmljYWwvJyxcclxuICAgIGltYWdlOiAnZXF1aXBtZW50cy9ub3RlL2ltYWdlLycsXHJcbiAgICBmaW5hbmNpYWw6ICdlcXVpcG1lbnRzL25vdGUvZmluYW5jaWFsLycsXHJcbiAgICBpbmZvcm1hdGlvbjogJ2VxdWlwbWVudHMvbm90ZS9pbmZvcm1hdGlvbi8nLFxyXG4gICAgb3RoZXI6ICdlcXVpcG1lbnRzL25vdGUvb3RoZXIvJyxcclxuICAgIGNvbnRyYWN0dWFsOiAnZXF1aXBtZW50cy9ub3RlL2NvbnRyYWN0dWFsLycsXHJcbiAgfTtcclxuXHJcbiAgZXF1aXBtZW50c1VwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgc3BhY2U6IEVxdWlwbWVudFtdO1xyXG4gICAgem9uZTogRXF1aXBtZW50W107XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjdXJyZW50RXF1aXBtZW50czoge1xyXG4gICAgc3BhY2U6IEVxdWlwbWVudFtdO1xyXG4gICAgem9uZXNNYXA6IE1hcDxzdHJpbmcsIEVxdWlwbWVudFtdPjtcclxuICB9ID0ge1xyXG4gICAgc3BhY2U6IFtdLFxyXG4gICAgem9uZXNNYXA6IG5ldyBNYXAoKSxcclxuICB9O1xyXG5cclxuICBlcXVpcG1lbnRzVGFnczogU3ViamVjdDxFcXVpcG1lbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgY3VycmVudFpvbmU6IFpvbmU7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICAvKiogTnVsbCBtZWFucyB3ZSBkbyBub3QgYXBwbHkgYSBmaWx0ZXIsIGVtcHR5IGFycmF5IChbXSksIG1lYW5zIHdlIHRoYXQgd2UgaGlkZSBhbGwgZXF1aXBtZW50ICovXHJcbiAgZXF1aXBtZW50RG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudGx5VXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudFN3ZWVwOiBzdHJpbmc7XHJcblxyXG4gIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVwZGF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBBUEk6IGFueTsgLy9BV1NcclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGlzTXVzZXVtVXNlciA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxyXG4gICAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9wZXJhdGlvblNlcnZpY2U6IE9wZXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRpY2tldHNTZXJ2aWNlOiBUaWNrZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcclxuXHJcbiAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcclxuICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuc3Vic2NyaWJlKChmbG9vcik9PntcclxuICAgICAgaWYgKGZsb29yKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZWFkRXF1aXBtZW50KGlkOiBzdHJpbmcpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRFcXVpcG1lbnQoaWQpLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXApID0+IHtcclxuICAgICAgbGV0IGVxdWlwOiBFcXVpcG1lbnQ7XHJcbiAgICAgIGlmIChyZWNlaXZlZEVxdWlwKSB7XHJcbiAgICAgICAgZXF1aXAgPSByZWNlaXZlZEVxdWlwO1xyXG4gICAgICAgIGVxdWlwID0gYXdhaXQgdGhpcy5nZXRTaWduZWRVcmxzRm9yRXF1aXBtZW50KHJlY2VpdmVkRXF1aXApO1xyXG4gICAgICAgIGlmIChlcXVpcC5kb21haW4pIHtcclxuICAgICAgICAgIGlmIChlcXVpcC5kb21haW4ucGFyZW50SUQpIHtcclxuICAgICAgICAgICAgZXF1aXAuY2hpbGREb21haW4gPSBlcXVpcC5kb21haW47XHJcbiAgICAgICAgICAgIGVxdWlwLnBhcmVudERvbWFpbiA9IGVxdWlwLmRvbWFpbi5wYXJlbnQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlcXVpcC5wYXJlbnREb21haW4gPSBlcXVpcC5kb21haW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcXVpcC5zdWJlcXVpcG1lbnRzSURzKSB7XHJcbiAgICAgICAgICBjb25zdCBzdWJFcXVpcHMgPSBbXTtcclxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBlcXVpcC5zdWJlcXVpcG1lbnRzSURzLm1hcChhc3luYyAoc3ViSWQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBzdWJFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLkdldEVxdWlwbWVudChzdWJJZCk7XHJcbiAgICAgICAgICAgICAgc3ViRXF1aXBzLnB1c2goc3ViRXF1aXApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGVxdWlwLnN1YkVxdWlwbWVudHMgPSBzdWJFcXVpcHM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBlcXVpcDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlRXF1aXBtZW50KFxyXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcclxuICAgIGltYWdlRmlsZTogRmlsZSxcclxuICAgIGRvY3VtZW50RmlsZTogRmlsZVxyXG4gICk6IFByb21pc2U8RXF1aXBtZW50IHwgdm9pZD4ge1xyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KGVxdWlwKTtcclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnZXF1aXBtZW50JyxcclxuICAgICAgICAgICAgcG9pOiBlcXVpcCxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuY3VycmVudFpvbmUuaWQsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuQ3JlYXRlRXF1aXBtZW50KGVxdWlwKS50aGVuKGFzeW5jIChyZWNlaXZlZEVxdWlwbWVudCkgPT4ge1xyXG4gICAgICBsZXQgZXF1aXBtZW50ID0gcmVjZWl2ZWRFcXVpcG1lbnQgYXMgRXF1aXBtZW50O1xyXG4gICAgICBpZiAoZXF1aXBtZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2VxdWlwbWVudCBjcmVhdGVkOicsIGVxdWlwbWVudCk7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50RmlsZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWREb2MoZXF1aXBtZW50LCBkb2N1bWVudEZpbGUsIFR5cGVOb3RlLlRFQ0hOSUNBTCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbWFnZUZpbGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBpbWFnZUZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZXF1aXBtZW50O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRTaWduZWRVcmxzRm9yRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgY29uc3QgZXF1aXBtZW50ID0gey4uLmVxdWlwfTtcclxuICAgIGlmIChlcXVpcG1lbnQubm90ZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkb2NzID0gW107XHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIGVxdWlwbWVudC5ub3Rlcy5pdGVtcy5tYXAoYXN5bmMgKG5vdGUpID0+IHtcclxuICAgICAgICAgIGVxdWlwbWVudC5kb2N1bWVudGF0aW9uSW1hZ2VVcmxTaWduZWQgPVxyXG4gICAgICAgICAgICBhd2FpdCBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudChlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgaWYgKG5vdGUuYXR0YWNobWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB7bGVuZ3RofSA9IG5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IG5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpW2xlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShub3RlLmF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xyXG4gICAgICAgICAgICAgIGRvY3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcclxuICAgICAgICAgICAgICAgIHVybDogbm90ZS5hdHRhY2htZW50LFxyXG4gICAgICAgICAgICAgICAgdXJsU2lnbmVkOiBhdHRhY2htZW50LFxyXG4gICAgICAgICAgICAgICAgbm90ZUlEOiBub3RlLmlkLFxyXG4gICAgICAgICAgICAgIH0gYXMgRXF1aXBtZW50RG9jdW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgZXF1aXBtZW50LmRvY3VtZW50cyA9IGRvY3M7XHJcbiAgICAgIHJldHVybiBlcXVpcG1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXF1aXBtZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvclRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSB0aWNrZXQub3BlcmF0aW9ucy5pdGVtcztcclxuICAgIGlmIChvcGVyYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgb3BlcmF0aW9ucy5zb3J0KFxyXG4gICAgICAgIChhLCBiKSA9PlxyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRBdClcclxuICAgICAgKTtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgb3BlcmF0aW9ucy5tYXAoYXN5bmMgKG9wZXJhdGlvbikgPT4ge1xyXG4gICAgICAgICAgb3BlcmF0aW9uLmVxdWlwbWVudCA9IGF3YWl0IHRoaXMucmVhZEVxdWlwbWVudChvcGVyYXRpb24uZXF1aXBtZW50SUQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyB0byBrZWVwIHRoZSBzb3J0aW5nIGJ5IGNyZWF0ZWRBdFxyXG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKChvKSA9PiBvLmVxdWlwbWVudCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxFcXVpcG1lbnRbXT4ge1xyXG4gICAgLy8gc3BsaXQgYnkgMTAwXHJcbiAgICBjb25zdCBsaW1pdCA9IDEwMDtcclxuICAgIGxldCBlcXVpcHNUb2tlbiA9IHtlcXVpcHM6IFtdLCBuZXh0VG9rZW46IG51bGx9O1xyXG4gICAgZG8ge1xyXG4gICAgICBlcXVpcHNUb2tlbiA9IGF3YWl0IHRoaXMubWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxyXG4gICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgbGltaXQsXHJcbiAgICAgICAgZXF1aXBzVG9rZW5cclxuICAgICAgKTtcclxuICAgIH0gd2hpbGUgKGVxdWlwc1Rva2VuLm5leHRUb2tlbik7XHJcbiAgICByZXR1cm4gZXF1aXBzVG9rZW4uZXF1aXBzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgbGltaXQ6IG51bWJlcixcclxuICAgIGVxdWlwc1Rva2VuOiB7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9XHJcbiAgKTogUHJvbWlzZTx7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5FcXVpcG1lbnRzQnlTcGFjZShcclxuICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgIG51bGwsXHJcbiAgICAgICAgJ0RFU0MnLFxyXG4gICAgICAgIG51bGwsXHJcbiAgICAgICAgbGltaXQsXHJcbiAgICAgICAgZXF1aXBzVG9rZW4ubmV4dFRva2VuIC8vIG5leHRUb2tlblxyXG4gICAgICApXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVxdWlwc0xpbWl0ID0gcmVzcG9uc2UuaXRlbXM7XHJcbiAgICAgICAgY29uc3QgZXF1aXBzT2JqZWN0ID0ge1xyXG4gICAgICAgICAgZXF1aXBzOiBbLi4uZXF1aXBzVG9rZW4uZXF1aXBzLCAuLi5lcXVpcHNMaW1pdF0sXHJcbiAgICAgICAgICBuZXh0VG9rZW46IHJlc3BvbnNlLm5leHRUb2tlbixcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBlcXVpcHNPYmplY3Q7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkSW1hZ2VGb3JBbGxFcXVpcG1lbnRzKFxyXG4gICAgZXF1aXBtZW50czogRXF1aXBtZW50W10sXHJcbiAgICBpbWFnZUZpbGU6IEZpbGVcclxuICApOiBQcm9taXNlPEVxdWlwbWVudFtdPiB7XHJcbiAgICBpZiAoZXF1aXBtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyh0aGlzLnByZWZpeC5pbWFnZSwgaW1hZ2VGaWxlLCAnQkFUQ0gnKS50aGVuKFxyXG4gICAgICBhc3luYyAodXJsKSA9PiB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgY29uc3QgZXF1aXBzID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGVxdWlwIG9mIGVxdWlwbWVudHMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgIGVxdWlwLnNwYWNlSURcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xyXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHVybCxcclxuICAgICAgICAgICAgICB0eXBlOiBUeXBlTm90ZS5JTUFHRSxcclxuICAgICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXHJcbiAgICAgICAgICAgICAgb3duZXJNaXNzaW9uSUQ6IGN1cnJlbnRNaXNzaW9uID8gY3VycmVudE1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZUVxdWlwbWVudCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGVxdWlwLmlkLFxyXG4gICAgICAgICAgICAgIHBob3RvOiB1cmwsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcXVpcHMucHVzaCh1cGRhdGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGVxdWlwcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkSW1hZ2UoZXF1aXBtZW50OiBFcXVpcG1lbnQsIGltYWdlRmlsZTogRmlsZSk6IFByb21pc2U8Tm90ZT4ge1xyXG4gICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHRoaXMucHJlZml4LmltYWdlLCBpbWFnZUZpbGUsIGVxdWlwbWVudC5pZCkudGhlbihcclxuICAgICAgYXN5bmMgKHVybCkgPT4ge1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRNaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihcclxuICAgICAgICAgICAgZXF1aXBtZW50LnNwYWNlSURcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBub3RlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xyXG4gICAgICAgICAgICBhdHRhY2htZW50OiB1cmwsXHJcbiAgICAgICAgICAgIHR5cGU6IFR5cGVOb3RlLklNQUdFLFxyXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogY3VycmVudE1pc3Npb24gPyBjdXJyZW50TWlzc2lvbi5pZCA6IG51bGwsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFcXVpcG1lbnQoe1xyXG4gICAgICAgICAgICBpZDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBwaG90bzogdXJsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbm90ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVFcXVpcG1lbnQoXHJcbiAgICBlcXVpcDogYW55LFxyXG4gICAgZmlsZTogRmlsZSA9IG51bGwsXHJcbiAgICBub3RlVHlwZTogVHlwZU5vdGUgPSBudWxsXHJcbiAgKTogUHJvbWlzZTxFcXVpcG1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cclxuICAgICAgLlVwZGF0ZUVxdWlwbWVudChlcXVpcClcclxuICAgICAgLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXBtZW50KSA9PiB7XHJcbiAgICAgICAgbGV0IGVxdWlwbWVudCA9IHJlY2VpdmVkRXF1aXBtZW50IGFzIEVxdWlwbWVudDtcclxuICAgICAgICBpZiAoZXF1aXBtZW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXF1aXBtZW50IHVwZGF0ZWQ6JywgZXF1aXBtZW50KTtcclxuICAgICAgICAgIGlmIChub3RlVHlwZSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG5vdGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBmaWxlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZERvYyhlcXVpcG1lbnQsIGZpbGUsIG5vdGVUeXBlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcXVpcG1lbnQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJlZml4RG9jKHR5cGU6IFR5cGVOb3RlKSB7XHJcbiAgICBsZXQgcHJlZml4O1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgVHlwZU5vdGUuSU5GT1JNQVRJT046XHJcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXguaW5mb3JtYXRpb247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVHlwZU5vdGUuRklOQU5DSUFMOlxyXG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LmZpbmFuY2lhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5DT05UUkFDVFVBTDpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5jb250cmFjdHVhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5PVEhFUjpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5vdGhlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5pbWFnZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC50ZWNobmljYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJlZml4O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkRG9jRm9yQWxsRXF1aXBtZW50cyhcclxuICAgIGVxdWlwbWVudHM6IEVxdWlwbWVudFtdLFxyXG4gICAgZG9jdW1lbnRGaWxlOiBGaWxlLFxyXG4gICAgdHlwZTogVHlwZU5vdGVcclxuICApIHtcclxuICAgIGlmIChlcXVpcG1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcclxuICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHByZWZpeCwgZG9jdW1lbnRGaWxlLCAnQkFUQ0gnKTtcclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgY29uc3QgdXBkYXRlTGlzdCA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGVxdWlwIG9mIGVxdWlwbWVudHMpIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcC5zcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBuZXdFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcclxuICAgICAgICAgIGF0dGFjaG1lbnQ6IHVybCxcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXHJcbiAgICAgICAgICBvd25lck1pc3Npb25JRDogbWlzc2lvbiA/IG1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHVwZGF0ZUxpc3QucHVzaChuZXdFcXVpcCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHVwZGF0ZUxpc3Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGxvYWREb2MoXHJcbiAgICBlcXVpcG1lbnQ6IEVxdWlwbWVudCxcclxuICAgIGRvY3VtZW50RmlsZTogRmlsZSxcclxuICAgIHR5cGU6IFR5cGVOb3RlXHJcbiAgKTogUHJvbWlzZTxOb3RlPiB7XHJcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcclxuICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKTtcclxuICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwcmVmaXgsIGRvY3VtZW50RmlsZSwgZXF1aXBtZW50LmlkKS50aGVuKFxyXG4gICAgICBhc3luYyAodXJsKSA9PiB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcclxuICAgICAgICAgICAgYXR0YWNobWVudDogdXJsLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogbWlzc2lvbiA/IG1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVFcXVpcG1lbnQoe2lkOiBlcXVpcC5pZH0pO1xyXG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZWQgZXF1aXBtZW50JywgZGVsZXRlZCk7XHJcblxyXG4gICAgLy8gZGVsZXRlIFBPSVxyXG4gICAgY29uc3QgW3BvaV0gPSBlcXVpcC5wb2lzLml0ZW1zO1xyXG4gICAgaWYgKHBvaSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XHJcbiAgICB9XHJcbiAgICAvLyBkZWxldGUgbm90ZXMgcmVsYXRlZFxyXG4gICAgaWYgKGVxdWlwLm5vdGVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgZXF1aXAubm90ZXMuaXRlbXMubWFwKGFzeW5jIChub3RlOiBOb3RlKSA9PiB7XHJcbiAgICAgICAgICAvLyBkZWxldGUgZmlsZXMgZnJvbSBTM1xyXG4gICAgICAgICAgLyoqIE5vdCBzaGFyZWQgd2l0aCBvdGhlciBlcXVpcG1lbnQgKi9cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgbm90ZS5hdHRhY2htZW50ICYmXHJcbiAgICAgICAgICAgICFub3RlLmF0dGFjaG1lbnQuc3BsaXQoJy8nKS5wb3AoKS5zdGFydHNXaXRoKCdCQVRDSF8nKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhub3RlLmF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU5vdGUoe2lkOiBub3RlLmlkfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBvcGVyYXRpb25zIChyZW1vdmUgZnJvbSBsaW5rZWQgdGlja2V0cylcclxuICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5kZWxldGVPcGVyYXRpb25zRm9yRXF1aXBtZW50KGVxdWlwLmlkKTtcclxuICAgIHJldHVybiBkZWxldGVkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlRXF1aXBtZW50TG9jYXRpb24oXHJcbiAgICBlcXVpcDogRXF1aXBtZW50LFxyXG4gICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IFBvaVR5cGUuRVFVSVBNRU5ULFxyXG4gICAgICBlbGVtZW50SUQ6IGVxdWlwLmlkLFxyXG4gICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxyXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIHJldHVybiBwb2k7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmVUaWNrZXRGcm9tRXF1aXBtZW50KFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBlcXVpcDogRXF1aXBtZW50XHJcbiAgKTogUHJvbWlzZTxPcGVyYXRpb24+IHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbkVxdWlwID1cclxuICAgICAgYXdhaXQgdGhpcy5vcGVyYXRpb25TZXJ2aWNlLmdldE9wZXJhdGlvbnNCeUVxdWlwbWVudElEKGVxdWlwLmlkKTtcclxuICAgIGNvbnN0IG9wZXJhdGlvblRvRGVsZXRlID0gb3BlcmF0aW9uRXF1aXAuZmluZChcclxuICAgICAgKG9wKSA9PiBvcC50aWNrZXRJRCA9PT0gdGlja2V0LmlkXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uU2VydmljZVxyXG4gICAgICAuZGVsZXRlT3BlcmF0aW9uKG9wZXJhdGlvblRvRGVsZXRlLmlkKVxyXG4gICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzU2VydmljZS5hZGRFdmVudFRvVGlja2V0KHRpY2tldCBhcyBUaWNrZXQsIHtcclxuICAgICAgICAgIHRpdGxlOiAnRXF1aXBlbWVudCByZXRpcsOpIGR1IHRpY2tldCcsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEVxdWlwZW1lbnQgJHtlcXVpcC5uYW1lfSBhIMOpdMOpIHJldGlyw6kgZHUgdGlja2V0YCxcclxuICAgICAgICAgIHN0YXR1czogRXZlbnRTdGF0dXMuVU5MSU5LRURfRlJPTV9FUVVJUE1FTlQsXHJcbiAgICAgICAgICB0eXBlOiBFdmVudFR5cGUuVElDS0VULFxyXG4gICAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LnVubGlua2VkRnJvbUVxdWlwbWVudCcsXHJcbiAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoe2VxdWlwbWVudDogZXF1aXAubmFtZX0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdEVxdWlwcygpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRseVVwZGF0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgZXFMaXN0ID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCk7XHJcbiAgICBlcUxpc3QgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgZXFMaXN0XHJcbiAgICApO1xyXG4gICAgLy8gY29uc29sZS5sb2coZXFMaXN0KTtcclxuICAgIGlmIChlcUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsdGVyZWRFcXVpcHMgPSBlcUxpc3QuZmlsdGVyKFxyXG4gICAgICAgIChlcXVpcG1lbnQpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZXF1aXBtZW50KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgZmlsdGVyZWRFcXVpcHMubWFwKGFzeW5jIChlcXVpcCkgPT4ge1xyXG4gICAgICAgICAgZXF1aXAuZG9jdW1lbnRhdGlvbkltYWdlVXJsU2lnbmVkID1cclxuICAgICAgICAgICAgYXdhaXQgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQoZXF1aXApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlcikge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXHJcbiAgICAgICAgICBmaWx0ZXJlZEVxdWlwcyxcclxuICAgICAgICAgIHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlID0gZmlsdGVyZWRFcXVpcHM7XHJcbiAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgIGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lXHJcbiAgICAgICAgKSkgYXMgRXF1aXBtZW50W107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5zZXQodGhpcy56b25lSURGaWx0ZXIsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVGFncy5uZXh0KGZpbHRlcmVkRXF1aXBzKTsgLy8gYWRkaW5nIHRhZ3Mgb25seSBmb3IgdGhlIGN1cnJlbnQgem9uZVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgIHpvbmU6IGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5zZXQodGhpcy56b25lSURGaWx0ZXIsIFtdKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogW119KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RXF1aXBtZW50cyk7XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5jdXJyZW50bHlVcGRhdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvckN1cnJlbnRVc2VyRm9yU3BhY2UoXHJcbiAgICBzcGFjZUlELFxyXG4gICAgbWlzc2lvbnM6IE1pc3Npb25bXVxyXG4gICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgIGxldCByZXN1bHRzID0gW107XHJcblxyXG4gICAgY29uc3Qgc3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlEKTtcclxuICAgIGlmIChzcGFjZU1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuICAgIGNvbnN0IGNhblNlZUVxdWlwcyA9IHNwYWNlTWlzc2lvbnMuc29tZShcclxuICAgICAgKG0pID0+XHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5tYW5hZ2Vycy5pbmNsdWRlcyhtLnJvbGUpIHx8XHJcbiAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0VcclxuICAgICk7XHJcbiAgICBpZiAoIWNhblNlZUVxdWlwcykge1xyXG4gICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuICAgIGxldCBkb21haW5zID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG0gb2Ygc3BhY2VNaXNzaW9ucykge1xyXG4gICAgICBkb21haW5zID0gWy4uLmRvbWFpbnMsIG0uZG9tYWluc107XHJcbiAgICB9XHJcbiAgICBpZiAoZG9tYWlucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcbiAgICByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAvLyByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXHJcbiAgICAvLyAgICAgcmVzdWx0cyxcclxuICAgIC8vICAgICBkb21haW5zLFxyXG4gICAgLy8gKTtcclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbEVxdWlwbWVudHNJblNwYWNlKFxyXG4gICAgdGFnSWNvbjogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgZG9tYWluSUQ6IHN0cmluZyA9IG51bGxcclxuICApOiBQcm9taXNlPHsgZXF1aXBzOiBFcXVpcG1lbnRbXTsgcG9pczogUE9JW10gfT4ge1xyXG4gICAgbGV0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgaWYgKGRvbWFpbklEKSB7XHJcbiAgICAgIGVxdWlwcyA9IGVxdWlwcy5maWx0ZXIoKGVxdWlwKSA9PiBlcXVpcC5kb21haW5JRCA9PT0gZG9tYWluSUQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZXF1aXBzLCB0YWdJY29uKTtcclxuICAgIHJldHVybiB7ZXF1aXBzLCBwb2lzfTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIGVxdWlwbWVudCAqL1xyXG4gIGlzQXJjaGl2ZWQoZXF1aXBtZW50OiBFcXVpcG1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgPyBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcG1lbnQuc3BhY2VJRCkuaWRcclxuICAgICAgKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0QXJjaGl2ZWQoZXF1aXBtZW50OiBFcXVpcG1lbnQsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgID8gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUVxdWlwbWVudCh7XHJcbiAgICAgIGlkOiBlcXVpcG1lbnQuaWQsXHJcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZUZpbGUoZG9jdW1lbnRfOiBFcXVpcG1lbnREb2N1bWVudCkge1xyXG4gICAgYXdhaXQgZGVsZXRlRnJvbVMzKGRvY3VtZW50Xy51cmwpO1xyXG4gICAgYXdhaXQgdGhpcy5BUEkuRGVsZXRlTm90ZSh7aWQ6IGRvY3VtZW50Xy5ub3RlSUR9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5hdmlnYXRlVG9FcXVpcG1lbnRJbjNEKFxyXG4gICAgZXF1aXBtZW50OiBFcXVpcG1lbnQsXHJcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCB1cmwgPSBgdmlzaXQvJHtlcXVpcG1lbnQuc3BhY2VJRH1gO1xyXG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcclxuICAgICAgdXJsICs9IGAvZXF1aXAvJHtlcXVpcG1lbnQuaWR9YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhbkdvVG9UYWcgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uX21vdmVfdG9fdGFnKFxyXG4gICAgICBgJHtlcXVpcG1lbnQuaWR9YFxyXG4gICAgKTtcclxuICAgIGlmIChjYW5Hb1RvVGFnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TW9kZWwzZEFuZFN3ZWVwKGVxdWlwbWVudCk7XHJcblxyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5tb2RlbDNEKSB7XHJcbiAgICAgIGFsZXJ0KCdFcnJvciB3aGlsZSBnZXR0aW5nIHZpcnR1YWwgdmlzaXQgbW9kZWwnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JjZVN3aXRjaFZpc2l0KSB7XHJcbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIDNEIG1vZGVsXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtb2RlbDNEJyk7XHJcbiAgICAgIGlmIChjdXJyZW50TW9kZWwgJiYgY3VycmVudE1vZGVsID09PSByZXN1bHQubW9kZWwzRCkge1xyXG4gICAgICAgIC8vIHdlIGFkZCB0YWcgdG8gdGhlIHZpc2l0XHJcbiAgICAgICAgY29uc3QgcG9pID0gZXF1aXBtZW50LnBvaXMuaXRlbXNbMF07XHJcbiAgICAgICAgaWYgKHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICAvLyB3ZSBmb3JjZSBhZGQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhbiBhbm90aGVyIHpvbmVcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25BZGRPYmplY3RGcm9tUE9JKGVxdWlwbWVudCwgcG9pKTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcoZXF1aXBtZW50LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLyoqIFNpIG9uIG5lIGZvcmNlIHBhcyBsYSB2aXNpdGUsIG9uIGRlbWFuZGUgc2kgb24gdmV1dCBldHJlIHN3aXRjaCAqL1xyXG4gICAgICAgIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgICByZXN1bHQubW9kZWwzRCxcclxuICAgICAgICAgIGVxdWlwbWVudC5zcGFjZUlELFxyXG4gICAgICAgICAge3N3ZWVwVG9Nb3ZlOiByZXN1bHQuc3dlZXAsIHJvdGF0aW9uOiByZXN1bHQucm90YXRpb259XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyoqIFNpIG9uIGZvcmNlIGxlIHN3aXRjaCBkZSBsYSB2aXNpdCAqL1xyXG4gICAgICB3aW5kb3cub3BlbihgJHt1cmx9P21vZGVsM0Q9JHtyZXN1bHQubW9kZWwzRH0mc3dlZXA9dHJ1ZWAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUVxdWlwc0ZvclpvbmUoKSB7XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XHJcbiAgICBsZXQgZmlsdGVyZWRFcXVpcHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyICYmXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5oYXModGhpcy56b25lSURGaWx0ZXIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaSBoYXZlIGVxdWlwcyBmb3IgdGhpcyB6b25lXCIsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IChhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lXHJcbiAgICAgICAgKSkgYXMgRXF1aXBtZW50W107XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuc2V0KHRoaXMuem9uZUlERmlsdGVyLCBbXHJcbiAgICAgICAgICAuLi5maWx0ZXJlZEVxdWlwcyxcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lcXVpcG1lbnREb21haW5GaWx0ZXIpIHtcclxuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KFxyXG4gICAgICAgICAgZmlsdGVyZWRFcXVpcHMsXHJcbiAgICAgICAgICB0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVGFncy5uZXh0KGZpbHRlcmVkRXF1aXBzKTsgLy8gYWRkaW5nIHRhZ3Mgb25seSBmb3IgdGhlIGN1cnJlbnQgem9uZVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgIHpvbmU6IGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVXBkYXRlZC5uZXh0KHtzcGFjZTogW10sIHpvbmU6IFtdfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRXF1aXBtZW50OiBFcXVpcG1lbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidXBkYXRlIGR1ZSB0byBkZWxldGVcIiwgZGVsZXRlZEVxdWlwbWVudCk7XHJcbiAgICBjb25zdCBlcXVpcCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuZmluZChcclxuICAgICAgKF9lcXVpcCkgPT4gX2VxdWlwLmlkID09PSBkZWxldGVkRXF1aXBtZW50LmlkXHJcbiAgICApO1xyXG4gICAgaWYgKGVxdWlwKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5pbmRleE9mKGVxdWlwKTtcclxuICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XHJcbiAgICAgIGNvbnN0IGVxdWlwVG9EZWxldGUgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgLmdldCh6b25lKVxyXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gZGVsZXRlZEVxdWlwbWVudC5pZCk7XHJcbiAgICAgIGlmIChlcXVpcFRvRGVsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgICAuZ2V0KHpvbmUpXHJcbiAgICAgICAgICAuaW5kZXhPZihlcXVpcFRvRGVsZXRlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICBzcGFjZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcclxuICAgICAgem9uZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpLFxyXG4gICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICB9XHJcblxyXG4gIHVwZGF0ZUR1ZVRvQ3JlYXRlKGNyZWF0ZWRFcXVpcDogRXF1aXBtZW50KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcclxuICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcclxuICAgICAgLmdldCh0aGlzLnpvbmVJREZpbHRlcilcclxuICAgICAgLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcclxuICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XHJcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXHJcbiAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRHVlVG9FcXVpcFVwZGF0ZWQodXBkYXRlZEVxdWlwOiBFcXVpcG1lbnQpIHtcclxuICAgIGNvbnN0IGVxdWlwID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5maW5kKFxyXG4gICAgICAoX2VxdWlwKSA9PiBfZXF1aXAuaWQgPT09IHVwZGF0ZWRFcXVpcC5pZFxyXG4gICAgKTtcclxuICAgIGlmIChlcXVpcCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuaW5kZXhPZihlcXVpcCk7XHJcbiAgICAgIGlmICh0aGlzLmlzQXJjaGl2ZWQoZXF1aXApKSB7XHJcbiAgICAgICAgLy8gd2UgcmVtb3ZlIGFyY2hpdmVkIGVxdWlwbWVudFxyXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XHJcbiAgICAgIGNvbnN0IGVxdWlwVG9VcGQgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgLmdldCh6b25lKVxyXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gdXBkYXRlZEVxdWlwLmlkKTtcclxuICAgICAgaWYgKGVxdWlwVG9VcGQpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcclxuICAgICAgICAgIC5nZXQoem9uZSlcclxuICAgICAgICAgIC5pbmRleE9mKGVxdWlwVG9VcGQpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXJjaGl2ZWQoZXF1aXApKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgICAgIC5nZXQoem9uZSlcclxuICAgICAgICAgICAgLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XHJcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXHJcbiAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gIH1cclxuXHJcbiAgaW5pdFN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdXNldW1Vc2VyKSB7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXpvbmUgfHwgIXRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgICAgICB0aGlzLmVxdWlwbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7c3BhY2U6IFtdLCB6b25lOiBudWxsfSk7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cyA9IHtcclxuICAgICAgICAgICAgICBzcGFjZTogW10sXHJcbiAgICAgICAgICAgICAgem9uZXNNYXA6IG5ldyBNYXAoKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEID09PSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAvLyBzYW1lIHNwYWNlLCAgb25seSB6b25lIHVwZGF0ZVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgIC8vICAgICBcImdvaW5nIHRvIHVwZGF0ZSBlcXVpcHMgZm9yIHpvbmUgKHNhbWUgc3BhY2UpXCIsXHJcbiAgICAgICAgICAgICAgLy8gICAgIHpvbmUsXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVFcXVpcHNGb3Jab25lKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAvLyAgICAgXCJnb2luZyB0byBpbml0IGVxdWlwcyBmb3Igem9uZSBmb3IgbmV3IHNwYWNlXCIsXHJcbiAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgICB0aGlzLmluaXRFcXVpcHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5kZWxldGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0RlbGV0ZShlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jcmVhdGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0NyZWF0ZShlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0VxdWlwVXBkYXRlZChlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
696
|
+
}] }, { type: i1.PoiService }, { type: i2.NavigationService }, { type: i3.OperationService }, { type: i4.TicketsService }, { type: i5.NavigatorService }, { type: i6.FilterService }, { type: i7.BaseUserService }, { type: i8.ViewerService }, { type: i9.NgbModal }, { type: i10.ZoneChangeService }] });
|
|
697
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1aXBtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL21vZGVscy9lcXVpcG1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUV6QixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFNTCxRQUFRLEVBRVIsV0FBVyxFQUNYLFNBQVMsRUFHVCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUNMLFlBQVksRUFDWixhQUFhLEVBQ2IsNkJBQTZCLEVBQzdCLGNBQWMsR0FDZixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBVXhELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUErRDNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFyRUYsTUFBTSxHQUFHO1FBQ2YsU0FBUyxFQUFFLDRCQUE0QjtRQUN2QyxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsV0FBVyxFQUFFLDhCQUE4QjtRQUMzQyxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLFdBQVcsRUFBRSw4QkFBOEI7S0FDNUMsQ0FBQztJQUVGLGlCQUFpQixHQUdaLElBQUksT0FBTyxFQUFFLENBQUM7SUFFbkIsaUJBQWlCLEdBR2I7UUFDRixLQUFLLEVBQUUsRUFBRTtRQUNULFFBQVEsRUFBRSxJQUFJLEdB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QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVMLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDMUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQXAwQlUsZ0JBQWdCLGtCQTBEakIsbUJBQW1CLGFBQ25CLG1DQUFtQzs0R0EzRGxDLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTJESSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nYk1vZGFsfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBvcGVuTW9kYWxGb3JWaXNpdFN3aXRjaCxcclxuICByZW1vdmVOdWxsS2V5c0Zyb21PYmplY3QsXHJcbiAgd2FpdFVudGlsLFxyXG59IGZyb20gJy4uLy4uL2hlbHBlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7TWF0dGVydGFnRGF0YX0gZnJvbSAnLi4vLi4vbWF0dGVydGFnRGF0YSc7XHJcbmltcG9ydCB7XHJcbiAgTm90ZSxcclxuICBab25lLFxyXG4gIEVxdWlwbWVudCxcclxuICBFcXVpcG1lbnREb2N1bWVudCxcclxuICBUaWNrZXQsXHJcbiAgVHlwZU5vdGUsXHJcbiAgTWlzc2lvbixcclxuICBFdmVudFN0YXR1cyxcclxuICBFdmVudFR5cGUsXHJcbiAgT3BlcmF0aW9uLFxyXG4gIFBPSSxcclxuICBQb2lUeXBlLFxyXG4gIFJvbGVTdGF0dXMsXHJcbn0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RmlsdGVyU2VydmljZX0gZnJvbSAnLi4vZmlsdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge05hdmlnYXRvclNlcnZpY2V9IGZyb20gJy4uL25hdmlnYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBkZWxldGVGcm9tUzMsXHJcbiAgZ2V0U2lnbmVkRmlsZSxcclxuICBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudCxcclxuICB1cGxvYWRGaWxlVG9TMyxcclxufSBmcm9tICcuLi9zMy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCYXNlVXNlclNlcnZpY2V9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Vmlld2VyU2VydmljZX0gZnJvbSAnLi4vdmlld2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Jhc2VPYmplY3RTZXJ2aWNlfSBmcm9tICcuL2Jhc2Utb2JqZWN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge05hdmlnYXRpb25TZXJ2aWNlfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7T3BlcmF0aW9uU2VydmljZX0gZnJvbSAnLi9vcGVyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UG9pU2VydmljZX0gZnJvbSAnLi9wb2kuc2VydmljZSc7XHJcbmltcG9ydCB7VGlja2V0c1NlcnZpY2V9IGZyb20gJy4vdGlja2V0LnNlcnZpY2UnO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXF1aXBtZW50U2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcclxuICBwcml2YXRlIHByZWZpeCA9IHtcclxuICAgIHRlY2huaWNhbDogJ2VxdWlwbWVudHMvbm90ZS90ZWNobmljYWwvJyxcclxuICAgIGltYWdlOiAnZXF1aXBtZW50cy9ub3RlL2ltYWdlLycsXHJcbiAgICBmaW5hbmNpYWw6ICdlcXVpcG1lbnRzL25vdGUvZmluYW5jaWFsLycsXHJcbiAgICBpbmZvcm1hdGlvbjogJ2VxdWlwbWVudHMvbm90ZS9pbmZvcm1hdGlvbi8nLFxyXG4gICAgb3RoZXI6ICdlcXVpcG1lbnRzL25vdGUvb3RoZXIvJyxcclxuICAgIGNvbnRyYWN0dWFsOiAnZXF1aXBtZW50cy9ub3RlL2NvbnRyYWN0dWFsLycsXHJcbiAgfTtcclxuXHJcbiAgZXF1aXBtZW50c1VwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgc3BhY2U6IEVxdWlwbWVudFtdO1xyXG4gICAgem9uZTogRXF1aXBtZW50W107XHJcbiAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjdXJyZW50RXF1aXBtZW50czoge1xyXG4gICAgc3BhY2U6IEVxdWlwbWVudFtdO1xyXG4gICAgem9uZXNNYXA6IE1hcDxzdHJpbmcsIEVxdWlwbWVudFtdPjtcclxuICB9ID0ge1xyXG4gICAgc3BhY2U6IFtdLFxyXG4gICAgem9uZXNNYXA6IG5ldyBNYXAoKSxcclxuICB9O1xyXG5cclxuICBlcXVpcG1lbnRzVGFnczogU3ViamVjdDxFcXVpcG1lbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgY3VycmVudFpvbmU6IFpvbmU7XHJcblxyXG4gIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gIGZsb29yc1BlclNwYWNlOiBab25lW10gPSBudWxsO1xyXG5cclxuICAvKiogTnVsbCBtZWFucyB3ZSBkbyBub3QgYXBwbHkgYSBmaWx0ZXIsIGVtcHR5IGFycmF5IChbXSksIG1lYW5zIHdlIHRoYXQgd2UgaGlkZSBhbGwgZXF1aXBtZW50ICovXHJcbiAgZXF1aXBtZW50RG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY3VycmVudGx5VXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgY3VycmVudFN3ZWVwOiBzdHJpbmc7XHJcblxyXG4gIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHVwZGF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RXF1aXBtZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHNlbGVjdGVkRmxvb3I6IFpvbmUgPSBudWxsO1xyXG5cclxuICBBUEk6IGFueTsgLy9BV1NcclxuICBhd3NLaW5lc2lzQW5hbHl0aWNzOiBhbnk7IC8vQVdTXHJcblxyXG4gIGlzTXVzZXVtVXNlciA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXHJcbiAgICBASW5qZWN0KCdjdXJyZW50QXdzS2luZXNpc0FuYWx5dGljc1NlcnZpY2UnKVxyXG4gICAgICBhd3NLaW5lc2lzQW5hbHl0aWNzSW5qZWN0ZWQ6IGFueSxcclxuICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG9wZXJhdGlvblNlcnZpY2U6IE9wZXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRpY2tldHNTZXJ2aWNlOiBUaWNrZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyA9IGF3c0tpbmVzaXNBbmFseXRpY3NJbmplY3RlZDtcclxuXHJcbiAgICB0aGlzLmlzTXVzZXVtVXNlciA9IHRoaXMudXNlclNlcnZpY2UuaGFzT25seU11c2V1bVJvbGUoKTtcclxuICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbnMoKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuaXNDaGFuZ2VkLnN1YnNjcmliZSgoaXNDb25uZWN0ZWQpID0+IHtcclxuICAgICAgaWYgKGlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgdGhpcy5pc011c2V1bVVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmhhc09ubHlNdXNldW1Sb2xlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS5mbG9vckhhc0NoYW5nZWQuc3Vic2NyaWJlKChmbG9vcik9PntcclxuICAgICAgaWYgKGZsb29yKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmxvb3IgPSBmbG9vcjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZWFkRXF1aXBtZW50KGlkOiBzdHJpbmcpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRFcXVpcG1lbnQoaWQpLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXApID0+IHtcclxuICAgICAgbGV0IGVxdWlwOiBFcXVpcG1lbnQ7XHJcbiAgICAgIGlmIChyZWNlaXZlZEVxdWlwKSB7XHJcbiAgICAgICAgZXF1aXAgPSByZWNlaXZlZEVxdWlwO1xyXG4gICAgICAgIGVxdWlwID0gYXdhaXQgdGhpcy5nZXRTaWduZWRVcmxzRm9yRXF1aXBtZW50KHJlY2VpdmVkRXF1aXApO1xyXG4gICAgICAgIGlmIChlcXVpcC5kb21haW4pIHtcclxuICAgICAgICAgIGlmIChlcXVpcC5kb21haW4ucGFyZW50SUQpIHtcclxuICAgICAgICAgICAgZXF1aXAuY2hpbGREb21haW4gPSBlcXVpcC5kb21haW47XHJcbiAgICAgICAgICAgIGVxdWlwLnBhcmVudERvbWFpbiA9IGVxdWlwLmRvbWFpbi5wYXJlbnQ7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlcXVpcC5wYXJlbnREb21haW4gPSBlcXVpcC5kb21haW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcXVpcC5zdWJlcXVpcG1lbnRzSURzKSB7XHJcbiAgICAgICAgICBjb25zdCBzdWJFcXVpcHMgPSBbXTtcclxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICBlcXVpcC5zdWJlcXVpcG1lbnRzSURzLm1hcChhc3luYyAoc3ViSWQpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBzdWJFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLkdldEVxdWlwbWVudChzdWJJZCk7XHJcbiAgICAgICAgICAgICAgc3ViRXF1aXBzLnB1c2goc3ViRXF1aXApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGVxdWlwLnN1YkVxdWlwbWVudHMgPSBzdWJFcXVpcHM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBlcXVpcDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlRXF1aXBtZW50KFxyXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcclxuICAgIGltYWdlRmlsZTogRmlsZSxcclxuICAgIGRvY3VtZW50RmlsZTogRmlsZVxyXG4gICk6IFByb21pc2U8RXF1aXBtZW50IHwgdm9pZD4ge1xyXG4gICAgcmVtb3ZlTnVsbEtleXNGcm9tT2JqZWN0KGVxdWlwKTtcclxuICAgIGlmICghIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcyAmJiAhIXRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5yZWNvcmQgJiYgdGhpcy5hd3NLaW5lc2lzQW5hbHl0aWNzLnJlY29yZCgpKSB7XHJcbiAgICAgIHRoaXMuYXdzS2luZXNpc0FuYWx5dGljcy5nZXRJbnN0YW5jZSgpLnJlY29yZChcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICBldmVudFR5cGU6ICdPYmplY3QgQ3JlYXRpb24nLFxyXG4gICAgICAgICAgICBvYmplY3RUeXBlOiAnZXF1aXBtZW50JyxcclxuICAgICAgICAgICAgcG9pOiBlcXVpcCxcclxuICAgICAgICAgICAgdXNlcjogdGhpcy51c2VyU2VydmljZS5jdSxcclxuICAgICAgICAgICAgbG9jYXRpb25JZDogdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxyXG4gICAgICAgICAgICB6b25lSWQ6IHRoaXMuY3VycmVudFpvbmUuaWQsXHJcbiAgICAgICAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcj8uaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3RyZWFtTmFtZTogJ3NtYXJ0ZXJwbGFuS2luZXNpcy1hbmFseXRpY3MnLFxyXG4gICAgICAgICAgLy8gcGFydGl0aW9uS2V5OiBcIlwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ0FXU0tpbmVzaXMnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuQ3JlYXRlRXF1aXBtZW50KGVxdWlwKS50aGVuKGFzeW5jIChyZWNlaXZlZEVxdWlwbWVudCkgPT4ge1xyXG4gICAgICBsZXQgZXF1aXBtZW50ID0gcmVjZWl2ZWRFcXVpcG1lbnQgYXMgRXF1aXBtZW50O1xyXG4gICAgICBpZiAoZXF1aXBtZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2VxdWlwbWVudCBjcmVhdGVkOicsIGVxdWlwbWVudCk7XHJcbiAgICAgICAgaWYgKGRvY3VtZW50RmlsZSkge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWREb2MoZXF1aXBtZW50LCBkb2N1bWVudEZpbGUsIFR5cGVOb3RlLlRFQ0hOSUNBTCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpbWFnZUZpbGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBpbWFnZUZpbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZXF1aXBtZW50O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRTaWduZWRVcmxzRm9yRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgY29uc3QgZXF1aXBtZW50ID0gey4uLmVxdWlwfTtcclxuICAgIGlmIChlcXVpcG1lbnQubm90ZXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkb2NzID0gW107XHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIGVxdWlwbWVudC5ub3Rlcy5pdGVtcy5tYXAoYXN5bmMgKG5vdGUpID0+IHtcclxuICAgICAgICAgIGVxdWlwbWVudC5kb2N1bWVudGF0aW9uSW1hZ2VVcmxTaWduZWQgPVxyXG4gICAgICAgICAgICBhd2FpdCBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudChlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgaWYgKG5vdGUuYXR0YWNobWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCB7bGVuZ3RofSA9IG5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IG5vdGUuYXR0YWNobWVudC5zcGxpdCgnLycpW2xlbmd0aCAtIDFdO1xyXG4gICAgICAgICAgICBjb25zdCBhdHRhY2htZW50ID0gYXdhaXQgZ2V0U2lnbmVkRmlsZShub3RlLmF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoYXR0YWNobWVudCkge1xyXG4gICAgICAgICAgICAgIGRvY3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcclxuICAgICAgICAgICAgICAgIHVybDogbm90ZS5hdHRhY2htZW50LFxyXG4gICAgICAgICAgICAgICAgdXJsU2lnbmVkOiBhdHRhY2htZW50LFxyXG4gICAgICAgICAgICAgICAgbm90ZUlEOiBub3RlLmlkLFxyXG4gICAgICAgICAgICAgIH0gYXMgRXF1aXBtZW50RG9jdW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgZXF1aXBtZW50LmRvY3VtZW50cyA9IGRvY3M7XHJcbiAgICAgIHJldHVybiBlcXVpcG1lbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXF1aXBtZW50O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvclRpY2tldCh0aWNrZXQ6IFRpY2tldCk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbnMgPSB0aWNrZXQub3BlcmF0aW9ucy5pdGVtcztcclxuICAgIGlmIChvcGVyYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgb3BlcmF0aW9ucy5zb3J0KFxyXG4gICAgICAgIChhLCBiKSA9PlxyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZXR0aWVyL3ByZXR0aWVyXHJcbiAgICAgICAgICBuZXcgRGF0ZShiLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShhLmNyZWF0ZWRBdClcclxuICAgICAgKTtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgb3BlcmF0aW9ucy5tYXAoYXN5bmMgKG9wZXJhdGlvbikgPT4ge1xyXG4gICAgICAgICAgb3BlcmF0aW9uLmVxdWlwbWVudCA9IGF3YWl0IHRoaXMucmVhZEVxdWlwbWVudChvcGVyYXRpb24uZXF1aXBtZW50SUQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvLyB0byBrZWVwIHRoZSBzb3J0aW5nIGJ5IGNyZWF0ZWRBdFxyXG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKChvKSA9PiBvLmVxdWlwbWVudCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxFcXVpcG1lbnRbXT4ge1xyXG4gICAgLy8gc3BsaXQgYnkgMTAwXHJcbiAgICBjb25zdCBsaW1pdCA9IDEwMDtcclxuICAgIGxldCBlcXVpcHNUb2tlbiA9IHtlcXVpcHM6IFtdLCBuZXh0VG9rZW46IG51bGx9O1xyXG4gICAgZG8ge1xyXG4gICAgICBlcXVpcHNUb2tlbiA9IGF3YWl0IHRoaXMubWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxyXG4gICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgbGltaXQsXHJcbiAgICAgICAgZXF1aXBzVG9rZW5cclxuICAgICAgKTtcclxuICAgIH0gd2hpbGUgKGVxdWlwc1Rva2VuLm5leHRUb2tlbik7XHJcbiAgICByZXR1cm4gZXF1aXBzVG9rZW4uZXF1aXBzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbWVyZ2VFcXVpcG1lbnRzRm9yU3BhY2VXaXRoTmV4dFRva2VuV2l0aExpbWl0KFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgbGltaXQ6IG51bWJlcixcclxuICAgIGVxdWlwc1Rva2VuOiB7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9XHJcbiAgKTogUHJvbWlzZTx7IGVxdWlwczogRXF1aXBtZW50W107IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5FcXVpcG1lbnRzQnlTcGFjZShcclxuICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgIG51bGwsXHJcbiAgICAgICAgJ0RFU0MnLFxyXG4gICAgICAgIG51bGwsXHJcbiAgICAgICAgbGltaXQsXHJcbiAgICAgICAgZXF1aXBzVG9rZW4ubmV4dFRva2VuIC8vIG5leHRUb2tlblxyXG4gICAgICApXHJcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVxdWlwc0xpbWl0ID0gcmVzcG9uc2UuaXRlbXM7XHJcbiAgICAgICAgY29uc3QgZXF1aXBzT2JqZWN0ID0ge1xyXG4gICAgICAgICAgZXF1aXBzOiBbLi4uZXF1aXBzVG9rZW4uZXF1aXBzLCAuLi5lcXVpcHNMaW1pdF0sXHJcbiAgICAgICAgICBuZXh0VG9rZW46IHJlc3BvbnNlLm5leHRUb2tlbixcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBlcXVpcHNPYmplY3Q7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkSW1hZ2VGb3JBbGxFcXVpcG1lbnRzKFxyXG4gICAgZXF1aXBtZW50czogRXF1aXBtZW50W10sXHJcbiAgICBpbWFnZUZpbGU6IEZpbGVcclxuICApOiBQcm9taXNlPEVxdWlwbWVudFtdPiB7XHJcbiAgICBpZiAoZXF1aXBtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyh0aGlzLnByZWZpeC5pbWFnZSwgaW1hZ2VGaWxlLCAnQkFUQ0gnKS50aGVuKFxyXG4gICAgICBhc3luYyAodXJsKSA9PiB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgY29uc3QgZXF1aXBzID0gW107XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGVxdWlwIG9mIGVxdWlwbWVudHMpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudE1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKFxyXG4gICAgICAgICAgICAgIGVxdWlwLnNwYWNlSURcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xyXG4gICAgICAgICAgICAgIGF0dGFjaG1lbnQ6IHVybCxcclxuICAgICAgICAgICAgICB0eXBlOiBUeXBlTm90ZS5JTUFHRSxcclxuICAgICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXHJcbiAgICAgICAgICAgICAgb3duZXJNaXNzaW9uSUQ6IGN1cnJlbnRNaXNzaW9uID8gY3VycmVudE1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3QgdXBkYXRlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZUVxdWlwbWVudCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGVxdWlwLmlkLFxyXG4gICAgICAgICAgICAgIHBob3RvOiB1cmwsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBlcXVpcHMucHVzaCh1cGRhdGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGVxdWlwcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkSW1hZ2UoZXF1aXBtZW50OiBFcXVpcG1lbnQsIGltYWdlRmlsZTogRmlsZSk6IFByb21pc2U8Tm90ZT4ge1xyXG4gICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHRoaXMucHJlZml4LmltYWdlLCBpbWFnZUZpbGUsIGVxdWlwbWVudC5pZCkudGhlbihcclxuICAgICAgYXN5bmMgKHVybCkgPT4ge1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRNaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihcclxuICAgICAgICAgICAgZXF1aXBtZW50LnNwYWNlSURcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBub3RlID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZU5vdGUoe1xyXG4gICAgICAgICAgICBhdHRhY2htZW50OiB1cmwsXHJcbiAgICAgICAgICAgIHR5cGU6IFR5cGVOb3RlLklNQUdFLFxyXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogY3VycmVudE1pc3Npb24gPyBjdXJyZW50TWlzc2lvbi5pZCA6IG51bGwsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFcXVpcG1lbnQoe1xyXG4gICAgICAgICAgICBpZDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBwaG90bzogdXJsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbm90ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGVFcXVpcG1lbnQoXHJcbiAgICBlcXVpcDogYW55LFxyXG4gICAgZmlsZTogRmlsZSA9IG51bGwsXHJcbiAgICBub3RlVHlwZTogVHlwZU5vdGUgPSBudWxsXHJcbiAgKTogUHJvbWlzZTxFcXVpcG1lbnQ+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX19cclxuICAgICAgLlVwZGF0ZUVxdWlwbWVudChlcXVpcClcclxuICAgICAgLnRoZW4oYXN5bmMgKHJlY2VpdmVkRXF1aXBtZW50KSA9PiB7XHJcbiAgICAgICAgbGV0IGVxdWlwbWVudCA9IHJlY2VpdmVkRXF1aXBtZW50IGFzIEVxdWlwbWVudDtcclxuICAgICAgICBpZiAoZXF1aXBtZW50KSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXF1aXBtZW50IHVwZGF0ZWQ6JywgZXF1aXBtZW50KTtcclxuICAgICAgICAgIGlmIChub3RlVHlwZSkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG5vdGVUeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2UoZXF1aXBtZW50LCBmaWxlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZERvYyhlcXVpcG1lbnQsIGZpbGUsIG5vdGVUeXBlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcXVpcG1lbnQ7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJlZml4RG9jKHR5cGU6IFR5cGVOb3RlKSB7XHJcbiAgICBsZXQgcHJlZml4O1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgVHlwZU5vdGUuSU5GT1JNQVRJT046XHJcbiAgICAgICAgcHJlZml4ID0gdGhpcy5wcmVmaXguaW5mb3JtYXRpb247XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVHlwZU5vdGUuRklOQU5DSUFMOlxyXG4gICAgICAgIHByZWZpeCA9IHRoaXMucHJlZml4LmZpbmFuY2lhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5DT05UUkFDVFVBTDpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5jb250cmFjdHVhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5PVEhFUjpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5vdGhlcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUeXBlTm90ZS5JTUFHRTpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC5pbWFnZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBwcmVmaXggPSB0aGlzLnByZWZpeC50ZWNobmljYWw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJlZml4O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkRG9jRm9yQWxsRXF1aXBtZW50cyhcclxuICAgIGVxdWlwbWVudHM6IEVxdWlwbWVudFtdLFxyXG4gICAgZG9jdW1lbnRGaWxlOiBGaWxlLFxyXG4gICAgdHlwZTogVHlwZU5vdGVcclxuICApIHtcclxuICAgIGlmIChlcXVpcG1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcclxuICAgIGNvbnN0IHVybCA9IGF3YWl0IHVwbG9hZEZpbGVUb1MzKHByZWZpeCwgZG9jdW1lbnRGaWxlLCAnQkFUQ0gnKTtcclxuICAgIGlmICh1cmwpIHtcclxuICAgICAgY29uc3QgdXBkYXRlTGlzdCA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGVxdWlwIG9mIGVxdWlwbWVudHMpIHtcclxuICAgICAgICBjb25zdCBtaXNzaW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcC5zcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBuZXdFcXVpcCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcclxuICAgICAgICAgIGF0dGFjaG1lbnQ6IHVybCxcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXAuaWQsXHJcbiAgICAgICAgICBvd25lck1pc3Npb25JRDogbWlzc2lvbiA/IG1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHVwZGF0ZUxpc3QucHVzaChuZXdFcXVpcCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHVwZGF0ZUxpc3Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGxvYWREb2MoXHJcbiAgICBlcXVpcG1lbnQ6IEVxdWlwbWVudCxcclxuICAgIGRvY3VtZW50RmlsZTogRmlsZSxcclxuICAgIHR5cGU6IFR5cGVOb3RlXHJcbiAgKTogUHJvbWlzZTxOb3RlPiB7XHJcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFByZWZpeERvYyh0eXBlKTtcclxuICAgIGNvbnN0IG1pc3Npb24gPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKTtcclxuICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwcmVmaXgsIGRvY3VtZW50RmlsZSwgZXF1aXBtZW50LmlkKS50aGVuKFxyXG4gICAgICBhc3luYyAodXJsKSA9PiB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVOb3RlKHtcclxuICAgICAgICAgICAgYXR0YWNobWVudDogdXJsLFxyXG4gICAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgICBlcXVpcG1lbnRJRDogZXF1aXBtZW50LmlkLFxyXG4gICAgICAgICAgICBvd25lck1pc3Npb25JRDogbWlzc2lvbiA/IG1pc3Npb24uaWQgOiBudWxsLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlRXF1aXBtZW50KGVxdWlwOiBFcXVpcG1lbnQpOiBQcm9taXNlPEVxdWlwbWVudD4ge1xyXG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVFcXVpcG1lbnQoe2lkOiBlcXVpcC5pZH0pO1xyXG4gICAgY29uc29sZS5sb2coJ0RlbGV0ZWQgZXF1aXBtZW50JywgZGVsZXRlZCk7XHJcblxyXG4gICAgLy8gZGVsZXRlIFBPSVxyXG4gICAgY29uc3QgW3BvaV0gPSBlcXVpcC5wb2lzLml0ZW1zO1xyXG4gICAgaWYgKHBvaSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XHJcbiAgICB9XHJcbiAgICAvLyBkZWxldGUgbm90ZXMgcmVsYXRlZFxyXG4gICAgaWYgKGVxdWlwLm5vdGVzLml0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgZXF1aXAubm90ZXMuaXRlbXMubWFwKGFzeW5jIChub3RlOiBOb3RlKSA9PiB7XHJcbiAgICAgICAgICAvLyBkZWxldGUgZmlsZXMgZnJvbSBTM1xyXG4gICAgICAgICAgLyoqIE5vdCBzaGFyZWQgd2l0aCBvdGhlciBlcXVpcG1lbnQgKi9cclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgbm90ZS5hdHRhY2htZW50ICYmXHJcbiAgICAgICAgICAgICFub3RlLmF0dGFjaG1lbnQuc3BsaXQoJy8nKS5wb3AoKS5zdGFydHNXaXRoKCdCQVRDSF8nKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyhub3RlLmF0dGFjaG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU5vdGUoe2lkOiBub3RlLmlkfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIC8vIGRlbGV0ZSBvcGVyYXRpb25zIChyZW1vdmUgZnJvbSBsaW5rZWQgdGlja2V0cylcclxuICAgIGF3YWl0IHRoaXMub3BlcmF0aW9uU2VydmljZS5kZWxldGVPcGVyYXRpb25zRm9yRXF1aXBtZW50KGVxdWlwLmlkKTtcclxuICAgIHJldHVybiBkZWxldGVkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlRXF1aXBtZW50TG9jYXRpb24oXHJcbiAgICBlcXVpcDogRXF1aXBtZW50LFxyXG4gICAgdGFnRGF0YTogTWF0dGVydGFnRGF0YVxyXG4gICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgIHR5cGU6IFBvaVR5cGUuRVFVSVBNRU5ULFxyXG4gICAgICBlbGVtZW50SUQ6IGVxdWlwLmlkLFxyXG4gICAgICBtZXRhZGF0YTogdGFnRGF0YS5nZXRNZXRhZGF0YVN0cmluZygpLFxyXG4gICAgICBtYXR0ZXJwb3J0U3dlZXBJRDogdGFnRGF0YS5nZXRTd2VlcElEKCksXHJcbiAgICB9IGFzIFBPSTtcclxuICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgIHJldHVybiBwb2k7XHJcbiAgfVxyXG5cclxuICBhc3luYyByZW1vdmVUaWNrZXRGcm9tRXF1aXBtZW50KFxyXG4gICAgdGlja2V0OiBUaWNrZXQsXHJcbiAgICBlcXVpcDogRXF1aXBtZW50XHJcbiAgKTogUHJvbWlzZTxPcGVyYXRpb24+IHtcclxuICAgIGNvbnN0IG9wZXJhdGlvbkVxdWlwID1cclxuICAgICAgYXdhaXQgdGhpcy5vcGVyYXRpb25TZXJ2aWNlLmdldE9wZXJhdGlvbnNCeUVxdWlwbWVudElEKGVxdWlwLmlkKTtcclxuICAgIGNvbnN0IG9wZXJhdGlvblRvRGVsZXRlID0gb3BlcmF0aW9uRXF1aXAuZmluZChcclxuICAgICAgKG9wKSA9PiBvcC50aWNrZXRJRCA9PT0gdGlja2V0LmlkXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uU2VydmljZVxyXG4gICAgICAuZGVsZXRlT3BlcmF0aW9uKG9wZXJhdGlvblRvRGVsZXRlLmlkKVxyXG4gICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzU2VydmljZS5hZGRFdmVudFRvVGlja2V0KHRpY2tldCBhcyBUaWNrZXQsIHtcclxuICAgICAgICAgIHRpdGxlOiAnRXF1aXBlbWVudCByZXRpcsOpIGR1IHRpY2tldCcsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEVxdWlwZW1lbnQgJHtlcXVpcC5uYW1lfSBhIMOpdMOpIHJldGlyw6kgZHUgdGlja2V0YCxcclxuICAgICAgICAgIHN0YXR1czogRXZlbnRTdGF0dXMuVU5MSU5LRURfRlJPTV9FUVVJUE1FTlQsXHJcbiAgICAgICAgICB0eXBlOiBFdmVudFR5cGUuVElDS0VULFxyXG4gICAgICAgICAgdHJhbnNsYXRpb25QYXRoOiAndGlja2V0RXZlbnQudGlja2V0LnVubGlua2VkRnJvbUVxdWlwbWVudCcsXHJcbiAgICAgICAgICBtZXRhZGF0YTogSlNPTi5zdHJpbmdpZnkoe2VxdWlwbWVudDogZXF1aXAubmFtZX0pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaW5pdEVxdWlwcygpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmN1cnJlbnRseVVwZGF0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgZXFMaXN0ID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCk7XHJcbiAgICBlcUxpc3QgPSBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgZXFMaXN0XHJcbiAgICApO1xyXG4gICAgLy8gY29uc29sZS5sb2coZXFMaXN0KTtcclxuICAgIGlmIChlcUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsdGVyZWRFcXVpcHMgPSBlcUxpc3QuZmlsdGVyKFxyXG4gICAgICAgIChlcXVpcG1lbnQpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZXF1aXBtZW50KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgZmlsdGVyZWRFcXVpcHMubWFwKGFzeW5jIChlcXVpcCkgPT4ge1xyXG4gICAgICAgICAgZXF1aXAuZG9jdW1lbnRhdGlvbkltYWdlVXJsU2lnbmVkID1cclxuICAgICAgICAgICAgYXdhaXQgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQoZXF1aXApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlcikge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXHJcbiAgICAgICAgICBmaWx0ZXJlZEVxdWlwcyxcclxuICAgICAgICAgIHRoaXMuZXF1aXBtZW50RG9tYWluRmlsdGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlID0gZmlsdGVyZWRFcXVpcHM7XHJcbiAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgIGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lXHJcbiAgICAgICAgKSkgYXMgRXF1aXBtZW50W107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5zZXQodGhpcy56b25lSURGaWx0ZXIsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVGFncy5uZXh0KGZpbHRlcmVkRXF1aXBzKTsgLy8gYWRkaW5nIHRhZ3Mgb25seSBmb3IgdGhlIGN1cnJlbnQgem9uZVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgIHpvbmU6IGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5zZXQodGhpcy56b25lSURGaWx0ZXIsIFtdKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe3NwYWNlOiBbXSwgem9uZTogW119KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RXF1aXBtZW50cyk7XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5jdXJyZW50bHlVcGRhdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RXF1aXBtZW50c0ZvckN1cnJlbnRVc2VyRm9yU3BhY2UoXHJcbiAgICBzcGFjZUlELFxyXG4gICAgbWlzc2lvbnM6IE1pc3Npb25bXVxyXG4gICk6IFByb21pc2U8RXF1aXBtZW50W10+IHtcclxuICAgIGxldCByZXN1bHRzID0gW107XHJcblxyXG4gICAgY29uc3Qgc3BhY2VNaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobSkgPT4gbS5zcGFjZUlEID09PSBzcGFjZUlEKTtcclxuICAgIGlmIChzcGFjZU1pc3Npb25zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuICAgIGNvbnN0IGNhblNlZUVxdWlwcyA9IHNwYWNlTWlzc2lvbnMuc29tZShcclxuICAgICAgKG0pID0+XHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5tYW5hZ2Vycy5pbmNsdWRlcyhtLnJvbGUpIHx8XHJcbiAgICAgICAgbS5yb2xlID09PSBSb2xlU3RhdHVzLlNFUlZJQ0VcclxuICAgICk7XHJcbiAgICBpZiAoIWNhblNlZUVxdWlwcykge1xyXG4gICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgIH1cclxuICAgIGxldCBkb21haW5zID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG0gb2Ygc3BhY2VNaXNzaW9ucykge1xyXG4gICAgICBkb21haW5zID0gWy4uLmRvbWFpbnMsIG0uZG9tYWluc107XHJcbiAgICB9XHJcbiAgICBpZiAoZG9tYWlucy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcbiAgICByZXN1bHRzID0gYXdhaXQgdGhpcy5nZXRFcXVpcG1lbnRzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAvLyByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNCeURvbWFpbkxpc3QoXHJcbiAgICAvLyAgICAgcmVzdWx0cyxcclxuICAgIC8vICAgICBkb21haW5zLFxyXG4gICAgLy8gKTtcclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbEVxdWlwbWVudHNJblNwYWNlKFxyXG4gICAgdGFnSWNvbjogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgZG9tYWluSUQ6IHN0cmluZyA9IG51bGxcclxuICApOiBQcm9taXNlPHsgZXF1aXBzOiBFcXVpcG1lbnRbXTsgcG9pczogUE9JW10gfT4ge1xyXG4gICAgbGV0IGVxdWlwcyA9IGF3YWl0IHRoaXMuZ2V0RXF1aXBtZW50c0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgaWYgKGRvbWFpbklEKSB7XHJcbiAgICAgIGVxdWlwcyA9IGVxdWlwcy5maWx0ZXIoKGVxdWlwKSA9PiBlcXVpcC5kb21haW5JRCA9PT0gZG9tYWluSUQpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZXF1aXBzLCB0YWdJY29uKTtcclxuICAgIHJldHVybiB7ZXF1aXBzLCBwb2lzfTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIGVxdWlwbWVudCAqL1xyXG4gIGlzQXJjaGl2ZWQoZXF1aXBtZW50OiBFcXVpcG1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgPyBlcXVpcG1lbnQuYXJjaGl2ZWRGb3JNaXNzaW9uSUQuaW5jbHVkZXMoXHJcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihlcXVpcG1lbnQuc3BhY2VJRCkuaWRcclxuICAgICAgKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0QXJjaGl2ZWQoZXF1aXBtZW50OiBFcXVpcG1lbnQsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgID8gZXF1aXBtZW50LmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGVxdWlwbWVudC5zcGFjZUlEKS5pZDtcclxuXHJcbiAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZUVxdWlwbWVudCh7XHJcbiAgICAgIGlkOiBlcXVpcG1lbnQuaWQsXHJcbiAgICAgIGFyY2hpdmVkRm9yTWlzc2lvbklEOiBhcmNoaXZlZExpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZUZpbGUoZG9jdW1lbnRfOiBFcXVpcG1lbnREb2N1bWVudCkge1xyXG4gICAgYXdhaXQgZGVsZXRlRnJvbVMzKGRvY3VtZW50Xy51cmwpO1xyXG4gICAgYXdhaXQgdGhpcy5BUEkuRGVsZXRlTm90ZSh7aWQ6IGRvY3VtZW50Xy5ub3RlSUR9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5hdmlnYXRlVG9FcXVpcG1lbnRJbjNEKFxyXG4gICAgZXF1aXBtZW50OiBFcXVpcG1lbnQsXHJcbiAgICBmb3JjZVN3aXRjaFZpc2l0OiBib29sZWFuID0gZmFsc2VcclxuICApIHtcclxuICAgIGxldCB1cmwgPSBgdmlzaXQvJHtlcXVpcG1lbnQuc3BhY2VJRH1gO1xyXG4gICAgaWYgKGZvcmNlU3dpdGNoVmlzaXQpIHtcclxuICAgICAgdXJsICs9IGAvZXF1aXAvJHtlcXVpcG1lbnQuaWR9YDtcclxuICAgIH1cclxuICAgIGNvbnN0IGNhbkdvVG9UYWcgPSBhd2FpdCB0aGlzLnZpZXdlclNlcnZpY2UuYWN0aW9uX21vdmVfdG9fdGFnKFxyXG4gICAgICBgJHtlcXVpcG1lbnQuaWR9YFxyXG4gICAgKTtcclxuICAgIGlmIChjYW5Hb1RvVGFnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TW9kZWwzZEFuZFN3ZWVwKGVxdWlwbWVudCk7XHJcblxyXG4gICAgaWYgKCFyZXN1bHQgfHwgIXJlc3VsdC5tb2RlbDNEKSB7XHJcbiAgICAgIGFsZXJ0KCdFcnJvciB3aGlsZSBnZXR0aW5nIHZpcnR1YWwgdmlzaXQgbW9kZWwnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JjZVN3aXRjaFZpc2l0KSB7XHJcbiAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIDNEIG1vZGVsXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRNb2RlbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtb2RlbDNEJyk7XHJcbiAgICAgIGlmIChjdXJyZW50TW9kZWwgJiYgY3VycmVudE1vZGVsID09PSByZXN1bHQubW9kZWwzRCkge1xyXG4gICAgICAgIC8vIHdlIGFkZCB0YWcgdG8gdGhlIHZpc2l0XHJcbiAgICAgICAgY29uc3QgcG9pID0gZXF1aXBtZW50LnBvaXMuaXRlbXNbMF07XHJcbiAgICAgICAgaWYgKHBvaS5jb29yZGluYXRlKSB7XHJcbiAgICAgICAgICAvLyB3ZSBmb3JjZSBhZGQgYmVjYXVzZSB3ZSBtaWdodCBiZSBpbiBhbiBhbm90aGVyIHpvbmVcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25BZGRPYmplY3RGcm9tUE9JKGVxdWlwbWVudCwgcG9pKTtcclxuICAgICAgICAgIGF3YWl0IHRoaXMudmlld2VyU2VydmljZS5hY3Rpb25fbW92ZV90b190YWcoZXF1aXBtZW50LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLyoqIFNpIG9uIG5lIGZvcmNlIHBhcyBsYSB2aXNpdGUsIG9uIGRlbWFuZGUgc2kgb24gdmV1dCBldHJlIHN3aXRjaCAqL1xyXG4gICAgICAgIG9wZW5Nb2RhbEZvclZpc2l0U3dpdGNoKFxyXG4gICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UsXHJcbiAgICAgICAgICByZXN1bHQubW9kZWwzRCxcclxuICAgICAgICAgIGVxdWlwbWVudC5zcGFjZUlELFxyXG4gICAgICAgICAge3N3ZWVwVG9Nb3ZlOiByZXN1bHQuc3dlZXAsIHJvdGF0aW9uOiByZXN1bHQucm90YXRpb259XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLyoqIFNpIG9uIGZvcmNlIGxlIHN3aXRjaCBkZSBsYSB2aXNpdCAqL1xyXG4gICAgICB3aW5kb3cub3BlbihgJHt1cmx9P21vZGVsM0Q9JHtyZXN1bHQubW9kZWwzRH0mc3dlZXA9dHJ1ZWAsICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZUVxdWlwc0ZvclpvbmUoKSB7XHJcbiAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XHJcbiAgICBsZXQgZmlsdGVyZWRFcXVpcHMgPSBbXTtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuem9uZUlERmlsdGVyICYmXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5oYXModGhpcy56b25lSURGaWx0ZXIpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZpbHRlcmVkRXF1aXBzID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiaSBoYXZlIGVxdWlwcyBmb3IgdGhpcyB6b25lXCIsIGZpbHRlcmVkRXF1aXBzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IChhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRab25lXHJcbiAgICAgICAgKSkgYXMgRXF1aXBtZW50W107XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAuc2V0KHRoaXMuem9uZUlERmlsdGVyLCBbXHJcbiAgICAgICAgICAuLi5maWx0ZXJlZEVxdWlwcyxcclxuICAgICAgICBdKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5lcXVpcG1lbnREb21haW5GaWx0ZXIpIHtcclxuICAgICAgICBmaWx0ZXJlZEVxdWlwcyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJFcXVpcG1lbnRzQnlEb21haW5MaXN0KFxyXG4gICAgICAgICAgZmlsdGVyZWRFcXVpcHMsXHJcbiAgICAgICAgICB0aGlzLmVxdWlwbWVudERvbWFpbkZpbHRlclxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVGFncy5uZXh0KGZpbHRlcmVkRXF1aXBzKTsgLy8gYWRkaW5nIHRhZ3Mgb25seSBmb3IgdGhlIGN1cnJlbnQgem9uZVxyXG4gICAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICAgIHpvbmU6IGZpbHRlcmVkRXF1aXBzLFxyXG4gICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcXVpcG1lbnRzVXBkYXRlZC5uZXh0KHtzcGFjZTogW10sIHpvbmU6IFtdfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEdWVUb0RlbGV0ZShkZWxldGVkRXF1aXBtZW50OiBFcXVpcG1lbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidXBkYXRlIGR1ZSB0byBkZWxldGVcIiwgZGVsZXRlZEVxdWlwbWVudCk7XHJcbiAgICBjb25zdCBlcXVpcCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuZmluZChcclxuICAgICAgKF9lcXVpcCkgPT4gX2VxdWlwLmlkID09PSBkZWxldGVkRXF1aXBtZW50LmlkXHJcbiAgICApO1xyXG4gICAgaWYgKGVxdWlwKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5pbmRleE9mKGVxdWlwKTtcclxuICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XHJcbiAgICAgIGNvbnN0IGVxdWlwVG9EZWxldGUgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgLmdldCh6b25lKVxyXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gZGVsZXRlZEVxdWlwbWVudC5pZCk7XHJcbiAgICAgIGlmIChlcXVpcFRvRGVsZXRlKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgICAuZ2V0KHpvbmUpXHJcbiAgICAgICAgICAuaW5kZXhPZihlcXVpcFRvRGVsZXRlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmVxdWlwbWVudHNVcGRhdGVkLm5leHQoe1xyXG4gICAgICBzcGFjZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZSxcclxuICAgICAgem9uZTogdGhpcy5jdXJyZW50RXF1aXBtZW50cy56b25lc01hcC5nZXQodGhpcy56b25lSURGaWx0ZXIpLFxyXG4gICAgfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICB9XHJcblxyXG4gIHVwZGF0ZUR1ZVRvQ3JlYXRlKGNyZWF0ZWRFcXVpcDogRXF1aXBtZW50KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcclxuICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcclxuICAgICAgLmdldCh0aGlzLnpvbmVJREZpbHRlcilcclxuICAgICAgLnVuc2hpZnQoY3JlYXRlZEVxdWlwKTtcclxuICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XHJcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXHJcbiAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRHVlVG9FcXVpcFVwZGF0ZWQodXBkYXRlZEVxdWlwOiBFcXVpcG1lbnQpIHtcclxuICAgIGNvbnN0IGVxdWlwID0gdGhpcy5jdXJyZW50RXF1aXBtZW50cy5zcGFjZS5maW5kKFxyXG4gICAgICAoX2VxdWlwKSA9PiBfZXF1aXAuaWQgPT09IHVwZGF0ZWRFcXVpcC5pZFxyXG4gICAgKTtcclxuICAgIGlmIChlcXVpcCkge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2UuaW5kZXhPZihlcXVpcCk7XHJcbiAgICAgIGlmICh0aGlzLmlzQXJjaGl2ZWQoZXF1aXApKSB7XHJcbiAgICAgICAgLy8gd2UgcmVtb3ZlIGFyY2hpdmVkIGVxdWlwbWVudFxyXG4gICAgICAgIHRoaXMuY3VycmVudEVxdWlwbWVudHMuc3BhY2Uuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCB6b25lIG9mIHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXAua2V5cygpKSB7XHJcbiAgICAgIGNvbnN0IGVxdWlwVG9VcGQgPSB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgLmdldCh6b25lKVxyXG4gICAgICAgIC5maW5kKChfZXF1aXApID0+IF9lcXVpcC5pZCA9PT0gdXBkYXRlZEVxdWlwLmlkKTtcclxuICAgICAgaWYgKGVxdWlwVG9VcGQpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEVxdWlwbWVudHMuem9uZXNNYXBcclxuICAgICAgICAgIC5nZXQoem9uZSlcclxuICAgICAgICAgIC5pbmRleE9mKGVxdWlwVG9VcGQpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXJjaGl2ZWQoZXF1aXApKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh6b25lKS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwXHJcbiAgICAgICAgICAgIC5nZXQoem9uZSlcclxuICAgICAgICAgICAgLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZEVxdWlwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7XHJcbiAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnNwYWNlLFxyXG4gICAgICB6b25lOiB0aGlzLmN1cnJlbnRFcXVpcG1lbnRzLnpvbmVzTWFwLmdldCh0aGlzLnpvbmVJREZpbHRlciksXHJcbiAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gIH1cclxuXHJcbiAgaW5pdFN1YnNjcmlwdGlvbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNdXNldW1Vc2VyKSB7XHJcbiAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXpvbmUgfHwgIXRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgICAgICB0aGlzLmVxdWlwbWVudHNUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50c1VwZGF0ZWQubmV4dCh7c3BhY2U6IFtdLCB6b25lOiBudWxsfSk7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RXF1aXBtZW50cyA9IHtcclxuICAgICAgICAgICAgICBzcGFjZTogW10sXHJcbiAgICAgICAgICAgICAgem9uZXNNYXA6IG5ldyBNYXAoKSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IHpvbmU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEID09PSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAvLyBzYW1lIHNwYWNlLCAgb25seSB6b25lIHVwZGF0ZVxyXG4gICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFxyXG4gICAgICAgICAgICAgIC8vICAgICBcImdvaW5nIHRvIHVwZGF0ZSBlcXVpcHMgZm9yIHpvbmUgKHNhbWUgc3BhY2UpXCIsXHJcbiAgICAgICAgICAgICAgLy8gICAgIHpvbmUsXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuXHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVFcXVpcHNGb3Jab25lKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcclxuICAgICAgICAgICAgICAvLyAgICAgXCJnb2luZyB0byBpbml0IGVxdWlwcyBmb3Igem9uZSBmb3IgbmV3IHNwYWNlXCIsXHJcbiAgICAgICAgICAgICAgLy8gICAgIHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgICAgICAgLy8gKTtcclxuICAgICAgICAgICAgICB0aGlzLmluaXRFcXVpcHMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5kZWxldGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0RlbGV0ZShlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jcmVhdGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0NyZWF0ZShlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVPYnNlcnZhYmxlXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0VxdWlwVXBkYXRlZChlcXVpcG1lbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { dateTimeToLocalString } from "../../helpers.service";
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "../user.service";
|
|
6
6
|
import * as i2 from "@ngx-translate/core";
|
|
7
|
-
class EventService {
|
|
7
|
+
export class EventService {
|
|
8
8
|
userService;
|
|
9
9
|
translate;
|
|
10
10
|
translationEventSubcriptions = {};
|
|
@@ -116,17 +116,16 @@ class EventService {
|
|
|
116
116
|
meta.type = this.translate.instant(meta.type);
|
|
117
117
|
return meta;
|
|
118
118
|
}
|
|
119
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
120
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventService, deps: [{ token: 'currentAPIService' }, { token: i1.BaseUserService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
120
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventService, providedIn: "root" });
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventService, decorators: [{
|
|
122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EventService, decorators: [{
|
|
124
123
|
type: Injectable,
|
|
125
124
|
args: [{
|
|
126
125
|
providedIn: "root",
|
|
127
126
|
}]
|
|
128
|
-
}], ctorParameters:
|
|
127
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
129
128
|
type: Inject,
|
|
130
129
|
args: ['currentAPIService']
|
|
131
|
-
}] }, { type: i1.BaseUserService }, { type: i2.TranslateService }]
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBTTlELE1BR2EsWUFBWTtJQVFUO0lBQ0E7SUFQWiw0QkFBNEIsR0FBRyxFQUFFLENBQUM7SUFFbEMsR0FBRyxDQUFNO0lBRVQsWUFDaUMsV0FBZ0IsRUFDckMsV0FBNEIsRUFDNUIsU0FBMkI7UUFEM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ25DLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7U0FFSztJQUNMLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQWU7UUFDN0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBQyxFQUFFLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxP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LEVBQ3JCLElBQUksQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFFTixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO3dHQS9JUSxZQUFZLGtCQU9ULG1CQUFtQjs0R0FQdEIsWUFBWSxjQUZULE1BQU07O1NBRVQsWUFBWTs0RkFBWixZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUVEsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZGF0ZVRpbWVUb0xvY2FsU3RyaW5nIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQcm9maWxlRW50aXR5IH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3VzZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gICAgXHJcbiAgICB0cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zID0ge307XHJcblxyXG4gICAgQVBJOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LCBcclxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UgKSB7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENSVUQgXHJcbiAgICAgKiAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRXZlbnQoaW5wdXQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlRXZlbnQoaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUV2ZW50KGlucHV0OiBhbnkpOiBQcm9taXNlPEV2ZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVFdmVudChpbnB1dCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlRXZlbnQoZXZlbnRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRXZlbnQoe2lkOiBldmVudElEfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RXZlbnQoZXZlbnRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudD57XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRFdmVudChldmVudElEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogXHJcbiAgICAgKiBDdXN0b20gZ2V0IGJ5IEdTSSBcclxuICAgICAqICovXHJcbiAgICBhc3luYyBnZXRFdmVudHNCeVRpY2tldElEKHRpY2tldElEOiBzdHJpbmcpOiBQcm9taXNlPEV2ZW50W10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkV2ZW50c0J5VGlja2V0KHRpY2tldElEKS50aGVuKChldmVudHMpPT4gZXZlbnRzLml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFdmVudHNCeVRpY2tldElEU29ydGVkQnlEYXRlRGVzYyh0aWNrZXRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5FdmVudHNCeVRpY2tldEJ5RGF0ZShcclxuICAgICAgICAgICAgdGlja2V0SUQsXHJcbiAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgIFwiREVTQ1wiLFxyXG4gICAgICAgICkudGhlbigoZXZlbnRzKSA9PiBldmVudHMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEV2ZW50c0J5R3JvdXAoZ3JvdXA6IHN0cmluZyk6IFByb21pc2U8RXZlbnRbXT4ge1xyXG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkV2ZW50c0J5R3JvdXAoZ3JvdXApKS5pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFxyXG4gICAgICogU09SVElOR1xyXG4gICAgICovXHJcblxyXG4gICAgc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZURlc2MoZXZlbnRzOiBFdmVudFtdKTogRXZlbnRbXSB7XHJcbiAgICAgICAgZXZlbnRzLnNvcnQoKGV2ZW50MSwgZXZlbnQyKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGV2ZW50Mi5jcmVhdGVkQXQpIC0gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50cztcclxuICAgIH1cclxuXHJcbiAgICBzb3J0RXZlbnRzQnlDcmVhdGVkQXREYXRlQXNjKGV2ZW50czogRXZlbnRbXSk6IEV2ZW50W10ge1xyXG4gICAgICAgIGV2ZW50cy5zb3J0KChldmVudDEsIGV2ZW50MikgPT4ge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShldmVudDEuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGV2ZW50Mi5jcmVhdGVkQXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBldmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgVFJBTlNMQVRJT05TIFxyXG4gICAgICogKi9cclxuICAgIC8qKiBBcHBseSBhIHRyYW5zbGF0aW9uIHRvIGEgdGlja2V0IGV2ZW50LCB3aXRoIHRoZSBjdXJyZW50IGxhbmd1YWdlICovXHJcbiAgICBhc3luYyBhcHBseVRpY2tldEV2ZW50VHJhbnNsYXRlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IG1ldGEgPSBhd2FpdCB0aGlzLmdldFRyYW5zbGF0ZWRNZXRhRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBldmVudC50cmFuc2xhdGlvblBhdGg7XHJcbiAgICAgICAgaWYgKHBhdGgpIHtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGVQYXRoID0gYCR7cGF0aH0udGl0bGVgO1xyXG4gICAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvblBhdGggPSBgJHtwYXRofS5kZXNjcmlwdGlvbmA7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAgICAgICAgIFt0aXRsZVBhdGgsIGRlc2NyaXB0aW9uUGF0aF0sXHJcbiAgICAgICAgICAgICAgICBtZXRhLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBldmVudC50aXRsZSA9IHZhbHVlW3RpdGxlUGF0aF07XHJcbiAgICAgICAgICAgIGV2ZW50LmRlc2NyaXB0aW9uID0gdmFsdWVbZGVzY3JpcHRpb25QYXRoXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFVuc3Vic2NyaWJlIGEgdGlja2V0IGV2ZW50IGZvciBoaXMgdHJhbnNsYXRpb24gKi9cclxuICAgIHRpY2tldEV2ZW50U3Vic2NyaWJlVHJhbnNsYXRpb24oZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmlkIGluIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLnRpY2tldEV2ZW50VW5zdWJzY3JpYmVUcmFuc2xhdGlvbihldmVudC5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9uc1tldmVudC5pZF0gPVxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlUaWNrZXRFdmVudFRyYW5zbGF0ZShldmVudCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwbHlUaWNrZXRFdmVudFRyYW5zbGF0ZShldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFVuc3Vic2NyaWJlIGEgdGlja2V0IGV2ZW50IGZvciBoaXMgdHJhbnNsYXRpb24gKi9cclxuICAgIHRpY2tldEV2ZW50VW5zdWJzY3JpYmVUcmFuc2xhdGlvbihpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGlkIGluIHRoaXMudHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnNbaWRdLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnNbaWRdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VuZXJhdGUgdGhlIHRyYW5zbGF0ZWQgbWV0YWRhdGEgb2YgYW4gZXZlbnQsIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsYW5ndWFnZSAqL1xyXG4gICAgYXN5bmMgZ2V0VHJhbnNsYXRlZE1ldGFFdmVudChldmVudDogRXZlbnQpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCBtZXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgICAgY29uc3Qgb3duZXI6IFByb2ZpbGVFbnRpdHkgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJGcm9tVXNlcklEKFxyXG4gICAgICAgICAgICBldmVudC5vd25lci51c2VySUQsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFkYXRhKSBtZXRhID0gSlNPTi5wYXJzZShldmVudC5tZXRhZGF0YSk7XHJcbiAgICAgICAgfSBjYXRjaCB7fVxyXG4gICAgICAgIG1ldGEuZmlyc3ROYW1lID0gb3duZXIuZmlyc3ROYW1lO1xyXG4gICAgICAgIG1ldGEubGFzdE5hbWUgPSBvd25lci5sYXN0TmFtZTtcclxuXHJcbiAgICAgICAgaWYgKGV2ZW50LmVzdGltYXRlU3RhcnREYXRlKSB7XHJcbiAgICAgICAgICAgIG1ldGEuZnJvbURhdGUgPSBkYXRlVGltZVRvTG9jYWxTdHJpbmcoXHJcbiAgICAgICAgICAgICAgICBldmVudC5lc3RpbWF0ZVN0YXJ0RGF0ZSxcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQuZXN0aW1hdGVFbmREYXRlKVxyXG4gICAgICAgICAgICBtZXRhLnRvRGF0ZSA9IGRhdGVUaW1lVG9Mb2NhbFN0cmluZyhcclxuICAgICAgICAgICAgICAgIGV2ZW50LmVzdGltYXRlRW5kRGF0ZSxcclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLFxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAobWV0YS5vbGRTdGF0dXMpXHJcbiAgICAgICAgICAgIG1ldGEub2xkU3RhdHVzID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChtZXRhLm9sZFN0YXR1cyk7XHJcbiAgICAgICAgaWYgKG1ldGEubmV3U3RhdHVzKVxyXG4gICAgICAgICAgICBtZXRhLm5ld1N0YXR1cyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWV0YS5uZXdTdGF0dXMpO1xyXG4gICAgICAgIGlmIChtZXRhLnR5cGUpIG1ldGEudHlwZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWV0YS50eXBlKTtcclxuICAgICAgICByZXR1cm4gbWV0YTtcclxuICAgIH1cclxuICAgXHJcbn1cclxuIl19
|
|
130
|
+
}] }, { type: i1.BaseUserService }, { type: i2.TranslateService }] });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvbW9kZWxzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBUzlELE1BQU0sT0FBTyxZQUFZO0lBUVQ7SUFDQTtJQVBaLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztJQUVsQyxHQUFHLENBQU07SUFFVCxZQUNpQyxXQUFnQixFQUNyQyxXQUE0QixFQUM1QixTQUEyQjtRQUQzQixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVEOztTQUVLO0lBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZTtRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxD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SyxDQUFDLGVBQWU7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FDL0IsS0FBSyxDQUFDLGVBQWUsRUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztRQUVOLElBQUksSUFBSSxDQUFDLFNBQVM7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7d0dBL0lRLFlBQVksa0JBT1QsbUJBQW1COzRHQVB0QixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVFRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGRhdGVUaW1lVG9Mb2NhbFN0cmluZyB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUHJvZmlsZUVudGl0eSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vdHlwZXMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIHtcclxuICAgIFxyXG4gICAgdHJhbnNsYXRpb25FdmVudFN1YmNyaXB0aW9ucyA9IHt9O1xyXG5cclxuICAgIEFQSTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSwgXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDUlVEIFxyXG4gICAgICogKi9cclxuICAgIGFzeW5jIGNyZWF0ZUV2ZW50KGlucHV0OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUV2ZW50KGlucHV0KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVFdmVudChpbnB1dDogYW55KTogUHJvbWlzZTxFdmVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlRXZlbnQoaW5wdXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUV2ZW50KGV2ZW50SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUV2ZW50KHtpZDogZXZlbnRJRH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEV2ZW50KGV2ZW50SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnQ+e1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0RXZlbnQoZXZlbnRJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFxyXG4gICAgICogQ3VzdG9tIGdldCBieSBHU0kgXHJcbiAgICAgKiAqL1xyXG4gICAgYXN5bmMgZ2V0RXZlbnRzQnlUaWNrZXRJRCh0aWNrZXRJRDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFtdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5FdmVudHNCeVRpY2tldCh0aWNrZXRJRCkudGhlbigoZXZlbnRzKT0+IGV2ZW50cy5pdGVtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RXZlbnRzQnlUaWNrZXRJRFNvcnRlZEJ5RGF0ZURlc2ModGlja2V0SUQ6IHN0cmluZyk6IFByb21pc2U8RXZlbnRbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRXZlbnRzQnlUaWNrZXRCeURhdGUoXHJcbiAgICAgICAgICAgIHRpY2tldElELFxyXG4gICAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgICBcIkRFU0NcIixcclxuICAgICAgICApLnRoZW4oKGV2ZW50cykgPT4gZXZlbnRzLml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRFdmVudHNCeUdyb3VwKGdyb3VwOiBzdHJpbmcpOiBQcm9taXNlPEV2ZW50W10+IHtcclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5FdmVudHNCeUdyb3VwKGdyb3VwKSkuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBcclxuICAgICAqIFNPUlRJTkdcclxuICAgICAqL1xyXG5cclxuICAgIHNvcnRFdmVudHNCeUNyZWF0ZWRBdERhdGVEZXNjKGV2ZW50czogRXZlbnRbXSk6IEV2ZW50W10ge1xyXG4gICAgICAgIGV2ZW50cy5zb3J0KChldmVudDEsIGV2ZW50MikgPT4ge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KSAtIG5ldyBEYXRlKGV2ZW50MS5jcmVhdGVkQXQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBldmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgc29ydEV2ZW50c0J5Q3JlYXRlZEF0RGF0ZUFzYyhldmVudHM6IEV2ZW50W10pOiBFdmVudFtdIHtcclxuICAgICAgICBldmVudHMuc29ydCgoZXZlbnQxLCBldmVudDIpID0+IHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXZlbnQxLmNyZWF0ZWRBdCkgLSBuZXcgRGF0ZShldmVudDIuY3JlYXRlZEF0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZXZlbnRzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRSQU5TTEFUSU9OUyBcclxuICAgICAqICovXHJcbiAgICAvKiogQXBwbHkgYSB0cmFuc2xhdGlvbiB0byBhIHRpY2tldCBldmVudCwgd2l0aCB0aGUgY3VycmVudCBsYW5ndWFnZSAqL1xyXG4gICAgYXN5bmMgYXBwbHlUaWNrZXRFdmVudFRyYW5zbGF0ZShldmVudDogRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBtZXRhID0gYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGVkTWV0YUV2ZW50KGV2ZW50KTtcclxuICAgICAgICBjb25zdCBwYXRoID0gZXZlbnQudHJhbnNsYXRpb25QYXRoO1xyXG4gICAgICAgIGlmIChwYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlUGF0aCA9IGAke3BhdGh9LnRpdGxlYDtcclxuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb25QYXRoID0gYCR7cGF0aH0uZGVzY3JpcHRpb25gO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVQYXRoLCBkZXNjcmlwdGlvblBhdGhdLFxyXG4gICAgICAgICAgICAgICAgbWV0YSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZXZlbnQudGl0bGUgPSB2YWx1ZVt0aXRsZVBhdGhdO1xyXG4gICAgICAgICAgICBldmVudC5kZXNjcmlwdGlvbiA9IHZhbHVlW2Rlc2NyaXB0aW9uUGF0aF07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXHJcbiAgICB0aWNrZXRFdmVudFN1YnNjcmliZVRyYW5zbGF0aW9uKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5pZCBpbiB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy50aWNrZXRFdmVudFVuc3Vic2NyaWJlVHJhbnNsYXRpb24oZXZlbnQuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnNbZXZlbnQuaWRdID1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5VGlja2V0RXZlbnRUcmFuc2xhdGUoZXZlbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcGx5VGlja2V0RXZlbnRUcmFuc2xhdGUoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBVbnN1YnNjcmliZSBhIHRpY2tldCBldmVudCBmb3IgaGlzIHRyYW5zbGF0aW9uICovXHJcbiAgICB0aWNrZXRFdmVudFVuc3Vic2NyaWJlVHJhbnNsYXRpb24oaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChpZCBpbiB0aGlzLnRyYW5zbGF0aW9uRXZlbnRTdWJjcmlwdGlvbnMpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zW2lkXS51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy50cmFuc2xhdGlvbkV2ZW50U3ViY3JpcHRpb25zW2lkXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdlbmVyYXRlIHRoZSB0cmFuc2xhdGVkIG1ldGFkYXRhIG9mIGFuIGV2ZW50LCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgKi9cclxuICAgIGFzeW5jIGdldFRyYW5zbGF0ZWRNZXRhRXZlbnQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBsZXQgbWV0YTogYW55ID0ge307XHJcblxyXG4gICAgICAgIGNvbnN0IG93bmVyOiBQcm9maWxlRW50aXR5ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS51c2VyRnJvbVVzZXJJRChcclxuICAgICAgICAgICAgZXZlbnQub3duZXIudXNlcklELFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5tZXRhZGF0YSkgbWV0YSA9IEpTT04ucGFyc2UoZXZlbnQubWV0YWRhdGEpO1xyXG4gICAgICAgIH0gY2F0Y2gge31cclxuICAgICAgICBtZXRhLmZpcnN0TmFtZSA9IG93bmVyLmZpcnN0TmFtZTtcclxuICAgICAgICBtZXRhLmxhc3ROYW1lID0gb3duZXIubGFzdE5hbWU7XHJcblxyXG4gICAgICAgIGlmIChldmVudC5lc3RpbWF0ZVN0YXJ0RGF0ZSkge1xyXG4gICAgICAgICAgICBtZXRhLmZyb21EYXRlID0gZGF0ZVRpbWVUb0xvY2FsU3RyaW5nKFxyXG4gICAgICAgICAgICAgICAgZXZlbnQuZXN0aW1hdGVTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50LmVzdGltYXRlRW5kRGF0ZSlcclxuICAgICAgICAgICAgbWV0YS50b0RhdGUgPSBkYXRlVGltZVRvTG9jYWxTdHJpbmcoXHJcbiAgICAgICAgICAgICAgICBldmVudC5lc3RpbWF0ZUVuZERhdGUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSxcclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKG1ldGEub2xkU3RhdHVzKVxyXG4gICAgICAgICAgICBtZXRhLm9sZFN0YXR1cyA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQobWV0YS5vbGRTdGF0dXMpO1xyXG4gICAgICAgIGlmIChtZXRhLm5ld1N0YXR1cylcclxuICAgICAgICAgICAgbWV0YS5uZXdTdGF0dXMgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KG1ldGEubmV3U3RhdHVzKTtcclxuICAgICAgICBpZiAobWV0YS50eXBlKSBtZXRhLnR5cGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KG1ldGEudHlwZSk7XHJcbiAgICAgICAgcmV0dXJuIG1ldGE7XHJcbiAgICB9XHJcbiAgIFxyXG59XHJcbiJdfQ==
|