@vendasta/meetings 0.76.1 → 0.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2020/lib/_internal/conversation-analysis.api.service.mjs +12 -2
  2. package/esm2020/lib/_internal/enums/conversation-analysis.enum.mjs +2 -1
  3. package/esm2020/lib/_internal/enums/index.mjs +1 -1
  4. package/esm2020/lib/_internal/google-meet.api.service.mjs +8 -7
  5. package/esm2020/lib/_internal/interfaces/conversation-analysis.interface.mjs +1 -7
  6. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  7. package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
  8. package/esm2020/lib/_internal/meeting-guest.api.service.mjs +8 -7
  9. package/esm2020/lib/_internal/meeting-host.api.service.mjs +18 -8
  10. package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +8 -7
  11. package/esm2020/lib/_internal/objects/conversation-analysis.mjs +191 -1
  12. package/esm2020/lib/_internal/objects/index.mjs +3 -3
  13. package/esm2020/lib/_internal/objects/meeting-host.mjs +119 -21
  14. package/esm2020/lib/conversation_analysis/conversation-analysis.service.mjs +16 -1
  15. package/esm2020/lib/host/host.service.mjs +7 -1
  16. package/esm2020/lib/index.mjs +2 -2
  17. package/fesm2015/vendasta-meetings.mjs +374 -42
  18. package/fesm2015/vendasta-meetings.mjs.map +1 -1
  19. package/fesm2020/vendasta-meetings.mjs +371 -42
  20. package/fesm2020/vendasta-meetings.mjs.map +1 -1
  21. package/lib/_internal/conversation-analysis.api.service.d.ts +4 -2
  22. package/lib/_internal/enums/conversation-analysis.enum.d.ts +2 -1
  23. package/lib/_internal/google-meet.api.service.d.ts +5 -2
  24. package/lib/_internal/interfaces/conversation-analysis.interface.d.ts +34 -0
  25. package/lib/_internal/interfaces/index.d.ts +2 -3
  26. package/lib/_internal/interfaces/meeting-host.interface.d.ts +26 -7
  27. package/lib/_internal/meeting-guest.api.service.d.ts +5 -3
  28. package/lib/_internal/meeting-host.api.service.d.ts +9 -5
  29. package/lib/_internal/meeting-source-api.api.service.d.ts +5 -2
  30. package/lib/_internal/objects/conversation-analysis.d.ts +52 -0
  31. package/lib/_internal/objects/index.d.ts +2 -2
  32. package/lib/_internal/objects/meeting-host.d.ts +47 -16
  33. package/lib/conversation_analysis/conversation-analysis.service.d.ts +4 -1
  34. package/lib/host/host.service.d.ts +4 -1
  35. package/lib/index.d.ts +2 -2
  36. package/package.json +1 -1
  37. package/esm2020/lib/_internal/interfaces/dayofweek.interface.mjs +0 -8
  38. package/lib/_internal/interfaces/dayofweek.interface.d.ts +0 -1
@@ -5,16 +5,17 @@
5
5
  // API Service.
6
6
  // *********************************
7
7
  import { Injectable } from '@angular/core';
8
- import { BuildHostIdRequest, BuildHostIdResponse, CancelMeetingRequest, CreateAvailabilityRequest, CreateAvailabilityResponse, CreateCalendarRequest, CreateCalendarResponse, CreateDefaultMeetingTypesRequest, CreateMeetingTypeRequest, CreateMeetingTypeResponse, DeleteAvailabilityRequest, DeleteMeetingTypeRequest, DoesCalendarExistRequest, DoesCalendarExistResponse, EnsureGroupCalendarsExistRequest, EnsureGroupCalendarsExistResponse, EnsurePersonalCalendarExistsRequest, EnsurePersonalCalendarExistsResponse, GetHostMeetingRequest, GetHostMeetingResponse, GetHostPreferencesRequest, GetHostPreferencesResponse, GetHostsForCalendarRequest, GetHostsForCalendarResponse, GetMeetingTypesForCalendarsRequest, GetMeetingTypesForCalendarsResponse, HostBookMeetingRequest, HostBookMeetingResponse, HostGetCalendarRequest, HostGetCalendarResponse, HostGetMeetingTypeRequest, HostGetMeetingTypeResponse, HostListMeetingTypesRequest, HostListMeetingTypesResponse, IsHostConfiguredRequest, IsHostConfiguredResponse, ListAvailabilityRequest, ListAvailabilityResponse, ListBookedMeetingsRequest, ListBookedMeetingsResponse, RescheduleMeetingRequest, SetGeneralAvailabilityRequest, UpdateAvailabilityRequest, UpdateCalendarRequest, UpdateHostPreferencesRequest, UpdateMeetingMetadataRequest, UpdateMeetingTypeRequest, } from './objects/';
8
+ import { BuildHostIdRequest, BuildHostIdResponse, CancelMeetingRequest, CreateAvailabilityRequest, CreateAvailabilityResponse, CreateCalendarRequest, CreateCalendarResponse, CreateDefaultMeetingTypesRequest, CreateMeetingTypeRequest, CreateMeetingTypeResponse, DeleteAvailabilityRequest, DeleteMeetingTypeRequest, DoesCalendarExistRequest, DoesCalendarExistResponse, EnsureGroupCalendarsExistRequest, EnsureGroupCalendarsExistResponse, EnsurePersonalCalendarExistsRequest, EnsurePersonalCalendarExistsResponse, GetHostMeetingRequest, GetHostMeetingResponse, GetHostPreferencesRequest, GetHostPreferencesResponse, GetHostsForCalendarRequest, GetHostsForCalendarResponse, GetMeetingTypesForCalendarsRequest, GetMeetingTypesForCalendarsResponse, HostBookMeetingRequest, HostBookMeetingResponse, HostGetCalendarRequest, HostGetCalendarResponse, HostGetMeetingTypeRequest, HostGetMeetingTypeResponse, HostListMeetingTypesRequest, HostListMeetingTypesResponse, IsCalendarConfiguredRequest, IsCalendarConfiguredResponse, IsHostConfiguredRequest, IsHostConfiguredResponse, ListAvailabilityRequest, ListAvailabilityResponse, ListBookedMeetingsRequest, ListBookedMeetingsResponse, RescheduleMeetingRequest, SendMeetingRequestEmailRequest, SetGeneralAvailabilityRequest, UpdateAvailabilityRequest, UpdateCalendarRequest, UpdateHostPreferencesRequest, UpdateMeetingMetadataRequest, UpdateMeetingTypeRequest, } from './objects/';
9
9
  import { HttpHeaders, HttpClient } from '@angular/common/http';
10
- import { inject } from '@angular/core';
11
10
  import { HostService } from '../_generated/host.service';
12
11
  import { map } from 'rxjs/operators';
13
12
  import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common/http";
