@hmcts/ccd-case-ui-toolkit 7.2.23-mid-event-callback → 7.2.23-srt-rc1

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 (134) hide show
  1. package/esm2022/lib/app.config.mjs +2 -1
  2. package/esm2022/lib/components/form/date-input/date-input.component.mjs +56 -19
  3. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  4. package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +24 -3
  5. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +6 -2
  6. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +9 -5
  7. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +9 -5
  8. package/esm2022/lib/shared/components/case-header/case-header.component.mjs +5 -5
  9. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +9 -4
  10. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +16 -3
  11. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +20 -13
  12. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +13 -9
  13. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +4 -2
  14. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +9 -5
  15. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +9 -5
  16. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +9 -5
  17. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +9 -5
  18. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +3 -3
  19. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +6 -6
  20. package/esm2022/lib/shared/components/palette/collection/read-collection-field.component.mjs +13 -10
  21. package/esm2022/lib/shared/components/palette/complex/read-complex-field-table.component.mjs +8 -8
  22. package/esm2022/lib/shared/components/palette/date/read-date-field.component.mjs +4 -4
  23. package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +41 -10
  24. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +2 -2
  25. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +7 -7
  26. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +7 -7
  27. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +2 -2
  28. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +3 -3
  29. package/esm2022/lib/shared/components/palette/number/write-number-field.component.mjs +3 -3
  30. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-raw.component.mjs +21 -25
  31. package/esm2022/lib/shared/components/palette/organisation/read-organisation-field-table.component.mjs +21 -25
  32. package/esm2022/lib/shared/components/palette/palette.module.mjs +6 -2
  33. package/esm2022/lib/shared/components/palette/query-management/components/close-query/close-query.component.mjs +3 -3
  34. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +26 -15
  35. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +6 -2
  36. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +21 -6
  37. package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +22 -18
  38. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +56 -9
  39. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +2 -2
  40. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +5 -5
  41. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +9 -9
  42. package/esm2022/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +1 -1
  43. package/esm2022/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.mjs +44 -15
  44. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +84 -40
  45. package/esm2022/lib/shared/components/palette/query-management/services/query-management.service.mjs +2 -2
  46. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +16 -8
  47. package/esm2022/lib/shared/components/palette/utils/field-label.pipe.mjs +11 -3
  48. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +1 -1
  49. package/esm2022/lib/shared/directives/index.mjs +2 -1
  50. package/esm2022/lib/shared/directives/welsh-translated-markdown/index.mjs +3 -0
  51. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.mjs +104 -0
  52. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.mjs +21 -0
  53. package/esm2022/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.mjs +2 -3
  54. package/esm2022/lib/shared/services/draft/draft.service.mjs +2 -2
  55. package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +38 -3
  56. package/esm2022/lib/shared/services/form/form-value.service.mjs +24 -1
  57. package/esm2022/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.mjs +7 -8
  58. package/esm2022/lib/shared/utils.mjs +1 -1
  59. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +929 -447
  60. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  61. package/lib/app.config.d.ts +2 -0
  62. package/lib/app.config.d.ts.map +1 -1
  63. package/lib/components/form/date-input/date-input.component.d.ts +4 -0
  64. package/lib/components/form/date-input/date-input.component.d.ts.map +1 -1
  65. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +1 -0
  66. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
  67. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  68. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +2 -0
  69. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  70. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -0
  71. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  72. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +2 -0
  73. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -1
  74. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +1 -0
  75. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  76. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  77. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +2 -0
  78. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -1
  79. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -1
  80. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +2 -0
  81. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -1
  82. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +2 -0
  83. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -1
  84. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +2 -0
  85. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -1
  86. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +2 -0
  87. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -1
  88. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +2 -2
  89. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  90. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  91. package/lib/shared/components/palette/collection/read-collection-field.component.d.ts +3 -1
  92. package/lib/shared/components/palette/collection/read-collection-field.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/date/read-date-field.component.d.ts.map +1 -1
  94. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +2 -0
  95. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  96. package/lib/shared/components/palette/palette.module.d.ts +18 -17
  97. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  98. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +2 -0
  99. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -1
  100. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +3 -2
  101. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  102. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +2 -0
  103. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -1
  104. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +15 -3
  105. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  106. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +1 -1
  107. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +1 -1
  108. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +1 -0
  109. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -1
  110. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts +1 -0
  111. package/lib/shared/components/palette/query-management/models/query-list/query-list-item/query-list-item.model.d.ts.map +1 -1
  112. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +15 -3
  113. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
  114. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +1 -1
  115. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  116. package/lib/shared/components/palette/utils/field-label.pipe.d.ts +1 -0
  117. package/lib/shared/components/palette/utils/field-label.pipe.d.ts.map +1 -1
  118. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  119. package/lib/shared/directives/index.d.ts +1 -0
  120. package/lib/shared/directives/index.d.ts.map +1 -1
  121. package/lib/shared/directives/welsh-translated-markdown/index.d.ts +3 -0
  122. package/lib/shared/directives/welsh-translated-markdown/index.d.ts.map +1 -0
  123. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts +76 -0
  124. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts.map +1 -0
  125. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts +8 -0
  126. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts.map +1 -0
  127. package/lib/shared/pipes/search-result/sorting/sort-search-result.pipe.d.ts.map +1 -1
  128. package/lib/shared/services/form/field-type-sanitiser.d.ts +5 -0
  129. package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
  130. package/lib/shared/services/form/form-value.service.d.ts +1 -0
  131. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  132. package/lib/shared/services/search-result/sorting/search-result-view-item-comparator-factory.d.ts.map +1 -1
  133. package/lib/shared/utils.d.ts +1 -1
  134. package/package.json +1 -1
@@ -206,13 +206,13 @@ export class QueryWriteRaiseQueryComponent {
206
206
  queryDataCreated = new EventEmitter();
207
207
  raiseQueryErrorMessage = RaiseQueryErrorMessage;
208
208
  eventCompletionParams;
209
- messgaeId;
209
+ messageId;
210
210
  constructor(queryManagementService, route) {
211
211
  this.queryManagementService = queryManagementService;
212
212
  this.route = route;
213
213
  }
214
214
  ngOnChanges() {
215
- this.messgaeId = this.route.snapshot.params.dataid;
215
+ this.messageId = this.route.snapshot.params.dataid;
216
216
  const isCollectionDataSet = this.setCaseQueriesCollectionData();
217
217
  if (isCollectionDataSet) {
218
218
  if (this.triggerSubmission) {
@@ -243,11 +243,11 @@ export class QueryWriteRaiseQueryComponent {
243
243
  console.warn('Event data not available; skipping collection setup.');
244
244
  return false;
245
245
  }
246
- this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messgaeId);
246
+ this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messageId);
247
247
  return true;
248
248
  }
249
249
  generateCaseQueriesCollectionData() {
250
- return this.queryManagementService.generateCaseQueriesCollectionData(this.formGroup, this.queryCreateContext, this.queryItem, this.messgaeId);
250
+ return this.queryManagementService.generateCaseQueriesCollectionData(this.formGroup, this.queryCreateContext, this.queryItem, this.messageId);
251
251
  }
252
252
  static ɵfac = function QueryWriteRaiseQueryComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryWriteRaiseQueryComponent)(i0.ɵɵdirectiveInject(i1.QueryManagementService), i0.ɵɵdirectiveInject(i2.ActivatedRoute)); };
253
253
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRaiseQueryComponent, selectors: [["ccd-query-write-raise-query"]], inputs: { formGroup: "formGroup", submitted: "submitted", caseDetails: "caseDetails", showForm: "showForm", serviceMessage: "serviceMessage", queryCreateContext: "queryCreateContext", eventData: "eventData", queryItem: "queryItem", validate: "validate", triggerSubmission: "triggerSubmission" }, outputs: { queryDataCreated: "queryDataCreated" }, features: [i0.ɵɵNgOnChangesFeature], decls: 12, vars: 8, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-4"], [3, "caseDetails", 4, "ngIf"], ["class", "govuk-!-margin-bottom-4", 4, "ngIf"], [3, "caseDetails"], [1, "govuk-!-margin-bottom-4"], [3, "formGroup"], [1, "govuk-warning-text"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-visually-hidden"], [3, "content"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-label-wrapper"], ["for", "subject", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "subject-hint", 1, "govuk-hint"], ["id", "subject-error", "class", "govuk-error-message", 4, "ngIf"], ["type", "text", "id", "subject", "formControlName", "subject", "maxlength", "200", "aria-describedby", "subject-error", 1, "govuk-input", 3, "input"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-hint", 1, "govuk-hint"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], [1, "govuk-fieldset"], [1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "isHearingRelated-error", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", 1, "govuk-radios", "govuk-radios--inline"], [1, "govuk-radios__item"], ["id", "isHearingRelated-yes", "name", "isHearingRelated", "type", "radio", "formControlName", "isHearingRelated", 1, "govuk-radios__input", 3, "checked", "value"], ["for", "isHearingRelated-yes", 1, "govuk-label", "govuk-radios__label"], ["id", "isHearingRelated-no", "name", "isHearingRelated", "type", "radio", "formControlName", "isHearingRelated", 1, "govuk-radios__input", 3, "checked", "value"], ["for", "isHearingRelated-no", 1, "govuk-label", "govuk-radios__label"], [4, "ngIf"], ["id", "subject-error", 1, "govuk-error-message"], ["id", "body-error", 1, "govuk-error-message"], ["id", "isHearingRelated-error", 1, "govuk-error-message"], [1, "govuk-radios__conditional", "govuk-!-margin-top-1", 3, "ngClass"], ["role", "group", 1, "govuk-fieldset"], [1, "govuk-label", "govuk-label--s"], ["id", "hearingDate-error", "class", "govuk-error-message", 4, "ngIf"], ["formControlName", "hearingDate"], ["id", "hearingDate-error", 1, "govuk-error-message"]], template: function QueryWriteRaiseQueryComponent_Template(rf, ctx) { if (rf & 1) {
@@ -303,4 +303,4 @@ export class QueryWriteRaiseQueryComponent {
303
303
  type: Output
304
304
  }] }); })();
