valtech-components 4.0.962 → 4.0.963

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 (153) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +3 -3
  2. package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
  3. package/esm2022/lib/components/atoms/button/button.component.mjs +3 -3
  4. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +3 -3
  5. package/esm2022/lib/components/atoms/display/display.component.mjs +3 -3
  6. package/esm2022/lib/components/atoms/divider/divider.component.mjs +3 -3
  7. package/esm2022/lib/components/atoms/href/href.component.mjs +3 -3
  8. package/esm2022/lib/components/atoms/icon/icon.component.mjs +3 -3
  9. package/esm2022/lib/components/atoms/image/image.component.mjs +3 -3
  10. package/esm2022/lib/components/atoms/notice/notice.component.mjs +3 -3
  11. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +3 -3
  12. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -3
  13. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +3 -3
  14. package/esm2022/lib/components/atoms/text/text.component.mjs +3 -3
  15. package/esm2022/lib/components/atoms/title/title.component.mjs +3 -3
  16. package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +3 -3
  17. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +3 -3
  18. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +3 -3
  19. package/esm2022/lib/components/molecules/animal-card/animal-card.component.mjs +3 -3
  20. package/esm2022/lib/components/molecules/article-card/article-card.component.mjs +3 -3
  21. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +3 -3
  22. package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +3 -3
  23. package/esm2022/lib/components/molecules/card/card.component.mjs +3 -3
  24. package/esm2022/lib/components/molecules/chat-composer/chat-composer.component.mjs +3 -3
  25. package/esm2022/lib/components/molecules/chat-input/chat-input.component.mjs +3 -3
  26. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -3
  27. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +3 -3
  28. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -3
  29. package/esm2022/lib/components/molecules/comment/comment.component.mjs +4 -4
  30. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +3 -3
  31. package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +3 -3
  32. package/esm2022/lib/components/molecules/conversation-list-item/conversation-list-item.component.mjs +3 -3
  33. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +3 -3
  34. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +3 -3
  35. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +3 -3
  36. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +3 -3
  37. package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +3 -3
  38. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
  39. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +3 -3
  40. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +3 -3
  41. package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +3 -3
  42. package/esm2022/lib/components/molecules/empty-state/empty-state.component.mjs +3 -3
  43. package/esm2022/lib/components/molecules/entity-card/entity-card.component.mjs +3 -3
  44. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +3 -3
  45. package/esm2022/lib/components/molecules/field-options-editor/field-options-editor.component.mjs +3 -3
  46. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
  47. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +4 -4
  48. package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
  49. package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +3 -3
  50. package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
  51. package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +3 -3
  52. package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +3 -3
  53. package/esm2022/lib/components/molecules/media-object/media-object.component.mjs +3 -3
  54. package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +3 -3
  55. package/esm2022/lib/components/molecules/metadata-list/metadata-list.component.mjs +3 -3
  56. package/esm2022/lib/components/molecules/metric-card/metric-card.component.mjs +3 -3
  57. package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +3 -3
  58. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +3 -3
  59. package/esm2022/lib/components/molecules/operation-reference/operation-reference.component.mjs +3 -3
  60. package/esm2022/lib/components/molecules/option-cards/option-cards.component.mjs +3 -3
  61. package/esm2022/lib/components/molecules/page-links/page-links.component.mjs +3 -3
  62. package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +3 -3
  63. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
  64. package/esm2022/lib/components/molecules/permission-selector/permission-selector.component.mjs +3 -3
  65. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +3 -3
  66. package/esm2022/lib/components/molecules/pill/pill.component.mjs +3 -3
  67. package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
  68. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +3 -3
  69. package/esm2022/lib/components/molecules/profile-card/profile-card.component.mjs +3 -3
  70. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +3 -3
  71. package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +3 -3
  72. package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +3 -3
  73. package/esm2022/lib/components/molecules/rating/rating.component.mjs +3 -3
  74. package/esm2022/lib/components/molecules/reaction-bar/reaction-bar.component.mjs +3 -3
  75. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +3 -3
  76. package/esm2022/lib/components/molecules/section-header/section-header.component.mjs +3 -3
  77. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -3
  78. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +3 -3
  79. package/esm2022/lib/components/molecules/select-search/select-search-picker-modal.component.mjs +3 -3
  80. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +3 -3
  81. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +4 -4
  82. package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +3 -3
  83. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +3 -3
  84. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
  85. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +3 -3
  86. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
  87. package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +3 -3
  88. package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +3 -3
  89. package/esm2022/lib/components/molecules/typing-indicator/typing-indicator.component.mjs +3 -3
  90. package/esm2022/lib/components/molecules/usage-meters/usage-meters.component.mjs +3 -3
  91. package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +3 -3
  92. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +3 -3
  93. package/esm2022/lib/components/organisms/access-request-view/access-request-view.component.mjs +3 -3
  94. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +3 -3
  95. package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +3 -3
  96. package/esm2022/lib/components/organisms/article/article.component.mjs +3 -3
  97. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +3 -3
  98. package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +3 -3
  99. package/esm2022/lib/components/organisms/banner/banner.component.mjs +3 -3
  100. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +3 -3
  101. package/esm2022/lib/components/organisms/chat-window/chat-window.component.mjs +3 -3
  102. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +3 -3
  103. package/esm2022/lib/components/organisms/confirmation-dialog-v2/confirmation-dialog-v2.component.mjs +3 -3
  104. package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +3 -3
  105. package/esm2022/lib/components/organisms/cookie-settings/cookie-settings.component.mjs +3 -3
  106. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +3 -3
  107. package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +3 -3
  108. package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +3 -3
  109. package/esm2022/lib/components/organisms/faq/faq.component.mjs +3 -3
  110. package/esm2022/lib/components/organisms/field-list/field-list.component.mjs +3 -3
  111. package/esm2022/lib/components/organisms/folder-tabs/folder-tabs.component.mjs +3 -3
  112. package/esm2022/lib/components/organisms/form/form.component.mjs +3 -3
  113. package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +3 -3
  114. package/esm2022/lib/components/organisms/group-members/group-members.component.mjs +3 -3
  115. package/esm2022/lib/components/organisms/header/header.component.mjs +3 -3
  116. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +3 -3
  117. package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs +3 -3
  118. package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +3 -3
  119. package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
  120. package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +3 -3
  121. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +3 -3
  122. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
  123. package/esm2022/lib/components/organisms/mini-games/bubble-blitz-game.component.mjs +3 -3
  124. package/esm2022/lib/components/organisms/mini-games/memory-game.component.mjs +3 -3
  125. package/esm2022/lib/components/organisms/mini-games/simon-game.component.mjs +3 -3
  126. package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +3 -3
  127. package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +3 -3
  128. package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
  129. package/esm2022/lib/components/organisms/option-sheet/option-sheet.component.mjs +3 -3
  130. package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +3 -3
  131. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
  132. package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +3 -3
  133. package/esm2022/lib/components/organisms/qr-scanner/qr-scanner.component.mjs +3 -3
  134. package/esm2022/lib/components/organisms/request-review-panel/request-review-panel.component.mjs +5 -5
  135. package/esm2022/lib/components/organisms/role-manager/role-manager.component.mjs +3 -3
  136. package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +3 -3
  137. package/esm2022/lib/components/organisms/share-profile-modal/share-profile-modal.component.mjs +3 -3
  138. package/esm2022/lib/components/organisms/thread-panel/thread-panel.component.mjs +3 -3
  139. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  140. package/esm2022/lib/components/organisms/verify-view/verify-view.component.mjs +3 -3
  141. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -3
  142. package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +3 -3
  143. package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +3 -3
  144. package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +3 -3
  145. package/esm2022/lib/components/templates/simple/simple.component.mjs +3 -3
  146. package/esm2022/lib/version.mjs +2 -2
  147. package/fesm2022/valtech-components.mjs +296 -296
  148. package/fesm2022/valtech-components.mjs.map +1 -1
  149. package/lib/version.d.ts +1 -1
  150. package/package.json +1 -1
  151. package/src/lib/components/styles/_docs-page.scss +1 -1
  152. package/src/lib/components/styles/overrides.scss +4 -4
  153. package/src/lib/components/styles/variables.scss +7 -7
@@ -674,7 +674,7 @@ export class FormComponent {
674
674
  }
675
675
  </form>
676
676
  </div>
677
- `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["preset", "props"] }, { kind: "component", type: TextareaInputComponent, selector: "val-textarea-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props", "id", "isError"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["preset", "props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["preset", "props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["label", "labelProperty", "valueProperty", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: PhoneInputComponent, selector: "val-phone-input", inputs: ["preset", "props"], outputs: ["phoneChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckboxRadioInputComponent, selector: "val-checkbox-radio-input", inputs: ["props"] }, { kind: "component", type: ChipSelectComponent, selector: "val-chip-select", inputs: ["props"] }, { kind: "component", type: UsernameInputComponent, selector: "val-username-input", inputs: ["props"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { kind: "component", type: DatePickerComponent, selector: "val-date-picker", inputs: ["props"], outputs: ["valueChange"] }] }); }
677
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-dark: #9e9e9e;--ion-color-dark-rgb: 158, 158, 158;--ion-color-dark-contrast: #000000;--ion-color-dark-contrast-rgb: 0, 0, 0;--ion-color-dark-shade: #8b8b8b;--ion-color-dark-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextInputComponent, selector: "val-text-input", inputs: ["preset", "props"] }, { kind: "component", type: TextareaInputComponent, selector: "val-textarea-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["preset", "props"] }, { kind: "component", type: ButtonGroupComponent, selector: "val-button-group", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: DividerComponent, selector: "val-divider", inputs: ["props"] }, { kind: "component", type: HintComponent, selector: "val-hint", inputs: ["props", "id", "isError"] }, { kind: "component", type: CommentInputComponent, selector: "val-comment-input", inputs: ["props"] }, { kind: "component", type: DateInputComponent, selector: "val-date-input", inputs: ["preset", "props"] }, { kind: "component", type: FileInputComponent, selector: "val-file-input", inputs: ["props"] }, { kind: "component", type: NumberFromToComponent, selector: "val-number-from-to", inputs: ["props"] }, { kind: "component", type: RadioInputComponent, selector: "val-radio-input", inputs: ["props"] }, { kind: "component", type: PasswordInputComponent, selector: "val-password-input", inputs: ["preset", "props"] }, { kind: "component", type: PinInputComponent, selector: "val-pin-input", inputs: ["props"] }, { kind: "component", type: SelectSearchComponent, selector: "val-select-search", inputs: ["label", "labelProperty", "valueProperty", "multiple", "placeholder", "props"] }, { kind: "component", type: MultiSelectSearchComponent, selector: "val-multi-select-search", inputs: ["label", "labelProperty", "valueProperty", "placeholder", "props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: PhoneInputComponent, selector: "val-phone-input", inputs: ["preset", "props"], outputs: ["phoneChange"] }, { kind: "component", type: ToggleInputComponent, selector: "val-toggle-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckboxRadioInputComponent, selector: "val-checkbox-radio-input", inputs: ["props"] }, { kind: "component", type: ChipSelectComponent, selector: "val-chip-select", inputs: ["props"] }, { kind: "component", type: UsernameInputComponent, selector: "val-username-input", inputs: ["props"] }, { kind: "component", type: AttachmentUploaderComponent, selector: "val-attachment-uploader", inputs: ["props"], outputs: ["attachmentsChange"] }, { kind: "component", type: DatePickerComponent, selector: "val-date-picker", inputs: ["props"], outputs: ["valueChange"] }] }); }
678
678
  }
679
679
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormComponent, decorators: [{
680
680
  type: Component,
@@ -849,7 +849,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
849
849
  }
850
850
  </form>
851
851
  </div>
852
- `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"] }]
852
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-xl-wide: 1280px;--val-container-md-wide: 900px;--val-container-aside: 0px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-dark: #9e9e9e;--ion-color-dark-rgb: 158, 158, 158;--ion-color-dark-contrast: #000000;--ion-color-dark-contrast-rgb: 0, 0, 0;--ion-color-dark-shade: #8b8b8b;--ion-color-dark-tint: #a8a8a8;--ion-color-warning: #ffde38;--ion-color-warning-rgb: 255, 222, 56;--ion-color-warning-contrast: #000000;--ion-color-warning-contrast-rgb: 0, 0, 0;--ion-color-warning-shade: #e0c331;--ion-color-warning-tint: #ffe14c;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-dark)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.container--sticky-footer{--val-form-sticky-footer-space: 7rem;padding-bottom:calc(var(--val-form-sticky-footer-space) + env(safe-area-inset-bottom))}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions{display:block;width:100%;box-sizing:border-box}.submit-actions--sticky{position:sticky;bottom:0;z-index:20;width:calc(100% + var(--val-form-sticky-footer-bleed, 0px) * 2);margin-inline:calc(var(--val-form-sticky-footer-bleed, 0px) * -1);background:var(--ion-card-background, var(--ion-background-color, #ffffff));border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));box-shadow:0 -.25rem 1rem rgba(var(--ion-text-color-rgb, 0, 0, 0),.08);padding:.75rem var(--val-form-sticky-footer-inline-padding, var(--val-form-sticky-footer-bleed, 0px)) max(.75rem,env(safe-area-inset-bottom));isolation:isolate;transform:translateZ(0)}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.email-suggestion{margin:6px 0 0;font-size:.875rem;color:var(--ion-text-color, #000)}.email-suggestion__apply{padding:0;margin-left:4px;background:none;border:none;font:inherit;font-weight:700;color:var(--ion-color-primary);text-decoration:underline;cursor:pointer}\n"] }]
853
853
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ElementRef }], propDecorators: { props: [{
854
854
  type: Input
855
855
  }], onSubmit: [{
@@ -861,4 +861,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
861
861
  }], onSelectChange: [{
862
862
  type: Output
863
863
  }] } });
