@seniorsistemas/angular-components 19.0.5 → 19.0.7

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 (439) hide show
  1. package/accordion/lib/accordion/accordion.component.d.ts +25 -0
  2. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
  3. package/alert/lib/alert/alert.component.d.ts +40 -0
  4. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
  5. package/badge/lib/badge/badge.component.d.ts +20 -0
  6. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
  7. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
  8. package/button/lib/button/button.component.d.ts +101 -0
  9. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
  10. package/card/lib/card/card.component.d.ts +18 -0
  11. package/chat/lib/chat/chat.component.d.ts +20 -2
  12. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
  13. package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
  14. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
  15. package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
  16. package/chips/lib/chips/chips/chips.component.d.ts +41 -0
  17. package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
  18. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
  19. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
  20. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
  21. package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
  22. package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
  23. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
  24. package/currency/lib/currency.service.d.ts +15 -2
  25. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
  26. package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
  27. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
  28. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
  29. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
  30. package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
  31. package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
  32. package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
  33. package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
  34. package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
  35. package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
  36. package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
  37. package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
  38. package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
  39. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
  40. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
  41. package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
  42. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
  43. package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
  44. package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
  45. package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
  46. package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
  47. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
  50. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
  53. package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
  54. package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
  55. package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
  56. package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
  57. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
  58. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
  59. package/dynamic-form/public-api.d.ts +1 -0
  60. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
  61. package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
  62. package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
  63. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
  64. package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
  65. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
  66. package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
  67. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
  68. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
  69. package/esm2022/button/lib/button/button.component.mjs +102 -1
  70. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
  71. package/esm2022/card/lib/card/card.component.mjs +21 -6
  72. package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
  73. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
  74. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
  75. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
  76. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
  77. package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
  78. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
  79. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
  80. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
  81. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
  82. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
  83. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
  84. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
  85. package/esm2022/currency/lib/currency.service.mjs +21 -8
  86. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
  87. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
  88. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
  89. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
  90. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
  91. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
  92. package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
  93. package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
  94. package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
  95. package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
  96. package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
  97. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
  98. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
  99. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
  100. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
  101. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
  102. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
  103. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  104. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
  105. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
  106. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
  107. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
  108. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  109. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
  110. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  111. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  112. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
  113. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
  114. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
  115. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
  116. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
  117. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
  118. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
  119. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
  120. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
  121. package/esm2022/dynamic-form/public-api.mjs +2 -2
  122. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
  123. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
  124. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
  125. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
  126. package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
  127. package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
  128. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
  129. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
  130. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
  131. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
  132. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
  133. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
  134. package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
  135. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
  136. package/esm2022/kanban/lib/kanban/kanban.component.mjs +35 -17
  137. package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
  138. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
  139. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
  140. package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
  141. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
  142. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
  143. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
  144. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
  145. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
  146. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
  147. package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
  148. package/esm2022/numeric/lib/numeric.service.mjs +21 -1
  149. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
  150. package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
  151. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  152. package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
  153. package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
  154. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
  155. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
  156. package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
  157. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
  158. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
  159. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
  160. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
  161. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
  162. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
  163. package/esm2022/select/lib/select/select.component.mjs +35 -1
  164. package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
  165. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
  166. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
  167. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
  168. package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
  169. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
  170. package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
  171. package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
  172. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
  173. package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
  174. package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
  175. package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
  176. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
  177. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
  178. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
  179. package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
  180. package/esm2022/template/lib/template/template.directive.mjs +14 -2
  181. package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
  182. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
  183. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
  184. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
  185. package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
  186. package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
  187. package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
  188. package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
  189. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
  190. package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
  191. package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
  192. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
  193. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
  194. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
  196. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
  198. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
  200. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  201. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
  202. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  203. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
  204. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  205. package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
  206. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  207. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
  208. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  209. package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
  210. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  211. package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
  212. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  213. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
  214. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  215. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
  216. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  217. package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
  218. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  219. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
  220. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  221. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
  222. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  223. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
  224. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  225. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
  226. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  227. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
  228. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  229. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
  230. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  231. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
  232. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  233. package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
  234. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  235. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
  236. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  237. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
  238. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  239. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
  240. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  241. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
  242. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  243. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
  244. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  245. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
  246. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  247. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
  248. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  249. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
  250. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  251. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
  252. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  253. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
  254. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  255. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
  256. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  257. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
  258. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  259. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
  260. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  261. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
  262. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  263. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
  264. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  265. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
  266. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  267. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
  268. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  269. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +29 -11
  270. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  271. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
  272. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  273. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
  274. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  275. package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
  276. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  277. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
  278. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  279. package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
  280. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  281. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
  282. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  283. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
  284. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  285. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
  286. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  287. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
  288. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  289. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
  290. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  291. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
  292. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  293. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
  295. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
  297. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
  299. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
  301. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
  303. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
  305. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
  307. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
  309. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
  311. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
  313. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
  315. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
  317. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
  319. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
  321. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
  323. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
  325. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
  327. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
  329. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
  331. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
  333. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
  335. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
  337. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
  339. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
  341. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
  343. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
  345. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
  347. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
  349. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
  351. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
  353. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
  355. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
  357. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
  359. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
  361. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
  363. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
  365. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
  367. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
  369. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  370. package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
  371. package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
  372. package/gantt/lib/gantt/gantt.component.d.ts +31 -0
  373. package/global-search/lib/global-search/global-search.component.d.ts +29 -0
  374. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
  375. package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
  376. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
  377. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
  378. package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
  379. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
  380. package/insights/lib/insights/insights.component.d.ts +22 -0
  381. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
  382. package/kanban/lib/kanban/kanban.component.d.ts +25 -5
  383. package/label-value/lib/label-value/label-value.component.d.ts +13 -0
  384. package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
  385. package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
  386. package/locale/lib/locale/locale.service.d.ts +7 -0
  387. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
  388. package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
  389. package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
  390. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
  391. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
  392. package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
  393. package/numeric/lib/numeric.pipe.d.ts +15 -0
  394. package/numeric/lib/numeric.service.d.ts +20 -0
  395. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
  396. package/object-card/lib/object-card/object-card.component.d.ts +23 -0
  397. package/optional-fields/editor/editor-field.d.ts +19 -0
  398. package/package.json +18 -18
  399. package/paginator/lib/paginator/paginator.component.d.ts +19 -0
  400. package/panel/lib/panel/panel.component.d.ts +24 -3
  401. package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
  402. package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
  403. package/picklist/lib/picklist/picklist.component.d.ts +29 -0
  404. package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
  405. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
  406. package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
  407. package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
  408. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
  409. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
  410. package/select/lib/select/select.component.d.ts +34 -0
  411. package/select-button/lib/select-button/select-button.component.d.ts +34 -0
  412. package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
  413. package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
  414. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
  415. package/slider/lib/slider/slider.component.d.ts +72 -0
  416. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
  417. package/split-button/lib/split-button/split-button.component.d.ts +22 -0
  418. package/star-rating/star-rating/star-rating.component.d.ts +16 -0
  419. package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
  420. package/stepper/lib/stepper/stepper.component.d.ts +19 -0
  421. package/structure/lib/structure/footer.component.d.ts +10 -0
  422. package/switch/lib/switch/switch.component.d.ts +20 -0
  423. package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
  424. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
  425. package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
  426. package/tabs/lib/tabs/tabs.component.d.ts +28 -0
  427. package/template/lib/template/template.directive.d.ts +12 -0
  428. package/text-area/lib/text-area/text-area.component.d.ts +27 -0
  429. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
  430. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
  431. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
  432. package/tile/lib/tile/tile.component.d.ts +25 -0
  433. package/timeline/lib/timeline/timeline.component.d.ts +24 -0
  434. package/toast/lib/toast/toast.component.d.ts +22 -2
  435. package/token-list/lib/token-list/token-list.component.d.ts +21 -0
  436. package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
  437. package/topbar/lib/topbar/topbar.component.d.ts +17 -0
  438. package/tree/lib/tree/tree.component.d.ts +27 -0
  439. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
