valtech-components 2.0.418 → 2.0.420

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 (107) hide show
  1. package/esm2022/lib/components/atoms/button/button.component.mjs +30 -102
  2. package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +2 -7
  3. package/esm2022/lib/components/atoms/display/display.component.mjs +18 -101
  4. package/esm2022/lib/components/atoms/image/image.component.mjs +2 -5
  5. package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +2 -12
  6. package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +4 -29
  7. package/esm2022/lib/components/atoms/text/text.component.mjs +49 -171
  8. package/esm2022/lib/components/atoms/title/title.component.mjs +23 -65
  9. package/esm2022/lib/components/atoms/title/types.mjs +7 -19
  10. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +7 -53
  11. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +7 -26
  12. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +7 -42
  13. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +12 -41
  14. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +3 -28
  15. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +2 -5
  16. package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +3 -6
  17. package/esm2022/lib/components/molecules/comment/comment.component.mjs +5 -31
  18. package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +2 -23
  19. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +2 -29
  20. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +4 -6
  21. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +16 -40
  22. package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +25 -125
  23. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +4 -6
  24. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +2 -10
  25. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +2 -4
  26. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +2 -23
  27. package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +3 -6
  28. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +9 -12
  29. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +3 -11
  30. package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +4 -25
  31. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -34
  32. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +11 -20
  33. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +4 -6
  34. package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +1 -6
  35. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +3 -28
  36. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +7 -41
  37. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +2 -27
  38. package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +2 -10
  39. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +7 -37
  40. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -12
  41. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +8 -54
  42. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +1 -3
  43. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +3 -5
  44. package/esm2022/lib/services/locale.service.mjs +75 -0
  45. package/esm2022/lib/services/types.mjs +5 -3
  46. package/esm2022/public-api.mjs +2 -7
  47. package/fesm2022/valtech-components.mjs +366 -2279
  48. package/fesm2022/valtech-components.mjs.map +1 -1
  49. package/lib/components/atoms/button/button.component.d.ts +12 -37
  50. package/lib/components/atoms/countdown/countdown.component.d.ts +0 -1
  51. package/lib/components/atoms/display/display.component.d.ts +8 -60
  52. package/lib/components/atoms/image/image.component.d.ts +0 -2
  53. package/lib/components/atoms/price-tag/price-tag.component.d.ts +0 -1
  54. package/lib/components/atoms/qr-code/qr-code.component.d.ts +2 -6
  55. package/lib/components/atoms/text/text.component.d.ts +20 -68
  56. package/lib/components/atoms/title/title.component.d.ts +7 -12
  57. package/lib/components/atoms/title/types.d.ts +11 -24
  58. package/lib/components/molecules/accordion/accordion.component.d.ts +2 -9
  59. package/lib/components/molecules/alert-box/alert-box.component.d.ts +3 -8
  60. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +2 -8
  61. package/lib/components/molecules/check-input/check-input.component.d.ts +2 -10
  62. package/lib/components/molecules/chip-group/chip-group.component.d.ts +2 -8
  63. package/lib/components/molecules/code-display/code-display.component.d.ts +0 -2
  64. package/lib/components/molecules/command-display/command-display.component.d.ts +0 -3
  65. package/lib/components/molecules/comment/comment.component.d.ts +2 -6
  66. package/lib/components/molecules/currency-input/currency-input.component.d.ts +0 -3
  67. package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +0 -3
  68. package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +0 -1
  69. package/lib/components/molecules/glow-card/glow-card.component.d.ts +5 -9
  70. package/lib/components/molecules/language-selector/language-selector.component.d.ts +7 -19
  71. package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +0 -2
  72. package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +0 -1
  73. package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -1
  74. package/lib/components/molecules/phone-input/phone-input.component.d.ts +0 -3
  75. package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +0 -3
  76. package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +3 -4
  77. package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -1
  78. package/lib/components/molecules/range-input/range-input.component.d.ts +3 -8
  79. package/lib/components/molecules/segment-control/segment-control.component.d.ts +2 -8
  80. package/lib/components/molecules/select-input/select-input.component.d.ts +2 -3
  81. package/lib/components/molecules/select-search/select-search.component.d.ts +0 -2
  82. package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +0 -1
  83. package/lib/components/molecules/stepper/stepper.component.d.ts +2 -8
  84. package/lib/components/molecules/tabs/tabs.component.d.ts +2 -8
  85. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +2 -6
  86. package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -1
  87. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +2 -8
  88. package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -1
  89. package/lib/components/organisms/comment-section/comment-section.component.d.ts +2 -6
  90. package/lib/components/organisms/data-table/data-table.component.d.ts +0 -1
  91. package/lib/components/organisms/wizard/wizard.component.d.ts +0 -2
  92. package/lib/services/locale.service.d.ts +52 -0
  93. package/lib/services/types.d.ts +1 -6
  94. package/package.json +1 -3
  95. package/public-api.d.ts +1 -5
  96. package/esm2022/lib/services/lang-provider/components/lang-settings.mjs +0 -13
  97. package/esm2022/lib/services/lang-provider/content.mjs +0 -156
  98. package/esm2022/lib/services/lang-provider/lang-provider.service.mjs +0 -530
  99. package/esm2022/lib/services/lang-provider/types.mjs +0 -23
  100. package/esm2022/lib/shared/utils/content.mjs +0 -186
  101. package/esm2022/lib/shared/utils/simple-content.mjs +0 -119
  102. package/lib/services/lang-provider/components/lang-settings.d.ts +0 -3
  103. package/lib/services/lang-provider/content.d.ts +0 -17
  104. package/lib/services/lang-provider/lang-provider.service.d.ts +0 -264
  105. package/lib/services/lang-provider/types.d.ts +0 -30
  106. package/lib/shared/utils/content.d.ts +0 -199
  107. package/lib/shared/utils/simple-content.d.ts +0 -120
@@ -1,6 +1,5 @@
1
- import { Component, inject, Input } from '@angular/core';
1
+ import { Component, Input } from '@angular/core';
2
2
  import { IonText } from '@ionic/angular/standalone';
3
- import { LangService } from '../../../services/lang-provider/lang-provider.service';
4
3
  import { resolveColor } from '../../../shared/utils/styles';
5
4
  import * as i0 from "@angular/core";
