@sunbird-cb/consumption 0.1.21-cbrelease-4.8.28 → 0.1.23-cbrelease-4.8.27-multilingual

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 (48) hide show
  1. package/esm2022/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.mjs +1 -2
  2. package/esm2022/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.mjs +2 -2
  3. package/esm2022/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.mjs +2 -986
  4. package/esm2022/lib/_common/microsites/mdo-channels/mdo-channel.module.mjs +7 -83
  5. package/esm2022/lib/_services/widget-content-lib.service.mjs +2 -2
  6. package/esm2022/public-api.mjs +1 -2
  7. package/fesm2022/sunbird-cb-consumption.mjs +35 -2055
  8. package/fesm2022/sunbird-cb-consumption.mjs.map +1 -1
  9. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.d.ts.map +1 -1
  10. package/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.d.ts.map +1 -1
  11. package/lib/_common/microsites/mdo-channels/mdo-channel.module.d.ts +26 -46
  12. package/lib/_common/microsites/mdo-channels/mdo-channel.module.d.ts.map +1 -1
  13. package/package.json +1 -1
  14. package/public-api.d.ts +0 -1
  15. package/public-api.d.ts.map +1 -1
  16. package/esm2022/lib/_common/microsites/mdo-channels/components/column-section-display/column-section-display.component.mjs +0 -54
  17. package/esm2022/lib/_common/microsites/mdo-channels/components/competency/competency.component.mjs +0 -50
  18. package/esm2022/lib/_common/microsites/mdo-channels/components/content-strip/content-strip.component.mjs +0 -56
  19. package/esm2022/lib/_common/microsites/mdo-channels/components/editor-dialog/editor-dialog.component.mjs +0 -286
  20. package/esm2022/lib/_common/microsites/mdo-channels/components/looker-section/looker-section.component.mjs +0 -45
  21. package/esm2022/lib/_common/microsites/mdo-channels/components/main-content/main-content.component.mjs +0 -143
  22. package/esm2022/lib/_common/microsites/mdo-channels/components/mobile-sections/mobile-sections.component.mjs +0 -35
  23. package/esm2022/lib/_common/microsites/mdo-channels/components/support-section/support-section.component.mjs +0 -30
  24. package/esm2022/lib/_common/microsites/mdo-channels/components/top-learners/top-learners.component.mjs +0 -42
  25. package/esm2022/lib/_common/microsites/mdo-channels/components/top-section/top-section.component.mjs +0 -99
  26. package/esm2022/lib/_common/microsites/mdo-channels/mdo-channel-v3/mdo-channel-v3.component.mjs +0 -222
  27. package/lib/_common/microsites/mdo-channels/components/column-section-display/column-section-display.component.d.ts +0 -20
  28. package/lib/_common/microsites/mdo-channels/components/column-section-display/column-section-display.component.d.ts.map +0 -1
  29. package/lib/_common/microsites/mdo-channels/components/competency/competency.component.d.ts +0 -16
  30. package/lib/_common/microsites/mdo-channels/components/competency/competency.component.d.ts.map +0 -1
  31. package/lib/_common/microsites/mdo-channels/components/content-strip/content-strip.component.d.ts +0 -16
  32. package/lib/_common/microsites/mdo-channels/components/content-strip/content-strip.component.d.ts.map +0 -1
  33. package/lib/_common/microsites/mdo-channels/components/editor-dialog/editor-dialog.component.d.ts +0 -61
  34. package/lib/_common/microsites/mdo-channels/components/editor-dialog/editor-dialog.component.d.ts.map +0 -1
  35. package/lib/_common/microsites/mdo-channels/components/looker-section/looker-section.component.d.ts +0 -17
  36. package/lib/_common/microsites/mdo-channels/components/looker-section/looker-section.component.d.ts.map +0 -1
  37. package/lib/_common/microsites/mdo-channels/components/main-content/main-content.component.d.ts +0 -32
  38. package/lib/_common/microsites/mdo-channels/components/main-content/main-content.component.d.ts.map +0 -1
  39. package/lib/_common/microsites/mdo-channels/components/mobile-sections/mobile-sections.component.d.ts +0 -15
  40. package/lib/_common/microsites/mdo-channels/components/mobile-sections/mobile-sections.component.d.ts.map +0 -1
  41. package/lib/_common/microsites/mdo-channels/components/support-section/support-section.component.d.ts +0 -10
  42. package/lib/_common/microsites/mdo-channels/components/support-section/support-section.component.d.ts.map +0 -1
  43. package/lib/_common/microsites/mdo-channels/components/top-learners/top-learners.component.d.ts +0 -13
  44. package/lib/_common/microsites/mdo-channels/components/top-learners/top-learners.component.d.ts.map +0 -1
  45. package/lib/_common/microsites/mdo-channels/components/top-section/top-section.component.d.ts +0 -23
  46. package/lib/_common/microsites/mdo-channels/components/top-section/top-section.component.d.ts.map +0 -1
  47. package/lib/_common/microsites/mdo-channels/mdo-channel-v3/mdo-channel-v3.component.d.ts +0 -54
  48. package/lib/_common/microsites/mdo-channels/mdo-channel-v3/mdo-channel-v3.component.d.ts.map +0 -1
@@ -11,50 +11,18 @@ import { SpeakersModule } from '../../speakers/speakers.module';
11
11
  import { AnnouncementsModule, CardsModule, CommonMethodsService, CommonStripModule, CompetencyPassbookModule, CompetencyPassbookMdoModule, ContentStripWithTabsLibModule, DataPointsModule, SlidersLibModule, HttpLoaderFactory, TopLearnersModule, CbpPlanModule } from './../../../../public-api';
12
12
  import { MdoChannelV2Component } from './mdo-channel-v2/mdo-channel-v2.component';
13
13
  import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
14
- import { HttpClient, HttpClientModule } from '@angular/common/http';
14
+ import { HttpClient } from '@angular/common/http';
15
15
  import { UserProgressModule } from '../../user-progress/user-progress.module';
16
16
  import { MdoLeaderboardModule } from '../../mdo-leaderboard/mdo-leaderboard.module';
17
17
  import { KeyHighlightsModule } from '../../key-highlights/key-highlights.module';
18
18
  import { OrderByPipeModule } from '../../../_pipes/order-by/order-by.pipe.module';
19
19
  import { SafeUrlPipeModule } from '../../../_pipes/safe-url/safe-url.module';
20
20
  import { VideoConferenceModule } from '../../video-conference/video-conference.module';
21
- import { MdoChannelV3Component } from './mdo-channel-v3/mdo-channel-v3.component';
22
- // Import all section components
23
- import { TopSectionComponent } from './components/top-section/top-section.component';
24
- import { LookerSectionComponent } from './components/looker-section/looker-section.component';
25
- import { TopLearnersComponent } from './components/top-learners/top-learners.component';
26
- import { MainContentComponent } from './components/main-content/main-content.component';
27
- import { SupportSectionComponent } from './components/support-section/support-section.component';
28
- import { CompetencyComponent } from './components/competency/competency.component';
29
- import { ContentStripComponent } from './components/content-strip/content-strip.component';
30
- import { ColumnSectionDisplayComponent } from './components/column-section-display/column-section-display.component';
31
- import { MobileSectionsComponent } from './components/mobile-sections/mobile-sections.component';
32
- // Import any shared widgets/components
33
- import { SbUiResolverModule } from '@sunbird-cb/resolver-v2';
34
- import { EditorDialogComponent } from './components/editor-dialog/editor-dialog.component';
35
- import { MatDialogModule } from '@angular/material/dialog'; // Updated to non-legacy module
36
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
37
- import { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';
38
- import { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';
39
- import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';
40
- import { MatLegacySlideToggleModule as MatSlideToggleModule } from '@angular/material/legacy-slide-toggle';
41
- import { DragDropModule } from '@angular/cdk/drag-drop';
42
21
  import * as i0 from "@angular/core";
43
22
  import * as i1 from "@ngx-translate/core";
44
23
  export class MDOChannelModule {
45
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MDOChannelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: MDOChannelModule, declarations: [MdoChannelV1Component, MdoChannelV2Component,
47
- MdoChannelV3Component,
48
- TopSectionComponent,
49
- LookerSectionComponent,
50
- TopLearnersComponent,
51
- MainContentComponent,
52
- SupportSectionComponent,
53
- CompetencyComponent,
54
- ContentStripComponent,
55
- ColumnSectionDisplayComponent,
56
- MobileSectionsComponent,
57
- EditorDialogComponent], imports: [CommonModule,
25
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: MDOChannelModule, declarations: [MdoChannelV1Component, MdoChannelV2Component], imports: [CommonModule,
58
26
  MatIconModule,
59
27
  MatChipsModule,
60
28
  SkeletonLoaderLibModule,
@@ -77,17 +45,7 @@ export class MDOChannelModule {
77
45
  MatTabsModule,
78
46
  OrderByPipeModule,
79
47
  SafeUrlPipeModule,
80
- VideoConferenceModule,
81
- SbUiResolverModule,
82
- FormsModule,
83
- ReactiveFormsModule, i1.TranslateModule, MatDialogModule,
84
- MatFormFieldModule,
85
- MatInputModule,
86
- MatButtonModule,
87
- MatSlideToggleModule,
88
- DragDropModule,
89
- HttpClientModule,
90
- MatIconModule], exports: [MdoChannelV1Component, MdoChannelV2Component, MdoChannelV3Component] }); }
48
+ VideoConferenceModule, i1.TranslateModule], exports: [MdoChannelV1Component, MdoChannelV2Component] }); }
91
49
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MDOChannelModule, providers: [
92
50
  CommonMethodsService
93
51
  ], imports: [CommonModule,
@@ -114,41 +72,18 @@ export class MDOChannelModule {
114
72
  OrderByPipeModule,
115
73
  SafeUrlPipeModule,
116
74
  VideoConferenceModule,
117
- SbUiResolverModule,
118
- FormsModule,
119
- ReactiveFormsModule,
120
75
  TranslateModule.forRoot({
121
76
  loader: {
122
77
  provide: TranslateLoader,
123
78
  useFactory: HttpLoaderFactory,
124
79
  deps: [HttpClient],
125
80
  },
126
- }),
127
- MatDialogModule,
128
- MatFormFieldModule,
129
- MatInputModule,
130
- MatButtonModule,
131
- MatSlideToggleModule,
132
- DragDropModule,
133
- HttpClientModule,
134
- MatIconModule] }); }
81
+ })] }); }
135
82
  }