305
305
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryWriteRaiseQueryComponent, { className: "QueryWriteRaiseQueryComponent", filePath: "lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.ts", lineNumber: 19 }); })();
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmFpc2UtcXVlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvcXVlcnktbWFuYWdlbWVudC9jb21wb25lbnRzL3F1ZXJ5LXdyaXRlL3F1ZXJ5LXdyaXRlLXJhaXNlLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJhaXNlLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDVCxNQUFNLDJDQUEyQyxDQUFDO0FBRW5ELE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7SUNMN0MsbURBQStHOzs7SUFBaEYsZ0RBQTJC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Q0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGlDQUFpQztRQUN2QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQ0FBaUMsQ0FDbEUsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO0lBQ0osQ0FBQzt1SEE1RVUsNkJBQTZCOzZEQUE3Qiw2QkFBNkI7WUNoQnRDLEFBREYsQUFERiwyQkFBSyxhQUNrQyxhQUNOO1lBQUEsWUFBb0M7O1lBQUEsaUJBQU07WUFDdkUsNkJBQW9EO1lBQUEsWUFBMEM7O1lBQ2hHLEFBRGdHLGlCQUFLLEVBQy9GO1lBRU4sMkJBQUs7WUFDSCxrSUFBK0U7WUFDakYsaUJBQU07WUFFTixzQkFBSTtZQUVKLGtGQUFzRDtZQVp4RCxpQkFBSzs7WUFFNEIsZUFBb0M7WUFBcEMsMkRBQW9DO1lBQ2IsZUFBMEM7WUFBMUMsaUVBQTBDO1lBSWxDLGVBQWlCO1lBQWpCLHNDQUFpQjtZQUt6QyxlQUFjO1lBQWQsbUNBQWM7OztpRkRNekMsNkJBQTZCO2NBSnpDLFNBQVM7MkJBQ0UsNkJBQTZCO29GQUl2QixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsY0FBYztrQkFBN0IsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUVXLGdCQUFnQjtrQkFBaEMsTUFBTTs7a0ZBWkksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmFpc2VRdWVyeUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7XG4gIENhc2VFdmVudERhdGEsXG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VWaWV3XG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS13cml0ZS1yYWlzZS1xdWVyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlXcml0ZVJhaXNlUXVlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93Rm9ybTogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VNZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0OiBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRlOiAoY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSwgcGFnZUlkOiBzdHJpbmcpID0+IE9ic2VydmFibGU8b2JqZWN0PjtcbiAgQElucHV0KCkgcHVibGljIHRyaWdnZXJTdWJtaXNzaW9uOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVlcnlEYXRhQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIgPFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uPigpO1xuXG4gIHB1YmxpYyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlID0gUmFpc2VRdWVyeUVycm9yTWVzc2FnZTtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgbWVzc2dhZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBxdWVyeU1hbmFnZW1lbnRTZXJ2aWNlOiBRdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2dhZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuZGF0YWlkO1xuICAgIGNvbnN0IGlzQ29sbGVjdGlvbkRhdGFTZXQgPSB0aGlzLnNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgICBpZiAoaXNDb2xsZWN0aW9uRGF0YVNldCkge1xuICAgICAgaWYgKHRoaXMudHJpZ2dlclN1Ym1pc3Npb24pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG4gICAgICAgIHRoaXMucXVlcnlEYXRhQ3JlYXRlZC5lbWl0KGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uU3ViamVjdElucHV0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKTtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2w/LnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAyMDApIHtcbiAgICAgIGNvbnRyb2w/LnNldFZhbHVlKHZhbHVlLnN1YnN0cmluZygwLCAyMDApKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdWJqZWN0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpO1xuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlLlFVRVJZX1NVQkpFQ1Q7XG4gICAgfVxuICAgIGlmIChjb250cm9sLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmFpc2VRdWVyeUVycm9yTWVzc2FnZS5RVUVSWV9TVUJKRUNUX01BWF9MRU5HVEg7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5ldmVudERhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXZlbnQgZGF0YSBub3QgYXZhaWxhYmxlOyBza2lwcGluZyBjb2xsZWN0aW9uIHNldHVwLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucXVlcnlNYW5hZ2VtZW50U2VydmljZS5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKFxuICAgICAgdGhpcy5ldmVudERhdGEsXG4gICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCxcbiAgICAgIHRoaXMuY2FzZURldGFpbHMsXG4gICAgICB0aGlzLm1lc3NnYWVJZFxuICAgICk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YShcbiAgICAgIHRoaXMuZm9ybUdyb3VwLFxuICAgICAgdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQsXG4gICAgICB0aGlzLnF1ZXJ5SXRlbSxcbiAgICAgIHRoaXMubWVzc2dhZUlkXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS02XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiPnt7ICdSYWlzZSBhIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPnt7ICdFbnRlciBxdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGNjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiICpuZ0lmPVwiY2FzZURldGFpbHNcIj48L2NjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPlxuICA8L2Rpdj5cblxuICA8aHI+XG5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCIgKm5nSWY9XCJzaG93Rm9ybVwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5XYXJuaW5nPC9zcGFuPlxuICAgICAgICAgICAgPGNjZC1tYXJrZG93blxuICAgICAgICAgICAgICBbY29udGVudF09XCJzZXJ2aWNlTWVzc2FnZSB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgPC9jY2QtbWFya2Rvd24+XG4gICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiBzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpLmhhc0Vycm9yKCdyZXF1aXJlZCcpfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1sYWJlbC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbSBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIiBmb3I9XCJzdWJqZWN0XCI+XG4gICAgICAgICAgICAgIHt7ICdRdWVyeSBzdWJqZWN0JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwic3ViamVjdC1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50XCI+XG4gICAgICAgICAgICB7eyAnVGhlIHN1YmplY3Qgc2hvdWxkIGJlIGEgc3VtbWFyeSBvZiB5b3VyIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGlkPVwic3ViamVjdC1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAoZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpLmhhc0Vycm9yKCdyZXF1aXJlZCcpIHx8IGZvcm1Hcm91cC5nZXQoJ3N1YmplY3QnKS5oYXNFcnJvcignbWF4bGVuZ3RoJykpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdFcnJvcjonIHwgcnB4VHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAge3sgZ2V0U3ViamVjdEVycm9yTWVzc2FnZSgpIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGlkPVwic3ViamVjdFwiXG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLWlucHV0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN1YmplY3RcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjAwXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvblN1YmplY3RJbnB1dCgpXCJcbiAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzdWJqZWN0LWVycm9yXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogc3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2JvZHknKS5oYXNFcnJvcigncmVxdWlyZWQnKX1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstbGFiZWwtLW0gZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgZm9yPVwiYm9keVwiPlxuICAgICAgICAgICAgICB7eyAnUXVlcnkgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwiYm9keS1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50XCI+XG4gICAgICAgICAgICB7eyAnSW5jbHVkZSBhcyBtYW55IGRldGFpbHMgYXMgcG9zc2libGUgc28gY2FzZSB3b3JrZXJzIGNhbiByZXNwb25kIHRvIHlvdXIgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgaWQ9XCJib2R5LWVycm9yXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnYm9keScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdFcnJvcjonIHwgcnB4VHJhbnNsYXRlIH19IDwvc3Bhbj57eyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlLlFVRVJZX0JPRFkgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJib2R5XCIgbmFtZT1cImJvZHlcIiByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJib2R5LWhpbnQgYm9keS1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZ292dWstdGV4dGFyZWEtLWVycm9yXT1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5JykuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1mb3JtLWdyb3VwLS1lcnJvcic6IHN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJykuaGFzRXJyb3IoJ3JlcXVpcmVkJyl9XCI+XG4gICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1tIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgIDxwIGlkPVwiaXNIZWFyaW5nUmVsYXRlZC1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eyAnRXJyb3I6JyB8IHJweFRyYW5zbGF0ZSB9fSA8L3NwYW4+e3sgcmFpc2VRdWVyeUVycm9yTWVzc2FnZS5RVUVSWV9IRUFSSU5HX1JFTEFURUQgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvcyBnb3Z1ay1yYWRpb3MtLWlubGluZVwiIGRhdGEtbW9kdWxlPVwiZ292dWstcmFkaW9zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImlzSGVhcmluZ1JlbGF0ZWQteWVzXCIgbmFtZT1cImlzSGVhcmluZ1JlbGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzSGVhcmluZ1JlbGF0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpLnZhbHVlID09PSB0cnVlXCIgW3ZhbHVlXT1cInRydWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJpc0hlYXJpbmdSZWxhdGVkLXllc1wiPlxuICAgICAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnWWVzJyB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImlzSGVhcmluZ1JlbGF0ZWQtbm9cIiBuYW1lPVwiaXNIZWFyaW5nUmVsYXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNIZWFyaW5nUmVsYXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJykudmFsdWUgPT09IGZhbHNlXCIgW3ZhbHVlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwiaXNIZWFyaW5nUmVsYXRlZC1ub1wiPlxuICAgICAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnTm8nIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpLnZhbHVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19fY29uZGl0aW9uYWwgZ292dWstIS1tYXJnaW4tdG9wLTFcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1mb3JtLWdyb3VwLS1lcnJvcic6IHN1Ym1pdHRlZCAmJlxuICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpLnZhbHVlID09PSB0cnVlICYmXG4gICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdoZWFyaW5nRGF0ZScpLnZhbHVlID09PSBudWxsfVwiPlxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxlZ2VuZD5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tc1wiPlxuICAgICAgICAgICAgICAgICAge3sgJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmc/JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwvbGVnZW5kPlxuICAgICAgICAgICAgICA8cCBpZD1cImhlYXJpbmdEYXRlLWVycm9yXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKS52YWx1ZSA9PT0gdHJ1ZSAmJiBmb3JtR3JvdXAuZ2V0KCdoZWFyaW5nRGF0ZScpLnZhbHVlID09PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eyAnRXJyb3I6JyB8IHJweFRyYW5zbGF0ZSB9fSA8L3NwYW4+e3sgcmFpc2VRdWVyeUVycm9yTWVzc2FnZS5RVUVSWV9IRUFSSU5HX0RBVEUgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8Y2NkLXF1ZXJ5LXdyaXRlLWRhdGUtaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaGVhcmluZ0RhdGVcIj48L2NjZC1xdWVyeS13cml0ZS1kYXRlLWlucHV0PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmFpc2UtcXVlcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvcXVlcnktbWFuYWdlbWVudC9jb21wb25lbnRzL3F1ZXJ5LXdyaXRlL3F1ZXJ5LXdyaXRlLXJhaXNlLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJhaXNlLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDVCxNQUFNLDJDQUEyQyxDQUFDO0FBRW5ELE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7SUNMN0MsbURBQStHOzs7SUFBaEYsZ0RBQTJC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Q0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGlDQUFpQztRQUN2QyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQ0FBaUMsQ0FDbEUsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO0lBQ0osQ0FBQzt1SEE1RVUsNkJBQTZCOzZEQUE3Qiw2QkFBNkI7WUNoQnRDLEFBREYsQUFERiwyQkFBSyxhQUNrQyxhQUNOO1lBQUEsWUFBb0M7O1lBQUEsaUJBQU07WUFDdkUsNkJBQW9EO1lBQUEsWUFBMEM7O1lBQ2hHLEFBRGdHLGlCQUFLLEVBQy9GO1lBRU4sMkJBQUs7WUFDSCxrSUFBK0U7WUFDakYsaUJBQU07WUFFTixzQkFBSTtZQUVKLGtGQUFzRDtZQVp4RCxpQkFBSzs7WUFFNEIsZUFBb0M7WUFBcEMsMkRBQW9DO1lBQ2IsZUFBMEM7WUFBMUMsaUVBQTBDO1lBSWxDLGVBQWlCO1lBQWpCLHNDQUFpQjtZQUt6QyxlQUFjO1lBQWQsbUNBQWM7OztpRkRNekMsNkJBQTZCO2NBSnpDLFNBQVM7MkJBQ0UsNkJBQTZCO29GQUl2QixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsY0FBYztrQkFBN0IsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUVXLGdCQUFnQjtrQkFBaEMsTUFBTTs7a0ZBWkksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmFpc2VRdWVyeUVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7XG4gIENhc2VFdmVudERhdGEsXG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VWaWV3XG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRXZlbnRDb21wbGV0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY2FzZS1lZGl0b3IvZG9tYWluL2V2ZW50LWNvbXBsZXRpb24tcGFyYW1zLm1vZGVsJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS13cml0ZS1yYWlzZS1xdWVyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS13cml0ZS1yYWlzZS1xdWVyeS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlXcml0ZVJhaXNlUXVlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93Rm9ybTogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VNZXNzYWdlOiBzdHJpbmcgfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0OiBRdWVyeUNyZWF0ZUNvbnRleHQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHZhbGlkYXRlOiAoY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSwgcGFnZUlkOiBzdHJpbmcpID0+IE9ic2VydmFibGU8b2JqZWN0PjtcbiAgQElucHV0KCkgcHVibGljIHRyaWdnZXJTdWJtaXNzaW9uOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcXVlcnlEYXRhQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIgPFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uPigpO1xuXG4gIHB1YmxpYyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlID0gUmFpc2VRdWVyeUVycm9yTWVzc2FnZTtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgbWVzc2FnZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBxdWVyeU1hbmFnZW1lbnRTZXJ2aWNlOiBRdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMubWVzc2FnZUlkPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG4gICAgY29uc3QgaXNDb2xsZWN0aW9uRGF0YVNldCA9IHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgIGlmIChpc0NvbGxlY3Rpb25EYXRhU2V0KSB7XG4gICAgICBpZiAodGhpcy50cmlnZ2VyU3VibWlzc2lvbikge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgICAgICAgdGhpcy5xdWVyeURhdGFDcmVhdGVkLmVtaXQoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TdWJqZWN0SW5wdXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpO1xuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbD8udmFsdWU7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDIwMCkge1xuICAgICAgY29udHJvbD8uc2V0VmFsdWUodmFsdWUuc3Vic3RyaW5nKDAsIDIwMCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN1YmplY3RFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzdWJqZWN0Jyk7XG4gICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhaXNlUXVlcnlFcnJvck1lc3NhZ2UuUVVFUllfU1VCSkVDVDtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlLlFVRVJZX1NVQkpFQ1RfTUFYX0xFTkdUSDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmV2ZW50RGF0YSkge1xuICAgICAgY29uc29sZS53YXJuKCdFdmVudCBkYXRhIG5vdCBhdmFpbGFibGU7IHNraXBwaW5nIGNvbGxlY3Rpb24gc2V0dXAuJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5xdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLnNldENhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoXG4gICAgICB0aGlzLmV2ZW50RGF0YSxcbiAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0LFxuICAgICAgdGhpcy5jYXNlRGV0YWlscyxcbiAgICAgIHRoaXMubWVzc2FnZUlkXG4gICAgKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UuZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKFxuICAgICAgdGhpcy5mb3JtR3JvdXAsXG4gICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCxcbiAgICAgIHRoaXMucXVlcnlJdGVtLFxuICAgICAgdGhpcy5tZXNzYWdlSWRcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgJ1JhaXNlIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+e3sgJ0VudGVyIHF1ZXJ5IGRldGFpbHMnIHwgcnB4VHJhbnNsYXRlIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPGRpdj5cbiAgICA8Y2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXIgW2Nhc2VEZXRhaWxzXT1cImNhc2VEZXRhaWxzXCIgKm5nSWY9XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gIDwvZGl2PlxuXG4gIDxocj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIiAqbmdJZj1cInNob3dGb3JtXCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+ITwvc3Bhbj5cbiAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPldhcm5pbmc8L3NwYW4+XG4gICAgICAgICAgICA8Y2NkLW1hcmtkb3duXG4gICAgICAgICAgICAgIFtjb250ZW50XT1cInNlcnZpY2VNZXNzYWdlIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8L2NjZC1tYXJrZG93bj5cbiAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydnb3Z1ay1mb3JtLWdyb3VwLS1lcnJvcic6IHN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdzdWJqZWN0JykuaGFzRXJyb3IoJ3JlcXVpcmVkJyl9XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1tIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiIGZvcj1cInN1YmplY3RcIj5cbiAgICAgICAgICAgICAge3sgJ1F1ZXJ5IHN1YmplY3QnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJzdWJqZWN0LWhpbnRcIiBjbGFzcz1cImdvdnVrLWhpbnRcIj5cbiAgICAgICAgICAgIHt7ICdUaGUgc3ViamVjdCBzaG91bGQgYmUgYSBzdW1tYXJ5IG9mIHlvdXIgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgaWQ9XCJzdWJqZWN0LWVycm9yXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIChmb3JtR3JvdXAuZ2V0KCdzdWJqZWN0JykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSlcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Vycm9yOicgfCBycHhUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICB7eyBnZXRTdWJqZWN0RXJyb3JNZXNzYWdlKCkgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgaWQ9XCJzdWJqZWN0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdFwiXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCIyMDBcIlxuICAgICAgICAgICAgKGlucHV0KT1cIm9uU3ViamVjdElucHV0KClcIlxuICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cInN1YmplY3QtZXJyb3JcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiBzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnYm9keScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1sYWJlbC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbSBnb3Z1ay0hLWZvbnQtd2VpZ2h0LWJvbGRcIiBmb3I9XCJib2R5XCI+XG4gICAgICAgICAgICAgIHt7ICdRdWVyeSBkZXRhaWwnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJib2R5LWhpbnRcIiBjbGFzcz1cImdvdnVrLWhpbnRcIj5cbiAgICAgICAgICAgIHt7ICdJbmNsdWRlIGFzIG1hbnkgZGV0YWlscyBhcyBwb3NzaWJsZSBzbyBjYXNlIHdvcmtlcnMgY2FuIHJlc3BvbmQgdG8geW91ciBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBpZD1cImJvZHktZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5JykuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Vycm9yOicgfCBycHhUcmFuc2xhdGUgfX0gPC9zcGFuPnt7IHJhaXNlUXVlcnlFcnJvck1lc3NhZ2UuUVVFUllfQk9EWSB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8dGV4dGFyZWEgW2Zvcm1Db250cm9sTmFtZV09XCInYm9keSdcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImJvZHlcIiBuYW1lPVwiYm9keVwiIHJvd3M9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImJvZHktaGludCBib2R5LWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5nb3Z1ay10ZXh0YXJlYS0tZXJyb3JdPVwic3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2JvZHknKS5oYXNFcnJvcigncmVxdWlyZWQnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogc3VibWl0dGVkICYmIGZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKS5oYXNFcnJvcigncmVxdWlyZWQnKX1cIj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIj5cbiAgICAgICAgICA8bGVnZW5kPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstbGFiZWwtLW0gZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+XG4gICAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPHAgaWQ9XCJpc0hlYXJpbmdSZWxhdGVkLWVycm9yXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdFcnJvcjonIHwgcnB4VHJhbnNsYXRlIH19IDwvc3Bhbj57eyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlLlFVRVJZX0hFQVJJTkdfUkVMQVRFRCB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0taW5saW5lXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiaXNIZWFyaW5nUmVsYXRlZC15ZXNcIiBuYW1lPVwiaXNIZWFyaW5nUmVsYXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaXNIZWFyaW5nUmVsYXRlZFwiXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJykudmFsdWUgPT09IHRydWVcIiBbdmFsdWVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cImlzSGVhcmluZ1JlbGF0ZWQteWVzXCI+XG4gICAgICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdZZXMnIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIGlkPVwiaXNIZWFyaW5nUmVsYXRlZC1ub1wiIG5hbWU9XCJpc0hlYXJpbmdSZWxhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpc0hlYXJpbmdSZWxhdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKS52YWx1ZSA9PT0gZmFsc2VcIiBbdmFsdWVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJpc0hlYXJpbmdSZWxhdGVkLW5vXCI+XG4gICAgICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdObycgfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJykudmFsdWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbCBnb3Z1ay0hLW1hcmdpbi10b3AtMVwiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogc3VibWl0dGVkICYmXG4gICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJykudmFsdWUgPT09IHRydWUgJiZcbiAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJykudmFsdWUgPT09IG51bGx9XCI+XG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgICAgICAgICA8bGVnZW5kPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1zXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICAgIDxwIGlkPVwiaGVhcmluZ0RhdGUtZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnaXNIZWFyaW5nUmVsYXRlZCcpLnZhbHVlID09PSB0cnVlICYmIGZvcm1Hcm91cC5nZXQoJ2hlYXJpbmdEYXRlJykudmFsdWUgPT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdFcnJvcjonIHwgcnB4VHJhbnNsYXRlIH19IDwvc3Bhbj57eyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlLlFVRVJZX0hFQVJJTkdfREFURSB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxjY2QtcXVlcnktd3JpdGUtZGF0ZS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJoZWFyaW5nRGF0ZVwiPjwvY2NkLXF1ZXJ5LXdyaXRlLWRhdGUtaW5wdXQ+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -110,7 +110,7 @@ export class QueryWriteRespondToQueryComponent {
110
110
  queryResponseStatus;
111
111
  queryListData;
112
112
  hasRespondedToQuery = false;
113
- messgaeId;
113
+ messageId;
114
114
  static QUERY_ITEM_RESPOND = '3';
115
115
  static QUERY_ITEM_FOLLOWUP = '4';
116
116
  constructor(caseNotifier, route, queryManagementService) {
@@ -139,19 +139,19 @@ export class QueryWriteRespondToQueryComponent {
139
139
  console.error('caseQueriesCollections[0] is undefined!', this.caseQueriesCollections);
140
140
  return;
141
141
  }
142
- const messageId = this.route.snapshot.params?.dataid;
143
- if (!messageId) {
142
+ this.messageId = this.route.snapshot.params?.dataid;
143
+ if (!this.messageId) {
144
144
  console.warn('No messageId found in route params:', this.route.snapshot.params);
145
145
  return;
146
146
  }
147
147
  const allMessages = this.caseQueriesCollections
148
148
  .flatMap((caseData) => caseData?.caseMessages || []);
149
- const matchingMessage = allMessages.find((message) => message?.value?.id === messageId)?.value;
149
+ const matchingMessage = allMessages.find((message) => message?.value?.id === this.messageId)?.value;
150
150
  if (!matchingMessage) {
151
- console.warn('No matching message found for ID:', messageId);
151
+ console.warn('No matching message found for ID:', this.messageId);
152
152
  return;
153
153
  }
154
- const caseQueriesCollections = this.caseQueriesCollections.find((collection) => collection?.caseMessages.find((c) => c.value.id === messageId));
154
+ const caseQueriesCollections = this.caseQueriesCollections.find((collection) => collection?.caseMessages.find((c) => c.value.id === this.messageId));
155
155
  const queryWithChildren = new QueryListData(caseQueriesCollections);
156
156
  const targetId = this.queryItemId === QueryWriteRespondToQueryComponent.QUERY_ITEM_RESPOND
157
157
  ? (matchingMessage?.parentId || matchingMessage?.id)
@@ -175,11 +175,11 @@ export class QueryWriteRespondToQueryComponent {
175
175
  console.warn('Event data not available; skipping collection setup.');
176
176
  return false;
177
177
  }
178
- this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messgaeId);
178
+ this.queryManagementService.setCaseQueriesCollectionData(this.eventData, this.queryCreateContext, this.caseDetails, this.messageId);
179
179
  return true;
180
180
  }
181
181
  generateCaseQueriesCollectionData() {
182
- return this.queryManagementService.generateCaseQueriesCollectionData(this.formGroup, this.queryCreateContext, this.queryItem, this.messgaeId);
182
+ return this.queryManagementService.generateCaseQueriesCollectionData(this.formGroup, this.queryCreateContext, this.queryItem, this.messageId);
183
183
  }
184
184
  static ɵfac = function QueryWriteRespondToQueryComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || QueryWriteRespondToQueryComponent)(i0.ɵɵdirectiveInject(i1.CaseNotifier), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i3.QueryManagementService)); };
