@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
@@ -21,7 +21,13 @@ export class RowCardComponent {
21
21
  isExpanded = false;
22
22
  detailTemplate;
23
23
  infoTooltip = null;
24
+ infoTooltipAllowHtml = false;
24
25
  statusTooltip = null;
26
+ statusTooltipAllowHtml = false;
27
+ buttonLoading = false;
28
+ get isButtonLoading() {
29
+ return this.buttonLoading || !!this.data?.loading;
30
+ }
25
31
  cardClick = new EventEmitter();
26
32
  cardButtonClick = new EventEmitter();
27
33
  contentWrapper;
@@ -29,6 +35,9 @@ export class RowCardComponent {
29
35
  get expanded() {
30
36
  return !!this.options?.expandable && !!this.isExpanded;
31
37
  }
38
+ get titleEllipsis() {
39
+ return this.options?.titleEllipsis ?? true;
40
+ }
32
41
  get leftTitleText() {
33
42
  return this.translateLabel(this.data?.left_title);
34
43
  }
@@ -83,7 +92,7 @@ export class RowCardComponent {
83
92
  }
84
93
  onCardButtonClick(event) {
85
94
  event?.stopPropagation?.();
86
- if (this.data?.disabled) {
95
+ if (this.data?.disabled || this.isButtonLoading) {
87
96
  return;
88
97
  }
89
98
  this.cardButtonClick.emit(this.data);
@@ -134,7 +143,7 @@ export class RowCardComponent {
134
143
  return resolveTranslatableText(this.translate, value);
135
144
  }
136
145
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowCardComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowCardComponent, isStandalone: true, selector: "sdc-row-card", inputs: { data: "data", options: "options", isExpanded: "isExpanded", detailTemplate: "detailTemplate", infoTooltip: "infoTooltip", statusTooltip: "statusTooltip" }, outputs: { cardClick: "cardClick", cardButtonClick: "cardButtonClick" }, viewQueries: [{ propertyName: "contentWrapper", first: true, predicate: ["contentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n (click)=\"options?.expandable ? onExpandCardClick($event) : onCardClick()\"\n (keydown)=\"onKeyboardActivate($event)\"\n [class.border-left]=\"data.hasBorder\"\n class=\"row-card transition-all cursor-pointer w-full\"\n [attr.tabindex]=\"0\"\n [attr.aria-label]=\"getCardAriaLabel()\"\n [attr.aria-expanded]=\"options?.expandable ? expanded : null\"\n>\n <div class=\"row-card-content\">\n <div class=\"row-card-icon\">\n @if (options?.expandable) {\n <i [class.fa-minus]=\"expanded\" [class.fa-plus]=\"!expanded\" class=\"fas\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-rocket p-2 ml-2 text-xl\" aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"row-card-main\">\n <div class=\"sdc-title-row font-semibold\" [ngClass]=\"options?.leftTitleColor\">\n @if (infoTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"infoTooltip\"\n tooltipPosition=\"right\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span\n class=\"sdc-row-card-title text-overflow-ellipsis white-space-nowrap overflow-hidden\"\n >{{ leftTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span\n class=\"sdc-row-card-title text-overflow-ellipsis white-space-nowrap overflow-hidden\"\n >{{ leftTitleText }}</span>\n }\n </div>\n\n @if (leftSubtitleText) {\n <div class=\"row-card-subtitle text-sm\" [ngClass]=\"options?.leftSubtitleColor\">\n {{ leftSubtitleText }}\n </div>\n }\n\n @if (tagText) {\n <div class=\"row-card-tag-wrap\">\n <span class=\"sdc-tag\">{{ tagText }}</span>\n </div>\n }\n </div>\n\n @if (hasStatusColumn) {\n <div class=\"row-card-status\">\n @if (statusTitleText) {\n @if (statusTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"statusTooltip\"\n tooltipPosition=\"right\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n }\n }\n\n @if (data.badge) {\n <div class=\"row-card-status-badge\">\n <sdc-badge [text]=\"data.badge.label\" [color]=\"badgeColor\"></sdc-badge>\n </div>\n }\n </div>\n }\n\n <div class=\"row-card-actions\">\n @if (rightSubtitleText) {\n <span class=\"row-card-right-subtitle\" [ngClass]=\"options?.rightSubtitleColor\">\n {{ rightSubtitleText }}\n </span>\n }\n <div class=\"row-card-button-wrap\">\n <sdc-button\n (click)=\"onCardButtonClick($event)\"\n (keydown)=\"$event.stopPropagation()\"\n [priority]=\"options?.buttonPriority!\"\n [disabled]=\"data.disabled!\"\n [icon]=\"options?.buttonIcon\"\n [label]=\"isMobile ? '' : buttonLabelText\"\n [attr.aria-label]=\"getButtonAriaLabel()\"\n ></sdc-button>\n </div>\n </div>\n </div>\n\n @if (options?.expandable) {\n <div\n #contentWrapper\n class=\"collapse-wrapper\"\n [class.show]=\"expanded\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <div class=\"collapse-inner\">\n @if (detailTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"detailTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data, data: data }\"\n ></ng-template>\n } @else {\n <div class=\"text-sm text-700\">{{ wrapperDetailText }}</div>\n }\n </div>\n </div>\n }\n</div>\n", styles: [":host{--sdc-row-card-padding: .5rem}.row-card{display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;border-radius:var(--sdc-row-card-radius, 10px);border:1px solid var(--sdc-row-card-border-color, var(--p-content-border-color, var(--surface-border, #e5e7eb)));background:var(--sdc-row-card-bg, var(--p-surface-0, #ffffff));transition:var(--sdc-row-card-transition, background-color .15s ease, border-color .15s ease);padding:var(--sdc-row-card-padding)!important;min-height:var(--sdc-row-card-height, 6.5rem)}.row-card:hover{background:var(--sdc-row-card-hover-bg, var(--p-surface-hover, var(--surface-hover, rgba(0, 0, 0, .03))))}.row-card.border-left{border-left-width:4px;border-left-style:solid;border-left-color:var(--sdc-row-card-border-accent, var(--p-primary-color, var(--primary-color, #3b82f6)))}.row-card.border-left:hover{border-left-color:var(--sdc-row-card-border-accent-hover, var(--p-primary-400, var(--p-primary-color, var(--primary-color, #3b82f6))))}.row-card-content{display:grid;grid-template-columns:auto clamp(15rem,24vw,17.5rem) clamp(8rem,10vw,9.5rem) minmax(0,1fr) auto;align-items:start;column-gap:1rem;width:100%}.row-card-main{grid-column:2;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;gap:.3rem}.row-card-icon{grid-column:1;display:flex;align-items:center;justify-content:center;align-self:center;color:var(--sdc-row-card-icon-color, var(--text-color, #1f2937))}.row-card-status{grid-column:3;position:relative;display:flex;flex-direction:column;justify-content:flex-start;gap:.25rem;min-width:9.5rem;padding:.1rem 1.25rem 0;align-self:start}.row-card-status:before,.row-card-status:after{content:\"\";position:absolute;top:50%;width:1px;height:var(--sdc-row-card-status-divider-height, 2.2rem);background:var(--sdc-row-card-status-divider, #d9e2ef);transform:translateY(-50%)}.row-card-status:before{left:0}.row-card-status:after{right:0}.row-card-status-title{font-size:var(--sdc-row-card-status-title-size, .76rem);font-weight:600;line-height:1.2;white-space:nowrap}.row-card-status-tooltip-wrap{justify-content:flex-start}.row-card-status-subtitle{font-size:var(--sdc-row-card-status-subtitle-size, .76rem);line-height:1.2;white-space:nowrap}.row-card-actions{grid-column:5;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;align-self:center;gap:.25rem;padding-right:var(--sdc-row-card-padding, .5rem)}.row-card-right-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2;white-space:nowrap;text-align:right}.row-card-button-wrap{display:flex;justify-content:flex-end}.sdc-tag{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--sdc-row-card-tag-radius, 4px);padding:var(--sdc-row-card-tag-padding, .1rem .45rem);border:1px solid var(--sdc-row-card-tag-border, #78b8e7);background:var(--sdc-row-card-tag-bg, #eef8ff);color:var(--sdc-row-card-tag-color, #21506b);font-size:var(--sdc-row-card-tag-font-size, .78rem);font-weight:500;line-height:1.1rem;max-width:100%}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.collapse-wrapper{border-radius:var(--sdc-row-card-collapse-radius, 0 0 10px 10px);height:0;overflow:hidden;transition:var(--sdc-row-card-collapse-transition, height .35s ease)}.collapse-inner{padding:var(--sdc-row-card-detail-padding, 2rem 1rem 1rem);opacity:0;transform:translateY(-.5rem);transition:var(--sdc-row-card-detail-transition, opacity .3s ease, transform .3s ease)}.collapse-wrapper.show .collapse-inner{opacity:1;transform:translateY(0)}.sdc-title-row{min-width:0;overflow:visible;font-size:var(--sdc-row-card-title-size, .76rem);line-height:1.2}.row-card-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2}.row-card-tag-wrap{display:flex;align-items:center;min-width:0}.row-card-info-sign{--sdc-info-sign-icon-size: .65rem;--sdc-info-sign-icon-color: inherit;--sdc-info-sign-icon-cursor: default;--sdc-info-sign-button-height: auto;--sdc-info-sign-button-width: auto}.sdc-title-row .row-card-info-sign{--sdc-info-sign-icon-size: .72rem}.sdc-row-card-title{font-size:inherit;min-width:0;padding:0;margin:0}@media (max-width: 767px){.row-card-content{grid-template-columns:auto minmax(0,1fr);row-gap:.75rem}.row-card-icon{grid-column:1}.row-card-main,.row-card-status{grid-column:2}.row-card-status{min-width:0;padding:0}.row-card-status:before,.row-card-status:after{display:none}.row-card-actions{grid-column:1/-1;justify-content:stretch}.row-card-button-wrap{justify-content:flex-end}}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "sdc-badge", inputs: ["type", "color", "title", "titleParams", "text", "textParams", "selectable", "disabled", "iconClass", "iconPosition", "infoSign", "ariaLabel", "ariaLabelParams", "infoAriaLabel"], outputs: ["selected"] }, { 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"] }, { kind: "component", type: InfoSignComponent, selector: "sdc-info-sign", inputs: ["label", "labelParams", "tooltip", "tooltipParams", "iconClass", "iconAriaLabel", "tooltipPosition", "tooltipEvent", "inline"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowCardComponent, isStandalone: true, selector: "sdc-row-card", inputs: { data: "data", options: "options", isExpanded: "isExpanded", detailTemplate: "detailTemplate", infoTooltip: "infoTooltip", infoTooltipAllowHtml: "infoTooltipAllowHtml", statusTooltip: "statusTooltip", statusTooltipAllowHtml: "statusTooltipAllowHtml", buttonLoading: "buttonLoading" }, outputs: { cardClick: "cardClick", cardButtonClick: "cardButtonClick" }, viewQueries: [{ propertyName: "contentWrapper", first: true, predicate: ["contentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n (click)=\"options?.expandable ? onExpandCardClick($event) : onCardClick()\"\n (keydown)=\"onKeyboardActivate($event)\"\n [class.border-left]=\"data.hasBorder\"\n class=\"row-card transition-all cursor-pointer w-full\"\n [attr.tabindex]=\"0\"\n [attr.aria-label]=\"getCardAriaLabel()\"\n [attr.aria-expanded]=\"options?.expandable ? expanded : null\"\n>\n <div class=\"row-card-content\">\n <div class=\"row-card-icon\">\n @if (options?.expandable) {\n <i [class.fa-minus]=\"expanded\" [class.fa-plus]=\"!expanded\" class=\"fas\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-rocket p-2 ml-2 text-xl\" aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"row-card-main\">\n <div class=\"sdc-title-row font-semibold\" [ngClass]=\"options?.leftTitleColor\">\n @if (infoTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"infoTooltip\"\n [allowHtml]=\"infoTooltipAllowHtml\"\n tooltipPosition=\"bottom\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span\n class=\"sdc-row-card-title\"\n [class.sdc-row-card-title--ellipsis]=\"titleEllipsis\"\n >{{ leftTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span\n class=\"sdc-row-card-title\"\n [class.sdc-row-card-title--ellipsis]=\"titleEllipsis\"\n >{{ leftTitleText }}</span>\n }\n </div>\n\n @if (leftSubtitleText) {\n <div class=\"row-card-subtitle text-sm\" [ngClass]=\"options?.leftSubtitleColor\">\n {{ leftSubtitleText }}\n </div>\n }\n\n @if (tagText) {\n <div class=\"row-card-tag-wrap\">\n <span class=\"sdc-tag\">{{ tagText }}</span>\n </div>\n }\n </div>\n\n @if (hasStatusColumn) {\n <div class=\"row-card-status\">\n @if (statusTitleText) {\n @if (statusTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"statusTooltip\"\n [allowHtml]=\"statusTooltipAllowHtml\"\n tooltipPosition=\"bottom\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n }\n }\n\n @if (data.badge) {\n <div class=\"row-card-status-badge\">\n <sdc-badge [text]=\"data.badge.label\" [color]=\"badgeColor\"></sdc-badge>\n </div>\n }\n </div>\n }\n\n <div class=\"row-card-actions\">\n @if (rightSubtitleText) {\n <span class=\"row-card-right-subtitle\" [ngClass]=\"options?.rightSubtitleColor\">\n {{ rightSubtitleText }}\n </span>\n }\n <div class=\"row-card-button-wrap\">\n <sdc-button\n (click)=\"onCardButtonClick($event)\"\n (keydown)=\"$event.stopPropagation()\"\n [priority]=\"options?.buttonPriority!\"\n [disabled]=\"data.disabled!\"\n [loading]=\"isButtonLoading\"\n [icon]=\"options?.buttonIcon\"\n [label]=\"isMobile ? '' : buttonLabelText\"\n [attr.aria-label]=\"getButtonAriaLabel()\"\n ></sdc-button>\n </div>\n </div>\n </div>\n\n @if (options?.expandable) {\n <div\n #contentWrapper\n class=\"collapse-wrapper\"\n [class.show]=\"expanded\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <div class=\"collapse-inner\">\n @if (detailTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"detailTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data, data: data }\"\n ></ng-template>\n } @else {\n <div class=\"text-sm text-700\">{{ wrapperDetailText }}</div>\n }\n </div>\n </div>\n }\n</div>\n", styles: [":host{--sdc-row-card-padding: .5rem}.row-card{position:relative;z-index:0;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;border-radius:var(--sdc-row-card-radius, 10px);border:1px solid var(--sdc-row-card-border-color, var(--p-content-border-color, var(--surface-border, #e5e7eb)));background:var(--sdc-row-card-bg, var(--p-surface-0, #ffffff));transition:var(--sdc-row-card-transition, background-color .15s ease, border-color .15s ease);padding:var(--sdc-row-card-padding)!important;min-height:var(--sdc-row-card-height, 6.5rem)}.row-card:hover,.row-card:focus-within{z-index:2}.row-card:hover{background:var(--sdc-row-card-hover-bg, var(--p-surface-hover, var(--surface-hover, rgba(0, 0, 0, .03))))}.row-card.border-left{border-left-width:4px;border-left-style:solid;border-left-color:var(--sdc-row-card-border-accent, var(--p-primary-color, var(--primary-color, #3b82f6)))}.row-card.border-left:hover{border-left-color:var(--sdc-row-card-border-accent-hover, var(--p-primary-400, var(--p-primary-color, var(--primary-color, #3b82f6))))}.row-card-content{display:grid;grid-template-columns:auto clamp(15rem,24vw,17.5rem) clamp(8rem,10vw,9.5rem) minmax(0,1fr) auto;align-items:start;column-gap:1rem;width:100%}.row-card-main{grid-column:2;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;gap:.3rem}.row-card-icon{grid-column:1;display:flex;align-items:center;justify-content:center;align-self:center;color:var(--sdc-row-card-icon-color, var(--text-color, #1f2937))}.row-card-status{grid-column:3;position:relative;z-index:1;display:flex;flex-direction:column;justify-content:flex-start;gap:.25rem;min-width:9.5rem;padding:.1rem 1.25rem 0;align-self:start}.row-card-status:before,.row-card-status:after{content:\"\";position:absolute;top:50%;width:1px;height:var(--sdc-row-card-status-divider-height, 2.2rem);background:var(--sdc-row-card-status-divider, #d9e2ef);transform:translateY(-50%)}.row-card-status:before{left:0}.row-card-status:after{right:0}.row-card-status-title{font-size:var(--sdc-row-card-status-title-size, .76rem);font-weight:600;line-height:1.2;white-space:nowrap}.row-card-status-tooltip-wrap{justify-content:flex-start}.row-card-status-subtitle{font-size:var(--sdc-row-card-status-subtitle-size, .76rem);line-height:1.2;white-space:nowrap}.row-card-actions{grid-column:5;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;align-self:center;gap:.25rem;padding-right:var(--sdc-row-card-padding, .5rem)}.row-card-right-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2;white-space:nowrap;text-align:right}.row-card-button-wrap{display:flex;justify-content:flex-end}.sdc-tag{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--sdc-row-card-tag-radius, 4px);padding:var(--sdc-row-card-tag-padding, .1rem .45rem);border:1px solid var(--sdc-row-card-tag-border, #78b8e7);background:var(--sdc-row-card-tag-bg, #eef8ff);color:var(--sdc-row-card-tag-color, #21506b);font-size:var(--sdc-row-card-tag-font-size, .78rem);font-weight:500;line-height:1.1rem;max-width:100%}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.collapse-wrapper{border-radius:var(--sdc-row-card-collapse-radius, 0 0 10px 10px);height:0;overflow:hidden;transition:var(--sdc-row-card-collapse-transition, height .35s ease)}.collapse-inner{padding:var(--sdc-row-card-detail-padding, 2rem 1rem 1rem);opacity:0;transform:translateY(-.5rem);transition:var(--sdc-row-card-detail-transition, opacity .3s ease, transform .3s ease)}.collapse-wrapper.show .collapse-inner{opacity:1;transform:translateY(0)}.sdc-title-row{display:flex;align-items:center;min-width:0;font-size:var(--sdc-row-card-title-size, .76rem);line-height:1.2}.row-card-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2}.row-card-tag-wrap{display:flex;align-items:center;min-width:0}.row-card-info-sign{--sdc-info-sign-icon-size: .65rem;--sdc-info-sign-icon-color: inherit;--sdc-info-sign-icon-cursor: default;--sdc-info-sign-button-height: auto;--sdc-info-sign-button-width: auto}.sdc-title-row .row-card-info-sign{--sdc-info-sign-icon-size: .72rem;display:flex;min-width:0;flex:1 1 auto}.sdc-row-card-title{display:block;flex:1 1 0%;font-size:inherit;min-width:0;max-width:100%;padding:0;margin:0}.sdc-row-card-title--ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 767px){.row-card-content{grid-template-columns:auto minmax(0,1fr);row-gap:.75rem}.row-card-icon{grid-column:1}.row-card-main,.row-card-status{grid-column:2}.row-card-status{min-width:0;padding:0}.row-card-status:before,.row-card-status:after{display:none}.row-card-actions{grid-column:1/-1;justify-content:stretch}.row-card-button-wrap{justify-content:flex-end}}\n"], dependencies: [{ kind: "component", type: BadgeComponent, selector: "sdc-badge", inputs: ["type", "color", "title", "titleParams", "text", "textParams", "selectable", "disabled", "iconClass", "iconPosition", "infoSign", "ariaLabel", "ariaLabelParams", "infoAriaLabel"], outputs: ["selected"] }, { 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"] }, { kind: "component", type: InfoSignComponent, selector: "sdc-info-sign", inputs: ["label", "labelParams", "tooltip", "tooltipParams", "iconClass", "iconAriaLabel", "tooltipPosition", "tooltipEvent", "allowHtml", "inline"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
138
147
  }
139
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowCardComponent, decorators: [{
140
149
  type: Component,
@@ -144,7 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
144
153
  InfoSignComponent,
145
154
  NgClass,
146
155
  NgTemplateOutlet
147
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n (click)=\"options?.expandable ? onExpandCardClick($event) : onCardClick()\"\n (keydown)=\"onKeyboardActivate($event)\"\n [class.border-left]=\"data.hasBorder\"\n class=\"row-card transition-all cursor-pointer w-full\"\n [attr.tabindex]=\"0\"\n [attr.aria-label]=\"getCardAriaLabel()\"\n [attr.aria-expanded]=\"options?.expandable ? expanded : null\"\n>\n <div class=\"row-card-content\">\n <div class=\"row-card-icon\">\n @if (options?.expandable) {\n <i [class.fa-minus]=\"expanded\" [class.fa-plus]=\"!expanded\" class=\"fas\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-rocket p-2 ml-2 text-xl\" aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"row-card-main\">\n <div class=\"sdc-title-row font-semibold\" [ngClass]=\"options?.leftTitleColor\">\n @if (infoTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"infoTooltip\"\n tooltipPosition=\"right\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span\n class=\"sdc-row-card-title text-overflow-ellipsis white-space-nowrap overflow-hidden\"\n >{{ leftTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span\n class=\"sdc-row-card-title text-overflow-ellipsis white-space-nowrap overflow-hidden\"\n >{{ leftTitleText }}</span>\n }\n </div>\n\n @if (leftSubtitleText) {\n <div class=\"row-card-subtitle text-sm\" [ngClass]=\"options?.leftSubtitleColor\">\n {{ leftSubtitleText }}\n </div>\n }\n\n @if (tagText) {\n <div class=\"row-card-tag-wrap\">\n <span class=\"sdc-tag\">{{ tagText }}</span>\n </div>\n }\n </div>\n\n @if (hasStatusColumn) {\n <div class=\"row-card-status\">\n @if (statusTitleText) {\n @if (statusTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"statusTooltip\"\n tooltipPosition=\"right\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n }\n }\n\n @if (data.badge) {\n <div class=\"row-card-status-badge\">\n <sdc-badge [text]=\"data.badge.label\" [color]=\"badgeColor\"></sdc-badge>\n </div>\n }\n </div>\n }\n\n <div class=\"row-card-actions\">\n @if (rightSubtitleText) {\n <span class=\"row-card-right-subtitle\" [ngClass]=\"options?.rightSubtitleColor\">\n {{ rightSubtitleText }}\n </span>\n }\n <div class=\"row-card-button-wrap\">\n <sdc-button\n (click)=\"onCardButtonClick($event)\"\n (keydown)=\"$event.stopPropagation()\"\n [priority]=\"options?.buttonPriority!\"\n [disabled]=\"data.disabled!\"\n [icon]=\"options?.buttonIcon\"\n [label]=\"isMobile ? '' : buttonLabelText\"\n [attr.aria-label]=\"getButtonAriaLabel()\"\n ></sdc-button>\n </div>\n </div>\n </div>\n\n @if (options?.expandable) {\n <div\n #contentWrapper\n class=\"collapse-wrapper\"\n [class.show]=\"expanded\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <div class=\"collapse-inner\">\n @if (detailTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"detailTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data, data: data }\"\n ></ng-template>\n } @else {\n <div class=\"text-sm text-700\">{{ wrapperDetailText }}</div>\n }\n </div>\n </div>\n }\n</div>\n", styles: [":host{--sdc-row-card-padding: .5rem}.row-card{display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;border-radius:var(--sdc-row-card-radius, 10px);border:1px solid var(--sdc-row-card-border-color, var(--p-content-border-color, var(--surface-border, #e5e7eb)));background:var(--sdc-row-card-bg, var(--p-surface-0, #ffffff));transition:var(--sdc-row-card-transition, background-color .15s ease, border-color .15s ease);padding:var(--sdc-row-card-padding)!important;min-height:var(--sdc-row-card-height, 6.5rem)}.row-card:hover{background:var(--sdc-row-card-hover-bg, var(--p-surface-hover, var(--surface-hover, rgba(0, 0, 0, .03))))}.row-card.border-left{border-left-width:4px;border-left-style:solid;border-left-color:var(--sdc-row-card-border-accent, var(--p-primary-color, var(--primary-color, #3b82f6)))}.row-card.border-left:hover{border-left-color:var(--sdc-row-card-border-accent-hover, var(--p-primary-400, var(--p-primary-color, var(--primary-color, #3b82f6))))}.row-card-content{display:grid;grid-template-columns:auto clamp(15rem,24vw,17.5rem) clamp(8rem,10vw,9.5rem) minmax(0,1fr) auto;align-items:start;column-gap:1rem;width:100%}.row-card-main{grid-column:2;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;gap:.3rem}.row-card-icon{grid-column:1;display:flex;align-items:center;justify-content:center;align-self:center;color:var(--sdc-row-card-icon-color, var(--text-color, #1f2937))}.row-card-status{grid-column:3;position:relative;display:flex;flex-direction:column;justify-content:flex-start;gap:.25rem;min-width:9.5rem;padding:.1rem 1.25rem 0;align-self:start}.row-card-status:before,.row-card-status:after{content:\"\";position:absolute;top:50%;width:1px;height:var(--sdc-row-card-status-divider-height, 2.2rem);background:var(--sdc-row-card-status-divider, #d9e2ef);transform:translateY(-50%)}.row-card-status:before{left:0}.row-card-status:after{right:0}.row-card-status-title{font-size:var(--sdc-row-card-status-title-size, .76rem);font-weight:600;line-height:1.2;white-space:nowrap}.row-card-status-tooltip-wrap{justify-content:flex-start}.row-card-status-subtitle{font-size:var(--sdc-row-card-status-subtitle-size, .76rem);line-height:1.2;white-space:nowrap}.row-card-actions{grid-column:5;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;align-self:center;gap:.25rem;padding-right:var(--sdc-row-card-padding, .5rem)}.row-card-right-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2;white-space:nowrap;text-align:right}.row-card-button-wrap{display:flex;justify-content:flex-end}.sdc-tag{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--sdc-row-card-tag-radius, 4px);padding:var(--sdc-row-card-tag-padding, .1rem .45rem);border:1px solid var(--sdc-row-card-tag-border, #78b8e7);background:var(--sdc-row-card-tag-bg, #eef8ff);color:var(--sdc-row-card-tag-color, #21506b);font-size:var(--sdc-row-card-tag-font-size, .78rem);font-weight:500;line-height:1.1rem;max-width:100%}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.collapse-wrapper{border-radius:var(--sdc-row-card-collapse-radius, 0 0 10px 10px);height:0;overflow:hidden;transition:var(--sdc-row-card-collapse-transition, height .35s ease)}.collapse-inner{padding:var(--sdc-row-card-detail-padding, 2rem 1rem 1rem);opacity:0;transform:translateY(-.5rem);transition:var(--sdc-row-card-detail-transition, opacity .3s ease, transform .3s ease)}.collapse-wrapper.show .collapse-inner{opacity:1;transform:translateY(0)}.sdc-title-row{min-width:0;overflow:visible;font-size:var(--sdc-row-card-title-size, .76rem);line-height:1.2}.row-card-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2}.row-card-tag-wrap{display:flex;align-items:center;min-width:0}.row-card-info-sign{--sdc-info-sign-icon-size: .65rem;--sdc-info-sign-icon-color: inherit;--sdc-info-sign-icon-cursor: default;--sdc-info-sign-button-height: auto;--sdc-info-sign-button-width: auto}.sdc-title-row .row-card-info-sign{--sdc-info-sign-icon-size: .72rem}.sdc-row-card-title{font-size:inherit;min-width:0;padding:0;margin:0}@media (max-width: 767px){.row-card-content{grid-template-columns:auto minmax(0,1fr);row-gap:.75rem}.row-card-icon{grid-column:1}.row-card-main,.row-card-status{grid-column:2}.row-card-status{min-width:0;padding:0}.row-card-status:before,.row-card-status:after{display:none}.row-card-actions{grid-column:1/-1;justify-content:stretch}.row-card-button-wrap{justify-content:flex-end}}\n"] }]
156
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n (click)=\"options?.expandable ? onExpandCardClick($event) : onCardClick()\"\n (keydown)=\"onKeyboardActivate($event)\"\n [class.border-left]=\"data.hasBorder\"\n class=\"row-card transition-all cursor-pointer w-full\"\n [attr.tabindex]=\"0\"\n [attr.aria-label]=\"getCardAriaLabel()\"\n [attr.aria-expanded]=\"options?.expandable ? expanded : null\"\n>\n <div class=\"row-card-content\">\n <div class=\"row-card-icon\">\n @if (options?.expandable) {\n <i [class.fa-minus]=\"expanded\" [class.fa-plus]=\"!expanded\" class=\"fas\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-rocket p-2 ml-2 text-xl\" aria-hidden=\"true\"></i>\n }\n </div>\n\n <div class=\"row-card-main\">\n <div class=\"sdc-title-row font-semibold\" [ngClass]=\"options?.leftTitleColor\">\n @if (infoTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"infoTooltip\"\n [allowHtml]=\"infoTooltipAllowHtml\"\n tooltipPosition=\"bottom\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span\n class=\"sdc-row-card-title\"\n [class.sdc-row-card-title--ellipsis]=\"titleEllipsis\"\n >{{ leftTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span\n class=\"sdc-row-card-title\"\n [class.sdc-row-card-title--ellipsis]=\"titleEllipsis\"\n >{{ leftTitleText }}</span>\n }\n </div>\n\n @if (leftSubtitleText) {\n <div class=\"row-card-subtitle text-sm\" [ngClass]=\"options?.leftSubtitleColor\">\n {{ leftSubtitleText }}\n </div>\n }\n\n @if (tagText) {\n <div class=\"row-card-tag-wrap\">\n <span class=\"sdc-tag\">{{ tagText }}</span>\n </div>\n }\n </div>\n\n @if (hasStatusColumn) {\n <div class=\"row-card-status\">\n @if (statusTitleText) {\n @if (statusTooltip) {\n <sdc-info-sign\n class=\"row-card-info-sign\"\n [tooltip]=\"statusTooltip\"\n [allowHtml]=\"statusTooltipAllowHtml\"\n tooltipPosition=\"bottom\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n </sdc-info-sign>\n } @else {\n <span class=\"row-card-status-title\" [ngClass]=\"options?.rightTitleColor\">{{ statusTitleText }}</span>\n }\n }\n\n @if (data.badge) {\n <div class=\"row-card-status-badge\">\n <sdc-badge [text]=\"data.badge.label\" [color]=\"badgeColor\"></sdc-badge>\n </div>\n }\n </div>\n }\n\n <div class=\"row-card-actions\">\n @if (rightSubtitleText) {\n <span class=\"row-card-right-subtitle\" [ngClass]=\"options?.rightSubtitleColor\">\n {{ rightSubtitleText }}\n </span>\n }\n <div class=\"row-card-button-wrap\">\n <sdc-button\n (click)=\"onCardButtonClick($event)\"\n (keydown)=\"$event.stopPropagation()\"\n [priority]=\"options?.buttonPriority!\"\n [disabled]=\"data.disabled!\"\n [loading]=\"isButtonLoading\"\n [icon]=\"options?.buttonIcon\"\n [label]=\"isMobile ? '' : buttonLabelText\"\n [attr.aria-label]=\"getButtonAriaLabel()\"\n ></sdc-button>\n </div>\n </div>\n </div>\n\n @if (options?.expandable) {\n <div\n #contentWrapper\n class=\"collapse-wrapper\"\n [class.show]=\"expanded\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n >\n <div class=\"collapse-inner\">\n @if (detailTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"detailTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data, data: data }\"\n ></ng-template>\n } @else {\n <div class=\"text-sm text-700\">{{ wrapperDetailText }}</div>\n }\n </div>\n </div>\n }\n</div>\n", styles: [":host{--sdc-row-card-padding: .5rem}.row-card{position:relative;z-index:0;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box;border-radius:var(--sdc-row-card-radius, 10px);border:1px solid var(--sdc-row-card-border-color, var(--p-content-border-color, var(--surface-border, #e5e7eb)));background:var(--sdc-row-card-bg, var(--p-surface-0, #ffffff));transition:var(--sdc-row-card-transition, background-color .15s ease, border-color .15s ease);padding:var(--sdc-row-card-padding)!important;min-height:var(--sdc-row-card-height, 6.5rem)}.row-card:hover,.row-card:focus-within{z-index:2}.row-card:hover{background:var(--sdc-row-card-hover-bg, var(--p-surface-hover, var(--surface-hover, rgba(0, 0, 0, .03))))}.row-card.border-left{border-left-width:4px;border-left-style:solid;border-left-color:var(--sdc-row-card-border-accent, var(--p-primary-color, var(--primary-color, #3b82f6)))}.row-card.border-left:hover{border-left-color:var(--sdc-row-card-border-accent-hover, var(--p-primary-400, var(--p-primary-color, var(--primary-color, #3b82f6))))}.row-card-content{display:grid;grid-template-columns:auto clamp(15rem,24vw,17.5rem) clamp(8rem,10vw,9.5rem) minmax(0,1fr) auto;align-items:start;column-gap:1rem;width:100%}.row-card-main{grid-column:2;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;gap:.3rem}.row-card-icon{grid-column:1;display:flex;align-items:center;justify-content:center;align-self:center;color:var(--sdc-row-card-icon-color, var(--text-color, #1f2937))}.row-card-status{grid-column:3;position:relative;z-index:1;display:flex;flex-direction:column;justify-content:flex-start;gap:.25rem;min-width:9.5rem;padding:.1rem 1.25rem 0;align-self:start}.row-card-status:before,.row-card-status:after{content:\"\";position:absolute;top:50%;width:1px;height:var(--sdc-row-card-status-divider-height, 2.2rem);background:var(--sdc-row-card-status-divider, #d9e2ef);transform:translateY(-50%)}.row-card-status:before{left:0}.row-card-status:after{right:0}.row-card-status-title{font-size:var(--sdc-row-card-status-title-size, .76rem);font-weight:600;line-height:1.2;white-space:nowrap}.row-card-status-tooltip-wrap{justify-content:flex-start}.row-card-status-subtitle{font-size:var(--sdc-row-card-status-subtitle-size, .76rem);line-height:1.2;white-space:nowrap}.row-card-actions{grid-column:5;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;align-self:center;gap:.25rem;padding-right:var(--sdc-row-card-padding, .5rem)}.row-card-right-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2;white-space:nowrap;text-align:right}.row-card-button-wrap{display:flex;justify-content:flex-end}.sdc-tag{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--sdc-row-card-tag-radius, 4px);padding:var(--sdc-row-card-tag-padding, .1rem .45rem);border:1px solid var(--sdc-row-card-tag-border, #78b8e7);background:var(--sdc-row-card-tag-bg, #eef8ff);color:var(--sdc-row-card-tag-color, #21506b);font-size:var(--sdc-row-card-tag-font-size, .78rem);font-weight:500;line-height:1.1rem;max-width:100%}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.collapse-wrapper{border-radius:var(--sdc-row-card-collapse-radius, 0 0 10px 10px);height:0;overflow:hidden;transition:var(--sdc-row-card-collapse-transition, height .35s ease)}.collapse-inner{padding:var(--sdc-row-card-detail-padding, 2rem 1rem 1rem);opacity:0;transform:translateY(-.5rem);transition:var(--sdc-row-card-detail-transition, opacity .3s ease, transform .3s ease)}.collapse-wrapper.show .collapse-inner{opacity:1;transform:translateY(0)}.sdc-title-row{display:flex;align-items:center;min-width:0;font-size:var(--sdc-row-card-title-size, .76rem);line-height:1.2}.row-card-subtitle{font-size:var(--sdc-row-card-subtitle-size, .8rem);line-height:1.2}.row-card-tag-wrap{display:flex;align-items:center;min-width:0}.row-card-info-sign{--sdc-info-sign-icon-size: .65rem;--sdc-info-sign-icon-color: inherit;--sdc-info-sign-icon-cursor: default;--sdc-info-sign-button-height: auto;--sdc-info-sign-button-width: auto}.sdc-title-row .row-card-info-sign{--sdc-info-sign-icon-size: .72rem;display:flex;min-width:0;flex:1 1 auto}.sdc-row-card-title{display:block;flex:1 1 0%;font-size:inherit;min-width:0;max-width:100%;padding:0;margin:0}.sdc-row-card-title--ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 767px){.row-card-content{grid-template-columns:auto minmax(0,1fr);row-gap:.75rem}.row-card-icon{grid-column:1}.row-card-main,.row-card-status{grid-column:2}.row-card-status{min-width:0;padding:0}.row-card-status:before,.row-card-status:after{display:none}.row-card-actions{grid-column:1/-1;justify-content:stretch}.row-card-button-wrap{justify-content:flex-end}}\n"] }]
148
157
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslateService }], propDecorators: { data: [{
149
158
  type: Input
150
159
  }], options: [{
@@ -155,8 +164,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
155
164
  type: Input
156
165
  }], infoTooltip: [{
157
166
  type: Input
167
+ }], infoTooltipAllowHtml: [{
168
+ type: Input
158
169
  }], statusTooltip: [{
159
170
  type: Input
171
+ }], statusTooltipAllowHtml: [{
172
+ type: Input
173
+ }], buttonLoading: [{
174
+ type: Input
160
175
  }], cardClick: [{
161
176
  type: Output
162
177
  }], cardButtonClick: [{
@@ -165,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
165
180
  type: ViewChild,
166
181
  args: ['contentWrapper']
167
182
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9yb3ctY2FyZC1saXN0L3Jvdy1jYXJkL3Jvdy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvcm93LWNhcmQtbGlzdC9yb3ctY2FyZC9yb3ctY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUtoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBaUJ4RSxNQUFNLE9BQU8sZ0JBQWdCO0lBRVI7SUFDQTtJQUZuQixZQUNtQixHQUFzQixFQUN0QixTQUEyQjtRQUQzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUU1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJ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RUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQXFCO1FBQzFDLE9BQU8sdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO3dHQWhLVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw4YkN6QzdCLDQySEF1SEEsNitJRHpGSSxjQUFjLDBRQUNkLGVBQWUsOFNBQ2YsaUJBQWlCLG1NQUNqQixPQUFPLG9GQUNQLGdCQUFnQjs7NEZBT1AsZ0JBQWdCO2tCQWY1QixTQUFTO2lDQUNJLElBQUksWUFDTixjQUFjLFdBQ2Y7d0JBQ1AsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsT0FBTzt3QkFDUCxnQkFBZ0I7cUJBQ2pCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxRQUFRO3FIQVVoQyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBCYWRnZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy9iYWRnZS50eXBlJztcbmltcG9ydCB0eXBlIHsgT3B0aW9uc1Jvd0NhcmQsIFJvd0NhcmQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzL3Jvdy1jYXJkLnR5cGUnO1xuaW1wb3J0IHsgcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2kxOG4udXRpbCc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5mb1NpZ25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pbmZvLXNpZ24vaW5mby1zaWduLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3NkYy1yb3ctY2FyZCcsXG4gIGltcG9ydHM6IFtcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgSW5mb1NpZ25Db21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3ctY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yb3ctY2FyZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZFxufSlcbmV4cG9ydCBjbGFzcyBSb3dDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgQElucHV0KCkgZGF0YSE6IFJvd0NhcmQ7XG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBPcHRpb25zUm93Q2FyZDtcbiAgQElucHV0KCkgaXNFeHBhbmRlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkZXRhaWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHN0YXR1c1Rvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBPdXRwdXQoKSBjYXJkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NhcmQ+KCk7XG4gIEBPdXRwdXQoKSBjYXJkQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd0NhcmQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFdyYXBwZXInKSBjb250ZW50V3JhcHBlcj86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSA9IGlzTW9iaWxlKCk7XG5cbiAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMub3B0aW9ucz8uZXhwYW5kYWJsZSAmJiAhIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGdldCBsZWZ0VGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhPy5sZWZ0X3RpdGxlKTtcbiAgfVxuXG4gIGdldCBsZWZ0U3VidGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhPy5sZWZ0X3N1YnRpdGxlKTtcbiAgfVxuXG4gIGdldCByaWdodFRpdGxlVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YT8ucmlnaHRfdGl0bGUpO1xuICB9XG5cbiAgZ2V0IHRhZ1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGE/LnRhZyk7XG4gIH1cblxuICBnZXQgcmlnaHRTdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGE/LnJpZ2h0X3N1YnRpdGxlKTtcbiAgfVxuXG4gIGdldCBzdGF0dXNUaXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yaWdodFRpdGxlVGV4dCB8fCB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMub3B0aW9ucz8uYmFkZ2VUaXRsZSk7XG4gIH1cblxuICBnZXQgaGFzU3RhdHVzQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLnN0YXR1c1RpdGxlVGV4dCB8fCB0aGlzLmRhdGE/LmJhZGdlKTtcbiAgfVxuXG4gIGdldCB3cmFwcGVyRGV0YWlsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YT8ud3JhcHBlckRldGFpbCk7XG4gIH1cblxuICBnZXQgYnV0dG9uTGFiZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhPy5idXR0b25MYWJlbCA/PyB0aGlzLm9wdGlvbnM/LmJ1dHRvbkxhYmVsKTtcbiAgfVxuXG4gIGdldCBiYWRnZUNvbG9yKCk6IEJhZGdlQ29sb3Ige1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmJhZGdlPy5jb2xvciA/PyAnYmx1ZSc7XG4gIH1cblxuICBnZXQgaW5mb1Rvb2x0aXBUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5pbmZvVG9vbHRpcCkgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdGF0dXNUb29sdGlwVGV4dCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMuc3RhdHVzVG9vbHRpcCkgfHwgbnVsbDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaXNFeHBhbmRlZCddIHx8IGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy51cGRhdGVDb2xsYXBzZUhlaWdodCgpKTtcbiAgICB9XG4gIH1cblxuICBvbkNhcmRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRDbGljay5lbWl0KHRoaXMuZGF0YSk7XG4gIH1cblxuICBvbkV4cGFuZENhcmRDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG5cbiAgICBpZiAodGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGFyZ2V0LmNsb3Nlc3QoJ3NkYy1idXR0b24nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNhcmRDbGljay5lbWl0KHRoaXMuZGF0YSk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBvbkNhcmRCdXR0b25DbGljayhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbj8uKCk7XG4gICAgaWYgKHRoaXMuZGF0YT8uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jYXJkQnV0dG9uQ2xpY2suZW1pdCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb2xsYXBzZUhlaWdodCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuY29udGVudFdyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9ucz8uZXhwYW5kYWJsZSkge1xuICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsLnN0eWxlLmhlaWdodCA9IHRoaXMuZXhwYW5kZWQgPyBgJHtlbC5zY3JvbGxIZWlnaHR9cHhgIDogJzBweCc7XG4gIH1cblxuICBnZXRDYXJkQXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBbXG4gICAgICB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YS5sZWZ0X3RpdGxlKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhLmxlZnRfc3VidGl0bGUpLFxuICAgICAgdGhpcy5zdGF0dXNUaXRsZVRleHQsXG4gICAgICB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YS5iYWRnZT8ubGFiZWwpLFxuICAgICAgdGhpcy5yaWdodFN1YnRpdGxlVGV4dFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uZXhwYW5kYWJsZSkge1xuICAgICAgcGFydHMucHVzaChcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkXG4gICAgICAgICAgICA/ICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnJvd19jYXJkX2V4cGFuZGVkJ1xuICAgICAgICAgICAgOiAncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5yb3dfY2FyZF9jb2xsYXBzZWQnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJywgJyk7XG4gIH1cblxuICBnZXRCdXR0b25BcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dChcbiAgICAgIHRoaXMudHJhbnNsYXRlLFxuICAgICAgdGhpcy5kYXRhPy5idXR0b25MYWJlbCA/PyB0aGlzLm9wdGlvbnM/LmJ1dHRvbkxhYmVsLFxuICAgICAgJ3BsYXRmb3JtLmRhdGFjb3JlLmxpc3QuZGVmYXVsdF9hY3Rpb25fbGFiZWwnXG4gICAgKTtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMubGVmdFRpdGxlVGV4dDtcblxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnJvd19jYXJkX2J1dHRvbl9hY3Rpb24nLCB7IGFjdGlvbiwgdGl0bGUgfSk7XG4gIH1cblxuICBvbktleWJvYXJkQWN0aXZhdGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMub3B0aW9ucz8uZXhwYW5kYWJsZSkge1xuICAgICAgICB0aGlzLm9uRXhwYW5kQ2FyZENsaWNrKGV2ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub25DYXJkQ2xpY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZUxhYmVsKHZhbHVlPzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKGNsaWNrKT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgPyBvbkV4cGFuZENhcmRDbGljaygkZXZlbnQpIDogb25DYXJkQ2xpY2soKVwiXG4gIChrZXlkb3duKT1cIm9uS2V5Ym9hcmRBY3RpdmF0ZSgkZXZlbnQpXCJcbiAgW2NsYXNzLmJvcmRlci1sZWZ0XT1cImRhdGEuaGFzQm9yZGVyXCJcbiAgY2xhc3M9XCJyb3ctY2FyZCB0cmFuc2l0aW9uLWFsbCBjdXJzb3ItcG9pbnRlciB3LWZ1bGxcIlxuICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRDYXJkQXJpYUxhYmVsKClcIlxuICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgPyBleHBhbmRlZCA6IG51bGxcIlxuPlxuICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3ctY2FyZC1pY29uXCI+XG4gICAgICBAaWYgKG9wdGlvbnM/LmV4cGFuZGFibGUpIHtcbiAgICAgIDxpIFtjbGFzcy5mYS1taW51c109XCJleHBhbmRlZFwiIFtjbGFzcy5mYS1wbHVzXT1cIiFleHBhbmRlZFwiIGNsYXNzPVwiZmFzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1yb2NrZXQgcC0yIG1sLTIgdGV4dC14bFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb3ctY2FyZC1tYWluXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2RjLXRpdGxlLXJvdyBmb250LXNlbWlib2xkXCIgW25nQ2xhc3NdPVwib3B0aW9ucz8ubGVmdFRpdGxlQ29sb3JcIj5cbiAgICAgICAgQGlmIChpbmZvVG9vbHRpcCkge1xuICAgICAgICA8c2RjLWluZm8tc2lnblxuICAgICAgICAgIGNsYXNzPVwicm93LWNhcmQtaW5mby1zaWduXCJcbiAgICAgICAgICBbdG9vbHRpcF09XCJpbmZvVG9vbHRpcFwiXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtcm93LWNhcmQtdGl0bGUgdGV4dC1vdmVyZmxvdy1lbGxpcHNpcyB3aGl0ZS1zcGFjZS1ub3dyYXAgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgICA+e3sgbGVmdFRpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zZGMtaW5mby1zaWduPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInNkYy1yb3ctY2FyZC10aXRsZSB0ZXh0LW92ZXJmbG93LWVsbGlwc2lzIHdoaXRlLXNwYWNlLW5vd3JhcCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICA+e3sgbGVmdFRpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAobGVmdFN1YnRpdGxlVGV4dCkge1xuICAgICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLXN1YnRpdGxlIHRleHQtc21cIiBbbmdDbGFzc109XCJvcHRpb25zPy5sZWZ0U3VidGl0bGVDb2xvclwiPlxuICAgICAgICB7eyBsZWZ0U3VidGl0bGVUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmICh0YWdUZXh0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtdGFnLXdyYXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFnXCI+e3sgdGFnVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChoYXNTdGF0dXNDb2x1bW4pIHtcbiAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtc3RhdHVzXCI+XG4gICAgICBAaWYgKHN0YXR1c1RpdGxlVGV4dCkge1xuICAgICAgICBAaWYgKHN0YXR1c1Rvb2x0aXApIHtcbiAgICAgICAgPHNkYy1pbmZvLXNpZ25cbiAgICAgICAgICBjbGFzcz1cInJvdy1jYXJkLWluZm8tc2lnblwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwic3RhdHVzVG9vbHRpcFwiXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1jYXJkLXN0YXR1cy10aXRsZVwiIFtuZ0NsYXNzXT1cIm9wdGlvbnM/LnJpZ2h0VGl0bGVDb2xvclwiPnt7IHN0YXR1c1RpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zZGMtaW5mby1zaWduPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctY2FyZC1zdGF0dXMtdGl0bGVcIiBbbmdDbGFzc109XCJvcHRpb25zPy5yaWdodFRpdGxlQ29sb3JcIj57eyBzdGF0dXNUaXRsZVRleHQgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChkYXRhLmJhZGdlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtc3RhdHVzLWJhZGdlXCI+XG4gICAgICAgIDxzZGMtYmFkZ2UgW3RleHRdPVwiZGF0YS5iYWRnZS5sYWJlbFwiIFtjb2xvcl09XCJiYWRnZUNvbG9yXCI+PC9zZGMtYmFkZ2U+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtYWN0aW9uc1wiPlxuICAgICAgQGlmIChyaWdodFN1YnRpdGxlVGV4dCkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctY2FyZC1yaWdodC1zdWJ0aXRsZVwiIFtuZ0NsYXNzXT1cIm9wdGlvbnM/LnJpZ2h0U3VidGl0bGVDb2xvclwiPlxuICAgICAgICB7eyByaWdodFN1YnRpdGxlVGV4dCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLWJ1dHRvbi13cmFwXCI+XG4gICAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2FyZEJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgW3ByaW9yaXR5XT1cIm9wdGlvbnM/LmJ1dHRvblByaW9yaXR5IVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEuZGlzYWJsZWQhXCJcbiAgICAgICAgICBbaWNvbl09XCJvcHRpb25zPy5idXR0b25JY29uXCJcbiAgICAgICAgICBbbGFiZWxdPVwiaXNNb2JpbGUgPyAnJyA6IGJ1dHRvbkxhYmVsVGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRCdXR0b25BcmlhTGFiZWwoKVwiXG4gICAgICAgID48L3NkYy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgQGlmIChvcHRpb25zPy5leHBhbmRhYmxlKSB7XG4gIDxkaXZcbiAgICAjY29udGVudFdyYXBwZXJcbiAgICBjbGFzcz1cImNvbGxhcHNlLXdyYXBwZXJcIlxuICAgIFtjbGFzcy5zaG93XT1cImV4cGFuZGVkXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImNvbGxhcHNlLWlubmVyXCI+XG4gICAgICBAaWYgKGRldGFpbFRlbXBsYXRlKSB7XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGV0YWlsVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGRhdGEsIGRhdGE6IGRhdGEgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gdGV4dC03MDBcIj57eyB3cmFwcGVyRGV0YWlsVGV4dCB9fTwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9yb3ctY2FyZC1saXN0L3Jvdy1jYXJkL3Jvdy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvcm93LWNhcmQtbGlzdC9yb3ctY2FyZC9yb3ctY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBR1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUtoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7O0FBaUJ4RSxNQUFNLE9BQU8sZ0JBQWdCO0lBRVI7SUFDQTtJQUZuQixZQUNtQixHQUFzQixFQUN0QixTQUEyQjtRQUQzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUU1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJ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YztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQU1JLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFFc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQmFkZ2VDb2xvciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdHlwZXMvYmFkZ2UudHlwZSc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnNSb3dDYXJkLCBSb3dDYXJkIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcy9yb3ctY2FyZC50eXBlJztcbmltcG9ydCB7IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91dGlscy9pMThuLnV0aWwnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3V0aWxzL2xheW91dC51dGlsJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEluZm9TaWduQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW5mby1zaWduL2luZm8tc2lnbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdzZGMtcm93LWNhcmQnLFxuICBpbXBvcnRzOiBbXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEluZm9TaWduQ29tcG9uZW50LFxuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcm93LWNhcmQuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgUm93Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2UucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRhdGEhOiBSb3dDYXJkO1xuICBASW5wdXQoKSBvcHRpb25zPzogT3B0aW9uc1Jvd0NhcmQ7XG4gIEBJbnB1dCgpIGlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGV0YWlsVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcEFsbG93SHRtbCA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGF0dXNUb29sdGlwOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgc3RhdHVzVG9vbHRpcEFsbG93SHRtbCA9IGZhbHNlO1xuICBASW5wdXQoKSBidXR0b25Mb2FkaW5nID0gZmFsc2U7XG5cbiAgZ2V0IGlzQnV0dG9uTG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5idXR0b25Mb2FkaW5nIHx8ICEhdGhpcy5kYXRhPy5sb2FkaW5nO1xuICB9XG5cbiAgQE91dHB1dCgpIGNhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcbiAgQE91dHB1dCgpIGNhcmRCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcblxuICBAVmlld0NoaWxkKCdjb250ZW50V3JhcHBlcicpIGNvbnRlbnRXcmFwcGVyPzogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlID0gaXNNb2JpbGUoKTtcblxuICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vcHRpb25zPy5leHBhbmRhYmxlICYmICEhdGhpcy5pc0V4cGFuZGVkO1xuICB9XG5cbiAgZ2V0IHRpdGxlRWxsaXBzaXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucz8udGl0bGVFbGxpcHNpcyA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IGxlZnRUaXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGE/LmxlZnRfdGl0bGUpO1xuICB9XG5cbiAgZ2V0IGxlZnRTdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGE/LmxlZnRfc3VidGl0bGUpO1xuICB9XG5cbiAgZ2V0IHJpZ2h0VGl0bGVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhPy5yaWdodF90aXRsZSk7XG4gIH1cblxuICBnZXQgdGFnVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YT8udGFnKTtcbiAgfVxuXG4gIGdldCByaWdodFN1YnRpdGxlVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZUxhYmVsKHRoaXMuZGF0YT8ucmlnaHRfc3VidGl0bGUpO1xuICB9XG5cbiAgZ2V0IHN0YXR1c1RpdGxlVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJpZ2h0VGl0bGVUZXh0IHx8IHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5vcHRpb25zPy5iYWRnZVRpdGxlKTtcbiAgfVxuXG4gIGdldCBoYXNTdGF0dXNDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuc3RhdHVzVGl0bGVUZXh0IHx8IHRoaXMuZGF0YT8uYmFkZ2UpO1xuICB9XG5cbiAgZ2V0IHdyYXBwZXJEZXRhaWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhPy53cmFwcGVyRGV0YWlsKTtcbiAgfVxuXG4gIGdldCBidXR0b25MYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGE/LmJ1dHRvbkxhYmVsID8/IHRoaXMub3B0aW9ucz8uYnV0dG9uTGFiZWwpO1xuICB9XG5cbiAgZ2V0IGJhZGdlQ29sb3IoKTogQmFkZ2VDb2xvciB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uYmFkZ2U/LmNvbG9yID8/ICdibHVlJztcbiAgfVxuXG4gIGdldCBpbmZvVG9vbHRpcFRleHQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLmluZm9Ub29sdGlwKSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN0YXR1c1Rvb2x0aXBUZXh0KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiByZXNvbHZlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5zdGF0dXNUb29sdGlwKSB8fCBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydpc0V4cGFuZGVkJ10gfHwgY2hhbmdlc1snb3B0aW9ucyddKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLnVwZGF0ZUNvbGxhcHNlSGVpZ2h0KCkpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FyZENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENsaWNrLmVtaXQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIG9uRXhwYW5kQ2FyZENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcblxuICAgIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiB0YXJnZXQuY2xvc2VzdCgnc2RjLWJ1dHRvbicpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2FyZENsaWNrLmVtaXQodGhpcy5kYXRhKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uQ2FyZEJ1dHRvbkNsaWNrKGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uPy4oKTtcbiAgICBpZiAodGhpcy5kYXRhPy5kaXNhYmxlZCB8fCB0aGlzLmlzQnV0dG9uTG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNhcmRCdXR0b25DbGljay5lbWl0KHRoaXMuZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbGxhcHNlSGVpZ2h0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5jb250ZW50V3JhcHBlcj8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25zPy5leHBhbmRhYmxlKSB7XG4gICAgICBlbC5zdHlsZS5oZWlnaHQgPSAnMHB4JztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5leHBhbmRlZCA/IGAke2VsLnNjcm9sbEhlaWdodH1weGAgOiAnMHB4JztcbiAgfVxuXG4gIGdldENhcmRBcmlhTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhLmxlZnRfdGl0bGUpLFxuICAgICAgdGhpcy50cmFuc2xhdGVMYWJlbCh0aGlzLmRhdGEubGVmdF9zdWJ0aXRsZSksXG4gICAgICB0aGlzLnN0YXR1c1RpdGxlVGV4dCxcbiAgICAgIHRoaXMudHJhbnNsYXRlTGFiZWwodGhpcy5kYXRhLmJhZGdlPy5sYWJlbCksXG4gICAgICB0aGlzLnJpZ2h0U3VidGl0bGVUZXh0XG4gICAgXS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zPy5leHBhbmRhYmxlKSB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRcbiAgICAgICAgICAgID8gJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucm93X2NhcmRfZXhwYW5kZWQnXG4gICAgICAgICAgICA6ICdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnJvd19jYXJkX2NvbGxhcHNlZCdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignLCAnKTtcbiAgfVxuXG4gIGdldEJ1dHRvbkFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFjdGlvbiA9IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KFxuICAgICAgdGhpcy50cmFuc2xhdGUsXG4gICAgICB0aGlzLmRhdGE/LmJ1dHRvbkxhYmVsID8/IHRoaXMub3B0aW9ucz8uYnV0dG9uTGFiZWwsXG4gICAgICAncGxhdGZvcm0uZGF0YWNvcmUubGlzdC5kZWZhdWx0X2FjdGlvbl9sYWJlbCdcbiAgICApO1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5sZWZ0VGl0bGVUZXh0O1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucm93X2NhcmRfYnV0dG9uX2FjdGlvbicsIHsgYWN0aW9uLCB0aXRsZSB9KTtcbiAgfVxuXG4gIG9uS2V5Ym9hcmRBY3RpdmF0ZShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zPy5leHBhbmRhYmxlKSB7XG4gICAgICAgIHRoaXMub25FeHBhbmRDYXJkQ2xpY2soZXZlbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vbkNhcmRDbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlTGFiZWwodmFsdWU/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdlxuICAoY2xpY2spPVwib3B0aW9ucz8uZXhwYW5kYWJsZSA/IG9uRXhwYW5kQ2FyZENsaWNrKCRldmVudCkgOiBvbkNhcmRDbGljaygpXCJcbiAgKGtleWRvd24pPVwib25LZXlib2FyZEFjdGl2YXRlKCRldmVudClcIlxuICBbY2xhc3MuYm9yZGVyLWxlZnRdPVwiZGF0YS5oYXNCb3JkZXJcIlxuICBjbGFzcz1cInJvdy1jYXJkIHRyYW5zaXRpb24tYWxsIGN1cnNvci1wb2ludGVyIHctZnVsbFwiXG4gIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldENhcmRBcmlhTGFiZWwoKVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSA/IGV4cGFuZGVkIDogbnVsbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJyb3ctY2FyZC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLWljb25cIj5cbiAgICAgIEBpZiAob3B0aW9ucz8uZXhwYW5kYWJsZSkge1xuICAgICAgPGkgW2NsYXNzLmZhLW1pbnVzXT1cImV4cGFuZGVkXCIgW2NsYXNzLmZhLXBsdXNdPVwiIWV4cGFuZGVkXCIgY2xhc3M9XCJmYXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXJvY2tldCBwLTIgbWwtMiB0ZXh0LXhsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLW1haW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtdGl0bGUtcm93IGZvbnQtc2VtaWJvbGRcIiBbbmdDbGFzc109XCJvcHRpb25zPy5sZWZ0VGl0bGVDb2xvclwiPlxuICAgICAgICBAaWYgKGluZm9Ub29sdGlwKSB7XG4gICAgICAgIDxzZGMtaW5mby1zaWduXG4gICAgICAgICAgY2xhc3M9XCJyb3ctY2FyZC1pbmZvLXNpZ25cIlxuICAgICAgICAgIFt0b29sdGlwXT1cImluZm9Ub29sdGlwXCJcbiAgICAgICAgICBbYWxsb3dIdG1sXT1cImluZm9Ub29sdGlwQWxsb3dIdG1sXCJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtcm93LWNhcmQtdGl0bGVcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1yb3ctY2FyZC10aXRsZS0tZWxsaXBzaXNdPVwidGl0bGVFbGxpcHNpc1wiXG4gICAgICAgICAgPnt7IGxlZnRUaXRsZVRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvc2RjLWluZm8tc2lnbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzZGMtcm93LWNhcmQtdGl0bGVcIlxuICAgICAgICAgIFtjbGFzcy5zZGMtcm93LWNhcmQtdGl0bGUtLWVsbGlwc2lzXT1cInRpdGxlRWxsaXBzaXNcIlxuICAgICAgICA+e3sgbGVmdFRpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAobGVmdFN1YnRpdGxlVGV4dCkge1xuICAgICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLXN1YnRpdGxlIHRleHQtc21cIiBbbmdDbGFzc109XCJvcHRpb25zPy5sZWZ0U3VidGl0bGVDb2xvclwiPlxuICAgICAgICB7eyBsZWZ0U3VidGl0bGVUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmICh0YWdUZXh0KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtdGFnLXdyYXBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtdGFnXCI+e3sgdGFnVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChoYXNTdGF0dXNDb2x1bW4pIHtcbiAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtc3RhdHVzXCI+XG4gICAgICBAaWYgKHN0YXR1c1RpdGxlVGV4dCkge1xuICAgICAgICBAaWYgKHN0YXR1c1Rvb2x0aXApIHtcbiAgICAgICAgPHNkYy1pbmZvLXNpZ25cbiAgICAgICAgICBjbGFzcz1cInJvdy1jYXJkLWluZm8tc2lnblwiXG4gICAgICAgICAgW3Rvb2x0aXBdPVwic3RhdHVzVG9vbHRpcFwiXG4gICAgICAgICAgW2FsbG93SHRtbF09XCJzdGF0dXNUb29sdGlwQWxsb3dIdG1sXCJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJvdy1jYXJkLXN0YXR1cy10aXRsZVwiIFtuZ0NsYXNzXT1cIm9wdGlvbnM/LnJpZ2h0VGl0bGVDb2xvclwiPnt7IHN0YXR1c1RpdGxlVGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zZGMtaW5mby1zaWduPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctY2FyZC1zdGF0dXMtdGl0bGVcIiBbbmdDbGFzc109XCJvcHRpb25zPy5yaWdodFRpdGxlQ29sb3JcIj57eyBzdGF0dXNUaXRsZVRleHQgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChkYXRhLmJhZGdlKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtc3RhdHVzLWJhZGdlXCI+XG4gICAgICAgIDxzZGMtYmFkZ2UgW3RleHRdPVwiZGF0YS5iYWRnZS5sYWJlbFwiIFtjb2xvcl09XCJiYWRnZUNvbG9yXCI+PC9zZGMtYmFkZ2U+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93LWNhcmQtYWN0aW9uc1wiPlxuICAgICAgQGlmIChyaWdodFN1YnRpdGxlVGV4dCkge1xuICAgICAgPHNwYW4gY2xhc3M9XCJyb3ctY2FyZC1yaWdodC1zdWJ0aXRsZVwiIFtuZ0NsYXNzXT1cIm9wdGlvbnM/LnJpZ2h0U3VidGl0bGVDb2xvclwiPlxuICAgICAgICB7eyByaWdodFN1YnRpdGxlVGV4dCB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cInJvdy1jYXJkLWJ1dHRvbi13cmFwXCI+XG4gICAgICAgIDxzZGMtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2FyZEJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgW3ByaW9yaXR5XT1cIm9wdGlvbnM/LmJ1dHRvblByaW9yaXR5IVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEuZGlzYWJsZWQhXCJcbiAgICAgICAgICBbbG9hZGluZ109XCJpc0J1dHRvbkxvYWRpbmdcIlxuICAgICAgICAgIFtpY29uXT1cIm9wdGlvbnM/LmJ1dHRvbkljb25cIlxuICAgICAgICAgIFtsYWJlbF09XCJpc01vYmlsZSA/ICcnIDogYnV0dG9uTGFiZWxUZXh0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldEJ1dHRvbkFyaWFMYWJlbCgpXCJcbiAgICAgICAgPjwvc2RjLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKG9wdGlvbnM/LmV4cGFuZGFibGUpIHtcbiAgPGRpdlxuICAgICNjb250ZW50V3JhcHBlclxuICAgIGNsYXNzPVwiY29sbGFwc2Utd3JhcHBlclwiXG4gICAgW2NsYXNzLnNob3ddPVwiZXhwYW5kZWRcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UtaW5uZXJcIj5cbiAgICAgIEBpZiAoZGV0YWlsVGVtcGxhdGUpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXRhaWxUZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZGF0YSwgZGF0YTogZGF0YSB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSB0ZXh0LTcwMFwiPnt7IHdyYXBwZXJEZXRhaWxUZXh0IH19PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -17,12 +17,16 @@ export class RowCardListComponent {
17
17
  this.loadingState.set(!!value);
18
18
  }
19
19
  config = DEFAULT_ROW_CARD_LIST_OPTIONS;
20
+ set loadingCardId(value) {
21
+ this.loadingCardIdState.set(value ?? null);
22
+ }
20
23
  cardButtonClick = new EventEmitter();
21
24
  cardClick = new EventEmitter();
22
25
  detailTemplate;
23
26
  isMobile = isMobile();
24
27
  isTablet = isTablet();
25
28
  loadingState = signal(false);
29
+ loadingCardIdState = signal(null);
26
30
  options = signal(DEFAULT_ROW_CARD_LIST_OPTIONS);
27
31
  emptyTitle = computed(() => this.options().empty?.title ?? '');
28
32
  emptyText = computed(() => this.options().empty?.message ?? '');
@@ -87,6 +91,9 @@ export class RowCardListComponent {
87
91
  isLoading() {
88
92
  return this.loadingState();
89
93
  }
94
+ isCardButtonLoading(card) {
95
+ return !!card?.loading || card?.id === this.loadingCardIdState();
96
+ }
90
97
  onChangePaginator(event) {
91
98
  this.page.set({
92
99
  first: event.first ?? ROW_CARD_LIST_FIRST_PAGE,
@@ -135,7 +142,7 @@ export class RowCardListComponent {
135
142
  this.options.set(cfg);
136
143
  }
137
144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowCardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
138
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowCardListComponent, isStandalone: true, selector: "sdc-row-card-list", inputs: { data: "data", loading: "loading", config: "config" }, outputs: { cardButtonClick: "cardButtonClick", cardClick: "cardClick" }, queries: [{ propertyName: "detailTemplate", first: true, predicate: ["rowCardDetail"], descendants: true, read: TemplateRef }], usesOnChanges: true, ngImport: i0, template: "<section\n class=\"sdc-row-card-list\"\n [class.align-content-center]=\"isLoading()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.row_card_list' | translate\"\n [attr.aria-busy]=\"isLoading()\"\n>\n <sdc-loading-state\n [loading]=\"isLoading()\"\n [blockWindow]=\"false\"\n [indicator]=\"'dots'\"\n class=\"sdc-cardlist-loading-state\"\n [blockDelayMs]=\"0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n >\n @if (showSkeleton()) {\n <ul class=\"sdc-row-card-items\">\n @for (i of skeletonRows(); track i) {\n <li class=\"sdc-row-card-item sdc-row-card-item--skeleton\">\n <article class=\"sdc-row-card-skeleton\" aria-hidden=\"true\"></article>\n </li>\n }\n </ul>\n } @else if (pagedData().length) {\n <ul class=\"sdc-row-card-items\">\n @for (card of pagedData(); track card.id) {\n <li class=\"sdc-row-card-item\">\n <sdc-row-card\n (cardButtonClick)=\"onCardButtonClick(card)\"\n (cardClick)=\"onButtonExpand(card)\"\n [options]=\"options().customCard\"\n [data]=\"card\"\n [isExpanded]=\"expandedCardId() === card.id\"\n [detailTemplate]=\"detailTemplate\"\n [infoTooltip]=\"options().customCard?.infoTooltip!\"\n [statusTooltip]=\"options().customCard?.statusTooltip!\"\n >\n </sdc-row-card>\n </li>\n }\n </ul>\n } @else if (!isLoading()) {\n <sdc-empty-state\n id=\"cardlist-empty\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-cardlist-empty-state\"\n >\n </sdc-empty-state>\n }\n\n @if (options().enablePagination) {\n <nav\n class=\"sdc-paginator-wrap flex justify-content-start\"\n [class.justify-content-center]=\"isMobile || isTablet\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n >\n <sdc-paginator\n class=\"w-full\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onChangePaginator($event)\"\n [first]=\"page().first\"\n [rows]=\"page().rows\"\n [rowsPerPageOptions]=\"options().rowsPerPageOptions ?? []\"\n [totalRecords]=\"filtered().length\"\n [isMobile]=\"isMobile\"\n >\n </sdc-paginator>\n </nav>\n }\n </sdc-loading-state>\n</section>\n", styles: [":host{display:block;--sdc-row-card-padding: .5rem;--sdc-row-card-height: 5rem}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.sdc-cardlist-loading-state{display:block;width:100%}.sdc-row-card-list{min-height:30rem;min-width:17rem}.sdc-row-card-list .sdc-row-card-items{list-style:none;margin:0;padding:0}.sdc-row-card-list ::ng-deep .sdc-row-card-item sdc-row-card .row-card{border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;box-sizing:border-box}.sdc-row-card-list ::ng-deep .sdc-row-card-item:not(:last-child) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:first-child sdc-row-card .row-card{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:only-child sdc-row-card .row-card{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:nth-last-child(1 of.sdc-row-card-item) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton .sdc-row-card-skeleton{width:100%;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;background:var(--p-surface-0, #fff);border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;box-sizing:border-box;display:flex;align-items:center}.sdc-row-card-list .sdc-row-card-item--skeleton:first-child .sdc-row-card-skeleton{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:not(:last-child) .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list .sdc-row-card-item--skeleton:last-child .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:only-child .sdc-row-card-skeleton{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-paginator-wrap{min-height:auto}.sdc-cardlist-empty-state{width:100%;min-height:var(--sdc-row-card-list-empty-min-height, 12rem);border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius);display:flex;align-items:center;justify-content:center;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: RowCardComponent, selector: "sdc-row-card", inputs: ["data", "options", "isExpanded", "detailTemplate", "infoTooltip", "statusTooltip"], outputs: ["cardClick", "cardButtonClick"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: EmptyStateComponent, selector: "sdc-empty-state", inputs: ["id", "title", "variant", "titleParams", "iconClass", "description", "descriptionParams", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "primaryActionLabelParams", "secondaryActionLabel", "secondaryActionLabelParams", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }] });
145
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RowCardListComponent, isStandalone: true, selector: "sdc-row-card-list", inputs: { data: "data", loading: "loading", config: "config", loadingCardId: "loadingCardId" }, outputs: { cardButtonClick: "cardButtonClick", cardClick: "cardClick" }, queries: [{ propertyName: "detailTemplate", first: true, predicate: ["rowCardDetail"], descendants: true, read: TemplateRef }], usesOnChanges: true, ngImport: i0, template: "<section\n class=\"sdc-row-card-list\"\n [class.align-content-center]=\"isLoading() && pagedData().length === 0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.row_card_list' | translate\"\n [attr.aria-busy]=\"isLoading()\"\n>\n <sdc-loading-state\n [loading]=\"isLoading()\"\n [blockWindow]=\"false\"\n [indicator]=\"'dots'\"\n class=\"sdc-cardlist-loading-state\"\n [blockDelayMs]=\"0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n >\n @if (showSkeleton()) {\n <ul class=\"sdc-row-card-items\">\n @for (i of skeletonRows(); track i) {\n <li class=\"sdc-row-card-item sdc-row-card-item--skeleton\">\n <article class=\"sdc-row-card-skeleton\" aria-hidden=\"true\"></article>\n </li>\n }\n </ul>\n } @else if (pagedData().length) {\n <ul class=\"sdc-row-card-items\">\n @for (card of pagedData(); track card.id) {\n <li class=\"sdc-row-card-item\">\n <sdc-row-card\n (cardButtonClick)=\"onCardButtonClick(card)\"\n (cardClick)=\"onButtonExpand(card)\"\n [options]=\"options().customCard\"\n [data]=\"card\"\n [buttonLoading]=\"isCardButtonLoading(card)\"\n [isExpanded]=\"expandedCardId() === card.id\"\n [detailTemplate]=\"detailTemplate\"\n [infoTooltip]=\"options().customCard?.infoTooltip!\"\n [infoTooltipAllowHtml]=\"options().customCard?.infoTooltipAllowHtml ?? false\"\n [statusTooltip]=\"options().customCard?.statusTooltip!\"\n [statusTooltipAllowHtml]=\"options().customCard?.statusTooltipAllowHtml ?? false\"\n >\n </sdc-row-card>\n </li>\n }\n </ul>\n } @else if (!isLoading()) {\n <sdc-empty-state\n id=\"cardlist-empty\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-cardlist-empty-state\"\n >\n </sdc-empty-state>\n }\n\n @if (options().enablePagination) {\n <nav\n class=\"sdc-paginator-wrap flex justify-content-start\"\n [class.justify-content-center]=\"isMobile || isTablet\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n >\n <sdc-paginator\n class=\"w-full\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onChangePaginator($event)\"\n [first]=\"page().first\"\n [rows]=\"page().rows\"\n [rowsPerPageOptions]=\"options().rowsPerPageOptions ?? []\"\n [totalRecords]=\"filtered().length\"\n [isMobile]=\"isMobile\"\n >\n </sdc-paginator>\n </nav>\n }\n </sdc-loading-state>\n</section>\n", styles: [":host{display:block;--sdc-row-card-padding: .5rem;--sdc-row-card-height: 5rem}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.sdc-cardlist-loading-state{display:block;width:100%}.sdc-row-card-list{min-height:30rem;min-width:17rem}.sdc-row-card-list .sdc-row-card-items{list-style:none;margin:0;padding:0}.sdc-row-card-list ::ng-deep .sdc-row-card-item sdc-row-card .row-card{border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;box-sizing:border-box}.sdc-row-card-list ::ng-deep .sdc-row-card-item:not(:last-child) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:first-child sdc-row-card .row-card{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:only-child sdc-row-card .row-card{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:nth-last-child(1 of.sdc-row-card-item) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton .sdc-row-card-skeleton{width:100%;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;background:var(--p-surface-0, #fff);border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;box-sizing:border-box;display:flex;align-items:center}.sdc-row-card-list .sdc-row-card-item--skeleton:first-child .sdc-row-card-skeleton{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:not(:last-child) .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list .sdc-row-card-item--skeleton:last-child .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:only-child .sdc-row-card-skeleton{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-paginator-wrap{min-height:auto}.sdc-cardlist-empty-state{width:100%;min-height:var(--sdc-row-card-list-empty-min-height, 12rem);border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius);display:flex;align-items:center;justify-content:center;padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: RowCardComponent, selector: "sdc-row-card", inputs: ["data", "options", "isExpanded", "detailTemplate", "infoTooltip", "infoTooltipAllowHtml", "statusTooltip", "statusTooltipAllowHtml", "buttonLoading"], outputs: ["cardClick", "cardButtonClick"] }, { kind: "component", type: PaginatorComponent, selector: "sdc-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showRowsPerPageSelector", "isMobile", "totalRecordsLabel"], outputs: ["pageChange"] }, { kind: "component", type: EmptyStateComponent, selector: "sdc-empty-state", inputs: ["id", "title", "variant", "titleParams", "iconClass", "description", "descriptionParams", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "primaryActionLabelParams", "secondaryActionLabel", "secondaryActionLabelParams", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: LoadingStateComponent, selector: "sdc-loading-state", inputs: ["indicator", "id", "blockWindow", "blockDelayMs", "unblockDelayMs", "loading"] }] });
139
146
  }
140
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowCardListComponent, decorators: [{
141
148
  type: Component,
@@ -146,13 +153,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
146
153
  PaginatorComponent,
147
154
  EmptyStateComponent,
148
155
  LoadingStateComponent
149
- ], encapsulation: ViewEncapsulation.Emulated, template: "<section\n class=\"sdc-row-card-list\"\n [class.align-content-center]=\"isLoading()\"\n [attr.aria-label]=\"'platform.datacore.accessibility.row_card_list' | translate\"\n [attr.aria-busy]=\"isLoading()\"\n>\n <sdc-loading-state\n [loading]=\"isLoading()\"\n [blockWindow]=\"false\"\n [indicator]=\"'dots'\"\n class=\"sdc-cardlist-loading-state\"\n [blockDelayMs]=\"0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n >\n @if (showSkeleton()) {\n <ul class=\"sdc-row-card-items\">\n @for (i of skeletonRows(); track i) {\n <li class=\"sdc-row-card-item sdc-row-card-item--skeleton\">\n <article class=\"sdc-row-card-skeleton\" aria-hidden=\"true\"></article>\n </li>\n }\n </ul>\n } @else if (pagedData().length) {\n <ul class=\"sdc-row-card-items\">\n @for (card of pagedData(); track card.id) {\n <li class=\"sdc-row-card-item\">\n <sdc-row-card\n (cardButtonClick)=\"onCardButtonClick(card)\"\n (cardClick)=\"onButtonExpand(card)\"\n [options]=\"options().customCard\"\n [data]=\"card\"\n [isExpanded]=\"expandedCardId() === card.id\"\n [detailTemplate]=\"detailTemplate\"\n [infoTooltip]=\"options().customCard?.infoTooltip!\"\n [statusTooltip]=\"options().customCard?.statusTooltip!\"\n >\n </sdc-row-card>\n </li>\n }\n </ul>\n } @else if (!isLoading()) {\n <sdc-empty-state\n id=\"cardlist-empty\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-cardlist-empty-state\"\n >\n </sdc-empty-state>\n }\n\n @if (options().enablePagination) {\n <nav\n class=\"sdc-paginator-wrap flex justify-content-start\"\n [class.justify-content-center]=\"isMobile || isTablet\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n >\n <sdc-paginator\n class=\"w-full\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onChangePaginator($event)\"\n [first]=\"page().first\"\n [rows]=\"page().rows\"\n [rowsPerPageOptions]=\"options().rowsPerPageOptions ?? []\"\n [totalRecords]=\"filtered().length\"\n [isMobile]=\"isMobile\"\n >\n </sdc-paginator>\n </nav>\n }\n </sdc-loading-state>\n</section>\n", styles: [":host{display:block;--sdc-row-card-padding: .5rem;--sdc-row-card-height: 5rem}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.sdc-cardlist-loading-state{display:block;width:100%}.sdc-row-card-list{min-height:30rem;min-width:17rem}.sdc-row-card-list .sdc-row-card-items{list-style:none;margin:0;padding:0}.sdc-row-card-list ::ng-deep .sdc-row-card-item sdc-row-card .row-card{border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;box-sizing:border-box}.sdc-row-card-list ::ng-deep .sdc-row-card-item:not(:last-child) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:first-child sdc-row-card .row-card{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:only-child sdc-row-card .row-card{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:nth-last-child(1 of.sdc-row-card-item) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton .sdc-row-card-skeleton{width:100%;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;background:var(--p-surface-0, #fff);border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;box-sizing:border-box;display:flex;align-items:center}.sdc-row-card-list .sdc-row-card-item--skeleton:first-child .sdc-row-card-skeleton{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:not(:last-child) .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list .sdc-row-card-item--skeleton:last-child .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:only-child .sdc-row-card-skeleton{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-paginator-wrap{min-height:auto}.sdc-cardlist-empty-state{width:100%;min-height:var(--sdc-row-card-list-empty-min-height, 12rem);border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius);display:flex;align-items:center;justify-content:center;padding:1rem}\n"] }]
156
+ ], encapsulation: ViewEncapsulation.Emulated, template: "<section\n class=\"sdc-row-card-list\"\n [class.align-content-center]=\"isLoading() && pagedData().length === 0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.row_card_list' | translate\"\n [attr.aria-busy]=\"isLoading()\"\n>\n <sdc-loading-state\n [loading]=\"isLoading()\"\n [blockWindow]=\"false\"\n [indicator]=\"'dots'\"\n class=\"sdc-cardlist-loading-state\"\n [blockDelayMs]=\"0\"\n [attr.aria-label]=\"'platform.datacore.accessibility.loading' | translate\"\n >\n @if (showSkeleton()) {\n <ul class=\"sdc-row-card-items\">\n @for (i of skeletonRows(); track i) {\n <li class=\"sdc-row-card-item sdc-row-card-item--skeleton\">\n <article class=\"sdc-row-card-skeleton\" aria-hidden=\"true\"></article>\n </li>\n }\n </ul>\n } @else if (pagedData().length) {\n <ul class=\"sdc-row-card-items\">\n @for (card of pagedData(); track card.id) {\n <li class=\"sdc-row-card-item\">\n <sdc-row-card\n (cardButtonClick)=\"onCardButtonClick(card)\"\n (cardClick)=\"onButtonExpand(card)\"\n [options]=\"options().customCard\"\n [data]=\"card\"\n [buttonLoading]=\"isCardButtonLoading(card)\"\n [isExpanded]=\"expandedCardId() === card.id\"\n [detailTemplate]=\"detailTemplate\"\n [infoTooltip]=\"options().customCard?.infoTooltip!\"\n [infoTooltipAllowHtml]=\"options().customCard?.infoTooltipAllowHtml ?? false\"\n [statusTooltip]=\"options().customCard?.statusTooltip!\"\n [statusTooltipAllowHtml]=\"options().customCard?.statusTooltipAllowHtml ?? false\"\n >\n </sdc-row-card>\n </li>\n }\n </ul>\n } @else if (!isLoading()) {\n <sdc-empty-state\n id=\"cardlist-empty\"\n iconClass=\"fa fa-inbox\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyText()\"\n class=\"sdc-cardlist-empty-state\"\n >\n </sdc-empty-state>\n }\n\n @if (options().enablePagination) {\n <nav\n class=\"sdc-paginator-wrap flex justify-content-start\"\n [class.justify-content-center]=\"isMobile || isTablet\"\n [attr.aria-label]=\"'platform.datacore.accessibility.pagination_navigation' | translate\"\n >\n <sdc-paginator\n class=\"w-full\"\n [totalRecordsLabel]=\"totalRecordsLabel()\"\n (pageChange)=\"onChangePaginator($event)\"\n [first]=\"page().first\"\n [rows]=\"page().rows\"\n [rowsPerPageOptions]=\"options().rowsPerPageOptions ?? []\"\n [totalRecords]=\"filtered().length\"\n [isMobile]=\"isMobile\"\n >\n </sdc-paginator>\n </nav>\n }\n </sdc-loading-state>\n</section>\n", styles: [":host{display:block;--sdc-row-card-padding: .5rem;--sdc-row-card-height: 5rem}.bg-disabled{background-color:var(--p-inputtext-disabled-background)}.sdc-cardlist-loading-state{display:block;width:100%}.sdc-row-card-list{min-height:30rem;min-width:17rem}.sdc-row-card-list .sdc-row-card-items{list-style:none;margin:0;padding:0}.sdc-row-card-list ::ng-deep .sdc-row-card-item sdc-row-card .row-card{border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;box-sizing:border-box}.sdc-row-card-list ::ng-deep .sdc-row-card-item:not(:last-child) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:first-child sdc-row-card .row-card{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:only-child sdc-row-card .row-card{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list ::ng-deep .sdc-row-card-item:nth-last-child(1 of.sdc-row-card-item) sdc-row-card .row-card{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton .sdc-row-card-skeleton{width:100%;min-height:var(--sdc-row-card-height, 6.5rem);padding:var(--sdc-row-card-padding)!important;background:var(--p-surface-0, #fff);border-inline:1px solid var(--sdc-formfield-default-border);border-block:0;border-radius:0;box-sizing:border-box;display:flex;align-items:center}.sdc-row-card-list .sdc-row-card-item--skeleton:first-child .sdc-row-card-skeleton{border-block-start:1px solid var(--sdc-formfield-default-border);border-start-start-radius:var(--sdc-formfield-border-radius);border-start-end-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:not(:last-child) .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border)}.sdc-row-card-list .sdc-row-card-item--skeleton:last-child .sdc-row-card-skeleton{border-block-end:1px solid var(--sdc-formfield-default-border);border-end-end-radius:var(--sdc-formfield-border-radius);border-end-start-radius:var(--sdc-formfield-border-radius)}.sdc-row-card-list .sdc-row-card-item--skeleton:only-child .sdc-row-card-skeleton{border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius)}.sdc-paginator-wrap{min-height:auto}.sdc-cardlist-empty-state{width:100%;min-height:var(--sdc-row-card-list-empty-min-height, 12rem);border:1px solid var(--sdc-formfield-default-border);border-radius:var(--sdc-formfield-border-radius);display:flex;align-items:center;justify-content:center;padding:1rem}\n"] }]
150
157
  }], propDecorators: { data: [{
151
158
  type: Input
152
159
  }], loading: [{
153
160
  type: Input
154
161
  }], config: [{
155
162
  type: Input
163
+ }], loadingCardId: [{
164
+ type: Input
156
165
  }], cardButtonClick: [{
157
166
  type: Output
158
167
  }], cardClick: [{
@@ -161,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
161
170
  type: ContentChild,
162
171
  args: ['rowCardDetail', { read: TemplateRef }]
163
172
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNhcmQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Jvdy1jYXJkLWxpc3Qvcm93LWNhcmQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Jvdy1jYXJkLWxpc3Qvcm93LWNhcmQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RixPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDaEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUdsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBaUJqRSxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLElBQUksR0FBYyxFQUFF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Q0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7d0dBM0pVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLDhTQWFRLFdBQVcsa0RDNURwRCxvNUVBd0VBLG1nR0RwQ0ksWUFBWSw4QkFDWixlQUFlLDRGQUNmLGdCQUFnQixpTUFDaEIsa0JBQWtCLGdOQUNsQixtQkFBbUIsbVhBQ25CLHFCQUFxQjs7NEZBTVosb0JBQW9CO2tCQWZoQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHFCQUFxQjtxQkFDdEIsaUJBR2MsaUJBQWlCLENBQUMsUUFBUTs4QkFHaEMsSUFBSTtzQkFBWixLQUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUUrQyxjQUFjO3NCQUFuRSxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgREVGQVVMVF9ST1dfQ0FSRF9MSVNUX09QVElPTlMgfSBmcm9tICcuLi8uLi9jb3JlL2NvbmZpZy9yb3ctY2FyZC50eXBlLmNvbmZpZyc7XG5pbXBvcnQge1xuICBST1dfQ0FSRF9MSVNUX0ZBTExCQUNLX0lOSVRJQUxfUk9XUyxcbiAgUk9XX0NBUkRfTElTVF9GSVJTVF9QQUdFLFxuICBST1dfQ0FSRF9MSVNUX01JTl9TS0VMRVRPTl9ST1dTXG59IGZyb20gJy4uLy4uL2NvcmUvY29uc3RhbnRzL3Jvdy1jYXJkLWxpc3QuY29uc3QnO1xuaW1wb3J0IHR5cGUgeyBQYWdpbmF0b3JTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcGFnaW5hdG9yLnR5cGUnO1xuaW1wb3J0IHsgUm93Q2FyZCwgUm93Q2FyZExpc3RPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcy9yb3ctY2FyZC50eXBlJztcbmltcG9ydCB7IGlzTW9iaWxlLCBpc1RhYmxldCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHsgc3RhYmxlU3RyaW5naWZ5IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmctc3RhdGUvbG9hZGluZy1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm93Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vcm93LWNhcmQvcm93LWNhcmQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLXJvdy1jYXJkLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBSb3dDYXJkQ29tcG9uZW50LFxuICAgIFBhZ2luYXRvckNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIExvYWRpbmdTdGF0ZUNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LWNhcmQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yb3ctY2FyZC1saXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgUm93Q2FyZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIERvQ2hlY2sge1xuICBASW5wdXQoKSBkYXRhOiBSb3dDYXJkW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGluZ1N0YXRlLnNldCghIXZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogUm93Q2FyZExpc3RPcHRpb25zID0gREVGQVVMVF9ST1dfQ0FSRF9MSVNUX09QVElPTlM7XG5cbiAgQE91dHB1dCgpIGNhcmRCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcbiAgQE91dHB1dCgpIGNhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcblxuICBAQ29udGVudENoaWxkKCdyb3dDYXJkRGV0YWlsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBkZXRhaWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSA9IGlzTW9iaWxlKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1RhYmxldCA9IGlzVGFibGV0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IHNpZ25hbDxSb3dDYXJkTGlzdE9wdGlvbnM+KERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHlUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLmVtcHR5Py50aXRsZSA/PyAnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBlbXB0eVRleHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8ubWVzc2FnZSA/PyAnJyk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b3RhbFJlY29yZHNMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpLnRvdGFsUmVjb3Jkc0xhYmVsID8/ICcnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kZWRDYXJkSWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJlZCA9IHNpZ25hbDxSb3dDYXJkW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGFnZSA9IHNpZ25hbCh7XG4gICAgZmlyc3Q6IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICByb3dzOiBERUZBVUxUX1JPV19DQVJEX0xJU1RfT1BUSU9OUy5pbml0aWFsUm93cyA/PyBST1dfQ0FSRF9MSVNUX0ZBTExCQUNLX0lOSVRJQUxfUk9XU1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1NrZWxldG9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nU3RhdGUoKSAmJiB0aGlzLmZpbHRlcmVkKCkubGVuZ3RoID09PSAwKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2tlbGV0b25Sb3dzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnBhZ2UoKS5yb3dzID8/IHRoaXMucmVzb2x2ZVJvd3MoKTtcbiAgICBjb25zdCB0b3RhbCA9IE1hdGgubWF4KHJvd3MsIFJPV19DQVJEX0xJU1RfTUlOX1NLRUxFVE9OX1JPV1MpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0b3RhbCB9LCAoXywgaW5kZXgpID0+IGluZGV4KTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRmlyc3RQYWdlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wYWdlKCkuZmlyc3QgPT09IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTGFzdFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZmlsdGVyZWQoKTtcbiAgICBjb25zdCB7IGZpcnN0LCByb3dzIH0gPSB0aGlzLnBhZ2UoKTtcbiAgICBjb25zdCBlbmQgPSB0aGlzLm9wdGlvbnMoKS5lbmFibGVQYWdpbmF0aW9uID8gZmlyc3QgKyByb3dzIDogbGlzdC5sZW5ndGg7XG4gICAgcmV0dXJuIGVuZCA+PSBsaXN0Lmxlbmd0aDtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2VkRGF0YSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5maWx0ZXJlZCgpO1xuICAgIGlmICghdGhpcy5vcHRpb25zKCkuZW5hYmxlUGFnaW5hdGlvbikge1xuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgY29uc3QgeyBmaXJzdCwgcm93cyB9ID0gdGhpcy5wYWdlKCk7XG4gICAgcmV0dXJuIGxpc3Quc2xpY2UoZmlyc3QsIGZpcnN0ICsgcm93cyk7XG4gIH0pO1xuXG4gIHByaXZhdGUgY29uZmlnSGFzaCA9ICcnO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGF0YSA/PyBbXTtcbiAgICAgIHRoaXMuZmlsdGVyZWQuc2V0KHZhbHVlKTtcbiAgICAgIHRoaXMucGFnZS5zZXQoe1xuICAgICAgICBmaXJzdDogUk9XX0NBUkRfTElTVF9GSVJTVF9QQUdFLFxuICAgICAgICByb3dzOiB0aGlzLnJlc29sdmVSb3dzKClcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy5hcHBseUNvbmZpZ09wdGlvbnMoKTtcbiAgICAgIHRoaXMucGFnZS5zZXQoe1xuICAgICAgICBmaXJzdDogUk9XX0NBUkRfTElTVF9GSVJTVF9QQUdFLFxuICAgICAgICByb3dzOiB0aGlzLnJlc29sdmVSb3dzKClcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb25maWdIYXNoID0gc3RhYmxlU3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dEhhc2ggPSBzdGFibGVTdHJpbmdpZnkodGhpcy5jb25maWcpO1xuICAgIGlmIChuZXh0SGFzaCAhPT0gdGhpcy5jb25maWdIYXNoKSB7XG4gICAgICB0aGlzLmNvbmZpZ0hhc2ggPSBuZXh0SGFzaDtcbiAgICAgIHRoaXMuYXBwbHlDb25maWdPcHRpb25zKCk7XG4gICAgICB0aGlzLnBhZ2Uuc2V0KHtcbiAgICAgICAgZmlyc3Q6IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICAgICAgcm93czogdGhpcy5yZXNvbHZlUm93cygpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlUGFnaW5hdG9yKGV2ZW50OiBQYWdpbmF0b3JTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMucGFnZS5zZXQoe1xuICAgICAgZmlyc3Q6IGV2ZW50LmZpcnN0ID8/IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICAgIHJvd3M6IGV2ZW50LnJvd3MgPz8gdGhpcy5yZXNvbHZlUm93cygpXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMoKS5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBmaXJzdCwgcm93cyB9ID0gdGhpcy5wYWdlKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWQoKS5sZW5ndGggPiBmaXJzdCArIHJvd3MpIHtcbiAgICAgIHRoaXMucGFnZS5zZXQoeyBmaXJzdDogZmlyc3QgKyByb3dzLCByb3dzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcmV2UGFnZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucygpLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGZpcnN0LCByb3dzIH0gPSB0aGlzLnBhZ2UoKTtcbiAgICBpZiAoZmlyc3QgLSByb3dzID49IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSkge1xuICAgICAgdGhpcy5wYWdlLnNldCh7IGZpcnN0OiBmaXJzdCAtIHJvd3MsIHJvd3MgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2FyZEJ1dHRvbkNsaWNrKGNhcmQ6IFJvd0NhcmQpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRCdXR0b25DbGljay5lbWl0KGNhcmQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQnV0dG9uRXhwYW5kKGNhcmQ6IFJvd0NhcmQpOiB2b2lkIHtcbiAgICBjb25zdCBpc09wZW4gPSB0aGlzLmV4cGFuZGVkQ2FyZElkKCkgPT09IGNhcmQuaWQ7XG4gICAgdGhpcy5leHBhbmRlZENhcmRJZC5zZXQoaXNPcGVuID8gbnVsbCA6IGNhcmQuaWQpO1xuICAgIHRoaXMuY2FyZENsaWNrLmVtaXQoY2FyZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucygpLmluaXRpYWxSb3dzID8/IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TLmluaXRpYWxSb3dzID8/IFJPV19DQVJEX0xJU1RfRkFMTEJBQ0tfSU5JVElBTF9ST1dTO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbmZpZ09wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYmFzZSA9IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TO1xuXG4gICAgY29uc3QgY2ZnOiBSb3dDYXJkTGlzdE9wdGlvbnMgPSB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgLi4uKHRoaXMuY29uZmlnID8/IHt9KVxuICAgIH07XG5cbiAgICBjZmcuY3VzdG9tQ2FyZCA9IHtcbiAgICAgIC4uLmJhc2UuY3VzdG9tQ2FyZCxcbiAgICAgIC4uLih0aGlzLmNvbmZpZz8uY3VzdG9tQ2FyZCA/PyB7fSlcbiAgICB9O1xuXG4gICAgdGhpcy5vcHRpb25zLnNldChjZmcpO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBjbGFzcz1cInNkYy1yb3ctY2FyZC1saXN0XCJcbiAgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImlzTG9hZGluZygpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5yb3dfY2FyZF9saXN0JyB8IHRyYW5zbGF0ZVwiXG4gIFthdHRyLmFyaWEtYnVzeV09XCJpc0xvYWRpbmcoKVwiXG4+XG4gIDxzZGMtbG9hZGluZy1zdGF0ZVxuICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICBbYmxvY2tXaW5kb3ddPVwiZmFsc2VcIlxuICAgIFtpbmRpY2F0b3JdPVwiJ2RvdHMnXCJcbiAgICBjbGFzcz1cInNkYy1jYXJkbGlzdC1sb2FkaW5nLXN0YXRlXCJcbiAgICBbYmxvY2tEZWxheU1zXT1cIjBcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkubG9hZGluZycgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAgQGlmIChzaG93U2tlbGV0b24oKSkge1xuICAgIDx1bCBjbGFzcz1cInNkYy1yb3ctY2FyZC1pdGVtc1wiPlxuICAgICAgQGZvciAoaSBvZiBza2VsZXRvblJvd3MoKTsgdHJhY2sgaSkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLXJvdy1jYXJkLWl0ZW0gc2RjLXJvdy1jYXJkLWl0ZW0tLXNrZWxldG9uXCI+XG4gICAgICAgIDxhcnRpY2xlIGNsYXNzPVwic2RjLXJvdy1jYXJkLXNrZWxldG9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9hcnRpY2xlPlxuICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICAgIH0gQGVsc2UgaWYgKHBhZ2VkRGF0YSgpLmxlbmd0aCkge1xuICAgIDx1bCBjbGFzcz1cInNkYy1yb3ctY2FyZC1pdGVtc1wiPlxuICAgICAgQGZvciAoY2FyZCBvZiBwYWdlZERhdGEoKTsgdHJhY2sgY2FyZC5pZCkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLXJvdy1jYXJkLWl0ZW1cIj5cbiAgICAgICAgPHNkYy1yb3ctY2FyZFxuICAgICAgICAgIChjYXJkQnV0dG9uQ2xpY2spPVwib25DYXJkQnV0dG9uQ2xpY2soY2FyZClcIlxuICAgICAgICAgIChjYXJkQ2xpY2spPVwib25CdXR0b25FeHBhbmQoY2FyZClcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnMoKS5jdXN0b21DYXJkXCJcbiAgICAgICAgICBbZGF0YV09XCJjYXJkXCJcbiAgICAgICAgICBbaXNFeHBhbmRlZF09XCJleHBhbmRlZENhcmRJZCgpID09PSBjYXJkLmlkXCJcbiAgICAgICAgICBbZGV0YWlsVGVtcGxhdGVdPVwiZGV0YWlsVGVtcGxhdGVcIlxuICAgICAgICAgIFtpbmZvVG9vbHRpcF09XCJvcHRpb25zKCkuY3VzdG9tQ2FyZD8uaW5mb1Rvb2x0aXAhXCJcbiAgICAgICAgICBbc3RhdHVzVG9vbHRpcF09XCJvcHRpb25zKCkuY3VzdG9tQ2FyZD8uc3RhdHVzVG9vbHRpcCFcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2RjLXJvdy1jYXJkPlxuICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICAgIH0gQGVsc2UgaWYgKCFpc0xvYWRpbmcoKSkge1xuICAgIDxzZGMtZW1wdHktc3RhdGVcbiAgICAgIGlkPVwiY2FyZGxpc3QtZW1wdHlcIlxuICAgICAgaWNvbkNsYXNzPVwiZmEgZmEtaW5ib3hcIlxuICAgICAgW3RpdGxlXT1cImVtcHR5VGl0bGUoKVwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiZW1wdHlUZXh0KClcIlxuICAgICAgY2xhc3M9XCJzZGMtY2FyZGxpc3QtZW1wdHktc3RhdGVcIlxuICAgID5cbiAgICA8L3NkYy1lbXB0eS1zdGF0ZT5cbiAgICB9XG5cbiAgICBAaWYgKG9wdGlvbnMoKS5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgPG5hdlxuICAgICAgY2xhc3M9XCJzZGMtcGFnaW5hdG9yLXdyYXAgZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIlxuICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1jZW50ZXJdPVwiaXNNb2JpbGUgfHwgaXNUYWJsZXRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuYWNjZXNzaWJpbGl0eS5wYWdpbmF0aW9uX25hdmlnYXRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgICA8c2RjLXBhZ2luYXRvclxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFt0b3RhbFJlY29yZHNMYWJlbF09XCJ0b3RhbFJlY29yZHNMYWJlbCgpXCJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25DaGFuZ2VQYWdpbmF0b3IoJGV2ZW50KVwiXG4gICAgICAgIFtmaXJzdF09XCJwYWdlKCkuZmlyc3RcIlxuICAgICAgICBbcm93c109XCJwYWdlKCkucm93c1wiXG4gICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwib3B0aW9ucygpLnJvd3NQZXJQYWdlT3B0aW9ucyA/PyBbXVwiXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwiZmlsdGVyZWQoKS5sZW5ndGhcIlxuICAgICAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgPlxuICAgICAgPC9zZGMtcGFnaW5hdG9yPlxuICAgIDwvbmF2PlxuICAgIH1cbiAgPC9zZGMtbG9hZGluZy1zdGF0ZT5cbjwvc2VjdGlvbj5cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNhcmQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Jvdy1jYXJkLWxpc3Qvcm93LWNhcmQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL3Jvdy1jYXJkLWxpc3Qvcm93LWNhcmQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RixPQUFPLEVBQ0wsbUNBQW1DLEVBQ25DLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDaEMsTUFBTSwwQ0FBMEMsQ0FBQztBQUdsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBaUJqRSxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLElBQUksR0FBYyxFQUFF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QUM7SUFDeEgsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLElBQUksR0FBRyw2QkFBNkIsQ0FBQztRQUUzQyxNQUFNLEdBQUcsR0FBdUI7WUFDOUIsR0FBRyxJQUFJO1lBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ3ZCLENBQUM7UUFFRixHQUFHLENBQUMsVUFBVSxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsVUFBVTtZQUNsQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1NBQ25DLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO3dHQXJLVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw4VUFrQlEsV0FBVyxrRENqRXBELGlxRkEyRUEsbWdHRHZDSSxZQUFZLDhCQUNaLGVBQWUsNEZBQ2YsZ0JBQWdCLG9RQUNoQixrQkFBa0IsZ05BQ2xCLG1CQUFtQixtWEFDbkIscUJBQXFCOzs0RkFNWixvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIscUJBQXFCO3FCQUN0QixpQkFHYyxpQkFBaUIsQ0FBQyxRQUFROzhCQUdoQyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0YsT0FBTztzQkFEVixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFHRixhQUFhO3NCQURoQixLQUFLO2dCQUtJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFFK0MsY0FBYztzQkFBbkUsWUFBWTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TIH0gZnJvbSAnLi4vLi4vY29yZS9jb25maWcvcm93LWNhcmQudHlwZS5jb25maWcnO1xuaW1wb3J0IHtcbiAgUk9XX0NBUkRfTElTVF9GQUxMQkFDS19JTklUSUFMX1JPV1MsXG4gIFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgUk9XX0NBUkRfTElTVF9NSU5fU0tFTEVUT05fUk9XU1xufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9yb3ctY2FyZC1saXN0LmNvbnN0JztcbmltcG9ydCB0eXBlIHsgUGFnaW5hdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3BhZ2luYXRvci50eXBlJztcbmltcG9ydCB7IFJvd0NhcmQsIFJvd0NhcmRMaXN0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvcm93LWNhcmQudHlwZSc7XG5pbXBvcnQgeyBpc01vYmlsZSwgaXNUYWJsZXQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2xheW91dC51dGlsJztcbmltcG9ydCB7IHN0YWJsZVN0cmluZ2lmeSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nLXN0YXRlL2xvYWRpbmctc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFJvd0NhcmRDb21wb25lbnQgfSBmcm9tICcuL3Jvdy1jYXJkL3Jvdy1jYXJkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NkYy1yb3ctY2FyZC1saXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUm93Q2FyZENvbXBvbmVudCxcbiAgICBQYWdpbmF0b3JDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBMb2FkaW5nU3RhdGVDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcm93LWNhcmQtbGlzdC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIFJvd0NhcmRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBEb0NoZWNrIHtcbiAgQElucHV0KCkgZGF0YTogUm93Q2FyZFtdID0gW107XG5cbiAgQElucHV0KClcbiAgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxvYWRpbmdTdGF0ZS5zZXQoISF2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBjb25maWc6IFJvd0NhcmRMaXN0T3B0aW9ucyA9IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBsb2FkaW5nQ2FyZElkKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5sb2FkaW5nQ2FyZElkU3RhdGUuc2V0KHZhbHVlID8/IG51bGwpO1xuICB9XG5cbiAgQE91dHB1dCgpIGNhcmRCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcbiAgQE91dHB1dCgpIGNhcmRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Um93Q2FyZD4oKTtcblxuICBAQ29udGVudENoaWxkKCdyb3dDYXJkRGV0YWlsJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBkZXRhaWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSA9IGlzTW9iaWxlKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1RhYmxldCA9IGlzVGFibGV0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU3RhdGUgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdDYXJkSWRTdGF0ZSA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSBzaWduYWw8Um93Q2FyZExpc3RPcHRpb25zPihERUZBVUxUX1JPV19DQVJEX0xJU1RfT1BUSU9OUyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVtcHR5VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS5lbXB0eT8udGl0bGUgPz8gJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHlUZXh0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkuZW1wdHk/Lm1lc3NhZ2UgPz8gJycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxSZWNvcmRzTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKS50b3RhbFJlY29yZHNMYWJlbCA/PyAnJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cGFuZGVkQ2FyZElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWQgPSBzaWduYWw8Um93Q2FyZFtdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhZ2UgPSBzaWduYWwoe1xuICAgIGZpcnN0OiBST1dfQ0FSRF9MSVNUX0ZJUlNUX1BBR0UsXG4gICAgcm93czogREVGQVVMVF9ST1dfQ0FSRF9MSVNUX09QVElPTlMuaW5pdGlhbFJvd3MgPz8gUk9XX0NBUkRfTElTVF9GQUxMQkFDS19JTklUSUFMX1JPV1NcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dTa2VsZXRvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ1N0YXRlKCkgJiYgdGhpcy5maWx0ZXJlZCgpLmxlbmd0aCA9PT0gMCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNrZWxldG9uUm93cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5wYWdlKCkucm93cyA/PyB0aGlzLnJlc29sdmVSb3dzKCk7XG4gICAgY29uc3QgdG90YWwgPSBNYXRoLm1heChyb3dzLCBST1dfQ0FSRF9MSVNUX01JTl9TS0VMRVRPTl9ST1dTKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdG90YWwgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc0ZpcnN0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFnZSgpLmZpcnN0ID09PSBST1dfQ0FSRF9MSVNUX0ZJUlNUX1BBR0UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xhc3RQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmZpbHRlcmVkKCk7XG4gICAgY29uc3QgeyBmaXJzdCwgcm93cyB9ID0gdGhpcy5wYWdlKCk7XG4gICAgY29uc3QgZW5kID0gdGhpcy5vcHRpb25zKCkuZW5hYmxlUGFnaW5hdGlvbiA/IGZpcnN0ICsgcm93cyA6IGxpc3QubGVuZ3RoO1xuICAgIHJldHVybiBlbmQgPj0gbGlzdC5sZW5ndGg7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWdlZERhdGEgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuZmlsdGVyZWQoKTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucygpLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIGNvbnN0IHsgZmlyc3QsIHJvd3MgfSA9IHRoaXMucGFnZSgpO1xuICAgIHJldHVybiBsaXN0LnNsaWNlKGZpcnN0LCBmaXJzdCArIHJvd3MpO1xuICB9KTtcblxuICBwcml2YXRlIGNvbmZpZ0hhc2ggPSAnJztcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRhdGEgPz8gW107XG4gICAgICB0aGlzLmZpbHRlcmVkLnNldCh2YWx1ZSk7XG4gICAgICB0aGlzLnBhZ2Uuc2V0KHtcbiAgICAgICAgZmlyc3Q6IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICAgICAgcm93czogdGhpcy5yZXNvbHZlUm93cygpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10pIHtcbiAgICAgIHRoaXMuYXBwbHlDb25maWdPcHRpb25zKCk7XG4gICAgICB0aGlzLnBhZ2Uuc2V0KHtcbiAgICAgICAgZmlyc3Q6IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICAgICAgcm93czogdGhpcy5yZXNvbHZlUm93cygpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29uZmlnSGFzaCA9IHN0YWJsZVN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5leHRIYXNoID0gc3RhYmxlU3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcbiAgICBpZiAobmV4dEhhc2ggIT09IHRoaXMuY29uZmlnSGFzaCkge1xuICAgICAgdGhpcy5jb25maWdIYXNoID0gbmV4dEhhc2g7XG4gICAgICB0aGlzLmFwcGx5Q29uZmlnT3B0aW9ucygpO1xuICAgICAgdGhpcy5wYWdlLnNldCh7XG4gICAgICAgIGZpcnN0OiBST1dfQ0FSRF9MSVNUX0ZJUlNUX1BBR0UsXG4gICAgICAgIHJvd3M6IHRoaXMucmVzb2x2ZVJvd3MoKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nU3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NhcmRCdXR0b25Mb2FkaW5nKGNhcmQ6IFJvd0NhcmQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjYXJkPy5sb2FkaW5nIHx8IGNhcmQ/LmlkID09PSB0aGlzLmxvYWRpbmdDYXJkSWRTdGF0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlUGFnaW5hdG9yKGV2ZW50OiBQYWdpbmF0b3JTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMucGFnZS5zZXQoe1xuICAgICAgZmlyc3Q6IGV2ZW50LmZpcnN0ID8/IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSxcbiAgICAgIHJvd3M6IGV2ZW50LnJvd3MgPz8gdGhpcy5yZXNvbHZlUm93cygpXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMoKS5lbmFibGVQYWdpbmF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBmaXJzdCwgcm93cyB9ID0gdGhpcy5wYWdlKCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWQoKS5sZW5ndGggPiBmaXJzdCArIHJvd3MpIHtcbiAgICAgIHRoaXMucGFnZS5zZXQoeyBmaXJzdDogZmlyc3QgKyByb3dzLCByb3dzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwcmV2UGFnZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucygpLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGZpcnN0LCByb3dzIH0gPSB0aGlzLnBhZ2UoKTtcbiAgICBpZiAoZmlyc3QgLSByb3dzID49IFJPV19DQVJEX0xJU1RfRklSU1RfUEFHRSkge1xuICAgICAgdGhpcy5wYWdlLnNldCh7IGZpcnN0OiBmaXJzdCAtIHJvd3MsIHJvd3MgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2FyZEJ1dHRvbkNsaWNrKGNhcmQ6IFJvd0NhcmQpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRCdXR0b25DbGljay5lbWl0KGNhcmQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQnV0dG9uRXhwYW5kKGNhcmQ6IFJvd0NhcmQpOiB2b2lkIHtcbiAgICBjb25zdCBpc09wZW4gPSB0aGlzLmV4cGFuZGVkQ2FyZElkKCkgPT09IGNhcmQuaWQ7XG4gICAgdGhpcy5leHBhbmRlZENhcmRJZC5zZXQoaXNPcGVuID8gbnVsbCA6IGNhcmQuaWQpO1xuICAgIHRoaXMuY2FyZENsaWNrLmVtaXQoY2FyZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3dzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucygpLmluaXRpYWxSb3dzID8/IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TLmluaXRpYWxSb3dzID8/IFJPV19DQVJEX0xJU1RfRkFMTEJBQ0tfSU5JVElBTF9ST1dTO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUNvbmZpZ09wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYmFzZSA9IERFRkFVTFRfUk9XX0NBUkRfTElTVF9PUFRJT05TO1xuXG4gICAgY29uc3QgY2ZnOiBSb3dDYXJkTGlzdE9wdGlvbnMgPSB7XG4gICAgICAuLi5iYXNlLFxuICAgICAgLi4uKHRoaXMuY29uZmlnID8/IHt9KVxuICAgIH07XG5cbiAgICBjZmcuY3VzdG9tQ2FyZCA9IHtcbiAgICAgIC4uLmJhc2UuY3VzdG9tQ2FyZCxcbiAgICAgIC4uLih0aGlzLmNvbmZpZz8uY3VzdG9tQ2FyZCA/PyB7fSlcbiAgICB9O1xuXG4gICAgdGhpcy5vcHRpb25zLnNldChjZmcpO1xuICB9XG59XG4iLCI8c2VjdGlvblxuICBjbGFzcz1cInNkYy1yb3ctY2FyZC1saXN0XCJcbiAgW2NsYXNzLmFsaWduLWNvbnRlbnQtY2VudGVyXT1cImlzTG9hZGluZygpICYmIHBhZ2VkRGF0YSgpLmxlbmd0aCA9PT0gMFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucm93X2NhcmRfbGlzdCcgfCB0cmFuc2xhdGVcIlxuICBbYXR0ci5hcmlhLWJ1c3ldPVwiaXNMb2FkaW5nKClcIlxuPlxuICA8c2RjLWxvYWRpbmctc3RhdGVcbiAgICBbbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiXG4gICAgW2Jsb2NrV2luZG93XT1cImZhbHNlXCJcbiAgICBbaW5kaWNhdG9yXT1cIidkb3RzJ1wiXG4gICAgY2xhc3M9XCJzZGMtY2FyZGxpc3QtbG9hZGluZy1zdGF0ZVwiXG4gICAgW2Jsb2NrRGVsYXlNc109XCIwXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LmxvYWRpbmcnIHwgdHJhbnNsYXRlXCJcbiAgPlxuICAgIEBpZiAoc2hvd1NrZWxldG9uKCkpIHtcbiAgICA8dWwgY2xhc3M9XCJzZGMtcm93LWNhcmQtaXRlbXNcIj5cbiAgICAgIEBmb3IgKGkgb2Ygc2tlbGV0b25Sb3dzKCk7IHRyYWNrIGkpIHtcbiAgICAgIDxsaSBjbGFzcz1cInNkYy1yb3ctY2FyZC1pdGVtIHNkYy1yb3ctY2FyZC1pdGVtLS1za2VsZXRvblwiPlxuICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cInNkYy1yb3ctY2FyZC1za2VsZXRvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvYXJ0aWNsZT5cbiAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgICB9IEBlbHNlIGlmIChwYWdlZERhdGEoKS5sZW5ndGgpIHtcbiAgICA8dWwgY2xhc3M9XCJzZGMtcm93LWNhcmQtaXRlbXNcIj5cbiAgICAgIEBmb3IgKGNhcmQgb2YgcGFnZWREYXRhKCk7IHRyYWNrIGNhcmQuaWQpIHtcbiAgICAgIDxsaSBjbGFzcz1cInNkYy1yb3ctY2FyZC1pdGVtXCI+XG4gICAgICAgIDxzZGMtcm93LWNhcmRcbiAgICAgICAgICAoY2FyZEJ1dHRvbkNsaWNrKT1cIm9uQ2FyZEJ1dHRvbkNsaWNrKGNhcmQpXCJcbiAgICAgICAgICAoY2FyZENsaWNrKT1cIm9uQnV0dG9uRXhwYW5kKGNhcmQpXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zKCkuY3VzdG9tQ2FyZFwiXG4gICAgICAgICAgW2RhdGFdPVwiY2FyZFwiXG4gICAgICAgICAgW2J1dHRvbkxvYWRpbmddPVwiaXNDYXJkQnV0dG9uTG9hZGluZyhjYXJkKVwiXG4gICAgICAgICAgW2lzRXhwYW5kZWRdPVwiZXhwYW5kZWRDYXJkSWQoKSA9PT0gY2FyZC5pZFwiXG4gICAgICAgICAgW2RldGFpbFRlbXBsYXRlXT1cImRldGFpbFRlbXBsYXRlXCJcbiAgICAgICAgICBbaW5mb1Rvb2x0aXBdPVwib3B0aW9ucygpLmN1c3RvbUNhcmQ/LmluZm9Ub29sdGlwIVwiXG4gICAgICAgICAgW2luZm9Ub29sdGlwQWxsb3dIdG1sXT1cIm9wdGlvbnMoKS5jdXN0b21DYXJkPy5pbmZvVG9vbHRpcEFsbG93SHRtbCA/PyBmYWxzZVwiXG4gICAgICAgICAgW3N0YXR1c1Rvb2x0aXBdPVwib3B0aW9ucygpLmN1c3RvbUNhcmQ/LnN0YXR1c1Rvb2x0aXAhXCJcbiAgICAgICAgICBbc3RhdHVzVG9vbHRpcEFsbG93SHRtbF09XCJvcHRpb25zKCkuY3VzdG9tQ2FyZD8uc3RhdHVzVG9vbHRpcEFsbG93SHRtbCA/PyBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgPC9zZGMtcm93LWNhcmQ+XG4gICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gICAgfSBAZWxzZSBpZiAoIWlzTG9hZGluZygpKSB7XG4gICAgPHNkYy1lbXB0eS1zdGF0ZVxuICAgICAgaWQ9XCJjYXJkbGlzdC1lbXB0eVwiXG4gICAgICBpY29uQ2xhc3M9XCJmYSBmYS1pbmJveFwiXG4gICAgICBbdGl0bGVdPVwiZW1wdHlUaXRsZSgpXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJlbXB0eVRleHQoKVwiXG4gICAgICBjbGFzcz1cInNkYy1jYXJkbGlzdC1lbXB0eS1zdGF0ZVwiXG4gICAgPlxuICAgIDwvc2RjLWVtcHR5LXN0YXRlPlxuICAgIH1cblxuICAgIEBpZiAob3B0aW9ucygpLmVuYWJsZVBhZ2luYXRpb24pIHtcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cInNkYy1wYWdpbmF0b3Itd3JhcCBmbGV4IGp1c3RpZnktY29udGVudC1zdGFydFwiXG4gICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWNlbnRlcl09XCJpc01vYmlsZSB8fCBpc1RhYmxldFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LnBhZ2luYXRpb25fbmF2aWdhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICAgIDxzZGMtcGFnaW5hdG9yXG4gICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc0xhYmVsXT1cInRvdGFsUmVjb3Jkc0xhYmVsKClcIlxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvbkNoYW5nZVBhZ2luYXRvcigkZXZlbnQpXCJcbiAgICAgICAgW2ZpcnN0XT1cInBhZ2UoKS5maXJzdFwiXG4gICAgICAgIFtyb3dzXT1cInBhZ2UoKS5yb3dzXCJcbiAgICAgICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJvcHRpb25zKCkucm93c1BlclBhZ2VPcHRpb25zID8/IFtdXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJmaWx0ZXJlZCgpLmxlbmd0aFwiXG4gICAgICAgIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICA+XG4gICAgICA8L3NkYy1wYWdpbmF0b3I+XG4gICAgPC9uYXY+XG4gICAgfVxuICA8L3NkYy1sb2FkaW5nLXN0YXRlPlxuPC9zZWN0aW9uPlxuIl19