@seniorsistemas/angular-components 17.27.1-fix-interactive-content-22e06381 → 17.27.1-fixlookupteste-sds-110-c424f879

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 (932) hide show
  1. package/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.d.ts +2 -1
  2. package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +23 -23
  3. package/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +2 -0
  4. package/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.d.ts +3 -3
  5. package/esm2022/accordion/lib/accordion/accordion.component.mjs +84 -0
  6. package/esm2022/accordion/lib/accordion/accordion.module.mjs +36 -0
  7. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +124 -0
  8. package/esm2022/accordion/lib/accordion/models/accordion-button-settings.mjs +2 -0
  9. package/esm2022/accordion/public-api.mjs +4 -0
  10. package/esm2022/accordion/seniorsistemas-angular-components-accordion.mjs +5 -0
  11. package/esm2022/alert/lib/alert/alert.component.mjs +44 -0
  12. package/esm2022/alert/lib/alert/alert.module.mjs +18 -0
  13. package/esm2022/alert/public-api.mjs +3 -0
  14. package/esm2022/alert/seniorsistemas-angular-components-alert.mjs +5 -0
  15. package/esm2022/badge/lib/badge/badge.component.mjs +46 -0
  16. package/esm2022/badge/lib/badge/badge.module.mjs +20 -0
  17. package/esm2022/badge/lib/badge/types/badge-colors.mjs +4 -0
  18. package/esm2022/badge/lib/badge/types/badge-types.mjs +2 -0
  19. package/esm2022/badge/public-api.mjs +3 -0
  20. package/esm2022/badge/seniorsistemas-angular-components-badge.mjs +5 -0
  21. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +156 -0
  22. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +21 -0
  23. package/esm2022/bignumber-input/public-api.mjs +3 -0
  24. package/esm2022/bignumber-input/seniorsistemas-angular-components-bignumber-input.mjs +5 -0
  25. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +105 -0
  26. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +20 -0
  27. package/esm2022/breadcrumb/public-api.mjs +3 -0
  28. package/esm2022/breadcrumb/seniorsistemas-angular-components-breadcrumb.mjs +5 -0
  29. package/esm2022/button/lib/button/button.component.mjs +106 -0
  30. package/esm2022/button/lib/button/button.module.mjs +18 -0
  31. package/esm2022/button/lib/button/models/button-animations.mjs +2 -0
  32. package/esm2022/button/lib/button/models/button-badge-config.mjs +2 -0
  33. package/esm2022/button/lib/button/models/button-priority.mjs +2 -0
  34. package/esm2022/button/lib/button/models/button-size.mjs +2 -0
  35. package/esm2022/button/lib/button/models/index.mjs +2 -0
  36. package/esm2022/button/public-api.mjs +4 -0
  37. package/esm2022/button/seniorsistemas-angular-components-button.mjs +5 -0
  38. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +611 -0
  39. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +18 -0
  40. package/esm2022/calendar-mask/public-api.mjs +3 -0
  41. package/esm2022/calendar-mask/seniorsistemas-angular-components-calendar-mask.mjs +5 -0
  42. package/esm2022/card/lib/card/card.component.mjs +85 -0
  43. package/esm2022/card/lib/card/card.module.mjs +19 -0
  44. package/esm2022/card/public-api.mjs +3 -0
  45. package/esm2022/card/seniorsistemas-angular-components-card.mjs +5 -0
  46. package/esm2022/chat/lib/chat/chat.component.mjs +29 -0
  47. package/esm2022/chat/lib/chat/chat.module.mjs +22 -0
  48. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +29 -0
  49. package/esm2022/chat/lib/chat/types/chat-message.mjs +2 -0
  50. package/esm2022/chat/public-api.mjs +3 -0
  51. package/esm2022/chat/seniorsistemas-angular-components-chat.mjs +5 -0
  52. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +67 -0
  53. package/esm2022/checkbox/public-api.mjs +2 -0
  54. package/esm2022/checkbox/seniorsistemas-angular-components-checkbox.mjs +5 -0
  55. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +129 -0
  56. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +19 -0
  57. package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-data.mjs +2 -0
  58. package/esm2022/checkbox-list/lib/checkbox-list/models/checkbox-list-state.mjs +2 -0
  59. package/esm2022/checkbox-list/public-api.mjs +3 -0
  60. package/esm2022/checkbox-list/seniorsistemas-angular-components-checkbox-list.mjs +5 -0
  61. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +67 -0
  62. package/esm2022/chips/lib/chips/chips/chips.component.mjs +241 -0
  63. package/esm2022/chips/lib/chips/chips.module.mjs +22 -0
  64. package/esm2022/chips/lib/chips/models/chip-models.mjs +2 -0
  65. package/esm2022/chips/public-api.mjs +3 -0
  66. package/esm2022/chips/seniorsistemas-angular-components-chips.mjs +5 -0
  67. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +111 -0
  68. package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +32 -0
  69. package/esm2022/code-editor/lib/code-editor/core/facades/core-facade.mjs +85 -0
  70. package/esm2022/code-editor/lib/code-editor/core/facades/linter-facade.mjs +2 -0
  71. package/esm2022/code-editor/lib/code-editor/core/models/enums/marker-severity.mjs +7 -0
  72. package/esm2022/code-editor/lib/code-editor/core/models/index.mjs +5 -0
  73. package/esm2022/code-editor/lib/code-editor/core/models/interfaces/marker.mjs +2 -0
  74. package/esm2022/code-editor/lib/code-editor/core/use-cases/core-linters.mjs +11 -0
  75. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.mjs +97 -0
  76. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/editor-languages.mjs +17 -0
  77. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/json/json.language.mjs +67 -0
  78. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-empty-state.mjs +29 -0
  79. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-loading-state.mjs +29 -0
  80. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper-style.mjs +17 -0
  81. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper.mjs +77 -0
  82. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/index.mjs +4 -0
  83. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-style.mjs +35 -0
  84. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.mjs +334 -0
  85. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.service.mjs +25 -0
  86. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/base-configs.mjs +18 -0
  87. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/grammar.mjs +37 -0
  88. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/completion-types.mjs +10 -0
  89. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/enum-type-order.mjs +8 -0
  90. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/keywords.mjs +12 -0
  91. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/meta-type.mjs +36 -0
  92. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/request-types.mjs +9 -0
  93. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/index.mjs +22 -0
  94. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/completion-Item.mjs +2 -0
  95. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/facade-metadata-name.mjs +2 -0
  96. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/fields-order-by.mjs +2 -0
  97. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/get-facade-metadata-by-path.mjs +2 -0
  98. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-context-metadata-by-id.mjs +2 -0
  99. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-expression-metadata.mjs +2 -0
  100. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/list-facade-metadata-names.mjs +2 -0
  101. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-expression-metadata.mjs +2 -0
  102. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-context-metadata.mjs +2 -0
  103. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-facade-metadata.mjs +2 -0
  104. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-front-field-metadata.mjs +2 -0
  105. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/rec-page-request.mjs +2 -0
  106. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/safe-http-communication.mjs +2 -0
  107. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/interfaces/tax-calculation-configs.mjs +2 -0
  108. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation-language-configs.mjs +11 -0
  109. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.mjs +9 -0
  110. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-language-configs.mjs +14 -0
  111. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-safe-response.mjs +18 -0
  112. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/index.mjs +3 -0
  113. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/index.mjs +4 -0
  114. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/diagnostic-severity.mjs +2 -0
  115. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/models/types/editor-theme.mjs +2 -0
  116. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/editor-themes.mjs +15 -0
  117. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/autocomplete-tooltip.mjs +61 -0
  118. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/font-style.mjs +39 -0
  119. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/line-counter.mjs +25 -0
  120. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/scrollbars.mjs +18 -0
  121. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.mjs +16 -0
  122. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +13 -0
  123. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-theme.mjs +22 -0
  124. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/convert-markers-to-diagnostics.mjs +15 -0
  125. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/index.mjs +3 -0
  126. package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/utils/is-current-position-inside-string.mjs +5 -0
  127. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/custom-http-client.mjs +82 -0
  128. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
  129. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
  130. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/index.mjs +3 -0
  131. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations-service.mjs +37 -0
  132. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +32 -0
  133. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/index.mjs +3 -0
  134. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/index.mjs +3 -0
  135. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/models/interfaces/translations.mjs +2 -0
  136. package/esm2022/code-editor/lib/code-editor/infra/utils/index.mjs +3 -0
  137. package/esm2022/code-editor/lib/code-editor/models/enums/languages.mjs +6 -0
  138. package/esm2022/code-editor/lib/code-editor/models/enums/themes.mjs +5 -0
  139. package/esm2022/code-editor/lib/code-editor/models/index.mjs +6 -0
  140. package/esm2022/code-editor/lib/code-editor/models/interfaces/editor-options.mjs +2 -0
  141. package/esm2022/code-editor/public-api.mjs +6 -0
  142. package/esm2022/code-editor/seniorsistemas-angular-components-code-editor.mjs +5 -0
  143. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +81 -0
  144. package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +18 -0
  145. package/esm2022/collapse-link/public-api.mjs +3 -0
  146. package/esm2022/collapse-link/seniorsistemas-angular-components-collapse-link.mjs +5 -0
  147. package/esm2022/common/lib/angular-components.module.mjs +24 -0
  148. package/esm2022/common/lib/custom-http-client/custom-http-client.mjs +86 -0
  149. package/esm2022/common/lib/custom-http-client/json-response-formatters/format-blob-response.mjs +10 -0
  150. package/esm2022/common/lib/custom-http-client/json-response-formatters/format-json-response.mjs +9 -0
  151. package/esm2022/common/lib/debouce.mjs +35 -0
  152. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +11 -0
  153. package/esm2022/common/lib/svg-factory/components/senior-icon/senior-icon.component.mjs +11 -0
  154. package/esm2022/common/lib/svg-factory/components/svg-factory-icons.mjs +2 -0
  155. package/esm2022/common/lib/svg-factory/index.mjs +3 -0
  156. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +44 -0
  157. package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +26 -0
  158. package/esm2022/common/public-api.mjs +5 -0
  159. package/esm2022/common/seniorsistemas-angular-components-common.mjs +5 -0
  160. package/esm2022/confirm-dialog/lib/confirm-dialog.model.mjs +2 -0
  161. package/esm2022/confirm-dialog/lib/confirm-dialog.service.mjs +34 -0
  162. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +17 -0
  163. package/esm2022/confirm-dialog/public-api.mjs +2 -0
  164. package/esm2022/confirm-dialog/seniorsistemas-angular-components-confirm-dialog.mjs +5 -0
  165. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +52 -0
  166. package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +19 -0
  167. package/esm2022/control-errors/public-api.mjs +3 -0
  168. package/esm2022/control-errors/seniorsistemas-angular-components-control-errors.mjs +5 -0
  169. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +319 -0
  170. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +41 -0
  171. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +42 -0
  172. package/esm2022/country-phone-picker/lib/country-phone-picker/models/country-phone-data.mjs +2 -0
  173. package/esm2022/country-phone-picker/lib/country-phone-picker/models/ordination.mjs +7 -0
  174. package/esm2022/country-phone-picker/lib/country-phone-picker/models/phone-selection-data.mjs +2 -0
  175. package/esm2022/country-phone-picker/lib/country-phone-picker/resources/countries.mjs +228 -0
  176. package/esm2022/country-phone-picker/public-api.mjs +5 -0
  177. package/esm2022/country-phone-picker/seniorsistemas-angular-components-country-phone-picker.mjs +5 -0
  178. package/esm2022/currency/lib/currency.service.mjs +25 -0
  179. package/esm2022/currency/lib/models/currencies.mjs +161 -0
  180. package/esm2022/currency/lib/types/currency.mjs +2 -0
  181. package/esm2022/currency/public-api.mjs +3 -0
  182. package/esm2022/currency/seniorsistemas-angular-components-currency.mjs +5 -0
  183. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +690 -0
  184. package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +45 -0
  185. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +35 -0
  186. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +17 -0
  187. package/esm2022/custom-fields/public-api.mjs +4 -0
  188. package/esm2022/custom-fields/seniorsistemas-angular-components-custom-fields.mjs +5 -0
  189. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +82 -0
  190. package/esm2022/dialog/lib/src/dialog/models/active-dialog.mjs +18 -0
  191. package/esm2022/dialog/lib/src/dialog/models/dialog-models.mjs +2 -0
  192. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +96 -0
  193. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +29 -0
  194. package/esm2022/dialog/public-api.mjs +4 -0
  195. package/esm2022/dialog/seniorsistemas-angular-components-dialog.mjs +5 -0
  196. package/esm2022/dynamic-form/lib/dynamic-form/components/field-label/field-label.component.mjs +20 -0
  197. package/esm2022/dynamic-form/lib/dynamic-form/components/grid/row/row.component.mjs +41 -0
  198. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.mjs +632 -0
  199. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/default-filter.mjs +2 -0
  200. package/esm2022/dynamic-form/lib/dynamic-form/components/lookup/types/label-options.mjs +2 -0
  201. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/base-structure-component.mjs +2 -0
  202. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/fieldset/fieldset.component.mjs +27 -0
  203. package/esm2022/dynamic-form/lib/dynamic-form/components/structure/section/section.component.mjs +33 -0
  204. package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-config.mjs +71 -0
  205. package/esm2022/dynamic-form/lib/dynamic-form/configurations/dynamic-type.mjs +26 -0
  206. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/grid.mjs +14 -0
  207. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid/row.mjs +10 -0
  208. package/esm2022/dynamic-form/lib/dynamic-form/configurations/grid-type.mjs +5 -0
  209. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/fieldset.mjs +10 -0
  210. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/section.mjs +31 -0
  211. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure/structure.mjs +9 -0
  212. package/esm2022/dynamic-form/lib/dynamic-form/configurations/structure-type.mjs +6 -0
  213. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.component.mjs +41 -0
  214. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.directive.mjs +107 -0
  215. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.mjs +189 -0
  216. package/esm2022/dynamic-form/lib/dynamic-form/dynamic-form.module.mjs +289 -0
  217. package/esm2022/dynamic-form/lib/dynamic-form/form-field/addon-config.mjs +2 -0
  218. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-size.mjs +13 -0
  219. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/field-type.mjs +34 -0
  220. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +24 -0
  221. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +37 -0
  222. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/blob-field.mjs +31 -0
  223. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-field.mjs +30 -0
  224. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +15 -0
  225. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/button-field.mjs +47 -0
  226. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/calendar-field.mjs +56 -0
  227. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +9 -0
  228. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/chips-field.mjs +25 -0
  229. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +15 -0
  230. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/currency-field.mjs +14 -0
  231. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/decimal-field.mjs +16 -0
  232. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/editor-field.mjs +15 -0
  233. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/field.mjs +64 -0
  234. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/lookup-field.mjs +66 -0
  235. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/number-field.mjs +38 -0
  236. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/password-field.mjs +33 -0
  237. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/profile-picture.mjs +35 -0
  238. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +27 -0
  239. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/select-field.mjs +43 -0
  240. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/slider-field.mjs +30 -0
  241. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +17 -0
  242. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-field.mjs +30 -0
  243. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-area-ia-field.mjs +32 -0
  244. package/esm2022/dynamic-form/lib/dynamic-form/form-field/configurations/fields/text-field.mjs +38 -0
  245. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +36 -0
  246. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/base-field-component.mjs +22 -0
  247. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +124 -0
  248. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +27 -0
  249. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.mjs +23 -0
  250. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/button-field/button-field.component.mjs +31 -0
  251. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +118 -0
  252. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.mjs +21 -0
  253. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/chips/chips-field.component.mjs +59 -0
  254. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +29 -0
  255. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/currency/currency-field.component.mjs +90 -0
  256. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/editor/editor-field.component.mjs +23 -0
  257. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/file-upload/file-upload-field.component.mjs +56 -0
  258. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.mjs +23 -0
  259. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/number/number-field.component.mjs +121 -0
  260. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/password/password-field.component.mjs +75 -0
  261. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.mjs +22 -0
  262. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +52 -0
  263. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/select/select-field.component.mjs +24 -0
  264. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/slider/slider-field.component.mjs +103 -0
  265. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.mjs +25 -0
  266. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text/text-field.component.mjs +88 -0
  267. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +29 -0
  268. package/esm2022/dynamic-form/lib/dynamic-form/form-field/fields/text-area-ia/text-area-ia-field.component.mjs +22 -0
  269. package/esm2022/dynamic-form/lib/dynamic-form/form-field/form-field.mjs +243 -0
  270. package/esm2022/dynamic-form/lib/dynamic-form/services/dynamic-form-cache.mjs +150 -0
  271. package/esm2022/dynamic-form/public-api.mjs +44 -0
  272. package/esm2022/dynamic-form/seniorsistemas-angular-components-dynamic-form.mjs +5 -0
  273. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +44 -0
  274. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +18 -0
  275. package/esm2022/editable-overlay/public-api.mjs +3 -0
  276. package/esm2022/editable-overlay/seniorsistemas-angular-components-editable-overlay.mjs +5 -0
  277. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +51 -0
  278. package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +22 -0
  279. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +34 -0
  280. package/esm2022/empty-state/public-api.mjs +4 -0
  281. package/esm2022/empty-state/seniorsistemas-angular-components-empty-state.mjs +5 -0
  282. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +78 -0
  283. package/esm2022/fieldset/lib/fieldset/fieldset.models.mjs +2 -0
  284. package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +19 -0
  285. package/esm2022/fieldset/public-api.mjs +3 -0
  286. package/esm2022/fieldset/seniorsistemas-angular-components-fieldset.mjs +5 -0
  287. package/esm2022/file-upload/lib/file-upload/file-upload.component.mjs +276 -0
  288. package/esm2022/file-upload/lib/file-upload/file-upload.module.mjs +38 -0
  289. package/esm2022/file-upload/lib/file-upload/file-upload.service.mjs +18 -0
  290. package/esm2022/file-upload/lib/file-upload/models/file-dto.mjs +2 -0
  291. package/esm2022/file-upload/lib/file-upload/models/file-upload-permissions.mjs +2 -0
  292. package/esm2022/file-upload/lib/file-upload/models/list-blob-metadata.mjs +2 -0
  293. package/esm2022/file-upload/lib/file-upload/models/uploadError.mjs +2 -0
  294. package/esm2022/file-upload/lib/file-upload/models/validate-errors.mjs +2 -0
  295. package/esm2022/file-upload/public-api.mjs +3 -0
  296. package/esm2022/file-upload/seniorsistemas-angular-components-file-upload.mjs +5 -0
  297. package/esm2022/gantt/lib/gantt/components/gantt/arrow.mjs +87 -0
  298. package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +294 -0
  299. package/esm2022/gantt/lib/gantt/components/gantt/gantt-options.mjs +20 -0
  300. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +812 -0
  301. package/esm2022/gantt/lib/gantt/components/gantt/popup.mjs +110 -0
  302. package/esm2022/gantt/lib/gantt/components/gantt/utils/date-utils.mjs +116 -0
  303. package/esm2022/gantt/lib/gantt/components/gantt/utils/svg-utils.mjs +111 -0
  304. package/esm2022/gantt/lib/gantt/components/side-table/side-table.component.mjs +32 -0
  305. package/esm2022/gantt/lib/gantt/gantt.component.mjs +146 -0
  306. package/esm2022/gantt/lib/gantt/gantt.module.mjs +24 -0
  307. package/esm2022/gantt/lib/gantt/models/index.mjs +2 -0
  308. package/esm2022/gantt/lib/gantt/models/options.mjs +2 -0
  309. package/esm2022/gantt/lib/gantt/models/task.mjs +2 -0
  310. package/esm2022/gantt/lib/gantt/models/view-mode.mjs +12 -0
  311. package/esm2022/gantt/public-api.mjs +4 -0
  312. package/esm2022/gantt/seniorsistemas-angular-components-gantt.mjs +5 -0
  313. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +73 -0
  314. package/esm2022/global-search/lib/global-search/global-search.component.mjs +140 -0
  315. package/esm2022/global-search/lib/global-search/global-search.module.mjs +78 -0
  316. package/esm2022/global-search/lib/global-search/types/global-search-size.enum.mjs +2 -0
  317. package/esm2022/global-search/public-api.mjs +5 -0
  318. package/esm2022/global-search/seniorsistemas-angular-components-global-search.mjs +5 -0
  319. package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +34 -0
  320. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +19 -0
  321. package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +19 -0
  322. package/esm2022/grid-menu/lib/grid-menu/types/grid-menu-item.mjs +2 -0
  323. package/esm2022/grid-menu/public-api.mjs +4 -0
  324. package/esm2022/grid-menu/seniorsistemas-angular-components-grid-menu.mjs +5 -0
  325. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +84 -0
  326. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +314 -0
  327. package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +25 -0
  328. package/esm2022/help-popover/lib/help-popover/models/help-popover.models.mjs +2 -0
  329. package/esm2022/help-popover/public-api.mjs +4 -0
  330. package/esm2022/help-popover/seniorsistemas-angular-components-help-popover.mjs +5 -0
  331. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/components/ia-insight-card-loader/ia-insight-card-loader.component.mjs +13 -0
  332. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-card/ia-insight-card.component.mjs +82 -0
  333. package/esm2022/ia-insight/lib/ia-insight/components/ia-insight-sidebar/ia-insight-sidebar.component.mjs +49 -0
  334. package/esm2022/ia-insight/lib/ia-insight/ia-insight.component.mjs +66 -0
  335. package/esm2022/ia-insight/lib/ia-insight/ia-insight.module.mjs +47 -0
  336. package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-item.mjs +2 -0
  337. package/esm2022/ia-insight/lib/ia-insight/models/ia-insight-template-types.mjs +2 -0
  338. package/esm2022/ia-insight/lib/ia-insight/models/index.mjs +2 -0
  339. package/esm2022/ia-insight/public-api.mjs +4 -0
  340. package/esm2022/ia-insight/seniorsistemas-angular-components-ia-insight.mjs +5 -0
  341. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +179 -0
  342. package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +23 -0
  343. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +73 -0
  344. package/esm2022/image-cropper/public-api.mjs +4 -0
  345. package/esm2022/image-cropper/seniorsistemas-angular-components-image-cropper.mjs +5 -0
  346. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +28 -0
  347. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +18 -0
  348. package/esm2022/infinite-scroll/public-api.mjs +3 -0
  349. package/esm2022/infinite-scroll/seniorsistemas-angular-components-infinite-scroll.mjs +5 -0
  350. package/esm2022/info-sign/lib/info-sign/components/info-sign/info-sign.component.mjs +17 -0
  351. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +68 -0
  352. package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +20 -0
  353. package/esm2022/info-sign/public-api.mjs +3 -0
  354. package/esm2022/info-sign/seniorsistemas-angular-components-info-sign.mjs +5 -0
  355. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +53 -0
  356. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-lookup/inline-edit-lookup.component.mjs +32 -0
  357. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +85 -0
  358. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +32 -0
  359. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area/inline-edit-text-area.component.mjs +33 -0
  360. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-text-area-ia/inline-edit-text-area-ia.component.mjs +32 -0
  361. package/esm2022/inline-edit/lib/inline-edit/components/index.mjs +8 -0
  362. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +105 -0
  363. package/esm2022/inline-edit/lib/inline-edit/fields/index.mjs +8 -0
  364. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-calendar-field.mjs +45 -0
  365. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-field.mjs +13 -0
  366. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-lookup-field.mjs +60 -0
  367. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-number-field.mjs +38 -0
  368. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-field.mjs +15 -0
  369. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-area-ia-field.mjs +7 -0
  370. package/esm2022/inline-edit/lib/inline-edit/fields/inline-edit-text-field.mjs +7 -0
  371. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +66 -0
  372. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +102 -0
  373. package/esm2022/inline-edit/lib/inline-edit/types/addon-config.mjs +2 -0
  374. package/esm2022/inline-edit/public-api.mjs +4 -0
  375. package/esm2022/inline-edit/seniorsistemas-angular-components-inline-edit.mjs +5 -0
  376. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +63 -0
  377. package/esm2022/interactive-content/public-api.mjs +2 -0
  378. package/esm2022/interactive-content/seniorsistemas-angular-components-interactive-content.mjs +5 -0
  379. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +100 -0
  380. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +62 -0
  381. package/esm2022/kanban/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +17 -0
  382. package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +26 -0
  383. package/esm2022/kanban/lib/kanban/kanban.component.mjs +219 -0
  384. package/esm2022/kanban/lib/kanban/kanban.module.mjs +56 -0
  385. package/esm2022/kanban/lib/kanban/types/index.mjs +2 -0
  386. package/esm2022/kanban/lib/kanban/types/kanban-data.mjs +2 -0
  387. package/esm2022/kanban/lib/kanban/types/kanban-template-types.mjs +2 -0
  388. package/esm2022/kanban/public-api.mjs +3 -0
  389. package/esm2022/kanban/seniorsistemas-angular-components-kanban.mjs +5 -0
  390. package/esm2022/label-value/lib/label-value/label-value.component.mjs +35 -0
  391. package/esm2022/label-value/lib/label-value/label-value.module.mjs +22 -0
  392. package/esm2022/label-value/lib/label-value/types/label-value-configuration.mjs +2 -0
  393. package/esm2022/label-value/public-api.mjs +3 -0
  394. package/esm2022/label-value/seniorsistemas-angular-components-label-value.mjs +5 -0
  395. package/esm2022/lib/locale/fallback.mjs +333 -0
  396. package/esm2022/loading-state/lib/loading-state/components/dots-indicator/dots-indicator.components.mjs +11 -0
  397. package/esm2022/loading-state/lib/loading-state/components/loading-state-indicators.mjs +6 -0
  398. package/esm2022/loading-state/lib/loading-state/components/logo-indicator/logo-indicator.component.mjs +12 -0
  399. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +74 -0
  400. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +62 -0
  401. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +30 -0
  402. package/esm2022/loading-state/public-api.mjs +5 -0
  403. package/esm2022/loading-state/seniorsistemas-angular-components-loading-state.mjs +5 -0
  404. package/esm2022/locale/lib/locale/locale.module.mjs +85 -0
  405. package/esm2022/locale/lib/locale/locale.service.mjs +87 -0
  406. package/esm2022/locale/lib/locale/options/calendar.mjs +24 -0
  407. package/esm2022/locale/lib/locale/options/index.mjs +27 -0
  408. package/esm2022/locale/lib/locale/options/number.mjs +9 -0
  409. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +18 -0
  410. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +38 -0
  411. package/esm2022/locale/lib/locale/pipes/localized-currency-impure.pipe.mjs +21 -0
  412. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +53 -0
  413. package/esm2022/locale/lib/locale/pipes/localized-date-impure.pipe.mjs +15 -0
  414. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +23 -0
  415. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +31 -0
  416. package/esm2022/locale/lib/locale/pipes/localized-time-impure.pipe.mjs +15 -0
  417. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +23 -0
  418. package/esm2022/locale/public-api.mjs +13 -0
  419. package/esm2022/locale/seniorsistemas-angular-components-locale.mjs +5 -0
  420. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +63 -0
  421. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +18 -0
  422. package/esm2022/localized-number-input/public-api.mjs +3 -0
  423. package/esm2022/localized-number-input/seniorsistemas-angular-components-localized-number-input.mjs +5 -0
  424. package/esm2022/mask/lib/mask/mask-formatter.module.mjs +16 -0
  425. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +65 -0
  426. package/esm2022/mask/public-api.mjs +3 -0
  427. package/esm2022/mask/seniorsistemas-angular-components-mask.mjs +5 -0
  428. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +37 -0
  429. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +51 -0
  430. package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +27 -0
  431. package/esm2022/mouse-events/public-api.mjs +4 -0
  432. package/esm2022/mouse-events/seniorsistemas-angular-components-mouse-events.mjs +5 -0
  433. package/esm2022/navigation-button/lib/navigation-button/models/index.mjs +2 -0
  434. package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-item.mjs +2 -0
  435. package/esm2022/navigation-button/lib/navigation-button/models/navigation-button-step-changed-info.mjs +2 -0
  436. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +134 -0
  437. package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +20 -0
  438. package/esm2022/navigation-button/public-api.mjs +4 -0
  439. package/esm2022/navigation-button/seniorsistemas-angular-components-navigation-button.mjs +5 -0
  440. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +164 -0
  441. package/esm2022/number-input/lib/number-input/number-input.module.mjs +21 -0
  442. package/esm2022/number-input/public-api.mjs +3 -0
  443. package/esm2022/number-input/seniorsistemas-angular-components-number-input.mjs +5 -0
  444. package/esm2022/numeric/lib/numeric.module.mjs +18 -0
  445. package/esm2022/numeric/lib/numeric.pipe.mjs +29 -0
  446. package/esm2022/numeric/lib/numeric.service.mjs +92 -0
  447. package/esm2022/numeric/public-api.mjs +4 -0
  448. package/esm2022/numeric/seniorsistemas-angular-components-numeric.mjs +5 -0
  449. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +51 -0
  450. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +87 -0
  451. package/esm2022/object-card/lib/object-card/object-card.component.mjs +171 -0
  452. package/esm2022/object-card/lib/object-card/object-card.module.mjs +24 -0
  453. package/esm2022/object-card/public-api.mjs +5 -0
  454. package/esm2022/object-card/seniorsistemas-angular-components-object-card.mjs +5 -0
  455. package/esm2022/paginator/lib/models/paginator.models.mjs +2 -0
  456. package/esm2022/paginator/lib/paginator/paginator.component.mjs +138 -0
  457. package/esm2022/paginator/public-api.mjs +2 -0
  458. package/esm2022/paginator/seniorsistemas-angular-components-paginator.mjs +5 -0
  459. package/esm2022/panel/lib/panel/panel.component.mjs +91 -0
  460. package/esm2022/panel/lib/panel/panel.module.mjs +20 -0
  461. package/esm2022/panel/public-api.mjs +3 -0
  462. package/esm2022/panel/seniorsistemas-angular-components-panel.mjs +5 -0
  463. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +92 -0
  464. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +210 -0
  465. package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +19 -0
  466. package/esm2022/password-strength/lib/password-strength/types/password-positions.mjs +2 -0
  467. package/esm2022/password-strength/lib/password-strength/types/password-strengths.mjs +2 -0
  468. package/esm2022/password-strength/public-api.mjs +4 -0
  469. package/esm2022/password-strength/seniorsistemas-angular-components-password-strength.mjs +5 -0
  470. package/esm2022/picklist/lib/picklist/picklist.component.mjs +299 -0
  471. package/esm2022/picklist/lib/picklist/picklist.module.mjs +36 -0
  472. package/esm2022/picklist/lib/picklist/types/index.mjs +2 -0
  473. package/esm2022/picklist/lib/picklist/types/picklist-item.mjs +2 -0
  474. package/esm2022/picklist/lib/picklist/types/picklist-template-types.mjs +2 -0
  475. package/esm2022/picklist/public-api.mjs +5 -0
  476. package/esm2022/picklist/seniorsistemas-angular-components-picklist.mjs +5 -0
  477. package/esm2022/product-header/lib/product-header/product-header.component.mjs +44 -0
  478. package/esm2022/product-header/lib/product-header/product-header.module.mjs +20 -0
  479. package/esm2022/product-header/public-api.mjs +3 -0
  480. package/esm2022/product-header/seniorsistemas-angular-components-product-header.mjs +5 -0
  481. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/confirmation-texts.mjs +2 -0
  482. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/cropper-labels-config.mjs +2 -0
  483. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/file-validation-errors.mjs +2 -0
  484. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/index.mjs +2 -0
  485. package/esm2022/profile-picture-picker/lib/profile-picture-picker/models/profile-picture-picker-data.mjs +2 -0
  486. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +277 -0
  487. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +25 -0
  488. package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/index.mjs +2 -0
  489. package/esm2022/profile-picture-picker/lib/profile-picture-picker/validators/validators.mjs +28 -0
  490. package/esm2022/profile-picture-picker/public-api.mjs +4 -0
  491. package/esm2022/profile-picture-picker/seniorsistemas-angular-components-profile-picture-picker.mjs +5 -0
  492. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +60 -0
  493. package/esm2022/progressbar/lib/progressbar/components/progressbar-indeterminate/progressbar-indeterminate.component.mjs +19 -0
  494. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +57 -0
  495. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +21 -0
  496. package/esm2022/progressbar/lib/progressbar/types/index.mjs +2 -0
  497. package/esm2022/progressbar/lib/progressbar/types/progressbar-colors.mjs +2 -0
  498. package/esm2022/progressbar/lib/progressbar/types/progressbar-mode.mjs +2 -0
  499. package/esm2022/progressbar/public-api.mjs +4 -0
  500. package/esm2022/progressbar/seniorsistemas-angular-components-progressbar.mjs +5 -0
  501. package/esm2022/public-api.mjs +2 -0
  502. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +82 -0
  503. package/esm2022/radio-button/lib/radio-button-group/models/radio-button-group.models.mjs +2 -0
  504. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +62 -0
  505. package/esm2022/radio-button/lib/services/radio-button-registry.service.mjs +38 -0
  506. package/esm2022/radio-button/public-api.mjs +3 -0
  507. package/esm2022/radio-button/seniorsistemas-angular-components-radio-button.mjs +5 -0
  508. package/esm2022/rating-scale/lib/rating-scale/models/index.mjs +2 -0
  509. package/esm2022/rating-scale/lib/rating-scale/models/rating-scale-node.mjs +2 -0
  510. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +54 -0
  511. package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +24 -0
  512. package/esm2022/rating-scale/public-api.mjs +3 -0
  513. package/esm2022/rating-scale/seniorsistemas-angular-components-rating-scale.mjs +5 -0
  514. package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +27 -0
  515. package/esm2022/select/lib/select/select.component.mjs +712 -0
  516. package/esm2022/select/public-api.mjs +2 -0
  517. package/esm2022/select/seniorsistemas-angular-components-select.mjs +5 -0
  518. package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +28 -0
  519. package/esm2022/select-button/lib/select-button/models/select-button-item.mjs +2 -0
  520. package/esm2022/select-button/lib/select-button/select-button.component.mjs +122 -0
  521. package/esm2022/select-button/lib/select-button/select-button.module.mjs +23 -0
  522. package/esm2022/select-button/public-api.mjs +3 -0
  523. package/esm2022/select-button/seniorsistemas-angular-components-select-button.mjs +5 -0
  524. package/esm2022/seniorsistemas-angular-components.mjs +5 -0
  525. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +19 -0
  526. package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +19 -0
  527. package/esm2022/shared/lib/shared/helpers.mjs +31 -0
  528. package/esm2022/shared/lib/shared/models/border-button-options.mjs +2 -0
  529. package/esm2022/shared/lib/shared/models/severities.mjs +9 -0
  530. package/esm2022/shared/public-api.mjs +5 -0
  531. package/esm2022/shared/seniorsistemas-angular-components-shared.mjs +5 -0
  532. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +114 -0
  533. package/esm2022/sidebar/lib/sidebar/sidebar.module.mjs +20 -0
  534. package/esm2022/sidebar/public-api.mjs +3 -0
  535. package/esm2022/sidebar/seniorsistemas-angular-components-sidebar.mjs +5 -0
  536. package/esm2022/slide-panel/lib/slide-panel/slide-panel.component.mjs +137 -0
  537. package/esm2022/slide-panel/lib/slide-panel/slide-panel.module.mjs +20 -0
  538. package/esm2022/slide-panel/lib/slide-panel/slide-panel.service.mjs +26 -0
  539. package/esm2022/slide-panel/public-api.mjs +4 -0
  540. package/esm2022/slide-panel/seniorsistemas-angular-components-slide-panel.mjs +5 -0
  541. package/esm2022/slider/lib/slider/slider.component.mjs +601 -0
  542. package/esm2022/slider/lib/slider/slider.module.mjs +19 -0
  543. package/esm2022/slider/public-api.mjs +3 -0
  544. package/esm2022/slider/seniorsistemas-angular-components-slider.mjs +5 -0
  545. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +217 -0
  546. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +24 -0
  547. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +146 -0
  548. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +81 -0
  549. package/esm2022/speech-recognition/public-api.mjs +5 -0
  550. package/esm2022/speech-recognition/seniorsistemas-angular-components-speech-recognition.mjs +5 -0
  551. package/esm2022/split-button/lib/split-button/models/index.mjs +2 -0
  552. package/esm2022/split-button/lib/split-button/models/split-button-option.mjs +2 -0
  553. package/esm2022/split-button/lib/split-button/models/split-button-type.mjs +2 -0
  554. package/esm2022/split-button/lib/split-button/split-button.component.mjs +64 -0
  555. package/esm2022/split-button/lib/split-button/split-button.module.mjs +18 -0
  556. package/esm2022/split-button/public-api.mjs +4 -0
  557. package/esm2022/split-button/seniorsistemas-angular-components-split-button.mjs +5 -0
  558. package/esm2022/star-rating/public-api.mjs +2 -0
  559. package/esm2022/star-rating/seniorsistemas-angular-components-star-rating.mjs +5 -0
  560. package/esm2022/star-rating/star-rating/star-rating-models.mjs +2 -0
  561. package/esm2022/star-rating/star-rating/star-rating.component.mjs +63 -0
  562. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +119 -0
  563. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +19 -0
  564. package/esm2022/stats-card/public-api.mjs +3 -0
  565. package/esm2022/stats-card/seniorsistemas-angular-components-stats-card.mjs +5 -0
  566. package/esm2022/steps/lib/steps/steps.component.mjs +122 -0
  567. package/esm2022/steps/lib/steps/steps.module.mjs +19 -0
  568. package/esm2022/steps/public-api.mjs +3 -0
  569. package/esm2022/steps/seniorsistemas-angular-components-steps.mjs +5 -0
  570. package/esm2022/structure/lib/structure/footer.component.mjs +14 -0
  571. package/esm2022/structure/lib/structure/header.component.mjs +14 -0
  572. package/esm2022/structure/lib/structure/structure.module.mjs +19 -0
  573. package/esm2022/structure/public-api.mjs +5 -0
  574. package/esm2022/structure/seniorsistemas-angular-components-structure.mjs +5 -0
  575. package/esm2022/switch/lib/switch/switch.component.mjs +93 -0
  576. package/esm2022/switch/lib/switch/switch.module.mjs +18 -0
  577. package/esm2022/switch/public-api.mjs +3 -0
  578. package/esm2022/switch/seniorsistemas-angular-components-switch.mjs +5 -0
  579. package/esm2022/table/lib/locale-utils.mjs +15 -0
  580. package/esm2022/table/lib/table/export-utils.mjs +112 -0
  581. package/esm2022/table/lib/table/navigation/navigation.directive.mjs +130 -0
  582. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +38 -0
  583. package/esm2022/table/lib/table/table-column/index.mjs +3 -0
  584. package/esm2022/table/lib/table/table-column/models/badge-column.interface.mjs +2 -0
  585. package/esm2022/table/lib/table/table-column/models/badge-configs.interface.mjs +2 -0
  586. package/esm2022/table/lib/table/table-column/models/column-colors.mjs +2 -0
  587. package/esm2022/table/lib/table/table-column/models/column-values.interface.mjs +2 -0
  588. package/esm2022/table/lib/table/table-column/models/column.interface.mjs +2 -0
  589. package/esm2022/table/lib/table/table-column/models/dynamic-editable-grid.interface.mjs +2 -0
  590. package/esm2022/table/lib/table/table-column/models/enum-badge-colors.mjs +10 -0
  591. package/esm2022/table/lib/table/table-column/models/enum-column-field-type.mjs +13 -0
  592. package/esm2022/table/lib/table/table-column/models/index.mjs +11 -0
  593. package/esm2022/table/lib/table/table-column/models/locale-options.interface.mjs +2 -0
  594. package/esm2022/table/lib/table/table-column/models/number-locale-options.interface.mjs +2 -0
  595. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +299 -0
  596. package/esm2022/table/lib/table/table-paging/index.mjs +3 -0
  597. package/esm2022/table/lib/table/table-paging/models/custom-action.interface.mjs +2 -0
  598. package/esm2022/table/lib/table/table-paging/models/index.mjs +2 -0
  599. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +321 -0
  600. package/esm2022/table/lib/table/table.module.mjs +27 -0
  601. package/esm2022/table/public-api.mjs +6 -0
  602. package/esm2022/table/seniorsistemas-angular-components-table.mjs +5 -0
  603. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +151 -0
  604. package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +20 -0
  605. package/esm2022/table-header/public-api.mjs +3 -0
  606. package/esm2022/table-header/seniorsistemas-angular-components-table-header.mjs +5 -0
  607. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +36 -0
  608. package/esm2022/tabs/lib/tabs/tabs.component.mjs +51 -0
  609. package/esm2022/tabs/public-api.mjs +3 -0
  610. package/esm2022/tabs/seniorsistemas-angular-components-tabs.mjs +5 -0
  611. package/esm2022/template/lib/template/template.directive.mjs +22 -0
  612. package/esm2022/template/lib/template/template.module.mjs +17 -0
  613. package/esm2022/template/public-api.mjs +3 -0
  614. package/esm2022/template/seniorsistemas-angular-components-template.mjs +5 -0
  615. package/esm2022/text-area/lib/text-area/text-area.component.mjs +116 -0
  616. package/esm2022/text-area/lib/text-area.module.mjs +35 -0
  617. package/esm2022/text-area/public-api.mjs +3 -0
  618. package/esm2022/text-area/seniorsistemas-angular-components-text-area.mjs +5 -0
  619. package/esm2022/text-area-ia/lib/services/IAssist/iassist.service.mjs +77 -0
  620. package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-input-data.mjs +3 -0
  621. package/esm2022/text-area-ia/lib/services/IAssist/models/iassist-response.mjs +3 -0
  622. package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.component.mjs +150 -0
  623. package/esm2022/text-area-ia/lib/text-area-ia/text-area-ia.module.mjs +50 -0
  624. package/esm2022/text-area-ia/public-api.mjs +3 -0
  625. package/esm2022/text-area-ia/seniorsistemas-angular-components-text-area-ia.mjs +5 -0
  626. package/esm2022/thumbnail/lib/thumbnail/thumbnail-size.mjs +2 -0
  627. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +77 -0
  628. package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +20 -0
  629. package/esm2022/thumbnail/lib/thumbnail/thumbnail.service.mjs +62 -0
  630. package/esm2022/thumbnail/public-api.mjs +4 -0
  631. package/esm2022/thumbnail/seniorsistemas-angular-components-thumbnail.mjs +5 -0
  632. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-image/thumbnail-item-image.component.mjs +17 -0
  633. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/components/thumbnail-item-video/thumbnail-item-video.component.mjs +42 -0
  634. package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +64 -0
  635. package/esm2022/thumbnails/lib/thumbnails/models/thumbnails-item.mjs +2 -0
  636. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +48 -0
  637. package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +24 -0
  638. package/esm2022/thumbnails/public-api.mjs +3 -0
  639. package/esm2022/thumbnails/seniorsistemas-angular-components-thumbnails.mjs +5 -0
  640. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +303 -0
  641. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  642. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +73 -0
  643. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +179 -0
  644. package/esm2022/tiered-menu/lib/tiered-menu/models/index.mjs +2 -0
  645. package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-data.mjs +2 -0
  646. package/esm2022/tiered-menu/lib/tiered-menu/models/tiered-menu-item-internal-data.mjs +2 -0
  647. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.event.service.mjs +17 -0
  648. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +11 -0
  649. package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.service.mjs +54 -0
  650. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +234 -0
  651. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +34 -0
  652. package/esm2022/tiered-menu/public-api.mjs +6 -0
  653. package/esm2022/tiered-menu/seniorsistemas-angular-components-tiered-menu.mjs +5 -0
  654. package/esm2022/tile/lib/tile/tile.component.mjs +65 -0
  655. package/esm2022/tile/lib/tile/tile.module.mjs +20 -0
  656. package/esm2022/tile/public-api.mjs +3 -0
  657. package/esm2022/tile/seniorsistemas-angular-components-tile.mjs +5 -0
  658. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.component.mjs +24 -0
  659. package/esm2022/timeline/lib/timeline/components/horizontal-timeline/horizontal-timeline.module.mjs +20 -0
  660. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.component.mjs +26 -0
  661. package/esm2022/timeline/lib/timeline/components/timeline-icon-item/timeline-icon-item.module.mjs +19 -0
  662. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapse-option/collapse-option.component.mjs +21 -0
  663. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/collapsed-items/collapsed-items.component.mjs +33 -0
  664. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/range-line/range-line.component.mjs +11 -0
  665. package/esm2022/timeline/lib/timeline/components/vertical-timeline/components/vertical-items/vertical-items.component.mjs +29 -0
  666. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.component.mjs +60 -0
  667. package/esm2022/timeline/lib/timeline/components/vertical-timeline/vertical-timeline.module.mjs +33 -0
  668. package/esm2022/timeline/lib/timeline/models/timeline-item-severity.mjs +7 -0
  669. package/esm2022/timeline/lib/timeline/models/timeline-item-size.mjs +6 -0
  670. package/esm2022/timeline/lib/timeline/models/timeline-item.mjs +44 -0
  671. package/esm2022/timeline/lib/timeline/timeline.component.mjs +66 -0
  672. package/esm2022/timeline/lib/timeline/timeline.module.mjs +32 -0
  673. package/esm2022/timeline/public-api.mjs +6 -0
  674. package/esm2022/timeline/seniorsistemas-angular-components-timeline.mjs +5 -0
  675. package/esm2022/toast/lib/toast/toast.component.mjs +46 -0
  676. package/esm2022/toast/lib/toast/toast.module.mjs +17 -0
  677. package/esm2022/toast/lib/toast/toast.service.mjs +68 -0
  678. package/esm2022/toast/lib/toast/types/toast.mjs +2 -0
  679. package/esm2022/toast/public-api.mjs +4 -0
  680. package/esm2022/toast/seniorsistemas-angular-components-toast.mjs +5 -0
  681. package/esm2022/token-list/lib/token-list/models/index.mjs +2 -0
  682. package/esm2022/token-list/lib/token-list/models/token.mjs +2 -0
  683. package/esm2022/token-list/lib/token-list/token-list.component.mjs +42 -0
  684. package/esm2022/token-list/lib/token-list/token-list.module.mjs +18 -0
  685. package/esm2022/token-list/public-api.mjs +4 -0
  686. package/esm2022/token-list/seniorsistemas-angular-components-token-list.mjs +5 -0
  687. package/esm2022/tooltip/lib/tooltip/models/mobile-behavior.mjs +2 -0
  688. package/esm2022/tooltip/lib/tooltip/models/tooltip-event.mjs +2 -0
  689. package/esm2022/tooltip/lib/tooltip/models/tooltip-position.mjs +2 -0
  690. package/esm2022/tooltip/lib/tooltip/tooltip.component.mjs +18 -0
  691. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +339 -0
  692. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +19 -0
  693. package/esm2022/tooltip/public-api.mjs +3 -0
  694. package/esm2022/tooltip/seniorsistemas-angular-components-tooltip.mjs +5 -0
  695. package/esm2022/utils/lib/utils/breakpoints.mjs +11 -0
  696. package/esm2022/utils/lib/utils/utils.mjs +51 -0
  697. package/esm2022/utils/public-api.mjs +3 -0
  698. package/esm2022/utils/seniorsistemas-angular-components-utils.mjs +5 -0
  699. package/esm2022/workspace-switch/lib/workspace-switch/models/index.mjs +2 -0
  700. package/esm2022/workspace-switch/lib/workspace-switch/models/workspace.mjs +2 -0
  701. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +137 -0
  702. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +18 -0
  703. package/esm2022/workspace-switch/public-api.mjs +3 -0
  704. package/esm2022/workspace-switch/seniorsistemas-angular-components-workspace-switch.mjs +5 -0
  705. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +10 -10
  706. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  707. package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -7
  708. package/fesm2022/seniorsistemas-angular-components-badge.mjs +7 -7
  709. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +7 -7
  710. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +7 -7
  711. package/fesm2022/seniorsistemas-angular-components-button.mjs +7 -7
  712. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  713. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -7
  714. package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -7
  715. package/fesm2022/seniorsistemas-angular-components-chat.mjs +10 -10
  716. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -7
  717. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +3 -3
  718. package/fesm2022/seniorsistemas-angular-components-chips.mjs +10 -10
  719. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  720. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +11 -11
  721. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -7
  722. package/fesm2022/seniorsistemas-angular-components-common.mjs +20 -20
  723. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +6 -6
  724. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -7
  725. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +10 -10
  726. package/fesm2022/seniorsistemas-angular-components-currency.mjs +3 -3
  727. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +10 -10
  728. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +9 -9
  729. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  730. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +125 -119
  731. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  732. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -7
  733. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +10 -10
  734. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +9 -10
  735. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  736. package/fesm2022/seniorsistemas-angular-components-file-upload.mjs +10 -10
  737. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +10 -10
  738. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  739. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +10 -10
  740. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +10 -10
  741. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +10 -10
  742. package/fesm2022/seniorsistemas-angular-components-ia-insight.mjs +16 -16
  743. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +10 -10
  744. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -7
  745. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +10 -10
  746. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  747. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +28 -28
  748. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  749. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +7 -3
  750. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  751. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +19 -19
  752. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -7
  753. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +16 -16
  754. package/fesm2022/seniorsistemas-angular-components-locale.mjs +34 -34
  755. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +7 -7
  756. package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -7
  757. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +10 -10
  758. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +8 -8
  759. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  760. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +7 -7
  761. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +10 -10
  762. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +13 -13
  763. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  764. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +3 -3
  765. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  766. package/fesm2022/seniorsistemas-angular-components-panel.mjs +7 -7
  767. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +10 -10
  768. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -7
  769. package/fesm2022/seniorsistemas-angular-components-product-header.mjs +7 -7
  770. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -7
  771. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +13 -13
  772. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +182 -0
  773. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -0
  774. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -7
  775. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +10 -10
  776. package/fesm2022/seniorsistemas-angular-components-select.mjs +6 -6
  777. package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -7
  778. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  779. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +42 -23
  780. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  781. package/fesm2022/seniorsistemas-angular-components-slide-panel.mjs +10 -10
  782. package/fesm2022/seniorsistemas-angular-components-slider.mjs +8 -8
  783. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  784. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +13 -13
  785. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -7
  786. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +4 -4
  787. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  788. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -7
  789. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  790. package/fesm2022/seniorsistemas-angular-components-steps.mjs +7 -7
  791. package/fesm2022/seniorsistemas-angular-components-steps.mjs.map +1 -1
  792. package/fesm2022/seniorsistemas-angular-components-structure.mjs +11 -11
  793. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  794. package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -7
  795. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -7
  796. package/fesm2022/seniorsistemas-angular-components-table.mjs +16 -16
  797. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  798. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +91 -0
  799. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -0
  800. package/fesm2022/seniorsistemas-angular-components-template.mjs +12 -15
  801. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  802. package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +10 -10
  803. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +7 -7
  804. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +10 -10
  805. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +16 -16
  806. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +54 -92
  807. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  808. package/fesm2022/seniorsistemas-angular-components-tile.mjs +7 -7
  809. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  810. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +40 -40
  811. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  812. package/fesm2022/seniorsistemas-angular-components-toast.mjs +10 -10
  813. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -7
  814. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +24 -14
  815. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  816. package/fesm2022/seniorsistemas-angular-components-utils.mjs +13 -4
  817. package/fesm2022/seniorsistemas-angular-components-utils.mjs.map +1 -1
  818. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -7
  819. package/fesm2022/seniorsistemas-angular-components.mjs +1 -0
  820. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  821. package/fieldset/lib/fieldset/fieldset.component.d.ts +1 -1
  822. package/fieldset/lib/fieldset/fieldset.module.d.ts +1 -2
  823. package/index.d.ts +5 -0
  824. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +2 -1
  825. package/lib/locale/fallback.d.ts +1 -0
  826. package/package.json +13 -89
  827. package/public-api.d.ts +1 -0
  828. package/radio-button/index.d.ts +5 -0
  829. package/radio-button/lib/radio-button/radio-button.component.d.ts +31 -0
  830. package/radio-button/lib/radio-button-group/models/radio-button-group.models.d.ts +5 -0
  831. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +25 -0
  832. package/radio-button/lib/services/radio-button-registry.service.d.ts +12 -0
  833. package/radio-button/public-api.d.ts +3 -0
  834. package/select/index.d.ts +5 -0
  835. package/select/lib/select/components/select-option/select-option.component.d.ts +14 -0
  836. package/select/lib/select/select.component.d.ts +275 -0
  837. package/select/public-api.d.ts +1 -0
  838. package/sidebar/lib/sidebar/sidebar.component.d.ts +7 -6
  839. package/src/lib/styles/tailwind.scss +4 -0
  840. package/tabs/index.d.ts +5 -0
  841. package/tabs/lib/tab-item/tab-item.component.d.ts +18 -0
  842. package/tabs/lib/tabs/tabs.component.d.ts +16 -0
  843. package/tabs/public-api.d.ts +2 -0
  844. package/tailwind.css +455 -414
  845. package/template/lib/template/template.directive.d.ts +2 -3
  846. package/template/lib/template/template.module.d.ts +3 -3
  847. package/tooltip/lib/tooltip/tooltip.directive.d.ts +4 -2
  848. package/tooltip/lib/tooltip/tooltip.module.d.ts +3 -3
  849. package/utils/lib/utils/utils.d.ts +2 -0
  850. package/accordion/package.json +0 -3
  851. package/alert/package.json +0 -3
  852. package/badge/package.json +0 -3
  853. package/bignumber-input/package.json +0 -3
  854. package/breadcrumb/package.json +0 -3
  855. package/button/package.json +0 -3
  856. package/calendar-mask/package.json +0 -3
  857. package/card/package.json +0 -3
  858. package/chat/package.json +0 -3
  859. package/checkbox/package.json +0 -3
  860. package/checkbox-list/package.json +0 -3
  861. package/chips/package.json +0 -3
  862. package/code-editor/package.json +0 -3
  863. package/collapse-link/package.json +0 -3
  864. package/common/package.json +0 -3
  865. package/confirm-dialog/package.json +0 -3
  866. package/control-errors/package.json +0 -3
  867. package/country-phone-picker/package.json +0 -3
  868. package/currency/package.json +0 -3
  869. package/custom-fields/package.json +0 -3
  870. package/dialog/package.json +0 -3
  871. package/dynamic-form/package.json +0 -3
  872. package/editable-overlay/package.json +0 -3
  873. package/empty-state/package.json +0 -3
  874. package/fieldset/package.json +0 -3
  875. package/file-upload/package.json +0 -3
  876. package/gantt/package.json +0 -3
  877. package/global-search/package.json +0 -3
  878. package/grid-menu/package.json +0 -3
  879. package/help-popover/package.json +0 -3
  880. package/ia-insight/package.json +0 -3
  881. package/image-cropper/package.json +0 -3
  882. package/infinite-scroll/package.json +0 -3
  883. package/info-sign/package.json +0 -3
  884. package/inline-edit/package.json +0 -3
  885. package/interactive-content/package.json +0 -3
  886. package/kanban/package.json +0 -3
  887. package/label-value/package.json +0 -3
  888. package/loading-state/package.json +0 -3
  889. package/locale/package.json +0 -3
  890. package/localized-number-input/package.json +0 -3
  891. package/mask/package.json +0 -3
  892. package/mouse-events/package.json +0 -3
  893. package/navigation-button/package.json +0 -3
  894. package/number-input/package.json +0 -3
  895. package/numeric/package.json +0 -3
  896. package/object-card/package.json +0 -3
  897. package/paginator/package.json +0 -3
  898. package/panel/package.json +0 -3
  899. package/password-strength/package.json +0 -3
  900. package/picklist/package.json +0 -3
  901. package/product-header/package.json +0 -3
  902. package/profile-picture-picker/package.json +0 -3
  903. package/progressbar/package.json +0 -3
  904. package/rating-scale/package.json +0 -3
  905. package/select-button/package.json +0 -3
  906. package/shared/package.json +0 -3
  907. package/sidebar/package.json +0 -3
  908. package/slide-panel/package.json +0 -3
  909. package/slider/package.json +0 -3
  910. package/speech-recognition/package.json +0 -3
  911. package/split-button/package.json +0 -3
  912. package/star-rating/package.json +0 -3
  913. package/stats-card/package.json +0 -3
  914. package/steps/package.json +0 -3
  915. package/structure/package.json +0 -3
  916. package/switch/package.json +0 -3
  917. package/table/package.json +0 -3
  918. package/table-header/package.json +0 -3
  919. package/template/package.json +0 -3
  920. package/text-area/package.json +0 -3
  921. package/text-area-ia/package.json +0 -3
  922. package/thumbnail/package.json +0 -3
  923. package/thumbnails/package.json +0 -3
  924. package/tiered-menu/lib/tiered-menu/utils.d.ts +0 -2
  925. package/tiered-menu/package.json +0 -3
  926. package/tile/package.json +0 -3
  927. package/timeline/package.json +0 -3
  928. package/toast/package.json +0 -3
  929. package/token-list/package.json +0 -3
  930. package/tooltip/package.json +0 -3
  931. package/utils/package.json +0 -3
  932. package/workspace-switch/package.json +0 -3
