@seniorsistemas/data-seniorx-core 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/core/constants/editable-overlay.const.d.ts +4 -0
  2. package/core/constants/help-popover.const.d.ts +7 -0
  3. package/core/constants/input-mask.const.d.ts +5 -0
  4. package/core/constants/navigation-button.const.d.ts +3 -0
  5. package/core/constants/object-card.const.d.ts +21 -0
  6. package/core/constants/thumbnail.const.d.ts +6 -0
  7. package/core/constants/thumbnails.const.d.ts +4 -0
  8. package/core/constants/token-list.const.d.ts +3 -0
  9. package/core/types/button.type.d.ts +1 -1
  10. package/core/types/datepicker.type.d.ts +28 -0
  11. package/core/types/dynamic-form.type.d.ts +29 -0
  12. package/core/types/editable-overlay.type.d.ts +15 -0
  13. package/core/types/help-popover.type.d.ts +2 -0
  14. package/core/types/input-mask.type.d.ts +6 -0
  15. package/core/types/lookup.type.d.ts +45 -0
  16. package/core/types/navigation-button.type.d.ts +9 -0
  17. package/core/types/row-card.type.d.ts +5 -0
  18. package/core/types/semantics.type.d.ts +1 -1
  19. package/core/types/table-options.type.d.ts +1 -0
  20. package/core/types/thumbnail.type.d.ts +1 -0
  21. package/core/types/thumbnails.type.d.ts +20 -0
  22. package/core/types/token-list.type.d.ts +6 -0
  23. package/core/utils/emoji-support.util.d.ts +12 -0
  24. package/core/utils/overlay-dismiss.util.d.ts +25 -0
  25. package/esm2022/core/config/row-card.type.config.mjs +3 -1
  26. package/esm2022/core/constants/country-phone-picker.const.mjs +6 -6
  27. package/esm2022/core/constants/editable-overlay.const.mjs +5 -0
  28. package/esm2022/core/constants/help-popover.const.mjs +7 -0
  29. package/esm2022/core/constants/input-mask.const.mjs +6 -0
  30. package/esm2022/core/constants/navigation-button.const.mjs +4 -0
  31. package/esm2022/core/constants/object-card.const.mjs +23 -0
  32. package/esm2022/core/constants/thumbnail.const.mjs +14 -0
  33. package/esm2022/core/constants/thumbnails.const.mjs +5 -0
  34. package/esm2022/core/constants/token-list.const.mjs +4 -0
  35. package/esm2022/core/types/button.type.mjs +1 -1
  36. package/esm2022/core/types/datepicker.type.mjs +2 -0
  37. package/esm2022/core/types/dynamic-form.type.mjs +2 -0
  38. package/esm2022/core/types/editable-overlay.type.mjs +2 -0
  39. package/esm2022/core/types/help-popover.type.mjs +2 -0
  40. package/esm2022/core/types/input-mask.type.mjs +2 -0
  41. package/esm2022/core/types/lookup.type.mjs +2 -0
  42. package/esm2022/core/types/navigation-button.type.mjs +2 -0
  43. package/esm2022/core/types/row-card.type.mjs +1 -1
  44. package/esm2022/core/types/semantics.type.mjs +1 -1
  45. package/esm2022/core/types/table-options.type.mjs +1 -1
  46. package/esm2022/core/types/thumbnail.type.mjs +2 -0
  47. package/esm2022/core/types/thumbnails.type.mjs +2 -0
  48. package/esm2022/core/types/token-list.type.mjs +2 -0
  49. package/esm2022/core/utils/emoji-support.util.mjs +48 -0
  50. package/esm2022/core/utils/mask.util.mjs +2 -2
  51. package/esm2022/core/utils/overlay-dismiss.util.mjs +38 -0
  52. package/esm2022/features/alert/alert.component.mjs +5 -2
  53. package/esm2022/features/autocomplete/autocomplete.component.mjs +30 -8
  54. package/esm2022/features/bignumber-input/bignumber-input.component.mjs +1 -1
  55. package/esm2022/features/button/button.component.mjs +13 -5
  56. package/esm2022/features/card-list/card/card.component.mjs +2 -2
  57. package/esm2022/features/card-list/card-list.component.mjs +2 -2
  58. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +25 -5
  59. package/esm2022/features/chips/chips.component.mjs +3 -3
  60. package/esm2022/features/code-editor/code-editor.component.mjs +12 -3
  61. package/esm2022/features/combobox/combobox.component.mjs +3 -3
  62. package/esm2022/features/confirm/confirm.component.mjs +2 -2
  63. package/esm2022/features/context-selector/context-selector.component.mjs +1 -1
  64. package/esm2022/features/country-phone-picker/country-phone-picker.component.mjs +22 -18
  65. package/esm2022/features/currency/currency.component.mjs +3 -3
  66. package/esm2022/features/datepicker/datepicker.component.mjs +814 -0
  67. package/esm2022/features/dynamic-form/dynamic-form-field.directive.mjs +178 -0
  68. package/esm2022/features/dynamic-form/dynamic-form.component.mjs +60 -0
  69. package/esm2022/features/dynamic-form/dynamic-form.registry.mjs +13 -0
  70. package/esm2022/features/editable-overlay/editable-overlay-editor.directive.mjs +31 -0
  71. package/esm2022/features/editable-overlay/editable-overlay.component.mjs +217 -0
  72. package/esm2022/features/editor/editor.component.mjs +173 -0
  73. package/esm2022/features/empty-state/empty-state.component.mjs +3 -3
  74. package/esm2022/features/fileupload/fileupload.component.mjs +3 -3
  75. package/esm2022/features/help-popover/help-popover.component.mjs +204 -0
  76. package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
  77. package/esm2022/features/icon-picker/icon-picker.component.mjs +4 -4
  78. package/esm2022/features/image-cropper/image-cropper.component.mjs +2 -2
  79. package/esm2022/features/info-sign/info-sign.component.mjs +6 -3
  80. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  81. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +2 -2
  82. package/esm2022/features/input-mask/input-mask.directive.mjs +510 -0
  83. package/esm2022/features/list/list.component.mjs +2 -2
  84. package/esm2022/features/localized-number-input/localized-number-input.component.mjs +3 -3
  85. package/esm2022/features/lookup/lookup.component.mjs +351 -0
  86. package/esm2022/features/modal/modal.component.mjs +6 -3
  87. package/esm2022/features/modalc/modalc.component.mjs +6 -3
  88. package/esm2022/features/navigation-button/navigation-button.component.mjs +172 -0
  89. package/esm2022/features/number-input/number-input.component.mjs +10 -4
  90. package/esm2022/features/object-card/components/object-card-field/object-card-field.component.mjs +89 -0
  91. package/esm2022/features/object-card/components/object-card-main/object-card-main.component.mjs +114 -0
  92. package/esm2022/features/object-card/object-card.component.mjs +199 -0
  93. package/esm2022/features/password-strength/password-strength.component.mjs +3 -3
  94. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +14 -4
  95. package/esm2022/features/popover/popover.component.mjs +29 -3
  96. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +13 -4
  97. package/esm2022/features/rating-scale/rating-scale.component.mjs +24 -4
  98. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +19 -4
  99. package/esm2022/features/row-card-list/row-card-list.component.mjs +12 -3
  100. package/esm2022/features/scaffold/scaffold.component.mjs +3 -3
  101. package/esm2022/features/searchbox/searchbox.component.mjs +2 -2
  102. package/esm2022/features/select-button/select-button.component.mjs +26 -4
  103. package/esm2022/features/slider/slider.component.mjs +3 -3
  104. package/esm2022/features/split-button/split-button.component.mjs +1 -1
  105. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +15 -18
  106. package/esm2022/features/spotlight/spotlight.component.mjs +2 -2
  107. package/esm2022/features/star-rating/star-rating.component.mjs +25 -4
  108. package/esm2022/features/table/components/table-cell-content.component.mjs +2 -2
  109. package/esm2022/features/table/table.component.mjs +30 -9
  110. package/esm2022/features/textarea/textarea.component.mjs +3 -3
  111. package/esm2022/features/thumbnail/thumbnail.component.mjs +86 -0
  112. package/esm2022/features/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +59 -0
  113. package/esm2022/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.mjs +25 -0
  114. package/esm2022/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.mjs +50 -0
  115. package/esm2022/features/thumbnails/thumbnails.component.mjs +76 -0
  116. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +13 -1
  117. package/esm2022/features/token-list/token-list.component.mjs +64 -0
  118. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
  119. package/esm2022/locales/en.json +409 -1
  120. package/esm2022/locales/es-CO.json +423 -2
  121. package/esm2022/locales/pt.json +1037 -630
  122. package/esm2022/providers/features.provider.mjs +20 -2
  123. package/esm2022/providers/primeng-config.provider.mjs +14 -128
  124. package/esm2022/providers/translate.provider.mjs +2 -2
  125. package/esm2022/public-api.mjs +31 -1
  126. package/features/alert/alert.component.d.ts +1 -0
  127. package/features/autocomplete/autocomplete.component.d.ts +9 -3
  128. package/features/button/button.component.d.ts +3 -1
  129. package/features/checkbox-list/checkbox-list.component.d.ts +8 -1
  130. package/features/code-editor/code-editor.component.d.ts +5 -1
  131. package/features/country-phone-picker/country-phone-picker.component.d.ts +3 -0
  132. package/features/datepicker/datepicker.component.d.ts +118 -0
  133. package/features/dynamic-form/dynamic-form-field.directive.d.ts +26 -0
  134. package/features/dynamic-form/dynamic-form.component.d.ts +15 -0
  135. package/features/dynamic-form/dynamic-form.registry.d.ts +11 -0
  136. package/features/editable-overlay/editable-overlay-editor.directive.d.ts +22 -0
  137. package/features/editable-overlay/editable-overlay.component.d.ts +60 -0
  138. package/features/editor/editor.component.d.ts +47 -0
  139. package/features/help-popover/help-popover.component.d.ts +81 -0
  140. package/features/info-sign/info-sign.component.d.ts +2 -1
  141. package/features/input-mask/input-mask.directive.d.ts +117 -0
  142. package/features/lookup/lookup.component.d.ts +104 -0
  143. package/features/modal/modal.component.d.ts +2 -1
  144. package/features/modalc/modalc.component.d.ts +2 -1
  145. package/features/navigation-button/navigation-button.component.d.ts +58 -0
  146. package/features/number-input/number-input.component.d.ts +3 -1
  147. package/features/object-card/components/object-card-field/object-card-field.component.d.ts +48 -0
  148. package/features/object-card/components/object-card-main/object-card-main.component.d.ts +57 -0
  149. package/features/object-card/object-card.component.d.ts +70 -0
  150. package/features/pin-code-field/pin-code-field.component.d.ts +6 -1
  151. package/features/popover/popover.component.d.ts +4 -1
  152. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +5 -1
  153. package/features/rating-scale/rating-scale.component.d.ts +9 -1
  154. package/features/row-card-list/row-card/row-card.component.d.ts +6 -1
  155. package/features/row-card-list/row-card-list.component.d.ts +4 -1
  156. package/features/select-button/select-button.component.d.ts +9 -1
  157. package/features/star-rating/star-rating.component.d.ts +9 -1
  158. package/features/table/table.component.d.ts +2 -1
  159. package/features/thumbnail/thumbnail.component.d.ts +48 -0
  160. package/features/thumbnails/components/thumbnail-item/thumbnail-item.component.d.ts +29 -0
  161. package/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.d.ts +13 -0
  162. package/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.d.ts +19 -0
  163. package/features/thumbnails/thumbnails.component.d.ts +46 -0
  164. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +2 -0
  165. package/features/token-list/token-list.component.d.ts +31 -0
  166. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +11288 -6613
  167. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  168. package/package.json +12 -3
  169. package/providers/primeng-config.provider.d.ts +12 -0
  170. package/public-api.d.ts +38 -0
  171. package/src/locales/en.json +409 -1
  172. package/src/locales/es-CO.json +423 -2
  173. package/src/locales/pt.json +1037 -630
  174. package/styles/sdc-global-variables.scss +38 -0
  175. package/styles.css +132 -0
  176. package/styles.scss +2 -0
  177. package/esm2022/providers/custom/button.mjs +0 -93
  178. package/esm2022/providers/custom/toast.mjs +0 -75
  179. package/providers/custom/button.d.ts +0 -16
  180. package/providers/custom/toast.d.ts +0 -14