14
+ import * as i2 from "../_generated/host.service";
14
15
  export class MeetingHostApiService {
15
- constructor() {
16
- this.hostService = inject(HostService);
17
- this.http = inject(HttpClient);
16
+ constructor(http, hostService) {
17
+ this.http = http;
18
+ this.hostService = hostService;
18
19
  this._host = this.hostService.hostWithScheme;
19
20
  }
20
21
  apiOptions() {
@@ -159,11 +160,20 @@ export class MeetingHostApiService {
159
160
  const request = (r.toApiJson) ? r : new CreateDefaultMeetingTypesRequest(r);
160
161
  return this.http.post(this._host + "/meetings.v1.MeetingHost/CreateDefaultMeetingTypes", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
161
162
  }
163
+ sendMeetingRequestEmail(r) {
164
+ const request = (r.toApiJson) ? r : new SendMeetingRequestEmailRequest(r);
165
+ return this.http.post(this._host + "/meetings.v1.MeetingHost/SendMeetingRequestEmail", request.toApiJson(), { ...this.apiOptions(), observe: 'response' });
166
+ }
167
+ isCalendarConfigured(r) {
168
+ const request = (r.toApiJson) ? r : new IsCalendarConfiguredRequest(r);
169
+ return this.http.post(this._host + "/meetings.v1.MeetingHost/IsCalendarConfigured", request.toApiJson(), this.apiOptions())
170
+ .pipe(map(resp => IsCalendarConfiguredResponse.fromProto(resp)));
171
+ }
162
172
  }
163
- MeetingHostApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingHostApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
173
+ MeetingHostApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingHostApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
164
174
  MeetingHostApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingHostApiService, providedIn: 'root' });
165
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingHostApiService, decorators: [{
166
176
  type: Injectable,
167
177
  args: [{ providedIn: 'root' }]
168
- }] });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1ob3N0LmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctaG9zdC5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFD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QyxDQUErRDtRQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUE0QixDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QixDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUgsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLDRDQUE0QyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQzdKLENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxDQUErRTtRQUNyRyxNQUFNLE9BQU8sR0FBRyxDQUFvQyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFvQyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksZ0NBQWdDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEosT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLG9EQUFvRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ3JLLENBQUM7O2tIQXZMUSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQURULE1BQU07MkZBQ2xCLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIEFQSSBTZXJ2aWNlLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICAgICAgQnVpbGRIb3N0SWRSZXF1ZXN0LFxuICAgICAgICBCdWlsZEhvc3RJZFJlc3BvbnNlLFxuICAgICAgICBDYW5jZWxNZWV0aW5nUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlQ2FsZW5kYXJSZXNwb25zZSxcbiAgICAgICAgQ3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICAgICAgQ3JlYXRlTWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICAgICAgRGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICAgICAgRGVsZXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgICAgICBEb2VzQ2FsZW5kYXJFeGlzdFJlcXVlc3QsXG4gICAgICAgIERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UsXG4gICAgICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0LFxuICAgICAgICBFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVzcG9uc2UsXG4gICAgICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXF1ZXN0LFxuICAgICAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVzcG9uc2UsXG4gICAgICAgIEdldEhvc3RNZWV0aW5nUmVxdWVzdCxcbiAgICAgICAgR2V0SG9zdE1lZXRpbmdSZXNwb25zZSxcbiAgICAgICAgR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICAgICAgR2V0SG9zdFByZWZlcmVuY2VzUmVzcG9uc2UsXG4gICAgICAgIEdldEhvc3RzRm9yQ2FsZW5kYXJSZXF1ZXN0LFxuICAgICAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2UsXG4gICAgICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1JlcXVlc3QsXG4gICAgICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1Jlc3BvbnNlLFxuICAgICAgICBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0LFxuICAgICAgICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgICAgICAgSG9zdEdldENhbGVuZGFyUmVxdWVzdCxcbiAgICAgICAgSG9zdEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgICAgIEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgICAgIEhvc3RHZXRNZWV0aW5nVHlwZVJlc3BvbnNlLFxuICAgICAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgICAgIEhvc3RMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UsXG4gICAgICAgIElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0LFxuICAgICAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgICAgICBMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLFxuICAgICAgICBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QsXG4gICAgICAgIFNldEdlbmVyYWxBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgICAgICBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgICAgICBVcGRhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgICAgIFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgICAgIFVwZGF0ZU1lZXRpbmdNZXRhZGF0YVJlcXVlc3QsXG4gICAgICAgIFVwZGF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBCdWlsZEhvc3RJZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEJ1aWxkSG9zdElkUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIENhbmNlbE1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVNZWV0aW5nVHlwZVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERvZXNDYWxlbmRhckV4aXN0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgRG9lc0NhbGVuZGFyRXhpc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0SG9zdE1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRIb3N0UHJlZmVyZW5jZXNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldEhvc3RzRm9yQ2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEhvc3RCb29rTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBIb3N0R2V0Q2FsZW5kYXJSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgSG9zdEdldE1lZXRpbmdUeXBlUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgSXNIb3N0Q29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RBdmFpbGFiaWxpdHlSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1lZXRpbmdIb3N0QXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBob3N0U2VydmljZSA9IGluamVjdChIb3N0U2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgX2hvc3QgPSB0aGlzLmhvc3RTZXJ2aWNlLmhvc3RXaXRoU2NoZW1lO1xuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYnVpbGRIb3N0SWQocjogQnVpbGRIb3N0SWRSZXF1ZXN0IHwgQnVpbGRIb3N0SWRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxCdWlsZEhvc3RJZFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxCdWlsZEhvc3RJZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8QnVpbGRIb3N0SWRSZXF1ZXN0PnIpIDogbmV3IEJ1aWxkSG9zdElkUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEJ1aWxkSG9zdElkUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9CdWlsZEhvc3RJZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEJ1aWxkSG9zdElkUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZG9lc0NhbGVuZGFyRXhpc3QocjogRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0IHwgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxEb2VzQ2FsZW5kYXJFeGlzdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0PnIpIDogbmV3IERvZXNDYWxlbmRhckV4aXN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9Eb2VzQ2FsZW5kYXJFeGlzdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlQ2FsZW5kYXIocjogQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0IHwgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVDYWxlbmRhclJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlQ2FsZW5kYXJSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZUNhbGVuZGFyUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZUNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVDYWxlbmRhclwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlQ2FsZW5kYXIocjogVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0IHwgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUNhbGVuZGFyUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVDYWxlbmRhclJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUNhbGVuZGFyXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXRDYWxlbmRhcihyOiBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0IHwgSG9zdEdldENhbGVuZGFyUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SG9zdEdldENhbGVuZGFyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEhvc3RHZXRDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8SG9zdEdldENhbGVuZGFyUmVxdWVzdD5yKSA6IG5ldyBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SG9zdEdldENhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRDYWxlbmRhclwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMocjogRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3QgfCBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8RW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdD5yKSA6IG5ldyBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0Vuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdChyOiBFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVxdWVzdCB8IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0PnIpIDogbmV3IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRIb3N0c0ZvckNhbGVuZGFyKHI6IEdldEhvc3RzRm9yQ2FsZW5kYXJSZXF1ZXN0IHwgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldEhvc3RzRm9yQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Q+cikgOiBuZXcgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRIb3N0c0ZvckNhbGVuZGFyXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyhyOiBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0IHwgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdD5yKSA6IG5ldyBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0QXZhaWxhYmlsaXR5KHI6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0IHwgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RBdmFpbGFiaWxpdHlSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Q+cikgOiBuZXcgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9MaXN0QXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdEF2YWlsYWJpbGl0eVJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGJvb2tNZWV0aW5nKHI6IEhvc3RCb29rTWVldGluZ1JlcXVlc3QgfCBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIb3N0Qm9va01lZXRpbmdSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8SG9zdEJvb2tNZWV0aW5nUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxIb3N0Qm9va01lZXRpbmdSZXF1ZXN0PnIpIDogbmV3IEhvc3RCb29rTWVldGluZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIb3N0Qm9va01lZXRpbmdSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0Jvb2tNZWV0aW5nXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0SG9zdE1lZXRpbmcocjogR2V0SG9zdE1lZXRpbmdSZXF1ZXN0IHwgR2V0SG9zdE1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRIb3N0TWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRIb3N0TWVldGluZ1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0SG9zdE1lZXRpbmdSZXF1ZXN0PnIpIDogbmV3IEdldEhvc3RNZWV0aW5nUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldEhvc3RNZWV0aW5nUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRIb3N0TWVldGluZ1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdEJvb2tlZE1lZXRpbmdzKHI6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QgfCBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0PnIpIDogbmV3IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0xpc3RCb29rZWRNZWV0aW5nc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGNhbmNlbE1lZXRpbmcocjogQ2FuY2VsTWVldGluZ1JlcXVlc3QgfCBDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDYW5jZWxNZWV0aW5nUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDYW5jZWxNZWV0aW5nUmVxdWVzdD5yKSA6IG5ldyBDYW5jZWxNZWV0aW5nUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DYW5jZWxNZWV0aW5nXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICByZXNjaGVkdWxlTWVldGluZyhyOiBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QgfCBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdD5yKSA6IG5ldyBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvUmVzY2hlZHVsZU1lZXRpbmdcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHVwZGF0ZU1lZXRpbmdNZXRhZGF0YShyOiBVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0IHwgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwZGF0ZU1lZXRpbmdNZXRhZGF0YVJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9VcGRhdGVNZWV0aW5nTWV0YWRhdGFcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHNldEdlbmVyYWxBdmFpbGFiaWxpdHkocjogU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3QgfCBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9TZXRHZW5lcmFsQXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjcmVhdGVBdmFpbGFiaWxpdHkocjogQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCB8IENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvQ3JlYXRlQXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gQ3JlYXRlQXZhaWxhYmlsaXR5UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlQXZhaWxhYmlsaXR5KHI6IFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QgfCBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUF2YWlsYWJpbGl0eVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZGVsZXRlQXZhaWxhYmlsaXR5KHI6IERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3QgfCBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0RlbGV0ZUF2YWlsYWJpbGl0eVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgaXNIb3N0Q29uZmlndXJlZChyOiBJc0hvc3RDb25maWd1cmVkUmVxdWVzdCB8IElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxJc0hvc3RDb25maWd1cmVkUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0PnIpIDogbmV3IElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvSXNIb3N0Q29uZmlndXJlZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRIb3N0UHJlZmVyZW5jZXMocjogR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdCB8IEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3Q+cikgOiBuZXcgR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvR2V0SG9zdFByZWZlcmVuY2VzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0SG9zdFByZWZlcmVuY2VzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlSG9zdFByZWZlcmVuY2VzKHI6IFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3QgfCBVcGRhdGVIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUhvc3RQcmVmZXJlbmNlc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0TWVldGluZ1R5cGUocjogSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdCB8IEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEhvc3RHZXRNZWV0aW5nVHlwZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxIb3N0R2V0TWVldGluZ1R5cGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3Q+cikgOiBuZXcgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEhvc3RHZXRNZWV0aW5nVHlwZVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvR2V0TWVldGluZ1R5cGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0TWVldGluZ1R5cGVzKHI6IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCB8IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8SG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdD5yKSA6IG5ldyBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIb3N0TGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvTGlzdE1lZXRpbmdUeXBlc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlTWVldGluZ1R5cGUocjogQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0IHwgQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVNZWV0aW5nVHlwZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZU1lZXRpbmdUeXBlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVNZWV0aW5nVHlwZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlTWVldGluZ1R5cGUocjogVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0IHwgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZU1lZXRpbmdUeXBlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVNZWV0aW5nVHlwZVJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZU1lZXRpbmdUeXBlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBkZWxldGVNZWV0aW5nVHlwZShyOiBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3QgfCBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8RGVsZXRlTWVldGluZ1R5cGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPERlbGV0ZU1lZXRpbmdUeXBlUmVxdWVzdD5yKSA6IG5ldyBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvRGVsZXRlTWVldGluZ1R5cGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMocjogQ3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlc1JlcXVlc3QgfCBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBcbn1cbiJdfQ==
178
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1ob3N0LmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctaG9zdC5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFD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Q0FBQztJQUNuSyxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsQ0FBcUU7UUFDdEYsTUFBTSxPQUFPLEdBQUcsQ0FBK0IsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBK0IsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXdDLElBQUksQ0FBQyxLQUFLLEdBQUcsK0NBQStDLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUM3SixJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzVELENBQUM7SUFDVixDQUFDOztrSEFuTVEscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FEVCxNQUFNOzJGQUNsQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIEJ1aWxkSG9zdElkUmVxdWVzdCxcbiAgICAgICAgQnVpbGRIb3N0SWRSZXNwb25zZSxcbiAgICAgICAgQ2FuY2VsTWVldGluZ1JlcXVlc3QsXG4gICAgICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgICAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UsXG4gICAgICAgIENyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgICAgICBDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgICAgIERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgICAgIERlbGV0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICAgICAgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0LFxuICAgICAgICBEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlLFxuICAgICAgICBFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVxdWVzdCxcbiAgICAgICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlLFxuICAgICAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdCxcbiAgICAgICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1Jlc3BvbnNlLFxuICAgICAgICBHZXRIb3N0TWVldGluZ1JlcXVlc3QsXG4gICAgICAgIEdldEhvc3RNZWV0aW5nUmVzcG9uc2UsXG4gICAgICAgIEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgICAgIEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlLFxuICAgICAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVxdWVzdCxcbiAgICAgICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlLFxuICAgICAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0LFxuICAgICAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZSxcbiAgICAgICAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdCxcbiAgICAgICAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgICAgIEhvc3RHZXRDYWxlbmRhclJlcXVlc3QsXG4gICAgICAgIEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlLFxuICAgICAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgICAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICAgICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgICAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlLFxuICAgICAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3QsXG4gICAgICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgICAgIElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0LFxuICAgICAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgICAgICBMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLFxuICAgICAgICBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QsXG4gICAgICAgIFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdCxcbiAgICAgICAgU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgICAgIFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdCxcbiAgICAgICAgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxufSBmcm9tICcuL29iamVjdHMvJztcbmltcG9ydCB7XG4gICAgICAgIEJ1aWxkSG9zdElkUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgQnVpbGRIb3N0SWRSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgQ2FuY2VsTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZUNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIERlbGV0ZU1lZXRpbmdUeXBlUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRIb3N0TWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldEhvc3RNZWV0aW5nUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIEhvc3RHZXRDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2VJbnRlcmZhY2UsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdEludGVyZmFjZSxcbiAgICAgICAgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1lZXRpbmdIb3N0QXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaG9zdCA9IHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaG9zdFNlcnZpY2U6IEhvc3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYnVpbGRIb3N0SWQocjogQnVpbGRIb3N0SWRSZXF1ZXN0IHwgQnVpbGRIb3N0SWRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxCdWlsZEhvc3RJZFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxCdWlsZEhvc3RJZFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8QnVpbGRIb3N0SWRSZXF1ZXN0PnIpIDogbmV3IEJ1aWxkSG9zdElkUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEJ1aWxkSG9zdElkUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9CdWlsZEhvc3RJZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEJ1aWxkSG9zdElkUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZG9lc0NhbGVuZGFyRXhpc3QocjogRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0IHwgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxEb2VzQ2FsZW5kYXJFeGlzdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0PnIpIDogbmV3IERvZXNDYWxlbmRhckV4aXN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9Eb2VzQ2FsZW5kYXJFeGlzdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlQ2FsZW5kYXIocjogQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0IHwgQ3JlYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVDYWxlbmRhclJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlQ2FsZW5kYXJSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZUNhbGVuZGFyUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZUNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVDYWxlbmRhclwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENyZWF0ZUNhbGVuZGFyUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlQ2FsZW5kYXIocjogVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0IHwgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUNhbGVuZGFyUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVDYWxlbmRhclJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlQ2FsZW5kYXJSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUNhbGVuZGFyXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBnZXRDYWxlbmRhcihyOiBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0IHwgSG9zdEdldENhbGVuZGFyUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SG9zdEdldENhbGVuZGFyUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEhvc3RHZXRDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8SG9zdEdldENhbGVuZGFyUmVxdWVzdD5yKSA6IG5ldyBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SG9zdEdldENhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRDYWxlbmRhclwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHMocjogRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3QgfCBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8RW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdD5yKSA6IG5ldyBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0Vuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdChyOiBFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVxdWVzdCB8IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxFbnN1cmVHcm91cENhbGVuZGFyc0V4aXN0UmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0PnIpIDogbmV3IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRIb3N0c0ZvckNhbGVuZGFyKHI6IEdldEhvc3RzRm9yQ2FsZW5kYXJSZXF1ZXN0IHwgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldEhvc3RzRm9yQ2FsZW5kYXJSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Q+cikgOiBuZXcgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRIb3N0c0ZvckNhbGVuZGFyXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFycyhyOiBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0IHwgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdD5yKSA6IG5ldyBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8R2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0QXZhaWxhYmlsaXR5KHI6IExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0IHwgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPExpc3RBdmFpbGFiaWxpdHlSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Q+cikgOiBuZXcgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9MaXN0QXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTGlzdEF2YWlsYWJpbGl0eVJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGJvb2tNZWV0aW5nKHI6IEhvc3RCb29rTWVldGluZ1JlcXVlc3QgfCBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIb3N0Qm9va01lZXRpbmdSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8SG9zdEJvb2tNZWV0aW5nUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxIb3N0Qm9va01lZXRpbmdSZXF1ZXN0PnIpIDogbmV3IEhvc3RCb29rTWVldGluZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIb3N0Qm9va01lZXRpbmdSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0Jvb2tNZWV0aW5nXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgZ2V0SG9zdE1lZXRpbmcocjogR2V0SG9zdE1lZXRpbmdSZXF1ZXN0IHwgR2V0SG9zdE1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRIb3N0TWVldGluZ1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRIb3N0TWVldGluZ1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8R2V0SG9zdE1lZXRpbmdSZXF1ZXN0PnIpIDogbmV3IEdldEhvc3RNZWV0aW5nUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldEhvc3RNZWV0aW5nUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9HZXRIb3N0TWVldGluZ1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldEhvc3RNZWV0aW5nUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgbGlzdEJvb2tlZE1lZXRpbmdzKHI6IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QgfCBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0PnIpIDogbmV3IExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0xpc3RCb29rZWRNZWV0aW5nc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGNhbmNlbE1lZXRpbmcocjogQ2FuY2VsTWVldGluZ1JlcXVlc3QgfCBDYW5jZWxNZWV0aW5nUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDYW5jZWxNZWV0aW5nUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDYW5jZWxNZWV0aW5nUmVxdWVzdD5yKSA6IG5ldyBDYW5jZWxNZWV0aW5nUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DYW5jZWxNZWV0aW5nXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICByZXNjaGVkdWxlTWVldGluZyhyOiBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QgfCBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdD5yKSA6IG5ldyBSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvUmVzY2hlZHVsZU1lZXRpbmdcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHVwZGF0ZU1lZXRpbmdNZXRhZGF0YShyOiBVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0IHwgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFVwZGF0ZU1lZXRpbmdNZXRhZGF0YVJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9VcGRhdGVNZWV0aW5nTWV0YWRhdGFcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIHNldEdlbmVyYWxBdmFpbGFiaWxpdHkocjogU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3QgfCBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9TZXRHZW5lcmFsQXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBjcmVhdGVBdmFpbGFiaWxpdHkocjogQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCB8IENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikgOiBuZXcgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvQ3JlYXRlQXZhaWxhYmlsaXR5XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gQ3JlYXRlQXZhaWxhYmlsaXR5UmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlQXZhaWxhYmlsaXR5KHI6IFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QgfCBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUF2YWlsYWJpbGl0eVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZGVsZXRlQXZhaWxhYmlsaXR5KHI6IERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3QgfCBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPERlbGV0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8RGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdD5yKSA6IG5ldyBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L0RlbGV0ZUF2YWlsYWJpbGl0eVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgaXNIb3N0Q29uZmlndXJlZChyOiBJc0hvc3RDb25maWd1cmVkUmVxdWVzdCB8IElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxJc0hvc3RDb25maWd1cmVkUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0PnIpIDogbmV3IElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvSXNIb3N0Q29uZmlndXJlZFwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBnZXRIb3N0UHJlZmVyZW5jZXMocjogR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdCB8IEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxHZXRIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3Q+cikgOiBuZXcgR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvR2V0SG9zdFByZWZlcmVuY2VzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gR2V0SG9zdFByZWZlcmVuY2VzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlSG9zdFByZWZlcmVuY2VzKHI6IFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3QgfCBVcGRhdGVIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8VXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdD5yKSA6IG5ldyBVcGRhdGVIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZUhvc3RQcmVmZXJlbmNlc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB7Li4udGhpcy5hcGlPcHRpb25zKCksIG9ic2VydmU6ICdyZXNwb25zZSd9KTtcbiAgICB9XG4gICAgZ2V0TWVldGluZ1R5cGUocjogSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdCB8IEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEhvc3RHZXRNZWV0aW5nVHlwZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxIb3N0R2V0TWVldGluZ1R5cGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3Q+cikgOiBuZXcgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEhvc3RHZXRNZWV0aW5nVHlwZVJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvR2V0TWVldGluZ1R5cGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0TWVldGluZ1R5cGVzKHI6IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCB8IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8SG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPEhvc3RMaXN0TWVldGluZ1R5cGVzUmVxdWVzdD5yKSA6IG5ldyBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxIb3N0TGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvTGlzdE1lZXRpbmdUeXBlc1wiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEhvc3RMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgY3JlYXRlTWVldGluZ1R5cGUocjogQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0IHwgQ3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxDcmVhdGVNZWV0aW5nVHlwZVJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8Q3JlYXRlTWVldGluZ1R5cGVSZXF1ZXN0PnIpIDogbmV3IENyZWF0ZU1lZXRpbmdUeXBlUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVNZWV0aW5nVHlwZVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IENyZWF0ZU1lZXRpbmdUeXBlUmVzcG9uc2UuZnJvbVByb3RvKHJlc3ApKVxuICAgICAgICAgICAgKTtcbiAgICB9XG4gICAgdXBkYXRlTWVldGluZ1R5cGUocjogVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0IHwgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8bnVsbD4+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFVwZGF0ZU1lZXRpbmdUeXBlUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxVcGRhdGVNZWV0aW5nVHlwZVJlcXVlc3Q+cikgOiBuZXcgVXBkYXRlTWVldGluZ1R5cGVSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8bnVsbD4odGhpcy5faG9zdCArIFwiL21lZXRpbmdzLnYxLk1lZXRpbmdIb3N0L1VwZGF0ZU1lZXRpbmdUeXBlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBkZWxldGVNZWV0aW5nVHlwZShyOiBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3QgfCBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8RGVsZXRlTWVldGluZ1R5cGVSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPERlbGV0ZU1lZXRpbmdUeXBlUmVxdWVzdD5yKSA6IG5ldyBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvRGVsZXRlTWVldGluZ1R5cGVcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGNyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXMocjogQ3JlYXRlRGVmYXVsdE1lZXRpbmdUeXBlc1JlcXVlc3QgfCBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPG51bGw+PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdD5yKSA6IG5ldyBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nSG9zdC9DcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHsuLi50aGlzLmFwaU9wdGlvbnMoKSwgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pO1xuICAgIH1cbiAgICBzZW5kTWVldGluZ1JlcXVlc3RFbWFpbChyOiBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3QgfCBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxudWxsPj4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8U2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdD5yKSA6IG5ldyBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvU2VuZE1lZXRpbmdSZXF1ZXN0RW1haWxcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgey4uLnRoaXMuYXBpT3B0aW9ucygpLCBvYnNlcnZlOiAncmVzcG9uc2UnfSk7XG4gICAgfVxuICAgIGlzQ2FsZW5kYXJDb25maWd1cmVkKHI6IElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdCB8IElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8SXNDYWxlbmRhckNvbmZpZ3VyZWRSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8SXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdD5yKSA6IG5ldyBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ0hvc3QvSXNDYWxlbmRhckNvbmZpZ3VyZWRcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBJc0NhbGVuZGFyQ29uZmlndXJlZFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19
@@ -7,14 +7,15 @@
7
7
  import { Injectable } from '@angular/core';
