@hmcts/ccd-case-ui-toolkit 6.10.7-cfv-move-document-handle-error → 6.10.7-cfv-move-document-handle-error-v3

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 (141) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +9592 -6734
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/shared/commons/case-edit-data/case-edit-data.service.js +19 -1
  6. package/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +6 -1
  7. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +7 -1
  8. package/esm2015/lib/shared/components/case-editor/services/cases.service.js +7 -1
  9. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +20 -3
  10. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field-read.component.js +2 -2
  11. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +6 -3
  12. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.js +1 -2
  13. package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.js +30 -19
  14. package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +35 -24
  15. package/esm2015/lib/shared/components/palette/datetime-picker/datetime-picker.component.js +10 -3
  16. package/esm2015/lib/shared/components/palette/index.js +3 -6
  17. package/esm2015/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.js +126 -0
  18. package/esm2015/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.js +198 -0
  19. package/esm2015/lib/shared/components/palette/linked-cases/components/index.js +8 -0
  20. package/esm2015/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.js +497 -0
  21. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.js +217 -0
  22. package/esm2015/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.js +285 -0
  23. package/esm2015/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.js +79 -0
  24. package/esm2015/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.js +214 -0
  25. package/esm2015/lib/shared/components/palette/linked-cases/domain/index.js +3 -0
  26. package/esm2015/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.js +2 -0
  27. package/esm2015/lib/shared/components/palette/linked-cases/domain/linked-cases.model.js +19 -0
  28. package/esm2015/lib/shared/components/palette/linked-cases/enums/index.js +2 -0
  29. package/esm2015/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.js +33 -0
  30. package/esm2015/lib/shared/components/palette/linked-cases/index.js +6 -0
  31. package/esm2015/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.js +183 -0
  32. package/esm2015/lib/shared/components/palette/linked-cases/services/index.js +2 -0
  33. package/esm2015/lib/shared/components/palette/linked-cases/services/linked-cases.service.js +134 -0
  34. package/esm2015/lib/shared/components/palette/linked-cases/utils/validators.utils.js +27 -0
  35. package/esm2015/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.js +268 -0
  36. package/esm2015/lib/shared/components/palette/palette.module.js +50 -7
  37. package/esm2015/lib/shared/components/palette/palette.service.js +19 -7
  38. package/esm2015/lib/shared/components/search-result/search-result.component.js +10 -14
  39. package/esm2015/lib/shared/directives/conditional-show/domain/conditional-show.model.js +103 -200
  40. package/esm2015/lib/shared/directives/conditional-show/services/condition-parser.service.js +201 -0
  41. package/esm2015/lib/shared/directives/conditional-show/services/condition.peg.js +103 -0
  42. package/esm2015/lib/shared/domain/case-file-view/case-file-view-document.model.js +1 -1
  43. package/esm2015/lib/shared/domain/case-flag/hmcts-service-detail.model.js +1 -1
  44. package/esm2015/lib/shared/domain/definition/display-context-enum.model.js +12 -0
  45. package/esm2015/lib/shared/pipes/index.js +2 -1
  46. package/esm2015/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.js +23 -0
  47. package/esm2015/lib/shared/pipes/link-cases-reason-code/index.js +2 -0
  48. package/esm2015/lib/shared/pipes/pipes.module.js +8 -4
  49. package/esm2015/lib/shared/services/case-flag/case-flag-refdata.service.js +25 -4
  50. package/esm2015/lib/shared/services/common-data-service/common-data-service.js +1 -1
  51. package/esm2015/lib/shared/services/fields/fields.utils.js +7 -1
  52. package/esm2015/lib/shared/services/form/form-value.service.js +33 -2
  53. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +5934 -3329
  54. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  55. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts +13 -0
  56. package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts.map +1 -1
  57. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  58. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +1 -0
  59. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  60. package/lib/shared/components/case-editor/services/cases.service.d.ts +2 -0
  61. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  62. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +1 -0
  63. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  64. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +8 -8
  65. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +1 -1
  66. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
  67. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +3 -1
  68. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  69. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +2 -0
  70. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  71. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  72. package/lib/shared/components/palette/index.d.ts +2 -5
  73. package/lib/shared/components/palette/index.d.ts.map +1 -1
  74. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +23 -0
  75. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -0
  76. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +18 -0
  77. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -0
  78. package/lib/shared/components/palette/linked-cases/components/index.d.ts +8 -0
  79. package/lib/shared/components/palette/linked-cases/components/index.d.ts.map +1 -0
  80. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +45 -0
  81. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -0
  82. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts +38 -0
  83. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.d.ts.map +1 -0
  84. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.d.ts +47 -0
  85. package/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.d.ts.map +1 -0
  86. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +18 -0
  87. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -0
  88. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +38 -0
  89. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -0
  90. package/lib/shared/components/palette/linked-cases/domain/index.d.ts +3 -0
  91. package/lib/shared/components/palette/linked-cases/domain/index.d.ts.map +1 -0
  92. package/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.d.ts +12 -0
  93. package/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.d.ts.map +1 -0
  94. package/lib/shared/components/palette/linked-cases/domain/linked-cases.model.d.ts +65 -0
  95. package/lib/shared/components/palette/linked-cases/domain/linked-cases.model.d.ts.map +1 -0
  96. package/lib/shared/components/palette/linked-cases/enums/index.d.ts +2 -0
  97. package/lib/shared/components/palette/linked-cases/enums/index.d.ts.map +1 -0
  98. package/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.d.ts +29 -0
  99. package/lib/shared/components/palette/linked-cases/enums/write-linked-cases-field.enum.d.ts.map +1 -0
  100. package/lib/shared/components/palette/linked-cases/index.d.ts +6 -0
  101. package/lib/shared/components/palette/linked-cases/index.d.ts.map +1 -0
  102. package/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.d.ts +38 -0
  103. package/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.d.ts.map +1 -0
  104. package/lib/shared/components/palette/linked-cases/services/index.d.ts +2 -0
  105. package/lib/shared/components/palette/linked-cases/services/index.d.ts.map +1 -0
  106. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +44 -0
  107. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -0
  108. package/lib/shared/components/palette/linked-cases/utils/validators.utils.d.ts +10 -0
  109. package/lib/shared/components/palette/linked-cases/utils/validators.utils.d.ts.map +1 -0
  110. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +43 -0
  111. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -0
  112. package/lib/shared/components/palette/palette.module.d.ts +67 -58
  113. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  114. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  115. package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts +13 -30
  116. package/lib/shared/directives/conditional-show/domain/conditional-show.model.d.ts.map +1 -1
  117. package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts +30 -0
  118. package/lib/shared/directives/conditional-show/services/condition-parser.service.d.ts.map +1 -0
  119. package/lib/shared/directives/conditional-show/services/condition.peg.d.ts +3 -0
  120. package/lib/shared/directives/conditional-show/services/condition.peg.d.ts.map +1 -0
  121. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts +1 -0
  122. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts.map +1 -1
  123. package/lib/shared/domain/case-flag/hmcts-service-detail.model.d.ts.map +1 -1
  124. package/lib/shared/domain/definition/display-context-enum.model.d.ts +10 -0
  125. package/lib/shared/domain/definition/display-context-enum.model.d.ts.map +1 -0
  126. package/lib/shared/pipes/index.d.ts +1 -0
  127. package/lib/shared/pipes/index.d.ts.map +1 -1
  128. package/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.d.ts +11 -0
  129. package/lib/shared/pipes/link-cases-reason-code/ccd-link-cases-reason-code.pipe.d.ts.map +1 -0
  130. package/lib/shared/pipes/link-cases-reason-code/index.d.ts +2 -0
  131. package/lib/shared/pipes/link-cases-reason-code/index.d.ts.map +1 -0
  132. package/lib/shared/pipes/pipes.module.d.ts +3 -2
  133. package/lib/shared/pipes/pipes.module.d.ts.map +1 -1
  134. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts +14 -3
  135. package/lib/shared/services/case-flag/case-flag-refdata.service.d.ts.map +1 -1
  136. package/lib/shared/services/common-data-service/common-data-service.d.ts.map +1 -1
  137. package/lib/shared/services/fields/fields.utils.d.ts +1 -0
  138. package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  139. package/lib/shared/services/form/form-value.service.d.ts +14 -0
  140. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  141. package/package.json +1 -1
@@ -3,9 +3,10 @@ import { ChangeDetectorRef, Component, Input, NgZone, ViewChild } from '@angular
3
3
  import { FormControl, FormGroup } from '@angular/forms';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
5
  import { MatTabGroup } from '@angular/material/tabs';
6
- import { ActivatedRoute, Router } from '@angular/router';
6
+ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
7
7
  import { plainToClass } from 'class-transformer';
8
8
  import { Subject } from 'rxjs';
9
+ import { filter } from 'rxjs/operators';
9
10
  import { NotificationBannerHeaderClass, NotificationBannerType } from '../../../../components/banners/notification-banner';
10
11
  import { ShowCondition } from '../../../directives';
11
12
  import { CaseField, CaseView, CaseViewTrigger, DisplayMode, Draft, DRAFT_QUERY_PARAM } from '../../../domain';
@@ -291,11 +292,12 @@ export class CaseFullAccessViewComponent {
291
292
  this.activitySubscription = this.postViewActivity().subscribe();
292
293
  });
293
294
  }
295
+ this.checkRouteAndSetCaseViewTab();
294
296
  // Check for active Case Flags
295
297
  this.activeCaseFlags = this.hasActiveCaseFlags();
296
298
  }