185
185
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: QueryWriteRespondToQueryComponent, selectors: [["ccd-query-write-respond-to-query"]], inputs: { queryItem: "queryItem", formGroup: "formGroup", queryCreateContext: "queryCreateContext", submitted: "submitted", caseQueriesCollections: "caseQueriesCollections", showForm: "showForm", triggerSubmission: "triggerSubmission", eventData: "eventData" }, outputs: { queryDataCreated: "queryDataCreated", hasRespondedToQueryTask: "hasRespondedToQueryTask" }, features: [i0.ɵɵNgOnChangesFeature], decls: 14, vars: 11, consts: [[1, "govuk-!-margin-bottom-6"], [1, "govuk-caption-l"], [1, "govuk-heading-l", "govuk-!-margin-bottom-0"], [1, "govuk-!-margin-bottom-4"], [3, "caseDetails", 4, "ngIf"], [3, "hasResponded", "query", "queryResponseStatus"], ["class", "query-respond", 4, "ngIf"], [4, "ngIf"], [3, "caseDetails"], [1, "query-respond"], [1, "govuk-heading-m"], [3, "formGroup"], [1, "govuk-form-group", "body-textarea"], [1, "govuk-label-wrapper"], ["for", "body", 1, "govuk-label", "govuk-label--m", "govuk-!-font-weight-bold"], ["id", "body-error", "class", "govuk-error-message", 4, "ngIf"], ["id", "body", "name", "body", "rows", "5", "aria-describedby", "body-hint body-error", 1, "govuk-textarea", 3, "formControlName"], ["id", "body-error", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [3, "formGroup", 4, "ngIf"]], template: function QueryWriteRespondToQueryComponent_Template(rf, ctx) { if (rf & 1) {
@@ -238,4 +238,4 @@ export class QueryWriteRespondToQueryComponent {
238
238
  type: Output
239
239
  }] }); })();
