@ptsecurity/mosaic 12.2.1 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (913) hide show
  1. package/_theming.scss +1000 -934
  2. package/_visual.scss +849 -694
  3. package/autocomplete/README.md +0 -0
  4. package/autocomplete/package.json +5 -5
  5. package/button/README.md +0 -0
  6. package/button/button.component.d.ts +17 -14
  7. package/button/button.module.d.ts +1 -1
  8. package/button/package.json +5 -5
  9. package/button-toggle/README.md +0 -0
  10. package/button-toggle/package.json +5 -5
  11. package/card/README.md +0 -0
  12. package/card/package.json +5 -5
  13. package/checkbox/README.md +1 -0
  14. package/checkbox/package.json +5 -5
  15. package/core/formatters/date/formatter.d.ts +41 -17
  16. package/core/formatters/date/templates/en-US.d.ts +8 -8
  17. package/core/formatters/date/templates/ru-RU.d.ts +8 -8
  18. package/core/package.json +5 -5
  19. package/core/public-api.d.ts +1 -0
  20. package/core/version.d.ts +2 -0
  21. package/datepicker/README.md +0 -0
  22. package/datepicker/package.json +5 -5
  23. package/design-tokens/{tokens → legacy-2017/tokens}/components/alert.json5 +0 -0
  24. package/design-tokens/{tokens → legacy-2017/tokens}/components/autocomplete.json5 +0 -0
  25. package/design-tokens/{tokens → legacy-2017/tokens}/components/badge.json5 +0 -0
  26. package/design-tokens/{tokens → legacy-2017/tokens}/components/button-toggle.json5 +0 -0
  27. package/design-tokens/{tokens → legacy-2017/tokens}/components/button.json5 +0 -0
  28. package/design-tokens/{tokens → legacy-2017/tokens}/components/card.json5 +0 -0
  29. package/design-tokens/legacy-2017/tokens/components/checkbox.json5 +39 -0
  30. package/design-tokens/{tokens → legacy-2017/tokens}/components/datepicker.json5 +0 -0
  31. package/design-tokens/{tokens → legacy-2017/tokens}/components/divider.json5 +0 -0
  32. package/design-tokens/{tokens → legacy-2017/tokens}/components/dropdown.json5 +0 -0
  33. package/design-tokens/{tokens → legacy-2017/tokens}/components/form-field.json5 +0 -0
  34. package/design-tokens/{tokens → legacy-2017/tokens}/components/forms.json5 +0 -0
  35. package/design-tokens/{tokens → legacy-2017/tokens}/components/input.json5 +0 -0
  36. package/design-tokens/{tokens → legacy-2017/tokens}/components/link.json5 +0 -0
  37. package/design-tokens/{tokens → legacy-2017/tokens}/components/list.json5 +0 -0
  38. package/design-tokens/legacy-2017/tokens/components/modal.json5 +79 -0
  39. package/design-tokens/legacy-2017/tokens/components/navbar.json5 +69 -0
  40. package/design-tokens/{tokens → legacy-2017/tokens}/components/optgroup.json5 +0 -0
  41. package/design-tokens/{tokens → legacy-2017/tokens}/components/option.json5 +0 -0
  42. package/design-tokens/{tokens → legacy-2017/tokens}/components/popover.json5 +0 -0
  43. package/design-tokens/{tokens → legacy-2017/tokens}/components/popup.json5 +0 -0
  44. package/design-tokens/{tokens → legacy-2017/tokens}/components/progress-bar.json5 +0 -0
  45. package/design-tokens/{tokens → legacy-2017/tokens}/components/progress-spinner.json5 +0 -0
  46. package/design-tokens/legacy-2017/tokens/components/radio.json5 +44 -0
  47. package/design-tokens/{tokens → legacy-2017/tokens}/components/select.json5 +0 -0
  48. package/design-tokens/{tokens → legacy-2017/tokens}/components/sidepanel.json5 +0 -0
  49. package/design-tokens/{tokens → legacy-2017/tokens}/components/table.json5 +0 -0
  50. package/design-tokens/{tokens → legacy-2017/tokens}/components/tabs.json5 +0 -0
  51. package/design-tokens/legacy-2017/tokens/components/tags.json5 +132 -0
  52. package/design-tokens/{tokens → legacy-2017/tokens}/components/textarea.json5 +0 -0
  53. package/design-tokens/{tokens → legacy-2017/tokens}/components/timepicker.json5 +0 -0
  54. package/design-tokens/legacy-2017/tokens/components/toggle.json5 +79 -0
  55. package/design-tokens/{tokens → legacy-2017/tokens}/components/tooltip.json5 +0 -0
  56. package/design-tokens/{tokens → legacy-2017/tokens}/components/tree.json5 +0 -0
  57. package/design-tokens/{tokens → legacy-2017/tokens}/properties/aliases.json5 +0 -0
  58. package/design-tokens/{tokens → legacy-2017/tokens}/properties/colors.json5 +0 -0
  59. package/design-tokens/{tokens → legacy-2017/tokens}/properties/font.json5 +0 -0
  60. package/design-tokens/{tokens → legacy-2017/tokens}/properties/globals.json5 +0 -0
  61. package/design-tokens/{tokens → legacy-2017/tokens}/properties/padding.json5 +0 -0
  62. package/design-tokens/{tokens → legacy-2017/tokens}/properties/palette.json5 +0 -0
  63. package/design-tokens/{tokens → legacy-2017/tokens}/properties/typography.json5 +0 -0
  64. package/design-tokens/legacy-2017/tokens.d.ts +7659 -0
  65. package/design-tokens/package.json +5 -5
  66. package/design-tokens/pt-2022/tokens/components/alert.json5 +83 -0
  67. package/design-tokens/pt-2022/tokens/components/autocomplete.json5 +11 -0
  68. package/design-tokens/pt-2022/tokens/components/badge.json5 +184 -0
  69. package/design-tokens/pt-2022/tokens/components/button-toggle.json5 +10 -0
  70. package/design-tokens/pt-2022/tokens/components/button.json5 +143 -0
  71. package/design-tokens/pt-2022/tokens/components/card.json5 +51 -0
  72. package/design-tokens/pt-2022/tokens/components/checkbox.json5 +39 -0
  73. package/design-tokens/pt-2022/tokens/components/datepicker.json5 +64 -0
  74. package/design-tokens/pt-2022/tokens/components/divider.json5 +8 -0
  75. package/design-tokens/pt-2022/tokens/components/dropdown.json5 +47 -0
  76. package/design-tokens/pt-2022/tokens/components/form-field.json5 +52 -0
  77. package/design-tokens/pt-2022/tokens/components/forms.json5 +52 -0
  78. package/design-tokens/pt-2022/tokens/components/input.json5 +13 -0
  79. package/design-tokens/pt-2022/tokens/components/link.json5 +56 -0
  80. package/design-tokens/pt-2022/tokens/components/list.json5 +15 -0
  81. package/design-tokens/pt-2022/tokens/components/modal.json5 +79 -0
  82. package/design-tokens/pt-2022/tokens/components/navbar.json5 +69 -0
  83. package/design-tokens/pt-2022/tokens/components/optgroup.json5 +10 -0
  84. package/design-tokens/pt-2022/tokens/components/option.json5 +12 -0
  85. package/design-tokens/pt-2022/tokens/components/popover.json5 +68 -0
  86. package/design-tokens/pt-2022/tokens/components/popup.json5 +18 -0
  87. package/design-tokens/pt-2022/tokens/components/progress-bar.json5 +13 -0
  88. package/design-tokens/pt-2022/tokens/components/progress-spinner.json5 +7 -0
  89. package/design-tokens/pt-2022/tokens/components/radio.json5 +44 -0
  90. package/design-tokens/pt-2022/tokens/components/select.json5 +25 -0
  91. package/design-tokens/pt-2022/tokens/components/sidepanel.json5 +30 -0
  92. package/design-tokens/pt-2022/tokens/components/table.json5 +15 -0
  93. package/design-tokens/pt-2022/tokens/components/tabs.json5 +25 -0
  94. package/design-tokens/pt-2022/tokens/components/tags.json5 +132 -0
  95. package/design-tokens/pt-2022/tokens/components/textarea.json5 +12 -0
  96. package/design-tokens/pt-2022/tokens/components/timepicker.json5 +7 -0
  97. package/design-tokens/pt-2022/tokens/components/toggle.json5 +79 -0
  98. package/design-tokens/pt-2022/tokens/components/tooltip.json5 +83 -0
  99. package/design-tokens/pt-2022/tokens/components/tree.json5 +12 -0
  100. package/design-tokens/pt-2022/tokens/properties/aliases.json5 +3 -0
  101. package/design-tokens/pt-2022/tokens/properties/colors.json5 +112 -0
  102. package/design-tokens/pt-2022/tokens/properties/font.json5 +15 -0
  103. package/design-tokens/pt-2022/tokens/properties/globals.json5 +30 -0
  104. package/design-tokens/pt-2022/tokens/properties/padding.json5 +3 -0
  105. package/design-tokens/pt-2022/tokens/properties/palette.json5 +226 -0
  106. package/design-tokens/pt-2022/tokens/properties/typography.json5 +140 -0
  107. package/design-tokens/pt-2022/tokens.d.ts +8696 -0
  108. package/design-tokens/public-api.d.ts +3 -1
  109. package/design-tokens/style-dictionary/build.js +6 -0
  110. package/design-tokens/style-dictionary/configs/index.js +2 -1
  111. package/divider/README.md +0 -0
  112. package/divider/package.json +5 -5
  113. package/dropdown/dropdown-item.component.d.ts +1 -0
  114. package/dropdown/package.json +5 -5
  115. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +21 -0
  116. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +555 -0
  117. package/esm2020/autocomplete/autocomplete.component.mjs +154 -0
  118. package/esm2020/autocomplete/autocomplete.module.mjs +34 -0
  119. package/{esm2015/autocomplete/index.js → esm2020/autocomplete/index.mjs} +0 -0
  120. package/{esm2015/autocomplete/ptsecurity-mosaic-autocomplete.js → esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs} +0 -0
  121. package/{esm2015/autocomplete/public-api.js → esm2020/autocomplete/public-api.mjs} +0 -0
  122. package/esm2020/button/button.component.mjs +129 -0
  123. package/esm2020/button/button.module.mjs +38 -0
  124. package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  125. package/{esm2015/button/ptsecurity-mosaic-button.js → esm2020/button/ptsecurity-mosaic-button.mjs} +0 -0
  126. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  127. package/esm2020/button-toggle/button-toggle.component.mjs +362 -0
  128. package/esm2020/button-toggle/button-toggle.module.mjs +19 -0
  129. package/{esm2015/button-toggle/index.js → esm2020/button-toggle/index.mjs} +0 -0
  130. package/{esm2015/button-toggle/ptsecurity-mosaic-button-toggle.js → esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs} +0 -0
  131. package/{esm2015/button-toggle/public-api.js → esm2020/button-toggle/public-api.mjs} +0 -0
  132. package/esm2020/card/card.component.mjs +80 -0
  133. package/esm2020/card/card.module.mjs +30 -0
  134. package/{esm2015/card/index.js → esm2020/card/index.mjs} +0 -0
  135. package/{esm2015/card/ptsecurity-mosaic-card.js → esm2020/card/ptsecurity-mosaic-card.mjs} +0 -0
  136. package/{esm2015/card/public-api.js → esm2020/card/public-api.mjs} +0 -0
  137. package/{esm2015/checkbox/checkbox-config.js → esm2020/checkbox/checkbox-config.mjs} +0 -0
  138. package/esm2020/checkbox/checkbox-module.mjs +19 -0
  139. package/esm2020/checkbox/checkbox-required-validator.mjs +27 -0
  140. package/esm2020/checkbox/checkbox.mjs +315 -0
  141. package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
  142. package/{esm2015/checkbox/ptsecurity-mosaic-checkbox.js → esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs} +0 -0
  143. package/{esm2015/checkbox/public-api.js → esm2020/checkbox/public-api.mjs} +0 -0
  144. package/{esm2015/core/animation/animation.js → esm2020/core/animation/animation.mjs} +0 -0
  145. package/{esm2015/core/animation/fade-animations.js → esm2020/core/animation/fade-animations.mjs} +0 -0
  146. package/{esm2015/core/animation/index.js → esm2020/core/animation/index.mjs} +0 -0
  147. package/{esm2015/core/animation/select-animations.js → esm2020/core/animation/select-animations.mjs} +0 -0
  148. package/{esm2015/core/common-behaviors/color.js → esm2020/core/common-behaviors/color.mjs} +0 -0
  149. package/esm2020/core/common-behaviors/common-module.mjs +83 -0
  150. package/{esm2015/core/common-behaviors/constructor.js → esm2020/core/common-behaviors/constructor.mjs} +0 -0
  151. package/{esm2015/core/common-behaviors/disabled.js → esm2020/core/common-behaviors/disabled.mjs} +0 -0
  152. package/{esm2015/core/common-behaviors/error-state.js → esm2020/core/common-behaviors/error-state.mjs} +0 -0
  153. package/{esm2015/core/common-behaviors/index.js → esm2020/core/common-behaviors/index.mjs} +0 -0
  154. package/{esm2015/core/common-behaviors/tabindex.js → esm2020/core/common-behaviors/tabindex.mjs} +0 -0
  155. package/esm2020/core/error/error-options.mjs +26 -0
  156. package/esm2020/core/formatters/date/formatter.mjs +359 -0
  157. package/esm2020/core/formatters/date/templates/en-US.mjs +281 -0
  158. package/esm2020/core/formatters/date/templates/ru-RU.mjs +281 -0
  159. package/esm2020/core/formatters/index.mjs +20 -0
  160. package/esm2020/core/formatters/number/formatter.mjs +105 -0
  161. package/esm2020/core/forms/forms-module.mjs +24 -0
  162. package/esm2020/core/forms/forms.directive.mjs +66 -0
  163. package/{esm2015/core/forms/index.js → esm2020/core/forms/index.mjs} +0 -0
  164. package/esm2020/core/highlight/highlight.pipe.mjs +17 -0
  165. package/esm2020/core/highlight/index.mjs +19 -0
  166. package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  167. package/{esm2015/core/label/label-options.js → esm2020/core/label/label-options.mjs} +0 -0
  168. package/esm2020/core/line/line.mjs +70 -0
  169. package/esm2020/core/option/action.mjs +121 -0
  170. package/{esm2015/core/option/index.js → esm2020/core/option/index.mjs} +0 -0
  171. package/esm2020/core/option/optgroup.mjs +31 -0
  172. package/esm2020/core/option/option-module.mjs +21 -0
  173. package/esm2020/core/option/option.mjs +254 -0
  174. package/{esm2015/core/overlay/overlay-position-map.js → esm2020/core/overlay/overlay-position-map.mjs} +0 -0
  175. package/{esm2015/core/pop-up/constants.js → esm2020/core/pop-up/constants.mjs} +0 -0
  176. package/{esm2015/core/pop-up/index.js → esm2020/core/pop-up/index.mjs} +0 -0
  177. package/esm2020/core/pop-up/pop-up-trigger.mjs +244 -0
  178. package/esm2020/core/pop-up/pop-up.mjs +91 -0
  179. package/{esm2015/core/ptsecurity-mosaic-core.js → esm2020/core/ptsecurity-mosaic-core.mjs} +0 -0
  180. package/esm2020/core/public-api.mjs +18 -0
  181. package/{esm2015/core/select/constants.js → esm2020/core/select/constants.mjs} +0 -0
  182. package/{esm2015/core/select/errors.js → esm2020/core/select/errors.mjs} +0 -0
  183. package/{esm2015/core/select/events.js → esm2020/core/select/events.mjs} +0 -0
  184. package/{esm2015/core/select/index.js → esm2020/core/select/index.mjs} +0 -0
  185. package/{esm2015/core/selection/constants.js → esm2020/core/selection/constants.mjs} +0 -0
  186. package/{esm2015/core/selection/index.js → esm2020/core/selection/index.mjs} +0 -0
  187. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +37 -0
  188. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +18 -0
  189. package/esm2020/core/services/measure-scrollbar.service.mjs +48 -0
  190. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +0 -0
  191. package/{esm2015/core/utils/public-api.js → esm2020/core/utils/public-api.mjs} +0 -0
  192. package/{esm2015/core/utils/utils.js → esm2020/core/utils/utils.mjs} +0 -0
  193. package/{esm2015/core/validation/index.js → esm2020/core/validation/index.mjs} +0 -0
  194. package/{esm2015/core/validation/validation.js → esm2020/core/validation/validation.mjs} +0 -0
  195. package/esm2020/core/version.mjs +3 -0
  196. package/esm2020/datepicker/calendar-body.component.mjs +106 -0
  197. package/esm2020/datepicker/calendar.component.mjs +362 -0
  198. package/{esm2015/datepicker/datepicker-animations.js → esm2020/datepicker/datepicker-animations.mjs} +0 -0
  199. package/{esm2015/datepicker/datepicker-errors.js → esm2020/datepicker/datepicker-errors.mjs} +0 -0
  200. package/esm2020/datepicker/datepicker-input.directive.mjs +900 -0
  201. package/esm2020/datepicker/datepicker-intl.mjs +40 -0
  202. package/esm2020/datepicker/datepicker-module.mjs +107 -0
  203. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -0
  204. package/esm2020/datepicker/datepicker.component.mjs +408 -0
  205. package/{esm2015/datepicker/index.js → esm2020/datepicker/index.mjs} +0 -0
  206. package/esm2020/datepicker/month-view.component.mjs +257 -0
  207. package/esm2020/datepicker/multi-year-view.component.mjs +218 -0
  208. package/{esm2015/datepicker/ptsecurity-mosaic-datepicker.js → esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs} +0 -0
  209. package/{esm2015/datepicker/public-api.js → esm2020/datepicker/public-api.mjs} +0 -0
  210. package/esm2020/datepicker/year-view.component.mjs +253 -0
  211. package/{esm2015/design-tokens/index.js → esm2020/design-tokens/index.mjs} +0 -0
  212. package/esm2020/design-tokens/legacy-2017/tokens.mjs +953 -0
  213. package/esm2020/design-tokens/pt-2022/tokens.mjs +1013 -0
  214. package/{esm2015/design-tokens/ptsecurity-mosaic-design-tokens.js → esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs} +0 -0
  215. package/esm2020/design-tokens/public-api.mjs +4 -0
  216. package/esm2020/divider/divider.component.mjs +39 -0
  217. package/esm2020/divider/divider.module.mjs +18 -0
  218. package/{esm2015/divider/index.js → esm2020/divider/index.mjs} +0 -0
  219. package/{esm2015/divider/ptsecurity-mosaic-divider.js → esm2020/divider/ptsecurity-mosaic-divider.mjs} +0 -0
  220. package/{esm2015/divider/public-api.js → esm2020/divider/public-api.mjs} +0 -0
  221. package/{esm2015/dropdown/dropdown-animations.js → esm2020/dropdown/dropdown-animations.mjs} +0 -0
  222. package/esm2020/dropdown/dropdown-content.directive.mjs +64 -0
  223. package/{esm2015/dropdown/dropdown-errors.js → esm2020/dropdown/dropdown-errors.mjs} +0 -0
  224. package/esm2020/dropdown/dropdown-item.component.mjs +139 -0
  225. package/esm2020/dropdown/dropdown-trigger.directive.mjs +485 -0
  226. package/esm2020/dropdown/dropdown.component.mjs +292 -0
  227. package/esm2020/dropdown/dropdown.module.mjs +50 -0
  228. package/{esm2015/dropdown/dropdown.types.js → esm2020/dropdown/dropdown.types.mjs} +0 -0
  229. package/{esm2015/dropdown/index.js → esm2020/dropdown/index.mjs} +0 -0
  230. package/{esm2015/dropdown/ptsecurity-mosaic-dropdown.js → esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs} +0 -0
  231. package/{esm2015/dropdown/public-api.js → esm2020/dropdown/public-api.mjs} +0 -0
  232. package/esm2020/form-field/cleaner.mjs +23 -0
  233. package/{esm2015/form-field/form-field-control.js → esm2020/form-field/form-field-control.mjs} +0 -0
  234. package/{esm2015/form-field/form-field-errors.js → esm2020/form-field/form-field-errors.mjs} +0 -0
  235. package/esm2020/form-field/form-field.mjs +205 -0
  236. package/esm2020/form-field/form-field.module.mjs +52 -0
  237. package/esm2020/form-field/hint.mjs +23 -0
  238. package/{esm2015/form-field/index.js → esm2020/form-field/index.mjs} +0 -0
  239. package/esm2020/form-field/prefix.mjs +13 -0
  240. package/{esm2015/form-field/ptsecurity-mosaic-form-field.js → esm2020/form-field/ptsecurity-mosaic-form-field.mjs} +0 -0
  241. package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
  242. package/esm2020/form-field/stepper.mjs +55 -0
  243. package/esm2020/form-field/suffix.mjs +13 -0
  244. package/esm2020/icon/icon.component.mjs +44 -0
  245. package/esm2020/icon/icon.module.mjs +38 -0
  246. package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
  247. package/{esm2015/icon/ptsecurity-mosaic-icon.js → esm2020/icon/ptsecurity-mosaic-icon.mjs} +0 -0
  248. package/{esm2015/icon/public-api.js → esm2020/icon/public-api.mjs} +0 -0
  249. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  250. package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
  251. package/{esm2015/input/input-errors.js → esm2020/input/input-errors.mjs} +0 -0
  252. package/esm2020/input/input-number-validators.mjs +92 -0
  253. package/esm2020/input/input-number.mjs +163 -0
  254. package/{esm2015/input/input-value-accessor.js → esm2020/input/input-value-accessor.mjs} +0 -0
  255. package/esm2020/input/input.mjs +333 -0
  256. package/esm2020/input/input.module.mjs +23 -0
  257. package/{esm2015/input/ptsecurity-mosaic-input.js → esm2020/input/ptsecurity-mosaic-input.mjs} +0 -0
  258. package/{esm2015/input/public-api.js → esm2020/input/public-api.mjs} +0 -0
  259. package/{esm2015/link/index.js → esm2020/link/index.mjs} +0 -0
  260. package/esm2020/link/link.component.mjs +107 -0
  261. package/esm2020/link/link.module.mjs +26 -0
  262. package/{esm2015/link/ptsecurity-mosaic-link.js → esm2020/link/ptsecurity-mosaic-link.mjs} +0 -0
  263. package/{esm2015/link/public-api.js → esm2020/link/public-api.mjs} +0 -0
  264. package/{esm2015/list/index.js → esm2020/list/index.mjs} +0 -0
  265. package/esm2020/list/list-selection.component.mjs +687 -0
  266. package/esm2020/list/list.component.mjs +44 -0
  267. package/esm2020/list/list.module.mjs +55 -0
  268. package/{esm2015/list/ptsecurity-mosaic-list.js → esm2020/list/ptsecurity-mosaic-list.mjs} +0 -0
  269. package/{esm2015/list/public-api.js → esm2020/list/public-api.mjs} +0 -0
  270. package/esm2020/modal/css-unit.pipe.mjs +17 -0
  271. package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
  272. package/esm2020/modal/modal-control.service.mjs +85 -0
  273. package/{esm2015/modal/modal-ref.class.js → esm2020/modal/modal-ref.class.mjs} +0 -0
  274. package/{esm2015/modal/modal-util.js → esm2020/modal/modal-util.mjs} +0 -0
  275. package/esm2020/modal/modal.component.mjs +501 -0
  276. package/esm2020/modal/modal.directive.mjs +52 -0
  277. package/esm2020/modal/modal.module.mjs +72 -0
  278. package/esm2020/modal/modal.service.mjs +124 -0
  279. package/{esm2015/modal/modal.type.js → esm2020/modal/modal.type.mjs} +0 -0
  280. package/{esm2015/modal/ptsecurity-mosaic-modal.js → esm2020/modal/ptsecurity-mosaic-modal.mjs} +0 -0
  281. package/{esm2015/modal/public-api.js → esm2020/modal/public-api.mjs} +0 -0
  282. package/{esm2015/navbar/index.js → esm2020/navbar/index.mjs} +0 -0
  283. package/esm2020/navbar/navbar-item.component.mjs +577 -0
  284. package/esm2020/navbar/navbar.component.mjs +237 -0
  285. package/esm2020/navbar/navbar.module.mjs +92 -0
  286. package/{esm2015/navbar/ptsecurity-mosaic-navbar.js → esm2020/navbar/ptsecurity-mosaic-navbar.mjs} +0 -0
  287. package/{esm2015/navbar/public-api.js → esm2020/navbar/public-api.mjs} +0 -0
  288. package/esm2020/navbar/vertical-navbar.animation.mjs +10 -0
  289. package/esm2020/navbar/vertical-navbar.component.mjs +114 -0
  290. package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
  291. package/{esm2015/popover/popover-animations.js → esm2020/popover/popover-animations.mjs} +0 -0
  292. package/esm2020/popover/popover-confirm.component.mjs +108 -0
  293. package/esm2020/popover/popover.component.mjs +253 -0
  294. package/esm2020/popover/popover.module.mjs +24 -0
  295. package/{esm2015/popover/ptsecurity-mosaic-popover.js → esm2020/popover/ptsecurity-mosaic-popover.mjs} +0 -0
  296. package/{esm2015/popover/public-api.js → esm2020/popover/public-api.mjs} +0 -0
  297. package/{esm2015/progress-bar/index.js → esm2020/progress-bar/index.mjs} +0 -0
  298. package/esm2020/progress-bar/progress-bar.component.mjs +42 -0
  299. package/esm2020/progress-bar/progress-bar.module.mjs +30 -0
  300. package/{esm2015/progress-bar/ptsecurity-mosaic-progress-bar.js → esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs} +0 -0
  301. package/{esm2015/progress-bar/public-api.js → esm2020/progress-bar/public-api.mjs} +0 -0
  302. package/{esm2015/progress-spinner/index.js → esm2020/progress-spinner/index.mjs} +0 -0
  303. package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -0
  304. package/esm2020/progress-spinner/progress-spinner.module.mjs +30 -0
  305. package/{esm2015/progress-spinner/ptsecurity-mosaic-progress-spinner.js → esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs} +0 -0
  306. package/{esm2015/progress-spinner/public-api.js → esm2020/progress-spinner/public-api.mjs} +0 -0
  307. package/{esm2015/ptsecurity-mosaic.js → esm2020/ptsecurity-mosaic.mjs} +0 -0
  308. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  309. package/{esm2015/radio/index.js → esm2020/radio/index.mjs} +0 -0
  310. package/{esm2015/radio/ptsecurity-mosaic-radio.js → esm2020/radio/ptsecurity-mosaic-radio.mjs} +0 -0
  311. package/{esm2015/radio/public-api.js → esm2020/radio/public-api.mjs} +0 -0
  312. package/esm2020/radio/radio.component.mjs +458 -0
  313. package/esm2020/radio/radio.module.mjs +20 -0
  314. package/{esm2015/select/index.js → esm2020/select/index.mjs} +0 -0
  315. package/{esm2015/select/ptsecurity-mosaic-select.js → esm2020/select/ptsecurity-mosaic-select.mjs} +0 -0
  316. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  317. package/esm2020/select/select.component.mjs +1110 -0
  318. package/esm2020/select/select.module.mjs +64 -0
  319. package/{esm2015/sidebar/index.js → esm2020/sidebar/index.mjs} +0 -0
  320. package/{esm2015/sidebar/ptsecurity-mosaic-sidebar.js → esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs} +0 -0
  321. package/{esm2015/sidebar/public-api.js → esm2020/sidebar/public-api.mjs} +0 -0
  322. package/{esm2015/sidebar/sidebar-animations.js → esm2020/sidebar/sidebar-animations.mjs} +0 -0
  323. package/esm2020/sidebar/sidebar.component.mjs +146 -0
  324. package/esm2020/sidebar/sidebar.module.mjs +30 -0
  325. package/{esm2015/sidepanel/index.js → esm2020/sidepanel/index.mjs} +0 -0
  326. package/{esm2015/sidepanel/ptsecurity-mosaic-sidepanel.js → esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs} +0 -0
  327. package/{esm2015/sidepanel/public-api.js → esm2020/sidepanel/public-api.mjs} +0 -0
  328. package/{esm2015/sidepanel/sidepanel-animations.js → esm2020/sidepanel/sidepanel-animations.mjs} +0 -0
  329. package/{esm2015/sidepanel/sidepanel-config.js → esm2020/sidepanel/sidepanel-config.mjs} +0 -0
  330. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -0
  331. package/esm2020/sidepanel/sidepanel-directives.mjs +159 -0
  332. package/{esm2015/sidepanel/sidepanel-ref.js → esm2020/sidepanel/sidepanel-ref.mjs} +0 -0
  333. package/esm2020/sidepanel/sidepanel.module.mjs +74 -0
  334. package/esm2020/sidepanel/sidepanel.service.mjs +167 -0
  335. package/{esm2015/splitter/index.js → esm2020/splitter/index.mjs} +0 -0
  336. package/{esm2015/splitter/ptsecurity-mosaic-splitter.js → esm2020/splitter/ptsecurity-mosaic-splitter.mjs} +0 -0
  337. package/{esm2015/splitter/public-api.js → esm2020/splitter/public-api.mjs} +0 -0
  338. package/esm2020/splitter/splitter.component.mjs +480 -0
  339. package/esm2020/splitter/splitter.module.mjs +40 -0
  340. package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
  341. package/{esm2015/table/ptsecurity-mosaic-table.js → esm2020/table/ptsecurity-mosaic-table.mjs} +0 -0
  342. package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
  343. package/esm2020/table/table.component.mjs +16 -0
  344. package/esm2020/table/table.module.mjs +30 -0
  345. package/{esm2015/tabs/index.js → esm2020/tabs/index.mjs} +0 -0
  346. package/esm2020/tabs/paginated-tab-header.mjs +479 -0
  347. package/{esm2015/tabs/ptsecurity-mosaic-tabs.js → esm2020/tabs/ptsecurity-mosaic-tabs.mjs} +0 -0
  348. package/{esm2015/tabs/public-api.js → esm2020/tabs/public-api.mjs} +0 -0
  349. package/esm2020/tabs/tab-body.component.mjs +178 -0
  350. package/esm2020/tabs/tab-content.directive.mjs +15 -0
  351. package/esm2020/tabs/tab-group.component.mjs +350 -0
  352. package/esm2020/tabs/tab-header.component.mjs +67 -0
  353. package/esm2020/tabs/tab-label-wrapper.directive.mjs +78 -0
  354. package/esm2020/tabs/tab-label.directive.mjs +17 -0
  355. package/{esm2015/tabs/tab-nav-bar/index.js → esm2020/tabs/tab-nav-bar/index.mjs} +0 -0
  356. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -0
  357. package/esm2020/tabs/tab.component.mjs +133 -0
  358. package/{esm2015/tabs/tabs-animations.js → esm2020/tabs/tabs-animations.mjs} +0 -0
  359. package/esm2020/tabs/tabs.module.mjs +104 -0
  360. package/{esm2015/tags/index.js → esm2020/tags/index.mjs} +0 -0
  361. package/{esm2015/tags/ptsecurity-mosaic-tags.js → esm2020/tags/ptsecurity-mosaic-tags.mjs} +0 -0
  362. package/{esm2015/tags/public-api.js → esm2020/tags/public-api.mjs} +0 -0
  363. package/{esm2015/tags/tag-default-options.js → esm2020/tags/tag-default-options.mjs} +0 -0
  364. package/esm2020/tags/tag-input.mjs +229 -0
  365. package/esm2020/tags/tag-list.component.mjs +722 -0
  366. package/{esm2015/tags/tag-text-control.js → esm2020/tags/tag-text-control.mjs} +0 -0
  367. package/esm2020/tags/tag.component.mjs +377 -0
  368. package/esm2020/tags/tag.module.mjs +56 -0
  369. package/{esm2015/textarea/index.js → esm2020/textarea/index.mjs} +0 -0
  370. package/{esm2015/textarea/ptsecurity-mosaic-textarea.js → esm2020/textarea/ptsecurity-mosaic-textarea.mjs} +0 -0
  371. package/{esm2015/textarea/public-api.js → esm2020/textarea/public-api.mjs} +0 -0
  372. package/esm2020/textarea/textarea.component.mjs +268 -0
  373. package/esm2020/textarea/textarea.module.mjs +21 -0
  374. package/{esm2015/timepicker/index.js → esm2020/timepicker/index.mjs} +0 -0
  375. package/{esm2015/timepicker/ptsecurity-mosaic-timepicker.js → esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs} +0 -0
  376. package/{esm2015/timepicker/public-api.js → esm2020/timepicker/public-api.mjs} +0 -0
  377. package/{esm2015/timepicker/timepicker.constants.js → esm2020/timepicker/timepicker.constants.mjs} +0 -0
  378. package/esm2020/timepicker/timepicker.directive.mjs +653 -0
  379. package/esm2020/timepicker/timepicker.module.mjs +34 -0
  380. package/{esm2015/toggle/index.js → esm2020/toggle/index.mjs} +0 -0
  381. package/{esm2015/toggle/ptsecurity-mosaic-toggle.js → esm2020/toggle/ptsecurity-mosaic-toggle.mjs} +0 -0
  382. package/{esm2015/toggle/public-api.js → esm2020/toggle/public-api.mjs} +0 -0
  383. package/esm2020/toggle/toggle.component.mjs +158 -0
  384. package/esm2020/toggle/toggle.module.mjs +20 -0
  385. package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
  386. package/{esm2015/tooltip/ptsecurity-mosaic-tooltip.js → esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs} +0 -0
  387. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  388. package/{esm2015/tooltip/tooltip.animations.js → esm2020/tooltip/tooltip.animations.mjs} +0 -0
  389. package/esm2020/tooltip/tooltip.component.mjs +291 -0
  390. package/esm2020/tooltip/tooltip.module.mjs +43 -0
  391. package/{esm2015/tree/control/base-tree-control.js → esm2020/tree/control/base-tree-control.mjs} +0 -0
  392. package/{esm2015/tree/control/flat-tree-control.js → esm2020/tree/control/flat-tree-control.mjs} +0 -0
  393. package/{esm2015/tree/control/nested-tree-control.js → esm2020/tree/control/nested-tree-control.mjs} +0 -0
  394. package/{esm2015/tree/control/tree-control.js → esm2020/tree/control/tree-control.mjs} +0 -0
  395. package/esm2020/tree/data-source/flat-data-source.mjs +162 -0
  396. package/{esm2015/tree/data-source/nested-data-source.js → esm2020/tree/data-source/nested-data-source.mjs} +0 -0
  397. package/{esm2015/tree/index.js → esm2020/tree/index.mjs} +0 -0
  398. package/esm2020/tree/node.mjs +31 -0
  399. package/esm2020/tree/outlet.mjs +15 -0
  400. package/esm2020/tree/padding.directive.mjs +110 -0
  401. package/{esm2015/tree/ptsecurity-mosaic-tree.js → esm2020/tree/ptsecurity-mosaic-tree.mjs} +0 -0
  402. package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
  403. package/esm2020/tree/toggle.mjs +80 -0
  404. package/esm2020/tree/tree-base.mjs +243 -0
  405. package/{esm2015/tree/tree-errors.js → esm2020/tree/tree-errors.mjs} +0 -0
  406. package/esm2020/tree/tree-option.component.mjs +234 -0
  407. package/esm2020/tree/tree-selection.component.mjs +533 -0
  408. package/esm2020/tree/tree.mjs +15 -0
  409. package/esm2020/tree/tree.module.mjs +53 -0
  410. package/{esm2015/tree-select/index.js → esm2020/tree-select/index.mjs} +0 -0
  411. package/{esm2015/tree-select/ptsecurity-mosaic-tree-select.js → esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs} +0 -0
  412. package/{esm2015/tree-select/public-api.js → esm2020/tree-select/public-api.mjs} +0 -0
  413. package/esm2020/tree-select/tree-select.component.mjs +925 -0
  414. package/esm2020/tree-select/tree-select.module.mjs +47 -0
  415. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +756 -0
  416. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -0
  417. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +385 -0
  418. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -0
  419. package/fesm2015/ptsecurity-mosaic-button.mjs +170 -0
  420. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -0
  421. package/fesm2015/ptsecurity-mosaic-card.mjs +113 -0
  422. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -0
  423. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +366 -0
  424. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -0
  425. package/fesm2015/ptsecurity-mosaic-core.mjs +2706 -0
  426. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -0
  427. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2700 -0
  428. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -0
  429. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +2925 -0
  430. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -0
  431. package/fesm2015/ptsecurity-mosaic-divider.mjs +61 -0
  432. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -0
  433. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1106 -0
  434. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -0
  435. package/fesm2015/ptsecurity-mosaic-form-field.mjs +378 -0
  436. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -0
  437. package/fesm2015/ptsecurity-mosaic-icon.mjs +88 -0
  438. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -0
  439. package/fesm2015/ptsecurity-mosaic-input.mjs +609 -0
  440. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -0
  441. package/fesm2015/ptsecurity-mosaic-link.mjs +137 -0
  442. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -0
  443. package/fesm2015/ptsecurity-mosaic-list.mjs +791 -0
  444. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -0
  445. package/fesm2015/ptsecurity-mosaic-modal.mjs +864 -0
  446. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -0
  447. package/fesm2015/ptsecurity-mosaic-navbar.mjs +1025 -0
  448. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -0
  449. package/fesm2015/ptsecurity-mosaic-popover.mjs +393 -0
  450. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -0
  451. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +76 -0
  452. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -0
  453. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +80 -0
  454. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -0
  455. package/fesm2015/ptsecurity-mosaic-radio.mjs +481 -0
  456. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -0
  457. package/fesm2015/ptsecurity-mosaic-select.mjs +1175 -0
  458. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -0
  459. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +202 -0
  460. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -0
  461. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +592 -0
  462. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -0
  463. package/fesm2015/ptsecurity-mosaic-splitter.mjs +524 -0
  464. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -0
  465. package/fesm2015/ptsecurity-mosaic-table.mjs +50 -0
  466. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -0
  467. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1511 -0
  468. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -0
  469. package/fesm2015/ptsecurity-mosaic-tags.mjs +1377 -0
  470. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -0
  471. package/fesm2015/ptsecurity-mosaic-textarea.mjs +293 -0
  472. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -0
  473. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +715 -0
  474. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -0
  475. package/fesm2015/ptsecurity-mosaic-toggle.mjs +180 -0
  476. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -0
  477. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +362 -0
  478. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -0
  479. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +972 -0
  480. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -0
  481. package/fesm2015/ptsecurity-mosaic-tree.mjs +1718 -0
  482. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -0
  483. package/fesm2015/ptsecurity-mosaic.mjs +4 -0
  484. package/fesm2015/ptsecurity-mosaic.mjs.map +1 -0
  485. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +752 -0
  486. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -0
  487. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +383 -0
  488. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -0
  489. package/fesm2020/ptsecurity-mosaic-button.mjs +170 -0
  490. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -0
  491. package/fesm2020/ptsecurity-mosaic-card.mjs +113 -0
  492. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -0
  493. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +364 -0
  494. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -0
  495. package/fesm2020/ptsecurity-mosaic-core.mjs +2735 -0
  496. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -0
  497. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2687 -0
  498. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -0
  499. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +2925 -0
  500. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -0
  501. package/fesm2020/ptsecurity-mosaic-divider.mjs +61 -0
  502. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -0
  503. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +1093 -0
  504. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -0
  505. package/fesm2020/ptsecurity-mosaic-form-field.mjs +377 -0
  506. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -0
  507. package/fesm2020/ptsecurity-mosaic-icon.mjs +86 -0
  508. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -0
  509. package/fesm2020/ptsecurity-mosaic-input.mjs +605 -0
  510. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -0
  511. package/fesm2020/ptsecurity-mosaic-link.mjs +136 -0
  512. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -0
  513. package/fesm2020/ptsecurity-mosaic-list.mjs +784 -0
  514. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -0
  515. package/fesm2020/ptsecurity-mosaic-modal.mjs +860 -0
  516. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -0
  517. package/fesm2020/ptsecurity-mosaic-navbar.mjs +1009 -0
  518. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -0
  519. package/fesm2020/ptsecurity-mosaic-popover.mjs +389 -0
  520. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -0
  521. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +76 -0
  522. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -0
  523. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +80 -0
  524. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -0
  525. package/fesm2020/ptsecurity-mosaic-radio.mjs +479 -0
  526. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -0
  527. package/fesm2020/ptsecurity-mosaic-select.mjs +1173 -0
  528. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -0
  529. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +202 -0
  530. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -0
  531. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +589 -0
  532. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -0
  533. package/fesm2020/ptsecurity-mosaic-splitter.mjs +524 -0
  534. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -0
  535. package/fesm2020/ptsecurity-mosaic-table.mjs +50 -0
  536. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -0
  537. package/fesm2020/ptsecurity-mosaic-tabs.mjs +1496 -0
  538. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -0
  539. package/fesm2020/ptsecurity-mosaic-tags.mjs +1370 -0
  540. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -0
  541. package/fesm2020/ptsecurity-mosaic-textarea.mjs +291 -0
  542. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -0
  543. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +713 -0
  544. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -0
  545. package/fesm2020/ptsecurity-mosaic-toggle.mjs +180 -0
  546. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -0
  547. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +354 -0
  548. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -0
  549. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +970 -0
  550. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -0
  551. package/fesm2020/ptsecurity-mosaic-tree.mjs +1705 -0
  552. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -0
  553. package/fesm2020/ptsecurity-mosaic.mjs +4 -0
  554. package/fesm2020/ptsecurity-mosaic.mjs.map +1 -0
  555. package/form-field/README.md +0 -0
  556. package/form-field/package.json +5 -5
  557. package/icon/README.md +0 -0
  558. package/icon/package.json +5 -5
  559. package/input/package.json +5 -5
  560. package/link/README.md +0 -0
  561. package/link/package.json +5 -5
  562. package/list/README.md +0 -0
  563. package/list/package.json +5 -5
  564. package/modal/README.md +34 -0
  565. package/modal/modal-control.service.d.ts +1 -0
  566. package/modal/package.json +5 -5
  567. package/navbar/README.md +41 -0
  568. package/navbar/navbar-item.component.d.ts +122 -34
  569. package/navbar/navbar.component.d.ts +37 -9
  570. package/navbar/navbar.module.d.ts +2 -1
  571. package/navbar/package.json +5 -5
  572. package/navbar/vertical-navbar.component.d.ts +15 -26
  573. package/package.json +299 -14
  574. package/popover/README.md +32 -0
  575. package/popover/package.json +5 -5
  576. package/popover/popover.component.d.ts +2 -0
  577. package/popover/popover.module.d.ts +2 -1
  578. package/prebuilt-themes/dark-theme.css +1 -1
  579. package/prebuilt-themes/default-theme.css +1 -1
  580. package/prebuilt-visual/default-visual.css +1 -1
  581. package/progress-bar/README.md +0 -0
  582. package/progress-bar/package.json +5 -5
  583. package/progress-spinner/README.md +0 -0
  584. package/progress-spinner/package.json +5 -5
  585. package/radio/package.json +5 -5
  586. package/schematics/README.md +35 -0
  587. package/schematics/ng-update/data/index.d.ts +1 -0
  588. package/schematics/ng-update/data/index.js +10 -9
  589. package/schematics/ng-update/data/index.js.map +1 -1
  590. package/schematics/ng-update/data/symbol-removal.d.ts +2 -0
  591. package/schematics/ng-update/data/symbol-removal.js +5 -0
  592. package/schematics/ng-update/data/symbol-removal.js.map +1 -0
  593. package/schematics/ng-update/index.js +3 -3
  594. package/schematics/ng-update/index.js.map +1 -1
  595. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +1 -2
  596. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +1 -1
  597. package/schematics/ng-update/upgrade-data.js +2 -1
  598. package/schematics/ng-update/upgrade-data.js.map +1 -1
  599. package/schematics/tsconfig.lib.json +2 -2
  600. package/select/README.md +0 -0
  601. package/select/package.json +5 -5
  602. package/sidebar/package.json +5 -5
  603. package/sidepanel/package.json +5 -5
  604. package/splitter/package.json +5 -5
  605. package/splitter/splitter.component.d.ts +46 -5
  606. package/splitter/splitter.module.d.ts +1 -1
  607. package/table/README.md +0 -0
  608. package/table/package.json +5 -5
  609. package/tabs/README.md +0 -0
  610. package/tabs/package.json +5 -5
  611. package/tags/README.md +0 -0
  612. package/tags/package.json +5 -5
  613. package/tags/tag.component.d.ts +20 -20
  614. package/textarea/README.md +0 -0
  615. package/textarea/package.json +5 -5
  616. package/timepicker/README.md +0 -0
  617. package/timepicker/package.json +5 -5
  618. package/toggle/package.json +5 -5
  619. package/tooltip/package.json +5 -5
  620. package/tree/data-source/flat-data-source.d.ts +2 -2
  621. package/tree/package.json +5 -5
  622. package/tree/toggle.d.ts +1 -1
  623. package/tree/tree-option.component.d.ts +5 -3
  624. package/tree/tree-selection.component.d.ts +1 -0
  625. package/tree-select/README.md +0 -0
  626. package/tree-select/package.json +5 -5
  627. package/tree-select/tree-select.component.d.ts +9 -1
  628. package/tree-select/tree-select.module.d.ts +2 -1
  629. package/bundles/ptsecurity-mosaic-autocomplete.umd.js +0 -1160
  630. package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +0 -1
  631. package/bundles/ptsecurity-mosaic-button-toggle.umd.js +0 -755
  632. package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +0 -1
  633. package/bundles/ptsecurity-mosaic-button.umd.js +0 -533
  634. package/bundles/ptsecurity-mosaic-button.umd.js.map +0 -1
  635. package/bundles/ptsecurity-mosaic-card.umd.js +0 -479
  636. package/bundles/ptsecurity-mosaic-card.umd.js.map +0 -1
  637. package/bundles/ptsecurity-mosaic-checkbox.umd.js +0 -762
  638. package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +0 -1
  639. package/bundles/ptsecurity-mosaic-core.umd.js +0 -2843
  640. package/bundles/ptsecurity-mosaic-core.umd.js.map +0 -1
  641. package/bundles/ptsecurity-mosaic-datepicker.umd.js +0 -3355
  642. package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +0 -1
  643. package/bundles/ptsecurity-mosaic-design-tokens.umd.js +0 -1872
  644. package/bundles/ptsecurity-mosaic-design-tokens.umd.js.map +0 -1
  645. package/bundles/ptsecurity-mosaic-divider.umd.js +0 -106
  646. package/bundles/ptsecurity-mosaic-divider.umd.js.map +0 -1
  647. package/bundles/ptsecurity-mosaic-dropdown.umd.js +0 -1517
  648. package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +0 -1
  649. package/bundles/ptsecurity-mosaic-form-field.umd.js +0 -788
  650. package/bundles/ptsecurity-mosaic-form-field.umd.js.map +0 -1
  651. package/bundles/ptsecurity-mosaic-icon.umd.js +0 -450
  652. package/bundles/ptsecurity-mosaic-icon.umd.js.map +0 -1
  653. package/bundles/ptsecurity-mosaic-input.umd.js +0 -1008
  654. package/bundles/ptsecurity-mosaic-input.umd.js.map +0 -1
  655. package/bundles/ptsecurity-mosaic-link.umd.js +0 -515
  656. package/bundles/ptsecurity-mosaic-link.umd.js.map +0 -1
  657. package/bundles/ptsecurity-mosaic-list.umd.js +0 -1256
  658. package/bundles/ptsecurity-mosaic-list.umd.js.map +0 -1
  659. package/bundles/ptsecurity-mosaic-modal.umd.js +0 -1305
  660. package/bundles/ptsecurity-mosaic-modal.umd.js.map +0 -1
  661. package/bundles/ptsecurity-mosaic-navbar.umd.js +0 -930
  662. package/bundles/ptsecurity-mosaic-navbar.umd.js.map +0 -1
  663. package/bundles/ptsecurity-mosaic-popover.umd.js +0 -830
  664. package/bundles/ptsecurity-mosaic-popover.umd.js.map +0 -1
  665. package/bundles/ptsecurity-mosaic-progress-bar.umd.js +0 -440
  666. package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +0 -1
  667. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +0 -448
  668. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +0 -1
  669. package/bundles/ptsecurity-mosaic-radio.umd.js +0 -901
  670. package/bundles/ptsecurity-mosaic-radio.umd.js.map +0 -1
  671. package/bundles/ptsecurity-mosaic-select.umd.js +0 -1606
  672. package/bundles/ptsecurity-mosaic-select.umd.js.map +0 -1
  673. package/bundles/ptsecurity-mosaic-sidebar.umd.js +0 -254
  674. package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +0 -1
  675. package/bundles/ptsecurity-mosaic-sidepanel.umd.js +0 -954
  676. package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +0 -1
  677. package/bundles/ptsecurity-mosaic-splitter.umd.js +0 -436
  678. package/bundles/ptsecurity-mosaic-splitter.umd.js.map +0 -1
  679. package/bundles/ptsecurity-mosaic-table.umd.js +0 -81
  680. package/bundles/ptsecurity-mosaic-table.umd.js.map +0 -1
  681. package/bundles/ptsecurity-mosaic-tabs.umd.js +0 -2013
  682. package/bundles/ptsecurity-mosaic-tabs.umd.js.map +0 -1
  683. package/bundles/ptsecurity-mosaic-tags.umd.js +0 -1911
  684. package/bundles/ptsecurity-mosaic-tags.umd.js.map +0 -1
  685. package/bundles/ptsecurity-mosaic-textarea.umd.js +0 -664
  686. package/bundles/ptsecurity-mosaic-textarea.umd.js.map +0 -1
  687. package/bundles/ptsecurity-mosaic-timepicker.umd.js +0 -820
  688. package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +0 -1
  689. package/bundles/ptsecurity-mosaic-toggle.umd.js +0 -557
  690. package/bundles/ptsecurity-mosaic-toggle.umd.js.map +0 -1
  691. package/bundles/ptsecurity-mosaic-tooltip.umd.js +0 -777
  692. package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +0 -1
  693. package/bundles/ptsecurity-mosaic-tree-select.umd.js +0 -1368
  694. package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +0 -1
  695. package/bundles/ptsecurity-mosaic-tree.umd.js +0 -2301
  696. package/bundles/ptsecurity-mosaic-tree.umd.js.map +0 -1
  697. package/bundles/ptsecurity-mosaic.umd.js +0 -11
  698. package/bundles/ptsecurity-mosaic.umd.js.map +0 -1
  699. package/design-tokens/tokens/components/checkbox.json5 +0 -39
  700. package/design-tokens/tokens/components/modal.json5 +0 -67
  701. package/design-tokens/tokens/components/navbar.json5 +0 -64
  702. package/design-tokens/tokens/components/radio.json5 +0 -45
  703. package/design-tokens/tokens/components/tags.json5 +0 -126
  704. package/design-tokens/tokens/components/toggle.json5 +0 -55
  705. package/design-tokens/tokens.d.ts +0 -7637
  706. package/esm2015/autocomplete/autocomplete-origin.directive.js +0 -21
  707. package/esm2015/autocomplete/autocomplete-trigger.directive.js +0 -555
  708. package/esm2015/autocomplete/autocomplete.component.js +0 -163
  709. package/esm2015/autocomplete/autocomplete.module.js +0 -34
  710. package/esm2015/button/button.component.js +0 -129
  711. package/esm2015/button/button.module.js +0 -42
  712. package/esm2015/button-toggle/button-toggle.component.js +0 -370
  713. package/esm2015/button-toggle/button-toggle.module.js +0 -19
  714. package/esm2015/card/card.component.js +0 -88
  715. package/esm2015/card/card.module.js +0 -30
  716. package/esm2015/checkbox/checkbox-module.js +0 -19
  717. package/esm2015/checkbox/checkbox-required-validator.js +0 -27
  718. package/esm2015/checkbox/checkbox.js +0 -325
  719. package/esm2015/core/common-behaviors/common-module.js +0 -83
  720. package/esm2015/core/error/error-options.js +0 -26
  721. package/esm2015/core/formatters/date/formatter.js +0 -288
  722. package/esm2015/core/formatters/date/templates/en-US.js +0 -280
  723. package/esm2015/core/formatters/date/templates/ru-RU.js +0 -280
  724. package/esm2015/core/formatters/index.js +0 -20
  725. package/esm2015/core/formatters/number/formatter.js +0 -99
  726. package/esm2015/core/forms/forms-module.js +0 -24
  727. package/esm2015/core/forms/forms.directive.js +0 -66
  728. package/esm2015/core/highlight/highlight.pipe.js +0 -17
  729. package/esm2015/core/highlight/index.js +0 -19
  730. package/esm2015/core/line/line.js +0 -70
  731. package/esm2015/core/option/action.js +0 -131
  732. package/esm2015/core/option/optgroup.js +0 -40
  733. package/esm2015/core/option/option-module.js +0 -21
  734. package/esm2015/core/option/option.js +0 -262
  735. package/esm2015/core/pop-up/pop-up-trigger.js +0 -241
  736. package/esm2015/core/pop-up/pop-up.js +0 -87
  737. package/esm2015/core/public-api.js +0 -17
  738. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +0 -45
  739. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js +0 -18
  740. package/esm2015/core/services/measure-scrollbar.service.js +0 -48
  741. package/esm2015/datepicker/calendar-body.component.js +0 -114
  742. package/esm2015/datepicker/calendar.component.js +0 -377
  743. package/esm2015/datepicker/datepicker-input.directive.js +0 -885
  744. package/esm2015/datepicker/datepicker-intl.js +0 -40
  745. package/esm2015/datepicker/datepicker-module.js +0 -107
  746. package/esm2015/datepicker/datepicker-toggle.component.js +0 -94
  747. package/esm2015/datepicker/datepicker.component.js +0 -418
  748. package/esm2015/datepicker/month-view.component.js +0 -263
  749. package/esm2015/datepicker/multi-year-view.component.js +0 -224
  750. package/esm2015/datepicker/year-view.component.js +0 -259
  751. package/esm2015/design-tokens/public-api.js +0 -2
  752. package/esm2015/design-tokens/tokens.js +0 -931
  753. package/esm2015/divider/divider.component.js +0 -46
  754. package/esm2015/divider/divider.module.js +0 -18
  755. package/esm2015/dropdown/dropdown-content.directive.js +0 -66
  756. package/esm2015/dropdown/dropdown-item.component.js +0 -142
  757. package/esm2015/dropdown/dropdown-trigger.directive.js +0 -478
  758. package/esm2015/dropdown/dropdown.component.js +0 -302
  759. package/esm2015/dropdown/dropdown.module.js +0 -50
  760. package/esm2015/form-field/cleaner.js +0 -23
  761. package/esm2015/form-field/form-field.js +0 -224
  762. package/esm2015/form-field/form-field.module.js +0 -52
  763. package/esm2015/form-field/hint.js +0 -23
  764. package/esm2015/form-field/prefix.js +0 -13
  765. package/esm2015/form-field/stepper.js +0 -55
  766. package/esm2015/form-field/suffix.js +0 -13
  767. package/esm2015/icon/icon.component.js +0 -51
  768. package/esm2015/icon/icon.module.js +0 -38
  769. package/esm2015/input/input-number-validators.js +0 -92
  770. package/esm2015/input/input-number.js +0 -163
  771. package/esm2015/input/input.js +0 -333
  772. package/esm2015/input/input.module.js +0 -23
  773. package/esm2015/link/link.component.js +0 -108
  774. package/esm2015/link/link.module.js +0 -26
  775. package/esm2015/list/list-selection.component.js +0 -716
  776. package/esm2015/list/list.component.js +0 -58
  777. package/esm2015/list/list.module.js +0 -55
  778. package/esm2015/modal/css-unit.pipe.js +0 -17
  779. package/esm2015/modal/modal-control.service.js +0 -63
  780. package/esm2015/modal/modal.component.js +0 -508
  781. package/esm2015/modal/modal.directive.js +0 -52
  782. package/esm2015/modal/modal.module.js +0 -72
  783. package/esm2015/modal/modal.service.js +0 -117
  784. package/esm2015/navbar/navbar-item.component.js +0 -209
  785. package/esm2015/navbar/navbar.component.js +0 -118
  786. package/esm2015/navbar/navbar.module.js +0 -76
  787. package/esm2015/navbar/vertical-navbar.animation.js +0 -10
  788. package/esm2015/navbar/vertical-navbar.component.js +0 -140
  789. package/esm2015/popover/popover-confirm.component.js +0 -115
  790. package/esm2015/popover/popover.component.js +0 -256
  791. package/esm2015/popover/popover.module.js +0 -23
  792. package/esm2015/progress-bar/progress-bar.component.js +0 -50
  793. package/esm2015/progress-bar/progress-bar.module.js +0 -30
  794. package/esm2015/progress-spinner/progress-spinner.component.js +0 -54
  795. package/esm2015/progress-spinner/progress-spinner.module.js +0 -30
  796. package/esm2015/radio/radio.component.js +0 -467
  797. package/esm2015/radio/radio.module.js +0 -20
  798. package/esm2015/select/select.component.js +0 -1122
  799. package/esm2015/select/select.module.js +0 -64
  800. package/esm2015/sidebar/sidebar.component.js +0 -155
  801. package/esm2015/sidebar/sidebar.module.js +0 -30
  802. package/esm2015/sidepanel/sidepanel-container.component.js +0 -114
  803. package/esm2015/sidepanel/sidepanel-directives.js +0 -159
  804. package/esm2015/sidepanel/sidepanel.module.js +0 -74
  805. package/esm2015/sidepanel/sidepanel.service.js +0 -164
  806. package/esm2015/splitter/splitter.component.js +0 -331
  807. package/esm2015/splitter/splitter.module.js +0 -38
  808. package/esm2015/table/table.component.js +0 -16
  809. package/esm2015/table/table.module.js +0 -30
  810. package/esm2015/tabs/paginated-tab-header.js +0 -482
  811. package/esm2015/tabs/tab-body.component.js +0 -186
  812. package/esm2015/tabs/tab-content.directive.js +0 -15
  813. package/esm2015/tabs/tab-group.component.js +0 -359
  814. package/esm2015/tabs/tab-header.component.js +0 -76
  815. package/esm2015/tabs/tab-label-wrapper.directive.js +0 -78
  816. package/esm2015/tabs/tab-label.directive.js +0 -17
  817. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +0 -118
  818. package/esm2015/tabs/tab.component.js +0 -133
  819. package/esm2015/tabs/tabs.module.js +0 -104
  820. package/esm2015/tags/tag-input.js +0 -229
  821. package/esm2015/tags/tag-list.component.js +0 -732
  822. package/esm2015/tags/tag.component.js +0 -382
  823. package/esm2015/tags/tag.module.js +0 -56
  824. package/esm2015/textarea/textarea.component.js +0 -268
  825. package/esm2015/textarea/textarea.module.js +0 -21
  826. package/esm2015/timepicker/timepicker.directive.js +0 -652
  827. package/esm2015/timepicker/timepicker.module.js +0 -34
  828. package/esm2015/toggle/toggle.component.js +0 -169
  829. package/esm2015/toggle/toggle.module.js +0 -20
  830. package/esm2015/tooltip/tooltip.component.js +0 -299
  831. package/esm2015/tooltip/tooltip.module.js +0 -43
  832. package/esm2015/tree/data-source/flat-data-source.js +0 -162
  833. package/esm2015/tree/node.js +0 -31
  834. package/esm2015/tree/outlet.js +0 -15
  835. package/esm2015/tree/padding.directive.js +0 -111
  836. package/esm2015/tree/toggle.js +0 -89
  837. package/esm2015/tree/tree-base.js +0 -243
  838. package/esm2015/tree/tree-option.component.js +0 -238
  839. package/esm2015/tree/tree-selection.component.js +0 -541
  840. package/esm2015/tree/tree.js +0 -23
  841. package/esm2015/tree/tree.module.js +0 -53
  842. package/esm2015/tree-select/tree-select.component.js +0 -900
  843. package/esm2015/tree-select/tree-select.module.js +0 -43
  844. package/fesm2015/ptsecurity-mosaic-autocomplete.js +0 -761
  845. package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +0 -1
  846. package/fesm2015/ptsecurity-mosaic-button-toggle.js +0 -391
  847. package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +0 -1
  848. package/fesm2015/ptsecurity-mosaic-button.js +0 -174
  849. package/fesm2015/ptsecurity-mosaic-button.js.map +0 -1
  850. package/fesm2015/ptsecurity-mosaic-card.js +0 -121
  851. package/fesm2015/ptsecurity-mosaic-card.js.map +0 -1
  852. package/fesm2015/ptsecurity-mosaic-checkbox.js +0 -374
  853. package/fesm2015/ptsecurity-mosaic-checkbox.js.map +0 -1
  854. package/fesm2015/ptsecurity-mosaic-core.js +0 -2682
  855. package/fesm2015/ptsecurity-mosaic-core.js.map +0 -1
  856. package/fesm2015/ptsecurity-mosaic-datepicker.js +0 -2731
  857. package/fesm2015/ptsecurity-mosaic-datepicker.js.map +0 -1
  858. package/fesm2015/ptsecurity-mosaic-design-tokens.js +0 -937
  859. package/fesm2015/ptsecurity-mosaic-design-tokens.js.map +0 -1
  860. package/fesm2015/ptsecurity-mosaic-divider.js +0 -68
  861. package/fesm2015/ptsecurity-mosaic-divider.js.map +0 -1
  862. package/fesm2015/ptsecurity-mosaic-dropdown.js +0 -1101
  863. package/fesm2015/ptsecurity-mosaic-dropdown.js.map +0 -1
  864. package/fesm2015/ptsecurity-mosaic-form-field.js +0 -396
  865. package/fesm2015/ptsecurity-mosaic-form-field.js.map +0 -1
  866. package/fesm2015/ptsecurity-mosaic-icon.js +0 -93
  867. package/fesm2015/ptsecurity-mosaic-icon.js.map +0 -1
  868. package/fesm2015/ptsecurity-mosaic-input.js +0 -605
  869. package/fesm2015/ptsecurity-mosaic-input.js.map +0 -1
  870. package/fesm2015/ptsecurity-mosaic-link.js +0 -137
  871. package/fesm2015/ptsecurity-mosaic-link.js.map +0 -1
  872. package/fesm2015/ptsecurity-mosaic-list.js +0 -827
  873. package/fesm2015/ptsecurity-mosaic-list.js.map +0 -1
  874. package/fesm2015/ptsecurity-mosaic-modal.js +0 -838
  875. package/fesm2015/ptsecurity-mosaic-modal.js.map +0 -1
  876. package/fesm2015/ptsecurity-mosaic-navbar.js +0 -539
  877. package/fesm2015/ptsecurity-mosaic-navbar.js.map +0 -1
  878. package/fesm2015/ptsecurity-mosaic-popover.js +0 -399
  879. package/fesm2015/ptsecurity-mosaic-popover.js.map +0 -1
  880. package/fesm2015/ptsecurity-mosaic-progress-bar.js +0 -84
  881. package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +0 -1
  882. package/fesm2015/ptsecurity-mosaic-progress-spinner.js +0 -88
  883. package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +0 -1
  884. package/fesm2015/ptsecurity-mosaic-radio.js +0 -488
  885. package/fesm2015/ptsecurity-mosaic-radio.js.map +0 -1
  886. package/fesm2015/ptsecurity-mosaic-select.js +0 -1185
  887. package/fesm2015/ptsecurity-mosaic-select.js.map +0 -1
  888. package/fesm2015/ptsecurity-mosaic-sidebar.js +0 -211
  889. package/fesm2015/ptsecurity-mosaic-sidebar.js.map +0 -1
  890. package/fesm2015/ptsecurity-mosaic-sidepanel.js +0 -594
  891. package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +0 -1
  892. package/fesm2015/ptsecurity-mosaic-splitter.js +0 -373
  893. package/fesm2015/ptsecurity-mosaic-splitter.js.map +0 -1
  894. package/fesm2015/ptsecurity-mosaic-table.js +0 -50
  895. package/fesm2015/ptsecurity-mosaic-table.js.map +0 -1
  896. package/fesm2015/ptsecurity-mosaic-tabs.js +0 -1533
  897. package/fesm2015/ptsecurity-mosaic-tabs.js.map +0 -1
  898. package/fesm2015/ptsecurity-mosaic-tags.js +0 -1385
  899. package/fesm2015/ptsecurity-mosaic-tags.js.map +0 -1
  900. package/fesm2015/ptsecurity-mosaic-textarea.js +0 -291
  901. package/fesm2015/ptsecurity-mosaic-textarea.js.map +0 -1
  902. package/fesm2015/ptsecurity-mosaic-timepicker.js +0 -712
  903. package/fesm2015/ptsecurity-mosaic-timepicker.js.map +0 -1
  904. package/fesm2015/ptsecurity-mosaic-toggle.js +0 -191
  905. package/fesm2015/ptsecurity-mosaic-toggle.js.map +0 -1
  906. package/fesm2015/ptsecurity-mosaic-tooltip.js +0 -362
  907. package/fesm2015/ptsecurity-mosaic-tooltip.js.map +0 -1
  908. package/fesm2015/ptsecurity-mosaic-tree-select.js +0 -942
  909. package/fesm2015/ptsecurity-mosaic-tree-select.js.map +0 -1
  910. package/fesm2015/ptsecurity-mosaic-tree.js +0 -1735
  911. package/fesm2015/ptsecurity-mosaic-tree.js.map +0 -1
  912. package/fesm2015/ptsecurity-mosaic.js +0 -4
  913. package/fesm2015/ptsecurity-mosaic.js.map +0 -1
