@angular/cdk 13.0.0-next.7 → 13.0.0-rc.2

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 (855) hide show
  1. package/a11y/a11y-module.d.ts +9 -7
  2. package/a11y/a11y_public_index.d.ts +4 -0
  3. package/a11y/aria-describer/aria-describer.d.ts +3 -7
  4. package/a11y/focus-monitor/focus-monitor.d.ts +5 -0
  5. package/a11y/focus-trap/configurable-focus-trap-factory.d.ts +3 -7
  6. package/a11y/focus-trap/focus-trap-manager.d.ts +3 -7
  7. package/a11y/focus-trap/focus-trap.d.ts +5 -0
  8. package/a11y/high-contrast-mode/high-contrast-mode-detector.d.ts +3 -0
  9. package/a11y/index.d.ts +5 -2
  10. package/a11y/input-modality/input-modality-detector.d.ts +3 -7
  11. package/a11y/interactivity-checker/interactivity-checker.d.ts +3 -0
  12. package/a11y/live-announcer/live-announcer.d.ts +6 -1
  13. package/a11y/package.json +6 -6
  14. package/accordion/accordion-item.d.ts +3 -0
  15. package/accordion/accordion-module.d.ts +6 -7
  16. package/accordion/accordion.d.ts +3 -0
  17. package/accordion/accordion_public_index.d.ts +4 -0
  18. package/accordion/index.d.ts +5 -2
  19. package/accordion/package.json +6 -6
  20. package/bidi/bidi-module.d.ts +5 -7
  21. package/bidi/bidi_public_index.d.ts +4 -0
  22. package/bidi/dir.d.ts +3 -0
  23. package/bidi/directionality.d.ts +3 -0
  24. package/bidi/index.d.ts +5 -2
  25. package/bidi/package.json +6 -6
  26. package/clipboard/clipboard-module.d.ts +5 -7
  27. package/clipboard/clipboard.d.ts +3 -7
  28. package/clipboard/clipboard_public_index.d.ts +4 -0
  29. package/clipboard/copy-to-clipboard.d.ts +3 -0
  30. package/clipboard/index.d.ts +5 -1
  31. package/clipboard/package.json +6 -6
  32. package/coercion/package.json +5 -5
  33. package/collections/collections_public_index.d.ts +4 -0
  34. package/collections/index.d.ts +5 -1
  35. package/collections/package.json +6 -6
  36. package/collections/unique-selection-dispatcher.d.ts +3 -0
  37. package/drag-drop/client-rect.d.ts +8 -1
  38. package/drag-drop/directives/drag-handle.d.ts +3 -0
  39. package/drag-drop/directives/drag-placeholder.d.ts +3 -0
  40. package/drag-drop/directives/drag-preview.d.ts +3 -0
  41. package/drag-drop/directives/drag.d.ts +3 -0
  42. package/drag-drop/directives/drop-list-group.d.ts +3 -0
  43. package/drag-drop/directives/drop-list.d.ts +3 -0
  44. package/drag-drop/drag-drop-module.d.ts +11 -7
  45. package/drag-drop/drag-drop-registry.d.ts +3 -0
  46. package/drag-drop/drag-drop.d.ts +3 -0
  47. package/drag-drop/drag-drop_public_index.d.ts +4 -0
  48. package/drag-drop/index.d.ts +5 -2
  49. package/drag-drop/package.json +6 -6
  50. package/esm2020/a11y/a11y-module.mjs +33 -0
  51. package/esm2020/a11y/a11y_public_index.mjs +5 -0
  52. package/esm2020/a11y/aria-describer/aria-describer.mjs +208 -0
  53. package/{esm2015/a11y/aria-describer/aria-reference.js → esm2020/a11y/aria-describer/aria-reference.mjs} +1 -1
  54. package/esm2020/a11y/fake-event-detection.mjs +29 -0
  55. package/esm2020/a11y/focus-monitor/focus-monitor.mjs +400 -0
  56. package/{esm2015/a11y/focus-trap/configurable-focus-trap-config.js → esm2020/a11y/focus-trap/configurable-focus-trap-config.mjs} +0 -0
  57. package/esm2020/a11y/focus-trap/configurable-focus-trap-factory.mjs +53 -0
  58. package/esm2020/a11y/focus-trap/configurable-focus-trap.mjs +51 -0
  59. package/esm2020/a11y/focus-trap/event-listener-inert-strategy.mjs +61 -0
  60. package/esm2020/a11y/focus-trap/focus-trap-inert-strategy.mjs +11 -0
  61. package/esm2020/a11y/focus-trap/focus-trap-manager.mjs +53 -0
  62. package/esm2020/a11y/focus-trap/focus-trap.mjs +399 -0
  63. package/esm2020/a11y/high-contrast-mode/high-contrast-mode-detector.mjs +95 -0
  64. package/esm2020/a11y/index.mjs +9 -0
  65. package/esm2020/a11y/input-modality/input-modality-detector.mjs +176 -0
  66. package/esm2020/a11y/interactivity-checker/interactivity-checker.mjs +238 -0
  67. package/{esm2015/a11y/key-manager/activedescendant-key-manager.js → esm2020/a11y/key-manager/activedescendant-key-manager.mjs} +1 -1
  68. package/{esm2015/a11y/key-manager/focus-key-manager.js → esm2020/a11y/key-manager/focus-key-manager.mjs} +0 -0
  69. package/esm2020/a11y/key-manager/list-key-manager.mjs +321 -0
  70. package/esm2020/a11y/live-announcer/live-announcer-tokens.mjs +19 -0
  71. package/esm2020/a11y/live-announcer/live-announcer.mjs +170 -0
  72. package/{esm2015/a11y/public-api.js → esm2020/a11y/public-api.mjs} +0 -0
  73. package/esm2020/accordion/accordion-item.mjs +167 -0
  74. package/esm2020/accordion/accordion-module.mjs +24 -0
  75. package/esm2020/accordion/accordion.mjs +70 -0
  76. package/esm2020/accordion/accordion_public_index.mjs +5 -0
  77. package/esm2020/accordion/index.mjs +9 -0
  78. package/{esm2015/accordion/public-api.js → esm2020/accordion/public-api.mjs} +0 -0
  79. package/esm2020/bidi/bidi-module.mjs +23 -0
  80. package/esm2020/bidi/bidi_public_index.mjs +5 -0
  81. package/{esm2015/bidi/dir-document-token.js → esm2020/bidi/dir-document-token.mjs} +1 -1
  82. package/esm2020/bidi/dir.mjs +67 -0
  83. package/esm2020/bidi/directionality.mjs +47 -0
  84. package/esm2020/bidi/index.mjs +9 -0
  85. package/{esm2015/bidi/public-api.js → esm2020/bidi/public-api.mjs} +1 -1
  86. package/esm2020/clipboard/clipboard-module.mjs +23 -0
  87. package/esm2020/clipboard/clipboard.mjs +53 -0
  88. package/esm2020/clipboard/clipboard_public_index.mjs +5 -0
  89. package/esm2020/clipboard/copy-to-clipboard.mjs +99 -0
  90. package/esm2020/clipboard/index.mjs +9 -0
  91. package/esm2020/clipboard/pending-copy.mjs +67 -0
  92. package/{esm2015/clipboard/public-api.js → esm2020/clipboard/public-api.mjs} +0 -0
  93. package/{esm2015/coercion/array.js → esm2020/coercion/array.mjs} +0 -0
  94. package/{esm2015/coercion/boolean-property.js → esm2020/coercion/boolean-property.mjs} +0 -0
  95. package/{esm2015/coercion/css-pixel-value.js → esm2020/coercion/css-pixel-value.mjs} +0 -0
  96. package/{esm2015/coercion/element.js → esm2020/coercion/element.mjs} +0 -0
  97. package/{esm2015/coercion/index.js → esm2020/coercion/index.mjs} +0 -0
  98. package/{esm2015/coercion/number-property.js → esm2020/coercion/number-property.mjs} +0 -0
  99. package/{esm2015/coercion/public-api.js → esm2020/coercion/public-api.mjs} +0 -0
  100. package/{esm2015/coercion/string-array.js → esm2020/coercion/string-array.mjs} +0 -0
  101. package/{esm2015/collections/array-data-source.js → esm2020/collections/array-data-source.mjs} +1 -1
  102. package/esm2020/collections/collection-viewer.mjs +9 -0
  103. package/esm2020/collections/collections_public_index.mjs +5 -0
  104. package/{esm2015/collections/data-source.js → esm2020/collections/data-source.mjs} +0 -0
  105. package/esm2020/collections/dispose-view-repeater-strategy.mjs +47 -0
  106. package/esm2020/collections/index.mjs +9 -0
  107. package/{esm2015/collections/public-api.js → esm2020/collections/public-api.mjs} +0 -0
  108. package/esm2020/collections/recycle-view-repeater-strategy.mjs +128 -0
  109. package/{esm2015/collections/selection-model.js → esm2020/collections/selection-model.mjs} +2 -2
  110. package/esm2020/collections/tree-adapter.mjs +9 -0
  111. package/esm2020/collections/unique-selection-dispatcher.mjs +55 -0
  112. package/esm2020/collections/view-repeater.mjs +14 -0
  113. package/esm2020/drag-drop/client-rect.mjs +64 -0
  114. package/esm2020/drag-drop/clone-node.mjs +65 -0
  115. package/esm2020/drag-drop/directives/assertions.mjs +18 -0
  116. package/{esm2015/drag-drop/directives/config.js → esm2020/drag-drop/directives/config.mjs} +1 -1
  117. package/esm2020/drag-drop/directives/drag-handle.mjs +66 -0
  118. package/esm2020/drag-drop/directives/drag-placeholder.mjs +36 -0
  119. package/esm2020/drag-drop/directives/drag-preview.mjs +47 -0
  120. package/esm2020/drag-drop/directives/drag.mjs +483 -0
  121. package/esm2020/drag-drop/directives/drop-list-group.mjs +53 -0
  122. package/esm2020/drag-drop/directives/drop-list.mjs +344 -0
  123. package/esm2020/drag-drop/drag-drop-module.mjs +57 -0
  124. package/esm2020/drag-drop/drag-drop-registry.mjs +231 -0
  125. package/esm2020/drag-drop/drag-drop.mjs +57 -0
  126. package/esm2020/drag-drop/drag-drop_public_index.mjs +5 -0
  127. package/esm2020/drag-drop/drag-events.mjs +9 -0
  128. package/{esm2015/drag-drop/drag-parent.js → esm2020/drag-drop/drag-parent.mjs} +0 -0
  129. package/esm2020/drag-drop/drag-ref.mjs +1108 -0
  130. package/esm2020/drag-drop/drag-styling.mjs +69 -0
  131. package/esm2020/drag-drop/drag-utils.mjs +60 -0
  132. package/esm2020/drag-drop/drop-list-ref.mjs +830 -0
  133. package/esm2020/drag-drop/index.mjs +9 -0
  134. package/{esm2015/drag-drop/parent-position-tracker.js → esm2020/drag-drop/parent-position-tracker.mjs} +2 -2
  135. package/{esm2015/drag-drop/public-api.js → esm2020/drag-drop/public-api.mjs} +0 -0
  136. package/esm2020/drag-drop/transition-duration.mjs +36 -0
  137. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  138. package/esm2020/keycodes/index.mjs +9 -0
  139. package/{esm2015/keycodes/keycodes.js → esm2020/keycodes/keycodes.mjs} +1 -1
  140. package/esm2020/keycodes/keycodes_public_index.mjs +5 -0
  141. package/{esm2015/keycodes/modifiers.js → esm2020/keycodes/modifiers.mjs} +0 -0
  142. package/{esm2015/keycodes/public-api.js → esm2020/keycodes/public-api.mjs} +0 -0
  143. package/esm2020/layout/breakpoints-observer.mjs +105 -0
  144. package/{esm2015/layout/breakpoints.js → esm2020/layout/breakpoints.mjs} +1 -1
  145. package/esm2020/layout/index.mjs +9 -0
  146. package/esm2020/layout/layout-module.mjs +19 -0
  147. package/esm2020/layout/layout_public_index.mjs +5 -0
  148. package/esm2020/layout/media-matcher.mjs +85 -0
  149. package/{esm2015/layout/public-api.js → esm2020/layout/public-api.mjs} +0 -0
  150. package/esm2020/observers/index.mjs +9 -0
  151. package/esm2020/observers/observe-content.mjs +187 -0
  152. package/esm2020/observers/observers_public_index.mjs +5 -0
  153. package/{esm2015/observers/public-api.js → esm2020/observers/public-api.mjs} +0 -0
  154. package/esm2020/overlay/dispatchers/base-overlay-dispatcher.mjs +52 -0
  155. package/{esm2015/overlay/dispatchers/index.js → esm2020/overlay/dispatchers/index.mjs} +0 -0
  156. package/esm2020/overlay/dispatchers/overlay-keyboard-dispatcher.mjs +63 -0
  157. package/esm2020/overlay/dispatchers/overlay-outside-click-dispatcher.mjs +116 -0
  158. package/esm2020/overlay/fullscreen-overlay-container.mjs +94 -0
  159. package/esm2020/overlay/index.mjs +9 -0
  160. package/esm2020/overlay/overlay-config.mjs +45 -0
  161. package/esm2020/overlay/overlay-container.mjs +81 -0
  162. package/esm2020/overlay/overlay-directives.mjs +427 -0
  163. package/esm2020/overlay/overlay-module.mjs +29 -0
  164. package/esm2020/overlay/overlay-ref.mjs +402 -0
  165. package/{esm2015/overlay/overlay-reference.js → esm2020/overlay/overlay-reference.mjs} +0 -0
  166. package/esm2020/overlay/overlay.mjs +119 -0
  167. package/esm2020/overlay/overlay_public_index.mjs +5 -0
  168. package/esm2020/overlay/position/connected-position.mjs +97 -0
  169. package/esm2020/overlay/position/flexible-connected-position-strategy.mjs +959 -0
  170. package/esm2020/overlay/position/global-position-strategy.mjs +203 -0
  171. package/esm2020/overlay/position/overlay-position-builder.mjs +50 -0
  172. package/{esm2015/overlay/position/position-strategy.js → esm2020/overlay/position/position-strategy.mjs} +0 -0
  173. package/esm2020/overlay/position/scroll-clip.mjs +40 -0
  174. package/{esm2015/overlay/public-api.js → esm2020/overlay/public-api.mjs} +0 -0
  175. package/{esm2015/overlay/scroll/block-scroll-strategy.js → esm2020/overlay/scroll/block-scroll-strategy.mjs} +1 -1
  176. package/esm2020/overlay/scroll/close-scroll-strategy.mjs +61 -0
  177. package/{esm2015/overlay/scroll/index.js → esm2020/overlay/scroll/index.mjs} +2 -2
  178. package/{esm2015/overlay/scroll/noop-scroll-strategy.js → esm2020/overlay/scroll/noop-scroll-strategy.mjs} +1 -1
  179. package/{esm2015/overlay/scroll/reposition-scroll-strategy.js → esm2020/overlay/scroll/reposition-scroll-strategy.mjs} +1 -1
  180. package/esm2020/overlay/scroll/scroll-strategy-options.mjs +55 -0
  181. package/{esm2015/overlay/scroll/scroll-strategy.js → esm2020/overlay/scroll/scroll-strategy.mjs} +0 -0
  182. package/{esm2015/platform/features/input-types.js → esm2020/platform/features/input-types.mjs} +1 -1
  183. package/esm2020/platform/features/passive-listeners.mjs +36 -0
  184. package/esm2020/platform/features/scrolling.mjs +85 -0
  185. package/{esm2015/platform/features/shadow-dom.js → esm2020/platform/features/shadow-dom.mjs} +4 -3
  186. package/esm2020/platform/features/test-environment.mjs +27 -0
  187. package/esm2020/platform/index.mjs +9 -0
  188. package/esm2020/platform/platform-module.mjs +19 -0
  189. package/esm2020/platform/platform.mjs +85 -0
  190. package/esm2020/platform/platform_public_index.mjs +5 -0
  191. package/{esm2015/platform/public-api.js → esm2020/platform/public-api.mjs} +0 -0
  192. package/esm2020/portal/dom-portal-outlet.mjs +134 -0
  193. package/esm2020/portal/index.mjs +9 -0
  194. package/esm2020/portal/portal-directives.mjs +244 -0
  195. package/{esm2015/portal/portal-errors.js → esm2020/portal/portal-errors.mjs} +1 -1
  196. package/esm2020/portal/portal-injector.mjs +28 -0
  197. package/esm2020/portal/portal.mjs +179 -0
  198. package/esm2020/portal/portal_public_index.mjs +5 -0
  199. package/{esm2015/portal/public-api.js → esm2020/portal/public-api.mjs} +0 -0
  200. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  201. package/esm2020/scrolling/fixed-size-virtual-scroll.mjs +217 -0
  202. package/esm2020/scrolling/index.mjs +9 -0
  203. package/{esm2015/scrolling/public-api.js → esm2020/scrolling/public-api.mjs} +0 -0
  204. package/esm2020/scrolling/scroll-dispatcher.mjs +163 -0
  205. package/esm2020/scrolling/scrollable.mjs +176 -0
  206. package/esm2020/scrolling/scrolling-module.mjs +52 -0
  207. package/esm2020/scrolling/scrolling_public_index.mjs +5 -0
  208. package/esm2020/scrolling/viewport-ruler.mjs +146 -0
  209. package/esm2020/scrolling/virtual-for-of.mjs +296 -0
  210. package/{esm2015/scrolling/virtual-scroll-repeater.js → esm2020/scrolling/virtual-scroll-repeater.mjs} +0 -0
  211. package/esm2020/scrolling/virtual-scroll-strategy.mjs +11 -0
  212. package/esm2020/scrolling/virtual-scroll-viewport.mjs +378 -0
  213. package/esm2020/stepper/index.mjs +9 -0
  214. package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
  215. package/esm2020/stepper/step-header.mjs +30 -0
  216. package/esm2020/stepper/step-label.mjs +23 -0
  217. package/esm2020/stepper/stepper-button.mjs +76 -0
  218. package/esm2020/stepper/stepper-module.mjs +40 -0
  219. package/esm2020/stepper/stepper.mjs +471 -0
  220. package/esm2020/stepper/stepper_public_index.mjs +5 -0
  221. package/esm2020/table/can-stick.mjs +44 -0
  222. package/esm2020/table/cell.mjs +222 -0
  223. package/esm2020/table/coalesced-style-scheduler.mjs +91 -0
  224. package/esm2020/table/index.mjs +9 -0
  225. package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
  226. package/esm2020/table/row.mjs +254 -0
  227. package/esm2020/table/sticky-position-listener.mjs +11 -0
  228. package/esm2020/table/sticky-styler.mjs +345 -0
  229. package/{esm2015/table/table-errors.js → esm2020/table/table-errors.mjs} +1 -1
  230. package/esm2020/table/table-module.mjs +94 -0
  231. package/esm2020/table/table.mjs +1023 -0
  232. package/esm2020/table/table_public_index.mjs +5 -0
  233. package/esm2020/table/text-column.mjs +153 -0
  234. package/{esm2015/table/tokens.js → esm2020/table/tokens.mjs} +1 -1
  235. package/esm2020/testing/change-detection.mjs +102 -0
  236. package/esm2020/testing/component-harness.mjs +322 -0
  237. package/{esm2015/testing/element-dimensions.js → esm2020/testing/element-dimensions.mjs} +1 -1
  238. package/esm2020/testing/harness-environment.mjs +202 -0
  239. package/{esm2015/testing/index.js → esm2020/testing/index.mjs} +0 -0
  240. package/{esm2015/testing/protractor/index.js → esm2020/testing/protractor/index.mjs} +0 -0
  241. package/esm2020/testing/protractor/protractor-element.mjs +234 -0
  242. package/esm2020/testing/protractor/protractor-harness-environment.mjs +72 -0
  243. package/{esm2015/testing/protractor/public-api.js → esm2020/testing/protractor/public-api.mjs} +0 -0
  244. package/{esm2015/testing/public-api.js → esm2020/testing/public-api.mjs} +0 -0
  245. package/{esm2015/testing/selenium-webdriver/index.js → esm2020/testing/selenium-webdriver/index.mjs} +0 -0
  246. package/{esm2015/testing/selenium-webdriver/public-api.js → esm2020/testing/selenium-webdriver/public-api.mjs} +0 -0
  247. package/esm2020/testing/selenium-webdriver/selenium-web-driver-element.mjs +199 -0
  248. package/esm2020/testing/selenium-webdriver/selenium-web-driver-harness-environment.mjs +87 -0
  249. package/{esm2015/testing/selenium-webdriver/selenium-webdriver-keys.js → esm2020/testing/selenium-webdriver/selenium-webdriver-keys.mjs} +2 -2
  250. package/esm2020/testing/test-element.mjs +48 -0
  251. package/esm2020/testing/testbed/fake-events/dispatch-events.mjs +53 -0
  252. package/esm2020/testing/testbed/fake-events/element-focus.mjs +39 -0
  253. package/esm2020/testing/testbed/fake-events/event-objects.mjs +113 -0
  254. package/{esm2015/testing/testbed/fake-events/index.js → esm2020/testing/testbed/fake-events/index.mjs} +0 -0
  255. package/esm2020/testing/testbed/fake-events/type-in-element.mjs +88 -0
  256. package/{esm2015/testing/testbed/index.js → esm2020/testing/testbed/index.mjs} +0 -0
  257. package/{esm2015/testing/testbed/public-api.js → esm2020/testing/testbed/public-api.mjs} +0 -0
  258. package/esm2020/testing/testbed/task-state-zone-interceptor.mjs +82 -0
  259. package/esm2020/testing/testbed/testbed-harness-environment.mjs +162 -0
  260. package/esm2020/testing/testbed/unit-test-element.mjs +224 -0
  261. package/esm2020/testing/text-filtering.mjs +21 -0
  262. package/esm2020/text-field/autofill.mjs +113 -0
  263. package/esm2020/text-field/autosize.mjs +310 -0
  264. package/esm2020/text-field/index.mjs +9 -0
  265. package/{esm2015/text-field/public-api.js → esm2020/text-field/public-api.mjs} +0 -0
  266. package/esm2020/text-field/text-field-module.mjs +26 -0
  267. package/esm2020/text-field/text-field_public_index.mjs +5 -0
  268. package/{esm2015/tree/control/base-tree-control.js → esm2020/tree/control/base-tree-control.mjs} +4 -4
  269. package/{esm2015/tree/control/flat-tree-control.js → esm2020/tree/control/flat-tree-control.mjs} +1 -1
  270. package/esm2020/tree/control/nested-tree-control.mjs +58 -0
  271. package/{esm2015/tree/control/tree-control.js → esm2020/tree/control/tree-control.mjs} +0 -0
  272. package/esm2020/tree/index.mjs +9 -0
  273. package/esm2020/tree/nested-node.mjs +117 -0
  274. package/esm2020/tree/node.mjs +35 -0
  275. package/esm2020/tree/outlet.mjs +39 -0
  276. package/esm2020/tree/padding.mjs +131 -0
  277. package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
  278. package/esm2020/tree/toggle.mjs +53 -0
  279. package/{esm2015/tree/tree-errors.js → esm2020/tree/tree-errors.mjs} +0 -0
  280. package/esm2020/tree/tree-module.mjs +49 -0
  281. package/esm2020/tree/tree.mjs +361 -0
  282. package/esm2020/tree/tree_public_index.mjs +5 -0
  283. package/{esm2015/version.js → esm2020/version.mjs} +1 -1
  284. package/fesm2015/{a11y.js → a11y.mjs} +289 -254
  285. package/fesm2015/a11y.mjs.map +1 -0
  286. package/fesm2015/accordion.mjs +275 -0
  287. package/fesm2015/accordion.mjs.map +1 -0
  288. package/fesm2015/bidi.mjs +187 -0
  289. package/fesm2015/bidi.mjs.map +1 -0
  290. package/fesm2015/{cdk.js → cdk.mjs} +2 -2
  291. package/fesm2015/cdk.mjs.map +1 -0
  292. package/fesm2015/clipboard.mjs +261 -0
  293. package/fesm2015/clipboard.mjs.map +1 -0
  294. package/fesm2015/{coercion.js → coercion.mjs} +1 -1
  295. package/fesm2015/coercion.mjs.map +1 -0
  296. package/fesm2015/{collections.js → collections.mjs} +20 -24
  297. package/fesm2015/collections.mjs.map +1 -0
  298. package/fesm2015/drag-drop.mjs +3675 -0
  299. package/fesm2015/drag-drop.mjs.map +1 -0
  300. package/fesm2015/{keycodes.js → keycodes.mjs} +9 -1
  301. package/fesm2015/keycodes.mjs.map +1 -0
  302. package/fesm2015/{layout.js → layout.mjs} +38 -28
  303. package/fesm2015/layout.mjs.map +1 -0
  304. package/fesm2015/{observers.js → observers.mjs} +58 -41
  305. package/fesm2015/observers.mjs.map +1 -0
  306. package/fesm2015/overlay.mjs +3012 -0
  307. package/fesm2015/overlay.mjs.map +1 -0
  308. package/fesm2015/platform.mjs +388 -0
  309. package/fesm2015/platform.mjs.map +1 -0
  310. package/fesm2015/portal.mjs +657 -0
  311. package/fesm2015/portal.mjs.map +1 -0
  312. package/fesm2015/scrolling.mjs +1402 -0
  313. package/fesm2015/scrolling.mjs.map +1 -0
  314. package/fesm2015/{stepper.js → stepper.mjs} +194 -133
  315. package/fesm2015/stepper.mjs.map +1 -0
  316. package/fesm2015/{table.js → table.mjs} +508 -359
  317. package/fesm2015/table.mjs.map +1 -0
  318. package/fesm2015/testing/{protractor.js → protractor.mjs} +12 -25
  319. package/fesm2015/testing/protractor.mjs.map +1 -0
  320. package/fesm2015/testing/{selenium-webdriver.js → selenium-webdriver.mjs} +14 -28
  321. package/fesm2015/testing/selenium-webdriver.mjs.map +1 -0
  322. package/fesm2015/testing/{testbed.js → testbed.mjs} +23 -29
  323. package/fesm2015/testing/testbed.mjs.map +1 -0
  324. package/fesm2015/{testing.js → testing.mjs} +19 -45
  325. package/fesm2015/testing.mjs.map +1 -0
  326. package/fesm2015/text-field.mjs +463 -0
  327. package/fesm2015/text-field.mjs.map +1 -0
  328. package/fesm2015/{tree.js → tree.mjs} +206 -152
  329. package/fesm2015/tree.mjs.map +1 -0
  330. package/fesm2020/a11y.mjs +2376 -0
  331. package/fesm2020/a11y.mjs.map +1 -0
  332. package/{fesm2015/accordion.js → fesm2020/accordion.mjs} +95 -57
  333. package/fesm2020/accordion.mjs.map +1 -0
  334. package/{fesm2015/bidi.js → fesm2020/bidi.mjs} +55 -31
  335. package/fesm2020/bidi.mjs.map +1 -0
  336. package/fesm2020/cdk.mjs +30 -0
  337. package/fesm2020/cdk.mjs.map +1 -0
  338. package/{fesm2015/clipboard.js → fesm2020/clipboard.mjs} +59 -40
  339. package/fesm2020/clipboard.mjs.map +1 -0
  340. package/fesm2020/coercion.mjs +132 -0
  341. package/fesm2020/coercion.mjs.map +1 -0
  342. package/fesm2020/collections.mjs +480 -0
  343. package/fesm2020/collections.mjs.map +1 -0
  344. package/{fesm2015/drag-drop.js → fesm2020/drag-drop.mjs} +528 -369
  345. package/fesm2020/drag-drop.mjs.map +1 -0
  346. package/fesm2020/keycodes.mjs +167 -0
  347. package/fesm2020/keycodes.mjs.map +1 -0
  348. package/fesm2020/layout.mjs +254 -0
  349. package/fesm2020/layout.mjs.map +1 -0
  350. package/fesm2020/observers.mjs +210 -0
  351. package/fesm2020/observers.mjs.map +1 -0
  352. package/{fesm2015/overlay.js → fesm2020/overlay.mjs} +320 -228
  353. package/fesm2020/overlay.mjs.map +1 -0
  354. package/{fesm2015/platform.js → fesm2020/platform.mjs} +60 -28
  355. package/fesm2020/platform.mjs.map +1 -0
  356. package/{fesm2015/portal.js → fesm2020/portal.mjs} +93 -64
  357. package/fesm2020/portal.mjs.map +1 -0
  358. package/{fesm2015/scrolling.js → fesm2020/scrolling.mjs} +221 -170
  359. package/fesm2020/scrolling.mjs.map +1 -0
  360. package/fesm2020/stepper.mjs +646 -0
  361. package/fesm2020/stepper.mjs.map +1 -0
  362. package/fesm2020/table.mjs +2303 -0
  363. package/fesm2020/table.mjs.map +1 -0
  364. package/fesm2020/testing/protractor.mjs +322 -0
  365. package/fesm2020/testing/protractor.mjs.map +1 -0
  366. package/fesm2020/testing/selenium-webdriver.mjs +362 -0
  367. package/fesm2020/testing/selenium-webdriver.mjs.map +1 -0
  368. package/fesm2020/testing/testbed.mjs +780 -0
  369. package/fesm2020/testing/testbed.mjs.map +1 -0
  370. package/fesm2020/testing.mjs +719 -0
  371. package/fesm2020/testing.mjs.map +1 -0
  372. package/{fesm2015/text-field.js → fesm2020/text-field.mjs} +91 -68
  373. package/fesm2020/text-field.mjs.map +1 -0
  374. package/fesm2020/tree.mjs +975 -0
  375. package/fesm2020/tree.mjs.map +1 -0
  376. package/keycodes/index.d.ts +5 -1
  377. package/keycodes/keycodes_public_index.d.ts +4 -0
  378. package/keycodes/package.json +6 -6
  379. package/layout/breakpoints-observer.d.ts +3 -7
  380. package/layout/index.d.ts +5 -1
  381. package/layout/layout-module.d.ts +4 -0
  382. package/layout/layout_public_index.d.ts +4 -0
  383. package/layout/media-matcher.d.ts +3 -0
  384. package/layout/package.json +6 -6
  385. package/observers/index.d.ts +5 -1
  386. package/observers/observe-content.d.ts +10 -0
  387. package/observers/observers_public_index.d.ts +4 -0
  388. package/observers/package.json +6 -6
  389. package/overlay/dispatchers/base-overlay-dispatcher.d.ts +3 -7
  390. package/overlay/dispatchers/overlay-keyboard-dispatcher.d.ts +3 -7
  391. package/overlay/dispatchers/overlay-outside-click-dispatcher.d.ts +6 -7
  392. package/overlay/fullscreen-overlay-container.d.ts +3 -0
  393. package/overlay/index.d.ts +5 -3
  394. package/overlay/overlay-container.d.ts +3 -7
  395. package/overlay/overlay-directives.d.ts +5 -0
  396. package/overlay/overlay-module.d.ts +8 -7
  397. package/overlay/overlay.d.ts +3 -0
  398. package/overlay/overlay_public_index.d.ts +4 -0
  399. package/overlay/package.json +6 -6
  400. package/overlay/position/flexible-connected-position-strategy.d.ts +2 -2
  401. package/overlay/position/overlay-position-builder.d.ts +3 -0
  402. package/overlay/position/scroll-clip.d.ts +5 -2
  403. package/overlay/scroll/index.d.ts +1 -1
  404. package/overlay/scroll/scroll-strategy-options.d.ts +3 -0
  405. package/package.json +219 -7
  406. package/platform/index.d.ts +5 -1
  407. package/platform/package.json +6 -6
  408. package/platform/platform-module.d.ts +4 -7
  409. package/platform/platform.d.ts +3 -7
  410. package/platform/platform_public_index.d.ts +4 -0
  411. package/portal/index.d.ts +5 -1
  412. package/portal/package.json +6 -6
  413. package/portal/portal-directives.d.ts +12 -0
  414. package/portal/portal_public_index.d.ts +4 -0
  415. package/schematics/ng-add/index.js +3 -3
  416. package/schematics/ng-add/index.mjs +3 -3
  417. package/schematics/ng-add/package-config.js +4 -2
  418. package/schematics/ng-add/package-config.mjs +4 -2
  419. package/schematics/ng-add/schema.js +1 -1
  420. package/schematics/ng-add/schema.mjs +1 -1
  421. package/schematics/ng-generate/drag-drop/index.js +6 -6
  422. package/schematics/ng-generate/drag-drop/index.mjs +6 -6
  423. package/schematics/ng-update/data/attribute-selectors.js +7 -5
  424. package/schematics/ng-update/data/attribute-selectors.mjs +7 -5
  425. package/schematics/ng-update/data/class-names.js +13 -11
  426. package/schematics/ng-update/data/class-names.mjs +13 -11
  427. package/schematics/ng-update/data/constructor-checks.js +28 -20
  428. package/schematics/ng-update/data/constructor-checks.mjs +28 -20
  429. package/schematics/ng-update/data/css-selectors.js +2 -2
  430. package/schematics/ng-update/data/css-selectors.mjs +2 -2
  431. package/schematics/ng-update/data/element-selectors.js +2 -2
  432. package/schematics/ng-update/data/element-selectors.mjs +2 -2
  433. package/schematics/ng-update/data/input-names.js +40 -16
  434. package/schematics/ng-update/data/input-names.mjs +40 -16
  435. package/schematics/ng-update/data/method-call-checks.js +32 -18
  436. package/schematics/ng-update/data/method-call-checks.mjs +32 -18
  437. package/schematics/ng-update/data/output-names.js +8 -6
  438. package/schematics/ng-update/data/output-names.mjs +8 -6
  439. package/schematics/ng-update/data/property-names.js +40 -32
  440. package/schematics/ng-update/data/property-names.mjs +40 -32
  441. package/schematics/ng-update/devkit-file-system.js +2 -2
  442. package/schematics/ng-update/devkit-file-system.mjs +2 -2
  443. package/schematics/ng-update/devkit-migration-rule.js +8 -7
  444. package/schematics/ng-update/devkit-migration-rule.mjs +8 -7
  445. package/schematics/ng-update/devkit-migration.d.ts +3 -2
  446. package/schematics/ng-update/devkit-migration.js +1 -1
  447. package/schematics/ng-update/devkit-migration.mjs +1 -1
  448. package/schematics/ng-update/find-stylesheets.js +3 -3
  449. package/schematics/ng-update/find-stylesheets.mjs +3 -3
  450. package/schematics/ng-update/html-parsing/angular.js +7 -7
  451. package/schematics/ng-update/html-parsing/angular.mjs +7 -7
  452. package/schematics/ng-update/html-parsing/elements.js +2 -2
  453. package/schematics/ng-update/html-parsing/elements.mjs +2 -2
  454. package/schematics/ng-update/index.js +11 -9
  455. package/schematics/ng-update/index.mjs +11 -9
  456. package/schematics/ng-update/migrations/attribute-selectors.js +11 -7
  457. package/schematics/ng-update/migrations/attribute-selectors.mjs +11 -7
  458. package/schematics/ng-update/migrations/class-inheritance.js +3 -3
  459. package/schematics/ng-update/migrations/class-inheritance.mjs +3 -3
  460. package/schematics/ng-update/migrations/class-names.js +7 -6
  461. package/schematics/ng-update/migrations/class-names.mjs +7 -6
  462. package/schematics/ng-update/migrations/constructor-signature.js +16 -13
  463. package/schematics/ng-update/migrations/constructor-signature.mjs +16 -13
  464. package/schematics/ng-update/migrations/css-selectors.js +7 -6
  465. package/schematics/ng-update/migrations/css-selectors.mjs +7 -6
  466. package/schematics/ng-update/migrations/element-selectors.js +7 -6
  467. package/schematics/ng-update/migrations/element-selectors.mjs +7 -6
  468. package/schematics/ng-update/migrations/input-names.js +8 -9
  469. package/schematics/ng-update/migrations/input-names.mjs +8 -9
  470. package/schematics/ng-update/migrations/method-call-arguments.js +4 -3
  471. package/schematics/ng-update/migrations/method-call-arguments.mjs +4 -3
  472. package/schematics/ng-update/migrations/misc-template.js +3 -3
  473. package/schematics/ng-update/migrations/misc-template.mjs +3 -3
  474. package/schematics/ng-update/migrations/output-names.js +7 -8
  475. package/schematics/ng-update/migrations/output-names.mjs +7 -8
  476. package/schematics/ng-update/migrations/property-names.js +4 -3
  477. package/schematics/ng-update/migrations/property-names.mjs +4 -3
  478. package/schematics/ng-update/migrations/symbol-removal.js +2 -2
  479. package/schematics/ng-update/migrations/symbol-removal.mjs +2 -2
  480. package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.d.ts +14 -0
  481. package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.js +38 -0
  482. package/schematics/ng-update/migrations/tilde-import-v13/tilde-import-migration.mjs +38 -0
  483. package/schematics/ng-update/typescript/base-types.js +1 -1
  484. package/schematics/ng-update/typescript/base-types.mjs +1 -1
  485. package/schematics/ng-update/typescript/literal.d.ts +1 -1
  486. package/schematics/ng-update/typescript/literal.js +1 -1
  487. package/schematics/ng-update/typescript/literal.mjs +1 -1
  488. package/schematics/ng-update/typescript/module-specifiers.js +5 -5
  489. package/schematics/ng-update/typescript/module-specifiers.mjs +5 -5
  490. package/schematics/ng-update/upgrade-data.js +2 -2
  491. package/schematics/ng-update/upgrade-data.mjs +2 -2
  492. package/schematics/package.json +3 -0
  493. package/schematics/paths.js +3 -3
  494. package/schematics/paths.mjs +3 -3
  495. package/schematics/update-tool/component-resource-collector.js +10 -10
  496. package/schematics/update-tool/component-resource-collector.mjs +10 -10
  497. package/schematics/update-tool/file-system.js +1 -1
  498. package/schematics/update-tool/file-system.mjs +1 -1
  499. package/schematics/update-tool/index.d.ts +4 -1
  500. package/schematics/update-tool/index.js +9 -5
  501. package/schematics/update-tool/index.mjs +9 -5
  502. package/schematics/update-tool/migration.d.ts +1 -1
  503. package/schematics/update-tool/migration.js +1 -1
  504. package/schematics/update-tool/migration.mjs +1 -1
  505. package/schematics/update-tool/target-version.js +1 -1
  506. package/schematics/update-tool/target-version.mjs +1 -1
  507. package/schematics/update-tool/utils/decorators.js +8 -4
  508. package/schematics/update-tool/utils/decorators.mjs +8 -4
  509. package/schematics/update-tool/utils/functions.js +1 -1
  510. package/schematics/update-tool/utils/functions.mjs +1 -1
  511. package/schematics/update-tool/utils/imports.js +2 -2
  512. package/schematics/update-tool/utils/imports.mjs +2 -2
  513. package/schematics/update-tool/utils/line-mappings.js +1 -1
  514. package/schematics/update-tool/utils/line-mappings.mjs +1 -1
  515. package/schematics/update-tool/utils/parse-tsconfig.js +2 -2
  516. package/schematics/update-tool/utils/parse-tsconfig.mjs +2 -2
  517. package/schematics/update-tool/utils/property-name.js +1 -1
  518. package/schematics/update-tool/utils/property-name.mjs +1 -1
  519. package/schematics/update-tool/utils/virtual-host.d.ts +1 -1
  520. package/schematics/update-tool/utils/virtual-host.js +3 -3
  521. package/schematics/update-tool/utils/virtual-host.mjs +3 -3
  522. package/schematics/update-tool/version-changes.js +1 -1
  523. package/schematics/update-tool/version-changes.mjs +1 -1
  524. package/schematics/utils/ast/ng-module-imports.js +5 -3
  525. package/schematics/utils/ast/ng-module-imports.mjs +5 -3
  526. package/schematics/utils/ast.js +5 -5
  527. package/schematics/utils/ast.mjs +5 -5
  528. package/schematics/utils/build-component.js +32 -38
  529. package/schematics/utils/build-component.mjs +32 -38
  530. package/schematics/utils/get-project.js +1 -1
  531. package/schematics/utils/get-project.mjs +1 -1
  532. package/schematics/utils/html-manipulation.js +8 -7
  533. package/schematics/utils/html-manipulation.mjs +8 -7
  534. package/schematics/utils/parse5-element.js +9 -10
  535. package/schematics/utils/parse5-element.mjs +9 -10
  536. package/schematics/utils/project-index-file.js +2 -2
  537. package/schematics/utils/project-index-file.mjs +2 -2
  538. package/schematics/utils/project-main-file.js +2 -2
  539. package/schematics/utils/project-main-file.mjs +2 -2
  540. package/schematics/utils/project-style-file.js +7 -9
  541. package/schematics/utils/project-style-file.mjs +7 -9
  542. package/schematics/utils/project-targets.js +1 -1
  543. package/schematics/utils/project-targets.mjs +1 -1
  544. package/schematics/utils/project-tsconfig-paths.js +4 -4
  545. package/schematics/utils/project-tsconfig-paths.mjs +4 -4
  546. package/schematics/utils/schematic-options.js +7 -5
  547. package/schematics/utils/schematic-options.mjs +7 -5
  548. package/schematics/utils/vendored-ast-utils/index.js +17 -18
  549. package/schematics/utils/vendored-ast-utils/index.mjs +17 -18
  550. package/scrolling/fixed-size-virtual-scroll.d.ts +3 -0
  551. package/scrolling/index.d.ts +5 -1
  552. package/scrolling/package.json +6 -6
  553. package/scrolling/scroll-dispatcher.d.ts +3 -7
  554. package/scrolling/scrollable.d.ts +3 -0
  555. package/scrolling/scrolling-module.d.ts +13 -7
  556. package/scrolling/scrolling_public_index.d.ts +4 -0
  557. package/scrolling/viewport-ruler.d.ts +11 -1
  558. package/scrolling/virtual-for-of.d.ts +3 -0
  559. package/scrolling/virtual-scroll-viewport.d.ts +3 -0
  560. package/stepper/index.d.ts +5 -1
  561. package/stepper/package.json +6 -6
  562. package/stepper/step-header.d.ts +3 -0
  563. package/stepper/step-label.d.ts +3 -0
  564. package/stepper/stepper-button.d.ts +5 -7
  565. package/stepper/stepper-module.d.ts +9 -7
  566. package/stepper/stepper.d.ts +5 -7
  567. package/stepper/stepper_public_index.d.ts +4 -0
  568. package/table/cell.d.ts +15 -0
  569. package/table/coalesced-style-scheduler.d.ts +3 -0
  570. package/table/index.d.ts +5 -1
  571. package/table/package.json +6 -6
  572. package/table/row.d.ts +19 -0
  573. package/table/table-module.d.ts +9 -7
  574. package/table/table.d.ts +13 -0
  575. package/table/table_public_index.d.ts +4 -0
  576. package/table/text-column.d.ts +3 -0
  577. package/testing/package.json +5 -5
  578. package/testing/protractor/package.json +5 -5
  579. package/testing/selenium-webdriver/package.json +5 -5
  580. package/testing/testbed/package.json +5 -5
  581. package/testing/testbed/proxy-zone-types.d.ts +1 -1
  582. package/testing/testbed/zone-types.d.ts +1 -1
  583. package/text-field/autofill.d.ts +5 -0
  584. package/text-field/autosize.d.ts +3 -0
  585. package/text-field/index.d.ts +5 -1
  586. package/text-field/package.json +6 -6
  587. package/text-field/text-field-module.d.ts +7 -7
  588. package/text-field/text-field_public_index.d.ts +4 -0
  589. package/tree/control/base-tree-control.d.ts +1 -1
  590. package/tree/control/nested-tree-control.d.ts +2 -2
  591. package/tree/index.d.ts +5 -1
  592. package/tree/nested-node.d.ts +3 -0
  593. package/tree/node.d.ts +3 -0
  594. package/tree/outlet.d.ts +3 -0
  595. package/tree/package.json +6 -6
  596. package/tree/padding.d.ts +3 -0
  597. package/tree/toggle.d.ts +3 -0
  598. package/tree/tree-module.d.ts +10 -7
  599. package/tree/tree.d.ts +5 -0
  600. package/tree/tree_public_index.d.ts +4 -0
  601. package/a11y/index.metadata.json +0 -1
  602. package/accordion/index.metadata.json +0 -1
  603. package/bidi/index.metadata.json +0 -1
  604. package/bundles/cdk-a11y.umd.js +0 -2752
  605. package/bundles/cdk-a11y.umd.js.map +0 -1
  606. package/bundles/cdk-accordion.umd.js +0 -262
  607. package/bundles/cdk-accordion.umd.js.map +0 -1
  608. package/bundles/cdk-bidi.umd.js +0 -206
  609. package/bundles/cdk-bidi.umd.js.map +0 -1
  610. package/bundles/cdk-clipboard.umd.js +0 -278
  611. package/bundles/cdk-clipboard.umd.js.map +0 -1
  612. package/bundles/cdk-coercion.umd.js +0 -477
  613. package/bundles/cdk-coercion.umd.js.map +0 -1
  614. package/bundles/cdk-collections.umd.js +0 -846
  615. package/bundles/cdk-collections.umd.js.map +0 -1
  616. package/bundles/cdk-drag-drop.umd.js +0 -3921
  617. package/bundles/cdk-drag-drop.umd.js.map +0 -1
  618. package/bundles/cdk-keycodes.umd.js +0 -292
  619. package/bundles/cdk-keycodes.umd.js.map +0 -1
  620. package/bundles/cdk-layout.umd.js +0 -284
  621. package/bundles/cdk-layout.umd.js.map +0 -1
  622. package/bundles/cdk-observers.umd.js +0 -242
  623. package/bundles/cdk-observers.umd.js.map +0 -1
  624. package/bundles/cdk-overlay.umd.js +0 -3417
  625. package/bundles/cdk-overlay.umd.js.map +0 -1
  626. package/bundles/cdk-platform.umd.js +0 -397
  627. package/bundles/cdk-platform.umd.js.map +0 -1
  628. package/bundles/cdk-portal.umd.js +0 -1008
  629. package/bundles/cdk-portal.umd.js.map +0 -1
  630. package/bundles/cdk-scrolling.umd.js +0 -1787
  631. package/bundles/cdk-scrolling.umd.js.map +0 -1
  632. package/bundles/cdk-stepper.umd.js +0 -648
  633. package/bundles/cdk-stepper.umd.js.map +0 -1
  634. package/bundles/cdk-table.umd.js +0 -2730
  635. package/bundles/cdk-table.umd.js.map +0 -1
  636. package/bundles/cdk-testing-protractor.umd.js +0 -833
  637. package/bundles/cdk-testing-protractor.umd.js.map +0 -1
  638. package/bundles/cdk-testing-selenium-webdriver.umd.js +0 -1002
  639. package/bundles/cdk-testing-selenium-webdriver.umd.js.map +0 -1
  640. package/bundles/cdk-testing-testbed.umd.js +0 -1396
  641. package/bundles/cdk-testing-testbed.umd.js.map +0 -1
  642. package/bundles/cdk-testing.umd.js +0 -1285
  643. package/bundles/cdk-testing.umd.js.map +0 -1
  644. package/bundles/cdk-text-field.umd.js +0 -494
  645. package/bundles/cdk-text-field.umd.js.map +0 -1
  646. package/bundles/cdk-tree.umd.js +0 -1308
  647. package/bundles/cdk-tree.umd.js.map +0 -1
  648. package/bundles/cdk.umd.js +0 -38
  649. package/bundles/cdk.umd.js.map +0 -1
  650. package/clipboard/index.metadata.json +0 -1
  651. package/collections/index.metadata.json +0 -1
  652. package/drag-drop/index.metadata.json +0 -1
  653. package/esm2015/a11y/a11y-module.js +0 -30
  654. package/esm2015/a11y/a11y.externs.js +0 -6
  655. package/esm2015/a11y/aria-describer/aria-describer.js +0 -213
  656. package/esm2015/a11y/fake-event-detection.js +0 -28
  657. package/esm2015/a11y/focus-monitor/focus-monitor.js +0 -394
  658. package/esm2015/a11y/focus-trap/configurable-focus-trap-factory.js +0 -52
  659. package/esm2015/a11y/focus-trap/configurable-focus-trap.js +0 -49
  660. package/esm2015/a11y/focus-trap/event-listener-inert-strategy.js +0 -62
  661. package/esm2015/a11y/focus-trap/focus-trap-inert-strategy.js +0 -11
  662. package/esm2015/a11y/focus-trap/focus-trap-manager.js +0 -51
  663. package/esm2015/a11y/focus-trap/focus-trap.js +0 -391
  664. package/esm2015/a11y/high-contrast-mode/high-contrast-mode-detector.js +0 -92
  665. package/esm2015/a11y/index.js +0 -6
  666. package/esm2015/a11y/input-modality/input-modality-detector.js +0 -171
  667. package/esm2015/a11y/interactivity-checker/interactivity-checker.js +0 -237
  668. package/esm2015/a11y/key-manager/list-key-manager.js +0 -317
  669. package/esm2015/a11y/live-announcer/live-announcer-tokens.js +0 -19
  670. package/esm2015/a11y/live-announcer/live-announcer.js +0 -167
  671. package/esm2015/accordion/accordion-item.js +0 -146
  672. package/esm2015/accordion/accordion-module.js +0 -19
  673. package/esm2015/accordion/accordion.externs.js +0 -6
  674. package/esm2015/accordion/accordion.js +0 -63
  675. package/esm2015/accordion/index.js +0 -6
  676. package/esm2015/bidi/bidi-module.js +0 -18
  677. package/esm2015/bidi/bidi.externs.js +0 -6
  678. package/esm2015/bidi/dir.js +0 -58
  679. package/esm2015/bidi/directionality.js +0 -44
  680. package/esm2015/bidi/index.js +0 -6
  681. package/esm2015/cdk.externs.js +0 -0
  682. package/esm2015/clipboard/clipboard-module.js +0 -18
  683. package/esm2015/clipboard/clipboard.externs.js +0 -6
  684. package/esm2015/clipboard/clipboard.js +0 -52
  685. package/esm2015/clipboard/copy-to-clipboard.js +0 -90
  686. package/esm2015/clipboard/index.js +0 -5
  687. package/esm2015/clipboard/pending-copy.js +0 -68
  688. package/esm2015/coercion/coercion.externs.js +0 -0
  689. package/esm2015/collections/collection-viewer.js +0 -9
  690. package/esm2015/collections/collections.externs.js +0 -6
  691. package/esm2015/collections/dispose-view-repeater-strategy.js +0 -48
  692. package/esm2015/collections/index.js +0 -5
  693. package/esm2015/collections/recycle-view-repeater-strategy.js +0 -125
  694. package/esm2015/collections/tree-adapter.js +0 -9
  695. package/esm2015/collections/unique-selection-dispatcher.js +0 -53
  696. package/esm2015/collections/view-repeater.js +0 -14
  697. package/esm2015/drag-drop/client-rect.js +0 -60
  698. package/esm2015/drag-drop/clone-node.js +0 -65
  699. package/esm2015/drag-drop/directives/assertions.js +0 -19
  700. package/esm2015/drag-drop/directives/drag-handle.js +0 -57
  701. package/esm2015/drag-drop/directives/drag-placeholder.js +0 -36
  702. package/esm2015/drag-drop/directives/drag-preview.js +0 -42
  703. package/esm2015/drag-drop/directives/drag.js +0 -413
  704. package/esm2015/drag-drop/directives/drop-list-group.js +0 -47
  705. package/esm2015/drag-drop/directives/drop-list.js +0 -301
  706. package/esm2015/drag-drop/drag-drop-module.js +0 -43
  707. package/esm2015/drag-drop/drag-drop-registry.js +0 -231
  708. package/esm2015/drag-drop/drag-drop.externs.js +0 -6
  709. package/esm2015/drag-drop/drag-drop.js +0 -59
  710. package/esm2015/drag-drop/drag-events.js +0 -9
  711. package/esm2015/drag-drop/drag-ref.js +0 -1110
  712. package/esm2015/drag-drop/drag-styling.js +0 -69
  713. package/esm2015/drag-drop/drag-utils.js +0 -60
  714. package/esm2015/drag-drop/drop-list-ref.js +0 -813
  715. package/esm2015/drag-drop/index.js +0 -5
  716. package/esm2015/drag-drop/transition-duration.js +0 -36
  717. package/esm2015/keycodes/index.js +0 -5
  718. package/esm2015/keycodes/keycodes.externs.js +0 -6
  719. package/esm2015/layout/breakpoints-observer.js +0 -106
  720. package/esm2015/layout/index.js +0 -5
  721. package/esm2015/layout/layout-module.js +0 -14
  722. package/esm2015/layout/layout.externs.js +0 -6
  723. package/esm2015/layout/media-matcher.js +0 -85
  724. package/esm2015/observers/index.js +0 -5
  725. package/esm2015/observers/observe-content.js +0 -179
  726. package/esm2015/observers/observers.externs.js +0 -6
  727. package/esm2015/overlay/dispatchers/base-overlay-dispatcher.js +0 -51
  728. package/esm2015/overlay/dispatchers/overlay-keyboard-dispatcher.js +0 -62
  729. package/esm2015/overlay/dispatchers/overlay-outside-click-dispatcher.js +0 -97
  730. package/esm2015/overlay/fullscreen-overlay-container.js +0 -94
  731. package/esm2015/overlay/index.js +0 -7
  732. package/esm2015/overlay/overlay-config.js +0 -45
  733. package/esm2015/overlay/overlay-container.js +0 -85
  734. package/esm2015/overlay/overlay-directives.js +0 -352
  735. package/esm2015/overlay/overlay-module.js +0 -27
  736. package/esm2015/overlay/overlay-ref.js +0 -409
  737. package/esm2015/overlay/overlay.externs.js +0 -6
  738. package/esm2015/overlay/overlay.js +0 -119
  739. package/esm2015/overlay/position/connected-position.js +0 -94
  740. package/esm2015/overlay/position/flexible-connected-position-strategy.js +0 -960
  741. package/esm2015/overlay/position/global-position-strategy.js +0 -197
  742. package/esm2015/overlay/position/overlay-position-builder.js +0 -52
  743. package/esm2015/overlay/position/scroll-clip.js +0 -42
  744. package/esm2015/overlay/scroll/close-scroll-strategy.js +0 -61
  745. package/esm2015/overlay/scroll/scroll-strategy-options.js +0 -57
  746. package/esm2015/platform/features/passive-listeners.js +0 -36
  747. package/esm2015/platform/features/scrolling.js +0 -85
  748. package/esm2015/platform/features/test-environment.js +0 -16
  749. package/esm2015/platform/index.js +0 -5
  750. package/esm2015/platform/platform-module.js +0 -14
  751. package/esm2015/platform/platform.externs.js +0 -6
  752. package/esm2015/platform/platform.js +0 -77
  753. package/esm2015/portal/dom-portal-outlet.js +0 -136
  754. package/esm2015/portal/index.js +0 -5
  755. package/esm2015/portal/portal-directives.js +0 -221
  756. package/esm2015/portal/portal-injector.js +0 -28
  757. package/esm2015/portal/portal.externs.js +0 -6
  758. package/esm2015/portal/portal.js +0 -179
  759. package/esm2015/scrolling/fixed-size-virtual-scroll.js +0 -188
  760. package/esm2015/scrolling/index.js +0 -5
  761. package/esm2015/scrolling/scroll-dispatcher.js +0 -163
  762. package/esm2015/scrolling/scrollable.js +0 -173
  763. package/esm2015/scrolling/scrolling-module.js +0 -49
  764. package/esm2015/scrolling/scrolling.externs.js +0 -6
  765. package/esm2015/scrolling/viewport-ruler.js +0 -139
  766. package/esm2015/scrolling/virtual-for-of.js +0 -293
  767. package/esm2015/scrolling/virtual-scroll-strategy.js +0 -11
  768. package/esm2015/scrolling/virtual-scroll-viewport.js +0 -371
  769. package/esm2015/stepper/index.js +0 -5
  770. package/esm2015/stepper/step-header.js +0 -29
  771. package/esm2015/stepper/step-label.js +0 -22
  772. package/esm2015/stepper/stepper-button.js +0 -72
  773. package/esm2015/stepper/stepper-module.js +0 -37
  774. package/esm2015/stepper/stepper.externs.js +0 -6
  775. package/esm2015/stepper/stepper.js +0 -428
  776. package/esm2015/table/can-stick.js +0 -42
  777. package/esm2015/table/cell.js +0 -211
  778. package/esm2015/table/coalesced-style-scheduler.js +0 -89
  779. package/esm2015/table/index.js +0 -5
  780. package/esm2015/table/row.js +0 -244
  781. package/esm2015/table/sticky-position-listener.js +0 -11
  782. package/esm2015/table/sticky-styler.js +0 -336
  783. package/esm2015/table/table-module.js +0 -47
  784. package/esm2015/table/table.externs.js +0 -6
  785. package/esm2015/table/table.js +0 -987
  786. package/esm2015/table/text-column.js +0 -127
  787. package/esm2015/testing/change-detection.js +0 -110
  788. package/esm2015/testing/component-harness.js +0 -344
  789. package/esm2015/testing/harness-environment.js +0 -219
  790. package/esm2015/testing/protractor/protractor-element.js +0 -274
  791. package/esm2015/testing/protractor/protractor-harness-environment.js +0 -79
  792. package/esm2015/testing/protractor/protractor.externs.js +0 -0
  793. package/esm2015/testing/selenium-webdriver/selenium-web-driver-element.js +0 -241
  794. package/esm2015/testing/selenium-webdriver/selenium-web-driver-harness-environment.js +0 -97
  795. package/esm2015/testing/selenium-webdriver/selenium-webdriver.externs.js +0 -0
  796. package/esm2015/testing/test-element.js +0 -48
  797. package/esm2015/testing/testbed/fake-events/dispatch-events.js +0 -53
  798. package/esm2015/testing/testbed/fake-events/element-focus.js +0 -39
  799. package/esm2015/testing/testbed/fake-events/event-objects.js +0 -107
  800. package/esm2015/testing/testbed/fake-events/type-in-element.js +0 -79
  801. package/esm2015/testing/testbed/task-state-zone-interceptor.js +0 -82
  802. package/esm2015/testing/testbed/testbed-harness-environment.js +0 -173
  803. package/esm2015/testing/testbed/testbed.externs.js +0 -0
  804. package/esm2015/testing/testbed/unit-test-element.js +0 -266
  805. package/esm2015/testing/testing.externs.js +0 -0
  806. package/esm2015/testing/text-filtering.js +0 -23
  807. package/esm2015/text-field/autofill.js +0 -117
  808. package/esm2015/text-field/autosize.js +0 -293
  809. package/esm2015/text-field/index.js +0 -5
  810. package/esm2015/text-field/text-field-module.js +0 -21
  811. package/esm2015/text-field/text-field.externs.js +0 -6
  812. package/esm2015/tree/control/nested-tree-control.js +0 -59
  813. package/esm2015/tree/index.js +0 -5
  814. package/esm2015/tree/nested-node.js +0 -112
  815. package/esm2015/tree/node.js +0 -36
  816. package/esm2015/tree/outlet.js +0 -34
  817. package/esm2015/tree/padding.js +0 -119
  818. package/esm2015/tree/toggle.js +0 -46
  819. package/esm2015/tree/tree-module.js +0 -32
  820. package/esm2015/tree/tree.externs.js +0 -6
  821. package/esm2015/tree/tree.js +0 -345
  822. package/fesm2015/a11y.js.map +0 -1
  823. package/fesm2015/accordion.js.map +0 -1
  824. package/fesm2015/bidi.js.map +0 -1
  825. package/fesm2015/cdk.js.map +0 -1
  826. package/fesm2015/clipboard.js.map +0 -1
  827. package/fesm2015/coercion.js.map +0 -1
  828. package/fesm2015/collections.js.map +0 -1
  829. package/fesm2015/drag-drop.js.map +0 -1
  830. package/fesm2015/keycodes.js.map +0 -1
  831. package/fesm2015/layout.js.map +0 -1
  832. package/fesm2015/observers.js.map +0 -1
  833. package/fesm2015/overlay.js.map +0 -1
  834. package/fesm2015/platform.js.map +0 -1
  835. package/fesm2015/portal.js.map +0 -1
  836. package/fesm2015/scrolling.js.map +0 -1
  837. package/fesm2015/stepper.js.map +0 -1
  838. package/fesm2015/table.js.map +0 -1
  839. package/fesm2015/testing/protractor.js.map +0 -1
  840. package/fesm2015/testing/selenium-webdriver.js.map +0 -1
  841. package/fesm2015/testing/testbed.js.map +0 -1
  842. package/fesm2015/testing.js.map +0 -1
  843. package/fesm2015/text-field.js.map +0 -1
  844. package/fesm2015/tree.js.map +0 -1
  845. package/keycodes/index.metadata.json +0 -1
  846. package/layout/index.metadata.json +0 -1
  847. package/observers/index.metadata.json +0 -1
  848. package/overlay/index.metadata.json +0 -1
  849. package/platform/index.metadata.json +0 -1
  850. package/portal/index.metadata.json +0 -1
  851. package/scrolling/index.metadata.json +0 -1
  852. package/stepper/index.metadata.json +0 -1
  853. package/table/index.metadata.json +0 -1
  854. package/text-field/index.metadata.json +0 -1
  855. package/tree/index.metadata.json +0 -1