@@ -8,32 +8,73 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/forms";
9
9
  import * as i2 from "primeng/keyfilter";
10
10
  import * as i3 from "../chip-item/chip-item.component";
11
+ /**
12
+ * @description Componente de entrada de tags/chips que permite adicionar e remover
13
+ * itens de texto livremente ou a partir de uma lista. Suporta templates personalizados
14
+ * para renderização de cada chip, filtro de teclas, limite de itens e duplicação configurável.
15
+ * Implementa {@link ControlValueAccessor} para uso em formulários Angular.
16
+ *
17
+ * @example
18
+ * ```html
19
+ * <s-chips
20
+ * formControlName="tags"
21
+ * placeholder="Adicionar tag..."
22
+ * [max]="10"
23
+ * [allowDuplicated]="false"
24
+ * (added)="onAdded($event)" />
25
+ * ```
26
+ *
27
+ * @category Inputs
28
+ */
11
29
  export class ChipsComponent {
12
30
  cdr;
13
31
  newItem = '';
14
32
  chipTemplate;
33
+ /** @description Desabilita a interação com o componente. @default false */
15
34
  disabled = false;
35
+ /** @description Chave do objeto usada para exibição quando os itens são objetos complexos. @default '' */
16
36
  field = '';
37
+ /** @description Lista de chips atualmente exibidos. @default [] */
17
38
  value = [];
39
+ /** @description Texto de placeholder exibido no campo de entrada quando vazio. */
18
40
  placeholder;
41
+ /** @description Número máximo de chips permitidos. @default Infinity */
19
42
  max = Infinity;
43
+ /** @description Comprimento máximo do texto de cada chip. @default Infinity */
20
44
  maxLength = Infinity;
45
+ /** @description Identificador do elemento `<input>` interno. Gerado automaticamente se não informado. */
21
46
  inputId = `chips-${randomHash()}`;
47
+ /** @description Permite a adição de chips com valor duplicado. @default true */
22
48
  allowDuplicated = true;
49
+ /** @description Quando `false`, a comparação de duplicatas é case-insensitive. @default false */
23
50
  caseSensitiveDuplication = false;
51
+ /** @description Adiciona o chip ao pressionar Tab. @default true */
24
52
  addOnTab = true;
53
+ /** @description Adiciona o chip ao perder o foco (blur). @default true */
25
54
  addOnBlur = true;
55
+ /** @description Caractere separador que, quando digitado, confirma a adição de um novo chip. @default '' */
26
56
  separator = '';
57
+ /** @description Coloca o foco automaticamente no campo de entrada ao renderizar o componente. @default false */
27
58
  autofocus = false;
59
+ /** @description Texto informativo exibido abaixo do campo de entrada. @default '' */
28
60
  infoLabel = '';
61
+ /** @description Expressão regular ou padrão predefinido (PrimeNG KeyFilterPattern) para filtrar teclas aceitas. */
29
62
  keyFilter;
63
+ /** @description Exibe tooltip ao passar o mouse sobre chips com texto truncado. @default true */
30
64
  showTooltip = true;
65
+ /** @description Número máximo de caracteres exibidos diretamente no chip sem aplicar truncamento. @default 20 */
31
66
  maxLengthRenderWithoutTooltip = 20;
67
+ /** @description Emitido quando um novo chip é adicionado com sucesso. */
32
68
  added = new EventEmitter();
69
+ /** @description Emitido quando um chip é removido pelo usuário. */
33
70
  removed = new EventEmitter();
71
+ /** @description Emitido quando o campo de entrada recebe foco. */
34
72
  focused = new EventEmitter();
73
+ /** @description Emitido quando o campo de entrada perde o foco. */
35
74
  focusLost = new EventEmitter();
75
+ /** @description Emitido quando o usuário clica em um chip existente. */
36
76
  chipClicked = new EventEmitter();
77
+ /** @description Emitido sempre que a lista de chips é alterada (adição ou remoção). */
37
78
  valueChange = new EventEmitter();
38
79
  templates = null;
39
80
  input = null;
@@ -238,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
238
279
  type: HostListener,
239
280
  args: ['document:keydown', ['$event']]
240
281
  }], onInputLostFocus: [] } });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7QUFjMUUsTUFBTSxPQUFPLGNBQWM7SUFxRk07SUFwRnRCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixZQUFZLENBQW9CO0lBR2hDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUdYLEtBQUssR0FBVSxFQUFFLENBQUM7SUFHbEIsV0FBVyxDQUFxQjtJQUdoQyxHQUFHLEdBQUcsUUFBUSxDQUFDO0lBR2YsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUdyQixPQUFPLEdBQUcsU0FBUyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBR2xDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFHdkIsd0JBQXdCLEdBQUcsS0FBSyxD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QURmLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsTUFBTTtnQkFJQSxXQUFXO3NCQURqQixNQUFNO2dCQUlVLFNBQVM7c0JBRHpCLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUlqQixLQUFLO3NCQURyQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBMENqQyxTQUFTO3NCQUZmLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMEJyQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEtleUZpbHRlclBhdHRlcm4gfSBmcm9tICdwcmltZW5nL2tleWZpbHRlcic7XG5cbmltcG9ydCB7IENoaXBBZGRFdmVudCwgQ2hpcENsaWNrRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4uL21vZGVscy9jaGlwLW1vZGVscyc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IENoZWNrRGlzYWJsZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jaGlwcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoaXBzQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHB1YmxpYyBuZXdJdGVtID0gJyc7XG4gICAgcHVibGljIGNoaXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmllbGQgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IEluZmluaXR5O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4TGVuZ3RoID0gSW5maW5pdHk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnB1dElkID0gYGNoaXBzLSR7cmFuZG9tSGFzaCgpfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0R1cGxpY2F0ZWQgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRPblRhYiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRPbkJsdXIgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VwYXJhdG9yID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZm9MYWJlbCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMga2V5RmlsdGVyPzogUmVnRXhwIHwgS2V5RmlsdGVyUGF0dGVybjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dUb29sdGlwID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExlbmd0aFJlbmRlcldpdGhvdXRUb29sdGlwID0gMjA7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBBZGRFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwUmVtb3ZlRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZm9jdXNlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmb2N1c0xvc3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2hpcENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IGFueVtdPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICAgIHB1YmxpYyBvblRvdWNoZWQ6ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCA9ICgpID0+IHsgfTtcblxuICAgIHByaXZhdGUgaXNUYWJFdmVudEFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLmlucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcFRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZXMuZmluZCgoeCkgPT4geC50eXBlID09PSAnY2hpcC1jb250YWluZXInKT8udGVtcGxhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IHN0cmluZ1tdIHwgYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKG9iaikpIHtcbiAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBAQ2hlY2tEaXNhYmxlZCgpXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXNFbnRlciA9ICRldmVudC5rZXkgPT09ICdFbnRlcic7XG4gICAgICAgIGNvbnN0IGlzU2VwYXJhdG9yID0gdGhpcy5zZXBhcmF0b3IgJiYgJGV2ZW50LmtleSA9PT0gdGhpcy5zZXBhcmF0b3I7XG4gICAgICAgIGNvbnN0IGV2ZW50S2V5SXNUYWIgPSAkZXZlbnQua2V5ID09PSAnVGFiJztcbiAgICAgICAgaWYgKGV2ZW50S2V5SXNUYWIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYlRpbWVvdXRUaW1lID0gNTA7XG4gICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYkV2ZW50QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9LCB0YWJUaW1lb3V0VGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNUYWIgPSB0aGlzLmFkZE9uVGFiICYmIGV2ZW50S2V5SXNUYWI7XG4gICAgICAgIGlmIChpc0VudGVyIHx8IGlzU2VwYXJhdG9yIHx8IGlzVGFiKSB7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYWRkSXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIEBDaGVja0Rpc2FibGVkKClcbiAgICBwdWJsaWMgb25JbnB1dExvc3RGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmFkZE9uQmx1ciB8fCB0aGlzLmlzVGFiRXZlbnRBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcbiAgICAgICAgdGhpcy5mb2N1c0xvc3QuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHsgaXRlbUluZGV4LCBldmVudCB9OiB7IGl0ZW1JbmRleDogbnVtYmVyOyBldmVudDogRXZlbnQgfSkge1xuICAgICAgICBjb25zdCBfcmVtb3ZlZEl0ZW0gPSB0aGlzLnZhbHVlW2l0ZW1JbmRleF07XG4gICAgICAgIHRoaXMudmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdmFsdWU6IF9yZW1vdmVkSXRlbSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcbiAgICAgICAgdGhpcy5jaGlwQ2xpY2tlZC5lbWl0KHsgdmFsdWU6IGRhdGEsIG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkSXRlbSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1ZhbHVlVG9BZGQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTWF4UmVhY2hlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRJdGVtTGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZVRvQWRkID0gdGhpcy5nZXRWYWx1ZVRvQWRkKCk7XG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVmFsdWUodmFsdWVUb0FkZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5ld0l0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01heFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLm1heCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZEl0ZW1MZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB0aGlzLnZhbHVlLm1hcCgoeCkgPT4geFt0aGlzLmZpZWxkXSkgOiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWVUb0FkZCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHsgW3RoaXMuZmllbGRdOiB0aGlzLm5ld0l0ZW0gfSA6IHRoaXMubmV3SXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0R1cGxpY2F0ZWRJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xuICAgICAgICByZXR1cm4gISFtYXBwZWRWYWx1ZXMuZmluZCgoeCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHgudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5uZXdJdGVtLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgdmFsdWVdO1xuICAgICAgICB0aGlzLmFkZGVkLmVtaXQoeyB2YWx1ZSB9KTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xuICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cImNoaXBzLWNvbnRhaW5lclwiIFtjbGFzcy5jaGlwcy1jb250YWluZXItLWZvY3VzZWRdPVwiaXNGb2N1c2VkXCI+XG4gICAgQGZvcihpdGVtIG9mIHZhbHVlOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGxpPlxuICAgICAgICAgICAgPHMtY2hpcC1pdGVtXG4gICAgICAgICAgICAgICAgW3RlbXBsYXRlUmVmXT1cImNoaXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFSZW5kZXJdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgW29iamVjdEZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICBbaXRlbUluZGV4XT1cIiRpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Rvb2x0aXBdPVwic2hvd1Rvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFttYXhMZW5ndGhSZW5kZXJXaXRob3V0VG9vbHRpcF09XCJtYXhMZW5ndGhSZW5kZXJXaXRob3V0VG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrUmVtb3ZlKT1cInJlbW92ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoaXBDbGlja2VkKT1cIm9uQ2hpcENsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9zLWNoaXAtaXRlbT5cbiAgICAgICAgPC9saT5cbiAgICB9XG5cbiAgICBAaWYoa2V5RmlsdGVyKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbWF4ID09PSB2YWx1ZS5sZW5ndGhcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3SXRlbVwiXG4gICAgICAgICAgICBbcEtleUZpbHRlcl09XCJrZXlGaWx0ZXJcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uSW5wdXRMb3N0Rm9jdXMoJGV2ZW50KVwiPlxuICAgIH1AZWxzZSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbWF4ID09PSB2YWx1ZS5sZW5ndGhcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3SXRlbVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCI+XG4gICAgfVxuPC91bD5cbkBpZihpbmZvTGFiZWwpIHtcbiAgICA8c3BhbiBjbGFzcz1cImluZm8tbGFiZWxcIj5cbiAgICAgICAge3sgaW5mb0xhYmVsIH19XG4gICAgPC9zcGFuPlxufVxuIl19
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NoaXBzL3NyYy9saWIvY2hpcHMvY2hpcHMvY2hpcHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBYUgsTUFBTSxPQUFPLGNBQWM7SUE0R007SUEzR3RCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixZQUFZLENBQW9CO0lBRXZDLDJFQUEyRTtJQUVwRSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXhCLDBHQUEwRztJQUVuRyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRWxCLG1FQUFtRTtJQUU1RCxLQUFLLEdBQVUsRUFBRSxDQUFDO0lBRXpCLGtGQUFrRjtJQUUzRSxXQUFXLENBQXFCO0lBRXZDLHdFQUF3RTtJQUVqRSxHQUFHLEdBQUcsUUFBUSxDQUFDO0lBRXRCLCtFQUErRTtJQUV4RSxTQUFT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O2dCQUtDLE9BQU87c0JBRGIsS0FBSztnQkFLQyxlQUFlO3NCQURyQixLQUFLO2dCQUtDLHdCQUF3QjtzQkFEOUIsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxTQUFTO3NCQURmLEtBQUs7Z0JBS0MsU0FBUztzQkFEZixLQUFLO2dCQUtDLFNBQVM7c0JBRGYsS0FBSztnQkFLQyxXQUFXO3NCQURqQixLQUFLO2dCQUtDLDZCQUE2QjtzQkFEbkMsS0FBSztnQkFLQyxLQUFLO3NCQURYLE1BQU07Z0JBS0EsT0FBTztzQkFEYixNQUFNO2dCQUtBLE9BQU87c0JBRGIsTUFBTTtnQkFLQSxTQUFTO3NCQURmLE1BQU07Z0JBS0EsV0FBVztzQkFEakIsTUFBTTtnQkFLQSxXQUFXO3NCQURqQixNQUFNO2dCQUlVLFNBQVM7c0JBRHpCLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUlqQixLQUFLO3NCQURyQixTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBMENqQyxTQUFTO3NCQUZmLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMEJyQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEtleUZpbHRlclBhdHRlcm4gfSBmcm9tICdwcmltZW5nL2tleWZpbHRlcic7XG5cbmltcG9ydCB7IENoaXBBZGRFdmVudCwgQ2hpcENsaWNrRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4uL21vZGVscy9jaGlwLW1vZGVscyc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIHJhbmRvbUhhc2ggfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IENoZWNrRGlzYWJsZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NoYXJlZCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgZW50cmFkYSBkZSB0YWdzL2NoaXBzIHF1ZSBwZXJtaXRlIGFkaWNpb25hciBlIHJlbW92ZXJcbiAqIGl0ZW5zIGRlIHRleHRvIGxpdnJlbWVudGUgb3UgYSBwYXJ0aXIgZGUgdW1hIGxpc3RhLiBTdXBvcnRhIHRlbXBsYXRlcyBwZXJzb25hbGl6YWRvc1xuICogcGFyYSByZW5kZXJpemHDp8OjbyBkZSBjYWRhIGNoaXAsIGZpbHRybyBkZSB0ZWNsYXMsIGxpbWl0ZSBkZSBpdGVucyBlIGR1cGxpY2HDp8OjbyBjb25maWd1csOhdmVsLlxuICogSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHBhcmEgdXNvIGVtIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1jaGlwc1xuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0YWdzXCJcbiAqICAgcGxhY2Vob2xkZXI9XCJBZGljaW9uYXIgdGFnLi4uXCJcbiAqICAgW21heF09XCIxMFwiXG4gKiAgIFthbGxvd0R1cGxpY2F0ZWRdPVwiZmFsc2VcIlxuICogICAoYWRkZWQpPVwib25BZGRlZCgkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBJbnB1dHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWNoaXBzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hpcHNDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hpcHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgcHVibGljIG5ld0l0ZW0gPSAnJztcbiAgICBwdWJsaWMgY2hpcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRGVzYWJpbGl0YSBhIGludGVyYcOnw6NvIGNvbSBvIGNvbXBvbmVudGUuIEBkZWZhdWx0IGZhbHNlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ2hhdmUgZG8gb2JqZXRvIHVzYWRhIHBhcmEgZXhpYmnDp8OjbyBxdWFuZG8gb3MgaXRlbnMgc8OjbyBvYmpldG9zIGNvbXBsZXhvcy4gQGRlZmF1bHQgJycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZCA9ICcnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjaGlwcyBhdHVhbG1lbnRlIGV4aWJpZG9zLiBAZGVmYXVsdCBbXSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBhbnlbXSA9IFtdO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBkZSBwbGFjZWhvbGRlciBleGliaWRvIG5vIGNhbXBvIGRlIGVudHJhZGEgcXVhbmRvIHZhemlvLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIE7Dum1lcm8gbcOheGltbyBkZSBjaGlwcyBwZXJtaXRpZG9zLiBAZGVmYXVsdCBJbmZpbml0eSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IEluZmluaXR5O1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb21wcmltZW50byBtw6F4aW1vIGRvIHRleHRvIGRlIGNhZGEgY2hpcC4gQGRlZmF1bHQgSW5maW5pdHkgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGggPSBJbmZpbml0eTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciBkbyBlbGVtZW50byBgPGlucHV0PmAgaW50ZXJuby4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbnB1dElkID0gYGNoaXBzLSR7cmFuZG9tSGFzaCgpfWA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFBlcm1pdGUgYSBhZGnDp8OjbyBkZSBjaGlwcyBjb20gdmFsb3IgZHVwbGljYWRvLiBAZGVmYXVsdCB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWxsb3dEdXBsaWNhdGVkID0gdHJ1ZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gUXVhbmRvIGBmYWxzZWAsIGEgY29tcGFyYcOnw6NvIGRlIGR1cGxpY2F0YXMgw6kgY2FzZS1pbnNlbnNpdGl2ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXNlU2Vuc2l0aXZlRHVwbGljYXRpb24gPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQWRpY2lvbmEgbyBjaGlwIGFvIHByZXNzaW9uYXIgVGFiLiBAZGVmYXVsdCB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYWRkT25UYWIgPSB0cnVlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBBZGljaW9uYSBvIGNoaXAgYW8gcGVyZGVyIG8gZm9jbyAoYmx1cikuIEBkZWZhdWx0IHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhZGRPbkJsdXIgPSB0cnVlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDYXJhY3RlcmUgc2VwYXJhZG9yIHF1ZSwgcXVhbmRvIGRpZ2l0YWRvLCBjb25maXJtYSBhIGFkacOnw6NvIGRlIHVtIG5vdm8gY2hpcC4gQGRlZmF1bHQgJycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXBhcmF0b3IgPSAnJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gQ29sb2NhIG8gZm9jbyBhdXRvbWF0aWNhbWVudGUgbm8gY2FtcG8gZGUgZW50cmFkYSBhbyByZW5kZXJpemFyIG8gY29tcG9uZW50ZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvZm9jdXMgPSBmYWxzZTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGV4dG8gaW5mb3JtYXRpdm8gZXhpYmlkbyBhYmFpeG8gZG8gY2FtcG8gZGUgZW50cmFkYS4gQGRlZmF1bHQgJycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbmZvTGFiZWwgPSAnJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXhwcmVzc8OjbyByZWd1bGFyIG91IHBhZHLDo28gcHJlZGVmaW5pZG8gKFByaW1lTkcgS2V5RmlsdGVyUGF0dGVybikgcGFyYSBmaWx0cmFyIHRlY2xhcyBhY2VpdGFzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGtleUZpbHRlcj86IFJlZ0V4cCB8IEtleUZpbHRlclBhdHRlcm47XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEV4aWJlIHRvb2x0aXAgYW8gcGFzc2FyIG8gbW91c2Ugc29icmUgY2hpcHMgY29tIHRleHRvIHRydW5jYWRvLiBAZGVmYXVsdCB0cnVlICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd1Rvb2x0aXAgPSB0cnVlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBleGliaWRvcyBkaXJldGFtZW50ZSBubyBjaGlwIHNlbSBhcGxpY2FyIHRydW5jYW1lbnRvLiBAZGVmYXVsdCAyMCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heExlbmd0aFJlbmRlcldpdGhvdXRUb29sdGlwID0gMjA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIHVtIG5vdm8gY2hpcCDDqSBhZGljaW9uYWRvIGNvbSBzdWNlc3NvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcEFkZEV2ZW50PigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyB1bSBjaGlwIMOpIHJlbW92aWRvIHBlbG8gdXN1w6FyaW8uICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBSZW1vdmVFdmVudD4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBkZSBlbnRyYWRhIHJlY2ViZSBmb2NvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIGVudHJhZGEgcGVyZGUgbyBmb2NvLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmb2N1c0xvc3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZvY3VzRXZlbnQ+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gY2xpY2EgZW0gdW0gY2hpcCBleGlzdGVudGUuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNoaXBDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwQ2xpY2tFdmVudD4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBzZW1wcmUgcXVlIGEgbGlzdGEgZGUgY2hpcHMgw6kgYWx0ZXJhZGEgKGFkacOnw6NvIG91IHJlbW/Dp8OjbykuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXSB8IGFueVtdPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlczogUXVlcnlMaXN0PFRlbXBsYXRlRGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgcHVibGljIG9uVG91Y2hlZDogKHZhbHVlOiBzdHJpbmdbXSB8IGFueVtdKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIGlzVGFiRXZlbnRBY3RpdmUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLmlucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcFRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZXMuZmluZCgoeCkgPT4geC50eXBlID09PSAnY2hpcC1jb250YWluZXInKT8udGVtcGxhdGU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IHN0cmluZ1tdIHwgYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKG9iaikpIHtcbiAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWUgPSBvYmo7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nW10gfCBhbnlbXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBAQ2hlY2tEaXNhYmxlZCgpXG4gICAgcHVibGljIG9uS2V5ZG93bigkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaXNFbnRlciA9ICRldmVudC5rZXkgPT09ICdFbnRlcic7XG4gICAgICAgIGNvbnN0IGlzU2VwYXJhdG9yID0gdGhpcy5zZXBhcmF0b3IgJiYgJGV2ZW50LmtleSA9PT0gdGhpcy5zZXBhcmF0b3I7XG4gICAgICAgIGNvbnN0IGV2ZW50S2V5SXNUYWIgPSAkZXZlbnQua2V5ID09PSAnVGFiJztcbiAgICAgICAgaWYgKGV2ZW50S2V5SXNUYWIpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYlRpbWVvdXRUaW1lID0gNTA7XG4gICAgICAgICAgICB0aGlzLmlzVGFiRXZlbnRBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1RhYkV2ZW50QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9LCB0YWJUaW1lb3V0VGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNUYWIgPSB0aGlzLmFkZE9uVGFiICYmIGV2ZW50S2V5SXNUYWI7XG4gICAgICAgIGlmIChpc0VudGVyIHx8IGlzU2VwYXJhdG9yIHx8IGlzVGFiKSB7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuYWRkSXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIEBDaGVja0Rpc2FibGVkKClcbiAgICBwdWJsaWMgb25JbnB1dExvc3RGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmFkZE9uQmx1ciB8fCB0aGlzLmlzVGFiRXZlbnRBY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZEl0ZW0oKTtcbiAgICAgICAgdGhpcy5mb2N1c0xvc3QuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJdGVtKHsgaXRlbUluZGV4LCBldmVudCB9OiB7IGl0ZW1JbmRleDogbnVtYmVyOyBldmVudDogRXZlbnQgfSkge1xuICAgICAgICBjb25zdCBfcmVtb3ZlZEl0ZW0gPSB0aGlzLnZhbHVlW2l0ZW1JbmRleF07XG4gICAgICAgIHRoaXMudmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdmFsdWU6IF9yZW1vdmVkSXRlbSwgb3JpZ2luYWxFdmVudDogZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcENsaWNrZWQoeyBldmVudCwgZGF0YSB9OiB7IGV2ZW50OiBFdmVudDsgZGF0YTogc3RyaW5nIHwgT2JqZWN0IH0pIHtcbiAgICAgICAgdGhpcy5jaGlwQ2xpY2tlZC5lbWl0KHsgdmFsdWU6IGRhdGEsIG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkSXRlbSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1ZhbHVlVG9BZGQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzTWF4UmVhY2hlZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRJdGVtTGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZVRvQWRkID0gdGhpcy5nZXRWYWx1ZVRvQWRkKCk7XG4gICAgICAgIGlmICghdGhpcy5oYXNEdXBsaWNhdGVkSXRlbSgpKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVmFsdWUodmFsdWVUb0FkZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uZXdJdGVtID0gJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNWYWx1ZVRvQWRkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5ld0l0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc01heFJlYWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLm1heCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZEl0ZW1MZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heExlbmd0aCA/IHRoaXMubmV3SXRlbS5sZW5ndGggPD0gdGhpcy5tYXhMZW5ndGggOiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFwcGVkVmFsdWVzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGQgPyB0aGlzLnZhbHVlLm1hcCgoeCkgPT4geFt0aGlzLmZpZWxkXSkgOiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsdWVUb0FkZCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWVsZCA/IHsgW3RoaXMuZmllbGRdOiB0aGlzLm5ld0l0ZW0gfSA6IHRoaXMubmV3SXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0R1cGxpY2F0ZWRJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0R1cGxpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXBwZWRWYWx1ZXMgPSB0aGlzLmdldE1hcHBlZFZhbHVlcygpO1xuICAgICAgICByZXR1cm4gISFtYXBwZWRWYWx1ZXMuZmluZCgoeCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FzZVNlbnNpdGl2ZUR1cGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHggPT09IHRoaXMubmV3SXRlbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHgudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5uZXdJdGVtLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcmVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgdmFsdWVdO1xuICAgICAgICB0aGlzLmFkZGVkLmVtaXQoeyB2YWx1ZSB9KTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHRoaXMudmFsdWUpO1xuICAgIH1cbn1cblxuIiwiPHVsIGNsYXNzPVwiY2hpcHMtY29udGFpbmVyXCIgW2NsYXNzLmNoaXBzLWNvbnRhaW5lci0tZm9jdXNlZF09XCJpc0ZvY3VzZWRcIj5cbiAgICBAZm9yKGl0ZW0gb2YgdmFsdWU7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8bGk+XG4gICAgICAgICAgICA8cy1jaGlwLWl0ZW1cbiAgICAgICAgICAgICAgICBbdGVtcGxhdGVSZWZdPVwiY2hpcFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGF0YVJlbmRlcl09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICBbb2JqZWN0RmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgIFtpdGVtSW5kZXhdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtzaG93VG9vbHRpcF09XCJzaG93VG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aFJlbmRlcldpdGhvdXRUb29sdGlwXT1cIm1heExlbmd0aFJlbmRlcldpdGhvdXRUb29sdGlwXCJcbiAgICAgICAgICAgICAgICAoY2xpY2tSZW1vdmUpPVwicmVtb3ZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2hpcENsaWNrZWQpPVwib25DaGlwQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L3MtY2hpcC1pdGVtPlxuICAgICAgICA8L2xpPlxuICAgIH1cblxuICAgIEBpZihrZXlGaWx0ZXIpIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIFtwS2V5RmlsdGVyXT1cImtleUZpbHRlclwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dExvc3RGb2N1cygkZXZlbnQpXCI+XG4gICAgfUBlbHNlIHtcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBtYXggPT09IHZhbHVlLmxlbmd0aFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdJdGVtXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0TG9zdEZvY3VzKCRldmVudClcIj5cbiAgICB9XG48L3VsPlxuQGlmKGluZm9MYWJlbCkge1xuICAgIDxzcGFuIGNsYXNzPVwiaW5mby1sYWJlbFwiPlxuICAgICAgICB7eyBpbmZvTGFiZWwgfX1cbiAgICA8L3NwYW4+XG59XG4iXX0=
@@ -5,23 +5,63 @@ import { Subject } from 'rxjs';
5
5
  import { take, takeUntil } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./core/facades/core-facade";
