@seniorsistemas/angular-components 19.0.5 → 19.0.6

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 +34 -16
  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 +28 -10
  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 +12 -12
  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
@@ -5,6 +5,25 @@ import { ButtonModule } from '@seniorsistemas/angular-components/button';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@seniorsistemas/angular-components/template";
7
7
  import * as i2 from "@seniorsistemas/angular-components/button";
8
+ /**
9
+ * @description Componente interno do diálogo de confirmação, renderizado pelo `ConfirmDialogService`.
10
+ * Exibe uma janela modal com uma mensagem, título e botões de aceitar e rejeitar configuráveis.
11
+ * Não deve ser instanciado diretamente; utilize `ConfirmDialogService.open()` para exibi-lo.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Uso via serviço
16
+ * this.confirmDialogService.open({
17
+ * header: 'Confirmar exclusão',
18
+ * message: 'Deseja realmente excluir este item?',
19
+ * acceptLabel: 'Excluir',
20
+ * rejectLabel: 'Cancelar',
21
+ * accept: () => this.delete(),
22
+ * });
23
+ * ```
24
+ *
25
+ * @category Overlay
26
+ */
8
27
  export class PopupConfirmDialogComponent {
9
28
  confirmDialog;
10
29
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PopupConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -14,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
14
33
  type: Component,
15
34
  args: [{ standalone: true, imports: [DialogComponent, TemplateModule, ButtonModule], template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n label=\"A\u00E7\u00E3o secund\u00E1ria\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n priority=\"primary\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n" }]
16
35
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL3NyYy9saWIvcG9wdXAtY29uZmlybS1kaWFsb2cvcG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL3NyYy9saWIvcG9wdXAtY29uZmlybS1kaWFsb2cvcG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7OztBQU96RSxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLGFBQWEsQ0FBZ0I7d0dBRGxCLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHdFQ1h4QyxxcUNBK0JBLDRDRHZCWSxlQUFlLGlMQUFFLGNBQWMsaUlBQUUsWUFBWTs7NEZBRzVDLDJCQUEyQjtrQkFMdkMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZyB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nLm1vZGVsJztcbmltcG9ydCB7IFRlbXBsYXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90ZW1wbGF0ZSc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2J1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRGlhbG9nQ29tcG9uZW50LCBUZW1wbGF0ZU1vZHVsZSwgQnV0dG9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcHVwLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUG9wdXBDb25maXJtRGlhbG9nQ29tcG9uZW50IHtcbiAgY29uZmlybURpYWxvZyE6IENvbmZpcm1EaWFsb2dcbn1cbiIsIkBpZiAoY29uZmlybURpYWxvZykge1xuICAgIDxzLWRpYWxvZyBbaGVhZGVyXT1cImNvbmZpcm1EaWFsb2cuaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTEyXCI+XG4gICAgICAgICAgICAgICAge3sgY29uZmlybURpYWxvZy5tZXNzYWdlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgc1RlbXBsYXRlPVwiZm9vdGVyXCJcbiAgICAgICAgICAgIGxldC1hY3RpdmVEaWFsb2c9XCJhY3RpdmVEaWFsb2dcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tMTIgZmxleCBmbGV4LXdyYXAganVzdGlmeS1lbmQgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb25maXJtRGlhbG9nLnJlamVjdExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29uZmlybURpYWxvZy5yZWplY3RMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiYWN0aXZlRGlhbG9nLmNsb3NlKGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJBw6fDo28gc2VjdW5kw6FyaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpcm1EaWFsb2cuYWNjZXB0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiYWN0aXZlRGlhbG9nLmNsb3NlKHRydWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3MtZGlhbG9nPlxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL3NyYy9saWIvcG9wdXAtY29uZmlybS1kaWFsb2cvcG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL3NyYy9saWIvcG9wdXAtY29uZmlybS1kaWFsb2cvcG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7OztBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBTUgsTUFBTSxPQUFPLDJCQUEyQjtJQUNwQyxhQUFhLENBQWlCO3dHQURyQiwyQkFBMkI7NEZBQTNCLDJCQUEyQix3RUM5QnhDLHFxQ0ErQkEsNENESmMsZUFBZSxpTEFBRSxjQUFjLGlJQUFFLFlBQVk7OzRGQUc5QywyQkFBMkI7a0JBTHZDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2cgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy5tb2RlbCc7XG5pbXBvcnQgeyBUZW1wbGF0ZU1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b24nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIGludGVybm8gZG8gZGnDoWxvZ28gZGUgY29uZmlybWHDp8OjbywgcmVuZGVyaXphZG8gcGVsbyBgQ29uZmlybURpYWxvZ1NlcnZpY2VgLlxuICogRXhpYmUgdW1hIGphbmVsYSBtb2RhbCBjb20gdW1hIG1lbnNhZ2VtLCB0w610dWxvIGUgYm90w7VlcyBkZSBhY2VpdGFyIGUgcmVqZWl0YXIgY29uZmlndXLDoXZlaXMuXG4gKiBOw6NvIGRldmUgc2VyIGluc3RhbmNpYWRvIGRpcmV0YW1lbnRlOyB1dGlsaXplIGBDb25maXJtRGlhbG9nU2VydmljZS5vcGVuKClgIHBhcmEgZXhpYmktbG8uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBVc28gdmlhIHNlcnZpw6dvXG4gKiB0aGlzLmNvbmZpcm1EaWFsb2dTZXJ2aWNlLm9wZW4oe1xuICogICBoZWFkZXI6ICdDb25maXJtYXIgZXhjbHVzw6NvJyxcbiAqICAgbWVzc2FnZTogJ0Rlc2VqYSByZWFsbWVudGUgZXhjbHVpciBlc3RlIGl0ZW0/JyxcbiAqICAgYWNjZXB0TGFiZWw6ICdFeGNsdWlyJyxcbiAqICAgcmVqZWN0TGFiZWw6ICdDYW5jZWxhcicsXG4gKiAgIGFjY2VwdDogKCkgPT4gdGhpcy5kZWxldGUoKSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IE92ZXJsYXlcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRGlhbG9nQ29tcG9uZW50LCBUZW1wbGF0ZU1vZHVsZSwgQnV0dG9uTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcG9wdXAtY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQb3B1cENvbmZpcm1EaWFsb2dDb21wb25lbnQge1xuICAgIGNvbmZpcm1EaWFsb2chOiBDb25maXJtRGlhbG9nO1xufVxuXG4iLCJAaWYgKGNvbmZpcm1EaWFsb2cpIHtcbiAgICA8cy1kaWFsb2cgW2hlYWRlcl09XCJjb25maXJtRGlhbG9nLmhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc3Bhbi0xMlwiPlxuICAgICAgICAgICAgICAgIHt7IGNvbmZpcm1EaWFsb2cubWVzc2FnZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIHNUZW1wbGF0ZT1cImZvb3RlclwiXG4gICAgICAgICAgICBsZXQtYWN0aXZlRGlhbG9nPVwiYWN0aXZlRGlhbG9nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTEyIGZsZXggZmxleC13cmFwIGp1c3RpZnktZW5kIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoY29uZmlybURpYWxvZy5yZWplY3RMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpcm1EaWFsb2cucmVqZWN0TGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImFjdGl2ZURpYWxvZy5jbG9zZShmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiQcOnw6NvIHNlY3VuZMOhcmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb25maXJtRGlhbG9nLmFjY2VwdExhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImFjdGl2ZURpYWxvZy5jbG9zZSh0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9zLWRpYWxvZz5cbn1cbiJdfQ==
@@ -16,6 +16,24 @@ import * as i9 from "@seniorsistemas/angular-components/text-area";
16
16
  import * as i10 from "@seniorsistemas/angular-components/dialog";
17
17
  import * as i11 from "@seniorsistemas/angular-components/template";
18
18
  import * as i12 from "@seniorsistemas/angular-components/common";
19
+ /**
20
+ * @description Componente de área de texto com geração de conteúdo por inteligência artificial.
21
+ * Integra-se ao serviço IAssist para sugerir e completar textos com base em um prompt configurável.
22
+ * Suporta reconhecimento de voz opcional e mantém contexto entre gerações quando `keepContext` é `true`.
23
+ * Implementa {@link ControlValueAccessor} para uso em formulários Angular.
24
+ *
25
+ * @example
26
+ * ```html
27
+ * <s-content-generator
28
+ * formControlName="descricao"
29
+ * label="Descrição"
30
+ * prompt="Gere uma descrição para o produto"
31
+ * [rows]="5"
32
+ * [speechRecognition]="true" />
33
+ * ```
34
+ *
35
+ * @category Inputs
36
+ */
19
37
  export class ContentGeneratorComponent {
20
38
  _iassistService;
21
39
  _formBuilder;
@@ -24,17 +42,29 @@ export class ContentGeneratorComponent {
24
42
  injector;
25
43
  textArea = viewChild('textAreaElement');
26
44
  static id = 0;
45
+ /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
27
46
  id = `ContentGenerator_${ContentGeneratorComponent.id--}`;
47
+ /** @description Label exibido acima da área de texto. */
28
48
  label;
49
+ /** @description Texto de placeholder exibido na área de texto quando vazia. @default '' */
29
50
  placeholder = '';
51
+ /** @description Instrução (prompt) enviada ao serviço de IA para gerar o conteúdo sugerido. */
30
52
  prompt;
53
+ /** @description Torna a área de texto somente leitura. @default false */
31
54
  readonly = false;
55
+ /** @description Número de linhas visíveis da área de texto. @default 10 */
32
56
  rows = 10;
57
+ /** @description Número de colunas visíveis da área de texto. @default 10 */
33
58
  cols = 10;
59
+ /** @description Habilita o botão de reconhecimento de voz para ditado de texto. @default false */
34
60
  speechRecognition = false;
61
+ /** @description Quando `true`, o histórico de gerações anteriores é enviado ao serviço de IA como contexto. @default false */
35
62
  keepContext = false;
63
+ /** @description Texto de placeholder exibido no campo de reconhecimento de voz. @default '' */
36
64
  speechRecognitionPlaceholder = '';
65
+ /** @description Limite máximo de caracteres permitidos na área de texto. `null` desabilita o limite. @default null */
37
66
  maxLength = null;
67
+ /** @description Estilos CSS inline aplicados à área de texto interna. */
38
68
  textAreaStyle = input({});
39
69
  formGroup = new FormGroup({});
40
70
  contextForm = new FormGroup({});
@@ -167,4 +197,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
167
197
  }], maxLength: [{
168
198
  type: Input
169
199
  }] } });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRlbnQtZ2VuZXJhdG9yL3NyYy9saWIvY29udGVudC1nZW5lcmF0b3IvY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRlbnQtZ2VuZXJhdG9yL3NyYy9saWIvY29udGVudC1nZW5lcmF0b3IvY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUcsT0FBTyxFQUFxQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLDJCQUEyQixHQUM5QixNQUFNLCtEQUErRCxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQTJCNUMsTUFBTSxPQUFPLHlCQUF5QjtJQWdEYjtJQUNBO0lBQ0E7SUFDVjtJQUVDO0lBcERaLFFBQVEsR0FBRyxTQUFTLENBQW9CLGlCQUFpQixDQUFDLENBQUM7SUFDbkQsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFZixFQUFFLEdBQUcsb0JBQW9CLHlCQUF5QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFHMUQsS0FBSyxDQUFVO0lBR2YsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUd6QixNQUFNLENBQVU7SUFHaEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUcxQixJQUFJLEdBQVcsRUFBRSxDQUFDO0lBR2xCLElBQUksR0FBVyxFQUFFLENBQUM7SUFHbEIsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRzFCLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFHM0IsNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0lBR2xDLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBRWhDLGFBQWEsR0FBRyxLQUFLLENBQStCLEVBQUUsQ0FBQyxDQUFDO0lBRWpELFNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxXQUFXLEdBQWMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFVixTQUFTLENBQTJCO0lBQ3BDLFVBQVUsQ0FBYztJQUVoQyxZQUNxQixlQUErQixFQUFFLG1DQUFtQztJQUNwRSxZQUF5QixFQUN6QixpQkFBbUMsRUFDN0Msd0JBQWtELEVBRWpELFFBQWtCO1FBTFQsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3pCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDN0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUVqRCxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQzNCLENBQUM7SUFFRyxRQUFRO1FBQ1gsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFhO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxRQUFpQztRQUNyRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRU0saUJBQWlCLENBQUMsU0FBcUI7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLGVBQWU7YUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNsQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUNELFVBQVUsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FDTDthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQW9CLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sc0JBQXNCO1FBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDckMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2hCLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBL0hRLHlCQUF5Qjs0RkFBekIseUJBQXlCLG1xREFsQnZCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDeEQsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRTtvQkFDTixXQUFXLEVBQUUsZ0JBQWdCO29CQUM3QixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxjQUFjLEVBQUUsUUFBUTtpQkFDM0I7YUFDSjtTQUNKLHdOQ3RDTCwrd0ZBd0ZBOzs0RkQ5Q2EseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDSSxxQ0FBcUMsYUFHcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMEJBQTBCLENBQUM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRTtnQ0FDTixXQUFXLEVBQUUsZ0JBQWdCO2dDQUM3QixXQUFXLEVBQUUscUJBQXFCO2dDQUNsQyxjQUFjLEVBQUUsUUFBUTs2QkFDM0I7eUJBQ0o7cUJBQ0osa0JBQ2UsQ0FBQywyQkFBMkIsQ0FBQyxpQkFDOUIsaUJBQWlCLENBQUMsSUFBSTswTUFNOUIsRUFBRTtzQkFEUixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJTiw0QkFBNEI7c0JBRDNCLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIGlucHV0LCBJbnB1dCwgT25Jbml0LCB2aWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBERVBSRUNBVEVEX0NPTkZJRyxcbiAgICBEZXByZWNhdGVkU2VsZWN0b3JEaXJlY3RpdmUsXG59IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvY29tbW9uL2RlcHJlY2F0ZWQtc2VsZWN0b3InO1xuaW1wb3J0IHsgU3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zcGVlY2gtcmVjb2duaXRpb24nO1xuaW1wb3J0IHsgVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3RleHQtYXJlYSc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJQXNzaXN0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL0lBc3Npc3QvaWFzc2lzdC5zZXJ2aWNlJztcbmltcG9ydCB7IElBc3Npc3RSZXNwb25zZSB9IGZyb20gJy4uL3NlcnZpY2VzL0lBc3Npc3QvbW9kZWxzL2lhc3Npc3QtcmVzcG9uc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY29udGVudC1nZW5lcmF0b3IsIHMtdGV4dC1hcmVhLWlhJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQtZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29udGVudEdlbmVyYXRvckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogREVQUkVDQVRFRF9DT05GSUcsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIG9sZFNlbGVjdG9yOiAncy10ZXh0LWFyZWEtaWEnLFxuICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yOiAncy1jb250ZW50LWdlbmVyYXRvcicsXG4gICAgICAgICAgICAgICAgcmVtb3ZhbFZlcnNpb246ICcyMC4wLjAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbRGVwcmVjYXRlZFNlbGVjdG9yRGlyZWN0aXZlXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50R2VuZXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgdGV4dEFyZWEgPSB2aWV3Q2hpbGQ8VGV4dEFyZWFDb21wb25lbnQ+KCd0ZXh0QXJlYUVsZW1lbnQnKTtcbiAgICBwcml2YXRlIHN0YXRpYyBpZCA9IDA7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgQ29udGVudEdlbmVyYXRvcl8ke0NvbnRlbnRHZW5lcmF0b3JDb21wb25lbnQuaWQtLX1gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbGFiZWwhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwcm9tcHQhOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93czogbnVtYmVyID0gMTA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xzOiBudW1iZXIgPSAxMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwZWVjaFJlY29nbml0aW9uID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBrZWVwQ29udGV4dCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0ZXh0QXJlYVN0eWxlID0gaW5wdXQ8UGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPj4oe30pO1xuXG4gICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgcHVibGljIGNvbnRleHRGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwdWJsaWMgaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHB1YmxpYyB2YWx1ZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ/OiAoKSA9PiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2lhc3Npc3RTZXJ2aWNlOiBJQXNzaXN0U2VydmljZSwgLy8gVE9ETzogTW92ZXIgcHJhIHVtYSBwYXN0YSBnbG9iYWxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlOiBTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UsXG5cbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIC8vIE5lY2Vzc8OhcmlvIHBhcmEgbyBkZWNvcmF0b3IgRGVwcmVjYXRlZFNlbGVjdG9yIGZ1bmNpb25hclxuICAgICkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlRGlhbG9nRm9ybUdyb3VwKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLl9vblRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhpZGVEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSGlkZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWaXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdjb250ZXh0Jyk/LnNldFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdWJtaXRDb250ZXh0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdjb250ZXh0Jyk7XG4gICAgICAgIGlmICghY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9pYXNzaXN0U2VydmljZVxuICAgICAgICAgICAgLmFza0lBKGNvbnRleHQudmFsdWUsIHtcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBwcm9tcHQ6IHRoaXMucHJvbXB0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVyci5tZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IElBc3Npc3RSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSByZXMudGV4dDtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZT8uKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmhpZGVEaWFsb2coKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jcmVhdGVEaWFsb2dGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgY29udGV4dDogWycnXSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4iLCI8cy1sb2FkaW5nLXN0YXRlXG4gICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICBbYmxvY2tXaW5kb3ddPVwidHJ1ZVwiXG4+XG48L3MtbG9hZGluZy1zdGF0ZT5cblxuPHMtZGlhbG9nXG4gICAgWyh2aXNpYmxlKV09XCJpc1Zpc2libGVcIlxuICAgIFtlc2NhcGVPbkVzY109XCJmYWxzZVwiXG4gICAgW2Rlc3Ryb3lDbGlja091dHNpZGVdPVwiZmFsc2VcIlxuICAgIHNpemU9XCJsZ1wiXG4gICAgKHZpc2libGVDaGFuZ2UpPVwib25IaWRlRGlhbG9nKClcIlxuPlxuICAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWFzc2lzdC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpYXNzaXN0SWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgSUFzc2lzdCAtIENvbnRlbnQgR2VuZXJhdG9yXG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiY29udGV4dFwiPnt7ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY29udGV4dCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICA8cy10ZXh0YXJlYVxuICAgICAgICAgICAgaW5wdXRJZD1cImNvbnRleHRcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29udGV4dFwiXG4gICAgICAgICAgICBbc3BlZWNoUmVjb2duaXRpb25dPVwic3BlZWNoUmVjb2duaXRpb25cIlxuICAgICAgICAgICAgW2tlZXBDb250ZXh0XT1cImtlZXBDb250ZXh0XCJcbiAgICAgICAgLz5cbiAgICA8L2Zvcm0+XG5cbiAgICA8bmctdGVtcGxhdGUgc1RlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItY29udGVudFwiPlxuICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCItc3VibWl0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZ2VuZXJhdGVfdGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInN1Ym1pdENvbnRleHQoKVwiXG4gICAgICAgICAgICAgICAgc1Rvb2x0aXA9XCIoQUxUICsgU0hJRlQgKyBTKVwiXG4gICAgICAgICAgICAgICAgc2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIi1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNhbmNlbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImhpZGVEaWFsb2coKVwiXG4gICAgICAgICAgICAgICAgc1Rvb2x0aXA9XCIoQUxUICsgU0hJRlQgKyBDKVwiXG4gICAgICAgICAgICAgICAgc2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3MtZGlhbG9nPlxuXG48ZGl2IGNsYXNzPVwidGV4dGFyZWEtaWFcIj5cbiAgICA8cy10ZXh0YXJlYVxuICAgICAgICAjdGV4dEFyZWFFbGVtZW50XG4gICAgICAgIFtpbnB1dElkXT1cImlkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxuICAgICAgICBbc3BlZWNoUmVjb2duaXRpb25QbGFjZWhvbGRlcl09XCJzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXCJcbiAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICBbc3BlZWNoUmVjb2duaXRpb25dPVwic3BlZWNoUmVjb2duaXRpb25cIlxuICAgID5cbiAgICA8L3MtdGV4dGFyZWE+XG4gICAgPCEtLVRPRE86IFRvb2x0aXAgZW0gcHJvcHJpZWRhZGUtLT5cbiAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiaWFzc2lzdC1idXR0b25cIlxuICAgICAgICBbY2xhc3Muc3BlZWNoLXJlY29nbml0aW9uXT1cInNwZWVjaFJlY29nbml0aW9uICYmIHNwZWVjaFJlY29nbml0aW9uU2VydmljZS5oYXNTdXBwb3J0U3BlZWNoUmVjb2duaXRpb25cIlxuICAgICAgICAoY2xpY2spPVwic2hvd0RpYWxvZygpXCJcbiAgICAgICAgc1Rvb2x0aXA9XCJJQXNzaXN0IC0gQ29udGVudCBHZW5lcmF0b3JcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpYXNzaXN0SWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaWFzc2lzdEljb24+XG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgIDxzcGFuICpzU1ZHRmFjdG9yeT1cIidpYXNzaXN0J1wiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRlbnQtZ2VuZXJhdG9yL3NyYy9saWIvY29udGVudC1nZW5lcmF0b3IvY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRlbnQtZ2VuZXJhdG9yL3NyYy9saWIvY29udGVudC1nZW5lcmF0b3IvY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJMUcsT0FBTyxFQUFxQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLDJCQUEyQixHQUM5QixNQUFNLCtEQUErRCxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUs1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUF1QkgsTUFBTSxPQUFPLHlCQUF5QjtJQTZEYjtJQUNBO0lBQ0E7SUFDVjtJQUVDO0lBakVaLFFBQVEsR0FBRyxTQUFTLENBQW9CLGlCQUFpQixDQUFDLENBQUM7SUFDbkQsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdEIsc0dBQXNHO0lBRS9GLEVBQUUsR0FBRyxvQkFBb0IseUJBQXlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVqRSx5REFBeUQ7SUFFbEQsS0FBSyxDQUFVO0lBRXRCLDJGQUEyRjtJQUVwRixXQUFXLEdBQVcsRUFBRSxDQUFDO0lBRWhDLCtGQUErRjtJQUV4RixNQUFNLENBQVU7SUFFdkIseUVBQXlFO0lBRWxFLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFakMsMkVBQTJFO0lBRXBFLElBQUksR0FBVyxFQUFFLENBQUM7SUFFekIsNEVBQTRFO0lBRXJFLElBQUksR0FBVyxFQUFFLENBQUM7SUFFekIsa0dBQWtHO0lBRTNGLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUVqQyw4SEFBOEg7SUFFdkgsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUUzQiwrRkFBK0Y7SUFFL0YsNEJBQTRCLEdBQUcsRUFBRSxDQUFDO0lBRWxDLHNIQUFzSDtJQUV0SCxTQUFTLEdBQWtCLElBQUksQ0FBQztJQUVoQyx5RUFBeUU7SUFDekUsYUFBYSxHQUFHLEtBQUssQ0FBK0IsRUFBRSxDQUFDLENBQUM7SUFFakQsU0FBUyxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFdBQVcsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVWLFNBQVMsQ0FBMkI7SUFDcEMsVUFBVSxDQUFjO0lBRWhDLFlBQ3FCLGVBQStCLEVBQUUsbUNBQW1DO0lBQ3BFLFlBQXlCLEVBQ3pCLGlCQUFtQyxFQUM3Qyx3QkFBa0QsRUFFakQsUUFBa0I7UUFMVCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUM3Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBRWpELGFBQVEsR0FBUixRQUFRLENBQVU7SUFDM0IsQ0FBQztJQUVHLFFBQVE7UUFDWCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFFBQWlDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxTQUFxQjtRQUMxQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxVQUFVO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0wsQ0FBQztJQUVNLGFBQWE7UUFDaEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZTthQUNmLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2xCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQ0QsVUFBVSxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBb0IsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDaEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0E1SVEseUJBQXlCOzRGQUF6Qix5QkFBeUIsbXFEQWxCdkI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNkO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFO29CQUNOLFdBQVcsRUFBRSxnQkFBZ0I7b0JBQzdCLFdBQVcsRUFBRSxxQkFBcUI7b0JBQ2xDLGNBQWMsRUFBRSxRQUFRO2lCQUMzQjthQUNKO1NBQ0osd05DeERMLCt3RkF3RkE7OzRGRDVCYSx5QkFBeUI7a0JBdEJyQyxTQUFTOytCQUNJLHFDQUFxQyxhQUdwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFO2dDQUNOLFdBQVcsRUFBRSxnQkFBZ0I7Z0NBQzdCLFdBQVcsRUFBRSxxQkFBcUI7Z0NBQ2xDLGNBQWMsRUFBRSxRQUFROzZCQUMzQjt5QkFDSjtxQkFDSixrQkFDZSxDQUFDLDJCQUEyQixDQUFDLGlCQUM5QixpQkFBaUIsQ0FBQyxJQUFJOzBNQVE5QixFQUFFO3NCQURSLEtBQUs7Z0JBS0MsS0FBSztzQkFEWCxLQUFLO2dCQUtDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBS0MsTUFBTTtzQkFEWixLQUFLO2dCQUtDLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxJQUFJO3NCQURWLEtBQUs7Z0JBS0MsSUFBSTtzQkFEVixLQUFLO2dCQUtDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFLQyxXQUFXO3NCQURqQixLQUFLO2dCQUtOLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5wdXQsIElucHV0LCBPbkluaXQsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIERFUFJFQ0FURURfQ09ORklHLFxuICAgIERlcHJlY2F0ZWRTZWxlY3RvckRpcmVjdGl2ZSxcbn0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb21tb24vZGVwcmVjYXRlZC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2UgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NwZWVjaC1yZWNvZ25pdGlvbic7XG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGV4dC1hcmVhJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElBc3Npc3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvSUFzc2lzdC9pYXNzaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSUFzc2lzdFJlc3BvbnNlIH0gZnJvbSAnLi4vc2VydmljZXMvSUFzc2lzdC9tb2RlbHMvaWFzc2lzdC1yZXNwb25zZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgw6FyZWEgZGUgdGV4dG8gY29tIGdlcmHDp8OjbyBkZSBjb250ZcO6ZG8gcG9yIGludGVsaWfDqm5jaWEgYXJ0aWZpY2lhbC5cbiAqIEludGVncmEtc2UgYW8gc2VydmnDp28gSUFzc2lzdCBwYXJhIHN1Z2VyaXIgZSBjb21wbGV0YXIgdGV4dG9zIGNvbSBiYXNlIGVtIHVtIHByb21wdCBjb25maWd1csOhdmVsLlxuICogU3Vwb3J0YSByZWNvbmhlY2ltZW50byBkZSB2b3ogb3BjaW9uYWwgZSBtYW50w6ltIGNvbnRleHRvIGVudHJlIGdlcmHDp8O1ZXMgcXVhbmRvIGBrZWVwQ29udGV4dGAgw6kgYHRydWVgLlxuICogSW1wbGVtZW50YSB7QGxpbmsgQ29udHJvbFZhbHVlQWNjZXNzb3J9IHBhcmEgdXNvIGVtIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1jb250ZW50LWdlbmVyYXRvclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmljYW9cIlxuICogICBsYWJlbD1cIkRlc2NyacOnw6NvXCJcbiAqICAgcHJvbXB0PVwiR2VyZSB1bWEgZGVzY3Jpw6fDo28gcGFyYSBvIHByb2R1dG9cIlxuICogICBbcm93c109XCI1XCJcbiAqICAgW3NwZWVjaFJlY29nbml0aW9uXT1cInRydWVcIiAvPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IElucHV0c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY29udGVudC1nZW5lcmF0b3IsIHMtdGV4dC1hcmVhLWlhJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRlbnQtZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29udGVudEdlbmVyYXRvckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogREVQUkVDQVRFRF9DT05GSUcsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIG9sZFNlbGVjdG9yOiAncy10ZXh0LWFyZWEtaWEnLFxuICAgICAgICAgICAgICAgIG5ld1NlbGVjdG9yOiAncy1jb250ZW50LWdlbmVyYXRvcicsXG4gICAgICAgICAgICAgICAgcmVtb3ZhbFZlcnNpb246ICcyMC4wLjAnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbRGVwcmVjYXRlZFNlbGVjdG9yRGlyZWN0aXZlXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50R2VuZXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgdGV4dEFyZWEgPSB2aWV3Q2hpbGQ8VGV4dEFyZWFDb21wb25lbnQ+KCd0ZXh0QXJlYUVsZW1lbnQnKTtcbiAgICBwcml2YXRlIHN0YXRpYyBpZCA9IDA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIElkZW50aWZpY2Fkb3Igw7puaWNvIGRvIGNvbXBvbmVudGUgbm8gRE9NLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYENvbnRlbnRHZW5lcmF0b3JfJHtDb250ZW50R2VuZXJhdG9yQ29tcG9uZW50LmlkLS19YDtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGFiZWwgZXhpYmlkbyBhY2ltYSBkYSDDoXJlYSBkZSB0ZXh0by4gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbCE6IHN0cmluZztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVGV4dG8gZGUgcGxhY2Vob2xkZXIgZXhpYmlkbyBuYSDDoXJlYSBkZSB0ZXh0byBxdWFuZG8gdmF6aWEuIEBkZWZhdWx0ICcnICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBJbnN0cnXDp8OjbyAocHJvbXB0KSBlbnZpYWRhIGFvIHNlcnZpw6dvIGRlIElBIHBhcmEgZ2VyYXIgbyBjb250ZcO6ZG8gc3VnZXJpZG8uICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvbXB0ITogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUb3JuYSBhIMOhcmVhIGRlIHRleHRvIHNvbWVudGUgbGVpdHVyYS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGxpbmhhcyB2aXPDrXZlaXMgZGEgw6FyZWEgZGUgdGV4dG8uIEBkZWZhdWx0IDEwICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93czogbnVtYmVyID0gMTA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIE7Dum1lcm8gZGUgY29sdW5hcyB2aXPDrXZlaXMgZGEgw6FyZWEgZGUgdGV4dG8uIEBkZWZhdWx0IDEwICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sczogbnVtYmVyID0gMTA7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIEhhYmlsaXRhIG8gYm90w6NvIGRlIHJlY29uaGVjaW1lbnRvIGRlIHZveiBwYXJhIGRpdGFkbyBkZSB0ZXh0by4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGVlY2hSZWNvZ25pdGlvbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBRdWFuZG8gYHRydWVgLCBvIGhpc3TDs3JpY28gZGUgZ2VyYcOnw7VlcyBhbnRlcmlvcmVzIMOpIGVudmlhZG8gYW8gc2VydmnDp28gZGUgSUEgY29tbyBjb250ZXh0by4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBrZWVwQ29udGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBUZXh0byBkZSBwbGFjZWhvbGRlciBleGliaWRvIG5vIGNhbXBvIGRlIHJlY29uaGVjaW1lbnRvIGRlIHZvei4gQGRlZmF1bHQgJycgKi9cbiAgICBASW5wdXQoKVxuICAgIHNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXIgPSAnJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGltaXRlIG3DoXhpbW8gZGUgY2FyYWN0ZXJlcyBwZXJtaXRpZG9zIG5hIMOhcmVhIGRlIHRleHRvLiBgbnVsbGAgZGVzYWJpbGl0YSBvIGxpbWl0ZS4gQGRlZmF1bHQgbnVsbCAqL1xuICAgIEBJbnB1dCgpXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRXN0aWxvcyBDU1MgaW5saW5lIGFwbGljYWRvcyDDoCDDoXJlYSBkZSB0ZXh0byBpbnRlcm5hLiAqL1xuICAgIHRleHRBcmVhU3R5bGUgPSBpbnB1dDxQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+Pih7fSk7XG5cbiAgICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBwdWJsaWMgY29udGV4dEZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIHB1YmxpYyBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIHZhbHVlID0gJyc7XG5cbiAgICBwcml2YXRlIF9vbkNoYW5nZT86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgX29uVG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfaWFzc2lzdFNlcnZpY2U6IElBc3Npc3RTZXJ2aWNlLCAvLyBUT0RPOiBNb3ZlciBwcmEgdW1hIHBhc3RhIGdsb2JhbFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBzcGVlY2hSZWNvZ25pdGlvblNlcnZpY2U6IFNwZWVjaFJlY29nbml0aW9uU2VydmljZSxcblxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgLy8gTmVjZXNzw6FyaW8gcGFyYSBvIGRlY29yYXRvciBEZXByZWNhdGVkU2VsZWN0b3IgZnVuY2lvbmFyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jcmVhdGVEaWFsb2dGb3JtR3JvdXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2U/Lih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuX29uVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZURpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25IaWRlRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1Zpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NvbnRleHQnKT8uc2V0VmFsdWUoJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN1Ym1pdENvbnRleHQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2NvbnRleHQnKTtcbiAgICAgICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX2lhc3Npc3RTZXJ2aWNlXG4gICAgICAgICAgICAuYXNrSUEoY29udGV4dC52YWx1ZSwge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgIHByb21wdDogdGhpcy5wcm9tcHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyLm1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlczogSUFzc2lzdFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHJlcy50ZXh0O1xuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlPy4odGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NyZWF0ZURpYWxvZ0Zvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLl9mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBjb250ZXh0OiBbJyddLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbiIsIjxzLWxvYWRpbmctc3RhdGVcbiAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgIFtibG9ja1dpbmRvd109XCJ0cnVlXCJcbj5cbjwvcy1sb2FkaW5nLXN0YXRlPlxuXG48cy1kaWFsb2dcbiAgICBbKHZpc2libGUpXT1cImlzVmlzaWJsZVwiXG4gICAgW2VzY2FwZU9uRXNjXT1cImZhbHNlXCJcbiAgICBbZGVzdHJveUNsaWNrT3V0c2lkZV09XCJmYWxzZVwiXG4gICAgc2l6ZT1cImxnXCJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJvbkhpZGVEaWFsb2coKVwiXG4+XG4gICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpYXNzaXN0LWljb25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImlhc3Npc3RJY29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBJQXNzaXN0IC0gQ29udGVudCBHZW5lcmF0b3JcbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJjb250ZXh0XCI+e3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb250ZXh0JyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgIDxzLXRleHRhcmVhXG4gICAgICAgICAgICBpbnB1dElkPVwiY29udGV4dFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb250ZXh0XCJcbiAgICAgICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvbl09XCJzcGVlY2hSZWNvZ25pdGlvblwiXG4gICAgICAgICAgICBba2VlcENvbnRleHRdPVwia2VlcENvbnRleHRcIlxuICAgICAgICAvPlxuICAgIDwvZm9ybT5cblxuICAgIDxuZy10ZW1wbGF0ZSBzVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1jb250ZW50XCI+XG4gICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIi1zdWJtaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5nZW5lcmF0ZV90ZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic3VibWl0Q29udGV4dCgpXCJcbiAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIFMpXCJcbiAgICAgICAgICAgICAgICBzaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHByaW9yaXR5PVwibGlua1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGlkZURpYWxvZygpXCJcbiAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIEMpXCJcbiAgICAgICAgICAgICAgICBzaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvcy1kaWFsb2c+XG5cbjxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS1pYVwiPlxuICAgIDxzLXRleHRhcmVhXG4gICAgICAgICN0ZXh0QXJlYUVsZW1lbnRcbiAgICAgICAgW2lucHV0SWRdPVwiaWRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3Jvd3NdPVwicm93c1wiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtrZWVwQ29udGV4dF09XCJrZWVwQ29udGV4dFwiXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvblBsYWNlaG9sZGVyXT1cInNwZWVjaFJlY29nbml0aW9uUGxhY2Vob2xkZXJcIlxuICAgICAgICBbbWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgIFtzcGVlY2hSZWNvZ25pdGlvbl09XCJzcGVlY2hSZWNvZ25pdGlvblwiXG4gICAgPlxuICAgIDwvcy10ZXh0YXJlYT5cbiAgICA8IS0tVE9ETzogVG9vbHRpcCBlbSBwcm9wcmllZGFkZS0tPlxuICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJpYXNzaXN0LWJ1dHRvblwiXG4gICAgICAgIFtjbGFzcy5zcGVlY2gtcmVjb2duaXRpb25dPVwic3BlZWNoUmVjb2duaXRpb24gJiYgc3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlLmhhc1N1cHBvcnRTcGVlY2hSZWNvZ25pdGlvblwiXG4gICAgICAgIChjbGljayk9XCJzaG93RGlhbG9nKClcIlxuICAgICAgICBzVG9vbHRpcD1cIklBc3Npc3QgLSBDb250ZW50IEdlbmVyYXRvclwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImlhc3Npc3RJY29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpYXNzaXN0SWNvbj5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgPHNwYW4gKnNTVkdGYWN0b3J5PVwiJ2lhc3Npc3QnXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,6 +1,21 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { Subject, takeUntil } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * @description Componente que exibe as mensagens de erro de validação associadas a um controle de formulário.