@@ -42,11 +42,11 @@ export class EmptyStateComponent {
42
42
  return this.shouldShowActions && this.showSecondaryAction && !!this.secondaryActionLabel;
43
43
  }
44
44
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EmptyStateComponent, isStandalone: true, selector: "sdc-empty-state", inputs: { id: "id", title: "title", variant: "variant", titleParams: "titleParams", iconClass: "iconClass", description: "description", descriptionParams: "descriptionParams", showPrimaryAction: "showPrimaryAction", showSecondaryAction: "showSecondaryAction", primaryActionLabel: "primaryActionLabel", primaryActionLabelParams: "primaryActionLabelParams", secondaryActionLabel: "secondaryActionLabel", secondaryActionLabelParams: "secondaryActionLabelParams", primaryModel: "primaryModel" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<section\n [id]=\"id\"\n class=\"sdc-empty-state\"\n [class.sdc-empty-state--inline-text]=\"isInlineTextVariant\"\n [attr.aria-label]=\"title | translate: titleParams\"\n>\n @if (shouldShowIcon) {\n <div [id]=\"id + '-icon'\" class=\"sdc-empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </div>\n }\n\n <div [id]=\"id + '-title'\" class=\"sdc-empty-state__title\">\n {{ title | translate: titleParams }}\n </div>\n\n @if (shouldShowDescription) {\n <div [id]=\"id + '-description'\" class=\"sdc-empty-state__description\">\n {{ descriptionText | translate: descriptionParams }}\n </div>\n }\n\n @if (shouldShowActions) {\n <div [id]=\"id + '-actions'\" class=\"sdc-empty-state__actions\">\n <sdc-button\n [id]=\"id + '-primary-action'\"\n [label]=\"primaryActionLabel!\"\n [model]=\"primaryModel\"\n (clicked)=\"primaryAction.emit()\"\n ></sdc-button>\n\n @if (shouldShowSecondaryAction) {\n <sdc-button\n [id]=\"id + '-secondary-action'\"\n [label]=\"secondaryActionLabel!\"\n [priority]=\"'link'\"\n (clicked)=\"secondaryAction.emit()\"\n ></sdc-button>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-empty-state{align-items:center;color:var(--sdc-text-default, #111827);display:flex;flex-direction:column;gap:var(--sdc-control-gap, .5rem);padding:var(--sdc-empty-state-padding, 1.5rem);text-align:center;width:100%}.sdc-empty-state__icon{color:var(--sdc-empty-state-icon-color, #d8d8d8);font-size:var(--sdc-empty-state-icon-size, 4rem);line-height:1}.sdc-empty-state__title{font-size:1rem;font-weight:700}.sdc-empty-state--inline-text{align-items:flex-start;gap:0;padding:var(--sdc-empty-state-inline-padding, .25rem .75rem .625rem);text-align:left}.sdc-empty-state--inline-text .sdc-empty-state__title{color:var(--sdc-empty-state-inline-color, var(--p-text-muted-color, #6b7280));font-size:var(--sdc-empty-state-inline-font-size, .8125rem);font-weight:var(--sdc-empty-state-inline-font-weight, 400);line-height:var(--sdc-empty-state-inline-line-height, 1.25rem)}.sdc-empty-state__description{color:var(--sdc-text-muted, #6b7280);font-size:.9375rem;line-height:1.5;max-width:var(--sdc-empty-state-description-max-width, 28rem)}.sdc-empty-state__actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--sdc-control-gap, .5rem);justify-content:center;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EmptyStateComponent, isStandalone: true, selector: "sdc-empty-state", inputs: { id: "id", title: "title", variant: "variant", titleParams: "titleParams", iconClass: "iconClass", description: "description", descriptionParams: "descriptionParams", showPrimaryAction: "showPrimaryAction", showSecondaryAction: "showSecondaryAction", primaryActionLabel: "primaryActionLabel", primaryActionLabelParams: "primaryActionLabelParams", secondaryActionLabel: "secondaryActionLabel", secondaryActionLabelParams: "secondaryActionLabelParams", primaryModel: "primaryModel" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<section\n [id]=\"id\"\n class=\"sdc-empty-state\"\n [class.sdc-empty-state--inline-text]=\"isInlineTextVariant\"\n [attr.aria-label]=\"title | translate: titleParams\"\n>\n @if (shouldShowIcon) {\n <div [id]=\"id + '-icon'\" class=\"sdc-empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </div>\n }\n\n <div [id]=\"id + '-title'\" class=\"sdc-empty-state__title\">\n {{ title | translate: titleParams }}\n </div>\n\n @if (shouldShowDescription) {\n <div [id]=\"id + '-description'\" class=\"sdc-empty-state__description\">\n {{ descriptionText | translate: descriptionParams }}\n </div>\n }\n\n @if (shouldShowActions) {\n <div [id]=\"id + '-actions'\" class=\"sdc-empty-state__actions\">\n <sdc-button\n [id]=\"id + '-primary-action'\"\n [label]=\"primaryActionLabel!\"\n [model]=\"primaryModel\"\n (clicked)=\"primaryAction.emit()\"\n ></sdc-button>\n\n @if (shouldShowSecondaryAction) {\n <sdc-button\n [id]=\"id + '-secondary-action'\"\n [label]=\"secondaryActionLabel!\"\n [priority]=\"'link'\"\n (clicked)=\"secondaryAction.emit()\"\n ></sdc-button>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-empty-state{align-items:center;box-sizing:border-box;color:var(--sdc-text-default, #111827);display:flex;flex-direction:column;gap:var(--sdc-control-gap, .5rem);padding:var(--sdc-empty-state-padding, 1.5rem);text-align:center;width:100%}.sdc-empty-state__icon{color:var(--sdc-empty-state-icon-color, #d8d8d8);font-size:var(--sdc-empty-state-icon-size, 4rem);line-height:1}.sdc-empty-state__title{font-size:1rem;font-weight:700}.sdc-empty-state--inline-text{align-items:flex-start;gap:0;padding:var(--sdc-empty-state-inline-padding, .25rem .75rem .625rem);text-align:left}.sdc-empty-state--inline-text .sdc-empty-state__title{color:var(--sdc-empty-state-inline-color, var(--p-text-muted-color, #6b7280));font-size:var(--sdc-empty-state-inline-font-size, .8125rem);font-weight:var(--sdc-empty-state-inline-font-weight, 400);line-height:var(--sdc-empty-state-inline-line-height, 1.25rem)}.sdc-empty-state__description{color:var(--sdc-text-muted, #6b7280);font-size:.9375rem;line-height:1.5;max-width:var(--sdc-empty-state-description-max-width, 28rem)}.sdc-empty-state__actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--sdc-control-gap, .5rem);justify-content:center;margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "loading", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
46
  }