864
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVDLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVB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QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErSVQ7eUdBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IHN1Z2dlc3RFbWFpbEZpeCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm1zL2VtYWlsLXN1Z2dlc3Rpb24nO1xuaW1wb3J0IHsgaXNBdEVuZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kb20nO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVjay1pbnB1dC9jaGVjay1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWVudElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvY29tbWVudC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtcGlja2VyL3R5cGVzJztcbmltcG9ydCB7IEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaGludC9oaW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1iZXJGcm9tVG9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbnVtYmVyLWZyb20tdG8vbnVtYmVyLWZyb20tdG8uY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL211bHRpLXNlbGVjdC1zZWFyY2gvbXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHRhcmVhLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94UmFkaW9JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVja2JveC1yYWRpby1pbnB1dC9jaGVja2JveC1yYWRpby1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hpcFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VzZXJuYW1lLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0gfSBmcm9tICcuLi9hdHRhY2htZW50LXVwbG9hZGVyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUlucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgRGl2aWRlckNvbXBvbmVudCxcbiAgICBIaW50Q29tcG9uZW50LFxuICAgIENvbW1lbnRJbnB1dENvbXBvbmVudCxcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIE51bWJlckZyb21Ub0NvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIFBhc3N3b3JkSW5wdXRDb21wb25lbnQsXG4gICAgUGluSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFBob25lSW5wdXRDb21wb25lbnQsXG4gICAgVG9nZ2xlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoaXBTZWxlY3RDb21wb25lbnQsXG4gICAgVXNlcm5hbWVJbnB1dENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGFpbmVyLS1zdGlja3ktZm9vdGVyXT1cInByb3BzLnN0aWNreUZvb3RlciAmJiAhcHJvcHMuY29udHJvbGxlZFwiXG4gICAgICBbc3R5bGUuLS12YWwtZm9ybS1maWVsZC1nYXBdPVwicHJvcHMuZmllbGRTcGFjaW5nICE9IG51bGwgPyBwcm9wcy5maWVsZFNwYWNpbmcgKyAncHgnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIEBpZiAocHJvcHMubmFtZSkge1xuICAgICAgICAgIDx2YWwtZGlzcGxheVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogcHJvcHMubmFtZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC1kaXNwbGF5PlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHMgb2YgcHJvcHMuc2VjdGlvbnM7IHRyYWNrIHMubmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHMubmFtZSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCI+PC92YWwtdGl0bGU+XG4gICAgICAgICAgICBAZm9yIChmIG9mIHMuZmllbGRzOyB0cmFjayBmLm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiZi50b2tlblwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZi50eXBlICE9PSB0eXBlcy5QSE9ORSAmJiBmLnR5cGUgIT09IHR5cGVzLkhBTkRMRSAmJiBmLnR5cGUgIT09IHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwibGFiZWxJZChmKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IGYubGFiZWwsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIj48L3ZhbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtZGVzY3JpcHRpb25cIj57eyBmLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUQVJFQSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRhcmVhLWlucHV0IFtwcm9wc109XCJnZXRUZXh0YXJlYVByb3AoZilcIj48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DSEVDSykge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWNoZWNrLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1jaGVjay1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DT01NRU5UKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY29tbWVudC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtY29tbWVudC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5EQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5FTUFJTCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ2VtYWlsJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Z2VyZW5jaWEgZGUgZG9taW5pby4gU2UgT0ZSRUNFLCBubyBzZSBhcGxpY2Egc29sYTogdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBkb21pbmlvIGNvcnBvcmF0aXZvIGxlZ8OtdGltbyBwdWVkZSBwYXJlY2Vyc2UgYSB1bm9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXNpdm8sIHkgY29ycmVnaXJsbyBwb3Igc3UgY3VlbnRhIGxlIGNhbWJpYXLDrWEgZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZW8gYSBhbGd1aWVuIHF1ZSBsbyBlc2NyaWJpw7MgYmllbi4gLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxTdWdnZXN0aW9uRm9yKGYpOyBhcyBzdWdlcmlkbykge1xuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1haWwtc3VnZ2VzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxTdWdnZXN0aW9uUXVlc3Rpb24oc3VnZXJpZG8pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVtYWlsLXN1Z2dlc3Rpb25fX2FwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RW1haWxTdWdnZXN0aW9uKGYsIHN1Z2VyaWRvKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVtYWlsU3VnZ2VzdGlvbkFwcGx5TGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuRklMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWZpbGUtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWZpbGUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSE9VUikge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ3RpbWUnKVwiPjwvdmFsLXRleHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuTlVNQkVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0VGV4dElucHV0UHJvcChmLCAnbnVtYmVyJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW51bWJlci1mcm9tLXRvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBBU1NXT1JEKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGFzc3dvcmQtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLXBhc3N3b3JkLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBJTl9DT0RFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1waW4taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUkFESU8pIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcmFkaW8taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IFtwcm9wc109XCJnZXRTZWxlY3RQcm9wKGYpXCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlNFQVJDSF9TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1zZWxlY3Qtc2VhcmNoIFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk1VTFRJX1NFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW11bHRpLXNlbGVjdC1zZWFyY2ggW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW11bHRpLXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUEhPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1waG9uZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcGhvbmUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSEFORExFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlcm5hbWUtaW5wdXQgW3Byb3BzXT1cImdldFVzZXJuYW1lUHJvcChmKVwiPjwvdmFsLXVzZXJuYW1lLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlRPR0dMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdG9nZ2xlLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNIRUNLQk9YX1JBRElPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hlY2tib3gtcmFkaW8taW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoZWNrYm94LXJhZGlvLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNISVBfU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hpcC1zZWxlY3QgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoaXAtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGludDogZi5oaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkRm46IGYudXBsb2FkRm4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZi5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEIHx8IGYuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c0NoYW5nZSk9XCJvbkF0dGFjaG1lbnRDaGFuZ2UoZi5uYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmFsLWF0dGFjaG1lbnQtdXBsb2FkZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1kYXRlLXBpY2tlciBbcHJvcHNdPVwiZ2V0RGF0ZVBpY2tlclByb3AoZilcIj48L3ZhbC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHZhbC1oaW50IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIiBbaWRdPVwiZXJyb3JJZChmKVwiPjwvdmFsLWhpbnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93RGl2aWRlcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIDx2YWwtZGl2aWRlciBbcHJvcHNdPVwieyBmaWxsOiAnc29saWQnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdtZWRpdW0nIH1cIj48L3ZhbC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXByb3BzLmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWFjdGlvbnNcIiBbY2xhc3Muc3VibWl0LWFjdGlvbnMtLXN0aWNreV09XCJwcm9wcy5zdGlja3lGb290ZXJcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uLWdyb3VwXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IGJ1dHRvbnM6IGFjdGlvbnMsIHBvc2l0aW9uOiAnY2VudGVyJywgY29sdW1uZWQ6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjayB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBGb3JtTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3VibWl0PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICB0eXBlcyA9IElucHV0VHlwZTtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIC8qKlxuICAgKiBWYWxvciBhY3R1YWwgZGVsIGZvcm0gKGBmb3JtLmdldFJhd1ZhbHVlKClgKSwgYWN0dWFsaXphZG8gZW4gY2FkYVxuICAgKiBgdmFsdWVDaGFuZ2VzYC4gUGVuc2FkbyBwYXJhIGVsIG1vZG8gYGNvbnRyb2xsZWRgOiBlbCBob3N0IGxvIGxlZSB2w61hXG4gICAqIGBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQpYCBzaW4gdG9jYXIgZWwgRm9ybUdyb3VwIGRpcmVjdG8uIEVuIG1vZG8gbm9ybWFsXG4gICAqIHRhbWJpw6luIGVzdMOhIGRpc3BvbmlibGUuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSB2YWxpZGV6IGRlbCBmb3JtLCBhY3R1YWxpemFkbyBlbiBjYWRhIGBzdGF0dXNDaGFuZ2VzYC4gUGFyYSBxdWVcbiAgICogZWwgaG9zdCAod2l6YXJkKSBoYWJpbGl0ZS9kZXNoYWJpbGl0ZSBzdSBib3TDs24gXCJTaWd1aWVudGVcIi5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25zQ2FjaGU6IEJ1dHRvbk1ldGFkYXRhW10gPSBbXTtcblxuICAvLyBNZW1vIGRlIGdldEZpZWxkUHJvcC9nZXRVc2VybmFtZVByb3AgcG9yIHJlZmVyZW5jaWEgZGUgZmllbGQg4oCUIGV2aXRhXG4gIC8vIGNyZWFyIHVuIG51ZXZvIG9iamV0byBwcm9wcyBwb3Iga2V5c3Ryb2tlIChjYWRhIENEIGN5Y2xlIGludm9jYXLDrWEgZWxcbiAgLy8gdGVtcGxhdGUgYmluZGluZywgbXVsdGlwbGljYW5kbyByZS1yZW5kZXJzIGVuIGNhc2NhZGEgcG9yICMgZmllbGRzKS5cbiAgLy8gV2Vha01hcDogc2kgbGEgcmVmZXJlbmNpYSBkZWwgZmllbGQgY2FtYmlhLCBlbCBjYWNoZSBzZSBsaWJlcmEuXG4gIHByaXZhdGUgZmllbGRQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIElucHV0TWV0YWRhdGE+KCk7XG4gIHByaXZhdGUgdXNlcm5hbWVQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIFVzZXJuYW1lSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSB0ZXh0YXJlYVByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgVGV4dGFyZWFJbnB1dE1ldGFkYXRhPigpO1xuICBwcml2YXRlIHNlbGVjdFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgLy8gTWVtbyBkZSBwcm9wcyBjb24gdW4gaW5wdXRUeXBlIEhUTUwgaW55ZWN0YWRvIChFTUFJTC9OVU1CRVIvSE9VUiBjb2xhcHNhZG9zXG4gIC8vIGVuIHZhbC10ZXh0LWlucHV0KS4gQ2xhdmUgcG9yIGZpZWxkIHBhcmEgY29uc2VydmFyIGlkZW50aWRhZCBkZSByZWZlcmVuY2lhLlxuICBwcml2YXRlIHRleHRJbnB1dFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSBkYXRlUGlja2VyUHJvcE1lbW8gPSBuZXcgV2Vha01hcDxJbnB1dE1ldGFkYXRhLCBEYXRlUGlja2VyTWV0YWRhdGE+KCk7XG5cbiAgLy8gSWRzIGVzdGFibGVzIHBvciBmaWVsZCBwYXJhIGVsIHdpcmluZyBkZSBhY2Nlc2liaWxpZGFkIGxhYmVs4oaUaW5wdXTihpRlcnJvci5cbiAgLy8gRXN0YWJsZXMgZW50cmUgQ0QgY3ljbGVzIChtZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkKSDihpIgYXJpYS0qIG5vIHBhcnBhZGVhLlxuICBwcml2YXRlIGZpZWxkSWRNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9PigpO1xuICBwcml2YXRlIGZpZWxkVWlkID0gMDtcblxuICAvLyBFc3RhZG8gcHJldmlvIHBhcmEgZGV0ZWN0YXIgY2FtYmlvcyBlbiBuZ0RvQ2hlY2tcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldmlvdXNVcGxvYWRpbmdDb3VudCA9IDA7XG5cbiAgLy8gQ2FtcG9zIEFUVEFDSE1FTlQgY29uIHVwbG9hZHMgZW4gY3Vyc28g4oCUIGJsb3F1ZWEgc3VibWl0ICsgREVTSEFCSUxJVEEgZWxcbiAgLy8gYm90w7NuIChubyBsb2FkaW5nOiBlbCBzcGlubmVyIHNlIHJlc2VydmEgcGFyYSBlbCBzdWJtaXQgcmVhbCBkZWwgZm9ybSkuXG4gIHByaXZhdGUgdXBsb2FkaW5nRmllbGRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge31cblxuICAvKiogQXJtYSBsYSBkZWZpbmljacOzbiBkZSBjb250cm9sZXMgKHZhbG9yIGluaWNpYWwgKyB2YWxpZGFkb3JlcykgZGVzZGUgYHByb3BzYC4gKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Db250cm9sc0RlZigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge307XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIEhvbnJhIGBmaWVsZC52YWx1ZWAgYWwgY29uc3RydWlyIGVsIEZvcm1Hcm91cCBwYXJhIHF1ZSBjb250cm9sZXMgdGlwb1xuICAgICAgICAvLyBIQU5ETEUgKHF1ZSBjb25zdW1lbiBlbCBjb250cm9sIGRpcmVjdG8gdmlhIFtmb3JtQ29udHJvbF0pIHJlY2liYW4gZWxcbiAgICAgICAgLy8gdmFsb3IgaW5pY2lhbCBzaW4gcXVlIGVsIGNhbGxlciB0ZW5nYSBxdWUgcGF0Y2hWYWx1ZSBwb3N0LW1vdW50LlxuICAgICAgICAvLyBFbCBoZWxwZXIgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgKHZhbC10ZXh0LWlucHV0IGV0Yy4pIHNpZ3VlXG4gICAgICAgIC8vIGZ1bmNpb25hbmRvIOKAlCBlc2NyaWJlIHNvYnJlIHVuIGNvbnRyb2wgeWEgaW5pY2lhbGl6YWRvLCBpZGVtcG90ZW50ZS5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZmllbGQudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuTlVNQkVSX0ZST01fVE8pIHtcbiAgICAgICAgICAvLyBDcmVhciBkb3MgY29udHJvbGVzIHBhcmEgY2FtcG9zIE5VTUJFUl9GUk9NX1RPXG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2Ake2ZpZWxkLm5hbWV9X2Zyb21gXSA9IFtpbml0aWFsVmFsdWUsIGZpZWxkLnZhbGlkYXRvcnMgfHwgW11dO1xuICAgICAgICAgIGZvcm1Db250cm9sc1tgJHtmaWVsZC5uYW1lfV90b2BdID0gW2luaXRpYWxWYWx1ZSwgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLm5hbWVdID0gW1tdLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQubmFtZV0gPSBbaW5pdGlhbFZhbHVlLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1Db250cm9scztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnV5ZSBlbCBgRm9ybUdyb3VwYCBkZXNkZSBjZXJvLCBjb24gbG9zIHZhbG9yZXMgaW5pY2lhbGVzIGRlIGBwcm9wc2BcbiAgICogYWN0dWFsZXMgKG5vIGxvcyBxdWUgZWwgdXN1YXJpbyBoYXlhIHRlY2xlYWRvIGRlc2RlIGVudG9uY2VzKS5cbiAgICpcbiAgICogRXhpc3RlIHBhcmEgZWwgY2FzbyBlbiBxdWUgQW5ndWxhciBOTyBkZXN0cnV5ZSBlbCBjb21wb25lbnRlIGVudHJlIGRvcyB1c29zXG4gICAqIOKAlCB0w61waWNhbWVudGUgYElvbmljUm91dGVTdHJhdGVneWAsIHF1ZSBjYWNoZWEgbGEgcMOhZ2luYSBydXRlYWRhIGFsIG5hdmVnYXJcbiAgICogYWZ1ZXJhIHkgbGEgcmV1dGlsaXphIGFsIHZvbHZlciBzaW4gY29ycmVyIGBuZ09uSW5pdGAgZGUgbnVldm8uIFNpbiBlc3RvLFxuICAgKiB1biBmb3JtIGRlIGxvZ2luIG1hbnRpZW5lIGxvIHF1ZSBlbCB1c3VhcmlvIGFudGVyaW9yIHRlY2xlw7MgZGVzcHXDqXMgZGVcbiAgICogY2VycmFyIHNlc2nDs24geSB2b2x2ZXIgYSBgL2xvZ2luYDogZWwgYEZvcm1Hcm91cGAgc2UgY29uc3RydXnDsyBVTkEgdmV6IHlcbiAgICogbmFkaWUgbG8gdG9jw7MgZGVzZGUgZW50b25jZXMuXG4gICAqXG4gICAqIFJlY29uc3RydXllIGVsIGBGb3JtR3JvdXBgIGVudGVybyAobm8gYC5yZXNldCh2YWx1ZXMpYCkgcG9ycXVlIGxhXG4gICAqIGRlZmluaWNpw7NuIHRyYWUgYFt2YWxvciwgdmFsaWRhdG9yc11gIHBvciBjb250cm9sLCBubyB2YWxvcmVzIHBsYW5vcyDigJRcbiAgICogcmV1c2FyIGBidWlsZEZvcm1Db250cm9sc0RlZigpYCB0YWwgY3VhbCBldml0YSBtYW50ZW5lciBkb3MgZm9ybWFzIGRlXG4gICAqIGNhbGN1bGFyIFwiY3XDoWwgZXMgZWwgdmFsb3IgaW5pY2lhbFwiIHF1ZSBwdWVkYW4gZGVzaW5jcm9uaXphcnNlLlxuICAgKlxuICAgKiBFbCBjYWxsZXIgKHTDrXBpY2FtZW50ZSBgdmFsLWxvZ2luYCwgdsOtYSBgaW9uVmlld1dpbGxFbnRlcmApIGRlY2lkZSBDVcOBTkRPXG4gICAqIGxsYW1hcmxvIOKAlCBhY8OhIG5vIGhheSBoZXVyw61zdGljYSBkZSBcImN1w6FuZG8gcmVzZXRlYXJcIiwgcG9ycXVlIHVuIGZvcm0gZGVcbiAgICogdmFyaW9zIHBhc29zIHPDrSBwb2Ryw61hIHF1ZXJlciBjb25zZXJ2YXIgbG8gdGVjbGVhZG8gYWwgdm9sdmVyIGEgdW5hXG4gICAqIHBlc3Rhw7FhLlxuICAgKi9cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgeCA9PlxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlNFTEVDVCB8fFxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlRFWFQgfHxcbiAgICAgICAgICAgIHgudHlwZSA9PT0gdGhpcy50eXBlcy5TRUFSQ0hfU0VMRUNUIHx8XG4gICAgICAgICAgICB4LnR5cGUgPT09IHRoaXMudHlwZXMuTVVMVElfU0VMRUNUXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMudHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEVzdGFkbyByZWFjdGl2byBww7pibGljbyAodmFsdWUvdmFsaWQpIOKAlCBhY3R1YWxpemFkbyBwb3Igc3VzY3JpcGNpw7NuIFJ4SlMsXG4gICAgLy8gTk8gZGVudHJvIGRlIHVuIGVmZmVjdDogc2V0ZWFyIHNpZ25hbHMgYWPDoSBlcyBzZWd1cm8gKG5vIGRpc3BhcmEgTkcwNjAwKS5cbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgdGhpcy52YWxpZC5zZXQodGhpcy5mb3JtLnZhbGlkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXQocmF3VmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdChyYXdWYWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudmFsaWQuc2V0KHRoaXMuZm9ybS52YWxpZCkpKTtcblxuICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgIHRoaXMudXBkYXRlQWN0aW9uc0NhY2hlKCk7XG4gICAgdGhpcy5wcmV2aW91c1N0YXRlID0gdGhpcy5wcm9wcy5zdGF0ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBDdWFuZG8gcHJvcHMgY2FtYmlhLCByZWNvbnN0cnVpciBlbCBjYWNoZVxuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5wYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTtcbiAgICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgICAgdGhpcy51cGRhdGVBY3Rpb25zQ2FjaGUoKTtcbiAgICAgIHRoaXMucHJldmlvdXNTdGF0ZSA9IHRoaXMucHJvcHMuc3RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGlmIChmaWVsZC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoYCR7ZmllbGQubmFtZX1fZnJvbWApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmdldChgJHtmaWVsZC5uYW1lfV90b2ApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSk/LnBhdGNoVmFsdWUoZmllbGQudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIC8vIERldGVjdGFyIGNhbWJpb3MgZW4gZWwgZXN0YWRvIGRlbCBmb3JtdWxhcmlvIChtdXRhY2nDs24gc2luIGNhbWJpYXIgcmVmZXJlbmNpYSlcbiAgICBjb25zdCB1cGxvYWRpbmdDb3VudCA9IHRoaXMudXBsb2FkaW5nRmllbGRzLnNpemU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtICYmXG4gICAgICB0aGlzLnByb3BzICYmXG4gICAgICAodGhpcy5wcm9wcy5zdGF0ZSAhPT0gdGhpcy5wcmV2aW91c1N0YXRlIHx8IHVwbG9hZGluZ0NvdW50ICE9PSB0aGlzLnByZXZpb3VzVXBsb2FkaW5nQ291bnQpXG4gICAgKSB7XG4gICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSB0aGlzLnByb3BzLnN0YXRlO1xuICAgICAgdGhpcy5wcmV2aW91c1VwbG9hZGluZ0NvdW50ID0gdXBsb2FkaW5nQ291bnQ7XG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbnNDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZXMgZm9ybSBjb250cm9sIGRpc2FibGVkL2VuYWJsZWQgc3RhdGUgd2l0aCBmaWVsZCBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gdGhpcy5nZXRDb250cm9sKGAke2ZpZWxkLm5hbWV9X2Zyb21gKTtcbiAgICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcblxuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBmcm9tQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJvbUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgY2FjaGUgZGUgYWN0aW9ucyBiYXNhZG8gZW4gZWwgZXN0YWRvIGFjdHVhbCBkZWwgZm9ybS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQWN0aW9uc0NhY2hlKCkge1xuICAgIC8vIEVuIG1vZG8gY29udHJvbGxlZCAobyBzaW4gc3VibWl0KSBubyBoYXkgYm90w7NuIHByb3BpbyBxdWUgY2FjaGVhci5cbiAgICBpZiAoIXRoaXMucHJvcHMuYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGFjdGlvblN0YXRlID0gdGhpcy5wcm9wcy5hY3Rpb25zLnN0YXRlO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAvLyBTdWJtaXQgcmVhbCBkZWwgZm9ybSBlbiBjdXJzbyDihpIgYm90w7NuIGVuIGxvYWRpbmcgKHNwaW5uZXIpLlxuICAgICAgYWN0aW9uU3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuV09SS0lORztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCB8fCB0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkge1xuICAgICAgLy8gU3ViaWRhIGRlIGFkanVudG8gZW4gY3Vyc28g4oaSIERFU0hBQklMSVRBUiBlbCBzdWJtaXQsIE5PIGxvYWRpbmc6IHRvZGF2w61hXG4gICAgICAvLyBubyBzZSBlc3TDoSBlbnZpYW5kbyBlbCBmb3JtLCBzb2xvIHN1YmllbmRvIHVuIGFyY2hpdm8uIFVuIHNwaW5uZXIgYWPDoVxuICAgICAgLy8gY29uZnVuZGUgKHBhcmVjZSBxdWUgZWwgZm9ybSBzZSBlc3TDoSBlbnZpYW5kbykuXG4gICAgICBhY3Rpb25TdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEIHx8IHRoaXMuZm9ybT8udmFsaWQpIHtcbiAgICAgIGFjdGlvblN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbeyAuLi50aGlzLnByb3BzLmFjdGlvbnMsIHN0YXRlOiBhY3Rpb25TdGF0ZSB9XTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFudXAgc3Vic2NyaXB0aW9ucyB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZmllbGROYW1lLCB2YWx1ZSB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkludmFsaWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoeyBmaWVsZHM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0b2tlbiB9KTtcbiAgfVxuXG4gIG9uQXR0YWNobWVudENoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgaXRlbXM6IEF0dGFjaG1lbnRJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCByZWFkeVVybHMgPSBpdGVtcy5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JyAmJiBhLnVybCkubWFwKGEgPT4gYS51cmwhKTtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKHJlYWR5VXJscywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGlmIChpdGVtcy5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSkge1xuICAgICAgdGhpcy51cGxvYWRpbmdGaWVsZHMuYWRkKGZpZWxkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBsb2FkaW5nRmllbGRzLmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2woZmllbGQ6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5Gb3JtLmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvKipcbiAgICogSWRzIGVzdGFibGVzIChsYWJlbCArIGVycm9yKSBwYXJhIHVuIGZpZWxkLiBNZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIHBhcmFcbiAgICogcXVlIGVsIHdpcmluZyBgYXJpYS1sYWJlbGxlZGJ5YCAvIGBhcmlhLWRlc2NyaWJlZGJ5YCBubyBjYW1iaWUgZW50cmUgY2ljbG9zXG4gICAqIGRlIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGZpZWxkSWRzKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9IHtcbiAgICBsZXQgaWRzID0gdGhpcy5maWVsZElkTWVtby5nZXQoZmllbGQpO1xuICAgIGlmICghaWRzKSB7XG4gICAgICBjb25zdCBiYXNlID0gYHZhbC1mb3JtLWZpZWxkLSR7dGhpcy5maWVsZFVpZCsrfWA7XG4gICAgICBpZHMgPSB7IGxhYmVsSWQ6IGAke2Jhc2V9LWxhYmVsYCwgZXJyb3JJZDogYCR7YmFzZX0tZXJyb3JgIH07XG4gICAgICB0aGlzLmZpZWxkSWRNZW1vLnNldChmaWVsZCwgaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcztcbiAgfVxuXG4gIC8qKiBJZCBkZWwgbGFiZWwgdmlzaWJsZSBkZWwgY2FtcG8gKGNvbnN1bWlkbyBwb3IgZWwgdGVtcGxhdGUgKyBlbCBpbnB1dCkuICovXG4gIGxhYmVsSWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5sYWJlbElkO1xuICB9XG5cbiAgLyoqIElkIGRlbCBjb250ZW5lZG9yIGRlIGVycm9yIChgdmFsLWhpbnRgKSBkZWwgY2FtcG8uICovXG4gIGVycm9ySWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5lcnJvcklkO1xuICB9XG5cbiAgZ2V0RmllbGRQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5maWVsZFByb3BNZW1vLmdldChmaWVsZCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGlmICghZmllbGQudG9rZW4pIHtcbiAgICAgIGZpZWxkLnRva2VuID0gYGlucHV0LSR7ZmllbGQudHlwZX0tJHtmaWVsZC5uYW1lfWA7XG4gICAgfVxuXG4gICAgY29uc3QgaWRzID0gdGhpcy5maWVsZElkcyhmaWVsZCk7XG5cbiAgICBsZXQgcmVzdWx0OiBJbnB1dE1ldGFkYXRhO1xuICAgIGlmIChmaWVsZC50eXBlID09PSB0aGlzLnR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICBjb25zdCBmcm9tQ29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChgJHtmaWVsZC5uYW1lfV9mcm9tYCk7XG4gICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcbiAgICAgIHJlc3VsdCA9IHsgLi4uZmllbGQsIGZyb21Db250cm9sLCB0b0NvbnRyb2wsIGNvbnRyb2w6IHVuZGVmaW5lZCwgbGFiZWxJZDogaWRzLmxhYmVsSWQsIGVycm9ySWQ6IGlkcy5lcnJvcklkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woZmllbGQubmFtZSk7XG4gICAgICByZXN1bHQgPSB7IC4uLmZpZWxkLCBjb250cm9sLCBsYWJlbElkOiBpZHMubGFiZWxJZCwgZXJyb3JJZDogaWRzLmVycm9ySWQgfTtcbiAgICB9XG4gICAgdGhpcy5maWVsZFByb3BNZW1vLnNldChmaWVsZCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkYXB0ZXIgcGFyYSBsb3MgdGlwb3MgY29sYXBzYWRvcyBlbiBgdmFsLXRleHQtaW5wdXRgIChFTUFJTC9OVU1CRVIvSE9VUikuXG4gICAqIFJldXNhIGBnZXRGaWVsZFByb3BgIChjb24gc3UgY29udHJvbCArIHdpcmluZyBkZSBpZHMpIGUgaW55ZWN0YSBlbCBgaW5wdXRUeXBlYFxuICAgKiBIVE1MIG5hdGl2by4gTWVtb2l6YWRvIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkIHBhcmEgbm8gcm9tcGVyIGxhIGlkZW50aWRhZC5cbiAgICovXG4gIGdldFRleHRJbnB1dFByb3AoZmllbGQ6IElucHV0TWV0YWRhdGEsIGlucHV0VHlwZTogTm9uTnVsbGFibGU8SW5wdXRNZXRhZGF0YVsnaW5wdXRUeXBlJ10+KTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgaW5wdXRUeXBlIH07XG4gICAgdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIHBhcmEgU0VMRUNUIOKAlCBpZ3VhbCBxdWUgYGdldEZpZWxkUHJvcGAgcGVybyBsaW1waWEgYGxhYmVsYC5cbiAgICogdmFsLWZvcm0geWEgcmVuZGVyaXphIGVsIHTDrXR1bG8gZGVsIGNhbXBvIGNvbiBgPHZhbC10aXRsZT5gIGFycmliYSBkZWwgaW5wdXQ7XG4gICAqIHNpIGFkZW3DoXMgcGFzw6FyYW1vcyBgbGFiZWxgIGFsIGA8aW9uLXNlbGVjdD5gLCBlc3RlIGxvIHBpbnRhIERFTlRSTyBkZWwgcGlsbFxuICAgKiDihpIgcmVkdW5kYW5jaWEgdmlzdWFsIChcIlRpcG9cIiBkb3MgdmVjZXMpLiBSZXVzYSBlbCBtaXNtbyBtZW1vIChjb24gbGEgZW50cmFkYVxuICAgKiB5YSBsYWJlbC1zdHJpcHBlZCkgcGFyYSBubyByb21wZXIgbGEgaWRlbnRpZGFkIGRlIHJlZmVyZW5jaWEuXG4gICAqL1xuICBnZXRTZWxlY3RQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zZWxlY3RQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgbGFiZWw6ICcnIH07XG4gICAgdGhpcy5zZWxlY3RQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1IQU5ETEUpIGEgYFVzZXJuYW1lSW5wdXRNZXRhZGF0YWAuXG4gICAqIEVsIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkIHNlIHJlc3VlbHZlIGRlbnRybyBkZWwgY29tcG9uZW50IChBdXRoU2VydmljZSBpbnllY3RhZG8pO1xuICAgKiBlbCBjYWxsZXIgcHVlZGUgc29icmVzY3JpYmlybG8gcGFzYW5kbyBgZmllbGQuZXJyb3JzYCBvIHVuIGBVc2VybmFtZUlucHV0TWV0YWRhdGFgXG4gICAqIGN1c3RvbSB1c2FuZG8gdHlwZT1URVhUIHNpIG5lY2VzaXRhIG90cmEgZnVlbnRlIGRlIHRydXRoLlxuICAgKi9cbiAgZ2V0VXNlcm5hbWVQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVXNlcm5hbWVJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnVzZXJuYW1lUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFVzZXJuYW1lSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgIGhpbnQ6IGZpZWxkLmhpbnQsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIsXG4gICAgICBtaW5MZW5ndGg6IGZpZWxkLnJhbmdlPy5taW4sXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXgsXG4gICAgICBlcnJvcnM6IGZpZWxkLmVycm9ycyxcbiAgICAgIHN0YXRlOiBmaWVsZC5zdGF0ZSxcbiAgICB9O1xuICAgIHRoaXMudXNlcm5hbWVQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1EQVRFX1BJQ0tFUikgYSBgRGF0ZVBpY2tlck1ldGFkYXRhYC5cbiAgICogbGFiZWwvaGludCBzZSBvbWl0ZW4g4oCUIHZhbC1mb3JtIGxvcyByZW5kZXJpemEgdsOtYSAuZmllbGQtbmFtZS8uZmllbGQtZGVzY3JpcHRpb24uXG4gICAqL1xuICBnZXREYXRlUGlja2VyUHJvcChmaWVsZDogSW5wdXRNZXRhZGF0YSk6IERhdGVQaWNrZXJNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICBjb25zdCByZXN1bHQ6IERhdGVQaWNrZXJNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2wsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgdG9rZW46IGZpZWxkLnRva2VuLFxuICAgIH07XG4gICAgdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlciDigJQgY29udmllcnRlIHVuIGBJbnB1dE1ldGFkYXRhYCAoY29uIHR5cGU9VEVYVEFSRUEpIGEgYFRleHRhcmVhSW5wdXRNZXRhZGF0YWAuXG4gICAqIERlZmF1bHRzIHNlbnNhdG9zOiBhdXRvR3JvdyArIGNvdW50ZXIgaGFiaWxpdGFkbywgNC0xMiByb3dzLlxuICAgKi9cbiAgZ2V0VGV4dGFyZWFQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVGV4dGFyZWFJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnRleHRhcmVhUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAvLyBsYWJlbCB2YWPDrW8g4oCUIHZhbC1mb3JtIHlhIHJlbmRlcml6YSBlbCB0w610dWxvIGNvbiA8dmFsLXRpdGxlPiBhcnJpYmEgZGVsXG4gICAgICAvLyBpbnB1dC4gUGFzYXJsbyBhbCA8aW9uLXRleHRhcmVhPiBkdXBsaWNhcsOtYSBlbCB0ZXh0byAoXCJEZXNjcmlwY2nDs25cIiB4MikuXG4gICAgICBsYWJlbDogJycsXG4gICAgICBoaW50OiBmaWVsZC5oaW50LFxuICAgICAgcGxhY2Vob2xkZXI6IGZpZWxkLnBsYWNlaG9sZGVyLFxuICAgICAgYXV0b0dyb3c6IHRydWUsXG4gICAgICBtaW5Sb3dzOiA0LFxuICAgICAgbWF4Um93czogMTIsXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXggPz8gMjAwMCxcbiAgICAgIHNob3dDb3VudGVyOiB0cnVlLFxuICAgICAgY291bnRlckZvcm1hdDogJ2N1cnJlbnQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgZXJyb3JzOiBmaWVsZC5lcnJvcnMsXG4gICAgICBzdGF0ZTogZmllbGQuc3RhdGUsXG4gICAgfTtcbiAgICB0aGlzLnRleHRhcmVhUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgaXNBdEVuZE9mRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNBdEVuZCh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1ZXJ6YSBtb3N0cmFyIGxvcyBlcnJvcmVzIGRlIHZhbGlkYWNpw7NuIChtYXJjYSB0b2RvcyBsb3MgY29udHJvbGVzIGNvbW9cbiAgICogdG91Y2hlZCkgeSBkZXZ1ZWx2ZSBzaSBlbCBmb3JtIGVzIHbDoWxpZG8uIFBlbnNhZG8gcGFyYSBlbCBtb2RvIGBjb250cm9sbGVkYDpcbiAgICogZWwgaG9zdCBsbyBpbnZvY2EgZW4gc3UgXCJTaWd1aWVudGVcIiBwYXJhIGdhdGVhciBsYSBuYXZlZ2FjacOzbiBkZWwgd2l6YXJkLlxuICAgKi9cbiAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHRvZG9zIGxvcyBjb250cm9sZXMgY29tbyB0b3VjaGVkIChtdWVzdHJhIGVycm9yZXMpIHNpbiBkZXZvbHZlciBuYWRhLlxuICAgKiBBbGlhcyBzZW3DoW50aWNvIGRlIGxhIHByaW1lcmEgbWl0YWQgZGUgYHZhbGlkYXRlKClgLlxuICAgKi9cbiAgbWFya0FsbFRvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGdldCBGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybTtcbiAgfVxuXG4gIGdldCBGb3JtU3RhdGUoKTogeyBmb3JtOiBGb3JtR3JvdXA7IGRhdGE6IEZvcm1NZXRhZGF0YSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5Gb3JtLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKTogQnV0dG9uTWV0YWRhdGFbXSB7XG4gICAgLy8gUmV0b3JuYXIgZGVsIGNhY2hlIHBhcmEgZXZpdGFyIGNyZWFyIG51ZXZvcyBvYmpldG9zIGVuIGNhZGEgY2ljbG8gZGUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiB0aGlzLmFjdGlvbnNDYWNoZTtcbiAgfVxuICAvLyDilIDilIAgU3VnZXJlbmNpYSBkZSBkb21pbmlvIGRlIGNvcnJlbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy9cbiAgLy8gVml2ZSBlbiBlbCBmb3JtdWxhcmlvIHkgbm8gZW4gY2FkYSBhcHA6IGVsIGNhbXBvIEVNQUlMIHlhIGVzdMOhIGNlbnRyYWxpemFkb1xuICAvLyBhY8OhLCBhc8OtIHF1ZSB0b2RhIGFwcCBkZWwgZmFjdG9yeSBoZXJlZGEgbGEgYXl1ZGEgc2luIGVzY3JpYmlyIHVuYSBsw61uZWEuXG4gIC8vIE5hY2UgZGUgdW4gcmVib3RlIHJlYWwgZW4gcHJvZHVjY2nDs246IHVuIHR5cG8gZW4gZWwgZG9taW5pbyBkZWrDsyBhIHVuYVxuICAvLyBjb21wcmFkb3JhIHNpbiBzdXMgZW50cmFkYXMgeSBuYWRpZSBzZSBlbnRlcsOzIGhhc3RhIHF1ZSByZWNsYW3Dsy5cblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG5TdWdnZXN0aW9uID0gaW5qZWN0KEkxOG5TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogU3VnZXJlbmNpYXMgZGVzY2FydGFkYXMgcG9yIGVsIHVzdWFyaW8sIHBhcmEgbm8gdm9sdmVyIGEgaW5zaXN0aXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGlvbkRpc21pc3NlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBlbCBjb3JyZW8gY29ycmVnaWRvIGEgc3VnZXJpciwgbyBudWxsLlxuICAgKlxuICAgKiBTb2xvIHN1Z2llcmUgY3VhbmRvIGVsIGNhbXBvIE5PIHRpZW5lIGZvY286IG1pZW50cmFzIHNlIGVzY3JpYmUsIHRvZG9cbiAgICogY29ycmVvIGEgbWVkaW8gdGVjbGVhciBwYXJlY2UgdW4gdHlwbyB5IGxhIHN1Z2VyZW5jaWEgcGFycGFkZWFyw61hLlxuICAgKi9cbiAgZW1haWxTdWdnZXN0aW9uRm9yKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gRWwgY29udHJvbCBOTyB2aWVuZSBlbiBlbCBmaWVsZCBjcnVkbzogdmFsLWZvcm0gbG8gcmVzdWVsdmUgcG9yIG5vbWJyZVxuICAgIC8vIGNvbnRyYSBzdSBwcm9waW8gRm9ybUdyb3VwIChgZ2V0Q29udHJvbGApLiBMZWVyIGBmaWVsZC5jb250cm9sYCBkZXZvbHbDrWFcbiAgICAvLyB1bmRlZmluZWQgc2llbXByZSwgYXPDrSBxdWUgbGEgc3VnZXJlbmNpYSBubyBhcGFyZWPDrWEgbnVuY2Eg4oCUIHkgc29sbyBzZVxuICAgIC8vIG5vdMOzIGNvbiBlbCBlMmUsIHBvcnF1ZSBlbCBzcGVjIGRlbCBjb21wb25lbnRlIGxlIHBhc2FiYSBlbCBjb250cm9sIGFcbiAgICAvLyBtYW5vIHkgcG9yIGVzbyBwYXNhYmEgZW4gdmVyZGUuXG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnN0IHZhbG9yID0gdHlwZW9mIGNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbnRyb2wudmFsdWUgOiAnJztcbiAgICBpZiAoIXZhbG9yIHx8ICFjb250cm9sPy50b3VjaGVkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWdlcmlkbyA9IHN1Z2dlc3RFbWFpbEZpeCh2YWxvcik7XG4gICAgaWYgKCFzdWdlcmlkbyB8fCB0aGlzLnN1Z2dlc3Rpb25EaXNtaXNzZWQuaGFzKHN1Z2VyaWRvKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHN1Z2VyaWRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1c2NhIGVsIGNvbnRyb2wgc2luIGV4cGxvdGFyIHNpIGVsIGZvcm11bGFyaW8gdG9kYXbDrWEgbm8gc2UgY29uc3RydXnDsy5cbiAgICogYGdldENvbnRyb2xgIGFzdW1lIGBGb3JtYCB5YSBpbmljaWFsaXphZG87IGFjw6Egc2UgbGxhbWEgZGVzZGUgZWwgdGVtcGxhdGUsXG4gICAqIHF1ZSBwdWVkZSBldmFsdWFyc2UgYW50ZXMgZGUgYG5nT25Jbml0YCBlbiBhbGd1bm9zIGNpY2xvcy5cbiAgICovXG4gIHByaXZhdGUgY29udHJvbFBvck5vbWJyZShub21icmU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIW5vbWJyZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5Gb3JtPy5nZXQobm9tYnJlKSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbihzdWdlcmlkbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0byA9IHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbicsICfCv1F1aXNpc3RlIGRlY2lyIHtlbWFpbH0/Jyk7XG4gICAgcmV0dXJuIHRleHRvLnJlcGxhY2UoJ3tlbWFpbH0nLCBzdWdlcmlkbyk7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25BcHBseUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25BcHBseScsICdTw60sIGNvcnJlZ2lyJyk7XG4gIH1cblxuICAvKipcbiAgICogVHJhZHVjZSBjb24gcmVzcGFsZG8gcmVhbC5cbiAgICpcbiAgICogYEkxOG5TZXJ2aWNlLnQoKWAgTk8gZGV2dWVsdmUgbnVsbCBjdWFuZG8gZmFsdGEgbGEgY2xhdmU6IGRldnVlbHZlIHZhY8OtbyBvXG4gICAqIHVuIHBsYWNlaG9sZGVyIGBbbmFtZXNwYWNlLmtleV1gLiBDb24gYD8/YCBlbCByZXNwYWxkbyBudW5jYSBlbnRyYWJhIHkgZWxcbiAgICogcmVuZ2zDs24gc2Fsw61hIGVuIGJsYW5jbyBlbiBjdWFscXVpZXIgYXBwIHF1ZSBubyByZWdpc3RyYXJhIGxhIGNsYXZlLiBMb1xuICAgKiBlbmNvbnRyw7MgZWwgc3BlYyBkZWwgY29tcG9uZW50ZSwgbm8gbGEgcmV2aXNpw7NuIGEgb2pvLlxuICAgKi9cbiAgcHJpdmF0ZSB0ZXh0b0kxOG4oa2V5OiBzdHJpbmcsIHJlc3BhbGRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRvID0gdGhpcy5pMThuU3VnZ2VzdGlvbj8udChrZXkpID8/ICcnO1xuICAgIGlmICghdGV4dG8gfHwgdGV4dG8uc3RhcnRzV2l0aCgnWycpKSByZXR1cm4gcmVzcGFsZG87XG4gICAgcmV0dXJuIHRleHRvO1xuICB9XG5cbiAgLyoqIEFwbGljYSBsYSBjb3JyZWNjacOzbi4gRXMgbGEgw7puaWNhIHbDrWE6IG5hZGEgc2UgcmVlc2NyaWJlIHNpbiBlc3RlIGNsaWMuICovXG4gIGFwcGx5RW1haWxTdWdnZXN0aW9uKGZpZWxkOiBJbnB1dE1ldGFkYXRhLCBzdWdlcmlkbzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnRyb2w/LnNldFZhbHVlKHN1Z2VyaWRvKTtcbiAgICBjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgIC8vIEFwbGljYWRhIGRlamEgZGUgb2ZyZWNlcnNlOyBzaSBlbCB1c3VhcmlvIHZ1ZWx2ZSBhIGVzY3JpYmlyIG1hbCwgZWxcbiAgICAvLyB2YWxvciBzZXLDoSBvdHJvIHkgbGEgc3VnZXJlbmNpYSByZWFwYXJlY2UuXG4gICAgdGhpcy5zdWdnZXN0aW9uRGlzbWlzc2VkLmFkZChzdWdlcmlkbyk7XG4gIH1cblxufVxuIl19
864
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Zvcm0vZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVDLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVB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QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErSVQ7eUdBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IHN1Z2dlc3RFbWFpbEZpeCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm1zL2VtYWlsLXN1Z2dlc3Rpb24nO1xuaW1wb3J0IHsgaXNBdEVuZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9kb20nO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGl2aWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYnV0dG9uLWdyb3VwL2J1dHRvbi1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVjay1pbnB1dC9jaGVjay1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbWVudElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvY29tbWVudC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlck1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2RhdGUtcGlja2VyL3R5cGVzJztcbmltcG9ydCB7IEZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaGludC9oaW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1iZXJGcm9tVG9Db21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbnVtYmVyLWZyb20tdG8vbnVtYmVyLWZyb20tdG8uY29tcG9uZW50JztcbmltcG9ydCB7IFBhc3N3b3JkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBpbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3Bpbi1pbnB1dC9waW4taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdFNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3Qtc2VhcmNoL3NlbGVjdC1zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL211bHRpLXNlbGVjdC1zZWFyY2gvbXVsdGktc2VsZWN0LXNlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHQtaW5wdXQvdGV4dC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RleHRhcmVhLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGhvbmUtaW5wdXQvcGhvbmUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRvZ2dsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3RvZ2dsZS1pbnB1dC90b2dnbGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94UmFkaW9JbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGVja2JveC1yYWRpby1pbnB1dC9jaGVja2JveC1yYWRpby1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hpcFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jaGlwLXNlbGVjdC9jaGlwLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy91c2VybmFtZS1pbnB1dC91c2VybmFtZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlcm5hbWVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL3VzZXJuYW1lLWlucHV0L3R5cGVzJztcbmltcG9ydCB7IEF0dGFjaG1lbnRVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0gfSBmcm9tICcuLi9hdHRhY2htZW50LXVwbG9hZGVyL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhLCBDb21wb25lbnRTdGF0ZXMsIEZvcm1NZXRhZGF0YSwgRm9ybVN1Ym1pdCwgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZm9ybScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUlucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gICAgQnV0dG9uR3JvdXBDb21wb25lbnQsXG4gICAgRGl2aWRlckNvbXBvbmVudCxcbiAgICBIaW50Q29tcG9uZW50LFxuICAgIENvbW1lbnRJbnB1dENvbXBvbmVudCxcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIE51bWJlckZyb21Ub0NvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIFBhc3N3b3JkSW5wdXRDb21wb25lbnQsXG4gICAgUGluSW5wdXRDb21wb25lbnQsXG4gICAgU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIE11bHRpU2VsZWN0U2VhcmNoQ29tcG9uZW50LFxuICAgIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFBob25lSW5wdXRDb21wb25lbnQsXG4gICAgVG9nZ2xlSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoaXBTZWxlY3RDb21wb25lbnQsXG4gICAgVXNlcm5hbWVJbnB1dENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXG4gICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGFpbmVyLS1zdGlja3ktZm9vdGVyXT1cInByb3BzLnN0aWNreUZvb3RlciAmJiAhcHJvcHMuY29udHJvbGxlZFwiXG4gICAgICBbc3R5bGUuLS12YWwtZm9ybS1maWVsZC1nYXBdPVwicHJvcHMuZmllbGRTcGFjaW5nICE9IG51bGwgPyBwcm9wcy5maWVsZFNwYWNpbmcgKyAncHgnIDogbnVsbFwiXG4gICAgPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIEBpZiAocHJvcHMubmFtZSkge1xuICAgICAgICAgIDx2YWwtZGlzcGxheVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogcHJvcHMubmFtZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L3ZhbC1kaXNwbGF5PlxuICAgICAgICB9XG4gICAgICAgIEBmb3IgKHMgb2YgcHJvcHMuc2VjdGlvbnM7IHRyYWNrIHMubmFtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHMubmFtZSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiBmYWxzZSB9XCI+PC92YWwtdGl0bGU+XG4gICAgICAgICAgICBAZm9yIChmIG9mIHMuZmllbGRzOyB0cmFjayBmLm5hbWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0XCIgW2F0dHIuZGF0YS10ZXN0aWRdPVwiZi50b2tlblwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZi50eXBlICE9PSB0eXBlcy5QSE9ORSAmJiBmLnR5cGUgIT09IHR5cGVzLkhBTkRMRSAmJiBmLnR5cGUgIT09IHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgW2F0dHIuaWRdPVwibGFiZWxJZChmKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IGYubGFiZWwsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IGZhbHNlIH1cIj48L3ZhbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmllbGQtZGVzY3JpcHRpb25cIj57eyBmLmRlc2NyaXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAc3dpdGNoIChmLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdGV4dC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5URVhUQVJFQSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHRhcmVhLWlucHV0IFtwcm9wc109XCJnZXRUZXh0YXJlYVByb3AoZilcIj48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DSEVDSykge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWNoZWNrLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1jaGVjay1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5DT01NRU5UKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY29tbWVudC1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtY29tbWVudC1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5EQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIEBjYXNlICh0eXBlcy5FTUFJTCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ2VtYWlsJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Z2VyZW5jaWEgZGUgZG9taW5pby4gU2UgT0ZSRUNFLCBubyBzZSBhcGxpY2Egc29sYTogdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBkb21pbmlvIGNvcnBvcmF0aXZvIGxlZ8OtdGltbyBwdWVkZSBwYXJlY2Vyc2UgYSB1bm9cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXNpdm8sIHkgY29ycmVnaXJsbyBwb3Igc3UgY3VlbnRhIGxlIGNhbWJpYXLDrWEgZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb3JyZW8gYSBhbGd1aWVuIHF1ZSBsbyBlc2NyaWJpw7MgYmllbi4gLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxTdWdnZXN0aW9uRm9yKGYpOyBhcyBzdWdlcmlkbykge1xuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZW1haWwtc3VnZ2VzdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxTdWdnZXN0aW9uUXVlc3Rpb24oc3VnZXJpZG8pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVtYWlsLXN1Z2dlc3Rpb25fX2FwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5RW1haWxTdWdnZXN0aW9uKGYsIHN1Z2VyaWRvKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVtYWlsU3VnZ2VzdGlvbkFwcGx5TGFiZWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuRklMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLWZpbGUtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWZpbGUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSE9VUikge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRleHQtaW5wdXQgW3Byb3BzXT1cImdldFRleHRJbnB1dFByb3AoZiwgJ3RpbWUnKVwiPjwvdmFsLXRleHQtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuTlVNQkVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdGV4dC1pbnB1dCBbcHJvcHNdPVwiZ2V0VGV4dElucHV0UHJvcChmLCAnbnVtYmVyJylcIj48L3ZhbC10ZXh0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW51bWJlci1mcm9tLXRvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBBU1NXT1JEKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGFzc3dvcmQtaW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLXBhc3N3b3JkLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlBJTl9DT0RFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtcGluLWlucHV0IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1waW4taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUkFESU8pIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcmFkaW8taW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IFtwcm9wc109XCJnZXRTZWxlY3RQcm9wKGYpXCI+PC92YWwtc2VsZWN0LWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlNFQVJDSF9TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1zZWxlY3Qtc2VhcmNoIFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIj48L3ZhbC1zZWxlY3Qtc2VhcmNoPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLk1VTFRJX1NFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLW11bHRpLXNlbGVjdC1zZWFyY2ggW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLW11bHRpLXNlbGVjdC1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuUEhPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1waG9uZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtcGhvbmUtaW5wdXQ+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuSEFORExFKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtdXNlcm5hbWUtaW5wdXQgW3Byb3BzXT1cImdldFVzZXJuYW1lUHJvcChmKVwiPjwvdmFsLXVzZXJuYW1lLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLlRPR0dMRSkge1xuICAgICAgICAgICAgICAgICAgICA8dmFsLXRvZ2dsZS1pbnB1dCBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wKGYpXCI+PC92YWwtdG9nZ2xlLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNIRUNLQk9YX1JBRElPKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hlY2tib3gtcmFkaW8taW5wdXQgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoZWNrYm94LXJhZGlvLWlucHV0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkNISVBfU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDx2YWwtY2hpcC1zZWxlY3QgW3Byb3BzXT1cImdldEZpZWxkUHJvcChmKVwiPjwvdmFsLWNoaXAtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgQGNhc2UgKHR5cGVzLkFUVEFDSE1FTlQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1hdHRhY2htZW50LXVwbG9hZGVyXG4gICAgICAgICAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGludDogZi5oaW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkRm46IGYudXBsb2FkRm4sXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogZi5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEIHx8IGYuc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIChhdHRhY2htZW50c0NoYW5nZSk9XCJvbkF0dGFjaG1lbnRDaGFuZ2UoZi5uYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdmFsLWF0dGFjaG1lbnQtdXBsb2FkZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAY2FzZSAodHlwZXMuREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPHZhbC1kYXRlLXBpY2tlciBbcHJvcHNdPVwiZ2V0RGF0ZVBpY2tlclByb3AoZilcIj48L3ZhbC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHZhbC1oaW50IFtwcm9wc109XCJnZXRGaWVsZFByb3AoZilcIiBbaWRdPVwiZXJyb3JJZChmKVwiPjwvdmFsLWhpbnQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChwcm9wcy5zaG93RGl2aWRlcnMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIDx2YWwtZGl2aWRlciBbcHJvcHNdPVwieyBmaWxsOiAnc29saWQnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdtZWRpdW0nIH1cIj48L3ZhbC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXByb3BzLmNvbnRyb2xsZWQpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWFjdGlvbnNcIiBbY2xhc3Muc3VibWl0LWFjdGlvbnMtLXN0aWNreV09XCJwcm9wcy5zdGlja3lGb290ZXJcIj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uLWdyb3VwXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7IGJ1dHRvbnM6IGFjdGlvbnMsIHBvc2l0aW9uOiAnY2VudGVyJywgY29sdW1uZWQ6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgPjwvdmFsLWJ1dHRvbi1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgRG9DaGVjayB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBGb3JtTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3VibWl0PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JbnZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNlbGVjdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICB0eXBlcyA9IElucHV0VHlwZTtcbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIC8qKlxuICAgKiBWYWxvciBhY3R1YWwgZGVsIGZvcm0gKGBmb3JtLmdldFJhd1ZhbHVlKClgKSwgYWN0dWFsaXphZG8gZW4gY2FkYVxuICAgKiBgdmFsdWVDaGFuZ2VzYC4gUGVuc2FkbyBwYXJhIGVsIG1vZG8gYGNvbnRyb2xsZWRgOiBlbCBob3N0IGxvIGxlZSB2w61hXG4gICAqIGBAVmlld0NoaWxkKEZvcm1Db21wb25lbnQpYCBzaW4gdG9jYXIgZWwgRm9ybUdyb3VwIGRpcmVjdG8uIEVuIG1vZG8gbm9ybWFsXG4gICAqIHRhbWJpw6luIGVzdMOhIGRpc3BvbmlibGUuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG5cbiAgLyoqXG4gICAqIEVzdGFkbyBkZSB2YWxpZGV6IGRlbCBmb3JtLCBhY3R1YWxpemFkbyBlbiBjYWRhIGBzdGF0dXNDaGFuZ2VzYC4gUGFyYSBxdWVcbiAgICogZWwgaG9zdCAod2l6YXJkKSBoYWJpbGl0ZS9kZXNoYWJpbGl0ZSBzdSBib3TDs24gXCJTaWd1aWVudGVcIi5cbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBhY3Rpb25zQ2FjaGU6IEJ1dHRvbk1ldGFkYXRhW10gPSBbXTtcblxuICAvLyBNZW1vIGRlIGdldEZpZWxkUHJvcC9nZXRVc2VybmFtZVByb3AgcG9yIHJlZmVyZW5jaWEgZGUgZmllbGQg4oCUIGV2aXRhXG4gIC8vIGNyZWFyIHVuIG51ZXZvIG9iamV0byBwcm9wcyBwb3Iga2V5c3Ryb2tlIChjYWRhIENEIGN5Y2xlIGludm9jYXLDrWEgZWxcbiAgLy8gdGVtcGxhdGUgYmluZGluZywgbXVsdGlwbGljYW5kbyByZS1yZW5kZXJzIGVuIGNhc2NhZGEgcG9yICMgZmllbGRzKS5cbiAgLy8gV2Vha01hcDogc2kgbGEgcmVmZXJlbmNpYSBkZWwgZmllbGQgY2FtYmlhLCBlbCBjYWNoZSBzZSBsaWJlcmEuXG4gIHByaXZhdGUgZmllbGRQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIElucHV0TWV0YWRhdGE+KCk7XG4gIHByaXZhdGUgdXNlcm5hbWVQcm9wTWVtbyA9IG5ldyBXZWFrTWFwPElucHV0TWV0YWRhdGEsIFVzZXJuYW1lSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSB0ZXh0YXJlYVByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgVGV4dGFyZWFJbnB1dE1ldGFkYXRhPigpO1xuICBwcml2YXRlIHNlbGVjdFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgLy8gTWVtbyBkZSBwcm9wcyBjb24gdW4gaW5wdXRUeXBlIEhUTUwgaW55ZWN0YWRvIChFTUFJTC9OVU1CRVIvSE9VUiBjb2xhcHNhZG9zXG4gIC8vIGVuIHZhbC10ZXh0LWlucHV0KS4gQ2xhdmUgcG9yIGZpZWxkIHBhcmEgY29uc2VydmFyIGlkZW50aWRhZCBkZSByZWZlcmVuY2lhLlxuICBwcml2YXRlIHRleHRJbnB1dFByb3BNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgSW5wdXRNZXRhZGF0YT4oKTtcbiAgcHJpdmF0ZSBkYXRlUGlja2VyUHJvcE1lbW8gPSBuZXcgV2Vha01hcDxJbnB1dE1ldGFkYXRhLCBEYXRlUGlja2VyTWV0YWRhdGE+KCk7XG5cbiAgLy8gSWRzIGVzdGFibGVzIHBvciBmaWVsZCBwYXJhIGVsIHdpcmluZyBkZSBhY2Nlc2liaWxpZGFkIGxhYmVs4oaUaW5wdXTihpRlcnJvci5cbiAgLy8gRXN0YWJsZXMgZW50cmUgQ0QgY3ljbGVzIChtZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkKSDihpIgYXJpYS0qIG5vIHBhcnBhZGVhLlxuICBwcml2YXRlIGZpZWxkSWRNZW1vID0gbmV3IFdlYWtNYXA8SW5wdXRNZXRhZGF0YSwgeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9PigpO1xuICBwcml2YXRlIGZpZWxkVWlkID0gMDtcblxuICAvLyBFc3RhZG8gcHJldmlvIHBhcmEgZGV0ZWN0YXIgY2FtYmlvcyBlbiBuZ0RvQ2hlY2tcbiAgcHJpdmF0ZSBwcmV2aW91c1N0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcHJldmlvdXNVcGxvYWRpbmdDb3VudCA9IDA7XG5cbiAgLy8gQ2FtcG9zIEFUVEFDSE1FTlQgY29uIHVwbG9hZHMgZW4gY3Vyc28g4oCUIGJsb3F1ZWEgc3VibWl0ICsgREVTSEFCSUxJVEEgZWxcbiAgLy8gYm90w7NuIChubyBsb2FkaW5nOiBlbCBzcGlubmVyIHNlIHJlc2VydmEgcGFyYSBlbCBzdWJtaXQgcmVhbCBkZWwgZm9ybSkuXG4gIHByaXZhdGUgdXBsb2FkaW5nRmllbGRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge31cblxuICAvKiogQXJtYSBsYSBkZWZpbmljacOzbiBkZSBjb250cm9sZXMgKHZhbG9yIGluaWNpYWwgKyB2YWxpZGFkb3JlcykgZGVzZGUgYHByb3BzYC4gKi9cbiAgcHJpdmF0ZSBidWlsZEZvcm1Db250cm9sc0RlZigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2xzID0ge307XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIC8vIEhvbnJhIGBmaWVsZC52YWx1ZWAgYWwgY29uc3RydWlyIGVsIEZvcm1Hcm91cCBwYXJhIHF1ZSBjb250cm9sZXMgdGlwb1xuICAgICAgICAvLyBIQU5ETEUgKHF1ZSBjb25zdW1lbiBlbCBjb250cm9sIGRpcmVjdG8gdmlhIFtmb3JtQ29udHJvbF0pIHJlY2liYW4gZWxcbiAgICAgICAgLy8gdmFsb3IgaW5pY2lhbCBzaW4gcXVlIGVsIGNhbGxlciB0ZW5nYSBxdWUgcGF0Y2hWYWx1ZSBwb3N0LW1vdW50LlxuICAgICAgICAvLyBFbCBoZWxwZXIgYXBwbHlEZWZhdWx0VmFsdWVUb0NvbnRyb2wgKHZhbC10ZXh0LWlucHV0IGV0Yy4pIHNpZ3VlXG4gICAgICAgIC8vIGZ1bmNpb25hbmRvIOKAlCBlc2NyaWJlIHNvYnJlIHVuIGNvbnRyb2wgeWEgaW5pY2lhbGl6YWRvLCBpZGVtcG90ZW50ZS5cbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZmllbGQudmFsdWUgPz8gbnVsbDtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuTlVNQkVSX0ZST01fVE8pIHtcbiAgICAgICAgICAvLyBDcmVhciBkb3MgY29udHJvbGVzIHBhcmEgY2FtcG9zIE5VTUJFUl9GUk9NX1RPXG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2Ake2ZpZWxkLm5hbWV9X2Zyb21gXSA9IFtpbml0aWFsVmFsdWUsIGZpZWxkLnZhbGlkYXRvcnMgfHwgW11dO1xuICAgICAgICAgIGZvcm1Db250cm9sc1tgJHtmaWVsZC5uYW1lfV90b2BdID0gW2luaXRpYWxWYWx1ZSwgZmllbGQudmFsaWRhdG9ycyB8fCBbXV07XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgZm9ybUNvbnRyb2xzW2ZpZWxkLm5hbWVdID0gW1tdLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQubmFtZV0gPSBbaW5pdGlhbFZhbHVlLCBmaWVsZC52YWxpZGF0b3JzIHx8IFtdXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1Db250cm9scztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvbnN0cnV5ZSBlbCBgRm9ybUdyb3VwYCBkZXNkZSBjZXJvLCBjb24gbG9zIHZhbG9yZXMgaW5pY2lhbGVzIGRlIGBwcm9wc2BcbiAgICogYWN0dWFsZXMgKG5vIGxvcyBxdWUgZWwgdXN1YXJpbyBoYXlhIHRlY2xlYWRvIGRlc2RlIGVudG9uY2VzKS5cbiAgICpcbiAgICogRXhpc3RlIHBhcmEgZWwgY2FzbyBlbiBxdWUgQW5ndWxhciBOTyBkZXN0cnV5ZSBlbCBjb21wb25lbnRlIGVudHJlIGRvcyB1c29zXG4gICAqIOKAlCB0w61waWNhbWVudGUgYElvbmljUm91dGVTdHJhdGVneWAsIHF1ZSBjYWNoZWEgbGEgcMOhZ2luYSBydXRlYWRhIGFsIG5hdmVnYXJcbiAgICogYWZ1ZXJhIHkgbGEgcmV1dGlsaXphIGFsIHZvbHZlciBzaW4gY29ycmVyIGBuZ09uSW5pdGAgZGUgbnVldm8uIFNpbiBlc3RvLFxuICAgKiB1biBmb3JtIGRlIGxvZ2luIG1hbnRpZW5lIGxvIHF1ZSBlbCB1c3VhcmlvIGFudGVyaW9yIHRlY2xlw7MgZGVzcHXDqXMgZGVcbiAgICogY2VycmFyIHNlc2nDs24geSB2b2x2ZXIgYSBgL2xvZ2luYDogZWwgYEZvcm1Hcm91cGAgc2UgY29uc3RydXnDsyBVTkEgdmV6IHlcbiAgICogbmFkaWUgbG8gdG9jw7MgZGVzZGUgZW50b25jZXMuXG4gICAqXG4gICAqIFJlY29uc3RydXllIGVsIGBGb3JtR3JvdXBgIGVudGVybyAobm8gYC5yZXNldCh2YWx1ZXMpYCkgcG9ycXVlIGxhXG4gICAqIGRlZmluaWNpw7NuIHRyYWUgYFt2YWxvciwgdmFsaWRhdG9yc11gIHBvciBjb250cm9sLCBubyB2YWxvcmVzIHBsYW5vcyDigJRcbiAgICogcmV1c2FyIGBidWlsZEZvcm1Db250cm9sc0RlZigpYCB0YWwgY3VhbCBldml0YSBtYW50ZW5lciBkb3MgZm9ybWFzIGRlXG4gICAqIGNhbGN1bGFyIFwiY3XDoWwgZXMgZWwgdmFsb3IgaW5pY2lhbFwiIHF1ZSBwdWVkYW4gZGVzaW5jcm9uaXphcnNlLlxuICAgKlxuICAgKiBFbCBjYWxsZXIgKHTDrXBpY2FtZW50ZSBgdmFsLWxvZ2luYCwgdsOtYSBgaW9uVmlld1dpbGxFbnRlcmApIGRlY2lkZSBDVcOBTkRPXG4gICAqIGxsYW1hcmxvIOKAlCBhY8OhIG5vIGhheSBoZXVyw61zdGljYSBkZSBcImN1w6FuZG8gcmVzZXRlYXJcIiwgcG9ycXVlIHVuIGZvcm0gZGVcbiAgICogdmFyaW9zIHBhc29zIHPDrSBwb2Ryw61hIHF1ZXJlciBjb25zZXJ2YXIgbG8gdGVjbGVhZG8gYWwgdm9sdmVyIGEgdW5hXG4gICAqIHBlc3Rhw7FhLlxuICAgKi9cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtKSByZXR1cm47XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh0aGlzLmJ1aWxkRm9ybUNvbnRyb2xzRGVmKCkpO1xuICAgIHRoaXMucHJvcHMuc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uID0+IHtcbiAgICAgIHNlY3Rpb24uZmllbGRzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgeCA9PlxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlNFTEVDVCB8fFxuICAgICAgICAgICAgeC50eXBlID09PSB0aGlzLnR5cGVzLlRFWFQgfHxcbiAgICAgICAgICAgIHgudHlwZSA9PT0gdGhpcy50eXBlcy5TRUFSQ0hfU0VMRUNUIHx8XG4gICAgICAgICAgICB4LnR5cGUgPT09IHRoaXMudHlwZXMuTVVMVElfU0VMRUNUXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIHRoaXMudHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEVzdGFkbyByZWFjdGl2byBww7pibGljbyAodmFsdWUvdmFsaWQpIOKAlCBhY3R1YWxpemFkbyBwb3Igc3VzY3JpcGNpw7NuIFJ4SlMsXG4gICAgLy8gTk8gZGVudHJvIGRlIHVuIGVmZmVjdDogc2V0ZWFyIHNpZ25hbHMgYWPDoSBlcyBzZWd1cm8gKG5vIGRpc3BhcmEgTkcwNjAwKS5cbiAgICB0aGlzLnZhbHVlLnNldCh0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgdGhpcy52YWxpZC5zZXQodGhpcy5mb3JtLnZhbGlkKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZS5zZXQocmF3VmFsdWUpO1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdChyYXdWYWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMudmFsaWQuc2V0KHRoaXMuZm9ybS52YWxpZCkpKTtcblxuICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgIHRoaXMudXBkYXRlQWN0aW9uc0NhY2hlKCk7XG4gICAgdGhpcy5wcmV2aW91c1N0YXRlID0gdGhpcy5wcm9wcy5zdGF0ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBDdWFuZG8gcHJvcHMgY2FtYmlhLCByZWNvbnN0cnVpciBlbCBjYWNoZVxuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddICYmIHRoaXMuZm9ybSkge1xuICAgICAgdGhpcy5wYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTtcbiAgICAgIHRoaXMuc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpO1xuICAgICAgdGhpcy51cGRhdGVBY3Rpb25zQ2FjaGUoKTtcbiAgICAgIHRoaXMucHJldmlvdXNTdGF0ZSA9IHRoaXMucHJvcHMuc3RhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaEluaXRpYWxWYWx1ZXNGcm9tUHJvcHMoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xuICAgICAgc2VjdGlvbi5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGlmIChmaWVsZC52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIHRoaXMuZm9ybS5nZXQoYCR7ZmllbGQubmFtZX1fZnJvbWApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5mb3JtLmdldChgJHtmaWVsZC5uYW1lfV90b2ApPy5wYXRjaFZhbHVlKGZpZWxkLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoZmllbGQubmFtZSk/LnBhdGNoVmFsdWUoZmllbGQudmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudmFsdWUuc2V0KHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICB0aGlzLnZhbGlkLnNldCh0aGlzLmZvcm0udmFsaWQpO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIC8vIERldGVjdGFyIGNhbWJpb3MgZW4gZWwgZXN0YWRvIGRlbCBmb3JtdWxhcmlvIChtdXRhY2nDs24gc2luIGNhbWJpYXIgcmVmZXJlbmNpYSlcbiAgICBjb25zdCB1cGxvYWRpbmdDb3VudCA9IHRoaXMudXBsb2FkaW5nRmllbGRzLnNpemU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb3JtICYmXG4gICAgICB0aGlzLnByb3BzICYmXG4gICAgICAodGhpcy5wcm9wcy5zdGF0ZSAhPT0gdGhpcy5wcmV2aW91c1N0YXRlIHx8IHVwbG9hZGluZ0NvdW50ICE9PSB0aGlzLnByZXZpb3VzVXBsb2FkaW5nQ291bnQpXG4gICAgKSB7XG4gICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSB0aGlzLnByb3BzLnN0YXRlO1xuICAgICAgdGhpcy5wcmV2aW91c1VwbG9hZGluZ0NvdW50ID0gdXBsb2FkaW5nQ291bnQ7XG4gICAgICB0aGlzLnVwZGF0ZUFjdGlvbnNDYWNoZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jaHJvbml6ZXMgZm9ybSBjb250cm9sIGRpc2FibGVkL2VuYWJsZWQgc3RhdGUgd2l0aCBmaWVsZCBtZXRhZGF0YS5cbiAgICovXG4gIHByaXZhdGUgc3luY0ZpZWxkQ29udHJvbFN0YXRlcygpIHtcbiAgICB0aGlzLnByb3BzLnNlY3Rpb25zLmZvckVhY2goc2VjdGlvbiA9PiB7XG4gICAgICBzZWN0aW9uLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IHRoaXMudHlwZXMuQVRUQUNITUVOVCkgcmV0dXJuO1xuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gdGhpcy50eXBlcy5OVU1CRVJfRlJPTV9UTykge1xuICAgICAgICAgIGNvbnN0IGZyb21Db250cm9sID0gdGhpcy5nZXRDb250cm9sKGAke2ZpZWxkLm5hbWV9X2Zyb21gKTtcbiAgICAgICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcblxuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBmcm9tQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnJvbUNvbnRyb2wuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRvQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKGZpZWxkLm5hbWUpO1xuICAgICAgICAgIGlmIChmaWVsZC5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgY2FjaGUgZGUgYWN0aW9ucyBiYXNhZG8gZW4gZWwgZXN0YWRvIGFjdHVhbCBkZWwgZm9ybS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQWN0aW9uc0NhY2hlKCkge1xuICAgIC8vIEVuIG1vZG8gY29udHJvbGxlZCAobyBzaW4gc3VibWl0KSBubyBoYXkgYm90w7NuIHByb3BpbyBxdWUgY2FjaGVhci5cbiAgICBpZiAoIXRoaXMucHJvcHMuYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGFjdGlvblN0YXRlID0gdGhpcy5wcm9wcy5hY3Rpb25zLnN0YXRlO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAvLyBTdWJtaXQgcmVhbCBkZWwgZm9ybSBlbiBjdXJzbyDihpIgYm90w7NuIGVuIGxvYWRpbmcgKHNwaW5uZXIpLlxuICAgICAgYWN0aW9uU3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuV09SS0lORztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRCB8fCB0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkge1xuICAgICAgLy8gU3ViaWRhIGRlIGFkanVudG8gZW4gY3Vyc28g4oaSIERFU0hBQklMSVRBUiBlbCBzdWJtaXQsIE5PIGxvYWRpbmc6IHRvZGF2w61hXG4gICAgICAvLyBubyBzZSBlc3TDoSBlbnZpYW5kbyBlbCBmb3JtLCBzb2xvIHN1YmllbmRvIHVuIGFyY2hpdm8uIFVuIHNwaW5uZXIgYWPDoVxuICAgICAgLy8gY29uZnVuZGUgKHBhcmVjZSBxdWUgZWwgZm9ybSBzZSBlc3TDoSBlbnZpYW5kbykuXG4gICAgICBhY3Rpb25TdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEIHx8IHRoaXMuZm9ybT8udmFsaWQpIHtcbiAgICAgIGFjdGlvblN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQ2FjaGUgPSBbeyAuLi50aGlzLnByb3BzLmFjdGlvbnMsIHN0YXRlOiBhY3Rpb25TdGF0ZSB9XTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFudXAgc3Vic2NyaXB0aW9ucyB0byBhdm9pZCBtZW1vcnkgbGVha3NcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdHJhY2tTZWxlY3RDaGFuZ2VzKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZE5hbWUpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZmllbGROYW1lLCB2YWx1ZSB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0SGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVwbG9hZGluZ0ZpZWxkcy5zaXplID4gMCkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkludmFsaWQuZW1pdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9uU3VibWl0LmVtaXQoeyBmaWVsZHM6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0b2tlbiB9KTtcbiAgfVxuXG4gIG9uQXR0YWNobWVudENoYW5nZShmaWVsZE5hbWU6IHN0cmluZywgaXRlbXM6IEF0dGFjaG1lbnRJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCByZWFkeVVybHMgPSBpdGVtcy5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JyAmJiBhLnVybCkubWFwKGEgPT4gYS51cmwhKTtcbiAgICB0aGlzLmZvcm0uZ2V0KGZpZWxkTmFtZSk/LnNldFZhbHVlKHJlYWR5VXJscywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIGlmIChpdGVtcy5zb21lKGEgPT4gYS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSkge1xuICAgICAgdGhpcy51cGxvYWRpbmdGaWVsZHMuYWRkKGZpZWxkTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBsb2FkaW5nRmllbGRzLmRlbGV0ZShmaWVsZE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2woZmllbGQ6IHN0cmluZyk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5Gb3JtLmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICAvKipcbiAgICogSWRzIGVzdGFibGVzIChsYWJlbCArIGVycm9yKSBwYXJhIHVuIGZpZWxkLiBNZW1vaXphZG9zIHBvciByZWZlcmVuY2lhIHBhcmFcbiAgICogcXVlIGVsIHdpcmluZyBgYXJpYS1sYWJlbGxlZGJ5YCAvIGBhcmlhLWRlc2NyaWJlZGJ5YCBubyBjYW1iaWUgZW50cmUgY2ljbG9zXG4gICAqIGRlIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcml2YXRlIGZpZWxkSWRzKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogeyBsYWJlbElkOiBzdHJpbmc7IGVycm9ySWQ6IHN0cmluZyB9IHtcbiAgICBsZXQgaWRzID0gdGhpcy5maWVsZElkTWVtby5nZXQoZmllbGQpO1xuICAgIGlmICghaWRzKSB7XG4gICAgICBjb25zdCBiYXNlID0gYHZhbC1mb3JtLWZpZWxkLSR7dGhpcy5maWVsZFVpZCsrfWA7XG4gICAgICBpZHMgPSB7IGxhYmVsSWQ6IGAke2Jhc2V9LWxhYmVsYCwgZXJyb3JJZDogYCR7YmFzZX0tZXJyb3JgIH07XG4gICAgICB0aGlzLmZpZWxkSWRNZW1vLnNldChmaWVsZCwgaWRzKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcztcbiAgfVxuXG4gIC8qKiBJZCBkZWwgbGFiZWwgdmlzaWJsZSBkZWwgY2FtcG8gKGNvbnN1bWlkbyBwb3IgZWwgdGVtcGxhdGUgKyBlbCBpbnB1dCkuICovXG4gIGxhYmVsSWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5sYWJlbElkO1xuICB9XG5cbiAgLyoqIElkIGRlbCBjb250ZW5lZG9yIGRlIGVycm9yIChgdmFsLWhpbnRgKSBkZWwgY2FtcG8uICovXG4gIGVycm9ySWQoZmllbGQ6IElucHV0TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkSWRzKGZpZWxkKS5lcnJvcklkO1xuICB9XG5cbiAgZ2V0RmllbGRQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5maWVsZFByb3BNZW1vLmdldChmaWVsZCk7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGlmICghZmllbGQudG9rZW4pIHtcbiAgICAgIGZpZWxkLnRva2VuID0gYGlucHV0LSR7ZmllbGQudHlwZX0tJHtmaWVsZC5uYW1lfWA7XG4gICAgfVxuXG4gICAgY29uc3QgaWRzID0gdGhpcy5maWVsZElkcyhmaWVsZCk7XG5cbiAgICBsZXQgcmVzdWx0OiBJbnB1dE1ldGFkYXRhO1xuICAgIGlmIChmaWVsZC50eXBlID09PSB0aGlzLnR5cGVzLk5VTUJFUl9GUk9NX1RPKSB7XG4gICAgICBjb25zdCBmcm9tQ29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChgJHtmaWVsZC5uYW1lfV9mcm9tYCk7XG4gICAgICBjb25zdCB0b0NvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woYCR7ZmllbGQubmFtZX1fdG9gKTtcbiAgICAgIHJlc3VsdCA9IHsgLi4uZmllbGQsIGZyb21Db250cm9sLCB0b0NvbnRyb2wsIGNvbnRyb2w6IHVuZGVmaW5lZCwgbGFiZWxJZDogaWRzLmxhYmVsSWQsIGVycm9ySWQ6IGlkcy5lcnJvcklkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2woZmllbGQubmFtZSk7XG4gICAgICByZXN1bHQgPSB7IC4uLmZpZWxkLCBjb250cm9sLCBsYWJlbElkOiBpZHMubGFiZWxJZCwgZXJyb3JJZDogaWRzLmVycm9ySWQgfTtcbiAgICB9XG4gICAgdGhpcy5maWVsZFByb3BNZW1vLnNldChmaWVsZCwgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkYXB0ZXIgcGFyYSBsb3MgdGlwb3MgY29sYXBzYWRvcyBlbiBgdmFsLXRleHQtaW5wdXRgIChFTUFJTC9OVU1CRVIvSE9VUikuXG4gICAqIFJldXNhIGBnZXRGaWVsZFByb3BgIChjb24gc3UgY29udHJvbCArIHdpcmluZyBkZSBpZHMpIGUgaW55ZWN0YSBlbCBgaW5wdXRUeXBlYFxuICAgKiBIVE1MIG5hdGl2by4gTWVtb2l6YWRvIHBvciByZWZlcmVuY2lhIGRlIGZpZWxkIHBhcmEgbm8gcm9tcGVyIGxhIGlkZW50aWRhZC5cbiAgICovXG4gIGdldFRleHRJbnB1dFByb3AoZmllbGQ6IElucHV0TWV0YWRhdGEsIGlucHV0VHlwZTogTm9uTnVsbGFibGU8SW5wdXRNZXRhZGF0YVsnaW5wdXRUeXBlJ10+KTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgaW5wdXRUeXBlIH07XG4gICAgdGhpcy50ZXh0SW5wdXRQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIHBhcmEgU0VMRUNUIOKAlCBpZ3VhbCBxdWUgYGdldEZpZWxkUHJvcGAgcGVybyBsaW1waWEgYGxhYmVsYC5cbiAgICogdmFsLWZvcm0geWEgcmVuZGVyaXphIGVsIHTDrXR1bG8gZGVsIGNhbXBvIGNvbiBgPHZhbC10aXRsZT5gIGFycmliYSBkZWwgaW5wdXQ7XG4gICAqIHNpIGFkZW3DoXMgcGFzw6FyYW1vcyBgbGFiZWxgIGFsIGA8aW9uLXNlbGVjdD5gLCBlc3RlIGxvIHBpbnRhIERFTlRSTyBkZWwgcGlsbFxuICAgKiDihpIgcmVkdW5kYW5jaWEgdmlzdWFsIChcIlRpcG9cIiBkb3MgdmVjZXMpLiBSZXVzYSBlbCBtaXNtbyBtZW1vIChjb24gbGEgZW50cmFkYVxuICAgKiB5YSBsYWJlbC1zdHJpcHBlZCkgcGFyYSBubyByb21wZXIgbGEgaWRlbnRpZGFkIGRlIHJlZmVyZW5jaWEuXG4gICAqL1xuICBnZXRTZWxlY3RQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogSW5wdXRNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5zZWxlY3RQcm9wTWVtby5nZXQoZmllbGQpO1xuICAgIGlmIChjYWNoZWQpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBiYXNlID0gdGhpcy5nZXRGaWVsZFByb3AoZmllbGQpO1xuICAgIGNvbnN0IHJlc3VsdDogSW5wdXRNZXRhZGF0YSA9IHsgLi4uYmFzZSwgbGFiZWw6ICcnIH07XG4gICAgdGhpcy5zZWxlY3RQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1IQU5ETEUpIGEgYFVzZXJuYW1lSW5wdXRNZXRhZGF0YWAuXG4gICAqIEVsIGNoZWNrIGRlIGRpc3BvbmliaWxpZGFkIHNlIHJlc3VlbHZlIGRlbnRybyBkZWwgY29tcG9uZW50IChBdXRoU2VydmljZSBpbnllY3RhZG8pO1xuICAgKiBlbCBjYWxsZXIgcHVlZGUgc29icmVzY3JpYmlybG8gcGFzYW5kbyBgZmllbGQuZXJyb3JzYCBvIHVuIGBVc2VybmFtZUlucHV0TWV0YWRhdGFgXG4gICAqIGN1c3RvbSB1c2FuZG8gdHlwZT1URVhUIHNpIG5lY2VzaXRhIG90cmEgZnVlbnRlIGRlIHRydXRoLlxuICAgKi9cbiAgZ2V0VXNlcm5hbWVQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVXNlcm5hbWVJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnVzZXJuYW1lUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFVzZXJuYW1lSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgIGhpbnQ6IGZpZWxkLmhpbnQsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIsXG4gICAgICBtaW5MZW5ndGg6IGZpZWxkLnJhbmdlPy5taW4sXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXgsXG4gICAgICBlcnJvcnM6IGZpZWxkLmVycm9ycyxcbiAgICAgIHN0YXRlOiBmaWVsZC5zdGF0ZSxcbiAgICB9O1xuICAgIHRoaXMudXNlcm5hbWVQcm9wTWVtby5zZXQoZmllbGQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGFwdGVyIOKAlCBjb252aWVydGUgdW4gYElucHV0TWV0YWRhdGFgIChjb24gdHlwZT1EQVRFX1BJQ0tFUikgYSBgRGF0ZVBpY2tlck1ldGFkYXRhYC5cbiAgICogbGFiZWwvaGludCBzZSBvbWl0ZW4g4oCUIHZhbC1mb3JtIGxvcyByZW5kZXJpemEgdsOtYSAuZmllbGQtbmFtZS8uZmllbGQtZGVzY3JpcHRpb24uXG4gICAqL1xuICBnZXREYXRlUGlja2VyUHJvcChmaWVsZDogSW5wdXRNZXRhZGF0YSk6IERhdGVQaWNrZXJNZXRhZGF0YSB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKSBhcyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICBjb25zdCByZXN1bHQ6IERhdGVQaWNrZXJNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2wsXG4gICAgICBwbGFjZWhvbGRlcjogZmllbGQucGxhY2Vob2xkZXIgfHwgdW5kZWZpbmVkLFxuICAgICAgdG9rZW46IGZpZWxkLnRva2VuLFxuICAgIH07XG4gICAgdGhpcy5kYXRlUGlja2VyUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQWRhcHRlciDigJQgY29udmllcnRlIHVuIGBJbnB1dE1ldGFkYXRhYCAoY29uIHR5cGU9VEVYVEFSRUEpIGEgYFRleHRhcmVhSW5wdXRNZXRhZGF0YWAuXG4gICAqIERlZmF1bHRzIHNlbnNhdG9zOiBhdXRvR3JvdyArIGNvdW50ZXIgaGFiaWxpdGFkbywgNC0xMiByb3dzLlxuICAgKi9cbiAgZ2V0VGV4dGFyZWFQcm9wKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogVGV4dGFyZWFJbnB1dE1ldGFkYXRhIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnRleHRhcmVhUHJvcE1lbW8uZ2V0KGZpZWxkKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbChmaWVsZC5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQ6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRyb2w6IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAvLyBsYWJlbCB2YWPDrW8g4oCUIHZhbC1mb3JtIHlhIHJlbmRlcml6YSBlbCB0w610dWxvIGNvbiA8dmFsLXRpdGxlPiBhcnJpYmEgZGVsXG4gICAgICAvLyBpbnB1dC4gUGFzYXJsbyBhbCA8aW9uLXRleHRhcmVhPiBkdXBsaWNhcsOtYSBlbCB0ZXh0byAoXCJEZXNjcmlwY2nDs25cIiB4MikuXG4gICAgICBsYWJlbDogJycsXG4gICAgICBoaW50OiBmaWVsZC5oaW50LFxuICAgICAgcGxhY2Vob2xkZXI6IGZpZWxkLnBsYWNlaG9sZGVyLFxuICAgICAgYXV0b0dyb3c6IHRydWUsXG4gICAgICBtaW5Sb3dzOiA0LFxuICAgICAgbWF4Um93czogMTIsXG4gICAgICBtYXhMZW5ndGg6IGZpZWxkLnJhbmdlPy5tYXggPz8gMjAwMCxcbiAgICAgIHNob3dDb3VudGVyOiB0cnVlLFxuICAgICAgY291bnRlckZvcm1hdDogJ2N1cnJlbnQnLFxuICAgICAgZmlsbDogJ291dGxpbmUnLFxuICAgICAgZXJyb3JzOiBmaWVsZC5lcnJvcnMsXG4gICAgICBzdGF0ZTogZmllbGQuc3RhdGUsXG4gICAgfTtcbiAgICB0aGlzLnRleHRhcmVhUHJvcE1lbW8uc2V0KGZpZWxkLCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgaXNBdEVuZE9mRm9ybSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNBdEVuZCh0aGlzLmVsZW1lbnRSZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1ZXJ6YSBtb3N0cmFyIGxvcyBlcnJvcmVzIGRlIHZhbGlkYWNpw7NuIChtYXJjYSB0b2RvcyBsb3MgY29udHJvbGVzIGNvbW9cbiAgICogdG91Y2hlZCkgeSBkZXZ1ZWx2ZSBzaSBlbCBmb3JtIGVzIHbDoWxpZG8uIFBlbnNhZG8gcGFyYSBlbCBtb2RvIGBjb250cm9sbGVkYDpcbiAgICogZWwgaG9zdCBsbyBpbnZvY2EgZW4gc3UgXCJTaWd1aWVudGVcIiBwYXJhIGdhdGVhciBsYSBuYXZlZ2FjacOzbiBkZWwgd2l6YXJkLlxuICAgKi9cbiAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmNhIHRvZG9zIGxvcyBjb250cm9sZXMgY29tbyB0b3VjaGVkIChtdWVzdHJhIGVycm9yZXMpIHNpbiBkZXZvbHZlciBuYWRhLlxuICAgKiBBbGlhcyBzZW3DoW50aWNvIGRlIGxhIHByaW1lcmEgbWl0YWQgZGUgYHZhbGlkYXRlKClgLlxuICAgKi9cbiAgbWFya0FsbFRvdWNoZWQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGdldCBGb3JtKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybTtcbiAgfVxuXG4gIGdldCBGb3JtU3RhdGUoKTogeyBmb3JtOiBGb3JtR3JvdXA7IGRhdGE6IEZvcm1NZXRhZGF0YSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5Gb3JtLFxuICAgICAgZGF0YTogdGhpcy5wcm9wcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGFjdGlvbnMoKTogQnV0dG9uTWV0YWRhdGFbXSB7XG4gICAgLy8gUmV0b3JuYXIgZGVsIGNhY2hlIHBhcmEgZXZpdGFyIGNyZWFyIG51ZXZvcyBvYmpldG9zIGVuIGNhZGEgY2ljbG8gZGUgY2hhbmdlIGRldGVjdGlvblxuICAgIHJldHVybiB0aGlzLmFjdGlvbnNDYWNoZTtcbiAgfVxuICAvLyDilIDilIAgU3VnZXJlbmNpYSBkZSBkb21pbmlvIGRlIGNvcnJlbyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgLy9cbiAgLy8gVml2ZSBlbiBlbCBmb3JtdWxhcmlvIHkgbm8gZW4gY2FkYSBhcHA6IGVsIGNhbXBvIEVNQUlMIHlhIGVzdMOhIGNlbnRyYWxpemFkb1xuICAvLyBhY8OhLCBhc8OtIHF1ZSB0b2RhIGFwcCBkZWwgZmFjdG9yeSBoZXJlZGEgbGEgYXl1ZGEgc2luIGVzY3JpYmlyIHVuYSBsw61uZWEuXG4gIC8vIE5hY2UgZGUgdW4gcmVib3RlIHJlYWwgZW4gcHJvZHVjY2nDs246IHVuIHR5cG8gZW4gZWwgZG9taW5pbyBkZWrDsyBhIHVuYVxuICAvLyBjb21wcmFkb3JhIHNpbiBzdXMgZW50cmFkYXMgeSBuYWRpZSBzZSBlbnRlcsOzIGhhc3RhIHF1ZSByZWNsYW3Dsy5cblxuICBwcml2YXRlIHJlYWRvbmx5IGkxOG5TdWdnZXN0aW9uID0gaW5qZWN0KEkxOG5TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAvKiogU3VnZXJlbmNpYXMgZGVzY2FydGFkYXMgcG9yIGVsIHVzdWFyaW8sIHBhcmEgbm8gdm9sdmVyIGEgaW5zaXN0aXIuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGlvbkRpc21pc3NlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBEZXZ1ZWx2ZSBlbCBjb3JyZW8gY29ycmVnaWRvIGEgc3VnZXJpciwgbyBudWxsLlxuICAgKlxuICAgKiBTb2xvIHN1Z2llcmUgY3VhbmRvIGVsIGNhbXBvIE5PIHRpZW5lIGZvY286IG1pZW50cmFzIHNlIGVzY3JpYmUsIHRvZG9cbiAgICogY29ycmVvIGEgbWVkaW8gdGVjbGVhciBwYXJlY2UgdW4gdHlwbyB5IGxhIHN1Z2VyZW5jaWEgcGFycGFkZWFyw61hLlxuICAgKi9cbiAgZW1haWxTdWdnZXN0aW9uRm9yKGZpZWxkOiBJbnB1dE1ldGFkYXRhKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgLy8gRWwgY29udHJvbCBOTyB2aWVuZSBlbiBlbCBmaWVsZCBjcnVkbzogdmFsLWZvcm0gbG8gcmVzdWVsdmUgcG9yIG5vbWJyZVxuICAgIC8vIGNvbnRyYSBzdSBwcm9waW8gRm9ybUdyb3VwIChgZ2V0Q29udHJvbGApLiBMZWVyIGBmaWVsZC5jb250cm9sYCBkZXZvbHbDrWFcbiAgICAvLyB1bmRlZmluZWQgc2llbXByZSwgYXPDrSBxdWUgbGEgc3VnZXJlbmNpYSBubyBhcGFyZWPDrWEgbnVuY2Eg4oCUIHkgc29sbyBzZVxuICAgIC8vIG5vdMOzIGNvbiBlbCBlMmUsIHBvcnF1ZSBlbCBzcGVjIGRlbCBjb21wb25lbnRlIGxlIHBhc2FiYSBlbCBjb250cm9sIGFcbiAgICAvLyBtYW5vIHkgcG9yIGVzbyBwYXNhYmEgZW4gdmVyZGUuXG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnN0IHZhbG9yID0gdHlwZW9mIGNvbnRyb2w/LnZhbHVlID09PSAnc3RyaW5nJyA/IGNvbnRyb2wudmFsdWUgOiAnJztcbiAgICBpZiAoIXZhbG9yIHx8ICFjb250cm9sPy50b3VjaGVkKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzdWdlcmlkbyA9IHN1Z2dlc3RFbWFpbEZpeCh2YWxvcik7XG4gICAgaWYgKCFzdWdlcmlkbyB8fCB0aGlzLnN1Z2dlc3Rpb25EaXNtaXNzZWQuaGFzKHN1Z2VyaWRvKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHN1Z2VyaWRvO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1c2NhIGVsIGNvbnRyb2wgc2luIGV4cGxvdGFyIHNpIGVsIGZvcm11bGFyaW8gdG9kYXbDrWEgbm8gc2UgY29uc3RydXnDsy5cbiAgICogYGdldENvbnRyb2xgIGFzdW1lIGBGb3JtYCB5YSBpbmljaWFsaXphZG87IGFjw6Egc2UgbGxhbWEgZGVzZGUgZWwgdGVtcGxhdGUsXG4gICAqIHF1ZSBwdWVkZSBldmFsdWFyc2UgYW50ZXMgZGUgYG5nT25Jbml0YCBlbiBhbGd1bm9zIGNpY2xvcy5cbiAgICovXG4gIHByaXZhdGUgY29udHJvbFBvck5vbWJyZShub21icmU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIW5vbWJyZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5Gb3JtPy5nZXQobm9tYnJlKSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbihzdWdlcmlkbzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0byA9IHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25RdWVzdGlvbicsICfCv1F1aXNpc3RlIGRlY2lyIHtlbWFpbH0/Jyk7XG4gICAgcmV0dXJuIHRleHRvLnJlcGxhY2UoJ3tlbWFpbH0nLCBzdWdlcmlkbyk7XG4gIH1cblxuICBlbWFpbFN1Z2dlc3Rpb25BcHBseUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGV4dG9JMThuKCdlbWFpbFN1Z2dlc3Rpb25BcHBseScsICdTw60sIGNvcnJlZ2lyJyk7XG4gIH1cblxuICAvKipcbiAgICogVHJhZHVjZSBjb24gcmVzcGFsZG8gcmVhbC5cbiAgICpcbiAgICogYEkxOG5TZXJ2aWNlLnQoKWAgTk8gZGV2dWVsdmUgbnVsbCBjdWFuZG8gZmFsdGEgbGEgY2xhdmU6IGRldnVlbHZlIHZhY8OtbyBvXG4gICAqIHVuIHBsYWNlaG9sZGVyIGBbbmFtZXNwYWNlLmtleV1gLiBDb24gYD8/YCBlbCByZXNwYWxkbyBudW5jYSBlbnRyYWJhIHkgZWxcbiAgICogcmVuZ2zDs24gc2Fsw61hIGVuIGJsYW5jbyBlbiBjdWFscXVpZXIgYXBwIHF1ZSBubyByZWdpc3RyYXJhIGxhIGNsYXZlLiBMb1xuICAgKiBlbmNvbnRyw7MgZWwgc3BlYyBkZWwgY29tcG9uZW50ZSwgbm8gbGEgcmV2aXNpw7NuIGEgb2pvLlxuICAgKi9cbiAgcHJpdmF0ZSB0ZXh0b0kxOG4oa2V5OiBzdHJpbmcsIHJlc3BhbGRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRleHRvID0gdGhpcy5pMThuU3VnZ2VzdGlvbj8udChrZXkpID8/ICcnO1xuICAgIGlmICghdGV4dG8gfHwgdGV4dG8uc3RhcnRzV2l0aCgnWycpKSByZXR1cm4gcmVzcGFsZG87XG4gICAgcmV0dXJuIHRleHRvO1xuICB9XG5cbiAgLyoqIEFwbGljYSBsYSBjb3JyZWNjacOzbi4gRXMgbGEgw7puaWNhIHbDrWE6IG5hZGEgc2UgcmVlc2NyaWJlIHNpbiBlc3RlIGNsaWMuICovXG4gIGFwcGx5RW1haWxTdWdnZXN0aW9uKGZpZWxkOiBJbnB1dE1ldGFkYXRhLCBzdWdlcmlkbzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IGZpZWxkLmNvbnRyb2wgPz8gdGhpcy5jb250cm9sUG9yTm9tYnJlKGZpZWxkLm5hbWUpO1xuICAgIGNvbnRyb2w/LnNldFZhbHVlKHN1Z2VyaWRvKTtcbiAgICBjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgIC8vIEFwbGljYWRhIGRlamEgZGUgb2ZyZWNlcnNlOyBzaSBlbCB1c3VhcmlvIHZ1ZWx2ZSBhIGVzY3JpYmlyIG1hbCwgZWxcbiAgICAvLyB2YWxvciBzZXLDoSBvdHJvIHkgbGEgc3VnZXJlbmNpYSByZWFwYXJlY2UuXG4gICAgdGhpcy5zdWdnZXN0aW9uRGlzbWlzc2VkLmFkZChzdWdlcmlkbyk7XG4gIH1cblxufVxuIl19
@@ -198,7 +198,7 @@ export class FunHeaderComponent {
198
198
  </ion-col>
199
199
  </ion-row>
200
200
  </ion-grid>
201
- `, isInline: true, styles: [".fun-image-container{margin:16px 0;display:flex;justify-content:flex-start}@media (min-width: 768px){.fun-image-container{justify-content:center}}.fun-image-container img{width:7.5rem}@media (min-width: 768px){.fun-image-container img{width:11.25rem}}.header-ground{padding:32px 24px;background-size:cover;background-position:center;background-repeat:no-repeat}.rounded{border-radius:0 0 32px 32px}.shadowed{box-shadow:0 2px 8px #0000001a}.bordered{border:.0625rem solid var(--ion-color-medium)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BannerComponent, selector: "val-banner", inputs: ["props"], outputs: ["onClick", "onClose"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }] }); }
201
+ `, isInline: true, styles: [".fun-image-container{margin:16px 0;display:flex;justify-content:flex-start}@media (min-width: 768px){.fun-image-container{justify-content:center}}.fun-image-container img{width:7.5rem}@media (min-width: 768px){.fun-image-container img{width:11.25rem}}.header-ground{padding:32px 24px;background-size:cover;background-position:center;background-repeat:no-repeat}.rounded{border-radius:0 0 32px 32px}.shadowed{box-shadow:0 2px 8px #0000001a}.bordered{border:.0625rem solid var(--ion-color-dark)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: BannerComponent, selector: "val-banner", inputs: ["props"], outputs: ["onClick", "onClose"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }] }); }
202
202
  }
203
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FunHeaderComponent, decorators: [{
204
204
  type: Component,
@@ -225,8 +225,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
225
225
  </ion-col>
226
226
  </ion-row>
227
227
  </ion-grid>
228
- `, styles: [".fun-image-container{margin:16px 0;display:flex;justify-content:flex-start}@media (min-width: 768px){.fun-image-container{justify-content:center}}.fun-image-container img{width:7.5rem}@media (min-width: 768px){.fun-image-container img{width:11.25rem}}.header-ground{padding:32px 24px;background-size:cover;background-position:center;background-repeat:no-repeat}.rounded{border-radius:0 0 32px 32px}.shadowed{box-shadow:0 2px 8px #0000001a}.bordered{border:.0625rem solid var(--ion-color-medium)}\n"] }]
228
+ `, styles: [".fun-image-container{margin:16px 0;display:flex;justify-content:flex-start}@media (min-width: 768px){.fun-image-container{justify-content:center}}.fun-image-container img{width:7.5rem}@media (min-width: 768px){.fun-image-container img{width:11.25rem}}.header-ground{padding:32px 24px;background-size:cover;background-position:center;background-repeat:no-repeat}.rounded{border-radius:0 0 32px 32px}.shadowed{box-shadow:0 2px 8px #0000001a}.bordered{border:.0625rem solid var(--ion-color-dark)}\n"] }]
229
229
  }], propDecorators: { props: [{
230
230
  type: Input
231
231
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Z1bi1oZWFkZXIvZnVuLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBK0JILE1BQU0sT0FBTyxrQkFBa0I7SUE5Qi9CO1FBK0JVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckM7O1dBRUc7UUFDTSxVQUFLLEdBQXNCO1lBQ2xDLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtpQkFDbkU7YUFDRjtTQUNGLENBQUM7S0F5SUg7SUF2SUM7O09BRUc7SUFDSCxlQUFlLENBQUMsS0FBYztRQUM1QixP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TUFBTSxvREFBRSxNQUFNOzs0RkEyQnJELGtCQUFrQjtrQkE5QjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUN2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7OEJBU1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEJhbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2Jhbm5lci9iYW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZnVuLWhlYWRlclxuICpcbiAqIEEgZGVjb3JhdGl2ZSBoZWFkZXIgY29tcG9uZW50IHdpdGggZmxleGlibGUgYmFja2dyb3VuZCBvcHRpb25zLFxuICogb3B0aW9uYWwgbG9nbywgYW5kIGludGVncmF0ZWQgYmFubmVyIGNvbnRlbnQuIFN1cHBvcnRzIGRhcmsgbW9kZSxcbiAqIGdyYWRpZW50cywgaW1hZ2VzIHdpdGggb3ZlcmxheXMsIGFuZCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1mdW4taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaW1hZ2U6ICcvYXNzZXRzL2xvZ28ucG5nJyxcbiAqICAgICBiYWNrZ3JvdW5kOiAncHJpbWFyeScsXG4gKiAgICAgZ3JhZGllbnQ6IHRydWUsXG4gKiAgICAgY29udGVudDoge1xuICogICAgICAgdGl0bGU6ICdXZWxjb21lJyxcbiAqICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YXJ0ZWQgd2l0aCBvdXIgcGxhdGZvcm0nXG4gKiAgICAgfSxcbiAqICAgICByb3VuZGVkOiB0cnVlLFxuICogICAgIHNoYWRvd2VkOiB0cnVlXG4gKiAgIH1cIlxuICogPjwvdmFsLWZ1bi1oZWFkZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gSGVhZGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZ1bi1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYW5uZXJDb21wb25lbnQsIElvbkdyaWQsIElvblJvdywgSW9uQ29sXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWdyaWQ+XG4gICAgICA8aW9uLXJvd1xuICAgICAgICBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGhlYWRlci1ncm91bmRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICBbY2xhc3Muc2hhZG93ZWRdPVwicHJvcHMuc2hhZG93ZWRcIlxuICAgICAgICBbY2xhc3Mucm91bmRlZF09XCJwcm9wcy5yb3VuZGVkXCJcbiAgICAgICAgW25nU3R5bGVdPVwiaGVhZGVyU3R5bGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMlwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ1bi1pbWFnZS1jb250YWluZXJcIiAqbmdJZj1cInByb3BzLmltYWdlXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0SW1hZ2VTcmMoKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpc0ltYWdlVmFyaWFibGUocHJvcHMuaW1hZ2UpID8gJ3ZhcignICsgcHJvcHMuaW1hZ2UgKyAnKScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBhbHQ9XCJoZWFkZXIgbG9nb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2YWwtYmFubmVyIFtwcm9wc109XCJwcm9wcy5jb250ZW50XCIgLz5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgIDwvaW9uLWdyaWQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2Z1bi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRnVuSGVhZGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBIZWFkZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBGdW5IZWFkZXJNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiB7XG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgY2xvc2FibGU6IGZhbHNlLFxuICAgICAgbW9kZTogJ2NvbHVtbicsXG4gICAgICBhbGlnbm1lbnQ6ICdjZW50ZXInLFxuICAgICAgY29udGVudDoge1xuICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgIHRpdGxlOiB7IGNvbnRlbnQ6ICcnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdsaWdodCcsIGJvbGQ6IHRydWUgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGltYWdlIGlzIGEgQ1NTIHZhcmlhYmxlIChzdGFydHMgd2l0aCAtLSlcbiAgICovXG4gIGlzSW1hZ2VWYXJpYWJsZShpbWFnZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbWFnZT8uc3RhcnRzV2l0aCgnLS0nKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGltYWdlIHNvdXJjZSwgaGFuZGxpbmcgQ1NTIHZhcmlhYmxlc1xuICAgKi9cbiAgZ2V0SW1hZ2VTcmMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuaW1hZ2UpIHJldHVybiAnJztcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlVmFyaWFibGUodGhpcy5wcm9wcy5pbWFnZSkgPyAnJyA6IHRoaXMucHJvcHMuaW1hZ2U7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgaGVhZGVyIGJhY2tncm91bmQgc3R5bGVzXG4gICAqIFN1cHBvcnRzOiBpbWFnZXMsIGdyYWRpZW50cywgY29sb3JzLCBDU1MgdmFyaWFibGVzLCBhbmQgZGFyayBtb2RlXG4gICAqL1xuICBoZWFkZXJTdHlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGNvbnN0IGlzRGFyayA9IHRoaXMudGhlbWUuSXNEYXJrO1xuICAgIGNvbnN0IGJhY2tncm91bmQgPSBpc0RhcmsgPyB0aGlzLnByb3BzLmJhY2tncm91bmREYXJrIHx8IHRoaXMucHJvcHMuYmFja2dyb3VuZCA6IHRoaXMucHJvcHMuYmFja2dyb3VuZDtcblxuICAgIGlmICh0aGlzLnByb3BzLnBhZGRpbmdUb3ApIHtcbiAgICAgIHN0eWxlWydwYWRkaW5nVG9wJ10gPSB0aGlzLnByb3BzLnBhZGRpbmdUb3A7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLnBhZGRpbmdCb3R0b20pIHtcbiAgICAgIHN0eWxlWydwYWRkaW5nQm90dG9tJ10gPSB0aGlzLnByb3BzLnBhZGRpbmdCb3R0b207XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrZ3JvdW5kKSB7XG4gICAgICAvLyBEZWZhdWx0IGdyYWRpZW50IGlmIG5vIGJhY2tncm91bmQgc3BlY2lmaWVkXG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gaXNEYXJrXG4gICAgICAgID8gJ2xpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSAxMiUsIHZhcigtLWlvbi1jb2xvci1kYXJrKSA4MCUpJ1xuICAgICAgICA6ICdsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikgMTIlLCB2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5KSA5MCUpJztcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG5cbiAgICAvLyBJZiBncmFkaWVudCBpcyBlbmFibGVkLCBjcmVhdGUgYXV0b21hdGljIGdyYWRpZW50IGZyb20gLS1pb24tYmFja2dyb3VuZC1jb2xvciB0byB0aGUgc3BlY2lmaWVkIGNvbG9yXG4gICAgaWYgKHRoaXMucHJvcHMuZ3JhZGllbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldENvbG9yID0gdGhpcy5yZXNvbHZlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQpO1xuICAgICAgY29uc3QgZ3JhZGllbnRQZXJjZW50YWdlID0gaXNEYXJrID8gJzgwJScgOiAnOTAlJztcbiAgICAgIHN0eWxlWydiYWNrZ3JvdW5kJ10gPVxuICAgICAgICBgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpIDEyJSwgJHt0YXJnZXRDb2xvcn0gJHtncmFkaWVudFBlcmNlbnRhZ2V9KWA7XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGRpZmZlcmVudCBiYWNrZ3JvdW5kIHR5cGVzXG4gICAgaWYgKHRoaXMuaXNCYWNrZ3JvdW5kSW1hZ2UoYmFja2dyb3VuZCkpIHtcbiAgICAgIHRoaXMuYXBwbHlJbWFnZUJhY2tncm91bmQoc3R5bGUsIGJhY2tncm91bmQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0dyYWRpZW50KGJhY2tncm91bmQpKSB7XG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gYmFja2dyb3VuZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDU1NWYXJpYWJsZShiYWNrZ3JvdW5kKSkge1xuICAgICAgc3R5bGVbJ2JhY2tncm91bmQnXSA9IGB2YXIoJHtiYWNrZ3JvdW5kfSlgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbG9yVmFsdWUoYmFja2dyb3VuZCkpIHtcbiAgICAgIHN0eWxlWydiYWNrZ3JvdW5kJ10gPSBiYWNrZ3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3N1bWUgaXQncyBhbiBJb25pYyBjb2xvciBuYW1lXG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gYHZhcigtLWlvbi1jb2xvci0ke2JhY2tncm91bmR9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYmFja2dyb3VuZCBjb2xvciBmb3IgZ3JhZGllbnQgZ2VuZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNDU1NWYXJpYWJsZShiYWNrZ3JvdW5kKSkge1xuICAgICAgcmV0dXJuIGB2YXIoJHtiYWNrZ3JvdW5kfSlgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbG9yVmFsdWUoYmFja2dyb3VuZCkpIHtcbiAgICAgIHJldHVybiBiYWNrZ3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3N1bWUgaXQncyBhbiBJb25pYyBjb2xvciBuYW1lXG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2JhY2tncm91bmR9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGJhY2tncm91bmQgaXMgYW4gaW1hZ2UgVVJMXG4gICAqL1xuICBwcml2YXRlIGlzQmFja2dyb3VuZEltYWdlKGJnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsb3dlciA9IGJnLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlci5pbmNsdWRlcygnLmpwZycpIHx8XG4gICAgICBsb3dlci5pbmNsdWRlcygnLnBuZycpIHx8XG4gICAgICBsb3dlci5pbmNsdWRlcygnLmpwZWcnKSB8fFxuICAgICAgbG93ZXIuaW5jbHVkZXMoJy53ZWJwJykgfHxcbiAgICAgIGxvd2VyLmluY2x1ZGVzKCcuc3ZnJykgfHxcbiAgICAgIGxvd2VyLnN0YXJ0c1dpdGgoJ3VybCgnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFja2dyb3VuZCBpcyBhIGdyYWRpZW50XG4gICAqL1xuICBwcml2YXRlIGlzR3JhZGllbnQoYmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiZy5pbmNsdWRlcygnbGluZWFyLWdyYWRpZW50JykgfHwgYmcuaW5jbHVkZXMoJ3JhZGlhbC1ncmFkaWVudCcpIHx8IGJnLmluY2x1ZGVzKCdjb25pYy1ncmFkaWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGJhY2tncm91bmQgaXMgYSBDU1MgdmFyaWFibGVcbiAgICovXG4gIHByaXZhdGUgaXNDU1NWYXJpYWJsZShiZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJnLnN0YXJ0c1dpdGgoJy0tJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFja2dyb3VuZCBpcyBhIGRpcmVjdCBjb2xvciB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBpc0NvbG9yVmFsdWUoYmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiZy5zdGFydHNXaXRoKCcjJykgfHwgYmcuc3RhcnRzV2l0aCgncmdiJykgfHwgYmcuc3RhcnRzV2l0aCgnaHNsJyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgaW1hZ2UgYmFja2dyb3VuZCB3aXRoIG9wdGlvbmFsIG92ZXJsYXlcbiAgICovXG4gIHByaXZhdGUgYXBwbHlJbWFnZUJhY2tncm91bmQoc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGJhY2tncm91bmQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGltYWdlVXJsID0gYmFja2dyb3VuZC5zdGFydHNXaXRoKCd1cmwoJykgPyBiYWNrZ3JvdW5kIDogYHVybCgke2JhY2tncm91bmR9KWA7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vdmVybGF5KSB7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy5wcm9wcy5vdmVybGF5T3BhY2l0eSB8fCAwLjM7XG4gICAgICBjb25zdCBpc0RhcmsgPSB0aGlzLnRoZW1lLklzRGFyaztcbiAgICAgIGNvbnN0IG92ZXJsYXlDb2xvciA9IGlzRGFyayA/IGByZ2JhKDAsMCwwLCR7b3BhY2l0eX0pYCA6IGByZ2JhKDI1NSwyNTUsMjU1LCR7b3BhY2l0eX0pYDtcblxuICAgICAgc3R5bGVbJ2JhY2tncm91bmRJbWFnZSddID0gYGxpbmVhci1ncmFkaWVudCgwZGVnLCAke292ZXJsYXlDb2xvcn0sICR7b3ZlcmxheUNvbG9yfSksICR7aW1hZ2VVcmx9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2JhY2tncm91bmRJbWFnZSddID0gaW1hZ2VVcmw7XG4gICAgfVxuXG4gICAgc3R5bGVbJ2JhY2tncm91bmRTaXplJ10gPSAnY292ZXInO1xuICAgIHN0eWxlWydiYWNrZ3JvdW5kUG9zaXRpb24nXSA9ICdjZW50ZXInO1xuICAgIHN0eWxlWydiYWNrZ3JvdW5kUmVwZWF0J10gPSAnbm8tcmVwZWF0JztcbiAgfVxufVxuIl19
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Z1bi1oZWFkZXIvZnVuLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBK0JILE1BQU0sT0FBTyxrQkFBa0I7SUE5Qi9CO1FBK0JVLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckM7O1dBRUc7UUFDTSxVQUFLLEdBQXNCO1lBQ2xDLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtpQkFDbkU7YUFDRjtTQUNGLENBQUM7S0F5SUg7SUF2SUM7O09BRUc7SUFDSCxlQUFlLENBQUMsS0FBYztRQUM1QixPQUFPLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxNQUFNLEtBQUssR0FBMkIsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBRXZHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQiw4Q0FBOEM7WUFDOUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU07Z0JBQzFCLENBQUMsQ0FBQyxxRkFBcUY7Z0JBQ3ZGLENBQUMsQ0FBQywwRkFBMEYsQ0FBQztZQUMvRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCx1R0FBdUc7UUFDdkcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDbEQsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDakIsNERBQTRELFdBQVcsSUFBSSxrQkFBa0IsR0FBRyxDQUFDO1lBQ25HLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLFVBQVUsR0FBRyxDQUFDO1FBQzdDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ04sa0NBQWtDO1lBQ2xDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxtQkFBbUIsVUFBVSxHQUFHLENBQUM7UUFDekQsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsVUFBa0I7UUFDL0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxPQUFPLFVBQVUsR0FBRyxDQUFDO1FBQzlCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNOLGtDQUFrQztZQUNsQyxPQUFPLG1CQUFtQixVQUFVLEdBQUcsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCLENBQUMsRUFBVTtRQUNsQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUNMLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RCLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxVQUFVLENBQUMsRUFBVTtRQUMzQixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWEsQ0FBQyxFQUFVO1FBQzlCLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxZQUFZLENBQUMsRUFBVTtRQUM3QixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLEtBQTZCLEVBQUUsVUFBa0I7UUFDNUUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLFVBQVUsR0FBRyxDQUFDO1FBRW5GLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUM7WUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsT0FBTyxHQUFHLENBQUM7WUFFeEYsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcseUJBQXlCLFlBQVksS0FBSyxZQUFZLE1BQU0sUUFBUSxFQUFFLENBQUM7UUFDcEcsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdEMsQ0FBQztRQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUNsQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDdkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQzFDLENBQUM7K0dBMUpVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNHQTFCbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJULHdqQkF4QlMsWUFBWSx3TkFBRSxlQUFlLDJHQUFFLE9BQU8sd0VBQUUsTUFBTSxvREFBRSxNQUFNOzs0RkEyQnJELGtCQUFrQjtrQkE5QjlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxZQUN2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1QlQ7OEJBU1EsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ29sLCBJb25HcmlkLCBJb25Sb3cgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEJhbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2Jhbm5lci9iYW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnVuSGVhZGVyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZnVuLWhlYWRlclxuICpcbiAqIEEgZGVjb3JhdGl2ZSBoZWFkZXIgY29tcG9uZW50IHdpdGggZmxleGlibGUgYmFja2dyb3VuZCBvcHRpb25zLFxuICogb3B0aW9uYWwgbG9nbywgYW5kIGludGVncmF0ZWQgYmFubmVyIGNvbnRlbnQuIFN1cHBvcnRzIGRhcmsgbW9kZSxcbiAqIGdyYWRpZW50cywgaW1hZ2VzIHdpdGggb3ZlcmxheXMsIGFuZCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1mdW4taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaW1hZ2U6ICcvYXNzZXRzL2xvZ28ucG5nJyxcbiAqICAgICBiYWNrZ3JvdW5kOiAncHJpbWFyeScsXG4gKiAgICAgZ3JhZGllbnQ6IHRydWUsXG4gKiAgICAgY29udGVudDoge1xuICogICAgICAgdGl0bGU6ICdXZWxjb21lJyxcbiAqICAgICAgIGRlc2NyaXB0aW9uOiAnR2V0IHN0YXJ0ZWQgd2l0aCBvdXIgcGxhdGZvcm0nXG4gKiAgICAgfSxcbiAqICAgICByb3VuZGVkOiB0cnVlLFxuICogICAgIHNoYWRvd2VkOiB0cnVlXG4gKiAgIH1cIlxuICogPjwvdmFsLWZ1bi1oZWFkZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gSGVhZGVyIGNvbmZpZ3VyYXRpb25cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZ1bi1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYW5uZXJDb21wb25lbnQsIElvbkdyaWQsIElvblJvdywgSW9uQ29sXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWdyaWQ+XG4gICAgICA8aW9uLXJvd1xuICAgICAgICBjbGFzcz1cImlvbi1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGhlYWRlci1ncm91bmRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICBbY2xhc3Muc2hhZG93ZWRdPVwicHJvcHMuc2hhZG93ZWRcIlxuICAgICAgICBbY2xhc3Mucm91bmRlZF09XCJwcm9wcy5yb3VuZGVkXCJcbiAgICAgICAgW25nU3R5bGVdPVwiaGVhZGVyU3R5bGUoKVwiXG4gICAgICA+XG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemUtbWQ9XCIxMlwiIHNpemUtbGc9XCI4XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZ1bi1pbWFnZS1jb250YWluZXJcIiAqbmdJZj1cInByb3BzLmltYWdlXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIFtzcmNdPVwiZ2V0SW1hZ2VTcmMoKVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBpc0ltYWdlVmFyaWFibGUocHJvcHMuaW1hZ2UpID8gJ3ZhcignICsgcHJvcHMuaW1hZ2UgKyAnKScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBhbHQ9XCJoZWFkZXIgbG9nb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2YWwtYmFubmVyIFtwcm9wc109XCJwcm9wcy5jb250ZW50XCIgLz5cbiAgICAgICAgPC9pb24tY29sPlxuICAgICAgPC9pb24tcm93PlxuICAgIDwvaW9uLWdyaWQ+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2Z1bi1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRnVuSGVhZGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBIZWFkZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBGdW5IZWFkZXJNZXRhZGF0YSA9IHtcbiAgICBjb250ZW50OiB7XG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgY2xvc2FibGU6IGZhbHNlLFxuICAgICAgbW9kZTogJ2NvbHVtbicsXG4gICAgICBhbGlnbm1lbnQ6ICdjZW50ZXInLFxuICAgICAgY29udGVudDoge1xuICAgICAgICBwb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICAgIHRpdGxlOiB7IGNvbnRlbnQ6ICcnLCBzaXplOiAnbWVkaXVtJywgY29sb3I6ICdsaWdodCcsIGJvbGQ6IHRydWUgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGltYWdlIGlzIGEgQ1NTIHZhcmlhYmxlIChzdGFydHMgd2l0aCAtLSlcbiAgICovXG4gIGlzSW1hZ2VWYXJpYWJsZShpbWFnZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbWFnZT8uc3RhcnRzV2l0aCgnLS0nKSB8fCBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGltYWdlIHNvdXJjZSwgaGFuZGxpbmcgQ1NTIHZhcmlhYmxlc1xuICAgKi9cbiAgZ2V0SW1hZ2VTcmMoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucHJvcHMuaW1hZ2UpIHJldHVybiAnJztcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlVmFyaWFibGUodGhpcy5wcm9wcy5pbWFnZSkgPyAnJyA6IHRoaXMucHJvcHMuaW1hZ2U7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgaGVhZGVyIGJhY2tncm91bmQgc3R5bGVzXG4gICAqIFN1cHBvcnRzOiBpbWFnZXMsIGdyYWRpZW50cywgY29sb3JzLCBDU1MgdmFyaWFibGVzLCBhbmQgZGFyayBtb2RlXG4gICAqL1xuICBoZWFkZXJTdHlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGNvbnN0IGlzRGFyayA9IHRoaXMudGhlbWUuSXNEYXJrO1xuICAgIGNvbnN0IGJhY2tncm91bmQgPSBpc0RhcmsgPyB0aGlzLnByb3BzLmJhY2tncm91bmREYXJrIHx8IHRoaXMucHJvcHMuYmFja2dyb3VuZCA6IHRoaXMucHJvcHMuYmFja2dyb3VuZDtcblxuICAgIGlmICh0aGlzLnByb3BzLnBhZGRpbmdUb3ApIHtcbiAgICAgIHN0eWxlWydwYWRkaW5nVG9wJ10gPSB0aGlzLnByb3BzLnBhZGRpbmdUb3A7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLnBhZGRpbmdCb3R0b20pIHtcbiAgICAgIHN0eWxlWydwYWRkaW5nQm90dG9tJ10gPSB0aGlzLnByb3BzLnBhZGRpbmdCb3R0b207XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrZ3JvdW5kKSB7XG4gICAgICAvLyBEZWZhdWx0IGdyYWRpZW50IGlmIG5vIGJhY2tncm91bmQgc3BlY2lmaWVkXG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gaXNEYXJrXG4gICAgICAgID8gJ2xpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSAxMiUsIHZhcigtLWlvbi1jb2xvci1kYXJrKSA4MCUpJ1xuICAgICAgICA6ICdsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcikgMTIlLCB2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5KSA5MCUpJztcbiAgICAgIHJldHVybiBzdHlsZTtcbiAgICB9XG5cbiAgICAvLyBJZiBncmFkaWVudCBpcyBlbmFibGVkLCBjcmVhdGUgYXV0b21hdGljIGdyYWRpZW50IGZyb20gLS1pb24tYmFja2dyb3VuZC1jb2xvciB0byB0aGUgc3BlY2lmaWVkIGNvbG9yXG4gICAgaWYgKHRoaXMucHJvcHMuZ3JhZGllbnQpIHtcbiAgICAgIGNvbnN0IHRhcmdldENvbG9yID0gdGhpcy5yZXNvbHZlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQpO1xuICAgICAgY29uc3QgZ3JhZGllbnRQZXJjZW50YWdlID0gaXNEYXJrID8gJzgwJScgOiAnOTAlJztcbiAgICAgIHN0eWxlWydiYWNrZ3JvdW5kJ10gPVxuICAgICAgICBgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpIDEyJSwgJHt0YXJnZXRDb2xvcn0gJHtncmFkaWVudFBlcmNlbnRhZ2V9KWA7XG4gICAgICByZXR1cm4gc3R5bGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGRpZmZlcmVudCBiYWNrZ3JvdW5kIHR5cGVzXG4gICAgaWYgKHRoaXMuaXNCYWNrZ3JvdW5kSW1hZ2UoYmFja2dyb3VuZCkpIHtcbiAgICAgIHRoaXMuYXBwbHlJbWFnZUJhY2tncm91bmQoc3R5bGUsIGJhY2tncm91bmQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0dyYWRpZW50KGJhY2tncm91bmQpKSB7XG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gYmFja2dyb3VuZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNDU1NWYXJpYWJsZShiYWNrZ3JvdW5kKSkge1xuICAgICAgc3R5bGVbJ2JhY2tncm91bmQnXSA9IGB2YXIoJHtiYWNrZ3JvdW5kfSlgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbG9yVmFsdWUoYmFja2dyb3VuZCkpIHtcbiAgICAgIHN0eWxlWydiYWNrZ3JvdW5kJ10gPSBiYWNrZ3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3N1bWUgaXQncyBhbiBJb25pYyBjb2xvciBuYW1lXG4gICAgICBzdHlsZVsnYmFja2dyb3VuZCddID0gYHZhcigtLWlvbi1jb2xvci0ke2JhY2tncm91bmR9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYmFja2dyb3VuZCBjb2xvciBmb3IgZ3JhZGllbnQgZ2VuZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNDU1NWYXJpYWJsZShiYWNrZ3JvdW5kKSkge1xuICAgICAgcmV0dXJuIGB2YXIoJHtiYWNrZ3JvdW5kfSlgO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0NvbG9yVmFsdWUoYmFja2dyb3VuZCkpIHtcbiAgICAgIHJldHVybiBiYWNrZ3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3N1bWUgaXQncyBhbiBJb25pYyBjb2xvciBuYW1lXG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2JhY2tncm91bmR9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGJhY2tncm91bmQgaXMgYW4gaW1hZ2UgVVJMXG4gICAqL1xuICBwcml2YXRlIGlzQmFja2dyb3VuZEltYWdlKGJnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsb3dlciA9IGJnLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBsb3dlci5pbmNsdWRlcygnLmpwZycpIHx8XG4gICAgICBsb3dlci5pbmNsdWRlcygnLnBuZycpIHx8XG4gICAgICBsb3dlci5pbmNsdWRlcygnLmpwZWcnKSB8fFxuICAgICAgbG93ZXIuaW5jbHVkZXMoJy53ZWJwJykgfHxcbiAgICAgIGxvd2VyLmluY2x1ZGVzKCcuc3ZnJykgfHxcbiAgICAgIGxvd2VyLnN0YXJ0c1dpdGgoJ3VybCgnKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFja2dyb3VuZCBpcyBhIGdyYWRpZW50XG4gICAqL1xuICBwcml2YXRlIGlzR3JhZGllbnQoYmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiZy5pbmNsdWRlcygnbGluZWFyLWdyYWRpZW50JykgfHwgYmcuaW5jbHVkZXMoJ3JhZGlhbC1ncmFkaWVudCcpIHx8IGJnLmluY2x1ZGVzKCdjb25pYy1ncmFkaWVudCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGJhY2tncm91bmQgaXMgYSBDU1MgdmFyaWFibGVcbiAgICovXG4gIHByaXZhdGUgaXNDU1NWYXJpYWJsZShiZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGJnLnN0YXJ0c1dpdGgoJy0tJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYmFja2dyb3VuZCBpcyBhIGRpcmVjdCBjb2xvciB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBpc0NvbG9yVmFsdWUoYmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiZy5zdGFydHNXaXRoKCcjJykgfHwgYmcuc3RhcnRzV2l0aCgncmdiJykgfHwgYmcuc3RhcnRzV2l0aCgnaHNsJyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgaW1hZ2UgYmFja2dyb3VuZCB3aXRoIG9wdGlvbmFsIG92ZXJsYXlcbiAgICovXG4gIHByaXZhdGUgYXBwbHlJbWFnZUJhY2tncm91bmQoc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGJhY2tncm91bmQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGltYWdlVXJsID0gYmFja2dyb3VuZC5zdGFydHNXaXRoKCd1cmwoJykgPyBiYWNrZ3JvdW5kIDogYHVybCgke2JhY2tncm91bmR9KWA7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vdmVybGF5KSB7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gdGhpcy5wcm9wcy5vdmVybGF5T3BhY2l0eSB8fCAwLjM7XG4gICAgICBjb25zdCBpc0RhcmsgPSB0aGlzLnRoZW1lLklzRGFyaztcbiAgICAgIGNvbnN0IG92ZXJsYXlDb2xvciA9IGlzRGFyayA/IGByZ2JhKDAsMCwwLCR7b3BhY2l0eX0pYCA6IGByZ2JhKDI1NSwyNTUsMjU1LCR7b3BhY2l0eX0pYDtcblxuICAgICAgc3R5bGVbJ2JhY2tncm91bmRJbWFnZSddID0gYGxpbmVhci1ncmFkaWVudCgwZGVnLCAke292ZXJsYXlDb2xvcn0sICR7b3ZlcmxheUNvbG9yfSksICR7aW1hZ2VVcmx9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2JhY2tncm91bmRJbWFnZSddID0gaW1hZ2VVcmw7XG4gICAgfVxuXG4gICAgc3R5bGVbJ2JhY2tncm91bmRTaXplJ10gPSAnY292ZXInO1xuICAgIHN0eWxlWydiYWNrZ3JvdW5kUG9zaXRpb24nXSA9ICdjZW50ZXInO1xuICAgIHN0eWxlWydiYWNrZ3JvdW5kUmVwZWF0J10gPSAnbm8tcmVwZWF0JztcbiAgfVxufVxuIl19
@@ -121,7 +121,7 @@ export class GroupMembersComponent {
121
121
  </ul>
122
122
  }
123
123
  </div>
124
- `, isInline: true, styles: [".group-members{display:flex;flex-direction:column;gap:12px}.group-members__empty{font-size:.875rem;color:var(--ion-color-medium, #92949c);margin:0}.group-members__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-members__row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}.group-members__name{font-size:.9375rem;color:var(--ion-text-color, #000)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
124
+ `, isInline: true, styles: [".group-members{display:flex;flex-direction:column;gap:12px}.group-members__empty{font-size:.875rem;color:var(--ion-color-dark, #92949c);margin:0}.group-members__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-members__row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}.group-members__name{font-size:.9375rem;color:var(--ion-text-color, #000)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
125
125
  }
126
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GroupMembersComponent, decorators: [{
127
127
  type: Component,
@@ -160,7 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
160
160
  </ul>
161
161
  }
162
162
  </div>
163
- `, styles: [".group-members{display:flex;flex-direction:column;gap:12px}.group-members__empty{font-size:.875rem;color:var(--ion-color-medium, #92949c);margin:0}.group-members__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-members__row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}.group-members__name{font-size:.9375rem;color:var(--ion-text-color, #000)}\n"] }]
163
+ `, styles: [".group-members{display:flex;flex-direction:column;gap:12px}.group-members__empty{font-size:.875rem;color:var(--ion-color-dark, #92949c);margin:0}.group-members__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.group-members__row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}.group-members__name{font-size:.9375rem;color:var(--ion-text-color, #000)}\n"] }]
164
164
  }], propDecorators: { groupId: [{
165
165
  type: Input,
166
166
  args: [{ required: true }]
@@ -175,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
175
175
  }], membersChange: [{
176
176
  type: Output
177
177
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2dyb3VwLW1lbWJlcnMvZ3JvdXAtbWVtYmVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQVV4RTs7Ozs7Ozs7OztHQVVHO0FBMkNILE1BQU0sT0FBTyxxQkFBcUI7SUExQ2xDO1FBNENFLDhFQUE4RTtRQUNyRSxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFOUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixTQUFJLEdBQUcsS0FBSyxDQUFDO0tBK0RkO0lBN0RDLElBQUksaUJBQWlCO1FBQ25CLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztTQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxxRkFBcUY7SUFDckYsUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFjO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQsR0FBRyxDQUFDLE1BQWM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDMUQsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBekVVLHFCQUFxQjttR0FBckIscUJBQXFCLGlTQXRDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNULDRpQkFwQ1MsWUFBWSwrQkFBVyxTQUFTLGtWQUFFLGVBQWUsNkZBQUUsZUFBZTs7NEZBdUNqRSxxQkFBcUI7a0JBMUNqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLFlBQ25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVDs4QkFJMEIsT0FBTztzQkFBakMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24sIElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy9ncm91cHMuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxHcm91cE1lbWJlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy90eXBlcyc7XG5cbi8qKiBQZXJzb25hIGVsZWdpYmxlIHBhcmEgYWdyZWdhciBhbCBncnVwbyAodMOtcGljYW1lbnRlIHVuIGBPcmdNZW1iZXJgKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBNZW1iZXJDYW5kaWRhdGUge1xuICB1c2VySWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLWdyb3VwLW1lbWJlcnMg4oCUIGFkbWluaXN0cmFyIGxhIG1lbWJyZXPDrWEgZGUgVU4gZ3J1cG8gKEFEUi0wODMpLlxuICpcbiAqIERlbGliZXJhZGFtZW50ZSBOTyB0cmFlIHN1IHByb3BpbyBzZWxlY3RvciBkZSBwZXJzb25hczogbGEgZnVlbnRlIGRlXG4gKiBcInF1acOpbmVzIHNvbiBsb3MgbWllbWJyb3MgZWxlZ2libGVzIGRlIGxhIG9yZ2FuaXphY2nDs25cIiB2YXLDrWEgcG9yIGFwcCAob3JnXG4gKiBtZW1iZXJzLCBpbnZpdGFkb3MsIGV0Yy4pLCBhc8OtIHF1ZSBzZSByZWNpYmUgcG9yIGBASW5wdXQgY2FuZGlkYXRlc2AgZW4gdmV6XG4gKiBkZSBxdWUgZXN0ZSBvcmdhbmlzbW8gaW1wb3J0ZSB1biBzZXJ2aWNpbyBkZSBvcmdhbml6YWNpw7NuIHF1ZSBubyBsZVxuICogY29ycmVzcG9uZGUuIFNpbiBjYW5kaWRhdG9zLCBpZ3VhbCBmdW5jaW9uYTogc29sbyBsaXN0YSB5IHF1aXRhLlxuICpcbiAqIFNpbiB0ZXh0byBoYXJkY29kZWFkbyAobGliIGkxOG4tYWdub3N0aWMpOiBsb3MgbGFiZWxzIGxsZWdhbiBwb3IgYEBJbnB1dGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1ncm91cC1tZW1iZXJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIEJ1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwLW1lbWJlcnNcIj5cbiAgICAgIEBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1tZW1iZXJzX19hZGRcIj5cbiAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImFkZFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJhZGQoJGV2ZW50LmRldGFpbC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGMgb2YgZWxpZ2libGUoKTsgdHJhY2sgYy51c2VySWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJjLnVzZXJJZFwiPlxuICAgICAgICAgICAgICAgIHt7IGMubmFtZSB8fCBjLmVtYWlsIHx8IGMudXNlcklkIH19XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChtZW1iZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8cCBjbGFzcz1cImdyb3VwLW1lbWJlcnNfX2VtcHR5XCI+e3sgZW1wdHlMYWJlbCB9fTwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dWwgY2xhc3M9XCJncm91cC1tZW1iZXJzX19saXN0XCI+XG4gICAgICAgICAgQGZvciAobSBvZiBtZW1iZXJzOyB0cmFjayBtLnVzZXJJZCkge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwiZ3JvdXAtbWVtYmVyc19fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbWVtYmVyc19fbmFtZVwiPnt7IG5hbWVGb3IobS51c2VySWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJyZW1vdmVCdXR0b25Qcm9wc1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicmVtb3ZlKG0udXNlcklkKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtbWVtYmVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBncm91cElkITogc3RyaW5nO1xuICAvKiogUGVyc29uYXMgZWxlZ2libGVzIHBhcmEgYWdyZWdhci4gVmFjw61vID0gZWwgb3JnYW5pc21vIHNvbG8gbGlzdGEvcXVpdGEuICovXG4gIEBJbnB1dCgpIGNhbmRpZGF0ZXM6IEdyb3VwTWVtYmVyQ2FuZGlkYXRlW10gPSBbXTtcbiAgQElucHV0KCkgYWRkUGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgZW1wdHlMYWJlbCA9ICcnO1xuICBASW5wdXQoKSByZW1vdmVMYWJlbCA9ICcnO1xuICBAT3V0cHV0KCkgbWVtYmVyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFsR3JvdXBNZW1iZXJbXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGdyb3Vwc1N2YyA9IGluamVjdChHcm91cHNTZXJ2aWNlKTtcbiAgbWVtYmVyczogVmFsR3JvdXBNZW1iZXJbXSA9IFtdO1xuICBidXN5ID0gZmFsc2U7XG5cbiAgZ2V0IHJlbW92ZUJ1dHRvblByb3BzKCk6IEJ1dHRvbk1ldGFkYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5yZW1vdmVMYWJlbCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzdGF0ZTogdGhpcy5idXN5ID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZ3JvdXBJZCddICYmIHRoaXMuZ3JvdXBJZCkge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyb3Vwc1N2Yy5saXN0TWVtYmVycyh0aGlzLmdyb3VwSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobSkgPT4gKHRoaXMubWVtYmVycyA9IG0pLFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLm1lbWJlcnMgPSBbXSksXG4gICAgfSk7XG4gIH1cblxuICAvKiogQ2FuZGlkYXRvcyBxdWUgdG9kYXbDrWEgbm8gZXN0w6FuIGVuIGVsIGdydXBvIOKAlCBldml0YSBvZnJlY2VyIHVuIGFsdGEgZHVwbGljYWRhLiAqL1xuICBlbGlnaWJsZSgpOiBHcm91cE1lbWJlckNhbmRpZGF0ZVtdIHtcbiAgICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCh0aGlzLm1lbWJlcnMubWFwKChtKSA9PiBtLnVzZXJJZCkpO1xuICAgIHJldHVybiB0aGlzLmNhbmRpZGF0ZXMuZmlsdGVyKChjKSA9PiAhY3VycmVudC5oYXMoYy51c2VySWQpKTtcbiAgfVxuXG4gIG5hbWVGb3IodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGMgPSB0aGlzLmNhbmRpZGF0ZXMuZmluZCgoeCkgPT4geC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgcmV0dXJuIGM/Lm5hbWUgfHwgYz8uZW1haWwgfHwgdXNlcklkO1xuICB9XG5cbiAgYWRkKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1c2VySWQgfHwgdGhpcy5idXN5KSByZXR1cm47XG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICB0aGlzLmdyb3Vwc1N2Yy5hZGRNZW1iZXIodGhpcy5ncm91cElkLCB7IHVzZXJJZCB9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKG1lbWJlcnMpID0+IHtcbiAgICAgICAgdGhpcy5tZW1iZXJzID0gbWVtYmVycztcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVtYmVyc0NoYW5nZS5lbWl0KG1lbWJlcnMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5idXN5ID0gZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnVzeSkgcmV0dXJuO1xuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgdGhpcy5ncm91cHNTdmMucmVtb3ZlTWVtYmVyKHRoaXMuZ3JvdXBJZCwgdXNlcklkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKG1lbWJlcnMpID0+IHtcbiAgICAgICAgdGhpcy5tZW1iZXJzID0gbWVtYmVycztcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVtYmVyc0NoYW5nZS5lbWl0KG1lbWJlcnMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5idXN5ID0gZmFsc2UpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtbWVtYmVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2dyb3VwLW1lbWJlcnMvZ3JvdXAtbWVtYmVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQVV4RTs7Ozs7Ozs7OztHQVVHO0FBMkNILE1BQU0sT0FBTyxxQkFBcUI7SUExQ2xDO1FBNENFLDhFQUE4RTtRQUNyRSxlQUFVLEdBQTJCLEVBQUUsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFOUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixTQUFJLEdBQUcsS0FBSyxDQUFDO0tBK0RkO0lBN0RDLElBQUksaUJBQWlCO1FBQ25CLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsS0FBSyxFQUFFLE1BQU07WUFD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SUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBekVVLHFCQUFxQjttR0FBckIscUJBQXFCLGlTQXRDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNULDBpQkFwQ1MsWUFBWSwrQkFBVyxTQUFTLGtWQUFFLGVBQWUsNkZBQUUsZUFBZTs7NEZBdUNqRSxxQkFBcUI7a0JBMUNqQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLFlBQ25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVDs4QkFJMEIsT0FBTztzQkFBakMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkljb24sIElvblNlbGVjdCwgSW9uU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgR3JvdXBzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy9ncm91cHMuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxHcm91cE1lbWJlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyb3Vwcy90eXBlcyc7XG5cbi8qKiBQZXJzb25hIGVsZWdpYmxlIHBhcmEgYWdyZWdhciBhbCBncnVwbyAodMOtcGljYW1lbnRlIHVuIGBPcmdNZW1iZXJgKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBNZW1iZXJDYW5kaWRhdGUge1xuICB1c2VySWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogdmFsLWdyb3VwLW1lbWJlcnMg4oCUIGFkbWluaXN0cmFyIGxhIG1lbWJyZXPDrWEgZGUgVU4gZ3J1cG8gKEFEUi0wODMpLlxuICpcbiAqIERlbGliZXJhZGFtZW50ZSBOTyB0cmFlIHN1IHByb3BpbyBzZWxlY3RvciBkZSBwZXJzb25hczogbGEgZnVlbnRlIGRlXG4gKiBcInF1acOpbmVzIHNvbiBsb3MgbWllbWJyb3MgZWxlZ2libGVzIGRlIGxhIG9yZ2FuaXphY2nDs25cIiB2YXLDrWEgcG9yIGFwcCAob3JnXG4gKiBtZW1iZXJzLCBpbnZpdGFkb3MsIGV0Yy4pLCBhc8OtIHF1ZSBzZSByZWNpYmUgcG9yIGBASW5wdXQgY2FuZGlkYXRlc2AgZW4gdmV6XG4gKiBkZSBxdWUgZXN0ZSBvcmdhbmlzbW8gaW1wb3J0ZSB1biBzZXJ2aWNpbyBkZSBvcmdhbml6YWNpw7NuIHF1ZSBubyBsZVxuICogY29ycmVzcG9uZGUuIFNpbiBjYW5kaWRhdG9zLCBpZ3VhbCBmdW5jaW9uYTogc29sbyBsaXN0YSB5IHF1aXRhLlxuICpcbiAqIFNpbiB0ZXh0byBoYXJkY29kZWFkbyAobGliIGkxOG4tYWdub3N0aWMpOiBsb3MgbGFiZWxzIGxsZWdhbiBwb3IgYEBJbnB1dGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1ncm91cC1tZW1iZXJzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgSW9uU2VsZWN0LCBJb25TZWxlY3RPcHRpb24sIEJ1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImdyb3VwLW1lbWJlcnNcIj5cbiAgICAgIEBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1tZW1iZXJzX19hZGRcIj5cbiAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImFkZFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIGludGVyZmFjZT1cInBvcG92ZXJcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1c3lcIlxuICAgICAgICAgICAgKGlvbkNoYW5nZSk9XCJhZGQoJGV2ZW50LmRldGFpbC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBmb3IgKGMgb2YgZWxpZ2libGUoKTsgdHJhY2sgYy51c2VySWQpIHtcbiAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIFt2YWx1ZV09XCJjLnVzZXJJZFwiPlxuICAgICAgICAgICAgICAgIHt7IGMubmFtZSB8fCBjLmVtYWlsIHx8IGMudXNlcklkIH19XG4gICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChtZW1iZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8cCBjbGFzcz1cImdyb3VwLW1lbWJlcnNfX2VtcHR5XCI+e3sgZW1wdHlMYWJlbCB9fTwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dWwgY2xhc3M9XCJncm91cC1tZW1iZXJzX19saXN0XCI+XG4gICAgICAgICAgQGZvciAobSBvZiBtZW1iZXJzOyB0cmFjayBtLnVzZXJJZCkge1xuICAgICAgICAgICAgPGxpIGNsYXNzPVwiZ3JvdXAtbWVtYmVyc19fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbWVtYmVyc19fbmFtZVwiPnt7IG5hbWVGb3IobS51c2VySWQpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8dmFsLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtwcm9wc109XCJyZW1vdmVCdXR0b25Qcm9wc1wiXG4gICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicmVtb3ZlKG0udXNlcklkKVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtbWVtYmVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHcm91cE1lbWJlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBncm91cElkITogc3RyaW5nO1xuICAvKiogUGVyc29uYXMgZWxlZ2libGVzIHBhcmEgYWdyZWdhci4gVmFjw61vID0gZWwgb3JnYW5pc21vIHNvbG8gbGlzdGEvcXVpdGEuICovXG4gIEBJbnB1dCgpIGNhbmRpZGF0ZXM6IEdyb3VwTWVtYmVyQ2FuZGlkYXRlW10gPSBbXTtcbiAgQElucHV0KCkgYWRkUGxhY2Vob2xkZXIgPSAnJztcbiAgQElucHV0KCkgZW1wdHlMYWJlbCA9ICcnO1xuICBASW5wdXQoKSByZW1vdmVMYWJlbCA9ICcnO1xuICBAT3V0cHV0KCkgbWVtYmVyc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VmFsR3JvdXBNZW1iZXJbXT4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGdyb3Vwc1N2YyA9IGluamVjdChHcm91cHNTZXJ2aWNlKTtcbiAgbWVtYmVyczogVmFsR3JvdXBNZW1iZXJbXSA9IFtdO1xuICBidXN5ID0gZmFsc2U7XG5cbiAgZ2V0IHJlbW92ZUJ1dHRvblByb3BzKCk6IEJ1dHRvbk1ldGFkYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5yZW1vdmVMYWJlbCxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHNoYXBlOiAncm91bmQnLFxuICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICBzdGF0ZTogdGhpcy5idXN5ID8gQ29tcG9uZW50U3RhdGVzLkRJU0FCTEVEIDogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZ3JvdXBJZCddICYmIHRoaXMuZ3JvdXBJZCkge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmdyb3Vwc1N2Yy5saXN0TWVtYmVycyh0aGlzLmdyb3VwSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobSkgPT4gKHRoaXMubWVtYmVycyA9IG0pLFxuICAgICAgZXJyb3I6ICgpID0+ICh0aGlzLm1lbWJlcnMgPSBbXSksXG4gICAgfSk7XG4gIH1cblxuICAvKiogQ2FuZGlkYXRvcyBxdWUgdG9kYXbDrWEgbm8gZXN0w6FuIGVuIGVsIGdydXBvIOKAlCBldml0YSBvZnJlY2VyIHVuIGFsdGEgZHVwbGljYWRhLiAqL1xuICBlbGlnaWJsZSgpOiBHcm91cE1lbWJlckNhbmRpZGF0ZVtdIHtcbiAgICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCh0aGlzLm1lbWJlcnMubWFwKChtKSA9PiBtLnVzZXJJZCkpO1xuICAgIHJldHVybiB0aGlzLmNhbmRpZGF0ZXMuZmlsdGVyKChjKSA9PiAhY3VycmVudC5oYXMoYy51c2VySWQpKTtcbiAgfVxuXG4gIG5hbWVGb3IodXNlcklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGMgPSB0aGlzLmNhbmRpZGF0ZXMuZmluZCgoeCkgPT4geC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgcmV0dXJuIGM/Lm5hbWUgfHwgYz8uZW1haWwgfHwgdXNlcklkO1xuICB9XG5cbiAgYWRkKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1c2VySWQgfHwgdGhpcy5idXN5KSByZXR1cm47XG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICB0aGlzLmdyb3Vwc1N2Yy5hZGRNZW1iZXIodGhpcy5ncm91cElkLCB7IHVzZXJJZCB9KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKG1lbWJlcnMpID0+IHtcbiAgICAgICAgdGhpcy5tZW1iZXJzID0gbWVtYmVycztcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVtYmVyc0NoYW5nZS5lbWl0KG1lbWJlcnMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5idXN5ID0gZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnVzeSkgcmV0dXJuO1xuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgdGhpcy5ncm91cHNTdmMucmVtb3ZlTWVtYmVyKHRoaXMuZ3JvdXBJZCwgdXNlcklkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKG1lbWJlcnMpID0+IHtcbiAgICAgICAgdGhpcy5tZW1iZXJzID0gbWVtYmVycztcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubWVtYmVyc0NoYW5nZS5lbWl0KG1lbWJlcnMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5idXN5ID0gZmFsc2UpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=