6
+ * Observa as alterações de estado do controle e renderiza as mensagens mapeadas em `errorMessages`.
7
+ * Compativel com `AbstractControl` do Reactive Forms e `NgModel` do Template-Driven Forms.
8
+ *
9
+ * @example
10
+ * ```html
11
+ * <s-control-errors
12
+ * [control]="form.get('email')"
13
+ * [errorMessages]="{ required: 'E-mail obrigatório', email: 'E-mail inválido' }"
14
+ * />
15
+ * ```
16
+ *
17
+ * @category Feedback
18
+ */
4
19
  export class ControlErrorsComponent {
5
20
  static nextIdSeed = 0;
6
21
  static RANDOM_ID_END_INDEX = 9;
@@ -9,9 +24,30 @@ export class ControlErrorsComponent {
9
24
  static getNextId() {
10
25
  return this._nextId++;
11
26
  }
27
+ /**
28
+ * @description Identificador único do componente. Gerado automaticamente se não informado.
29
+ * Usado para associação acessível com o campo correspondente.
30
+ */
12
31
  id = `s-control-errors-${ControlErrorsComponent.getNextId()}`;
32
+ /**
33
+ * @description Controle do formulário cujos erros serão exibidos.
34
+ * Aceita `AbstractControl` (Reactive Forms) ou `NgModel` (Template-Driven Forms). Campo obrigatório.
35
+ */
13
36
  control;
37
+ /**
38
+ * @description Mapa de chaves de erro para mensagens de texto exibidas ao usuário.
39
+ * Cada chave corresponde a um erro que pode estar presente em `control.errors`.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * { required: 'Campo obrigatório', minlength: 'Mínimo 8 caracteres' }
44
+ * ```
45
+ */
14
46
  errorMessages = {};
47
+ /**
48
+ * @description Referência ao formulário pai. Utilizado em cenários de validação customizada
49
+ * que dependem do estado geral do formulário.
50
+ */
15
51
  form;
16
52
  errorMessagesList = [];
17
53
  onDestroy$ = new Subject();
@@ -49,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
49
85
  }], form: [{
50
86
  type: Input
51
87
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRyb2wtZXJyb3JzL3NyYy9saWIvY29udHJvbC1lcnJvcnMvY29udHJvbC1lcnJvcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRyb2wtZXJyb3JzL3NyYy9saWIvY29udHJvbC1lcnJvcnMvY29udHJvbC1lcnJvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVkxQyxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE1BQU0sQ0FBVSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFVLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFFN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLENBQUM7SUFFcEQsTUFBTSxDQUFDLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUdNLEVBQUUsR0FBRyxvQkFBb0Isc0JBQXNCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUc5RCxPQUFPLENBQTZCO0lBR3BDLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFHeEIsSUFBSSxDQUFNO0lBRWpCLGlCQUFpQixHQUF1QixFQUFFLENBQUM7SUFFMUIsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFbEQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzlHLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDdEksT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDdkMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO3dHQS9DUSxzQkFBc0I7NEZBQXRCLHNCQUFzQixxS0NkbkMsc1VBWUE7OzRGREVhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxrQkFBa0I7OEJBZ0JyQixFQUFFO3NCQURSLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgRXJyb3JNZXNzYWdlVHlwZSA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jb250cm9sLWVycm9ycycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbnRyb2wtZXJyb3JzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb250cm9sLWVycm9ycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb250cm9sRXJyb3JzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgbmV4dElkU2VlZCA9IDA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUkFORE9NX0lEX0VORF9JTkRFWCA9IDk7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQkFTRV8zNiA9IDM2O1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX25leHRJZCA9IENvbnRyb2xFcnJvcnNDb21wb25lbnQubmV4dElkU2VlZDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TmV4dElkKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uZXh0SWQrKztcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWNvbnRyb2wtZXJyb3JzLSR7Q29udHJvbEVycm9yc0NvbXBvbmVudC5nZXROZXh0SWQoKX1gO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbCB8IE5nTW9kZWw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7fTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvcm06IGFueTtcblxuICAgIGVycm9yTWVzc2FnZXNMaXN0OiBFcnJvck1lc3NhZ2VUeXBlW10gPSBbXTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydjb250cm9sJ10gJiYgY2hhbmdlc1snY29udHJvbCddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcz8ucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0RXJyb3JNZXNzYWdlc0xpc3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRFcnJvck1lc3NhZ2VzTGlzdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2w/LmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXNMaXN0ID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXNMaXN0ID0gT2JqZWN0LmtleXModGhpcy5jb250cm9sLmVycm9ycyB8fCB7fSkubWFwKChlcnJvcikgPT4gKHtcbiAgICAgICAgICAgIGlkOiBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoQ29udHJvbEVycm9yc0NvbXBvbmVudC5CQVNFXzM2KS5zdWJzdHJpbmcoMiwgQ29udHJvbEVycm9yc0NvbXBvbmVudC5SQU5ET01fSURfRU5EX0lOREVYKX1gLFxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5lcnJvck1lc3NhZ2VzPy5bZXJyb3JdLFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cblxuIiwiQGZvciAoZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNMaXN0OyB0cmFjayBlcnJvck1lc3NhZ2UuaWQpIHtcbiAgICBAaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICA8ZGl2IFxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgXG4gICAgICAgICAgICByb2xlPVwiYWxlcnRcIiBcbiAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIFxuICAgICAgICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgZXJyb3JNZXNzYWdlLm1lc3NhZ2UgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxufVxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRyb2wtZXJyb3JzL3NyYy9saWIvY29udHJvbC1lcnJvcnMvY29udHJvbC1lcnJvcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvbnRyb2wtZXJyb3JzL3NyYy9saWIvY29udHJvbC1lcnJvcnMvY29udHJvbC1lcnJvcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU8xQzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsTUFBTSxDQUFVLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxDQUFVLG1CQUFtQixHQUFHLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQVUsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUU3QixNQUFNLENBQUMsT0FBTyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQztJQUVwRCxNQUFNLENBQUMsU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBRUksRUFBRSxHQUFHLG9CQUFvQixzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBRXJFOzs7T0FHRztJQUVJLE9BQU8sQ0FBNkI7SUFFM0M7Ozs7Ozs7O09BUUc7SUFFSSxhQUFhLEdBQVEsRUFBRSxDQUFDO0lBRS9COzs7T0FHRztJQUVJLElBQUksQ0FBTTtJQUVqQixpQkFBaUIsR0FBdUIsRUFBRSxDQUFDO0lBRTFCLFVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWxELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUM5RyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQ3RJLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzt3R0FwRVEsc0JBQXNCOzRGQUF0QixzQkFBc0IscUtDN0JuQyxzVUFZQTs7NEZEaUJhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxrQkFBa0I7OEJBb0JyQixFQUFFO3NCQURSLEtBQUs7Z0JBUUMsT0FBTztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFhbEIsYUFBYTtzQkFEbkIsS0FBSztnQkFRQyxJQUFJO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbnR5cGUgRXJyb3JNZXNzYWdlVHlwZSA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgcXVlIGV4aWJlIGFzIG1lbnNhZ2VucyBkZSBlcnJvIGRlIHZhbGlkYcOnw6NvIGFzc29jaWFkYXMgYSB1bSBjb250cm9sZSBkZSBmb3JtdWzDoXJpby5cbiAqIE9ic2VydmEgYXMgYWx0ZXJhw6fDtWVzIGRlIGVzdGFkbyBkbyBjb250cm9sZSBlIHJlbmRlcml6YSBhcyBtZW5zYWdlbnMgbWFwZWFkYXMgZW0gYGVycm9yTWVzc2FnZXNgLlxuICogQ29tcGF0aXZlbCBjb20gYEFic3RyYWN0Q29udHJvbGAgZG8gUmVhY3RpdmUgRm9ybXMgZSBgTmdNb2RlbGAgZG8gVGVtcGxhdGUtRHJpdmVuIEZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1jb250cm9sLWVycm9yc1xuICogICBbY29udHJvbF09XCJmb3JtLmdldCgnZW1haWwnKVwiXG4gKiAgIFtlcnJvck1lc3NhZ2VzXT1cInsgcmVxdWlyZWQ6ICdFLW1haWwgb2JyaWdhdMOzcmlvJywgZW1haWw6ICdFLW1haWwgaW52w6FsaWRvJyB9XCJcbiAqIC8+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgRmVlZGJhY2tcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLWNvbnRyb2wtZXJyb3JzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udHJvbC1lcnJvcnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbnRyb2wtZXJyb3JzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xFcnJvcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBuZXh0SWRTZWVkID0gMDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSQU5ET01fSURfRU5EX0lOREVYID0gOTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBCQVNFXzM2ID0gMzY7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfbmV4dElkID0gQ29udHJvbEVycm9yc0NvbXBvbmVudC5uZXh0SWRTZWVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXROZXh0SWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25leHRJZCsrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJZGVudGlmaWNhZG9yIMO6bmljbyBkbyBjb21wb25lbnRlLiBHZXJhZG8gYXV0b21hdGljYW1lbnRlIHNlIG7Do28gaW5mb3JtYWRvLlxuICAgICAqIFVzYWRvIHBhcmEgYXNzb2NpYcOnw6NvIGFjZXNzw612ZWwgY29tIG8gY2FtcG8gY29ycmVzcG9uZGVudGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgcy1jb250cm9sLWVycm9ycy0ke0NvbnRyb2xFcnJvcnNDb21wb25lbnQuZ2V0TmV4dElkKCl9YDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9sZSBkbyBmb3JtdWzDoXJpbyBjdWpvcyBlcnJvcyBzZXLDo28gZXhpYmlkb3MuXG4gICAgICogQWNlaXRhIGBBYnN0cmFjdENvbnRyb2xgIChSZWFjdGl2ZSBGb3Jtcykgb3UgYE5nTW9kZWxgIChUZW1wbGF0ZS1Ecml2ZW4gRm9ybXMpLiBDYW1wbyBvYnJpZ2F0w7NyaW8uXG4gICAgICovXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbCB8IE5nTW9kZWw7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTWFwYSBkZSBjaGF2ZXMgZGUgZXJybyBwYXJhIG1lbnNhZ2VucyBkZSB0ZXh0byBleGliaWRhcyBhbyB1c3XDoXJpby5cbiAgICAgKiBDYWRhIGNoYXZlIGNvcnJlc3BvbmRlIGEgdW0gZXJybyBxdWUgcG9kZSBlc3RhciBwcmVzZW50ZSBlbSBgY29udHJvbC5lcnJvcnNgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0c1xuICAgICAqIHsgcmVxdWlyZWQ6ICdDYW1wbyBvYnJpZ2F0w7NyaW8nLCBtaW5sZW5ndGg6ICdNw61uaW1vIDggY2FyYWN0ZXJlcycgfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGVycm9yTWVzc2FnZXM6IGFueSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyw6puY2lhIGFvIGZvcm11bMOhcmlvIHBhaS4gVXRpbGl6YWRvIGVtIGNlbsOhcmlvcyBkZSB2YWxpZGHDp8OjbyBjdXN0b21pemFkYVxuICAgICAqIHF1ZSBkZXBlbmRlbSBkbyBlc3RhZG8gZ2VyYWwgZG8gZm9ybXVsw6FyaW8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybTogYW55O1xuXG4gICAgZXJyb3JNZXNzYWdlc0xpc3Q6IEVycm9yTWVzc2FnZVR5cGVbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2NvbnRyb2wnXSAmJiBjaGFuZ2VzWydjb250cm9sJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udmFsdWVDaGFuZ2VzPy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRFcnJvck1lc3NhZ2VzTGlzdCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEVycm9yTWVzc2FnZXNMaXN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29udHJvbD8uZGlydHkpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlc0xpc3QgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlc0xpc3QgPSBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2wuZXJyb3JzIHx8IHt9KS5tYXAoKGVycm9yKSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZyhDb250cm9sRXJyb3JzQ29tcG9uZW50LkJBU0VfMzYpLnN1YnN0cmluZygyLCBDb250cm9sRXJyb3JzQ29tcG9uZW50LlJBTkRPTV9JRF9FTkRfSU5ERVgpfWAsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLmVycm9yTWVzc2FnZXM/LltlcnJvcl0sXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG4iLCJAZm9yIChlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc0xpc3Q7IHRyYWNrIGVycm9yTWVzc2FnZS5pZCkge1xuICAgIEBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIDxkaXYgXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiBcbiAgICAgICAgICAgIHJvbGU9XCJhbGVydFwiIFxuICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgXG4gICAgICAgICAgICBhcmlhLWF0b21pYz1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UubWVzc2FnZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG59XG4iXX0=
@@ -10,14 +10,50 @@ import * as i2 from "@ngx-translate/core";
10
10
  import * as i3 from "@angular/common";
11
11
  import * as i4 from "@angular/forms";
12
12
  import * as i5 from "ngx-mask";
13
+ /**
14
+ * @description Componente seletor de país e número de telefone com máscara dinâmica.
15
+ * Exibe uma lista de países com seus códigos DDI e aplica automaticamente a máscara
16
+ * de formatação do número conforme o país selecionado. Implementa {@link ControlValueAccessor}
17
+ * para integração com formulários Angular.
18
+ *
19
+ * @example
20
+ * ```html
21
+ * <s-country-phone-picker
22
+ * formControlName="telefone"
23
+ * [countries]="['BR', 'US', 'AR']"
24
+ * (selected)="onPaisSelecionado($event)" />
25
+ * ```
26
+ *
27
+ * @category Inputs
28
+ */
13
29
  export class CountryPhonePickerComponent {
14
30
  _countryPhonePickerService;
15
31
  _translate;
16
32
  _eRef;
17
33
  platformId;
34
+ /**
35
+ * @description Lista de códigos de país (ISO 3166-1 alpha-2) exibidos no seletor.
36
+ * Quando vazia, todos os países disponíveis são listados.
37
+ *
38
+ * @default []
39
+ */
18
40
  countries = [];
41
+ /**
42
+ * @description Critério de ordenação dos países na lista.
43
+ * Aceita os valores do enum `Ordination` (ex.: por nome, por DDI, sem ordenação).
44
+ *
45
+ * @default Ordination.NO
46
+ */
19
47
  ordination = Ordination.NO;
48
+ /**
49
+ * @description Emitido quando o usuário seleciona um país no dropdown.
50
+ * Emite um objeto {@link CountryPhoneData} com dados do país escolhido.
51
+ */
20
52
  selected = new EventEmitter();
53
+ /**
54
+ * @description Emitido quando o campo de número de telefone perde o foco.
55
+ * Emite o objeto {@link PhoneSelectionData} com país e número atuais, ou `null`.
56
+ */
21
57
  focusLost = new EventEmitter();
22
58
  phoneInput = null;
23
59
  filterInput = null;
@@ -316,4 +352,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
316
352
  type: HostListener,
317
353
  args: ['keydown', ['$event']]
318
354
  }] } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBZ0JqRCxNQUFNLE9BQU8sMkJBQTJCO0lBc0NmO0lBQ0E7SUFDQTtJQUVBO0lBeENkLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFHekIsVUFBVSxHQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFHdkMsUUFBUSxHQUFtQyxJQUFJLFlBQVksRUFBRSxD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OzswQkEyQ0ksTUFBTTsyQkFBQyxXQUFXO3lDQXZDaEIsU0FBUztzQkFEZixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxNQUFNO2dCQUlBLFNBQVM7c0JBRGYsTUFBTTtnQkFJQSxVQUFVO3NCQURoQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXhCLFdBQVc7c0JBRDNCLFNBQVM7dUJBQUMsYUFBYTtnQkE4QmpCLGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSXRCLGdCQUFnQjtzQkFEdEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTdDLFdBQVc7c0JBRGpCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJdkMsaUJBQWlCO3NCQUR2QixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkE4QjlDLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV25DLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb21Qb3J0YWxPdXRsZXQsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgQ291bnRyeVBob25lUGlja2VyU2VydmljZSB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEgfSBmcm9tICcuL21vZGVscy9jb3VudHJ5LXBob25lLWRhdGEnO1xuaW1wb3J0IHsgT3JkaW5hdGlvbiB9IGZyb20gJy4vbW9kZWxzL29yZGluYXRpb24nO1xuXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tICcuL21vZGVscy9waG9uZS1zZWxlY3Rpb24tZGF0YSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1jb3VudHJ5LXBob25lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktcGhvbmUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPENvdW50cnlQaG9uZURhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZvY3VzTG9zdDogRXZlbnRFbWl0dGVyPFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcklucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgcHVibGljIG1hc2s6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGEgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG4gICAgcHVibGljIGZpbHRlcmVkQ291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHVibGljIHBob25lID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG4gICAgcHVibGljIGZpbHRlciA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuXG4gICAgcHVibGljIGRyb3BUb3AgPSAwO1xuICAgIHB1YmxpYyBkcm9wTGVmdCA9IDA7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfY291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX29mZnNldFRvcCA9IDA7XG4gICAgcHJpdmF0ZSBfcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY291bnRyeVBob25lUGlja2VyU2VydmljZTogQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICApIHt9XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJylcbiAgICBwdWJsaWMgZHJvcGRvd25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgZHJvcEVsZW1lbnQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJyNkcm9wZG93bkNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHB1YmxpYyBkcm9wZG93bkNvbnRhaW5lcjogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcG9ydGFsSG9zdD8uaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbEhvc3QuZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBob25lSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgY29uc3QgY2xpY2tlZE9uRmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICFjbGlja2VkT25GaWx0ZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRG93bigpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9VcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlPy5pZCkge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkID09PSB2YWx1ZS5pZCk7XG4gICAgICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0SXRlbShjb3VudHJ5WzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZT8ucmF3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY291bnRyaWVzID0gdGhpcy5fY291bnRyeVBob25lUGlja2VyU2VydmljZS5nZXRDb3VudHJpZXModGhpcy5vcmRpbmF0aW9uKTtcbiAgICAgICAgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLl9maWx0ZXJDb3VudHJpZXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLmdldE1hc2soKTtcblxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkSXRlbS5pZCxcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcbiAgICAgICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gYCR7dGhpcy5fYXBwbHlNYXNrKHZhbHVlKX1gIDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX29uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEl0ZW0oY291bnRyeTogQ291bnRyeVBob25lRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5fY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBob25lSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVyKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNMb3N0LmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXNrKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZT8ucmF3VmFsdWUgfHwgdGhpcy52YWx1ZS5yYXdWYWx1ZS5sZW5ndGggPD0gbWFza1swXS5yZXBsYWNlKC9bXjBdL2csICcnKS5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IG1hc2tbMF0gLy8gZml4b1xuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hc2s/LnJlcGxhY2UoLzkvZywgJycpID8/ICctIE5PIE1BU0sgLSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpOiBDb3VudHJ5UGhvbmVEYXRhIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEJ5QnIubGVuZ3RoID8gZmlsdGVyZWRCeUJyWzBdIDogdGhpcy5fY291bnRyaWVzTGlzdFswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJDb3VudHJpZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnRyeU5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJHtjb3VudHJ5LmlkfWAsXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPD0gdGhpcy5fb2Zmc2V0VG9wKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgLT0gNDU7XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRCA9IDE4MDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfQU1PVU5UX1BFUl9JVEVNID0gNDU7XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9Eb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID49IHRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQuU0NST0xMX09GRlNFVF9USFJFU0hPTERcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBseU1hc2sodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBtYXNrO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrKSkge1xuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XG4gICAgICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1swXSArICdcXDAnIDogdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1sxXSArICdcXDAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XG4gICAgICAgIGxldCByZXBsYWNlID0gJyc7XG4gICAgICAgIGxldCBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3VtdWxhZG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VucyArPSBgKFxcXFxkeyR7YWN1bXVsYWRvcn19KWA7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGFkb3IrKztcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSArPSBgJCR7Y29udGFkb3J9YDtcblxuICAgICAgICAgICAgICAgICAgICBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09ICdcXDAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3VtdWxhZG9yKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgICByZXR1cm4gdGhpcy5waG9uZS52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodG9rZW5zKSwgcmVwbGFjZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHJvcGRvd25Qb3J0YWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRyb3BFbGVtZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgZHJvcEVsZW1lbnRSZWN0ID0gdGhpcy5kcm9wRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHRoaXMuZHJvcFRvcCA9IGRyb3BFbGVtZW50UmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy5kcm9wTGVmdCA9IGRyb3BFbGVtZW50UmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFg7XG5cbiAgICAgICAgdGhpcy5fcG9ydGFsSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoYm9keUVsZW1lbnQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb3VudHJ5LXBob25lLXBpY2tlclwiPlxuICAgIDxkaXZcbiAgICAgICAgI2Ryb3BFbGVtZW50XG4gICAgICAgIGNsYXNzPVwicGhvbmUtaW5wdXRcIlxuICAgICAgICBbY2xhc3MucGhvbmUtaW5wdXQtLWZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbiA9ICFvcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBSWpEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQWFILE1BQU0sT0FBTywyQkFBMkI7SUEwRGY7SUFDQTtJQUNBO0lBRUE7SUE3RHJCOzs7OztPQUtHO0lBRUksU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUVoQzs7Ozs7T0FLRztJQUVJLFVBQVUsR0FBZSxV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LFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjs7MEJBK0RJLE1BQU07MkJBQUMsV0FBVzt5Q0FyRGhCLFNBQVM7c0JBRGYsS0FBSztnQkFVQyxVQUFVO3NCQURoQixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsTUFBTTtnQkFRQSxTQUFTO3NCQURmLE1BQU07Z0JBSUEsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4QixXQUFXO3NCQUQzQixTQUFTO3VCQUFDLGFBQWE7Z0JBOEJqQixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUl0QixnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUk3QyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXZDLGlCQUFpQjtzQkFEdkIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBOEI5QyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVduQyxTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS1waG9uZS1kYXRhJztcbmltcG9ydCB7IE9yZGluYXRpb24gfSBmcm9tICcuL21vZGVscy9vcmRpbmF0aW9uJztcblxuaW1wb3J0IHsgUGhvbmVTZWxlY3Rpb25EYXRhIH0gZnJvbSAnLi9tb2RlbHMvcGhvbmUtc2VsZWN0aW9uLWRhdGEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIHNlbGV0b3IgZGUgcGHDrXMgZSBuw7ptZXJvIGRlIHRlbGVmb25lIGNvbSBtw6FzY2FyYSBkaW7Dom1pY2EuXG4gKiBFeGliZSB1bWEgbGlzdGEgZGUgcGHDrXNlcyBjb20gc2V1cyBjw7NkaWdvcyBEREkgZSBhcGxpY2EgYXV0b21hdGljYW1lbnRlIGEgbcOhc2NhcmFcbiAqIGRlIGZvcm1hdGHDp8OjbyBkbyBuw7ptZXJvIGNvbmZvcm1lIG8gcGHDrXMgc2VsZWNpb25hZG8uIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfVxuICogcGFyYSBpbnRlZ3Jhw6fDo28gY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1jb3VudHJ5LXBob25lLXBpY2tlclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlZm9uZVwiXG4gKiAgIFtjb3VudHJpZXNdPVwiWydCUicsICdVUycsICdBUiddXCJcbiAqICAgKHNlbGVjdGVkKT1cIm9uUGFpc1NlbGVjaW9uYWRvKCRldmVudClcIiAvPlxuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IElucHV0c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3MtY291bnRyeS1waG9uZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIExpc3RhIGRlIGPDs2RpZ29zIGRlIHBhw61zIChJU08gMzE2Ni0xIGFscGhhLTIpIGV4aWJpZG9zIG5vIHNlbGV0b3IuXG4gICAgICogUXVhbmRvIHZhemlhLCB0b2RvcyBvcyBwYcOtc2VzIGRpc3BvbsOtdmVpcyBzw6NvIGxpc3RhZG9zLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudHJpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JpdMOpcmlvIGRlIG9yZGVuYcOnw6NvIGRvcyBwYcOtc2VzIG5hIGxpc3RhLlxuICAgICAqIEFjZWl0YSBvcyB2YWxvcmVzIGRvIGVudW0gYE9yZGluYXRpb25gIChleC46IHBvciBub21lLCBwb3IgRERJLCBzZW0gb3JkZW5hw6fDo28pLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgT3JkaW5hdGlvbi5OT1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9yZGluYXRpb246IE9yZGluYXRpb24gPSBPcmRpbmF0aW9uLk5PO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRpZG8gcXVhbmRvIG8gdXN1w6FyaW8gc2VsZWNpb25hIHVtIHBhw61zIG5vIGRyb3Bkb3duLlxuICAgICAqIEVtaXRlIHVtIG9iamV0byB7QGxpbmsgQ291bnRyeVBob25lRGF0YX0gY29tIGRhZG9zIGRvIHBhw61zIGVzY29saGlkby5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIG7Dum1lcm8gZGUgdGVsZWZvbmUgcGVyZGUgbyBmb2NvLlxuICAgICAqIEVtaXRlIG8gb2JqZXRvIHtAbGluayBQaG9uZVNlbGVjdGlvbkRhdGF9IGNvbSBwYcOtcyBlIG7Dum1lcm8gYXR1YWlzLCBvdSBgbnVsbGAuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZvY3VzTG9zdDogRXZlbnRFbWl0dGVyPFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcklucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgcHVibGljIG1hc2s6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGEgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XG4gICAgcHVibGljIGZpbHRlcmVkQ291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHVibGljIHBob25lID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG4gICAgcHVibGljIGZpbHRlciA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xuXG4gICAgcHVibGljIGRyb3BUb3AgPSAwO1xuICAgIHB1YmxpYyBkcm9wTGVmdCA9IDA7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBfY291bnRyaWVzTGlzdDogQ291bnRyeVBob25lRGF0YVtdID0gW107XG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX29mZnNldFRvcCA9IDA7XG4gICAgcHJpdmF0ZSBfcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY291bnRyeVBob25lUGlja2VyU2VydmljZTogQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICApIHt9XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJylcbiAgICBwdWJsaWMgZHJvcGRvd25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwdWJsaWMgZHJvcEVsZW1lbnQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJyNkcm9wZG93bkNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHB1YmxpYyBkcm9wZG93bkNvbnRhaW5lcjogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW47XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XG5cbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcG9ydGFsSG9zdD8uaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbEhvc3QuZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBob25lSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgY29uc3QgY2xpY2tlZE9uRmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICFjbGlja2VkT25GaWx0ZXJJbnB1dCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLl9jb3VudHJpZXNMaXN0W3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgdGhpcy5fbW92ZVRvRG93bigpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9VcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlPy5pZCkge1xuICAgICAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKCh7IGlkIH0pID0+IGlkID09PSB2YWx1ZS5pZCk7XG4gICAgICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0SXRlbShjb3VudHJ5WzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZT8ucmF3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gb25DaGFuZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY291bnRyaWVzID0gdGhpcy5fY291bnRyeVBob25lUGlja2VyU2VydmljZS5nZXRDb3VudHJpZXModGhpcy5vcmRpbmF0aW9uKTtcbiAgICAgICAgdGhpcy5maWx0ZXIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLl9maWx0ZXJDb3VudHJpZXMpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcigoY291bnRyeSkgPT4gdGhpcy5jb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeS5pZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLmdldE1hc2soKTtcblxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIGlkOiB0aGlzLnNlbGVjdGVkSXRlbS5pZCxcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcbiAgICAgICAgICAgICAgICByYXdWYWx1ZTogdmFsdWUgPz8gJycsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlID8gYCR7dGhpcy5fYXBwbHlNYXNrKHZhbHVlKX1gIDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMuX29uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEl0ZW0oY291bnRyeTogQ291bnRyeVBob25lRGF0YSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xuICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKCcnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5fY291bnRyaWVzTGlzdC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXIuc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBob25lSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVyKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNMb3N0LmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYXNrKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2s7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZT8ucmF3VmFsdWUgfHwgdGhpcy52YWx1ZS5yYXdWYWx1ZS5sZW5ndGggPD0gbWFza1swXS5yZXBsYWNlKC9bXjBdL2csICcnKS5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IG1hc2tbMF0gLy8gZml4b1xuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG1hc2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hc2s/LnJlcGxhY2UoLzkvZywgJycpID8/ICctIE5PIE1BU0sgLSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpOiBDb3VudHJ5UGhvbmVEYXRhIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZEJ5QnIubGVuZ3RoID8gZmlsdGVyZWRCeUJyWzBdIDogdGhpcy5fY291bnRyaWVzTGlzdFswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXJDb3VudHJpZXMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY291bnRyeU5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJHtjb3VudHJ5LmlkfWAsXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cnlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4LS07XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKGl0ZW0ub2Zmc2V0VG9wIC0gc2VsZWN0TGlzdC5vZmZzZXRUb3AgPD0gdGhpcy5fb2Zmc2V0VG9wKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgLT0gNDU7XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRCA9IDE4MDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTQ1JPTExfQU1PVU5UX1BFUl9JVEVNID0gNDU7XG5cbiAgICBwcml2YXRlIF9tb3ZlVG9Eb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID49IHRoaXMuX2NvdW50cmllc0xpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0TGlzdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNlbGVjdC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQuU0NST0xMX09GRlNFVF9USFJFU0hPTERcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9hcHBseU1hc2sodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBtYXNrO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrKSkge1xuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XG4gICAgICAgICAgICBtYXNrID0gdmFsdWUubGVuZ3RoIDw9IHJhd01hc2subGVuZ3RoID8gdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1swXSArICdcXDAnIDogdGhpcy5zZWxlY3RlZEl0ZW0ubWFza1sxXSArICdcXDAnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XG4gICAgICAgIGxldCByZXBsYWNlID0gJyc7XG4gICAgICAgIGxldCBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIG1hc2spIHtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3VtdWxhZG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VucyArPSBgKFxcXFxkeyR7YWN1bXVsYWRvcn19KWA7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGFkb3IrKztcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSArPSBgJCR7Y29udGFkb3J9YDtcblxuICAgICAgICAgICAgICAgICAgICBhY3VtdWxhZG9yID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09ICdcXDAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY3VtdWxhZG9yKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xuICAgICAgICByZXR1cm4gdGhpcy5waG9uZS52YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAodG9rZW5zKSwgcmVwbGFjZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY3JlYXRlRHJvcGRvd25Qb3J0YWwoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCBpc051bGxPclVuZGVmaW5lZCh0aGlzLmRyb3BFbGVtZW50KSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgZHJvcEVsZW1lbnRSZWN0ID0gdGhpcy5kcm9wRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHRoaXMuZHJvcFRvcCA9IGRyb3BFbGVtZW50UmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy5kcm9wTGVmdCA9IGRyb3BFbGVtZW50UmVjdC5sZWZ0ICsgd2luZG93LnNjcm9sbFg7XG5cbiAgICAgICAgdGhpcy5fcG9ydGFsSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoYm9keUVsZW1lbnQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xuICAgIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCI+XG4gICAgPGRpdlxuICAgICAgICAjZHJvcEVsZW1lbnRcbiAgICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5waG9uZS1pbnB1dC0tZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuID0gIW9wZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcC1mbGFnXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCInZmkgZmktJyArIHNlbGVjdGVkSXRlbT8uaWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWljb24gZmFzIGZhLWNhcmV0LWRvd25cIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBjbGFzcz1cInBob25lLWRkaVwiPnt7IHNlbGVjdGVkSXRlbT8uZGRpIH19PC9wPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNwaG9uZUlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGVsXCJcbiAgICAgICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInBob25lXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvblBob25lSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cih2YWx1ZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cbiAgICAgICAgQGlmIChvcGVuKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiBkcm9wVG9wICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogZHJvcExlZnQgKyAncHgnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNmaWx0ZXJJbnB1dFxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZhcyBmYS1zZWFyY2hcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1jbGVhciBmYSBmYS10aW1lc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhbkZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJzZWxlY3QtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIGZpbHRlcmVkQ291bnRyaWVzTGlzdDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1vcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdC1vcHRpb24tLWZvY3VzZWQnOiAkaW5kZXggPT09IGN1cnJlbnRJdGVtSW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0SXRlbShjb3VudHJ5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBjb3VudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNvdW50cnlfbmFtZV8nICsgY291bnRyeS5pZCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX2RkaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudHJ5LmRkaSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,6 +1,19 @@