240
240
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryWriteRespondToQueryComponent, { className: "QueryWriteRespondToQueryComponent", filePath: "lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.ts", lineNumber: 18 }); })();
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktd3JpdGUvcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWtELGtCQUFrQixFQUFFLGFB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QXVCLGdEQUNHO1lBSXJCLGNBQWM7WUFBZCxtQ0FBYztZQTJCM0IsY0FBMkQ7WUFBM0Qsb0ZBQTJEOzs7aUZEMUI3RCxpQ0FBaUM7Y0FON0MsU0FBUzsyQkFDRSxrQ0FBa0M7K0dBTTVCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLHNCQUFzQjtrQkFBckMsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxpQkFBaUI7a0JBQWhDLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBRVcsZ0JBQWdCO2tCQUFoQyxNQUFNO1lBQ1UsdUJBQXVCO2tCQUF2QyxNQUFNOztrRkFYSSxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRUcmlnZ2VyXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zaGFyZWQvZG9tYWluJztcbmltcG9ydCB7IENhc2VOb3RpZmllciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzJztcbmltcG9ydCB7IFJhaXNlUXVlcnlFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBDYXNlUXVlcmllc0NvbGxlY3Rpb24sIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRdWVyeUNyZWF0ZUNvbnRleHQsIFF1ZXJ5TGlzdERhdGEsIFF1ZXJ5TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgUXVlcnlNYW5hZ2VtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUl0ZW06IFF1ZXJ5TGlzdEl0ZW07XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlUXVlcmllc0NvbGxlY3Rpb25zOiBDYXNlUXVlcmllc0NvbGxlY3Rpb25bXTtcbiAgQElucHV0KCkgcHVibGljIHNob3dGb3JtO1xuICBASW5wdXQoKSBwdWJsaWMgdHJpZ2dlclN1Ym1pc3Npb246IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBldmVudERhdGE6IENhc2VFdmVudFRyaWdnZXIgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCkgcHVibGljIHF1ZXJ5RGF0YUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyIDxRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBoYXNSZXNwb25kZWRUb1F1ZXJ5VGFzazogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtID0gUXVlcnlDcmVhdGVDb250ZXh0O1xuICBwdWJsaWMgcmVhZG9ubHkgcmFpc2VRdWVyeUVycm9yTWVzc2FnZXMgPSBSYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlO1xuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBxdWVyeUl0ZW1JZDogc3RyaW5nO1xuICBwdWJsaWMgY2FzZURldGFpbHM7XG4gIHB1YmxpYyBxdWVyeVJlc3BvbnNlU3RhdHVzOiBzdHJpbmc7XG4gIHB1YmxpYyBxdWVyeUxpc3REYXRhOiBRdWVyeUxpc3RJdGVtIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoYXNSZXNwb25kZWRUb1F1ZXJ5OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBtZXNzZ2FlSWQ6IHN0cmluZztcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX1JFU1BPTkQgPSAnMyc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFFVRVJZX0lURU1fRk9MTE9XVVAgPSAnNCc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHF1ZXJ5TWFuYWdlbWVudFNlcnZpY2U6IFF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UpIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlJdGVtSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5xaWQ7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5jaWQ7XG4gICAgdGhpcy5jYXNlTm90aWZpZXIuZmV0Y2hBbmRSZWZyZXNoKHRoaXMuY2FzZUlkKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoY2FzZURldGFpbHMpID0+IHtcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscyA9IGNhc2VEZXRhaWxzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJldHJpZXZpbmcgY2FzZSBkZXRhaWxzOicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgfHwgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIFNpbGVudCByZXR1cm4g4oCTIHRoaXMgaXMgbm90IGFuIGVycm9yLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zWzBdKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdjYXNlUXVlcmllc0NvbGxlY3Rpb25zWzBdIGlzIHVuZGVmaW5lZCEnLCB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zPy5kYXRhaWQ7XG4gICAgaWYgKCFtZXNzYWdlSWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gbWVzc2FnZUlkIGZvdW5kIGluIHJvdXRlIHBhcmFtczonLCB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTWVzc2FnZXMgPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnNcbiAgICAgIC5mbGF0TWFwKChjYXNlRGF0YSkgPT4gY2FzZURhdGE/LmNhc2VNZXNzYWdlcyB8fCBbXSk7XG5cbiAgICBjb25zdCBtYXRjaGluZ01lc3NhZ2UgPSBhbGxNZXNzYWdlcy5maW5kKFxuICAgICAgKG1lc3NhZ2UpID0+IG1lc3NhZ2U/LnZhbHVlPy5pZCA9PT0gbWVzc2FnZUlkXG4gICAgKT8udmFsdWU7XG5cbiAgICBpZiAoIW1hdGNoaW5nTWVzc2FnZSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBtYXRjaGluZyBtZXNzYWdlIGZvdW5kIGZvciBJRDonLCBtZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmluZChcbiAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uPy5jYXNlTWVzc2FnZXMuZmluZCgoYykgPT4gYy52YWx1ZS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICk7XG5cbiAgICBjb25zdCBxdWVyeVdpdGhDaGlsZHJlbiA9IG5ldyBRdWVyeUxpc3REYXRhKGNhc2VRdWVyaWVzQ29sbGVjdGlvbnMpO1xuICAgIGNvbnN0IHRhcmdldElkID0gdGhpcy5xdWVyeUl0ZW1JZCA9PT0gUXVlcnlXcml0ZVJlc3BvbmRUb1F1ZXJ5Q29tcG9uZW50LlFVRVJZX0lURU1fUkVTUE9ORFxuICAgICAgPyAobWF0Y2hpbmdNZXNzYWdlPy5wYXJlbnRJZCB8fCBtYXRjaGluZ01lc3NhZ2U/LmlkKVxuICAgICAgOiBtYXRjaGluZ01lc3NhZ2U/LmlkO1xuXG4gICAgdGhpcy5xdWVyeUxpc3REYXRhID0gcXVlcnlXaXRoQ2hpbGRyZW4/LnF1ZXJpZXMuZmluZCgocXVlcnkpID0+IHF1ZXJ5Py5pZCA9PT0gdGFyZ2V0SWQpO1xuICAgIHRoaXMucXVlcnlSZXNwb25zZVN0YXR1cyA9IHRoaXMucXVlcnlMaXN0RGF0YT8ucmVzcG9uc2VTdGF0dXM7XG4gICAgY29uc3QgaXNDb2xsZWN0aW9uRGF0YVNldCA9IHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgIGlmIChpc0NvbGxlY3Rpb25EYXRhU2V0KSB7XG4gICAgICBpZiAodGhpcy50cmlnZ2VyU3VibWlzc2lvbikge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTtcbiAgICAgICAgdGhpcy5xdWVyeURhdGFDcmVhdGVkLmVtaXQoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1Jlc3BvbmRlZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaGFzUmVzcG9uZGVkVG9RdWVyeSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzUmVzcG9uZGVkVG9RdWVyeVRhc2suZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZXZlbnREYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0V2ZW50IGRhdGEgbm90IGF2YWlsYWJsZTsgc2tpcHBpbmcgY29sbGVjdGlvbiBzZXR1cC4nKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXJ5TWFuYWdlbWVudFNlcnZpY2Uuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YShcbiAgICAgIHRoaXMuZXZlbnREYXRhLFxuICAgICAgdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQsXG4gICAgICB0aGlzLmNhc2VEZXRhaWxzLFxuICAgICAgdGhpcy5tZXNzZ2FlSWRcbiAgICApO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VtZW50U2VydmljZS5nZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoXG4gICAgICB0aGlzLmZvcm1Hcm91cCxcbiAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0LFxuICAgICAgdGhpcy5xdWVyeUl0ZW0sXG4gICAgICB0aGlzLm1lc3NnYWVJZFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNlwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgJ1Jlc3BvbmQgdG8gYSBxdWVyeScgfCBycHhUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWwgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj57eyAnUXVlcnkgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIj5cbiAgICA8Y2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXIgW2Nhc2VEZXRhaWxzXT1cImNhc2VEZXRhaWxzXCIgKm5nSWY9XCJjYXNlRGV0YWlsc1wiPjwvY2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXY+XG4gICAgPGNjZC1xdWVyeS1kZXRhaWxzIFtxdWVyeV09XCJxdWVyeUxpc3REYXRhXCJcbiAgICAgIFtxdWVyeVJlc3BvbnNlU3RhdHVzXT1cInF1ZXJ5UmVzcG9uc2VTdGF0dXNcIlxuICAgICAgKGhhc1Jlc3BvbmRlZCk9XCJoYXNSZXNwb25kZWQoJGV2ZW50KVwiPjwvY2NkLXF1ZXJ5LWRldGFpbHM+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicXVlcnktcmVzcG9uZFwiICpuZ0lmPVwic2hvd0Zvcm1cIj5cbiAgPGRpdiAqbmdJZj1cIiFoYXNSZXNwb25kZWRUb1F1ZXJ5XCI+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1tXCI+XG4gICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdSZXNwb25kIHRvIGEgcXVlcnknIDogJ0FzayBhIGZvbGxvdy11cCBxdWVzdGlvbicgfCBycHhUcmFuc2xhdGUgfX1cbiAgICA8L2gxPlxuXG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXAgYm9keS10ZXh0YXJlYVwiXG4gICAgICAgICAgIFtjbGFzcy5nb3Z1ay1mb3JtLWdyb3VwLS1lcnJvcl09XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnYm9keScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstbGFiZWwtd3JhcHBlclwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1tIGdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiIGZvcj1cImJvZHlcIj5cbiAgICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1Jlc3BvbnNlIGRldGFpbCcgOiAnUXVlcnkgQm9keScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgaWQ9XCJib2R5LWVycm9yXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnYm9keScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Vycm9yOicgfCBycHhUcmFuc2xhdGUgfX0gPC9zcGFuPnt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gcmFpc2VRdWVyeUVycm9yTWVzc2FnZXMuUkVTUE9ORF9RVUVSWV9CT0RZIDogcmFpc2VRdWVyeUVycm9yTWVzc2FnZXMuUVVFUllfQk9EWSB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDx0ZXh0YXJlYSBbZm9ybUNvbnRyb2xOYW1lXT1cIidib2R5J1wiIGNsYXNzPVwiZ292dWstdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmdvdnVrLXRleHRhcmVhLS1lcnJvcl09XCJzdWJtaXR0ZWQgJiYgZm9ybUdyb3VwLmdldCgnYm9keScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiIGlkPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiYm9keVwiIHJvd3M9XCI1XCIgYXJpYS1kZXNjcmliZWRieT1cImJvZHktaGludCBib2R5LWVycm9yXCI+XG4gICAgICA8L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORFwiPlxuICA8Y2NkLWNsb3NlLXF1ZXJ5ICpuZ0lmPVwiIWhhc1Jlc3BvbmRlZFRvUXVlcnlcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDwvY2NkLWNsb3NlLXF1ZXJ5PlxuPC9uZy1jb250YWluZXI+Il19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvcXVlcnktd3JpdGUvcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS13cml0ZS9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5L3F1ZXJ5LXdyaXRlLXJlc3BvbmQtdG8tcXVlcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNqQixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWtELGtCQUFrQixFQUFFLGFB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ZUFBaUI7WUFBakIsc0NBQWlCO1lBSTFELGVBQXVCO1lBQ3hDLEFBRGlCLHlDQUF1QixnREFDRztZQUlyQixjQUFjO1lBQWQsbUNBQWM7WUEyQjNCLGNBQTJEO1lBQTNELG9GQUEyRDs7O2lGRDFCN0QsaUNBQWlDO2NBTjdDLFNBQVM7MkJBQ0Usa0NBQWtDOytHQU01QixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxzQkFBc0I7a0JBQXJDLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsaUJBQWlCO2tCQUFoQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUVXLGdCQUFnQjtrQkFBaEMsTUFBTTtZQUNVLHVCQUF1QjtrQkFBdkMsTUFBTTs7a0ZBWEksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ2FzZUV2ZW50VHJpZ2dlclxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlTm90aWZpZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uLCBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUXVlcnlDcmVhdGVDb250ZXh0LCBRdWVyeUxpc3REYXRhLCBRdWVyeUxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFF1ZXJ5TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS13cml0ZS1yZXNwb25kLXRvLXF1ZXJ5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVlcnktd3JpdGUtcmVzcG9uZC10by1xdWVyeS5jb21wb25lbnQuc2NzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgUXVlcnlXcml0ZVJlc3BvbmRUb1F1ZXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgcXVlcnlJdGVtOiBRdWVyeUxpc3RJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBxdWVyeUNyZWF0ZUNvbnRleHQ6IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93Rm9ybTtcbiAgQElucHV0KCkgcHVibGljIHRyaWdnZXJTdWJtaXNzaW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgZXZlbnREYXRhOiBDYXNlRXZlbnRUcmlnZ2VyIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBxdWVyeURhdGFDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlciA8UW1DYXNlUXVlcmllc0NvbGxlY3Rpb24+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaGFzUmVzcG9uZGVkVG9RdWVyeVRhc2s6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIHJlYWRvbmx5IHJhaXNlUXVlcnlFcnJvck1lc3NhZ2VzID0gUmFpc2VRdWVyeUVycm9yTWVzc2FnZTtcbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgcXVlcnlJdGVtSWQ6IHN0cmluZztcbiAgcHVibGljIGNhc2VEZXRhaWxzO1xuICBwdWJsaWMgcXVlcnlSZXNwb25zZVN0YXR1czogc3RyaW5nO1xuICBwdWJsaWMgcXVlcnlMaXN0RGF0YTogUXVlcnlMaXN0SXRlbSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaGFzUmVzcG9uZGVkVG9RdWVyeTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgbWVzc2FnZUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUVVFUllfSVRFTV9SRVNQT05EID0gJzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBRVUVSWV9JVEVNX0ZPTExPV1VQID0gJzQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBxdWVyeU1hbmFnZW1lbnRTZXJ2aWNlOiBRdWVyeU1hbmFnZW1lbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5SXRlbUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMuY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMuY2lkO1xuICAgIHRoaXMuY2FzZU5vdGlmaWVyLmZldGNoQW5kUmVmcmVzaCh0aGlzLmNhc2VJZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMgPSBjYXNlRGV0YWlscztcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXRyaWV2aW5nIGNhc2UgZGV0YWlsczonLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zIHx8IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBTaWxlbnQgcmV0dXJuIOKAkyB0aGlzIGlzIG5vdCBhbiBlcnJvci5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1swXSkge1xuICAgICAgY29uc29sZS5lcnJvcignY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1swXSBpcyB1bmRlZmluZWQhJywgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zPy5kYXRhaWQ7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2VJZCkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBtZXNzYWdlSWQgZm91bmQgaW4gcm91dGUgcGFyYW1zOicsIHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxNZXNzYWdlcyA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9uc1xuICAgICAgLmZsYXRNYXAoKGNhc2VEYXRhKSA9PiBjYXNlRGF0YT8uY2FzZU1lc3NhZ2VzIHx8IFtdKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nTWVzc2FnZSA9IGFsbE1lc3NhZ2VzLmZpbmQoXG4gICAgICAobWVzc2FnZSkgPT4gbWVzc2FnZT8udmFsdWU/LmlkID09PSB0aGlzLm1lc3NhZ2VJZFxuICAgICk/LnZhbHVlO1xuXG4gICAgaWYgKCFtYXRjaGluZ01lc3NhZ2UpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gbWF0Y2hpbmcgbWVzc2FnZSBmb3VuZCBmb3IgSUQ6JywgdGhpcy5tZXNzYWdlSWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmluZChcbiAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uPy5jYXNlTWVzc2FnZXMuZmluZCgoYykgPT4gYy52YWx1ZS5pZCA9PT0gdGhpcy5tZXNzYWdlSWQpXG4gICAgKTtcblxuICAgIGNvbnN0IHF1ZXJ5V2l0aENoaWxkcmVuID0gbmV3IFF1ZXJ5TGlzdERhdGEoY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyk7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSB0aGlzLnF1ZXJ5SXRlbUlkID09PSBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQuUVVFUllfSVRFTV9SRVNQT05EXG4gICAgICA/IChtYXRjaGluZ01lc3NhZ2U/LnBhcmVudElkIHx8IG1hdGNoaW5nTWVzc2FnZT8uaWQpXG4gICAgICA6IG1hdGNoaW5nTWVzc2FnZT8uaWQ7XG5cbiAgICB0aGlzLnF1ZXJ5TGlzdERhdGEgPSBxdWVyeVdpdGhDaGlsZHJlbj8ucXVlcmllcy5maW5kKChxdWVyeSkgPT4gcXVlcnk/LmlkID09PSB0YXJnZXRJZCk7XG4gICAgdGhpcy5xdWVyeVJlc3BvbnNlU3RhdHVzID0gdGhpcy5xdWVyeUxpc3REYXRhPy5yZXNwb25zZVN0YXR1cztcbiAgICBjb25zdCBpc0NvbGxlY3Rpb25EYXRhU2V0ID0gdGhpcy5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG4gICAgaWYgKGlzQ29sbGVjdGlvbkRhdGFTZXQpIHtcbiAgICAgIGlmICh0aGlzLnRyaWdnZXJTdWJtaXNzaW9uKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuICAgICAgICB0aGlzLnF1ZXJ5RGF0YUNyZWF0ZWQuZW1pdChkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzUmVzcG9uZGVkKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5oYXNSZXNwb25kZWRUb1F1ZXJ5ID0gdmFsdWU7XG4gICAgdGhpcy5oYXNSZXNwb25kZWRUb1F1ZXJ5VGFzay5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5ldmVudERhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXZlbnQgZGF0YSBub3QgYXZhaWxhYmxlOyBza2lwcGluZyBjb2xsZWN0aW9uIHNldHVwLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMucXVlcnlNYW5hZ2VtZW50U2VydmljZS5zZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKFxuICAgICAgdGhpcy5ldmVudERhdGEsXG4gICAgICB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCxcbiAgICAgIHRoaXMuY2FzZURldGFpbHMsXG4gICAgICB0aGlzLm1lc3NhZ2VJZFxuICAgICk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU1hbmFnZW1lbnRTZXJ2aWNlLmdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YShcbiAgICAgIHRoaXMuZm9ybUdyb3VwLFxuICAgICAgdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQsXG4gICAgICB0aGlzLnF1ZXJ5SXRlbSxcbiAgICAgIHRoaXMubWVzc2FnZUlkXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS02XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNlwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jYXB0aW9uLWxcIj57eyAnUmVzcG9uZCB0byBhIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPnt7ICdRdWVyeSBkZXRhaWxzJyB8IHJweFRyYW5zbGF0ZSB9fTwvaDE+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgIDxjY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIiAqbmdJZj1cImNhc2VEZXRhaWxzXCI+PC9jY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlcj5cbiAgPC9kaXY+XG5cbiAgPGRpdj5cbiAgICA8Y2NkLXF1ZXJ5LWRldGFpbHMgW3F1ZXJ5XT1cInF1ZXJ5TGlzdERhdGFcIlxuICAgICAgW3F1ZXJ5UmVzcG9uc2VTdGF0dXNdPVwicXVlcnlSZXNwb25zZVN0YXR1c1wiXG4gICAgICAoaGFzUmVzcG9uZGVkKT1cImhhc1Jlc3BvbmRlZCgkZXZlbnQpXCI+PC9jY2QtcXVlcnktZGV0YWlscz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJxdWVyeS1yZXNwb25kXCIgKm5nSWY9XCJzaG93Rm9ybVwiPlxuICA8ZGl2ICpuZ0lmPVwiIWhhc1Jlc3BvbmRlZFRvUXVlcnlcIj5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj5cbiAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1Jlc3BvbmQgdG8gYSBxdWVyeScgOiAnQXNrIGEgZm9sbG93LXVwIHF1ZXN0aW9uJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgIDwvaDE+XG5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cCBib2R5LXRleHRhcmVhXCJcbiAgICAgICAgICAgW2NsYXNzLmdvdnVrLWZvcm0tZ3JvdXAtLWVycm9yXT1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1sYWJlbC13cmFwcGVyXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstbGFiZWwtLW0gZ292dWstIS1mb250LXdlaWdodC1ib2xkXCIgZm9yPVwiYm9keVwiPlxuICAgICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uc2UgZGV0YWlsJyA6ICdRdWVyeSBCb2R5JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBpZD1cImJvZHktZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIlxuICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eyAnRXJyb3I6JyB8IHJweFRyYW5zbGF0ZSB9fSA8L3NwYW4+e3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcy5SRVNQT05EX1FVRVJZX0JPRFkgOiByYWlzZVF1ZXJ5RXJyb3JNZXNzYWdlcy5RVUVSWV9CT0RZIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHRleHRhcmVhIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2JvZHknXCIgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZ292dWstdGV4dGFyZWEtLWVycm9yXT1cInN1Ym1pdHRlZCAmJiBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgaWQ9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJib2R5XCIgcm93cz1cIjVcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiYm9keS1oaW50IGJvZHktZXJyb3JcIj5cbiAgICAgIDwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EXCI+XG4gIDxjY2QtY2xvc2UtcXVlcnkgKm5nSWY9XCIhaGFzUmVzcG9uZGVkVG9RdWVyeVwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPC9jY2QtY2xvc2UtcXVlcnk+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1xdWVyaWVzLWNvbGxlY3Rpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L21vZGVscy9jYXNlLXF1ZXJpZXMtY29sbGVjdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybURvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU1lc3NhZ2VEb2N1bWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBGb3JtRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FzZU1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBzdWJqZWN0Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgYXR0YWNobWVudHM/OiBRdWVyeU1lc3NhZ2VEb2N1bWVudFtdO1xuICBpc0hlYXJpbmdSZWxhdGVkOiBzdHJpbmc7XG4gIGhlYXJpbmdEYXRlPzogc3RyaW5nO1xuICBjcmVhdGVkT246IERhdGU7XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBwYXJlbnRJZD86IHN0cmluZztcbiAgaXNDbG9zZWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlNZXNzYWdlIHtcbiAgaWQ6IHN0cmluZztcbiAgdmFsdWU6IENhc2VNZXNzYWdlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gIHBhcnR5TmFtZTogc3RyaW5nO1xuICByb2xlT25DYXNlOiBzdHJpbmc7XG4gIGNhc2VNZXNzYWdlczogUXVlcnlNZXNzYWdlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBDYXNlUXVlcmllc0NvbGxlY3Rpb247IC8vIEFsbG93cyBkeW5hbWljIGtleSBuYW1lczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uXG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1xdWVyaWVzLWNvbGxlY3Rpb24ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9xdWVyeS1tYW5hZ2VtZW50L21vZGVscy9jYXNlLXF1ZXJpZXMtY29sbGVjdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybURvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU1lc3NhZ2VEb2N1bWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBGb3JtRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FzZU1lc3NhZ2Uge1xuICBpZDogc3RyaW5nO1xuICBzdWJqZWN0Pzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgYXR0YWNobWVudHM/OiBRdWVyeU1lc3NhZ2VEb2N1bWVudFtdO1xuICBpc0hlYXJpbmdSZWxhdGVkOiBzdHJpbmc7XG4gIGhlYXJpbmdEYXRlPzogc3RyaW5nO1xuICBjcmVhdGVkT246IERhdGU7XG4gIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBwYXJlbnRJZD86IHN0cmluZztcbiAgaXNDbG9zZWQ/OiBzdHJpbmc7XG4gIG1lc3NhZ2VUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5TWVzc2FnZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBDYXNlTWVzc2FnZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXNlUXVlcmllc0NvbGxlY3Rpb24ge1xuICBwYXJ0eU5hbWU6IHN0cmluZztcbiAgcm9sZU9uQ2FzZTogc3RyaW5nO1xuICBjYXNlTWVzc2FnZXM6IFF1ZXJ5TWVzc2FnZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uOyAvLyBBbGxvd3MgZHluYW1pYyBrZXkgbmFtZXM6IENhc2VRdWVyaWVzQ29sbGVjdGlvblxufVxuIl19
@@ -1,3 +1,4 @@
1
+ import { QueryCreateContext } from '../..';
1
2
  import { QueryItemResponseStatus } from '../../../enums/query-item-response-status.enum';