8
+ /**
9
+ * @description Componente de editor de código com syntax highlighting, construído sobre
10
+ * um editor Monaco/CodeMirror. Implementa {@link ControlValueAccessor} para integração
11
+ * com formulários Angular e suporta configuração de linguagem, tema e opções avançadas
12
+ * do editor via `editorOptions`.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <s-code-editor
17
+ * formControlName="script"
18
+ * [editorOptions]="{ language: 'javascript', theme: 'vs-dark' }"
19
+ * (codeChange)="onCodeChange($event)" />
20
+ * ```
21
+ *
22
+ * @category Inputs
23
+ */
8
24
  export class CodeEditorComponent {
9
25
  coreFacade;
26
+ /**
27
+ * @description Opções de configuração do editor (linguagem, tema, readonly, etc.).
28
+ * Ao atribuir um novo valor, as opções são aplicadas imediatamente ao editor.
29
+ */
10
30
  set editorOptions(options) {
11
31
  if (options) {
12
32
  this.coreFacade.changeEditorOptions(options);
13
33
  }
14
34
  }
35
+ /**
36
+ * @description Conteúdo textual do editor. Ao atribuir, o código é propagado ao núcleo do editor.
37
+ */
15
38
  set code(code) {
16
39
  this.coreFacade.changeCode(code);
17
40
  }
41
+ /**
42
+ * @description Indica se o código atual é válido segundo as regras do editor.
43
+ * Pode ser usado para exibir indicadores visuais de erro.
44
+ *
45
+ * @default false
46
+ */
18
47
  isCodeValid = false;
48
+ /**
49
+ * @description Payload adicional passado ao núcleo do editor, utilizado para
50
+ * contexto de autocompletar ou validações específicas da linguagem.
51
+ */
19
52
  set payload(payload) {
20
53
  this.coreFacade.setPayload(payload);
21
54
  }
55
+ /** @description Emitido sempre que o conteúdo do editor é alterado. Emite o código atual como string. */
22
56
  codeChange = new EventEmitter();
57
+ /** @description Emitido quando o estado de validade do código muda. */
23
58
  isCodeValidChange = new EventEmitter();
59
+ /**
60
+ * @deprecated Use `codeChange` ao invés deste output.
61
+ * @description Emitido sempre que o conteúdo do editor é alterado.
62
+ */
24
63
  onCodeChange = new EventEmitter();
64
+ /** @description Emitido quando o componente finaliza o carregamento e o editor está pronto para uso. */
25
65
  onComponentFinishLoad = new EventEmitter();
26
66
  coreWrapperElement = null;
27
67
  _ngUnsubscribe = new Subject();
@@ -113,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
113
153
  type: ViewChild,
114
154
  args: ['coreWrapper']
115
155
  }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29kZS1lZGl0b3IvY29kZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29kZS1lZGl0b3IvY29kZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUVULFVBQVUsR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFpQmpELE1BQU0sT0FBTyxtQkFBbUI7SUF3Q0M7SUF2QzdCLElBQ1csYUFBYSxDQUFDLE9BQWtDO1FBQ3ZELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDTCxDQUFDO0lBRUQsSUFDVyxJQUFJLENBQUMsSUFBWTtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVEsV0FBVyxHQUF3QixLQUFLLENBQUM7SUFFbEQsSUFDVyxPQUFPLENBQUMsT0FBZTtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4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LGlEQUE2Qzs7NEZEaUNoQyxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0ksZUFBZSxhQUdkO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjsrRUFJVSxhQUFhO3NCQUR2QixLQUFLO2dCQVFLLElBQUk7c0JBRGQsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdLLE9BQU87c0JBRGpCLEtBQUs7Z0JBTUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBSUEsWUFBWTtzQkFEbEIsTUFBTTtnQkFJQSxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBSVUsa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeCAqL1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gJy4vY29yZS9mYWNhZGVzL2NvcmUtZmFjYWRlJztcbmltcG9ydCB7IEVkaXRvck9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jb2RlLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2RlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVkaXRvck9wdGlvbnMob3B0aW9uczogRWRpdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUNvZGUoY29kZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgaXNDb2RlVmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBwYXlsb2FkKHBheWxvYWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuc2V0UGF5bG9hZChwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGlzQ29kZVZhbGlkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uQ29tcG9uZW50RmluaXNoTG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvcmVXcmFwcGVyJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvcmVXcmFwcGVyRWxlbWVudDogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29yZUZhY2FkZTogQ29yZUZhY2FkZSkge31cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2RlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuaW5pdENvcmUoKTtcbiAgICAgICAgdGhpcy5zZXR1cENvcmVMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvcmVXcmFwcGVyRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmRlc3Ryb3lDb3JlKCk7XG4gICAgICAgIHRoaXMuX25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb3JlV3JhcHBlckVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29yZUZhY2FkZS5zZXRDb3JlV3JhcHBlckVsZW1lbnQodGhpcy5jb3JlV3JhcHBlckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBDb3JlTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGVcbiAgICAgICAgICAgIC5nZXRPbkNvcmVGaW5pc2hMb2FkT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ29tcG9uZW50RmluaXNoTG9hZC5lbWl0KCkpO1xuXG4gICAgICAgIHRoaXMuY29yZUZhY2FkZVxuICAgICAgICAgICAgLmdldE9uQ29kZUNoYW5nZU9ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMub25Db2RlQ2hhbmdlLmVtaXQoY29kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UoY29kZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvcmVGYWNhZGVcbiAgICAgICAgICAgIC5nZXRPbkNvZGVWYWxpZGl0eUNoYW5nZU9ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsaWRpdHkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29kZVZhbGlkQ2hhbmdlLmVtaXQodmFsaWRpdHkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiAjY29yZVdyYXBwZXIgY2xhc3M9XCJjb3JlLXdyYXBwZXJcIj48L2Rpdj4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29kZS1lZGl0b3IvY29kZS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvZGUtZWRpdG9yL3NyYy9saWIvY29kZS1lZGl0b3IvY29kZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFDSCxTQUFTLEVBSVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUVULFVBQVUsR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLakQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBYUgsTUFBTSxPQUFPLG1CQUFtQjtJQWdFQztJQS9EN0I7OztPQUdHO0lBQ0gsSUFDVyxhQUFhLENBQUMsT0FBa0M7UUFDdkQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ1csSUFBSSxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ00sV0FBVyxHQUF3QixLQUFLLENBQUM7SUFFbEQ7OztPQUdHO0lBQ0gsSUFD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akI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osNklDL0NMLGlEQUE2Qzs7NEZEaURoQyxtQkFBbUI7a0JBWi9CLFNBQVM7K0JBQ0ksZUFBZSxhQUdkO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjsrRUFRVSxhQUFhO3NCQUR2QixLQUFLO2dCQVdLLElBQUk7c0JBRGQsS0FBSztnQkFXRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9LLE9BQU87c0JBRGpCLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsTUFBTTtnQkFLQSxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBUUEsWUFBWTtzQkFEbEIsTUFBTTtnQkFLQSxxQkFBcUI7c0JBRDNCLE1BQU07Z0JBSVUsa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeCAqL1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29yZUZhY2FkZSB9IGZyb20gJy4vY29yZS9mYWNhZGVzL2NvcmUtZmFjYWRlJztcbmltcG9ydCB7IEVkaXRvck9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgZWRpdG9yIGRlIGPDs2RpZ28gY29tIHN5bnRheCBoaWdobGlnaHRpbmcsIGNvbnN0cnXDrWRvIHNvYnJlXG4gKiB1bSBlZGl0b3IgTW9uYWNvL0NvZGVNaXJyb3IuIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfSBwYXJhIGludGVncmHDp8Ojb1xuICogY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyIGUgc3Vwb3J0YSBjb25maWd1cmHDp8OjbyBkZSBsaW5ndWFnZW0sIHRlbWEgZSBvcMOnw7VlcyBhdmFuw6dhZGFzXG4gKiBkbyBlZGl0b3IgdmlhIGBlZGl0b3JPcHRpb25zYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHMtY29kZS1lZGl0b3JcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwic2NyaXB0XCJcbiAqICAgW2VkaXRvck9wdGlvbnNdPVwieyBsYW5ndWFnZTogJ2phdmFzY3JpcHQnLCB0aGVtZTogJ3ZzLWRhcmsnIH1cIlxuICogICAoY29kZUNoYW5nZSk9XCJvbkNvZGVDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jb2RlLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2RlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9ww6fDtWVzIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIGVkaXRvciAobGluZ3VhZ2VtLCB0ZW1hLCByZWFkb25seSwgZXRjLikuXG4gICAgICogQW8gYXRyaWJ1aXIgdW0gbm92byB2YWxvciwgYXMgb3DDp8O1ZXMgc8OjbyBhcGxpY2FkYXMgaW1lZGlhdGFtZW50ZSBhbyBlZGl0b3IuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGVkaXRvck9wdGlvbnMob3B0aW9uczogRWRpdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUVkaXRvck9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29udGXDumRvIHRleHR1YWwgZG8gZWRpdG9yLiBBbyBhdHJpYnVpciwgbyBjw7NkaWdvIMOpIHByb3BhZ2FkbyBhbyBuw7pjbGVvIGRvIGVkaXRvci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29kZShjb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLmNoYW5nZUNvZGUoY29kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEluZGljYSBzZSBvIGPDs2RpZ28gYXR1YWwgw6kgdsOhbGlkbyBzZWd1bmRvIGFzIHJlZ3JhcyBkbyBlZGl0b3IuXG4gICAgICogUG9kZSBzZXIgdXNhZG8gcGFyYSBleGliaXIgaW5kaWNhZG9yZXMgdmlzdWFpcyBkZSBlcnJvLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpc0NvZGVWYWxpZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFBheWxvYWQgYWRpY2lvbmFsIHBhc3NhZG8gYW8gbsO6Y2xlbyBkbyBlZGl0b3IsIHV0aWxpemFkbyBwYXJhXG4gICAgICogY29udGV4dG8gZGUgYXV0b2NvbXBsZXRhciBvdSB2YWxpZGHDp8O1ZXMgZXNwZWPDrWZpY2FzIGRhIGxpbmd1YWdlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgcGF5bG9hZChwYXlsb2FkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLnNldFBheWxvYWQocGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHNlbXByZSBxdWUgbyBjb250ZcO6ZG8gZG8gZWRpdG9yIMOpIGFsdGVyYWRvLiBFbWl0ZSBvIGPDs2RpZ28gYXR1YWwgY29tbyBzdHJpbmcuICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBlc3RhZG8gZGUgdmFsaWRhZGUgZG8gY8OzZGlnbyBtdWRhLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpc0NvZGVWYWxpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBgY29kZUNoYW5nZWAgYW8gaW52w6lzIGRlc3RlIG91dHB1dC5cbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBzZW1wcmUgcXVlIG8gY29udGXDumRvIGRvIGVkaXRvciDDqSBhbHRlcmFkby5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25Db2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gY29tcG9uZW50ZSBmaW5hbGl6YSBvIGNhcnJlZ2FtZW50byBlIG8gZWRpdG9yIGVzdMOhIHByb250byBwYXJhIHVzby4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25Db21wb25lbnRGaW5pc2hMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29yZVdyYXBwZXInKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29yZVdyYXBwZXJFbGVtZW50OiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgX29uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb3JlRmFjYWRlOiBDb3JlRmFjYWRlKSB7fVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29yZUZhY2FkZS5pbml0Q29yZSgpO1xuICAgICAgICB0aGlzLnNldHVwQ29yZUxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q29yZVdyYXBwZXJFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcmVGYWNhZGUuZGVzdHJveUNvcmUoKTtcbiAgICAgICAgdGhpcy5fbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvcmVXcmFwcGVyRWxlbWVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlLnNldENvcmVXcmFwcGVyRWxlbWVudCh0aGlzLmNvcmVXcmFwcGVyRWxlbWVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cENvcmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29yZUZhY2FkZVxuICAgICAgICAgICAgLmdldE9uQ29yZUZpbmlzaExvYWRPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25Db21wb25lbnRGaW5pc2hMb2FkLmVtaXQoKSk7XG5cbiAgICAgICAgdGhpcy5jb3JlRmFjYWRlXG4gICAgICAgICAgICAuZ2V0T25Db2RlQ2hhbmdlT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChjb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2RlQ2hhbmdlLmVtaXQoY29kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvZGVDaGFuZ2UuZW1pdChjb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShjb2RlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29yZUZhY2FkZVxuICAgICAgICAgICAgLmdldE9uQ29kZVZhbGlkaXR5Q2hhbmdlT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWxpZGl0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb2RlVmFsaWRDaGFuZ2UuZW1pdCh2YWxpZGl0eSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG5cbiIsIjxkaXYgI2NvcmVXcmFwcGVyIGNsYXNzPVwiY29yZS13cmFwcGVyXCI+PC9kaXY+Il19