@@ -0,0 +1,611 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "primeng/calendar";
5
+ export class CalendarMaskDirective {
6
+ host;
7
+ renderer;
8
+ // TODO: Mudei um monte de coisa e tem que testar se isso ainda funciona
9
+ // TODO: Ainda está sendo usada esta diretiva?
10
+ SELECTORS = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
11
+ slotChar = "_";
12
+ autoClear = false;
13
+ value;
14
+ input;
15
+ filled;
16
+ _mask;
17
+ defs;
18
+ tests;
19
+ partialPosition;
20
+ firstNonMaskPos;
21
+ lastRequiredNonMaskPos;
22
+ len;
23
+ oldVal;
24
+ buffer;
25
+ defaultBuffer;
26
+ focusText;
27
+ caretTimeoutId;
28
+ androidChrome;
29
+ firstTime = true;
30
+ focusListener;
31
+ blurListener;
32
+ keydownListener;
33
+ keypressListener;
34
+ inputListener;
35
+ pasteListener;
36
+ constructor(host, renderer) {
37
+ this.host = host;
38
+ this.renderer = renderer;
39
+ }
40
+ setListeners() {
41
+ this.input = this.host.inputfieldViewChild?.nativeElement;
42
+ this.value = this.input?.value;
43
+ this.focusListener = this.renderer.listen(this.input, "focus", () => {
44
+ this.onInputFocus();
45
+ });
46
+ this.blurListener = this.renderer.listen(this.input, "blur", (event) => {
47
+ this.onInputBlur(event);
48
+ });
49
+ this.keydownListener = this.renderer.listen(this.input, "keydown", (event) => {
50
+ this.onKeyDown(event);
51
+ });
52
+ this.keypressListener = this.renderer.listen(this.input, "keypress", (event) => {
53
+ this.onKeyPress(event);
54
+ });
55
+ this.inputListener = this.renderer.listen(this.input, "input", (event) => {
56
+ this.onInputChange(event);
57
+ });
58
+ this.pasteListener = this.renderer.listen(this.input, "paste", (event) => {
59
+ this.handleInputChange(event);
60
+ });
61
+ }
62
+ ngOnInit() {
63
+ const ua = navigator.userAgent;
64
+ this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);
65
+ this.createMaskFromDateFormat();
66
+ this.initMask();
67
+ }
68
+ get mask() {
69
+ return this._mask ?? '';
70
+ }
71
+ set mask(val) {
72
+ this._mask = val;
73
+ this.initMask();
74
+ this.writeValue("");
75
+ }
76
+ writeValue(value) {
77
+ this.value = value;
78
+ if (this.input) {
79
+ if (this.value == undefined) {
80
+ this.input.value = "";
81
+ }
82
+ else {
83
+ this.input.value = this.value;
84
+ }
85
+ this.checkVal();
86
+ this.focusText = this.input.value;
87
+ this.updateFilledState();
88
+ }
89
+ }
90
+ onInputBlur(e) {
91
+ this.checkVal();
92
+ this.updateFilledState();
93
+ if (this.value != this.focusText) {
94
+ if (!this.input?.disabled &&
95
+ (this.value === undefined || this.value === null || this.value.indexOf(this.slotChar) >= 0)) {
96
+ this.value = "";
97
+ e.target.value = "";
98
+ this.host.updateModel(null);
99
+ }
100
+ this.updateModel(e);
101
+ const event = document.createEvent("HTMLEvents");
102
+ event.initEvent("change", true, false);
103
+ this.input?.dispatchEvent(event);
104
+ }
105
+ }
106
+ onKeyDown(e) {
107
+ if (this.host.readonlyInput) {
108
+ return;
109
+ }
110
+ const k = e.which || e.keyCode;
111
+ const iPhone = /iphone/i.test(navigator.userAgent);
112
+ let pos;
113
+ let begin;
114
+ let end;
115
+ this.oldVal = this.input?.value;
116
+ // Backspace, delete, and escape get special treatment
117
+ if (k === 8 || k === 46 || (iPhone && k === 127)) {
118
+ pos = this.caret();
119
+ begin = pos?.begin;
120
+ end = pos?.end;
121
+ if (begin && end) {
122
+ if (end - begin === 0) {
123
+ begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));
124
+ end = k === 46 ? this.seekNext(end) : end;
125
+ }
126
+ this.clearBuffer(begin, end);
127
+ this.shiftL(begin, end - 1);
128
+ }
129
+ this.updateModel(e);
130
+ e.preventDefault();
131
+ }
132
+ else if (k === 13) {
133
+ // Enter
134
+ this.onInputBlur(e);
135
+ this.updateModel(e);
136
+ }
137
+ else if (k === 27) {
138
+ // Escape
139
+ if (this.input && this.focusText) {
140
+ this.input.value = this.focusText;
141
+ this.caret(0, this.checkVal());
142
+ }
143
+ this.updateModel(e);
144
+ e.preventDefault();
145
+ }
146
+ }
147
+ onKeyPress(e) {
148
+ if (this.host.readonlyInput)
149
+ return;
150
+ const k = e.which || e.keyCode;
151
+ const pos = this.caret();
152
+ let p;
153
+ let c;
154
+ let next;
155
+ if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {
156
+ // Ignore
157
+ return;
158
+ }
159
+ else if (k && k !== 13) {
160
+ if (!isNullOrUndefined(pos?.end) && !isNullOrUndefined(pos?.begin)) {
161
+ if (pos.end - pos.begin !== 0) {
162
+ this.clearBuffer(pos.begin, pos.end);
163
+ this.shiftL(pos.begin, pos.end - 1);
164
+ }
165
+ }
166
+ if (!isNullOrUndefined(pos?.begin)) {
167
+ p = this.seekNext(pos.begin - 1);
168
+ }
169
+ if (p < (this.len ?? 0)) {
170
+ c = String.fromCharCode(k);
171
+ if (this.tests?.[p].test(c)) {
172
+ this.shiftR(p);
173
+ this.buffer[p] = c;
174
+ this.writeBuffer();
175
+ next = this.seekNext(p);
176
+ if (/android/i.test(navigator.userAgent)) {
177
+ // Path for CSP Violation on FireFox OS 1.1
178
+ const proxy = () => {
179
+ this.caret(next);
180
+ };
181
+ setTimeout(proxy, 0);
182
+ }
183
+ else {
184
+ this.caret(next);
185
+ }
186
+ }
187
+ }
188
+ e.preventDefault();
189
+ }
190
+ this.updateModel(e);
191
+ this.updateFilledState();
192
+ }
193
+ createCompleteMask() {
194
+ switch (this.host.selectionMode) {
195
+ case "range":
196
+ return this.mask + ` ${this.host.rangeSeparator} ` + this.mask;
197
+ case "single":
198
+ case "multiple":
199
+ return this.mask;
200
+ default: return '';
201
+ }
202
+ }
203
+ checkVal(allow) {
204
+ // Try to place characters where they belong
205
+ const test = this.input?.value;
206
+ let lastMatch = -1;
207
+ let i;
208
+ let c;
209
+ let pos = 0;
210
+ for (i = 0; i < (this.len ?? 0); i++) {
211
+ if (this.tests?.[i]) {
212
+ this.buffer[i] = this.getPlaceholder(i);
213
+ while (pos++ < (test?.length ?? 0)) {
214
+ c = test?.charAt(pos - 1);
215
+ if (this.tests[i].test(c)) {
216
+ this.buffer[i] = c;
217
+ lastMatch = i;
218
+ break;
219
+ }
220
+ }
221
+ if (pos > (test?.length ?? 0)) {
222
+ this.clearBuffer(i + 1, this.len);
223
+ break;
224
+ }
225
+ }
226
+ else {
227
+ if (this.buffer[i] === test?.charAt(pos)) {
228
+ pos++;
229
+ }
230
+ if (i < this.partialPosition) {
231
+ lastMatch = i;
232
+ }
233
+ }
234
+ }
235
+ if (allow) {
236
+ this.writeBuffer();
237
+ }
238
+ else if (lastMatch + 1 < this.partialPosition) {
239
+ if (this.autoClear || this.buffer.join("") === this.defaultBuffer) {
240
+ // Invalid value. Remove it and replace it with the
241
+ // mask, which is the default behavior.
242
+ if (this.input?.value) {
243
+ this.input.value = "";
244
+ }
245
+ this.clearBuffer(0, this.len);
246
+ }
247
+ else {
248
+ // Invalid value, but we opt to show the value to the
249
+ // user and allow them to correct their mistake.
250
+ this.writeBuffer();
251
+ }
252
+ }
253
+ else {
254
+ this.writeBuffer();
255
+ if (!isNullOrUndefined(this.input)) {
256
+ this.input.value = this.input.value.substring(0, lastMatch + 1);
257
+ }
258
+ }
259
+ return this.partialPosition ? i : this.firstNonMaskPos;
260
+ }
261
+ onInputFocus() {
262
+ if (this.host.readonlyInput)
263
+ return;
264
+ clearTimeout(this.caretTimeoutId);
265
+ let pos;
266
+ this.focusText = this.input?.value;
267
+ pos = this.checkVal();
268
+ this.caretTimeoutId = setTimeout(() => {
269
+ if (this.input !== document.activeElement) {
270
+ return;
271
+ }
272
+ this.writeBuffer();
273
+ if (pos == this.mask.replace("?", "").length) {
274
+ this.caret(0, pos);
275
+ }
276
+ else {
277
+ this.caret(pos);
278
+ }
279
+ }, 10);
280
+ }
281
+ onInputChange(event) {
282
+ if (this.androidChrome)
283
+ this.handleAndroidInput(event);
284
+ else
285
+ this.handleInputChange(event);
286
+ }
287
+ handleInputChange(event) {
288
+ if (this.host.readonlyInput)
289
+ return;
290
+ setTimeout(() => {
291
+ const pos = this.checkVal(true);
292
+ this.caret(pos);
293
+ this.updateModel(event);
294
+ }, 0);
295
+ }
296
+ updateModel(e) {
297
+ const updatedValue = e.target.value;
298
+ if (updatedValue !== null || updatedValue !== undefined) {
299
+ this.value = updatedValue;
300
+ this.host.onUserInput(e);
301
+ }
302
+ }
303
+ updateFilledState() {
304
+ this.filled = this.input && this.input.value != "";
305
+ }
306
+ focus() {
307
+ this.input?.focus();
308
+ }
309
+ initMask() {
310
+ const completeMask = this.createCompleteMask();
311
+ this.tests = [];
312
+ this.partialPosition = completeMask.length;
313
+ this.len = completeMask.length;
314
+ this.firstNonMaskPos = null;
315
+ this.defs = {
316
+ "9": "[0-9]",
317
+ };
318
+ const maskTokens = completeMask.split("");
319
+ for (let i = 0; i < maskTokens.length; i++) {
320
+ const c = maskTokens[i];
321
+ if (c == "?") {
322
+ this.len--;
323
+ this.partialPosition = i;
324
+ }
325
+ else if (this.defs[c]) {
326
+ this.tests.push(new RegExp(this.defs[c]));
327
+ if (this.firstNonMaskPos === null) {
328
+ this.firstNonMaskPos = this.tests.length - 1;
329
+ }
330
+ if (i < this.partialPosition) {
331
+ this.lastRequiredNonMaskPos = this.tests.length - 1;
332
+ }
333
+ }
334
+ else {
335
+ this.tests.push(null);
336
+ }
337
+ }
338
+ this.buffer = [];
339
+ for (let i = 0; i < maskTokens.length; i++) {
340
+ const c = maskTokens[i];
341
+ if (c != "?") {
342
+ if (this.defs[c]) {
343
+ this.buffer.push(this.getPlaceholder(i));
344
+ }
345
+ else {
346
+ this.buffer.push(c);
347
+ }
348
+ }
349
+ }
350
+ this.defaultBuffer = this.buffer.join("");
351
+ }
352
+ caret(first, last) {
353
+ let range, begin, end;
354
+ if (!this.input?.offsetParent || this.input !== document.activeElement) {
355
+ return { begin: 0, end: 0 };
356
+ }
357
+ if (typeof first == "number") {
358
+ begin = first;
359
+ end = typeof last === "number" ? last : begin;
360
+ if (this.input.setSelectionRange) {
361
+ this.input.setSelectionRange(begin, end);
362
+ }
363
+ else if (this.input["createTextRange"]) {
364
+ range = this.input["createTextRange"]();
365
+ range.collapse(true);
366
+ range.moveEnd("character", end);
367
+ range.moveStart("character", begin);
368
+ range.select();
369
+ }
370
+ }
371
+ else {
372
+ begin = this.input.selectionStart;
373
+ end = this.input.selectionEnd;
374
+ return { begin: begin, end: end };
375
+ }
376
+ return { begin: first ?? 0, end: last ?? 0 };
377
+ }
378
+ getPlaceholder(i) {
379
+ if (i < this.slotChar.length)
380
+ return this.slotChar.charAt(i);
381
+ return this.slotChar.charAt(0);
382
+ }
383
+ seekNext(pos) {
384
+ while (++pos < (this.len ?? 0)) {
385
+ if (this.tests?.[pos])
386
+ break;
387
+ }
388
+ return pos;
389
+ }
390
+ seekPrev(pos) {
391
+ while (--pos >= 0 && !this.tests?.[pos]) {
392
+ if (this.tests?.[pos])
393
+ break;
394
+ }
395
+ return pos;
396
+ }
397
+ shiftL(begin, end) {
398
+ let i;
399
+ let j;
400
+ if (begin < 0) {
401
+ return;
402
+ }
403
+ j = this.seekNext(end);
404
+ for (i = begin; i < (this.len ?? 0); i++) {
405
+ if (this.tests?.[i]) {
406
+ if (j < (this.len ?? 0) && this.tests[i].test(this.buffer[j])) {
407
+ this.buffer[i] = this.buffer[j];
408
+ this.buffer[j] = this.getPlaceholder(j);
409
+ }
410
+ else
411
+ break;
412
+ j = this.seekNext(j);
413
+ }
414
+ }
415
+ this.writeBuffer();
416
+ if (!isNullOrUndefined(this.firstNonMaskPos)) {
417
+ this.caret(Math.max(this.firstNonMaskPos, begin));
418
+ }
419
+ }
420
+ shiftR(pos) {
421
+ let i;
422
+ let c = this.getPlaceholder(pos);
423
+ let j;
424
+ let t;
425
+ for (i = pos; i < (this.len ?? 0); i++) {
426
+ if (this.tests?.[i]) {
427
+ j = this.seekNext(i);
428
+ t = this.buffer[i];
429
+ this.buffer[i] = c;
430
+ if (j < (this.len ?? 0) && this.tests[j].test(t)) {
431
+ c = t;
432
+ }
433
+ else
434
+ break;
435
+ }
436
+ }
437
+ }
438
+ handleAndroidInput(e) {
439
+ const curVal = this.input?.value;
440
+ const pos = this.caret();
441
+ if (isNullOrUndefined(pos?.begin))
442
+ return;
443
+ if (this.oldVal && this.oldVal.length && this.oldVal.length > (curVal?.length ?? 0)) {
444
+ // A deletion or backspace happened
445
+ this.checkVal(true);
446
+ while (pos?.begin > 0 && !this.tests?.[pos.begin - 1]) {
447
+ pos.begin--;
448
+ }
449
+ if (pos.begin === 0) {
450
+ while (pos.begin < (this.firstNonMaskPos ?? 0) && !this.tests?.[pos.begin]) {
451
+ pos.begin++;
452
+ }
453
+ }
454
+ setTimeout(() => {
455
+ this.caret(pos.begin, pos.begin);
456
+ if (this.isCompleted()) {
457
+ const sentVal = curVal?.replace(this.slotChar, ""); // Limpa os caracteres placeholders extras caso ele esteja completo
458
+ sentVal && this.updateCalendarValue(sentVal);
459
+ }
460
+ }, 0);
461
+ }
462
+ else {
463
+ this.checkVal(true);
464
+ while (pos.begin < (this.len ?? 0) && !this.tests?.[pos.begin]) {
465
+ pos.begin++;
466
+ }
467
+ if (!isNullOrUndefined(pos.begin)) {
468
+ setTimeout(() => {
469
+ this.caret(pos.begin, pos.begin);
470
+ if (this.isCompleted()) {
471
+ const sentVal = curVal?.replace(this.slotChar, ""); // Limpa os caracteres placeholders extras caso ele esteja completo
472
+ sentVal && this.updateCalendarValue(sentVal);
473
+ }
474
+ }, 0);
475
+ }
476
+ }
477
+ }
478
+ updateCalendarValue(sentVal) {
479
+ // TODO verificar
480
+ const dateVal = this.host.parseValueFromString(sentVal);
481
+ if (this.host.isSelectable(dateVal.getDate(), dateVal.getMonth(), dateVal.getFullYear(), false)) {
482
+ this.host.updateModel(sentVal);
483
+ this.host.updateUI();
484
+ }
485
+ }
486
+ clearBuffer(start, end) {
487
+ let i;
488
+ for (i = start; i < end && i < (this.len ?? 0); i++) {
489
+ if (this.tests?.[i]) {
490
+ this.buffer[i] = this.getPlaceholder(i);
491
+ }
492
+ }
493
+ }
494
+ writeBuffer() {
495
+ if (!isNullOrUndefined(this.input)) {
496
+ this.input.value = this.buffer.join("");
497
+ }
498
+ }
499
+ createMaskFromDateFormat() {
500
+ const calendar = this.host;
501
+ let mask = this.autoClear ? "?" : "";
502
+ if (!calendar.timeOnly) {
503
+ let dateFormat = calendar.dateFormat;
504
+ dateFormat = dateFormat?.replace(/y/g, "yy");
505
+ mask += dateFormat?.replace(/[^/*,.\-+\[\]\\]/g, "9");
506
+ if (calendar.showTime) {
507
+ mask += " ";
508
+ }
509
+ }
510
+ if (calendar.showTime || calendar.timeOnly) {
511
+ mask += "99:99";
512
+ if (calendar.showSeconds) {
513
+ mask += ":99";
514
+ }
515
+ }
516
+ this._mask = mask;
517
+ this.initMask();
518
+ }
519
+ isCompleted() {
520
+ for (let i = (this.firstNonMaskPos ?? 0); i <= this.lastRequiredNonMaskPos; i++) {
521
+ if (this.tests?.[i] && this.buffer[i] === this.getPlaceholder(i)) {
522
+ return false;
523
+ }
524
+ }
525
+ return true;
526
+ }
527
+ ngAfterViewChecked() {
528
+ if (this.host.inputfieldViewChild && this.firstTime) {
529
+ this.firstTime = false;
530
+ this.setListeners();
531
+ if (!isNullOrUndefined(this.input)) {
532
+ this.input.type = "tel";
533
+ }
534
+ }
535
+ }
536
+ ngOnDestroy() {
537
+ if (this.focusListener)
538
+ this.focusListener();
539
+ if (this.blurListener)
540
+ this.blurListener();
541
+ if (this.keydownListener)
542
+ this.keydownListener();
543
+ if (this.keypressListener)
544
+ this.keypressListener();
545
+ if (this.inputListener)
546
+ this.inputListener();
547
+ if (this.pasteListener)
548
+ this.pasteListener();
549
+ }
550
+ onKeydownEventTest(e) {
551
+ const { key } = e;
552
+ if (key == "Tab") {
553
+ // Este código foi implementado para corrigir um problema no componente na v9
554
+ // Deve ser removido assim que atualizarmos o PrimeNG para a v10
555
+ const allFocusableElements = document.querySelectorAll(this.SELECTORS);
556
+ let nextIsFocusable = false;
557
+ let previousFocusable;
558
+ let forceCloseModal = true;
559
+ allFocusableElements.forEach((element) => {
560
+ if (!e.shiftKey) {
561
+ if (nextIsFocusable && element.id) {
562
+ this.focusableElement(element.id, forceCloseModal);
563
+ nextIsFocusable = false;
564
+ e.preventDefault();
565
+ return;
566
+ }
567
+ }
568
+ let activeTagName = window.document.activeElement?.tagName;
569
+ if (e.shiftKey && element.id && element.tagName === "INPUT" && activeTagName == "BUTTON") {
570
+ previousFocusable = element.id;
571
+ forceCloseModal = false;
572
+ }
573
+ if (element.id === this.host.inputId) {
574
+ if (previousFocusable) {
575
+ this.focusableElement(previousFocusable, forceCloseModal);
576
+ e.preventDefault();
577
+ forceCloseModal = true;
578
+ return;
579
+ }
580
+ nextIsFocusable = true;
581
+ }
582
+ else if (e.shiftKey && element.id) {
583
+ previousFocusable = element.id;
584
+ }
585
+ });
586
+ }
587
+ }
588
+ focusableElement(id, hide) {
589
+ const htmlElement = window.document.getElementById(id);
590
+ htmlElement?.focus();
591
+ if (hide) {
592
+ this.host.hideOverlay();
593
+ }
594
+ }
595
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CalendarMaskDirective, deps: [{ token: i1.Calendar }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
596
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: CalendarMaskDirective, selector: "p-calendar[sCalendarMask]", inputs: { slotChar: "slotChar", autoClear: "autoClear" }, host: { listeners: { "keydown": "onKeydownEventTest($event)" } }, ngImport: i0 });
597
+ }
598
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CalendarMaskDirective, decorators: [{
599
+ type: Directive,
600
+ args: [{
601
+ selector: 'p-calendar[sCalendarMask]',
602
+ }]
603
+ }], ctorParameters: () => [{ type: i1.Calendar }, { type: i0.Renderer2 }], propDecorators: { slotChar: [{
604
+ type: Input
605
+ }], autoClear: [{
606
+ type: Input
607
+ }], onKeydownEventTest: [{
608
+ type: HostListener,
609
+ args: ["keydown", ["$event"]]
610
+ }] } });
611
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvY2FsZW5kYXItbWFzay9zcmMvbGliL2NhbGVuZGFyLW1hc2svY2FsZW5kYXItbWFzay5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7OztBQU83RSxNQUFNLE9BQU8scUJBQXFCO0lBc0NuQjtJQUNBO0lBdENYLHdFQUF3RTtJQUN4RSw4Q0FBOEM7SUFDOUMsU0FBUyxHQUFHLDBFQUEwRSxDQUFDO0lBR2hGLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFHZixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRWxCLEtBQUssQ0FBTTtJQUNYLEtBQUssQ0FBb0I7SUFDekIsTUFBTSxDQUFXO0lBRWhCLEtBQUssQ0FBVTtJQUNmLElBQUksQ0FBTTtJQUNWLEtBQUssQ0FBUztJQUNkLGVBQWUsQ0FBTTtJQUNyQixlQUFlLENBQTRCO0lBQzNDLHNCQUFzQixDQUFNO0lBQzVCLEdBQUcsQ0FBVTtJQUNiLE1BQU0sQ0FBVTtJQUNoQixNQUFNLENBQU07SUFDWixhQUFhLENBQVU7SUFDdkIsU0FBUyxDQUFVO0lBQ25CLGNBQWMsQ0FBTTtJQUNwQixhQUFhLENBQVc7SUFDeEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVqQixhQUFhLENBQWM7SUFDM0IsWUFBWSxDQUFjO0lBQzFCLGVBQWUsQ0FBYztJQUM3QixnQkFBZ0IsQ0FBYztJQUM5QixhQUFhLENBQWM7SUFDM0IsYUFBYSxDQUFjO0lBRW5DLFlBQ1csSUFBYyxFQUNkLFFBQW1CO1FBRG5CLFNBQUksR0FBSixJQUFJLENBQVU7UUFDZCxhQUFRLEdB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LGVBQWUsR0FBRyxJQUFJLENBQUM7d0JBQ3ZCLE9BQU87b0JBQ1gsQ0FBQztvQkFDRCxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixDQUFDO3FCQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ2xDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQWE7UUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO3dHQXBwQlEscUJBQXFCOzRGQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtpQkFDeEM7cUdBT1UsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkE4bEJOLGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XG5cbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAncC1jYWxlbmRhcltzQ2FsZW5kYXJNYXNrXScsXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTWFza0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICAvLyBUT0RPOiBNdWRlaSB1bSBtb250ZSBkZSBjb2lzYSBlIHRlbSBxdWUgdGVzdGFyIHNlIGlzc28gYWluZGEgZnVuY2lvbmFcbiAgICAvLyBUT0RPOiBBaW5kYSBlc3TDoSBzZW5kbyB1c2FkYSBlc3RhIGRpcmV0aXZhP1xuICAgIFNFTEVDVE9SUyA9ICdidXR0b24sIFtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzbG90Q2hhciA9IFwiX1wiO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0NsZWFyID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgICBwdWJsaWMgaW5wdXQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuICAgIHB1YmxpYyBmaWxsZWQ/OiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfbWFzaz86IHN0cmluZztcbiAgICBwcml2YXRlIGRlZnM6IGFueTtcbiAgICBwcml2YXRlIHRlc3RzPzogYW55W107XG4gICAgcHJpdmF0ZSBwYXJ0aWFsUG9zaXRpb246IGFueTtcbiAgICBwcml2YXRlIGZpcnN0Tm9uTWFza1BvczogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGxhc3RSZXF1aXJlZE5vbk1hc2tQb3M6IGFueTtcbiAgICBwcml2YXRlIGxlbj86IG51bWJlcjtcbiAgICBwcml2YXRlIG9sZFZhbD86IHN0cmluZztcbiAgICBwcml2YXRlIGJ1ZmZlcjogYW55O1xuICAgIHByaXZhdGUgZGVmYXVsdEJ1ZmZlcj86IHN0cmluZztcbiAgICBwcml2YXRlIGZvY3VzVGV4dD86IHN0cmluZztcbiAgICBwcml2YXRlIGNhcmV0VGltZW91dElkOiBhbnk7XG4gICAgcHJpdmF0ZSBhbmRyb2lkQ2hyb21lPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIGZpcnN0VGltZSA9IHRydWU7XG5cbiAgICBwcml2YXRlIGZvY3VzTGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgYmx1ckxpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIGtleWRvd25MaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBrZXlwcmVzc0xpc3RlbmVyPzogKCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIGlucHV0TGlzdGVuZXI/OiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgcGFzdGVMaXN0ZW5lcj86ICgpID0+IHZvaWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGhvc3Q6IENhbGVuZGFyLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIHNldExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5pbnB1dCA9IHRoaXMuaG9zdC5pbnB1dGZpZWxkVmlld0NoaWxkPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbnB1dD8udmFsdWU7XG5cbiAgICAgICAgdGhpcy5mb2N1c0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5pbnB1dCwgXCJmb2N1c1wiLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uSW5wdXRGb2N1cygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJsdXJMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXQsIFwiYmx1clwiLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbklucHV0Qmx1cihldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5pbnB1dCwgXCJrZXlkb3duXCIsIChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bihldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMua2V5cHJlc3NMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXQsIFwia2V5cHJlc3NcIiwgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25LZXlQcmVzcyhldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5wdXRMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXQsIFwiaW5wdXRcIiwgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25JbnB1dENoYW5nZShldmVudCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucGFzdGVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuaW5wdXQsIFwicGFzdGVcIiwgKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICAgICAgdGhpcy5hbmRyb2lkQ2hyb21lID0gL2Nocm9tZS9pLnRlc3QodWEpICYmIC9hbmRyb2lkL2kudGVzdCh1YSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVNYXNrRnJvbURhdGVGb3JtYXQoKTtcbiAgICAgICAgdGhpcy5pbml0TWFzaygpO1xuICAgIH1cblxuICAgIGdldCBtYXNrKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXNrID8/ICcnO1xuICAgIH1cblxuICAgIHNldCBtYXNrKHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21hc2sgPSB2YWw7XG5cbiAgICAgICAgdGhpcy5pbml0TWFzaygpO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoXCJcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGVja1ZhbCgpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c1RleHQgPSB0aGlzLmlucHV0LnZhbHVlO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWxsZWRTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5wdXRCbHVyKGU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrVmFsKCk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcblxuICAgICAgICBpZiAodGhpcy52YWx1ZSAhPSB0aGlzLmZvY3VzVGV4dCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLmlucHV0Py5kaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSA9PT0gbnVsbCB8fCAodGhpcy52YWx1ZSBhcyBzdHJpbmcpLmluZGV4T2YodGhpcy5zbG90Q2hhcikgPj0gMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGUudGFyZ2V0LnZhbHVlID0gXCJcIjtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3QudXBkYXRlTW9kZWwobnVsbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiSFRNTEV2ZW50c1wiKTtcbiAgICAgICAgICAgIGV2ZW50LmluaXRFdmVudChcImNoYW5nZVwiLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0Py5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbktleURvd24oZTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmhvc3QucmVhZG9ubHlJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgayA9IGUud2hpY2ggfHwgZS5rZXlDb2RlO1xuICAgICAgICBjb25zdCBpUGhvbmUgPSAvaXBob25lL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgICAgbGV0IHBvcztcbiAgICAgICAgbGV0IGJlZ2luO1xuICAgICAgICBsZXQgZW5kO1xuICAgICAgICB0aGlzLm9sZFZhbCA9IHRoaXMuaW5wdXQ/LnZhbHVlO1xuXG4gICAgICAgIC8vIEJhY2tzcGFjZSwgZGVsZXRlLCBhbmQgZXNjYXBlIGdldCBzcGVjaWFsIHRyZWF0bWVudFxuICAgICAgICBpZiAoayA9PT0gOCB8fCBrID09PSA0NiB8fCAoaVBob25lICYmIGsgPT09IDEyNykpIHtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMuY2FyZXQoKTtcbiAgICAgICAgICAgIGJlZ2luID0gcG9zPy5iZWdpbjtcbiAgICAgICAgICAgIGVuZCA9IHBvcz8uZW5kO1xuXG4gICAgICAgICAgICBpZiAoYmVnaW4gJiYgZW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVuZCAtIGJlZ2luID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luID0gayAhPT0gNDYgPyB0aGlzLnNlZWtQcmV2KGJlZ2luKSA6IChlbmQgPSB0aGlzLnNlZWtOZXh0KGJlZ2luIC0gMSkpO1xuICAgICAgICAgICAgICAgICAgICBlbmQgPSBrID09PSA0NiA/IHRoaXMuc2Vla05leHQoZW5kKSA6IGVuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hpZnRMKGJlZ2luLCBlbmQgLSAxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51cGRhdGVNb2RlbChlKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSAxMykge1xuICAgICAgICAgICAgLy8gRW50ZXJcbiAgICAgICAgICAgIHRoaXMub25JbnB1dEJsdXIoZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGsgPT09IDI3KSB7XG4gICAgICAgICAgICAvLyBFc2NhcGVcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0ICYmIHRoaXMuZm9jdXNUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHRoaXMuZm9jdXNUZXh0O1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZXQoMCwgdGhpcy5jaGVja1ZhbCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXlQcmVzcyhlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaG9zdC5yZWFkb25seUlucHV0KSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgayA9IGUud2hpY2ggfHwgZS5rZXlDb2RlO1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLmNhcmV0KCk7XG4gICAgICAgIGxldCBwO1xuICAgICAgICBsZXQgYztcbiAgICAgICAgbGV0IG5leHQ6IGFueTtcblxuICAgICAgICBpZiAoZS5jdHJsS2V5IHx8IGUuYWx0S2V5IHx8IGUubWV0YUtleSB8fCBrIDwgMzIgfHwgKGsgPiAzNCAmJiBrIDwgNDEpKSB7XG4gICAgICAgICAgICAvLyBJZ25vcmVcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrICYmIGsgIT09IDEzKSB7XG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHBvcz8uZW5kKSAmJiAhaXNOdWxsT3JVbmRlZmluZWQocG9zPy5iZWdpbikpIHtcbiAgICAgICAgICAgICAgICBpZiAocG9zLmVuZCAtIHBvcy5iZWdpbiAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKHBvcy5iZWdpbiwgcG9zLmVuZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hpZnRMKHBvcy5iZWdpbiwgcG9zLmVuZCAtIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChwb3M/LmJlZ2luKSkge1xuICAgICAgICAgICAgICAgIHAgPSB0aGlzLnNlZWtOZXh0KHBvcy5iZWdpbiAtIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocCA8ICh0aGlzLmxlbiA/PyAwKSkge1xuICAgICAgICAgICAgICAgIGMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGspO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzPy5bcF0udGVzdChjKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNoaWZ0UihwKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltwXSA9IGM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVCdWZmZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHRoaXMuc2Vla05leHQocCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKC9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0aCBmb3IgQ1NQIFZpb2xhdGlvbiBvbiBGaXJlRm94IE9TIDEuMVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJveHkgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJldChuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocHJveHksIDApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJldChuZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwoZSk7XG4gICAgICAgIHRoaXMudXBkYXRlRmlsbGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbXBsZXRlTWFzaygpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaG9zdC5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFwicmFuZ2VcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXNrICsgYCAke3RoaXMuaG9zdC5yYW5nZVNlcGFyYXRvcn0gYCArIHRoaXMubWFzaztcbiAgICAgICAgICAgIGNhc2UgXCJzaW5nbGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJtdWx0aXBsZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1hc2s7XG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2tWYWwoYWxsb3c/OiBib29sZWFuKSB7XG4gICAgICAgIC8vIFRyeSB0byBwbGFjZSBjaGFyYWN0ZXJzIHdoZXJlIHRoZXkgYmVsb25nXG4gICAgICAgIGNvbnN0IHRlc3QgPSB0aGlzLmlucHV0Py52YWx1ZTtcbiAgICAgICAgbGV0IGxhc3RNYXRjaCA9IC0xO1xuICAgICAgICBsZXQgaTogYW55O1xuICAgICAgICBsZXQgYzogYW55O1xuICAgICAgICBsZXQgcG9zID0gMDtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKHRoaXMubGVuID8/IDApOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzPy5baV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltpXSA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoaSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBvcysrIDwgKHRlc3Q/Lmxlbmd0aCA/PyAwKSkge1xuICAgICAgICAgICAgICAgICAgICBjID0gdGVzdD8uY2hhckF0KHBvcyAtIDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXN0c1tpXS50ZXN0KGMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltpXSA9IGM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0TWF0Y2ggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBvcyA+ICh0ZXN0Py5sZW5ndGggPz8gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckJ1ZmZlcihpICsgMSwgdGhpcy5sZW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJ1ZmZlcltpXSA9PT0gdGVzdD8uY2hhckF0KHBvcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpIDwgdGhpcy5wYXJ0aWFsUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE1hdGNoID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsbG93KSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlQnVmZmVyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobGFzdE1hdGNoICsgMSA8IHRoaXMucGFydGlhbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRvQ2xlYXIgfHwgdGhpcy5idWZmZXIuam9pbihcIlwiKSA9PT0gdGhpcy5kZWZhdWx0QnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgLy8gSW52YWxpZCB2YWx1ZS4gUmVtb3ZlIGl0IGFuZCByZXBsYWNlIGl0IHdpdGggdGhlXG4gICAgICAgICAgICAgICAgLy8gbWFzaywgd2hpY2ggaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXQ/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQnVmZmVyKDAsIHRoaXMubGVuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW52YWxpZCB2YWx1ZSwgYnV0IHdlIG9wdCB0byBzaG93IHRoZSB2YWx1ZSB0byB0aGVcbiAgICAgICAgICAgICAgICAvLyB1c2VyIGFuZCBhbGxvdyB0aGVtIHRvIGNvcnJlY3QgdGhlaXIgbWlzdGFrZS5cbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlQnVmZmVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlQnVmZmVyKCk7XG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IHRoaXMuaW5wdXQudmFsdWUuc3Vic3RyaW5nKDAsIGxhc3RNYXRjaCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFydGlhbFBvc2l0aW9uID8gaSA6IHRoaXMuZmlyc3ROb25NYXNrUG9zO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoKSB7XG4gICAgICAgIGlmICh0aGlzLmhvc3QucmVhZG9ubHlJbnB1dCkgcmV0dXJuO1xuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNhcmV0VGltZW91dElkKTtcbiAgICAgICAgbGV0IHBvczogYW55O1xuXG4gICAgICAgIHRoaXMuZm9jdXNUZXh0ID0gdGhpcy5pbnB1dD8udmFsdWU7XG5cbiAgICAgICAgcG9zID0gdGhpcy5jaGVja1ZhbCgpO1xuXG4gICAgICAgIHRoaXMuY2FyZXRUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0ICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy53cml0ZUJ1ZmZlcigpO1xuICAgICAgICAgICAgaWYgKHBvcyA9PSB0aGlzLm1hc2sucmVwbGFjZShcIj9cIiwgXCJcIikubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJldCgwLCBwb3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmV0KHBvcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmFuZHJvaWRDaHJvbWUpIHRoaXMuaGFuZGxlQW5kcm9pZElucHV0KGV2ZW50KTtcbiAgICAgICAgZWxzZSB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5ob3N0LnJlYWRvbmx5SW5wdXQpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY2hlY2tWYWwodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmNhcmV0KHBvcyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKGV2ZW50KTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZU1vZGVsKGU6IGFueSkge1xuICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHVwZGF0ZWRWYWx1ZSAhPT0gbnVsbCB8fCB1cGRhdGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHVwZGF0ZWRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC5vblVzZXJJbnB1dChlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVGaWxsZWRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5maWxsZWQgPSB0aGlzLmlucHV0ICYmIHRoaXMuaW5wdXQudmFsdWUgIT0gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuaW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TWFzaygpIHtcbiAgICAgICAgY29uc3QgY29tcGxldGVNYXNrID0gdGhpcy5jcmVhdGVDb21wbGV0ZU1hc2soKTtcblxuICAgICAgICB0aGlzLnRlc3RzID0gW107XG4gICAgICAgIHRoaXMucGFydGlhbFBvc2l0aW9uID0gY29tcGxldGVNYXNrLmxlbmd0aDtcbiAgICAgICAgdGhpcy5sZW4gPSBjb21wbGV0ZU1hc2subGVuZ3RoO1xuICAgICAgICB0aGlzLmZpcnN0Tm9uTWFza1BvcyA9IG51bGw7XG4gICAgICAgIHRoaXMuZGVmcyA9IHtcbiAgICAgICAgICAgIFwiOVwiOiBcIlswLTldXCIsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbWFza1Rva2VucyA9IGNvbXBsZXRlTWFzay5zcGxpdChcIlwiKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrVG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWFza1Rva2Vuc1tpXTtcblxuICAgICAgICAgICAgaWYgKGMgPT0gXCI/XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxlbi0tO1xuICAgICAgICAgICAgICAgIHRoaXMucGFydGlhbFBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kZWZzW2NdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXN0cy5wdXNoKG5ldyBSZWdFeHAodGhpcy5kZWZzW2NdKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maXJzdE5vbk1hc2tQb3MgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdE5vbk1hc2tQb3MgPSB0aGlzLnRlc3RzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGkgPCB0aGlzLnBhcnRpYWxQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RSZXF1aXJlZE5vbk1hc2tQb3MgPSB0aGlzLnRlc3RzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlc3RzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJ1ZmZlciA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFza1Rva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYyA9IG1hc2tUb2tlbnNbaV07XG5cbiAgICAgICAgICAgIGlmIChjICE9IFwiP1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmc1tjXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlci5wdXNoKHRoaXMuZ2V0UGxhY2Vob2xkZXIoaSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyLnB1c2goYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kZWZhdWx0QnVmZmVyID0gdGhpcy5idWZmZXIuam9pbihcIlwiKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhcmV0KGZpcnN0PzogbnVtYmVyLCBsYXN0PzogbnVtYmVyKSB7XG4gICAgICAgIGxldCByYW5nZSwgYmVnaW4sIGVuZDtcblxuICAgICAgICBpZiAoIXRoaXMuaW5wdXQ/Lm9mZnNldFBhcmVudCB8fCB0aGlzLmlucHV0ICE9PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4geyBiZWdpbjogMCwgZW5kOiAwIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGZpcnN0ID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGJlZ2luID0gZmlyc3Q7XG4gICAgICAgICAgICBlbmQgPSB0eXBlb2YgbGFzdCA9PT0gXCJudW1iZXJcIiA/IGxhc3QgOiBiZWdpbjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0LnNldFNlbGVjdGlvblJhbmdlKGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5pbnB1dCBhcyBhbnkpW1wiY3JlYXRlVGV4dFJhbmdlXCJdKSB7XG4gICAgICAgICAgICAgICAgcmFuZ2UgPSAodGhpcy5pbnB1dCBhcyBhbnkpW1wiY3JlYXRlVGV4dFJhbmdlXCJdKCk7XG4gICAgICAgICAgICAgICAgcmFuZ2UuY29sbGFwc2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmFuZ2UubW92ZUVuZChcImNoYXJhY3RlclwiLCBlbmQpO1xuICAgICAgICAgICAgICAgIHJhbmdlLm1vdmVTdGFydChcImNoYXJhY3RlclwiLCBiZWdpbik7XG4gICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiZWdpbiA9IHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICBlbmQgPSB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZDtcblxuICAgICAgICAgICAgcmV0dXJuIHsgYmVnaW46IGJlZ2luLCBlbmQ6IGVuZCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgYmVnaW46IGZpcnN0ID8/IDAsIGVuZDogbGFzdCA/PyAwIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQbGFjZWhvbGRlcihpOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGkgPCB0aGlzLnNsb3RDaGFyLmxlbmd0aCkgcmV0dXJuIHRoaXMuc2xvdENoYXIuY2hhckF0KGkpO1xuICAgICAgICByZXR1cm4gdGhpcy5zbG90Q2hhci5jaGFyQXQoMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWVrTmV4dChwb3M6IGFueSkge1xuICAgICAgICB3aGlsZSAoKytwb3MgPCAodGhpcy5sZW4gPz8gMCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzPy5bcG9zXSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBvcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlZWtQcmV2KHBvczogYW55KSB7XG4gICAgICAgIHdoaWxlICgtLXBvcyA+PSAwICYmICF0aGlzLnRlc3RzPy5bcG9zXSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGVzdHM/Lltwb3NdKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRMKGJlZ2luOiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBpOiBhbnk7XG4gICAgICAgIGxldCBqOiBhbnk7XG5cbiAgICAgICAgaWYgKGJlZ2luIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaiA9IHRoaXMuc2Vla05leHQoZW5kKTtcblxuICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8ICh0aGlzLmxlbiA/PyAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXN0cz8uW2ldKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPCAodGhpcy5sZW4gPz8gMCkgJiYgdGhpcy50ZXN0c1tpXS50ZXN0KHRoaXMuYnVmZmVyW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltpXSA9IHRoaXMuYnVmZmVyW2pdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltqXSA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoaik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgaiA9IHRoaXMuc2Vla05leHQoaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53cml0ZUJ1ZmZlcigpO1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuZmlyc3ROb25NYXNrUG9zKSkge1xuICAgICAgICAgICAgdGhpcy5jYXJldChNYXRoLm1heCh0aGlzLmZpcnN0Tm9uTWFza1BvcywgYmVnaW4pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hpZnRSKHBvczogYW55KSB7XG4gICAgICAgIGxldCBpOiBhbnk7XG4gICAgICAgIGxldCBjID0gdGhpcy5nZXRQbGFjZWhvbGRlcihwb3MpO1xuICAgICAgICBsZXQgajogYW55O1xuICAgICAgICBsZXQgdDogYW55O1xuXG4gICAgICAgIGZvciAoaSA9IHBvczsgaSA8ICh0aGlzLmxlbiA/PyAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50ZXN0cz8uW2ldKSB7XG4gICAgICAgICAgICAgICAgaiA9IHRoaXMuc2Vla05leHQoaSk7XG4gICAgICAgICAgICAgICAgdCA9IHRoaXMuYnVmZmVyW2ldO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyW2ldID0gYztcblxuICAgICAgICAgICAgICAgIGlmIChqIDwgKHRoaXMubGVuID8/IDApICYmIHRoaXMudGVzdHNbal0udGVzdCh0KSkge1xuICAgICAgICAgICAgICAgICAgICBjID0gdDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUFuZHJvaWRJbnB1dChlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgY3VyVmFsID0gdGhpcy5pbnB1dD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMuY2FyZXQoKTtcblxuICAgICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQocG9zPy5iZWdpbikpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy5vbGRWYWwgJiYgdGhpcy5vbGRWYWwubGVuZ3RoICYmIHRoaXMub2xkVmFsLmxlbmd0aCA+IChjdXJWYWw/Lmxlbmd0aCA/PyAwKSkge1xuICAgICAgICAgICAgLy8gQSBkZWxldGlvbiBvciBiYWNrc3BhY2UgaGFwcGVuZWRcbiAgICAgICAgICAgIHRoaXMuY2hlY2tWYWwodHJ1ZSk7XG4gICAgICAgICAgICB3aGlsZSAocG9zPy5iZWdpbiA+IDAgJiYgIXRoaXMudGVzdHM/Lltwb3MuYmVnaW4gLSAxXSkge1xuICAgICAgICAgICAgICAgIHBvcy5iZWdpbi0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvcy5iZWdpbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChwb3MuYmVnaW4gPCAodGhpcy5maXJzdE5vbk1hc2tQb3MgPz8gMCkgJiYgIXRoaXMudGVzdHM/Lltwb3MuYmVnaW5dKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvcy5iZWdpbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJldChwb3MuYmVnaW4hLCBwb3MuYmVnaW4hKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbXBsZXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbnRWYWwgPSBjdXJWYWw/LnJlcGxhY2UodGhpcy5zbG90Q2hhciwgXCJcIik7IC8vIExpbXBhIG9zIGNhcmFjdGVyZXMgcGxhY2Vob2xkZXJzIGV4dHJhcyBjYXNvIGVsZSBlc3RlamEgY29tcGxldG9cbiAgICAgICAgICAgICAgICAgICAgc2VudFZhbCAmJiB0aGlzLnVwZGF0ZUNhbGVuZGFyVmFsdWUoc2VudFZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrVmFsKHRydWUpO1xuXG4gICAgICAgICAgICB3aGlsZSAocG9zLmJlZ2luIDwgKHRoaXMubGVuID8/IDApICYmICF0aGlzLnRlc3RzPy5bcG9zLmJlZ2luXSkge1xuICAgICAgICAgICAgICAgIHBvcy5iZWdpbisrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHBvcy5iZWdpbikpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXJldChwb3MuYmVnaW4hLCBwb3MuYmVnaW4hKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb21wbGV0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VudFZhbCA9IGN1clZhbD8ucmVwbGFjZSh0aGlzLnNsb3RDaGFyLCBcIlwiKTsgLy8gTGltcGEgb3MgY2FyYWN0ZXJlcyBwbGFjZWhvbGRlcnMgZXh0cmFzIGNhc28gZWxlIGVzdGVqYSBjb21wbGV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VudFZhbCAmJiB0aGlzLnVwZGF0ZUNhbGVuZGFyVmFsdWUoc2VudFZhbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2FsZW5kYXJWYWx1ZShzZW50VmFsOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gVE9ETyB2ZXJpZmljYXJcbiAgICAgICAgY29uc3QgZGF0ZVZhbCA9IDxEYXRlPnRoaXMuaG9zdC5wYXJzZVZhbHVlRnJvbVN0cmluZyhzZW50VmFsKTtcbiAgICAgICAgaWYgKHRoaXMuaG9zdC5pc1NlbGVjdGFibGUoZGF0ZVZhbC5nZXREYXRlKCksIGRhdGVWYWwuZ2V0TW9udGgoKSwgZGF0ZVZhbC5nZXRGdWxsWWVhcigpLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdC51cGRhdGVNb2RlbChzZW50VmFsKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdC51cGRhdGVVSSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhckJ1ZmZlcihzdGFydDogYW55LCBlbmQ6IGFueSkge1xuICAgICAgICBsZXQgaTtcblxuICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZCAmJiBpIDwgKHRoaXMubGVuID8/IDApOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzPy5baV0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlcltpXSA9IHRoaXMuZ2V0UGxhY2Vob2xkZXIoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHdyaXRlQnVmZmVyKCkge1xuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuaW5wdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0LnZhbHVlID0gdGhpcy5idWZmZXIuam9pbihcIlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTWFza0Zyb21EYXRlRm9ybWF0KCkge1xuICAgICAgICBjb25zdCBjYWxlbmRhciA9IHRoaXMuaG9zdDtcbiAgICAgICAgbGV0IG1hc2sgPSB0aGlzLmF1dG9DbGVhciA/IFwiP1wiIDogXCJcIjtcblxuICAgICAgICBpZiAoIWNhbGVuZGFyLnRpbWVPbmx5KSB7XG4gICAgICAgICAgICBsZXQgZGF0ZUZvcm1hdCA9IGNhbGVuZGFyLmRhdGVGb3JtYXQ7XG4gICAgICAgICAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdD8ucmVwbGFjZSgveS9nLCBcInl5XCIpO1xuICAgICAgICAgICAgbWFzayArPSBkYXRlRm9ybWF0Py5yZXBsYWNlKC9bXi8qLC5cXC0rXFxbXFxdXFxcXF0vZywgXCI5XCIpO1xuICAgICAgICAgICAgaWYgKGNhbGVuZGFyLnNob3dUaW1lKSB7XG4gICAgICAgICAgICAgICAgbWFzayArPSBcIiBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjYWxlbmRhci5zaG93VGltZSB8fCBjYWxlbmRhci50aW1lT25seSkge1xuICAgICAgICAgICAgbWFzayArPSBcIjk5Ojk5XCI7XG4gICAgICAgICAgICBpZiAoY2FsZW5kYXIuc2hvd1NlY29uZHMpIHtcbiAgICAgICAgICAgICAgICBtYXNrICs9IFwiOjk5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9tYXNrID0gbWFzaztcblxuICAgICAgICB0aGlzLmluaXRNYXNrKCk7XG4gICAgfVxuXG4gICAgaXNDb21wbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAodGhpcy5maXJzdE5vbk1hc2tQb3MgPz8gMCk7IGkgPD0gdGhpcy5sYXN0UmVxdWlyZWROb25NYXNrUG9zOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRlc3RzPy5baV0gJiYgdGhpcy5idWZmZXJbaV0gPT09IHRoaXMuZ2V0UGxhY2Vob2xkZXIoaSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhvc3QuaW5wdXRmaWVsZFZpZXdDaGlsZCAmJiB0aGlzLmZpcnN0VGltZSkge1xuICAgICAgICAgICAgdGhpcy5maXJzdFRpbWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2V0TGlzdGVuZXJzKCk7XG4gICAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dC50eXBlID0gXCJ0ZWxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb2N1c0xpc3RlbmVyKSB0aGlzLmZvY3VzTGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMuYmx1ckxpc3RlbmVyKSB0aGlzLmJsdXJMaXN0ZW5lcigpO1xuICAgICAgICBpZiAodGhpcy5rZXlkb3duTGlzdGVuZXIpIHRoaXMua2V5ZG93bkxpc3RlbmVyKCk7XG4gICAgICAgIGlmICh0aGlzLmtleXByZXNzTGlzdGVuZXIpIHRoaXMua2V5cHJlc3NMaXN0ZW5lcigpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dExpc3RlbmVyKSB0aGlzLmlucHV0TGlzdGVuZXIoKTtcbiAgICAgICAgaWYgKHRoaXMucGFzdGVMaXN0ZW5lcikgdGhpcy5wYXN0ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKVxuICAgIG9uS2V5ZG93bkV2ZW50VGVzdChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBlO1xuICAgICAgICBpZiAoa2V5ID09IFwiVGFiXCIpIHtcbiAgICAgICAgICAgIC8vIEVzdGUgY8OzZGlnbyBmb2kgaW1wbGVtZW50YWRvIHBhcmEgY29ycmlnaXIgdW0gcHJvYmxlbWEgbm8gY29tcG9uZW50ZSBuYSB2OVxuICAgICAgICAgICAgLy8gRGV2ZSBzZXIgcmVtb3ZpZG8gYXNzaW0gcXVlIGF0dWFsaXphcm1vcyBvIFByaW1lTkcgcGFyYSBhIHYxMFxuICAgICAgICAgICAgY29uc3QgYWxsRm9jdXNhYmxlRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuU0VMRUNUT1JTKTtcbiAgICAgICAgICAgIGxldCBuZXh0SXNGb2N1c2FibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ZvY3VzYWJsZTogc3RyaW5nO1xuICAgICAgICAgICAgbGV0IGZvcmNlQ2xvc2VNb2RhbCA9IHRydWU7XG4gICAgICAgICAgICBhbGxGb2N1c2FibGVFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0SXNGb2N1c2FibGUgJiYgZWxlbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2FibGVFbGVtZW50KGVsZW1lbnQuaWQsIGZvcmNlQ2xvc2VNb2RhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0SXNGb2N1c2FibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhY3RpdmVUYWdOYW1lID0gd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgZWxlbWVudC5pZCAmJiBlbGVtZW50LnRhZ05hbWUgPT09IFwiSU5QVVRcIiAmJiBhY3RpdmVUYWdOYW1lID09IFwiQlVUVE9OXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGb2N1c2FibGUgPSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgICAgICBmb3JjZUNsb3NlTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pZCA9PT0gdGhpcy5ob3N0LmlucHV0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzRm9jdXNhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzYWJsZUVsZW1lbnQocHJldmlvdXNGb2N1c2FibGUsIGZvcmNlQ2xvc2VNb2RhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JjZUNsb3NlTW9kYWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5leHRJc0ZvY3VzYWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLnNoaWZ0S2V5ICYmIGVsZW1lbnQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGb2N1c2FibGUgPSBlbGVtZW50LmlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzYWJsZUVsZW1lbnQoaWQ6IHN0cmluZywgaGlkZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBodG1sRWxlbWVudCA9IHdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgIGh0bWxFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICBpZiAoaGlkZSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0LmhpZGVPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=