1
- import { Injectable } from "@angular/core";
1
+ import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@seniorsistemas/angular-components/locale";
4
+ /**
5
+ * @description Service for retrieving localized currency symbols using the browser's `Intl.NumberFormat` API.
6
+ * Uses the locale configured in `LocaleService` to format currency parts and extract the symbol.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const currencyService = inject(CurrencyService);
11
+ *
12
+ * // Get the symbol for BRL in the active locale
13
+ * const symbol = currencyService.getCurrencySymbol({ currency: 'BRL' }); // 'R$'
14
+ * ```
15
+ * @category Currency
16
+ */
4
17
  export class CurrencyService {
5
18
  localeService;
6
19
  constructor(localeService) {
@@ -8,18 +21,18 @@ export class CurrencyService {
8
21
  }
9
22
  getCurrencySymbol({ currency }) {
10
23
  const numberFormat = new Intl.NumberFormat(this.localeService.getLocaleOptions()?.locale, {
11
- style: "currency",
12
- currency: currency ?? "BRL",
13
- currencyDisplay: "narrowSymbol",
24
+ style: 'currency',
25
+ currency: currency ?? 'BRL',
26
+ currencyDisplay: 'narrowSymbol',
14
27
  maximumFractionDigits: 5,
15
28
  });
16
- return numberFormat.formatToParts(1).find((x) => x.type === "currency")?.value ?? "";
29
+ return numberFormat.formatToParts(1).find((x) => x.type === 'currency')?.value ?? '';
17
30
  }
18
31
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, deps: [{ token: i1.LocaleService }], target: i0.ɵɵFactoryTarget.Injectable });
19
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, providedIn: "root" });
32
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, providedIn: 'root' });
20
33
  }