@@ -1,394 +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 { Platform, normalizePassiveListenerOptions, _getShadowRoot, _getEventTarget, } from '@angular/cdk/platform';
9
- import { Directive, ElementRef, EventEmitter, Inject, Injectable, InjectionToken, NgZone, Optional, Output, } from '@angular/core';
10
- import { of as observableOf, Subject } from 'rxjs';
11
- import { takeUntil } from 'rxjs/operators';
12
- import { coerceElement } from '@angular/cdk/coercion';
13
- import { DOCUMENT } from '@angular/common';
14
- import { InputModalityDetector, TOUCH_BUFFER_MS, } from '../input-modality/input-modality-detector';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/cdk/platform";
17
- import * as i2 from "../input-modality/input-modality-detector";
18
- import * as i3 from "@angular/common";
19
- /** InjectionToken for FocusMonitorOptions. */
20
- export const FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');
21
- /**
22
- * Event listener options that enable capturing and also
23
- * mark the listener as passive if the browser supports it.
24
- */
25
- const captureEventListenerOptions = normalizePassiveListenerOptions({
26
- passive: true,
27
- capture: true
28
- });
29
- /** Monitors mouse and keyboard events to determine the cause of focus events. */
30
- export class FocusMonitor {
31
- constructor(_ngZone, _platform, _inputModalityDetector,
32
- /** @breaking-change 11.0.0 make document required */
33
- document, options) {
34
- this._ngZone = _ngZone;
35
- this._platform = _platform;
36
- this._inputModalityDetector = _inputModalityDetector;
37
- /** The focus origin that the next focus event is a result of. */
38
- this._origin = null;
39
- /** Whether the window has just been focused. */
40
- this._windowFocused = false;
41
- /**
42
- * Whether the origin was determined via a touch interaction. Necessary as properly attributing
43
- * focus events to touch interactions requires special logic.
44
- */
45
- this._originFromTouchInteraction = false;
46
- /** Map of elements being monitored to their info. */
47
- this._elementInfo = new Map();
48
- /** The number of elements currently being monitored. */
49
- this._monitoredElementCount = 0;
50
- /**
51
- * Keeps track of the root nodes to which we've currently bound a focus/blur handler,
52
- * as well as the number of monitored elements that they contain. We have to treat focus/blur
53
- * handlers differently from the rest of the events, because the browser won't emit events
54
- * to the document when focus moves inside of a shadow root.
55
- */
56
- this._rootNodeFocusListenerCount = new Map();
57
- /**
58
- * Event listener for `focus` events on the window.
59
- * Needs to be an arrow function in order to preserve the context when it gets bound.
60
- */
61
- this._windowFocusListener = () => {
62
- // Make a note of when the window regains focus, so we can
63
- // restore the origin info for the focused element.
64
- this._windowFocused = true;
65
- this._windowFocusTimeoutId = setTimeout(() => this._windowFocused = false);
66
- };
67
- /** Subject for stopping our InputModalityDetector subscription. */
68
- this._stopInputModalityDetector = new Subject();
69
- /**
70
- * Event listener for `focus` and 'blur' events on the document.
71
- * Needs to be an arrow function in order to preserve the context when it gets bound.
72
- */
73
- this._rootNodeFocusAndBlurListener = (event) => {
74
- const target = _getEventTarget(event);
75
- const handler = event.type === 'focus' ? this._onFocus : this._onBlur;
76
- // We need to walk up the ancestor chain in order to support `checkChildren`.
77
- for (let element = target; element; element = element.parentElement) {
78
- handler.call(this, event, element);
79
- }
80
- };
81
- this._document = document;
82
- this._detectionMode = (options === null || options === void 0 ? void 0 : options.detectionMode) || 0 /* IMMEDIATE */;
83
- }
84
- monitor(element, checkChildren = false) {
85
- const nativeElement = coerceElement(element);
86
- // Do nothing if we're not on the browser platform or the passed in node isn't an element.
87
- if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {
88
- return observableOf(null);
89
- }
90
- // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to
91
- // the shadow root, rather than the `document`, because the browser won't emit focus events
92
- // to the `document`, if focus is moving within the same shadow root.
93
- const rootNode = _getShadowRoot(nativeElement) || this._getDocument();
94
- const cachedInfo = this._elementInfo.get(nativeElement);
95
- // Check if we're already monitoring this element.
96
- if (cachedInfo) {
97
- if (checkChildren) {
98
- // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren
99
- // observers into ones that behave as if `checkChildren` was turned on. We need a more
100
- // robust solution.
101
- cachedInfo.checkChildren = true;
102
- }
103
- return cachedInfo.subject;
104
- }
105
- // Create monitored element info.
106
- const info = {
107
- checkChildren: checkChildren,
108
- subject: new Subject(),
109
- rootNode
110
- };
111
- this._elementInfo.set(nativeElement, info);
112
- this._registerGlobalListeners(info);
113
- return info.subject;
114
- }
115
- stopMonitoring(element) {
116
- const nativeElement = coerceElement(element);
117
- const elementInfo = this._elementInfo.get(nativeElement);
118
- if (elementInfo) {
119
- elementInfo.subject.complete();
120
- this._setClasses(nativeElement);
121
- this._elementInfo.delete(nativeElement);
122
- this._removeGlobalListeners(elementInfo);
123
- }
124
- }
125
- focusVia(element, origin, options) {
126
- const nativeElement = coerceElement(element);
127
- const focusedElement = this._getDocument().activeElement;
128
- // If the element is focused already, calling `focus` again won't trigger the event listener
129
- // which means that the focus classes won't be updated. If that's the case, update the classes
130
- // directly without waiting for an event.
131
- if (nativeElement === focusedElement) {
132
- this._getClosestElementsInfo(nativeElement)
133
- .forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));
134
- }
135
- else {
136
- this._setOrigin(origin);
137
- // `focus` isn't available on the server
138
- if (typeof nativeElement.focus === 'function') {
139
- nativeElement.focus(options);
140
- }
141
- }
142
- }
143
- ngOnDestroy() {
144
- this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));
145
- }
146
- /** Access injected document if available or fallback to global document reference */
147
- _getDocument() {
148
- return this._document || document;
149
- }
150
- /** Use defaultView of injected document if available or fallback to global window reference */
151
- _getWindow() {
152
- const doc = this._getDocument();
153
- return doc.defaultView || window;
154
- }
155
- _getFocusOrigin(focusEventTarget) {
156
- if (this._origin) {
157
- // If the origin was realized via a touch interaction, we need to perform additional checks
158
- // to determine whether the focus origin should be attributed to touch or program.
159
- if (this._originFromTouchInteraction) {
160
- return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';
161
- }
162
- else {
163
- return this._origin;
164
- }
165
- }
166
- // If the window has just regained focus, we can restore the most recent origin from before the
167
- // window blurred. Otherwise, we've reached the point where we can't identify the source of the
168
- // focus. This typically means one of two things happened:
169
- //
170
- // 1) The element was programmatically focused, or
171
- // 2) The element was focused via screen reader navigation (which generally doesn't fire
172
- // events).
173
- //
174
- // Because we can't distinguish between these two cases, we default to setting `program`.
175
- return (this._windowFocused && this._lastFocusOrigin) ? this._lastFocusOrigin : 'program';
176
- }
177
- /**
178
- * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a
179
- * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we
180
- * handle a focus event following a touch interaction, we need to determine whether (1) the focus
181
- * event was directly caused by the touch interaction or (2) the focus event was caused by a
182
- * subsequent programmatic focus call triggered by the touch interaction.
183
- * @param focusEventTarget The target of the focus event under examination.
184
- */
185
- _shouldBeAttributedToTouch(focusEventTarget) {
186
- // Please note that this check is not perfect. Consider the following edge case:
187
- //
188
- // <div #parent tabindex="0">
189
- // <div #child tabindex="0" (click)="#parent.focus()"></div>
190
- // </div>
191
- //
192
- // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches
193
- // #child, #parent is programmatically focused. This code will attribute the focus to touch
194
- // instead of program. This is a relatively minor edge-case that can be worked around by using
195
- // focusVia(parent, 'program') to focus #parent.
196
- return (this._detectionMode === 1 /* EVENTUAL */) ||
197
- !!(focusEventTarget === null || focusEventTarget === void 0 ? void 0 : focusEventTarget.contains(this._inputModalityDetector._mostRecentTarget));
198
- }
199
- /**
200
- * Sets the focus classes on the element based on the given focus origin.
201
- * @param element The element to update the classes on.
202
- * @param origin The focus origin.
203
- */
204
- _setClasses(element, origin) {
205
- element.classList.toggle('cdk-focused', !!origin);
206
- element.classList.toggle('cdk-touch-focused', origin === 'touch');
207
- element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');
208
- element.classList.toggle('cdk-mouse-focused', origin === 'mouse');
209
- element.classList.toggle('cdk-program-focused', origin === 'program');
210
- }
211
- /**
212
- * Updates the focus origin. If we're using immediate detection mode, we schedule an async
213
- * function to clear the origin at the end of a timeout. The duration of the timeout depends on
214
- * the origin being set.
215
- * @param origin The origin to set.
216
- * @param isFromInteraction Whether we are setting the origin from an interaction event.
217
- */
218
- _setOrigin(origin, isFromInteraction = false) {
219
- this._ngZone.runOutsideAngular(() => {
220
- this._origin = origin;
221
- this._originFromTouchInteraction = (origin === 'touch') && isFromInteraction;
222
- // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms
223
- // for a touch event). We reset the origin at the next tick because Firefox focuses one tick
224
- // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for
225
- // a touch event because when a touch event is fired, the associated focus event isn't yet in
226
- // the event queue. Before doing so, clear any pending timeouts.
227
- if (this._detectionMode === 0 /* IMMEDIATE */) {
228
- clearTimeout(this._originTimeoutId);
229
- const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;
230
- this._originTimeoutId = setTimeout(() => this._origin = null, ms);
231
- }
232
- });
233
- }
234
- /**
235
- * Handles focus events on a registered element.
236
- * @param event The focus event.
237
- * @param element The monitored element.
238
- */
239
- _onFocus(event, element) {
240
- // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent
241
- // focus event affecting the monitored element. If we want to use the origin of the first event
242
- // instead we should check for the cdk-focused class here and return if the element already has
243
- // it. (This only matters for elements that have includesChildren = true).
244
- // If we are not counting child-element-focus as focused, make sure that the event target is the
245
- // monitored element itself.
246
- const elementInfo = this._elementInfo.get(element);
247
- const focusEventTarget = _getEventTarget(event);
248
- if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {
249
- return;
250
- }
251
- this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);
252
- }
253
- /**
254
- * Handles blur events on a registered element.
255
- * @param event The blur event.
256
- * @param element The monitored element.
257
- */
258
- _onBlur(event, element) {
259
- // If we are counting child-element-focus as focused, make sure that we aren't just blurring in
260
- // order to focus another child of the monitored element.
261
- const elementInfo = this._elementInfo.get(element);
262
- if (!elementInfo || (elementInfo.checkChildren && event.relatedTarget instanceof Node &&
263
- element.contains(event.relatedTarget))) {
264
- return;
265
- }
266
- this._setClasses(element);
267
- this._emitOrigin(elementInfo.subject, null);
268
- }
269
- _emitOrigin(subject, origin) {
270
- this._ngZone.run(() => subject.next(origin));
271
- }
272
- _registerGlobalListeners(elementInfo) {
273
- if (!this._platform.isBrowser) {
274
- return;
275
- }
276
- const rootNode = elementInfo.rootNode;
277
- const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;
278
- if (!rootNodeFocusListeners) {
279
- this._ngZone.runOutsideAngular(() => {
280
- rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);
281
- rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);
282
- });
283
- }
284
- this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);
285
- // Register global listeners when first element is monitored.
286
- if (++this._monitoredElementCount === 1) {
287
- // Note: we listen to events in the capture phase so we
288
- // can detect them even if the user stops propagation.
289
- this._ngZone.runOutsideAngular(() => {
290
- const window = this._getWindow();
291
- window.addEventListener('focus', this._windowFocusListener);
292
- });
293
- // The InputModalityDetector is also just a collection of global listeners.
294
- this._inputModalityDetector.modalityDetected
295
- .pipe(takeUntil(this._stopInputModalityDetector))
296
- .subscribe(modality => { this._setOrigin(modality, true /* isFromInteraction */); });
297
- }
298
- }
299
- _removeGlobalListeners(elementInfo) {
300
- const rootNode = elementInfo.rootNode;
301
- if (this._rootNodeFocusListenerCount.has(rootNode)) {
302
- const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);
303
- if (rootNodeFocusListeners > 1) {
304
- this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);
305
- }
306
- else {
307
- rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);
308
- rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);
309
- this._rootNodeFocusListenerCount.delete(rootNode);
310
- }
311
- }
312
- // Unregister global listeners when last element is unmonitored.
313
- if (!--this._monitoredElementCount) {
314
- const window = this._getWindow();
315
- window.removeEventListener('focus', this._windowFocusListener);
316
- // Equivalently, stop our InputModalityDetector subscription.
317
- this._stopInputModalityDetector.next();
318
- // Clear timeouts for all potentially pending timeouts to prevent the leaks.
319
- clearTimeout(this._windowFocusTimeoutId);
320
- clearTimeout(this._originTimeoutId);
321
- }
322
- }
323
- /** Updates all the state on an element once its focus origin has changed. */
324
- _originChanged(element, origin, elementInfo) {
325
- this._setClasses(element, origin);
326
- this._emitOrigin(elementInfo.subject, origin);
327
- this._lastFocusOrigin = origin;
328
- }
329
- /**
330
- * Collects the `MonitoredElementInfo` of a particular element and
331
- * all of its ancestors that have enabled `checkChildren`.
332
- * @param element Element from which to start the search.
333
- */
334
- _getClosestElementsInfo(element) {
335
- const results = [];
336
- this._elementInfo.forEach((info, currentElement) => {
337
- if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {
338
- results.push([currentElement, info]);
339
- }
340
- });
341
- return results;
342
- }
343
- }
344
- FocusMonitor.ɵprov = i0.ɵɵdefineInjectable({ factory: function FocusMonitor_Factory() { return new FocusMonitor(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i2.InputModalityDetector), i0.ɵɵinject(i3.DOCUMENT, 8), i0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8)); }, token: FocusMonitor, providedIn: "root" });
345
- FocusMonitor.decorators = [
346
- { type: Injectable, args: [{ providedIn: 'root' },] }
347
- ];
348
- FocusMonitor.ctorParameters = () => [
349
- { type: NgZone },
350
- { type: Platform },
351
- { type: InputModalityDetector },
352
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
353
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FOCUS_MONITOR_DEFAULT_OPTIONS,] }] }
354
- ];
355
- /**
356
- * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or
357
- * programmatically) and adds corresponding classes to the element.
358
- *
359
- * There are two variants of this directive:
360
- * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is
361
- * focused.
362
- * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.
363
- */
364
- export class CdkMonitorFocus {
365
- constructor(_elementRef, _focusMonitor) {
366
- this._elementRef = _elementRef;
367
- this._focusMonitor = _focusMonitor;
368
- this.cdkFocusChange = new EventEmitter();
369
- }
370
- ngAfterViewInit() {
371
- const element = this._elementRef.nativeElement;
372
- this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))
373
- .subscribe(origin => this.cdkFocusChange.emit(origin));
374
- }
375
- ngOnDestroy() {
376
- this._focusMonitor.stopMonitoring(this._elementRef);
377
- if (this._monitorSubscription) {
378
- this._monitorSubscription.unsubscribe();
379
- }
380
- }
381
- }
382
- CdkMonitorFocus.decorators = [
383
- { type: Directive, args: [{
384
- selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',
385
- },] }
386
- ];
387
- CdkMonitorFocus.ctorParameters = () => [
388
- { type: ElementRef },
389
- { type: FocusMonitor }
390
- ];
391
- CdkMonitorFocus.propDecorators = {
392
- cdkFocusChange: [{ type: Output }]
393
- };
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9mb2N1cy1tb25pdG9yL2ZvY3VzLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUNMLFFBQVEsRUFDUiwrQkFBK0IsRUFDL0IsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixjQUFjLEVBQ2QsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLEVBQUUsSUFBSSxZQUFZLEVBQUUsT0FBTyxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLDJDQUEyQyxDQUFDOzs7OztBQWtDbkQsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUN0QyxJQUFJLGNBQWMsQ0FBc0IsbUNBQW1DLENBQUMsQ0FBQztBQVFqRjs7O0dBR0c7QUFDSCxNQUFNLDJCQUEyQixHQUFHLCtCQUErQixDQUFDO0lBQ2xFLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDLENBQUM7QUFHSCxpRkFBaUY7QUFFakYsTUFBTSxPQUFPLFlBQVk7SUEyRHZCLFlBQ1ksT0FBZSxFQUNmLFNBQW1CLEVBQ1Ysc0JBQTZDO0lBQzlELHFEQUFxRDtJQUN2QixRQUFr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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7OztZQXZCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9EQUFvRDthQUMvRDs7O1lBOWdCQyxVQUFVO1lBbWhCdUUsWUFBWTs7OzZCQUY1RixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIFBsYXRmb3JtLFxuICBub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zLFxuICBfZ2V0U2hhZG93Um9vdCxcbiAgX2dldEV2ZW50VGFyZ2V0LFxufSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBBZnRlclZpZXdJbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Y29lcmNlRWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbnB1dE1vZGFsaXR5RGV0ZWN0b3IsXG4gIFRPVUNIX0JVRkZFUl9NUyxcbn0gZnJvbSAnLi4vaW5wdXQtbW9kYWxpdHkvaW5wdXQtbW9kYWxpdHktZGV0ZWN0b3InO1xuXG5cbmV4cG9ydCB0eXBlIEZvY3VzT3JpZ2luID0gJ3RvdWNoJyB8ICdtb3VzZScgfCAna2V5Ym9hcmQnIHwgJ3Byb2dyYW0nIHwgbnVsbDtcblxuLyoqXG4gKiBDb3JyZXNwb25kcyB0byB0aGUgb3B0aW9ucyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIG5hdGl2ZSBgZm9jdXNgIGV2ZW50LlxuICogdmlhIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MRWxlbWVudC9mb2N1c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvY3VzT3B0aW9ucyB7XG4gIC8qKiBXaGV0aGVyIHRoZSBicm93c2VyIHNob3VsZCBzY3JvbGwgdG8gdGhlIGVsZW1lbnQgd2hlbiBpdCBpcyBmb2N1c2VkLiAqL1xuICBwcmV2ZW50U2Nyb2xsPzogYm9vbGVhbjtcbn1cblxuLyoqIERldGVjdGlvbiBtb2RlIHVzZWQgZm9yIGF0dHJpYnV0aW5nIHRoZSBvcmlnaW4gb2YgYSBmb2N1cyBldmVudC4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIEZvY3VzTW9uaXRvckRldGVjdGlvbk1vZGUge1xuICAvKipcbiAgICogQW55IG1vdXNlZG93biwga2V5ZG93biwgb3IgdG91Y2hzdGFydCBldmVudCB0aGF0IGhhcHBlbmVkIGluIHRoZSBwcmV2aW91c1xuICAgKiB0aWNrIG9yIHRoZSBjdXJyZW50IHRpY2sgd2lsbCBiZSB1c2VkIHRvIGFzc2lnbiBhIGZvY3VzIGV2ZW50J3Mgb3JpZ2luICh0b1xuICAgKiBlaXRoZXIgbW91c2UsIGtleWJvYXJkLCBvciB0b3VjaCkuIFRoaXMgaXMgdGhlIGRlZmF1bHQgb3B0aW9uLlxuICAgKi9cbiAgSU1NRURJQVRFLFxuICAvKipcbiAgICogQSBmb2N1cyBldmVudCdzIG9yaWdpbiBpcyBhbHdheXMgYXR0cmlidXRlZCB0byB0aGUgbGFzdCBjb3JyZXNwb25kaW5nXG4gICAqIG1vdXNlZG93biwga2V5ZG93biwgb3IgdG91Y2hzdGFydCBldmVudCwgbm8gbWF0dGVyIGhvdyBsb25nIGFnbyBpdCBvY2N1cnJlZC5cbiAgICovXG4gIEVWRU5UVUFMXG59XG5cbi8qKiBJbmplY3RhYmxlIHNlcnZpY2UtbGV2ZWwgb3B0aW9ucyBmb3IgRm9jdXNNb25pdG9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb2N1c01vbml0b3JPcHRpb25zIHtcbiAgZGV0ZWN0aW9uTW9kZT86IEZvY3VzTW9uaXRvckRldGVjdGlvbk1vZGU7XG59XG5cbi8qKiBJbmplY3Rpb25Ub2tlbiBmb3IgRm9jdXNNb25pdG9yT3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBGT0NVU19NT05JVE9SX0RFRkFVTFRfT1BUSU9OUyA9XG4gICAgbmV3IEluamVjdGlvblRva2VuPEZvY3VzTW9uaXRvck9wdGlvbnM+KCdjZGstZm9jdXMtbW9uaXRvci1kZWZhdWx0LW9wdGlvbnMnKTtcblxudHlwZSBNb25pdG9yZWRFbGVtZW50SW5mbyA9IHtcbiAgY2hlY2tDaGlsZHJlbjogYm9vbGVhbixcbiAgcmVhZG9ubHkgc3ViamVjdDogU3ViamVjdDxGb2N1c09yaWdpbj4sXG4gIHJvb3ROb2RlOiBIVE1MRWxlbWVudHxTaGFkb3dSb290fERvY3VtZW50XG59O1xuXG4vKipcbiAqIEV2ZW50IGxpc3RlbmVyIG9wdGlvbnMgdGhhdCBlbmFibGUgY2FwdHVyaW5nIGFuZCBhbHNvXG4gKiBtYXJrIHRoZSBsaXN0ZW5lciBhcyBwYXNzaXZlIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzIGl0LlxuICovXG5jb25zdCBjYXB0dXJlRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSBub3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKHtcbiAgcGFzc2l2ZTogdHJ1ZSxcbiAgY2FwdHVyZTogdHJ1ZVxufSk7XG5cblxuLyoqIE1vbml0b3JzIG1vdXNlIGFuZCBrZXlib2FyZCBldmVudHMgdG8gZGV0ZXJtaW5lIHRoZSBjYXVzZSBvZiBmb2N1cyBldmVudHMuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBGb2N1c01vbml0b3IgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKiogVGhlIGZvY3VzIG9yaWdpbiB0aGF0IHRoZSBuZXh0IGZvY3VzIGV2ZW50IGlzIGEgcmVzdWx0IG9mLiAqL1xuICBwcml2YXRlIF9vcmlnaW46IEZvY3VzT3JpZ2luID0gbnVsbDtcblxuICAvKiogVGhlIEZvY3VzT3JpZ2luIG9mIHRoZSBsYXN0IGZvY3VzIGV2ZW50IHRyYWNrZWQgYnkgdGhlIEZvY3VzTW9uaXRvci4gKi9cbiAgcHJpdmF0ZSBfbGFzdEZvY3VzT3JpZ2luOiBGb2N1c09yaWdpbjtcblxuICAvKiogV2hldGhlciB0aGUgd2luZG93IGhhcyBqdXN0IGJlZW4gZm9jdXNlZC4gKi9cbiAgcHJpdmF0ZSBfd2luZG93Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgdGltZW91dCBpZCBvZiB0aGUgd2luZG93IGZvY3VzIHRpbWVvdXQuICovXG4gIHByaXZhdGUgX3dpbmRvd0ZvY3VzVGltZW91dElkOiBudW1iZXI7XG5cbiAgLyoqIFRoZSB0aW1lb3V0IGlkIG9mIHRoZSBvcmlnaW4gY2xlYXJpbmcgdGltZW91dC4gKi9cbiAgcHJpdmF0ZSBfb3JpZ2luVGltZW91dElkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG9yaWdpbiB3YXMgZGV0ZXJtaW5lZCB2aWEgYSB0b3VjaCBpbnRlcmFjdGlvbi4gTmVjZXNzYXJ5IGFzIHByb3Blcmx5IGF0dHJpYnV0aW5nXG4gICAqIGZvY3VzIGV2ZW50cyB0byB0b3VjaCBpbnRlcmFjdGlvbnMgcmVxdWlyZXMgc3BlY2lhbCBsb2dpYy5cbiAgICovXG4gIHByaXZhdGUgX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqIE1hcCBvZiBlbGVtZW50cyBiZWluZyBtb25pdG9yZWQgdG8gdGhlaXIgaW5mby4gKi9cbiAgcHJpdmF0ZSBfZWxlbWVudEluZm8gPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBNb25pdG9yZWRFbGVtZW50SW5mbz4oKTtcblxuICAvKiogVGhlIG51bWJlciBvZiBlbGVtZW50cyBjdXJyZW50bHkgYmVpbmcgbW9uaXRvcmVkLiAqL1xuICBwcml2YXRlIF9tb25pdG9yZWRFbGVtZW50Q291bnQgPSAwO1xuXG4gIC8qKlxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgcm9vdCBub2RlcyB0byB3aGljaCB3ZSd2ZSBjdXJyZW50bHkgYm91bmQgYSBmb2N1cy9ibHVyIGhhbmRsZXIsXG4gICAqIGFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBtb25pdG9yZWQgZWxlbWVudHMgdGhhdCB0aGV5IGNvbnRhaW4uIFdlIGhhdmUgdG8gdHJlYXQgZm9jdXMvYmx1clxuICAgKiBoYW5kbGVycyBkaWZmZXJlbnRseSBmcm9tIHRoZSByZXN0IG9mIHRoZSBldmVudHMsIGJlY2F1c2UgdGhlIGJyb3dzZXIgd29uJ3QgZW1pdCBldmVudHNcbiAgICogdG8gdGhlIGRvY3VtZW50IHdoZW4gZm9jdXMgbW92ZXMgaW5zaWRlIG9mIGEgc2hhZG93IHJvb3QuXG4gICAqL1xuICBwcml2YXRlIF9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudCA9IG5ldyBNYXA8SFRNTEVsZW1lbnR8RG9jdW1lbnR8U2hhZG93Um9vdCwgbnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BlY2lmaWVkIGRldGVjdGlvbiBtb2RlLCB1c2VkIGZvciBhdHRyaWJ1dGluZyB0aGUgb3JpZ2luIG9mIGEgZm9jdXNcbiAgICogZXZlbnQuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXRlY3Rpb25Nb2RlOiBGb2N1c01vbml0b3JEZXRlY3Rpb25Nb2RlO1xuXG4gIC8qKlxuICAgKiBFdmVudCBsaXN0ZW5lciBmb3IgYGZvY3VzYCBldmVudHMgb24gdGhlIHdpbmRvdy5cbiAgICogTmVlZHMgdG8gYmUgYW4gYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQgd2hlbiBpdCBnZXRzIGJvdW5kLlxuICAgKi9cbiAgcHJpdmF0ZSBfd2luZG93Rm9jdXNMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAvLyBNYWtlIGEgbm90ZSBvZiB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cywgc28gd2UgY2FuXG4gICAgLy8gcmVzdG9yZSB0aGUgb3JpZ2luIGluZm8gZm9yIHRoZSBmb2N1c2VkIGVsZW1lbnQuXG4gICAgdGhpcy5fd2luZG93Rm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5fd2luZG93Rm9jdXNUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3dpbmRvd0ZvY3VzZWQgPSBmYWxzZSk7XG4gIH1cblxuICAvKiogVXNlZCB0byByZWZlcmVuY2UgY29ycmVjdCBkb2N1bWVudC93aW5kb3cgKi9cbiAgcHJvdGVjdGVkIF9kb2N1bWVudD86IERvY3VtZW50O1xuXG4gIC8qKiBTdWJqZWN0IGZvciBzdG9wcGluZyBvdXIgSW5wdXRNb2RhbGl0eURldGVjdG9yIHN1YnNjcmlwdGlvbi4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcElucHV0TW9kYWxpdHlEZXRlY3RvciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0TW9kYWxpdHlEZXRlY3RvcjogSW5wdXRNb2RhbGl0eURldGVjdG9yLFxuICAgICAgLyoqIEBicmVha2luZy1jaGFuZ2UgMTEuMC4wIG1ha2UgZG9jdW1lbnQgcmVxdWlyZWQgKi9cbiAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBhbnl8bnVsbCxcbiAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRk9DVVNfTU9OSVRPUl9ERUZBVUxUX09QVElPTlMpIG9wdGlvbnM6XG4gICAgICAgICAgRm9jdXNNb25pdG9yT3B0aW9uc3xudWxsKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICB0aGlzLl9kZXRlY3Rpb25Nb2RlID0gb3B0aW9ucz8uZGV0ZWN0aW9uTW9kZSB8fCBGb2N1c01vbml0b3JEZXRlY3Rpb25Nb2RlLklNTUVESUFURTtcbiAgfVxuICAvKipcbiAgICogRXZlbnQgbGlzdGVuZXIgZm9yIGBmb2N1c2AgYW5kICdibHVyJyBldmVudHMgb24gdGhlIGRvY3VtZW50LlxuICAgKiBOZWVkcyB0byBiZSBhbiBhcnJvdyBmdW5jdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29udGV4dCB3aGVuIGl0IGdldHMgYm91bmQuXG4gICAqL1xuICBwcml2YXRlIF9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IF9nZXRFdmVudFRhcmdldDxIVE1MRWxlbWVudD4oZXZlbnQpO1xuICAgIGNvbnN0IGhhbmRsZXIgPSBldmVudC50eXBlID09PSAnZm9jdXMnID8gdGhpcy5fb25Gb2N1cyA6IHRoaXMuX29uQmx1cjtcblxuICAgIC8vIFdlIG5lZWQgdG8gd2FsayB1cCB0aGUgYW5jZXN0b3IgY2hhaW4gaW4gb3JkZXIgdG8gc3VwcG9ydCBgY2hlY2tDaGlsZHJlbmAuXG4gICAgZm9yIChsZXQgZWxlbWVudCA9IHRhcmdldDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGV2ZW50IGFzIEZvY3VzRXZlbnQsIGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb25pdG9ycyBmb2N1cyBvbiBhbiBlbGVtZW50IGFuZCBhcHBsaWVzIGFwcHJvcHJpYXRlIENTUyBjbGFzc2VzLlxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBtb25pdG9yXG4gICAqIEBwYXJhbSBjaGVja0NoaWxkcmVuIFdoZXRoZXIgdG8gY291bnQgdGhlIGVsZW1lbnQgYXMgZm9jdXNlZCB3aGVuIGl0cyBjaGlsZHJlbiBhcmUgZm9jdXNlZC5cbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBlbGVtZW50IGNoYW5nZXMuXG4gICAqICAgICBXaGVuIHRoZSBlbGVtZW50IGlzIGJsdXJyZWQsIG51bGwgd2lsbCBiZSBlbWl0dGVkLlxuICAgKi9cbiAgbW9uaXRvcihlbGVtZW50OiBIVE1MRWxlbWVudCwgY2hlY2tDaGlsZHJlbj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEZvY3VzT3JpZ2luPjtcblxuICAvKipcbiAgICogTW9uaXRvcnMgZm9jdXMgb24gYW4gZWxlbWVudCBhbmQgYXBwbGllcyBhcHByb3ByaWF0ZSBDU1MgY2xhc3Nlcy5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gbW9uaXRvclxuICAgKiBAcGFyYW0gY2hlY2tDaGlsZHJlbiBXaGV0aGVyIHRvIGNvdW50IHRoZSBlbGVtZW50IGFzIGZvY3VzZWQgd2hlbiBpdHMgY2hpbGRyZW4gYXJlIGZvY3VzZWQuXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIHRoZSBmb2N1cyBzdGF0ZSBvZiB0aGUgZWxlbWVudCBjaGFuZ2VzLlxuICAgKiAgICAgV2hlbiB0aGUgZWxlbWVudCBpcyBibHVycmVkLCBudWxsIHdpbGwgYmUgZW1pdHRlZC5cbiAgICovXG4gIG1vbml0b3IoZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIGNoZWNrQ2hpbGRyZW4/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxGb2N1c09yaWdpbj47XG5cbiAgbW9uaXRvcihlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgIGNoZWNrQ2hpbGRyZW46IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Rm9jdXNPcmlnaW4+IHtcbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gY29lcmNlRWxlbWVudChlbGVtZW50KTtcblxuICAgIC8vIERvIG5vdGhpbmcgaWYgd2UncmUgbm90IG9uIHRoZSBicm93c2VyIHBsYXRmb3JtIG9yIHRoZSBwYXNzZWQgaW4gbm9kZSBpc24ndCBhbiBlbGVtZW50LlxuICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyIHx8IG5hdGl2ZUVsZW1lbnQubm9kZVR5cGUgIT09IDEpIHtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHRoZSBzaGFkb3cgRE9NLCB3ZSBuZWVkIHRvIGJpbmQgb3VyIGZvY3VzL2JsdXIgbGlzdGVuZXJzIHRvXG4gICAgLy8gdGhlIHNoYWRvdyByb290LCByYXRoZXIgdGhhbiB0aGUgYGRvY3VtZW50YCwgYmVjYXVzZSB0aGUgYnJvd3NlciB3b24ndCBlbWl0IGZvY3VzIGV2ZW50c1xuICAgIC8vIHRvIHRoZSBgZG9jdW1lbnRgLCBpZiBmb2N1cyBpcyBtb3Zpbmcgd2l0aGluIHRoZSBzYW1lIHNoYWRvdyByb290LlxuICAgIGNvbnN0IHJvb3ROb2RlID0gX2dldFNoYWRvd1Jvb3QobmF0aXZlRWxlbWVudCkgfHwgdGhpcy5fZ2V0RG9jdW1lbnQoKTtcbiAgICBjb25zdCBjYWNoZWRJbmZvID0gdGhpcy5fZWxlbWVudEluZm8uZ2V0KG5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWxyZWFkeSBtb25pdG9yaW5nIHRoaXMgZWxlbWVudC5cbiAgICBpZiAoY2FjaGVkSW5mbykge1xuICAgICAgaWYgKGNoZWNrQ2hpbGRyZW4pIHtcbiAgICAgICAgLy8gVE9ETyhDT01QLTMxOCk6IHRoaXMgY2FuIGJlIHByb2JsZW1hdGljLCBiZWNhdXNlIGl0J2xsIHR1cm4gYWxsIG5vbi1jaGVja0NoaWxkcmVuXG4gICAgICAgIC8vIG9ic2VydmVycyBpbnRvIG9uZXMgdGhhdCBiZWhhdmUgYXMgaWYgYGNoZWNrQ2hpbGRyZW5gIHdhcyB0dXJuZWQgb24uIFdlIG5lZWQgYSBtb3JlXG4gICAgICAgIC8vIHJvYnVzdCBzb2x1dGlvbi5cbiAgICAgICAgY2FjaGVkSW5mby5jaGVja0NoaWxkcmVuID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhY2hlZEluZm8uc3ViamVjdDtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgbW9uaXRvcmVkIGVsZW1lbnQgaW5mby5cbiAgICBjb25zdCBpbmZvOiBNb25pdG9yZWRFbGVtZW50SW5mbyA9IHtcbiAgICAgIGNoZWNrQ2hpbGRyZW46IGNoZWNrQ2hpbGRyZW4sXG4gICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdDxGb2N1c09yaWdpbj4oKSxcbiAgICAgIHJvb3ROb2RlXG4gICAgfTtcbiAgICB0aGlzLl9lbGVtZW50SW5mby5zZXQobmF0aXZlRWxlbWVudCwgaW5mbyk7XG4gICAgdGhpcy5fcmVnaXN0ZXJHbG9iYWxMaXN0ZW5lcnMoaW5mbyk7XG5cbiAgICByZXR1cm4gaW5mby5zdWJqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3BzIG1vbml0b3JpbmcgYW4gZWxlbWVudCBhbmQgcmVtb3ZlcyBhbGwgZm9jdXMgY2xhc3Nlcy5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gc3RvcCBtb25pdG9yaW5nLlxuICAgKi9cbiAgc3RvcE1vbml0b3JpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTdG9wcyBtb25pdG9yaW5nIGFuIGVsZW1lbnQgYW5kIHJlbW92ZXMgYWxsIGZvY3VzIGNsYXNzZXMuXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIHN0b3AgbW9uaXRvcmluZy5cbiAgICovXG4gIHN0b3BNb25pdG9yaW5nKGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZDtcblxuICBzdG9wTW9uaXRvcmluZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IGNvZXJjZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgY29uc3QgZWxlbWVudEluZm8gPSB0aGlzLl9lbGVtZW50SW5mby5nZXQobmF0aXZlRWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudEluZm8pIHtcbiAgICAgIGVsZW1lbnRJbmZvLnN1YmplY3QuY29tcGxldGUoKTtcblxuICAgICAgdGhpcy5fc2V0Q2xhc3NlcyhuYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuX2VsZW1lbnRJbmZvLmRlbGV0ZShuYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVycyhlbGVtZW50SW5mbyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGVsZW1lbnQgdmlhIHRoZSBzcGVjaWZpZWQgZm9jdXMgb3JpZ2luLlxuICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGZvY3VzLlxuICAgKiBAcGFyYW0gb3JpZ2luIEZvY3VzIG9yaWdpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZm9jdXMgYmVoYXZpb3IuXG4gICAqL1xuICBmb2N1c1ZpYShlbGVtZW50OiBIVE1MRWxlbWVudCwgb3JpZ2luOiBGb2N1c09yaWdpbiwgb3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGVsZW1lbnQgdmlhIHRoZSBzcGVjaWZpZWQgZm9jdXMgb3JpZ2luLlxuICAgKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGZvY3VzLlxuICAgKiBAcGFyYW0gb3JpZ2luIEZvY3VzIG9yaWdpbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZm9jdXMgYmVoYXZpb3IuXG4gICAqL1xuICBmb2N1c1ZpYShlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Piwgb3JpZ2luOiBGb2N1c09yaWdpbiwgb3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQ7XG5cbiAgZm9jdXNWaWEoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICBvcmlnaW46IEZvY3VzT3JpZ2luLFxuICAgICAgICAgIG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcblxuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KGVsZW1lbnQpO1xuICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gdGhpcy5fZ2V0RG9jdW1lbnQoKS5hY3RpdmVFbGVtZW50O1xuXG4gICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgZm9jdXNlZCBhbHJlYWR5LCBjYWxsaW5nIGBmb2N1c2AgYWdhaW4gd29uJ3QgdHJpZ2dlciB0aGUgZXZlbnQgbGlzdGVuZXJcbiAgICAvLyB3aGljaCBtZWFucyB0aGF0IHRoZSBmb2N1cyBjbGFzc2VzIHdvbid0IGJlIHVwZGF0ZWQuIElmIHRoYXQncyB0aGUgY2FzZSwgdXBkYXRlIHRoZSBjbGFzc2VzXG4gICAgLy8gZGlyZWN0bHkgd2l0aG91dCB3YWl0aW5nIGZvciBhbiBldmVudC5cbiAgICBpZiAobmF0aXZlRWxlbWVudCA9PT0gZm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2dldENsb3Nlc3RFbGVtZW50c0luZm8obmF0aXZlRWxlbWVudClcbiAgICAgICAgLmZvckVhY2goKFtjdXJyZW50RWxlbWVudCwgaW5mb10pID0+IHRoaXMuX29yaWdpbkNoYW5nZWQoY3VycmVudEVsZW1lbnQsIG9yaWdpbiwgaW5mbykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRPcmlnaW4ob3JpZ2luKTtcblxuICAgICAgLy8gYGZvY3VzYCBpc24ndCBhdmFpbGFibGUgb24gdGhlIHNlcnZlclxuICAgICAgaWYgKHR5cGVvZiBuYXRpdmVFbGVtZW50LmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG5hdGl2ZUVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZWxlbWVudEluZm8uZm9yRWFjaCgoX2luZm8sIGVsZW1lbnQpID0+IHRoaXMuc3RvcE1vbml0b3JpbmcoZWxlbWVudCkpO1xuICB9XG5cbiAgLyoqIEFjY2VzcyBpbmplY3RlZCBkb2N1bWVudCBpZiBhdmFpbGFibGUgb3IgZmFsbGJhY2sgdG8gZ2xvYmFsIGRvY3VtZW50IHJlZmVyZW5jZSAqL1xuICBwcml2YXRlIF9nZXREb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50IHx8IGRvY3VtZW50O1xuICB9XG5cbiAgLyoqIFVzZSBkZWZhdWx0VmlldyBvZiBpbmplY3RlZCBkb2N1bWVudCBpZiBhdmFpbGFibGUgb3IgZmFsbGJhY2sgdG8gZ2xvYmFsIHdpbmRvdyByZWZlcmVuY2UgKi9cbiAgcHJpdmF0ZSBfZ2V0V2luZG93KCk6IFdpbmRvdyB7XG4gICAgY29uc3QgZG9jID0gdGhpcy5fZ2V0RG9jdW1lbnQoKTtcbiAgICByZXR1cm4gZG9jLmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZvY3VzT3JpZ2luKGZvY3VzRXZlbnRUYXJnZXQ6IEhUTUxFbGVtZW50IHwgbnVsbCk6IEZvY3VzT3JpZ2luIHtcbiAgICBpZiAodGhpcy5fb3JpZ2luKSB7XG4gICAgICAvLyBJZiB0aGUgb3JpZ2luIHdhcyByZWFsaXplZCB2aWEgYSB0b3VjaCBpbnRlcmFjdGlvbiwgd2UgbmVlZCB0byBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzXG4gICAgICAvLyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZm9jdXMgb3JpZ2luIHNob3VsZCBiZSBhdHRyaWJ1dGVkIHRvIHRvdWNoIG9yIHByb2dyYW0uXG4gICAgICBpZiAodGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3VsZEJlQXR0cmlidXRlZFRvVG91Y2goZm9jdXNFdmVudFRhcmdldCkgPyAndG91Y2gnIDogJ3Byb2dyYW0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgd2luZG93IGhhcyBqdXN0IHJlZ2FpbmVkIGZvY3VzLCB3ZSBjYW4gcmVzdG9yZSB0aGUgbW9zdCByZWNlbnQgb3JpZ2luIGZyb20gYmVmb3JlIHRoZVxuICAgIC8vIHdpbmRvdyBibHVycmVkLiBPdGhlcndpc2UsIHdlJ3ZlIHJlYWNoZWQgdGhlIHBvaW50IHdoZXJlIHdlIGNhbid0IGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhlXG4gICAgLy8gZm9jdXMuIFRoaXMgdHlwaWNhbGx5IG1lYW5zIG9uZSBvZiB0d28gdGhpbmdzIGhhcHBlbmVkOlxuICAgIC8vXG4gICAgLy8gMSkgVGhlIGVsZW1lbnQgd2FzIHByb2dyYW1tYXRpY2FsbHkgZm9jdXNlZCwgb3JcbiAgICAvLyAyKSBUaGUgZWxlbWVudCB3YXMgZm9jdXNlZCB2aWEgc2NyZWVuIHJlYWRlciBuYXZpZ2F0aW9uICh3aGljaCBnZW5lcmFsbHkgZG9lc24ndCBmaXJlXG4gICAgLy8gICAgZXZlbnRzKS5cbiAgICAvL1xuICAgIC8vIEJlY2F1c2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVzZSB0d28gY2FzZXMsIHdlIGRlZmF1bHQgdG8gc2V0dGluZyBgcHJvZ3JhbWAuXG4gICAgcmV0dXJuICh0aGlzLl93aW5kb3dGb2N1c2VkICYmIHRoaXMuX2xhc3RGb2N1c09yaWdpbikgPyB0aGlzLl9sYXN0Rm9jdXNPcmlnaW4gOiAncHJvZ3JhbSc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBmb2N1cyBldmVudCBzaG91bGQgYmUgYXR0cmlidXRlZCB0byB0b3VjaC4gUmVjYWxsIHRoYXQgaW4gSU1NRURJQVRFIG1vZGUsIGFcbiAgICogdG91Y2ggb3JpZ2luIGlzbid0IGltbWVkaWF0ZWx5IHJlc2V0IGF0IHRoZSBuZXh0IHRpY2sgKHNlZSBfc2V0T3JpZ2luKS4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2VcbiAgICogaGFuZGxlIGEgZm9jdXMgZXZlbnQgZm9sbG93aW5nIGEgdG91Y2ggaW50ZXJhY3Rpb24sIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgKDEpIHRoZSBmb2N1c1xuICAgKiBldmVudCB3YXMgZGlyZWN0bHkgY2F1c2VkIGJ5IHRoZSB0b3VjaCBpbnRlcmFjdGlvbiBvciAoMikgdGhlIGZvY3VzIGV2ZW50IHdhcyBjYXVzZWQgYnkgYVxuICAgKiBzdWJzZXF1ZW50IHByb2dyYW1tYXRpYyBmb2N1cyBjYWxsIHRyaWdnZXJlZCBieSB0aGUgdG91Y2ggaW50ZXJhY3Rpb24uXG4gICAqIEBwYXJhbSBmb2N1c0V2ZW50VGFyZ2V0IFRoZSB0YXJnZXQgb2YgdGhlIGZvY3VzIGV2ZW50IHVuZGVyIGV4YW1pbmF0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaChmb2N1c0V2ZW50VGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcbiAgICAvLyBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgY2hlY2sgaXMgbm90IHBlcmZlY3QuIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZWRnZSBjYXNlOlxuICAgIC8vXG4gICAgLy8gPGRpdiAjcGFyZW50IHRhYmluZGV4PVwiMFwiPlxuICAgIC8vICAgPGRpdiAjY2hpbGQgdGFiaW5kZXg9XCIwXCIgKGNsaWNrKT1cIiNwYXJlbnQuZm9jdXMoKVwiPjwvZGl2PlxuICAgIC8vIDwvZGl2PlxuICAgIC8vXG4gICAgLy8gU3VwcG9zZSB0aGVyZSBpcyBhIEZvY3VzTW9uaXRvciBpbiBJTU1FRElBVEUgbW9kZSBhdHRhY2hlZCB0byAjcGFyZW50LiBXaGVuIHRoZSB1c2VyIHRvdWNoZXNcbiAgICAvLyAjY2hpbGQsICNwYXJlbnQgaXMgcHJvZ3JhbW1hdGljYWxseSBmb2N1c2VkLiBUaGlzIGNvZGUgd2lsbCBhdHRyaWJ1dGUgdGhlIGZvY3VzIHRvIHRvdWNoXG4gICAgLy8gaW5zdGVhZCBvZiBwcm9ncmFtLiBUaGlzIGlzIGEgcmVsYXRpdmVseSBtaW5vciBlZGdlLWNhc2UgdGhhdCBjYW4gYmUgd29ya2VkIGFyb3VuZCBieSB1c2luZ1xuICAgIC8vIGZvY3VzVmlhKHBhcmVudCwgJ3Byb2dyYW0nKSB0byBmb2N1cyAjcGFyZW50LlxuICAgIHJldHVybiAodGhpcy5fZGV0ZWN0aW9uTW9kZSA9PT0gRm9jdXNNb25pdG9yRGV0ZWN0aW9uTW9kZS5FVkVOVFVBTCkgfHxcbiAgICAgICAgISFmb2N1c0V2ZW50VGFyZ2V0Py5jb250YWlucyh0aGlzLl9pbnB1dE1vZGFsaXR5RGV0ZWN0b3IuX21vc3RSZWNlbnRUYXJnZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZvY3VzIGNsYXNzZXMgb24gdGhlIGVsZW1lbnQgYmFzZWQgb24gdGhlIGdpdmVuIGZvY3VzIG9yaWdpbi5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gdXBkYXRlIHRoZSBjbGFzc2VzIG9uLlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBmb2N1cyBvcmlnaW4uXG4gICAqL1xuICBwcml2YXRlIF9zZXRDbGFzc2VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcmlnaW4/OiBGb2N1c09yaWdpbik6IHZvaWQge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgnY2RrLWZvY3VzZWQnLCAhIW9yaWdpbik7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdjZGstdG91Y2gtZm9jdXNlZCcsIG9yaWdpbiA9PT0gJ3RvdWNoJyk7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdjZGsta2V5Ym9hcmQtZm9jdXNlZCcsIG9yaWdpbiA9PT0gJ2tleWJvYXJkJyk7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdjZGstbW91c2UtZm9jdXNlZCcsIG9yaWdpbiA9PT0gJ21vdXNlJyk7XG4gICAgZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCdjZGstcHJvZ3JhbS1mb2N1c2VkJywgb3JpZ2luID09PSAncHJvZ3JhbScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGZvY3VzIG9yaWdpbi4gSWYgd2UncmUgdXNpbmcgaW1tZWRpYXRlIGRldGVjdGlvbiBtb2RlLCB3ZSBzY2hlZHVsZSBhbiBhc3luY1xuICAgKiBmdW5jdGlvbiB0byBjbGVhciB0aGUgb3JpZ2luIGF0IHRoZSBlbmQgb2YgYSB0aW1lb3V0LiBUaGUgZHVyYXRpb24gb2YgdGhlIHRpbWVvdXQgZGVwZW5kcyBvblxuICAgKiB0aGUgb3JpZ2luIGJlaW5nIHNldC5cbiAgICogQHBhcmFtIG9yaWdpbiBUaGUgb3JpZ2luIHRvIHNldC5cbiAgICogQHBhcmFtIGlzRnJvbUludGVyYWN0aW9uIFdoZXRoZXIgd2UgYXJlIHNldHRpbmcgdGhlIG9yaWdpbiBmcm9tIGFuIGludGVyYWN0aW9uIGV2ZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0T3JpZ2luKG9yaWdpbjogRm9jdXNPcmlnaW4sIGlzRnJvbUludGVyYWN0aW9uID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fb3JpZ2luID0gb3JpZ2luO1xuICAgICAgdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24gPSAob3JpZ2luID09PSAndG91Y2gnKSAmJiBpc0Zyb21JbnRlcmFjdGlvbjtcblxuICAgICAgLy8gSWYgd2UncmUgaW4gSU1NRURJQVRFIG1vZGUsIHJlc2V0IHRoZSBvcmlnaW4gYXQgdGhlIG5leHQgdGljayAob3IgaW4gYFRPVUNIX0JVRkZFUl9NU2AgbXNcbiAgICAgIC8vIGZvciBhIHRvdWNoIGV2ZW50KS4gV2UgcmVzZXQgdGhlIG9yaWdpbiBhdCB0aGUgbmV4dCB0aWNrIGJlY2F1c2UgRmlyZWZveCBmb2N1c2VzIG9uZSB0aWNrXG4gICAgICAvLyBhZnRlciB0aGUgaW50ZXJhY3Rpb24gZXZlbnQuIFdlIHdhaXQgYFRPVUNIX0JVRkZFUl9NU2AgbXMgYmVmb3JlIHJlc2V0dGluZyB0aGUgb3JpZ2luIGZvclxuICAgICAgLy8gYSB0b3VjaCBldmVudCBiZWNhdXNlIHdoZW4gYSB0b3VjaCBldmVudCBpcyBmaXJlZCwgdGhlIGFzc29jaWF0ZWQgZm9jdXMgZXZlbnQgaXNuJ3QgeWV0IGluXG4gICAgICAvLyB0aGUgZXZlbnQgcXVldWUuIEJlZm9yZSBkb2luZyBzbywgY2xlYXIgYW55IHBlbmRpbmcgdGltZW91dHMuXG4gICAgICBpZiAodGhpcy5fZGV0ZWN0aW9uTW9kZSA9PT0gRm9jdXNNb25pdG9yRGV0ZWN0aW9uTW9kZS5JTU1FRElBVEUpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCk7XG4gICAgICAgIGNvbnN0IG1zID0gdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24gPyBUT1VDSF9CVUZGRVJfTVMgOiAxO1xuICAgICAgICB0aGlzLl9vcmlnaW5UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX29yaWdpbiA9IG51bGwsIG1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGZvY3VzIGV2ZW50cyBvbiBhIHJlZ2lzdGVyZWQgZWxlbWVudC5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBmb2N1cyBldmVudC5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIG1vbml0b3JlZCBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBfb25Gb2N1cyhldmVudDogRm9jdXNFdmVudCwgZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBOT1RFKG1tYWxlcmJhKTogV2UgY3VycmVudGx5IHNldCB0aGUgY2xhc3NlcyBiYXNlZCBvbiB0aGUgZm9jdXMgb3JpZ2luIG9mIHRoZSBtb3N0IHJlY2VudFxuICAgIC8vIGZvY3VzIGV2ZW50IGFmZmVjdGluZyB0aGUgbW9uaXRvcmVkIGVsZW1lbnQuIElmIHdlIHdhbnQgdG8gdXNlIHRoZSBvcmlnaW4gb2YgdGhlIGZpcnN0IGV2ZW50XG4gICAgLy8gaW5zdGVhZCB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoZSBjZGstZm9jdXNlZCBjbGFzcyBoZXJlIGFuZCByZXR1cm4gaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBoYXNcbiAgICAvLyBpdC4gKFRoaXMgb25seSBtYXR0ZXJzIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgaW5jbHVkZXNDaGlsZHJlbiA9IHRydWUpLlxuXG4gICAgLy8gSWYgd2UgYXJlIG5vdCBjb3VudGluZyBjaGlsZC1lbGVtZW50LWZvY3VzIGFzIGZvY3VzZWQsIG1ha2Ugc3VyZSB0aGF0IHRoZSBldmVudCB0YXJnZXQgaXMgdGhlXG4gICAgLy8gbW9uaXRvcmVkIGVsZW1lbnQgaXRzZWxmLlxuICAgIGNvbnN0IGVsZW1lbnRJbmZvID0gdGhpcy5fZWxlbWVudEluZm8uZ2V0KGVsZW1lbnQpO1xuICAgIGNvbnN0IGZvY3VzRXZlbnRUYXJnZXQgPSBfZ2V0RXZlbnRUYXJnZXQ8SFRNTEVsZW1lbnQ+KGV2ZW50KTtcbiAgICBpZiAoIWVsZW1lbnRJbmZvIHx8ICghZWxlbWVudEluZm8uY2hlY2tDaGlsZHJlbiAmJiBlbGVtZW50ICE9PSBmb2N1c0V2ZW50VGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbkNoYW5nZWQoZWxlbWVudCwgdGhpcy5fZ2V0Rm9jdXNPcmlnaW4oZm9jdXNFdmVudFRhcmdldCksIGVsZW1lbnRJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGJsdXIgZXZlbnRzIG9uIGEgcmVnaXN0ZXJlZCBlbGVtZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGJsdXIgZXZlbnQuXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBtb25pdG9yZWQgZWxlbWVudC5cbiAgICovXG4gIF9vbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgLy8gSWYgd2UgYXJlIGNvdW50aW5nIGNoaWxkLWVsZW1lbnQtZm9jdXMgYXMgZm9jdXNlZCwgbWFrZSBzdXJlIHRoYXQgd2UgYXJlbid0IGp1c3QgYmx1cnJpbmcgaW5cbiAgICAvLyBvcmRlciB0byBmb2N1cyBhbm90aGVyIGNoaWxkIG9mIHRoZSBtb25pdG9yZWQgZWxlbWVudC5cbiAgICBjb25zdCBlbGVtZW50SW5mbyA9IHRoaXMuX2VsZW1lbnRJbmZvLmdldChlbGVtZW50KTtcblxuICAgIGlmICghZWxlbWVudEluZm8gfHwgKGVsZW1lbnRJbmZvLmNoZWNrQ2hpbGRyZW4gJiYgZXZlbnQucmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiZcbiAgICAgICAgZWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRDbGFzc2VzKGVsZW1lbnQpO1xuICAgIHRoaXMuX2VtaXRPcmlnaW4oZWxlbWVudEluZm8uc3ViamVjdCwgbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0T3JpZ2luKHN1YmplY3Q6IFN1YmplY3Q8Rm9jdXNPcmlnaW4+LCBvcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiBzdWJqZWN0Lm5leHQob3JpZ2luKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyhlbGVtZW50SW5mbzogTW9uaXRvcmVkRWxlbWVudEluZm8pIHtcbiAgICBpZiAoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvb3ROb2RlID0gZWxlbWVudEluZm8ucm9vdE5vZGU7XG4gICAgY29uc3Qgcm9vdE5vZGVGb2N1c0xpc3RlbmVycyA9IHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmdldChyb290Tm9kZSkgfHwgMDtcblxuICAgIGlmICghcm9vdE5vZGVGb2N1c0xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgcm9vdE5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLFxuICAgICAgICAgIGNhcHR1cmVFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICAgIHJvb3ROb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLFxuICAgICAgICAgIGNhcHR1cmVFdmVudExpc3RlbmVyT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQocm9vdE5vZGUsIHJvb3ROb2RlRm9jdXNMaXN0ZW5lcnMgKyAxKTtcblxuICAgIC8vIFJlZ2lzdGVyIGdsb2JhbCBsaXN0ZW5lcnMgd2hlbiBmaXJzdCBlbGVtZW50IGlzIG1vbml0b3JlZC5cbiAgICBpZiAoKyt0aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQgPT09IDEpIHtcbiAgICAgIC8vIE5vdGU6IHdlIGxpc3RlbiB0byBldmVudHMgaW4gdGhlIGNhcHR1cmUgcGhhc2Ugc28gd2VcbiAgICAgIC8vIGNhbiBkZXRlY3QgdGhlbSBldmVuIGlmIHRoZSB1c2VyIHN0b3BzIHByb3BhZ2F0aW9uLlxuICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFRoZSBJbnB1dE1vZGFsaXR5RGV0ZWN0b3IgaXMgYWxzbyBqdXN0IGEgY29sbGVjdGlvbiBvZiBnbG9iYWwgbGlzdGVuZXJzLlxuICAgICAgdGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLm1vZGFsaXR5RGV0ZWN0ZWRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3N0b3BJbnB1dE1vZGFsaXR5RGV0ZWN0b3IpKVxuICAgICAgICAuc3Vic2NyaWJlKG1vZGFsaXR5ID0+IHsgdGhpcy5fc2V0T3JpZ2luKG1vZGFsaXR5LCB0cnVlIC8qIGlzRnJvbUludGVyYWN0aW9uICovKTsgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKGVsZW1lbnRJbmZvOiBNb25pdG9yZWRFbGVtZW50SW5mbykge1xuICAgIGNvbnN0IHJvb3ROb2RlID0gZWxlbWVudEluZm8ucm9vdE5vZGU7XG5cbiAgICBpZiAodGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuaGFzKHJvb3ROb2RlKSkge1xuICAgICAgY29uc3Qgcm9vdE5vZGVGb2N1c0xpc3RlbmVycyA9IHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmdldChyb290Tm9kZSkhO1xuXG4gICAgICBpZiAocm9vdE5vZGVGb2N1c0xpc3RlbmVycyA+IDEpIHtcbiAgICAgICAgdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuc2V0KHJvb3ROb2RlLCByb290Tm9kZUZvY3VzTGlzdGVuZXJzIC0gMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290Tm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsXG4gICAgICAgICAgY2FwdHVyZUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgICAgcm9vdE5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsXG4gICAgICAgICAgY2FwdHVyZUV2ZW50TGlzdGVuZXJPcHRpb25zKTtcbiAgICAgICAgdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZGVsZXRlKHJvb3ROb2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnJlZ2lzdGVyIGdsb2JhbCBsaXN0ZW5lcnMgd2hlbiBsYXN0IGVsZW1lbnQgaXMgdW5tb25pdG9yZWQuXG4gICAgaWYgKCEtLXRoaXMuX21vbml0b3JlZEVsZW1lbnRDb3VudCkge1xuICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyKTtcblxuICAgICAgLy8gRXF1aXZhbGVudGx5LCBzdG9wIG91ciBJbnB1dE1vZGFsaXR5RGV0ZWN0b3Igc3Vic2NyaXB0aW9uLlxuICAgICAgdGhpcy5fc3RvcElucHV0TW9kYWxpdHlEZXRlY3Rvci5uZXh0KCk7XG5cbiAgICAgIC8vIENsZWFyIHRpbWVvdXRzIGZvciBhbGwgcG90ZW50aWFsbHkgcGVuZGluZyB0aW1lb3V0cyB0byBwcmV2ZW50IHRoZSBsZWFrcy5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl93aW5kb3dGb2N1c1RpbWVvdXRJZCk7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fb3JpZ2luVGltZW91dElkKTtcbiAgICB9XG4gIH1cblxuICAvKiogVXBkYXRlcyBhbGwgdGhlIHN0YXRlIG9uIGFuIGVsZW1lbnQgb25jZSBpdHMgZm9jdXMgb3JpZ2luIGhhcyBjaGFuZ2VkLiAqL1xuICBwcml2YXRlIF9vcmlnaW5DaGFuZ2VkKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcmlnaW46IEZvY3VzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRJbmZvOiBNb25pdG9yZWRFbGVtZW50SW5mbykge1xuICAgIHRoaXMuX3NldENsYXNzZXMoZWxlbWVudCwgb3JpZ2luKTtcbiAgICB0aGlzLl9lbWl0T3JpZ2luKGVsZW1lbnRJbmZvLnN1YmplY3QsIG9yaWdpbik7XG4gICAgdGhpcy5fbGFzdEZvY3VzT3JpZ2luID0gb3JpZ2luO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbGxlY3RzIHRoZSBgTW9uaXRvcmVkRWxlbWVudEluZm9gIG9mIGEgcGFydGljdWxhciBlbGVtZW50IGFuZFxuICAgKiBhbGwgb2YgaXRzIGFuY2VzdG9ycyB0aGF0IGhhdmUgZW5hYmxlZCBgY2hlY2tDaGlsZHJlbmAuXG4gICAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgZnJvbSB3aGljaCB0byBzdGFydCB0aGUgc2VhcmNoLlxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0Q2xvc2VzdEVsZW1lbnRzSW5mbyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IFtIVE1MRWxlbWVudCwgTW9uaXRvcmVkRWxlbWVudEluZm9dW10ge1xuICAgIGNvbnN0IHJlc3VsdHM6IFtIVE1MRWxlbWVudCwgTW9uaXRvcmVkRWxlbWVudEluZm9dW10gPSBbXTtcblxuICAgIHRoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKGluZm8sIGN1cnJlbnRFbGVtZW50KSA9PiB7XG4gICAgICBpZiAoY3VycmVudEVsZW1lbnQgPT09IGVsZW1lbnQgfHwgKGluZm8uY2hlY2tDaGlsZHJlbiAmJiBjdXJyZW50RWxlbWVudC5jb250YWlucyhlbGVtZW50KSkpIHtcbiAgICAgICAgcmVzdWx0cy5wdXNoKFtjdXJyZW50RWxlbWVudCwgaW5mb10pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCBkZXRlcm1pbmVzIGhvdyBhIHBhcnRpY3VsYXIgZWxlbWVudCB3YXMgZm9jdXNlZCAodmlhIGtleWJvYXJkLCBtb3VzZSwgdG91Y2gsIG9yXG4gKiBwcm9ncmFtbWF0aWNhbGx5KSBhbmQgYWRkcyBjb3JyZXNwb25kaW5nIGNsYXNzZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICogVGhlcmUgYXJlIHR3byB2YXJpYW50cyBvZiB0aGlzIGRpcmVjdGl2ZTpcbiAqIDEpIGNka01vbml0b3JFbGVtZW50Rm9jdXM6IGRvZXMgbm90IGNvbnNpZGVyIGFuIGVsZW1lbnQgdG8gYmUgZm9jdXNlZCBpZiBvbmUgb2YgaXRzIGNoaWxkcmVuIGlzXG4gKiAgICBmb2N1c2VkLlxuICogMikgY2RrTW9uaXRvclN1YnRyZWVGb2N1czogY29uc2lkZXJzIGFuIGVsZW1lbnQgZm9jdXNlZCBpZiBpdCBvciBhbnkgb2YgaXRzIGNoaWxkcmVuIGFyZSBmb2N1c2VkLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrTW9uaXRvckVsZW1lbnRGb2N1c10sIFtjZGtNb25pdG9yU3VidHJlZUZvY3VzXScsXG59KVxuZXhwb3J0IGNsYXNzIENka01vbml0b3JGb2N1cyBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX21vbml0b3JTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNka0ZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c09yaWdpbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBfZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbiA9IHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKFxuICAgICAgZWxlbWVudCxcbiAgICAgIGVsZW1lbnQubm9kZVR5cGUgPT09IDEgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Nka01vbml0b3JTdWJ0cmVlRm9jdXMnKSlcbiAgICAuc3Vic2NyaWJlKG9yaWdpbiA9PiB0aGlzLmNka0ZvY3VzQ2hhbmdlLmVtaXQob3JpZ2luKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZik7XG5cbiAgICBpZiAodGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,52 +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 { DOCUMENT } from '@angular/common';
9
- import { Inject, Injectable, Optional, NgZone, } from '@angular/core';
10
- import { InteractivityChecker } from '../interactivity-checker/interactivity-checker';
11
- import { ConfigurableFocusTrap } from './configurable-focus-trap';
12
- import { FOCUS_TRAP_INERT_STRATEGY } from './focus-trap-inert-strategy';
13
- import { EventListenerFocusTrapInertStrategy } from './event-listener-inert-strategy';
14
- import { FocusTrapManager } from './focus-trap-manager';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "../interactivity-checker/interactivity-checker";
17
- import * as i2 from "./focus-trap-manager";
18
- import * as i3 from "@angular/common";
19
- import * as i4 from "./focus-trap-inert-strategy";
20
- /** Factory that allows easy instantiation of configurable focus traps. */
21
- export class ConfigurableFocusTrapFactory {
22
- constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {
23
- this._checker = _checker;
24
- this._ngZone = _ngZone;
25
- this._focusTrapManager = _focusTrapManager;
26
- this._document = _document;
27
- // TODO split up the strategies into different modules, similar to DateAdapter.
28
- this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();
29
- }
30
- create(element, config = { defer: false }) {
31
- let configObject;
32
- if (typeof config === 'boolean') {
33
- configObject = { defer: config };
34
- }
35
- else {
36
- configObject = config;
37
- }
38
- return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);
39
- }
40
- }
41
- ConfigurableFocusTrapFactory.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigurableFocusTrapFactory_Factory() { return new ConfigurableFocusTrapFactory(i0.ɵɵinject(i1.InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i2.FocusTrapManager), i0.ɵɵinject(i3.DOCUMENT), i0.ɵɵinject(i4.FOCUS_TRAP_INERT_STRATEGY, 8)); }, token: ConfigurableFocusTrapFactory, providedIn: "root" });
42
- ConfigurableFocusTrapFactory.decorators = [
43
- { type: Injectable, args: [{ providedIn: 'root' },] }
44
- ];
45
- ConfigurableFocusTrapFactory.ctorParameters = () => [
46
- { type: InteractivityChecker },
47
- { type: NgZone },
48
- { type: FocusTrapManager },
49
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
50
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FOCUS_TRAP_INERT_STRATEGY,] }] }
51
- ];
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLWZvY3VzLXRyYXAtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvYTExeS9mb2N1cy10cmFwL2NvbmZpZ3VyYWJsZS1mb2N1cy10cmFwLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFaEUsT0FBTyxFQUFDLHlCQUF5QixFQUF5QixNQUFNLDZCQUE2QixDQUFDO0FBQzlGLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFFdEQsMEVBQTBFO0FBRTFFLE1BQU0sT0FBTyw0QkFBNEI7SUFJdkMsWUFDWSxRQUE4QixFQUM5QixPQUFlLEVBQ2YsaUJBQW1DLEVBQ3pCLFNBQWMsRUFDZSxjQUF1QztRQUo5RSxhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2Ysc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUk3QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQiwrRUFBK0U7UUFDL0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLElBQUksSUFBSSxtQ0FBbUMsRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFnQkQsTUFBTSxDQUFDLE9BQW9CLEVBQUUsU0FBOEMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDO1FBRXZGLElBQUksWUFBeUMsQ0FBQztRQUM5QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUMvQixZQUFZLEdBQUcsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLFlBQVksR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUkscUJBQXFCLENBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQzVFLElBQUksQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQzs7OztZQTFDRixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7WUFSeEIsb0JBQW9CO1lBRjFCLE1BQU07WUFPQSxnQkFBZ0I7NENBWWpCLE1BQU0sU0FBQyxRQUFROzRDQUNmLFFBQVEsWUFBSSxNQUFNLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJbnRlcmFjdGl2aXR5Q2hlY2tlcn0gZnJvbSAnLi4vaW50ZXJhY3Rpdml0eS1jaGVja2VyL2ludGVyYWN0aXZpdHktY2hlY2tlcic7XG5pbXBvcnQge0NvbmZpZ3VyYWJsZUZvY3VzVHJhcH0gZnJvbSAnLi9jb25maWd1cmFibGUtZm9jdXMtdHJhcCc7XG5pbXBvcnQge0NvbmZpZ3VyYWJsZUZvY3VzVHJhcENvbmZpZ30gZnJvbSAnLi9jb25maWd1cmFibGUtZm9jdXMtdHJhcC1jb25maWcnO1xuaW1wb3J0IHtGT0NVU19UUkFQX0lORVJUX1NUUkFURUdZLCBGb2N1c1RyYXBJbmVydFN0cmF0ZWd5fSBmcm9tICcuL2ZvY3VzLXRyYXAtaW5lcnQtc3RyYXRlZ3knO1xuaW1wb3J0IHtFdmVudExpc3RlbmVyRm9jdXNUcmFwSW5lcnRTdHJhdGVneX0gZnJvbSAnLi9ldmVudC1saXN0ZW5lci1pbmVydC1zdHJhdGVneSc7XG5pbXBvcnQge0ZvY3VzVHJhcE1hbmFnZXJ9IGZyb20gJy4vZm9jdXMtdHJhcC1tYW5hZ2VyJztcblxuLyoqIEZhY3RvcnkgdGhhdCBhbGxvd3MgZWFzeSBpbnN0YW50aWF0aW9uIG9mIGNvbmZpZ3VyYWJsZSBmb2N1cyB0cmFwcy4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3Rvcnkge1xuICBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQ7XG4gIHByaXZhdGUgX2luZXJ0U3RyYXRlZ3k6IEZvY3VzVHJhcEluZXJ0U3RyYXRlZ3k7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBwcml2YXRlIF9jaGVja2VyOiBJbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgICAgcHJpdmF0ZSBfZm9jdXNUcmFwTWFuYWdlcjogRm9jdXNUcmFwTWFuYWdlcixcbiAgICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LFxuICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChGT0NVU19UUkFQX0lORVJUX1NUUkFURUdZKSBfaW5lcnRTdHJhdGVneT86IEZvY3VzVHJhcEluZXJ0U3RyYXRlZ3kpIHtcblxuICAgIHRoaXMuX2RvY3VtZW50ID0gX2RvY3VtZW50O1xuICAgIC8vIFRPRE8gc3BsaXQgdXAgdGhlIHN0cmF0ZWdpZXMgaW50byBkaWZmZXJlbnQgbW9kdWxlcywgc2ltaWxhciB0byBEYXRlQWRhcHRlci5cbiAgICB0aGlzLl9pbmVydFN0cmF0ZWd5ID0gX2luZXJ0U3RyYXRlZ3kgfHwgbmV3IEV2ZW50TGlzdGVuZXJGb2N1c1RyYXBJbmVydFN0cmF0ZWd5KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZvY3VzLXRyYXBwZWQgcmVnaW9uIGFyb3VuZCB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgYXJvdW5kIHdoaWNoIGZvY3VzIHdpbGwgYmUgdHJhcHBlZC5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgZm9jdXMgdHJhcCBjb25maWd1cmF0aW9uLlxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBmb2N1cyB0cmFwIGluc3RhbmNlLlxuICAgKi9cbiAgY3JlYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBDb25maWd1cmFibGVGb2N1c1RyYXBDb25maWcpOiBDb25maWd1cmFibGVGb2N1c1RyYXA7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBhc3MgYSBjb25maWcgb2JqZWN0IGluc3RlYWQgb2YgdGhlIGBkZWZlckNhcHR1cmVFbGVtZW50c2AgZmxhZy5cbiAgICogQGJyZWFraW5nLWNoYW5nZSAxMS4wLjBcbiAgICovXG4gIGNyZWF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgZGVmZXJDYXB0dXJlRWxlbWVudHM6IGJvb2xlYW4pOiBDb25maWd1cmFibGVGb2N1c1RyYXA7XG5cbiAgY3JlYXRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc6IENvbmZpZ3VyYWJsZUZvY3VzVHJhcENvbmZpZ3xib29sZWFuID0ge2RlZmVyOiBmYWxzZX0pOlxuICAgICAgQ29uZmlndXJhYmxlRm9jdXNUcmFwIHtcbiAgICBsZXQgY29uZmlnT2JqZWN0OiBDb25maWd1cmFibGVGb2N1c1RyYXBDb25maWc7XG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdib29sZWFuJykge1xuICAgICAgY29uZmlnT2JqZWN0ID0ge2RlZmVyOiBjb25maWd9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdPYmplY3QgPSBjb25maWc7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29uZmlndXJhYmxlRm9jdXNUcmFwKFxuICAgICAgICBlbGVtZW50LCB0aGlzLl9jaGVja2VyLCB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCB0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLFxuICAgICAgICB0aGlzLl9pbmVydFN0cmF0ZWd5LCBjb25maWdPYmplY3QpO1xuICB9XG59XG4iXX0=
@@ -1,49 +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 { FocusTrap } from './focus-trap';
9
- /**
10
- * Class that allows for trapping focus within a DOM element.
11
- *
12
- * This class uses a strategy pattern that determines how it traps focus.
13
- * See FocusTrapInertStrategy.
14
- */
15
- export class ConfigurableFocusTrap extends FocusTrap {
16
- constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {
17
- super(_element, _checker, _ngZone, _document, config.defer);
18
- this._focusTrapManager = _focusTrapManager;
19
- this._inertStrategy = _inertStrategy;
20
- this._focusTrapManager.register(this);
21
- }
22
- /** Whether the FocusTrap is enabled. */
23
- get enabled() { return this._enabled; }
24
- set enabled(value) {
25
- this._enabled = value;
26
- if (this._enabled) {
27
- this._focusTrapManager.register(this);
28
- }
29
- else {
30
- this._focusTrapManager.deregister(this);
31
- }
32
- }
33
- /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */
34
- destroy() {
35
- this._focusTrapManager.deregister(this);
36
- super.destroy();
37
- }
38
- /** @docs-private Implemented as part of ManagedFocusTrap. */
39
- _enable() {
40
- this._inertStrategy.preventFocus(this);
41
- this.toggleAnchors(true);
42
- }
43
- /** @docs-private Implemented as part of ManagedFocusTrap. */
44
- _disable() {
45
- this._inertStrategy.allowFocus(this);
46
- this.toggleAnchors(false);
47
- }
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhYmxlLWZvY3VzLXRyYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL2ExMXkvZm9jdXMtdHJhcC9jb25maWd1cmFibGUtZm9jdXMtdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFJSCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBS3ZDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQVM7SUFZbEQsWUFDRSxRQUFxQixFQUNyQixRQUE4QixFQUM5QixPQUFlLEVBQ2YsU0FBbUIsRUFDWCxpQkFBbUMsRUFDbkMsY0FBc0MsRUFDOUMsTUFBbUM7UUFDbkMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFIcEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFHOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBckJELHdDQUF3QztJQUN4QyxJQUFhLE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQWEsT0FBTyxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBY0QsMkVBQTJFO0lBQ2xFLE9BQU87UUFDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE9BQU87UUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Tmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SW50ZXJhY3Rpdml0eUNoZWNrZXJ9IGZyb20gJy4uL2ludGVyYWN0aXZpdHktY2hlY2tlci9pbnRlcmFjdGl2aXR5LWNoZWNrZXInO1xuaW1wb3J0IHtGb2N1c1RyYXB9IGZyb20gJy4vZm9jdXMtdHJhcCc7XG5pbXBvcnQge0ZvY3VzVHJhcE1hbmFnZXIsIE1hbmFnZWRGb2N1c1RyYXB9IGZyb20gJy4vZm9jdXMtdHJhcC1tYW5hZ2VyJztcbmltcG9ydCB7Rm9jdXNUcmFwSW5lcnRTdHJhdGVneX0gZnJvbSAnLi9mb2N1cy10cmFwLWluZXJ0LXN0cmF0ZWd5JztcbmltcG9ydCB7Q29uZmlndXJhYmxlRm9jdXNUcmFwQ29uZmlnfSBmcm9tICcuL2NvbmZpZ3VyYWJsZS1mb2N1cy10cmFwLWNvbmZpZyc7XG5cbi8qKlxuICogQ2xhc3MgdGhhdCBhbGxvd3MgZm9yIHRyYXBwaW5nIGZvY3VzIHdpdGhpbiBhIERPTSBlbGVtZW50LlxuICpcbiAqIFRoaXMgY2xhc3MgdXNlcyBhIHN0cmF0ZWd5IHBhdHRlcm4gdGhhdCBkZXRlcm1pbmVzIGhvdyBpdCB0cmFwcyBmb2N1cy5cbiAqIFNlZSBGb2N1c1RyYXBJbmVydFN0cmF0ZWd5LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhYmxlRm9jdXNUcmFwIGV4dGVuZHMgRm9jdXNUcmFwIGltcGxlbWVudHMgTWFuYWdlZEZvY3VzVHJhcCB7XG4gIC8qKiBXaGV0aGVyIHRoZSBGb2N1c1RyYXAgaXMgZW5hYmxlZC4gKi9cbiAgb3ZlcnJpZGUgZ2V0IGVuYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9lbmFibGVkOyB9XG4gIG92ZXJyaWRlIHNldCBlbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9lbmFibGVkKSB7XG4gICAgICB0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgX2VsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIF9jaGVja2VyOiBJbnRlcmFjdGl2aXR5Q2hlY2tlcixcbiAgICBfbmdab25lOiBOZ1pvbmUsXG4gICAgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIF9mb2N1c1RyYXBNYW5hZ2VyOiBGb2N1c1RyYXBNYW5hZ2VyLFxuICAgIHByaXZhdGUgX2luZXJ0U3RyYXRlZ3k6IEZvY3VzVHJhcEluZXJ0U3RyYXRlZ3ksXG4gICAgY29uZmlnOiBDb25maWd1cmFibGVGb2N1c1RyYXBDb25maWcpIHtcbiAgICBzdXBlcihfZWxlbWVudCwgX2NoZWNrZXIsIF9uZ1pvbmUsIF9kb2N1bWVudCwgY29uZmlnLmRlZmVyKTtcbiAgICB0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIE5vdGlmaWVzIHRoZSBGb2N1c1RyYXBNYW5hZ2VyIHRoYXQgdGhpcyBGb2N1c1RyYXAgd2lsbCBiZSBkZXN0cm95ZWQuICovXG4gIG92ZXJyaWRlIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm9jdXNUcmFwTWFuYWdlci5kZXJlZ2lzdGVyKHRoaXMpO1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKiBAZG9jcy1wcml2YXRlIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgTWFuYWdlZEZvY3VzVHJhcC4gKi9cbiAgX2VuYWJsZSgpIHtcbiAgICB0aGlzLl9pbmVydFN0cmF0ZWd5LnByZXZlbnRGb2N1cyh0aGlzKTtcbiAgICB0aGlzLnRvZ2dsZUFuY2hvcnModHJ1ZSk7XG4gIH1cblxuICAvKiogQGRvY3MtcHJpdmF0ZSBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIE1hbmFnZWRGb2N1c1RyYXAuICovXG4gIF9kaXNhYmxlKCkge1xuICAgIHRoaXMuX2luZXJ0U3RyYXRlZ3kuYWxsb3dGb2N1cyh0aGlzKTtcbiAgICB0aGlzLnRvZ2dsZUFuY2hvcnMoZmFsc2UpO1xuICB9XG59XG4iXX0=