47
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, decorators: [{
48
48
  type: Component,
49
- args: [{ selector: 'sdc-empty-state', standalone: true, imports: [CommonModule, TranslateModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section\n [id]=\"id\"\n class=\"sdc-empty-state\"\n [class.sdc-empty-state--inline-text]=\"isInlineTextVariant\"\n [attr.aria-label]=\"title | translate: titleParams\"\n>\n @if (shouldShowIcon) {\n <div [id]=\"id + '-icon'\" class=\"sdc-empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </div>\n }\n\n <div [id]=\"id + '-title'\" class=\"sdc-empty-state__title\">\n {{ title | translate: titleParams }}\n </div>\n\n @if (shouldShowDescription) {\n <div [id]=\"id + '-description'\" class=\"sdc-empty-state__description\">\n {{ descriptionText | translate: descriptionParams }}\n </div>\n }\n\n @if (shouldShowActions) {\n <div [id]=\"id + '-actions'\" class=\"sdc-empty-state__actions\">\n <sdc-button\n [id]=\"id + '-primary-action'\"\n [label]=\"primaryActionLabel!\"\n [model]=\"primaryModel\"\n (clicked)=\"primaryAction.emit()\"\n ></sdc-button>\n\n @if (shouldShowSecondaryAction) {\n <sdc-button\n [id]=\"id + '-secondary-action'\"\n [label]=\"secondaryActionLabel!\"\n [priority]=\"'link'\"\n (clicked)=\"secondaryAction.emit()\"\n ></sdc-button>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-empty-state{align-items:center;color:var(--sdc-text-default, #111827);display:flex;flex-direction:column;gap:var(--sdc-control-gap, .5rem);padding:var(--sdc-empty-state-padding, 1.5rem);text-align:center;width:100%}.sdc-empty-state__icon{color:var(--sdc-empty-state-icon-color, #d8d8d8);font-size:var(--sdc-empty-state-icon-size, 4rem);line-height:1}.sdc-empty-state__title{font-size:1rem;font-weight:700}.sdc-empty-state--inline-text{align-items:flex-start;gap:0;padding:var(--sdc-empty-state-inline-padding, .25rem .75rem .625rem);text-align:left}.sdc-empty-state--inline-text .sdc-empty-state__title{color:var(--sdc-empty-state-inline-color, var(--p-text-muted-color, #6b7280));font-size:var(--sdc-empty-state-inline-font-size, .8125rem);font-weight:var(--sdc-empty-state-inline-font-weight, 400);line-height:var(--sdc-empty-state-inline-line-height, 1.25rem)}.sdc-empty-state__description{color:var(--sdc-text-muted, #6b7280);font-size:.9375rem;line-height:1.5;max-width:var(--sdc-empty-state-description-max-width, 28rem)}.sdc-empty-state__actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--sdc-control-gap, .5rem);justify-content:center;margin-top:.25rem}\n"] }]
49
+ args: [{ selector: 'sdc-empty-state', standalone: true, imports: [CommonModule, TranslateModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section\n [id]=\"id\"\n class=\"sdc-empty-state\"\n [class.sdc-empty-state--inline-text]=\"isInlineTextVariant\"\n [attr.aria-label]=\"title | translate: titleParams\"\n>\n @if (shouldShowIcon) {\n <div [id]=\"id + '-icon'\" class=\"sdc-empty-state__icon\" aria-hidden=\"true\">\n <i [class]=\"iconClass\"></i>\n </div>\n }\n\n <div [id]=\"id + '-title'\" class=\"sdc-empty-state__title\">\n {{ title | translate: titleParams }}\n </div>\n\n @if (shouldShowDescription) {\n <div [id]=\"id + '-description'\" class=\"sdc-empty-state__description\">\n {{ descriptionText | translate: descriptionParams }}\n </div>\n }\n\n @if (shouldShowActions) {\n <div [id]=\"id + '-actions'\" class=\"sdc-empty-state__actions\">\n <sdc-button\n [id]=\"id + '-primary-action'\"\n [label]=\"primaryActionLabel!\"\n [model]=\"primaryModel\"\n (clicked)=\"primaryAction.emit()\"\n ></sdc-button>\n\n @if (shouldShowSecondaryAction) {\n <sdc-button\n [id]=\"id + '-secondary-action'\"\n [label]=\"secondaryActionLabel!\"\n [priority]=\"'link'\"\n (clicked)=\"secondaryAction.emit()\"\n ></sdc-button>\n }\n </div>\n }\n</section>\n", styles: [":host{display:block}.sdc-empty-state{align-items:center;box-sizing:border-box;color:var(--sdc-text-default, #111827);display:flex;flex-direction:column;gap:var(--sdc-control-gap, .5rem);padding:var(--sdc-empty-state-padding, 1.5rem);text-align:center;width:100%}.sdc-empty-state__icon{color:var(--sdc-empty-state-icon-color, #d8d8d8);font-size:var(--sdc-empty-state-icon-size, 4rem);line-height:1}.sdc-empty-state__title{font-size:1rem;font-weight:700}.sdc-empty-state--inline-text{align-items:flex-start;gap:0;padding:var(--sdc-empty-state-inline-padding, .25rem .75rem .625rem);text-align:left}.sdc-empty-state--inline-text .sdc-empty-state__title{color:var(--sdc-empty-state-inline-color, var(--p-text-muted-color, #6b7280));font-size:var(--sdc-empty-state-inline-font-size, .8125rem);font-weight:var(--sdc-empty-state-inline-font-weight, 400);line-height:var(--sdc-empty-state-inline-line-height, 1.25rem)}.sdc-empty-state__description{color:var(--sdc-text-muted, #6b7280);font-size:.9375rem;line-height:1.5;max-width:var(--sdc-empty-state-description-max-width, 28rem)}.sdc-empty-state__actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--sdc-control-gap, .5rem);justify-content:center;margin-top:.25rem}\n"] }]
50
50
  }], propDecorators: { id: [{
51
51
  type: Input
52
52
  }], title: [{
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
81
81
  }], secondaryAction: [{
82
82
  type: Output
83
83
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVc3RCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssQ0FBVTtJQUNqQyxPQUFPLEdBQXNCLFNBQVMsQ0FBQztJQUN2QyxXQUFXLENBQTZCO0lBQ3hDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztJQUMzQyxXQUFXLENBQVU7SUFDckIsaUJBQWlCLENBQTZCO0lBQzlDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUN6QixtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDM0Isa0JBQWtCLENBQVU7SUFDNUIsd0JBQXdCLENBQTZCO0lBQ3JELG9CQUFvQixDQUFVO0lBQzlCLDBCQUEwQixDQUE2QjtJQUN2RCxZQUFZLEdBQTBCLEVBQUUsQ0FBQztJQUV4QyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN6QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVyRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDMUYsQ0FBQztJQUVELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQzNGLENBQUM7d0dBekNVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHdvQkNsQmhDLHV1Q0EwQ0EsMnVDRDlCWSxZQUFZLDhCQUFFLGVBQWUsNEZBQUUsZUFBZTs7NEZBTTdDLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxtQkFHeEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsRUFBRTtzQkFBVixLQUFLO2dCQUNxQixLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgRU1QVFlfU1RBVEVfREVGQVVMVF9JQ09OX0NMQVNTIH0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvZW1wdHktc3RhdGUuY29uc3QnO1xuaW1wb3J0IHR5cGUgeyBFbXB0eVN0YXRlQWN0aW9uTW9kZWwsIEVtcHR5U3RhdGVUcmFuc2xhdGVQYXJhbXMsIEVtcHR5U3RhdGVWYXJpYW50IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9lbXB0eS1zdGF0ZS50eXBlJztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtZW1wdHktc3RhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEJ1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWQgPSBuZXh0U2VxdWVudGlhbElkKCdzZGMtZW1wdHktc3RhdGUnKTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEVtcHR5U3RhdGVWYXJpYW50ID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZVBhcmFtcz86IEVtcHR5U3RhdGVUcmFuc2xhdGVQYXJhbXM7XG4gIEBJbnB1dCgpIGljb25DbGFzcyA9IEVNUFRZX1NUQVRFX0RFRkFVTFRfSUNPTl9DTEFTUztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uUGFyYW1zPzogRW1wdHlTdGF0ZVRyYW5zbGF0ZVBhcmFtcztcbiAgQElucHV0KCkgc2hvd1ByaW1hcnlBY3Rpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2Vjb25kYXJ5QWN0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBwcmltYXJ5QWN0aW9uTGFiZWxQYXJhbXM/OiBFbXB0eVN0YXRlVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSBzZWNvbmRhcnlBY3Rpb25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgc2Vjb25kYXJ5QWN0aW9uTGFiZWxQYXJhbXM/OiBFbXB0eVN0YXRlVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSBwcmltYXJ5TW9kZWw6IEVtcHR5U3RhdGVBY3Rpb25Nb2RlbCA9IFtdO1xuXG4gIEBPdXRwdXQoKSBwcmltYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2Vjb25kYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBpc0lubGluZVRleHRWYXJpYW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdpbmxpbmUtdGV4dCc7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzSW5saW5lVGV4dFZhcmlhbnQ7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0Rlc2NyaXB0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0lubGluZVRleHRWYXJpYW50ICYmICEhdGhpcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvblRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbiA/PyAnJztcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93QWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbmxpbmVUZXh0VmFyaWFudCAmJiB0aGlzLnNob3dQcmltYXJ5QWN0aW9uICYmICEhdGhpcy5wcmltYXJ5QWN0aW9uTGFiZWw7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1NlY29uZGFyeUFjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93QWN0aW9ucyAmJiB0aGlzLnNob3dTZWNvbmRhcnlBY3Rpb24gJiYgISF0aGlzLnNlY29uZGFyeUFjdGlvbkxhYmVsO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBbaWRdPVwiaWRcIlxuICBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZVwiXG4gIFtjbGFzcy5zZGMtZW1wdHktc3RhdGUtLWlubGluZS10ZXh0XT1cImlzSW5saW5lVGV4dFZhcmlhbnRcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlIHwgdHJhbnNsYXRlOiB0aXRsZVBhcmFtc1wiXG4+XG4gIEBpZiAoc2hvdWxkU2hvd0ljb24pIHtcbiAgICA8ZGl2IFtpZF09XCJpZCArICctaWNvbidcIiBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZV9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiPjwvaT5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgW2lkXT1cImlkICsgJy10aXRsZSdcIiBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZV9fdGl0bGVcIj5cbiAgICB7eyB0aXRsZSB8IHRyYW5zbGF0ZTogdGl0bGVQYXJhbXMgfX1cbiAgPC9kaXY+XG5cbiAgQGlmIChzaG91bGRTaG93RGVzY3JpcHRpb24pIHtcbiAgICA8ZGl2IFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJzZGMtZW1wdHktc3RhdGVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICB7eyBkZXNjcmlwdGlvblRleHQgfCB0cmFuc2xhdGU6IGRlc2NyaXB0aW9uUGFyYW1zIH19XG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKHNob3VsZFNob3dBY3Rpb25zKSB7XG4gICAgPGRpdiBbaWRdPVwiaWQgKyAnLWFjdGlvbnMnXCIgY2xhc3M9XCJzZGMtZW1wdHktc3RhdGVfX2FjdGlvbnNcIj5cbiAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgIFtpZF09XCJpZCArICctcHJpbWFyeS1hY3Rpb24nXCJcbiAgICAgICAgW2xhYmVsXT1cInByaW1hcnlBY3Rpb25MYWJlbCFcIlxuICAgICAgICBbbW9kZWxdPVwicHJpbWFyeU1vZGVsXCJcbiAgICAgICAgKGNsaWNrZWQpPVwicHJpbWFyeUFjdGlvbi5lbWl0KClcIlxuICAgICAgPjwvc2RjLWJ1dHRvbj5cblxuICAgICAgQGlmIChzaG91bGRTaG93U2Vjb25kYXJ5QWN0aW9uKSB7XG4gICAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgICAgW2lkXT1cImlkICsgJy1zZWNvbmRhcnktYWN0aW9uJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cInNlY29uZGFyeUFjdGlvbkxhYmVsIVwiXG4gICAgICAgICAgW3ByaW9yaXR5XT1cIidsaW5rJ1wiXG4gICAgICAgICAgKGNsaWNrZWQpPVwic2Vjb25kYXJ5QWN0aW9uLmVtaXQoKVwiXG4gICAgICAgID48L3NkYy1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvc2VjdGlvbj5cbiJdfQ==
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQVc3RCxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUssQ0FBVTtJQUNqQyxPQUFPLEdBQXNCLFNBQVMsQ0FBQztJQUN2QyxXQUFXLENBQTZCO0lBQ3hDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztJQUMzQyxXQUFXLENBQVU7SUFDckIsaUJBQWlCLENBQTZCO0lBQzlDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUN6QixtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDM0Isa0JBQWtCLENBQVU7SUFDNUIsd0JBQXdCLENBQTZCO0lBQ3JELG9CQUFvQixDQUFVO0lBQzlCLDBCQUEwQixDQUE2QjtJQUN2RCxZQUFZLEdBQTBCLEVBQUUsQ0FBQztJQUV4QyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN6QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVyRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDMUYsQ0FBQztJQUVELElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQzNGLENBQUM7d0dBekNVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHdvQkNsQmhDLHV1Q0EwQ0EsaXdDRDlCWSxZQUFZLDhCQUFFLGVBQWUsNEZBQUUsZUFBZTs7NEZBTTdDLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQyxtQkFHeEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsRUFBRTtzQkFBVixLQUFLO2dCQUNxQixLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgRU1QVFlfU1RBVEVfREVGQVVMVF9JQ09OX0NMQVNTIH0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvZW1wdHktc3RhdGUuY29uc3QnO1xuaW1wb3J0IHR5cGUgeyBFbXB0eVN0YXRlQWN0aW9uTW9kZWwsIEVtcHR5U3RhdGVUcmFuc2xhdGVQYXJhbXMsIEVtcHR5U3RhdGVWYXJpYW50IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9lbXB0eS1zdGF0ZS50eXBlJztcbmltcG9ydCB7IG5leHRTZXF1ZW50aWFsSWQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2lkLnV0aWwnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtZW1wdHktc3RhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIEJ1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9lbXB0eS1zdGF0ZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBFbXB0eVN0YXRlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWQgPSBuZXh0U2VxdWVudGlhbElkKCdzZGMtZW1wdHktc3RhdGUnKTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0bGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEVtcHR5U3RhdGVWYXJpYW50ID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZVBhcmFtcz86IEVtcHR5U3RhdGVUcmFuc2xhdGVQYXJhbXM7XG4gIEBJbnB1dCgpIGljb25DbGFzcyA9IEVNUFRZX1NUQVRFX0RFRkFVTFRfSUNPTl9DTEFTUztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uUGFyYW1zPzogRW1wdHlTdGF0ZVRyYW5zbGF0ZVBhcmFtcztcbiAgQElucHV0KCkgc2hvd1ByaW1hcnlBY3Rpb24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93U2Vjb25kYXJ5QWN0aW9uID0gdHJ1ZTtcbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBwcmltYXJ5QWN0aW9uTGFiZWxQYXJhbXM/OiBFbXB0eVN0YXRlVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSBzZWNvbmRhcnlBY3Rpb25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgc2Vjb25kYXJ5QWN0aW9uTGFiZWxQYXJhbXM/OiBFbXB0eVN0YXRlVHJhbnNsYXRlUGFyYW1zO1xuICBASW5wdXQoKSBwcmltYXJ5TW9kZWw6IEVtcHR5U3RhdGVBY3Rpb25Nb2RlbCA9IFtdO1xuXG4gIEBPdXRwdXQoKSBwcmltYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2Vjb25kYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBpc0lubGluZVRleHRWYXJpYW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhcmlhbnQgPT09ICdpbmxpbmUtdGV4dCc7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0ljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzSW5saW5lVGV4dFZhcmlhbnQ7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd0Rlc2NyaXB0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0lubGluZVRleHRWYXJpYW50ICYmICEhdGhpcy5kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBkZXNjcmlwdGlvblRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kZXNjcmlwdGlvbiA/PyAnJztcbiAgfVxuXG4gIGdldCBzaG91bGRTaG93QWN0aW9ucygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbmxpbmVUZXh0VmFyaWFudCAmJiB0aGlzLnNob3dQcmltYXJ5QWN0aW9uICYmICEhdGhpcy5wcmltYXJ5QWN0aW9uTGFiZWw7XG4gIH1cblxuICBnZXQgc2hvdWxkU2hvd1NlY29uZGFyeUFjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93QWN0aW9ucyAmJiB0aGlzLnNob3dTZWNvbmRhcnlBY3Rpb24gJiYgISF0aGlzLnNlY29uZGFyeUFjdGlvbkxhYmVsO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBbaWRdPVwiaWRcIlxuICBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZVwiXG4gIFtjbGFzcy5zZGMtZW1wdHktc3RhdGUtLWlubGluZS10ZXh0XT1cImlzSW5saW5lVGV4dFZhcmlhbnRcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlIHwgdHJhbnNsYXRlOiB0aXRsZVBhcmFtc1wiXG4+XG4gIEBpZiAoc2hvdWxkU2hvd0ljb24pIHtcbiAgICA8ZGl2IFtpZF09XCJpZCArICctaWNvbidcIiBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZV9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPGkgW2NsYXNzXT1cImljb25DbGFzc1wiPjwvaT5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgW2lkXT1cImlkICsgJy10aXRsZSdcIiBjbGFzcz1cInNkYy1lbXB0eS1zdGF0ZV9fdGl0bGVcIj5cbiAgICB7eyB0aXRsZSB8IHRyYW5zbGF0ZTogdGl0bGVQYXJhbXMgfX1cbiAgPC9kaXY+XG5cbiAgQGlmIChzaG91bGRTaG93RGVzY3JpcHRpb24pIHtcbiAgICA8ZGl2IFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJzZGMtZW1wdHktc3RhdGVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICB7eyBkZXNjcmlwdGlvblRleHQgfCB0cmFuc2xhdGU6IGRlc2NyaXB0aW9uUGFyYW1zIH19XG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKHNob3VsZFNob3dBY3Rpb25zKSB7XG4gICAgPGRpdiBbaWRdPVwiaWQgKyAnLWFjdGlvbnMnXCIgY2xhc3M9XCJzZGMtZW1wdHktc3RhdGVfX2FjdGlvbnNcIj5cbiAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgIFtpZF09XCJpZCArICctcHJpbWFyeS1hY3Rpb24nXCJcbiAgICAgICAgW2xhYmVsXT1cInByaW1hcnlBY3Rpb25MYWJlbCFcIlxuICAgICAgICBbbW9kZWxdPVwicHJpbWFyeU1vZGVsXCJcbiAgICAgICAgKGNsaWNrZWQpPVwicHJpbWFyeUFjdGlvbi5lbWl0KClcIlxuICAgICAgPjwvc2RjLWJ1dHRvbj5cblxuICAgICAgQGlmIChzaG91bGRTaG93U2Vjb25kYXJ5QWN0aW9uKSB7XG4gICAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgICAgW2lkXT1cImlkICsgJy1zZWNvbmRhcnktYWN0aW9uJ1wiXG4gICAgICAgICAgW2xhYmVsXT1cInNlY29uZGFyeUFjdGlvbkxhYmVsIVwiXG4gICAgICAgICAgW3ByaW9yaXR5XT1cIidsaW5rJ1wiXG4gICAgICAgICAgKGNsaWNrZWQpPVwic2Vjb25kYXJ5QWN0aW9uLmVtaXQoKVwiXG4gICAgICAgID48L3NkYy1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -255,11 +255,11 @@ export class FileUploadComponent {
255
255
  };
256
256
  }
257
257
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
258
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileUploadComponent, isStandalone: true, selector: "sdc-fileupload", inputs: { label: "label", required: "required", disabled: "disabled", multiple: "multiple", accept: "accept", maxFileSize: "maxFileSize", helperText: "helperText", errorMessage: "errorMessage", mode: "mode", showPreview: "showPreview", allowDownload: "allowDownload", allowRemove: "allowRemove", allowImageModal: "allowImageModal", invalid: "invalid", placeholder: "placeholder", files: "files" }, outputs: { filesChange: "filesChange", fileSelected: "fileSelected", fileRemoved: "fileRemoved", fileDownload: "fileDownload", filePreview: "filePreview", validationError: "validationError" }, viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:14px;font-weight:500;line-height:var(--sdc-form-label-lh);color:var(--sdc-text-default);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:400}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileUploadComponent, isStandalone: true, selector: "sdc-fileupload", inputs: { label: "label", required: "required", disabled: "disabled", multiple: "multiple", accept: "accept", maxFileSize: "maxFileSize", helperText: "helperText", errorMessage: "errorMessage", mode: "mode", showPreview: "showPreview", allowDownload: "allowDownload", allowRemove: "allowRemove", allowImageModal: "allowImageModal", invalid: "invalid", placeholder: "placeholder", files: "files" }, outputs: { filesChange: "filesChange", fileSelected: "fileSelected", fileRemoved: "fileRemoved", fileDownload: "fileDownload", filePreview: "filePreview", validationError: "validationError" }, viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "headerActions", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
259
259
  }
260
260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileUploadComponent, decorators: [{
261
261
  type: Component,
262
- args: [{ selector: 'sdc-fileupload', standalone: true, imports: [CommonModule, TranslateModule, ModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:14px;font-weight:500;line-height:var(--sdc-form-label-lh);color:var(--sdc-text-default);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:400}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"] }]
262
+ args: [{ selector: 'sdc-fileupload', standalone: true, imports: [CommonModule, TranslateModule, ModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"] }]
263
263
  }], propDecorators: { nativeInput: [{
264
264
  type: ViewChild,
265
265
  args: ['nativeInput']
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
308
308
  }], validationError: [{
309
309
  type: Output
310
310
  }] } });
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRS9DLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixTQUFTLGNBQWM7SUFDckIsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsb0JBQW9CLFNBQVMsVUFBVSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQVdELE1BQU0sT0FBTyxtQkFBbUI7SUFDSixXQUFXLENBQWdDO0lBRTVELEtBQUssR0FBbUIsS0FBSyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcs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QUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQ2hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQVFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgRmlsZVVwbG9hZE1vZGUsIFNkY0ZpbGVVcGxvYWRFcnJvciwgU2RjRmlsZVVwbG9hZEZpbGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbGV1cGxvYWQudHlwZSc7XG5pbXBvcnQge1xuICBGSUxFVVBMT0FEX0RFRkFVTFRfQUNDRVBULFxuICBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkUsXG4gIEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMsXG4gIEZJTEVVUExPQURfSURfUFJFRklYLFxuICBGSUxFVVBMT0FEX0lNQUdFX1RZUEVTLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9maWxldXBsb2FkLmNvbnN0JztcblxubGV0IF9pZENvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbGVJZCgpOiBzdHJpbmcge1xuICBfaWRDb3VudGVyICs9IDE7XG4gIHJldHVybiBgJHtGSUxFVVBMT0FEX0lEX1BSRUZJWH0tZmlsZS0ke19pZENvdW50ZXJ9YDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWZpbGV1cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0JykgbmF0aXZlSW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBmYWxzZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9IEZJTEVVUExPQURfREVGQVVMVF9BQ0NFUFQ7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplOiBudW1iZXIgPSBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkU7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IGZhbHNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgZmFsc2UgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogRmlsZVVwbG9hZE1vZGUgPSAnZHJvcHpvbmUnO1xuICBASW5wdXQoKSBzaG93UHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd1JlbW92ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93SW1hZ2VNb2RhbCA9IHRydWU7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wbGFjZWhvbGRlcic7XG5cbiAgQElucHV0KCkgc2V0IGZpbGVzKHZhbDogU2RjRmlsZVVwbG9hZEZpbGVbXSkge1xuICAgIHRoaXMuX2ZpbGVzID0gdmFsID8/IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBmaWxlcygpOiBTZGNGaWxlVXBsb2FkRmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gIH1cblxuICBAT3V0cHV0KCkgZmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZURvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIGZpbGVQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U2RjRmlsZVVwbG9hZEVycm9yPigpO1xuXG4gIHJlYWRvbmx5IGNvbXBvbmVudElkID0gbmV4dFNlcXVlbnRpYWxJZChGSUxFVVBMT0FEX0lEX1BSRUZJWCk7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBgJHt0aGlzLmNvbXBvbmVudElkfS1pbnB1dGA7XG4gIHJlYWRvbmx5IGhlbHBlcklkID0gYCR7dGhpcy5jb21wb25lbnRJZH0taGVscGVyYDtcbiAgcmVhZG9ubHkgZXJyb3JJZCA9IGAke3RoaXMuY29tcG9uZW50SWR9LWVycm9yYDtcblxuICBpc0RyYWdPdmVyID0gZmFsc2U7XG4gIHByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgcHJldmlld0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZmlsZXM6IFNkY0ZpbGVVcGxvYWRGaWxlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIG9iamVjdFVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGhhc0ZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBnZXQgaGVscGVyVGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlbHBlclRleHQgPT09ICdzdHJpbmcnID8gdGhpcy5oZWxwZXJUZXh0IDogJyc7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IHRoaXMuZXJyb3JNZXNzYWdlIDogJyc7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQ7XG4gIH1cblxuICBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5oZWxwZXJUZXh0VmFsdWUpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuaGVscGVySWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0ludmFsaWQgJiYgdGhpcy5lcnJvck1lc3NhZ2VWYWx1ZSkge1xuICAgICAgaWRzLnB1c2godGhpcy5lcnJvcklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcy5sZW5ndGggPyBpZHMuam9pbignICcpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBpc0Ryb3B6b25lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZHJvcHpvbmUnO1xuICB9XG5cbiAgZ2V0IGlzQnV0dG9uTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnYnV0dG9uJztcbiAgfVxuXG4gIGdldCBpc0NvbXBhY3RNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjb21wYWN0JztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub2JqZWN0VXJscy5mb3JFYWNoKHVybCA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCkpO1xuICB9XG5cbiAgb3BlbkZpbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5uYXRpdmVJbnB1dD8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgb25OYXRpdmVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0LmZpbGVzPy5sZW5ndGgpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShpbnB1dC5maWxlcykpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkgeyB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlOyB9XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG4gICAgaWYgKGZpbGVzPy5sZW5ndGgpIHsgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpOyB9XG4gIH1cblxuICBvbkRyb3B6b25lS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW5GaWxlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGZpbGUucHJldmlld1VybCAmJiB0aGlzLm9iamVjdFVybHMuaW5jbHVkZXMoZmlsZS5wcmV2aWV3VXJsKSkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChmaWxlLnByZXZpZXdVcmwpO1xuICAgICAgdGhpcy5vYmplY3RVcmxzID0gdGhpcy5vYmplY3RVcmxzLmZpbHRlcih1ID0+IHUgIT09IGZpbGUucHJldmlld1VybCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbGVzID0gdGhpcy5fZmlsZXMuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KFsuLi50aGlzLl9maWxlc10pO1xuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWxlRG93bmxvYWQuZW1pdChmaWxlKTtcbiAgICBpZiAoZmlsZS51cmwgfHwgZmlsZS5wcmV2aWV3VXJsKSB7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZmlsZS51cmwgPz8gZmlsZS5wcmV2aWV3VXJsID8/ICcnO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgIGEuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUHJldmlld01vZGFsKGZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWZpbGUuaXNJbWFnZSB8fCAhdGhpcy5hbGxvd0ltYWdlTW9kYWwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcmV2aWV3RmlsZSA9IGZpbGU7XG4gICAgdGhpcy5wcmV2aWV3TW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3LmVtaXQoZmlsZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZVByZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZpZXdGaWxlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHsgcmV0dXJuIGAke2J5dGVzfSBCYDsgfVxuICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSB7IHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7IH1cbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRmlsZXMocmF3RmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHRvQWRkID0gdGhpcy5tdWx0aXBsZSA/IHJhd0ZpbGVzIDogcmF3RmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgdG9BZGQuZm9yRWFjaCgocmF3KSA9PiB0aGlzLnByb2Nlc3NTaW5nbGVGaWxlKHJhdykpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2luZ2xlRmlsZShyYXc6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlRXJyb3IgPSB0aGlzLnZhbGlkYXRlVHlwZShyYXcpO1xuICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQodHlwZUVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZUVycm9yID0gdGhpcy52YWxpZGF0ZVNpemUocmF3KTtcbiAgICBpZiAoc2l6ZUVycm9yKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KHNpemVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNJbWFnZSA9IEZJTEVVUExPQURfSU1BR0VfVFlQRVMuaW5jbHVkZXMocmF3LnR5cGUpO1xuICAgIGxldCBwcmV2aWV3VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzSW1hZ2UgJiYgdGhpcy5zaG93UHJldmlldykge1xuICAgICAgcHJldmlld1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmF3KTtcbiAgICAgIHRoaXMub2JqZWN0VXJscy5wdXNoKHByZXZpZXdVcmwpO1xuICAgIH1cblxuICAgIGNvbnN0IHNkY0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlID0ge1xuICAgICAgaWQ6IGdlbmVyYXRlRmlsZUlkKCksXG4gICAgICBuYW1lOiByYXcubmFtZSxcbiAgICAgIHNpemU6IHJhdy5zaXplLFxuICAgICAgdHlwZTogcmF3LnR5cGUsXG4gICAgICBmaWxlOiByYXcsXG4gICAgICBwcmV2aWV3VXJsLFxuICAgICAgaXNJbWFnZSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmlsZXMgPSB0aGlzLm11bHRpcGxlID8gWy4uLnRoaXMuX2ZpbGVzLCBzZGNGaWxlXSA6IFtzZGNGaWxlXTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuX2ZpbGVzXSk7XG4gICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChzZGNGaWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeXBlKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuYWNjZXB0IHx8IHRoaXMuYWNjZXB0ID09PSAnKi8qJykgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGFjY2VwdGVkID0gdGhpcy5hY2NlcHQuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRyaW0oKSk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjY2VwdGVkLnNvbWUocGF0dGVybiA9PiB7XG4gICAgICBpZiAocGF0dGVybiA9PT0gJyovKicpIHsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7IHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwYXR0ZXJuLnJlcGxhY2UoJy8qJywgJy8nKSk7IH1cbiAgICAgIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4nKSkgeyByZXR1cm4gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocGF0dGVybi50b0xvd2VyQ2FzZSgpKTsgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gcGF0dGVybjtcbiAgICB9KTtcbiAgICBpZiAobWF0Y2hlcykgeyByZXR1cm4gbnVsbDsgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZmlsZVR5cGUnLFxuICAgICAgbWVzc2FnZTogRklMRVVQTE9BRF9FUlJPUl9NRVNTQUdFUy5maWxlVHlwZSxcbiAgICAgIGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaXplKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUgfHwgZmlsZS5zaXplIDw9IHRoaXMubWF4RmlsZVNpemUpIHsgcmV0dXJuIG51bGw7IH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ZpbGVTaXplJyxcbiAgICAgIG1lc3NhZ2U6IEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMuZmlsZVNpemUsXG4gICAgICBmaWxlLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZFwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZHJvcHpvbmVdPVwiaXNEcm9wem9uZU1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWJ1dHRvbl09XCJpc0J1dHRvbk1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWNvbXBhY3RdPVwiaXNDb21wYWN0TW9kZVwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgW2NsYXNzLnNkYy1maWxldXBsb2FkLS1oYXMtZmlsZXNdPVwiaGFzRmlsZXNcIlxuPlxuICA8IS0tIExhYmVsIHJvdyAtLT5cbiAgQGlmIChsYWJlbCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkXCIgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19yZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBIaWRkZW4gbmF0aXZlIGZpbGUgaW5wdXQgLS0+XG4gIDxpbnB1dFxuICAgICNuYXRpdmVJbnB1dFxuICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX25hdGl2ZS1pbnB1dFwiXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxUZXh0ID8gKGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSkgOiAoJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuc2VsZWN0X2ZpbGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc0ludmFsaWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCJcbiAgLz5cblxuICA8IS0tIERyb3B6b25lIGFyZWEgLS0+XG4gIEBpZiAoaXNEcm9wem9uZU1vZGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2Ryb3B6b25lXCJcbiAgICAgIFtjbGFzcy5zZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtLWRyYWctb3Zlcl09XCJpc0RyYWdPdmVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLmRyb3B6b25lX2xhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbkRyb3B6b25lS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jbG91ZC11cGxvYWQtYWx0IHNkYy1maWxldXBsb2FkX19kcm9wem9uZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtdGV4dFwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtaGludFwiPlxuICAgICAgICB7eyAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5kcm9wem9uZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBCdXR0b24tb25seSBtb2RlIC0tPlxuICBAaWYgKGlzQnV0dG9uTW9kZSB8fCBpc0NvbXBhY3RNb2RlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcigpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1wYXBlcmNsaXAgc2RjLWZpbGV1cGxvYWRfX2J0bi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIH1cblxuICA8IS0tIEZpbGUgbGlzdCAtLT5cbiAgQGlmIChoYXNGaWxlcykge1xuICAgIDx1bFxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1saXN0XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZmlsZV9saXN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1pdGVtXCI+XG5cbiAgICAgICAgICA8IS0tIEltYWdlIHByZXZpZXcgdGh1bWJuYWlsIC0tPlxuICAgICAgICAgIEBpZiAoZmlsZS5pc0ltYWdlICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWItYnRuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUHJldmlld01vZGFsKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWJcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZS5wcmV2aWV3VXJsXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gRmlsZSB0eXBlIGljb24gKG5vbi1pbWFnZSkgLS0+XG4gICAgICAgICAgQGlmICghZmlsZS5pc0ltYWdlIHx8ICFzaG93UHJldmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19maWxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hbHRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEZpbGUgaW5mbyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtaW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1uYW1lXCIgW3RpdGxlXT1cImZpbGUubmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtc2l6ZVwiPnt7IGZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEZpbGUgYWN0aW9ucyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChmaWxlLmlzSW1hZ2UgJiYgYWxsb3dJbWFnZU1vZGFsICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5QcmV2aWV3TW9kYWwoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGFsbG93RG93bmxvYWQgJiYgKGZpbGUudXJsIHx8IGZpbGUucHJldmlld1VybCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2FjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZG93bmxvYWRfZmlsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dSZW1vdmUgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuIHNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuLS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKCdwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLnJlbW92ZV9maWxlJyB8IHRyYW5zbGF0ZSkgKyAnICcgKyBmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cblxuICA8IS0tIEhlbHBlciB0ZXh0IC0tPlxuICBAaWYgKGhlbHBlclRleHQgJiYgIWlzSW52YWxpZCkge1xuICAgIDxzbWFsbCBbaWRdPVwiaGVscGVySWRcIiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19oZWxwZXJcIj5cbiAgICAgIHt7IGhlbHBlclRleHRWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc21hbGw+XG4gIH1cblxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XG4gIEBpZiAoaXNJbnZhbGlkICYmIGVycm9yTWVzc2FnZSkge1xuICAgIDxzbWFsbFxuICAgICAgW2lkXT1cImVycm9ySWRcIlxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZXJyb3JcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgPlxuICAgICAge3sgZXJyb3JNZXNzYWdlVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPCEtLSBJbWFnZSBwcmV2aWV3IG1vZGFsIC0tPlxuQGlmIChwcmV2aWV3RmlsZSkge1xuICA8c2RjLW1vZGFsXG4gICAgW3Zpc2libGVdPVwicHJldmlld01vZGFsVmlzaWJsZVwiXG4gICAgW2hlYWRlcl09XCJwcmV2aWV3RmlsZS5uYW1lXCJcbiAgICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gICAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgICB3aWR0aD1cImF1dG9cIlxuICAgICh2aXNpYmxlQ2hhbmdlKT1cIiEkZXZlbnQgJiYgY2xvc2VQcmV2aWV3TW9kYWwoKVwiXG4gICAgKGhpZGRlbik9XCJjbG9zZVByZXZpZXdNb2RhbCgpXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX3ByZXZpZXctaW1nXCJcbiAgICAgIFtzcmNdPVwicHJldmlld0ZpbGUucHJldmlld1VybFwiXG4gICAgICBbYWx0XT1cInByZXZpZXdGaWxlLm5hbWVcIlxuICAgICAgd2lkdGg9XCI4MDBcIlxuICAgICAgaGVpZ2h0PVwiNjAwXCJcbiAgICAvPlxuICA8L3NkYy1tb2RhbD5cbn1cbiJdfQ==
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRS9DLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixTQUFTLGNBQWM7SUFDckIsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsb0JBQW9CLFNBQVMsVUFBVSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQVdELE1BQU0sT0FBTyxtQkFBbUI7SUFDSixXQUFXLENBQWdDO0lBRTVELEtBQUssR0FBbUIsS0FBSyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcs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QUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQ2hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQVFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgRmlsZVVwbG9hZE1vZGUsIFNkY0ZpbGVVcGxvYWRFcnJvciwgU2RjRmlsZVVwbG9hZEZpbGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbGV1cGxvYWQudHlwZSc7XG5pbXBvcnQge1xuICBGSUxFVVBMT0FEX0RFRkFVTFRfQUNDRVBULFxuICBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkUsXG4gIEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMsXG4gIEZJTEVVUExPQURfSURfUFJFRklYLFxuICBGSUxFVVBMT0FEX0lNQUdFX1RZUEVTLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9maWxldXBsb2FkLmNvbnN0JztcblxubGV0IF9pZENvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbGVJZCgpOiBzdHJpbmcge1xuICBfaWRDb3VudGVyICs9IDE7XG4gIHJldHVybiBgJHtGSUxFVVBMT0FEX0lEX1BSRUZJWH0tZmlsZS0ke19pZENvdW50ZXJ9YDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWZpbGV1cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0JykgbmF0aXZlSW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBmYWxzZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9IEZJTEVVUExPQURfREVGQVVMVF9BQ0NFUFQ7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplOiBudW1iZXIgPSBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkU7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IGZhbHNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgZmFsc2UgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogRmlsZVVwbG9hZE1vZGUgPSAnZHJvcHpvbmUnO1xuICBASW5wdXQoKSBzaG93UHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd1JlbW92ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93SW1hZ2VNb2RhbCA9IHRydWU7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wbGFjZWhvbGRlcic7XG5cbiAgQElucHV0KCkgc2V0IGZpbGVzKHZhbDogU2RjRmlsZVVwbG9hZEZpbGVbXSkge1xuICAgIHRoaXMuX2ZpbGVzID0gdmFsID8/IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBmaWxlcygpOiBTZGNGaWxlVXBsb2FkRmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gIH1cblxuICBAT3V0cHV0KCkgZmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZURvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIGZpbGVQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U2RjRmlsZVVwbG9hZEVycm9yPigpO1xuXG4gIHJlYWRvbmx5IGNvbXBvbmVudElkID0gbmV4dFNlcXVlbnRpYWxJZChGSUxFVVBMT0FEX0lEX1BSRUZJWCk7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBgJHt0aGlzLmNvbXBvbmVudElkfS1pbnB1dGA7XG4gIHJlYWRvbmx5IGhlbHBlcklkID0gYCR7dGhpcy5jb21wb25lbnRJZH0taGVscGVyYDtcbiAgcmVhZG9ubHkgZXJyb3JJZCA9IGAke3RoaXMuY29tcG9uZW50SWR9LWVycm9yYDtcblxuICBpc0RyYWdPdmVyID0gZmFsc2U7XG4gIHByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgcHJldmlld0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZmlsZXM6IFNkY0ZpbGVVcGxvYWRGaWxlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIG9iamVjdFVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGhhc0ZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBnZXQgaGVscGVyVGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlbHBlclRleHQgPT09ICdzdHJpbmcnID8gdGhpcy5oZWxwZXJUZXh0IDogJyc7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IHRoaXMuZXJyb3JNZXNzYWdlIDogJyc7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQ7XG4gIH1cblxuICBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5oZWxwZXJUZXh0VmFsdWUpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuaGVscGVySWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0ludmFsaWQgJiYgdGhpcy5lcnJvck1lc3NhZ2VWYWx1ZSkge1xuICAgICAgaWRzLnB1c2godGhpcy5lcnJvcklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcy5sZW5ndGggPyBpZHMuam9pbignICcpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBpc0Ryb3B6b25lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZHJvcHpvbmUnO1xuICB9XG5cbiAgZ2V0IGlzQnV0dG9uTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnYnV0dG9uJztcbiAgfVxuXG4gIGdldCBpc0NvbXBhY3RNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjb21wYWN0JztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub2JqZWN0VXJscy5mb3JFYWNoKHVybCA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCkpO1xuICB9XG5cbiAgb3BlbkZpbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5uYXRpdmVJbnB1dD8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgb25OYXRpdmVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0LmZpbGVzPy5sZW5ndGgpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShpbnB1dC5maWxlcykpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkgeyB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlOyB9XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG4gICAgaWYgKGZpbGVzPy5sZW5ndGgpIHsgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpOyB9XG4gIH1cblxuICBvbkRyb3B6b25lS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW5GaWxlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGZpbGUucHJldmlld1VybCAmJiB0aGlzLm9iamVjdFVybHMuaW5jbHVkZXMoZmlsZS5wcmV2aWV3VXJsKSkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChmaWxlLnByZXZpZXdVcmwpO1xuICAgICAgdGhpcy5vYmplY3RVcmxzID0gdGhpcy5vYmplY3RVcmxzLmZpbHRlcih1ID0+IHUgIT09IGZpbGUucHJldmlld1VybCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbGVzID0gdGhpcy5fZmlsZXMuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KFsuLi50aGlzLl9maWxlc10pO1xuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWxlRG93bmxvYWQuZW1pdChmaWxlKTtcbiAgICBpZiAoZmlsZS51cmwgfHwgZmlsZS5wcmV2aWV3VXJsKSB7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZmlsZS51cmwgPz8gZmlsZS5wcmV2aWV3VXJsID8/ICcnO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgIGEuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUHJldmlld01vZGFsKGZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWZpbGUuaXNJbWFnZSB8fCAhdGhpcy5hbGxvd0ltYWdlTW9kYWwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcmV2aWV3RmlsZSA9IGZpbGU7XG4gICAgdGhpcy5wcmV2aWV3TW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3LmVtaXQoZmlsZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZVByZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZpZXdGaWxlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHsgcmV0dXJuIGAke2J5dGVzfSBCYDsgfVxuICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSB7IHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7IH1cbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRmlsZXMocmF3RmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHRvQWRkID0gdGhpcy5tdWx0aXBsZSA/IHJhd0ZpbGVzIDogcmF3RmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgdG9BZGQuZm9yRWFjaCgocmF3KSA9PiB0aGlzLnByb2Nlc3NTaW5nbGVGaWxlKHJhdykpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2luZ2xlRmlsZShyYXc6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlRXJyb3IgPSB0aGlzLnZhbGlkYXRlVHlwZShyYXcpO1xuICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQodHlwZUVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZUVycm9yID0gdGhpcy52YWxpZGF0ZVNpemUocmF3KTtcbiAgICBpZiAoc2l6ZUVycm9yKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KHNpemVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNJbWFnZSA9IEZJTEVVUExPQURfSU1BR0VfVFlQRVMuaW5jbHVkZXMocmF3LnR5cGUpO1xuICAgIGxldCBwcmV2aWV3VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzSW1hZ2UgJiYgdGhpcy5zaG93UHJldmlldykge1xuICAgICAgcHJldmlld1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmF3KTtcbiAgICAgIHRoaXMub2JqZWN0VXJscy5wdXNoKHByZXZpZXdVcmwpO1xuICAgIH1cblxuICAgIGNvbnN0IHNkY0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlID0ge1xuICAgICAgaWQ6IGdlbmVyYXRlRmlsZUlkKCksXG4gICAgICBuYW1lOiByYXcubmFtZSxcbiAgICAgIHNpemU6IHJhdy5zaXplLFxuICAgICAgdHlwZTogcmF3LnR5cGUsXG4gICAgICBmaWxlOiByYXcsXG4gICAgICBwcmV2aWV3VXJsLFxuICAgICAgaXNJbWFnZSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmlsZXMgPSB0aGlzLm11bHRpcGxlID8gWy4uLnRoaXMuX2ZpbGVzLCBzZGNGaWxlXSA6IFtzZGNGaWxlXTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuX2ZpbGVzXSk7XG4gICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChzZGNGaWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeXBlKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuYWNjZXB0IHx8IHRoaXMuYWNjZXB0ID09PSAnKi8qJykgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGFjY2VwdGVkID0gdGhpcy5hY2NlcHQuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRyaW0oKSk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjY2VwdGVkLnNvbWUocGF0dGVybiA9PiB7XG4gICAgICBpZiAocGF0dGVybiA9PT0gJyovKicpIHsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7IHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwYXR0ZXJuLnJlcGxhY2UoJy8qJywgJy8nKSk7IH1cbiAgICAgIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4nKSkgeyByZXR1cm4gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocGF0dGVybi50b0xvd2VyQ2FzZSgpKTsgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gcGF0dGVybjtcbiAgICB9KTtcbiAgICBpZiAobWF0Y2hlcykgeyByZXR1cm4gbnVsbDsgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZmlsZVR5cGUnLFxuICAgICAgbWVzc2FnZTogRklMRVVQTE9BRF9FUlJPUl9NRVNTQUdFUy5maWxlVHlwZSxcbiAgICAgIGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaXplKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUgfHwgZmlsZS5zaXplIDw9IHRoaXMubWF4RmlsZVNpemUpIHsgcmV0dXJuIG51bGw7IH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ZpbGVTaXplJyxcbiAgICAgIG1lc3NhZ2U6IEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMuZmlsZVNpemUsXG4gICAgICBmaWxlLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZFwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZHJvcHpvbmVdPVwiaXNEcm9wem9uZU1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWJ1dHRvbl09XCJpc0J1dHRvbk1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWNvbXBhY3RdPVwiaXNDb21wYWN0TW9kZVwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgW2NsYXNzLnNkYy1maWxldXBsb2FkLS1oYXMtZmlsZXNdPVwiaGFzRmlsZXNcIlxuPlxuICA8IS0tIExhYmVsIHJvdyAtLT5cbiAgQGlmIChsYWJlbCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkXCIgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19yZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBIaWRkZW4gbmF0aXZlIGZpbGUgaW5wdXQgLS0+XG4gIDxpbnB1dFxuICAgICNuYXRpdmVJbnB1dFxuICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX25hdGl2ZS1pbnB1dFwiXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxUZXh0ID8gKGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSkgOiAoJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuc2VsZWN0X2ZpbGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc0ludmFsaWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCJcbiAgLz5cblxuICA8IS0tIERyb3B6b25lIGFyZWEgLS0+XG4gIEBpZiAoaXNEcm9wem9uZU1vZGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2Ryb3B6b25lXCJcbiAgICAgIFtjbGFzcy5zZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtLWRyYWctb3Zlcl09XCJpc0RyYWdPdmVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLmRyb3B6b25lX2xhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbkRyb3B6b25lS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jbG91ZC11cGxvYWQtYWx0IHNkYy1maWxldXBsb2FkX19kcm9wem9uZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtdGV4dFwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtaGludFwiPlxuICAgICAgICB7eyAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5kcm9wem9uZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBCdXR0b24tb25seSBtb2RlIC0tPlxuICBAaWYgKGlzQnV0dG9uTW9kZSB8fCBpc0NvbXBhY3RNb2RlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcigpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1wYXBlcmNsaXAgc2RjLWZpbGV1cGxvYWRfX2J0bi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIH1cblxuICA8IS0tIEZpbGUgbGlzdCAtLT5cbiAgQGlmIChoYXNGaWxlcykge1xuICAgIDx1bFxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1saXN0XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZmlsZV9saXN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1pdGVtXCI+XG5cbiAgICAgICAgICA8IS0tIEltYWdlIHByZXZpZXcgdGh1bWJuYWlsIC0tPlxuICAgICAgICAgIEBpZiAoZmlsZS5pc0ltYWdlICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWItYnRuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUHJldmlld01vZGFsKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWJcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZS5wcmV2aWV3VXJsXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gRmlsZSB0eXBlIGljb24gKG5vbi1pbWFnZSkgLS0+XG4gICAgICAgICAgQGlmICghZmlsZS5pc0ltYWdlIHx8ICFzaG93UHJldmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19maWxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hbHRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEZpbGUgaW5mbyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtaW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1uYW1lXCIgW3RpdGxlXT1cImZpbGUubmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtc2l6ZVwiPnt7IGZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEZpbGUgYWN0aW9ucyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChmaWxlLmlzSW1hZ2UgJiYgYWxsb3dJbWFnZU1vZGFsICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5QcmV2aWV3TW9kYWwoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGFsbG93RG93bmxvYWQgJiYgKGZpbGUudXJsIHx8IGZpbGUucHJldmlld1VybCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2FjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZG93bmxvYWRfZmlsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dSZW1vdmUgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuIHNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuLS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKCdwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLnJlbW92ZV9maWxlJyB8IHRyYW5zbGF0ZSkgKyAnICcgKyBmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cblxuICA8IS0tIEhlbHBlciB0ZXh0IC0tPlxuICBAaWYgKGhlbHBlclRleHQgJiYgIWlzSW52YWxpZCkge1xuICAgIDxzbWFsbCBbaWRdPVwiaGVscGVySWRcIiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19oZWxwZXJcIj5cbiAgICAgIHt7IGhlbHBlclRleHRWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc21hbGw+XG4gIH1cblxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XG4gIEBpZiAoaXNJbnZhbGlkICYmIGVycm9yTWVzc2FnZSkge1xuICAgIDxzbWFsbFxuICAgICAgW2lkXT1cImVycm9ySWRcIlxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZXJyb3JcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgPlxuICAgICAge3sgZXJyb3JNZXNzYWdlVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPCEtLSBJbWFnZSBwcmV2aWV3IG1vZGFsIC0tPlxuQGlmIChwcmV2aWV3RmlsZSkge1xuICA8c2RjLW1vZGFsXG4gICAgW3Zpc2libGVdPVwicHJldmlld01vZGFsVmlzaWJsZVwiXG4gICAgW2hlYWRlcl09XCJwcmV2aWV3RmlsZS5uYW1lXCJcbiAgICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gICAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgICB3aWR0aD1cImF1dG9cIlxuICAgICh2aXNpYmxlQ2hhbmdlKT1cIiEkZXZlbnQgJiYgY2xvc2VQcmV2aWV3TW9kYWwoKVwiXG4gICAgKGhpZGRlbik9XCJjbG9zZVByZXZpZXdNb2RhbCgpXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX3ByZXZpZXctaW1nXCJcbiAgICAgIFtzcmNdPVwicHJldmlld0ZpbGUucHJldmlld1VybFwiXG4gICAgICBbYWx0XT1cInByZXZpZXdGaWxlLm5hbWVcIlxuICAgICAgd2lkdGg9XCI4MDBcIlxuICAgICAgaGVpZ2h0PVwiNjAwXCJcbiAgICAvPlxuICA8L3NkYy1tb2RhbD5cbn1cbiJdfQ==