297
299
  ngOnChanges(changes) {
298
- if (!changes.prependedTabs.firstChange) {
300
+ if (changes && changes.prependedTabs && !changes.prependedTabs.firstChange) {
299
301
  this.init();
300
302
  this.crf.detectChanges();
301
303
  this.organiseTabPosition();
@@ -320,6 +322,21 @@ export class CaseFullAccessViewComponent {
320
322
  subscription.unsubscribe();
321
323
  }
322
324
  }
325
+ checkRouteAndSetCaseViewTab() {
326
+ this.router.events
327
+ .pipe(filter((event) => event instanceof NavigationEnd))
328
+ .subscribe((event) => {
329
+ const url = event && event.url;
330
+ if (url) {
331
+ const tabUrl = url ? url.split('#') : null;
332
+ const tab = tabUrl && tabUrl.length > 1 ? tabUrl[tabUrl.length - 1].replaceAll('%20', ' ') : '';
333
+ const matTab = this.tabGroup._tabs.find((x) => x.textLabel.toLowerCase() === tab.toLowerCase());
334
+ if (matTab && matTab.position) {
335
+ this.tabGroup.selectedIndex = matTab.position;
336
+ }
337
+ }
338
+ });
339
+ }
323
340
  postViewActivity() {
324
341
  return this.activityPollingService.postViewActivity(this.caseDetails.case_id);
325
342
  }
@@ -623,4 +640,4 @@ CaseFullAccessViewComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFullAcces
623
640
  type: ViewChild,
624
641
  args: ['tabGroup', { static: false }]
625
642
  }] }); })();