@@ -2,16 +2,34 @@ import { animate, state, style, transition, trigger } from '@angular/animations'
2
2
  import { Component, Input } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
+ /**
6
+ * @description Componente de link expansor que mostra/oculta conteúdo transclusão
7
+ * com animação de colapso. Exibe rótulos diferentes para os estados expandido e colapsado.
8
+ *
9
+ * @example
10
+ * ```html
11
+ * <s-collapse-link expandedLabel="Ver menos" collapsedLabel="Ver mais">
12
+ * <p>Conteúdo oculto</p>
13
+ * </s-collapse-link>
14
+ * ```
15
+ *
16
+ * @category Structure
17
+ */
5
18
  export class CollapseLinkComponent {
6
19
  static nextIdSeed = 0;
7
20
  static _nextId = CollapseLinkComponent.nextIdSeed;
8
21
  static getNextId() {
9
22
  return this._nextId++;
10
23
  }
24
+ /** @description Identificador do botão de toggle. Gerado automaticamente se não informado. */
11
25
  buttonId = `s-collapse-button-${CollapseLinkComponent.getNextId()}`;
26
+ /** @description Rótulo exibido quando o conteúdo está expandido. @default 'Mostrar menos' */
12
27
  expandedLabel = 'Mostrar menos';
28
+ /** @description Rótulo exibido quando o conteúdo está colapsado. @default 'Mostrar mais' */
13
29
  collapsedLabel = 'Mostrar mais';
30
+ /** @description Desabilita o botão de toggle. @default false */
14
31
  disabled = false;
32
+ /** @description Controla externamente o estado colapsado do componente. @default true */
15
33
  collapse = true;
16
34
  collapsed = true;
17
35
  animating = false;
@@ -78,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
78
96
  }], collapse: [{
79
97
  type: Input
80
98
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UtbGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29sbGFwc2UtbGluay9zcmMvbGliL2NvbGxhcHNlLWxpbmsvY29sbGFwc2UtbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29sbGFwc2UtbGluay9zcmMvbGliL2NvbGxhcHNlLWxpbmsvY29sbGFwc2UtbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7O0FBMEIzRSxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLE1BQU0sQ0FBVSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDO0lBRW5ELE1BQU0sQ0FBQyxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFHTSxRQUFRLEdBQUcscUJBQXFCLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFHcEUsYUFBYSxHQUFHLGVBQWUsQ0FBQztJQUdoQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBR2hDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUVoQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFekIsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTSxVQUFVLENBQUMsUUFBaUI7UUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO3dHQXBEUSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw0TkMzQmxDLCtsQkEwQkEsK3NDRG5CZ0I7WUFDUixPQUFPLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3ZCLEtBQUssQ0FDRCxNQUFNLEVBQ04sS0FBSyxDQUFDO29CQUNGLE1BQU0sRUFBRSxDQUFDO29CQUNULE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUMsQ0FDTDtnQkFDRCxLQUFLLENBQ0QsR0FBRyxFQUNILEtBQUssQ0FBQztvQkFDRixNQUFNLEVBQUUsR0FBRztvQkFDWCxPQUFPLEVBQUUsQ0FBQztpQkFDYixDQUFDLENBQ0w7Z0JBQ0QsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzthQUM1RSxDQUFDO1NBQ0w7OzRGQUVRLHFCQUFxQjtrQkF4QmpDLFNBQVM7K0JBQ0ksaUJBQWlCLGNBR2Y7d0JBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFOzRCQUN2QixLQUFLLENBQ0QsTUFBTSxFQUNOLEtBQUssQ0FBQztnQ0FDRixNQUFNLEVBQUUsQ0FBQztnQ0FDVCxPQUFPLEVBQUUsQ0FBQzs2QkFDYixDQUFDLENBQ0w7NEJBQ0QsS0FBSyxDQUNELEdBQUcsRUFDSCxLQUFLLENBQUM7Z0NBQ0YsTUFBTSxFQUFFLEdBQUc7Z0NBQ1gsT0FBTyxFQUFFLENBQUM7NkJBQ2IsQ0FBQyxDQUNMOzRCQUNELFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7eUJBQzVFLENBQUM7cUJBQ0w7OEJBV00sUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWNvbGxhcHNlLWxpbmsnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsYXBzZS1saW5rLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xsYXBzZS1saW5rLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdjb2xsYXBzZUNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndm9pZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJyonLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA8PT4gKicsIGFuaW1hdGUoJzQwMG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKScpKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGFwc2VMaW5rQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IG5leHRJZFNlZWQgPSAwO1xuICAgIHByaXZhdGUgc3RhdGljIF9uZXh0SWQgPSBDb2xsYXBzZUxpbmtDb21wb25lbnQubmV4dElkU2VlZDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmV4dElkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uZXh0SWQrKztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBidXR0b25JZCA9IGBzLWNvbGxhcHNlLWJ1dHRvbi0ke0NvbGxhcHNlTGlua0NvbXBvbmVudC5nZXROZXh0SWQoKX1gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWRMYWJlbCA9ICdNb3N0cmFyIG1lbm9zJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbGxhcHNlZExhYmVsID0gJ01vc3RyYXIgbWFpcyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sbGFwc2UgPSB0cnVlO1xuXG4gICAgcHVibGljIGNvbGxhcHNlZCA9IHRydWU7XG4gICAgcHVibGljIGFuaW1hdGluZyA9IGZhbHNlO1xuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlc1snY29sbGFwc2UnXSkge1xuICAgICAgICAgICAgdGhpcy5vbkNvbGxhcHNlKGNoYW5nZXNbJ2NvbGxhcHNlJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub2dnbGVEb25lKCkge1xuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbGxhcHNlKGNvbGxhcHNlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IGNvbGxhcHNlO1xuICAgIH1cbn1cbiIsIkBpZiAoIWNvbGxhcHNlZCkge1xuICAgIDxkaXZcbiAgICAgICAgQGNvbGxhcHNlQ29udGVudFxuICAgICAgICAoQGNvbGxhcHNlQ29udGVudC5kb25lKT1cIm9uVG9nZ2xlRG9uZSgpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbn1cblxuPGJ1dHRvblxuICAgIFtpZF09XCJidXR0b25JZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzLWNvbGxhcHNlLWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwicy1idXR0b24taWNvbiBmYVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZhLWNhcmV0LWRvd24nOiBjb2xsYXBzZWQsICdmYS1jYXJldC11cCc6ICFjb2xsYXBzZWQgfVwiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInMtYnV0dG9uLXRleHRcIj57e1xuICAgICAgICBjb2xsYXBzZWQgPyBjb2xsYXBzZWRMYWJlbCA6IGV4cGFuZGVkTGFiZWxcbiAgICB9fTwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2UtbGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29sbGFwc2UtbGluay9zcmMvbGliL2NvbGxhcHNlLWxpbmsvY29sbGFwc2UtbGluay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY29sbGFwc2UtbGluay9zcmMvbGliL2NvbGxhcHNlLWxpbmsvY29sbGFwc2UtbGluay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQzs7O0FBRTNFOzs7Ozs7Ozs7Ozs7R0FZRztBQXlCSCxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLE1BQU0sQ0FBVSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDO0lBRW5ELE1BQU0sQ0FBQyxTQUFTO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCw4RkFBOEY7SUFFdkYsUUFBUSxHQUFHLHFCQUFxQixxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBRTNFLDZGQUE2RjtJQUV0RixhQUFhLEdBQUcsZUFBZSxDQUFDO0lBRXZDLDRGQUE0RjtJQUVyRixjQUFjLEdBQUcsY0FBYyxDQUFDO0lBRXZDLGdFQUFnRTtJQUV6RCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXhCLHlGQUF5RjtJQUVsRixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWhCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUV6QixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU07UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxRQUFpQjtRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7d0dBekRRLHFCQUFxQjs0RkFBckIscUJBQXFCLDROQ3hDbEMsK2xCQTBCQSwrc0NETmdCO1lBQ1IsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUN2QixLQUFLLENBQ0QsTUFBTSxFQUNOLEtBQUssQ0FBQztvQkFDRixNQUFNLEVBQUUsQ0FBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQztpQkFDYixDQUFDLENBQ0w7Z0JBQ0QsS0FBSyxDQUNELEdBQUcsRUFDSCxLQUFLLENBQUM7b0JBQ0YsTUFBTSxFQUFFLEdBQUc7b0JBQ1gsT0FBTyxFQUFFLENBQUM7aUJBQ2IsQ0FBQyxDQUNMO2dCQUNELFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7YUFDNUUsQ0FBQztTQUNMOzs0RkFFUSxxQkFBcUI7a0JBeEJqQyxTQUFTOytCQUNJLGlCQUFpQixjQUdmO3dCQUNSLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTs0QkFDdkIsS0FBSyxDQUNELE1BQU0sRUFDTixLQUFLLENBQUM7Z0NBQ0YsTUFBTSxFQUFFLENBQUM7Z0NBQ1QsT0FBTyxFQUFFLENBQUM7NkJBQ2IsQ0FBQyxDQUNMOzRCQUNELEtBQUssQ0FDRCxHQUFHLEVBQ0gsS0FBSyxDQUFDO2dDQUNGLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxDQUFDOzZCQUNiLENBQUMsQ0FDTDs0QkFDRCxVQUFVLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO3lCQUM1RSxDQUFDO3FCQUNMOzhCQVlNLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQUtDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBS0MsUUFBUTtzQkFEZCxLQUFLO2dCQUtDLFFBQVE7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgbGluayBleHBhbnNvciBxdWUgbW9zdHJhL29jdWx0YSBjb250ZcO6ZG8gdHJhbnNjbHVzw6NvXG4gKiBjb20gYW5pbWHDp8OjbyBkZSBjb2xhcHNvLiBFeGliZSByw7N0dWxvcyBkaWZlcmVudGVzIHBhcmEgb3MgZXN0YWRvcyBleHBhbmRpZG8gZSBjb2xhcHNhZG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLWNvbGxhcHNlLWxpbmsgZXhwYW5kZWRMYWJlbD1cIlZlciBtZW5vc1wiIGNvbGxhcHNlZExhYmVsPVwiVmVyIG1haXNcIj5cbiAqICAgPHA+Q29udGXDumRvIG9jdWx0bzwvcD5cbiAqIDwvcy1jb2xsYXBzZS1saW5rPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IFN0cnVjdHVyZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY29sbGFwc2UtbGluaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNlLWxpbmsuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbGxhcHNlLWxpbmsuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2NvbGxhcHNlQ29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICd2b2lkJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnKicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkIDw9PiAqJywgYW5pbWF0ZSgnNDAwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpJykpLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzZUxpbmtDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgbmV4dElkU2VlZCA9IDA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX25leHRJZCA9IENvbGxhcHNlTGlua0NvbXBvbmVudC5uZXh0SWRTZWVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXROZXh0SWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25leHRJZCsrO1xuICAgIH1cblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciBkbyBib3TDo28gZGUgdG9nZ2xlLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJ1dHRvbklkID0gYHMtY29sbGFwc2UtYnV0dG9uLSR7Q29sbGFwc2VMaW5rQ29tcG9uZW50LmdldE5leHRJZCgpfWA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFLDs3R1bG8gZXhpYmlkbyBxdWFuZG8gbyBjb250ZcO6ZG8gZXN0w6EgZXhwYW5kaWRvLiBAZGVmYXVsdCAnTW9zdHJhciBtZW5vcycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBhbmRlZExhYmVsID0gJ01vc3RyYXIgbWVub3MnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBSw7N0dWxvIGV4aWJpZG8gcXVhbmRvIG8gY29udGXDumRvIGVzdMOhIGNvbGFwc2Fkby4gQGRlZmF1bHQgJ01vc3RyYXIgbWFpcycgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZWRMYWJlbCA9ICdNb3N0cmFyIG1haXMnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZXNhYmlsaXRhIG8gYm90w6NvIGRlIHRvZ2dsZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBDb250cm9sYSBleHRlcm5hbWVudGUgbyBlc3RhZG8gY29sYXBzYWRvIGRvIGNvbXBvbmVudGUuIEBkZWZhdWx0IHRydWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZSA9IHRydWU7XG5cbiAgICBwdWJsaWMgY29sbGFwc2VkID0gdHJ1ZTtcbiAgICBwdWJsaWMgYW5pbWF0aW5nID0gZmFsc2U7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydjb2xsYXBzZSddKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ29sbGFwc2UoY2hhbmdlc1snY29sbGFwc2UnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvZ2dsZURvbmUoKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29sbGFwc2UoY29sbGFwc2U6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gY29sbGFwc2U7XG4gICAgfVxufVxuXG4iLCJAaWYgKCFjb2xsYXBzZWQpIHtcbiAgICA8ZGl2XG4gICAgICAgIEBjb2xsYXBzZUNvbnRlbnRcbiAgICAgICAgKEBjb2xsYXBzZUNvbnRlbnQuZG9uZSk9XCJvblRvZ2dsZURvbmUoKVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG59XG5cbjxidXR0b25cbiAgICBbaWRdPVwiYnV0dG9uSWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwicy1jb2xsYXBzZS1idXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInMtYnV0dG9uLWljb24gZmFcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdmYS1jYXJldC1kb3duJzogY29sbGFwc2VkLCAnZmEtY2FyZXQtdXAnOiAhY29sbGFwc2VkIH1cIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzLWJ1dHRvbi10ZXh0XCI+e3tcbiAgICAgICAgY29sbGFwc2VkID8gY29sbGFwc2VkTGFiZWwgOiBleHBhbmRlZExhYmVsXG4gICAgfX08L3NwYW4+XG48L2J1dHRvbj5cbiJdfQ==