2
3
  export class QueryListItem {
3
4
  id;
@@ -11,6 +12,7 @@ export class QueryListItem {
11
12
  createdBy;
12
13
  parentId;
13
14
  isClosed;
15
+ messageType;
14
16
  children = [];
15
17
  messageIndexInParent = null;
16
18
  get lastSubmittedMessage() {
@@ -33,25 +35,38 @@ export class QueryListItem {
33
35
  if (childrenCount === 0) {
34
36
  return this.lastSubmittedMessage.name;
35
37
  }
36
- let index;
37
- if (childrenCount === 1) {
38
- index = 0;
39
- }
40
- else {
41
- index = childrenCount % 2 === 1 ? childrenCount - 1 : childrenCount - 2;
42
- }
43
- return this.children[index].name;
38
+ return this.children[childrenCount - 1].name;
44
39
  }
45
40
  get lastSubmittedDate() {
46
41
  const childrenCount = this.children.length;
47
- if (childrenCount <= 1) {
42
+ const lastChild = this.children[childrenCount - 1];
43
+ // 1. Check for legacy: <= 1 child with no messageType
44
+ const allChildrenLackMessageType = this.children.every((child) => !child.messageType);
45
+ if (childrenCount <= 1 && allChildrenLackMessageType) {
48
46
  return new Date(this.lastSubmittedMessage.createdOn);
49
47
  }
50
- let index;
51
- if (childrenCount > 1) {
52
- index = childrenCount % 2 === 0 ? childrenCount - 1 : childrenCount - 2;
48
+ // 2. Check if any RESPOND exists
49
+ const hasRespond = this.children.some((child) => child.messageType === QueryCreateContext.RESPOND);
50
+ // 3. Check if all children are FOLLOWUPs and none are RESPONDs
51
+ const onlyFollowUps = this.children.every((child) => child.messageType === QueryCreateContext.FOLLOWUP);
52
+ if (onlyFollowUps && !hasRespond) {
53
+ return new Date(lastChild.createdOn);
53
54
  }
54
- return new Date(this.children[index].createdOn);
55
+ // 4. If RESPOND exists, get latest FOLLOWUP
56
+ // If no RESPOND, but there is at least one FOLLOWUP, return the last FOLLOWUP
57
+ const lastFollowUp = [...this.children]
58
+ .reverse()
59
+ .find((child) => child.messageType === QueryCreateContext.FOLLOWUP);
60
+ if (lastFollowUp) {
61
+ return new Date(lastFollowUp.createdOn);
62
+ }
63
+ // 5. Legacy fallback: no messageType at all
64
+ if (allChildrenLackMessageType) {
65
+ const index = childrenCount % 2 === 0 ? childrenCount - 1 : childrenCount - 2;
66
+ return new Date(this.children[index]?.createdOn);
67
+ }
68
+ // 6. Final fallback: return last child's date
69
+ return new Date(this.lastSubmittedMessage.createdOn);
55
70
  }
56
71
  get lastResponseBy() {
57
72
  return this.children?.length > 0 ? this.lastSubmittedMessage.name : '';
@@ -61,6 +76,11 @@ export class QueryListItem {
61
76
  if (childrenCount === 0) {
62
77
  return null;
63
78
  }
79
+ const lastChild = this.children[childrenCount - 1];
80
+ if (lastChild?.messageType === QueryCreateContext.FOLLOWUP &&
81
+ !this.children.some((child) => child.messageType === QueryCreateContext.RESPOND)) {
82
+ return null;
83
+ }
64
84
  let index;
65
85
  if (childrenCount === 1) {
66
86
  index = 0;
@@ -75,11 +95,20 @@ export class QueryListItem {
75
95
  if (item.isClosed === 'Yes') {
76
96
  return true;
77
97
  }
78
- return item.children?.some(child => isThreadClosed(child)) || false;
98
+ return item.children?.some((child) => isThreadClosed(child)) || false;
79
99
  };
80
100
  if (isThreadClosed(this)) {
81
101
  return QueryItemResponseStatus.CLOSED;
82
102
  }
103
+ const lastMessageType = this.children?.length
104
+ ? this.children[this.children.length - 1]?.messageType
105
+ : undefined;
106
+ if (lastMessageType && lastMessageType === QueryCreateContext.RESPOND) {
107
+ return QueryItemResponseStatus.RESPONDED;
108
+ }
109
+ else if (lastMessageType && lastMessageType === QueryCreateContext.FOLLOWUP) {
110
+ return QueryItemResponseStatus.AWAITING;
111
+ }
83
112
  if (this.messageIndexInParent !== null) {
84
113
  return this.messageIndexInParent % 2 === 0
85
114
  ? QueryItemResponseStatus.RESPONDED
@@ -95,4 +124,4 @@ export class QueryListItem {
95
124
  return QueryItemResponseStatus.AWAITING;
96
125
  }
97
126
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktbGlzdC1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvcXVlcnktbWFuYWdlbWVudC9tb2RlbHMvcXVlcnktbGlzdC9xdWVyeS1saXN0LWl0ZW0vcXVlcnktbGlzdC1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE1BQU0sT0FBTyxhQUFhO0lBQ2pCLEVBQUUsQ0FBUztJQUNYLE9BQU8sQ0FBVTtJQUNqQixJQUFJLENBQVM7SUFDYixJQUFJLENBQVM7SUFDYixXQUFXLEdBQTRCLEVBQUUsQ0FBQztJQUMxQyxnQkFBZ0IsQ0FBUztJQUN6QixXQUFXLENBQVU7SUFDckIsU0FBUyxDQUFPO0lBQ2hCLFNBQVMsQ0FBUztJQUNsQixRQUFRLENBQVU7SUFDbEIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsR0FBb0IsRUFBRSxDQUFDO0lBRS9CLG9CQUFvQixHQUFtQixJQUFJLENBQUM7SUFFbkQsSUFBVyxvQkFBb0I7UUFDN0IsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLElBQW1CLEVBQWlCLEVBQUU7WUFDckUsSUFBSSxvQkFBb0IsR0FBa0IsSUFBSSxDQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2xDLE1BQU0seUJBQXlCLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLElBQUkseUJBQXlCLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFD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LENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN0RSxDQUFDLENBQUM7UUFFRixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sdUJBQXVCLENBQUMsTUFBTSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFNBQVM7Z0JBQ25DLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7UUFDdkMsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDbkMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFNBQVM7Z0JBQ25DLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7UUFDdkMsQ0FBQztRQUVELCtCQUErQjtRQUMvQixPQUFPLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cyB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3F1ZXJ5LWl0ZW0tcmVzcG9uc2Utc3RhdHVzLmVudW0nO1xuaW1wb3J0IHsgQ2FzZU1lc3NhZ2UsIFF1ZXJ5TWVzc2FnZURvY3VtZW50IH0gZnJvbSAnLi4vLi4vY2FzZS1xdWVyaWVzLWNvbGxlY3Rpb24ubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlMaXN0SXRlbSBpbXBsZW1lbnRzIENhc2VNZXNzYWdlIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJqZWN0Pzogc3RyaW5nO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYm9keTogc3RyaW5nO1xuICBwdWJsaWMgYXR0YWNobWVudHM/OiBRdWVyeU1lc3NhZ2VEb2N1bWVudFtdID0gW107XG4gIHB1YmxpYyBpc0hlYXJpbmdSZWxhdGVkOiBzdHJpbmc7XG4gIHB1YmxpYyBoZWFyaW5nRGF0ZT86IHN0cmluZztcbiAgcHVibGljIGNyZWF0ZWRPbjogRGF0ZTtcbiAgcHVibGljIGNyZWF0ZWRCeTogc3RyaW5nO1xuICBwdWJsaWMgcGFyZW50SWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBpc0Nsb3NlZD86IHN0cmluZztcbiAgcHVibGljIGNoaWxkcmVuOiBRdWVyeUxpc3RJdGVtW10gPSBbXTtcblxuICBwdWJsaWMgbWVzc2FnZUluZGV4SW5QYXJlbnQ/OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IGxhc3RTdWJtaXR0ZWRNZXNzYWdlKCk6IFF1ZXJ5TGlzdEl0ZW0ge1xuICAgIGNvbnN0IGdldExhc3RTdWJtaXR0ZWRNZXNzYWdlID0gKGl0ZW06IFF1ZXJ5TGlzdEl0ZW0pOiBRdWVyeUxpc3RJdGVtID0+IHtcbiAgICAgIGxldCBsYXN0U3VibWl0dGVkTWVzc2FnZTogUXVlcnlMaXN0SXRlbSA9IGl0ZW07XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGRMYXN0U3VibWl0dGVkTWVzc2FnZSA9IGdldExhc3RTdWJtaXR0ZWRNZXNzYWdlKGNoaWxkKTtcbiAgICAgICAgICBpZiAoY2hpbGRMYXN0U3VibWl0dGVkTWVzc2FnZS5jcmVhdGVkT24gPiBsYXN0U3VibWl0dGVkTWVzc2FnZS5jcmVhdGVkT24pIHtcbiAgICAgICAgICAgIGxhc3RTdWJtaXR0ZWRNZXNzYWdlID0gY2hpbGRMYXN0U3VibWl0dGVkTWVzc2FnZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBsYXN0U3VibWl0dGVkTWVzc2FnZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGdldExhc3RTdWJtaXR0ZWRNZXNzYWdlKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0U3VibWl0dGVkQnkoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgaWYgKGNoaWxkcmVuQ291bnQgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmxhc3RTdWJtaXR0ZWRNZXNzYWdlLm5hbWU7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XG5cbiAgICBpZiAoY2hpbGRyZW5Db3VudCA9PT0gMSkge1xuICAgICAgaW5kZXggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGNoaWxkcmVuQ291bnQgJSAyID09PSAxID8gY2hpbGRyZW5Db3VudCAtIDEgOiBjaGlsZHJlbkNvdW50IC0gMjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbltpbmRleF0ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdFN1Ym1pdHRlZERhdGUoKTogRGF0ZSB7XG4gICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGlmIChjaGlsZHJlbkNvdW50IDw9IDEpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmxhc3RTdWJtaXR0ZWRNZXNzYWdlLmNyZWF0ZWRPbik7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XG5cbiAgICBpZiAoY2hpbGRyZW5Db3VudCA+IDEpIHtcbiAgICAgIGluZGV4ID0gY2hpbGRyZW5Db3VudCAlIDIgPT09IDAgPyBjaGlsZHJlbkNvdW50IC0gMSA6IGNoaWxkcmVuQ291bnQgLSAyO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmNoaWxkcmVuW2luZGV4XS5jcmVhdGVkT24pO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0UmVzcG9uc2VCeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuPy5sZW5ndGggPiAwID8gdGhpcy5sYXN0U3VibWl0dGVkTWVzc2FnZS5uYW1lIDogJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RSZXNwb25zZURhdGUoKTogRGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGNoaWxkcmVuQ291bnQgPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDtcbiAgICBpZiAoY2hpbGRyZW5Db3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGluZGV4OiBudW1iZXI7XG5cbiAgICBpZiAoY2hpbGRyZW5Db3VudCA9PT0gMSkge1xuICAgICAgaW5kZXggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGNoaWxkcmVuQ291bnQgJSAyID09PSAxID8gY2hpbGRyZW5Db3VudCAtIDEgOiBjaGlsZHJlbkNvdW50IC0gMjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jaGlsZHJlbltpbmRleF0uY3JlYXRlZE9uKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VTdGF0dXMoKTogUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMge1xuICAgIGNvbnN0IGlzVGhyZWFkQ2xvc2VkID0gKGl0ZW06IFF1ZXJ5TGlzdEl0ZW0pOiBib29sZWFuID0+IHtcbiAgICAgIGlmIChpdGVtLmlzQ2xvc2VkID09PSAnWWVzJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuPy5zb21lKGNoaWxkID0+IGlzVGhyZWFkQ2xvc2VkKGNoaWxkKSkgfHwgZmFsc2U7XG4gICAgfTtcblxuICAgIGlmIChpc1RocmVhZENsb3NlZCh0aGlzKSkge1xuICAgICAgcmV0dXJuIFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLkNMT1NFRDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tZXNzYWdlSW5kZXhJblBhcmVudCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZUluZGV4SW5QYXJlbnQgJSAyID09PSAwXG4gICAgICAgID8gUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuUkVTUE9OREVEXG4gICAgICAgIDogUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuQVdBSVRJTkc7XG4gICAgfVxuXG4gICAgLy8gUGFyZW50IGxvZ2ljIChjaGlsZHJlbiBjb3VudClcbiAgICBpZiAodGhpcy5jaGlsZHJlbiAmJiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCAlIDIgPT09IDFcbiAgICAgICAgPyBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5SRVNQT05ERURcbiAgICAgICAgOiBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5BV0FJVElORztcbiAgICB9XG5cbiAgICAvLyBObyBjaGlsZHJlbiDigJQgc3RpbGwgYXdhaXRpbmdcbiAgICByZXR1cm4gUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuQVdBSVRJTkc7XG4gIH1cbn1cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktbGlzdC1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvcXVlcnktbWFuYWdlbWVudC9tb2RlbHMvcXVlcnktbGlzdC9xdWVyeS1saXN0LWl0ZW0vcXVlcnktbGlzdC1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUd6RixNQUFNLE9BQU8sYUFBYTtJQUNqQixFQUFFLENBQVM7SUFDWCxPQUFPLENBQVU7SUFDakIsSUFBSSxDQUFTO0lBQ2IsSUFBSSxDQUFTO0lBQ2IsV0FBVyxHQUE0QixFQUFFLENBQUM7SUFDMUMsZ0JBQWdCLENBQVM7SUFDekIsV0FBVyxDQUFVO0lBQ3JCLFNBQVMsQ0FBTztJQUNoQixTQUFTLENBQVM7SUFDbEIsUUFBUSxDQUFVO0lBQ2xCLFFBQVEsQ0FBVTtJQUNsQixXQUFXLENBQVU7SUFDckIsUUFBUSxHQUFvQixFQUFFLENBQUM7SUFFL0Isb0JBQW9CLEdBQW1CLElBQUksQ0FBQztJQUVuRCxJQUFXLG9CQUFvQjtRQUM3QixNQUFNLHVCQUF1QixHQUFHLENBQUMsSUFBbUIsRUFBaUIsRUFBRTtZQUNyRSxJQUFJLG9CQUFvQixHQUFrQixJQUFJLENBQUM7WUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSx5QkFBeUIsR0FBRyx1QkFBdUIsQ0FBQyxL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QUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsU0FBUztnQkFDbkMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztRQUN2QyxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE9BQU8sdUJBQXVCLENBQUMsUUFBUSxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5Q3JlYXRlQ29udGV4dCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvcXVlcnktaXRlbS1yZXNwb25zZS1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBDYXNlTWVzc2FnZSwgUXVlcnlNZXNzYWdlRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jYXNlLXF1ZXJpZXMtY29sbGVjdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUxpc3RJdGVtIGltcGxlbWVudHMgQ2FzZU1lc3NhZ2Uge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHN1YmplY3Q/OiBzdHJpbmc7XG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBib2R5OiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50cz86IFF1ZXJ5TWVzc2FnZURvY3VtZW50W10gPSBbXTtcbiAgcHVibGljIGlzSGVhcmluZ1JlbGF0ZWQ6IHN0cmluZztcbiAgcHVibGljIGhlYXJpbmdEYXRlPzogc3RyaW5nO1xuICBwdWJsaWMgY3JlYXRlZE9uOiBEYXRlO1xuICBwdWJsaWMgY3JlYXRlZEJ5OiBzdHJpbmc7XG4gIHB1YmxpYyBwYXJlbnRJZD86IHN0cmluZztcbiAgcHVibGljIGlzQ2xvc2VkPzogc3RyaW5nO1xuICBwdWJsaWMgbWVzc2FnZVR5cGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBjaGlsZHJlbjogUXVlcnlMaXN0SXRlbVtdID0gW107XG5cbiAgcHVibGljIG1lc3NhZ2VJbmRleEluUGFyZW50PzogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBsYXN0U3VibWl0dGVkTWVzc2FnZSgpOiBRdWVyeUxpc3RJdGVtIHtcbiAgICBjb25zdCBnZXRMYXN0U3VibWl0dGVkTWVzc2FnZSA9IChpdGVtOiBRdWVyeUxpc3RJdGVtKTogUXVlcnlMaXN0SXRlbSA9PiB7XG4gICAgICBsZXQgbGFzdFN1Ym1pdHRlZE1lc3NhZ2U6IFF1ZXJ5TGlzdEl0ZW0gPSBpdGVtO1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIGNvbnN0IGNoaWxkTGFzdFN1Ym1pdHRlZE1lc3NhZ2UgPSBnZXRMYXN0U3VibWl0dGVkTWVzc2FnZShjaGlsZCk7XG4gICAgICAgICAgaWYgKGNoaWxkTGFzdFN1Ym1pdHRlZE1lc3NhZ2UuY3JlYXRlZE9uID4gbGFzdFN1Ym1pdHRlZE1lc3NhZ2UuY3JlYXRlZE9uKSB7XG4gICAgICAgICAgICBsYXN0U3VibWl0dGVkTWVzc2FnZSA9IGNoaWxkTGFzdFN1Ym1pdHRlZE1lc3NhZ2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGFzdFN1Ym1pdHRlZE1lc3NhZ2U7XG4gICAgfTtcblxuICAgIHJldHVybiBnZXRMYXN0U3VibWl0dGVkTWVzc2FnZSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdFN1Ym1pdHRlZEJ5KCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGlmIChjaGlsZHJlbkNvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXN0U3VibWl0dGVkTWVzc2FnZS5uYW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNoaWxkcmVuW2NoaWxkcmVuQ291bnQgLSAxXS5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXN0U3VibWl0dGVkRGF0ZSgpOiBEYXRlIHtcbiAgICBjb25zdCBjaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgY29uc3QgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlbltjaGlsZHJlbkNvdW50IC0gMV07XG5cbiAgICAvLyAxLiBDaGVjayBmb3IgbGVnYWN5OiA8PSAxIGNoaWxkIHdpdGggbm8gbWVzc2FnZVR5cGVcbiAgICBjb25zdCBhbGxDaGlsZHJlbkxhY2tNZXNzYWdlVHlwZSA9IHRoaXMuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAoY2hpbGQpID0+ICFjaGlsZC5tZXNzYWdlVHlwZVxuICAgICk7XG4gICAgaWYgKGNoaWxkcmVuQ291bnQgPD0gMSAmJiBhbGxDaGlsZHJlbkxhY2tNZXNzYWdlVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMubGFzdFN1Ym1pdHRlZE1lc3NhZ2UuY3JlYXRlZE9uKTtcbiAgICB9XG5cbiAgICAvLyAyLiBDaGVjayBpZiBhbnkgUkVTUE9ORCBleGlzdHNcbiAgICBjb25zdCBoYXNSZXNwb25kID0gdGhpcy5jaGlsZHJlbi5zb21lKFxuICAgICAgKGNoaWxkKSA9PiBjaGlsZC5tZXNzYWdlVHlwZSA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkRcbiAgICApO1xuXG4gICAgLy8gMy4gQ2hlY2sgaWYgYWxsIGNoaWxkcmVuIGFyZSBGT0xMT1dVUHMgYW5kIG5vbmUgYXJlIFJFU1BPTkRzXG4gICAgY29uc3Qgb25seUZvbGxvd1VwcyA9IHRoaXMuY2hpbGRyZW4uZXZlcnkoXG4gICAgICAoY2hpbGQpID0+IGNoaWxkLm1lc3NhZ2VUeXBlID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuRk9MTE9XVVBcbiAgICApO1xuXG4gICAgaWYgKG9ubHlGb2xsb3dVcHMgJiYgIWhhc1Jlc3BvbmQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShsYXN0Q2hpbGQuY3JlYXRlZE9uKTtcbiAgICB9XG5cbiAgICAvLyA0LiBJZiBSRVNQT05EIGV4aXN0cywgZ2V0IGxhdGVzdCBGT0xMT1dVUFxuICAgIC8vIElmIG5vIFJFU1BPTkQsIGJ1dCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgRk9MTE9XVVAsIHJldHVybiB0aGUgbGFzdCBGT0xMT1dVUFxuICAgIGNvbnN0IGxhc3RGb2xsb3dVcCA9IFsuLi50aGlzLmNoaWxkcmVuXVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5tZXNzYWdlVHlwZSA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LkZPTExPV1VQKTtcblxuICAgIGlmIChsYXN0Rm9sbG93VXApIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShsYXN0Rm9sbG93VXAuY3JlYXRlZE9uKTtcbiAgICB9XG5cbiAgICAvLyA1LiBMZWdhY3kgZmFsbGJhY2s6IG5vIG1lc3NhZ2VUeXBlIGF0IGFsbFxuICAgIGlmIChhbGxDaGlsZHJlbkxhY2tNZXNzYWdlVHlwZSkge1xuICAgICAgY29uc3QgaW5kZXggPSBjaGlsZHJlbkNvdW50ICUgMiA9PT0gMCA/IGNoaWxkcmVuQ291bnQgLSAxIDogY2hpbGRyZW5Db3VudCAtIDI7XG4gICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jaGlsZHJlbltpbmRleF0/LmNyZWF0ZWRPbik7XG4gICAgfVxuXG4gICAgLy8gNi4gRmluYWwgZmFsbGJhY2s6IHJldHVybiBsYXN0IGNoaWxkJ3MgZGF0ZVxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmxhc3RTdWJtaXR0ZWRNZXNzYWdlLmNyZWF0ZWRPbik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhc3RSZXNwb25zZUJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4/Lmxlbmd0aCA+IDAgPyB0aGlzLmxhc3RTdWJtaXR0ZWRNZXNzYWdlLm5hbWUgOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFzdFJlc3BvbnNlRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XG4gICAgY29uc3QgY2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGlmIChjaGlsZHJlbkNvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW2NoaWxkcmVuQ291bnQgLSAxXTtcblxuICAgIGlmIChcbiAgICAgIGxhc3RDaGlsZD8ubWVzc2FnZVR5cGUgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5GT0xMT1dVUCAmJlxuICAgICF0aGlzLmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiBjaGlsZC5tZXNzYWdlVHlwZSA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgaW5kZXg6IG51bWJlcjtcbiAgICBpZiAoY2hpbGRyZW5Db3VudCA9PT0gMSkge1xuICAgICAgaW5kZXggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IGNoaWxkcmVuQ291bnQgJSAyID09PSAxID8gY2hpbGRyZW5Db3VudCAtIDEgOiBjaGlsZHJlbkNvdW50IC0gMjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jaGlsZHJlbltpbmRleF0uY3JlYXRlZE9uKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VTdGF0dXMoKTogUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMge1xuICAgIGNvbnN0IGlzVGhyZWFkQ2xvc2VkID0gKGl0ZW06IFF1ZXJ5TGlzdEl0ZW0pOiBib29sZWFuID0+IHtcbiAgICAgIGlmIChpdGVtLmlzQ2xvc2VkID09PSAnWWVzJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtLmNoaWxkcmVuPy5zb21lKChjaGlsZCkgPT4gaXNUaHJlYWRDbG9zZWQoY2hpbGQpKSB8fCBmYWxzZTtcbiAgICB9O1xuXG4gICAgaWYgKGlzVGhyZWFkQ2xvc2VkKHRoaXMpKSB7XG4gICAgICByZXR1cm4gUXVlcnlJdGVtUmVzcG9uc2VTdGF0dXMuQ0xPU0VEO1xuICAgIH1cblxuICAgIGNvbnN0IGxhc3RNZXNzYWdlVHlwZSA9IHRoaXMuY2hpbGRyZW4/Lmxlbmd0aFxuICAgICAgPyB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0/Lm1lc3NhZ2VUeXBlXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChsYXN0TWVzc2FnZVR5cGUgJiYgbGFzdE1lc3NhZ2VUeXBlID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgcmV0dXJuIFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLlJFU1BPTkRFRDtcbiAgICB9IGVsc2UgaWYgKGxhc3RNZXNzYWdlVHlwZSAmJiBsYXN0TWVzc2FnZVR5cGUgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5GT0xMT1dVUCkge1xuICAgICAgcmV0dXJuIFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLkFXQUlUSU5HO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1lc3NhZ2VJbmRleEluUGFyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlSW5kZXhJblBhcmVudCAlIDIgPT09IDBcbiAgICAgICAgPyBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5SRVNQT05ERURcbiAgICAgICAgOiBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5BV0FJVElORztcbiAgICB9XG5cbiAgICAvLyBQYXJlbnQgbG9naWMgKGNoaWxkcmVuIGNvdW50KVxuICAgIGlmICh0aGlzLmNoaWxkcmVuICYmIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoICUgMiA9PT0gMVxuICAgICAgICA/IFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLlJFU1BPTkRFRFxuICAgICAgICA6IFF1ZXJ5SXRlbVJlc3BvbnNlU3RhdHVzLkFXQUlUSU5HO1xuICAgIH1cblxuICAgIC8vIE5vIGNoaWxkcmVuIOKAlCBzdGlsbCBhd2FpdGluZ1xuICAgIHJldHVybiBRdWVyeUl0ZW1SZXNwb25zZVN0YXR1cy5BV0FJVElORztcbiAgfVxufVxuIl19