626
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQ25DLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBVSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBRUwsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN2QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUs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QXlCO1FBQ3ZCLGlHQThDZTtRQUNqQixpQkFBTTtRQUNSLGlCQUFNOztRQW5HQSxrSEFBaUY7UUFXakYsZUFBNEI7UUFBNUIscURBQTRCO1FBYWhDLGVBQXdDO1FBQXhDLDBEQUF3QyxvREFBQSxvREFBQTtRQUs1QixlQUE4QjtRQUE5QixnREFBOEIsMkJBQUE7UUFHdkIsZUFBMkI7UUFBM0IsNkNBQTJCO1FBQ1QsZUFBZ0Q7UUFBaEQsNkVBQWdEO1FBSS9FLGVBQXNCO1FBQXRCLDJDQUFzQjtRQU1QLGVBQXFCO1FBQXJCLDBDQUFxQjtRQVF6QixlQUFzQjtRQUF0QiwyQ0FBc0I7O3VGRGQ1QiwyQkFBMkI7Y0FMdkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REO3djQVFpQixRQUFRO2tCQUF2QixLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsV0FBVztrQkFBMUIsS0FBSztZQUNVLGFBQWE7a0JBQTVCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBdUIyQyxRQUFRO2tCQUF4RCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQge1xuICBOb3RpZmljYXRpb25CYW5uZXJDb25maWcsXG4gIE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLFxuICBOb3RpZmljYXRpb25CYW5uZXJUeXBlXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvYmFubmVycy9ub3RpZmljYXRpb24tYmFubmVyJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEFjdGl2aXR5LCBDYXNlRmllbGQsIENhc2VUYWIsIENhc2VWaWV3LCBDYXNlVmlld1RyaWdnZXIsIERpc3BsYXlNb2RlLCBEcmFmdCwgRFJBRlRfUVVFUllfUEFSQU0gfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEcmFmdFNlcnZpY2UsXG4gIEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgTmF2aWdhdGlvbk9yaWdpbixcbiAgT3JkZXJTZXJ2aWNlLFxuICBTZXNzaW9uU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jb252ZXJ0LWhyZWYtdG8tcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZnVsbC1hY2Nlc3MtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBPUklHSU5fUVVFUllfUEFSQU0gPSAnb3JpZ2luJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU1RBUlQgPSAnR28nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9DT05USU5VRSA9ICdJZ25vcmUgV2FybmluZyBhbmQgR28nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOSUNPREVfU1BBQ0UgPSAnJTIwJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTVBUWV9TUEFDRSA9ICcgJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGluazogYm9vbGVhbjtcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZTogTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZpdHlQb2xsaW5nU2VydmljZTogQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFmdFNlcnZpY2U6IERyYWZ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTm90aWZpZXJTZXJ2aWNlOiBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlOiBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNyZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpbml0RGlhbG9nKCk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3Quc3Vic2NyaWJlKGVycm9yRXZlbnQgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IGVycm9yRXZlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5lcnJvclN1YnNjcmlwdGlvbiA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3Iuc3Vic2NyaWJlKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IDQwMSAmJiBlcnJvci5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmsgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5nZXRIcmVmTWFya2Rvd25MaW5rQ29udGVudCgpLnN1YnNjcmliZSgoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gZG8gbm90IGNvbnZlcnQgcm91dGVyIHdpdGggaW5pdGlhbCBkZWZhdWx0IHZhbHVlOyBjb252ZXJ0IHRvIHJvdXRlciBvbmx5IG9uIHVwZGF0ZWQgbGluayBjb250ZW50XG4gICAgICBpZiAoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQgIT09ICdEZWZhdWx0Jykge1xuICAgICAgICB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLmNhbGxBbmd1bGFyUm91dGVyKGhyZWZNYXJrZG93bkxpbmtDb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkICYmICF0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24gPSB0aGlzLnBvc3RWaWV3QWN0aXZpdHkoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgQ2FzZSBGbGFnc1xuICAgIHRoaXMuYWN0aXZlQ2FzZUZsYWdzID0gdGhpcy5oYXNBY3RpdmVDYXNlRmxhZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLnByZXBlbmRlZFRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgdGhpcy5jcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5vcmdhbmlzZVRhYlBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJpbnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5wcmludEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYXNlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmVycm9yU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuc3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IGFueSkge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICB9XG5cbiAgcHVibGljIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3VHJpZ2dlci5ERUxFVEUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgIHRoaXMuZHJhZnRTZXJ2aWNlLmRlbGV0ZURyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oe2FjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEfSk7XG4gICAgICAgICAgICB9LCBfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7YWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVSUk9SX0RFTEVUSU5HX0RSQUZUfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld1RyaWdnZXIuREVMRVRFKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tEUkFGVF9RVUVSWV9QQVJBTV0gPSB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNXSA9ICd2aWV3RHJhZnQnO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9SRVNVTUVELFxuICAgICAgICAgIGppZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICAgIGN0aWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVWRU5UX1RSSUdHRVJFRCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWJzUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5hcHBlbmRlZFRhYnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShjYWxsYmFja0Vycm9yc0NvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEcmFmdC5pc0RyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aClcbiAgICAgIHx8ICh0aGlzLmVycm9yXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlsc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmdhbmlzZVRhYlBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGxldCBtYXRUYWI7XG4gICAgY29uc3QgdXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuICAgIGxldCBoYXNoVmFsdWUgPSB1cmwuc3Vic3RyaW5nKHVybC5pbmRleE9mKCcjJykgKyAxKTtcbiAgICBpZiAoIXVybC5pbmNsdWRlcygnIycpICYmICF1cmwuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSAmJiAhdXJsLmluY2x1ZGVzKCd0YXNrcycpICYmICF1cmwuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgIGNvbnN0IHBhdGhzID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgICAvLyBsYXN0UGF0aCBjYW4gYmUgL2Nhc2VJZCwgb3IgdGhlIHRhYnMgL3Rhc2tzLCAvaGVhcmluZ3MgZXRjLlxuICAgICAgY29uc3QgbGFzdFBhdGggPSBkZWNvZGVVUklDb21wb25lbnQocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0pO1xuICAgICAgbGV0IGZvdW5kVGFiOiBDYXNlVGFiID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5wcmVwZW5kZWRUYWJzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZGVkVGFicyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbFRhYnMgPSBbLi4udGhpcy5wcmVwZW5kZWRUYWJzLCAuLi50aGlzLmFwcGVuZGVkVGFic107XG4gICAgICBpZiAoYWRkaXRpb25hbFRhYnMgJiYgYWRkaXRpb25hbFRhYnMubGVuZ3RoKSB7XG4gICAgICAgIGZvdW5kVGFiID0gIGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgIH0pO1xuICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gcHJlc2VsZWN0IHRoZSAxc3Qgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNbMF07XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwge2ZyYWdtZW50OiBwcmVTZWxlY3RUYWIubGFiZWx9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBwcmVTZWxlY3RUYWIubGFiZWwpO1xuICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAobWF0VGFiICYmIG1hdFRhYi5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYkNoYW5nZWQodGFiQ2hhbmdlRXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIHRhYiBpbmRleFxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhYkNoYW5nZUV2ZW50LmluZGV4O1xuXG4gICAgY29uc3QgdGFiID0gdGFiQ2hhbmdlRXZlbnQudGFiWydfdmlld0NvbnRhaW5lclJlZiddIGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgLy8gZHVlIHRvIHNvbWUgZWRnZSBjYXNlIGxpa2UgaGlkZGVuIHRhYiB3ZSBjYW4ndCBjYWxjdWxhdGUgdGhlIGxhc3QgaW5kZXggb2YgZXhpc3RpbmcgdGFicyxcbiAgICAvLyBzbyBoYXZlIHRvIGhhcmQgY29kZSB0aGUgaGVhcmluZ3MgaWQgaGVyZVxuICAgIGlmICgodGFiQ2hhbmdlRXZlbnQuaW5kZXggPD0gMSAmJiB0aGlzLnByZXBlbmRlZFRhYnMgJiYgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHxcbiAgICAgICh0aGlzLmFwcGVuZGVkVGFicyAmJiB0aGlzLmFwcGVuZGVkVGFicy5sZW5ndGggJiYgaWQgPT09ICdoZWFyaW5ncycpKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWRdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYWJlbCA9IHRhYkNoYW5nZUV2ZW50LnRhYi50ZXh0TGFiZWw7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IGxhYmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gR2V0IHRoZSBhY3RpdmUgY2FzZSBmbGFncyBjb3VudFxuICAgICAgLy8gQ2Fubm90IGZpbHRlciBvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiB0byByZW1vdmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBGbGFncyBmaWVsZHMgbWF5IGJlXG4gICAgICAvLyBjb250YWluZWQgaW4gb3RoZXIgQ2FzZUZpZWxkIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3IgZmllbGRzIGluIGEgY29sbGVjdGlvblxuICAgICAgLy8gKG9yIHN1Yi1maWVsZHMgb2YgQ29tcGxleCBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uKVxuICAgICAgY29uc3QgYWN0aXZlQ2FzZUZsYWdzID0gY2FzZUZsYWdzVGFiLmZpZWxkc1xuICAgICAgICAuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQudmFsdWUpXG4gICAgICAgIC5yZWR1Y2UoKGFjdGl2ZSwgY2FzZUZsYWcpID0+IHtcbiAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKGFjdGl2ZSwgY2FzZUZsYWcpO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgaWYgKGFjdGl2ZUNhc2VGbGFncyA+IDApIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBhY3RpdmVDYXNlRmxhZ3MgPiAxXG4gICAgICAgICAgPyBgVGhlcmUgYXJlICR7YWN0aXZlQ2FzZUZsYWdzfSBhY3RpdmUgZmxhZ3Mgb24gdGhpcyBjYXNlLmAgOiAnVGhlcmUgaXMgMSBhY3RpdmUgZmxhZyBvbiB0aGlzIGNhc2UuJztcbiAgICAgICAgLy8gSW5pdGlhbGlzZSBhbmQgZGlzcGxheSBub3RpZmljYXRpb24gYmFubmVyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQmFubmVyQ29uZmlnID0ge1xuICAgICAgICAgIGJhbm5lclR5cGU6IE5vdGlmaWNhdGlvbkJhbm5lclR5cGUuSU5GT1JNQVRJT04sXG4gICAgICAgICAgaGVhZGluZ1RleHQ6ICdJbXBvcnRhbnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHNob3dMaW5rOiB0cnVlLFxuICAgICAgICAgIGxpbmtUZXh0OiAnVmlldyBjYXNlIGZsYWdzJyxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnQ6IHRydWUsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50VGV4dDogY2FzZUZsYWdzVGFiLmxhYmVsLFxuICAgICAgICAgIGhlYWRlckNsYXNzOiBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcy5JTkZPUk1BVElPTlxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhIENhc2VGaWVsZCBpcyB0byBiZSBkaXNwbGF5ZWQgd2l0aG91dCBhIGxhYmVsLCBhcyBpcyBleHBlY3RlZCBmb3IgYWxsIENvbXBvbmVudExhdW5jaGVyLXR5cGVcbiAgICogZmllbGRzLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgc2hvdWxkIG5vdCBoYXZlIGEgbGFiZWw7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNGaWVsZFRvSGF2ZU5vTGFiZWwoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJ1xuICAgICAgJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ2FzZUZpbGVWaWV3KSc7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2xvbmUgYW5kIHNvcnQgdGFicyBhcnJheVxuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGhpcy5jYXNlRGV0YWlscy50YWJzKTtcbiAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLmdldFRhYkZpZWxkcygpO1xuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMuc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGhpcy5zb3J0ZWRUYWJzKTtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuYnVpbGRGb3JtR3JvdXAodGhpcy5jYXNlRmllbGRzKTtcblxuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzICYmIHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRhYnM6IENhc2VUYWJbXSk6IENhc2VUYWJbXSB7XG4gICAgcmV0dXJuIHRhYnNcbiAgICAgIC5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwge2ZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKX0pKVxuICAgICAgLmZpbHRlcih0YWIgPT4gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZSh0YWIuc2hvd19jb25kaXRpb24pLm1hdGNoQnlDb250ZXh0RmllbGRzKHRoaXMuY2FzZUZpZWxkcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGNvbnN0IGNhc2VEYXRhRmllbGRzID0gdGhpcy5zb3J0ZWRUYWJzLnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHMuY29uY2F0KHRoaXMuY2FzZURldGFpbHMubWV0YWRhdGFGaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBFVUktMzgyNTpcbiAgICogQnVpbGRzIGEgRm9ybUdyb3VwIGZyb20gYWxsIHRoZSBDYXNlRmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHZpZXcuXG4gICAqIFRoaXMgRm9ybUdyb3VwIGlzIG5lY2Vzc2FyeSBmb3IgZXZhbHVhdGlvbiB0aGUgc2hvdy9oaWRlIGNvbmRpdGlvbnMgb2ZcbiAgICogZmllbGRzIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBhIGZpZWxkIG9ubHkgYXZhaWxhYmxlIG9uIGEgRElGRkVSRU5UIHRhYi5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRGb3JtR3JvdXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBGb3JtR3JvdXAge1xuICAgIGxldCB2YWx1ZTogb2JqZWN0ID0ge307XG4gICAgaWYgKGNhc2VGaWVsZHMpIHtcbiAgICAgIGNhc2VGaWVsZHMuZm9yRWFjaChjYXNlRmllbGQgPT4ge1xuICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBbY2FzZUZpZWxkLmlkXTogY2FzZUZpZWxkLnZhbHVlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe2RhdGE6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSl9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG5cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgPC9oMT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICA8cD5XZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuPC9wPlxuICAgIDxwPjxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPkNvbnRhY3QgdXM8L2E+IGlmIHlvdSdyZSBzdGlsbCBoYXZpbmcgcHJvYmxlbXMuPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBDYWxsYmFjayBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiBlcnJvci5kZXRhaWxzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgVGhlIGNhbGxiYWNrIGRhdGEgZmFpbGVkIHZhbGlkYXRpb25cbiAgPC9oMj5cbiAgPHA+e3tlcnJvci5tZXNzYWdlfX08L3A+XG4gIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCI+XG4gICAgICB7e2ZpZWxkRXJyb3IubWVzc2FnZX19XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIkJBTk5FUlwiPjwvY2NkLWFjdGl2aXR5PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWNhc2UtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLWNhc2UtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjYXNlLXZpZXdlci1jb250cm9sc1wiICpuZ0lmPVwiaGFzUHJpbnQgJiYgIWlzRHJhZnQoKSAmJiBpc1ByaW50RW5hYmxlZCgpXCI+XG4gICAgICA8YSBpZD1cImNhc2Utdmlld2VyLWNvbnRyb2wtcHJpbnRcIiByb3V0ZXJMaW5rPVwicHJpbnRcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCI+UHJpbnQ8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaGFzRXZlbnRTZWxlY3RvclwiIGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1ldmVudC10cmlnZ2VyIFtpc0Rpc2FibGVkXT1cImlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKClcIiBbdHJpZ2dlcnNdPVwiY2FzZURldGFpbHMudHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCIgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFnc1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8Y2NkLW5vdGlmaWNhdGlvbi1iYW5uZXIgW25vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ109XCJub3RpZmljYXRpb25CYW5uZXJDb25maWdcIiAobGlua0NsaWNrZWQpPVwib25MaW5rQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgPC9jY2Qtbm90aWZpY2F0aW9uLWJhbm5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVGFic1ByZXNlbnQoKVwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCIgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgYXJpYS1kZXNjcmliZWRieT1cImNhc2Ugdmlld2VyIHRhYmxlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPnt7ZmllbGQubGFiZWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbFwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
643
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQ25DLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFFTCw2QkFBNkIsRUFDN0Isc0JB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LCtCQUF5QjtRQUN2QixpR0E4Q2U7UUFDakIsaUJBQU07UUFDUixpQkFBTTs7UUFuR0Esa0hBQWlGO1FBV2pGLGVBQTRCO1FBQTVCLHFEQUE0QjtRQWFoQyxlQUF3QztRQUF4QywwREFBd0Msb0RBQUEsb0RBQUE7UUFLNUIsZUFBOEI7UUFBOUIsZ0RBQThCLDJCQUFBO1FBR3ZCLGVBQTJCO1FBQTNCLDZDQUEyQjtRQUNULGVBQWdEO1FBQWhELDZFQUFnRDtRQUkvRSxlQUFzQjtRQUF0QiwyQ0FBc0I7UUFNUCxlQUFxQjtRQUFyQiwwQ0FBcUI7UUFRekIsZUFBc0I7UUFBdEIsMkNBQXNCOzt1RkRiNUIsMkJBQTJCO2NBTHZDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxXQUFXLEVBQUUsd0NBQXdDO2dCQUNyRCxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQzthQUN0RDt3Y0FRaUIsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQXVCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQsIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnLFxuICBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcyxcbiAgTm90aWZpY2F0aW9uQmFubmVyVHlwZVxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2Jhbm5lcnMvbm90aWZpY2F0aW9uLWJhbm5lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgQ2FzZVZpZXdUcmlnZ2VyLCBEaXNwbGF5TW9kZSwgRHJhZnQsIERSQUZUX1FVRVJZX1BBUkFNIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gIEFsZXJ0U2VydmljZSxcbiAgRHJhZnRTZXJ2aWNlLFxuICBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gIE5hdmlnYXRpb25PcmlnaW4sXG4gIE9yZGVyU2VydmljZSxcbiAgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY29udmVydC1ocmVmLXRvLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncyc7XG5pbXBvcnQgeyBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBpbml0RGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG5cbiAgQElucHV0KCkgcHVibGljIGhhc1ByaW50ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhhc0V2ZW50U2VsZWN0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBASW5wdXQoKSBwdWJsaWMgcHJlcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuXG4gIHB1YmxpYyBCQU5ORVIgPSBEaXNwbGF5TW9kZS5CQU5ORVI7XG4gIHB1YmxpYyBzb3J0ZWRUYWJzOiBDYXNlVGFiW107XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIGFjdGl2aXR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbms6IGJvb2xlYW47XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZzogTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIHB1YmxpYyBhY3RpdmVDYXNlRmxhZ3MgPSBmYWxzZTtcblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0LnN1YnNjcmliZShlcnJvckV2ZW50ID0+IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnJvckV2ZW50O1xuICAgIH0pO1xuICAgIHRoaXMuZXJyb3JTdWJzY3JpcHRpb24gPSB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmVycm9yLnN1YnNjcmliZShlcnJvciA9PiB7XG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSA0MDEgJiYgZXJyb3Iuc3RhdHVzICE9PSA0MDMpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rID0gdHJ1ZTtcblxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oJ2V2ZW50VXJsJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UuZ2V0SHJlZk1hcmtkb3duTGlua0NvbnRlbnQoKS5zdWJzY3JpYmUoKGhyZWZNYXJrZG93bkxpbmtDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIGRvIG5vdCBjb252ZXJ0IHJvdXRlciB3aXRoIGluaXRpYWwgZGVmYXVsdCB2YWx1ZTsgY29udmVydCB0byByb3V0ZXIgb25seSBvbiB1cGRhdGVkIGxpbmsgY29udGVudFxuICAgICAgaWYgKGhyZWZNYXJrZG93bkxpbmtDb250ZW50ICE9PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5jYWxsQW5ndWxhclJvdXRlcihocmVmTWFya2Rvd25MaW5rQ29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCAmJiAhdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uID0gdGhpcy5wb3N0Vmlld0FjdGl2aXR5KCkuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYiAoKTtcblxuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgQ2FzZSBGbGFnc1xuICAgIHRoaXMuYWN0aXZlQ2FzZUZsYWdzID0gdGhpcy5oYXNBY3RpdmVDYXNlRmxhZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5wcmVwZW5kZWRUYWJzICYmICFjaGFuZ2VzLnByZXBlbmRlZFRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgdGhpcy5jcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5vcmdhbmlzZVRhYlBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJpbnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5wcmludEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYXNlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmVycm9yU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuc3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IGFueSkge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGV2ZW50ICYmIChldmVudCBhcyBhbnkpLnVybDtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IHRhYlVybCA9IHVybCA/IHVybC5zcGxpdCgnIycpIDogbnVsbCA7XG4gICAgICAgICAgY29uc3QgdGFiID0gdGFiVXJsICYmIHRhYlVybC5sZW5ndGggPiAxID8gdGFiVXJsW3RhYlVybC5sZW5ndGggLSAxXS5yZXBsYWNlQWxsKCclMjAnLCAnICcpIDogJyc7XG4gICAgICAgICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCAoeCkgPT4geC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIGlmIChtYXRUYWIgJiYgbWF0VGFiLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICB9XG5cbiAgcHVibGljIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcblxuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3VHJpZ2dlci5ERUxFVEUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgIHRoaXMuZHJhZnRTZXJ2aWNlLmRlbGV0ZURyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oe2FjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEfSk7XG4gICAgICAgICAgICB9LCBfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7YWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVSUk9SX0RFTEVUSU5HX0RSQUZUfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld1RyaWdnZXIuREVMRVRFKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tEUkFGVF9RVUVSWV9QQVJBTV0gPSB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNXSA9ICd2aWV3RHJhZnQnO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9SRVNVTUVELFxuICAgICAgICAgIGppZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICAgIGN0aWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVWRU5UX1RSSUdHRVJFRCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWJzUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5hcHBlbmRlZFRhYnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShjYWxsYmFja0Vycm9yc0NvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEcmFmdC5pc0RyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aClcbiAgICAgIHx8ICh0aGlzLmVycm9yXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlsc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmdhbmlzZVRhYlBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGxldCBtYXRUYWI7XG4gICAgY29uc3QgdXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuICAgIGxldCBoYXNoVmFsdWUgPSB1cmwuc3Vic3RyaW5nKHVybC5pbmRleE9mKCcjJykgKyAxKTtcbiAgICBpZiAoIXVybC5pbmNsdWRlcygnIycpICYmICF1cmwuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSAmJiAhdXJsLmluY2x1ZGVzKCd0YXNrcycpICYmICF1cmwuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgIGNvbnN0IHBhdGhzID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgICAvLyBsYXN0UGF0aCBjYW4gYmUgL2Nhc2VJZCwgb3IgdGhlIHRhYnMgL3Rhc2tzLCAvaGVhcmluZ3MgZXRjLlxuICAgICAgY29uc3QgbGFzdFBhdGggPSBkZWNvZGVVUklDb21wb25lbnQocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0pO1xuICAgICAgbGV0IGZvdW5kVGFiOiBDYXNlVGFiID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5wcmVwZW5kZWRUYWJzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZGVkVGFicyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbFRhYnMgPSBbLi4udGhpcy5wcmVwZW5kZWRUYWJzLCAuLi50aGlzLmFwcGVuZGVkVGFic107XG4gICAgICBpZiAoYWRkaXRpb25hbFRhYnMgJiYgYWRkaXRpb25hbFRhYnMubGVuZ3RoKSB7XG4gICAgICAgIGZvdW5kVGFiID0gIGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgIH0pO1xuICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gcHJlc2VsZWN0IHRoZSAxc3Qgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNbMF07XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwge2ZyYWdtZW50OiBwcmVTZWxlY3RUYWIubGFiZWx9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBwcmVTZWxlY3RUYWIubGFiZWwpO1xuICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAobWF0VGFiICYmIG1hdFRhYi5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhYkNoYW5nZWQodGFiQ2hhbmdlRXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIHNlbGVjdGVkIHRhYiBpbmRleFxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhYkNoYW5nZUV2ZW50LmluZGV4O1xuXG4gICAgY29uc3QgdGFiID0gdGFiQ2hhbmdlRXZlbnQudGFiWydfdmlld0NvbnRhaW5lclJlZiddIGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgLy8gZHVlIHRvIHNvbWUgZWRnZSBjYXNlIGxpa2UgaGlkZGVuIHRhYiB3ZSBjYW4ndCBjYWxjdWxhdGUgdGhlIGxhc3QgaW5kZXggb2YgZXhpc3RpbmcgdGFicyxcbiAgICAvLyBzbyBoYXZlIHRvIGhhcmQgY29kZSB0aGUgaGVhcmluZ3MgaWQgaGVyZVxuICAgIGlmICgodGFiQ2hhbmdlRXZlbnQuaW5kZXggPD0gMSAmJiB0aGlzLnByZXBlbmRlZFRhYnMgJiYgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHxcbiAgICAgICh0aGlzLmFwcGVuZGVkVGFicyAmJiB0aGlzLmFwcGVuZGVkVGFicy5sZW5ndGggJiYgaWQgPT09ICdoZWFyaW5ncycpKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWRdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYWJlbCA9IHRhYkNoYW5nZUV2ZW50LnRhYi50ZXh0TGFiZWw7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IGxhYmVsO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNBY3RpdmVDYXNlRmxhZ3MoKTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHRhYiBjb250YWlucyB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCB0eXBlLCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGFcbiAgICBjb25zdCBjYXNlRmxhZ3NUYWIgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gR2V0IHRoZSBhY3RpdmUgY2FzZSBmbGFncyBjb3VudFxuICAgICAgLy8gQ2Fubm90IGZpbHRlciBvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiB0byByZW1vdmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBGbGFncyBmaWVsZHMgbWF5IGJlXG4gICAgICAvLyBjb250YWluZWQgaW4gb3RoZXIgQ2FzZUZpZWxkIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3IgZmllbGRzIGluIGEgY29sbGVjdGlvblxuICAgICAgLy8gKG9yIHN1Yi1maWVsZHMgb2YgQ29tcGxleCBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uKVxuICAgICAgY29uc3QgYWN0aXZlQ2FzZUZsYWdzID0gY2FzZUZsYWdzVGFiLmZpZWxkc1xuICAgICAgICAuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQudmFsdWUpXG4gICAgICAgIC5yZWR1Y2UoKGFjdGl2ZSwgY2FzZUZsYWcpID0+IHtcbiAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKGFjdGl2ZSwgY2FzZUZsYWcpO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgaWYgKGFjdGl2ZUNhc2VGbGFncyA+IDApIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBhY3RpdmVDYXNlRmxhZ3MgPiAxXG4gICAgICAgICAgPyBgVGhlcmUgYXJlICR7YWN0aXZlQ2FzZUZsYWdzfSBhY3RpdmUgZmxhZ3Mgb24gdGhpcyBjYXNlLmAgOiAnVGhlcmUgaXMgMSBhY3RpdmUgZmxhZyBvbiB0aGlzIGNhc2UuJztcbiAgICAgICAgLy8gSW5pdGlhbGlzZSBhbmQgZGlzcGxheSBub3RpZmljYXRpb24gYmFubmVyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQmFubmVyQ29uZmlnID0ge1xuICAgICAgICAgIGJhbm5lclR5cGU6IE5vdGlmaWNhdGlvbkJhbm5lclR5cGUuSU5GT1JNQVRJT04sXG4gICAgICAgICAgaGVhZGluZ1RleHQ6ICdJbXBvcnRhbnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHNob3dMaW5rOiB0cnVlLFxuICAgICAgICAgIGxpbmtUZXh0OiAnVmlldyBjYXNlIGZsYWdzJyxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnQ6IHRydWUsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50VGV4dDogY2FzZUZsYWdzVGFiLmxhYmVsLFxuICAgICAgICAgIGhlYWRlckNsYXNzOiBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcy5JTkZPUk1BVElPTlxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhIENhc2VGaWVsZCBpcyB0byBiZSBkaXNwbGF5ZWQgd2l0aG91dCBhIGxhYmVsLCBhcyBpcyBleHBlY3RlZCBmb3IgYWxsIENvbXBvbmVudExhdW5jaGVyLXR5cGVcbiAgICogZmllbGRzLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgc2hvdWxkIG5vdCBoYXZlIGEgbGFiZWw7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNGaWVsZFRvSGF2ZU5vTGFiZWwoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJ1xuICAgICAgJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ2FzZUZpbGVWaWV3KSc7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2xvbmUgYW5kIHNvcnQgdGFicyBhcnJheVxuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGhpcy5jYXNlRGV0YWlscy50YWJzKTtcbiAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLmdldFRhYkZpZWxkcygpO1xuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMuc29ydFRhYkZpZWxkc0FuZEZpbHRlclRhYnModGhpcy5zb3J0ZWRUYWJzKTtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuYnVpbGRGb3JtR3JvdXAodGhpcy5jYXNlRmllbGRzKTtcblxuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzICYmIHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRhYnM6IENhc2VUYWJbXSk6IENhc2VUYWJbXSB7XG4gICAgcmV0dXJuIHRhYnNcbiAgICAgIC5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwge2ZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKX0pKVxuICAgICAgLmZpbHRlcih0YWIgPT4gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZSh0YWIuc2hvd19jb25kaXRpb24pLm1hdGNoQnlDb250ZXh0RmllbGRzKHRoaXMuY2FzZUZpZWxkcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYWJGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGNvbnN0IGNhc2VEYXRhRmllbGRzID0gdGhpcy5zb3J0ZWRUYWJzLnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHMuY29uY2F0KHRoaXMuY2FzZURldGFpbHMubWV0YWRhdGFGaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBFVUktMzgyNTpcbiAgICogQnVpbGRzIGEgRm9ybUdyb3VwIGZyb20gYWxsIHRoZSBDYXNlRmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHZpZXcuXG4gICAqIFRoaXMgRm9ybUdyb3VwIGlzIG5lY2Vzc2FyeSBmb3IgZXZhbHVhdGlvbiB0aGUgc2hvdy9oaWRlIGNvbmRpdGlvbnMgb2ZcbiAgICogZmllbGRzIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBhIGZpZWxkIG9ubHkgYXZhaWxhYmxlIG9uIGEgRElGRkVSRU5UIHRhYi5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRGb3JtR3JvdXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBGb3JtR3JvdXAge1xuICAgIGxldCB2YWx1ZTogb2JqZWN0ID0ge307XG4gICAgaWYgKGNhc2VGaWVsZHMpIHtcbiAgICAgIGNhc2VGaWVsZHMuZm9yRWFjaChjYXNlRmllbGQgPT4ge1xuICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBbY2FzZUZpZWxkLmlkXTogY2FzZUZpZWxkLnZhbHVlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoe2RhdGE6IG5ldyBGb3JtQ29udHJvbCh2YWx1ZSl9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5jbGVhcigpO1xuICB9XG5cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgPC9oMT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICA8cD5XZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuPC9wPlxuICAgIDxwPjxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPkNvbnRhY3QgdXM8L2E+IGlmIHlvdSdyZSBzdGlsbCBoYXZpbmcgcHJvYmxlbXMuPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBDYWxsYmFjayBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiBlcnJvci5kZXRhaWxzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgVGhlIGNhbGxiYWNrIGRhdGEgZmFpbGVkIHZhbGlkYXRpb25cbiAgPC9oMj5cbiAgPHA+e3tlcnJvci5tZXNzYWdlfX08L3A+XG4gIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCI+XG4gICAgICB7e2ZpZWxkRXJyb3IubWVzc2FnZX19XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIkJBTk5FUlwiPjwvY2NkLWFjdGl2aXR5PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWNhc2UtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLWNhc2UtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjYXNlLXZpZXdlci1jb250cm9sc1wiICpuZ0lmPVwiaGFzUHJpbnQgJiYgIWlzRHJhZnQoKSAmJiBpc1ByaW50RW5hYmxlZCgpXCI+XG4gICAgICA8YSBpZD1cImNhc2Utdmlld2VyLWNvbnRyb2wtcHJpbnRcIiByb3V0ZXJMaW5rPVwicHJpbnRcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCI+UHJpbnQ8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaGFzRXZlbnRTZWxlY3RvclwiIGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1ldmVudC10cmlnZ2VyIFtpc0Rpc2FibGVkXT1cImlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKClcIiBbdHJpZ2dlcnNdPVwiY2FzZURldGFpbHMudHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCIgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFnc1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8Y2NkLW5vdGlmaWNhdGlvbi1iYW5uZXIgW25vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ109XCJub3RpZmljYXRpb25CYW5uZXJDb25maWdcIiAobGlua0NsaWNrZWQpPVwib25MaW5rQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgPC9jY2Qtbm90aWZpY2F0aW9uLWJhbm5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLWZ1bGxcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVGFic1ByZXNlbnQoKVwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgI3RhYkdyb3VwIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCIgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgYXJpYS1kZXNjcmliZWRieT1cImNhc2Ugdmlld2VyIHRhYmxlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPnt7ZmllbGQubGFiZWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIFtpZF09XCInY2FzZS12aWV3ZXItZmllbGQtcmVhZC0tJyArIGZpZWxkLmlkXCIgc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW3RvcExldmVsRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXT1cIm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbFwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -83,7 +83,7 @@ export class CaseFileViewFieldReadComponent extends CaseFileViewFieldComponent {
83
83
  }