21
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CurrencyService, decorators: [{
22
35
  type: Injectable,
23
- args: [{ providedIn: "root" }]
36
+ args: [{ providedIn: 'root' }]
24
37
  }], ctorParameters: () => [{ type: i1.LocaleService }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jdXJyZW5jeS9zcmMvbGliL2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxlQUFlO0lBQ0s7SUFBN0IsWUFBNkIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRTdELGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUEwQjtRQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRTtZQUN0RixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsUUFBa0IsSUFBSSxLQUFLO1lBQ3JDLGVBQWUsRUFBRSxjQUFjO1lBQy9CLHFCQUFxQixFQUFFLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7d0dBWlEsZUFBZTs0R0FBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IEN1cnJlbmN5IH0gZnJvbSBcIi4vdHlwZXMvY3VycmVuY3lcIjtcbmltcG9ydCB7IExvY2FsZVNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGVcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5U2VydmljZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlKSB7fVxuXG4gICAgZ2V0Q3VycmVuY3lTeW1ib2woeyBjdXJyZW5jeSB9OiB7IGN1cnJlbmN5OiBDdXJyZW5jeSB9KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMubG9jYWxlU2VydmljZS5nZXRMb2NhbGVPcHRpb25zKCk/LmxvY2FsZSwge1xuICAgICAgICAgICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAgICAgICAgIGN1cnJlbmN5OiBjdXJyZW5jeSBhcyBzdHJpbmcgPz8gXCJCUkxcIixcbiAgICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogXCJuYXJyb3dTeW1ib2xcIixcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdC5mb3JtYXRUb1BhcnRzKDEpLmZpbmQoKHgpID0+IHgudHlwZSA9PT0gXCJjdXJyZW5jeVwiKT8udmFsdWUgPz8gXCJcIjtcbiAgICB9XG59XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jdXJyZW5jeS9zcmMvbGliL2N1cnJlbmN5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDOzs7Ozs7Ozs7Ozs7R0FZRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBQ0s7SUFBN0IsWUFBNkIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFBRyxDQUFDO0lBRTdELGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUEwQjtRQUNsRCxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRTtZQUN0RixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUcsUUFBbUIsSUFBSSxLQUFLO1lBQ3ZDLGVBQWUsRUFBRSxjQUFjO1lBQy9CLHFCQUFxQixFQUFFLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7d0dBWlEsZUFBZTs0R0FBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gJy4vdHlwZXMvY3VycmVuY3knO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU2VydmljZSBmb3IgcmV0cmlldmluZyBsb2NhbGl6ZWQgY3VycmVuY3kgc3ltYm9scyB1c2luZyB0aGUgYnJvd3NlcidzIGBJbnRsLk51bWJlckZvcm1hdGAgQVBJLlxuICogVXNlcyB0aGUgbG9jYWxlIGNvbmZpZ3VyZWQgaW4gYExvY2FsZVNlcnZpY2VgIHRvIGZvcm1hdCBjdXJyZW5jeSBwYXJ0cyBhbmQgZXh0cmFjdCB0aGUgc3ltYm9sLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjdXJyZW5jeVNlcnZpY2UgPSBpbmplY3QoQ3VycmVuY3lTZXJ2aWNlKTtcbiAqXG4gKiAvLyBHZXQgdGhlIHN5bWJvbCBmb3IgQlJMIGluIHRoZSBhY3RpdmUgbG9jYWxlXG4gKiBjb25zdCBzeW1ib2wgPSBjdXJyZW5jeVNlcnZpY2UuZ2V0Q3VycmVuY3lTeW1ib2woeyBjdXJyZW5jeTogJ0JSTCcgfSk7IC8vICdSJCdcbiAqIGBgYFxuICogQGNhdGVnb3J5IEN1cnJlbmN5XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UpIHt9XG5cbiAgICBnZXRDdXJyZW5jeVN5bWJvbCh7IGN1cnJlbmN5IH06IHsgY3VycmVuY3k6IEN1cnJlbmN5IH0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5sb2NhbGVTZXJ2aWNlLmdldExvY2FsZU9wdGlvbnMoKT8ubG9jYWxlLCB7XG4gICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiAoY3VycmVuY3kgYXMgc3RyaW5nKSA/PyAnQlJMJyxcbiAgICAgICAgICAgIGN1cnJlbmN5RGlzcGxheTogJ25hcnJvd1N5bWJvbCcsXG4gICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxKS5maW5kKCh4KSA9PiB4LnR5cGUgPT09ICdjdXJyZW5jeScpPy52YWx1ZSA/PyAnJztcbiAgICB9XG59XG5cbiJdfQ==