8
8
  import { MeetingSourceListRequest, MeetingSourceListResponse, } from './objects/';
9
9
  import { HttpHeaders, HttpClient } from '@angular/common/http';
10
- import { inject } from '@angular/core';
11
10
  import { HostService } from '../_generated/host.service';
12
11
  import { map } from 'rxjs/operators';
13
12
  import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common/http";
14
+ import * as i2 from "../_generated/host.service";
14
15
  export class MeetingSourceAPIApiService {
15
- constructor() {
16
- this.hostService = inject(HostService);
17
- this.http = inject(HttpClient);
16
+ constructor(http, hostService) {
17
+ this.http = http;
18
+ this.hostService = hostService;
18
19
  this._host = this.hostService.hostWithScheme;
19
20
  }
20
21
  apiOptions() {
@@ -31,10 +32,10 @@ export class MeetingSourceAPIApiService {
31
32
  .pipe(map(resp => MeetingSourceListResponse.fromProto(resp)));
32
33
  }
33
34
  }
34
- MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
+ MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
35
36
  MeetingSourceAPIApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, providedIn: 'root' });
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, decorators: [{
37
38
  type: Injectable,
38
39
  args: [{ providedIn: 'root' }]
39
- }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zb3VyY2UtYXBpLmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctc291cmNlLWFwaS5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx3QkFBd0IsRUFDeEIseUJBQXlCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBS3BCLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUduQyxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRXFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0tBbUJuRDtJQWpCVyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBK0Q7UUFDaEUsTUFBTSxPQUFPLEdBQUcsQ0FBNEIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBNEIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMvSSxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDVixDQUFDOzt1SEFwQlEsMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FEZCxNQUFNOzJGQUNsQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCxcbiAgICAgICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTWVldGluZ1NvdXJjZUFQSUFwaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFNlcnZpY2UgPSBpbmplY3QoSG9zdFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIHByaXZhdGUgYXBpT3B0aW9ucygpOiB7aGVhZGVyczogSHR0cEhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbn0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGxpc3QocjogTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0IHwgTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxNZWV0aW5nU291cmNlTGlzdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0PnIpIDogbmV3IE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nU291cmNlQVBJL0xpc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19
40
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zb3VyY2UtYXBpLmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctc291cmNlLWFwaS5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx3QkFBd0IsRUFDeEIseUJBQXlCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBS3BCLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXZELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUduQyxNQUFNLE9BQU8sMEJBQTBCO0lBR25DLFlBQW9CLElBQWdCLEVBQVUsV0FBd0I7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRjlELFVBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztJQUdoRCxDQUFDO0lBRU8sVUFBVTtRQUNkLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3JCLGNBQWMsRUFBRSxrQkFBa0I7YUFDckMsQ0FBQztZQUNGLGVBQWUsRUFBRSxJQUFJO1NBQ3hCLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxDQUFDLENBQStEO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLENBQTRCLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQTRCLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1SCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFxQyxJQUFJLENBQUMsS0FBSyxHQUFHLG9DQUFvQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDL0ksSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ1YsQ0FBQzs7dUhBckJRLDBCQUEwQjsySEFBMUIsMEJBQTBCLGNBRGQsTUFBTTsyRkFDbEIsMEJBQTBCO2tCQUR0QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gQVBJIFNlcnZpY2UuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgICAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3QsXG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2UsXG59IGZyb20gJy4vb2JqZWN0cy8nO1xuaW1wb3J0IHtcbiAgICAgICAgTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlSW50ZXJmYWNlLFxufSBmcm9tICcuL2ludGVyZmFjZXMvJztcbmltcG9ydCB7SHR0cEhlYWRlcnMsIEh0dHBDbGllbnQsIEh0dHBSZXNwb25zZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtIb3N0U2VydmljZX0gZnJvbSAnLi4vX2dlbmVyYXRlZC9ob3N0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIE1lZXRpbmdTb3VyY2VBUElBcGlTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBob3N0U2VydmljZTogSG9zdFNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwaU9wdGlvbnMoKToge2hlYWRlcnM6IEh0dHBIZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW59IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBsaXN0KHI6IE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCB8IE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdD5yKSA6IG5ldyBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvbWVldGluZ3MudjEuTWVldGluZ1NvdXJjZUFQSS9MaXN0XCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBcbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ import { PagedRequestOptions, PagedResponseMetadata } from './shared';
1
2
  import * as e from '../enums';
2
3
  export function enumStringToValue(enumRef, value) {
3
4
  if (typeof value === 'number') {
@@ -48,6 +49,195 @@ export class CreateRawTranscriptResponse {
48
49
  return toReturn;
49
50
  }
50
51
  }
52
+ export class ListProcessedTranscriptsRequestFilters {
53
+ static fromProto(proto) {
54
+ let m = new ListProcessedTranscriptsRequestFilters();
55
+ m = Object.assign(m, proto);
56
+ return m;
57
+ }
58
+ constructor(kwargs) {
59
+ if (!kwargs) {
60
+ return;
61
+ }
62
+ Object.assign(this, kwargs);
63
+ }
64
+ toApiJson() {
65
+ const toReturn = {};
66
+ if (typeof this.namespace !== 'undefined') {
67
+ toReturn['namespace'] = this.namespace;
68
+ }
69
+ return toReturn;
70
+ }
71
+ }
72
+ export class GetProcessedTranscriptsRequest {
73
+ static fromProto(proto) {
74
+ let m = new GetProcessedTranscriptsRequest();
75
+ m = Object.assign(m, proto);
76
+ return m;
77
+ }
78
+ constructor(kwargs) {
79
+ if (!kwargs) {
80
+ return;
81
+ }
82
+ Object.assign(this, kwargs);
83
+ }
84
+ toApiJson() {
85
+ const toReturn = {};
86
+ if (typeof this.id !== 'undefined') {
87
+ toReturn['id'] = this.id;
88
+ }
89
+ return toReturn;
90
+ }
91
+ }
92
+ export class GetProcessedTranscriptsResponse {
93
+ static fromProto(proto) {
94
+ let m = new GetProcessedTranscriptsResponse();
95
+ m = Object.assign(m, proto);
96
+ if (proto.processedTranscript) {
97
+ m.processedTranscript = ProcessedTranscript.fromProto(proto.processedTranscript);
98
+ }
99
+ return m;
100
+ }
101
+ constructor(kwargs) {
102
+ if (!kwargs) {
103
+ return;
104
+ }
105
+ Object.assign(this, kwargs);
106
+ }
107
+ toApiJson() {
108
+ const toReturn = {};
109
+ if (typeof this.processedTranscript !== 'undefined' && this.processedTranscript !== null) {
110
+ toReturn['processedTranscript'] = 'toApiJson' in this.processedTranscript ? this.processedTranscript.toApiJson() : this.processedTranscript;
111
+ }
112
+ return toReturn;
113
+ }
114
+ }
115
+ export class ListProcessedTranscriptsRequest {
116
+ static fromProto(proto) {
117
+ let m = new ListProcessedTranscriptsRequest();
118
+ m = Object.assign(m, proto);
119
+ if (proto.filters) {
120
+ m.filters = ListProcessedTranscriptsRequestFilters.fromProto(proto.filters);
121
+ }
122
+ if (proto.pagingOptions) {
123
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
124
+ }
125
+ return m;
126
+ }
127
+ constructor(kwargs) {
128
+ if (!kwargs) {
129
+ return;
130
+ }
131
+ Object.assign(this, kwargs);
132
+ }
133
+ toApiJson() {
134
+ const toReturn = {};
135
+ if (typeof this.filters !== 'undefined' && this.filters !== null) {
136
+ toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
137
+ }
138
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
139
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
140
+ }
141
+ return toReturn;
142
+ }
143
+ }
144
+ export class ListProcessedTranscriptsResponse {
145
+ static fromProto(proto) {
146
+ let m = new ListProcessedTranscriptsResponse();
147
+ m = Object.assign(m, proto);
148
+ if (proto.processedTranscripts) {
149
+ m.processedTranscripts = proto.processedTranscripts.map(ProcessedTranscript.fromProto);
150
+ }
151
+ if (proto.metadata) {
152
+ m.metadata = PagedResponseMetadata.fromProto(proto.metadata);
153
+ }
154
+ return m;
155
+ }
156
+ constructor(kwargs) {
157
+ if (!kwargs) {
158
+ return;
159
+ }
160
+ Object.assign(this, kwargs);
161
+ }
162
+ toApiJson() {
163
+ const toReturn = {};
164
+ if (typeof this.processedTranscripts !== 'undefined' && this.processedTranscripts !== null) {
165
+ toReturn['processedTranscripts'] = 'toApiJson' in this.processedTranscripts ? this.processedTranscripts.toApiJson() : this.processedTranscripts;
166
+ }
167
+ if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
168
+ toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
169
+ }
170
+ return toReturn;
171
+ }
172
+ }
173
+ export class ProcessedTranscript {
174
+ static fromProto(proto) {
175
+ let m = new ProcessedTranscript();
176
+ m = Object.assign(m, proto);
177
+ if (proto.source) {
178
+ m.source = enumStringToValue(e.TranscriptSource, proto.source);
179
+ }
180
+ if (proto.sentiment) {
181
+ m.sentiment = parseInt(proto.sentiment, 10);
182
+ }
183
+ if (proto.salesScore) {
184
+ m.salesScore = parseInt(proto.salesScore, 10);
185
+ }
186
+ return m;
187
+ }
188
+ constructor(kwargs) {
189
+ if (!kwargs) {
190
+ return;
191
+ }
192
+ Object.assign(this, kwargs);
193
+ }
194
+ toApiJson() {
195
+ const toReturn = {};
196
+ if (typeof this.id !== 'undefined') {
197
+ toReturn['id'] = this.id;
198
+ }
199
+ if (typeof this.namespace !== 'undefined') {
200
+ toReturn['namespace'] = this.namespace;
201
+ }
202
+ if (typeof this.source !== 'undefined') {
203
+ toReturn['source'] = this.source;
204
+ }
205
+ if (typeof this.title !== 'undefined') {
206
+ toReturn['title'] = this.title;
207
+ }
208
+ if (typeof this.summary !== 'undefined') {
209
+ toReturn['summary'] = this.summary;
210
+ }
211
+ if (typeof this.keywords !== 'undefined') {
212
+ toReturn['keywords'] = this.keywords;
213
+ }
214
+ if (typeof this.keyTakeaways !== 'undefined') {
215
+ toReturn['keyTakeaways'] = this.keyTakeaways;
216
+ }
217
+ if (typeof this.actionItems !== 'undefined') {
218
+ toReturn['actionItems'] = this.actionItems;
219
+ }
220
+ if (typeof this.sentiment !== 'undefined') {
221
+ toReturn['sentiment'] = this.sentiment;
222
+ }
223
+ if (typeof this.sentimentExplanation !== 'undefined') {
224
+ toReturn['sentimentExplanation'] = this.sentimentExplanation;
225
+ }
226
+ if (typeof this.salesScore !== 'undefined') {
227
+ toReturn['salesScore'] = this.salesScore;
228
+ }
229
+ if (typeof this.salesScoreExplanation !== 'undefined') {
230
+ toReturn['salesScoreExplanation'] = this.salesScoreExplanation;
231
+ }
232
+ if (typeof this.analysingModelUsed !== 'undefined') {
233
+ toReturn['analysingModelUsed'] = this.analysingModelUsed;
234
+ }
235
+ if (typeof this.promptUsed !== 'undefined') {
236
+ toReturn['promptUsed'] = this.promptUsed;
237
+ }
238
+ return toReturn;
239
+ }
240
+ }
51
241
  export class RawTranscript {
52
242
  static fromProto(proto) {
53
243
  let m = new RawTranscript();
@@ -98,4 +288,4 @@ export class RawTranscript {
98
288
  return toReturn;
99
289
  }
100
290
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWFuYWx5c2lzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvY29udmVyc2F0aW9uLWFuYWx5c2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTywwQkFBMEI7SUFHbkMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQzFGLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBOEM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQUMs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SUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlUmF3VHJhbnNjcmlwdFJlcXVlc3QgaW1wbGVtZW50cyBpLkNyZWF0ZVJhd1RyYW5zY3JpcHRSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICByYXdUcmFuc2NyaXB0OiBSYXdUcmFuc2NyaXB0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlUmF3VHJhbnNjcmlwdFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDcmVhdGVSYXdUcmFuc2NyaXB0UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5yYXdUcmFuc2NyaXB0KSB7bS5yYXdUcmFuc2NyaXB0ID0gUmF3VHJhbnNjcmlwdC5mcm9tUHJvdG8ocHJvdG8ucmF3VHJhbnNjcmlwdCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNyZWF0ZVJhd1RyYW5zY3JpcHRSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmF3VHJhbnNjcmlwdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yYXdUcmFuc2NyaXB0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Jhd1RyYW5zY3JpcHQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmF3VHJhbnNjcmlwdCA/ICh0aGlzLnJhd1RyYW5zY3JpcHQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucmF3VHJhbnNjcmlwdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVSYXdUcmFuc2NyaXB0UmVzcG9uc2UgaW1wbGVtZW50cyBpLkNyZWF0ZVJhd1RyYW5zY3JpcHRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENyZWF0ZVJhd1RyYW5zY3JpcHRSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZVJhd1RyYW5zY3JpcHRSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ3JlYXRlUmF3VHJhbnNjcmlwdFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhd1RyYW5zY3JpcHQgaW1wbGVtZW50cyBpLlJhd1RyYW5zY3JpcHRJbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgdHJhbnNjcmlwdDogc3RyaW5nO1xuICAgIHNvdXJjZTogZS5UcmFuc2NyaXB0U291cmNlO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBkZWxldGVkOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUmF3VHJhbnNjcmlwdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJhd1RyYW5zY3JpcHQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc291cmNlKSB7bS5zb3VyY2UgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlRyYW5zY3JpcHRTb3VyY2U+KGUuVHJhbnNjcmlwdFNvdXJjZSwgcHJvdG8uc291cmNlKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8udXBkYXRlZCkge20udXBkYXRlZCA9IG5ldyBEYXRlKHByb3RvLnVwZGF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLmRlbGV0ZWQpIHttLmRlbGV0ZWQgPSBuZXcgRGF0ZShwcm90by5kZWxldGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmF3VHJhbnNjcmlwdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHJhbnNjcmlwdCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHJhbnNjcmlwdCddID0gdGhpcy50cmFuc2NyaXB0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNvdXJjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc291cmNlJ10gPSB0aGlzLnNvdXJjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudXBkYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVwZGF0ZWQgPyAodGhpcy51cGRhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVsZXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5kZWxldGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2RlbGV0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZGVsZXRlZCA/ICh0aGlzLmRlbGV0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZGVsZXRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWFuYWx5c2lzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvY29udmVyc2F0aW9uLWFuYWx5c2lzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sMEJBQTBCO0lBR25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7UUFDekMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FBQztRQUMxRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQThDO1FBQ3RELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMs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WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQYWdlZFJlcXVlc3RPcHRpb25zLCBQYWdlZFJlc3BvbnNlTWV0YWRhdGEgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVSYXdUcmFuc2NyaXB0UmVxdWVzdCBpbXBsZW1lbnRzIGkuQ3JlYXRlUmF3VHJhbnNjcmlwdFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHJhd1RyYW5zY3JpcHQ6IFJhd1RyYW5zY3JpcHQ7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDcmVhdGVSYXdUcmFuc2NyaXB0UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IENyZWF0ZVJhd1RyYW5zY3JpcHRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnJhd1RyYW5zY3JpcHQpIHttLnJhd1RyYW5zY3JpcHQgPSBSYXdUcmFuc2NyaXB0LmZyb21Qcm90byhwcm90by5yYXdUcmFuc2NyaXB0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ3JlYXRlUmF3VHJhbnNjcmlwdFJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yYXdUcmFuc2NyaXB0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnJhd1RyYW5zY3JpcHQgIT09IG51bGwpIHt0b1JldHVyblsncmF3VHJhbnNjcmlwdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5yYXdUcmFuc2NyaXB0ID8gKHRoaXMucmF3VHJhbnNjcmlwdCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5yYXdUcmFuc2NyaXB0O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZVJhd1RyYW5zY3JpcHRSZXNwb25zZSBpbXBsZW1lbnRzIGkuQ3JlYXRlUmF3VHJhbnNjcmlwdFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ3JlYXRlUmF3VHJhbnNjcmlwdFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ3JlYXRlUmF3VHJhbnNjcmlwdFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5DcmVhdGVSYXdUcmFuc2NyaXB0UmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdEZpbHRlcnMgaW1wbGVtZW50cyBpLkxpc3RQcm9jZXNzZWRUcmFuc2NyaXB0c1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQcm9jZXNzZWRUcmFuc2NyaXB0c1JlcXVlc3RGaWx0ZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdEZpbHRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RQcm9jZXNzZWRUcmFuc2NyaXB0c1JlcXVlc3RGaWx0ZXJzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRQcm9jZXNzZWRUcmFuc2NyaXB0c1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgcHJvY2Vzc2VkVHJhbnNjcmlwdDogUHJvY2Vzc2VkVHJhbnNjcmlwdDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRQcm9jZXNzZWRUcmFuc2NyaXB0c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnByb2Nlc3NlZFRyYW5zY3JpcHQpIHttLnByb2Nlc3NlZFRyYW5zY3JpcHQgPSBQcm9jZXNzZWRUcmFuc2NyaXB0LmZyb21Qcm90byhwcm90by5wcm9jZXNzZWRUcmFuc2NyaXB0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucHJvY2Vzc2VkVHJhbnNjcmlwdCAhPT0gbnVsbCkge3RvUmV0dXJuWydwcm9jZXNzZWRUcmFuc2NyaXB0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHQgPyAodGhpcy5wcm9jZXNzZWRUcmFuc2NyaXB0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgZmlsdGVyczogTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVxdWVzdEZpbHRlcnM7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RQcm9jZXNzZWRUcmFuc2NyaXB0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZpbHRlcnMpIHttLmZpbHRlcnMgPSBMaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0RmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsdGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5maWx0ZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZpbHRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZmlsdGVycyA/ICh0aGlzLmZpbHRlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmlsdGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nT3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdPcHRpb25zID8gKHRoaXMucGFnaW5nT3B0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdPcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RQcm9jZXNzZWRUcmFuc2NyaXB0c1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgcHJvY2Vzc2VkVHJhbnNjcmlwdHM6IFByb2Nlc3NlZFRyYW5zY3JpcHRbXTtcbiAgICBtZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFByb2Nlc3NlZFRyYW5zY3JpcHRzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wcm9jZXNzZWRUcmFuc2NyaXB0cykge20ucHJvY2Vzc2VkVHJhbnNjcmlwdHMgPSBwcm90by5wcm9jZXNzZWRUcmFuc2NyaXB0cy5tYXAoUHJvY2Vzc2VkVHJhbnNjcmlwdC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLm1ldGFkYXRhKSB7bS5tZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ubWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0UHJvY2Vzc2VkVHJhbnNjcmlwdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Byb2Nlc3NlZFRyYW5zY3JpcHRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnByb2Nlc3NlZFRyYW5zY3JpcHRzID8gKHRoaXMucHJvY2Vzc2VkVHJhbnNjcmlwdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucHJvY2Vzc2VkVHJhbnNjcmlwdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YWRhdGEgPyAodGhpcy5tZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9jZXNzZWRUcmFuc2NyaXB0IGltcGxlbWVudHMgaS5Qcm9jZXNzZWRUcmFuc2NyaXB0SW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHNvdXJjZTogZS5UcmFuc2NyaXB0U291cmNlO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgc3VtbWFyeTogc3RyaW5nO1xuICAgIGtleXdvcmRzOiBzdHJpbmdbXTtcbiAgICBrZXlUYWtlYXdheXM6IHN0cmluZ1tdO1xuICAgIGFjdGlvbkl0ZW1zOiBzdHJpbmdbXTtcbiAgICBzZW50aW1lbnQ6IG51bWJlcjtcbiAgICBzZW50aW1lbnRFeHBsYW5hdGlvbjogc3RyaW5nO1xuICAgIHNhbGVzU2NvcmU6IG51bWJlcjtcbiAgICBzYWxlc1Njb3JlRXhwbGFuYXRpb246IHN0cmluZztcbiAgICBhbmFseXNpbmdNb2RlbFVzZWQ6IHN0cmluZztcbiAgICBwcm9tcHRVc2VkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQcm9jZXNzZWRUcmFuc2NyaXB0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUHJvY2Vzc2VkVHJhbnNjcmlwdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zb3VyY2UpIHttLnNvdXJjZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuVHJhbnNjcmlwdFNvdXJjZT4oZS5UcmFuc2NyaXB0U291cmNlLCBwcm90by5zb3VyY2UpO31cbiAgICAgICAgaWYgKHByb3RvLnNlbnRpbWVudCkge20uc2VudGltZW50ID0gcGFyc2VJbnQocHJvdG8uc2VudGltZW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2FsZXNTY29yZSkge20uc2FsZXNTY29yZSA9IHBhcnNlSW50KHByb3RvLnNhbGVzU2NvcmUsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUHJvY2Vzc2VkVHJhbnNjcmlwdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc291cmNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb3VyY2UnXSA9IHRoaXMuc291cmNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpdGxlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0aXRsZSddID0gdGhpcy50aXRsZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdW1tYXJ5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdW1tYXJ5J10gPSB0aGlzLnN1bW1hcnk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5d29yZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleXdvcmRzJ10gPSB0aGlzLmtleXdvcmRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleVRha2Vhd2F5cyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5VGFrZWF3YXlzJ10gPSB0aGlzLmtleVRha2Vhd2F5czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb25JdGVtcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWN0aW9uSXRlbXMnXSA9IHRoaXMuYWN0aW9uSXRlbXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VudGltZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZW50aW1lbnQnXSA9IHRoaXMuc2VudGltZW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbnRpbWVudEV4cGxhbmF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzZW50aW1lbnRFeHBsYW5hdGlvbiddID0gdGhpcy5zZW50aW1lbnRFeHBsYW5hdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zYWxlc1Njb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzYWxlc1Njb3JlJ10gPSB0aGlzLnNhbGVzU2NvcmU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2FsZXNTY29yZUV4cGxhbmF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzYWxlc1Njb3JlRXhwbGFuYXRpb24nXSA9IHRoaXMuc2FsZXNTY29yZUV4cGxhbmF0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFuYWx5c2luZ01vZGVsVXNlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYW5hbHlzaW5nTW9kZWxVc2VkJ10gPSB0aGlzLmFuYWx5c2luZ01vZGVsVXNlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9tcHRVc2VkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwcm9tcHRVc2VkJ10gPSB0aGlzLnByb21wdFVzZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmF3VHJhbnNjcmlwdCBpbXBsZW1lbnRzIGkuUmF3VHJhbnNjcmlwdEludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICB0cmFuc2NyaXB0OiBzdHJpbmc7XG4gICAgc291cmNlOiBlLlRyYW5zY3JpcHRTb3VyY2U7XG4gICAgY3JlYXRlZDogRGF0ZTtcbiAgICB1cGRhdGVkOiBEYXRlO1xuICAgIGRlbGV0ZWQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSYXdUcmFuc2NyaXB0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmF3VHJhbnNjcmlwdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zb3VyY2UpIHttLnNvdXJjZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuVHJhbnNjcmlwdFNvdXJjZT4oZS5UcmFuc2NyaXB0U291cmNlLCBwcm90by5zb3VyY2UpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by51cGRhdGVkKSB7bS51cGRhdGVkID0gbmV3IERhdGUocHJvdG8udXBkYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8uZGVsZXRlZCkge20uZGVsZXRlZCA9IG5ldyBEYXRlKHByb3RvLmRlbGV0ZWQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SYXdUcmFuc2NyaXB0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50cmFuc2NyaXB0ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0cmFuc2NyaXB0J10gPSB0aGlzLnRyYW5zY3JpcHQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc291cmNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzb3VyY2UnXSA9IHRoaXMuc291cmNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkID8gKHRoaXMuZGVsZXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19