84
84
  }
85
85
  CaseFileViewFieldReadComponent.ɵfac = function CaseFileViewFieldReadComponent_Factory(t) { return ɵCaseFileViewFieldReadComponent_BaseFactory(t || CaseFileViewFieldReadComponent); };
86
- CaseFileViewFieldReadComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFieldReadComponent, selectors: [["ccd-case-file-view-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 3, consts: [[4, "ngIf"], ["class", "govuk-grid-column-two-thirds", 4, "ngIf"], ["data-module", "govuk-error-summary", 1, "govuk-error-summary", "govuk-!-margin-bottom-4"], ["role", "alert"], [1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0);"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"], [1, "govuk-heading-l"], ["id", "case-file-view", 1, "govuk-form-group"], [1, "document-tree-container"], [1, "document-tree-container__tree", 3, "categoriesAndDocuments", "allowMoving", "clickedDocument", "moveDocument"], [1, "slider"], [1, "media-viewer-container"], [3, "url", "downloadFileName", "showToolbar", "contentType", "enableAnnotations", "enableRedactions", "height"]], template: function CaseFileViewFieldReadComponent_Template(rf, ctx) { if (rf & 1) {
86
+ CaseFileViewFieldReadComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFieldReadComponent, selectors: [["ccd-case-file-view-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 3, consts: [[4, "ngIf"], ["class", "govuk-grid-column-two-thirds", 4, "ngIf"], ["id", "case-file-view-field-errors", "data-module", "govuk-error-summary", 1, "govuk-error-summary", "govuk-!-margin-bottom-4"], ["role", "alert"], [1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0);"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"], [1, "govuk-heading-l"], ["id", "case-file-view", 1, "govuk-form-group"], [1, "document-tree-container"], [1, "document-tree-container__tree", 3, "categoriesAndDocuments", "allowMoving", "clickedDocument", "moveDocument"], [1, "slider"], [1, "media-viewer-container"], [3, "url", "downloadFileName", "showToolbar", "contentType", "enableAnnotations", "enableRedactions", "height"]], template: function CaseFileViewFieldReadComponent_Template(rf, ctx) { if (rf & 1) {
87
87
  i0.ɵɵtemplate(0, CaseFileViewFieldReadComponent_ng_container_0_Template, 8, 1, "ng-container", 0);
88
88
  i0.ɵɵtemplate(1, CaseFileViewFieldReadComponent_div_1_Template, 5, 0, "div", 1);
89
89
  i0.ɵɵtemplate(2, CaseFileViewFieldReadComponent_div_2_Template, 9, 3, "div", 0);
@@ -103,4 +103,4 @@ const ɵCaseFileViewFieldReadComponent_BaseFactory = /*@__PURE__*/ i0.ɵɵgetInh
103
103
  styleUrls: ['./case-file-view-field.component.scss'],
104
104
  }]
105
105
  }], null, null); })();
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZmllbGQtcmVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1maWVsZC1yZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztJQ09wRSwwQkFBK0M7SUFDN0MsNEJBQThCO0lBQUEsWUFBa0I7SUFBQSxpQkFBSTtJQUN0RCxpQkFBSzs7O0lBRDJCLGVBQWtCO0lBQWxCLHFDQUFrQjs7O0lBVDVELDZCQUE0QztJQUMxQyw4QkFBMkY7SUFDekYsOEJBQWtCO0lBQ2hCLDZCQUF1QztJQUNyQyxvQ0FDRjtJQUFBLGlCQUFLO0lBQ0wsOEJBQXVDO0lBQ3JDLDZCQUFpRDtJQUMvQyw0RkFFSztJQUNQLGlCQUFLO0lBQ1AsaUJBQU07SUFDUixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQVB3QixlQUFnQjtJQUFoQiw4Q0FBZ0I7OztJQVN2RCw4QkFBaUY7SUFDL0UsOEJBQTZCO0lBQUEsMERBQTBDO0lBQUEsaUJBQUs7SUFDNUUsNkJBQXNCO0lBQUEsZ0NBQWdCO0lBQUEsaUJBQUk7SUFDNUMsaUJBQU07OztJQWtCQSw2QkFBc0M7SUFDcEMsc0NBT2tCO0lBQ3BCLDBCQUFlOzs7SUFSSSxlQUEyQztJQUEzQyxnRUFBMkMsOERBQUEscUJBQUEsb0RBQUEsMkJBQUEsMEJBQUEsb0JBQUE7Ozs7SUFsQnBFLDJCQUE2QztJQUMzQyw4QkFBNEI7SUFBQSx5QkFBUztJQUFBLGlCQUFLO0lBQzFDLCtCQUFrRDtJQUVoRCwrQkFBcUM7SUFDbkMscURBTUM7SUFIQywwUkFBb0Usb09BQUE7SUFHckUsaUJBQTRCO0lBQy9CLGlCQUFNO0lBRU4sMEJBQTBCO0lBRTFCLCtCQUFvQztJQUNsQyx1R0FTZTtJQUNqQixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07OztJQXRCRSxlQUFrRDtJQUFsRCx1RUFBa0QsbUNBQUE7SUFVckMsZUFBcUI7SUFBckIsNkNBQXFCOztBRDlCMUMsTUFBTSxPQUFPLDhCQUErQixTQUFRLDBCQUEwQjtJQUw5RTs7UUFNUyxnQkFBVyxHQUFHLEtBQUssQ0FBQztLQUM1Qjs7bUpBRlksOEJBQThCO21FQUE5Qiw4QkFBOEI7UUNSM0MsaUdBZWU7UUFFZiwrRUFHTTtRQUNOLCtFQTZCTTs7UUFsRFMsa0ZBQTJCO1FBaUJwQyxlQUFvQztRQUFwQyx5REFBb0M7UUFJcEMsZUFBcUM7UUFBckMsMERBQXFDOzsyRkRiOUIsOEJBQThCO3VGQUE5Qiw4QkFBOEI7Y0FMMUMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLFdBQVcsRUFBRSx1Q0FBdUM7Z0JBQ3BELFNBQVMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZmlsZS12aWV3LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZpbGVWaWV3RmllbGRSZWFkQ29tcG9uZW50IGV4dGVuZHMgQ2FzZUZpbGVWaWV3RmllbGRDb21wb25lbnQge1xuICBwdWJsaWMgYWxsb3dNb3ZpbmcgPSBmYWxzZTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvck1lc3NhZ2VzPy5sZW5ndGhcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnkgZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgICA8ZGl2IHJvbGU9XCJhbGVydFwiPlxuICAgICAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIj5cbiAgICAgICAgVGhlcmUgaXMgYSBwcm9ibGVtXG4gICAgICA8L2gyPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj57eyBlcnJvck1lc3NhZ2UgfX08L2E+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2ICpuZ0lmPVwiZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yXCIgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmcteGxcIj5Tb3JyeSwgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHNlcnZpY2U8L2gxPlxuICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5UcnkgYWdhaW4gbGF0ZXIuPC9wPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWdldENhdGVnb3JpZXNBbmREb2N1bWVudHNFcnJvclwiPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5DYXNlIGZpbGU8L2gyPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIGlkPVwiY2FzZS1maWxlLXZpZXdcIj5cbiAgICA8IS0tIERvY3VtZW50IHRyZWUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyXCI+XG4gICAgICA8Y2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlclxuICAgICAgICBjbGFzcz1cImRvY3VtZW50LXRyZWUtY29udGFpbmVyX190cmVlXCJcbiAgICAgICAgW2NhdGVnb3JpZXNBbmREb2N1bWVudHNdPVwiY2F0ZWdvcmllc0FuZERvY3VtZW50cyRcIlxuICAgICAgICAoY2xpY2tlZERvY3VtZW50KT1cInNldE1lZGlhVmlld2VyRmlsZSgkZXZlbnQpOyByZXNldEVycm9yTWVzc2FnZXMoKVwiXG4gICAgICAgIChtb3ZlRG9jdW1lbnQpPVwibW92ZURvY3VtZW50KCRldmVudClcIlxuICAgICAgICBbYWxsb3dNb3ZpbmddPVwiYWxsb3dNb3ZpbmdcIlxuICAgICAgPjwvY2NkLWNhc2UtZmlsZS12aWV3LWZvbGRlcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFNsaWRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic2xpZGVyXCI+PC9kaXY+XG4gICAgPCEtLSBNZWRpYSB2aWV3ZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1lZGlhLXZpZXdlci1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50RG9jdW1lbnRcIj5cbiAgICAgICAgPG12LW1lZGlhLXZpZXdlciBbdXJsXT1cImN1cnJlbnREb2N1bWVudC5kb2N1bWVudF9iaW5hcnlfdXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZG93bmxvYWRGaWxlTmFtZV09XCJjdXJyZW50RG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9vbGJhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudFR5cGVdPVwiY3VycmVudERvY3VtZW50LmNvbnRlbnRfdHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZUFubm90YXRpb25zXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVSZWRhY3Rpb25zXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiJzk0LjV2aCdcIj5cbiAgICAgICAgPC9tdi1tZWRpYS12aWV3ZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZmllbGQtcmVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZpbGUtdmlldy9jYXNlLWZpbGUtdmlldy1maWVsZC1yZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmlsZS12aWV3L2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztJQ1NwRSwwQkFBK0M7SUFDN0MsNEJBQThCO0lBQUEsWUFBa0I7SUFBQSxpQkFBSTtJQUN0RCxpQkFBSzs7O0lBRDJCLGVBQWtCO0lBQWxCLHFDQUFrQjs7O0lBWDVELDZCQUE0QztJQUMxQyw4QkFFd0Y7SUFDdEYsOEJBQWtCO0lBQ2hCLDZCQUF1QztJQUNyQyxvQ0FDRjtJQUFBLGlCQUFLO0lBQ0wsOEJBQXVDO0lBQ3JDLDZCQUFpRDtJQUMvQyw0RkFFSztJQUNQLGlCQUFLO0lBQ1AsaUJBQU07SUFDUixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsMEJBQWU7OztJQVB3QixlQUFnQjtJQUFoQiw4Q0FBZ0I7OztJQVN2RCw4QkFBaUY7SUFDL0UsOEJBQTZCO0lBQUEsMERBQTBDO0lBQUEsaUJBQUs7SUFDNUUsNkJBQXNCO0lBQUEsZ0NBQWdCO0lBQUEsaUJBQUk7SUFDNUMsaUJBQU07OztJQWtCQSw2QkFBc0M7SUFDcEMsc0NBT2tCO0lBQ3BCLDBCQUFlOzs7SUFSSSxlQUEyQztJQUEzQyxnRUFBMkMsOERBQUEscUJBQUEsb0RBQUEsMkJBQUEsMEJBQUEsb0JBQUE7Ozs7SUFsQnBFLDJCQUE2QztJQUMzQyw4QkFBNEI7SUFBQSx5QkFBUztJQUFBLGlCQUFLO0lBQzFDLCtCQUFrRDtJQUVoRCwrQkFBcUM7SUFDbkMscURBTUM7SUFIQywwUkFBb0Usb09BQUE7SUFHckUsaUJBQTRCO0lBQy9CLGlCQUFNO0lBRU4sMEJBQTBCO0lBRTFCLCtCQUFvQztJQUNsQyx1R0FTZTtJQUNqQixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07OztJQXRCRSxlQUFrRDtJQUFsRCx1RUFBa0QsbUNBQUE7SUFVckMsZUFBcUI7SUFBckIsNkNBQXFCOztBRGhDMUMsTUFBTSxPQUFPLDhCQUErQixTQUFRLDBCQUEwQjtJQUw5RTs7UUFNUyxnQkFBVyxHQUFHLEtBQUssQ0FBQztLQUM1Qjs7bUpBRlksOEJBQThCO21FQUE5Qiw4QkFBOEI7UUNSM0MsaUdBaUJlO1FBRWYsK0VBR007UUFDTiwrRUE2Qk07O1FBcERTLGtGQUEyQjtRQW1CcEMsZUFBb0M7UUFBcEMseURBQW9DO1FBSXBDLGVBQXFDO1FBQXJDLDBEQUFxQzs7MkZEZjlCLDhCQUE4Qjt1RkFBOUIsOEJBQThCO2NBTDFDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxXQUFXLEVBQUUsdUNBQXVDO2dCQUNwRCxTQUFTLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQzthQUNyRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0ZpZWxkUmVhZENvbXBvbmVudCBleHRlbmRzIENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50IHtcbiAgcHVibGljIGFsbG93TW92aW5nID0gZmFsc2U7XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNZXNzYWdlcz8ubGVuZ3RoXCI+XG4gIDxkaXZcbiAgICBpZD1cImNhc2UtZmlsZS12aWV3LWZpZWxkLWVycm9yc1wiXG4gICAgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gICAgPGRpdiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCI+XG4gICAgICAgIFRoZXJlIGlzIGEgcHJvYmxlbVxuICAgICAgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCI+e3sgZXJyb3JNZXNzYWdlIH19PC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiAqbmdJZj1cImdldENhdGVnb3JpZXNBbmREb2N1bWVudHNFcnJvclwiIGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tdHdvLXRoaXJkc1wiPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXhsXCI+U29ycnksIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2aWNlPC9oMT5cbiAgPHAgY2xhc3M9XCJnb3Z1ay1ib2R5XCI+VHJ5IGFnYWluIGxhdGVyLjwvcD5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFnZXRDYXRlZ29yaWVzQW5kRG9jdW1lbnRzRXJyb3JcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+Q2FzZSBmaWxlPC9oMj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBpZD1cImNhc2UtZmlsZS12aWV3XCI+XG4gICAgPCEtLSBEb2N1bWVudCB0cmVlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lclwiPlxuICAgICAgPGNjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXJcbiAgICAgICAgY2xhc3M9XCJkb2N1bWVudC10cmVlLWNvbnRhaW5lcl9fdHJlZVwiXG4gICAgICAgIFtjYXRlZ29yaWVzQW5kRG9jdW1lbnRzXT1cImNhdGVnb3JpZXNBbmREb2N1bWVudHMkXCJcbiAgICAgICAgKGNsaWNrZWREb2N1bWVudCk9XCJzZXRNZWRpYVZpZXdlckZpbGUoJGV2ZW50KTsgcmVzZXRFcnJvck1lc3NhZ2VzKClcIlxuICAgICAgICAobW92ZURvY3VtZW50KT1cIm1vdmVEb2N1bWVudCgkZXZlbnQpXCJcbiAgICAgICAgW2FsbG93TW92aW5nXT1cImFsbG93TW92aW5nXCJcbiAgICAgID48L2NjZC1jYXNlLWZpbGUtdmlldy1mb2xkZXI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBTbGlkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cInNsaWRlclwiPjwvZGl2PlxuICAgIDwhLS0gTWVkaWEgdmlld2VyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtZWRpYS12aWV3ZXItY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudERvY3VtZW50XCI+XG4gICAgICAgIDxtdi1tZWRpYS12aWV3ZXIgW3VybF09XCJjdXJyZW50RG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiY3VycmVudERvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Rvb2xiYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRUeXBlXT1cImN1cnJlbnREb2N1bWVudC5jb250ZW50X3R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVBbm5vdGF0aW9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlUmVkYWN0aW9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIic5NC41dmgnXCI+XG4gICAgICAgIDwvbXYtbWVkaWEtdmlld2VyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -144,10 +144,13 @@ export class CaseFileViewFieldComponent {
144
144
  .subscribe(res => {
145
145
  if (res) {
146
146
  this.resetErrorMessages();
147
- location.reload();
147
+ this.reloadPage();
148
148
  }
149
149
  });
150
150
  }