136
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MDOChannelModule, decorators: [{
137
84
  type: NgModule,
138
85
  args: [{
139
- declarations: [MdoChannelV1Component, MdoChannelV2Component,
140
- MdoChannelV3Component,
141
- TopSectionComponent,
142
- LookerSectionComponent,
143
- TopLearnersComponent,
144
- MainContentComponent,
145
- SupportSectionComponent,
146
- CompetencyComponent,
147
- ContentStripComponent,
148
- ColumnSectionDisplayComponent,
149
- MobileSectionsComponent,
150
- EditorDialogComponent
151
- ],
86
+ declarations: [MdoChannelV1Component, MdoChannelV2Component],
152
87
  imports: [
153
88
  CommonModule,
154
89
  MatIconModule,
@@ -174,9 +109,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
174
109
  OrderByPipeModule,
175
110
  SafeUrlPipeModule,
176
111
  VideoConferenceModule,
177
- SbUiResolverModule,
178
- FormsModule,
179
- ReactiveFormsModule,
180
112
  TranslateModule.forRoot({
181
113
  loader: {
182
114
  provide: TranslateLoader,
@@ -184,20 +116,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
184
116
  deps: [HttpClient],
185
117
  },
186
118
  }),
187
- MatDialogModule,
188
- MatFormFieldModule,
189
- MatInputModule,
190
- MatButtonModule,
191
- MatSlideToggleModule,
192
- DragDropModule,
193
- HttpClientModule,
194
- MatIconModule,
195
119
  ],
196
- exports: [MdoChannelV1Component, MdoChannelV2Component, MdoChannelV3Component],
120
+ exports: [MdoChannelV1Component, MdoChannelV2Component],
197
121
  providers: [
198
122
  CommonMethodsService
199
123
  ],
200
124
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
201
125
  }]
202
126
  }] });
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRvLWNoYW5uZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NvbnN1bXB0aW9uL3NyYy9saWIvX2NvbW1vbi9taWNyb3NpdGVzL21kby1jaGFubmVscy9tZG8tY2hhbm5lbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixJQUFJLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLElBQUksYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2QsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwy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VVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdExlZ2FjeUNoaXBzTW9kdWxlIGFzIE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWNoaXBzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYnNNb2R1bGUgYXMgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJztcbmltcG9ydCB7IE1kb0NoYW5uZWxWMUNvbXBvbmVudCB9IGZyb20gJy4vbWRvLWNoYW5uZWwtdjEvbWRvLWNoYW5uZWwtdjEuY29tcG9uZW50JztcbmltcG9ydCB7IFNrZWxldG9uTG9hZGVyTGliTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2tlbGV0b24tbG9hZGVyLWxpYi9za2VsZXRvbi1sb2FkZXItbGliLm1vZHVsZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRzT2ZXZWVrTW9kdWxlIH0gZnJvbSAnLi4vLi4vaGlnaGxpZ2h0cy1vZi13ZWVrL2hpZ2hsaWdodHMtb2Ytd2Vlay5tb2R1bGUnO1xuaW1wb3J0IHsgRXZlbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZXZlbnRzL2V2ZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgU3BlYWtlcnNNb2R1bGUgfSBmcm9tICcuLi8uLi9zcGVha2Vycy9zcGVha2Vycy5tb2R1bGUnO1xuXG5pbXBvcnQge1xuICBBbm5vdW5jZW1lbnRzTW9kdWxlLFxuICBDYXJkc01vZHVsZSxcbiAgQ29tbW9uTWV0aG9kc1NlcnZpY2UsXG4gIENvbW1vblN0cmlwTW9kdWxlLFxuICBDb21wZXRlbmN5UGFzc2Jvb2tNb2R1bGUsXG4gIENvbXBldGVuY3lQYXNzYm9va01kb01vZHVsZSxcbiAgQ29udGVudFN0cmlwV2l0aFRhYnNMaWJNb2R1bGUsXG4gIERhdGFQb2ludHNNb2R1bGUsXG4gIFNsaWRlcnNMaWJNb2R1bGUsXG4gIEh0dHBMb2FkZXJGYWN0b3J5LFxuICBUb3BMZWFybmVyc01vZHVsZSxcbiAgQ2JwUGxhbk1vZHVsZVxufSBmcm9tICcuLy4uLy4uLy4uLy4uL3B1YmxpYy1hcGknXG5pbXBvcnQgeyBNZG9DaGFubmVsVjJDb21wb25lbnQgfSBmcm9tICcuL21kby1jaGFubmVsLXYyL21kby1jaGFubmVsLXYyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFVzZXJQcm9ncmVzc01vZHVsZSB9IGZyb20gJy4uLy4uL3VzZXItcHJvZ3Jlc3MvdXNlci1wcm9ncmVzcy5tb2R1bGUnO1xuaW1wb3J0IHsgTWRvTGVhZGVyYm9hcmRNb2R1bGUgfSBmcm9tICcuLi8uLi9tZG8tbGVhZGVyYm9hcmQvbWRvLWxlYWRlcmJvYXJkLm1vZHVsZSc7XG5pbXBvcnQgeyBLZXlIaWdobGlnaHRzTW9kdWxlIH0gZnJvbSAnLi4vLi4va2V5LWhpZ2hsaWdodHMva2V5LWhpZ2hsaWdodHMubW9kdWxlJztcbmltcG9ydCB7IE9yZGVyQnlQaXBlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vX3BpcGVzL29yZGVyLWJ5L29yZGVyLWJ5LnBpcGUubW9kdWxlJztcbmltcG9ydCB7IFNhZmVVcmxQaXBlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vX3BpcGVzL3NhZmUtdXJsL3NhZmUtdXJsLm1vZHVsZSc7XG5pbXBvcnQgeyBWaWRlb0NvbmZlcmVuY2VNb2R1bGUgfSBmcm9tICcuLi8uLi92aWRlby1jb25mZXJlbmNlL3ZpZGVvLWNvbmZlcmVuY2UubW9kdWxlJztcbmltcG9ydCB7IE1kb0NoYW5uZWxWM0NvbXBvbmVudCB9IGZyb20gJy4vbWRvLWNoYW5uZWwtdjMvbWRvLWNoYW5uZWwtdjMuY29tcG9uZW50Jztcbi8vIEltcG9ydCBhbGwgc2VjdGlvbiBjb21wb25lbnRzXG5pbXBvcnQgeyBUb3BTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RvcC1zZWN0aW9uL3RvcC1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb29rZXJTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvb2tlci1zZWN0aW9uL2xvb2tlci1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb3BMZWFybmVyc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90b3AtbGVhcm5lcnMvdG9wLWxlYXJuZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYWluQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tYWluLWNvbnRlbnQvbWFpbi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdXBwb3J0U2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zdXBwb3J0LXNlY3Rpb24vc3VwcG9ydC1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wZXRlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbXBldGVuY3kvY29tcGV0ZW5jeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGVudFN0cmlwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbnRlbnQtc3RyaXAvY29udGVudC1zdHJpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sdW1uU2VjdGlvbkRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sdW1uLXNlY3Rpb24tZGlzcGxheS9jb2x1bW4tc2VjdGlvbi1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2JpbGVTZWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2JpbGUtc2VjdGlvbnMvbW9iaWxlLXNlY3Rpb25zLmNvbXBvbmVudCc7XG5cbi8vIEltcG9ydCBhbnkgc2hhcmVkIHdpZGdldHMvY29tcG9uZW50c1xuaW1wb3J0IHsgU2JVaVJlc29sdmVyTW9kdWxlIH0gZnJvbSAnQHN1bmJpcmQtY2IvcmVzb2x2ZXItdjInO1xuaW1wb3J0IHsgRWRpdG9yRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXRvci1kaWFsb2cvZWRpdG9yLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJzsgLy8gVXBkYXRlZCB0byBub24tbGVnYWN5IG1vZHVsZVxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0TGVnYWN5SW5wdXRNb2R1bGUgYXMgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktaW5wdXQnO1xuaW1wb3J0IHsgTWF0TGVnYWN5QnV0dG9uTW9kdWxlIGFzIE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1idXR0b24nO1xuaW1wb3J0IHsgTWF0TGVnYWN5U2xpZGVUb2dnbGVNb2R1bGUgYXMgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW01kb0NoYW5uZWxWMUNvbXBvbmVudCwgTWRvQ2hhbm5lbFYyQ29tcG9uZW50LFxuICAgIE1kb0NoYW5uZWxWM0NvbXBvbmVudCxcbiAgICBUb3BTZWN0aW9uQ29tcG9uZW50LFxuICAgIExvb2tlclNlY3Rpb25Db21wb25lbnQsXG4gICAgVG9wTGVhcm5lcnNDb21wb25lbnQsXG4gICAgTWFpbkNvbnRlbnRDb21wb25lbnQsXG4gICAgU3VwcG9ydFNlY3Rpb25Db21wb25lbnQsXG4gICAgQ29tcGV0ZW5jeUNvbXBvbmVudCxcbiAgICBDb250ZW50U3RyaXBDb21wb25lbnQsXG4gICAgQ29sdW1uU2VjdGlvbkRpc3BsYXlDb21wb25lbnQsXG4gICAgTW9iaWxlU2VjdGlvbnNDb21wb25lbnQsXG4gICAgRWRpdG9yRGlhbG9nQ29tcG9uZW50XG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBTa2VsZXRvbkxvYWRlckxpYk1vZHVsZSxcbiAgICBBbm5vdW5jZW1lbnRzTW9kdWxlLFxuICAgIFRvcExlYXJuZXJzTW9kdWxlLFxuICAgIENicFBsYW5Nb2R1bGUsXG4gICAgQ2FyZHNNb2R1bGUsXG4gICAgQ29tbW9uU3RyaXBNb2R1bGUsXG4gICAgQ29tcGV0ZW5jeVBhc3Nib29rTW9kdWxlLFxuICAgIENvbXBldGVuY3lQYXNzYm9va01kb01vZHVsZSxcbiAgICBDb250ZW50U3RyaXBXaXRoVGFic0xpYk1vZHVsZSxcbiAgICBEYXRhUG9pbnRzTW9kdWxlLFxuICAgIFNsaWRlcnNMaWJNb2R1bGUsXG4gICAgSGlnaGxpZ2h0c09mV2Vla01vZHVsZSxcbiAgICBVc2VyUHJvZ3Jlc3NNb2R1bGUsXG4gICAgRXZlbnRzTW9kdWxlLFxuICAgIFNwZWFrZXJzTW9kdWxlLFxuICAgIE1kb0xlYWRlcmJvYXJkTW9kdWxlLFxuICAgIEtleUhpZ2hsaWdodHNNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBPcmRlckJ5UGlwZU1vZHVsZSxcbiAgICBTYWZlVXJsUGlwZU1vZHVsZSxcbiAgICBWaWRlb0NvbmZlcmVuY2VNb2R1bGUsXG4gICAgU2JVaVJlc29sdmVyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgbG9hZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgdXNlRmFjdG9yeTogSHR0cExvYWRlckZhY3RvcnksXG4gICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG5EcmFnRHJvcE1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtNZG9DaGFubmVsVjFDb21wb25lbnQsIE1kb0NoYW5uZWxWMkNvbXBvbmVudCwgTWRvQ2hhbm5lbFYzQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29tbW9uTWV0aG9kc1NlcnZpY2VcbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIE1ET0NoYW5uZWxNb2R1bGUgeyB9XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRvLWNoYW5uZWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NvbnN1bXB0aW9uL3NyYy9saWIvX2NvbW1vbi9taWNyb3NpdGVzL21kby1jaGFubmVscy9tZG8tY2hhbm5lbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixJQUFJLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLElBQUksYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2QsTUFBTSwwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7O0FBNEN2RixNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkF2Q1oscUJBQXFCLEVBQUUscUJBQXFCLGFBRXpELFlBQVk7WUFDWixhQUFhO1lBQ2IsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsNkJBQTZCO1lBQzdCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osY0FBYztZQUNkLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIscUJBQXFCLGlDQVNiLHFCQUFxQixFQUFFLHFCQUFxQjtnSEFLM0MsZ0JBQWdCLGFBSmpCO1lBQ1Isb0JBQW9CO1NBQUMsWUFsQ3JCLFlBQVk7WUFDWixhQUFhO1lBQ2IsY0FBYztZQUNkLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsNkJBQTZCO1lBQzdCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQixZQUFZO1lBQ1osY0FBYztZQUNkLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLGVBQWUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RCLE1BQU0sRUFBRTtvQkFDTixPQUFPLEVBQUUsZUFBZTtvQkFDeEIsVUFBVSxFQUFFLGlCQUFpQjtvQkFDN0IsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUNuQjthQUNGLENBQUM7OzRGQU9PLGdCQUFnQjtrQkF4QzVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUM7b0JBQzVELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCx1QkFBdUI7d0JBQ3ZCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixlQUFlLENBQUMsT0FBTyxDQUFDOzRCQUN0QixNQUFNLEVBQUU7Z0NBQ04sT0FBTyxFQUFFLGVBQWU7Z0NBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7Z0NBQzdCLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzs2QkFDbkI7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxxQkFBcUIsQ0FBQztvQkFDdkQsU0FBUyxFQUFDO3dCQUNSLG9CQUFvQjtxQkFBQztvQkFDckIsT0FBTyxFQUFDLENBQUMsc0JBQXNCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRMZWdhY3lDaGlwc01vZHVsZSBhcyBNYXRDaGlwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jaGlwcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMZWdhY3lUYWJzTW9kdWxlIGFzIE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktdGFicyc7XG5pbXBvcnQgeyBNZG9DaGFubmVsVjFDb21wb25lbnQgfSBmcm9tICcuL21kby1jaGFubmVsLXYxL21kby1jaGFubmVsLXYxLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvbkxvYWRlckxpYk1vZHVsZSB9IGZyb20gJy4uLy4uL3NrZWxldG9uLWxvYWRlci1saWIvc2tlbGV0b24tbG9hZGVyLWxpYi5tb2R1bGUnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0c09mV2Vla01vZHVsZSB9IGZyb20gJy4uLy4uL2hpZ2hsaWdodHMtb2Ytd2Vlay9oaWdobGlnaHRzLW9mLXdlZWsubW9kdWxlJztcbmltcG9ydCB7IEV2ZW50c01vZHVsZSB9IGZyb20gJy4uLy4uL2V2ZW50cy9ldmVudHMubW9kdWxlJztcbmltcG9ydCB7IFNwZWFrZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vc3BlYWtlcnMvc3BlYWtlcnMubW9kdWxlJztcblxuaW1wb3J0IHtcbiAgQW5ub3VuY2VtZW50c01vZHVsZSxcbiAgQ2FyZHNNb2R1bGUsXG4gIENvbW1vbk1ldGhvZHNTZXJ2aWNlLFxuICBDb21tb25TdHJpcE1vZHVsZSxcbiAgQ29tcGV0ZW5jeVBhc3Nib29rTW9kdWxlLFxuICBDb21wZXRlbmN5UGFzc2Jvb2tNZG9Nb2R1bGUsXG4gIENvbnRlbnRTdHJpcFdpdGhUYWJzTGliTW9kdWxlLFxuICBEYXRhUG9pbnRzTW9kdWxlLFxuICBTbGlkZXJzTGliTW9kdWxlLFxuICBIdHRwTG9hZGVyRmFjdG9yeSxcbiAgVG9wTGVhcm5lcnNNb2R1bGUsXG4gIENicFBsYW5Nb2R1bGVcbn0gZnJvbSAnLi8uLi8uLi8uLi8uLi9wdWJsaWMtYXBpJ1xuaW1wb3J0IHsgTWRvQ2hhbm5lbFYyQ29tcG9uZW50IH0gZnJvbSAnLi9tZG8tY2hhbm5lbC12Mi9tZG8tY2hhbm5lbC12Mi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBVc2VyUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICcuLi8uLi91c2VyLXByb2dyZXNzL3VzZXItcHJvZ3Jlc3MubW9kdWxlJztcbmltcG9ydCB7IE1kb0xlYWRlcmJvYXJkTW9kdWxlIH0gZnJvbSAnLi4vLi4vbWRvLWxlYWRlcmJvYXJkL21kby1sZWFkZXJib2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgS2V5SGlnaGxpZ2h0c01vZHVsZSB9IGZyb20gJy4uLy4uL2tleS1oaWdobGlnaHRzL2tleS1oaWdobGlnaHRzLm1vZHVsZSc7XG5pbXBvcnQgeyBPcmRlckJ5UGlwZU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL19waXBlcy9vcmRlci1ieS9vcmRlci1ieS5waXBlLm1vZHVsZSc7XG5pbXBvcnQgeyBTYWZlVXJsUGlwZU1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL19waXBlcy9zYWZlLXVybC9zYWZlLXVybC5tb2R1bGUnO1xuaW1wb3J0IHsgVmlkZW9Db25mZXJlbmNlTW9kdWxlIH0gZnJvbSAnLi4vLi4vdmlkZW8tY29uZmVyZW5jZS92aWRlby1jb25mZXJlbmNlLm1vZHVsZSc7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNZG9DaGFubmVsVjFDb21wb25lbnQsIE1kb0NoYW5uZWxWMkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBTa2VsZXRvbkxvYWRlckxpYk1vZHVsZSxcbiAgICBBbm5vdW5jZW1lbnRzTW9kdWxlLFxuICAgIFRvcExlYXJuZXJzTW9kdWxlLFxuICAgIENicFBsYW5Nb2R1bGUsXG4gICAgQ2FyZHNNb2R1bGUsXG4gICAgQ29tbW9uU3RyaXBNb2R1bGUsXG4gICAgQ29tcGV0ZW5jeVBhc3Nib29rTW9kdWxlLFxuICAgIENvbXBldGVuY3lQYXNzYm9va01kb01vZHVsZSxcbiAgICBDb250ZW50U3RyaXBXaXRoVGFic0xpYk1vZHVsZSxcbiAgICBEYXRhUG9pbnRzTW9kdWxlLFxuICAgIFNsaWRlcnNMaWJNb2R1bGUsXG4gICAgSGlnaGxpZ2h0c09mV2Vla01vZHVsZSxcbiAgICBVc2VyUHJvZ3Jlc3NNb2R1bGUsXG4gICAgRXZlbnRzTW9kdWxlLFxuICAgIFNwZWFrZXJzTW9kdWxlLFxuICAgIE1kb0xlYWRlcmJvYXJkTW9kdWxlLFxuICAgIEtleUhpZ2hsaWdodHNNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBPcmRlckJ5UGlwZU1vZHVsZSxcbiAgICBTYWZlVXJsUGlwZU1vZHVsZSxcbiAgICBWaWRlb0NvbmZlcmVuY2VNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgbG9hZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgdXNlRmFjdG9yeTogSHR0cExvYWRlckZhY3RvcnksXG4gICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcbiAgICAgIH0sXG4gICAgfSksXG4gIF0sXG4gIGV4cG9ydHM6IFtNZG9DaGFubmVsVjFDb21wb25lbnQsIE1kb0NoYW5uZWxWMkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczpbXG4gICAgQ29tbW9uTWV0aG9kc1NlcnZpY2VdLFxuICAgIHNjaGVtYXM6W0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIE1ET0NoYW5uZWxNb2R1bGUgeyB9XG4iXX0=
@@ -514,7 +514,7 @@ export class WidgetContentLibService {
514
514
  if (enrollmentData && enrollmentData.recent_language) {
515
515
  if (baseContentRead.languageMapV1 && Object.keys(baseContentRead.languageMapV1).length) {
516
516
  const recent_LANG_DATA = baseContentRead.languageMapV1[enrollmentData.recent_language];
517
- if (recent_LANG_DATA && recent_LANG_DATA.id && (recent_LANG_DATA.id !== content.identifier)) {
517
+ if (recent_LANG_DATA && recent_LANG_DATA.id) {
518
518
  return this.gotoPlayerPage(enrollmentData, content, baseContentRead?.identifier, resourceId, mimeType, enrollmentData.recent_language, recent_LANG_DATA.id);
519
519
  }
520
520
  }
@@ -634,4 +634,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
634
634
  providedIn: 'root',
635
635
  }]
636
636
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigurationsService }, { type: i3.WidgetUserServiceLib }, { type: i4.ContentLanguageService }]; } });
637
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY29uc3VtcHRpb24vc3JjL2xpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsaUJBQWlCO0FBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTFELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBRTVCLGdCQUFnQjtBQUVoQix1Q0FBdUM7QUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztBQUMvQyxNQUFNLGtCQUFrQixHQUFHLHFDQUFxQyxDQUFBO0FBQ2hFLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixVQUFVO0lBQ3ZDLGlCQUFpQixFQUFFLDBCQUEwQjtJQUM3QyxhQUFhLEVBQUUsR0FBRyxpQkFBaUIsb0JBQW9CO0lBQ3ZELGFBQWEsRUFBRSxHQUFHLGlCQUFpQixvQkFBb0I7SUFDdkQsbUJBQW1CLEVBQUUsR0FBRyxpQkFBaUIseUJBQXlCO0lBQ2xFLGNBQWMsRUFBRSxHQUFHLGlCQUFpQiwrQkFBK0I7SUFDbkUsc0JBQXNCLEVBQUUsR0FBRyxp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LENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQzthQUNoRCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FDOUMsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELHlCQUF5QixDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtJQUNyQyxDQUFDOytHQWhyQlUsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Mic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgRU1QVFksIEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnksIG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOc0NvbnRlbnRTdHJpcE11bHRpcGxlIH0gZnJvbSAnLi4vX21vZGVscy9jb250ZW50LXN0cmlwLW11bHRpcGxlLm1vZGVsJztcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnO1xuaW1wb3J0IHsgTlNTZWFyY2ggfSBmcm9tICcuLi9fbW9kZWxzL3dpZGdldC1zZWFyY2gubW9kZWwnO1xuLy8gdHNsaW50OmRpc2FibGVcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuL3ZpZXdlci1yb3V0ZS11dGlsJ1xuaW1wb3J0IHsgV2lkZ2V0VXNlclNlcnZpY2VMaWIgfSBmcm9tICcuL3dpZGdldC11c2VyLWxpYi5zZXJ2aWNlJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQ29udGVudExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vY29udGVudC1sYW5ndWFnZS5zZXJ2aWNlJztcbi8vIHRzbGludDplbmFibGVcblxuLy8gVE9ETzogbW92ZSB0aGlzIGluIHNvbWUgY29tbW9uIHBsYWNlXG5jb25zdCBQUk9URUNURURfU0xBR19WOCA9ICcvYXBpcy9wcm90ZWN0ZWQvdjgnO1xuY29uc3QgUFJPRF9CQVNFX0VORFBPSU5UID0gJ2h0dHBzOi8vcG9ydGFsLmlnb3RrYXJtYXlvZ2kuZ292LmluJ1xuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIENPTlRFTlQ6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50YCxcbiAgQVVUSE9SSU5HX0NPTlRFTlQ6IGAvYXBpL2NvdXJzZS92MS9oaWVyYXJjaHlgLFxuICBDT05URU5UX0xJS0VTOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9saWtlQ291bnRgLFxuICBTRVRfUzNfQ09PS0lFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZXRDb29raWVgLFxuICBTRVRfUzNfSU1BR0VfQ09PS0lFOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZXRJbWFnZUNvb2tpZWAsXG4gIEZFVENIX01BTklGRVNUOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9nZXRXZWJNb2R1bGVNYW5pZmVzdGAsXG4gIEZFVENIX1dFQl9NT0RVTEVfRklMRVM6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2dldFdlYk1vZHVsZUZpbGVzYCxcbiAgTVVMVElQTEVfQ09OVEVOVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvbXVsdGlwbGVgLFxuICBDT05URU5UX1NFQVJDSF9WNTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvc2VhcmNoVjVgLFxuICBDT05URU5UX1NFQVJDSF9WNjogYC9hcGlzL3Byb3hpZXMvdjgvc3VuYmlyZGlnb3Qvc2VhcmNoYCxcbiAgVFJFTkRJTkdfQ09OVEVOVF9TRUFSQ0g6IGBhcGlzL3Byb3hpZXMvdjgvdHJlbmRpbmcvY29udGVudC9zZWFyY2hgLFxuICBDT05URU5UX1NFQVJDSF9SRUxBVEVEX0NCUF9WNjogYC9hcGlzL3Byb3hpZXMvdjgvc3VuYmlyZGlnb3Qvc2VhcmNoYCxcbiAgQ09OVEVOVF9TRUFSQ0hfUkVHSU9OX1JFQ09NTUVOREFUSU9OOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZWFyY2hSZWdpb25SZWNvbW1lbmRhdGlvbmAsXG4gIENPTlRFTlRfSElTVE9SWTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvaGlzdG9yeWAsXG4gIENPTlRFTlRfSElTVE9SWVYyOiBgL2FwaXMvcHJveGllcy92OC9yZWFkL2NvbnRlbnQtcHJvZ3Jlc2AsXG4gIENPVVJTRV9CQVRDSF9MSVNUOiBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92MS9iYXRjaC9saXN0YCxcbiAgQ09VUlNFX0JBVENIOiBgL2FwaXMvcHJveGllcy92OC9jb3Vyc2UvdjEvYmF0Y2gvcmVhZGAsXG4gIEFVVE9fQVNTSUdOX0JBVENIOiBgL2FwaXMvcHJvdGVjdGVkL3Y4L2NvaG9ydHMvdXNlci9hdXRvZW5yb2xsbWVudC9gLFxuICBBVVRPX0FTU0lHTl9DVVJBVEVEX0JBVENIOiBgL2FwaXMvcHJveGllcy92OC9jdXJhdGVkcHJvZ3JhbS92MS9lbnJvbGAsXG4gIEFVVE9fQVNTSUdOX09QRU5fUFJPR1JBTTogYC9hcGlzL3Byb3hpZXMvdjgvb3BlbnByb2dyYW0vdjEvZW5yb2xgLFxuICBVU0VSX0NPTlRJTlVFX0xFQVJOSU5HOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9oaXN0b3J5L2NvbnRpbnVlYCxcbiAgQ09OVEVOVF9SQVRJTkc6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL3JhdGluZ2AsXG4gIENPTExFQ1RJT05fSElFUkFSQ0hZOiAodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nKSA9PlxuICAgIGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2NvbGxlY3Rpb24vJHt0eXBlfS8ke2lkfWAsXG4gIFJFR0lTVFJBVElPTl9TVEFUVVM6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9hZG1pbi91c2VyUmVnaXN0cmF0aW9uL2NoZWNrVXNlclJlZ2lzdHJhdGlvbkNvbnRlbnRgLFxuICBNQVJLX0FTX0NPTVBMRVRFX01FVEE6IChjb250ZW50SWQ6IHN0cmluZykgPT4gYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvcHJvZ3Jlc3MvJHtjb250ZW50SWR9YCxcbiAgRU5ST0xMX0JBVENIOiBgL2FwaXMvcHJveGllcy92OC9sZWFybmVyL2NvdXJzZS92MS9lbnJvbGAsXG4gIEVOUk9MTF9CQVRDSF9XRjogYC9hcGlzL3Byb3hpZXMvdjgvd29ya2Zsb3cvYmxlbmRlZHByb2dyYW0vZW5yb2xgLFxuICBXSVRIRFJBV19CQVRDSF9XRjogYC9hcGlzL3Byb3hpZXMvdjgvd29ya2Zsb3cvYmxlbmRlZHByb2dyYW0vdW5lbnJvbGAsXG4gIEJMRU5ERURfVVNFUl9XRjogYC9hcGlzL3Byb3hpZXMvdjgvd29ya2Zsb3cvYmxlbmRlZHByb2dyYW0vdXNlci9zZWFyY2hgLFxuICBCTEVOREVEX1VTRVJfQ09VTlQ6IGBhcGlzL3Byb3hpZXMvdjgvd29ya2Zsb3cvYmxlbmRlZHByb2dyYW0vZW5yb2wvc3RhdHVzL2NvdW50YCxcbiAgQ0VSVF9BRERfVEVNUExBVEU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb2hvcnRzL2NvdXJzZS9iYXRjaC9jZXJ0L3RlbXBsYXRlL2FkZGAsXG4gIENFUlRfSVNTVUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb2hvcnRzL2NvdXJzZS9iYXRjaC9jZXJ0L2lzc3VlYCxcbiAgQ0VSVF9ET1dOTE9BRDogKGNlcnRJZDogYW55KSA9PiBgJHtQUk9URUNURURfU0xBR19WOH0vY29ob3J0cy9jb3Vyc2UvYmF0Y2gvY2VydC9kb3dubG9hZC8ke2NlcnRJZH1gLFxuICBSRUFEX0tBUk1BUE9JTlRTOiBgL2FwaXMvcHJveGllcy92OC9rYXJtYXBvaW50cy9yZWFkYCxcbiAgQ09OVEVOVF9SRUFEOiAoY29udGVudElkOiBhbnkpID0+IGAvYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL3JlYWQvJHtjb250ZW50SWR9YCxcbiAgUkVBRF9DT1VSU0VfS0FSTUFQT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L2thcm1hcG9pbnRzL3VzZXIvY291cnNlL3JlYWQnLFxuICBDTEFJTV9LQVJNQVBPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgvY2xhaW1rYXJtYXBvaW50cycsXG4gIFVTRVJfS0FSTUFfUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC91c2VyL3RvdGFsa2FybWFwb2ludHMnLFxuICBBR0dSRUdBVElPTl9TRUFSQ0g6ICcvYXBpcy9wcm94aWVzL3Y4L2NvbnRlbnQvYWdncmVnYXRpb24vc2VhcmNoJyxcbiAgRkVBVFVSRV9TRUFSQ0g6ICcvYXBpcy9wcm94aWVzL3Y4L2ZlYXR1cmVkL2NvbnRlbnQvc2VhcmNoJyxcbiAgU0FWRV9TQUtTSEFNQUlfUkVDT01NRU5ERURfRkVFREJBQ0s6IGAvYXBpcy9wcm94aWVzL3Y4L2NvdXJzZVJlY29tbWVuZGF0aW9uL2ZlZWRiYWNrYCxcbiAgQ09OVEVOVF9TRUFSQ0g6IGAvYXBpL2NvbnRlbnQvdjEvc2VhcmNoYFxufTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldENvbnRlbnRMaWJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU3ZjOiBXaWRnZXRVc2VyU2VydmljZUxpYixcbiAgICBwcml2YXRlIGNvbnRlbnRMYW5ndWFnZVN2YzogQ29udGVudExhbmd1YWdlU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICB0b2NDb25maWdEYXRhOiBhbnkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuICB0b2NDb25maWdEYXRhJCA9IHRoaXMudG9jQ29uZmlnRGF0YS5hc09ic2VydmFibGUoKTtcbiAgb25lU3RlcFJlc3VtZUVuYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0ZWxlbWV0cnlEYXRhOiBhbnkgPSBuZXcgU3ViamVjdDxhbnk+KClcbiAgcHVibGljIHRlbGVtZXRyeURhdGEkID0gdGhpcy50ZWxlbWV0cnlEYXRhLmFzT2JzZXJ2YWJsZSgpXG4gIHRlbGVtZXRyeUV2ZW50RGF0YTogYW55ID0gbmV3IFN1YmplY3Q8YW55PigpXG4gIHRlbGVtZXRyeUV2ZW50RGF0YSQgPSB0aGlzLnRlbGVtZXRyeUV2ZW50RGF0YS5hc09ic2VydmFibGUoKVxuICBjdXJyZW50TWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnQ7XG4gIGN1cnJlbnRDb250ZW50UmVhZE1ldGFEYXRhITogTnNDb250ZW50LklDb250ZW50O1xuICBjdXJyZW50QmF0Y2hFbnJvbGxtZW50TGlzdCE6IE5zQ29udGVudC5JQ291cnNlW107XG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oe30pO1xuICBwcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhJCA9IHRoaXMucHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YS5hc09ic2VydmFibGUoKTtcbiAgcmVsZXZlbnROb3RSZWxldmVudCA9IG5ldyBTdWJqZWN0PHsgaXNSZWxldmVudDogYm9vbGVhbjsgd2lkZ2V0RGF0YTogYW55IH0+KCk7XG4gIHJlbGV2ZW50Tm90UmVsZXZlbnQkID0gdGhpcy5yZWxldmVudE5vdFJlbGV2ZW50LmFzT2JzZXJ2YWJsZSgpXG4gIHN0b3JlZFJlY29tbWVuZGVkSWRzOiBhbnkgPSB7fTtcbiAgZmVlZGJhY2tEYXRhRm9yQ291cnNlOiBhbnkgPSB7fTtcbiAgaXNUZWxlbWVudHJ5U3Vic2NyaWJlZCA9IGZhbHNlXG4gIGNoYW5nZVRlbGVtZXRyeURhdGEobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy50ZWxlbWV0cnlEYXRhLm5leHQobWVzc2FnZSk7XG4gIH1cblxuICBjaGFuZ2VUZWxlbWV0cnlFdmVudERhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy50ZWxlbWV0cnlFdmVudERhdGEubmV4dChkYXRhKTtcbiAgfVxuICBpc1Jlc291cmNlKHByaW1hcnlDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgaWYgKHByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgY29uc3QgaXNSZXNvdXJjZSA9IChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5MRUFSTklOR19SRVNPVVJDRSkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLlBSQUNUSUNFX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuRklOQUxfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkNPTVBfQVNTRVNTTUVOVCkgfHxcbiAgICAgICAgKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLk9GRkxJTkVfU0VTU0lPTik7XG4gICAgICByZXR1cm4gaXNSZXNvdXJjZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZmV0Y2hNYXJrQXNDb21wbGV0ZU1ldGEoaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBjb25zdCB1cmwgPSBBUElfRU5EX1BPSU5UUy5NQVJLX0FTX0NPTVBMRVRFX01FVEEoaWRlbnRpZmllcilcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnRvUHJvbWlzZSgpXG4gICAgaWYgKHVybCkgeyB9XG4gICAgcmV0dXJuIG9mKCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICB1cGRhdGVUb2NDb25maWcoZGF0YTogYW55KSB7XG4gICAgdGhpcy50b2NDb25maWdEYXRhLm5leHQoZGF0YSk7XG4gIH1cblxuICBmZXRjaENvbnRlbnQoXG4gICAgY29udGVudElkOiBzdHJpbmcsXG4gICAgaGllcmFyY2h5VHlwZTogJ2FsbCcgfCAnbWluaW1hbCcgfCAnZGV0YWlsJyA9ICdkZXRhaWwnLFxuICAgIF9hZGRpdGlvbmFsRmllbGRzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHByaW1hcnlDYXRlZ29yeT86IHN0cmluZyB8IG51bGwsXG4gICk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50PiB7XG4gICAgLy8gY29uc3QgdXJsID0gYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVH0vJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWBcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJyk7XG4gICAgaWYgKHByaW1hcnlDYXRlZ29yeSAmJiB0aGlzLmlzUmVzb3VyY2UocHJpbWFyeUNhdGVnb3J5KSkge1xuICAgICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICAgIHVybCA9IGAvYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL3JlYWQvJHtjb250ZW50SWR9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IGAvYXBpL2NvbnRlbnQvdjEvcmVhZC8ke2NvbnRlbnRJZH1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJyk7XG4gICAgICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICAgICAgdXJsID0gYGFwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P21vZGU9ZWRpdGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsID0gYC9hcGkvY291cnNlL3YxL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybCwgeyBhZGRpdGlvbmFsRmllbGRzIH0pXG4gICAgLy8gICAucGlwZShyZXRyeSgxKSlcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKVxuICAgICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgIC8vIGlmIChhcGlEYXRhICYmIGFwaURhdGEucmVzdWx0KSB7XG4gICAgLy8gICByZXR1cm4gYXBpRGF0YS5yZXN1bHQuY29udGVudFxuICAgIC8vIH1cbiAgfVxuICBmZXRjaEF1dGhvcmluZ0NvbnRlbnQoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIGNvbnN0IGZvcmNyZWF0b3IgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnZWRpdE1vZGU9dHJ1ZScpO1xuICAgIGxldCB1cmwgPSAnJztcbiAgICBpZiAoZm9yY3JlYXRvcikge1xuICAgICAgdXJsID0gYGFwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P21vZGU9ZWRpdGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9IGAke0FQSV9FTkRfUE9JTlRTLkFVVEhPUklOR19DT05URU5UfS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT1kZXRhaWxgO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KHVybCkucGlwZShzaGFyZVJlcGxheSgxKSwgciA9PiByKTtcbiAgfVxuICBmZXRjaE11bHRpcGxlQ29udGVudChpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLk1VTFRJUExFX0NPTlRFTlR9LyR7aWRzLmpvaW4oJywnKX1gLFxuICAgICk7XG4gIH1cbiAgZmV0Y2hDb2xsZWN0aW9uSGllcmFyY2h5KHR5cGU6IHN0cmluZywgaWQ6IHN0cmluZywgcGFnZU51bWJlcjogbnVtYmVyID0gMCwgcGFnZVNpemU6IG51bWJlciA9IDEpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbGxlY3Rpb25IaWVyYXJjaHlSZXNwb25zZT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT0xMRUNUSU9OX0hJRVJBUkNIWShcbiAgICAgICAgdHlwZSxcbiAgICAgICAgaWQsXG4gICAgICApfT9wYWdlTnVtYmVyPSR7cGFnZU51bWJlcn0mcGFnZVNpemU9JHtwYWdlU2l6ZX1gLFxuICAgICk7XG4gIH1cblxuICBmZXRjaEJsZW5kZWRDb3Vyc2UoKSB7XG5cbiAgfVxuXG4gIGZldGNoQ291cnNlQmF0Y2hlcyhyZXE6IGFueSk6IE9ic2VydmFibGU8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+KEFQSV9FTkRfUE9JTlRTLkNPVVJTRV9CQVRDSF9MSVNULCByZXEpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgLy8gZmV0Y2ggaW5kaXZpZHVhbCBiYXRjaFxuICBmZXRjaENvdXJzZUJhdGNoKGJhdGNoSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09VUlNFX0JBVENIfS8ke2JhdGNoSWR9YCxcbiAgICApO1xuICB9XG5cbiAgYXV0b0Fzc2lnbkJhdGNoQXBpKGlkZW50aWZpZXI6IGFueSk6IE9ic2VydmFibGU8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+KGAke0FQSV9FTkRfUE9JTlRTLkFVVE9fQVNTSUdOX0JBVENIfSR7aWRlbnRpZmllcn1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHJldHJ5KDEpLFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5yZXN1bHQucmVzcG9uc2VcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIGF1dG9Bc3NpZ25DdXJhdGVkQmF0Y2hBcGkocmVxdWVzdDogYW55LCBwcm9ncmFtVHlwZTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgY29uc3QgdXJsID0gcHJvZ3JhbVR5cGUgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTU9ERVJBVEVEX1BST0dSQU0gP1xuICAgICAgQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNIDogQVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQ1VSQVRFRF9CQVRDSDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7dXJsfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgZW5yb2xsVXNlclRvQmF0Y2gocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0gsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGVucm9sbEFuZFVuZW5yb2xsVXNlclRvQmF0Y2hXRihyZXE6IGFueSwgdHlwZTogYW55KSB7XG4gICAgY29uc3QgdXJsOiBhbnkgPSB0eXBlID09PSAnV0lUSERSQVcnID8gQVBJX0VORF9QT0lOVFMuV0lUSERSQVdfQkFUQ0hfV0YgOiBBUElfRU5EX1BPSU5UUy5FTlJPTExfQkFUQ0hfV0Y7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCByZXEpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBmZXRjaEJsZW5kZWRVc2VyV0YocmVxOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChBUElfRU5EX1BPSU5UUy5CTEVOREVEX1VTRVJfV0YsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJDT1VOVChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9DT1VOVCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50TGlrZXMoY29udGVudElkczogeyBjb250ZW50X2lkOiBzdHJpbmdbXSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8eyBbaWRlbnRpZmllcjogc3RyaW5nXTogbnVtYmVyIH0+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfTElLRVMsIGNvbnRlbnRJZHMpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cbiAgZmV0Y2hDb250ZW50UmF0aW5ncyhjb250ZW50SWRzOiB7IGNvbnRlbnRJZHM6IHN0cmluZ1tdIH0pIHtcbiAgICBpZiAoY29udGVudElkcykgeyB9XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3QoYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9L3JhdGluZ2AsIGNvbnRlbnRJZHMpXG4gICAgLy8gICAudG9Qcm9taXNlKClcbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudEhpc3RvcnkoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfSElTVE9SWX0vJHtjb250ZW50SWR9YCxcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50SGlzdG9yeVYyKHJlcTogTnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YVJlcSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4ge1xuICAgIHJlcS5yZXF1ZXN0LmZpZWxkcyA9IFsncHJvZ3Jlc3NkZXRhaWxzJ107XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuaHR0cC5wb3N0PE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9ISVNUT1JZVjJ9LyR7cmVxLnJlcXVlc3QuY291cnNlSWR9YCwgcmVxXG4gICAgKTtcbiAgICBkYXRhLnN1YnNjcmliZSgoc3Vic2NyaWJlRGF0YTogYW55KSA9PiB7XG4gICAgICB0aGlzLnByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEubmV4dCh7IHJlc3VtZURhdGE6IHN1YnNjcmliZURhdGEucmVzdWx0LmNvbnRlbnRMaXN0LCBjb3Vyc2VJZDogcmVxLnJlcXVlc3QuY291cnNlSWQgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBjb250aW51ZUxlYXJuaW5nKGlkOiBzdHJpbmcsIGNvbGxlY3Rpb25JZD86IHN0cmluZywgY29sbGVjdGlvblR5cGU/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyByZXNvbHZlID0+IHtcbiAgICAgIGlmIChjb2xsZWN0aW9uVHlwZSAmJlxuICAgICAgICBjb2xsZWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAncGxheWxpc3QnKSB7XG4gICAgICAgIGNvbnN0IHJlcUJvZHkgPSB7XG4gICAgICAgICAgY29udGV4dFBhdGhJZDogY29sbGVjdGlvbklkID8gY29sbGVjdGlvbklkIDogaWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogaWQsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgY29udGV4dEZ1bGxQYXRoOiBbY29sbGVjdGlvbklkLCBpZF0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZGF0ZUFjY2Vzc2VkOiBEYXRlLm5vdygpLFxuICAgICAgICAgIGNvbnRleHRUeXBlOiAncGxheWxpc3QnLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVDb250aW51ZUxlYXJuaW5nKHJlcUJvZHkpLnRvUHJvbWlzZSgpLmNhdGNoKCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7IHRpbWVzdGFtcDogRGF0ZS5ub3coKSB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUNvbnRpbnVlTGVhcm5pbmcocmVxQm9keSkudG9Qcm9taXNlKCkuY2F0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBzYXZlQ29udGludWVMZWFybmluZyhjb250ZW50OiBOc0NvbnRlbnQuSVZpZXdlckNvbnRpbnVlTGVhcm5pbmdSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyBjb25zdCB1cmwgPSBBUElfRU5EX1BPSU5UUy5VU0VSX0NPTlRJTlVFX0xFQVJOSU5HXG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBjb250ZW50KVxuICAgIGlmIChjb250ZW50KSB7XG5cbiAgICB9XG4gICAgcmV0dXJuIG9mKCkgYXMgYW55O1xuICB9XG5cbiAgc2V0UzNDb29raWUoXG4gICAgX2NvbnRlbnRJZDogc3RyaW5nLFxuICAgIC8vIF9wYXRoOiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cFxuICAgIC8vICAgLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0NPT0tJRSwgeyBjb250ZW50SWQgfSlcbiAgICAvLyAgIC5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpXG5cbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBzZXRTM0ltYWdlQ29va2llKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlNFVF9TM19JTUFHRV9DT09LSUUsIHt9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpO1xuICB9XG5cbiAgZmV0Y2hNYW5pZmVzdCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLkZFVENIX01BTklGRVNULCB7IHVybCB9KTtcbiAgfVxuICBmZXRjaFdlYk1vZHVsZUNvbnRlbnQodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke0FQSV9FTkRfUE9JTlRTLkZFVENIX1dFQl9NT0RVTEVfRklMRVN9P3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh1cmwpfWApO1xuICB9XG4gIHNlYXJjaChyZXE6IE5TU2VhcmNoLklTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoQXBpUmVzdWx0PiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoQXBpUmVzdWx0PihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9WNSwge1xuICAgICAgcmVxdWVzdDogcmVxLFxuICAgIH0pO1xuICB9XG4gIHNlYXJjaFJlZ2lvblJlY29tbWVuZGF0aW9uKFxuICAgIHJlcTogTlNTZWFyY2guSVNlYXJjaE9yZ1JlZ2lvblJlY29tbWVuZGF0aW9uUmVxdWVzdCxcbiAgKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnRTdHJpcE11bHRpcGxlLklDb250ZW50U3RyaXBSZXNwb25zZUFwaT4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICByZXEucHJlTGFiZWxWYWx1ZSA9XG4gICAgICAocmVxLnByZUxhYmVsVmFsdWUgfHwgJycpICtcbiAgICAgICgodGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUuY291bnRyeSkgfHwgJycpO1xuICAgIHJlcS5maWx0ZXJzID0ge1xuICAgICAgLi4ucmVxLmZpbHRlcnMsXG4gICAgICBsYWJlbHM6IFtyZXEucHJlTGFiZWxWYWx1ZSB8fCAnJ10sXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50U3RyaXBNdWx0aXBsZS5JQ29udGVudFN0cmlwUmVzcG9uc2VBcGk+KFxuICAgICAgQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfUkVHSU9OX1JFQ09NTUVOREFUSU9OLFxuICAgICAgeyByZXF1ZXN0OiByZXEgfSxcbiAgICApO1xuICB9XG4gIHNlYXJjaFY2KHJlcTogTlNTZWFyY2guSVNlYXJjaFY2UmVxdWVzdCk6IE9ic2VydmFibGU8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+IHtcbiAgICBjb25zdCBhcGlQYXRoID0gXy5nZXQocmVxLCAnYXBpLnBhdGgnKTtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgaWYgKGFwaVBhdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPihhcGlQYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9WNiwgcmVxKTtcbiAgfVxuXG4gIHNlYXJjaFJlcXVlc3QocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIGNvbnN0IGFwaVBhdGggPSBfLmdldChyZXEsICdhcGkucGF0aCcpO1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgaWYoXy5nZXQocmVxLCAnYXBpLnR5cGUnKSA9PT0gJ2dldCcgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpUGF0aCk7XG4gICAgICB9IGVsc2UgaWYoXy5nZXQocmVxLCAnYXBpLnR5cGUnKSA9PT0gJ3Bvc3QnICkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihhcGlQYXRoLCByZXEucmVxdWVzdCB8fCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oYXBpUGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfVjYsIHJlcSk7XG4gIH1cblxuICBzZWFyY2hDb250ZW50U2VhcmNoX1BST0QocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIGNvbnN0IGFwaVBhdGggPSBfLmdldChyZXEsICdhcGkucGF0aCcpO1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KGFwaVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KFBST0RfQkFTRV9FTkRQT0lOVCArIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNILCByZXEpO1xuICB9XG5cbiAgc2VhcmNoUmVsYXRlZENCUFY2KHJlcTogTlNTZWFyY2guSVNlYXJjaFY2UmVxdWVzdFYyKTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0hfUkVMQVRFRF9DQlBfVjYsIHJlcSk7XG4gIH1cblxuICBmZXRjaENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHsgcmF0aW5nOiBudW1iZXIgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHsgcmF0aW5nOiBudW1iZXIgfT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApO1xuICB9XG4gIGRlbGV0ZUNvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gKTtcbiAgfVxuICBhZGRDb250ZW50UmF0aW5nKGNvbnRlbnRJZDogc3RyaW5nLCBkYXRhOiB7IHJhdGluZzogbnVtYmVyIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkFUSU5HfS8ke2NvbnRlbnRJZH1gLCBkYXRhKTtcbiAgfVxuXG4gIGdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpOiBOc0NvbnRlbnQuSUNvbnRlbnQge1xuICAgIGlmICghKGNvbnRlbnQuY2hpbGRyZW4gfHwgW10pLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1BTkRBVE9SWV9DT1VSU0VfR09BTCB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSkgfHxcbiAgICAgIChjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpXG4gICAgKSB7XG4gICAgICBjb25zdCBjaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgICByZXR1cm4gdGhpcy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoY2hpbGQpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJBQ1RJQ0VfUkVTT1VSQ0UgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5GSU5BTF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29uc3QgZmlyc3RDaGlsZCA9IGNvbnRlbnQuY2hpbGRyZW5bMF07XG4gICAgY29uc3QgcmVzdWx0Q29udGVudCA9IHRoaXMuZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KGZpcnN0Q2hpbGQpO1xuICAgIHJldHVybiByZXN1bHRDb250ZW50O1xuICB9XG5cbiAgZ2V0UmVnaXN0cmF0aW9uU3RhdHVzKHNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTx7IGhhc0FjY2VzczogYm9vbGVhbjsgcmVnaXN0cmF0aW9uVXJsPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLlJFR0lTVFJBVElPTl9TVEFUVVN9LyR7c291cmNlfWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb25maWcodXJsOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCk7XG4gIH1cblxuICBhZGRDZXJ0VGVtcGxhdGUoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfQUREX1RFTVBMQVRFfWAsIGJvZHkpO1xuICB9XG5cbiAgaXNzdWVDZXJ0KGJvZHk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfSVNTVUV9YCwgYm9keSk7XG4gIH1cbiAgZG93bmxvYWRDZXJ0KGNlcnRJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHtBUElfRU5EX1BPSU5UUy5DRVJUX0RPV05MT0FEKGNlcnRJZCl9YCk7XG4gIH1cblxuICB0cmVuZGluZ0NvbnRlbnRTZWFyY2gocmVxOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5UUkVORElOR19DT05URU5UX1NFQVJDSCwgcmVxKTtcbiAgfVxuXG4gIGdldEthcm1hUG9pdG5zKGxpbWl0OiBudW1iZXIsIG9mZnNldDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlJFQURfS0FSTUFQT0lOVFMsIHsgbGltaXQsIG9mZnNldCB9KS5waXBlKGNhdGNoRXJyb3IoX2VyciA9PiBvZih0cnVlKSkpO1xuICB9XG4gIGZldGNoUHJvZ3JhbUNvbnRlbnQoY29udGVudElkOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50W10+IHtcbiAgICBsZXQgdXJsID0gJyc7XG4gICAgY29uc3QgZm9yUHJldmlldyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvcHVibGljLycpIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcmcHJldmlldz10cnVlJyk7XG4gICAgaWYgKCFmb3JQcmV2aWV3KSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oXG4gICAgICAgIEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpLFxuICAgICAgKTtcbiAgICB9XG4gICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KHVybCk7XG4gICAgLy8gcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfUkVBRChjb250ZW50SWQpKVxuICB9XG5cbiAgZ2V0Q291cnNlS2FybWFQb2ludHMocmVxdWVzdDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuUkVBRF9DT1VSU0VfS0FSTUFQT0lOVFMsIHJlcXVlc3QpO1xuICB9XG5cbiAgY2xhaW1LYXJtYXBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5DTEFJTV9LQVJNQVBPSU5UUywgcmVxdWVzdCk7XG4gIH1cblxuICB1c2VyS2FybWFQb2ludHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0VORF9QT0lOVFMuVVNFUl9LQVJNQV9QT0lOVFMsIHt9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEVucm9sbGVkRGF0YShkb0lkOiBzdHJpbmcpIHtcbiAgICBsZXQgZW5yb2xsZWREb0lkOiBhbnkgPSB0aGlzLnVzZXJTdmMuZW5yb2xsbWVudERhdGFJZHMuaW5jbHVkZXMoZG9JZClcbiAgICBsZXQgdXNlcklkID0gdGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUudXNlcklkXG4gICAgaWYgKGVucm9sbGVkRG9JZCkge1xuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy51c2VyU3ZjLmZldGNoRW5yb2xsbWVudERhdGFCeUNvbnRlbnRJZCh1c2VySWQsIGRvSWQpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmNvdXJzZXMgJiYgcmVzLmNvdXJzZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcy5jb3Vyc2VzXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cbiAgICAgIH0pLmNhdGNoKChfZXJyOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZURhdGEgfHwgW11cbiAgICB9XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICBhc3luYyBnZXRSZXNvdXJzZUxpbmsoY29udGVudDogYW55LCBlbnJvbGxtZW50TGlzdD86IGFueSwgY2hlY2tGb3JSZXN1bWU/OiBib29sZWFuLCAgYmFzZUNvbnRlbnRSZWFkPzogYW55LG11bHRpbGluZ3VhbElkPzpzdHJpbmcpIHtcbiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LmNvbnRlbnQgJiYgY29udGVudC5jb250ZW50LmNhdGVnb3J5ID09PSAnRXZlbnQnKSB7XG4gICAgICBjb25zdCB1cmxEYXRhOiBhbnkgPSB7XG4gICAgICAgIHVybDogYGFwcC9ldmVudC1odWIvaG9tZS8ke2NvbnRlbnQuY29udGVudC5pZGVudGlmaWVyfWAsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiB1cmxEYXRhXG4gICAgfVxuICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQuZXh0ZXJuYWxJZCkge1xuICAgICAgY29uc3QgdXJsRGF0YTogYW55ID0ge1xuICAgICAgICB1cmw6IGBhcHAvdG9jL2V4dC8ke2NvbnRlbnQuY29udGVudElkfWAsXG4gICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9LFxuICAgICAgfTtcbiAgICAgIHJldHVybiB1cmxEYXRhXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja0ZvclJlc3VtZSkge1xuICAgICAgICAvLyBjb25zdCBlbnJvbGxlZENvdXJzZTogYW55ID0gYXdhaXQgdGhpcy5nZXRFbnJvbGxlZERhdGEoY29udGVudC5pZGVudGlmaWVyKTtcbiAgICAgICAgY29uc3QgZW5yb2xsZWRDb3Vyc2U6IGFueSA9IGVucm9sbG1lbnRMaXN0O1xuICAgICAgICBpZiAoZW5yb2xsZWRDb3Vyc2UgJiYgZW5yb2xsZWRDb3Vyc2UubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgZW5yb2xsZWRDb3Vyc2VEYXRhID0gZW5yb2xsZWRDb3Vyc2UgJiYgZW5yb2xsZWRDb3Vyc2U/Lmxlbmd0aCAmJiBlbnJvbGxlZENvdXJzZS5maW5kKChlbDogYW55KSA9PiBlbD8uY29sbGVjdGlvbklkID09PSBiYXNlQ29udGVudFJlYWQgfHwgIGNvbnRlbnQ/LmlkZW50aWZpZXIpXG4gICAgICAgICAgaWYgKGVucm9sbGVkQ291cnNlRGF0YSAmJiBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudCAmJiAoZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5JTlZJVEVfT05MWV9QUk9HUkFNIHx8XG4gICAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSB8fFxuICAgICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUFJPR1JBTSkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc0JhdGNoSW5Qcm9ncmVzcyhlbnJvbGxlZENvdXJzZURhdGEuYmF0Y2gpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQsIGVucm9sbGVkQ291cnNlRGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50LCBlbnJvbGxlZENvdXJzZURhdGEsICBiYXNlQ29udGVudFJlYWQsIG11bHRpbGluZ3VhbElkKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbmVTdGVwUmVzdW1lRW5hYmxlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIGNoZWNrRm9yRGF0YVRvRm9ybVVybChjb250ZW50OiBhbnksIGVucm9sbERhdGE6IGFueSwgYmFzZUNvbnRlbnRSZWFkPzogYW55LG11bHRpbGluZ3VhbElkPzpzdHJpbmcpIHtcbiAgICBsZXQgdXJsRGF0YTogYW55O1xuICAgIGlmIChlbnJvbGxEYXRhPy5jb21wbGV0aW9uUGVyY2VudGFnZSA9PT0gMTAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShlbnJvbGxEYXRhKTtcbiAgICB9XG4gICAgaWYgKGVucm9sbERhdGE/LmxyY1Byb2dyZXNzRGV0YWlscyAmJiBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSkge1xuICAgICAgY29uc3QgbW9kaWZ5RW5yb2xsRGF0YSA9IHtcbiAgICAgICAgLi4uZW5yb2xsRGF0YSxcbiAgICAgICAgaWRlbnRpZmllcjogZW5yb2xsRGF0YS5jb2xsZWN0aW9uSWQsXG4gICAgICAgIHByaW1hcnlDYXRlZ29yeTogZW5yb2xsRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgbmFtZTogZW5yb2xsRGF0YS5jb250ZW50Lm5hbWUsXG4gICAgICB9O1xuICAgICAgaWYgKG1vZGlmeUVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSxcbiAgICAgICAgICBlbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkLCBlbnJvbGxEYXRhLmxyY1Byb2dyZXNzRGV0YWlscy5taW1lVHlwZSxjb250ZW50LCAgYmFzZUNvbnRlbnRSZWFkLG11bHRpbGluZ3VhbElkKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RpZnlFbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgICAgICAgIGVucm9sbERhdGEuZmlyc3RDaGlsZElkLFxuICAgICAgICAgIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlLCBjb250ZW50LCAgYmFzZUNvbnRlbnRSZWFkLG11bHRpbGluZ3VhbElkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVucm9sbERhdGEuZmlyc3RDaGlsZElkIHx8IGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQpIHtcbiAgICAgIGNvbnN0IGRvSWQgPSBlbnJvbGxEYXRhLmZpcnN0Q2hpbGRJZCB8fCBlbnJvbGxEYXRhLmxhc3RSZWFkQ29udGVudElkO1xuICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5mZXRjaFByb2dyYW1Db250ZW50KGRvSWQpLnRvUHJvbWlzZSgpLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LmNvbnRlbnQpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50RGF0YTogYW55ID0gcmVzLnJlc3VsdC5jb250ZW50O1xuICAgICAgICAgIGNvbnN0IG1vZGlmeUVucm9sbERhdGEgPSB7XG4gICAgICAgICAgICAuLi5lbnJvbGxEYXRhLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogZW5yb2xsRGF0YS5jb2xsZWN0aW9uSWQsXG4gICAgICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6IGVucm9sbERhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgICAgICBuYW1lOiBlbnJvbGxEYXRhLmNvbnRlbnQubmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHVybERhdGEgPSB0aGlzLmdldFJlc291cnNlRGF0YVdpdGhEYXRhKG1vZGlmeUVucm9sbERhdGEsIGNvbnRlbnREYXRhLmlkZW50aWZpZXIsIGNvbnRlbnREYXRhLm1pbWVUeXBlLGNvbnRlbnQsICBiYXNlQ29udGVudFJlYWQsbXVsdGlsaW5ndWFsSWQpO1xuICAgICAgICAgIGlmICh1cmxEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsRGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSA/IHJlc3BvbnNlRGF0YSA6IHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGNvbnRlbnQpO1xuXG4gIH1cblxuICBnZXRSZXNvdXJzZURhdGFXaXRoRGF0YShlbnJvbGxtZW50RGF0YTogYW55LCByZXNvdXJjZUlkOiBhbnksIG1pbWVUeXBlOiBhbnksY29udGVudDphbnksIGJhc2VDb250ZW50UmVhZD86IGFueSxtdWx0aWxpbmd1YWxJZD86c3RyaW5nKSB7XG4gICAgICAgIGlmKGVucm9sbG1lbnREYXRhICYmIGVucm9sbG1lbnREYXRhLnJlY2VudF9sYW5ndWFnZSkge1xuICAgICAgICBpZihiYXNlQ29udGVudFJlYWQubGFuZ3VhZ2VNYXBWMSAmJiBPYmplY3Qua2V5cyhiYXNlQ29udGVudFJlYWQubGFuZ3VhZ2VNYXBWMSkubGVuZ3RoKSB7IFxuICAgICAgICAgIGNvbnN0IHJlY2VudF9MQU5HX0RBVEEgPSBiYXNlQ29udGVudFJlYWQubGFuZ3VhZ2VNYXBWMVtlbnJvbGxtZW50RGF0YS5yZWNlbnRfbGFuZ3VhZ2VdO1xuICAgICAgICAgIGlmKHJlY2VudF9MQU5HX0RBVEEgJiYgcmVjZW50X0xBTkdfREFUQS5pZCAmJiAocmVjZW50X0xBTkdfREFUQS5pZCAhPT0gY29udGVudC5pZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290b1BsYXllclBhZ2UoZW5yb2xsbWVudERhdGEsIGNvbnRlbnQsIGJhc2VDb250ZW50UmVhZD8uaWRlbnRpZmllciwgcmVzb3VyY2VJZCwgbWltZVR5cGUsIGVucm9sbG1lbnREYXRhLnJlY2VudF9sYW5ndWFnZSwgcmVjZW50X0xBTkdfREFUQS5pZCApIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBcbiAgICAgIGlmKGVucm9sbG1lbnREYXRhKSB7XG4gICAgICAgIGNvbnN0IEJBU0VfTEFORyA9IHRoaXMuY29udGVudExhbmd1YWdlU3ZjLmdldEJhc2VMYW5ndWFnZShiYXNlQ29udGVudFJlYWQpO1xuICAgICAgICBpZihCQVNFX0xBTkcgJiYgT2JqZWN0LmtleXMoQkFTRV9MQU5HKS5sZW5ndGggKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ290b1BsYXllclBhZ2UoZW5yb2xsbWVudERhdGEsIGNvbnRlbnQsIGJhc2VDb250ZW50UmVhZD8uaWRlbnRpZmllciwgcmVzb3VyY2VJZCwgbWltZVR5cGUsIEJBU0VfTEFORy5sYW5nSWQsIEJBU0VfTEFORy5pZCApIFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoZW5yb2xsbWVudERhdGEpO1xuICB9XG5cblxuICBnb3RvUGxheWVyUGFnZShuYXZpZ2F0aW9uRGF0YTogYW55LCBjb250ZW50OmFueSwgYmFzZUNvbnRlbnRJZDpzdHJpbmcsIHJlc291cmNlSWQ6c3RyaW5nLCBtaW1lVHlwZTphbnksIG1sPzpzdHJpbmcsIG1sSWQ/OnN0cmluZykgIHtcbiAgICBpZiAobmF2aWdhdGlvbkRhdGEpIHtcbiAgICAgIGNvbnN0IHVybCA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgYmFzZUNvbnRlbnRJZCxcbiAgICAgICAgJ0NvdXJzZScsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICAnTGVhcm5pbmcgUmVzb3VyY2UnLFxuICAgICAgICBuYXZpZ2F0aW9uRGF0YS5iYXRjaElkLFxuICAgICAgICBjb250ZW50Lm5hbWUsXG4gICAgICAgIG1sLFxuICAgICAgICBtbElkLFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICB9XG5cbiAgZ290b1RvY1BhZ2UoY29udGVudDogYW55KSB7XG4gICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC5jb3Vyc2VDYXRlZ29yeSAmJiBjb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5Lk1VTFRJTElOR1VBTF9DT1VSU0UpIHtcbiAgICAgIGNvbnN0IGJhc2VDb250ZW50RGF0YSA9IHRoaXMuY29udGVudExhbmd1YWdlU3ZjLmdldEJhc2VMYW5ndWFnZShjb250ZW50KTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGFuZ3VhZ2UgPSBjb250ZW50ICYmIGNvbnRlbnQubGFuZ3VhZ2UgJiYgY29udGVudC5sYW5ndWFnZS5sZW5ndGggPyBcbiAgICAgICAgY29udGVudC5sYW5ndWFnZVswXS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gICAgICBcbiAgICAgIGlmIChiYXNlQ29udGVudERhdGEgJiYgT2JqZWN0LmtleXMoYmFzZUNvbnRlbnREYXRhKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB1cmw6IGAvYXBwL3RvYy8ke2Jhc2VDb250ZW50RGF0YS5pZGVudGlmaWVyfS9vdmVydmlld2AsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHsgXG4gICAgICAgICAgICBNTElkOiBjb250ZW50LmlkZW50aWZpZXIsXG4gICAgICAgICAgICBNTDogc2VsZWN0ZWRMYW5ndWFnZSxcbiAgICAgICAgICAgIC4uLihjb250ZW50LmJhdGNoSWQgPyB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9IDoge30pXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3QgdXJsRGF0YSA9IHtcbiAgICAgIHVybDogYC9hcHAvdG9jLyR7Y29udGVudC5pZGVudGlmaWVyIHx8IGNvbnRlbnQuY29sbGVjdGlvbklkfS9vdmVydmlld2AsXG4gICAgICBxdWVyeVBhcmFtczogY29udGVudC5iYXRjaElkID8geyBiYXRjaElkOiBjb250ZW50LmJhdGNoSWQgfSA6IHt9IGFzIHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgfTtcbiAgICBpZiAoY29udGVudC5lbmREYXRlICYmIGNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5ICE9PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LkNPTVBSRUhFTlNJVkVfQVNTRVNTTUVOVF9QUk9HUkFNKSB7XG4gICAgICB1cmxEYXRhLnF1ZXJ5UGFyYW1zID0geyAuLi51cmxEYXRhLnF1ZXJ5UGFyYW1zLCBwbGFuVHlwZTogJ2NiUGxhbicsIGVuZERhdGU6IGNvbnRlbnQuZW5kRGF0ZSB9O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdXJsRGF0YTtcbiAgfVxuXG4gIGlzQmF0Y2hJblByb2dyZXNzKGJhdGNoRGF0YTogYW55KSB7XG4gICAgLy8gaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnRbJ2JhdGNoZXMnXSkge1xuICAgIC8vIGNvbnN0IGJhdGNoZXMgPSB0aGlzLmNvbnRlbnRbJ2JhdGNoZXMnXSBhcyBOc0NvbnRlbnQuSUJhdGNoXG4gICAgaWYgKGJhdGNoRGF0YSAmJiBiYXRjaERhdGEuZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSBtb21lbnQoYmF0Y2hEYXRhLnN0YXJ0RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICBjb25zdCBlbmREYXRlID0gYmF0Y2hEYXRhLmVuZERhdGUgPyBtb21lbnQoYmF0Y2hEYXRhLmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogbm93O1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgLy8gYmF0Y2guc3RhdHVzICYmXG4gICAgICAgIG1vbWVudChzdGFydERhdGUpLmlzU2FtZU9yQmVmb3JlKG5vdylcbiAgICAgICAgJiYgbW9tZW50KGVuZERhdGUpLmlzU2FtZU9yQWZ0ZXIobm93KVxuICAgICAgKTtcbiAgICB9IHJldHVybiB0cnVlO1xuICB9XG4gIHBvc3RBcGlNZXRob2QoYXBpVXJsOiBhbnksIHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwsIHJlcSk7XG4gIH1cbiAgZ2V0QXBpTWV0aG9kKGFwaVVybDogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50PihhcGlVcmwpO1xuICB9XG5cblxuICBnZXRFbnJvbGxlZERhdGFGcm9tTGlzdChlbnJvbGxtZW50TGlzdDogYW55LCBjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xuICAgIGlmIChlbnJvbGxtZW50TGlzdCAmJiBlbnJvbGxtZW50TGlzdC5sZW5ndGgpIHtcbiAgICAgIGxldCBlbnJvbGxlZERhdGEgPSBlbnJvbGxtZW50TGlzdC5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUuY29sbGVjdGlvbklkID09PSBjb2xsZWN0aW9uSWQpXG4gICAgICByZXR1cm4gZW5yb2xsZWREYXRhLmxlbmd0aCA/IGVucm9sbGVkRGF0YVswXSA6IHt9XG4gICAgfVxuICB9XG5cbiAgc2V0UmVsZXZlbnROb3RSZWxldmVudERhdGEoZGF0YToge2lzUmVsZXZlbnQ6IGJvb2xlYW4sIHdpZGdldERhdGE6IGFueX0pIHtcbiAgICB0aGlzLnJlbGV2ZW50Tm90UmVsZXZlbnQubmV4dChkYXRhKVxuICB9XG5cbiAgc2F2ZUZlZWRiYWNrU2Frc2hhbUFJKHJlcXVlc3RCb2R5OiBhbnkpIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHRoaXMuaHR0cC5wb3N0KEFQSV9FTkRfUE9JTlRTLlNBVkVfU0FLU0hBTUFJX1JFQ09NTUVOREVEX0ZFRURCQUNLLCByZXF1ZXN0Qm9keSkucGlwZShtYXAoXG4gICAgICBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgICB9KVxuICAgIClcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBzZXRSZWNvbW1lbmRlZElkcyhyZWNvbW1lbmRlZElkczogc3RyaW5nLCB1c2VySWQ6IHN0cmluZykge1xuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWNvbW1lbmRlZElkcycpID8gXG4gICAgdGhpcy5zdG9yZWRSZWNvbW1lbmRlZElkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlY29tbWVuZGVkSWRzJykgfHwgJ3t9JykgOiB7fVxuXG4gICAgdGhpcy5zdG9yZWRSZWNvbW1lbmRlZElkc1t1c2VySWRdID0gcmVjb21tZW5kZWRJZHNcblxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWNvbW1lbmRlZElkcycsIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RvcmVkUmVjb21tZW5kZWRJZHMpKVxuICB9XG5cbiAgZ2V0UmVjb21tZW5kZWRJZHModXNlcklkOiBzdHJpbmcpIHtcbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjb21tZW5kZWRJZHMnKSA/IFxuICAgICAgdGhpcy5zdG9yZWRSZWNvbW1lbmRlZElkcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlY29tbWVuZGVkSWRzJykgfHwgJ3t9JykgOiB7fVxuICAgIHJldHVybiB0aGlzLnN0b3JlZFJlY29tbWVuZGVkSWRzW3VzZXJJZF1cbiAgfVxuXG4gIHNldEZlZWRiYWNrRGF0YShmZWVkYmFja0RhdGFBcnJheTogYW55W10pIHtcbiAgICBmZWVkYmFja0RhdGFBcnJheS5mb3JFYWNoKGZlZWRiYWNrRGF0YSA9PiB7XG4gICAgICB0aGlzLmZlZWRiYWNrRGF0YUZvckNvdXJzZVtmZWVkYmFja0RhdGEuY291cnNlX2lkXSA9IGZlZWRiYWNrRGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZlZWRiYWNrRGF0YShjb3Vyc2VJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVlZGJhY2tEYXRhRm9yQ291cnNlW2NvdXJzZUlkXVxuICB9XG5cbiAgZmlsdGVyQ291cnNlc1dpdGhOb1JhdGluZyhyZXNwb25zZTogYW55LCBjb3Vyc2VzOiBhbnlbXSkge1xuICAgIGlmICghcmVzcG9uc2U/LmZlZWRiYWNrcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY291cnNlczsgXG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGNvdXJzZXNXaXRoWmVyb1JhdGluZyA9IG5ldyBTZXQoXG4gICAgICByZXNwb25zZS5mZWVkYmFja3NcbiAgICAgICAgLmZpbHRlcigoZmVlZGJhY2s6IGFueSkgPT4gZmVlZGJhY2sucmF0aW5nID09PSAwKVxuICAgICAgICAubWFwKChmZWVkYmFjazogYW55KSA9PiBmZWVkYmFjay5jb3Vyc2VfaWQpXG4gICAgKTtcbiAgXG4gICAgcmV0dXJuIGNvdXJzZXMuZmlsdGVyKChjb3Vyc2U6IGFueSkgPT4gIWNvdXJzZXNXaXRoWmVyb1JhdGluZy5oYXMoY291cnNlLmlkZW50aWZpZXIpKTtcbiAgfVxuXG4gIHNldFRlbGVtZW50cnlTdWJzY3JpcHRpb24oZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzVGVsZW1lbnRyeVN1YnNjcmliZWQgPSBldmVudFxuICB9XG59XG4iXX0=
637
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY29uc3VtcHRpb24vc3JjL2xpYi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQtbGliLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUQsaUJBQWlCO0FBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTFELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7O0FBRTVCLGdCQUFnQjtBQUVoQix1Q0FBdUM7QUFDdkMsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztBQUMvQyxNQUFNLGtCQUFrQixHQUFHLHFDQUFxQyxDQUFBO0FBQ2hFLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixVQUFVO0lBQ3ZDLGlCQUFpQixFQUFFLDBCQUEwQjtJQUM3QyxhQUFhLEVBQUUsR0FBRyxpQkFBaUIsb0JBQW9CO0lBQ3ZELGFBQWEsRUFBRSxHQUFHLGlCQUFpQixvQkFBb0I7SUFDdkQsbUJBQW1CLEVBQUUsR0FBRyxpQkFBaUIseUJBQXlCO0lBQ2xFLGNBQWMsRUFBRSxHQUFHLGlCQUFpQiwrQkFBK0I7SUFDbkUsc0JBQXNCLEVBQUUsR0FBRyxpQkFBaUIsNEJBQTRCO0lBQ3hFLGdCQUFnQixFQUFFLEdBQUcsaUJBQWlCLG1CQUFtQjtJQUN6RCxpQkFBaUIsRUFBRSxHQUFHLGlCQUFpQixtQkFBbUI7SUFDMUQsaUJBQWlCLEVBQUUscUNBQXFDO0lBQ3hELHVCQUF1QixFQUFFLHlDQUF5QztJQUNsRSw2QkFBNkIsRUFBRSxxQ0FBcUM7SUFDcEUsb0NBQW9DLEVBQUUsR0FBRyxpQkFBaUIscUNBQXFDO0lBQy9GLGVBQWUsRUFBRSxHQUFHLGlCQUFpQixlQUFlO0lBQ3BELGlCQUFpQixFQUFFLHVDQUF1QztJQUMxRCxpQkFBaUIsRUFBRSwrQ0FBK0M7SUFDbEUsWUFBWSxFQUFFLHVDQUF1QztJQUNyRCxpQkFBaUIsRUFBRSxpREFBaUQ7SUFDcEUseUJBQXlCLEVBQUUsMENBQTBDO0lBQ3JFLHdCQUF3QixFQUFFLHVDQUF1QztJQUNqRSxzQkFBc0IsRUFBRSxHQUFHLGlCQUFpQix3QkFBd0I7SUFDcEUsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLGNBQWM7SUFDbEQsb0JBQW9CLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLEVBQUUsQ0FDakQsR0FBRyxpQkFBaUIsdUJBQXVCLElBQUksSUFBSSxFQUFFLEVBQUU7SUFDekQsbUJBQW1CLEVBQUUsR0FBRyxpQkFBaUIsc0RBQXNEO0lBQy9GLHFCQUFxQixFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsa0JBQWtCLFNBQVMsRUFBRTtJQUMvRixZQUFZLEVBQUUsMENBQTBDO0lBQ3hELGVBQWUsRUFBRSxnREFBZ0Q7SUFDakUsaUJBQWlCLEVBQUUsa0RBQWtEO0lBQ3JFLGVBQWUsRUFBRSxzREFBc0Q7SUFDdkUsa0JBQWtCLEVBQUUsNERBQTREO0lBQ2hGLGlCQUFpQixFQUFFLEdBQUcsaUJBQWlCLHlDQUF5QztJQUNoRixVQUFVLEVBQUUsR0FBRyxpQkFBaUIsa0NBQWtDO0lBQ2xFLGFBQWEsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxpQkFBaUIsdUNBQXVDLE1BQU0sRUFBRTtJQUNuRyxnQkFBZ0IsRUFBRSxtQ0FBbUM7SUFDckQsWUFBWSxFQUFFLENBQUMsU0FBYyxFQUFFLEVBQUUsQ0FBQywyQ0FBMkMsU0FBUyxFQUFFO0lBQ3hGLHVCQUF1QixFQUFFLCtDQUErQztJQUN4RSxpQkFBaUIsRUFBRSxtQ0FBbUM7SUFDdEQsaUJBQWlCLEVBQUUsd0NBQXdDO0lBQzNELGtCQUFrQixFQUFFLDZDQUE2QztJQUNqRSxjQUFjLEVBQUUsMENBQTBDO0lBQzFELG1DQUFtQyxFQUFFLGdEQUFnRDtJQUNyRixjQUFjLEVBQUUsd0JBQXdCO0NBQ3pDLENBQUM7QUFLRixNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQ1UsSUFBZ0IsRUFDaEIsU0FBZ0MsRUFDaEMsT0FBNkIsRUFDN0Isa0JBQTBDO1FBSDFDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQUlwRCxrQkFBYSxHQUFRLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELG1CQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRCx3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFOUIsa0JBQWEsR0FBUSxJQUFJLE9BQU8sRUFBTyxDQUFBO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6RCx1QkFBa0IsR0FBUSxJQUFJLE9BQU8sRUFBTyxDQUFBO1FBQzVDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUk1RCxpQ0FBNEIsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUM1RCxrQ0FBNkIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakYsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQTRDLENBQUM7UUFDOUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzlELHlCQUFvQixHQUFRLEVBQUUsQ0FBQztRQUMvQiwwQkFBcUIsR0FBUSxFQUFFLENBQUM7UUFDaEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFBO0lBbkI5QixDQUFDO0lBb0JELG1CQUFtQixDQUFDLE9BQWU7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQVM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLGVBQXVCO1FBQ2hDLElBQUksZUFBZSxFQUFFO1lBQ25CLE1BQU0sVUFBVSxHQUFHLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDN0YsQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLDBCQUEwQixDQUFDLGlCQUFpQixDQUFDO2dCQUM1RSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzNFLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUM7Z0JBQzFFLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3RSxPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWtCO1FBQ3hDLDJCQUEyQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDNUQsd0NBQXdDO1FBQ3hDLElBQUksR0FBRyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUNWLFNBQWlCLEVBQ2pCLGdCQUE4QyxRQUFRLEVBQ3RELG9CQUE4QixFQUFFLEVBQ2hDLGVBQStCO1FBRS9CLHNGQUFzRjtRQUN0RixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9HLElBQUksZUFBZSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixHQUFHLEdBQUcsMkNBQTJDLFNBQVMsRUFBRSxDQUFDO2FBQzlEO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyx3QkFBd0IsU0FBUyxFQUFFLENBQUM7YUFDM0M7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixHQUFHLEdBQUcsZ0RBQWdELFNBQVMsa0JBQWtCLGFBQWEsRUFBRSxDQUFDO2FBQ2xHO2lCQUFNO2dCQUNMLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEUsSUFBSSxVQUFVLEVBQUU7b0JBQ2QsR0FBRyxHQUFHLCtDQUErQyxTQUFTLFlBQVksQ0FBQztpQkFDNUU7cUJBQU07b0JBQ0wsR0FBRyxHQUFHLDRCQUE0QixTQUFTLGtCQUFrQixhQUFhLEVBQUUsQ0FBQztpQkFDOUU7YUFDRjtTQUNGO1FBQ0QsbUJBQW1CO1FBQ25CLHlEQUF5RDtRQUN6RCxvQkFBb0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBcUIsR0FBRyxDQUFDO2FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixtQ0FBbUM7UUFDbkMsa0NBQWtDO1FBQ2xDLElBQUk7SUFDTixDQUFDO0lBQ0QscUJBQXFCLENBQUMsU0FBaUI7UUFDckMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksVUFBVSxFQUFFO1lBQ2QsR0FBRyxHQUFHLCtDQUErQyxTQUFTLFlBQVksQ0FBQztTQUM1RTthQUFNO1lBQ0wsR0FBRyxHQUFHLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsdUJBQXVCLENBQUM7U0FDL0U7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELG9CQUFvQixDQUFDLEdBQWE7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUNELHdCQUF3QixDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsYUFBcUIsQ0FBQyxFQUFFLFdBQW1CLENBQUM7UUFDN0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxjQUFjLENBQUMsb0JBQW9CLENBQ3BDLElBQUksRUFDSixFQUFFLENBQ0gsZUFBZSxVQUFVLGFBQWEsUUFBUSxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBRWxCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFRO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQStCLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUM7YUFDekUsSUFBSSxDQUNILEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNwQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLGdCQUFnQixDQUFDLE9BQWU7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxjQUFjLENBQUMsWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLFVBQWU7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBK0IsR0FBRyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxFQUFFLENBQUM7YUFDbkcsSUFBSSxDQUNILEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNwQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBWSxFQUFFLFdBQWdCO1FBQ3RELE1BQU0sR0FBRyxHQUFHLFdBQVcsS0FBSyxTQUFTLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdkUsY0FBYyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBK0IsR0FBRyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUM7YUFDbkUsSUFBSSxDQUNILEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQ0QsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNwQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDO2FBQ3RDLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxHQUFRLEVBQUUsSUFBUztRQUNoRCxNQUFNLEdBQUcsR0FBUSxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7UUFDekcsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO2FBQ2QsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVE7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQzthQUN6QyxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBUTtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUM7YUFDNUMsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQW9DO1FBQ3BELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQW1DLGNBQWMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDO2FBQ2hGLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxVQUFvQztRQUN0RCxJQUFJLFVBQVUsRUFBRSxHQUFHO1FBQ25CLG1CQUFtQjtRQUNuQixpRUFBaUU7UUFDakUsaUJBQWlCO1FBQ2pCLE9BQU8sRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQWlCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsY0FBYyxDQUFDLGVBQWUsSUFBSSxTQUFTLEVBQUUsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUF1QztRQUMzRCxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3pCLEdBQUcsY0FBYyxDQUFDLGlCQUFpQixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxDQUNuRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWtCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLFlBQXFCLEVBQUUsY0FBdUI7UUFDL0UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUU7WUFDakMsSUFBSSxjQUFjO2dCQUNoQixjQUFjLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFO2dCQUM3QyxNQUFNLE9BQU8sR0FBRztvQkFDZCxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQy9DLFVBQVUsRUFBRSxFQUFFO29CQUNkLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDckIsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztxQkFDcEMsQ0FBQztvQkFDRixZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDeEIsV0FBVyxFQUFFLFVBQVU7aUJBQ3hCLENBQUM7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDeEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDLENBQ0EsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLE1BQU0sT0FBTyxHQUFHO29CQUNkLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDL0MsVUFBVSxFQUFFLEVBQUU7b0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7b0JBQy9DLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2lCQUN6QixDQUFDO2dCQUNGLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7b0JBQ3hFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELG9CQUFvQixDQUFDLE9BQWlEO1FBQ3BFLG9EQUFvRDtRQUNwRCwyQ0FBMkM7UUFDM0MsSUFBSSxPQUFPLEVBQUU7U0FFWjtRQUNELE9BQU8sRUFBRSxFQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FDVCxVQUFrQjtRQUdsQixtQkFBbUI7UUFDbkIsdURBQXVEO1FBQ3ZELHdDQUF3QztRQUV4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QscUJBQXFCLENBQUMsR0FBVztRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLHNCQUFzQixRQUFRLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQTRCO1FBQ2pDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBNEIsY0FBYyxDQUFDLGlCQUFpQixFQUFFO1lBQ2pGLE9BQU8sRUFBRSxHQUFHO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDBCQUEwQixDQUN4QixHQUFtRDtRQUVuRCxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxhQUFhO1lBQ2YsQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLEdBQUcsQ0FBQyxPQUFPLEdBQUc7WUFDWixHQUFHLEdBQUcsQ0FBQyxPQUFPO1lBQ2QsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7U0FDbEMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLGNBQWMsQ0FBQyxvQ0FBb0MsRUFDbkQsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ2pCLENBQUM7SUFDSixDQUFDO0lBQ0QsUUFBUSxDQUFDLEdBQThCO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxPQUFPLENBQUMsQ0FBQztTQUM5RDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWdDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQThCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLEtBQUssRUFBRztnQkFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxPQUFPLENBQUMsQ0FBQzthQUNwQztpQkFBTSxJQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLE1BQU0sRUFBRztnQkFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQzthQUN4RDtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFnQyxPQUFPLENBQUMsQ0FBQzthQUM5RDtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0MsY0FBYyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxHQUE4QjtRQUNyRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0MsT0FBTyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFnQyxrQkFBa0IsR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFnQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFnQyxjQUFjLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLEdBQUcsY0FBYyxDQUFDLGNBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFDRCxtQkFBbUIsQ0FBQyxTQUFpQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLGNBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLElBQXdCO1FBQzFELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxjQUFjLENBQUMsY0FBYyxJQUFJLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUEyQjtRQUNsRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtZQUNwQyxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELElBQ0UsQ0FBQyxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1lBQzdELENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkQsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCO1lBQzVFLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZTtnQkFDckUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU07Z0JBQzVELENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDdkQ7WUFDQSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFDRSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRO1lBQy9ELE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQjtZQUN6RSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1lBQzlELE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQjtZQUN4RSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7WUFDdkUsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZTtZQUN0RSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlO1lBQ3RFLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFDdEU7WUFDQSxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUNELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFjO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxjQUFjLENBQUMsbUJBQW1CLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBTSxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBUztRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsY0FBYyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxZQUFZLENBQUMsTUFBVztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELHFCQUFxQixDQUFDLEdBQVE7UUFDNUIsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLGNBQWMsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWEsRUFBRSxNQUFXO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUNELG1CQUFtQixDQUFDLFNBQW1CO1FBQ3JDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0csSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQ3ZDLENBQUM7U0FDSDtRQUNELEdBQUcsR0FBRyx3QkFBd0IsU0FBUyxFQUFFLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBdUIsR0FBRyxDQUFDLENBQUM7UUFDaEQscUZBQXFGO0lBQ3ZGLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sY0FBYyxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFZO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sY0FBYyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxjQUFjLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBWTtRQUNoQyxJQUFJLFlBQVksR0FBUSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUE7UUFDOUMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQVEsRUFBRSxFQUFFO2dCQUN2SCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO29CQUM1QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUE7aUJBQ25CO3FCQUFNO29CQUNMLE9BQU8sRUFBRSxDQUFBO2lCQUNWO1lBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLFlBQVksSUFBSSxFQUFFLENBQUE7U0FDMUI7UUFDRCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQVksRUFBRSxjQUFvQixFQUFFLGNBQXdCLEVBQUcsZUFBcUIsRUFBQyxjQUFzQjtRQUMvSCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUN0RSxNQUFNLE9BQU8sR0FBUTtnQkFDbkIsR0FBRyxFQUFFLHNCQUFzQixPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDdkQsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUU7YUFDMUMsQ0FBQztZQUNGLE9BQU8sT0FBTyxDQUFBO1NBQ2Y7UUFDRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ2pDLE1BQU0sT0FBTyxHQUFRO2dCQUNuQixHQUFHLEVBQUUsZUFBZSxPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUN2QyxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRTthQUMxQyxDQUFDO1lBQ0YsT0FBTyxPQUFPLENBQUE7U0FDZjthQUFNO1lBQ0wsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLDhFQUE4RTtnQkFDOUUsTUFBTSxjQUFjLEdBQVEsY0FBYyxDQUFDO2dCQUMzQyxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFO29CQUMzQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsSUFBSSxjQUFjLEVBQUUsTUFBTSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxZQUFZLEtBQUssZUFBZSxJQUFLLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtvQkFDckssSUFBSSxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQyxlQUFlLENBQUMsZUFBZTt3QkFDOUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsZUFBZSxDQUFDLG1CQUFtQjt3QkFDM0Ysa0JBQWtCLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsZUFBZSxDQUFDLGlCQUFpQjt3QkFDekYsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsZUFBZTt3QkFDekYsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3BGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQ3JELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDbEM7d0JBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7d0JBQzNFLE9BQU8sSUFBSSxDQUFDO3FCQUNiO29CQUFDO3dCQUNBLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRyxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7d0JBQzdHLE9BQU8sSUFBSSxDQUFDO3FCQUNiO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztnQkFDaEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQVksRUFBRSxVQUFlLEVBQUUsZUFBcUIsRUFBQyxjQUFzQjtRQUNyRyxJQUFJLE9BQVksQ0FBQztRQUNqQixJQUFJLFVBQVUsRUFBRSxvQkFBb0IsS0FBSyxHQUFHLEVBQUU7WUFDNUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxVQUFVLEVBQUUsa0JBQWtCLElBQUksVUFBVSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtZQUM1RSxNQUFNLGdCQUFnQixHQUFHO2dCQUN2QixHQUFHLFVBQVU7Z0JBQ2IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxZQUFZO2dCQUNuQyxlQUFlLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2dCQUNuRCxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2FBQzlCLENBQUM7WUFDRixJQUFJLGdCQUFnQixDQUFDLGlCQUFpQixFQUFFO2dCQUN0QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFDbEQsVUFBVSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUMsT0FBTyxFQUFHLGVBQWUsRUFBQyxjQUFjLENBQUMsQ0FBQzthQUNsSDtZQUNELElBQUksZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFDbEQsVUFBVSxDQUFDLFlBQVksRUFDdkIsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUcsZUFBZSxFQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3JGO1NBQ0Y7UUFDRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFO1lBQzNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBUSxFQUFFLEVBQUU7Z0JBQzVGLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQzNDLE1BQU0sV0FBVyxHQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO29CQUM1QyxNQUFNLGdCQUFnQixHQUFHO3dCQUN2QixHQUFHLFVBQVU7d0JBQ2IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxZQUFZO3dCQUNuQyxlQUFlLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlO3dCQUNuRCxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3FCQUM5QixDQUFDO29CQUNGLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFDLE9BQU8sRUFBRyxlQUFlLEVBQUMsY0FBYyxDQUFDLENBQUM7b0JBQ2hKLElBQUksT0FBTyxFQUFFO3dCQUNYLE9BQU8sT0FBTyxDQUFDO3FCQUNoQjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoRTtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVuQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsY0FBbUIsRUFBRSxVQUFlLEVBQUUsUUFBYSxFQUFDLE9BQVcsRUFBRSxlQUFxQixFQUFDLGNBQXNCO1FBQy9ILElBQUcsY0FBYyxJQUFJLGNBQWMsQ0FBQyxlQUFlLEVBQUU7WUFDckQsSUFBRyxlQUFlLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDckYsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdkYsSUFBRyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBRSxDQUFBO2lCQUM3SjthQUNGO1NBQ0Y7UUFDRCxJQUFHLGNBQWMsRUFBRTtZQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNFLElBQUcsU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFHO2dCQUM5QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFFLENBQUE7YUFDeEk7U0FDRjtRQUVILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBR0QsY0FBYyxDQUFDLGNBQW1CLEVBQUUsT0FBVyxFQUFFLGFBQW9CLEVBQUUsVUFBaUIsRUFBRSxRQUFZLEVBQUUsRUFBVSxFQUFFLElBQVk7UUFDOUgsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxHQUFHLEdBQUcsb0JBQW9CLENBQzlCLFVBQVUsRUFDVixRQUFRLEVBQ1IsYUFBYSxFQUNiLFFBQVEsRUFDUixLQUFLLEVBQ0wsbUJBQW1CLEVBQ25CLGNBQWMsQ0FBQyxPQUFPLEVBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQ1osRUFBRSxFQUNGLElBQUksQ0FDTCxDQUFDO1lBQ0YsT0FBTyxHQUFHLENBQUM7U0FDWjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBWTtRQUN0QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRTtZQUNqSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRXpDLElBQUksZUFBZSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFO2dCQUMxRCxPQUFPO29CQUNMLEdBQUcsRUFBRSxZQUFZLGVBQWUsQ0FBQyxVQUFVLFdBQVc7b0JBQ3RELFdBQVcsRUFBRTt3QkFDWCxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7d0JBQ3hCLEVBQUUsRUFBRSxnQkFBZ0I7d0JBQ3BCLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDekQ7aUJBQ0YsQ0FBQzthQUNIO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBRztZQUNkLEdBQUcsRUFBRSxZQUFZLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLFlBQVksV0FBVztZQUN0RSxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUE0QjtTQUMzRixDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxjQUFjLEtBQUssU0FBUyxDQUFDLGVBQWUsQ0FBQyxnQ0FBZ0MsRUFBRTtZQUM3RyxPQUFPLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoRztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFjO1FBQzlCLGlEQUFpRDtRQUNqRCw4REFBOEQ7UUFDOUQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUN6RixPQUFPO1lBQ0wsa0JBQWtCO1lBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO21CQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUN0QyxDQUFDO1NBQ0g7UUFBQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQVcsRUFBRSxHQUFRO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE1BQVc7UUFDdEIsK0JBQStCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFHRCx1QkFBdUIsQ0FBQyxjQUFtQixFQUFFLFlBQW9CO1FBQy9ELElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUU7WUFDM0MsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsQ0FBQTtZQUN6RixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELDBCQUEwQixDQUFDLElBQTRDO1FBQ3JFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELHFCQUFxQixDQUFDLFdBQWdCO1FBQ3BDLE1BQU0sTUFBTSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUMxRyxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQsaUJBQWlCLENBQUMsY0FBc0IsRUFBRSxNQUFjO1FBQ3RELFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBRTNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFbEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUE7SUFDbkYsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDN0YsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELGVBQWUsQ0FBQyxpQkFBd0I7UUFDdEMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUFnQjtRQUM5QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBYSxFQUFFLE9BQWM7UUFDckQsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQ2hDLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FDbkMsUUFBUSxDQUFDLFNBQVM7YUFDZixNQUFNLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO2FBQ2hELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUM5QyxDQUFDO1FBRUYsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBYztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFBO0lBQ3JDLENBQUM7K0dBaHJCVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBFTVBUWSwgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSwgbWFwLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE5zQ29udGVudFN0cmlwTXVsdGlwbGUgfSBmcm9tICcuLi9fbW9kZWxzL2NvbnRlbnQtc3RyaXAtbXVsdGlwbGUubW9kZWwnO1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vX21vZGVscy93aWRnZXQtY29udGVudC5tb2RlbCc7XG5pbXBvcnQgeyBOU1NlYXJjaCB9IGZyb20gJy4uL19tb2RlbHMvd2lkZ2V0LXNlYXJjaC5tb2RlbCc7XG4vLyB0c2xpbnQ6ZGlzYWJsZVxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyB2aWV3ZXJSb3V0ZUdlbmVyYXRvciB9IGZyb20gJy4vdmlld2VyLXJvdXRlLXV0aWwnXG5pbXBvcnQgeyBXaWRnZXRVc2VyU2VydmljZUxpYiB9IGZyb20gJy4vd2lkZ2V0LXVzZXItbGliLnNlcnZpY2UnXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBDb250ZW50TGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZW50LWxhbmd1YWdlLnNlcnZpY2UnO1xuLy8gdHNsaW50OmVuYWJsZVxuXG4vLyBUT0RPOiBtb3ZlIHRoaXMgaW4gc29tZSBjb21tb24gcGxhY2VcbmNvbnN0IFBST1RFQ1RFRF9TTEFHX1Y4ID0gJy9hcGlzL3Byb3RlY3RlZC92OCc7XG5jb25zdCBQUk9EX0JBU0VfRU5EUE9JTlQgPSAnaHR0cHM6Ly9wb3J0YWwuaWdvdGthcm1heW9naS5nb3YuaW4nXG5jb25zdCBBUElfRU5EX1BPSU5UUyA9IHtcbiAgQ09OVEVOVDogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnRgLFxuICBBVVRIT1JJTkdfQ09OVEVOVDogYC9hcGkvY291cnNlL3YxL2hpZXJhcmNoeWAsXG4gIENPTlRFTlRfTElLRVM6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2xpa2VDb3VudGAsXG4gIFNFVF9TM19DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldENvb2tpZWAsXG4gIFNFVF9TM19JTUFHRV9DT09LSUU6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NldEltYWdlQ29va2llYCxcbiAgRkVUQ0hfTUFOSUZFU1Q6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L2dldFdlYk1vZHVsZU1hbmlmZXN0YCxcbiAgRkVUQ0hfV0VCX01PRFVMRV9GSUxFUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvZ2V0V2ViTW9kdWxlRmlsZXNgLFxuICBNVUxUSVBMRV9DT05URU5UOiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9tdWx0aXBsZWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y1OiBgJHtQUk9URUNURURfU0xBR19WOH0vY29udGVudC9zZWFyY2hWNWAsXG4gIENPTlRFTlRfU0VBUkNIX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBUUkVORElOR19DT05URU5UX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC90cmVuZGluZy9jb250ZW50L3NlYXJjaGAsXG4gIENPTlRFTlRfU0VBUkNIX1JFTEFURURfQ0JQX1Y2OiBgL2FwaXMvcHJveGllcy92OC9zdW5iaXJkaWdvdC9zZWFyY2hgLFxuICBDT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT046IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb250ZW50L3NlYXJjaFJlZ2lvblJlY29tbWVuZGF0aW9uYCxcbiAgQ09OVEVOVF9ISVNUT1JZOiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9oaXN0b3J5YCxcbiAgQ09OVEVOVF9ISVNUT1JZVjI6IGAvYXBpcy9wcm94aWVzL3Y4L3JlYWQvY29udGVudC1wcm9ncmVzYCxcbiAgQ09VUlNFX0JBVENIX0xJU1Q6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2JhdGNoL2xpc3RgLFxuICBDT1VSU0VfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2NvdXJzZS92MS9iYXRjaC9yZWFkYCxcbiAgQVVUT19BU1NJR05fQkFUQ0g6IGAvYXBpcy9wcm90ZWN0ZWQvdjgvY29ob3J0cy91c2VyL2F1dG9lbnJvbGxtZW50L2AsXG4gIEFVVE9fQVNTSUdOX0NVUkFURURfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2N1cmF0ZWRwcm9ncmFtL3YxL2Vucm9sYCxcbiAgQVVUT19BU1NJR05fT1BFTl9QUk9HUkFNOiBgL2FwaXMvcHJveGllcy92OC9vcGVucHJvZ3JhbS92MS9lbnJvbGAsXG4gIFVTRVJfQ09OVElOVUVfTEVBUk5JTkc6IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS91c2VyL2hpc3RvcnkvY29udGludWVgLFxuICBDT05URU5UX1JBVElORzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L3VzZXIvcmF0aW5nYCxcbiAgQ09MTEVDVElPTl9ISUVSQVJDSFk6ICh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpID0+XG4gICAgYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvbnRlbnQvY29sbGVjdGlvbi8ke3R5cGV9LyR7aWR9YCxcbiAgUkVHSVNUUkFUSU9OX1NUQVRVUzogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2FkbWluL3VzZXJSZWdpc3RyYXRpb24vY2hlY2tVc2VyUmVnaXN0cmF0aW9uQ29udGVudGAsXG4gIE1BUktfQVNfQ09NUExFVEVfTUVUQTogKGNvbnRlbnRJZDogc3RyaW5nKSA9PiBgJHtQUk9URUNURURfU0xBR19WOH0vdXNlci9wcm9ncmVzcy8ke2NvbnRlbnRJZH1gLFxuICBFTlJPTExfQkFUQ0g6IGAvYXBpcy9wcm94aWVzL3Y4L2xlYXJuZXIvY291cnNlL3YxL2Vucm9sYCxcbiAgRU5ST0xMX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbGAsXG4gIFdJVEhEUkFXX0JBVENIX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91bmVucm9sYCxcbiAgQkxFTkRFRF9VU0VSX1dGOiBgL2FwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS91c2VyL3NlYXJjaGAsXG4gIEJMRU5ERURfVVNFUl9DT1VOVDogYGFwaXMvcHJveGllcy92OC93b3JrZmxvdy9ibGVuZGVkcHJvZ3JhbS9lbnJvbC9zdGF0dXMvY291bnRgLFxuICBDRVJUX0FERF9URU1QTEFURTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvdGVtcGxhdGUvYWRkYCxcbiAgQ0VSVF9JU1NVRTogYCR7UFJPVEVDVEVEX1NMQUdfVjh9L2NvaG9ydHMvY291cnNlL2JhdGNoL2NlcnQvaXNzdWVgLFxuICBDRVJUX0RPV05MT0FEOiAoY2VydElkOiBhbnkpID0+IGAke1BST1RFQ1RFRF9TTEFHX1Y4fS9jb2hvcnRzL2NvdXJzZS9iYXRjaC9jZXJ0L2Rvd25sb2FkLyR7Y2VydElkfWAsXG4gIFJFQURfS0FSTUFQT0lOVFM6IGAvYXBpcy9wcm94aWVzL3Y4L2thcm1hcG9pbnRzL3JlYWRgLFxuICBDT05URU5UX1JFQUQ6IChjb250ZW50SWQ6IGFueSkgPT4gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvcmVhZC8ke2NvbnRlbnRJZH1gLFxuICBSRUFEX0NPVVJTRV9LQVJNQVBPSU5UUzogJy9hcGlzL3Byb3hpZXMvdjgva2FybWFwb2ludHMvdXNlci9jb3Vyc2UvcmVhZCcsXG4gIENMQUlNX0tBUk1BUE9JTlRTOiAnL2FwaXMvcHJveGllcy92OC9jbGFpbWthcm1hcG9pbnRzJyxcbiAgVVNFUl9LQVJNQV9QT0lOVFM6ICcvYXBpcy9wcm94aWVzL3Y4L3VzZXIvdG90YWxrYXJtYXBvaW50cycsXG4gIEFHR1JFR0FUSU9OX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvY29udGVudC9hZ2dyZWdhdGlvbi9zZWFyY2gnLFxuICBGRUFUVVJFX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvZmVhdHVyZWQvY29udGVudC9zZWFyY2gnLFxuICBTQVZFX1NBS1NIQU1BSV9SRUNPTU1FTkRFRF9GRUVEQkFDSzogYC9hcGlzL3Byb3hpZXMvdjgvY291cnNlUmVjb21tZW5kYXRpb24vZmVlZGJhY2tgLFxuICBDT05URU5UX1NFQVJDSDogYC9hcGkvY29udGVudC92MS9zZWFyY2hgXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q29udGVudExpYlNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTdmM6IFdpZGdldFVzZXJTZXJ2aWNlTGliLFxuICAgIHByaXZhdGUgY29udGVudExhbmd1YWdlU3ZjOiBDb250ZW50TGFuZ3VhZ2VTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHRvY0NvbmZpZ0RhdGE6IGFueSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG4gIHRvY0NvbmZpZ0RhdGEkID0gdGhpcy50b2NDb25maWdEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuICBvbmVTdGVwUmVzdW1lRW5hYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHRlbGVtZXRyeURhdGE6IGFueSA9IG5ldyBTdWJqZWN0PGFueT4oKVxuICBwdWJsaWMgdGVsZW1ldHJ5RGF0YSQgPSB0aGlzLnRlbGVtZXRyeURhdGEuYXNPYnNlcnZhYmxlKClcbiAgdGVsZW1ldHJ5RXZlbnREYXRhOiBhbnkgPSBuZXcgU3ViamVjdDxhbnk+KClcbiAgdGVsZW1ldHJ5RXZlbnREYXRhJCA9IHRoaXMudGVsZW1ldHJ5RXZlbnREYXRhLmFzT2JzZXJ2YWJsZSgpXG4gIGN1cnJlbnRNZXRhRGF0YSE6IE5zQ29udGVudC5JQ29udGVudDtcbiAgY3VycmVudENvbnRlbnRSZWFkTWV0YURhdGEhOiBOc0NvbnRlbnQuSUNvbnRlbnQ7XG4gIGN1cnJlbnRCYXRjaEVucm9sbG1lbnRMaXN0ITogTnNDb250ZW50LklDb3Vyc2VbXTtcbiAgcHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih7fSk7XG4gIHByb2dyYW1DaGlsZENvdXJzZVJlc3VtZURhdGEkID0gdGhpcy5wcm9ncmFtQ2hpbGRDb3Vyc2VSZXN1bWVEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuICByZWxldmVudE5vdFJlbGV2ZW50ID0gbmV3IFN1YmplY3Q8eyBpc1JlbGV2ZW50OiBib29sZWFuOyB3aWRnZXREYXRhOiBhbnkgfT4oKTtcbiAgcmVsZXZlbnROb3RSZWxldmVudCQgPSB0aGlzLnJlbGV2ZW50Tm90UmVsZXZlbnQuYXNPYnNlcnZhYmxlKClcbiAgc3RvcmVkUmVjb21tZW5kZWRJZHM6IGFueSA9IHt9O1xuICBmZWVkYmFja0RhdGFGb3JDb3Vyc2U6IGFueSA9IHt9O1xuICBpc1RlbGVtZW50cnlTdWJzY3JpYmVkID0gZmFsc2VcbiAgY2hhbmdlVGVsZW1ldHJ5RGF0YShtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRlbGVtZXRyeURhdGEubmV4dChtZXNzYWdlKTtcbiAgfVxuXG4gIGNoYW5nZVRlbGVtZXRyeUV2ZW50RGF0YShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRlbGVtZXRyeUV2ZW50RGF0YS5uZXh0KGRhdGEpO1xuICB9XG4gIGlzUmVzb3VyY2UocHJpbWFyeUNhdGVnb3J5OiBzdHJpbmcpIHtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5KSB7XG4gICAgICBjb25zdCBpc1Jlc291cmNlID0gKHByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVSZXNvdXJjZVByaW1hcnlDYXRlZ29yaWVzLkxFQVJOSU5HX1JFU09VUkNFKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuUFJBQ1RJQ0VfUkVTT1VSQ0UpIHx8XG4gICAgICAgIChwcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUmVzb3VyY2VQcmltYXJ5Q2F0ZWdvcmllcy5GSU5BTF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuQ09NUF9BU1NFU1NNRU5UKSB8fFxuICAgICAgICAocHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVJlc291cmNlUHJpbWFyeUNhdGVnb3JpZXMuT0ZGTElORV9TRVNTSU9OKTtcbiAgICAgIHJldHVybiBpc1Jlc291cmNlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmZXRjaE1hcmtBc0NvbXBsZXRlTWV0YShpZGVudGlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLk1BUktfQVNfQ09NUExFVEVfTUVUQShpZGVudGlmaWVyKVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkudG9Qcm9taXNlKClcbiAgICBpZiAodXJsKSB7IH1cbiAgICByZXR1cm4gb2YoKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHVwZGF0ZVRvY0NvbmZpZyhkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnRvY0NvbmZpZ0RhdGEubmV4dChkYXRhKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudChcbiAgICBjb250ZW50SWQ6IHN0cmluZyxcbiAgICBoaWVyYXJjaHlUeXBlOiAnYWxsJyB8ICdtaW5pbWFsJyB8ICdkZXRhaWwnID0gJ2RldGFpbCcsXG4gICAgX2FkZGl0aW9uYWxGaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgcHJpbWFyeUNhdGVnb3J5Pzogc3RyaW5nIHwgbnVsbCxcbiAgKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnQ+IHtcbiAgICAvLyBjb25zdCB1cmwgPSBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UfS8ke2NvbnRlbnRJZH0/aGllcmFyY2h5VHlwZT0ke2hpZXJhcmNoeVR5cGV9YFxuICAgIGxldCB1cmwgPSAnJztcbiAgICBjb25zdCBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKTtcbiAgICBpZiAocHJpbWFyeUNhdGVnb3J5ICYmIHRoaXMuaXNSZXNvdXJjZShwcmltYXJ5Q2F0ZWdvcnkpKSB7XG4gICAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgICAgdXJsID0gYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2NvbnRlbnQvdjMvcmVhZC8ke2NvbnRlbnRJZH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gYC9hcGkvY29udGVudC92MS9yZWFkLyR7Y29udGVudElkfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZm9yUHJldmlldykge1xuICAgICAgICB1cmwgPSBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vY29udGVudC92My9oaWVyYXJjaHkvJHtjb250ZW50SWR9P2hpZXJhcmNoeVR5cGU9JHtoaWVyYXJjaHlUeXBlfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmb3JjcmVhdG9yID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJ2VkaXRNb2RlPXRydWUnKTtcbiAgICAgICAgaWYgKGZvcmNyZWF0b3IpIHtcbiAgICAgICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBgL2FwaS9jb3Vyc2UvdjEvaGllcmFyY2h5LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPSR7aGllcmFyY2h5VHlwZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiB0aGlzLmh0dHBcbiAgICAvLyAgIC5wb3N0PE5zQ29udGVudC5JQ29udGVudD4odXJsLCB7IGFkZGl0aW9uYWxGaWVsZHMgfSlcbiAgICAvLyAgIC5waXBlKHJldHJ5KDEpKVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8TnNDb250ZW50LklDb250ZW50Pih1cmwpXG4gICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gICAgLy8gaWYgKGFwaURhdGEgJiYgYXBpRGF0YS5yZXN1bHQpIHtcbiAgICAvLyAgIHJldHVybiBhcGlEYXRhLnJlc3VsdC5jb250ZW50XG4gICAgLy8gfVxuICB9XG4gIGZldGNoQXV0aG9yaW5nQ29udGVudChjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250ZW50PiB7XG4gICAgY29uc3QgZm9yY3JlYXRvciA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCdlZGl0TW9kZT10cnVlJyk7XG4gICAgbGV0IHVybCA9ICcnO1xuICAgIGlmIChmb3JjcmVhdG9yKSB7XG4gICAgICB1cmwgPSBgYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9jb250ZW50L3YzL2hpZXJhcmNoeS8ke2NvbnRlbnRJZH0/bW9kZT1lZGl0YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gYCR7QVBJX0VORF9QT0lOVFMuQVVUSE9SSU5HX0NPTlRFTlR9LyR7Y29udGVudElkfT9oaWVyYXJjaHlUeXBlPWRldGFpbGA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudD4odXJsKS5waXBlKHNoYXJlUmVwbGF5KDEpLCByID0+IHIpO1xuICB9XG4gIGZldGNoTXVsdGlwbGVDb250ZW50KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250ZW50W10+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuTVVMVElQTEVfQ09OVEVOVH0vJHtpZHMuam9pbignLCcpfWAsXG4gICAgKTtcbiAgfVxuICBmZXRjaENvbGxlY3Rpb25IaWVyYXJjaHkodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBwYWdlTnVtYmVyOiBudW1iZXIgPSAwLCBwYWdlU2l6ZTogbnVtYmVyID0gMSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29sbGVjdGlvbkhpZXJhcmNoeVJlc3BvbnNlPihcbiAgICAgIGAke0FQSV9FTkRfUE9JTlRTLkNPTExFQ1RJT05fSElFUkFSQ0hZKFxuICAgICAgICB0eXBlLFxuICAgICAgICBpZCxcbiAgICAgICl9P3BhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0ke3BhZ2VTaXplfWAsXG4gICAgKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZENvdXJzZSgpIHtcblxuICB9XG5cbiAgZmV0Y2hDb3Vyc2VCYXRjaGVzKHJlcTogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oQVBJX0VORF9QT0lOVFMuQ09VUlNFX0JBVENIX0xJU1QsIHJlcSlcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICAvLyBmZXRjaCBpbmRpdmlkdWFsIGJhdGNoXG4gIGZldGNoQ291cnNlQmF0Y2goYmF0Y2hJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT1VSU0VfQkFUQ0h9LyR7YmF0Y2hJZH1gLFxuICAgICk7XG4gIH1cblxuICBhdXRvQXNzaWduQmF0Y2hBcGkoaWRlbnRpZmllcjogYW55KTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TnNDb250ZW50LklCYXRjaExpc3RSZXNwb25zZT4oYCR7QVBJX0VORF9QT0lOVFMuQVVUT19BU1NJR05fQkFUQ0h9JHtpZGVudGlmaWVyfWApXG4gICAgICAucGlwZShcbiAgICAgICAgcmV0cnkoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnJlc3VsdC5yZXNwb25zZVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgYXV0b0Fzc2lnbkN1cmF0ZWRCYXRjaEFwaShyZXF1ZXN0OiBhbnksIHByb2dyYW1UeXBlOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQmF0Y2hMaXN0UmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9ncmFtVHlwZSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5NT0RFUkFURURfUFJPR1JBTSA/XG4gICAgICBBUElfRU5EX1BPSU5UUy5BVVRPX0FTU0lHTl9PUEVOX1BST0dSQU0gOiBBUElfRU5EX1BPSU5UUy5BVVRPX0FTU0lHTl9DVVJBVEVEX0JBVENIO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnQuSUJhdGNoTGlzdFJlc3BvbnNlPihgJHt1cmx9YCwgcmVxdWVzdClcbiAgICAgIC5waXBlKFxuICAgICAgICByZXRyeSgxKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChkYXRhOiBhbnkpID0+IGRhdGEucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBlbnJvbGxVc2VyVG9CYXRjaChyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkVOUk9MTF9CQVRDSCwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZW5yb2xsQW5kVW5lbnJvbGxVc2VyVG9CYXRjaFdGKHJlcTogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBjb25zdCB1cmw6IGFueSA9IHR5cGUgPT09ICdXSVRIRFJBVycgPyBBUElfRU5EX1BPSU5UUy5XSVRIRFJBV19CQVRDSF9XRiA6IEFQSV9FTkRfUE9JTlRTLkVOUk9MTF9CQVRDSF9XRjtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHJlcSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGZldGNoQmxlbmRlZFVzZXJXRihyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KEFQSV9FTkRfUE9JTlRTLkJMRU5ERURfVVNFUl9XRiwgcmVxKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hCbGVuZGVkVXNlckNPVU5UKHJlcTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoQVBJX0VORF9QT0lOVFMuQkxFTkRFRF9VU0VSX0NPVU5ULCByZXEpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBmZXRjaENvbnRlbnRMaWtlcyhjb250ZW50SWRzOiB7IGNvbnRlbnRfaWQ6IHN0cmluZ1tdIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDx7IFtpZGVudGlmaWVyOiBzdHJpbmddOiBudW1iZXIgfT4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9MSUtFUywgY29udGVudElkcylcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuICBmZXRjaENvbnRlbnRSYXRpbmdzKGNvbnRlbnRJZHM6IHsgY29udGVudElkczogc3RyaW5nW10gfSkge1xuICAgIGlmIChjb250ZW50SWRzKSB7IH1cbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdChgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX1JBVElOR30vcmF0aW5nYCwgY29udGVudElkcylcbiAgICAvLyAgIC50b1Byb21pc2UoKVxuICAgIHJldHVybiBvZigpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgZmV0Y2hDb250ZW50SGlzdG9yeShjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGludWVMZWFybmluZ0RhdGE+KFxuICAgICAgYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9ISVNUT1JZfS8ke2NvbnRlbnRJZH1gLFxuICAgICk7XG4gIH1cblxuICBmZXRjaENvbnRlbnRIaXN0b3J5VjIocmVxOiBOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhUmVxKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRpbnVlTGVhcm5pbmdEYXRhPiB7XG4gICAgcmVxLnJlcXVlc3QuZmllbGRzID0gWydwcm9ncmVzc2RldGFpbHMnXTtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5odHRwLnBvc3Q8TnNDb250ZW50LklDb250aW51ZUxlYXJuaW5nRGF0YT4oXG4gICAgICBgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX0hJU1RPUllWMn0vJHtyZXEucmVxdWVzdC5jb3Vyc2VJZH1gLCByZXFcbiAgICApO1xuICAgIGRhdGEuc3Vic2NyaWJlKChzdWJzY3JpYmVEYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucHJvZ3JhbUNoaWxkQ291cnNlUmVzdW1lRGF0YS5uZXh0KHsgcmVzdW1lRGF0YTogc3Vic2NyaWJlRGF0YS5yZXN1bHQuY29udGVudExpc3QsIGNvdXJzZUlkOiByZXEucmVxdWVzdC5jb3Vyc2VJZCB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNvbnRpbnVlTGVhcm5pbmcoaWQ6IHN0cmluZywgY29sbGVjdGlvbklkPzogc3RyaW5nLCBjb2xsZWN0aW9uVHlwZT86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb25UeXBlICYmXG4gICAgICAgIGNvbGxlY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICdwbGF5bGlzdCcpIHtcbiAgICAgICAgY29uc3QgcmVxQm9keSA9IHtcbiAgICAgICAgICBjb250ZXh0UGF0aElkOiBjb2xsZWN0aW9uSWQgPyBjb2xsZWN0aW9uSWQgOiBpZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBpZCxcbiAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgICAgICBjb250ZXh0RnVsbFBhdGg6IFtjb2xsZWN0aW9uSWQsIGlkXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBkYXRlQWNjZXNzZWQ6IERhdGUubm93KCksXG4gICAgICAgICAgY29udGV4dFR5cGU6ICdwbGF5bGlzdCcsXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUNvbnRpbnVlTGVhcm5pbmcocmVxQm9keSkudG9Qcm9taXNlKCkuY2F0Y2goKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXFCb2R5ID0ge1xuICAgICAgICAgIGNvbnRleHRQYXRoSWQ6IGNvbGxlY3Rpb25JZCA/IGNvbGxlY3Rpb25JZCA6IGlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IGlkLFxuICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHsgdGltZXN0YW1wOiBEYXRlLm5vdygpIH0pLFxuICAgICAgICAgIGRhdGVBY2Nlc3NlZDogRGF0ZS5ub3coKSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlQ29udGludWVMZWFybmluZyhyZXFCb2R5KS50b1Byb21pc2UoKS5jYXRjaCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNhdmVDb250aW51ZUxlYXJuaW5nKGNvbnRlbnQ6IE5zQ29udGVudC5JVmlld2VyQ29udGludWVMZWFybmluZ1JlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIGNvbnN0IHVybCA9IEFQSV9FTkRfUE9JTlRTLlVTRVJfQ09OVElOVUVfTEVBUk5JTkdcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55Pih1cmwsIGNvbnRlbnQpXG4gICAgaWYgKGNvbnRlbnQpIHtcblxuICAgIH1cbiAgICByZXR1cm4gb2YoKSBhcyBhbnk7XG4gIH1cblxuICBzZXRTM0Nvb2tpZShcbiAgICBfY29udGVudElkOiBzdHJpbmcsXG4gICAgLy8gX3BhdGg6IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwXG4gICAgLy8gICAucG9zdChBUElfRU5EX1BPSU5UUy5TRVRfUzNfQ09PS0lFLCB7IGNvbnRlbnRJZCB9KVxuICAgIC8vICAgLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSlcblxuICAgIHJldHVybiBFTVBUWTtcbiAgfVxuXG4gIHNldFMzSW1hZ2VDb29raWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuU0VUX1MzX0lNQUdFX0NPT0tJRSwge30pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSk7XG4gIH1cblxuICBmZXRjaE1hbmlmZXN0KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuRkVUQ0hfTUFOSUZFU1QsIHsgdXJsIH0pO1xuICB9XG4gIGZldGNoV2ViTW9kdWxlQ29udGVudCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7QVBJX0VORF9QT0lOVFMuRkVUQ0hfV0VCX01PRFVMRV9GSUxFU30/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9YCk7XG4gIH1cbiAgc2VhcmNoKHJlcTogTlNTZWFyY2guSVNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+IHtcbiAgICByZXEucXVlcnkgPSByZXEucXVlcnkgfHwgJyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hBcGlSZXN1bHQ+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y1LCB7XG4gICAgICByZXF1ZXN0OiByZXEsXG4gICAgfSk7XG4gIH1cbiAgc2VhcmNoUmVnaW9uUmVjb21tZW5kYXRpb24oXG4gICAgcmVxOiBOU1NlYXJjaC5JU2VhcmNoT3JnUmVnaW9uUmVjb21tZW5kYXRpb25SZXF1ZXN0LFxuICApOiBPYnNlcnZhYmxlPE5zQ29udGVudFN0cmlwTXVsdGlwbGUuSUNvbnRlbnRTdHJpcFJlc3BvbnNlQXBpPiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIHJlcS5wcmVMYWJlbFZhbHVlID1cbiAgICAgIChyZXEucHJlTGFiZWxWYWx1ZSB8fCAnJykgK1xuICAgICAgKCh0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZSAmJiB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5jb3VudHJ5KSB8fCAnJyk7XG4gICAgcmVxLmZpbHRlcnMgPSB7XG4gICAgICAuLi5yZXEuZmlsdGVycyxcbiAgICAgIGxhYmVsczogW3JlcS5wcmVMYWJlbFZhbHVlIHx8ICcnXSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnRTdHJpcE11bHRpcGxlLklDb250ZW50U3RyaXBSZXNwb25zZUFwaT4oXG4gICAgICBBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9SRUdJT05fUkVDT01NRU5EQVRJT04sXG4gICAgICB7IHJlcXVlc3Q6IHJlcSB9LFxuICAgICk7XG4gIH1cbiAgc2VhcmNoVjYocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0KTogT2JzZXJ2YWJsZTxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4ge1xuICAgIGNvbnN0IGFwaVBhdGggPSBfLmdldChyZXEsICdhcGkucGF0aCcpO1xuICAgIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICBpZiAoYXBpUGF0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KGFwaVBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8TlNTZWFyY2guSVNlYXJjaFY2QXBpUmVzdWx0VjI+KEFQSV9FTkRfUE9JTlRTLkNPTlRFTlRfU0VBUkNIX1Y2LCByZXEpO1xuICB9XG5cbiAgc2VhcmNoUmVxdWVzdChyZXE6IE5TU2VhcmNoLklTZWFyY2hWNlJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPiB7XG4gICAgY29uc3QgYXBpUGF0aCA9IF8uZ2V0KHJlcSwgJ2FwaS5wYXRoJyk7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIGlmIChhcGlQYXRoKSB7XG4gICAgICBpZihfLmdldChyZXEsICdhcGkudHlwZScpID09PSAnZ2V0JyApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihhcGlQYXRoKTtcbiAgICAgIH0gZWxzZSBpZihfLmdldChyZXEsICdhcGkudHlwZScpID09PSAncG9zdCcgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGFwaVBhdGgsIHJlcS5yZXF1ZXN0IHx8IHt9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPihhcGlQYXRoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9WNiwgcmVxKTtcbiAgfVxuXG4gIHNlYXJjaENvbnRlbnRTZWFyY2hfUFJPRChyZXE6IE5TU2VhcmNoLklTZWFyY2hWNlJlcXVlc3QpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPiB7XG4gICAgY29uc3QgYXBpUGF0aCA9IF8uZ2V0KHJlcSwgJ2FwaS5wYXRoJyk7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIGlmIChhcGlQYXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oYXBpUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOU1NlYXJjaC5JU2VhcmNoVjZBcGlSZXN1bHRWMj4oUFJPRF9CQVNFX0VORFBPSU5UICsgQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9TRUFSQ0gsIHJlcSk7XG4gIH1cblxuICBzZWFyY2hSZWxhdGVkQ0JQVjYocmVxOiBOU1NlYXJjaC5JU2VhcmNoVjZSZXF1ZXN0VjIpOiBPYnNlcnZhYmxlPE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE5TU2VhcmNoLklTZWFyY2hWNkFwaVJlc3VsdFYyPihBUElfRU5EX1BPSU5UUy5DT05URU5UX1NFQVJDSF9SRUxBVEVEX0NCUF9WNiwgcmVxKTtcbiAgfVxuXG4gIGZldGNoQ29udGVudFJhdGluZyhjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8eyByYXRpbmc6IG51bWJlciB9PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8eyByYXRpbmc6IG51bWJlciB9PihgJHtBUElfRU5EX1BPSU5UUy5DT05URU5UX1JBVElOR30vJHtjb250ZW50SWR9YCk7XG4gIH1cbiAgZGVsZXRlQ29udGVudFJhdGluZyhjb250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWApO1xuICB9XG4gIGFkZENvbnRlbnRSYXRpbmcoY29udGVudElkOiBzdHJpbmcsIGRhdGE6IHsgcmF0aW5nOiBudW1iZXIgfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SQVRJTkd9LyR7Y29udGVudElkfWAsIGRhdGEpO1xuICB9XG5cbiAgZ2V0Rmlyc3RDaGlsZEluSGllcmFyY2h5KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCk6IE5zQ29udGVudC5JQ29udGVudCB7XG4gICAgaWYgKCEoY29udGVudC5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNICYmXG4gICAgICAgICEoY29udGVudC5hcnRpZmFjdFVybCAmJiBjb250ZW50LmFydGlmYWN0VXJsLmxlbmd0aCkpIHx8XG4gICAgICBjb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTUFOREFUT1JZX0NPVVJTRV9HT0FMIHx8XG4gICAgICAoY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSAmJlxuICAgICAgICAhKGNvbnRlbnQuYXJ0aWZhY3RVcmwgJiYgY29udGVudC5hcnRpZmFjdFVybC5sZW5ndGgpKSB8fFxuICAgICAgKGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUgJiZcbiAgICAgICAgIShjb250ZW50LmFydGlmYWN0VXJsICYmIGNvbnRlbnQuYXJ0aWZhY3RVcmwubGVuZ3RoKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gY29udGVudC5jaGlsZHJlblswXTtcbiAgICAgIHJldHVybiB0aGlzLmdldEZpcnN0Q2hpbGRJbkhpZXJhcmNoeShjaGlsZCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LktOT1dMRURHRV9BUlRJRkFDVCB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBST0dSQU0gfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUkFDVElDRV9SRVNPVVJDRSB8fFxuICAgICAgY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlQgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT01QX0FTU0VTU01FTlQgfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgIGNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5PRkZMSU5FX1NFU1NJT05cbiAgICApIHtcbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cbiAgICBjb25zdCBmaXJzdENoaWxkID0gY29udGVudC5jaGlsZHJlblswXTtcbiAgICBjb25zdCByZXN1bHRDb250ZW50ID0gdGhpcy5nZXRGaXJzdENoaWxkSW5IaWVyYXJjaHkoZmlyc3RDaGlsZCk7XG4gICAgcmV0dXJuIHJlc3VsdENvbnRlbnQ7XG4gIH1cblxuICBnZXRSZWdpc3RyYXRpb25TdGF0dXMoc291cmNlOiBzdHJpbmcpOiBQcm9taXNlPHsgaGFzQWNjZXNzOiBib29sZWFuOyByZWdpc3RyYXRpb25Vcmw/OiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuUkVHSVNUUkFUSU9OX1NUQVRVU30vJHtzb3VyY2V9YCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBmZXRjaENvbmZpZyh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKTtcbiAgfVxuXG4gIGFkZENlcnRUZW1wbGF0ZShib2R5OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ0VSVF9BRERfVEVNUExBVEV9YCwgYm9keSk7XG4gIH1cblxuICBpc3N1ZUNlcnQoYm9keTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7QVBJX0VORF9QT0lOVFMuQ0VSVF9JU1NVRX1gLCBib2R5KTtcbiAgfVxuICBkb3dubG9hZENlcnQoY2VydElkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkNFUlRfRE9XTkxPQUQoY2VydElkKX1gKTtcbiAgfVxuXG4gIHRyZW5kaW5nQ29udGVudFNlYXJjaChyZXE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmVxLnF1ZXJ5ID0gcmVxLnF1ZXJ5IHx8ICcnO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLlRSRU5ESU5HX0NPTlRFTlRfU0VBUkNILCByZXEpO1xuICB9XG5cbiAgZ2V0S2FybWFQb2l0bnMobGltaXQ6IG51bWJlciwgb2Zmc2V0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuUkVBRF9LQVJNQVBPSU5UUywgeyBsaW1pdCwgb2Zmc2V0IH0pLnBpcGUoY2F0Y2hFcnJvcihfZXJyID0+IG9mKHRydWUpKSk7XG4gIH1cbiAgZmV0Y2hQcm9ncmFtQ29udGVudChjb250ZW50SWQ6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxOc0NvbnRlbnQuSUNvbnRlbnRbXT4ge1xuICAgIGxldCB1cmwgPSAnJztcbiAgICBjb25zdCBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKTtcbiAgICBpZiAoIWZvclByZXZpZXcpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PE5zQ29udGVudC5JQ29udGVudFtdPihcbiAgICAgICAgQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SRUFEKGNvbnRlbnRJZCksXG4gICAgICApO1xuICAgIH1cbiAgICB1cmwgPSBgL2FwaS9jb250ZW50L3YxL3JlYWQvJHtjb250ZW50SWR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4odXJsKTtcbiAgICAvLyByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnRbXT4oQVBJX0VORF9QT0lOVFMuQ09OVEVOVF9SRUFEKGNvbnRlbnRJZCkpXG4gIH1cblxuICBnZXRDb3Vyc2VLYXJtYVBvaW50cyhyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5SRUFEX0NPVVJTRV9LQVJNQVBPSU5UUywgcmVxdWVzdCk7XG4gIH1cblxuICBjbGFpbUthcm1hcG9pbnRzKHJlcXVlc3Q6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9FTkRfUE9JTlRTLkNMQUlNX0tBUk1BUE9JTlRTLCByZXF1ZXN0KTtcbiAgfVxuXG4gIHVzZXJLYXJtYVBvaW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihBUElfRU5EX1BPSU5UUy5VU0VSX0tBUk1BX1BPSU5UUywge30pO1xuICB9XG5cbiAgYXN5bmMgZ2V0RW5yb2xsZWREYXRhKGRvSWQ6IHN0cmluZykge1xuICAgIGxldCBlbnJvbGxlZERvSWQ6IGFueSA9IHRoaXMudXNlclN2Yy5lbnJvbGxtZW50RGF0YUlkcy5pbmNsdWRlcyhkb0lkKVxuICAgIGxldCB1c2VySWQgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS51c2VySWRcbiAgICBpZiAoZW5yb2xsZWREb0lkKSB7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLnVzZXJTdmMuZmV0Y2hFbnJvbGxtZW50RGF0YUJ5Q29udGVudElkKHVzZXJJZCwgZG9JZCkudG9Qcm9taXNlKCkudGhlbihhc3luYyAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMuY291cnNlcyAmJiByZXMuY291cnNlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVzLmNvdXJzZXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKF9lcnI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gW11cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YSB8fCBbXVxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGFzeW5jIGdldFJlc291cnNlTGluayhjb250ZW50OiBhbnksIGVucm9sbG1lbnRMaXN0PzogYW55LCBjaGVja0ZvclJlc3VtZT86IGJvb2xlYW4sICBiYXNlQ29udGVudFJlYWQ/OiBhbnksbXVsdGlsaW5ndWFsSWQ/OnN0cmluZykge1xuICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQuY29udGVudCAmJiBjb250ZW50LmNvbnRlbnQuY2F0ZWdvcnkgPT09ICdFdmVudCcpIHtcbiAgICAgIGNvbnN0IHVybERhdGE6IGFueSA9IHtcbiAgICAgICAgdXJsOiBgYXBwL2V2ZW50LWh1Yi9ob21lLyR7Y29udGVudC5jb250ZW50LmlkZW50aWZpZXJ9YCxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHsgYmF0Y2hJZDogY29udGVudC5iYXRjaElkIH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHVybERhdGFcbiAgICB9XG4gICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC5leHRlcm5hbElkKSB7XG4gICAgICBjb25zdCB1cmxEYXRhOiBhbnkgPSB7XG4gICAgICAgIHVybDogYGFwcC90b2MvZXh0LyR7Y29udGVudC5jb250ZW50SWR9YCxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHsgYmF0Y2hJZDogY29udGVudC5iYXRjaElkIH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHVybERhdGFcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNoZWNrRm9yUmVzdW1lKSB7XG4gICAgICAgIC8vIGNvbnN0IGVucm9sbGVkQ291cnNlOiBhbnkgPSBhd2FpdCB0aGlzLmdldEVucm9sbGVkRGF0YShjb250ZW50LmlkZW50aWZpZXIpO1xuICAgICAgICBjb25zdCBlbnJvbGxlZENvdXJzZTogYW55ID0gZW5yb2xsbWVudExpc3Q7XG4gICAgICAgIGlmIChlbnJvbGxlZENvdXJzZSAmJiBlbnJvbGxlZENvdXJzZS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBlbnJvbGxlZENvdXJzZURhdGEgPSBlbnJvbGxlZENvdXJzZSAmJiBlbnJvbGxlZENvdXJzZT8ubGVuZ3RoICYmIGVucm9sbGVkQ291cnNlLmZpbmQoKGVsOiBhbnkpID0+IGVsPy5jb2xsZWN0aW9uSWQgPT09IGJhc2VDb250ZW50UmVhZCB8fCAgY29udGVudD8uaWRlbnRpZmllcilcbiAgICAgICAgICBpZiAoZW5yb2xsZWRDb3Vyc2VEYXRhICYmIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50ICYmIChlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5jb3Vyc2VDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVDb3Vyc2VDYXRlZ29yeS5CTEVOREVEX1BST0dSQU0gfHxcbiAgICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5LklOVklURV9PTkxZX1BST0dSQU0gfHxcbiAgICAgICAgICAgIGVucm9sbGVkQ291cnNlRGF0YS5jb250ZW50LmNvdXJzZUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRUNvdXJzZUNhdGVnb3J5Lk1PREVSQVRFRF9QUk9HUkFNIHx8XG4gICAgICAgICAgICBlbnJvbGxlZENvdXJzZURhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTSB8fFxuICAgICAgICAgICAgZW5yb2xsZWRDb3Vyc2VEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUk9HUkFNKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQmF0Y2hJblByb2dyZXNzKGVucm9sbGVkQ291cnNlRGF0YS5iYXRjaCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jaGVja0ZvckRhdGFUb0Zvcm1VcmwoY29udGVudCwgZW5yb2xsZWRDb3Vyc2VEYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH0ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQsIGVucm9sbGVkQ291cnNlRGF0YSwgIGJhc2VDb250ZW50UmVhZCwgbXVsdGlsaW5ndWFsSWQpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9uZVN0ZXBSZXN1bWVFbmFibGUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYXN5bmMgY2hlY2tGb3JEYXRhVG9Gb3JtVXJsKGNvbnRlbnQ6IGFueSwgZW5yb2xsRGF0YTogYW55LCBiYXNlQ29udGVudFJlYWQ/OiBhbnksbXVsdGlsaW5ndWFsSWQ/OnN0cmluZykge1xuICAgIGxldCB1cmxEYXRhOiBhbnk7XG4gICAgaWYgKGVucm9sbERhdGE/LmNvbXBsZXRpb25QZXJjZW50YWdlID09PSAxMDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdvdG9Ub2NQYWdlKGVucm9sbERhdGEpO1xuICAgIH1cbiAgICBpZiAoZW5yb2xsRGF0YT8ubHJjUHJvZ3Jlc3NEZXRhaWxzICYmIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlKSB7XG4gICAgICBjb25zdCBtb2RpZnlFbnJvbGxEYXRhID0ge1xuICAgICAgICAuLi5lbnJvbGxEYXRhLFxuICAgICAgICBpZGVudGlmaWVyOiBlbnJvbGxEYXRhLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBlbnJvbGxEYXRhLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICBuYW1lOiBlbnJvbGxEYXRhLmNvbnRlbnQubmFtZSxcbiAgICAgIH07XG4gICAgICBpZiAobW9kaWZ5RW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJzZURhdGFXaXRoRGF0YShtb2RpZnlFbnJvbGxEYXRhLFxuICAgICAgICAgIGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQsIGVucm9sbERhdGEubHJjUHJvZ3Jlc3NEZXRhaWxzLm1pbWVUeXBlLGNvbnRlbnQsICBiYXNlQ29udGVudFJlYWQsbXVsdGlsaW5ndWFsSWQpO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGlmeUVucm9sbERhdGEuZmlyc3RDaGlsZElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJlc291cnNlRGF0YVdpdGhEYXRhKG1vZGlmeUVucm9sbERhdGEsXG4gICAgICAgICAgZW5yb2xsRGF0YS5maXJzdENoaWxkSWQsXG4gICAgICAgICAgZW5yb2xsRGF0YS5scmNQcm9ncmVzc0RldGFpbHMubWltZVR5cGUsIGNvbnRlbnQsICBiYXNlQ29udGVudFJlYWQsbXVsdGlsaW5ndWFsSWQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5yb2xsRGF0YS5maXJzdENoaWxkSWQgfHwgZW5yb2xsRGF0YS5sYXN0UmVhZENvbnRlbnRJZCkge1xuICAgICAgY29uc3QgZG9JZCA9IGVucm9sbERhdGEuZmlyc3RDaGlsZElkIHx8IGVucm9sbERhdGEubGFzdFJlYWRDb250ZW50SWQ7XG4gICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLmZldGNoUHJvZ3JhbUNvbnRlbnQoZG9JZCkudG9Qcm9taXNlKCkudGhlbihhc3luYyAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMucmVzdWx0ICYmIHJlcy5yZXN1bHQuY29udGVudCkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnREYXRhOiBhbnkgPSByZXMucmVzdWx0LmNvbnRlbnQ7XG4gICAgICAgICAgY29uc3QgbW9kaWZ5RW5yb2xsRGF0YSA9IHtcbiAgICAgICAgICAgIC4uLmVucm9sbERhdGEsXG4gICAgICAgICAgICBpZGVudGlmaWVyOiBlbnJvbGxEYXRhLmNvbGxlY3Rpb25JZCxcbiAgICAgICAgICAgIHByaW1hcnlDYXRlZ29yeTogZW5yb2xsRGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgICAgIG5hbWU6IGVucm9sbERhdGEuY29udGVudC5uYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdXJsRGF0YSA9IHRoaXMuZ2V0UmVzb3Vyc2VEYXRhV2l0aERhdGEobW9kaWZ5RW5yb2xsRGF0YSwgY29udGVudERhdGEuaWRlbnRpZmllciwgY29udGVudERhdGEubWltZVR5cGUsY29udGVudCwgIGJhc2VDb250ZW50UmVhZCxtdWx0aWxpbmd1YWxJZCk7XG4gICAgICAgICAgaWYgKHVybERhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB1cmxEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2VEYXRhID8gcmVzcG9uc2VEYXRhIDogdGhpcy5nb3RvVG9jUGFnZShjb250ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ290b1RvY1BhZ2UoY29udGVudCk7XG5cbiAgfVxuXG4gIGdldFJlc291cnNlRGF0YVdpdGhEYXRhKGVucm9sbG1lbnREYXRhOiBhbnksIHJlc291cmNlSWQ6IGFueSwgbWltZVR5cGU6IGFueSxjb250ZW50OmFueSwgYmFzZUNvbnRlbnRSZWFkPzogYW55LG11bHRpbGluZ3VhbElkPzpzdHJpbmcpIHtcbiAgICAgICAgaWYoZW5yb2xsbWVudERhdGEgJiYgZW5yb2xsbWVudERhdGEucmVjZW50X2xhbmd1YWdlKSB7XG4gICAgICAgIGlmKGJhc2VDb250ZW50UmVhZC5sYW5ndWFnZU1hcFYxICYmIE9iamVjdC5rZXlzKGJhc2VDb250ZW50UmVhZC5sYW5ndWFnZU1hcFYxKS5sZW5ndGgpIHsgXG4gICAgICAgICAgY29uc3QgcmVjZW50X0xBTkdfREFUQSA9IGJhc2VDb250ZW50UmVhZC5sYW5ndWFnZU1hcFYxW2Vucm9sbG1lbnREYXRhLnJlY2VudF9sYW5ndWFnZV07XG4gICAgICAgICAgaWYocmVjZW50X0xBTkdfREFUQSAmJiByZWNlbnRfTEFOR19EQVRBLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvUGxheWVyUGFnZShlbnJvbGxtZW50RGF0YSwgY29udGVudCwgYmFzZUNvbnRlbnRSZWFkPy5pZGVudGlmaWVyLCByZXNvdXJjZUlkLCBtaW1lVHlwZSwgZW5yb2xsbWVudERhdGEucmVjZW50X2xhbmd1YWdlLCByZWNlbnRfTEFOR19EQVRBLmlkICkgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgaWYoZW5yb2xsbWVudERhdGEpIHtcbiAgICAgICAgY29uc3QgQkFTRV9MQU5HID0gdGhpcy5jb250ZW50TGFuZ3VhZ2VTdmMuZ2V0QmFzZUxhbmd1YWdlKGJhc2VDb250ZW50UmVhZCk7XG4gICAgICAgIGlmKEJBU0VfTEFORyAmJiBPYmplY3Qua2V5cyhCQVNFX0xBTkcpLmxlbmd0aCApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nb3RvUGxheWVyUGFnZShlbnJvbGxtZW50RGF0YSwgY29udGVudCwgYmFzZUNvbnRlbnRSZWFkPy5pZGVudGlmaWVyLCByZXNvdXJjZUlkLCBtaW1lVHlwZSwgQkFTRV9MQU5HLmxhbmdJZCwgQkFTRV9MQU5HLmlkICkgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5nb3RvVG9jUGFnZShlbnJvbGxtZW50RGF0YSk7XG4gIH1cblxuXG4gIGdvdG9QbGF5ZXJQYWdlKG5hdmlnYXRpb25EYXRhOiBhbnksIGNvbnRlbnQ6YW55LCBiYXNlQ29udGVudElkOnN0cmluZywgcmVzb3VyY2VJZDpzdHJpbmcsIG1pbWVUeXBlOmFueSwgbWw/OnN0cmluZywgbWxJZD86c3RyaW5nKSAge1xuICAgIGlmIChuYXZpZ2F0aW9uRGF0YSkge1xuICAgICAgY29uc3QgdXJsID0gdmlld2VyUm91dGVHZW5lcmF0b3IoXG4gICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgIG1pbWVUeXBlLFxuICAgICAgICBiYXNlQ29udGVudElkLFxuICAgICAgICAnQ291cnNlJyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdMZWFybmluZyBSZXNvdXJjZScsXG4gICAgICAgIG5hdmlnYXRpb25EYXRhLmJhdGNoSWQsXG4gICAgICAgIGNvbnRlbnQubmFtZSxcbiAgICAgICAgbWwsXG4gICAgICAgIG1sSWQsXG4gICAgICApO1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cblxuICBnb3RvVG9jUGFnZShjb250ZW50OiBhbnkpIHtcbiAgICBpZiAoY29udGVudCAmJiBjb250ZW50LmNvdXJzZUNhdGVnb3J5ICYmIGNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuTVVMVElMSU5HVUFMX0NPVVJTRSkge1xuICAgICAgY29uc3QgYmFzZUNvbnRlbnREYXRhID0gdGhpcy5jb250ZW50TGFuZ3VhZ2VTdmMuZ2V0QmFzZUxhbmd1YWdlKGNvbnRlbnQpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRMYW5ndWFnZSA9IGNvbnRlbnQgJiYgY29udGVudC5sYW5ndWFnZSAmJiBjb250ZW50Lmxhbmd1YWdlLmxlbmd0aCA/IFxuICAgICAgICBjb250ZW50Lmxhbmd1YWdlWzBdLnRvTG93ZXJDYXNlKCkgOiAnJztcbiAgICAgIFxuICAgICAgaWYgKGJhc2VDb250ZW50RGF0YSAmJiBPYmplY3Qua2V5cyhiYXNlQ29udGVudERhdGEpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVybDogYC9hcHAvdG9jLyR7YmFzZUNvbnRlbnREYXRhLmlkZW50aWZpZXJ9L292ZXJ2aWV3YCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogeyBcbiAgICAgICAgICAgIE1MSWQ6IGNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgICAgIE1MOiBzZWxlY3RlZExhbmd1YWdlLFxuICAgICAgICAgICAgLi4uKGNvbnRlbnQuYmF0Y2hJZCA/IHsgYmF0Y2hJZDogY29udGVudC5iYXRjaElkIH0gOiB7fSlcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBjb25zdCB1cmxEYXRhID0ge1xuICAgICAgdXJsOiBgL2FwcC90b2MvJHtjb250ZW50LmlkZW50aWZpZXIgfHwgY29udGVudC5jb2xsZWN0aW9uSWR9L292ZXJ2aWV3YCxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb250ZW50LmJhdGNoSWQgPyB7IGJhdGNoSWQ6IGNvbnRlbnQuYmF0Y2hJZCB9IDoge30gYXMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICB9O1xuICAgIGlmIChjb250ZW50LmVuZERhdGUgJiYgY29udGVudD8uY291cnNlQ2F0ZWdvcnkgIT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQ09NUFJFSEVOU0lWRV9BU1NFU1NNRU5UX1BST0dSQU0pIHtcbiAgICAgIHVybERhdGEucXVlcnlQYXJhbXMgPSB7IC4uLnVybERhdGEucXVlcnlQYXJhbXMsIHBsYW5UeXBlOiAnY2JQbGFuJywgZW5kRGF0ZTogY29udGVudC5lbmREYXRlIH07XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB1cmxEYXRhO1xuICB9XG5cbiAgaXNCYXRjaEluUHJvZ3Jlc3MoYmF0Y2hEYXRhOiBhbnkpIHtcbiAgICAvLyBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudFsnYmF0Y2hlcyddKSB7XG4gICAgLy8gY29uc3QgYmF0Y2hlcyA9IHRoaXMuY29udGVudFsnYmF0Y2hlcyddIGFzIE5zQ29udGVudC5JQmF0Y2hcbiAgICBpZiAoYmF0Y2hEYXRhICYmIGJhdGNoRGF0YS5lbmREYXRlKSB7XG4gICAgICBjb25zdCBub3cgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChiYXRjaERhdGEuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSBiYXRjaERhdGEuZW5kRGF0ZSA/IG1vbWVudChiYXRjaERhdGEuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiBub3c7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAvLyBiYXRjaC5zdGF0dXMgJiZcbiAgICAgICAgbW9tZW50KHN0YXJ0RGF0ZSkuaXNTYW1lT3JCZWZvcmUobm93KVxuICAgICAgICAmJiBtb21lbnQoZW5kRGF0ZSkuaXNTYW1lT3JBZnRlcihub3cpXG4gICAgICApO1xuICAgIH0gcmV0dXJuIHRydWU7XG4gIH1cbiAgcG9zdEFwaU1ldGhvZChhcGlVcmw6IGFueSwgcmVxOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxOc0NvbnRlbnQuSUNvbnRlbnQ+KGFwaVVybCwgcmVxKTtcbiAgfVxuICBnZXRBcGlNZXRob2QoYXBpVXJsOiBhbnkpOiBPYnNlcnZhYmxlPE5zQ29udGVudC5JQ29udGVudD4ge1xuICAgIC8vIHJlcS5xdWVyeSA9IHJlcS5xdWVyeSB8fCAnJztcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxOc0NvbnRlbnQuSUNvbnRlbnQ+KGFwaVVybCk7XG4gIH1cblxuXG4gIGdldEVucm9sbGVkRGF0YUZyb21MaXN0KGVucm9sbG1lbnRMaXN0OiBhbnksIGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgaWYgKGVucm9sbG1lbnRMaXN0ICYmIGVucm9sbG1lbnRMaXN0Lmxlbmd0aCkge1xuICAgICAgbGV0IGVucm9sbGVkRGF0YSA9IGVucm9sbG1lbnRMaXN0LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZS5jb2xsZWN0aW9uSWQgPT09IGNvbGxlY3Rpb25JZClcbiAgICAgIHJldHVybiBlbnJvbGxlZERhdGEubGVuZ3RoID8gZW5yb2xsZWREYXRhWzBdIDoge31cbiAgICB9XG4gIH1cblxuICBzZXRSZWxldmVudE5vdFJlbGV2ZW50RGF0YShkYXRhOiB7aXNSZWxldmVudDogYm9vbGVhbiwgd2lkZ2V0RGF0YTogYW55fSkge1xuICAgIHRoaXMucmVsZXZlbnROb3RSZWxldmVudC5uZXh0KGRhdGEpXG4gIH1cblxuICBzYXZlRmVlZGJhY2tTYWtzaGFtQUkocmVxdWVzdEJvZHk6IGFueSkge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gdGhpcy5odHRwLnBvc3QoQVBJX0VORF9QT0lOVFMuU0FWRV9TQUtTSEFNQUlfUkVDT01NRU5ERURfRkVFREJBQ0ssIHJlcXVlc3RCb2R5KS5waXBlKG1hcChcbiAgICAgIGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGRhdGFcbiAgICAgIH0pXG4gICAgKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIHNldFJlY29tbWVuZGVkSWRzKHJlY29tbWVuZGVkSWRzOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlY29tbWVuZGVkSWRzJykgPyBcbiAgICB0aGlzLnN0b3JlZFJlY29tbWVuZGVkSWRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjb21tZW5kZWRJZHMnKSB8fCAne30nKSA6IHt9XG5cbiAgICB0aGlzLnN0b3JlZFJlY29tbWVuZGVkSWRzW3VzZXJJZF0gPSByZWNvbW1lbmRlZElkc1xuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY29tbWVuZGVkSWRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZWRSZWNvbW1lbmRlZElkcykpXG4gIH1cblxuICBnZXRSZWNvbW1lbmRlZElkcyh1c2VySWQ6IHN0cmluZykge1xuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWNvbW1lbmRlZElkcycpID8gXG4gICAgICB0aGlzLnN0b3JlZFJlY29tbWVuZGVkSWRzID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjb21tZW5kZWRJZHMnKSB8fCAne30nKSA6IHt9XG4gICAgcmV0dXJuIHRoaXMuc3RvcmVkUmVjb21tZW5kZWRJZHNbdXNlcklkXVxuICB9XG5cbiAgc2V0RmVlZGJhY2tEYXRhKGZlZWRiYWNrRGF0YUFycmF5OiBhbnlbXSkge1xuICAgIGZlZWRiYWNrRGF0YUFycmF5LmZvckVhY2goZmVlZGJhY2tEYXRhID0+IHtcbiAgICAgIHRoaXMuZmVlZGJhY2tEYXRhRm9yQ291cnNlW2ZlZWRiYWNrRGF0YS5jb3Vyc2VfaWRdID0gZmVlZGJhY2tEYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RmVlZGJhY2tEYXRhKGNvdXJzZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mZWVkYmFja0RhdGFGb3JDb3Vyc2VbY291cnNlSWRdXG4gIH1cblxuICBmaWx0ZXJDb3Vyc2VzV2l0aE5vUmF0aW5nKHJlc3BvbnNlOiBhbnksIGNvdXJzZXM6IGFueVtdKSB7XG4gICAgaWYgKCFyZXNwb25zZT8uZmVlZGJhY2tzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBjb3Vyc2VzOyBcbiAgICB9XG4gICAgXG4gICAgY29uc3QgY291cnNlc1dpdGhaZXJvUmF0aW5nID0gbmV3IFNldChcbiAgICAgIHJlc3BvbnNlLmZlZWRiYWNrc1xuICAgICAgICAuZmlsdGVyKChmZWVkYmFjazogYW55KSA9PiBmZWVkYmFjay5yYXRpbmcgPT09IDApXG4gICAgICAgIC5tYXAoKGZlZWRiYWNrOiBhbnkpID0+IGZlZWRiYWNrLmNvdXJzZV9pZClcbiAgICApO1xuICBcbiAgICByZXR1cm4gY291cnNlcy5maWx0ZXIoKGNvdXJzZTogYW55KSA9PiAhY291cnNlc1dpdGhaZXJvUmF0aW5nLmhhcyhjb3Vyc2UuaWRlbnRpZmllcikpO1xuICB9XG5cbiAgc2V0VGVsZW1lbnRyeVN1YnNjcmlwdGlvbihldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNUZWxlbWVudHJ5U3Vic2NyaWJlZCA9IGV2ZW50XG4gIH1cbn1cbiJdfQ==