6
5
  /**
@@ -17,17 +16,16 @@ export class ExpandableTextComponent {
17
16
  constructor() {
18
17
  this.expanded = false;
19
18
  this.defaultColor = 'primary';
20
- this.langService = inject(LangService);
21
19
  }
22
20
  get truncatedText() {
23
- const maxLength = this.props.limit || 100; // Longitud por defecto
21
+ const maxLength = this.props.limit || 100;
24
22
  return this.props.content?.length > maxLength ? this.props.content.slice(0, maxLength) + '...' : this.props.content;
25
23
  }
26
24
  get isTruncated() {
27
25
  return this.props.content?.length > (this.props.limit || 100);
28
26
  }
29
27
  getExpandText() {
30
- return this.props.expandText || this.langService.getText('_global', 'seeMore', 'ver más');
28
+ return this.props.expandText || 'ver más';
31
29
  }
32
30
  toggleExpand() {
33
31
  this.expanded = !this.expanded;
@@ -74,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
74
72
  }], propDecorators: { props: [{
75
73
  type: Input
76
74
  }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L2V4cGFuZGFibGUtdGV4dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQThENUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQXJFcEM7UUErRUUsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUVqQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQXNCM0M7SUFwQkMsSUFBSSxhQUFhO1FBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsdUJBQXVCO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0FsQ1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsMkdBakV4Qjs7Ozs7Ozs7Ozs7Ozs7O0dBZVQsZ21CQWhCUyxPQUFPOzs0RkFrRU4sdUJBQXVCO2tCQXJFbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDLFlBQ1I7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzhCQTJEUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvblRleHQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgeyBFeHBhbmRhYmxlVGV4dElucHV0IH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1leHBhbmRhYmxlLXRleHQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSW9uVGV4dF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uLWNvbnRhaW5lclwiIFtjbGFzcy5leHBhbmRlZF09XCJleHBhbmRlZFwiIFtjbGFzcy5oYXMtZ3JhZGllbnRdPVwiIWV4cGFuZGVkICYmIGlzVHJ1bmNhdGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCI+XG4gICAgICAgIDxpb24tdGV4dD5cbiAgICAgICAgICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnRcIj57eyBleHBhbmRlZCA/IHByb3BzLmNvbnRlbnQgOiB0cnVuY2F0ZWRUZXh0IH19PC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgIDwvZGl2PlxuICAgICAgQGlmICghZXhwYW5kZWQgJiYgaXNUcnVuY2F0ZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZVwiIFtzdHlsZS5jb2xvcl09XCJ0aGlzLmNvbG9yKClcIiAoY2xpY2spPVwidG9nZ2xlRXhwYW5kKClcIj5cbiAgICAgICAgICB7eyBnZXRFeHBhbmRUZXh0KCkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuZGVzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuM3MgZWFzZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC5kZXNjcmlwdGlvbi1jb250YWluZXI6bm90KC5leHBhbmRlZCkge1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMHJlbTsgLyogQWx0dXJhIHBhcmEgdGV4dG8gdHJ1bmNhZG8gKi9cbiAgICAgIH1cblxuICAgICAgLmRlc2NyaXB0aW9uLWNvbnRhaW5lci5leHBhbmRlZCB7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7IC8qIFNpbiBsw61taXRlIGRlIGFsdHVyYSBhbCBleHBhbmRpciAqL1xuICAgICAgfVxuXG4gICAgICAuY29udGVudC13cmFwcGVyIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLyogTWFzayBncmFkaWVudCAtIGZ1bmNpb25hIGVuIGN1YWxxdWllciBjb2xvciBkZSBmb25kbyAqL1xuICAgICAgLmRlc2NyaXB0aW9uLWNvbnRhaW5lcjpub3QoLmV4cGFuZGVkKS5oYXMtZ3JhZGllbnQgLmNvbnRlbnQtd3JhcHBlciB7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2sgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTtcbiAgICAgICAgbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgYmxhY2sgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTtcbiAgICAgIH1cblxuICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2VlLW1vcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbi8qKlxuICogdmFsLWV4cGFuZGFibGUtdGV4dFxuICpcbiAqIEEgdGV4dCBjb21wb25lbnQgdGhhdCBjYW4gYmUgZXhwYW5kZWQvY29sbGFwc2VkIHRvIHNob3cgbW9yZSBvciBsZXNzIGNvbnRlbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtZXhwYW5kYWJsZS10ZXh0IFtwcm9wc109XCJ7IGNvbnRlbnQ6ICcuLi4nLCBsaW1pdDogMTgwLCBjb2xvcjogJ3ByaW1hcnknLCBleHBhbmRUZXh0OiAnbcOhcycgfVwiPjwvdmFsLWV4cGFuZGFibGUtdGV4dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEV4cGFuZGFibGVUZXh0SW5wdXQgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgZXhwYW5kYWJsZSB0ZXh0IChjb250ZW50LCBsaW1pdCwgY29sb3IsIGV4cGFuZFRleHQpXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHBhbmRhYmxlVGV4dENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBFeHBhbmRhYmxlIHRleHQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtFeHBhbmRhYmxlVGV4dElucHV0fVxuICAgKiBAcHJvcGVydHkgY29udGVudCAtIFRoZSB0ZXh0IGNvbnRlbnQgdG8gZGlzcGxheS5cbiAgICogQHByb3BlcnR5IGxpbWl0IC0gVGhlIGNoYXJhY3RlciBsaW1pdCBiZWZvcmUgdHJ1bmNhdGlvbi5cbiAgICogQHByb3BlcnR5IGNvbG9yIC0gVGhlIGNvbG9yIGZvciB0aGUgXCJzZWUgbW9yZVwiIGxpbmsuXG4gICAqIEBwcm9wZXJ0eSBleHBhbmRUZXh0IC0gVGhlIHRleHQgZm9yIHRoZSBleHBhbmQgbGluayAob3B0aW9uYWwpLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IEV4cGFuZGFibGVUZXh0SW5wdXQ7XG4gIGV4cGFuZGVkID0gZmFsc2U7XG4gIGRlZmF1bHRDb2xvciA9ICdwcmltYXJ5JztcblxuICBwcml2YXRlIGxhbmdTZXJ2aWNlID0gaW5qZWN0KExhbmdTZXJ2aWNlKTtcblxuICBnZXQgdHJ1bmNhdGVkVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMucHJvcHMubGltaXQgfHwgMTAwOyAvLyBMb25naXR1ZCBwb3IgZGVmZWN0b1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNvbnRlbnQ/Lmxlbmd0aCA+IG1heExlbmd0aCA/IHRoaXMucHJvcHMuY29udGVudC5zbGljZSgwLCBtYXhMZW5ndGgpICsgJy4uLicgOiB0aGlzLnByb3BzLmNvbnRlbnQ7XG4gIH1cblxuICBnZXQgaXNUcnVuY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29udGVudD8ubGVuZ3RoID4gKHRoaXMucHJvcHMubGltaXQgfHwgMTAwKTtcbiAgfVxuXG4gIGdldEV4cGFuZFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5leHBhbmRUZXh0IHx8IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWVNb3JlJywgJ3ZlciBtw6FzJyk7XG4gIH1cblxuICB0b2dnbGVFeHBhbmQoKSB7XG4gICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVkO1xuICB9XG5cbiAgY29sb3IoKSB7XG4gICAgcmV0dXJuIHJlc29sdmVDb2xvcih0aGlzLnByb3BzLmNvbG9yIHx8IHRoaXMuZGVmYXVsdENvbG9yKTtcbiAgfVxufVxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZXhwYW5kYWJsZS10ZXh0L2V4cGFuZGFibGUtdGV4dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUE4RDVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFyRXBDO1FBK0VFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxTQUFTLENBQUM7S0FzQjFCO0lBcEJDLElBQUksYUFBYTtRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN0SCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0FoQ1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsMkdBakV4Qjs7Ozs7Ozs7Ozs7Ozs7O0dBZVQsZ21CQWhCUyxPQUFPOzs0RkFrRU4sdUJBQXVCO2tCQXJFbkMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQLENBQUMsT0FBTyxDQUFDLFlBQ1I7Ozs7Ozs7Ozs7Ozs7OztHQWVUOzhCQTJEUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyByZXNvbHZlQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvc3R5bGVzJztcbmltcG9ydCB7IEV4cGFuZGFibGVUZXh0SW5wdXQgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWV4cGFuZGFibGUtdGV4dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25UZXh0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb24tY29udGFpbmVyXCIgW2NsYXNzLmV4cGFuZGVkXT1cImV4cGFuZGVkXCIgW2NsYXNzLmhhcy1ncmFkaWVudF09XCIhZXhwYW5kZWQgJiYgaXNUcnVuY2F0ZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudFwiPnt7IGV4cGFuZGVkID8gcHJvcHMuY29udGVudCA6IHRydW5jYXRlZFRleHQgfX08L3NwYW4+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKCFleHBhbmRlZCAmJiBpc1RydW5jYXRlZCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInNlZS1tb3JlXCIgW3N0eWxlLmNvbG9yXT1cInRoaXMuY29sb3IoKVwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQoKVwiPlxuICAgICAgICAgIHt7IGdldEV4cGFuZFRleHQoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5kZXNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLmRlc2NyaXB0aW9uLWNvbnRhaW5lcjpub3QoLmV4cGFuZGVkKSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDEwcmVtOyAvKiBBbHR1cmEgcGFyYSB0ZXh0byB0cnVuY2FkbyAqL1xuICAgICAgfVxuXG4gICAgICAuZGVzY3JpcHRpb24tY29udGFpbmVyLmV4cGFuZGVkIHtcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTsgLyogU2luIGzDrW1pdGUgZGUgYWx0dXJhIGFsIGV4cGFuZGlyICovXG4gICAgICB9XG5cbiAgICAgIC5jb250ZW50LXdyYXBwZXIge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAvKiBNYXNrIGdyYWRpZW50IC0gZnVuY2lvbmEgZW4gY3VhbHF1aWVyIGNvbG9yIGRlIGZvbmRvICovXG4gICAgICAuZGVzY3JpcHRpb24tY29udGFpbmVyOm5vdCguZXhwYW5kZWQpLmhhcy1ncmFkaWVudCAuY29udGVudC13cmFwcGVyIHtcbiAgICAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBibGFjayA1MCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgICBtYXNrLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBibGFjayA1MCUsIHRyYW5zcGFyZW50IDEwMCUpO1xuICAgICAgfVxuXG4gICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICB9XG5cbiAgICAgIC5zZWUtbW9yZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuLyoqXG4gKiB2YWwtZXhwYW5kYWJsZS10ZXh0XG4gKlxuICogQSB0ZXh0IGNvbXBvbmVudCB0aGF0IGNhbiBiZSBleHBhbmRlZC9jb2xsYXBzZWQgdG8gc2hvdyBtb3JlIG9yIGxlc3MgY29udGVudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1leHBhbmRhYmxlLXRleHQgW3Byb3BzXT1cInsgY29udGVudDogJy4uLicsIGxpbWl0OiAxODAsIGNvbG9yOiAncHJpbWFyeScsIGV4cGFuZFRleHQ6ICdtw6FzJyB9XCI+PC92YWwtZXhwYW5kYWJsZS10ZXh0PlxuICpcbiAqIEBpbnB1dCBwcm9wczogRXhwYW5kYWJsZVRleHRJbnB1dCAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBleHBhbmRhYmxlIHRleHQgKGNvbnRlbnQsIGxpbWl0LCBjb2xvciwgZXhwYW5kVGV4dClcbiAqL1xuZXhwb3J0IGNsYXNzIEV4cGFuZGFibGVUZXh0Q29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEV4cGFuZGFibGUgdGV4dCBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAgICogQHR5cGUge0V4cGFuZGFibGVUZXh0SW5wdXR9XG4gICAqIEBwcm9wZXJ0eSBjb250ZW50IC0gVGhlIHRleHQgY29udGVudCB0byBkaXNwbGF5LlxuICAgKiBAcHJvcGVydHkgbGltaXQgLSBUaGUgY2hhcmFjdGVyIGxpbWl0IGJlZm9yZSB0cnVuY2F0aW9uLlxuICAgKiBAcHJvcGVydHkgY29sb3IgLSBUaGUgY29sb3IgZm9yIHRoZSBcInNlZSBtb3JlXCIgbGluay5cbiAgICogQHByb3BlcnR5IGV4cGFuZFRleHQgLSBUaGUgdGV4dCBmb3IgdGhlIGV4cGFuZCBsaW5rIChvcHRpb25hbCkuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogRXhwYW5kYWJsZVRleHRJbnB1dDtcbiAgZXhwYW5kZWQgPSBmYWxzZTtcbiAgZGVmYXVsdENvbG9yID0gJ3ByaW1hcnknO1xuXG4gIGdldCB0cnVuY2F0ZWRUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5wcm9wcy5saW1pdCB8fCAxMDA7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29udGVudD8ubGVuZ3RoID4gbWF4TGVuZ3RoID8gdGhpcy5wcm9wcy5jb250ZW50LnNsaWNlKDAsIG1heExlbmd0aCkgKyAnLi4uJyA6IHRoaXMucHJvcHMuY29udGVudDtcbiAgfVxuXG4gIGdldCBpc1RydW5jYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250ZW50Py5sZW5ndGggPiAodGhpcy5wcm9wcy5saW1pdCB8fCAxMDApO1xuICB9XG5cbiAgZ2V0RXhwYW5kVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmV4cGFuZFRleHQgfHwgJ3ZlciBtw6FzJztcbiAgfVxuXG4gIHRvZ2dsZUV4cGFuZCgpIHtcbiAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7XG4gIH1cblxuICBjb2xvcigpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKHRoaXMucHJvcHMuY29sb3IgfHwgdGhpcy5kZWZhdWx0Q29sb3IpO1xuICB9XG59XG4iXX0=
@@ -3,12 +3,9 @@ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
3
  import { IonIcon } from '@ionic/angular/standalone';
4
4
  import { addIcons } from 'ionicons';
5
5
  import { arrowForwardOutline } from 'ionicons/icons';
6
- import { of } from 'rxjs';
7
- import { LangService } from '../../../services/lang-provider/lang-provider.service';
8
6
  import { NavigationService } from '../../../services/navigation.service';
9
7
  import { ThemeService } from '../../../services/theme.service';
10
8
  import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common";
12
9
  /**
13
10
  * val-glow-card
14
11
  *
@@ -33,12 +30,8 @@ import * as i1 from "@angular/common";
33
30
  export class GlowCardComponent {
34
31
  constructor() {
35
32
  this.onClick = new EventEmitter();
36
- this.langService = inject(LangService);
37
33
  this.navigationService = inject(NavigationService);
38
34
  this.themeService = inject(ThemeService);
39
- this.title$ = of('');
40
- this.description$ = of('');
41
- this.ctaText$ = of('');
42
35
  this.ionicColors = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
43
36
  // RGB values with SPACE separator for CSS rgb(var() / alpha) syntax
44
37
  this.colorRgbMap = {
@@ -51,34 +44,17 @@ export class GlowCardComponent {
51
44
  };
52
45
  addIcons({ arrowForwardOutline });
53
46
  }
54
- ngOnInit() {
55
- this.initializeContent();
56
- }
57
47
  get isDark() {
58
48
  return this.themeService.IsDark;
59
49
  }
60
- initializeContent() {
61
- // Title: static or reactive
62
- if (this.props.title) {
63
- this.title$ = of(this.props.title);
64
- }
65
- else if (this.props.titleKey && this.props.titleClass) {
66
- this.title$ = this.langService.getContent(this.props.titleClass, this.props.titleKey, this.props.titleFallback);
67
- }
68
- // Description: static or reactive
69
- if (this.props.description) {
70
- this.description$ = of(this.props.description);
71
- }
72
- else if (this.props.descriptionKey && this.props.descriptionClass) {
73
- this.description$ = this.langService.getContent(this.props.descriptionClass, this.props.descriptionKey, this.props.descriptionFallback);
74
- }
75
- // CTA Text: static or reactive
76
- if (this.props.cta.text) {
77
- this.ctaText$ = of(this.props.cta.text);
78
- }
79
- else if (this.props.cta.contentKey && this.props.cta.contentClass) {
80
- this.ctaText$ = this.langService.getContent(this.props.cta.contentClass, this.props.cta.contentKey, this.props.cta.contentFallback);
81
- }
50
+ getTitle() {
51
+ return this.props.title || this.props.titleFallback || '';
52
+ }
53
+ getDescription() {
54
+ return this.props.description || this.props.descriptionFallback || '';
55
+ }
56
+ getCtaText() {
57
+ return this.props.cta.text || this.props.cta.contentFallback || 'Ver más';
82
58
  }
83
59
  getGlowColor() {
84
60
  const color = this.props.glow?.color;
@@ -193,12 +169,12 @@ export class GlowCardComponent {
193
169
  <div class="glow-card__content">
194
170
  <!-- Title -->
195
171
  <h3 class="glow-card__title">
196
- {{ title$ | async }}
172
+ {{ getTitle() }}
197
173
  </h3>
198
174
 
199
175
  <!-- Description -->
200
176
  <p class="glow-card__description">
201
- {{ description$ | async }}
177
+ {{ getDescription() }}
202
178
  </p>
203
179
 
204
180
  <!-- CTA Link with expanding animation -->
@@ -207,7 +183,7 @@ export class GlowCardComponent {
207
183
  [href]="props.cta.url"
208
184
  (click)="onCtaClick($event)"
209
185
  >
210
- <span class="glow-card__cta-text">{{ ctaText$ | async }}</span>
186
+ <span class="glow-card__cta-text">{{ getCtaText() }}</span>
211
187
  <ion-icon
212
188
  class="glow-card__cta-icon"
213
189
  [name]="props.cta.icon || 'arrow-forward-outline'"
@@ -215,7 +191,7 @@ export class GlowCardComponent {
215
191
  </a>
216
192
  </div>
217
193
  </article>
218
- `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{--glow-color: var(--ion-color-primary);--glow-color-rgb: 112 38 223;--aspect-ratio: 16 / 9;--card-border-radius: 1.25rem;--image-border-radius: 1rem;--transition-duration: .3s;--transition-timing: cubic-bezier(.4, 0, .2, 1);display:block}.glow-card{position:relative;display:flex;flex-direction:column;background:var(--ion-background-color, #ffffff);border-radius:var(--card-border-radius);overflow:hidden;cursor:pointer;transition:transform var(--transition-duration) var(--transition-timing),box-shadow var(--transition-duration) var(--transition-timing)}.glow-card__image-container{position:relative;width:calc(100% - 1.5rem);aspect-ratio:var(--aspect-ratio);overflow:hidden;border-radius:var(--image-border-radius);margin:.75rem;margin-bottom:0}.glow-card__image{width:100%;height:100%;object-fit:cover;border-radius:var(--image-border-radius);transition:transform var(--transition-duration) var(--transition-timing)}.glow-card__content{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:.5rem}.glow-card__title{margin:0;font-size:1.125rem;font-weight:700;line-height:1.3;color:var(--ion-color-darki, var(--ion-text-color, #000))}.glow-card__description{margin:0;font-size:.875rem;line-height:1.5;color:var(--ion-color-texti, var(--ion-color-medium, #666));display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.glow-card__cta{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.25rem 0;text-decoration:none;color:var(--glow-color);font-weight:600;font-size:.875rem;transition:gap var(--transition-duration) var(--transition-timing)}.glow-card__cta:hover{gap:.5rem}.glow-card__cta-text{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;transition:max-width var(--transition-duration) var(--transition-timing),opacity var(--transition-duration) var(--transition-timing)}.glow-card__cta-icon{font-size:1.25rem;flex-shrink:0;transition:transform var(--transition-duration) var(--transition-timing)}.glow-card:hover{transform:translateY(-.25rem)}.glow-card:hover .glow-card__image{transform:scale(1.08)}.glow-card:hover .glow-card__cta-text{max-width:12.5rem;opacity:1}.glow-card:hover .glow-card__cta-icon{transform:translate(.125rem)}.glow-card.glow-enabled:hover{box-shadow:0 .25rem .75rem #00000014,0 .5rem 1.5rem #0000001a,0 .25rem 1.25rem rgb(var(--glow-color-rgb)/.15)}.glow-card.glow-enabled.glow-subtle:hover{box-shadow:0 .25rem .75rem #0000000f,0 .375rem 1rem #00000014,0 .125rem .75rem rgb(var(--glow-color-rgb)/.1)}.glow-card.glow-enabled.glow-medium:hover{box-shadow:0 .375rem 1rem #00000014,0 .75rem 2rem #0000001a,0 .375rem 1.5rem rgb(var(--glow-color-rgb)/.2)}.glow-card.glow-enabled.glow-intense:hover{box-shadow:0 .5rem 1.25rem #00000014,0 1rem 2.5rem #0000001a,0 .5rem 2rem rgb(var(--glow-color-rgb)/.3)}.glow-card.glow-enabled.dark-mode:hover{box-shadow:0 0 1.25rem rgb(var(--glow-color-rgb)/.25),0 0 2.5rem rgb(var(--glow-color-rgb)/.18),0 0 3.75rem rgb(var(--glow-color-rgb)/.12)}.glow-card.glow-enabled.dark-mode.glow-subtle:hover{box-shadow:0 0 .75rem rgb(var(--glow-color-rgb)/.18),0 0 1.5rem rgb(var(--glow-color-rgb)/.12)}.glow-card.glow-enabled.dark-mode.glow-medium:hover{box-shadow:0 0 1.5rem rgb(var(--glow-color-rgb)/.3),0 0 3rem rgb(var(--glow-color-rgb)/.22),0 0 4.5rem rgb(var(--glow-color-rgb)/.15)}.glow-card.glow-enabled.dark-mode.glow-intense:hover{box-shadow:0 0 2rem rgb(var(--glow-color-rgb)/.4),0 0 4rem rgb(var(--glow-color-rgb)/.3),0 0 6rem rgb(var(--glow-color-rgb)/.2)}.glow-card.dark-mode{background:var(--ion-card-background, #1e1e1e)}.glow-card.bordered{border:.0625rem solid var(--border-color, var(--ion-color-medium))}@media (max-width: 768px){.glow-card{--card-border-radius: 1rem;--image-border-radius: .75rem}.glow-card__content{padding:.75rem 1rem 1rem}.glow-card__title{font-size:1rem}.glow-card__description{font-size:.8125rem;-webkit-line-clamp:2}}@media (prefers-reduced-motion: reduce){.glow-card,.glow-card__image,.glow-card__cta,.glow-card__cta-text,.glow-card__cta-icon{transition:none}.glow-card:hover,.glow-card:hover .glow-card__image{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
194
+ `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}:host{--glow-color: var(--ion-color-primary);--glow-color-rgb: 112 38 223;--aspect-ratio: 16 / 9;--card-border-radius: 1.25rem;--image-border-radius: 1rem;--transition-duration: .3s;--transition-timing: cubic-bezier(.4, 0, .2, 1);display:block}.glow-card{position:relative;display:flex;flex-direction:column;background:var(--ion-background-color, #ffffff);border-radius:var(--card-border-radius);overflow:hidden;cursor:pointer;transition:transform var(--transition-duration) var(--transition-timing),box-shadow var(--transition-duration) var(--transition-timing)}.glow-card__image-container{position:relative;width:calc(100% - 1.5rem);aspect-ratio:var(--aspect-ratio);overflow:hidden;border-radius:var(--image-border-radius);margin:.75rem;margin-bottom:0}.glow-card__image{width:100%;height:100%;object-fit:cover;border-radius:var(--image-border-radius);transition:transform var(--transition-duration) var(--transition-timing)}.glow-card__content{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:.5rem}.glow-card__title{margin:0;font-size:1.125rem;font-weight:700;line-height:1.3;color:var(--ion-color-darki, var(--ion-text-color, #000))}.glow-card__description{margin:0;font-size:.875rem;line-height:1.5;color:var(--ion-color-texti, var(--ion-color-medium, #666));display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.glow-card__cta{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.25rem 0;text-decoration:none;color:var(--glow-color);font-weight:600;font-size:.875rem;transition:gap var(--transition-duration) var(--transition-timing)}.glow-card__cta:hover{gap:.5rem}.glow-card__cta-text{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;transition:max-width var(--transition-duration) var(--transition-timing),opacity var(--transition-duration) var(--transition-timing)}.glow-card__cta-icon{font-size:1.25rem;flex-shrink:0;transition:transform var(--transition-duration) var(--transition-timing)}.glow-card:hover{transform:translateY(-.25rem)}.glow-card:hover .glow-card__image{transform:scale(1.08)}.glow-card:hover .glow-card__cta-text{max-width:12.5rem;opacity:1}.glow-card:hover .glow-card__cta-icon{transform:translate(.125rem)}.glow-card.glow-enabled:hover{box-shadow:0 .25rem .75rem #00000014,0 .5rem 1.5rem #0000001a,0 .25rem 1.25rem rgb(var(--glow-color-rgb)/.15)}.glow-card.glow-enabled.glow-subtle:hover{box-shadow:0 .25rem .75rem #0000000f,0 .375rem 1rem #00000014,0 .125rem .75rem rgb(var(--glow-color-rgb)/.1)}.glow-card.glow-enabled.glow-medium:hover{box-shadow:0 .375rem 1rem #00000014,0 .75rem 2rem #0000001a,0 .375rem 1.5rem rgb(var(--glow-color-rgb)/.2)}.glow-card.glow-enabled.glow-intense:hover{box-shadow:0 .5rem 1.25rem #00000014,0 1rem 2.5rem #0000001a,0 .5rem 2rem rgb(var(--glow-color-rgb)/.3)}.glow-card.glow-enabled.dark-mode:hover{box-shadow:0 0 1.25rem rgb(var(--glow-color-rgb)/.25),0 0 2.5rem rgb(var(--glow-color-rgb)/.18),0 0 3.75rem rgb(var(--glow-color-rgb)/.12)}.glow-card.glow-enabled.dark-mode.glow-subtle:hover{box-shadow:0 0 .75rem rgb(var(--glow-color-rgb)/.18),0 0 1.5rem rgb(var(--glow-color-rgb)/.12)}.glow-card.glow-enabled.dark-mode.glow-medium:hover{box-shadow:0 0 1.5rem rgb(var(--glow-color-rgb)/.3),0 0 3rem rgb(var(--glow-color-rgb)/.22),0 0 4.5rem rgb(var(--glow-color-rgb)/.15)}.glow-card.glow-enabled.dark-mode.glow-intense:hover{box-shadow:0 0 2rem rgb(var(--glow-color-rgb)/.4),0 0 4rem rgb(var(--glow-color-rgb)/.3),0 0 6rem rgb(var(--glow-color-rgb)/.2)}.glow-card.dark-mode{background:var(--ion-card-background, #1e1e1e)}.glow-card.bordered{border:.0625rem solid var(--border-color, var(--ion-color-medium))}@media (max-width: 768px){.glow-card{--card-border-radius: 1rem;--image-border-radius: .75rem}.glow-card__content{padding:.75rem 1rem 1rem}.glow-card__title{font-size:1rem}.glow-card__description{font-size:.8125rem;-webkit-line-clamp:2}}@media (prefers-reduced-motion: reduce){.glow-card,.glow-card__image,.glow-card__cta,.glow-card__cta-text,.glow-card__cta-icon{transition:none}.glow-card:hover,.glow-card:hover .glow-card__image{transform:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
219
195
  }
220
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlowCardComponent, decorators: [{
221
197
  type: Component,
@@ -248,12 +224,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
248
224
  <div class="glow-card__content">
249
225
  <!-- Title -->
250
226
  <h3 class="glow-card__title">
251
- {{ title$ | async }}
227
+ {{ getTitle() }}
252
228
  </h3>
253
229
 
254
230
  <!-- Description -->
255
231
  <p class="glow-card__description">
256
- {{ description$ | async }}
232
+ {{ getDescription() }}
257
233
  </p>
258
234
 
259
235
  <!-- CTA Link with expanding animation -->
@@ -262,7 +238,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
262
238
  [href]="props.cta.url"
263
239
  (click)="onCtaClick($event)"
264
240
  >
265
- <span class="glow-card__cta-text">{{ ctaText$ | async }}</span>
241
+ <span class="glow-card__cta-text">{{ getCtaText() }}</span>
266
242
  <ion-icon
267
243
  class="glow-card__cta-icon"
268
244
  [name]="props.cta.icon || 'arrow-forward-outline'"
@@ -276,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
276
252
  }], onClick: [{
277
253
  type: Output
278
254
  }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvdy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZ2xvdy1jYXJkL2dsb3ctY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBRy9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQTJESCxNQUFNLE9BQU8saUJBQWlCO0lBMkI1QjtRQXRCQSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFFekMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUMsV0FBTSxHQUF1QixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEMsaUJBQVksR0FBdUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGFBQVEsR0FBdUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXJCLGdCQUFXLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9ILG9FQUFvRTtRQUNuRCxnQkFBVyxHQUEyQjtZQUNyRCxPQUFPLEVBQUUsWUFBWTtZQUNyQixTQUFTLEVBQUUsYUFBYTtZQUN4QixRQUFRLEVBQUUsV0FBVztZQUNyQixPQUFPLEVBQUUsWUFBWTtZQUNyQixPQUFPLEVBQUUsV0FBVztZQUNwQixNQUFNLEVBQUUsV0FBVztTQUNwQixDQUFDO1FBR0EsUUFBUSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVPLGlCQUFpQjtRQUN2Qiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN6QixDQUFDO1FBQ0osQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLENBQUM7UUFDSixDQUFDO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksRUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQy9CLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTywwQkFBMEIsQ0FBQztRQUNwQyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFlLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sbUJBQW1CLEtBQUssR0FBRyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPLEtBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLFlBQVksQ0FBQyxDQUFDLGtEQUFrRDtRQUN6RSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFlLENBQUMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBZSxDQUFDLENBQUM7WUFDOUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ2xDLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sTUFBTSxHQUFHLDJDQUEyQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsb0RBQW9EO1lBQ3BELE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzVGLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sUUFBUSxHQUEyQjtZQUN2QyxNQUFNLEVBQUUsUUFBUTtZQUNoQixLQUFLLEVBQUUsT0FBTztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLHlCQUF5QixDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQWUsQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTyxtQkFBbUIsS0FBSyxHQUFHLENBQUM7UUFDckMsQ0FBQztRQUVELE9BQU8sS0FBZSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSyxLQUFLLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsRUFBRSxDQUFDO1lBQ2hGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFpQjtRQUM1QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFpQjtRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztTQUN4QixDQUFDLENBQUM7UUFFSCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pELE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOytHQTVLVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzSUF0RGxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsdWxOQXBEUyxZQUFZLG9GQUFFLE9BQU87OzRGQXVEcEIsaUJBQWlCO2tCQTFEN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURUO3dEQUtELEtBQUs7c0JBREosS0FBSztnQkFJTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFycm93Rm9yd2FyZE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL2xhbmctcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdsb3dDYXJkQ2xpY2tFdmVudCwgR2xvd0NhcmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1nbG93LWNhcmRcbiAqXG4gKiBBIGNhcmQgY29tcG9uZW50IGZlYXR1cmluZyBhbiBpbWFnZSB3aXRoIHpvb20tb24taG92ZXIsIGFuaW1hdGVkIENUQSBsaW5rLFxuICogYW5kIGR5bmFtaWMgZ2xvdyBlZmZlY3QgdGhhdCBhZGFwdHMgdG8gbGlnaHQvZGFyayBtb2RlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWdsb3ctY2FyZFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGltYWdlU3JjOiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9pbWFnZS5qcGcnLFxuICogICAgIGltYWdlQWx0OiAnRXhhbXBsZSBpbWFnZScsXG4gKiAgICAgdGl0bGU6ICdDYXJkIFRpdGxlJyxcbiAqICAgICBkZXNjcmlwdGlvbjogJ0NhcmQgZGVzY3JpcHRpb24gdGV4dCcsXG4gKiAgICAgY3RhOiB7IHRleHQ6ICdMZWFybiBNb3JlJywgdXJsOiAnL2RldGFpbHMnLCB0eXBlOiAnaW50ZXJuYWwnIH1cbiAqICAgfVwiXG4gKiAgIChvbkNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIlxuICogPjwvdmFsLWdsb3ctY2FyZD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEdsb3dDYXJkTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FyZFxuICogQG91dHB1dCBvbkNsaWNrIC0gRW1pdHMgR2xvd0NhcmRDbGlja0V2ZW50IHdoZW4gY2FyZCwgaW1hZ2UsIG9yIENUQSBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1nbG93LWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXJ0aWNsZVxuICAgICAgY2xhc3M9XCJnbG93LWNhcmRcIlxuICAgICAgW2NsYXNzLmdsb3ctZW5hYmxlZF09XCJwcm9wcy5nbG93Py5lbmFibGVkICE9PSBmYWxzZVwiXG4gICAgICBbY2xhc3MuZ2xvdy1zdWJ0bGVdPVwicHJvcHMuZ2xvdz8uaW50ZW5zaXR5ID09PSAnc3VidGxlJ1wiXG4gICAgICBbY2xhc3MuZ2xvdy1tZWRpdW1dPVwiIXByb3BzLmdsb3c/LmludGVuc2l0eSB8fCBwcm9wcy5nbG93Py5pbnRlbnNpdHkgPT09ICdtZWRpdW0nXCJcbiAgICAgIFtjbGFzcy5nbG93LWludGVuc2VdPVwicHJvcHMuZ2xvdz8uaW50ZW5zaXR5ID09PSAnaW50ZW5zZSdcIlxuICAgICAgW2NsYXNzLmRhcmstbW9kZV09XCJpc0RhcmtcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtzdHlsZS4tLWdsb3ctY29sb3JdPVwiZ2V0R2xvd0NvbG9yKClcIlxuICAgICAgW3N0eWxlLi0tZ2xvdy1jb2xvci1yZ2JdPVwiZ2V0R2xvd0NvbG9yUmdiKClcIlxuICAgICAgW3N0eWxlLi0tYXNwZWN0LXJhdGlvXT1cImdldEFzcGVjdFJhdGlvVmFsdWUoKVwiXG4gICAgICBbc3R5bGUuLS1ib3JkZXItY29sb3JdPVwiZ2V0Qm9yZGVyQ29sb3IoKVwiXG4gICAgICAoY2xpY2spPVwib25DYXJkQ2xpY2soJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPCEtLSBJbWFnZSBDb250YWluZXIgd2l0aCBvdmVyZmxvdyBoaWRkZW4gZm9yIHpvb20gZWZmZWN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdsb3ctY2FyZF9faW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBjbGFzcz1cImdsb3ctY2FyZF9faW1hZ2VcIlxuICAgICAgICAgIFtzcmNdPVwicHJvcHMuaW1hZ2VTcmNcIlxuICAgICAgICAgIFthbHRdPVwicHJvcHMuaW1hZ2VBbHRcIlxuICAgICAgICAgIChjbGljayk9XCJvbkltYWdlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDb250ZW50IFNlY3Rpb24gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ2xvdy1jYXJkX19jb250ZW50XCI+XG4gICAgICAgIDwhLS0gVGl0bGUgLS0+XG4gICAgICAgIDxoMyBjbGFzcz1cImdsb3ctY2FyZF9fdGl0bGVcIj5cbiAgICAgICAgICB7eyB0aXRsZSQgfCBhc3luYyB9fVxuICAgICAgICA8L2gzPlxuXG4gICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgIDxwIGNsYXNzPVwiZ2xvdy1jYXJkX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHt7IGRlc2NyaXB0aW9uJCB8IGFzeW5jIH19XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8IS0tIENUQSBMaW5rIHdpdGggZXhwYW5kaW5nIGFuaW1hdGlvbiAtLT5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImdsb3ctY2FyZF9fY3RhXCJcbiAgICAgICAgICBbaHJlZl09XCJwcm9wcy5jdGEudXJsXCJcbiAgICAgICAgICAoY2xpY2spPVwib25DdGFDbGljaygkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2xvdy1jYXJkX19jdGEtdGV4dFwiPnt7IGN0YVRleHQkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPGlvbi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImdsb3ctY2FyZF9fY3RhLWljb25cIlxuICAgICAgICAgICAgW25hbWVdPVwicHJvcHMuY3RhLmljb24gfHwgJ2Fycm93LWZvcndhcmQtb3V0bGluZSdcIlxuICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2FydGljbGU+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2dsb3ctY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHbG93Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByb3BzITogR2xvd0NhcmRNZXRhZGF0YTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R2xvd0NhcmRDbGlja0V2ZW50PigpO1xuXG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSBpbmplY3QoTGFuZ1NlcnZpY2UpO1xuICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICB0aXRsZSQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IG9mKCcnKTtcbiAgZGVzY3JpcHRpb24kOiBPYnNlcnZhYmxlPHN0cmluZz4gPSBvZignJyk7XG4gIGN0YVRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSBvZignJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb25pY0NvbG9ycyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcicsICdsaWdodCcsICdtZWRpdW0nLCAnZGFyayddO1xuXG4gIC8vIFJHQiB2YWx1ZXMgd2l0aCBTUEFDRSBzZXBhcmF0b3IgZm9yIENTUyByZ2IodmFyKCkgLyBhbHBoYSkgc3ludGF4XG4gIHByaXZhdGUgcmVhZG9ubHkgY29sb3JSZ2JNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgcHJpbWFyeTogJzExMiAzOCAyMjMnLFxuICAgIHNlY29uZGFyeTogJzIyNiAyMDQgMjU1JyxcbiAgICB0ZXJ0aWFyeTogJzgyIDk2IDI1NScsXG4gICAgc3VjY2VzczogJzQ1IDIxMSAxMTEnLFxuICAgIHdhcm5pbmc6ICcyNTUgMTk2IDknLFxuICAgIGRhbmdlcjogJzIzNSA2OCA5MCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoeyBhcnJvd0ZvcndhcmRPdXRsaW5lIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICB9XG5cbiAgZ2V0IGlzRGFyaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZVNlcnZpY2UuSXNEYXJrO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICAvLyBUaXRsZTogc3RhdGljIG9yIHJlYWN0aXZlXG4gICAgaWYgKHRoaXMucHJvcHMudGl0bGUpIHtcbiAgICAgIHRoaXMudGl0bGUkID0gb2YodGhpcy5wcm9wcy50aXRsZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnRpdGxlS2V5ICYmIHRoaXMucHJvcHMudGl0bGVDbGFzcykge1xuICAgICAgdGhpcy50aXRsZSQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldENvbnRlbnQoXG4gICAgICAgIHRoaXMucHJvcHMudGl0bGVDbGFzcyxcbiAgICAgICAgdGhpcy5wcm9wcy50aXRsZUtleSxcbiAgICAgICAgdGhpcy5wcm9wcy50aXRsZUZhbGxiYWNrXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERlc2NyaXB0aW9uOiBzdGF0aWMgb3IgcmVhY3RpdmVcbiAgICBpZiAodGhpcy5wcm9wcy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbiQgPSBvZih0aGlzLnByb3BzLmRlc2NyaXB0aW9uKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuZGVzY3JpcHRpb25LZXkgJiYgdGhpcy5wcm9wcy5kZXNjcmlwdGlvbkNsYXNzKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uJCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0Q29udGVudChcbiAgICAgICAgdGhpcy5wcm9wcy5kZXNjcmlwdGlvbkNsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLmRlc2NyaXB0aW9uS2V5LFxuICAgICAgICB0aGlzLnByb3BzLmRlc2NyaXB0aW9uRmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ1RBIFRleHQ6IHN0YXRpYyBvciByZWFjdGl2ZVxuICAgIGlmICh0aGlzLnByb3BzLmN0YS50ZXh0KSB7XG4gICAgICB0aGlzLmN0YVRleHQkID0gb2YodGhpcy5wcm9wcy5jdGEudGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmN0YS5jb250ZW50S2V5ICYmIHRoaXMucHJvcHMuY3RhLmNvbnRlbnRDbGFzcykge1xuICAgICAgdGhpcy5jdGFUZXh0JCA9IHRoaXMubGFuZ1NlcnZpY2UuZ2V0Q29udGVudChcbiAgICAgICAgdGhpcy5wcm9wcy5jdGEuY29udGVudENsYXNzLFxuICAgICAgICB0aGlzLnByb3BzLmN0YS5jb250ZW50S2V5LFxuICAgICAgICB0aGlzLnByb3BzLmN0YS5jb250ZW50RmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0R2xvd0NvbG9yKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnByb3BzLmdsb3c/LmNvbG9yO1xuICAgIGlmICghY29sb3IpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xvciBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXRHbG93Q29sb3JSZ2IoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMucHJvcHMuZ2xvdz8uY29sb3I7XG4gICAgaWYgKCFjb2xvcikge1xuICAgICAgcmV0dXJuICcxMTIgMzggMjIzJzsgLy8gRGVmYXVsdCBwcmltYXJ5IGNvbG9yIChzcGFjZS1zZXBhcmF0ZWQgZm9yIENTUylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICBjb25zdCByZ2IgPSB0aGlzLmNvbG9yUmdiTWFwW2NvbG9yIGFzIHN0cmluZ107XG4gICAgICByZXR1cm4gcmdiID8gcmdiIDogJzExMiAzOCAyMjMnO1xuICAgIH1cblxuICAgIC8vIEZvciBjdXN0b20gaGV4IGNvbG9ycywgdHJ5IHRvIGNvbnZlcnRcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJyAmJiBjb2xvci5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJzExMiAzOCAyMjMnO1xuICB9XG5cbiAgcHJpdmF0ZSBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgLy8gU3BhY2Utc2VwYXJhdGVkIGZvciBDU1MgcmdiKHZhcigpIC8gYWxwaGEpIHN5bnRheFxuICAgICAgcmV0dXJuIGAke3BhcnNlSW50KHJlc3VsdFsxXSwgMTYpfSAke3BhcnNlSW50KHJlc3VsdFsyXSwgMTYpfSAke3BhcnNlSW50KHJlc3VsdFszXSwgMTYpfWA7XG4gICAgfVxuICAgIHJldHVybiAnMTEyIDM4IDIyMyc7XG4gIH1cblxuICBnZXRBc3BlY3RSYXRpb1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmF0aW9NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnMTY6OSc6ICcxNiAvIDknLFxuICAgICAgJzQ6Myc6ICc0IC8gMycsXG4gICAgICAnMToxJzogJzEgLyAxJyxcbiAgICAgICczOjInOiAnMyAvIDInLFxuICAgICAgJzIxOjknOiAnMjEgLyA5JyxcbiAgICB9O1xuICAgIHJldHVybiByYXRpb01hcFt0aGlzLnByb3BzLmFzcGVjdFJhdGlvIHx8ICcxNjo5J107XG4gIH1cblxuICBnZXRCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy5ib3JkZXJDb2xvcjtcbiAgICBpZiAoIWNvbG9yKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1tZWRpdW0pJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xvciBhcyBzdHJpbmc7XG4gIH1cblxuICBvbkNhcmRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ2xvdy1jYXJkX19jdGEsIC5nbG93LWNhcmRfX2ltYWdlJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoeyB0YXJnZXQ6ICdjYXJkJywgdG9rZW46IHRoaXMucHJvcHMudG9rZW4gfSk7XG4gIH1cblxuICBvbkltYWdlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IHRhcmdldDogJ2ltYWdlJywgdG9rZW46IHRoaXMucHJvcHMudG9rZW4gfSk7XG4gIH1cblxuICBvbkN0YUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgIHRhcmdldDogJ2N0YScsXG4gICAgICB0b2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIHVybDogdGhpcy5wcm9wcy5jdGEudXJsLFxuICAgIH0pO1xuXG4gICAgc3dpdGNoICh0aGlzLnByb3BzLmN0YS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVCeVVybCh0aGlzLnByb3BzLmN0YS51cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jyb3dzZSc6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVJbkFwcCh0aGlzLnByb3BzLmN0YS51cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uub3BlbkluTmV3VGFiKHRoaXMucHJvcHMuY3RhLnVybCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvdy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZ2xvdy1jYXJkL2dsb3ctY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBMkRILE1BQU0sT0FBTyxpQkFBaUI7SUFzQjVCO1FBakJBLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUV6QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUzQixnQkFBVyxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvSCxvRUFBb0U7UUFDbkQsZ0JBQVcsR0FBMkI7WUFDckQsT0FBTyxFQUFFLFlBQVk7WUFDckIsU0FBUyxFQUFFLGFBQWE7WUFD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S0FBSztZQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRztTQUN4QixDQUFDLENBQUM7UUFFSCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pELE1BQU07WUFDUixLQUFLLEtBQUs7Z0JBQ1IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDOytHQTVJVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixzSUF0RGxCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsdWxOQXBEUyxZQUFZLCtCQUFFLE9BQU87OzRGQXVEcEIsaUJBQWlCO2tCQTFEN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURUO3dEQUtELEtBQUs7c0JBREosS0FBSztnQkFJTixPQUFPO3NCQUROLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhcnJvd0ZvcndhcmRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBHbG93Q2FyZENsaWNrRXZlbnQsIEdsb3dDYXJkTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZ2xvdy1jYXJkXG4gKlxuICogQSBjYXJkIGNvbXBvbmVudCBmZWF0dXJpbmcgYW4gaW1hZ2Ugd2l0aCB6b29tLW9uLWhvdmVyLCBhbmltYXRlZCBDVEEgbGluayxcbiAqIGFuZCBkeW5hbWljIGdsb3cgZWZmZWN0IHRoYXQgYWRhcHRzIHRvIGxpZ2h0L2RhcmsgbW9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1nbG93LWNhcmRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBpbWFnZVNyYzogJ2h0dHBzOi8vZXhhbXBsZS5jb20vaW1hZ2UuanBnJyxcbiAqICAgICBpbWFnZUFsdDogJ0V4YW1wbGUgaW1hZ2UnLFxuICogICAgIHRpdGxlOiAnQ2FyZCBUaXRsZScsXG4gKiAgICAgZGVzY3JpcHRpb246ICdDYXJkIGRlc2NyaXB0aW9uIHRleHQnLFxuICogICAgIGN0YTogeyB0ZXh0OiAnTGVhcm4gTW9yZScsIHVybDogJy9kZXRhaWxzJywgdHlwZTogJ2ludGVybmFsJyB9XG4gKiAgIH1cIlxuICogICAob25DbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAqID48L3ZhbC1nbG93LWNhcmQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBHbG93Q2FyZE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNhcmRcbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRzIEdsb3dDYXJkQ2xpY2tFdmVudCB3aGVuIGNhcmQsIGltYWdlLCBvciBDVEEgaXMgY2xpY2tlZFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZ2xvdy1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbl0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGFydGljbGVcbiAgICAgIGNsYXNzPVwiZ2xvdy1jYXJkXCJcbiAgICAgIFtjbGFzcy5nbG93LWVuYWJsZWRdPVwicHJvcHMuZ2xvdz8uZW5hYmxlZCAhPT0gZmFsc2VcIlxuICAgICAgW2NsYXNzLmdsb3ctc3VidGxlXT1cInByb3BzLmdsb3c/LmludGVuc2l0eSA9PT0gJ3N1YnRsZSdcIlxuICAgICAgW2NsYXNzLmdsb3ctbWVkaXVtXT1cIiFwcm9wcy5nbG93Py5pbnRlbnNpdHkgfHwgcHJvcHMuZ2xvdz8uaW50ZW5zaXR5ID09PSAnbWVkaXVtJ1wiXG4gICAgICBbY2xhc3MuZ2xvdy1pbnRlbnNlXT1cInByb3BzLmdsb3c/LmludGVuc2l0eSA9PT0gJ2ludGVuc2UnXCJcbiAgICAgIFtjbGFzcy5kYXJrLW1vZGVdPVwiaXNEYXJrXCJcbiAgICAgIFtjbGFzcy5ib3JkZXJlZF09XCJwcm9wcy5ib3JkZXJlZFwiXG4gICAgICBbc3R5bGUuLS1nbG93LWNvbG9yXT1cImdldEdsb3dDb2xvcigpXCJcbiAgICAgIFtzdHlsZS4tLWdsb3ctY29sb3ItcmdiXT1cImdldEdsb3dDb2xvclJnYigpXCJcbiAgICAgIFtzdHlsZS4tLWFzcGVjdC1yYXRpb109XCJnZXRBc3BlY3RSYXRpb1ZhbHVlKClcIlxuICAgICAgW3N0eWxlLi0tYm9yZGVyLWNvbG9yXT1cImdldEJvcmRlckNvbG9yKClcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2FyZENsaWNrKCRldmVudClcIlxuICAgID5cbiAgICAgIDwhLS0gSW1hZ2UgQ29udGFpbmVyIHdpdGggb3ZlcmZsb3cgaGlkZGVuIGZvciB6b29tIGVmZmVjdCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJnbG93LWNhcmRfX2ltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgY2xhc3M9XCJnbG93LWNhcmRfX2ltYWdlXCJcbiAgICAgICAgICBbc3JjXT1cInByb3BzLmltYWdlU3JjXCJcbiAgICAgICAgICBbYWx0XT1cInByb3BzLmltYWdlQWx0XCJcbiAgICAgICAgICAoY2xpY2spPVwib25JbWFnZUNsaWNrKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ29udGVudCBTZWN0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImdsb3ctY2FyZF9fY29udGVudFwiPlxuICAgICAgICA8IS0tIFRpdGxlIC0tPlxuICAgICAgICA8aDMgY2xhc3M9XCJnbG93LWNhcmRfX3RpdGxlXCI+XG4gICAgICAgICAge3sgZ2V0VGl0bGUoKSB9fVxuICAgICAgICA8L2gzPlxuXG4gICAgICAgIDwhLS0gRGVzY3JpcHRpb24gLS0+XG4gICAgICAgIDxwIGNsYXNzPVwiZ2xvdy1jYXJkX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHt7IGdldERlc2NyaXB0aW9uKCkgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDwhLS0gQ1RBIExpbmsgd2l0aCBleHBhbmRpbmcgYW5pbWF0aW9uIC0tPlxuICAgICAgICA8YVxuICAgICAgICAgIGNsYXNzPVwiZ2xvdy1jYXJkX19jdGFcIlxuICAgICAgICAgIFtocmVmXT1cInByb3BzLmN0YS51cmxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkN0YUNsaWNrKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbG93LWNhcmRfX2N0YS10ZXh0XCI+e3sgZ2V0Q3RhVGV4dCgpIH19PC9zcGFuPlxuICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgY2xhc3M9XCJnbG93LWNhcmRfX2N0YS1pY29uXCJcbiAgICAgICAgICAgIFtuYW1lXT1cInByb3BzLmN0YS5pY29uIHx8ICdhcnJvdy1mb3J3YXJkLW91dGxpbmUnXCJcbiAgICAgICAgICA+PC9pb24taWNvbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9hcnRpY2xlPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9nbG93LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2xvd0NhcmRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBwcm9wcyE6IEdsb3dDYXJkTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdsb3dDYXJkQ2xpY2tFdmVudD4oKTtcblxuICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0aGVtZVNlcnZpY2UgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlvbmljQ29sb3JzID0gWydwcmltYXJ5JywgJ3NlY29uZGFyeScsICd0ZXJ0aWFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnLCAnZGFuZ2VyJywgJ2xpZ2h0JywgJ21lZGl1bScsICdkYXJrJ107XG5cbiAgLy8gUkdCIHZhbHVlcyB3aXRoIFNQQUNFIHNlcGFyYXRvciBmb3IgQ1NTIHJnYih2YXIoKSAvIGFscGhhKSBzeW50YXhcbiAgcHJpdmF0ZSByZWFkb25seSBjb2xvclJnYk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBwcmltYXJ5OiAnMTEyIDM4IDIyMycsXG4gICAgc2Vjb25kYXJ5OiAnMjI2IDIwNCAyNTUnLFxuICAgIHRlcnRpYXJ5OiAnODIgOTYgMjU1JyxcbiAgICBzdWNjZXNzOiAnNDUgMjExIDExMScsXG4gICAgd2FybmluZzogJzI1NSAxOTYgOScsXG4gICAgZGFuZ2VyOiAnMjM1IDY4IDkwJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGFycm93Rm9yd2FyZE91dGxpbmUgfSk7XG4gIH1cblxuICBnZXQgaXNEYXJrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRoZW1lU2VydmljZS5Jc0Rhcms7XG4gIH1cblxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnRpdGxlIHx8IHRoaXMucHJvcHMudGl0bGVGYWxsYmFjayB8fCAnJztcbiAgfVxuXG4gIGdldERlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVzY3JpcHRpb24gfHwgdGhpcy5wcm9wcy5kZXNjcmlwdGlvbkZhbGxiYWNrIHx8ICcnO1xuICB9XG5cbiAgZ2V0Q3RhVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmN0YS50ZXh0IHx8IHRoaXMucHJvcHMuY3RhLmNvbnRlbnRGYWxsYmFjayB8fCAnVmVyIG3DoXMnO1xuICB9XG5cbiAgZ2V0R2xvd0NvbG9yKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLnByb3BzLmdsb3c/LmNvbG9yO1xuICAgIGlmICghY29sb3IpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xvciBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXRHbG93Q29sb3JSZ2IoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2xvciA9IHRoaXMucHJvcHMuZ2xvdz8uY29sb3I7XG4gICAgaWYgKCFjb2xvcikge1xuICAgICAgcmV0dXJuICcxMTIgMzggMjIzJzsgLy8gRGVmYXVsdCBwcmltYXJ5IGNvbG9yIChzcGFjZS1zZXBhcmF0ZWQgZm9yIENTUylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICBjb25zdCByZ2IgPSB0aGlzLmNvbG9yUmdiTWFwW2NvbG9yIGFzIHN0cmluZ107XG4gICAgICByZXR1cm4gcmdiID8gcmdiIDogJzExMiAzOCAyMjMnO1xuICAgIH1cblxuICAgIC8vIEZvciBjdXN0b20gaGV4IGNvbG9ycywgdHJ5IHRvIGNvbnZlcnRcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJyAmJiBjb2xvci5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJzExMiAzOCAyMjMnO1xuICB9XG5cbiAgcHJpdmF0ZSBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgLy8gU3BhY2Utc2VwYXJhdGVkIGZvciBDU1MgcmdiKHZhcigpIC8gYWxwaGEpIHN5bnRheFxuICAgICAgcmV0dXJuIGAke3BhcnNlSW50KHJlc3VsdFsxXSwgMTYpfSAke3BhcnNlSW50KHJlc3VsdFsyXSwgMTYpfSAke3BhcnNlSW50KHJlc3VsdFszXSwgMTYpfWA7XG4gICAgfVxuICAgIHJldHVybiAnMTEyIDM4IDIyMyc7XG4gIH1cblxuICBnZXRBc3BlY3RSYXRpb1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmF0aW9NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnMTY6OSc6ICcxNiAvIDknLFxuICAgICAgJzQ6Myc6ICc0IC8gMycsXG4gICAgICAnMToxJzogJzEgLyAxJyxcbiAgICAgICczOjInOiAnMyAvIDInLFxuICAgICAgJzIxOjknOiAnMjEgLyA5JyxcbiAgICB9O1xuICAgIHJldHVybiByYXRpb01hcFt0aGlzLnByb3BzLmFzcGVjdFJhdGlvIHx8ICcxNjo5J107XG4gIH1cblxuICBnZXRCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5wcm9wcy5ib3JkZXJDb2xvcjtcbiAgICBpZiAoIWNvbG9yKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1tZWRpdW0pJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pb25pY0NvbG9ycy5pbmNsdWRlcyhjb2xvciBhcyBzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgO1xuICAgIH1cblxuICAgIHJldHVybiBjb2xvciBhcyBzdHJpbmc7XG4gIH1cblxuICBvbkNhcmRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcuZ2xvdy1jYXJkX19jdGEsIC5nbG93LWNhcmRfX2ltYWdlJykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoeyB0YXJnZXQ6ICdjYXJkJywgdG9rZW46IHRoaXMucHJvcHMudG9rZW4gfSk7XG4gIH1cblxuICBvbkltYWdlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IHRhcmdldDogJ2ltYWdlJywgdG9rZW46IHRoaXMucHJvcHMudG9rZW4gfSk7XG4gIH1cblxuICBvbkN0YUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgIHRhcmdldDogJ2N0YScsXG4gICAgICB0b2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIHVybDogdGhpcy5wcm9wcy5jdGEudXJsLFxuICAgIH0pO1xuXG4gICAgc3dpdGNoICh0aGlzLnByb3BzLmN0YS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlcm5hbCc6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVCeVVybCh0aGlzLnByb3BzLmN0YS51cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jyb3dzZSc6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2UubmF2aWdhdGVJbkFwcCh0aGlzLnByb3BzLmN0YS51cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgIHRoaXMubmF2aWdhdGlvblNlcnZpY2Uub3BlbkluTmV3VGFiKHRoaXMucHJvcHMuY3RhLnVybCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,163 +1,68 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
3
  import { addIcons } from 'ionicons';
4
- import { globe, language } from 'ionicons/icons';
5
- import { Subscription, combineLatest, of } from 'rxjs';
6
- import { map } from 'rxjs/operators';
4
+ import { language } from 'ionicons/icons';
5
+ import { LocaleService } from '../../../services/locale.service';
7
6
  import { PopoverSelectorComponent } from '../popover-selector/popover-selector.component';
8
7
  import * as i0 from "@angular/core";
9
- import * as i1 from "../../../services/lang-provider/lang-provider.service";
10
8
  /**
11
9
  * val-language-selector
12
10
  *
13
- * A specialized language selector component that integrates with the LangService.
14
- * Uses the popover-selector component internally and provides language-specific functionality.
11
+ * A language selector component that uses LocaleService.
12
+ * When the language changes, the page will reload.
15
13
  *
16
14
  * @example
17
- * // Basic usage (auto-detects languages from LangService)
18
15
  * <val-language-selector
19
16
  * [props]="{ showLabel: true, showFlags: true }">
20
17
  * </val-language-selector>
21
18
  *
22
- * @example
23
- * // Custom configuration
24
- * const languageProps: LanguageSelectorMetadata = {
25
- * showLabel: true,
26
- * label: 'Choose Language',
27
- * showFlags: true,
28
- * color: 'primary',
29
- * size: 'large',
30
- * fill: 'outline',
31
- * customLanguageNames: {
32
- * 'es': 'Español',
33
- * 'en': 'English',
34
- * 'fr': 'Français'
35
- * }
36
- * };
37
- *
38
- * @example
39
- * // With reactive content
40
- * const languageProps: LanguageSelectorMetadata = {
41
- * showLabel: true,
42
- * labelConfig: {
43
- * className: 'myComponent',
44
- * key: 'languageLabel',
45
- * fallback: 'Language'
46
- * },
47
- * color: 'tertiary'
48
- * };
49
- *
50
19
  * @input props: LanguageSelectorMetadata - Configuration for the language selector
51
- * @output languageChange: EventEmitter<string> - Emitted when language changes
20
+ * @output languageChange: EventEmitter<string> - Emitted when language changes (before reload)
52
21
  */