@@ -1,263 +0,0 @@
1
- // tslint:disable:no-magic-numbers
2
- import { Directionality } from '@angular/cdk/bidi';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation, ViewChild } from '@angular/core';
4
- import { DateAdapter, MC_DATE_FORMATS } from '@ptsecurity/cdk/datetime';
5
- import { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW, SPACE } from '@ptsecurity/cdk/keycodes';
6
- import { McCalendarBody, McCalendarCell } from './calendar-body.component';
7
- import { createMissingDateImplError } from './datepicker-errors';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ptsecurity/cdk/datetime";
10
- import * as i2 from "@angular/cdk/bidi";
11
- import * as i3 from "./calendar-body.component";
12
- import * as i4 from "@angular/common";
13
- const DAYS_PER_WEEK = 7;
14
- /**
15
- * An internal component used to display a single month in the datepicker.
16
- * @docs-private
17
- */
18
- export class McMonthView {
19
- constructor(changeDetectorRef, dateFormats, dateAdapter, dir) {
20
- this.changeDetectorRef = changeDetectorRef;
21
- this.dateFormats = dateFormats;
22
- this.dateAdapter = dateAdapter;
23
- this.dir = dir;
24
- /** Emits when a new date is selected. */
25
- this.selectedChange = new EventEmitter();
26
- /** Emits when any date is selected. */
27
- this.userSelection = new EventEmitter();
28
- /** Emits when any date is activated. */
29
- this.activeDateChange = new EventEmitter();
30
- if (!this.dateAdapter) {
31
- throw createMissingDateImplError('DateAdapter');
32
- }
33
- if (!this.dateFormats) {
34
- throw createMissingDateImplError('MC_DATE_FORMATS');
35
- }
36
- const firstDayOfWeek = this.dateAdapter.getFirstDayOfWeek();
37
- const narrowWeekdays = this.dateAdapter.getDayOfWeekNames('short');
38
- const longWeekdays = this.dateAdapter.getDayOfWeekNames('long');
39
- // Rotate the labels for days of the week based on the configured first day of the week.
40
- const weekdays = longWeekdays.map((long, i) => {
41
- return { long, narrow: narrowWeekdays[i] };
42
- });
43
- this.weekdays = weekdays
44
- .slice(firstDayOfWeek)
45
- .concat(weekdays.slice(0, firstDayOfWeek));
46
- this._activeDate = this.dateAdapter.today();
47
- }
48
- /**
49
- * The date to display in this month view (everything other than the month and year is ignored).
50
- */
51
- get activeDate() {
52
- return this._activeDate;
53
- }
54
- set activeDate(value) {
55
- const oldActiveDate = this._activeDate;
56
- const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();
57
- this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);
58
- if (!this.hasSameMonthAndYear(oldActiveDate, this._activeDate)) {
59
- this.init();
60
- }
61
- }
62
- /** The currently selected date. */
63
- get selected() {
64
- return this._selected;
65
- }
66
- set selected(value) {
67
- this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
68
- this.selectedDate = this.getDateInCurrentMonth(this._selected);
69
- }
70
- /** The minimum selectable date. */
71
- get minDate() {
72
- return this._minDate;
73
- }
74
- set minDate(value) {
75
- this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
76
- }
77
- /** The maximum selectable date. */
78
- get maxDate() {
79
- return this._maxDate;
80
- }
81
- set maxDate(value) {
82
- this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
83
- }
84
- ngAfterContentInit() {
85
- this.init();
86
- }
87
- /** Handles when a new date is selected. */
88
- dateSelected(date) {
89
- if (this.selectedDate !== date) {
90
- const selectedYear = this.dateAdapter.getYear(this.activeDate);
91
- const selectedMonth = this.dateAdapter.getMonth(this.activeDate);
92
- const selectedDate = this.dateAdapter.createDate(selectedYear, selectedMonth, date);
93
- this.selectedChange.emit(selectedDate);
94
- }
95
- this.userSelection.emit();
96
- }
97
- /** Handles keydown events on the calendar body when calendar is in month view. */
98
- handleCalendarBodyKeydown(event) {
99
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
100
- // disabled ones from being selected. This may not be ideal, we should look into whether
101
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
102
- const oldActiveDate = this._activeDate;
103
- const isRtl = this.isRtl();
104
- // tslint:disable-next-line:deprecation
105
- switch (event.keyCode) {
106
- case LEFT_ARROW:
107
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);
108
- break;
109
- case RIGHT_ARROW:
110
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);
111
- break;
112
- case UP_ARROW:
113
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, -7);
114
- break;
115
- case DOWN_ARROW:
116
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 7);
117
- break;
118
- case HOME:
119
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 1 - this.dateAdapter.getDate(this._activeDate));
120
- break;
121
- case END:
122
- this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, (this.dateAdapter.getNumDaysInMonth(this._activeDate) - this.dateAdapter.getDate(this._activeDate)));
123
- break;
124
- case PAGE_UP:
125
- this.activeDate = event.altKey ?
126
- this.dateAdapter.addCalendarYears(this._activeDate, -1) :
127
- this.dateAdapter.addCalendarMonths(this._activeDate, -1);
128
- break;
129
- case PAGE_DOWN:
130
- this.activeDate = event.altKey ?
131
- this.dateAdapter.addCalendarYears(this._activeDate, 1) :
132
- this.dateAdapter.addCalendarMonths(this._activeDate, 1);
133
- break;
134
- case ENTER:
135
- case SPACE:
136
- if (!this.dateFilter || this.dateFilter(this._activeDate)) {
137
- this.dateSelected(this.dateAdapter.getDate(this._activeDate));
138
- this.userSelection.emit();
139
- // Prevent unexpected default actions such as form submission.
140
- event.preventDefault();
141
- }
142
- return;
143
- default:
144
- // Don't prevent default or focus active cell on keys that we don't explicitly handle.
145
- return;
146
- }
147
- if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {
148
- this.activeDateChange.emit(this.activeDate);
149
- }
150
- this.focusActiveCell();
151
- // Prevent unexpected default actions such as form submission.
152
- event.preventDefault();
153
- }
154
- /** Initializes this month view. */
155
- init() {
156
- this.selectedDate = this.getDateInCurrentMonth(this.selected);
157
- this.todayDate = this.getDateInCurrentMonth(this.dateAdapter.today());
158
- this.monthLabel = this.dateAdapter.getMonthNames('short')[this.dateAdapter.getMonth(this.activeDate)];
159
- this.monthLabel = this.monthLabel[0].toLocaleUpperCase() + this.monthLabel.substr(1);
160
- const firstOfMonth = this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), this.dateAdapter.getMonth(this.activeDate));
161
- this.firstWeekOffset =
162
- (DAYS_PER_WEEK + this.dateAdapter.getDayOfWeek(firstOfMonth) -
163
- this.dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;
164
- this.createWeekCells();
165
- this.changeDetectorRef.markForCheck();
166
- }
167
- /** Focuses the active cell after the microtask queue is empty. */
168
- focusActiveCell() {
169
- this.mcCalendarBody.focusActiveCell();
170
- }
171
- /** Creates McCalendarCells for the dates in this month. */
172
- createWeekCells() {
173
- const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.activeDate);
174
- const dateNames = this.dateAdapter.getDateNames();
175
- this.weeks = [[]];
176
- for (let i = 0, cell = this.firstWeekOffset; i < daysInMonth; i++, cell++) {
177
- if (cell === DAYS_PER_WEEK) {
178
- this.weeks.push([]);
179
- cell = 0;
180
- }
181
- const date = this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), this.dateAdapter.getMonth(this.activeDate), i + 1);
182
- const enabled = this.shouldEnableDate(date);
183
- const ariaLabel = this.dateAdapter.format(date, this.dateFormats.dateA11yLabel);
184
- const cellClasses = this.dateClass ? this.dateClass(date) : undefined;
185
- this.weeks[this.weeks.length - 1]
186
- .push(new McCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses));
187
- }
188
- }
189
- /** Date filter for the month */
190
- shouldEnableDate(date) {
191
- return !!date &&
192
- (!this.dateFilter || this.dateFilter(date)) &&
193
- (!this.minDate || this.dateAdapter.compareDate(date, this.minDate) >= 0) &&
194
- (!this.maxDate || this.dateAdapter.compareDate(date, this.maxDate) <= 0);
195
- }
196
- /**
197
- * Gets the date in this month that the given Date falls on.
198
- * Returns null if the given Date is in another month.
199
- */
200
- getDateInCurrentMonth(date) {
201
- return date && this.hasSameMonthAndYear(date, this.activeDate) ?
202
- this.dateAdapter.getDate(date) : null;
203
- }
204
- /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */
205
- hasSameMonthAndYear(d1, d2) {
206
- return !!(d1 && d2 && this.dateAdapter.getMonth(d1) === this.dateAdapter.getMonth(d2) &&
207
- this.dateAdapter.getYear(d1) === this.dateAdapter.getYear(d2));
208
- }
209
- /**
210
- * @param obj The object to check.
211
- * @returns The given object if it is both a date instance and valid, otherwise null.
212
- */
213
- getValidDateOrNull(obj) {
214
- return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;
215
- }
216
- /** Determines whether the user has the RTL layout direction. */
217
- isRtl() {
218
- return this.dir && this.dir.value === 'rtl';
219
- }
220
- }
221
- /** @nocollapse */ McMonthView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: MC_DATE_FORMATS, optional: true }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
222
- /** @nocollapse */ McMonthView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McMonthView, selector: "mc-month-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", userSelection: "userSelection", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "mcCalendarBody", first: true, predicate: McCalendarBody, descendants: true }], exportAs: ["mcMonthView"], ngImport: i0, template: "<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [label]=\"monthLabel\"\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", components: [{ type: i3.McCalendarBody, selector: "[mc-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "activeCell", "cellAspectRatio"], outputs: ["selectedValueChange"], exportAs: ["mcCalendarBody"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McMonthView, decorators: [{
224
- type: Component,
225
- args: [{
226
- selector: 'mc-month-view',
227
- exportAs: 'mcMonthView',
228
- templateUrl: 'month-view.html',
229
- encapsulation: ViewEncapsulation.None,
230
- changeDetection: ChangeDetectionStrategy.OnPush
231
- }]
232
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
233
- type: Optional
234
- }, {
235
- type: Inject,
236
- args: [MC_DATE_FORMATS]
237
- }] }, { type: i1.DateAdapter, decorators: [{
238
- type: Optional
239
- }] }, { type: i2.Directionality, decorators: [{
240
- type: Optional
241
- }] }]; }, propDecorators: { activeDate: [{
242
- type: Input
243
- }], selected: [{
244
- type: Input
245
- }], minDate: [{
246
- type: Input
247
- }], maxDate: [{
248
- type: Input
249
- }], dateFilter: [{
250
- type: Input
251
- }], dateClass: [{
252
- type: Input
253
- }], selectedChange: [{
254
- type: Output
255
- }], userSelection: [{
256
- type: Output
257
- }], activeDateChange: [{
258
- type: Output
259
- }], mcCalendarBody: [{
260
- type: ViewChild,
261
- args: [McCalendarBody, { static: false }]
262
- }] } });
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvZGF0ZXBpY2tlci9tb250aC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9kYXRlcGlja2VyL21vbnRoLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQWlCLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUNILFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFDUixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUE0QixNQUFNLDJCQUEyQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUFHakUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0FBR3hCOzs7R0FHRztBQVFILE1BQU0sT0FBTyxXQUFXO0lBNkZwQixZQUNZLGlCQUFvQyxFQUNVLFdBQTBCLEVBQzdELFdBQTJCLEVBQzFCLEdBQW9CO1FBSGhDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUM3RCxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUF6QzVDLHlDQUF5QztRQUN0QixtQkFBYyxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXpGLHVDQUF1QztRQUNwQixrQkFBYSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWhGLHdDQUF3QztRQUNyQixxQkFBZ0IsR0FBb0IsSUFBSSxZQUFZLEVBQUssQ0FBQztRQXFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsTUFBTSwwQkFBMEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuRDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLE1BQU0sMEJBQTBCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN2RDtRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEUsd0ZBQXdGO1FBQ3hGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVE7YUFDbkIsS0FBSyxDQUFDLGNBQWMsQ0FBQzthQUNyQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQXhIRDs7T0FFRztJQUNILElBQ0ksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsS0FBUTtRQUNuQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0csSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQWU7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxJQUNJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEtBQWU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUEyRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsWUFBWSxDQUFDLElBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFcEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrRkFBa0Y7SUFDbEYseUJBQXlCLENBQUMsS0FBb0I7UUFDMUMsNkZBQTZGO1FBQzdGLHdGQUF3RjtRQUN4Riw0RkFBNEY7UUFFNUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsdUNBQXVDO1FBQ3ZDLFFBQVEsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNuQixLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRixNQUFNO1lBQ1YsS0FBSyxXQUFXO2dCQUNaLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckYsTUFBTTtZQUNWLEtBQUssUUFBUTtnQkFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekUsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLE1BQU07WUFDVixLQUFLLElBQUk7Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FDOUMsSUFBSSxDQUFDLFdBQVcsRUFDaEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDakQsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxHQUFHO2dCQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQzlDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3RHLENBQUM7Z0JBQ0YsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELE1BQU07WUFDVixLQUFLLFNBQVM7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELE1BQU07WUFDVixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssS0FBSztnQkFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDMUIsOERBQThEO29CQUM5RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQzFCO2dCQUVELE9BQU87WUFDWDtnQkFDSSxzRkFBc0Y7Z0JBQ3RGLE9BQU87U0FDZDtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2Qiw4REFBOEQ7UUFDOUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsSUFBSTtRQUNBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUV0RyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVyRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzdDLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZTtZQUNoQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUU5RCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsZUFBZTtRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELDJEQUEyRDtJQUNuRCxlQUFlO1FBQ25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDdkUsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNaO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDekMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUMxQyxDQUFDLEdBQUcsQ0FBQyxDQUNSLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRXRFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM1QixJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0wsQ0FBQztJQUVELGdDQUFnQztJQUN4QixnQkFBZ0IsQ0FBQyxJQUFPO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLElBQUk7WUFDVCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFCQUFxQixDQUFDLElBQWM7UUFDeEMsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCwrRkFBK0Y7SUFDdkYsbUJBQW1CLENBQUMsRUFBWSxFQUFFLEVBQVk7UUFDbEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxHQUFRO1FBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoRyxDQUFDO0lBRUQsZ0VBQWdFO0lBQ3hELEtBQUs7UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDO0lBQ2hELENBQUM7OzRIQXhTUSxXQUFXLG1EQStGSSxlQUFlO2dIQS9GOUIsV0FBVyxnWEFrRVQsY0FBYywyRUNqSDdCLG13QkFvQkE7NEZEMkJhLFdBQVc7a0JBUHZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSxhQUFhO29CQUN2QixXQUFXLEVBQUUsaUJBQWlCO29CQUM5QixhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFnR1EsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzswQkFDbEMsUUFBUTs7MEJBQ1IsUUFBUTs0Q0E1RlQsVUFBVTtzQkFEYixLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsT0FBTztzQkFEVixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSztnQkFVRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR2EsY0FBYztzQkFBaEMsTUFBTTtnQkFHWSxhQUFhO3NCQUEvQixNQUFNO2dCQUdZLGdCQUFnQjtzQkFBbEMsTUFBTTtnQkFHcUMsY0FBYztzQkFBekQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6bm8tbWFnaWMtbnVtYmVyc1xuaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQ19EQVRFX0ZPUk1BVFMsIE1jRGF0ZUZvcm1hdHMgfSBmcm9tICdAcHRzZWN1cml0eS9jZGsvZGF0ZXRpbWUnO1xuaW1wb3J0IHtcbiAgICBET1dOX0FSUk9XLFxuICAgIEVORCxcbiAgICBFTlRFUixcbiAgICBIT01FLFxuICAgIExFRlRfQVJST1csXG4gICAgUEFHRV9ET1dOLFxuICAgIFBBR0VfVVAsXG4gICAgUklHSFRfQVJST1csXG4gICAgVVBfQVJST1csXG4gICAgU1BBQ0Vcbn0gZnJvbSAnQHB0c2VjdXJpdHkvY2RrL2tleWNvZGVzJztcblxuaW1wb3J0IHsgTWNDYWxlbmRhckJvZHksIE1jQ2FsZW5kYXJDZWxsLCBNY0NhbGVuZGFyQ2VsbENzc0NsYXNzZXMgfSBmcm9tICcuL2NhbGVuZGFyLWJvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yIH0gZnJvbSAnLi9kYXRlcGlja2VyLWVycm9ycyc7XG5cblxuY29uc3QgREFZU19QRVJfV0VFSyA9IDc7XG5cblxuLyoqXG4gKiBBbiBpbnRlcm5hbCBjb21wb25lbnQgdXNlZCB0byBkaXNwbGF5IGEgc2luZ2xlIG1vbnRoIGluIHRoZSBkYXRlcGlja2VyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21jLW1vbnRoLXZpZXcnLFxuICAgIGV4cG9ydEFzOiAnbWNNb250aFZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnbW9udGgtdmlldy5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1jTW9udGhWaWV3PEQ+IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqXG4gICAgICogVGhlIGRhdGUgdG8gZGlzcGxheSBpbiB0aGlzIG1vbnRoIHZpZXcgKGV2ZXJ5dGhpbmcgb3RoZXIgdGhhbiB0aGUgbW9udGggYW5kIHllYXIgaXMgaWdub3JlZCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWN0aXZlRGF0ZSgpOiBEIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURhdGU7XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2ZURhdGUodmFsdWU6IEQpIHtcbiAgICAgICAgY29uc3Qgb2xkQWN0aXZlRGF0ZSA9IHRoaXMuX2FjdGl2ZURhdGU7XG4gICAgICAgIGNvbnN0IHZhbGlkRGF0ZSA9IHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKSB8fCB0aGlzLmRhdGVBZGFwdGVyLnRvZGF5KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmNsYW1wRGF0ZSh2YWxpZERhdGUsIHRoaXMubWluRGF0ZSwgdGhpcy5tYXhEYXRlKTtcblxuICAgICAgICBpZiAoIXRoaXMuaGFzU2FtZU1vbnRoQW5kWWVhcihvbGRBY3RpdmVEYXRlLCB0aGlzLl9hY3RpdmVEYXRlKSkge1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGVkKCk6IEQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLmRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5nZXREYXRlSW5DdXJyZW50TW9udGgodGhpcy5fc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgbWluaW11bSBzZWxlY3RhYmxlIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbWluRGF0ZSgpOiBEIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5EYXRlO1xuICAgIH1cblxuICAgIHNldCBtaW5EYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9taW5EYXRlID0gdGhpcy5nZXRWYWxpZERhdGVPck51bGwodGhpcy5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgbWF4aW11bSBzZWxlY3RhYmxlIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbWF4RGF0ZSgpOiBEIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhEYXRlO1xuICAgIH1cblxuICAgIHNldCBtYXhEYXRlKHZhbHVlOiBEIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9tYXhEYXRlID0gdGhpcy5nZXRWYWxpZERhdGVPck51bGwodGhpcy5kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB1c2VkIHRvIGZpbHRlciB3aGljaCBkYXRlcyBhcmUgc2VsZWN0YWJsZS4gKi9cbiAgICBASW5wdXQoKSBkYXRlRmlsdGVyOiAoZGF0ZTogRCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGFkZCBjdXN0b20gQ1NTIGNsYXNzZXMgdG8gZGF0ZXMuICovXG4gICAgQElucHV0KCkgZGF0ZUNsYXNzOiAoZGF0ZTogRCkgPT4gTWNDYWxlbmRhckNlbGxDc3NDbGFzc2VzO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gYSBuZXcgZGF0ZSBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPEQgfCBudWxsPigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gYW55IGRhdGUgaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGFueSBkYXRlIGlzIGFjdGl2YXRlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYWN0aXZlRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xuXG4gICAgLyoqIFRoZSBib2R5IG9mIGNhbGVuZGFyIHRhYmxlICovXG4gICAgQFZpZXdDaGlsZChNY0NhbGVuZGFyQm9keSwge3N0YXRpYzogZmFsc2V9KSBtY0NhbGVuZGFyQm9keTogTWNDYWxlbmRhckJvZHk7XG5cbiAgICAvKiogVGhlIGxhYmVsIGZvciB0aGlzIG1vbnRoIChlLmcuIFwiSmFudWFyeSAyMDE3XCIpLiAqL1xuICAgIG1vbnRoTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBHcmlkIG9mIGNhbGVuZGFyIGNlbGxzIHJlcHJlc2VudGluZyB0aGUgZGF0ZXMgb2YgdGhlIG1vbnRoLiAqL1xuICAgIHdlZWtzOiBNY0NhbGVuZGFyQ2VsbFtdW107XG5cbiAgICAvKiogVGhlIG51bWJlciBvZiBibGFuayBjZWxscyBpbiB0aGUgZmlyc3Qgcm93IGJlZm9yZSB0aGUgMXN0IG9mIHRoZSBtb250aC4gKi9cbiAgICBmaXJzdFdlZWtPZmZzZXQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRlIG9mIHRoZSBtb250aCB0aGF0IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgRGF0ZSBmYWxscyBvbi5cbiAgICAgKiBOdWxsIGlmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgRGF0ZSBpcyBpbiBhbm90aGVyIG1vbnRoLlxuICAgICAqL1xuICAgIHNlbGVjdGVkRGF0ZTogbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBUaGUgZGF0ZSBvZiB0aGUgbW9udGggdGhhdCB0b2RheSBmYWxscyBvbi4gTnVsbCBpZiB0b2RheSBpcyBpbiBhbm90aGVyIG1vbnRoLiAqL1xuICAgIHRvZGF5RGF0ZTogbnVtYmVyIHwgbnVsbDtcblxuICAgIC8qKiBUaGUgbmFtZXMgb2YgdGhlIHdlZWtkYXlzLiAqL1xuICAgIHdlZWtkYXlzOiB7IGxvbmc6IHN0cmluZzsgbmFycm93OiBzdHJpbmcgfVtdO1xuICAgIHByaXZhdGUgX2FjdGl2ZURhdGU6IEQ7XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQgfCBudWxsO1xuICAgIHByaXZhdGUgX21pbkRhdGU6IEQgfCBudWxsO1xuICAgIHByaXZhdGUgX21heERhdGU6IEQgfCBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1DX0RBVEVfRk9STUFUUykgcHJpdmF0ZSByZWFkb25seSBkYXRlRm9ybWF0czogTWNEYXRlRm9ybWF0cyxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHVibGljIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaXI/OiBEaXJlY3Rpb25hbGl0eVxuICAgICkge1xuXG4gICAgICAgIGlmICghdGhpcy5kYXRlQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0RhdGVBZGFwdGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdHMpIHtcbiAgICAgICAgICAgIHRocm93IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yKCdNQ19EQVRFX0ZPUk1BVFMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gdGhpcy5kYXRlQWRhcHRlci5nZXRGaXJzdERheU9mV2VlaygpO1xuICAgICAgICBjb25zdCBuYXJyb3dXZWVrZGF5cyA9IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF5T2ZXZWVrTmFtZXMoJ3Nob3J0Jyk7XG4gICAgICAgIGNvbnN0IGxvbmdXZWVrZGF5cyA9IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF5T2ZXZWVrTmFtZXMoJ2xvbmcnKTtcblxuICAgICAgICAvLyBSb3RhdGUgdGhlIGxhYmVscyBmb3IgZGF5cyBvZiB0aGUgd2VlayBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICAgIGNvbnN0IHdlZWtkYXlzID0gbG9uZ1dlZWtkYXlzLm1hcCgobG9uZywgaSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgbG9uZywgbmFycm93OiBuYXJyb3dXZWVrZGF5c1tpXSB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy53ZWVrZGF5cyA9IHdlZWtkYXlzXG4gICAgICAgICAgICAuc2xpY2UoZmlyc3REYXlPZldlZWspXG4gICAgICAgICAgICAuY29uY2F0KHdlZWtkYXlzLnNsaWNlKDAsIGZpcnN0RGF5T2ZXZWVrKSk7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIudG9kYXkoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBIYW5kbGVzIHdoZW4gYSBuZXcgZGF0ZSBpcyBzZWxlY3RlZC4gKi9cbiAgICBkYXRlU2VsZWN0ZWQoZGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSAhPT0gZGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRZZWFyID0gdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gdGhpcy5kYXRlQWRhcHRlci5nZXRNb250aCh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlID0gdGhpcy5kYXRlQWRhcHRlci5jcmVhdGVEYXRlKHNlbGVjdGVkWWVhciwgc2VsZWN0ZWRNb250aCwgZGF0ZSk7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdChzZWxlY3RlZERhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VyU2VsZWN0aW9uLmVtaXQoKTtcbiAgICB9XG5cbiAgICAvKiogSGFuZGxlcyBrZXlkb3duIGV2ZW50cyBvbiB0aGUgY2FsZW5kYXIgYm9keSB3aGVuIGNhbGVuZGFyIGlzIGluIG1vbnRoIHZpZXcuICovXG4gICAgaGFuZGxlQ2FsZW5kYXJCb2R5S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPKG1tYWxlcmJhKTogV2UgY3VycmVudGx5IGFsbG93IGtleWJvYXJkIG5hdmlnYXRpb24gdG8gZGlzYWJsZWQgZGF0ZXMsIGJ1dCBqdXN0IHByZXZlbnRcbiAgICAgICAgLy8gZGlzYWJsZWQgb25lcyBmcm9tIGJlaW5nIHNlbGVjdGVkLiBUaGlzIG1heSBub3QgYmUgaWRlYWwsIHdlIHNob3VsZCBsb29rIGludG8gd2hldGhlclxuICAgICAgICAvLyBuYXZpZ2F0aW9uIHNob3VsZCBza2lwIG92ZXIgZGlzYWJsZWQgZGF0ZXMsIGFuZCBpZiBzbywgaG93IHRvIGltcGxlbWVudCB0aGF0IGVmZmljaWVudGx5LlxuXG4gICAgICAgIGNvbnN0IG9sZEFjdGl2ZURhdGUgPSB0aGlzLl9hY3RpdmVEYXRlO1xuICAgICAgICBjb25zdCBpc1J0bCA9IHRoaXMuaXNSdGwoKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGVwcmVjYXRpb25cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhckRheXModGhpcy5fYWN0aXZlRGF0ZSwgaXNSdGwgPyAxIDogLTEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBSSUdIVF9BUlJPVzpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyh0aGlzLl9hY3RpdmVEYXRlLCBpc1J0bCA/IC0xIDogMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKHRoaXMuX2FjdGl2ZURhdGUsIC03KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRE9XTl9BUlJPVzpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyh0aGlzLl9hY3RpdmVEYXRlLCA3KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSE9NRTpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgMSAtIHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLl9hY3RpdmVEYXRlKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEVORDpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyRGF5cyhcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWN0aXZlRGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0TnVtRGF5c0luTW9udGgodGhpcy5fYWN0aXZlRGF0ZSkgLSB0aGlzLmRhdGVBZGFwdGVyLmdldERhdGUodGhpcy5fYWN0aXZlRGF0ZSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUEFHRV9VUDpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSBldmVudC5hbHRLZXkgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnModGhpcy5fYWN0aXZlRGF0ZSwgLTEpIDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhck1vbnRocyh0aGlzLl9hY3RpdmVEYXRlLCAtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBBR0VfRE9XTjpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSBldmVudC5hbHRLZXkgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnModGhpcy5fYWN0aXZlRGF0ZSwgMSkgOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyTW9udGhzKHRoaXMuX2FjdGl2ZURhdGUsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGVGaWx0ZXIgfHwgdGhpcy5kYXRlRmlsdGVyKHRoaXMuX2FjdGl2ZURhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkKHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLl9hY3RpdmVEYXRlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGlvbi5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgdW5leHBlY3RlZCBkZWZhdWx0IGFjdGlvbnMgc3VjaCBhcyBmb3JtIHN1Ym1pc3Npb24uXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBwcmV2ZW50IGRlZmF1bHQgb3IgZm9jdXMgYWN0aXZlIGNlbGwgb24ga2V5cyB0aGF0IHdlIGRvbid0IGV4cGxpY2l0bHkgaGFuZGxlLlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKG9sZEFjdGl2ZURhdGUsIHRoaXMuYWN0aXZlRGF0ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlRGF0ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvY3VzQWN0aXZlQ2VsbCgpO1xuICAgICAgICAvLyBQcmV2ZW50IHVuZXhwZWN0ZWQgZGVmYXVsdCBhY3Rpb25zIHN1Y2ggYXMgZm9ybSBzdWJtaXNzaW9uLlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8qKiBJbml0aWFsaXplcyB0aGlzIG1vbnRoIHZpZXcuICovXG4gICAgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLmdldERhdGVJbkN1cnJlbnRNb250aCh0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy50b2RheURhdGUgPSB0aGlzLmdldERhdGVJbkN1cnJlbnRNb250aCh0aGlzLmRhdGVBZGFwdGVyLnRvZGF5KCkpO1xuICAgICAgICB0aGlzLm1vbnRoTGFiZWwgPSB0aGlzLmRhdGVBZGFwdGVyLmdldE1vbnRoTmFtZXMoJ3Nob3J0JylbdGhpcy5kYXRlQWRhcHRlci5nZXRNb250aCh0aGlzLmFjdGl2ZURhdGUpXTtcblxuICAgICAgICB0aGlzLm1vbnRoTGFiZWwgPSB0aGlzLm1vbnRoTGFiZWxbMF0udG9Mb2NhbGVVcHBlckNhc2UoKSArIHRoaXMubW9udGhMYWJlbC5zdWJzdHIoMSk7XG5cbiAgICAgICAgY29uc3QgZmlyc3RPZk1vbnRoID0gdGhpcy5kYXRlQWRhcHRlci5jcmVhdGVEYXRlKFxuICAgICAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuYWN0aXZlRGF0ZSksXG4gICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmdldE1vbnRoKHRoaXMuYWN0aXZlRGF0ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZpcnN0V2Vla09mZnNldCA9XG4gICAgICAgICAgICAoREFZU19QRVJfV0VFSyArIHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF5T2ZXZWVrKGZpcnN0T2ZNb250aCkgLVxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0Rmlyc3REYXlPZldlZWsoKSkgJSBEQVlTX1BFUl9XRUVLO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlV2Vla0NlbGxzKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIGFjdGl2ZSBjZWxsIGFmdGVyIHRoZSBtaWNyb3Rhc2sgcXVldWUgaXMgZW1wdHkuICovXG4gICAgZm9jdXNBY3RpdmVDZWxsKCkge1xuICAgICAgICB0aGlzLm1jQ2FsZW5kYXJCb2R5LmZvY3VzQWN0aXZlQ2VsbCgpO1xuICAgIH1cblxuICAgIC8qKiBDcmVhdGVzIE1jQ2FsZW5kYXJDZWxscyBmb3IgdGhlIGRhdGVzIGluIHRoaXMgbW9udGguICovXG4gICAgcHJpdmF0ZSBjcmVhdGVXZWVrQ2VsbHMoKSB7XG4gICAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gdGhpcy5kYXRlQWRhcHRlci5nZXROdW1EYXlzSW5Nb250aCh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICBjb25zdCBkYXRlTmFtZXMgPSB0aGlzLmRhdGVBZGFwdGVyLmdldERhdGVOYW1lcygpO1xuXG4gICAgICAgIHRoaXMud2Vla3MgPSBbW11dO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBjZWxsID0gdGhpcy5maXJzdFdlZWtPZmZzZXQ7IGkgPCBkYXlzSW5Nb250aDsgaSsrLCBjZWxsKyspIHtcbiAgICAgICAgICAgIGlmIChjZWxsID09PSBEQVlTX1BFUl9XRUVLKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53ZWVrcy5wdXNoKFtdKTtcbiAgICAgICAgICAgICAgICBjZWxsID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuY3JlYXRlRGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmdldE1vbnRoKHRoaXMuYWN0aXZlRGF0ZSksXG4gICAgICAgICAgICAgICAgaSArIDFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkID0gdGhpcy5zaG91bGRFbmFibGVEYXRlKGRhdGUpO1xuICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsID0gdGhpcy5kYXRlQWRhcHRlci5mb3JtYXQoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0cy5kYXRlQTExeUxhYmVsKTtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxDbGFzc2VzID0gdGhpcy5kYXRlQ2xhc3MgPyB0aGlzLmRhdGVDbGFzcyhkYXRlKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgdGhpcy53ZWVrc1t0aGlzLndlZWtzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgLnB1c2gobmV3IE1jQ2FsZW5kYXJDZWxsKGkgKyAxLCBkYXRlTmFtZXNbaV0sIGFyaWFMYWJlbCwgZW5hYmxlZCwgY2VsbENsYXNzZXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEYXRlIGZpbHRlciBmb3IgdGhlIG1vbnRoICovXG4gICAgcHJpdmF0ZSBzaG91bGRFbmFibGVEYXRlKGRhdGU6IEQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhZGF0ZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmRhdGVGaWx0ZXIgfHwgdGhpcy5kYXRlRmlsdGVyKGRhdGUpKSAmJlxuICAgICAgICAgICAgKCF0aGlzLm1pbkRhdGUgfHwgdGhpcy5kYXRlQWRhcHRlci5jb21wYXJlRGF0ZShkYXRlLCB0aGlzLm1pbkRhdGUpID49IDApICYmXG4gICAgICAgICAgICAoIXRoaXMubWF4RGF0ZSB8fCB0aGlzLmRhdGVBZGFwdGVyLmNvbXBhcmVEYXRlKGRhdGUsIHRoaXMubWF4RGF0ZSkgPD0gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF0ZSBpbiB0aGlzIG1vbnRoIHRoYXQgdGhlIGdpdmVuIERhdGUgZmFsbHMgb24uXG4gICAgICogUmV0dXJucyBudWxsIGlmIHRoZSBnaXZlbiBEYXRlIGlzIGluIGFub3RoZXIgbW9udGguXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXREYXRlSW5DdXJyZW50TW9udGgoZGF0ZTogRCB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGRhdGUgJiYgdGhpcy5oYXNTYW1lTW9udGhBbmRZZWFyKGRhdGUsIHRoaXMuYWN0aXZlRGF0ZSkgP1xuICAgICAgICAgICAgdGhpcy5kYXRlQWRhcHRlci5nZXREYXRlKGRhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIDIgZGF0ZXMgYXJlIG5vbi1udWxsIGFuZCBmYWxsIHdpdGhpbiB0aGUgc2FtZSBtb250aCBvZiB0aGUgc2FtZSB5ZWFyLiAqL1xuICAgIHByaXZhdGUgaGFzU2FtZU1vbnRoQW5kWWVhcihkMTogRCB8IG51bGwsIGQyOiBEIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEoZDEgJiYgZDIgJiYgdGhpcy5kYXRlQWRhcHRlci5nZXRNb250aChkMSkgPT09IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0TW9udGgoZDIpICYmXG4gICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIoZDEpID09PSB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIoZDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgVGhlIGdpdmVuIG9iamVjdCBpZiBpdCBpcyBib3RoIGEgZGF0ZSBpbnN0YW5jZSBhbmQgdmFsaWQsIG90aGVyd2lzZSBudWxsLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VmFsaWREYXRlT3JOdWxsKG9iajogYW55KTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKHRoaXMuZGF0ZUFkYXB0ZXIuaXNEYXRlSW5zdGFuY2Uob2JqKSAmJiB0aGlzLmRhdGVBZGFwdGVyLmlzVmFsaWQob2JqKSkgPyBvYmogOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHRoZSBSVEwgbGF5b3V0IGRpcmVjdGlvbi4gKi9cbiAgICBwcml2YXRlIGlzUnRsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXIgJiYgdGhpcy5kaXIudmFsdWUgPT09ICdydGwnO1xuICAgIH1cbn1cbiIsIjx0YWJsZSBjbGFzcz1cIm1jLWNhbGVuZGFyX190YWJsZVwiPlxuICAgIDx0aGVhZCBjbGFzcz1cIm1jLWNhbGVuZGFyX190YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla2RheXNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImRheS5sb25nXCI+e3tkYXkubmFycm93fX08L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtYy1jYWxlbmRhcl9fdGFibGUtaGVhZGVyLWRpdmlkZXJcIiBjb2xzcGFuPVwiN1wiPjwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHkgbWMtY2FsZW5kYXItYm9keVxuICAgICAgICAgICBbbGFiZWxdPVwibW9udGhMYWJlbFwiXG4gICAgICAgICAgIFtyb3dzXT1cIndlZWtzXCJcbiAgICAgICAgICAgW3RvZGF5VmFsdWVdPVwidG9kYXlEYXRlIVwiXG4gICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInNlbGVjdGVkRGF0ZSFcIlxuICAgICAgICAgICBbbGFiZWxNaW5SZXF1aXJlZENlbGxzXT1cIjNcIlxuICAgICAgICAgICBbYWN0aXZlQ2VsbF09XCJkYXRlQWRhcHRlci5nZXREYXRlKGFjdGl2ZURhdGUpIC0gMVwiXG4gICAgICAgICAgIChzZWxlY3RlZFZhbHVlQ2hhbmdlKT1cImRhdGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlQ2FsZW5kYXJCb2R5S2V5ZG93bigkZXZlbnQpXCI+XG4gICAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
@@ -1,224 +0,0 @@
1
- // tslint:disable:no-magic-numbers
2
- import { Directionality } from '@angular/cdk/bidi';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
4
- import { DateAdapter } from '@ptsecurity/cdk/datetime';
5
- import { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW, SPACE } from '@ptsecurity/cdk/keycodes';
6
- import { McCalendarBody, McCalendarCell } from './calendar-body.component';
7
- import { createMissingDateImplError } from './datepicker-errors';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ptsecurity/cdk/datetime";
10
- import * as i2 from "@angular/cdk/bidi";
11
- import * as i3 from "./calendar-body.component";
12
- export const yearsPerPage = 24;
13
- export const yearsPerRow = 4;
14
- /**
15
- * An internal component used to display a year selector in the datepicker.
16
- * @docs-private
17
- */
18
- export class McMultiYearView {
19
- constructor(changeDetectorRef, dateAdapter, dir) {
20
- this.changeDetectorRef = changeDetectorRef;
21
- this.dateAdapter = dateAdapter;
22
- this.dir = dir;
23
- /** Emits when a new year is selected. */
24
- this.selectedChange = new EventEmitter();
25
- /** Emits the selected year. This doesn't imply a change on the selected date */
26
- this.yearSelected = new EventEmitter();
27
- /** Emits when any date is activated. */
28
- this.activeDateChange = new EventEmitter();
29
- if (!this.dateAdapter) {
30
- throw createMissingDateImplError('DateAdapter');
31
- }
32
- this._activeDate = this.dateAdapter.today();
33
- }
34
- /** The date to display in this multi-year view (everything other than the year is ignored). */
35
- get activeDate() {
36
- return this._activeDate;
37
- }
38
- set activeDate(value) {
39
- const oldActiveDate = this._activeDate;
40
- const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();
41
- this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);
42
- if (Math.floor(this.dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==
43
- Math.floor(this.dateAdapter.getYear(this._activeDate) / yearsPerPage)) {
44
- this.init();
45
- }
46
- }
47
- /** The currently selected date. */
48
- get selected() {
49
- return this._selected;
50
- }
51
- set selected(value) {
52
- this._selected = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
53
- this.selectedYear = this._selected && this.dateAdapter.getYear(this._selected);
54
- }
55
- /** The minimum selectable date. */
56
- get minDate() {
57
- return this._minDate;
58
- }
59
- set minDate(value) {
60
- this._minDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
61
- }
62
- /** The maximum selectable date. */
63
- get maxDate() {
64
- return this._maxDate;
65
- }
66
- set maxDate(value) {
67
- this._maxDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value));
68
- }
69
- ngAfterContentInit() {
70
- this.init();
71
- }
72
- /** Initializes this multi-year view. */
73
- init() {
74
- this.todayYear = this.dateAdapter.getYear(this.dateAdapter.today());
75
- const activeYear = this.dateAdapter.getYear(this._activeDate);
76
- const activeOffset = activeYear % yearsPerPage;
77
- this.years = [];
78
- for (let i = 0, row = []; i < yearsPerPage; i++) {
79
- row.push(activeYear - activeOffset + i);
80
- if (row.length === yearsPerRow) {
81
- this.years.push(row.map((year) => this.createCellForYear(year)));
82
- row = [];
83
- }
84
- }
85
- this.changeDetectorRef.markForCheck();
86
- }
87
- /** Handles when a new year is selected. */
88
- onYearSelected(year) {
89
- this.yearSelected.emit(this.dateAdapter.createDate(year));
90
- const month = this.dateAdapter.getMonth(this.activeDate);
91
- const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.dateAdapter.createDate(year, month));
92
- this.selectedChange.emit(this.dateAdapter.createDate(year, month, Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth)));
93
- }
94
- /** Handles keydown events on the calendar body when calendar is in multi-year view. */
95
- handleCalendarBodyKeydown(event) {
96
- // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent
97
- // disabled ones from being selected. This may not be ideal, we should look into whether
98
- // navigation should skip over disabled dates, and if so, how to implement that efficiently.
99
- const oldActiveDate = this._activeDate;
100
- const isRtl = this.isRtl();
101
- // tslint:disable-next-line:deprecation
102
- switch (event.keyCode) {
103
- case LEFT_ARROW:
104
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);
105
- break;
106
- case RIGHT_ARROW:
107
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);
108
- break;
109
- case UP_ARROW:
110
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);
111
- break;
112
- case DOWN_ARROW:
113
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);
114
- break;
115
- case HOME:
116
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -this.dateAdapter.getYear(this._activeDate) % yearsPerPage);
117
- break;
118
- case END:
119
- this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - this.dateAdapter.getYear(this._activeDate) % yearsPerPage - 1);
120
- break;
121
- case PAGE_UP:
122
- this.activeDate =
123
- this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);
124
- break;
125
- case PAGE_DOWN:
126
- this.activeDate =
127
- this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);
128
- break;
129
- case ENTER:
130
- case SPACE:
131
- this.onYearSelected(this.dateAdapter.getYear(this._activeDate));
132
- break;
133
- default:
134
- // Don't prevent default or focus active cell on keys that we don't explicitly handle.
135
- return;
136
- }
137
- if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {
138
- this.activeDateChange.emit(this.activeDate);
139
- }
140
- this.focusActiveCell();
141
- // Prevent unexpected default actions such as form submission.
142
- event.preventDefault();
143
- }
144
- getActiveCell() {
145
- return this.dateAdapter.getYear(this.activeDate) % yearsPerPage;
146
- }
147
- /** Focuses the active cell after the microtask queue is empty. */
148
- focusActiveCell() {
149
- this.mcCalendarBody.focusActiveCell();
150
- }
151
- /** Creates an McCalendarCell for the given year. */
152
- createCellForYear(year) {
153
- const yearName = this.dateAdapter.getYearName(this.dateAdapter.createDate(year));
154
- return new McCalendarCell(year, yearName, yearName, this.shouldEnableYear(year));
155
- }
156
- /** Whether the given year is enabled. */
157
- shouldEnableYear(year) {
158
- // disable if the year is greater than maxDate lower than minDate
159
- if (year === undefined || year === null ||
160
- (this.maxDate && year > this.dateAdapter.getYear(this.maxDate)) ||
161
- (this.minDate && year < this.dateAdapter.getYear(this.minDate))) {
162
- return false;
163
- }
164
- // enable if it reaches here and there's no filter defined
165
- if (!this.dateFilter) {
166
- return true;
167
- }
168
- const firstOfYear = this.dateAdapter.createDate(year);
169
- // If any date in the year is enabled count the year as enabled.
170
- for (let date = firstOfYear; this.dateAdapter.getYear(date) === year; date = this.dateAdapter.addCalendarDays(date, 1)) {
171
- if (this.dateFilter(date)) {
172
- return true;
173
- }
174
- }
175
- return false;
176
- }
177
- /**
178
- * @param obj The object to check.
179
- * @returns The given object if it is both a date instance and valid, otherwise null.
180
- */
181
- getValidDateOrNull(obj) {
182
- return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;
183
- }
184
- /** Determines whether the user has the RTL layout direction. */
185
- isRtl() {
186
- return this.dir && this.dir.value === 'rtl';
187
- }
188
- }
189
- /** @nocollapse */ McMultiYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McMultiYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
190
- /** @nocollapse */ McMultiYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McMultiYearView, selector: "mc-multi-year-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "mcCalendarBody", first: true, predicate: McCalendarBody, descendants: true }], exportAs: ["mcMultiYearView"], ngImport: i0, template: "<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"years\"\n [todayValue]=\"todayYear\"\n [selectedValue]=\"selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"getActiveCell()\"\n (selectedValueChange)=\"onYearSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", components: [{ type: i3.McCalendarBody, selector: "[mc-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "activeCell", "cellAspectRatio"], outputs: ["selectedValueChange"], exportAs: ["mcCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McMultiYearView, decorators: [{
192
- type: Component,
193
- args: [{
194
- selector: 'mc-multi-year-view',
195
- exportAs: 'mcMultiYearView',
196
- templateUrl: 'multi-year-view.html',
197
- encapsulation: ViewEncapsulation.None,
198
- changeDetection: ChangeDetectionStrategy.OnPush
199
- }]
200
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.DateAdapter, decorators: [{
201
- type: Optional
202
- }] }, { type: i2.Directionality, decorators: [{
203
- type: Optional
204
- }] }]; }, propDecorators: { activeDate: [{
205
- type: Input
206
- }], selected: [{
207
- type: Input
208
- }], minDate: [{
209
- type: Input
210
- }], maxDate: [{
211
- type: Input
212
- }], dateFilter: [{
213
- type: Input
214
- }], selectedChange: [{
215
- type: Output
216
- }], yearSelected: [{
217
- type: Output
218
- }], activeDateChange: [{
219
- type: Output
220
- }], mcCalendarBody: [{
221
- type: ViewChild,
222
- args: [McCalendarBody, { static: false }]
223
- }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGkteWVhci12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9kYXRlcGlja2VyL211bHRpLXllYXItdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvZGF0ZXBpY2tlci9tdWx0aS15ZWFyLXZpZXcuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUNILFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFDUixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBR2pFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFFL0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQUc3Qjs7O0dBR0c7QUFRSCxNQUFNLE9BQU8sZUFBZTtJQThFeEIsWUFDcUIsaUJBQW9DLEVBQ2xDLFdBQTJCLEVBQzFCLEdBQW9CO1FBRnZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbEMsZ0JBQVcs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ZTtvSEFBZixlQUFlLDJWQStEYixjQUFjLCtFQy9HN0IsMmxCQWlCQTs0RkQrQmEsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsc0JBQXNCO29CQUNuQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFpRlEsUUFBUTs7MEJBQ1IsUUFBUTs0Q0E5RVQsVUFBVTtzQkFEYixLQUFLO2dCQW1CRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsT0FBTztzQkFEVixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSztnQkFVRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdhLGNBQWM7c0JBQWhDLE1BQU07Z0JBR1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFHWSxnQkFBZ0I7c0JBQWxDLE1BQU07Z0JBR3FDLGNBQWM7c0JBQXpELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlOm5vLW1hZ2ljLW51bWJlcnNcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQHB0c2VjdXJpdHkvY2RrL2RhdGV0aW1lJztcbmltcG9ydCB7XG4gICAgRE9XTl9BUlJPVyxcbiAgICBFTkQsXG4gICAgRU5URVIsXG4gICAgSE9NRSxcbiAgICBMRUZUX0FSUk9XLFxuICAgIFBBR0VfRE9XTixcbiAgICBQQUdFX1VQLFxuICAgIFJJR0hUX0FSUk9XLFxuICAgIFVQX0FSUk9XLFxuICAgIFNQQUNFXG59IGZyb20gJ0BwdHNlY3VyaXR5L2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IE1jQ2FsZW5kYXJCb2R5LCBNY0NhbGVuZGFyQ2VsbCB9IGZyb20gJy4vY2FsZW5kYXItYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IgfSBmcm9tICcuL2RhdGVwaWNrZXItZXJyb3JzJztcblxuXG5leHBvcnQgY29uc3QgeWVhcnNQZXJQYWdlID0gMjQ7XG5cbmV4cG9ydCBjb25zdCB5ZWFyc1BlclJvdyA9IDQ7XG5cblxuLyoqXG4gKiBBbiBpbnRlcm5hbCBjb21wb25lbnQgdXNlZCB0byBkaXNwbGF5IGEgeWVhciBzZWxlY3RvciBpbiB0aGUgZGF0ZXBpY2tlci5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYy1tdWx0aS15ZWFyLXZpZXcnLFxuICAgIGV4cG9ydEFzOiAnbWNNdWx0aVllYXJWaWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJ211bHRpLXllYXItdmlldy5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1jTXVsdGlZZWFyVmlldzxEPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKiBUaGUgZGF0ZSB0byBkaXNwbGF5IGluIHRoaXMgbXVsdGkteWVhciB2aWV3IChldmVyeXRoaW5nIG90aGVyIHRoYW4gdGhlIHllYXIgaXMgaWdub3JlZCkuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgYWN0aXZlRGF0ZSgpOiBEIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZURhdGU7XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2ZURhdGUodmFsdWU6IEQpIHtcbiAgICAgICAgY29uc3Qgb2xkQWN0aXZlRGF0ZSA9IHRoaXMuX2FjdGl2ZURhdGU7XG4gICAgICAgIGNvbnN0IHZhbGlkRGF0ZSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLmRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSkgfHwgdGhpcy5kYXRlQWRhcHRlci50b2RheSgpO1xuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5jbGFtcERhdGUodmFsaWREYXRlLCB0aGlzLm1pbkRhdGUsIHRoaXMubWF4RGF0ZSk7XG5cbiAgICAgICAgaWYgKE1hdGguZmxvb3IodGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKG9sZEFjdGl2ZURhdGUpIC8geWVhcnNQZXJQYWdlKSAhPT1cbiAgICAgICAgICAgIE1hdGguZmxvb3IodGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuX2FjdGl2ZURhdGUpIC8geWVhcnNQZXJQYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGVkKCk6IEQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbCh0aGlzLmRhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRZZWFyID0gdGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuX3NlbGVjdGVkKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG1pbmltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1pbkRhdGUoKTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgICB9XG5cbiAgICBzZXQgbWluRGF0ZSh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbWluRGF0ZSA9IHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKiogVGhlIG1heGltdW0gc2VsZWN0YWJsZSBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1heERhdGUoKTogRCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgICB9XG5cbiAgICBzZXQgbWF4RGF0ZSh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fbWF4RGF0ZSA9IHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKiogQSBmdW5jdGlvbiB1c2VkIHRvIGZpbHRlciB3aGljaCBkYXRlcyBhcmUgc2VsZWN0YWJsZS4gKi9cbiAgICBASW5wdXQoKSBkYXRlRmlsdGVyOiAoZGF0ZTogRCkgPT4gYm9vbGVhbjtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGEgbmV3IHllYXIgaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RD4gPSBuZXcgRXZlbnRFbWl0dGVyPEQ+KCk7XG5cbiAgICAvKiogRW1pdHMgdGhlIHNlbGVjdGVkIHllYXIuIFRoaXMgZG9lc24ndCBpbXBseSBhIGNoYW5nZSBvbiB0aGUgc2VsZWN0ZWQgZGF0ZSAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSB5ZWFyU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxEPiA9IG5ldyBFdmVudEVtaXR0ZXI8RD4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIGFueSBkYXRlIGlzIGFjdGl2YXRlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgYWN0aXZlRGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEPigpO1xuXG4gICAgLyoqIFRoZSBib2R5IG9mIGNhbGVuZGFyIHRhYmxlICovXG4gICAgQFZpZXdDaGlsZChNY0NhbGVuZGFyQm9keSwge3N0YXRpYzogZmFsc2V9KSBtY0NhbGVuZGFyQm9keTogTWNDYWxlbmRhckJvZHk7XG5cbiAgICAvKiogR3JpZCBvZiBjYWxlbmRhciBjZWxscyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgeWVhcnMuICovXG4gICAgeWVhcnM6IE1jQ2FsZW5kYXJDZWxsW11bXTtcblxuICAgIC8qKiBUaGUgeWVhciB0aGF0IHRvZGF5IGZhbGxzIG9uLiAqL1xuICAgIHRvZGF5WWVhcjogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSB5ZWFyIG9mIHRoZSBzZWxlY3RlZCBkYXRlLiBOdWxsIGlmIHRoZSBzZWxlY3RlZCBkYXRlIGlzIG51bGwuICovXG4gICAgc2VsZWN0ZWRZZWFyOiBudW1iZXIgfCBudWxsO1xuICAgIHByaXZhdGUgX2FjdGl2ZURhdGU6IEQ7XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IEQgfCBudWxsO1xuICAgIHByaXZhdGUgX21pbkRhdGU6IEQgfCBudWxsO1xuICAgIHByaXZhdGUgX21heERhdGU6IEQgfCBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPEQ+LFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcj86IERpcmVjdGlvbmFsaXR5XG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRlQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0RhdGVBZGFwdGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci50b2RheSgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgLyoqIEluaXRpYWxpemVzIHRoaXMgbXVsdGkteWVhciB2aWV3LiAqL1xuICAgIGluaXQoKSB7XG4gICAgICAgIHRoaXMudG9kYXlZZWFyID0gdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuZGF0ZUFkYXB0ZXIudG9kYXkoKSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIodGhpcy5fYWN0aXZlRGF0ZSk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9mZnNldCA9IGFjdGl2ZVllYXIgJSB5ZWFyc1BlclBhZ2U7XG4gICAgICAgIHRoaXMueWVhcnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIHJvdzogbnVtYmVyW10gPSBbXTsgaSA8IHllYXJzUGVyUGFnZTsgaSsrKSB7XG4gICAgICAgICAgICByb3cucHVzaChhY3RpdmVZZWFyIC0gYWN0aXZlT2Zmc2V0ICsgaSk7XG4gICAgICAgICAgICBpZiAocm93Lmxlbmd0aCA9PT0geWVhcnNQZXJSb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnllYXJzLnB1c2gocm93Lm1hcCgoeWVhcikgPT4gdGhpcy5jcmVhdGVDZWxsRm9yWWVhcih5ZWFyKSkpO1xuICAgICAgICAgICAgICAgIHJvdyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXMgd2hlbiBhIG5ldyB5ZWFyIGlzIHNlbGVjdGVkLiAqL1xuICAgIG9uWWVhclNlbGVjdGVkKHllYXI6IG51bWJlcikge1xuICAgICAgICB0aGlzLnllYXJTZWxlY3RlZC5lbWl0KHRoaXMuZGF0ZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyKSk7XG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5kYXRlQWRhcHRlci5nZXRNb250aCh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICBjb25zdCBkYXlzSW5Nb250aCA9XG4gICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmdldE51bURheXNJbk1vbnRoKHRoaXMuZGF0ZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCBtb250aCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQoXG4gICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgbW9udGgsIE1hdGgubWluKHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0RGF0ZSh0aGlzLmFjdGl2ZURhdGUpLCBkYXlzSW5Nb250aCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZXMga2V5ZG93biBldmVudHMgb24gdGhlIGNhbGVuZGFyIGJvZHkgd2hlbiBjYWxlbmRhciBpcyBpbiBtdWx0aS15ZWFyIHZpZXcuICovXG4gICAgaGFuZGxlQ2FsZW5kYXJCb2R5S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBUT0RPKG1tYWxlcmJhKTogV2UgY3VycmVudGx5IGFsbG93IGtleWJvYXJkIG5hdmlnYXRpb24gdG8gZGlzYWJsZWQgZGF0ZXMsIGJ1dCBqdXN0IHByZXZlbnRcbiAgICAgICAgLy8gZGlzYWJsZWQgb25lcyBmcm9tIGJlaW5nIHNlbGVjdGVkLiBUaGlzIG1heSBub3QgYmUgaWRlYWwsIHdlIHNob3VsZCBsb29rIGludG8gd2hldGhlclxuICAgICAgICAvLyBuYXZpZ2F0aW9uIHNob3VsZCBza2lwIG92ZXIgZGlzYWJsZWQgZGF0ZXMsIGFuZCBpZiBzbywgaG93IHRvIGltcGxlbWVudCB0aGF0IGVmZmljaWVudGx5LlxuXG4gICAgICAgIGNvbnN0IG9sZEFjdGl2ZURhdGUgPSB0aGlzLl9hY3RpdmVEYXRlO1xuICAgICAgICBjb25zdCBpc1J0bCA9IHRoaXMuaXNSdGwoKTtcblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGVwcmVjYXRpb25cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIExFRlRfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKHRoaXMuX2FjdGl2ZURhdGUsIGlzUnRsID8gMSA6IC0xKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUklHSFRfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKHRoaXMuX2FjdGl2ZURhdGUsIGlzUnRsID8gLTEgOiAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVVBfQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKHRoaXMuX2FjdGl2ZURhdGUsIC15ZWFyc1BlclJvdyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKHRoaXMuX2FjdGl2ZURhdGUsIHllYXJzUGVyUm93KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSE9NRTpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURhdGUsXG4gICAgICAgICAgICAgICAgICAgIC10aGlzLmRhdGVBZGFwdGVyLmdldFllYXIodGhpcy5fYWN0aXZlRGF0ZSkgJSB5ZWFyc1BlclBhZ2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBFTkQ6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhclllYXJzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVEYXRlLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyc1BlclBhZ2UgLSB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIodGhpcy5fYWN0aXZlRGF0ZSkgJSB5ZWFyc1BlclBhZ2UgLSAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUEFHRV9VUDpcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyWWVhcnMoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hY3RpdmVEYXRlLCBldmVudC5hbHRLZXkgPyAteWVhcnNQZXJQYWdlICogMTAgOiAteWVhcnNQZXJQYWdlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUEFHRV9ET1dOOlxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJZZWFycyhcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURhdGUsIGV2ZW50LmFsdEtleSA/IHllYXJzUGVyUGFnZSAqIDEwIDogeWVhcnNQZXJQYWdlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICBjYXNlIFNQQUNFOlxuICAgICAgICAgICAgICAgIHRoaXMub25ZZWFyU2VsZWN0ZWQodGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMuX2FjdGl2ZURhdGUpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJldmVudCBkZWZhdWx0IG9yIGZvY3VzIGFjdGl2ZSBjZWxsIG9uIGtleXMgdGhhdCB3ZSBkb24ndCBleHBsaWNpdGx5IGhhbmRsZS5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kYXRlQWRhcHRlci5jb21wYXJlRGF0ZShvbGRBY3RpdmVEYXRlLCB0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURhdGVDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZURhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0FjdGl2ZUNlbGwoKTtcbiAgICAgICAgLy8gUHJldmVudCB1bmV4cGVjdGVkIGRlZmF1bHQgYWN0aW9ucyBzdWNoIGFzIGZvcm0gc3VibWlzc2lvbi5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVDZWxsKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIodGhpcy5hY3RpdmVEYXRlKSAlIHllYXJzUGVyUGFnZTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgYWN0aXZlIGNlbGwgYWZ0ZXIgdGhlIG1pY3JvdGFzayBxdWV1ZSBpcyBlbXB0eS4gKi9cbiAgICBmb2N1c0FjdGl2ZUNlbGwoKSB7XG4gICAgICAgIHRoaXMubWNDYWxlbmRhckJvZHkuZm9jdXNBY3RpdmVDZWxsKCk7XG4gICAgfVxuXG4gICAgLyoqIENyZWF0ZXMgYW4gTWNDYWxlbmRhckNlbGwgZm9yIHRoZSBnaXZlbiB5ZWFyLiAqL1xuICAgIHByaXZhdGUgY3JlYXRlQ2VsbEZvclllYXIoeWVhcjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHllYXJOYW1lID0gdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyTmFtZSh0aGlzLmRhdGVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhcikpO1xuXG4gICAgICAgIHJldHVybiBuZXcgTWNDYWxlbmRhckNlbGwoeWVhciwgeWVhck5hbWUsIHllYXJOYW1lLCB0aGlzLnNob3VsZEVuYWJsZVllYXIoeWVhcikpO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBnaXZlbiB5ZWFyIGlzIGVuYWJsZWQuICovXG4gICAgcHJpdmF0ZSBzaG91bGRFbmFibGVZZWFyKHllYXI6IG51bWJlcikge1xuICAgICAgICAvLyBkaXNhYmxlIGlmIHRoZSB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiBtYXhEYXRlIGxvd2VyIHRoYW4gbWluRGF0ZVxuICAgICAgICBpZiAoeWVhciA9PT0gdW5kZWZpbmVkIHx8IHllYXIgPT09IG51bGwgfHxcbiAgICAgICAgICAgICh0aGlzLm1heERhdGUgJiYgeWVhciA+IHRoaXMuZGF0ZUFkYXB0ZXIuZ2V0WWVhcih0aGlzLm1heERhdGUpKSB8fFxuICAgICAgICAgICAgKHRoaXMubWluRGF0ZSAmJiB5ZWFyIDwgdGhpcy5kYXRlQWRhcHRlci5nZXRZZWFyKHRoaXMubWluRGF0ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlbmFibGUgaWYgaXQgcmVhY2hlcyBoZXJlIGFuZCB0aGVyZSdzIG5vIGZpbHRlciBkZWZpbmVkXG4gICAgICAgIGlmICghdGhpcy5kYXRlRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpcnN0T2ZZZWFyID0gdGhpcy5kYXRlQWRhcHRlci5jcmVhdGVEYXRlKHllYXIpO1xuXG4gICAgICAgIC8vIElmIGFueSBkYXRlIGluIHRoZSB5ZWFyIGlzIGVuYWJsZWQgY291bnQgdGhlIHllYXIgYXMgZW5hYmxlZC5cbiAgICAgICAgZm9yIChsZXQgZGF0ZSA9IGZpcnN0T2ZZZWFyOyB0aGlzLmRhdGVBZGFwdGVyLmdldFllYXIoZGF0ZSkgPT09IHllYXI7XG4gICAgICAgICAgICAgZGF0ZSA9IHRoaXMuZGF0ZUFkYXB0ZXIuYWRkQ2FsZW5kYXJEYXlzKGRhdGUsIDEpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlRmlsdGVyKGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG9iaiBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFRoZSBnaXZlbiBvYmplY3QgaWYgaXQgaXMgYm90aCBhIGRhdGUgaW5zdGFuY2UgYW5kIHZhbGlkLCBvdGhlcndpc2UgbnVsbC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFZhbGlkRGF0ZU9yTnVsbChvYmo6IGFueSk6IEQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRhdGVBZGFwdGVyLmlzRGF0ZUluc3RhbmNlKG9iaikgJiYgdGhpcy5kYXRlQWRhcHRlci5pc1ZhbGlkKG9iaikpID8gb2JqIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyB0aGUgUlRMIGxheW91dCBkaXJlY3Rpb24uICovXG4gICAgcHJpdmF0ZSBpc1J0bCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyICYmIHRoaXMuZGlyLnZhbHVlID09PSAncnRsJztcbiAgICB9XG59XG4iLCI8dGFibGUgY2xhc3M9XCJtYy1jYWxlbmRhcl9fdGFibGVcIj5cbiAgICA8dGhlYWQgY2xhc3M9XCJtYy1jYWxlbmRhcl9fdGFibGUtaGVhZGVyXCI+XG4gICAgPHRyPlxuICAgICAgICA8dGggY2xhc3M9XCJtYy1jYWxlbmRhcl9fdGFibGUtaGVhZGVyLWRpdmlkZXJcIiBjb2xzcGFuPVwiNFwiPjwvdGg+XG4gICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keSBtYy1jYWxlbmRhci1ib2R5XG4gICAgICAgICAgIFtyb3dzXT1cInllYXJzXCJcbiAgICAgICAgICAgW3RvZGF5VmFsdWVdPVwidG9kYXlZZWFyXCJcbiAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwic2VsZWN0ZWRZZWFyIVwiXG4gICAgICAgICAgIFtudW1Db2xzXT1cIjRcIlxuICAgICAgICAgICBbY2VsbEFzcGVjdFJhdGlvXT1cIjQgLyA3XCJcbiAgICAgICAgICAgW2FjdGl2ZUNlbGxdPVwiZ2V0QWN0aXZlQ2VsbCgpXCJcbiAgICAgICAgICAgKHNlbGVjdGVkVmFsdWVDaGFuZ2UpPVwib25ZZWFyU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUNhbGVuZGFyQm9keUtleWRvd24oJGV2ZW50KVwiPlxuICAgIDwvdGJvZHk+XG48L3RhYmxlPlxuIl19