@angular/material 13.0.0-next.7 → 13.0.0-next.8

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 (1655) hide show
  1. package/autocomplete/autocomplete-module.d.ts +11 -7
  2. package/autocomplete/autocomplete-origin.d.ts +5 -0
  3. package/autocomplete/autocomplete-trigger.d.ts +5 -0
  4. package/autocomplete/autocomplete.d.ts +6 -1
  5. package/autocomplete/package.json +5 -5
  6. package/autocomplete/testing/package.json +5 -5
  7. package/badge/badge-module.d.ts +7 -7
  8. package/badge/badge.d.ts +4 -1
  9. package/badge/package.json +5 -5
  10. package/badge/testing/package.json +5 -5
  11. package/bottom-sheet/bottom-sheet-container.d.ts +3 -0
  12. package/bottom-sheet/bottom-sheet-module.d.ts +8 -7
  13. package/bottom-sheet/bottom-sheet.d.ts +3 -7
  14. package/bottom-sheet/package.json +5 -5
  15. package/bottom-sheet/testing/package.json +5 -5
  16. package/button/button-module.d.ts +6 -7
  17. package/button/button.d.ts +6 -1
  18. package/button/package.json +5 -5
  19. package/button/testing/package.json +5 -5
  20. package/button-toggle/button-toggle-module.d.ts +6 -7
  21. package/button-toggle/button-toggle.d.ts +6 -1
  22. package/button-toggle/package.json +5 -5
  23. package/button-toggle/testing/package.json +5 -5
  24. package/card/card-module.d.ts +6 -7
  25. package/card/card.d.ts +29 -7
  26. package/card/package.json +5 -5
  27. package/card/testing/package.json +5 -5
  28. package/checkbox/checkbox-module.d.ts +11 -7
  29. package/checkbox/checkbox-required-validator.d.ts +3 -0
  30. package/checkbox/checkbox.d.ts +4 -1
  31. package/checkbox/package.json +5 -5
  32. package/checkbox/testing/package.json +5 -5
  33. package/chips/chip-input.d.ts +3 -0
  34. package/chips/chip-list.d.ts +4 -1
  35. package/chips/chip.d.ts +10 -1
  36. package/chips/chips-module.d.ts +8 -7
  37. package/chips/package.json +5 -5
  38. package/chips/testing/package.json +5 -5
  39. package/core/common-behaviors/common-module.d.ts +5 -0
  40. package/core/common-behaviors/index.d.ts +1 -0
  41. package/core/datetime/index.d.ts +8 -7
  42. package/core/datetime/native-date-adapter.d.ts +3 -0
  43. package/core/error/error-options.d.ts +5 -7
  44. package/core/index.d.ts +0 -1
  45. package/core/line/line.d.ts +7 -0
  46. package/core/option/index.d.ts +10 -7
  47. package/core/option/optgroup.d.ts +6 -1
  48. package/core/option/option.d.ts +5 -0
  49. package/core/package.json +5 -5
  50. package/core/ripple/index.d.ts +7 -7
  51. package/core/ripple/ripple.d.ts +3 -0
  52. package/core/selection/index.d.ts +6 -7
  53. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -7
  54. package/core/testing/package.json +5 -5
  55. package/datepicker/calendar-body.d.ts +3 -0
  56. package/datepicker/calendar.d.ts +5 -0
  57. package/datepicker/date-range-input-parts.d.ts +8 -1
  58. package/datepicker/date-range-input.d.ts +3 -0
  59. package/datepicker/date-range-picker.d.ts +3 -7
  60. package/datepicker/date-range-selection-strategy.d.ts +3 -0
  61. package/datepicker/date-selection-model.d.ts +7 -0
  62. package/datepicker/datepicker-actions.d.ts +7 -0
  63. package/datepicker/datepicker-base.d.ts +6 -1
  64. package/datepicker/datepicker-input-base.d.ts +3 -0
  65. package/datepicker/datepicker-input.d.ts +3 -0
  66. package/datepicker/datepicker-intl.d.ts +3 -7
  67. package/datepicker/datepicker-module.d.ts +24 -7
  68. package/datepicker/datepicker-toggle.d.ts +5 -0
  69. package/datepicker/datepicker.d.ts +3 -7
  70. package/datepicker/index.d.ts +0 -4
  71. package/datepicker/month-view.d.ts +3 -7
  72. package/datepicker/multi-year-view.d.ts +3 -7
  73. package/datepicker/package.json +5 -5
  74. package/datepicker/testing/package.json +5 -5
  75. package/datepicker/year-view.d.ts +3 -7
  76. package/dialog/dialog-container.d.ts +5 -0
  77. package/dialog/dialog-content-directives.d.ts +9 -0
  78. package/dialog/dialog-module.d.ts +9 -7
  79. package/dialog/dialog.d.ts +5 -7
  80. package/dialog/package.json +5 -5
  81. package/dialog/testing/dialog-harness.d.ts +14 -11
  82. package/dialog/testing/package.json +5 -5
  83. package/divider/divider-module.d.ts +6 -7
  84. package/divider/divider.d.ts +3 -7
  85. package/divider/package.json +5 -5
  86. package/divider/testing/package.json +5 -5
  87. package/esm2020/autocomplete/autocomplete-module.mjs +58 -0
  88. package/esm2020/autocomplete/autocomplete-origin.mjs +38 -0
  89. package/esm2020/autocomplete/autocomplete-trigger.mjs +651 -0
  90. package/esm2020/autocomplete/autocomplete.mjs +216 -0
  91. package/{esm2015/autocomplete/index.js → esm2020/autocomplete/index.mjs} +0 -0
  92. package/{esm2015/autocomplete/public-api.js → esm2020/autocomplete/public-api.mjs} +0 -0
  93. package/{esm2015/autocomplete/testing/autocomplete-harness-filters.js → esm2020/autocomplete/testing/autocomplete-harness-filters.mjs} +0 -0
  94. package/esm2020/autocomplete/testing/autocomplete-harness.mjs +101 -0
  95. package/{esm2015/autocomplete/testing/index.js → esm2020/autocomplete/testing/index.mjs} +0 -0
  96. package/{esm2015/autocomplete/testing/public-api.js → esm2020/autocomplete/testing/public-api.mjs} +0 -0
  97. package/esm2020/badge/badge-module.mjs +33 -0
  98. package/esm2020/badge/badge.mjs +228 -0
  99. package/{esm2015/badge/index.js → esm2020/badge/index.mjs} +0 -0
  100. package/{esm2015/badge/public-api.js → esm2020/badge/public-api.mjs} +0 -0
  101. package/{esm2015/badge/testing/badge-harness-filters.js → esm2020/badge/testing/badge-harness-filters.mjs} +0 -0
  102. package/esm2020/badge/testing/badge-harness.mjs +72 -0
  103. package/{esm2015/badge/testing/index.js → esm2020/badge/testing/index.mjs} +0 -0
  104. package/{esm2015/badge/testing/public-api.js → esm2020/badge/testing/public-api.mjs} +0 -0
  105. package/{esm2015/bottom-sheet/bottom-sheet-animations.js → esm2020/bottom-sheet/bottom-sheet-animations.mjs} +0 -0
  106. package/{esm2015/bottom-sheet/bottom-sheet-config.js → esm2020/bottom-sheet/bottom-sheet-config.mjs} +0 -0
  107. package/esm2020/bottom-sheet/bottom-sheet-container.mjs +230 -0
  108. package/esm2020/bottom-sheet/bottom-sheet-module.mjs +38 -0
  109. package/esm2020/bottom-sheet/bottom-sheet-ref.mjs +91 -0
  110. package/esm2020/bottom-sheet/bottom-sheet.mjs +172 -0
  111. package/{esm2015/bottom-sheet/index.js → esm2020/bottom-sheet/index.mjs} +0 -0
  112. package/{esm2015/bottom-sheet/public-api.js → esm2020/bottom-sheet/public-api.mjs} +0 -0
  113. package/{esm2015/bottom-sheet/testing/bottom-sheet-harness-filters.js → esm2020/bottom-sheet/testing/bottom-sheet-harness-filters.mjs} +0 -0
  114. package/esm2020/bottom-sheet/testing/bottom-sheet-harness.mjs +35 -0
  115. package/{esm2015/bottom-sheet/testing/index.js → esm2020/bottom-sheet/testing/index.mjs} +0 -0
  116. package/{esm2015/bottom-sheet/testing/public-api.js → esm2020/bottom-sheet/testing/public-api.mjs} +0 -0
  117. package/esm2020/button/button-module.mjs +42 -0
  118. package/esm2020/button/button.mjs +153 -0
  119. package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  120. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  121. package/{esm2015/button/testing/button-harness-filters.js → esm2020/button/testing/button-harness-filters.mjs} +0 -0
  122. package/esm2020/button/testing/button-harness.mjs +51 -0
  123. package/{esm2015/button/testing/index.js → esm2020/button/testing/index.mjs} +0 -0
  124. package/{esm2015/button/testing/public-api.js → esm2020/button/testing/public-api.mjs} +0 -0
  125. package/esm2020/button-toggle/button-toggle-module.mjs +25 -0
  126. package/esm2020/button-toggle/button-toggle.mjs +470 -0
  127. package/{esm2015/button-toggle/index.js → esm2020/button-toggle/index.mjs} +0 -0
  128. package/{esm2015/button-toggle/public-api.js → esm2020/button-toggle/public-api.mjs} +0 -0
  129. package/{esm2015/button-toggle/testing/button-toggle-group-harness-filters.js → esm2020/button-toggle/testing/button-toggle-group-harness-filters.mjs} +0 -0
  130. package/esm2020/button-toggle/testing/button-toggle-group-harness.mjs +45 -0
  131. package/{esm2015/button-toggle/testing/button-toggle-harness-filters.js → esm2020/button-toggle/testing/button-toggle-harness-filters.mjs} +0 -0
  132. package/esm2020/button-toggle/testing/button-toggle-harness.mjs +98 -0
  133. package/{esm2015/button-toggle/testing/index.js → esm2020/button-toggle/testing/index.mjs} +0 -0
  134. package/{esm2015/button-toggle/testing/public-api.js → esm2020/button-toggle/testing/public-api.mjs} +0 -0
  135. package/esm2020/card/card-module.mjs +61 -0
  136. package/esm2020/card/card.mjs +247 -0
  137. package/{esm2015/card/index.js → esm2020/card/index.mjs} +0 -0
  138. package/{esm2015/card/public-api.js → esm2020/card/public-api.mjs} +0 -0
  139. package/{esm2015/card/testing/card-harness-filters.js → esm2020/card/testing/card-harness-filters.mjs} +0 -0
  140. package/esm2020/card/testing/card-harness.mjs +43 -0
  141. package/{esm2015/card/testing/index.js → esm2020/card/testing/index.mjs} +0 -0
  142. package/{esm2015/card/testing/public-api.js → esm2020/card/testing/public-api.mjs} +0 -0
  143. package/{esm2015/checkbox/checkbox-config.js → esm2020/checkbox/checkbox-config.mjs} +0 -0
  144. package/esm2020/checkbox/checkbox-module.mjs +46 -0
  145. package/esm2020/checkbox/checkbox-required-validator.mjs +33 -0
  146. package/esm2020/checkbox/checkbox.mjs +403 -0
  147. package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
  148. package/{esm2015/checkbox/public-api.js → esm2020/checkbox/public-api.mjs} +0 -0
  149. package/{esm2015/checkbox/testing/checkbox-harness-filters.js → esm2020/checkbox/testing/checkbox-harness-filters.mjs} +0 -0
  150. package/esm2020/checkbox/testing/checkbox-harness.mjs +123 -0
  151. package/{esm2015/checkbox/testing/index.js → esm2020/checkbox/testing/index.mjs} +0 -0
  152. package/{esm2015/checkbox/testing/public-api.js → esm2020/checkbox/testing/public-api.mjs} +0 -0
  153. package/{esm2015/chips/chip-default-options.js → esm2020/chips/chip-default-options.mjs} +0 -0
  154. package/esm2020/chips/chip-input.mjs +192 -0
  155. package/esm2020/chips/chip-list.mjs +673 -0
  156. package/{esm2015/chips/chip-text-control.js → esm2020/chips/chip-text-control.mjs} +0 -0
  157. package/esm2020/chips/chip.mjs +415 -0
  158. package/esm2020/chips/chips-module.mjs +64 -0
  159. package/{esm2015/chips/index.js → esm2020/chips/index.mjs} +0 -0
  160. package/{esm2015/chips/public-api.js → esm2020/chips/public-api.mjs} +0 -0
  161. package/{esm2015/chips/testing/chip-avatar-harness.js → esm2020/chips/testing/chip-avatar-harness.mjs} +0 -0
  162. package/{esm2015/chips/testing/chip-harness-filters.js → esm2020/chips/testing/chip-harness-filters.mjs} +0 -0
  163. package/esm2020/chips/testing/chip-harness.mjs +91 -0
  164. package/esm2020/chips/testing/chip-input-harness.mjs +82 -0
  165. package/esm2020/chips/testing/chip-list-harness.mjs +82 -0
  166. package/esm2020/chips/testing/chip-listbox-harness.mjs +44 -0
  167. package/esm2020/chips/testing/chip-option-harness.mjs +45 -0
  168. package/esm2020/chips/testing/chip-remove-harness.mjs +26 -0
  169. package/{esm2015/chips/testing/index.js → esm2020/chips/testing/index.mjs} +0 -0
  170. package/{esm2015/chips/testing/public-api.js → esm2020/chips/testing/public-api.mjs} +0 -0
  171. package/{esm2015/core/animation/animation.js → esm2020/core/animation/animation.mjs} +0 -0
  172. package/{esm2015/core/common-behaviors/color.js → esm2020/core/common-behaviors/color.mjs} +0 -0
  173. package/esm2020/core/common-behaviors/common-module.mjs +122 -0
  174. package/{esm2015/core/common-behaviors/constructor.js → esm2020/core/common-behaviors/constructor.mjs} +0 -0
  175. package/{esm2015/core/common-behaviors/disable-ripple.js → esm2020/core/common-behaviors/disable-ripple.mjs} +0 -0
  176. package/{esm2015/core/common-behaviors/disabled.js → esm2020/core/common-behaviors/disabled.mjs} +0 -0
  177. package/{esm2015/core/common-behaviors/error-state.js → esm2020/core/common-behaviors/error-state.mjs} +0 -0
  178. package/esm2020/core/common-behaviors/index.mjs +15 -0
  179. package/{esm2015/core/common-behaviors/initialized.js → esm2020/core/common-behaviors/initialized.mjs} +0 -0
  180. package/{esm2015/core/common-behaviors/tabindex.js → esm2020/core/common-behaviors/tabindex.mjs} +0 -0
  181. package/{esm2015/core/datetime/date-adapter.js → esm2020/core/datetime/date-adapter.mjs} +0 -0
  182. package/{esm2015/core/datetime/date-formats.js → esm2020/core/datetime/date-formats.mjs} +0 -0
  183. package/esm2020/core/datetime/index.mjs +47 -0
  184. package/esm2020/core/datetime/native-date-adapter.mjs +218 -0
  185. package/{esm2015/core/datetime/native-date-formats.js → esm2020/core/datetime/native-date-formats.mjs} +0 -0
  186. package/esm2020/core/error/error-options.mjs +33 -0
  187. package/esm2020/core/index.mjs +5 -0
  188. package/esm2020/core/line/line.mjs +64 -0
  189. package/esm2020/core/option/index.mjs +32 -0
  190. package/esm2020/core/option/optgroup.mjs +73 -0
  191. package/{esm2015/core/option/option-parent.js → esm2020/core/option/option-parent.mjs} +0 -0
  192. package/esm2020/core/option/option.mjs +276 -0
  193. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +0 -0
  194. package/esm2020/core/ripple/index.mjs +29 -0
  195. package/{esm2015/core/ripple/ripple-ref.js → esm2020/core/ripple/ripple-ref.mjs} +0 -0
  196. package/esm2020/core/ripple/ripple-renderer.mjs +261 -0
  197. package/esm2020/core/ripple/ripple.mjs +152 -0
  198. package/esm2020/core/selection/index.mjs +26 -0
  199. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +54 -0
  200. package/{esm2015/core/testing/index.js → esm2020/core/testing/index.mjs} +0 -0
  201. package/{esm2015/core/testing/optgroup-harness-filters.js → esm2020/core/testing/optgroup-harness-filters.mjs} +0 -0
  202. package/esm2020/core/testing/optgroup-harness.mjs +44 -0
  203. package/{esm2015/core/testing/option-harness-filters.js → esm2020/core/testing/option-harness-filters.mjs} +0 -0
  204. package/esm2020/core/testing/option-harness.mjs +54 -0
  205. package/{esm2015/core/testing/public-api.js → esm2020/core/testing/public-api.mjs} +0 -0
  206. package/esm2020/core/version.mjs +11 -0
  207. package/esm2020/datepicker/calendar-body.mjs +298 -0
  208. package/esm2020/datepicker/calendar.mjs +354 -0
  209. package/esm2020/datepicker/date-range-input-parts.mjs +342 -0
  210. package/esm2020/datepicker/date-range-input.mjs +331 -0
  211. package/esm2020/datepicker/date-range-picker.mjs +48 -0
  212. package/esm2020/datepicker/date-range-selection-strategy.mjs +59 -0
  213. package/esm2020/datepicker/date-selection-model.mjs +187 -0
  214. package/esm2020/datepicker/datepicker-actions.mjs +89 -0
  215. package/{esm2015/datepicker/datepicker-animations.js → esm2020/datepicker/datepicker-animations.mjs} +0 -0
  216. package/esm2020/datepicker/datepicker-base.mjs +549 -0
  217. package/{esm2015/datepicker/datepicker-errors.js → esm2020/datepicker/datepicker-errors.mjs} +0 -0
  218. package/esm2020/datepicker/datepicker-input-base.mjs +298 -0
  219. package/esm2020/datepicker/datepicker-input.mjs +183 -0
  220. package/esm2020/datepicker/datepicker-intl.mjs +53 -0
  221. package/esm2020/datepicker/datepicker-module.mjs +148 -0
  222. package/esm2020/datepicker/datepicker-toggle.mjs +113 -0
  223. package/esm2020/datepicker/datepicker.mjs +37 -0
  224. package/esm2020/datepicker/index.mjs +5 -0
  225. package/esm2020/datepicker/month-view.mjs +364 -0
  226. package/esm2020/datepicker/multi-year-view.mjs +289 -0
  227. package/{esm2015/datepicker/public-api.js → esm2020/datepicker/public-api.mjs} +0 -0
  228. package/esm2020/datepicker/testing/calendar-cell-harness.mjs +138 -0
  229. package/esm2020/datepicker/testing/calendar-harness.mjs +76 -0
  230. package/esm2020/datepicker/testing/date-range-input-harness.mjs +99 -0
  231. package/{esm2015/datepicker/testing/datepicker-harness-filters.js → esm2020/datepicker/testing/datepicker-harness-filters.mjs} +0 -0
  232. package/esm2020/datepicker/testing/datepicker-input-harness-base.mjs +81 -0
  233. package/esm2020/datepicker/testing/datepicker-input-harness.mjs +58 -0
  234. package/esm2020/datepicker/testing/datepicker-toggle-harness.mjs +41 -0
  235. package/esm2020/datepicker/testing/datepicker-trigger-harness-base.mjs +65 -0
  236. package/{esm2015/datepicker/testing/index.js → esm2020/datepicker/testing/index.mjs} +0 -0
  237. package/{esm2015/datepicker/testing/public-api.js → esm2020/datepicker/testing/public-api.mjs} +0 -0
  238. package/esm2020/datepicker/year-view.mjs +281 -0
  239. package/{esm2015/dialog/dialog-animations.js → esm2020/dialog/dialog-animations.mjs} +0 -0
  240. package/{esm2015/dialog/dialog-config.js → esm2020/dialog/dialog-config.mjs} +0 -0
  241. package/esm2020/dialog/dialog-container.mjs +282 -0
  242. package/esm2020/dialog/dialog-content-directives.mjs +172 -0
  243. package/esm2020/dialog/dialog-module.mjs +69 -0
  244. package/esm2020/dialog/dialog-ref.mjs +196 -0
  245. package/esm2020/dialog/dialog.mjs +358 -0
  246. package/{esm2015/dialog/index.js → esm2020/dialog/index.mjs} +0 -0
  247. package/{esm2015/dialog/public-api.js → esm2020/dialog/public-api.mjs} +0 -0
  248. package/{esm2015/dialog/testing/dialog-harness-filters.js → esm2020/dialog/testing/dialog-harness-filters.mjs} +0 -0
  249. package/esm2020/dialog/testing/dialog-harness.mjs +83 -0
  250. package/{esm2015/dialog/testing/index.js → esm2020/dialog/testing/index.mjs} +0 -0
  251. package/{esm2015/dialog/testing/public-api.js → esm2020/dialog/testing/public-api.mjs} +0 -0
  252. package/esm2020/divider/divider-module.mjs +25 -0
  253. package/esm2020/divider/divider.mjs +40 -0
  254. package/{esm2015/divider/index.js → esm2020/divider/index.mjs} +0 -0
  255. package/{esm2015/divider/public-api.js → esm2020/divider/public-api.mjs} +0 -0
  256. package/{esm2015/divider/testing/divider-harness-filters.js → esm2020/divider/testing/divider-harness-filters.mjs} +0 -0
  257. package/esm2020/divider/testing/divider-harness.mjs +22 -0
  258. package/{esm2015/divider/testing/index.js → esm2020/divider/testing/index.mjs} +0 -0
  259. package/{esm2015/divider/testing/public-api.js → esm2020/divider/testing/public-api.mjs} +0 -0
  260. package/{esm2015/expansion/accordion-base.js → esm2020/expansion/accordion-base.mjs} +0 -0
  261. package/esm2020/expansion/accordion.mjs +93 -0
  262. package/{esm2015/expansion/expansion-animations.js → esm2020/expansion/expansion-animations.mjs} +0 -0
  263. package/esm2020/expansion/expansion-module.mjs +59 -0
  264. package/esm2020/expansion/expansion-panel-content.mjs +27 -0
  265. package/esm2020/expansion/expansion-panel-header.mjs +226 -0
  266. package/esm2020/expansion/expansion-panel.mjs +195 -0
  267. package/{esm2015/expansion/index.js → esm2020/expansion/index.mjs} +0 -0
  268. package/{esm2015/expansion/public-api.js → esm2020/expansion/public-api.mjs} +0 -0
  269. package/esm2020/expansion/testing/accordion-harness.mjs +31 -0
  270. package/{esm2015/expansion/testing/expansion-harness-filters.js → esm2020/expansion/testing/expansion-harness-filters.mjs} +0 -0
  271. package/esm2020/expansion/testing/expansion-harness.mjs +120 -0
  272. package/{esm2015/expansion/testing/index.js → esm2020/expansion/testing/index.mjs} +0 -0
  273. package/{esm2015/expansion/testing/public-api.js → esm2020/expansion/testing/public-api.mjs} +0 -0
  274. package/esm2020/form-field/error.mjs +47 -0
  275. package/{esm2015/form-field/form-field-animations.js → esm2020/form-field/form-field-animations.mjs} +0 -0
  276. package/esm2020/form-field/form-field-control.mjs +11 -0
  277. package/{esm2015/form-field/form-field-errors.js → esm2020/form-field/form-field-errors.mjs} +0 -0
  278. package/esm2020/form-field/form-field-module.mjs +73 -0
  279. package/esm2020/form-field/form-field.mjs +510 -0
  280. package/esm2020/form-field/hint.mjs +49 -0
  281. package/{esm2015/form-field/index.js → esm2020/form-field/index.mjs} +0 -0
  282. package/esm2020/form-field/label.mjs +21 -0
  283. package/esm2020/form-field/placeholder.mjs +26 -0
  284. package/esm2020/form-field/prefix.mjs +28 -0
  285. package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
  286. package/esm2020/form-field/suffix.mjs +28 -0
  287. package/{esm2015/form-field/testing/control/form-field-control-harness.js → esm2020/form-field/testing/control/form-field-control-harness.mjs} +0 -0
  288. package/{esm2015/form-field/testing/control/index.js → esm2020/form-field/testing/control/index.mjs} +0 -0
  289. package/{esm2015/form-field/testing/form-field-harness-filters.js → esm2020/form-field/testing/form-field-harness-filters.mjs} +0 -0
  290. package/esm2020/form-field/testing/form-field-harness.mjs +181 -0
  291. package/{esm2015/form-field/testing/index.js → esm2020/form-field/testing/index.mjs} +0 -0
  292. package/{esm2015/form-field/testing/public-api.js → esm2020/form-field/testing/public-api.mjs} +0 -0
  293. package/{esm2015/grid-list/grid-list-base.js → esm2020/grid-list/grid-list-base.mjs} +0 -0
  294. package/esm2020/grid-list/grid-list-module.mjs +55 -0
  295. package/esm2020/grid-list/grid-list.mjs +135 -0
  296. package/esm2020/grid-list/grid-tile.mjs +117 -0
  297. package/esm2020/grid-list/index.mjs +5 -0
  298. package/{esm2015/grid-list/public-api.js → esm2020/grid-list/public-api.mjs} +0 -0
  299. package/{esm2015/grid-list/testing/grid-list-harness-filters.js → esm2020/grid-list/testing/grid-list-harness-filters.mjs} +0 -0
  300. package/esm2020/grid-list/testing/grid-list-harness.mjs +72 -0
  301. package/esm2020/grid-list/testing/grid-tile-harness.mjs +65 -0
  302. package/{esm2015/grid-list/testing/index.js → esm2020/grid-list/testing/index.mjs} +0 -0
  303. package/{esm2015/grid-list/testing/public-api.js → esm2020/grid-list/testing/public-api.mjs} +0 -0
  304. package/{esm2015/grid-list/tile-coordinator.js → esm2020/grid-list/tile-coordinator.mjs} +0 -0
  305. package/{esm2015/grid-list/tile-styler.js → esm2020/grid-list/tile-styler.mjs} +0 -0
  306. package/{esm2015/icon/fake-svgs.js → esm2020/icon/fake-svgs.mjs} +0 -0
  307. package/esm2020/icon/icon-module.mjs +25 -0
  308. package/esm2020/icon/icon-registry.mjs +582 -0
  309. package/esm2020/icon/icon.mjs +357 -0
  310. package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
  311. package/{esm2015/icon/public-api.js → esm2020/icon/public-api.mjs} +0 -0
  312. package/esm2020/icon/testing/fake-icon-registry.mjs +92 -0
  313. package/{esm2015/icon/testing/icon-harness-filters.js → esm2020/icon/testing/icon-harness-filters.mjs} +0 -0
  314. package/esm2020/icon/testing/icon-harness.mjs +54 -0
  315. package/{esm2015/icon/testing/index.js → esm2020/icon/testing/index.mjs} +0 -0
  316. package/{esm2015/icon/testing/public-api.js → esm2020/icon/testing/public-api.mjs} +0 -0
  317. package/esm2020/icon/trusted-types.mjs +43 -0
  318. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  319. package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
  320. package/{esm2015/input/input-errors.js → esm2020/input/input-errors.mjs} +0 -0
  321. package/esm2020/input/input-module.mjs +51 -0
  322. package/{esm2015/input/input-value-accessor.js → esm2020/input/input-value-accessor.mjs} +0 -0
  323. package/esm2020/input/input.mjs +428 -0
  324. package/{esm2015/input/public-api.js → esm2020/input/public-api.mjs} +0 -0
  325. package/{esm2015/input/testing/index.js → esm2020/input/testing/index.mjs} +0 -0
  326. package/{esm2015/input/testing/input-harness-filters.js → esm2020/input/testing/input-harness-filters.mjs} +0 -0
  327. package/esm2020/input/testing/input-harness.mjs +113 -0
  328. package/esm2020/input/testing/native-option-harness.mjs +42 -0
  329. package/{esm2015/input/testing/native-select-harness-filters.js → esm2020/input/testing/native-select-harness-filters.mjs} +0 -0
  330. package/esm2020/input/testing/native-select-harness.mjs +79 -0
  331. package/{esm2015/input/testing/public-api.js → esm2020/input/testing/public-api.mjs} +0 -0
  332. package/{esm2015/list/index.js → esm2020/list/index.mjs} +0 -0
  333. package/esm2020/list/list-module.mjs +71 -0
  334. package/esm2020/list/list.mjs +216 -0
  335. package/{esm2015/list/public-api.js → esm2020/list/public-api.mjs} +0 -0
  336. package/esm2020/list/selection-list.mjs +612 -0
  337. package/esm2020/list/testing/action-list-harness.mjs +59 -0
  338. package/{esm2015/list/testing/index.js → esm2020/list/testing/index.mjs} +0 -0
  339. package/esm2020/list/testing/list-harness-base.mjs +88 -0
  340. package/{esm2015/list/testing/list-harness-filters.js → esm2020/list/testing/list-harness-filters.mjs} +0 -0
  341. package/{esm2015/list/testing/list-harness.js → esm2020/list/testing/list-harness.mjs} +0 -0
  342. package/esm2020/list/testing/list-item-harness-base.mjs +72 -0
  343. package/esm2020/list/testing/nav-list-harness.mjs +64 -0
  344. package/{esm2015/list/testing/public-api.js → esm2020/list/testing/public-api.mjs} +0 -0
  345. package/esm2020/list/testing/selection-list-harness.mjs +125 -0
  346. package/esm2020/menu/index.mjs +5 -0
  347. package/{esm2015/menu/menu-animations.js → esm2020/menu/menu-animations.mjs} +0 -0
  348. package/esm2020/menu/menu-content.mjs +97 -0
  349. package/{esm2015/menu/menu-errors.js → esm2020/menu/menu-errors.mjs} +0 -0
  350. package/esm2020/menu/menu-item.mjs +164 -0
  351. package/esm2020/menu/menu-module.mjs +58 -0
  352. package/{esm2015/menu/menu-panel.js → esm2020/menu/menu-panel.mjs} +0 -0
  353. package/{esm2015/menu/menu-positions.js → esm2020/menu/menu-positions.mjs} +0 -0
  354. package/esm2020/menu/menu-trigger.mjs +540 -0
  355. package/esm2020/menu/menu.mjs +401 -0
  356. package/{esm2015/menu/public-api.js → esm2020/menu/public-api.mjs} +0 -0
  357. package/{esm2015/menu/testing/index.js → esm2020/menu/testing/index.mjs} +0 -0
  358. package/{esm2015/menu/testing/menu-harness-filters.js → esm2020/menu/testing/menu-harness-filters.mjs} +0 -0
  359. package/esm2020/menu/testing/menu-harness.mjs +183 -0
  360. package/{esm2015/menu/testing/public-api.js → esm2020/menu/testing/public-api.mjs} +0 -0
  361. package/{esm2015/paginator/index.js → esm2020/paginator/index.mjs} +0 -0
  362. package/esm2020/paginator/paginator-intl.mjs +64 -0
  363. package/esm2020/paginator/paginator-module.mjs +47 -0
  364. package/esm2020/paginator/paginator.mjs +268 -0
  365. package/{esm2015/paginator/public-api.js → esm2020/paginator/public-api.mjs} +0 -0
  366. package/{esm2015/paginator/testing/index.js → esm2020/paginator/testing/index.mjs} +0 -0
  367. package/{esm2015/paginator/testing/paginator-harness-filters.js → esm2020/paginator/testing/paginator-harness-filters.mjs} +0 -0
  368. package/esm2020/paginator/testing/paginator-harness.mjs +91 -0
  369. package/{esm2015/paginator/testing/public-api.js → esm2020/paginator/testing/public-api.mjs} +0 -0
  370. package/{esm2015/progress-bar/index.js → esm2020/progress-bar/index.mjs} +0 -0
  371. package/esm2020/progress-bar/progress-bar-module.mjs +26 -0
  372. package/esm2020/progress-bar/progress-bar.mjs +187 -0
  373. package/{esm2015/progress-bar/public-api.js → esm2020/progress-bar/public-api.mjs} +0 -0
  374. package/{esm2015/progress-bar/testing/index.js → esm2020/progress-bar/testing/index.mjs} +0 -0
  375. package/{esm2015/progress-bar/testing/progress-bar-harness-filters.js → esm2020/progress-bar/testing/progress-bar-harness-filters.mjs} +0 -0
  376. package/esm2020/progress-bar/testing/progress-bar-harness.mjs +34 -0
  377. package/{esm2015/progress-bar/testing/public-api.js → esm2020/progress-bar/testing/public-api.mjs} +0 -0
  378. package/{esm2015/progress-spinner/index.js → esm2020/progress-spinner/index.mjs} +0 -0
  379. package/esm2020/progress-spinner/progress-spinner-module.mjs +36 -0
  380. package/esm2020/progress-spinner/progress-spinner.mjs +280 -0
  381. package/{esm2015/progress-spinner/public-api.js → esm2020/progress-spinner/public-api.mjs} +0 -0
  382. package/{esm2015/progress-spinner/testing/index.js → esm2020/progress-spinner/testing/index.mjs} +0 -0
  383. package/{esm2015/progress-spinner/testing/progress-spinner-harness-filters.js → esm2020/progress-spinner/testing/progress-spinner-harness-filters.mjs} +0 -0
  384. package/esm2020/progress-spinner/testing/progress-spinner-harness.mjs +35 -0
  385. package/{esm2015/progress-spinner/testing/public-api.js → esm2020/progress-spinner/testing/public-api.mjs} +0 -0
  386. package/{esm2015/radio/index.js → esm2020/radio/index.mjs} +0 -0
  387. package/{esm2015/radio/public-api.js → esm2020/radio/public-api.mjs} +0 -0
  388. package/esm2020/radio/radio-module.mjs +25 -0
  389. package/esm2020/radio/radio.mjs +570 -0
  390. package/{esm2015/radio/testing/index.js → esm2020/radio/testing/index.mjs} +0 -0
  391. package/{esm2015/radio/testing/public-api.js → esm2020/radio/testing/public-api.mjs} +0 -0
  392. package/{esm2015/radio/testing/radio-harness-filters.js → esm2020/radio/testing/radio-harness-filters.mjs} +0 -0
  393. package/esm2020/radio/testing/radio-harness.mjs +231 -0
  394. package/{esm2015/select/index.js → esm2020/select/index.mjs} +0 -0
  395. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  396. package/{esm2015/select/select-animations.js → esm2020/select/select-animations.mjs} +0 -0
  397. package/{esm2015/select/select-errors.js → esm2020/select/select-errors.mjs} +0 -0
  398. package/esm2020/select/select-module.mjs +58 -0
  399. package/esm2020/select/select.mjs +1188 -0
  400. package/{esm2015/select/testing/index.js → esm2020/select/testing/index.mjs} +0 -0
  401. package/{esm2015/select/testing/public-api.js → esm2020/select/testing/public-api.mjs} +0 -0
  402. package/{esm2015/select/testing/select-harness-filters.js → esm2020/select/testing/select-harness-filters.mjs} +0 -0
  403. package/esm2020/select/testing/select-harness.mjs +130 -0
  404. package/{esm2015/sidenav/drawer-animations.js → esm2020/sidenav/drawer-animations.mjs} +0 -0
  405. package/esm2020/sidenav/drawer.mjs +788 -0
  406. package/esm2020/sidenav/index.mjs +5 -0
  407. package/{esm2015/sidenav/public-api.js → esm2020/sidenav/public-api.mjs} +0 -0
  408. package/esm2020/sidenav/sidenav-module.mjs +71 -0
  409. package/esm2020/sidenav/sidenav.mjs +115 -0
  410. package/esm2020/sidenav/testing/drawer-container-harness.mjs +36 -0
  411. package/{esm2015/sidenav/testing/drawer-content-harness.js → esm2020/sidenav/testing/drawer-content-harness.mjs} +0 -0
  412. package/{esm2015/sidenav/testing/drawer-harness-filters.js → esm2020/sidenav/testing/drawer-harness-filters.mjs} +0 -0
  413. package/esm2020/sidenav/testing/drawer-harness.mjs +50 -0
  414. package/{esm2015/sidenav/testing/index.js → esm2020/sidenav/testing/index.mjs} +0 -0
  415. package/{esm2015/sidenav/testing/public-api.js → esm2020/sidenav/testing/public-api.mjs} +0 -0
  416. package/esm2020/sidenav/testing/sidenav-container-harness.mjs +36 -0
  417. package/{esm2015/sidenav/testing/sidenav-content-harness.js → esm2020/sidenav/testing/sidenav-content-harness.mjs} +0 -0
  418. package/esm2020/sidenav/testing/sidenav-harness.mjs +29 -0
  419. package/{esm2015/slide-toggle/index.js → esm2020/slide-toggle/index.mjs} +0 -0
  420. package/{esm2015/slide-toggle/public-api.js → esm2020/slide-toggle/public-api.mjs} +0 -0
  421. package/{esm2015/slide-toggle/slide-toggle-config.js → esm2020/slide-toggle/slide-toggle-config.mjs} +0 -0
  422. package/esm2020/slide-toggle/slide-toggle-module.mjs +57 -0
  423. package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +36 -0
  424. package/esm2020/slide-toggle/slide-toggle.mjs +253 -0
  425. package/{esm2015/slide-toggle/testing/index.js → esm2020/slide-toggle/testing/index.mjs} +0 -0
  426. package/{esm2015/slide-toggle/testing/public-api.js → esm2020/slide-toggle/testing/public-api.mjs} +0 -0
  427. package/{esm2015/slide-toggle/testing/slide-toggle-harness-filters.js → esm2020/slide-toggle/testing/slide-toggle-harness-filters.mjs} +0 -0
  428. package/esm2020/slide-toggle/testing/slide-toggle-harness.mjs +110 -0
  429. package/{esm2015/slider/index.js → esm2020/slider/index.mjs} +0 -0
  430. package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
  431. package/esm2020/slider/slider-module.mjs +26 -0
  432. package/esm2020/slider/slider.mjs +801 -0
  433. package/{esm2015/slider/testing/index.js → esm2020/slider/testing/index.mjs} +0 -0
  434. package/{esm2015/slider/testing/public-api.js → esm2020/slider/testing/public-api.mjs} +0 -0
  435. package/{esm2015/slider/testing/slider-harness-filters.js → esm2020/slider/testing/slider-harness-filters.mjs} +0 -0
  436. package/esm2020/slider/testing/slider-harness.mjs +114 -0
  437. package/{esm2015/snack-bar/index.js → esm2020/snack-bar/index.mjs} +0 -0
  438. package/{esm2015/snack-bar/public-api.js → esm2020/snack-bar/public-api.mjs} +0 -0
  439. package/esm2020/snack-bar/simple-snack-bar.mjs +44 -0
  440. package/{esm2015/snack-bar/snack-bar-animations.js → esm2020/snack-bar/snack-bar-animations.mjs} +0 -0
  441. package/{esm2015/snack-bar/snack-bar-config.js → esm2020/snack-bar/snack-bar-config.mjs} +0 -0
  442. package/esm2020/snack-bar/snack-bar-container.mjs +205 -0
  443. package/esm2020/snack-bar/snack-bar-module.mjs +47 -0
  444. package/esm2020/snack-bar/snack-bar-ref.mjs +90 -0
  445. package/esm2020/snack-bar/snack-bar.mjs +265 -0
  446. package/{esm2015/snack-bar/testing/index.js → esm2020/snack-bar/testing/index.mjs} +0 -0
  447. package/{esm2015/snack-bar/testing/public-api.js → esm2020/snack-bar/testing/public-api.mjs} +0 -0
  448. package/{esm2015/snack-bar/testing/snack-bar-harness-filters.js → esm2020/snack-bar/testing/snack-bar-harness-filters.mjs} +0 -0
  449. package/esm2020/snack-bar/testing/snack-bar-harness.mjs +118 -0
  450. package/{esm2015/sort/index.js → esm2020/sort/index.mjs} +0 -0
  451. package/{esm2015/sort/public-api.js → esm2020/sort/public-api.mjs} +0 -0
  452. package/{esm2015/sort/sort-animations.js → esm2020/sort/sort-animations.mjs} +0 -0
  453. package/{esm2015/sort/sort-direction.js → esm2020/sort/sort-direction.mjs} +0 -0
  454. package/{esm2015/sort/sort-errors.js → esm2020/sort/sort-errors.mjs} +0 -0
  455. package/esm2020/sort/sort-header-intl.mjs +43 -0
  456. package/esm2020/sort/sort-header.mjs +275 -0
  457. package/esm2020/sort/sort-module.mjs +29 -0
  458. package/esm2020/sort/sort.mjs +154 -0
  459. package/{esm2015/sort/testing/index.js → esm2020/sort/testing/index.mjs} +0 -0
  460. package/{esm2015/sort/testing/public-api.js → esm2020/sort/testing/public-api.mjs} +0 -0
  461. package/{esm2015/sort/testing/sort-harness-filters.js → esm2020/sort/testing/sort-harness-filters.mjs} +0 -0
  462. package/esm2020/sort/testing/sort-harness.mjs +36 -0
  463. package/esm2020/sort/testing/sort-header-harness.mjs +56 -0
  464. package/{esm2015/stepper/index.js → esm2020/stepper/index.mjs} +0 -0
  465. package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
  466. package/esm2020/stepper/step-content.mjs +26 -0
  467. package/esm2020/stepper/step-header.mjs +110 -0
  468. package/esm2020/stepper/step-label.mjs +21 -0
  469. package/{esm2015/stepper/stepper-animations.js → esm2020/stepper/stepper-animations.mjs} +0 -0
  470. package/esm2020/stepper/stepper-button.mjs +43 -0
  471. package/esm2020/stepper/stepper-icon.mjs +29 -0
  472. package/esm2020/stepper/stepper-intl.mjs +43 -0
  473. package/esm2020/stepper/stepper-module.mjs +97 -0
  474. package/esm2020/stepper/stepper.mjs +213 -0
  475. package/{esm2015/stepper/testing/index.js → esm2020/stepper/testing/index.mjs} +0 -0
  476. package/{esm2015/stepper/testing/public-api.js → esm2020/stepper/testing/public-api.mjs} +0 -0
  477. package/{esm2015/stepper/testing/step-harness-filters.js → esm2020/stepper/testing/step-harness-filters.mjs} +0 -0
  478. package/esm2020/stepper/testing/step-harness.mjs +90 -0
  479. package/esm2020/stepper/testing/stepper-button-harnesses.mjs +50 -0
  480. package/esm2020/stepper/testing/stepper-harness.mjs +50 -0
  481. package/esm2020/table/cell.mjs +139 -0
  482. package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
  483. package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
  484. package/esm2020/table/row.mjs +139 -0
  485. package/esm2020/table/table-data-source.mjs +310 -0
  486. package/esm2020/table/table-module.mjs +101 -0
  487. package/esm2020/table/table.mjs +71 -0
  488. package/esm2020/table/testing/cell-harness.mjs +72 -0
  489. package/{esm2015/table/testing/index.js → esm2020/table/testing/index.mjs} +0 -0
  490. package/{esm2015/table/testing/public-api.js → esm2020/table/testing/public-api.mjs} +0 -0
  491. package/esm2020/table/testing/row-harness.mjs +84 -0
  492. package/{esm2015/table/testing/table-harness-filters.js → esm2020/table/testing/table-harness-filters.mjs} +0 -0
  493. package/esm2020/table/testing/table-harness.mjs +88 -0
  494. package/esm2020/table/text-column.mjs +58 -0
  495. package/esm2020/tabs/index.mjs +5 -0
  496. package/esm2020/tabs/ink-bar.mjs +93 -0
  497. package/esm2020/tabs/paginated-tab-header.mjs +480 -0
  498. package/{esm2015/tabs/public-api.js → esm2020/tabs/public-api.mjs} +0 -0
  499. package/esm2020/tabs/tab-body.mjs +214 -0
  500. package/{esm2015/tabs/tab-config.js → esm2020/tabs/tab-config.mjs} +0 -0
  501. package/esm2020/tabs/tab-content.mjs +32 -0
  502. package/esm2020/tabs/tab-group.mjs +382 -0
  503. package/esm2020/tabs/tab-header.mjs +101 -0
  504. package/esm2020/tabs/tab-label-wrapper.mjs +41 -0
  505. package/esm2020/tabs/tab-label.mjs +43 -0
  506. package/{esm2015/tabs/tab-nav-bar/index.js → esm2020/tabs/tab-nav-bar/index.mjs} +0 -0
  507. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +263 -0
  508. package/esm2020/tabs/tab.mjs +106 -0
  509. package/{esm2015/tabs/tabs-animations.js → esm2020/tabs/tabs-animations.mjs} +0 -0
  510. package/esm2020/tabs/tabs-module.mjs +93 -0
  511. package/{esm2015/tabs/testing/index.js → esm2020/tabs/testing/index.mjs} +0 -0
  512. package/{esm2015/tabs/testing/public-api.js → esm2020/tabs/testing/public-api.mjs} +0 -0
  513. package/esm2020/tabs/testing/tab-group-harness.mjs +58 -0
  514. package/{esm2015/tabs/testing/tab-harness-filters.js → esm2020/tabs/testing/tab-harness-filters.mjs} +0 -0
  515. package/esm2020/tabs/testing/tab-harness.mjs +66 -0
  516. package/esm2020/tabs/testing/tab-link-harness.mjs +42 -0
  517. package/esm2020/tabs/testing/tab-nav-bar-harness.mjs +54 -0
  518. package/{esm2015/toolbar/index.js → esm2020/toolbar/index.mjs} +0 -0
  519. package/{esm2015/toolbar/public-api.js → esm2020/toolbar/public-api.mjs} +0 -0
  520. package/{esm2015/toolbar/testing/index.js → esm2020/toolbar/testing/index.mjs} +0 -0
  521. package/{esm2015/toolbar/testing/public-api.js → esm2020/toolbar/testing/public-api.mjs} +0 -0
  522. package/{esm2015/toolbar/testing/toolbar-harness-filters.js → esm2020/toolbar/testing/toolbar-harness-filters.mjs} +0 -0
  523. package/esm2020/toolbar/testing/toolbar-harness.mjs +40 -0
  524. package/esm2020/toolbar/toolbar-module.mjs +25 -0
  525. package/esm2020/toolbar/toolbar.mjs +88 -0
  526. package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
  527. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  528. package/{esm2015/tooltip/testing/index.js → esm2020/tooltip/testing/index.mjs} +0 -0
  529. package/{esm2015/tooltip/testing/public-api.js → esm2020/tooltip/testing/public-api.mjs} +0 -0
  530. package/{esm2015/tooltip/testing/tooltip-harness-filters.js → esm2020/tooltip/testing/tooltip-harness-filters.mjs} +0 -0
  531. package/esm2020/tooltip/testing/tooltip-harness.mjs +57 -0
  532. package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
  533. package/esm2020/tooltip/tooltip-module.mjs +44 -0
  534. package/esm2020/tooltip/tooltip.mjs +739 -0
  535. package/{esm2015/tree/data-source/flat-data-source.js → esm2020/tree/data-source/flat-data-source.mjs} +0 -0
  536. package/{esm2015/tree/data-source/nested-data-source.js → esm2020/tree/data-source/nested-data-source.mjs} +0 -0
  537. package/{esm2015/tree/index.js → esm2020/tree/index.mjs} +0 -0
  538. package/esm2020/tree/node.mjs +143 -0
  539. package/esm2020/tree/outlet.mjs +41 -0
  540. package/esm2020/tree/padding.mjs +37 -0
  541. package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
  542. package/{esm2015/tree/testing/index.js → esm2020/tree/testing/index.mjs} +0 -0
  543. package/esm2020/tree/testing/node-harness.mjs +69 -0
  544. package/{esm2015/tree/testing/public-api.js → esm2020/tree/testing/public-api.mjs} +0 -0
  545. package/{esm2015/tree/testing/tree-harness-filters.js → esm2020/tree/testing/tree-harness-filters.mjs} +0 -0
  546. package/esm2020/tree/testing/tree-harness.mjs +123 -0
  547. package/esm2020/tree/toggle.mjs +36 -0
  548. package/esm2020/tree/tree-module.mjs +51 -0
  549. package/esm2020/tree/tree.mjs +37 -0
  550. package/expansion/accordion.d.ts +3 -0
  551. package/expansion/expansion-module.d.ts +12 -7
  552. package/expansion/expansion-panel-content.d.ts +3 -0
  553. package/expansion/expansion-panel-header.d.ts +8 -1
  554. package/expansion/expansion-panel.d.ts +5 -0
  555. package/expansion/package.json +5 -5
  556. package/expansion/testing/package.json +5 -5
  557. package/fesm2015/autocomplete/testing.mjs +132 -0
  558. package/fesm2015/autocomplete/testing.mjs.map +1 -0
  559. package/fesm2015/autocomplete.mjs +958 -0
  560. package/fesm2015/autocomplete.mjs.map +1 -0
  561. package/fesm2015/badge/testing.mjs +97 -0
  562. package/fesm2015/badge/testing.mjs.map +1 -0
  563. package/fesm2015/badge.mjs +266 -0
  564. package/fesm2015/badge.mjs.map +1 -0
  565. package/fesm2015/bottom-sheet/testing.mjs +52 -0
  566. package/fesm2015/bottom-sheet/testing.mjs.map +1 -0
  567. package/fesm2015/bottom-sheet.mjs +596 -0
  568. package/fesm2015/bottom-sheet.mjs.map +1 -0
  569. package/fesm2015/button/testing.mjs +76 -0
  570. package/fesm2015/button/testing.mjs.map +1 -0
  571. package/fesm2015/button-toggle/testing.mjs +181 -0
  572. package/fesm2015/button-toggle/testing.mjs.map +1 -0
  573. package/fesm2015/button-toggle.mjs +502 -0
  574. package/fesm2015/button-toggle.mjs.map +1 -0
  575. package/fesm2015/button.mjs +202 -0
  576. package/fesm2015/button.mjs.map +1 -0
  577. package/fesm2015/card/testing.mjs +64 -0
  578. package/fesm2015/card/testing.mjs.map +1 -0
  579. package/fesm2015/card.mjs +322 -0
  580. package/fesm2015/card.mjs.map +1 -0
  581. package/fesm2015/checkbox/testing.mjs +168 -0
  582. package/fesm2015/checkbox/testing.mjs.map +1 -0
  583. package/fesm2015/checkbox.mjs +503 -0
  584. package/fesm2015/checkbox.mjs.map +1 -0
  585. package/fesm2015/chips/testing.mjs +423 -0
  586. package/fesm2015/chips/testing.mjs.map +1 -0
  587. package/fesm2015/chips.mjs +1354 -0
  588. package/fesm2015/chips.mjs.map +1 -0
  589. package/fesm2015/core/testing.mjs +120 -0
  590. package/fesm2015/core/testing.mjs.map +1 -0
  591. package/fesm2015/core.mjs +1719 -0
  592. package/fesm2015/core.mjs.map +1 -0
  593. package/fesm2015/datepicker/testing.mjs +635 -0
  594. package/fesm2015/datepicker/testing.mjs.map +1 -0
  595. package/fesm2015/datepicker.mjs +3948 -0
  596. package/fesm2015/datepicker.mjs.map +1 -0
  597. package/fesm2015/dialog/testing.mjs +119 -0
  598. package/fesm2015/dialog/testing.mjs.map +1 -0
  599. package/fesm2015/dialog.mjs +1155 -0
  600. package/fesm2015/dialog.mjs.map +1 -0
  601. package/fesm2015/divider/testing.mjs +39 -0
  602. package/fesm2015/divider/testing.mjs.map +1 -0
  603. package/fesm2015/divider.mjs +77 -0
  604. package/fesm2015/divider.mjs.map +1 -0
  605. package/fesm2015/expansion/testing.mjs +187 -0
  606. package/fesm2015/expansion/testing.mjs.map +1 -0
  607. package/fesm2015/expansion.mjs +641 -0
  608. package/fesm2015/expansion.mjs.map +1 -0
  609. package/fesm2015/form-field/testing/control.mjs +26 -0
  610. package/fesm2015/form-field/testing/control.mjs.map +1 -0
  611. package/fesm2015/form-field/testing.mjs +231 -0
  612. package/fesm2015/form-field/testing.mjs.map +1 -0
  613. package/fesm2015/form-field.mjs +814 -0
  614. package/fesm2015/form-field.mjs.map +1 -0
  615. package/fesm2015/grid-list/testing.mjs +161 -0
  616. package/fesm2015/grid-list/testing.mjs.map +1 -0
  617. package/fesm2015/grid-list.mjs +700 -0
  618. package/fesm2015/grid-list.mjs.map +1 -0
  619. package/fesm2015/icon/testing.mjs +163 -0
  620. package/fesm2015/icon/testing.mjs.map +1 -0
  621. package/fesm2015/icon.mjs +1016 -0
  622. package/fesm2015/icon.mjs.map +1 -0
  623. package/fesm2015/input/testing.mjs +281 -0
  624. package/fesm2015/input/testing.mjs.map +1 -0
  625. package/fesm2015/input.mjs +515 -0
  626. package/fesm2015/input.mjs.map +1 -0
  627. package/fesm2015/list/testing.mjs +486 -0
  628. package/fesm2015/list/testing.mjs.map +1 -0
  629. package/fesm2015/list.mjs +908 -0
  630. package/fesm2015/list.mjs.map +1 -0
  631. package/fesm2015/material.mjs +16 -0
  632. package/fesm2015/material.mjs.map +1 -0
  633. package/fesm2015/menu/testing.mjs +235 -0
  634. package/fesm2015/menu/testing.mjs.map +1 -0
  635. package/fesm2015/menu.mjs +1363 -0
  636. package/fesm2015/menu.mjs.map +1 -0
  637. package/fesm2015/paginator/testing.mjs +118 -0
  638. package/fesm2015/paginator/testing.mjs.map +1 -0
  639. package/fesm2015/paginator.mjs +387 -0
  640. package/fesm2015/paginator.mjs.map +1 -0
  641. package/fesm2015/progress-bar/testing.mjs +51 -0
  642. package/fesm2015/progress-bar/testing.mjs.map +1 -0
  643. package/fesm2015/progress-bar.mjs +225 -0
  644. package/fesm2015/progress-bar.mjs.map +1 -0
  645. package/fesm2015/progress-spinner/testing.mjs +52 -0
  646. package/fesm2015/progress-spinner/testing.mjs.map +1 -0
  647. package/fesm2015/progress-spinner.mjs +330 -0
  648. package/fesm2015/progress-spinner.mjs.map +1 -0
  649. package/fesm2015/radio/testing.mjs +284 -0
  650. package/fesm2015/radio/testing.mjs.map +1 -0
  651. package/fesm2015/radio.mjs +599 -0
  652. package/fesm2015/radio.mjs.map +1 -0
  653. package/fesm2015/select/testing.mjs +169 -0
  654. package/fesm2015/select/testing.mjs.map +1 -0
  655. package/fesm2015/select.mjs +1346 -0
  656. package/fesm2015/select.mjs.map +1 -0
  657. package/fesm2015/sidenav/testing.mjs +195 -0
  658. package/fesm2015/sidenav/testing.mjs.map +1 -0
  659. package/fesm2015/sidenav.mjs +1013 -0
  660. package/fesm2015/sidenav.mjs.map +1 -0
  661. package/fesm2015/slide-toggle/testing.mjs +151 -0
  662. package/fesm2015/slide-toggle/testing.mjs.map +1 -0
  663. package/fesm2015/slide-toggle.mjs +359 -0
  664. package/fesm2015/slide-toggle.mjs.map +1 -0
  665. package/fesm2015/slider/testing.mjs +153 -0
  666. package/fesm2015/slider/testing.mjs.map +1 -0
  667. package/fesm2015/slider.mjs +830 -0
  668. package/fesm2015/slider.mjs.map +1 -0
  669. package/fesm2015/snack-bar/testing.mjs +153 -0
  670. package/fesm2015/snack-bar/testing.mjs.map +1 -0
  671. package/fesm2015/snack-bar.mjs +698 -0
  672. package/fesm2015/snack-bar.mjs.map +1 -0
  673. package/fesm2015/sort/testing.mjs +110 -0
  674. package/fesm2015/sort/testing.mjs.map +1 -0
  675. package/fesm2015/sort.mjs +605 -0
  676. package/fesm2015/sort.mjs.map +1 -0
  677. package/fesm2015/stepper/testing.mjs +216 -0
  678. package/fesm2015/stepper/testing.mjs.map +1 -0
  679. package/fesm2015/stepper.mjs +579 -0
  680. package/fesm2015/stepper.mjs.map +1 -0
  681. package/fesm2015/table/testing.mjs +259 -0
  682. package/fesm2015/table/testing.mjs.map +1 -0
  683. package/fesm2015/table.mjs +817 -0
  684. package/fesm2015/table.mjs.map +1 -0
  685. package/fesm2015/tabs/testing.mjs +245 -0
  686. package/fesm2015/tabs/testing.mjs.map +1 -0
  687. package/fesm2015/tabs.mjs +1846 -0
  688. package/fesm2015/tabs.mjs.map +1 -0
  689. package/fesm2015/toolbar/testing.mjs +59 -0
  690. package/fesm2015/toolbar/testing.mjs.map +1 -0
  691. package/fesm2015/toolbar.mjs +118 -0
  692. package/fesm2015/toolbar.mjs.map +1 -0
  693. package/fesm2015/tooltip/testing.mjs +80 -0
  694. package/fesm2015/tooltip/testing.mjs.map +1 -0
  695. package/fesm2015/tooltip.mjs +820 -0
  696. package/fesm2015/tooltip.mjs.map +1 -0
  697. package/fesm2015/tree/testing.mjs +215 -0
  698. package/fesm2015/tree/testing.mjs.map +1 -0
  699. package/fesm2015/tree.mjs +520 -0
  700. package/fesm2015/tree.mjs.map +1 -0
  701. package/fesm2020/autocomplete/testing.mjs +128 -0
  702. package/fesm2020/autocomplete/testing.mjs.map +1 -0
  703. package/fesm2020/autocomplete.mjs +958 -0
  704. package/fesm2020/autocomplete.mjs.map +1 -0
  705. package/fesm2020/badge/testing.mjs +99 -0
  706. package/fesm2020/badge/testing.mjs.map +1 -0
  707. package/fesm2020/badge.mjs +271 -0
  708. package/fesm2020/badge.mjs.map +1 -0
  709. package/fesm2020/bottom-sheet/testing.mjs +62 -0
  710. package/fesm2020/bottom-sheet/testing.mjs.map +1 -0
  711. package/fesm2020/bottom-sheet.mjs +592 -0
  712. package/fesm2020/bottom-sheet.mjs.map +1 -0
  713. package/fesm2020/button/testing.mjs +78 -0
  714. package/fesm2020/button/testing.mjs.map +1 -0
  715. package/fesm2020/button-toggle/testing.mjs +176 -0
  716. package/fesm2020/button-toggle/testing.mjs.map +1 -0
  717. package/fesm2020/button-toggle.mjs +505 -0
  718. package/fesm2020/button-toggle.mjs.map +1 -0
  719. package/fesm2020/button.mjs +205 -0
  720. package/fesm2020/button.mjs.map +1 -0
  721. package/fesm2020/card/testing.mjs +70 -0
  722. package/fesm2020/card/testing.mjs.map +1 -0
  723. package/fesm2020/card.mjs +320 -0
  724. package/fesm2020/card.mjs.map +1 -0
  725. package/fesm2020/checkbox/testing.mjs +150 -0
  726. package/fesm2020/checkbox/testing.mjs.map +1 -0
  727. package/fesm2020/checkbox.mjs +507 -0
  728. package/fesm2020/checkbox.mjs.map +1 -0
  729. package/fesm2020/chips/testing.mjs +398 -0
  730. package/fesm2020/chips/testing.mjs.map +1 -0
  731. package/fesm2020/chips.mjs +1346 -0
  732. package/fesm2020/chips.mjs.map +1 -0
  733. package/fesm2020/core/testing.mjs +131 -0
  734. package/fesm2020/core/testing.mjs.map +1 -0
  735. package/fesm2020/core.mjs +1731 -0
  736. package/fesm2020/core.mjs.map +1 -0
  737. package/fesm2020/datepicker/testing.mjs +572 -0
  738. package/fesm2020/datepicker/testing.mjs.map +1 -0
  739. package/fesm2020/datepicker.mjs +3921 -0
  740. package/fesm2020/datepicker.mjs.map +1 -0
  741. package/fesm2020/dialog/testing.mjs +110 -0
  742. package/fesm2020/dialog/testing.mjs.map +1 -0
  743. package/fesm2020/dialog.mjs +1147 -0
  744. package/fesm2020/dialog.mjs.map +1 -0
  745. package/fesm2020/divider/testing.mjs +49 -0
  746. package/fesm2020/divider/testing.mjs.map +1 -0
  747. package/fesm2020/divider.mjs +77 -0
  748. package/fesm2020/divider.mjs.map +1 -0
  749. package/fesm2020/expansion/testing.mjs +176 -0
  750. package/fesm2020/expansion/testing.mjs.map +1 -0
  751. package/fesm2020/expansion.mjs +644 -0
  752. package/fesm2020/expansion.mjs.map +1 -0
  753. package/fesm2020/form-field/testing/control.mjs +26 -0
  754. package/fesm2020/form-field/testing/control.mjs.map +1 -0
  755. package/fesm2020/form-field/testing.mjs +209 -0
  756. package/fesm2020/form-field/testing.mjs.map +1 -0
  757. package/fesm2020/form-field.mjs +817 -0
  758. package/fesm2020/form-field.mjs.map +1 -0
  759. package/fesm2020/grid-list/testing.mjs +162 -0
  760. package/fesm2020/grid-list/testing.mjs.map +1 -0
  761. package/fesm2020/grid-list.mjs +696 -0
  762. package/fesm2020/grid-list.mjs.map +1 -0
  763. package/fesm2020/icon/testing.mjs +169 -0
  764. package/fesm2020/icon/testing.mjs.map +1 -0
  765. package/fesm2020/icon.mjs +1010 -0
  766. package/fesm2020/icon.mjs.map +1 -0
  767. package/fesm2020/input/testing.mjs +265 -0
  768. package/fesm2020/input/testing.mjs.map +1 -0
  769. package/fesm2020/input.mjs +512 -0
  770. package/fesm2020/input.mjs.map +1 -0
  771. package/fesm2020/list/testing.mjs +464 -0
  772. package/fesm2020/list/testing.mjs.map +1 -0
  773. package/fesm2020/list.mjs +901 -0
  774. package/fesm2020/list.mjs.map +1 -0
  775. package/fesm2020/material.mjs +16 -0
  776. package/fesm2020/material.mjs.map +1 -0
  777. package/fesm2020/menu/testing.mjs +210 -0
  778. package/fesm2020/menu/testing.mjs.map +1 -0
  779. package/fesm2020/menu.mjs +1365 -0
  780. package/fesm2020/menu.mjs.map +1 -0
  781. package/fesm2020/paginator/testing.mjs +118 -0
  782. package/fesm2020/paginator/testing.mjs.map +1 -0
  783. package/fesm2020/paginator.mjs +385 -0
  784. package/fesm2020/paginator.mjs.map +1 -0
  785. package/fesm2020/progress-bar/testing.mjs +61 -0
  786. package/fesm2020/progress-bar/testing.mjs.map +1 -0
  787. package/fesm2020/progress-bar.mjs +223 -0
  788. package/fesm2020/progress-bar.mjs.map +1 -0
  789. package/fesm2020/progress-spinner/testing.mjs +62 -0
  790. package/fesm2020/progress-spinner/testing.mjs.map +1 -0
  791. package/fesm2020/progress-spinner.mjs +326 -0
  792. package/fesm2020/progress-spinner.mjs.map +1 -0
  793. package/fesm2020/radio/testing.mjs +258 -0
  794. package/fesm2020/radio/testing.mjs.map +1 -0
  795. package/fesm2020/radio.mjs +604 -0
  796. package/fesm2020/radio.mjs.map +1 -0
  797. package/fesm2020/select/testing.mjs +157 -0
  798. package/fesm2020/select/testing.mjs.map +1 -0
  799. package/fesm2020/select.mjs +1338 -0
  800. package/fesm2020/select.mjs.map +1 -0
  801. package/fesm2020/sidenav/testing.mjs +214 -0
  802. package/fesm2020/sidenav/testing.mjs.map +1 -0
  803. package/fesm2020/sidenav.mjs +1004 -0
  804. package/fesm2020/sidenav.mjs.map +1 -0
  805. package/fesm2020/slide-toggle/testing.mjs +137 -0
  806. package/fesm2020/slide-toggle/testing.mjs.map +1 -0
  807. package/fesm2020/slide-toggle.mjs +364 -0
  808. package/fesm2020/slide-toggle.mjs.map +1 -0
  809. package/fesm2020/slider/testing.mjs +133 -0
  810. package/fesm2020/slider/testing.mjs.map +1 -0
  811. package/fesm2020/slider.mjs +835 -0
  812. package/fesm2020/slider.mjs.map +1 -0
  813. package/fesm2020/snack-bar/testing.mjs +145 -0
  814. package/fesm2020/snack-bar/testing.mjs.map +1 -0
  815. package/fesm2020/snack-bar.mjs +701 -0
  816. package/fesm2020/snack-bar.mjs.map +1 -0
  817. package/fesm2020/sort/testing.mjs +109 -0
  818. package/fesm2020/sort/testing.mjs.map +1 -0
  819. package/fesm2020/sort.mjs +609 -0
  820. package/fesm2020/sort.mjs.map +1 -0
  821. package/fesm2020/stepper/testing.mjs +206 -0
  822. package/fesm2020/stepper/testing.mjs.map +1 -0
  823. package/fesm2020/stepper.mjs +589 -0
  824. package/fesm2020/stepper.mjs.map +1 -0
  825. package/fesm2020/table/testing.mjs +259 -0
  826. package/fesm2020/table/testing.mjs.map +1 -0
  827. package/fesm2020/table.mjs +814 -0
  828. package/fesm2020/table.mjs.map +1 -0
  829. package/fesm2020/tabs/testing.mjs +234 -0
  830. package/fesm2020/tabs/testing.mjs.map +1 -0
  831. package/fesm2020/tabs.mjs +1829 -0
  832. package/fesm2020/tabs.mjs.map +1 -0
  833. package/fesm2020/toolbar/testing.mjs +67 -0
  834. package/fesm2020/toolbar/testing.mjs.map +1 -0
  835. package/fesm2020/toolbar.mjs +123 -0
  836. package/fesm2020/toolbar.mjs.map +1 -0
  837. package/fesm2020/tooltip/testing.mjs +84 -0
  838. package/fesm2020/tooltip/testing.mjs.map +1 -0
  839. package/fesm2020/tooltip.mjs +815 -0
  840. package/fesm2020/tooltip.mjs.map +1 -0
  841. package/fesm2020/tree/testing.mjs +217 -0
  842. package/fesm2020/tree/testing.mjs.map +1 -0
  843. package/fesm2020/tree.mjs +514 -0
  844. package/fesm2020/tree.mjs.map +1 -0
  845. package/form-field/error.d.ts +3 -0
  846. package/form-field/form-field-control.d.ts +3 -0
  847. package/form-field/form-field-module.d.ts +14 -7
  848. package/form-field/form-field.d.ts +4 -1
  849. package/form-field/hint.d.ts +3 -0
  850. package/form-field/label.d.ts +3 -7
  851. package/form-field/package.json +5 -5
  852. package/form-field/placeholder.d.ts +3 -7
  853. package/form-field/prefix.d.ts +3 -0
  854. package/form-field/suffix.d.ts +3 -0
  855. package/form-field/testing/control/package.json +5 -5
  856. package/form-field/testing/package.json +5 -5
  857. package/grid-list/grid-list-module.d.ts +7 -7
  858. package/grid-list/grid-list.d.ts +3 -0
  859. package/grid-list/grid-tile.d.ts +11 -0
  860. package/grid-list/index.d.ts +0 -1
  861. package/grid-list/package.json +5 -5
  862. package/grid-list/testing/package.json +5 -5
  863. package/icon/icon-module.d.ts +6 -7
  864. package/icon/icon-registry.d.ts +3 -7
  865. package/icon/icon.d.ts +4 -1
  866. package/icon/package.json +5 -5
  867. package/icon/testing/fake-icon-registry.d.ts +6 -0
  868. package/icon/testing/package.json +5 -5
  869. package/input/input-module.d.ts +8 -7
  870. package/input/input.d.ts +4 -1
  871. package/input/package.json +5 -5
  872. package/input/testing/package.json +5 -5
  873. package/list/list-module.d.ts +9 -7
  874. package/list/list.d.ts +15 -2
  875. package/list/package.json +5 -5
  876. package/list/selection-list.d.ts +7 -2
  877. package/list/testing/package.json +5 -5
  878. package/menu/index.d.ts +0 -2
  879. package/menu/menu-content.d.ts +5 -7
  880. package/menu/menu-item.d.ts +4 -1
  881. package/menu/menu-module.d.ts +12 -7
  882. package/menu/menu-trigger.d.ts +5 -0
  883. package/menu/menu.d.ts +5 -0
  884. package/menu/package.json +5 -5
  885. package/menu/testing/package.json +5 -5
  886. package/package.json +612 -8
  887. package/paginator/package.json +5 -5
  888. package/paginator/paginator-intl.d.ts +3 -0
  889. package/paginator/paginator-module.d.ts +10 -7
  890. package/paginator/paginator.d.ts +6 -1
  891. package/paginator/testing/package.json +5 -5
  892. package/progress-bar/package.json +5 -5
  893. package/progress-bar/progress-bar-module.d.ts +7 -7
  894. package/progress-bar/progress-bar.d.ts +4 -1
  895. package/progress-bar/testing/package.json +5 -5
  896. package/progress-spinner/package.json +5 -5
  897. package/progress-spinner/progress-spinner-module.d.ts +7 -0
  898. package/progress-spinner/progress-spinner.d.ts +6 -1
  899. package/progress-spinner/testing/package.json +5 -5
  900. package/radio/package.json +5 -5
  901. package/radio/radio-module.d.ts +6 -7
  902. package/radio/radio.d.ts +10 -1
  903. package/radio/testing/package.json +5 -5
  904. package/schematics/ng-add/fonts/material-fonts.js +8 -17
  905. package/schematics/ng-add/fonts/material-fonts.mjs +8 -17
  906. package/schematics/ng-add/index.js +8 -8
  907. package/schematics/ng-add/index.mjs +8 -8
  908. package/schematics/ng-add/setup-project.js +23 -32
  909. package/schematics/ng-add/setup-project.mjs +23 -32
  910. package/schematics/ng-add/theming/create-custom-theme.js +2 -2
  911. package/schematics/ng-add/theming/create-custom-theme.mjs +2 -2
  912. package/schematics/ng-add/theming/theming.js +35 -46
  913. package/schematics/ng-add/theming/theming.mjs +35 -46
  914. package/schematics/ng-generate/address-form/index.js +13 -22
  915. package/schematics/ng-generate/address-form/index.mjs +13 -22
  916. package/schematics/ng-generate/dashboard/index.js +13 -22
  917. package/schematics/ng-generate/dashboard/index.mjs +13 -22
  918. package/schematics/ng-generate/navigation/index.js +13 -22
  919. package/schematics/ng-generate/navigation/index.mjs +13 -22
  920. package/schematics/ng-generate/table/index.js +10 -19
  921. package/schematics/ng-generate/table/index.mjs +10 -19
  922. package/schematics/ng-generate/tree/index.js +10 -19
  923. package/schematics/ng-generate/tree/index.mjs +10 -19
  924. package/schematics/ng-update/index.js +9 -9
  925. package/schematics/ng-update/index.mjs +9 -9
  926. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +24 -24
  927. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +24 -24
  928. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +5 -5
  929. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +5 -5
  930. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +2 -2
  931. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.mjs +2 -2
  932. package/schematics/ng-update/migrations/misc-checks/misc-imports.js +2 -2
  933. package/schematics/ng-update/migrations/misc-checks/misc-imports.mjs +2 -2
  934. package/schematics/ng-update/migrations/misc-checks/misc-template.js +4 -4
  935. package/schematics/ng-update/migrations/misc-checks/misc-template.mjs +4 -4
  936. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +7 -7
  937. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.mjs +7 -7
  938. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +2 -3
  939. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +2 -3
  940. package/schematics/ng-update/migrations/theming-api-v12/migration.d.ts +6 -6
  941. package/schematics/ng-update/migrations/theming-api-v12/migration.js +12 -12
  942. package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +12 -12
  943. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.js +3 -3
  944. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.mjs +3 -3
  945. package/schematics/ng-update/typescript/module-specifiers.js +3 -3
  946. package/schematics/ng-update/typescript/module-specifiers.mjs +3 -3
  947. package/schematics/package.json +3 -0
  948. package/schematics/paths.js +3 -3
  949. package/schematics/paths.mjs +3 -3
  950. package/select/package.json +5 -5
  951. package/select/select-module.d.ts +10 -7
  952. package/select/select.d.ts +8 -1
  953. package/select/testing/package.json +5 -5
  954. package/sidenav/drawer.d.ts +7 -0
  955. package/sidenav/index.d.ts +0 -1
  956. package/sidenav/package.json +5 -5
  957. package/sidenav/sidenav-module.d.ts +10 -0
  958. package/sidenav/sidenav.d.ts +7 -0
  959. package/sidenav/testing/package.json +5 -5
  960. package/slide-toggle/package.json +5 -5
  961. package/slide-toggle/slide-toggle-module.d.ts +11 -7
  962. package/slide-toggle/slide-toggle-required-validator.d.ts +3 -0
  963. package/slide-toggle/slide-toggle.d.ts +4 -1
  964. package/slide-toggle/testing/package.json +5 -5
  965. package/slider/package.json +5 -5
  966. package/slider/slider-module.d.ts +7 -7
  967. package/slider/slider.d.ts +4 -1
  968. package/slider/testing/package.json +5 -5
  969. package/snack-bar/package.json +5 -5
  970. package/snack-bar/simple-snack-bar.d.ts +3 -7
  971. package/snack-bar/snack-bar-container.d.ts +3 -0
  972. package/snack-bar/snack-bar-module.d.ts +11 -7
  973. package/snack-bar/snack-bar.d.ts +3 -0
  974. package/snack-bar/testing/package.json +5 -5
  975. package/sort/package.json +5 -5
  976. package/sort/sort-header-intl.d.ts +3 -0
  977. package/sort/sort-header.d.ts +4 -1
  978. package/sort/sort-module.d.ts +8 -7
  979. package/sort/sort.d.ts +4 -1
  980. package/sort/testing/package.json +5 -5
  981. package/stepper/package.json +5 -5
  982. package/stepper/step-content.d.ts +3 -0
  983. package/stepper/step-header.d.ts +6 -1
  984. package/stepper/step-label.d.ts +3 -7
  985. package/stepper/stepper-button.d.ts +5 -0
  986. package/stepper/stepper-icon.d.ts +3 -0
  987. package/stepper/stepper-intl.d.ts +7 -0
  988. package/stepper/stepper-module.d.ts +16 -7
  989. package/stepper/stepper.d.ts +11 -0
  990. package/stepper/testing/package.json +5 -5
  991. package/table/cell.d.ts +15 -7
  992. package/table/package.json +5 -5
  993. package/table/row.d.ts +15 -0
  994. package/table/table-module.d.ts +10 -7
  995. package/table/table.d.ts +5 -0
  996. package/table/testing/package.json +5 -5
  997. package/table/text-column.d.ts +3 -0
  998. package/tabs/index.d.ts +0 -4
  999. package/tabs/ink-bar.d.ts +3 -0
  1000. package/tabs/package.json +5 -5
  1001. package/tabs/paginated-tab-header.d.ts +3 -0
  1002. package/tabs/tab-body.d.ts +7 -0
  1003. package/tabs/tab-content.d.ts +3 -0
  1004. package/tabs/tab-group.d.ts +6 -1
  1005. package/tabs/tab-header.d.ts +5 -0
  1006. package/tabs/tab-label-wrapper.d.ts +4 -1
  1007. package/tabs/tab-label.d.ts +3 -0
  1008. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +10 -1
  1009. package/tabs/tab.d.ts +4 -1
  1010. package/tabs/tabs-module.d.ts +18 -7
  1011. package/tabs/testing/package.json +5 -5
  1012. package/toolbar/package.json +5 -5
  1013. package/toolbar/testing/package.json +5 -5
  1014. package/toolbar/toolbar-module.d.ts +6 -7
  1015. package/toolbar/toolbar.d.ts +6 -1
  1016. package/tooltip/package.json +5 -5
  1017. package/tooltip/testing/package.json +5 -5
  1018. package/tooltip/tooltip-module.d.ts +10 -7
  1019. package/tooltip/tooltip.d.ts +11 -2
  1020. package/tree/node.d.ts +8 -1
  1021. package/tree/outlet.d.ts +3 -0
  1022. package/tree/package.json +5 -5
  1023. package/tree/padding.d.ts +3 -0
  1024. package/tree/testing/package.json +5 -5
  1025. package/tree/toggle.d.ts +3 -7
  1026. package/tree/tree-module.d.ts +11 -7
  1027. package/tree/tree.d.ts +3 -0
  1028. package/autocomplete/index.metadata.json +0 -1
  1029. package/badge/index.metadata.json +0 -1
  1030. package/bottom-sheet/index.metadata.json +0 -1
  1031. package/bundles/material-autocomplete-testing.umd.js +0 -564
  1032. package/bundles/material-autocomplete-testing.umd.js.map +0 -1
  1033. package/bundles/material-autocomplete.umd.js +0 -1266
  1034. package/bundles/material-autocomplete.umd.js.map +0 -1
  1035. package/bundles/material-badge-testing.umd.js +0 -474
  1036. package/bundles/material-badge-testing.umd.js.map +0 -1
  1037. package/bundles/material-badge.umd.js +0 -604
  1038. package/bundles/material-badge.umd.js.map +0 -1
  1039. package/bundles/material-bottom-sheet-testing.umd.js +0 -396
  1040. package/bundles/material-bottom-sheet-testing.umd.js.map +0 -1
  1041. package/bundles/material-bottom-sheet.umd.js +0 -948
  1042. package/bundles/material-bottom-sheet.umd.js.map +0 -1
  1043. package/bundles/material-button-testing.umd.js +0 -444
  1044. package/bundles/material-button-testing.umd.js.map +0 -1
  1045. package/bundles/material-button-toggle-testing.umd.js +0 -628
  1046. package/bundles/material-button-toggle-testing.umd.js.map +0 -1
  1047. package/bundles/material-button-toggle.umd.js +0 -850
  1048. package/bundles/material-button-toggle.umd.js.map +0 -1
  1049. package/bundles/material-button.umd.js +0 -545
  1050. package/bundles/material-button.umd.js.map +0 -1
  1051. package/bundles/material-card-testing.umd.js +0 -408
  1052. package/bundles/material-card-testing.umd.js.map +0 -1
  1053. package/bundles/material-card.umd.js +0 -337
  1054. package/bundles/material-card.umd.js.map +0 -1
  1055. package/bundles/material-checkbox-testing.umd.js +0 -615
  1056. package/bundles/material-checkbox-testing.umd.js.map +0 -1
  1057. package/bundles/material-checkbox.umd.js +0 -829
  1058. package/bundles/material-checkbox.umd.js.map +0 -1
  1059. package/bundles/material-chips-testing.umd.js +0 -1023
  1060. package/bundles/material-chips-testing.umd.js.map +0 -1
  1061. package/bundles/material-chips.umd.js +0 -1753
  1062. package/bundles/material-chips.umd.js.map +0 -1
  1063. package/bundles/material-core-testing.umd.js +0 -518
  1064. package/bundles/material-core-testing.umd.js.map +0 -1
  1065. package/bundles/material-core.umd.js +0 -2175
  1066. package/bundles/material-core.umd.js.map +0 -1
  1067. package/bundles/material-datepicker-testing.umd.js +0 -1366
  1068. package/bundles/material-datepicker-testing.umd.js.map +0 -1
  1069. package/bundles/material-datepicker.umd.js +0 -4332
  1070. package/bundles/material-datepicker.umd.js.map +0 -1
  1071. package/bundles/material-dialog-testing.umd.js +0 -500
  1072. package/bundles/material-dialog-testing.umd.js.map +0 -1
  1073. package/bundles/material-dialog.umd.js +0 -1487
  1074. package/bundles/material-dialog.umd.js.map +0 -1
  1075. package/bundles/material-divider-testing.umd.js +0 -380
  1076. package/bundles/material-divider-testing.umd.js.map +0 -1
  1077. package/bundles/material-divider.umd.js +0 -95
  1078. package/bundles/material-divider.umd.js.map +0 -1
  1079. package/bundles/material-expansion-testing.umd.js +0 -627
  1080. package/bundles/material-expansion-testing.umd.js.map +0 -1
  1081. package/bundles/material-expansion.umd.js +0 -949
  1082. package/bundles/material-expansion.umd.js.map +0 -1
  1083. package/bundles/material-form-field-testing-control.umd.js +0 -350
  1084. package/bundles/material-form-field-testing-control.umd.js.map +0 -1
  1085. package/bundles/material-form-field-testing.umd.js +0 -708
  1086. package/bundles/material-form-field-testing.umd.js.map +0 -1
  1087. package/bundles/material-form-field.umd.js +0 -1131
  1088. package/bundles/material-form-field.umd.js.map +0 -1
  1089. package/bundles/material-grid-list-testing.umd.js +0 -566
  1090. package/bundles/material-grid-list-testing.umd.js.map +0 -1
  1091. package/bundles/material-grid-list.umd.js +0 -1070
  1092. package/bundles/material-grid-list.umd.js.map +0 -1
  1093. package/bundles/material-icon-testing.umd.js +0 -527
  1094. package/bundles/material-icon-testing.umd.js.map +0 -1
  1095. package/bundles/material-icon.umd.js +0 -1391
  1096. package/bundles/material-icon.umd.js.map +0 -1
  1097. package/bundles/material-input-testing.umd.js +0 -806
  1098. package/bundles/material-input-testing.umd.js.map +0 -1
  1099. package/bundles/material-input.umd.js +0 -817
  1100. package/bundles/material-input.umd.js.map +0 -1
  1101. package/bundles/material-list-testing.umd.js +0 -1092
  1102. package/bundles/material-list-testing.umd.js.map +0 -1
  1103. package/bundles/material-list.umd.js +0 -1284
  1104. package/bundles/material-list.umd.js.map +0 -1
  1105. package/bundles/material-menu-testing.umd.js +0 -722
  1106. package/bundles/material-menu-testing.umd.js.map +0 -1
  1107. package/bundles/material-menu.umd.js +0 -1677
  1108. package/bundles/material-menu.umd.js.map +0 -1
  1109. package/bundles/material-paginator-testing.umd.js +0 -504
  1110. package/bundles/material-paginator-testing.umd.js.map +0 -1
  1111. package/bundles/material-paginator.umd.js +0 -746
  1112. package/bundles/material-paginator.umd.js.map +0 -1
  1113. package/bundles/material-progress-bar-testing.umd.js +0 -395
  1114. package/bundles/material-progress-bar-testing.umd.js.map +0 -1
  1115. package/bundles/material-progress-bar.umd.js +0 -546
  1116. package/bundles/material-progress-bar.umd.js.map +0 -1
  1117. package/bundles/material-progress-spinner-testing.umd.js +0 -399
  1118. package/bundles/material-progress-spinner-testing.umd.js.map +0 -1
  1119. package/bundles/material-progress-spinner.umd.js +0 -631
  1120. package/bundles/material-progress-spinner.umd.js.map +0 -1
  1121. package/bundles/material-radio-testing.umd.js +0 -812
  1122. package/bundles/material-radio-testing.umd.js.map +0 -1
  1123. package/bundles/material-radio.umd.js +0 -971
  1124. package/bundles/material-radio.umd.js.map +0 -1
  1125. package/bundles/material-select-testing.umd.js +0 -620
  1126. package/bundles/material-select-testing.umd.js.map +0 -1
  1127. package/bundles/material-select.umd.js +0 -1667
  1128. package/bundles/material-select.umd.js.map +0 -1
  1129. package/bundles/material-sidenav-testing.umd.js +0 -603
  1130. package/bundles/material-sidenav-testing.umd.js.map +0 -1
  1131. package/bundles/material-sidenav.umd.js +0 -1368
  1132. package/bundles/material-sidenav.umd.js.map +0 -1
  1133. package/bundles/material-slide-toggle-testing.umd.js +0 -582
  1134. package/bundles/material-slide-toggle-testing.umd.js.map +0 -1
  1135. package/bundles/material-slide-toggle.umd.js +0 -670
  1136. package/bundles/material-slide-toggle.umd.js.map +0 -1
  1137. package/bundles/material-slider-testing.umd.js +0 -587
  1138. package/bundles/material-slider-testing.umd.js.map +0 -1
  1139. package/bundles/material-slider.umd.js +0 -1186
  1140. package/bundles/material-slider.umd.js.map +0 -1
  1141. package/bundles/material-snack-bar-testing.umd.js +0 -553
  1142. package/bundles/material-snack-bar-testing.umd.js.map +0 -1
  1143. package/bundles/material-snack-bar.umd.js +0 -1075
  1144. package/bundles/material-snack-bar.umd.js.map +0 -1
  1145. package/bundles/material-sort-testing.umd.js +0 -493
  1146. package/bundles/material-sort-testing.umd.js.map +0 -1
  1147. package/bundles/material-sort.umd.js +0 -943
  1148. package/bundles/material-sort.umd.js.map +0 -1
  1149. package/bundles/material-stepper-testing.umd.js +0 -703
  1150. package/bundles/material-stepper-testing.umd.js.map +0 -1
  1151. package/bundles/material-stepper.umd.js +0 -893
  1152. package/bundles/material-stepper.umd.js.map +0 -1
  1153. package/bundles/material-table-testing.umd.js +0 -700
  1154. package/bundles/material-table-testing.umd.js.map +0 -1
  1155. package/bundles/material-table.umd.js +0 -1121
  1156. package/bundles/material-table.umd.js.map +0 -1
  1157. package/bundles/material-tabs-testing.umd.js +0 -744
  1158. package/bundles/material-tabs-testing.umd.js.map +0 -1
  1159. package/bundles/material-tabs.umd.js +0 -2183
  1160. package/bundles/material-tabs.umd.js.map +0 -1
  1161. package/bundles/material-toolbar-testing.umd.js +0 -406
  1162. package/bundles/material-toolbar-testing.umd.js.map +0 -1
  1163. package/bundles/material-toolbar.umd.js +0 -454
  1164. package/bundles/material-toolbar.umd.js.map +0 -1
  1165. package/bundles/material-tooltip-testing.umd.js +0 -460
  1166. package/bundles/material-tooltip-testing.umd.js.map +0 -1
  1167. package/bundles/material-tooltip.umd.js +0 -1170
  1168. package/bundles/material-tooltip.umd.js.map +0 -1
  1169. package/bundles/material-tree-testing.umd.js +0 -636
  1170. package/bundles/material-tree-testing.umd.js.map +0 -1
  1171. package/bundles/material-tree.umd.js +0 -837
  1172. package/bundles/material-tree.umd.js.map +0 -1
  1173. package/bundles/material.umd.js +0 -26
  1174. package/bundles/material.umd.js.map +0 -1
  1175. package/button/index.metadata.json +0 -1
  1176. package/button-toggle/index.metadata.json +0 -1
  1177. package/card/index.metadata.json +0 -1
  1178. package/checkbox/index.metadata.json +0 -1
  1179. package/chips/index.metadata.json +0 -1
  1180. package/core/index.metadata.json +0 -1
  1181. package/datepicker/index.metadata.json +0 -1
  1182. package/dialog/index.metadata.json +0 -1
  1183. package/divider/index.metadata.json +0 -1
  1184. package/esm2015/autocomplete/autocomplete-module.js +0 -38
  1185. package/esm2015/autocomplete/autocomplete-origin.js +0 -35
  1186. package/esm2015/autocomplete/autocomplete-trigger.js +0 -627
  1187. package/esm2015/autocomplete/autocomplete.externs.js +0 -6
  1188. package/esm2015/autocomplete/autocomplete.js +0 -202
  1189. package/esm2015/autocomplete/testing/autocomplete-harness.js +0 -120
  1190. package/esm2015/autocomplete/testing/testing.externs.js +0 -0
  1191. package/esm2015/badge/badge-module.js +0 -24
  1192. package/esm2015/badge/badge.externs.js +0 -6
  1193. package/esm2015/badge/badge.js +0 -213
  1194. package/esm2015/badge/testing/badge-harness.js +0 -85
  1195. package/esm2015/badge/testing/testing.externs.js +0 -0
  1196. package/esm2015/bottom-sheet/bottom-sheet-container.js +0 -246
  1197. package/esm2015/bottom-sheet/bottom-sheet-module.js +0 -27
  1198. package/esm2015/bottom-sheet/bottom-sheet-ref.js +0 -91
  1199. package/esm2015/bottom-sheet/bottom-sheet.externs.js +0 -6
  1200. package/esm2015/bottom-sheet/bottom-sheet.js +0 -167
  1201. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +0 -40
  1202. package/esm2015/bottom-sheet/testing/testing.externs.js +0 -0
  1203. package/esm2015/button/button-module.js +0 -30
  1204. package/esm2015/button/button.externs.js +0 -6
  1205. package/esm2015/button/button.js +0 -163
  1206. package/esm2015/button/testing/button-harness.js +0 -64
  1207. package/esm2015/button/testing/testing.externs.js +0 -0
  1208. package/esm2015/button-toggle/button-toggle-module.js +0 -20
  1209. package/esm2015/button-toggle/button-toggle.externs.js +0 -6
  1210. package/esm2015/button-toggle/button-toggle.js +0 -441
  1211. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +0 -54
  1212. package/esm2015/button-toggle/testing/button-toggle-harness.js +0 -125
  1213. package/esm2015/button-toggle/testing/testing.externs.js +0 -0
  1214. package/esm2015/card/card-module.js +0 -40
  1215. package/esm2015/card/card.externs.js +0 -6
  1216. package/esm2015/card/card.js +0 -223
  1217. package/esm2015/card/testing/card-harness.js +0 -52
  1218. package/esm2015/card/testing/testing.externs.js +0 -0
  1219. package/esm2015/checkbox/checkbox-module.js +0 -34
  1220. package/esm2015/checkbox/checkbox-required-validator.js +0 -29
  1221. package/esm2015/checkbox/checkbox.externs.js +0 -6
  1222. package/esm2015/checkbox/checkbox.js +0 -385
  1223. package/esm2015/checkbox/testing/checkbox-harness.js +0 -156
  1224. package/esm2015/checkbox/testing/testing.externs.js +0 -0
  1225. package/esm2015/chips/chip-input.js +0 -180
  1226. package/esm2015/chips/chip-list.js +0 -663
  1227. package/esm2015/chips/chip.js +0 -394
  1228. package/esm2015/chips/chips-module.js +0 -43
  1229. package/esm2015/chips/chips.externs.js +0 -6
  1230. package/esm2015/chips/testing/chip-harness.js +0 -110
  1231. package/esm2015/chips/testing/chip-input-harness.js +0 -101
  1232. package/esm2015/chips/testing/chip-list-harness.js +0 -99
  1233. package/esm2015/chips/testing/chip-listbox-harness.js +0 -49
  1234. package/esm2015/chips/testing/chip-option-harness.js +0 -54
  1235. package/esm2015/chips/testing/chip-remove-harness.js +0 -29
  1236. package/esm2015/chips/testing/testing.externs.js +0 -0
  1237. package/esm2015/core/common-behaviors/common-module.js +0 -113
  1238. package/esm2015/core/common-behaviors/index.js +0 -15
  1239. package/esm2015/core/core.externs.js +0 -6
  1240. package/esm2015/core/datetime/index.js +0 -38
  1241. package/esm2015/core/datetime/native-date-adapter.js +0 -213
  1242. package/esm2015/core/error/error-options.js +0 -29
  1243. package/esm2015/core/index.js +0 -6
  1244. package/esm2015/core/line/line.js +0 -56
  1245. package/esm2015/core/option/index.js +0 -27
  1246. package/esm2015/core/option/optgroup.js +0 -84
  1247. package/esm2015/core/option/option.js +0 -274
  1248. package/esm2015/core/ripple/index.js +0 -24
  1249. package/esm2015/core/ripple/ripple-renderer.js +0 -261
  1250. package/esm2015/core/ripple/ripple.js +0 -128
  1251. package/esm2015/core/selection/index.js +0 -21
  1252. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +0 -55
  1253. package/esm2015/core/testing/optgroup-harness.js +0 -51
  1254. package/esm2015/core/testing/option-harness.js +0 -67
  1255. package/esm2015/core/testing/testing.externs.js +0 -0
  1256. package/esm2015/core/version.js +0 -11
  1257. package/esm2015/datepicker/calendar-body.js +0 -291
  1258. package/esm2015/datepicker/calendar.js +0 -330
  1259. package/esm2015/datepicker/date-range-input-parts.js +0 -315
  1260. package/esm2015/datepicker/date-range-input.js +0 -316
  1261. package/esm2015/datepicker/date-range-picker.js +0 -40
  1262. package/esm2015/datepicker/date-range-selection-strategy.js +0 -58
  1263. package/esm2015/datepicker/date-selection-model.js +0 -189
  1264. package/esm2015/datepicker/datepicker-actions.js +0 -89
  1265. package/esm2015/datepicker/datepicker-base.js +0 -529
  1266. package/esm2015/datepicker/datepicker-input-base.js +0 -290
  1267. package/esm2015/datepicker/datepicker-input.js +0 -164
  1268. package/esm2015/datepicker/datepicker-intl.js +0 -51
  1269. package/esm2015/datepicker/datepicker-module.js +0 -93
  1270. package/esm2015/datepicker/datepicker-toggle.js +0 -104
  1271. package/esm2015/datepicker/datepicker.externs.js +0 -6
  1272. package/esm2015/datepicker/datepicker.js +0 -30
  1273. package/esm2015/datepicker/index.js +0 -9
  1274. package/esm2015/datepicker/month-view.js +0 -344
  1275. package/esm2015/datepicker/multi-year-view.js +0 -280
  1276. package/esm2015/datepicker/testing/calendar-cell-harness.js +0 -181
  1277. package/esm2015/datepicker/testing/calendar-harness.js +0 -91
  1278. package/esm2015/datepicker/testing/date-range-input-harness.js +0 -116
  1279. package/esm2015/datepicker/testing/datepicker-input-harness-base.js +0 -102
  1280. package/esm2015/datepicker/testing/datepicker-input-harness.js +0 -69
  1281. package/esm2015/datepicker/testing/datepicker-toggle-harness.js +0 -48
  1282. package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +0 -77
  1283. package/esm2015/datepicker/testing/testing.externs.js +0 -0
  1284. package/esm2015/datepicker/year-view.js +0 -268
  1285. package/esm2015/dialog/dialog-container.js +0 -295
  1286. package/esm2015/dialog/dialog-content-directives.js +0 -159
  1287. package/esm2015/dialog/dialog-module.js +0 -46
  1288. package/esm2015/dialog/dialog-ref.js +0 -196
  1289. package/esm2015/dialog/dialog.externs.js +0 -6
  1290. package/esm2015/dialog/dialog.js +0 -353
  1291. package/esm2015/dialog/testing/dialog-harness.js +0 -103
  1292. package/esm2015/dialog/testing/testing.externs.js +0 -0
  1293. package/esm2015/divider/divider-module.js +0 -20
  1294. package/esm2015/divider/divider.externs.js +0 -6
  1295. package/esm2015/divider/divider.js +0 -43
  1296. package/esm2015/divider/testing/divider-harness.js +0 -27
  1297. package/esm2015/divider/testing/testing.externs.js +0 -0
  1298. package/esm2015/expansion/accordion.js +0 -83
  1299. package/esm2015/expansion/expansion-module.js +0 -42
  1300. package/esm2015/expansion/expansion-panel-content.js +0 -26
  1301. package/esm2015/expansion/expansion-panel-header.js +0 -214
  1302. package/esm2015/expansion/expansion-panel.js +0 -186
  1303. package/esm2015/expansion/expansion.externs.js +0 -6
  1304. package/esm2015/expansion/testing/accordion-harness.js +0 -36
  1305. package/esm2015/expansion/testing/expansion-harness.js +0 -149
  1306. package/esm2015/expansion/testing/testing.externs.js +0 -0
  1307. package/esm2015/form-field/error.js +0 -45
  1308. package/esm2015/form-field/form-field-control.js +0 -15
  1309. package/esm2015/form-field/form-field-module.js +0 -49
  1310. package/esm2015/form-field/form-field.externs.js +0 -6
  1311. package/esm2015/form-field/form-field.js +0 -482
  1312. package/esm2015/form-field/hint.js +0 -45
  1313. package/esm2015/form-field/label.js +0 -17
  1314. package/esm2015/form-field/placeholder.js +0 -22
  1315. package/esm2015/form-field/prefix.js +0 -24
  1316. package/esm2015/form-field/suffix.js +0 -24
  1317. package/esm2015/form-field/testing/control/control.externs.js +0 -0
  1318. package/esm2015/form-field/testing/form-field-harness.js +0 -218
  1319. package/esm2015/form-field/testing/testing.externs.js +0 -0
  1320. package/esm2015/grid-list/grid-list-module.js +0 -37
  1321. package/esm2015/grid-list/grid-list.externs.js +0 -6
  1322. package/esm2015/grid-list/grid-list.js +0 -135
  1323. package/esm2015/grid-list/grid-tile.js +0 -116
  1324. package/esm2015/grid-list/index.js +0 -6
  1325. package/esm2015/grid-list/testing/grid-list-harness.js +0 -79
  1326. package/esm2015/grid-list/testing/grid-tile-harness.js +0 -80
  1327. package/esm2015/grid-list/testing/testing.externs.js +0 -0
  1328. package/esm2015/icon/icon-module.js +0 -20
  1329. package/esm2015/icon/icon-registry.js +0 -581
  1330. package/esm2015/icon/icon.externs.js +0 -6
  1331. package/esm2015/icon/icon.js +0 -362
  1332. package/esm2015/icon/testing/fake-icon-registry.js +0 -85
  1333. package/esm2015/icon/testing/icon-harness.js +0 -63
  1334. package/esm2015/icon/testing/testing.externs.js +0 -6
  1335. package/esm2015/icon/trusted-types.js +0 -44
  1336. package/esm2015/input/input-module.js +0 -33
  1337. package/esm2015/input/input.externs.js +0 -6
  1338. package/esm2015/input/input.js +0 -395
  1339. package/esm2015/input/testing/input-harness.js +0 -138
  1340. package/esm2015/input/testing/native-option-harness.js +0 -51
  1341. package/esm2015/input/testing/native-select-harness.js +0 -100
  1342. package/esm2015/input/testing/testing.externs.js +0 -0
  1343. package/esm2015/list/list-module.js +0 -45
  1344. package/esm2015/list/list.externs.js +0 -6
  1345. package/esm2015/list/list.js +0 -218
  1346. package/esm2015/list/selection-list.js +0 -608
  1347. package/esm2015/list/testing/action-list-harness.js +0 -68
  1348. package/esm2015/list/testing/list-harness-base.js +0 -97
  1349. package/esm2015/list/testing/list-item-harness-base.js +0 -85
  1350. package/esm2015/list/testing/nav-list-harness.js +0 -75
  1351. package/esm2015/list/testing/selection-list-harness.js +0 -152
  1352. package/esm2015/list/testing/testing.externs.js +0 -0
  1353. package/esm2015/material.externs.js +0 -0
  1354. package/esm2015/menu/index.js +0 -7
  1355. package/esm2015/menu/menu-content.js +0 -97
  1356. package/esm2015/menu/menu-item.js +0 -164
  1357. package/esm2015/menu/menu-module.js +0 -39
  1358. package/esm2015/menu/menu-trigger.js +0 -505
  1359. package/esm2015/menu/menu.externs.js +0 -6
  1360. package/esm2015/menu/menu.js +0 -381
  1361. package/esm2015/menu/testing/menu-harness.js +0 -223
  1362. package/esm2015/menu/testing/testing.externs.js +0 -0
  1363. package/esm2015/paginator/paginator-intl.js +0 -62
  1364. package/esm2015/paginator/paginator-module.js +0 -32
  1365. package/esm2015/paginator/paginator.externs.js +0 -6
  1366. package/esm2015/paginator/paginator.js +0 -263
  1367. package/esm2015/paginator/testing/paginator-harness.js +0 -106
  1368. package/esm2015/paginator/testing/testing.externs.js +0 -0
  1369. package/esm2015/progress-bar/progress-bar-module.js +0 -21
  1370. package/esm2015/progress-bar/progress-bar.externs.js +0 -6
  1371. package/esm2015/progress-bar/progress-bar.js +0 -179
  1372. package/esm2015/progress-bar/testing/progress-bar-harness.js +0 -39
  1373. package/esm2015/progress-bar/testing/testing.externs.js +0 -0
  1374. package/esm2015/progress-spinner/progress-spinner-module.js +0 -28
  1375. package/esm2015/progress-spinner/progress-spinner.externs.js +0 -6
  1376. package/esm2015/progress-spinner/progress-spinner.js +0 -274
  1377. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +0 -40
  1378. package/esm2015/progress-spinner/testing/testing.externs.js +0 -0
  1379. package/esm2015/radio/radio-module.js +0 -20
  1380. package/esm2015/radio/radio.externs.js +0 -6
  1381. package/esm2015/radio/radio.js +0 -546
  1382. package/esm2015/radio/testing/radio-harness.js +0 -272
  1383. package/esm2015/radio/testing/testing.externs.js +0 -0
  1384. package/esm2015/select/select-module.js +0 -37
  1385. package/esm2015/select/select.externs.js +0 -6
  1386. package/esm2015/select/select.js +0 -1140
  1387. package/esm2015/select/testing/select-harness.js +0 -157
  1388. package/esm2015/select/testing/testing.externs.js +0 -0
  1389. package/esm2015/sidenav/drawer.js +0 -766
  1390. package/esm2015/sidenav/index.js +0 -6
  1391. package/esm2015/sidenav/sidenav-module.js +0 -45
  1392. package/esm2015/sidenav/sidenav.externs.js +0 -6
  1393. package/esm2015/sidenav/sidenav.js +0 -118
  1394. package/esm2015/sidenav/testing/drawer-container-harness.js +0 -41
  1395. package/esm2015/sidenav/testing/drawer-harness.js +0 -57
  1396. package/esm2015/sidenav/testing/sidenav-container-harness.js +0 -41
  1397. package/esm2015/sidenav/testing/sidenav-harness.js +0 -32
  1398. package/esm2015/sidenav/testing/testing.externs.js +0 -0
  1399. package/esm2015/slide-toggle/slide-toggle-module.js +0 -40
  1400. package/esm2015/slide-toggle/slide-toggle-required-validator.js +0 -32
  1401. package/esm2015/slide-toggle/slide-toggle.externs.js +0 -6
  1402. package/esm2015/slide-toggle/slide-toggle.js +0 -236
  1403. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +0 -139
  1404. package/esm2015/slide-toggle/testing/testing.externs.js +0 -0
  1405. package/esm2015/slider/slider-module.js +0 -21
  1406. package/esm2015/slider/slider.externs.js +0 -6
  1407. package/esm2015/slider/slider.js +0 -788
  1408. package/esm2015/slider/testing/slider-harness.js +0 -141
  1409. package/esm2015/slider/testing/testing.externs.js +0 -0
  1410. package/esm2015/snack-bar/simple-snack-bar.js +0 -45
  1411. package/esm2015/snack-bar/snack-bar-container.js +0 -224
  1412. package/esm2015/snack-bar/snack-bar-module.js +0 -32
  1413. package/esm2015/snack-bar/snack-bar-ref.js +0 -90
  1414. package/esm2015/snack-bar/snack-bar.externs.js +0 -6
  1415. package/esm2015/snack-bar/snack-bar.js +0 -264
  1416. package/esm2015/snack-bar/testing/snack-bar-harness.js +0 -141
  1417. package/esm2015/snack-bar/testing/testing.externs.js +0 -0
  1418. package/esm2015/sort/sort-header-intl.js +0 -41
  1419. package/esm2015/sort/sort-header.js +0 -268
  1420. package/esm2015/sort/sort-module.js +0 -24
  1421. package/esm2015/sort/sort.externs.js +0 -6
  1422. package/esm2015/sort/sort.js +0 -140
  1423. package/esm2015/sort/testing/sort-harness.js +0 -41
  1424. package/esm2015/sort/testing/sort-header-harness.js +0 -67
  1425. package/esm2015/sort/testing/testing.externs.js +0 -0
  1426. package/esm2015/stepper/step-content.js +0 -25
  1427. package/esm2015/stepper/step-header.js +0 -108
  1428. package/esm2015/stepper/step-label.js +0 -17
  1429. package/esm2015/stepper/stepper-button.js +0 -36
  1430. package/esm2015/stepper/stepper-icon.js +0 -28
  1431. package/esm2015/stepper/stepper-intl.js +0 -37
  1432. package/esm2015/stepper/stepper-module.js +0 -61
  1433. package/esm2015/stepper/stepper.externs.js +0 -6
  1434. package/esm2015/stepper/stepper.js +0 -187
  1435. package/esm2015/stepper/testing/step-harness.js +0 -111
  1436. package/esm2015/stepper/testing/stepper-button-harnesses.js +0 -55
  1437. package/esm2015/stepper/testing/stepper-harness.js +0 -57
  1438. package/esm2015/stepper/testing/testing.externs.js +0 -0
  1439. package/esm2015/table/cell.js +0 -114
  1440. package/esm2015/table/row.js +0 -116
  1441. package/esm2015/table/table-data-source.js +0 -312
  1442. package/esm2015/table/table-module.js +0 -50
  1443. package/esm2015/table/table.externs.js +0 -6
  1444. package/esm2015/table/table.js +0 -63
  1445. package/esm2015/table/testing/cell-harness.js +0 -77
  1446. package/esm2015/table/testing/row-harness.js +0 -91
  1447. package/esm2015/table/testing/table-harness.js +0 -99
  1448. package/esm2015/table/testing/testing.externs.js +0 -0
  1449. package/esm2015/table/text-column.js +0 -44
  1450. package/esm2015/tabs/index.js +0 -9
  1451. package/esm2015/tabs/ink-bar.js +0 -87
  1452. package/esm2015/tabs/paginated-tab-header.js +0 -477
  1453. package/esm2015/tabs/tab-body.js +0 -212
  1454. package/esm2015/tabs/tab-content.js +0 -31
  1455. package/esm2015/tabs/tab-group.js +0 -357
  1456. package/esm2015/tabs/tab-header.js +0 -94
  1457. package/esm2015/tabs/tab-label-wrapper.js +0 -47
  1458. package/esm2015/tabs/tab-label.js +0 -39
  1459. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +0 -241
  1460. package/esm2015/tabs/tab.js +0 -107
  1461. package/esm2015/tabs/tabs-module.js +0 -60
  1462. package/esm2015/tabs/tabs.externs.js +0 -6
  1463. package/esm2015/tabs/testing/tab-group-harness.js +0 -65
  1464. package/esm2015/tabs/testing/tab-harness.js +0 -85
  1465. package/esm2015/tabs/testing/tab-link-harness.js +0 -51
  1466. package/esm2015/tabs/testing/tab-nav-bar-harness.js +0 -61
  1467. package/esm2015/tabs/testing/testing.externs.js +0 -0
  1468. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  1469. package/esm2015/toolbar/testing/toolbar-harness.js +0 -47
  1470. package/esm2015/toolbar/toolbar-module.js +0 -20
  1471. package/esm2015/toolbar/toolbar.externs.js +0 -6
  1472. package/esm2015/toolbar/toolbar.js +0 -91
  1473. package/esm2015/tooltip/testing/testing.externs.js +0 -0
  1474. package/esm2015/tooltip/testing/tooltip-harness.js +0 -68
  1475. package/esm2015/tooltip/tooltip-module.js +0 -31
  1476. package/esm2015/tooltip/tooltip.externs.js +0 -6
  1477. package/esm2015/tooltip/tooltip.js +0 -737
  1478. package/esm2015/tree/node.js +0 -131
  1479. package/esm2015/tree/outlet.js +0 -33
  1480. package/esm2015/tree/padding.js +0 -31
  1481. package/esm2015/tree/testing/node-harness.js +0 -84
  1482. package/esm2015/tree/testing/testing.externs.js +0 -0
  1483. package/esm2015/tree/testing/tree-harness.js +0 -129
  1484. package/esm2015/tree/toggle.js +0 -32
  1485. package/esm2015/tree/tree-module.js +0 -34
  1486. package/esm2015/tree/tree.externs.js +0 -6
  1487. package/esm2015/tree/tree.js +0 -43
  1488. package/expansion/index.metadata.json +0 -1
  1489. package/fesm2015/autocomplete/testing.js +0 -147
  1490. package/fesm2015/autocomplete/testing.js.map +0 -1
  1491. package/fesm2015/autocomplete.js +0 -901
  1492. package/fesm2015/autocomplete.js.map +0 -1
  1493. package/fesm2015/badge/testing.js +0 -112
  1494. package/fesm2015/badge/testing.js.map +0 -1
  1495. package/fesm2015/badge.js +0 -248
  1496. package/fesm2015/badge.js.map +0 -1
  1497. package/fesm2015/bottom-sheet/testing.js +0 -67
  1498. package/fesm2015/bottom-sheet/testing.js.map +0 -1
  1499. package/fesm2015/bottom-sheet.js +0 -596
  1500. package/fesm2015/bottom-sheet.js.map +0 -1
  1501. package/fesm2015/button/testing.js +0 -91
  1502. package/fesm2015/button/testing.js.map +0 -1
  1503. package/fesm2015/button-toggle/testing.js +0 -211
  1504. package/fesm2015/button-toggle/testing.js.map +0 -1
  1505. package/fesm2015/button-toggle.js +0 -473
  1506. package/fesm2015/button-toggle.js.map +0 -1
  1507. package/fesm2015/button.js +0 -205
  1508. package/fesm2015/button.js.map +0 -1
  1509. package/fesm2015/card/testing.js +0 -79
  1510. package/fesm2015/card/testing.js.map +0 -1
  1511. package/fesm2015/card.js +0 -276
  1512. package/fesm2015/card.js.map +0 -1
  1513. package/fesm2015/checkbox/testing.js +0 -183
  1514. package/fesm2015/checkbox/testing.js.map +0 -1
  1515. package/fesm2015/checkbox.js +0 -476
  1516. package/fesm2015/checkbox.js.map +0 -1
  1517. package/fesm2015/chips/testing.js +0 -465
  1518. package/fesm2015/chips/testing.js.map +0 -1
  1519. package/fesm2015/chips.js +0 -1286
  1520. package/fesm2015/chips.js.map +0 -1
  1521. package/fesm2015/core/testing.js +0 -150
  1522. package/fesm2015/core/testing.js.map +0 -1
  1523. package/fesm2015/core.js +0 -1681
  1524. package/fesm2015/core.js.map +0 -1
  1525. package/fesm2015/datepicker/testing.js +0 -692
  1526. package/fesm2015/datepicker/testing.js.map +0 -1
  1527. package/fesm2015/datepicker.js +0 -3733
  1528. package/fesm2015/datepicker.js.map +0 -1
  1529. package/fesm2015/dialog/testing.js +0 -130
  1530. package/fesm2015/dialog/testing.js.map +0 -1
  1531. package/fesm2015/dialog.js +0 -1127
  1532. package/fesm2015/dialog.js.map +0 -1
  1533. package/fesm2015/divider/testing.js +0 -54
  1534. package/fesm2015/divider/testing.js.map +0 -1
  1535. package/fesm2015/divider.js +0 -76
  1536. package/fesm2015/divider.js.map +0 -1
  1537. package/fesm2015/expansion/testing.js +0 -209
  1538. package/fesm2015/expansion/testing.js.map +0 -1
  1539. package/fesm2015/expansion.js +0 -600
  1540. package/fesm2015/expansion.js.map +0 -1
  1541. package/fesm2015/form-field/testing/control.js +0 -26
  1542. package/fesm2015/form-field/testing/control.js.map +0 -1
  1543. package/fesm2015/form-field/testing.js +0 -246
  1544. package/fesm2015/form-field/testing.js.map +0 -1
  1545. package/fesm2015/form-field.js +0 -757
  1546. package/fesm2015/form-field.js.map +0 -1
  1547. package/fesm2015/grid-list/testing.js +0 -183
  1548. package/fesm2015/grid-list/testing.js.map +0 -1
  1549. package/fesm2015/grid-list.js +0 -680
  1550. package/fesm2015/grid-list.js.map +0 -1
  1551. package/fesm2015/icon/testing.js +0 -171
  1552. package/fesm2015/icon/testing.js.map +0 -1
  1553. package/fesm2015/icon.js +0 -1012
  1554. package/fesm2015/icon.js.map +0 -1
  1555. package/fesm2015/input/testing.js +0 -318
  1556. package/fesm2015/input/testing.js.map +0 -1
  1557. package/fesm2015/input.js +0 -463
  1558. package/fesm2015/input.js.map +0 -1
  1559. package/fesm2015/list/testing.js +0 -529
  1560. package/fesm2015/list/testing.js.map +0 -1
  1561. package/fesm2015/list.js +0 -876
  1562. package/fesm2015/list.js.map +0 -1
  1563. package/fesm2015/material.js +0 -16
  1564. package/fesm2015/material.js.map +0 -1
  1565. package/fesm2015/menu/testing.js +0 -250
  1566. package/fesm2015/menu/testing.js.map +0 -1
  1567. package/fesm2015/menu.js +0 -1299
  1568. package/fesm2015/menu.js.map +0 -1
  1569. package/fesm2015/paginator/testing.js +0 -133
  1570. package/fesm2015/paginator/testing.js.map +0 -1
  1571. package/fesm2015/paginator.js +0 -366
  1572. package/fesm2015/paginator.js.map +0 -1
  1573. package/fesm2015/progress-bar/testing.js +0 -66
  1574. package/fesm2015/progress-bar/testing.js.map +0 -1
  1575. package/fesm2015/progress-bar.js +0 -211
  1576. package/fesm2015/progress-bar.js.map +0 -1
  1577. package/fesm2015/progress-spinner/testing.js +0 -67
  1578. package/fesm2015/progress-spinner/testing.js.map +0 -1
  1579. package/fesm2015/progress-spinner.js +0 -313
  1580. package/fesm2015/progress-spinner.js.map +0 -1
  1581. package/fesm2015/radio/testing.js +0 -299
  1582. package/fesm2015/radio/testing.js.map +0 -1
  1583. package/fesm2015/radio.js +0 -578
  1584. package/fesm2015/radio.js.map +0 -1
  1585. package/fesm2015/select/testing.js +0 -184
  1586. package/fesm2015/select/testing.js.map +0 -1
  1587. package/fesm2015/select.js +0 -1271
  1588. package/fesm2015/select.js.map +0 -1
  1589. package/fesm2015/sidenav/testing.js +0 -231
  1590. package/fesm2015/sidenav/testing.js.map +0 -1
  1591. package/fesm2015/sidenav.js +0 -965
  1592. package/fesm2015/sidenav.js.map +0 -1
  1593. package/fesm2015/slide-toggle/testing.js +0 -166
  1594. package/fesm2015/slide-toggle/testing.js.map +0 -1
  1595. package/fesm2015/slide-toggle.js +0 -329
  1596. package/fesm2015/slide-toggle.js.map +0 -1
  1597. package/fesm2015/slider/testing.js +0 -160
  1598. package/fesm2015/slider/testing.js.map +0 -1
  1599. package/fesm2015/slider.js +0 -820
  1600. package/fesm2015/slider.js.map +0 -1
  1601. package/fesm2015/snack-bar/testing.js +0 -168
  1602. package/fesm2015/snack-bar/testing.js.map +0 -1
  1603. package/fesm2015/snack-bar.js +0 -712
  1604. package/fesm2015/snack-bar.js.map +0 -1
  1605. package/fesm2015/sort/testing.js +0 -124
  1606. package/fesm2015/sort/testing.js.map +0 -1
  1607. package/fesm2015/sort.js +0 -587
  1608. package/fesm2015/sort.js.map +0 -1
  1609. package/fesm2015/stepper/testing.js +0 -237
  1610. package/fesm2015/stepper/testing.js.map +0 -1
  1611. package/fesm2015/stepper.js +0 -519
  1612. package/fesm2015/stepper.js.map +0 -1
  1613. package/fesm2015/table/testing.js +0 -280
  1614. package/fesm2015/table/testing.js.map +0 -1
  1615. package/fesm2015/table.js +0 -701
  1616. package/fesm2015/table.js.map +0 -1
  1617. package/fesm2015/tabs/testing.js +0 -273
  1618. package/fesm2015/tabs/testing.js.map +0 -1
  1619. package/fesm2015/tabs.js +0 -1761
  1620. package/fesm2015/tabs.js.map +0 -1
  1621. package/fesm2015/toolbar/testing.js +0 -74
  1622. package/fesm2015/toolbar/testing.js.map +0 -1
  1623. package/fesm2015/toolbar.js +0 -123
  1624. package/fesm2015/toolbar.js.map +0 -1
  1625. package/fesm2015/tooltip/testing.js +0 -95
  1626. package/fesm2015/tooltip/testing.js.map +0 -1
  1627. package/fesm2015/tooltip.js +0 -802
  1628. package/fesm2015/tooltip.js.map +0 -1
  1629. package/fesm2015/tree/testing.js +0 -237
  1630. package/fesm2015/tree/testing.js.map +0 -1
  1631. package/fesm2015/tree.js +0 -479
  1632. package/fesm2015/tree.js.map +0 -1
  1633. package/form-field/index.metadata.json +0 -1
  1634. package/grid-list/index.metadata.json +0 -1
  1635. package/icon/index.metadata.json +0 -1
  1636. package/icon/testing/index.metadata.json +0 -1
  1637. package/input/index.metadata.json +0 -1
  1638. package/list/index.metadata.json +0 -1
  1639. package/menu/index.metadata.json +0 -1
  1640. package/paginator/index.metadata.json +0 -1
  1641. package/progress-bar/index.metadata.json +0 -1
  1642. package/progress-spinner/index.metadata.json +0 -1
  1643. package/radio/index.metadata.json +0 -1
  1644. package/select/index.metadata.json +0 -1
  1645. package/sidenav/index.metadata.json +0 -1
  1646. package/slide-toggle/index.metadata.json +0 -1
  1647. package/slider/index.metadata.json +0 -1
  1648. package/snack-bar/index.metadata.json +0 -1
  1649. package/sort/index.metadata.json +0 -1
  1650. package/stepper/index.metadata.json +0 -1
  1651. package/table/index.metadata.json +0 -1
  1652. package/tabs/index.metadata.json +0 -1
  1653. package/toolbar/index.metadata.json +0 -1
  1654. package/tooltip/index.metadata.json +0 -1
  1655. package/tree/index.metadata.json +0 -1