151
+ reloadPage() {
152
+ location.reload();
153
+ }
151
154
  resetErrorMessages() {
152
155
  this.errorMessages = [];
153
156
  }
@@ -159,7 +162,7 @@ export class CaseFileViewFieldComponent {
159
162
  }
160
163
  CaseFileViewFieldComponent.PARAM_CASE_ID = 'cid';
161
164
  CaseFileViewFieldComponent.ɵfac = function CaseFileViewFieldComponent_Factory(t) { return new (t || CaseFileViewFieldComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.CaseFileViewService), i0.ɵɵdirectiveInject(i2.DocumentManagementService), i0.ɵɵdirectiveInject(i2.LoadingService)); };
162
- CaseFileViewFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFieldComponent, selectors: [["ccd-case-file-view-field"]], decls: 3, vars: 3, consts: [[4, "ngIf"], ["class", "govuk-grid-column-two-thirds", 4, "ngIf"], ["data-module", "govuk-error-summary", 1, "govuk-error-summary", "govuk-!-margin-bottom-4"], ["role", "alert"], [1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0);"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"], [1, "govuk-heading-l"], ["id", "case-file-view", 1, "govuk-form-group"], [1, "document-tree-container"], [1, "document-tree-container__tree", 3, "categoriesAndDocuments", "allowMoving", "clickedDocument", "moveDocument"], [1, "slider"], [1, "media-viewer-container"], [3, "url", "downloadFileName", "showToolbar", "contentType", "enableAnnotations", "enableRedactions", "height"]], template: function CaseFileViewFieldComponent_Template(rf, ctx) { if (rf & 1) {
165
+ CaseFileViewFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFieldComponent, selectors: [["ccd-case-file-view-field"]], decls: 3, vars: 3, consts: [[4, "ngIf"], ["class", "govuk-grid-column-two-thirds", 4, "ngIf"], ["id", "case-file-view-field-errors", "data-module", "govuk-error-summary", 1, "govuk-error-summary", "govuk-!-margin-bottom-4"], ["role", "alert"], [1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [4, "ngFor", "ngForOf"], ["href", "javascript:void(0);"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-heading-xl"], [1, "govuk-body"], [1, "govuk-heading-l"], ["id", "case-file-view", 1, "govuk-form-group"], [1, "document-tree-container"], [1, "document-tree-container__tree", 3, "categoriesAndDocuments", "allowMoving", "clickedDocument", "moveDocument"], [1, "slider"], [1, "media-viewer-container"], [3, "url", "downloadFileName", "showToolbar", "contentType", "enableAnnotations", "enableRedactions", "height"]], template: function CaseFileViewFieldComponent_Template(rf, ctx) { if (rf & 1) {
163
166
  i0.ɵɵtemplate(0, CaseFileViewFieldComponent_ng_container_0_Template, 8, 1, "ng-container", 0);
164
167
  i0.ɵɵtemplate(1, CaseFileViewFieldComponent_div_1_Template, 5, 0, "div", 1);
165
168
  i0.ɵɵtemplate(2, CaseFileViewFieldComponent_div_2_Template, 9, 3, "div", 0);
@@ -178,4 +181,4 @@ CaseFileViewFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseFileViewFi
178
181
  styleUrls: ['./case-file-view-field.component.scss'],
179
182
  }]
180
183
  }], function () { return [{ type: i0.ElementRef }, { type: i1.ActivatedRoute }, { type: i2.CaseFileViewService }, { type: i2.DocumentManagementService }, { type: i2.LoadingService }]; }, null); })();
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztJQ0d6RiwwQkFBK0M7SUFDN0MsNEJBQThCO0lBQUEsWUFBa0I7SUFBQSxpQkFBSTtJQUN0RCxpQkFBSzs7O0lBRDJCLGVBQWtCO0lBQWxCLHFDQUFrQjs7O0lBVDVELDZCQUE0QztJQUMxQyw4QkFBMkY7SUFDekYsOEJBQWtCO0lBQ2hCLDZCQUF1QztJQUNyQyxvQ0FDRjtJQUFBLGlCQUFLO0lBQ0wsOEJBQXVDO0lBQ3JDLDZCQUFpRDtJQUMvQyx3RkFFSztJQUNQLGlCQUFLO0lB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QVcsRUFBRSx1Q0FBdUM7Z0JBQ3BELFNBQVMsRUFBRSxDQUFDLHVDQUF1QyxDQUFDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhdGVnb3JpZXNBbmREb2N1bWVudHMsIERvY3VtZW50VHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS1maWxlLXZpZXcnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3U2VydmljZSwgRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSwgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfSUQgPSAnY2lkJztcbiAgcHVibGljIGFsbG93TW92aW5nID0gdHJ1ZTtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHMkOiBPYnNlcnZhYmxlPENhdGVnb3JpZXNBbmREb2N1bWVudHM+O1xuICBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50RG9jdW1lbnQ6IHsgZG9jdW1lbnRfYmluYXJ5X3VybDogc3RyaW5nLCBkb2N1bWVudF9maWxlbmFtZTogc3RyaW5nLCBjb250ZW50X3R5cGU6IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlcyA9IFtdO1xuICBwcml2YXRlIGNhc2VWZXJzaW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXNlRmlsZVZpZXdTZXJ2aWNlOiBDYXNlRmlsZVZpZXdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGRvY3VtZW50TWFuYWdlbWVudFNlcnZpY2U6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50LlBBUkFNX0NBU0VfSUQpO1xuICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50cyQgPSB0aGlzLmNhc2VGaWxlVmlld1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50cyhjaWQpO1xuICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50cyQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmNhc2VWZXJzaW9uID0gZGF0YS5jYXNlX3ZlcnNpb247XG4gICAgICB9LFxuICAgICAgZXJyb3I6IF8gPT4gdGhpcy5nZXRDYXRlZ29yaWVzQW5kRG9jdW1lbnRzRXJyb3IgPSB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNsaWRlciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zbGlkZXInKTtcbiAgICBjb25zdCBkb2N1bWVudFRyZWVDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZG9jdW1lbnQtdHJlZS1jb250YWluZXInKTtcblxuICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oc2xpZGVyLCAnbW91c2Vkb3duJyk7XG4gICAgY29uc3QgbW91c2Vtb3ZlJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpO1xuICAgIGNvbnN0IG1vdXNldXAkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpO1xuICAgIGNvbnN0IGRyYWckID0gbW91c2Vkb3duJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAoc3RhcnQpID0+IHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhcnQuY2xpZW50WDtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudFRyZWVDb250YWluZXJXaWR0aCA9IGRvY3VtZW50VHJlZUNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICByZXR1cm4gbW91c2Vtb3ZlJC5waXBlKG1hcChtb3ZlID0+IHtcbiAgICAgICAgICAgIG1vdmUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGR4OiBtb3ZlLmNsaWVudFggLSB4LFxuICAgICAgICAgICAgICBkb2N1bWVudFRyZWVDb250YWluZXJXaWR0aFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwobW91c2V1cCQpKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgICBkcmFnJC5zdWJzY3JpYmUocG9zID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9ICgocG9zLmRvY3VtZW50VHJlZUNvbnRhaW5lcldpZHRoICsgcG9zLmR4KSAqIDEwMCkgLyBzbGlkZXIucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIGRvY3VtZW50VHJlZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYHdpZHRoOiAke2NhbGN1bGF0ZWRXaWR0aH0lYCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWVkaWFWaWV3ZXJGaWxlKGRvY3VtZW50OiBEb2N1bWVudFRyZWVOb2RlKTogdm9pZCB7XG4gICAgY29uc3QgbWVkaWFWaWV3ZXJJbmZvID0gdGhpcy5kb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lZGlhVmlld2VySW5mbyh7XG4gICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBkb2N1bWVudC5kb2N1bWVudF9iaW5hcnlfdXJsLFxuICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lXG4gICAgfSk7XG4gICAgdGhpcy5jdXJyZW50RG9jdW1lbnQgPSBKU09OLnBhcnNlKG1lZGlhVmlld2VySW5mbyk7XG4gIH1cblxuICBwdWJsaWMgbW92ZURvY3VtZW50KGRhdGE6YW55KSB7XG4gICAgY29uc3QgY2lkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoQ2FzZUZpbGVWaWV3RmllbGRDb21wb25lbnQuUEFSQU1fQ0FTRV9JRCk7XG4gICAgY29uc3QgbG9hZGluZ1Rva2VuID0gdGhpcy5sb2FkaW5nU2VydmljZS5yZWdpc3RlcigpO1xuICAgIHRoaXMuY2FzZUZpbGVWaWV3U2VydmljZS51cGRhdGVEb2N1bWVudENhdGVnb3J5KGNpZCwgdGhpcy5jYXNlVmVyc2lvbiwgZGF0YS5kb2N1bWVudC5hdHRyaWJ1dGVfcGF0aCwgZGF0YS5uZXdDYXRlZ29yeSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS51bnJlZ2lzdGVyKGxvYWRpbmdUb2tlbik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbJ1lvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIG1vdmUgdGhpcyBkb2N1bWVudCB0byB0aGUgc2VsZWN0ZWQgZm9sZGVyLiddO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0RXJyb3JNZXNzYWdlcygpO1xuICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRFcnJvck1lc3NhZ2VzKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZXM/Lmxlbmd0aFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeSBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICAgIDxkaXYgcm9sZT1cImFsZXJ0XCI+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiPlxuICAgICAgICBUaGVyZSBpcyBhIHByb2JsZW1cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPnt7IGVycm9yTWVzc2FnZSB9fTwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgKm5nSWY9XCJnZXRDYXRlZ29yaWVzQW5kRG9jdW1lbnRzRXJyb3JcIiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPlNvcnJ5LCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc2VydmljZTwvaDE+XG4gIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlRyeSBhZ2FpbiBsYXRlci48L3A+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yXCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkNhc2UgZmlsZTwvaDI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgaWQ9XCJjYXNlLWZpbGUtdmlld1wiPlxuICAgIDwhLS0gRG9jdW1lbnQgdHJlZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJcIj5cbiAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX3RyZWVcIlxuICAgICAgICBbY2F0ZWdvcmllc0FuZERvY3VtZW50c109XCJjYXRlZ29yaWVzQW5kRG9jdW1lbnRzJFwiXG4gICAgICAgIChjbGlja2VkRG9jdW1lbnQpPVwic2V0TWVkaWFWaWV3ZXJGaWxlKCRldmVudCk7IHJlc2V0RXJyb3JNZXNzYWdlcygpXCJcbiAgICAgICAgKG1vdmVEb2N1bWVudCk9XCJtb3ZlRG9jdW1lbnQoJGV2ZW50KVwiXG4gICAgICAgIFthbGxvd01vdmluZ109XCJhbGxvd01vdmluZ1wiXG4gICAgICA+PC9jY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU2xpZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzbGlkZXJcIj48L2Rpdj5cbiAgICA8IS0tIE1lZGlhIHZpZXdlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWVkaWEtdmlld2VyLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnREb2N1bWVudFwiPlxuICAgICAgICA8bXYtbWVkaWEtdmlld2VyIFt1cmxdPVwiY3VycmVudERvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkb3dubG9hZEZpbGVOYW1lXT1cImN1cnJlbnREb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb29sYmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50VHlwZV09XCJjdXJyZW50RG9jdW1lbnQuY29udGVudF90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlQW5ub3RhdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVJlZGFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInOTQuNXZoJ1wiPlxuICAgICAgICA8L212LW1lZGlhLXZpZXdlcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7OztJQ0t6RiwwQkFBK0M7SUFDN0MsNEJBQThCO0lBQUEsWUFBa0I7SUFBQSxpQkFBSTtJQUN0RCxpQkFBSzs7O0lBRDJCLGVBQWtCO0lBQWxCLHFDQUFrQjs7O0lBWDVELDZCQUE0QztJQUMxQyw4QkFFd0Y7SUFDdEYsOEJBQWtCO0lBQ2hCLDZCQUF1QztJQUNyQyxvQ0FDRjtJQUFBLGlCQUFLO0lBQ0wsOEJBQXVDO0lBQ3JDLDZCQUFpRDtJQUMvQyx3RkFFSztJQUNQLGlCQUFLO0lB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QUEwQjtjQUx0QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsV0FBVyxFQUFFLHVDQUF1QztnQkFDcEQsU0FBUyxFQUFFLENBQUMsdUNBQXVDLENBQUM7YUFDckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3RG9jdW1lbnQsIENhdGVnb3JpZXNBbmREb2N1bWVudHMsIERvY3VtZW50VHJlZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS1maWxlLXZpZXcnO1xuaW1wb3J0IHsgQ2FzZUZpbGVWaWV3U2VydmljZSwgRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSwgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZpbGUtdmlldy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLWZpbGUtdmlldy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZmlsZS12aWV3LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfSUQgPSAnY2lkJztcbiAgcHVibGljIGFsbG93TW92aW5nID0gdHJ1ZTtcbiAgcHVibGljIGNhdGVnb3JpZXNBbmREb2N1bWVudHMkOiBPYnNlcnZhYmxlPENhdGVnb3JpZXNBbmREb2N1bWVudHM+O1xuICBwdWJsaWMgY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yID0gZmFsc2U7XG4gIHB1YmxpYyBjdXJyZW50RG9jdW1lbnQ6IENhc2VGaWxlVmlld0RvY3VtZW50IHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlcyA9IFtdIGFzIHN0cmluZ1tdO1xuICBwcml2YXRlIGNhc2VWZXJzaW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXNlRmlsZVZpZXdTZXJ2aWNlOiBDYXNlRmlsZVZpZXdTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGRvY3VtZW50TWFuYWdlbWVudFNlcnZpY2U6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50LlBBUkFNX0NBU0VfSUQpO1xuICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50cyQgPSB0aGlzLmNhc2VGaWxlVmlld1NlcnZpY2UuZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50cyhjaWQpO1xuICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbiA9IHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50cyQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT4ge1xuICAgICAgICB0aGlzLmNhc2VWZXJzaW9uID0gZGF0YS5jYXNlX3ZlcnNpb247XG4gICAgICB9LFxuICAgICAgZXJyb3I6IF8gPT4gdGhpcy5nZXRDYXRlZ29yaWVzQW5kRG9jdW1lbnRzRXJyb3IgPSB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNsaWRlciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zbGlkZXInKTtcbiAgICBjb25zdCBkb2N1bWVudFRyZWVDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZG9jdW1lbnQtdHJlZS1jb250YWluZXInKTtcblxuICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oc2xpZGVyLCAnbW91c2Vkb3duJyk7XG4gICAgY29uc3QgbW91c2Vtb3ZlJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNlbW92ZScpO1xuICAgIGNvbnN0IG1vdXNldXAkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpO1xuICAgIGNvbnN0IGRyYWckID0gbW91c2Vkb3duJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAoc3RhcnQpID0+IHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhcnQuY2xpZW50WDtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudFRyZWVDb250YWluZXJXaWR0aCA9IGRvY3VtZW50VHJlZUNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICByZXR1cm4gbW91c2Vtb3ZlJC5waXBlKG1hcChtb3ZlID0+IHtcbiAgICAgICAgICAgIG1vdmUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGR4OiBtb3ZlLmNsaWVudFggLSB4LFxuICAgICAgICAgICAgICBkb2N1bWVudFRyZWVDb250YWluZXJXaWR0aFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwobW91c2V1cCQpKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgICBkcmFnJC5zdWJzY3JpYmUocG9zID0+IHtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9ICgocG9zLmRvY3VtZW50VHJlZUNvbnRhaW5lcldpZHRoICsgcG9zLmR4KSAqIDEwMCkgLyBzbGlkZXIucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgIGRvY3VtZW50VHJlZUNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgYHdpZHRoOiAke2NhbGN1bGF0ZWRXaWR0aH0lYCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0TWVkaWFWaWV3ZXJGaWxlKGRvY3VtZW50OiBEb2N1bWVudFRyZWVOb2RlKTogdm9pZCB7XG4gICAgY29uc3QgbWVkaWFWaWV3ZXJJbmZvID0gdGhpcy5kb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLmdldE1lZGlhVmlld2VySW5mbyh7XG4gICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBkb2N1bWVudC5kb2N1bWVudF9iaW5hcnlfdXJsLFxuICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6IGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lXG4gICAgfSk7XG4gICAgdGhpcy5jdXJyZW50RG9jdW1lbnQgPSBKU09OLnBhcnNlKG1lZGlhVmlld2VySW5mbyk7XG4gIH1cblxuICBwdWJsaWMgbW92ZURvY3VtZW50KGRhdGE6IHsgZG9jdW1lbnQ6IERvY3VtZW50VHJlZU5vZGUsIG5ld0NhdGVnb3J5OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IGNpZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KENhc2VGaWxlVmlld0ZpZWxkQ29tcG9uZW50LlBBUkFNX0NBU0VfSUQpO1xuICAgIGNvbnN0IGxvYWRpbmdUb2tlbiA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmNhc2VGaWxlVmlld1NlcnZpY2UudXBkYXRlRG9jdW1lbnRDYXRlZ29yeShjaWQsIHRoaXMuY2FzZVZlcnNpb24sIGRhdGEuZG9jdW1lbnQuYXR0cmlidXRlX3BhdGgsIGRhdGEubmV3Q2F0ZWdvcnkpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3Rlcihsb2FkaW5nVG9rZW4pO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gWydZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBtb3ZlIHRoaXMgZG9jdW1lbnQgdG8gdGhlIHNlbGVjdGVkIGZvbGRlci4nXTtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEVycm9yTWVzc2FnZXMoKTtcbiAgICAgICAgICB0aGlzLnJlbG9hZFBhZ2UoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZFBhZ2UoKSB7XG4gICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRFcnJvck1lc3NhZ2VzKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNBbmREb2N1bWVudHNTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2F0ZWdvcmllc0FuZERvY3VtZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZXM/Lmxlbmd0aFwiPlxuICA8ZGl2XG4gICAgaWQ9XCJjYXNlLWZpbGUtdmlldy1maWVsZC1lcnJvcnNcIlxuICAgIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeSBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICAgIDxkaXYgcm9sZT1cImFsZXJ0XCI+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiPlxuICAgICAgICBUaGVyZSBpcyBhIHByb2JsZW1cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPnt7IGVycm9yTWVzc2FnZSB9fTwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxkaXYgKm5nSWY9XCJnZXRDYXRlZ29yaWVzQW5kRG9jdW1lbnRzRXJyb3JcIiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy14bFwiPlNvcnJ5LCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgc2VydmljZTwvaDE+XG4gIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlRyeSBhZ2FpbiBsYXRlci48L3A+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhZ2V0Q2F0ZWdvcmllc0FuZERvY3VtZW50c0Vycm9yXCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPkNhc2UgZmlsZTwvaDI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgaWQ9XCJjYXNlLWZpbGUtdmlld1wiPlxuICAgIDwhLS0gRG9jdW1lbnQgdHJlZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJcIj5cbiAgICAgIDxjY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyXG4gICAgICAgIGNsYXNzPVwiZG9jdW1lbnQtdHJlZS1jb250YWluZXJfX3RyZWVcIlxuICAgICAgICBbY2F0ZWdvcmllc0FuZERvY3VtZW50c109XCJjYXRlZ29yaWVzQW5kRG9jdW1lbnRzJFwiXG4gICAgICAgIChjbGlja2VkRG9jdW1lbnQpPVwic2V0TWVkaWFWaWV3ZXJGaWxlKCRldmVudCk7IHJlc2V0RXJyb3JNZXNzYWdlcygpXCJcbiAgICAgICAgKG1vdmVEb2N1bWVudCk9XCJtb3ZlRG9jdW1lbnQoJGV2ZW50KVwiXG4gICAgICAgIFthbGxvd01vdmluZ109XCJhbGxvd01vdmluZ1wiXG4gICAgICA+PC9jY2QtY2FzZS1maWxlLXZpZXctZm9sZGVyPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU2xpZGVyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJzbGlkZXJcIj48L2Rpdj5cbiAgICA8IS0tIE1lZGlhIHZpZXdlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWVkaWEtdmlld2VyLWNvbnRhaW5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnREb2N1bWVudFwiPlxuICAgICAgICA8bXYtbWVkaWEtdmlld2VyIFt1cmxdPVwiY3VycmVudERvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtkb3dubG9hZEZpbGVOYW1lXT1cImN1cnJlbnREb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUb29sYmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50VHlwZV09XCJjdXJyZW50RG9jdW1lbnQuY29udGVudF90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlQW5ub3RhdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVJlZGFjdGlvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInOTQuNXZoJ1wiPlxuICAgICAgICA8L212LW1lZGlhLXZpZXdlcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19