53
22
  export class LanguageSelectorComponent {
54
- constructor(langService) {
55
- this.langService = langService;
23
+ constructor() {
56
24
  /**
57
25
  * Language selector configuration object.
58
- * @type {LanguageSelectorMetadata}
59
26
  */
60
27
  this.props = {};
61
28
  /**
62
29
  * Event emitted when the language selection changes.
63
30
  * Emits the selected language code.
31
+ * Note: Page will reload after this event.
64
32
  */
65
33
  this.languageChange = new EventEmitter();
66
- this.subscriptions = new Subscription();
34
+ this.localeService = inject(LocaleService);
67
35
  /** Default language display names */
68
36
  this.defaultLanguageNames = {
69
37
  es: 'Español',
70
38
  en: 'English',
71
- fr: 'Français',
72
- de: 'Deutsch',
73
- pt: 'Português',
74
- it: 'Italiano',
75
- zh: '中文',
76
- ja: '日本語',
77
- ko: '한국어',
78
- ru: 'Русский',
79
- ar: 'العربية',
80
39
  };
81
40
  /** Default flag icons for languages */
82
41
  this.defaultLanguageFlags = {
83
42
  es: '🇪🇸',
84
43
  en: '🇺🇸',
85
- fr: '🇫🇷',
86
- de: '🇩🇪',
87
- pt: '🇵🇹',
88
- it: '🇮🇹',
89
- zh: '🇨🇳',
90
- ja: '🇯🇵',
91
- ko: '🇰🇷',
92
- ru: '🇷🇺',
93
- ar: '🇸🇦',
94
44
  };
95
- // Register required icons
96
- addIcons({ language, globe });
45
+ /** Available languages */
46
+ this.availableLanguages = ['es', 'en'];
47
+ addIcons({ language });
97
48
  }
98
49
  ngOnInit() {
99
- this.initializeLanguageState();
100
- this.initializeLabel();
101
50
  this.initializePopoverProps();
102
51
  }
103
- ngOnDestroy() {
104
- this.subscriptions.unsubscribe();
105
- }
106
- initializeLanguageState() {
107
- // Get current language and available languages from LangService
108
- this.currentLanguage$ = this.langService.currentLang$;
109
- this.availableLanguages$ = this.currentLanguage$.pipe(map(() => this.props.availableLanguages || this.langService.availableLangs));
110
- }
111
- initializeLabel() {
112
- // Initialize label observable based on configuration
113
- if (this.props.label !== undefined) {
114
- // Static label
115
- this.label$ = of(this.props.label);
116
- }
117
- else if (this.props.labelConfig) {
118
- // Reactive label
119
- this.label$ = this.langService.getContent(this.props.labelConfig.className || '_global', this.props.labelConfig.key, this.props.labelConfig.fallback || 'Language');
120
- }
121
- else {
122
- // Default label from global content
123
- this.label$ = this.langService.getContent('_global', 'language', 'Idioma');
124
- }
125
- }
126
52
  initializePopoverProps() {
127
- // Subscribe to language state changes and content changes to update popover props
128
- const languageSubscription = combineLatest([
129
- this.availableLanguages$,
130
- this.currentLanguage$,
131
- this.langService.currentLang$, // This will trigger updates when language changes
132
- ]).subscribe(([availableLanguages, currentLanguage]) => {
133
- this.updatePopoverProps(availableLanguages, currentLanguage);
134
- });
135
- this.subscriptions.add(languageSubscription);
136
- // Subscribe to label changes
137
- const labelSubscription = this.label$.subscribe(label => {
138
- if (this.popoverProps) {
139
- this.popoverProps = {
140
- ...this.popoverProps,
141
- label: this.props.showLabel !== false ? label : undefined,
142
- };
143
- }
144
- });
145
- this.subscriptions.add(labelSubscription);
146
- }
147
- updatePopoverProps(availableLanguages, currentLanguage) {
53
+ const currentLanguage = this.localeService.lang;
148
54
  // Convert language codes to popover options
149
- const options = availableLanguages.map(lang => ({
55
+ const options = this.availableLanguages.map(lang => ({
150
56
  value: lang,
151
57
  label: this.getLanguageDisplayName(lang),
152
- icon: this.props.showFlags ? undefined : undefined, // We'll use text flags instead
153
58
  }));
154
59
  // Create popover configuration
155
60
  this.popoverProps = {
156
61
  options,
157
62
  selectedValue: currentLanguage,
158
- label: this.props.showLabel !== false ? '' : undefined, // Will be set by label subscription
63
+ label: this.props.showLabel !== false ? (this.props.label || 'Idioma') : undefined,
159
64
  icon: 'language',
160
- placeholder: this.langService.getText('_global', 'selectLanguage', 'Seleccionar idioma...'),
65
+ placeholder: 'Seleccionar idioma...',
161
66
  color: this.props.color || 'medium',
162
67
  size: this.props.size || 'default',
163
68
  fill: this.props.fill || 'outline',
@@ -178,15 +83,9 @@ export class LanguageSelectorComponent {
178
83
  const flag = this.props.showFlags ? this.defaultLanguageFlags[languageCode] : '';
179
84
  return flag ? `${flag} ${customName}` : customName;
180
85
  }
181
- // Use reactive content for translated language names
182
- // Note: This will use the current language since getLanguageDisplayName is called during subscription updates
183
- const translatedName = this.langService.getText('_global', `languageName_${languageCode}`);
184
- const flag = this.props.showFlags ? this.defaultLanguageFlags[languageCode] : '';
185
- if (translatedName && translatedName !== `languageName_${languageCode}`) {
186
- return flag ? `${flag} ${translatedName}` : translatedName;
187
- }
188
- // Fallback to default names, then to code
86
+ // Use default names
189
87
  const defaultName = this.defaultLanguageNames[languageCode] || languageCode.toUpperCase();
88
+ const flag = this.props.showFlags ? this.defaultLanguageFlags[languageCode] : '';
190
89
  return flag ? `${flag} ${defaultName}` : defaultName;
191
90
  }
192
91
  /**
@@ -195,13 +94,14 @@ export class LanguageSelectorComponent {
195
94
  */
196
95
  onLanguageChange(selectedLanguage) {
197
96
  if (typeof selectedLanguage === 'string') {
198
- // Update the language service
199
- this.langService.setLang(selectedLanguage);
200
- // Emit the change event
97
+ const newLang = selectedLanguage;
98
+ // Emit the change event before reload
201
99
  this.languageChange.emit(selectedLanguage);
100
+ // Set the new language (this will reload the page)
101
+ this.localeService.setLang(newLang);
202
102
  }
203
103
  }
204
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [{ token: i1.LangService }], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
205
105
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
206
106
  <val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
207
107
  `, isInline: true, styles: [":host{display:inline-block;width:auto}val-popover-selector .popover-selector-container{display:inline-block;width:auto}val-popover-selector .selector-trigger .trigger-text{display:inline-flex;align-items:center;gap:8px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1)}val-popover-selector .option-content{gap:10px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.1em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.2em;margin-right:6px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger .trigger-text{font-size:13px;gap:6px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.1em}}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1) rotate(3deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}val-popover-selector .language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.15) rotate(8deg)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: PopoverSelectorComponent, selector: "val-popover-selector", inputs: ["props"], outputs: ["selectionChange"] }] }); }
@@ -211,9 +111,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
211
111
  args: [{ selector: 'val-language-selector', standalone: true, imports: [CommonModule, PopoverSelectorComponent], template: `
212
112
  <val-popover-selector [props]="popoverProps" (selectionChange)="onLanguageChange($event)"> </val-popover-selector>
213
113
  `, styles: [":host{display:inline-block;width:auto}val-popover-selector .popover-selector-container{display:inline-block;width:auto}val-popover-selector .selector-trigger .trigger-text{display:inline-flex;align-items:center;gap:8px;font-weight:700}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.2em;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:transform .2s ease}val-popover-selector .selector-trigger.has-flag .trigger-text{letter-spacing:.025em}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1)}val-popover-selector .option-content{gap:10px;padding:8px 0}val-popover-selector .option-content .flag-emoji{font-size:1.1em;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}val-popover-selector .option-content span{font-weight:600;letter-spacing:.01em}.language-flag{font-size:1.2em;margin-right:6px;vertical-align:middle;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.1));transition:all .2s ease}@media (max-width: 768px){val-popover-selector .selector-trigger .trigger-text{font-size:13px;gap:6px}val-popover-selector .selector-trigger .trigger-text .flag-emoji{font-size:1.1em}}val-popover-selector .selector-trigger:hover:not([disabled]) .trigger-text .flag-emoji{transform:scale(1.1) rotate(3deg);transition:transform .25s cubic-bezier(.4,0,.2,1)}val-popover-selector .selector-trigger:active .trigger-text .flag-emoji{transform:scale(1.05)}val-popover-selector .language-changing .flag-emoji{animation:languageSwitch .4s ease-in-out}@keyframes languageSwitch{0%{transform:scale(1)}50%{transform:scale(1.15) rotate(8deg)}to{transform:scale(1)}}\n"] }]
214
- }], ctorParameters: () => [{ type: i1.LangService }], propDecorators: { props: [{
114
+ }], ctorParameters: () => [], propDecorators: { props: [{
215
115
  type: Input
216
116
  }], languageChange: [{
217
117
  type: Output
218
118
  }] } });
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMsWUFBWSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFhMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUEyRHBDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBMUQ1Qzs7O1dBR0c7UUFFSCxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUVyQzs7O1dBR0c7UUFFSCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFjcEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNDLHFDQUFxQztRQUNwQix5QkFBb0IsR0FBMkI7WUFDOUQsRUFBRSxFQUFFLFNBQVM7WUFDYixFQUFFLEVBQUUsU0FBUztZQUNiLEVBQUUsRUFBRSxV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dUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixDQUFDLFlBQ3ZDOztHQUVUO2dGQW9ERCxLQUFLO3NCQURKLEtBQUs7Z0JBUU4sY0FBYztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBnbG9iZSwgbGFuZ3VhZ2UgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xhbmctcHJvdmlkZXIvbGFuZy1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IExhbmdPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9sYW5nLXByb3ZpZGVyL3R5cGVzJztcbmltcG9ydCB7IFBvcG92ZXJTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXItc2VsZWN0b3IvcG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3Zlck9wdGlvbiwgUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3R5cGVzJztcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbGFuZ3VhZ2Utc2VsZWN0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicG9wb3ZlclByb3BzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIj4gPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1sYW5ndWFnZS1zZWxlY3RvclxuICpcbiAqIEEgc3BlY2lhbGl6ZWQgbGFuZ3VhZ2Ugc2VsZWN0b3IgY29tcG9uZW50IHRoYXQgaW50ZWdyYXRlcyB3aXRoIHRoZSBMYW5nU2VydmljZS5cbiAqIFVzZXMgdGhlIHBvcG92ZXItc2VsZWN0b3IgY29tcG9uZW50IGludGVybmFsbHkgYW5kIHByb3ZpZGVzIGxhbmd1YWdlLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIChhdXRvLWRldGVjdHMgbGFuZ3VhZ2VzIGZyb20gTGFuZ1NlcnZpY2UpXG4gKiA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKiAgIFtwcm9wc109XCJ7IHNob3dMYWJlbDogdHJ1ZSwgc2hvd0ZsYWdzOiB0cnVlIH1cIj5cbiAqIDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b20gY29uZmlndXJhdGlvblxuICogY29uc3QgbGFuZ3VhZ2VQcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge1xuICogICBzaG93TGFiZWw6IHRydWUsXG4gKiAgIGxhYmVsOiAnQ2hvb3NlIExhbmd1YWdlJyxcbiAqICAgc2hvd0ZsYWdzOiB0cnVlLFxuICogICBjb2xvcjogJ3ByaW1hcnknLFxuICogICBzaXplOiAnbGFyZ2UnLFxuICogICBmaWxsOiAnb3V0bGluZScsXG4gKiAgIGN1c3RvbUxhbmd1YWdlTmFtZXM6IHtcbiAqICAgICAnZXMnOiAnRXNwYcOxb2wnLFxuICogICAgICdlbic6ICdFbmdsaXNoJyxcbiAqICAgICAnZnInOiAnRnJhbsOnYWlzJ1xuICogICB9XG4gKiB9O1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaXRoIHJlYWN0aXZlIGNvbnRlbnRcbiAqIGNvbnN0IGxhbmd1YWdlUHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSA9IHtcbiAqICAgc2hvd0xhYmVsOiB0cnVlLFxuICogICBsYWJlbENvbmZpZzoge1xuICogICAgIGNsYXNzTmFtZTogJ215Q29tcG9uZW50JyxcbiAqICAgICBrZXk6ICdsYW5ndWFnZUxhYmVsJyxcbiAqICAgICBmYWxsYmFjazogJ0xhbmd1YWdlJ1xuICogICB9LFxuICogICBjb2xvcjogJ3RlcnRpYXJ5J1xuICogfTtcbiAqXG4gKiBAaW5wdXQgcHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBsYW5ndWFnZSBzZWxlY3RvclxuICogQG91dHB1dCBsYW5ndWFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gLSBFbWl0dGVkIHdoZW4gbGFuZ3VhZ2UgY2hhbmdlc1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIExhbmd1YWdlIHNlbGVjdG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7TGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhfVxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBsYW5ndWFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBQb3BvdmVyIHNlbGVjdG9yIGNvbmZpZ3VyYXRpb24gKi9cbiAgcG9wb3ZlclByb3BzOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YTtcblxuICAvKiogQ3VycmVudCBsYW5ndWFnZSBvYnNlcnZhYmxlICovXG4gIGN1cnJlbnRMYW5ndWFnZSQ6IE9ic2VydmFibGU8TGFuZ09wdGlvbj47XG5cbiAgLyoqIEF2YWlsYWJsZSBsYW5ndWFnZXMgb2JzZXJ2YWJsZSAqL1xuICBhdmFpbGFibGVMYW5ndWFnZXMkOiBPYnNlcnZhYmxlPExhbmdPcHRpb25bXT47XG5cbiAgLyoqIExhYmVsIG9ic2VydmFibGUgZm9yIHJlYWN0aXZlIGNvbnRlbnQgKi9cbiAgbGFiZWwkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIC8qKiBEZWZhdWx0IGxhbmd1YWdlIGRpc3BsYXkgbmFtZXMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VOYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ0VzcGHDsW9sJyxcbiAgICBlbjogJ0VuZ2xpc2gnLFxuICAgIGZyOiAnRnJhbsOnYWlzJyxcbiAgICBkZTogJ0RldXRzY2gnLFxuICAgIHB0OiAnUG9ydHVndcOqcycsXG4gICAgaXQ6ICdJdGFsaWFubycsXG4gICAgemg6ICfkuK3mlocnLFxuICAgIGphOiAn5pel5pys6KqeJyxcbiAgICBrbzogJ+2VnOq1reyWtCcsXG4gICAgcnU6ICfQoNGD0YHRgdC60LjQuScsXG4gICAgYXI6ICfYp9mE2LnYsdio2YrYqScsXG4gIH07XG5cbiAgLyoqIERlZmF1bHQgZmxhZyBpY29ucyBmb3IgbGFuZ3VhZ2VzICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlRmxhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICfwn4eq8J+HuCcsXG4gICAgZW46ICfwn4e68J+HuCcsXG4gICAgZnI6ICfwn4er8J+HtycsXG4gICAgZGU6ICfwn4ep8J+HqicsXG4gICAgcHQ6ICfwn4e18J+HuScsXG4gICAgaXQ6ICfwn4eu8J+HuScsXG4gICAgemg6ICfwn4eo8J+HsycsXG4gICAgamE6ICfwn4ev8J+HtScsXG4gICAga286ICfwn4ew8J+HtycsXG4gICAgcnU6ICfwn4e38J+HuicsXG4gICAgYXI6ICfwn4e48J+HpicsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYW5nU2VydmljZTogTGFuZ1NlcnZpY2UpIHtcbiAgICAvLyBSZWdpc3RlciByZXF1aXJlZCBpY29uc1xuICAgIGFkZEljb25zKHsgbGFuZ3VhZ2UsIGdsb2JlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplTGFuZ3VhZ2VTdGF0ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUxhYmVsKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUG9wb3ZlclByb3BzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhbmd1YWdlU3RhdGUoKSB7XG4gICAgLy8gR2V0IGN1cnJlbnQgbGFuZ3VhZ2UgYW5kIGF2YWlsYWJsZSBsYW5ndWFnZXMgZnJvbSBMYW5nU2VydmljZVxuICAgIHRoaXMuY3VycmVudExhbmd1YWdlJCA9IHRoaXMubGFuZ1NlcnZpY2UuY3VycmVudExhbmckO1xuICAgIHRoaXMuYXZhaWxhYmxlTGFuZ3VhZ2VzJCA9IHRoaXMuY3VycmVudExhbmd1YWdlJC5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMucHJvcHMuYXZhaWxhYmxlTGFuZ3VhZ2VzIHx8IHRoaXMubGFuZ1NlcnZpY2UuYXZhaWxhYmxlTGFuZ3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxhYmVsKCkge1xuICAgIC8vIEluaXRpYWxpemUgbGFiZWwgb2JzZXJ2YWJsZSBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RhdGljIGxhYmVsXG4gICAgICB0aGlzLmxhYmVsJCA9IG9mKHRoaXMucHJvcHMubGFiZWwpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5sYWJlbENvbmZpZykge1xuICAgICAgLy8gUmVhY3RpdmUgbGFiZWxcbiAgICAgIHRoaXMubGFiZWwkID0gdGhpcy5sYW5nU2VydmljZS5nZXRDb250ZW50KFxuICAgICAgICB0aGlzLnByb3BzLmxhYmVsQ29uZmlnLmNsYXNzTmFtZSB8fCAnX2dsb2JhbCcsXG4gICAgICAgIHRoaXMucHJvcHMubGFiZWxDb25maWcua2V5LFxuICAgICAgICB0aGlzLnByb3BzLmxhYmVsQ29uZmlnLmZhbGxiYWNrIHx8ICdMYW5ndWFnZSdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQgbGFiZWwgZnJvbSBnbG9iYWwgY29udGVudFxuICAgICAgdGhpcy5sYWJlbCQgPSB0aGlzLmxhbmdTZXJ2aWNlLmdldENvbnRlbnQoJ19nbG9iYWwnLCAnbGFuZ3VhZ2UnLCAnSWRpb21hJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUG9wb3ZlclByb3BzKCkge1xuICAgIC8vIFN1YnNjcmliZSB0byBsYW5ndWFnZSBzdGF0ZSBjaGFuZ2VzIGFuZCBjb250ZW50IGNoYW5nZXMgdG8gdXBkYXRlIHBvcG92ZXIgcHJvcHNcbiAgICBjb25zdCBsYW5ndWFnZVN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMkLFxuICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UkLFxuICAgICAgdGhpcy5sYW5nU2VydmljZS5jdXJyZW50TGFuZyQsIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgd2hlbiBsYW5ndWFnZSBjaGFuZ2VzXG4gICAgXSkuc3Vic2NyaWJlKChbYXZhaWxhYmxlTGFuZ3VhZ2VzLCBjdXJyZW50TGFuZ3VhZ2VdKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJQcm9wcyhhdmFpbGFibGVMYW5ndWFnZXMsIGN1cnJlbnRMYW5ndWFnZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChsYW5ndWFnZVN1YnNjcmlwdGlvbik7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gbGFiZWwgY2hhbmdlc1xuICAgIGNvbnN0IGxhYmVsU3Vic2NyaXB0aW9uID0gdGhpcy5sYWJlbCQuc3Vic2NyaWJlKGxhYmVsID0+IHtcbiAgICAgIGlmICh0aGlzLnBvcG92ZXJQcm9wcykge1xuICAgICAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHtcbiAgICAgICAgICAuLi50aGlzLnBvcG92ZXJQcm9wcyxcbiAgICAgICAgICBsYWJlbDogdGhpcy5wcm9wcy5zaG93TGFiZWwgIT09IGZhbHNlID8gbGFiZWwgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChsYWJlbFN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvcG92ZXJQcm9wcyhhdmFpbGFibGVMYW5ndWFnZXM6IExhbmdPcHRpb25bXSwgY3VycmVudExhbmd1YWdlOiBMYW5nT3B0aW9uKSB7XG4gICAgLy8gQ29udmVydCBsYW5ndWFnZSBjb2RlcyB0byBwb3BvdmVyIG9wdGlvbnNcbiAgICBjb25zdCBvcHRpb25zOiBQb3BvdmVyT3B0aW9uW10gPSBhdmFpbGFibGVMYW5ndWFnZXMubWFwKGxhbmcgPT4gKHtcbiAgICAgIHZhbHVlOiBsYW5nLFxuICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFuZ3VhZ2VEaXNwbGF5TmFtZShsYW5nKSxcbiAgICAgIGljb246IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdW5kZWZpbmVkIDogdW5kZWZpbmVkLCAvLyBXZSdsbCB1c2UgdGV4dCBmbGFncyBpbnN0ZWFkXG4gICAgfSkpO1xuXG4gICAgLy8gQ3JlYXRlIHBvcG92ZXIgY29uZmlndXJhdGlvblxuICAgIHRoaXMucG9wb3ZlclByb3BzID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgIGxhYmVsOiB0aGlzLnByb3BzLnNob3dMYWJlbCAhPT0gZmFsc2UgPyAnJyA6IHVuZGVmaW5lZCwgLy8gV2lsbCBiZSBzZXQgYnkgbGFiZWwgc3Vic2NyaXB0aW9uXG4gICAgICBpY29uOiAnbGFuZ3VhZ2UnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGFuZ1NlcnZpY2UuZ2V0VGV4dCgnX2dsb2JhbCcsICdzZWxlY3RMYW5ndWFnZScsICdTZWxlY2Npb25hciBpZGlvbWEuLi4nKSxcbiAgICAgIGNvbG9yOiB0aGlzLnByb3BzLmNvbG9yIHx8ICdtZWRpdW0nLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8ICdkZWZhdWx0JyxcbiAgICAgIGZpbGw6IHRoaXMucHJvcHMuZmlsbCB8fCAnb3V0bGluZScsXG4gICAgICBzaGFwZTogdGhpcy5wcm9wcy5zaGFwZSxcbiAgICAgIGV4cGFuZDogdGhpcy5wcm9wcy5leHBhbmQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICAgIGludGVyZmFjZTogJ3BvcG92ZXInLFxuICAgICAgc2hvd0NoZWNrbWFyazogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIGNhbmNlbFRleHQ6ICdDYW5jZWxhcicsXG4gICAgICBva1RleHQ6ICdBY2VwdGFyJyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgY3VzdG9tIG5hbWVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lcz8uW2xhbmd1YWdlQ29kZV0pIHtcbiAgICAgIGNvbnN0IGN1c3RvbU5hbWUgPSB0aGlzLnByb3BzLmN1c3RvbUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXTtcbiAgICAgIGNvbnN0IGZsYWcgPSB0aGlzLnByb3BzLnNob3dGbGFncyA/IHRoaXMuZGVmYXVsdExhbmd1YWdlRmxhZ3NbbGFuZ3VhZ2VDb2RlXSA6ICcnO1xuICAgICAgcmV0dXJuIGZsYWcgPyBgJHtmbGFnfSAke2N1c3RvbU5hbWV9YCA6IGN1c3RvbU5hbWU7XG4gICAgfVxuXG4gICAgLy8gVXNlIHJlYWN0aXZlIGNvbnRlbnQgZm9yIHRyYW5zbGF0ZWQgbGFuZ3VhZ2UgbmFtZXNcbiAgICAvLyBOb3RlOiBUaGlzIHdpbGwgdXNlIHRoZSBjdXJyZW50IGxhbmd1YWdlIHNpbmNlIGdldExhbmd1YWdlRGlzcGxheU5hbWUgaXMgY2FsbGVkIGR1cmluZyBzdWJzY3JpcHRpb24gdXBkYXRlc1xuICAgIGNvbnN0IHRyYW5zbGF0ZWROYW1lID0gdGhpcy5sYW5nU2VydmljZS5nZXRUZXh0KCdfZ2xvYmFsJywgYGxhbmd1YWdlTmFtZV8ke2xhbmd1YWdlQ29kZX1gKTtcbiAgICBjb25zdCBmbGFnID0gdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB0aGlzLmRlZmF1bHRMYW5ndWFnZUZsYWdzW2xhbmd1YWdlQ29kZV0gOiAnJztcblxuICAgIGlmICh0cmFuc2xhdGVkTmFtZSAmJiB0cmFuc2xhdGVkTmFtZSAhPT0gYGxhbmd1YWdlTmFtZV8ke2xhbmd1YWdlQ29kZX1gKSB7XG4gICAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7dHJhbnNsYXRlZE5hbWV9YCA6IHRyYW5zbGF0ZWROYW1lO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIGRlZmF1bHQgbmFtZXMsIHRoZW4gdG8gY29kZVxuICAgIGNvbnN0IGRlZmF1bHROYW1lID0gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdIHx8IGxhbmd1YWdlQ29kZS50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBmbGFnID8gYCR7ZmxhZ30gJHtkZWZhdWx0TmFtZX1gIDogZGVmYXVsdE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZExhbmd1YWdlIC0gVGhlIHNlbGVjdGVkIGxhbmd1YWdlIGNvZGUocylcbiAgICovXG4gIG9uTGFuZ3VhZ2VDaGFuZ2Uoc2VsZWN0ZWRMYW5ndWFnZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdGVkTGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIGxhbmd1YWdlIHNlcnZpY2VcbiAgICAgIHRoaXMubGFuZ1NlcnZpY2Uuc2V0TGFuZyhzZWxlY3RlZExhbmd1YWdlKTtcblxuICAgICAgLy8gRW1pdCB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLmVtaXQoc2VsZWN0ZWRMYW5ndWFnZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQWlCLE1BQU0sa0NBQWtDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7O0FBYTFGOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBbUNwQztRQWxDQTs7V0FFRztRQUVILFVBQUssR0FBNkIsRUFBRSxDQUFDO1FBRXJDOzs7O1dBSUc7UUFFSCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFLcEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUMscUNBQXFDO1FBQ3BCLHlCQUFvQixHQUEyQjtZQUM5RCxFQUFFLEVBQUUsU0FBUztZQUNiLEVBQUUsRUFBRSxTQUFTO1NBQ2QsQ0FBQztRQUVGLHVDQUF1QztRQUN0Qix5QkFBb0IsR0FBMkI7WUFDOUQsRUFBRSxFQUFFLE1BQU07WUFDVixFQUFFLEVBQUUsTUFBTTtTQUNYLENBQUM7UUFFRiwwQkFBMEI7UUFDVCx1QkFBa0IsR0FBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxD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Z0JBQWlDLENBQUM7WUFFbEQsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFM0MsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDOytHQXJHVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw0SkFuQjFCOztHQUVULCtyREFIUyxZQUFZLCtCQUFFLHdCQUF3Qjs7NEZBb0JyQyx5QkFBeUI7a0JBdkJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQUMsWUFDdkM7O0dBRVQ7d0RBc0JELEtBQUs7c0JBREosS0FBSztnQkFTTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGxhbmd1YWdlIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSwgU3VwcG9ydGVkTGFuZyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2xvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvcG92ZXJTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXItc2VsZWN0b3IvcG9wb3Zlci1zZWxlY3Rvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3Zlck9wdGlvbiwgUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3R5cGVzJztcbmltcG9ydCB7IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbGFuZ3VhZ2Utc2VsZWN0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicG9wb3ZlclByb3BzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIj4gPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1sYW5ndWFnZS1zZWxlY3RvclxuICpcbiAqIEEgbGFuZ3VhZ2Ugc2VsZWN0b3IgY29tcG9uZW50IHRoYXQgdXNlcyBMb2NhbGVTZXJ2aWNlLlxuICogV2hlbiB0aGUgbGFuZ3VhZ2UgY2hhbmdlcywgdGhlIHBhZ2Ugd2lsbCByZWxvYWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3JcbiAqICAgW3Byb3BzXT1cInsgc2hvd0xhYmVsOiB0cnVlLCBzaG93RmxhZ3M6IHRydWUgfVwiPlxuICogPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gKlxuICogQGlucHV0IHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgbGFuZ3VhZ2Ugc2VsZWN0b3JcbiAqIEBvdXRwdXQgbGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+IC0gRW1pdHRlZCB3aGVuIGxhbmd1YWdlIGNoYW5nZXMgKGJlZm9yZSByZWxvYWQpXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIExhbmd1YWdlIHNlbGVjdG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZS5cbiAgICogTm90ZTogUGFnZSB3aWxsIHJlbG9hZCBhZnRlciB0aGlzIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxhbmd1YWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIFBvcG92ZXIgc2VsZWN0b3IgY29uZmlndXJhdGlvbiAqL1xuICBwb3BvdmVyUHJvcHM6IFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhO1xuXG4gIHByaXZhdGUgbG9jYWxlU2VydmljZSA9IGluamVjdChMb2NhbGVTZXJ2aWNlKTtcblxuICAvKiogRGVmYXVsdCBsYW5ndWFnZSBkaXNwbGF5IG5hbWVzICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlTmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICdFc3Bhw7FvbCcsXG4gICAgZW46ICdFbmdsaXNoJyxcbiAgfTtcblxuICAvKiogRGVmYXVsdCBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VGbGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ/Cfh6rwn4e4JyxcbiAgICBlbjogJ/Cfh7rwn4e4JyxcbiAgfTtcblxuICAvKiogQXZhaWxhYmxlIGxhbmd1YWdlcyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGF2YWlsYWJsZUxhbmd1YWdlczogU3VwcG9ydGVkTGFuZ1tdID0gWydlcycsICdlbiddO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgbGFuZ3VhZ2UgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVQb3BvdmVyUHJvcHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBvcG92ZXJQcm9wcygpIHtcbiAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0aGlzLmxvY2FsZVNlcnZpY2UubGFuZztcblxuICAgIC8vIENvbnZlcnQgbGFuZ3VhZ2UgY29kZXMgdG8gcG9wb3ZlciBvcHRpb25zXG4gICAgY29uc3Qgb3B0aW9uczogUG9wb3Zlck9wdGlvbltdID0gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMubWFwKGxhbmcgPT4gKHtcbiAgICAgIHZhbHVlOiBsYW5nLFxuICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFuZ3VhZ2VEaXNwbGF5TmFtZShsYW5nKSxcbiAgICB9KSk7XG5cbiAgICAvLyBDcmVhdGUgcG9wb3ZlciBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5wb3BvdmVyUHJvcHMgPSB7XG4gICAgICBvcHRpb25zLFxuICAgICAgc2VsZWN0ZWRWYWx1ZTogY3VycmVudExhbmd1YWdlLFxuICAgICAgbGFiZWw6IHRoaXMucHJvcHMuc2hvd0xhYmVsICE9PSBmYWxzZSA/ICh0aGlzLnByb3BzLmxhYmVsIHx8ICdJZGlvbWEnKSA6IHVuZGVmaW5lZCxcbiAgICAgIGljb246ICdsYW5ndWFnZScsXG4gICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjY2lvbmFyIGlkaW9tYS4uLicsXG4gICAgICBjb2xvcjogdGhpcy5wcm9wcy5jb2xvciB8fCAnbWVkaXVtJyxcbiAgICAgIHNpemU6IHRoaXMucHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCcsXG4gICAgICBmaWxsOiB0aGlzLnByb3BzLmZpbGwgfHwgJ291dGxpbmUnLFxuICAgICAgc2hhcGU6IHRoaXMucHJvcHMuc2hhcGUsXG4gICAgICBleHBhbmQ6IHRoaXMucHJvcHMuZXhwYW5kLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6ICdwb3BvdmVyJyxcbiAgICAgIHNob3dDaGVja21hcms6IHRydWUsXG4gICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICBjYW5jZWxUZXh0OiAnQ2FuY2VsYXInLFxuICAgICAgb2tUZXh0OiAnQWNlcHRhcicsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFuZ3VhZ2VEaXNwbGF5TmFtZShsYW5ndWFnZUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVXNlIGN1c3RvbSBuYW1lcyBpZiBwcm92aWRlZFxuICAgIGlmICh0aGlzLnByb3BzLmN1c3RvbUxhbmd1YWdlTmFtZXM/LltsYW5ndWFnZUNvZGVdKSB7XG4gICAgICBjb25zdCBjdXN0b21OYW1lID0gdGhpcy5wcm9wcy5jdXN0b21MYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV07XG4gICAgICBjb25zdCBmbGFnID0gdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB0aGlzLmRlZmF1bHRMYW5ndWFnZUZsYWdzW2xhbmd1YWdlQ29kZV0gOiAnJztcbiAgICAgIHJldHVybiBmbGFnID8gYCR7ZmxhZ30gJHtjdXN0b21OYW1lfWAgOiBjdXN0b21OYW1lO1xuICAgIH1cblxuICAgIC8vIFVzZSBkZWZhdWx0IG5hbWVzXG4gICAgY29uc3QgZGVmYXVsdE5hbWUgPSB0aGlzLmRlZmF1bHRMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV0gfHwgbGFuZ3VhZ2VDb2RlLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgZmxhZyA9IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VGbGFnc1tsYW5ndWFnZUNvZGVdIDogJyc7XG4gICAgcmV0dXJuIGZsYWcgPyBgJHtmbGFnfSAke2RlZmF1bHROYW1lfWAgOiBkZWZhdWx0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGNoYW5nZS5cbiAgICogQHBhcmFtIHNlbGVjdGVkTGFuZ3VhZ2UgLSBUaGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZShzKVxuICAgKi9cbiAgb25MYW5ndWFnZUNoYW5nZShzZWxlY3RlZExhbmd1YWdlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRMYW5ndWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG5ld0xhbmcgPSBzZWxlY3RlZExhbmd1YWdlIGFzIFN1cHBvcnRlZExhbmc7XG5cbiAgICAgIC8vIEVtaXQgdGhlIGNoYW5nZSBldmVudCBiZWZvcmUgcmVsb2FkXG4gICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLmVtaXQoc2VsZWN0ZWRMYW5ndWFnZSk7XG5cbiAgICAgIC8vIFNldCB0aGUgbmV3IGxhbmd1YWdlICh0aGlzIHdpbGwgcmVsb2FkIHRoZSBwYWdlKVxuICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlLnNldExhbmcobmV3TGFuZyk7XG4gICAgfVxuICB9XG59XG4iXX0=