@@ -1,608 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';
9
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { SelectionModel } from '@angular/cdk/collections';
11
- import { A, DOWN_ARROW, ENTER, hasModifierKey, SPACE, UP_ARROW, } from '@angular/cdk/keycodes';
12
- import { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, Input, Output, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core';
13
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
14
- import { MatLine, mixinDisableRipple, setLines, } from '@angular/material/core';
15
- import { Subject } from 'rxjs';
16
- import { startWith, takeUntil } from 'rxjs/operators';
17
- import { MatListAvatarCssMatStyler, MatListIconCssMatStyler } from './list';
18
- const _MatSelectionListBase = mixinDisableRipple(class {
19
- });
20
- const _MatListOptionBase = mixinDisableRipple(class {
21
- });
22
- /** @docs-private */
23
- export const MAT_SELECTION_LIST_VALUE_ACCESSOR = {
24
- provide: NG_VALUE_ACCESSOR,
25
- useExisting: forwardRef(() => MatSelectionList),
26
- multi: true
27
- };
28
- /** Change event that is being fired whenever the selected state of an option changes. */
29
- export class MatSelectionListChange {
30
- constructor(
31
- /** Reference to the selection list that emitted the event. */
32
- source,
33
- /**
34
- * Reference to the option that has been changed.
35
- * @deprecated Use `options` instead, because some events may change more than one option.
36
- * @breaking-change 12.0.0
37
- */
38
- option,
39
- /** Reference to the options that have been changed. */
40
- options) {
41
- this.source = source;
42
- this.option = option;
43
- this.options = options;
44
- }
45
- }
46
- /**
47
- * Component for list-options of selection-list. Each list-option can automatically
48
- * generate a checkbox and can put current item into the selectionModel of selection-list
49
- * if the current item is selected.
50
- */
51
- export class MatListOption extends _MatListOptionBase {
52
- constructor(_element, _changeDetector,
53
- /** @docs-private */
54
- selectionList) {
55
- super();
56
- this._element = _element;
57
- this._changeDetector = _changeDetector;
58
- this.selectionList = selectionList;
59
- this._selected = false;
60
- this._disabled = false;
61
- this._hasFocus = false;
62
- /**
63
- * Emits when the selected state of the option has changed.
64
- * Use to facilitate two-data binding to the `selected` property.
65
- * @docs-private
66
- */
67
- this.selectedChange = new EventEmitter();
68
- /** Whether the label should appear before or after the checkbox. Defaults to 'after' */
69
- this.checkboxPosition = 'after';
70
- /**
71
- * This is set to true after the first OnChanges cycle so we don't clear the value of `selected`
72
- * in the first cycle.
73
- */
74
- this._inputsInitialized = false;
75
- }
76
- /** Theme color of the list option. This sets the color of the checkbox. */
77
- get color() { return this._color || this.selectionList.color; }
78
- set color(newValue) { this._color = newValue; }
79
- /** Value of the option */
80
- get value() { return this._value; }
81
- set value(newValue) {
82
- if (this.selected &&
83
- !this.selectionList.compareWith(newValue, this.value) &&
84
- this._inputsInitialized) {
85
- this.selected = false;
86
- }
87
- this._value = newValue;
88
- }
89
- /** Whether the option is disabled. */
90
- get disabled() { return this._disabled || (this.selectionList && this.selectionList.disabled); }
91
- set disabled(value) {
92
- const newValue = coerceBooleanProperty(value);
93
- if (newValue !== this._disabled) {
94
- this._disabled = newValue;
95
- this._changeDetector.markForCheck();
96
- }
97
- }
98
- /** Whether the option is selected. */
99
- get selected() { return this.selectionList.selectedOptions.isSelected(this); }
100
- set selected(value) {
101
- const isSelected = coerceBooleanProperty(value);
102
- if (isSelected !== this._selected) {
103
- this._setSelected(isSelected);
104
- if (isSelected || this.selectionList.multiple) {
105
- this.selectionList._reportValueChange();
106
- }
107
- }
108
- }
109
- ngOnInit() {
110
- const list = this.selectionList;
111
- if (list._value && list._value.some(value => list.compareWith(value, this._value))) {
112
- this._setSelected(true);
113
- }
114
- const wasSelected = this._selected;
115
- // List options that are selected at initialization can't be reported properly to the form
116
- // control. This is because it takes some time until the selection-list knows about all
117
- // available options. Also it can happen that the ControlValueAccessor has an initial value
118
- // that should be used instead. Deferring the value change report to the next tick ensures
119
- // that the form control value is not being overwritten.
120
- Promise.resolve().then(() => {
121
- if (this._selected || wasSelected) {
122
- this.selected = true;
123
- this._changeDetector.markForCheck();
124
- }
125
- });
126
- this._inputsInitialized = true;
127
- }
128
- ngAfterContentInit() {
129
- setLines(this._lines, this._element);
130
- }
131
- ngOnDestroy() {
132
- if (this.selected) {
133
- // We have to delay this until the next tick in order
134
- // to avoid changed after checked errors.
135
- Promise.resolve().then(() => {
136
- this.selected = false;
137
- });
138
- }
139
- const hadFocus = this._hasFocus;
140
- const newActiveItem = this.selectionList._removeOptionFromList(this);
141
- // Only move focus if this option was focused at the time it was destroyed.
142
- if (hadFocus && newActiveItem) {
143
- newActiveItem.focus();
144
- }
145
- }
146
- /** Toggles the selection state of the option. */
147
- toggle() {
148
- this.selected = !this.selected;
149
- }
150
- /** Allows for programmatic focusing of the option. */
151
- focus() {
152
- this._element.nativeElement.focus();
153
- }
154
- /**
155
- * Returns the list item's text label. Implemented as a part of the FocusKeyManager.
156
- * @docs-private
157
- */
158
- getLabel() {
159
- return this._text ? (this._text.nativeElement.textContent || '') : '';
160
- }
161
- /** Whether this list item should show a ripple effect when clicked. */
162
- _isRippleDisabled() {
163
- return this.disabled || this.disableRipple || this.selectionList.disableRipple;
164
- }
165
- _handleClick() {
166
- if (!this.disabled && (this.selectionList.multiple || !this.selected)) {
167
- this.toggle();
168
- // Emit a change event if the selected state of the option changed through user interaction.
169
- this.selectionList._emitChangeEvent([this]);
170
- }
171
- }
172
- _handleFocus() {
173
- this.selectionList._setFocusedOption(this);
174
- this._hasFocus = true;
175
- }
176
- _handleBlur() {
177
- this.selectionList._onTouched();
178
- this._hasFocus = false;
179
- }
180
- /** Retrieves the DOM element of the component host. */
181
- _getHostElement() {
182
- return this._element.nativeElement;
183
- }
184
- /** Sets the selected state of the option. Returns whether the value has changed. */
185
- _setSelected(selected) {
186
- if (selected === this._selected) {
187
- return false;
188
- }
189
- this._selected = selected;
190
- if (selected) {
191
- this.selectionList.selectedOptions.select(this);
192
- }
193
- else {
194
- this.selectionList.selectedOptions.deselect(this);
195
- }
196
- this.selectedChange.emit(selected);
197
- this._changeDetector.markForCheck();
198
- return true;
199
- }
200
- /**
201
- * Notifies Angular that the option needs to be checked in the next change detection run. Mainly
202
- * used to trigger an update of the list option if the disabled state of the selection list
203
- * changed.
204
- */
205
- _markForCheck() {
206
- this._changeDetector.markForCheck();
207
- }
208
- }
209
- MatListOption.decorators = [
210
- { type: Component, args: [{
211
- selector: 'mat-list-option',
212
- exportAs: 'matListOption',
213
- inputs: ['disableRipple'],
214
- host: {
215
- 'role': 'option',
216
- 'class': 'mat-list-item mat-list-option mat-focus-indicator',
217
- '(focus)': '_handleFocus()',
218
- '(blur)': '_handleBlur()',
219
- '(click)': '_handleClick()',
220
- '[class.mat-list-item-disabled]': 'disabled',
221
- '[class.mat-list-item-with-avatar]': '_avatar || _icon',
222
- // Manually set the "primary" or "warn" class if the color has been explicitly
223
- // set to "primary" or "warn". The pseudo checkbox picks up these classes for
224
- // its theme.
225
- '[class.mat-primary]': 'color === "primary"',
226
- // Even though accent is the default, we need to set this class anyway, because the list might
227
- // be placed inside a parent that has one of the other colors with a higher specificity.
228
- '[class.mat-accent]': 'color !== "primary" && color !== "warn"',
229
- '[class.mat-warn]': 'color === "warn"',
230
- '[class.mat-list-single-selected-option]': 'selected && !selectionList.multiple',
231
- '[attr.aria-selected]': 'selected',
232
- '[attr.aria-disabled]': 'disabled',
233
- '[attr.tabindex]': '-1',
234
- },
235
- template: "<div class=\"mat-list-item-content\"\n [class.mat-list-item-content-reverse]=\"checkboxPosition == 'after'\">\n\n <div mat-ripple\n class=\"mat-list-item-ripple\"\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"_isRippleDisabled()\"></div>\n\n <mat-pseudo-checkbox\n *ngIf=\"selectionList.multiple\"\n [state]=\"selected ? 'checked' : 'unchecked'\"\n [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n <div class=\"mat-list-text\" #text><ng-content></ng-content></div>\n\n <ng-content select=\"[mat-list-avatar], [mat-list-icon], [matListAvatar], [matListIcon]\">\n </ng-content>\n\n</div>\n",
236
- encapsulation: ViewEncapsulation.None,
237
- changeDetection: ChangeDetectionStrategy.OnPush
238
- },] }
239
- ];
240
- MatListOption.ctorParameters = () => [
241
- { type: ElementRef },
242
- { type: ChangeDetectorRef },
243
- { type: MatSelectionList, decorators: [{ type: Inject, args: [forwardRef(() => MatSelectionList),] }] }
244
- ];
245
- MatListOption.propDecorators = {
246
- _avatar: [{ type: ContentChild, args: [MatListAvatarCssMatStyler,] }],
247
- _icon: [{ type: ContentChild, args: [MatListIconCssMatStyler,] }],
248
- _lines: [{ type: ContentChildren, args: [MatLine, { descendants: true },] }],
249
- selectedChange: [{ type: Output }],
250
- _text: [{ type: ViewChild, args: ['text',] }],
251
- checkboxPosition: [{ type: Input }],
252
- color: [{ type: Input }],
253
- value: [{ type: Input }],
254
- disabled: [{ type: Input }],
255
- selected: [{ type: Input }]
256
- };
257
- /**
258
- * Material Design list component where each item is a selectable option. Behaves as a listbox.
259
- */
260
- export class MatSelectionList extends _MatSelectionListBase {
261
- constructor(_element,
262
- // @breaking-change 11.0.0 Remove `tabIndex` parameter.
263
- tabIndex, _changeDetector,
264
- // @breaking-change 11.0.0 `_focusMonitor` parameter to become required.
265
- _focusMonitor) {
266
- super();
267
- this._element = _element;
268
- this._changeDetector = _changeDetector;
269
- this._focusMonitor = _focusMonitor;
270
- this._multiple = true;
271
- this._contentInitialized = false;
272
- /** Emits a change event whenever the selected state of an option changes. */
273
- this.selectionChange = new EventEmitter();
274
- /**
275
- * Tabindex of the selection list.
276
- * @breaking-change 11.0.0 Remove `tabIndex` input.
277
- */
278
- this.tabIndex = 0;
279
- /** Theme color of the selection list. This sets the checkbox color for all list options. */
280
- this.color = 'accent';
281
- /**
282
- * Function used for comparing an option against the selected value when determining which
283
- * options should appear as selected. The first argument is the value of an options. The second
284
- * one is a value from the selected value. A boolean must be returned.
285
- */
286
- this.compareWith = (a1, a2) => a1 === a2;
287
- this._disabled = false;
288
- /** The currently selected options. */
289
- this.selectedOptions = new SelectionModel(this._multiple);
290
- /** The tabindex of the selection list. */
291
- this._tabIndex = -1;
292
- /** View to model callback that should be called whenever the selected options change. */
293
- this._onChange = (_) => { };
294
- /** Emits when the list has been destroyed. */
295
- this._destroyed = new Subject();
296
- /** View to model callback that should be called if the list or its options lost focus. */
297
- this._onTouched = () => { };
298
- }
299
- /** Whether the selection list is disabled. */
300
- get disabled() { return this._disabled; }
301
- set disabled(value) {
302
- this._disabled = coerceBooleanProperty(value);
303
- // The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection
304
- // strategy. Therefore the options will not check for any changes if the `MatSelectionList`
305
- // changed its state. Since we know that a change to `disabled` property of the list affects
306
- // the state of the options, we manually mark each option for check.
307
- this._markOptionsForCheck();
308
- }
309
- /** Whether selection is limited to one or multiple items (default multiple). */
310
- get multiple() { return this._multiple; }
311
- set multiple(value) {
312
- const newValue = coerceBooleanProperty(value);
313
- if (newValue !== this._multiple) {
314
- if (this._contentInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {
315
- throw new Error('Cannot change `multiple` mode of mat-selection-list after initialization.');
316
- }
317
- this._multiple = newValue;
318
- this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);
319
- }
320
- }
321
- ngAfterContentInit() {
322
- var _a;
323
- this._contentInitialized = true;
324
- this._keyManager = new FocusKeyManager(this.options)
325
- .withWrap()
326
- .withTypeAhead()
327
- .withHomeAndEnd()
328
- // Allow disabled items to be focusable. For accessibility reasons, there must be a way for
329
- // screenreader users, that allows reading the different options of the list.
330
- .skipPredicate(() => false)
331
- .withAllowedModifierKeys(['shiftKey']);
332
- if (this._value) {
333
- this._setOptionsFromValues(this._value);
334
- }
335
- // If the user attempts to tab out of the selection list, allow focus to escape.
336
- this._keyManager.tabOut.pipe(takeUntil(this._destroyed)).subscribe(() => {
337
- this._allowFocusEscape();
338
- });
339
- // When the number of options change, update the tabindex of the selection list.
340
- this.options.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {
341
- this._updateTabIndex();
342
- });
343
- // Sync external changes to the model back to the options.
344
- this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {
345
- if (event.added) {
346
- for (let item of event.added) {
347
- item.selected = true;
348
- }
349
- }
350
- if (event.removed) {
351
- for (let item of event.removed) {
352
- item.selected = false;
353
- }
354
- }
355
- });
356
- // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.
357
- (_a = this._focusMonitor) === null || _a === void 0 ? void 0 : _a.monitor(this._element).pipe(takeUntil(this._destroyed)).subscribe(origin => {
358
- var _a;
359
- if (origin === 'keyboard' || origin === 'program') {
360
- let toFocus = 0;
361
- for (let i = 0; i < this.options.length; i++) {
362
- if ((_a = this.options.get(i)) === null || _a === void 0 ? void 0 : _a.selected) {
363
- toFocus = i;
364
- break;
365
- }
366
- }
367
- this._keyManager.setActiveItem(toFocus);
368
- }
369
- });
370
- }
371
- ngOnChanges(changes) {
372
- const disableRippleChanges = changes['disableRipple'];
373
- const colorChanges = changes['color'];
374
- if ((disableRippleChanges && !disableRippleChanges.firstChange) ||
375
- (colorChanges && !colorChanges.firstChange)) {
376
- this._markOptionsForCheck();
377
- }
378
- }
379
- ngOnDestroy() {
380
- var _a;
381
- // @breaking-change 11.0.0 Remove null assertion once _focusMonitor is required.
382
- (_a = this._focusMonitor) === null || _a === void 0 ? void 0 : _a.stopMonitoring(this._element);
383
- this._destroyed.next();
384
- this._destroyed.complete();
385
- this._isDestroyed = true;
386
- }
387
- /** Focuses the selection list. */
388
- focus(options) {
389
- this._element.nativeElement.focus(options);
390
- }
391
- /** Selects all of the options. Returns the options that changed as a result. */
392
- selectAll() {
393
- return this._setAllOptionsSelected(true);
394
- }
395
- /** Deselects all of the options. Returns the options that changed as a result. */
396
- deselectAll() {
397
- return this._setAllOptionsSelected(false);
398
- }
399
- /** Sets the focused option of the selection-list. */
400
- _setFocusedOption(option) {
401
- this._keyManager.updateActiveItem(option);
402
- }
403
- /**
404
- * Removes an option from the selection list and updates the active item.
405
- * @returns Currently-active item.
406
- */
407
- _removeOptionFromList(option) {
408
- const optionIndex = this._getOptionIndex(option);
409
- if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {
410
- // Check whether the option is the last item
411
- if (optionIndex > 0) {
412
- this._keyManager.updateActiveItem(optionIndex - 1);
413
- }
414
- else if (optionIndex === 0 && this.options.length > 1) {
415
- this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));
416
- }
417
- }
418
- return this._keyManager.activeItem;
419
- }
420
- /** Passes relevant key presses to our key manager. */
421
- _keydown(event) {
422
- const keyCode = event.keyCode;
423
- const manager = this._keyManager;
424
- const previousFocusIndex = manager.activeItemIndex;
425
- const hasModifier = hasModifierKey(event);
426
- switch (keyCode) {
427
- case SPACE:
428
- case ENTER:
429
- if (!hasModifier && !manager.isTyping()) {
430
- this._toggleFocusedOption();
431
- // Always prevent space from scrolling the page since the list has focus
432
- event.preventDefault();
433
- }
434
- break;
435
- default:
436
- // The "A" key gets special treatment, because it's used for the "select all" functionality.
437
- if (keyCode === A && this.multiple && hasModifierKey(event, 'ctrlKey') &&
438
- !manager.isTyping()) {
439
- const shouldSelect = this.options.some(option => !option.disabled && !option.selected);
440
- this._setAllOptionsSelected(shouldSelect, true, true);
441
- event.preventDefault();
442
- }
443
- else {
444
- manager.onKeydown(event);
445
- }
446
- }
447
- if (this.multiple && (keyCode === UP_ARROW || keyCode === DOWN_ARROW) && event.shiftKey &&
448
- manager.activeItemIndex !== previousFocusIndex) {
449
- this._toggleFocusedOption();
450
- }
451
- }
452
- /** Reports a value change to the ControlValueAccessor */
453
- _reportValueChange() {
454
- // Stop reporting value changes after the list has been destroyed. This avoids
455
- // cases where the list might wrongly reset its value once it is removed, but
456
- // the form control is still live.
457
- if (this.options && !this._isDestroyed) {
458
- const value = this._getSelectedOptionValues();
459
- this._onChange(value);
460
- this._value = value;
461
- }
462
- }
463
- /** Emits a change event if the selected state of an option changed. */
464
- _emitChangeEvent(options) {
465
- this.selectionChange.emit(new MatSelectionListChange(this, options[0], options));
466
- }
467
- /** Implemented as part of ControlValueAccessor. */
468
- writeValue(values) {
469
- this._value = values;
470
- if (this.options) {
471
- this._setOptionsFromValues(values || []);
472
- }
473
- }
474
- /** Implemented as a part of ControlValueAccessor. */
475
- setDisabledState(isDisabled) {
476
- this.disabled = isDisabled;
477
- }
478
- /** Implemented as part of ControlValueAccessor. */
479
- registerOnChange(fn) {
480
- this._onChange = fn;
481
- }
482
- /** Implemented as part of ControlValueAccessor. */
483
- registerOnTouched(fn) {
484
- this._onTouched = fn;
485
- }
486
- /** Sets the selected options based on the specified values. */
487
- _setOptionsFromValues(values) {
488
- this.options.forEach(option => option._setSelected(false));
489
- values.forEach(value => {
490
- const correspondingOption = this.options.find(option => {
491
- // Skip options that are already in the model. This allows us to handle cases
492
- // where the same primitive value is selected multiple times.
493
- return option.selected ? false : this.compareWith(option.value, value);
494
- });
495
- if (correspondingOption) {
496
- correspondingOption._setSelected(true);
497
- }
498
- });
499
- }
500
- /** Returns the values of the selected options. */
501
- _getSelectedOptionValues() {
502
- return this.options.filter(option => option.selected).map(option => option.value);
503
- }
504
- /** Toggles the state of the currently focused option if enabled. */
505
- _toggleFocusedOption() {
506
- let focusedIndex = this._keyManager.activeItemIndex;
507
- if (focusedIndex != null && this._isValidIndex(focusedIndex)) {
508
- let focusedOption = this.options.toArray()[focusedIndex];
509
- if (focusedOption && !focusedOption.disabled && (this._multiple || !focusedOption.selected)) {
510
- focusedOption.toggle();
511
- // Emit a change event because the focused option changed its state through user
512
- // interaction.
513
- this._emitChangeEvent([focusedOption]);
514
- }
515
- }
516
- }
517
- /**
518
- * Sets the selected state on all of the options
519
- * and emits an event if anything changed.
520
- */
521
- _setAllOptionsSelected(isSelected, skipDisabled, isUserInput) {
522
- // Keep track of whether anything changed, because we only want to
523
- // emit the changed event when something actually changed.
524
- const changedOptions = [];
525
- this.options.forEach(option => {
526
- if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {
527
- changedOptions.push(option);
528
- }
529
- });
530
- if (changedOptions.length) {
531
- this._reportValueChange();
532
- if (isUserInput) {
533
- this._emitChangeEvent(changedOptions);
534
- }
535
- }
536
- return changedOptions;
537
- }
538
- /**
539
- * Utility to ensure all indexes are valid.
540
- * @param index The index to be checked.
541
- * @returns True if the index is valid for our list of options.
542
- */
543
- _isValidIndex(index) {
544
- return index >= 0 && index < this.options.length;
545
- }
546
- /** Returns the index of the specified list option. */
547
- _getOptionIndex(option) {
548
- return this.options.toArray().indexOf(option);
549
- }
550
- /** Marks all the options to be checked in the next change detection run. */
551
- _markOptionsForCheck() {
552
- if (this.options) {
553
- this.options.forEach(option => option._markForCheck());
554
- }
555
- }
556
- /**
557
- * Removes the tabindex from the selection list and resets it back afterwards, allowing the user
558
- * to tab out of it. This prevents the list from capturing focus and redirecting it back within
559
- * the list, creating a focus trap if it user tries to tab away.
560
- */
561
- _allowFocusEscape() {
562
- this._tabIndex = -1;
563
- setTimeout(() => {
564
- this._tabIndex = 0;
565
- this._changeDetector.markForCheck();
566
- });
567
- }
568
- /** Updates the tabindex based upon if the selection list is empty. */
569
- _updateTabIndex() {
570
- this._tabIndex = (this.options.length === 0) ? -1 : 0;
571
- }
572
- }
573
- MatSelectionList.decorators = [
574
- { type: Component, args: [{
575
- selector: 'mat-selection-list',
576
- exportAs: 'matSelectionList',
577
- inputs: ['disableRipple'],
578
- host: {
579
- 'role': 'listbox',
580
- 'class': 'mat-selection-list mat-list-base',
581
- '(keydown)': '_keydown($event)',
582
- '[attr.aria-multiselectable]': 'multiple',
583
- '[attr.aria-disabled]': 'disabled.toString()',
584
- '[attr.tabindex]': '_tabIndex',
585
- },
586
- template: '<ng-content></ng-content>',
587
- encapsulation: ViewEncapsulation.None,
588
- providers: [MAT_SELECTION_LIST_VALUE_ACCESSOR],
589
- changeDetection: ChangeDetectionStrategy.OnPush,
590
- styles: [".mat-subheader{display:flex;box-sizing:border-box;padding:16px;align-items:center}.mat-list-base .mat-subheader{margin:0}.mat-list-base{padding-top:8px;display:block;-webkit-tap-highlight-color:transparent}.mat-list-base .mat-subheader{height:48px;line-height:16px}.mat-list-base .mat-subheader:first-child{margin-top:-8px}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{display:block;height:48px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base .mat-list-item .mat-list-item-content,.mat-list-base .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base .mat-list-item .mat-list-item-content-reverse,.mat-list-base .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base .mat-list-item .mat-list-item-ripple,.mat-list-base .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar,.mat-list-base .mat-list-option.mat-list-item-with-avatar{height:56px}.mat-list-base .mat-list-item.mat-2-line,.mat-list-base .mat-list-option.mat-2-line{height:72px}.mat-list-base .mat-list-item.mat-3-line,.mat-list-base .mat-list-option.mat-3-line{height:88px}.mat-list-base .mat-list-item.mat-multi-line,.mat-list-base .mat-list-option.mat-multi-line{height:auto}.mat-list-base .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base .mat-list-item .mat-list-text,.mat-list-base .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base .mat-list-item .mat-list-text>*,.mat-list-base .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base .mat-list-item .mat-list-text:empty,.mat-list-base .mat-list-option .mat-list-text:empty{display:none}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base .mat-list-item .mat-list-avatar,.mat-list-base .mat-list-option .mat-list-avatar{flex-shrink:0;width:40px;height:40px;border-radius:50%;object-fit:cover}.mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:72px;width:calc(100% - 72px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:72px}.mat-list-base .mat-list-item .mat-list-icon,.mat-list-base .mat-list-option .mat-list-icon{flex-shrink:0;width:24px;height:24px;font-size:24px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:64px;width:calc(100% - 64px)}[dir=rtl] .mat-list-base .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:64px}.mat-list-base .mat-list-item .mat-divider,.mat-list-base .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base .mat-list-item .mat-divider,[dir=rtl] .mat-list-base .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-list-base[dense]{padding-top:4px;display:block}.mat-list-base[dense] .mat-subheader{height:40px;line-height:8px}.mat-list-base[dense] .mat-subheader:first-child{margin-top:-4px}.mat-list-base[dense] .mat-list-item,.mat-list-base[dense] .mat-list-option{display:block;height:40px;-webkit-tap-highlight-color:transparent;width:100%;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-item-content,.mat-list-base[dense] .mat-list-option .mat-list-item-content{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;padding:0 16px;position:relative;height:inherit}.mat-list-base[dense] .mat-list-item .mat-list-item-content-reverse,.mat-list-base[dense] .mat-list-option .mat-list-item-content-reverse{display:flex;align-items:center;padding:0 16px;flex-direction:row-reverse;justify-content:space-around}.mat-list-base[dense] .mat-list-item .mat-list-item-ripple,.mat-list-base[dense] .mat-list-option .mat-list-item-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar{height:48px}.mat-list-base[dense] .mat-list-item.mat-2-line,.mat-list-base[dense] .mat-list-option.mat-2-line{height:60px}.mat-list-base[dense] .mat-list-item.mat-3-line,.mat-list-base[dense] .mat-list-option.mat-3-line{height:76px}.mat-list-base[dense] .mat-list-item.mat-multi-line,.mat-list-base[dense] .mat-list-option.mat-multi-line{height:auto}.mat-list-base[dense] .mat-list-item.mat-multi-line .mat-list-item-content,.mat-list-base[dense] .mat-list-option.mat-multi-line .mat-list-item-content{padding-top:16px;padding-bottom:16px}.mat-list-base[dense] .mat-list-item .mat-list-text,.mat-list-base[dense] .mat-list-option .mat-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden;padding:0}.mat-list-base[dense] .mat-list-item .mat-list-text>*,.mat-list-base[dense] .mat-list-option .mat-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-list-base[dense] .mat-list-item .mat-list-text:empty,.mat-list-base[dense] .mat-list-option .mat-list-text:empty{display:none}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:0;padding-left:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:0}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-left:0;padding-right:16px}[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-item.mat-list-option .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar .mat-list-item-content-reverse .mat-list-text,[dir=rtl] .mat-list-base[dense] .mat-list-option.mat-list-option .mat-list-item-content-reverse .mat-list-text{padding-right:0;padding-left:16px}.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-item.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content-reverse .mat-list-text,.mat-list-base[dense] .mat-list-option.mat-list-item-with-avatar.mat-list-option .mat-list-item-content .mat-list-text{padding-right:16px;padding-left:16px}.mat-list-base[dense] .mat-list-item .mat-list-avatar,.mat-list-base[dense] .mat-list-option .mat-list-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;object-fit:cover}.mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:68px;width:calc(100% - 68px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-avatar~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-avatar~.mat-divider-inset{margin-left:auto;margin-right:68px}.mat-list-base[dense] .mat-list-item .mat-list-icon,.mat-list-base[dense] .mat-list-option .mat-list-icon{flex-shrink:0;width:20px;height:20px;font-size:20px;box-sizing:content-box;border-radius:50%;padding:4px}.mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:60px;width:calc(100% - 60px)}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-list-icon~.mat-divider-inset,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-list-icon~.mat-divider-inset{margin-left:auto;margin-right:60px}.mat-list-base[dense] .mat-list-item .mat-divider,.mat-list-base[dense] .mat-list-option .mat-divider{position:absolute;bottom:0;left:0;width:100%;margin:0}[dir=rtl] .mat-list-base[dense] .mat-list-item .mat-divider,[dir=rtl] .mat-list-base[dense] .mat-list-option .mat-divider{margin-left:auto;margin-right:0}.mat-list-base[dense] .mat-list-item .mat-divider.mat-divider-inset,.mat-list-base[dense] .mat-list-option .mat-divider.mat-divider-inset{position:absolute}.mat-nav-list a{text-decoration:none;color:inherit}.mat-nav-list .mat-list-item{cursor:pointer;outline:none}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:transparent;text-align:left}[dir=rtl] mat-action-list button{text-align:right}mat-action-list button::-moz-focus-inner{border:0}mat-action-list .mat-list-item{cursor:pointer;outline:inherit}.mat-list-option:not(.mat-list-item-disabled){cursor:pointer;outline:none}.mat-list-item-disabled{pointer-events:none}.cdk-high-contrast-active .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active :host .mat-list-item-disabled{opacity:.5}.cdk-high-contrast-active .mat-selection-list:focus{outline-style:dotted}.cdk-high-contrast-active .mat-list-option:hover,.cdk-high-contrast-active .mat-list-option:focus,.cdk-high-contrast-active .mat-nav-list .mat-list-item:hover,.cdk-high-contrast-active .mat-nav-list .mat-list-item:focus,.cdk-high-contrast-active mat-action-list .mat-list-item:hover,.cdk-high-contrast-active mat-action-list .mat-list-item:focus{outline:dotted 1px;z-index:1}.cdk-high-contrast-active .mat-list-single-selected-option::after{content:\"\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active [dir=rtl] .mat-list-single-selected-option::after{right:auto;left:16px}@media(hover: none){.mat-list-option:not(.mat-list-single-selected-option):not(.mat-list-item-disabled):hover,.mat-nav-list .mat-list-item:not(.mat-list-item-disabled):hover,.mat-action-list .mat-list-item:not(.mat-list-item-disabled):hover{background:none}}\n"]
591
- },] }
592
- ];
593
- MatSelectionList.ctorParameters = () => [
594
- { type: ElementRef },
595
- { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
596
- { type: ChangeDetectorRef },
597
- { type: FocusMonitor }
598
- ];
599
- MatSelectionList.propDecorators = {
600
- options: [{ type: ContentChildren, args: [MatListOption, { descendants: true },] }],
601
- selectionChange: [{ type: Output }],
602
- tabIndex: [{ type: Input }],
603
- color: [{ type: Input }],
604
- compareWith: [{ type: Input }],
605
- disabled: [{ type: Input }],
606
- multiple: [{ type: Input }]
607
- };
608
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbGlzdC9zZWxlY3Rpb24tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWtCLGVBQWUsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRixPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUNMLENBQUMsRUFDRCxVQUFVLEVBQ1YsS0FBSyxFQUNMLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxHQUNULE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUVMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBRUwsT0FBTyxFQUNQLGtCQUFrQixFQUNsQixRQUFRLEdBRVQsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLHlCQUF5QixFQUFFLHVCQUF1QixFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTFFLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUM7Q0FBUSxDQUFDLENBQUM7QUFD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QVcsRUFBRSxrQkFBa0I7b0JBQy9CLDZCQUE2QixFQUFFLFVBQVU7b0JBQ3pDLHNCQUFzQixFQUFFLHFCQUFxQjtvQkFDN0MsaUJBQWlCLEVBQUUsV0FBVztpQkFDL0I7Z0JBQ0QsUUFBUSxFQUFFLDJCQUEyQjtnQkFFckMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2dCQUM5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQW5VQyxVQUFVO3lDQXlaUCxTQUFTLFNBQUMsVUFBVTtZQTdadkIsaUJBQWlCO1lBZnVCLFlBQVk7OztzQkFnV25ELGVBQWUsU0FBQyxhQUFhLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDOzhCQUdsRCxNQUFNO3VCQU9OLEtBQUs7b0JBR0wsS0FBSzswQkFPTCxLQUFLO3VCQUdMLEtBQUs7dUJBY0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0ZvY3VzYWJsZU9wdGlvbiwgRm9jdXNLZXlNYW5hZ2VyLCBGb2N1c01vbml0b3J9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1NlbGVjdGlvbk1vZGVsfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQSxcbiAgRE9XTl9BUlJPVyxcbiAgRU5URVIsXG4gIGhhc01vZGlmaWVyS2V5LFxuICBTUEFDRSxcbiAgVVBfQVJST1csXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ2FuRGlzYWJsZVJpcHBsZSxcbiAgTWF0TGluZSxcbiAgbWl4aW5EaXNhYmxlUmlwcGxlLFxuICBzZXRMaW5lcyxcbiAgVGhlbWVQYWxldHRlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N0YXJ0V2l0aCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdExpc3RBdmF0YXJDc3NNYXRTdHlsZXIsIE1hdExpc3RJY29uQ3NzTWF0U3R5bGVyfSBmcm9tICcuL2xpc3QnO1xuXG5jb25zdCBfTWF0U2VsZWN0aW9uTGlzdEJhc2UgPSBtaXhpbkRpc2FibGVSaXBwbGUoY2xhc3Mge30pO1xuY29uc3QgX01hdExpc3RPcHRpb25CYXNlID0gbWl4aW5EaXNhYmxlUmlwcGxlKGNsYXNzIHt9KTtcblxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjb25zdCBNQVRfU0VMRUNUSU9OX0xJU1RfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdFNlbGVjdGlvbkxpc3QpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuLyoqIENoYW5nZSBldmVudCB0aGF0IGlzIGJlaW5nIGZpcmVkIHdoZW5ldmVyIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiBhbiBvcHRpb24gY2hhbmdlcy4gKi9cbmV4cG9ydCBjbGFzcyBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2VsZWN0aW9uIGxpc3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4gKi9cbiAgICBwdWJsaWMgc291cmNlOiBNYXRTZWxlY3Rpb25MaXN0LFxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byB0aGUgb3B0aW9uIHRoYXQgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgYG9wdGlvbnNgIGluc3RlYWQsIGJlY2F1c2Ugc29tZSBldmVudHMgbWF5IGNoYW5nZSBtb3JlIHRoYW4gb25lIG9wdGlvbi5cbiAgICAgKiBAYnJlYWtpbmctY2hhbmdlIDEyLjAuMFxuICAgICAqL1xuICAgIHB1YmxpYyBvcHRpb246IE1hdExpc3RPcHRpb24sXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgb3B0aW9ucyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyBvcHRpb25zOiBNYXRMaXN0T3B0aW9uW10pIHt9XG59XG5cbi8qKlxuICogVHlwZSBkZXNjcmliaW5nIHBvc3NpYmxlIHBvc2l0aW9ucyBvZiBhIGNoZWNrYm94IGluIGEgbGlzdCBvcHRpb25cbiAqIHdpdGggcmVzcGVjdCB0byB0aGUgbGlzdCBpdGVtJ3MgdGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgTWF0TGlzdE9wdGlvbkNoZWNrYm94UG9zaXRpb24gPSAnYmVmb3JlJ3wnYWZ0ZXInO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgbGlzdC1vcHRpb25zIG9mIHNlbGVjdGlvbi1saXN0LiBFYWNoIGxpc3Qtb3B0aW9uIGNhbiBhdXRvbWF0aWNhbGx5XG4gKiBnZW5lcmF0ZSBhIGNoZWNrYm94IGFuZCBjYW4gcHV0IGN1cnJlbnQgaXRlbSBpbnRvIHRoZSBzZWxlY3Rpb25Nb2RlbCBvZiBzZWxlY3Rpb24tbGlzdFxuICogaWYgdGhlIGN1cnJlbnQgaXRlbSBpcyBzZWxlY3RlZC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWxpc3Qtb3B0aW9uJyxcbiAgZXhwb3J0QXM6ICdtYXRMaXN0T3B0aW9uJyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVSaXBwbGUnXSxcbiAgaG9zdDoge1xuICAgICdyb2xlJzogJ29wdGlvbicsXG4gICAgJ2NsYXNzJzogJ21hdC1saXN0LWl0ZW0gbWF0LWxpc3Qtb3B0aW9uIG1hdC1mb2N1cy1pbmRpY2F0b3InLFxuICAgICcoZm9jdXMpJzogJ19oYW5kbGVGb2N1cygpJyxcbiAgICAnKGJsdXIpJzogJ19oYW5kbGVCbHVyKCknLFxuICAgICcoY2xpY2spJzogJ19oYW5kbGVDbGljaygpJyxcbiAgICAnW2NsYXNzLm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLm1hdC1saXN0LWl0ZW0td2l0aC1hdmF0YXJdJzogJ19hdmF0YXIgfHwgX2ljb24nLFxuICAgIC8vIE1hbnVhbGx5IHNldCB0aGUgXCJwcmltYXJ5XCIgb3IgXCJ3YXJuXCIgY2xhc3MgaWYgdGhlIGNvbG9yIGhhcyBiZWVuIGV4cGxpY2l0bHlcbiAgICAvLyBzZXQgdG8gXCJwcmltYXJ5XCIgb3IgXCJ3YXJuXCIuIFRoZSBwc2V1ZG8gY2hlY2tib3ggcGlja3MgdXAgdGhlc2UgY2xhc3NlcyBmb3JcbiAgICAvLyBpdHMgdGhlbWUuXG4gICAgJ1tjbGFzcy5tYXQtcHJpbWFyeV0nOiAnY29sb3IgPT09IFwicHJpbWFyeVwiJyxcbiAgICAvLyBFdmVuIHRob3VnaCBhY2NlbnQgaXMgdGhlIGRlZmF1bHQsIHdlIG5lZWQgdG8gc2V0IHRoaXMgY2xhc3MgYW55d2F5LCBiZWNhdXNlIHRoZSAgbGlzdCBtaWdodFxuICAgIC8vIGJlIHBsYWNlZCBpbnNpZGUgYSBwYXJlbnQgdGhhdCBoYXMgb25lIG9mIHRoZSBvdGhlciBjb2xvcnMgd2l0aCBhIGhpZ2hlciBzcGVjaWZpY2l0eS5cbiAgICAnW2NsYXNzLm1hdC1hY2NlbnRdJzogJ2NvbG9yICE9PSBcInByaW1hcnlcIiAmJiBjb2xvciAhPT0gXCJ3YXJuXCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ2NvbG9yID09PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uXSc6ICdzZWxlY3RlZCAmJiAhc2VsZWN0aW9uTGlzdC5tdWx0aXBsZScsXG4gICAgJ1thdHRyLmFyaWEtc2VsZWN0ZWRdJzogJ3NlbGVjdGVkJyxcbiAgICAnW2F0dHIuYXJpYS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnLFxuICB9LFxuICB0ZW1wbGF0ZVVybDogJ2xpc3Qtb3B0aW9uLmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TGlzdE9wdGlvbiBleHRlbmRzIF9NYXRMaXN0T3B0aW9uQmFzZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbkluaXQsIEZvY3VzYWJsZU9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5EaXNhYmxlUmlwcGxlIHtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGFzRm9jdXMgPSBmYWxzZTtcblxuICBAQ29udGVudENoaWxkKE1hdExpc3RBdmF0YXJDc3NNYXRTdHlsZXIpIF9hdmF0YXI6IE1hdExpc3RBdmF0YXJDc3NNYXRTdHlsZXI7XG4gIEBDb250ZW50Q2hpbGQoTWF0TGlzdEljb25Dc3NNYXRTdHlsZXIpIF9pY29uOiBNYXRMaXN0SWNvbkNzc01hdFN0eWxlcjtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRMaW5lLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfbGluZXM6IFF1ZXJ5TGlzdDxNYXRMaW5lPjtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgc2VsZWN0ZWQgc3RhdGUgb2YgdGhlIG9wdGlvbiBoYXMgY2hhbmdlZC5cbiAgICogVXNlIHRvIGZhY2lsaXRhdGUgdHdvLWRhdGEgYmluZGluZyB0byB0aGUgYHNlbGVjdGVkYCBwcm9wZXJ0eS5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbGVjdGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqIERPTSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGl0ZW0ncyB0ZXh0LiAqL1xuICBAVmlld0NoaWxkKCd0ZXh0JykgX3RleHQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBhcHBlYXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjaGVja2JveC4gRGVmYXVsdHMgdG8gJ2FmdGVyJyAqL1xuICBASW5wdXQoKSBjaGVja2JveFBvc2l0aW9uOiBNYXRMaXN0T3B0aW9uQ2hlY2tib3hQb3NpdGlvbiA9ICdhZnRlcic7XG5cbiAgLyoqIFRoZW1lIGNvbG9yIG9mIHRoZSBsaXN0IG9wdGlvbi4gVGhpcyBzZXRzIHRoZSBjb2xvciBvZiB0aGUgY2hlY2tib3guICovXG4gIEBJbnB1dCgpXG4gIGdldCBjb2xvcigpOiBUaGVtZVBhbGV0dGUgeyByZXR1cm4gdGhpcy5fY29sb3IgfHwgdGhpcy5zZWxlY3Rpb25MaXN0LmNvbG9yOyB9XG4gIHNldCBjb2xvcihuZXdWYWx1ZTogVGhlbWVQYWxldHRlKSB7IHRoaXMuX2NvbG9yID0gbmV3VmFsdWU7IH1cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZTtcblxuICAvKipcbiAgICogVGhpcyBpcyBzZXQgdG8gdHJ1ZSBhZnRlciB0aGUgZmlyc3QgT25DaGFuZ2VzIGN5Y2xlIHNvIHdlIGRvbid0IGNsZWFyIHRoZSB2YWx1ZSBvZiBgc2VsZWN0ZWRgXG4gICAqIGluIHRoZSBmaXJzdCBjeWNsZS5cbiAgICovXG4gIHByaXZhdGUgX2lucHV0c0luaXRpYWxpemVkID0gZmFsc2U7XG4gIC8qKiBWYWx1ZSBvZiB0aGUgb3B0aW9uICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH1cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNlbGVjdGVkICYmXG4gICAgICAhdGhpcy5zZWxlY3Rpb25MaXN0LmNvbXBhcmVXaXRoKG5ld1ZhbHVlLCB0aGlzLnZhbHVlKSAmJlxuICAgICAgdGhpcy5faW5wdXRzSW5pdGlhbGl6ZWRcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG9wdGlvbiBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgKHRoaXMuc2VsZWN0aW9uTGlzdCAmJiB0aGlzLnNlbGVjdGlvbkxpc3QuZGlzYWJsZWQpOyB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTGlzdC5zZWxlY3RlZE9wdGlvbnMuaXNTZWxlY3RlZCh0aGlzKTsgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmIChpc1NlbGVjdGVkICE9PSB0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2V0U2VsZWN0ZWQoaXNTZWxlY3RlZCk7XG5cbiAgICAgIGlmIChpc1NlbGVjdGVkIHx8IHRoaXMuc2VsZWN0aW9uTGlzdC5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkxpc3QuX3JlcG9ydFZhbHVlQ2hhbmdlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICAgICAgICAgICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE1hdFNlbGVjdGlvbkxpc3QpKSBwdWJsaWMgc2VsZWN0aW9uTGlzdDogTWF0U2VsZWN0aW9uTGlzdCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5zZWxlY3Rpb25MaXN0O1xuXG4gICAgaWYgKGxpc3QuX3ZhbHVlICYmIGxpc3QuX3ZhbHVlLnNvbWUodmFsdWUgPT4gbGlzdC5jb21wYXJlV2l0aCh2YWx1ZSwgdGhpcy5fdmFsdWUpKSkge1xuICAgICAgdGhpcy5fc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2FzU2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZDtcblxuICAgIC8vIExpc3Qgb3B0aW9ucyB0aGF0IGFyZSBzZWxlY3RlZCBhdCBpbml0aWFsaXphdGlvbiBjYW4ndCBiZSByZXBvcnRlZCBwcm9wZXJseSB0byB0aGUgZm9ybVxuICAgIC8vIGNvbnRyb2wuIFRoaXMgaXMgYmVjYXVzZSBpdCB0YWtlcyBzb21lIHRpbWUgdW50aWwgdGhlIHNlbGVjdGlvbi1saXN0IGtub3dzIGFib3V0IGFsbFxuICAgIC8vIGF2YWlsYWJsZSBvcHRpb25zLiBBbHNvIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgQ29udHJvbFZhbHVlQWNjZXNzb3IgaGFzIGFuIGluaXRpYWwgdmFsdWVcbiAgICAvLyB0aGF0IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIERlZmVycmluZyB0aGUgdmFsdWUgY2hhbmdlIHJlcG9ydCB0byB0aGUgbmV4dCB0aWNrIGVuc3VyZXNcbiAgICAvLyB0aGF0IHRoZSBmb3JtIGNvbnRyb2wgdmFsdWUgaXMgbm90IGJlaW5nIG92ZXJ3cml0dGVuLlxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkIHx8IHdhc1NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9pbnB1dHNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgc2V0TGluZXModGhpcy5fbGluZXMsIHRoaXMuX2VsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIC8vIFdlIGhhdmUgdG8gZGVsYXkgdGhpcyB1bnRpbCB0aGUgbmV4dCB0aWNrIGluIG9yZGVyXG4gICAgICAvLyB0byBhdm9pZCBjaGFuZ2VkIGFmdGVyIGNoZWNrZWQgZXJyb3JzLlxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGhhZEZvY3VzID0gdGhpcy5faGFzRm9jdXM7XG4gICAgY29uc3QgbmV3QWN0aXZlSXRlbSA9IHRoaXMuc2VsZWN0aW9uTGlzdC5fcmVtb3ZlT3B0aW9uRnJvbUxpc3QodGhpcyk7XG5cbiAgICAvLyBPbmx5IG1vdmUgZm9jdXMgaWYgdGhpcyBvcHRpb24gd2FzIGZvY3VzZWQgYXQgdGhlIHRpbWUgaXQgd2FzIGRlc3Ryb3llZC5cbiAgICBpZiAoaGFkRm9jdXMgJiYgbmV3QWN0aXZlSXRlbSkge1xuICAgICAgbmV3QWN0aXZlSXRlbS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUb2dnbGVzIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgdGhlIG9wdGlvbi4gKi9cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgfVxuXG4gIC8qKiBBbGxvd3MgZm9yIHByb2dyYW1tYXRpYyBmb2N1c2luZyBvZiB0aGUgb3B0aW9uLiAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsaXN0IGl0ZW0ncyB0ZXh0IGxhYmVsLiBJbXBsZW1lbnRlZCBhcyBhIHBhcnQgb2YgdGhlIEZvY3VzS2V5TWFuYWdlci5cbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgZ2V0TGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHQgPyAodGhpcy5fdGV4dC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IHx8ICcnKSA6ICcnO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBsaXN0IGl0ZW0gc2hvdWxkIHNob3cgYSByaXBwbGUgZWZmZWN0IHdoZW4gY2xpY2tlZC4gKi9cbiAgX2lzUmlwcGxlRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlUmlwcGxlIHx8IHRoaXMuc2VsZWN0aW9uTGlzdC5kaXNhYmxlUmlwcGxlO1xuICB9XG5cbiAgX2hhbmRsZUNsaWNrKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAodGhpcy5zZWxlY3Rpb25MaXN0Lm11bHRpcGxlIHx8ICF0aGlzLnNlbGVjdGVkKSkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcblxuICAgICAgLy8gRW1pdCBhIGNoYW5nZSBldmVudCBpZiB0aGUgc2VsZWN0ZWQgc3RhdGUgb2YgdGhlIG9wdGlvbiBjaGFuZ2VkIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi5cbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5fZW1pdENoYW5nZUV2ZW50KFt0aGlzXSk7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUZvY3VzKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5fc2V0Rm9jdXNlZE9wdGlvbih0aGlzKTtcbiAgICB0aGlzLl9oYXNGb2N1cyA9IHRydWU7XG4gIH1cblxuICBfaGFuZGxlQmx1cigpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuX29uVG91Y2hlZCgpO1xuICAgIHRoaXMuX2hhc0ZvY3VzID0gZmFsc2U7XG4gIH1cblxuICAvKiogUmV0cmlldmVzIHRoZSBET00gZWxlbWVudCBvZiB0aGUgY29tcG9uZW50IGhvc3QuICovXG4gIF9nZXRIb3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiB0aGUgb3B0aW9uLiBSZXR1cm5zIHdoZXRoZXIgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLiAqL1xuICBfc2V0U2VsZWN0ZWQoc2VsZWN0ZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBzZWxlY3RlZDtcblxuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3QodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5zZWxlY3RlZE9wdGlvbnMuZGVzZWxlY3QodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZENoYW5nZS5lbWl0KHNlbGVjdGVkKTtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZmllcyBBbmd1bGFyIHRoYXQgdGhlIG9wdGlvbiBuZWVkcyB0byBiZSBjaGVja2VkIGluIHRoZSBuZXh0IGNoYW5nZSBkZXRlY3Rpb24gcnVuLiBNYWlubHlcbiAgICogdXNlZCB0byB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgbGlzdCBvcHRpb24gaWYgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBzZWxlY3Rpb24gbGlzdFxuICAgKiBjaGFuZ2VkLlxuICAgKi9cbiAgX21hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2VsZWN0ZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVSaXBwbGU6IEJvb2xlYW5JbnB1dDtcbn1cblxuXG4vKipcbiAqIE1hdGVyaWFsIERlc2lnbiBsaXN0IGNvbXBvbmVudCB3aGVyZSBlYWNoIGl0ZW0gaXMgYSBzZWxlY3RhYmxlIG9wdGlvbi4gQmVoYXZlcyBhcyBhIGxpc3Rib3guXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1zZWxlY3Rpb24tbGlzdCcsXG4gIGV4cG9ydEFzOiAnbWF0U2VsZWN0aW9uTGlzdCcsXG4gIGlucHV0czogWydkaXNhYmxlUmlwcGxlJ10sXG4gIGhvc3Q6IHtcbiAgICAncm9sZSc6ICdsaXN0Ym94JyxcbiAgICAnY2xhc3MnOiAnbWF0LXNlbGVjdGlvbi1saXN0IG1hdC1saXN0LWJhc2UnLFxuICAgICcoa2V5ZG93biknOiAnX2tleWRvd24oJGV2ZW50KScsXG4gICAgJ1thdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXSc6ICdtdWx0aXBsZScsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnX3RhYkluZGV4JyxcbiAgfSxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgc3R5bGVVcmxzOiBbJ2xpc3QuY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW01BVF9TRUxFQ1RJT05fTElTVF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hdFNlbGVjdGlvbkxpc3QgZXh0ZW5kcyBfTWF0U2VsZWN0aW9uTGlzdEJhc2UgaW1wbGVtZW50cyBDYW5EaXNhYmxlUmlwcGxlLFxuICBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIF9tdWx0aXBsZSA9IHRydWU7XG4gIHByaXZhdGUgX2NvbnRlbnRJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgRm9jdXNLZXlNYW5hZ2VyIHdoaWNoIGhhbmRsZXMgZm9jdXMuICovXG4gIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8TWF0TGlzdE9wdGlvbj47XG5cbiAgLyoqIFRoZSBvcHRpb24gY29tcG9uZW50cyBjb250YWluZWQgd2l0aGluIHRoaXMgc2VsZWN0aW9uLWxpc3QuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdE9wdGlvbiwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgb3B0aW9uczogUXVlcnlMaXN0PE1hdExpc3RPcHRpb24+O1xuXG4gIC8qKiBFbWl0cyBhIGNoYW5nZSBldmVudCB3aGVuZXZlciB0aGUgc2VsZWN0ZWQgc3RhdGUgb2YgYW4gb3B0aW9uIGNoYW5nZXMuICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlPiA9XG4gICAgICBuZXcgRXZlbnRFbWl0dGVyPE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2U+KCk7XG5cbiAgLyoqXG4gICAqIFRhYmluZGV4IG9mIHRoZSBzZWxlY3Rpb24gbGlzdC5cbiAgICogQGJyZWFraW5nLWNoYW5nZSAxMS4wLjAgUmVtb3ZlIGB0YWJJbmRleGAgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSB0YWJJbmRleDogbnVtYmVyID0gMDtcblxuICAvKiogVGhlbWUgY29sb3Igb2YgdGhlIHNlbGVjdGlvbiBsaXN0LiBUaGlzIHNldHMgdGhlIGNoZWNrYm94IGNvbG9yIGZvciBhbGwgbGlzdCBvcHRpb25zLiAqL1xuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ2FjY2VudCc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGNvbXBhcmluZyBhbiBvcHRpb24gYWdhaW5zdCB0aGUgc2VsZWN0ZWQgdmFsdWUgd2hlbiBkZXRlcm1pbmluZyB3aGljaFxuICAgKiBvcHRpb25zIHNob3VsZCBhcHBlYXIgYXMgc2VsZWN0ZWQuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgYW4gb3B0aW9ucy4gVGhlIHNlY29uZFxuICAgKiBvbmUgaXMgYSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCB2YWx1ZS4gQSBib29sZWFuIG11c3QgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYXJlV2l0aDogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4gPSAoYTEsIGEyKSA9PiBhMSA9PT0gYTI7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBsaXN0IGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAvLyBUaGUgYE1hdFNlbGVjdGlvbkxpc3RgIGFuZCBgTWF0TGlzdE9wdGlvbmAgYXJlIHVzaW5nIHRoZSBgT25QdXNoYCBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgLy8gc3RyYXRlZ3kuIFRoZXJlZm9yZSB0aGUgb3B0aW9ucyB3aWxsIG5vdCBjaGVjayBmb3IgYW55IGNoYW5nZXMgaWYgdGhlIGBNYXRTZWxlY3Rpb25MaXN0YFxuICAgIC8vIGNoYW5nZWQgaXRzIHN0YXRlLiBTaW5jZSB3ZSBrbm93IHRoYXQgYSBjaGFuZ2UgdG8gYGRpc2FibGVkYCBwcm9wZXJ0eSBvZiB0aGUgbGlzdCBhZmZlY3RzXG4gICAgLy8gdGhlIHN0YXRlIG9mIHRoZSBvcHRpb25zLCB3ZSBtYW51YWxseSBtYXJrIGVhY2ggb3B0aW9uIGZvciBjaGVjay5cbiAgICB0aGlzLl9tYXJrT3B0aW9uc0ZvckNoZWNrKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciBzZWxlY3Rpb24gaXMgbGltaXRlZCB0byBvbmUgb3IgbXVsdGlwbGUgaXRlbXMgKGRlZmF1bHQgbXVsdGlwbGUpLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuX211bHRpcGxlKSB7XG4gICAgICBpZiAodGhpcy5fY29udGVudEluaXRpYWxpemVkICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdDYW5ub3QgY2hhbmdlIGBtdWx0aXBsZWAgbW9kZSBvZiBtYXQtc2VsZWN0aW9uLWxpc3QgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX211bHRpcGxlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ldyBTZWxlY3Rpb25Nb2RlbCh0aGlzLl9tdWx0aXBsZSwgdGhpcy5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIG9wdGlvbnMuICovXG4gIHNlbGVjdGVkT3B0aW9ucyA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxNYXRMaXN0T3B0aW9uPih0aGlzLl9tdWx0aXBsZSk7XG5cbiAgLyoqIFRoZSB0YWJpbmRleCBvZiB0aGUgc2VsZWN0aW9uIGxpc3QuICovXG4gIF90YWJJbmRleCA9IC0xO1xuXG4gIC8qKiBWaWV3IHRvIG1vZGVsIGNhbGxiYWNrIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgc2VsZWN0ZWQgb3B0aW9ucyBjaGFuZ2UuICovXG4gIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9IChfOiBhbnkpID0+IHt9O1xuXG4gIC8qKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudGx5LXNlbGVjdGVkIHZhbHVlLiAqL1xuICBfdmFsdWU6IHN0cmluZ1tdfG51bGw7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGxpc3QgaGFzIGJlZW4gZGVzdHJveWVkLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBWaWV3IHRvIG1vZGVsIGNhbGxiYWNrIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBpZiB0aGUgbGlzdCBvciBpdHMgb3B0aW9ucyBsb3N0IGZvY3VzLiAqL1xuICBfb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxpc3QgaGFzIGJlZW4gZGVzdHJveWVkLiAqL1xuICBwcml2YXRlIF9pc0Rlc3Ryb3llZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDExLjAuMCBSZW1vdmUgYHRhYkluZGV4YCBwYXJhbWV0ZXIuXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleDogc3RyaW5nLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDExLjAuMCBgX2ZvY3VzTW9uaXRvcmAgcGFyYW1ldGVyIHRvIGJlY29tZSByZXF1aXJlZC5cbiAgICBwcml2YXRlIF9mb2N1c01vbml0b3I/OiBGb2N1c01vbml0b3IpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICB0aGlzLl9rZXlNYW5hZ2VyID0gbmV3IEZvY3VzS2V5TWFuYWdlcjxNYXRMaXN0T3B0aW9uPih0aGlzLm9wdGlvbnMpXG4gICAgICAud2l0aFdyYXAoKVxuICAgICAgLndpdGhUeXBlQWhlYWQoKVxuICAgICAgLndpdGhIb21lQW5kRW5kKClcbiAgICAgIC8vIEFsbG93IGRpc2FibGVkIGl0ZW1zIHRvIGJlIGZvY3VzYWJsZS4gRm9yIGFjY2Vzc2liaWxpdHkgcmVhc29ucywgdGhlcmUgbXVzdCBiZSBhIHdheSBmb3JcbiAgICAgIC8vIHNjcmVlbnJlYWRlciB1c2VycywgdGhhdCBhbGxvd3MgcmVhZGluZyB0aGUgZGlmZmVyZW50IG9wdGlvbnMgb2YgdGhlIGxpc3QuXG4gICAgICAuc2tpcFByZWRpY2F0ZSgoKSA9PiBmYWxzZSlcbiAgICAgIC53aXRoQWxsb3dlZE1vZGlmaWVyS2V5cyhbJ3NoaWZ0S2V5J10pO1xuXG4gICAgaWYgKHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl9zZXRPcHRpb25zRnJvbVZhbHVlcyh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHVzZXIgYXR0ZW1wdHMgdG8gdGFiIG91dCBvZiB0aGUgc2VsZWN0aW9uIGxpc3QsIGFsbG93IGZvY3VzIHRvIGVzY2FwZS5cbiAgICB0aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fYWxsb3dGb2N1c0VzY2FwZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gV2hlbiB0aGUgbnVtYmVyIG9mIG9wdGlvbnMgY2hhbmdlLCB1cGRhdGUgdGhlIHRhYmluZGV4IG9mIHRoZSBzZWxlY3Rpb24gbGlzdC5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aChudWxsKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVUYWJJbmRleCgpO1xuICAgIH0pO1xuXG4gICAgLy8gU3luYyBleHRlcm5hbCBjaGFuZ2VzIHRvIHRoZSBtb2RlbCBiYWNrIHRvIHRoZSBvcHRpb25zLlxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmNoYW5nZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC5hZGRlZCkge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGV2ZW50LmFkZGVkKSB7XG4gICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LnJlbW92ZWQpIHtcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBldmVudC5yZW1vdmVkKSB7XG4gICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDExLjAuMCBSZW1vdmUgbnVsbCBhc3NlcnRpb24gb25jZSBfZm9jdXNNb25pdG9yIGlzIHJlcXVpcmVkLlxuICAgIHRoaXMuX2ZvY3VzTW9uaXRvcj8ubW9uaXRvcih0aGlzLl9lbGVtZW50KVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XG4gICAgICAgIGlmIChvcmlnaW4gPT09ICdrZXlib2FyZCcgfHwgb3JpZ2luID09PSAncHJvZ3JhbScpIHtcbiAgICAgICAgICBsZXQgdG9Gb2N1cyA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KGkpPy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICB0b0ZvY3VzID0gaTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0b0ZvY3VzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZGlzYWJsZVJpcHBsZUNoYW5nZXMgPSBjaGFuZ2VzWydkaXNhYmxlUmlwcGxlJ107XG4gICAgY29uc3QgY29sb3JDaGFuZ2VzID0gY2hhbmdlc1snY29sb3InXTtcblxuICAgIGlmICgoZGlzYWJsZVJpcHBsZUNoYW5nZXMgJiYgIWRpc2FibGVSaXBwbGVDaGFuZ2VzLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgICAoY29sb3JDaGFuZ2VzICYmICFjb2xvckNoYW5nZXMuZmlyc3RDaGFuZ2UpKSB7XG4gICAgICB0aGlzLl9tYXJrT3B0aW9uc0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gQGJyZWFraW5nLWNoYW5nZSAxMS4wLjAgUmVtb3ZlIG51bGwgYXNzZXJ0aW9uIG9uY2UgX2ZvY3VzTW9uaXRvciBpcyByZXF1aXJlZC5cbiAgICB0aGlzLl9mb2N1c01vbml0b3I/LnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnQpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqIEZvY3VzZXMgdGhlIHNlbGVjdGlvbiBsaXN0LiAqL1xuICBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKSB7XG4gICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiBSZXR1cm5zIHRoZSBvcHRpb25zIHRoYXQgY2hhbmdlZCBhcyBhIHJlc3VsdC4gKi9cbiAgc2VsZWN0QWxsKCk6IE1hdExpc3RPcHRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldEFsbE9wdGlvbnNTZWxlY3RlZCh0cnVlKTtcbiAgfVxuXG4gIC8qKiBEZXNlbGVjdHMgYWxsIG9mIHRoZSBvcHRpb25zLiBSZXR1cm5zIHRoZSBvcHRpb25zIHRoYXQgY2hhbmdlZCBhcyBhIHJlc3VsdC4gKi9cbiAgZGVzZWxlY3RBbGwoKTogTWF0TGlzdE9wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0QWxsT3B0aW9uc1NlbGVjdGVkKGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBmb2N1c2VkIG9wdGlvbiBvZiB0aGUgc2VsZWN0aW9uLWxpc3QuICovXG4gIF9zZXRGb2N1c2VkT3B0aW9uKG9wdGlvbjogTWF0TGlzdE9wdGlvbikge1xuICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShvcHRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gb3B0aW9uIGZyb20gdGhlIHNlbGVjdGlvbiBsaXN0IGFuZCB1cGRhdGVzIHRoZSBhY3RpdmUgaXRlbS5cbiAgICogQHJldHVybnMgQ3VycmVudGx5LWFjdGl2ZSBpdGVtLlxuICAgKi9cbiAgX3JlbW92ZU9wdGlvbkZyb21MaXN0KG9wdGlvbjogTWF0TGlzdE9wdGlvbik6IE1hdExpc3RPcHRpb24gfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25JbmRleCA9IHRoaXMuX2dldE9wdGlvbkluZGV4KG9wdGlvbik7XG5cbiAgICBpZiAob3B0aW9uSW5kZXggPiAtMSAmJiB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gb3B0aW9uSW5kZXgpIHtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyB0aGUgbGFzdCBpdGVtXG4gICAgICBpZiAob3B0aW9uSW5kZXggPiAwKSB7XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShvcHRpb25JbmRleCAtIDEpO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25JbmRleCA9PT0gMCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oTWF0aC5taW4ob3B0aW9uSW5kZXggKyAxLCB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW07XG4gIH1cblxuICAvKiogUGFzc2VzIHJlbGV2YW50IGtleSBwcmVzc2VzIHRvIG91ciBrZXkgbWFuYWdlci4gKi9cbiAgX2tleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBtYW5hZ2VyID0gdGhpcy5fa2V5TWFuYWdlcjtcbiAgICBjb25zdCBwcmV2aW91c0ZvY3VzSW5kZXggPSBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDtcbiAgICBjb25zdCBoYXNNb2RpZmllciA9IGhhc01vZGlmaWVyS2V5KGV2ZW50KTtcblxuICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgY2FzZSBTUEFDRTpcbiAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXIgJiYgIW1hbmFnZXIuaXNUeXBpbmcoKSkge1xuICAgICAgICAgIHRoaXMuX3RvZ2dsZUZvY3VzZWRPcHRpb24oKTtcbiAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZSBzaW5jZSB0aGUgbGlzdCBoYXMgZm9jdXNcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gVGhlIFwiQVwiIGtleSBnZXRzIHNwZWNpYWwgdHJlYXRtZW50LCBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgdGhlIFwic2VsZWN0IGFsbFwiIGZ1bmN0aW9uYWxpdHkuXG4gICAgICAgIGlmIChrZXlDb2RlID09PSBBICYmIHRoaXMubXVsdGlwbGUgJiYgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdjdHJsS2V5JykgJiZcbiAgICAgICAgICAgICFtYW5hZ2VyLmlzVHlwaW5nKCkpIHtcbiAgICAgICAgICBjb25zdCBzaG91bGRTZWxlY3QgPSB0aGlzLm9wdGlvbnMuc29tZShvcHRpb24gPT4gIW9wdGlvbi5kaXNhYmxlZCAmJiAhb3B0aW9uLnNlbGVjdGVkKTtcbiAgICAgICAgICB0aGlzLl9zZXRBbGxPcHRpb25zU2VsZWN0ZWQoc2hvdWxkU2VsZWN0LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIChrZXlDb2RlID09PSBVUF9BUlJPVyB8fCBrZXlDb2RlID09PSBET1dOX0FSUk9XKSAmJiBldmVudC5zaGlmdEtleSAmJlxuICAgICAgICBtYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCAhPT0gcHJldmlvdXNGb2N1c0luZGV4KSB7XG4gICAgICB0aGlzLl90b2dnbGVGb2N1c2VkT3B0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlcG9ydHMgYSB2YWx1ZSBjaGFuZ2UgdG8gdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yICovXG4gIF9yZXBvcnRWYWx1ZUNoYW5nZSgpIHtcbiAgICAvLyBTdG9wIHJlcG9ydGluZyB2YWx1ZSBjaGFuZ2VzIGFmdGVyIHRoZSBsaXN0IGhhcyBiZWVuIGRlc3Ryb3llZC4gVGhpcyBhdm9pZHNcbiAgICAvLyBjYXNlcyB3aGVyZSB0aGUgbGlzdCBtaWdodCB3cm9uZ2x5IHJlc2V0IGl0cyB2YWx1ZSBvbmNlIGl0IGlzIHJlbW92ZWQsIGJ1dFxuICAgIC8vIHRoZSBmb3JtIGNvbnRyb2wgaXMgc3RpbGwgbGl2ZS5cbiAgICBpZiAodGhpcy5vcHRpb25zICYmICF0aGlzLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRTZWxlY3RlZE9wdGlvblZhbHVlcygpO1xuICAgICAgdGhpcy5fb25DaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKiogRW1pdHMgYSBjaGFuZ2UgZXZlbnQgaWYgdGhlIHNlbGVjdGVkIHN0YXRlIG9mIGFuIG9wdGlvbiBjaGFuZ2VkLiAqL1xuICBfZW1pdENoYW5nZUV2ZW50KG9wdGlvbnM6IE1hdExpc3RPcHRpb25bXSkge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UodGhpcywgb3B0aW9uc1swXSwgb3B0aW9ucykpO1xuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHdyaXRlVmFsdWUodmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWVzO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy5fc2V0T3B0aW9uc0Zyb21WYWx1ZXModmFsdWVzIHx8IFtdKTtcbiAgICB9XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBzZWxlY3RlZCBvcHRpb25zIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgdmFsdWVzLiAqL1xuICBwcml2YXRlIF9zZXRPcHRpb25zRnJvbVZhbHVlcyh2YWx1ZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5fc2V0U2VsZWN0ZWQoZmFsc2UpKTtcblxuICAgIHZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGNvcnJlc3BvbmRpbmdPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZChvcHRpb24gPT4ge1xuICAgICAgICAvLyBTa2lwIG9wdGlvbnMgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgbW9kZWwuIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSBjYXNlc1xuICAgICAgICAvLyB3aGVyZSB0aGUgc2FtZSBwcmltaXRpdmUgdmFsdWUgaXMgc2VsZWN0ZWQgbXVsdGlwbGUgdGltZXMuXG4gICAgICAgIHJldHVybiBvcHRpb24uc2VsZWN0ZWQgPyBmYWxzZSA6IHRoaXMuY29tcGFyZVdpdGgob3B0aW9uLnZhbHVlLCB2YWx1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvcnJlc3BvbmRpbmdPcHRpb24pIHtcbiAgICAgICAgY29ycmVzcG9uZGluZ09wdGlvbi5fc2V0U2VsZWN0ZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgdmFsdWVzIG9mIHRoZSBzZWxlY3RlZCBvcHRpb25zLiAqL1xuICBwcml2YXRlIF9nZXRTZWxlY3RlZE9wdGlvblZhbHVlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5zZWxlY3RlZCkubWFwKG9wdGlvbiA9PiBvcHRpb24udmFsdWUpO1xuICB9XG5cbiAgLyoqIFRvZ2dsZXMgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50bHkgZm9jdXNlZCBvcHRpb24gaWYgZW5hYmxlZC4gKi9cbiAgcHJpdmF0ZSBfdG9nZ2xlRm9jdXNlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgZm9jdXNlZEluZGV4ID0gdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg7XG5cbiAgICBpZiAoZm9jdXNlZEluZGV4ICE9IG51bGwgJiYgdGhpcy5faXNWYWxpZEluZGV4KGZvY3VzZWRJbmRleCkpIHtcbiAgICAgIGxldCBmb2N1c2VkT3B0aW9uOiBNYXRMaXN0T3B0aW9uID0gdGhpcy5vcHRpb25zLnRvQXJyYXkoKVtmb2N1c2VkSW5kZXhdO1xuXG4gICAgICBpZiAoZm9jdXNlZE9wdGlvbiAmJiAhZm9jdXNlZE9wdGlvbi5kaXNhYmxlZCAmJiAodGhpcy5fbXVsdGlwbGUgfHwgIWZvY3VzZWRPcHRpb24uc2VsZWN0ZWQpKSB7XG4gICAgICAgIGZvY3VzZWRPcHRpb24udG9nZ2xlKCk7XG5cbiAgICAgICAgLy8gRW1pdCBhIGNoYW5nZSBldmVudCBiZWNhdXNlIHRoZSBmb2N1c2VkIG9wdGlvbiBjaGFuZ2VkIGl0cyBzdGF0ZSB0aHJvdWdoIHVzZXJcbiAgICAgICAgLy8gaW50ZXJhY3Rpb24uXG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudChbZm9jdXNlZE9wdGlvbl0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBzdGF0ZSBvbiBhbGwgb2YgdGhlIG9wdGlvbnNcbiAgICogYW5kIGVtaXRzIGFuIGV2ZW50IGlmIGFueXRoaW5nIGNoYW5nZWQuXG4gICAqL1xuICBwcml2YXRlIF9zZXRBbGxPcHRpb25zU2VsZWN0ZWQoXG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbixcbiAgICBza2lwRGlzYWJsZWQ/OiBib29sZWFuLFxuICAgIGlzVXNlcklucHV0PzogYm9vbGVhbik6IE1hdExpc3RPcHRpb25bXSB7XG4gICAgLy8gS2VlcCB0cmFjayBvZiB3aGV0aGVyIGFueXRoaW5nIGNoYW5nZWQsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvXG4gICAgLy8gZW1pdCB0aGUgY2hhbmdlZCBldmVudCB3aGVuIHNvbWV0aGluZyBhY3R1YWxseSBjaGFuZ2VkLlxuICAgIGNvbnN0IGNoYW5nZWRPcHRpb25zOiBNYXRMaXN0T3B0aW9uW10gPSBbXTtcblxuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICBpZiAoKCFza2lwRGlzYWJsZWQgfHwgIW9wdGlvbi5kaXNhYmxlZCkgJiYgb3B0aW9uLl9zZXRTZWxlY3RlZChpc1NlbGVjdGVkKSkge1xuICAgICAgICBjaGFuZ2VkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2hhbmdlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9yZXBvcnRWYWx1ZUNoYW5nZSgpO1xuXG4gICAgICBpZiAoaXNVc2VySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fZW1pdENoYW5nZUV2ZW50KGNoYW5nZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlZE9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVXRpbGl0eSB0byBlbnN1cmUgYWxsIGluZGV4ZXMgYXJlIHZhbGlkLlxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IHRvIGJlIGNoZWNrZWQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGluZGV4IGlzIHZhbGlkIGZvciBvdXIgbGlzdCBvZiBvcHRpb25zLlxuICAgKi9cbiAgcHJpdmF0ZSBfaXNWYWxpZEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHNwZWNpZmllZCBsaXN0IG9wdGlvbi4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3B0aW9uSW5kZXgob3B0aW9uOiBNYXRMaXN0T3B0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRvQXJyYXkoKS5pbmRleE9mKG9wdGlvbik7XG4gIH1cblxuICAvKiogTWFya3MgYWxsIHRoZSBvcHRpb25zIHRvIGJlIGNoZWNrZWQgaW4gdGhlIG5leHQgY2hhbmdlIGRldGVjdGlvbiBydW4uICovXG4gIHByaXZhdGUgX21hcmtPcHRpb25zRm9yQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5fbWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSB0YWJpbmRleCBmcm9tIHRoZSBzZWxlY3Rpb24gbGlzdCBhbmQgcmVzZXRzIGl0IGJhY2sgYWZ0ZXJ3YXJkcywgYWxsb3dpbmcgdGhlIHVzZXJcbiAgICogdG8gdGFiIG91dCBvZiBpdC4gVGhpcyBwcmV2ZW50cyB0aGUgbGlzdCBmcm9tIGNhcHR1cmluZyBmb2N1cyBhbmQgcmVkaXJlY3RpbmcgaXQgYmFjayB3aXRoaW5cbiAgICogdGhlIGxpc3QsIGNyZWF0aW5nIGEgZm9jdXMgdHJhcCBpZiBpdCB1c2VyIHRyaWVzIHRvIHRhYiBhd2F5LlxuICAgKi9cbiAgcHJpdmF0ZSBfYWxsb3dGb2N1c0VzY2FwZSgpIHtcbiAgICB0aGlzLl90YWJJbmRleCA9IC0xO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl90YWJJbmRleCA9IDA7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBVcGRhdGVzIHRoZSB0YWJpbmRleCBiYXNlZCB1cG9uIGlmIHRoZSBzZWxlY3Rpb24gbGlzdCBpcyBlbXB0eS4gKi9cbiAgcHJpdmF0ZSBfdXBkYXRlVGFiSW5kZXgoKTogdm9pZCB7XG4gICAgdGhpcy5fdGFiSW5kZXggPSAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCkgPyAtMSA6IDA7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVSaXBwbGU6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX211bHRpcGxlOiBCb29sZWFuSW5wdXQ7XG59XG4iXX0=