@angular/core 16.0.0-next.4 → 16.0.0-next.5

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 (353) hide show
  1. package/{esm2020 → esm2022}/src/application_init.mjs +3 -3
  2. package/{esm2020 → esm2022}/src/application_module.mjs +4 -4
  3. package/esm2022/src/application_ref.mjs +908 -0
  4. package/{esm2020 → esm2022}/src/change_detection/change_detector_ref.mjs +6 -6
  5. package/esm2022/src/change_detection/differs/iterable_differs.mjs +81 -0
  6. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +74 -0
  7. package/{esm2020 → esm2022}/src/console.mjs +3 -3
  8. package/{esm2020 → esm2022}/src/core.mjs +2 -1
  9. package/esm2022/src/core_private_export.mjs +39 -0
  10. package/esm2022/src/core_reactivity_export_internal.mjs +12 -0
  11. package/esm2022/src/di/contextual.mjs +54 -0
  12. package/esm2022/src/di/index.mjs +29 -0
  13. package/esm2022/src/di/injector.mjs +62 -0
  14. package/esm2022/src/di/injector_compatibility.mjs +239 -0
  15. package/esm2022/src/di/provider_collection.mjs +279 -0
  16. package/esm2022/src/di/reflective_injector.mjs +311 -0
  17. package/esm2022/src/hydration/annotate.mjs +426 -0
  18. package/esm2022/src/hydration/api.mjs +143 -0
  19. package/esm2022/src/hydration/cleanup.mjs +103 -0
  20. package/esm2022/src/hydration/node_lookup_utils.mjs +273 -0
  21. package/esm2022/src/hydration/utils.mjs +219 -0
  22. package/esm2022/src/initial_render_pending_tasks.mjs +75 -0
  23. package/{esm2020 → esm2022}/src/linker/compiler.mjs +5 -5
  24. package/esm2022/src/linker/component_factory_resolver.mjs +42 -0
  25. package/{esm2020 → esm2022}/src/linker/destroy_ref.mjs +11 -11
  26. package/{esm2020 → esm2022}/src/linker/element_ref.mjs +6 -6
  27. package/esm2022/src/linker/query_list.mjs +169 -0
  28. package/{esm2020 → esm2022}/src/linker/template_ref.mjs +6 -6
  29. package/{esm2020 → esm2022}/src/linker/view_container_ref.mjs +6 -6
  30. package/esm2022/src/metadata/di.mjs +69 -0
  31. package/{esm2020 → esm2022}/src/metadata/directives.mjs +1 -1
  32. package/{esm2020 → esm2022}/src/metadata/do_boostrap.mjs +1 -1
  33. package/{esm2020 → esm2022}/src/metadata/ng_module.mjs +2 -2
  34. package/esm2022/src/metadata.mjs +18 -0
  35. package/{esm2020 → esm2022}/src/render/api.mjs +6 -6
  36. package/esm2022/src/render3/component_ref.mjs +386 -0
  37. package/{esm2020 → esm2022}/src/render3/context_discovery.mjs +1 -1
  38. package/esm2022/src/render3/features/standalone_feature.mjs +70 -0
  39. package/{esm2020 → esm2022}/src/render3/instructions/element.mjs +2 -2
  40. package/esm2022/src/render3/instructions/listener.mjs +244 -0
  41. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +35 -0
  42. package/esm2022/src/render3/instructions/shared.mjs +1681 -0
  43. package/{esm2020 → esm2022}/src/render3/instructions/styling.mjs +5 -2
  44. package/esm2022/src/render3/interfaces/view.mjs +49 -0
  45. package/esm2022/src/render3/jit/module.mjs +531 -0
  46. package/esm2022/src/render3/node_manipulation.mjs +960 -0
  47. package/esm2022/src/render3/reactive_lview_consumer.mjs +80 -0
  48. package/esm2022/src/render3/reactivity/effect.mjs +67 -0
  49. package/{esm2020 → esm2022}/src/render3/util/change_detection_utils.mjs +2 -2
  50. package/esm2022/src/render3/view_ref.mjs +307 -0
  51. package/{esm2020 → esm2022}/src/sanitization/sanitizer.mjs +7 -7
  52. package/esm2022/src/signals/index.mjs +15 -0
  53. package/esm2022/src/signals/src/api.mjs +47 -0
  54. package/esm2022/src/signals/src/computed.mjs +139 -0
  55. package/esm2022/src/signals/src/graph.mjs +165 -0
  56. package/esm2022/src/signals/src/signal.mjs +75 -0
  57. package/esm2022/src/signals/src/watch.mjs +62 -0
  58. package/esm2022/src/signals/src/weak_ref.mjs +35 -0
  59. package/{esm2020 → esm2022}/src/testability/testability.mjs +5 -5
  60. package/esm2022/src/transfer_state.mjs +153 -0
  61. package/{esm2020 → esm2022}/src/version.mjs +1 -1
  62. package/{esm2020 → esm2022}/testing/src/logger.mjs +4 -4
  63. package/{esm2020 → esm2022}/testing/src/ng_zone_mock.mjs +4 -4
  64. package/{esm2020 → esm2022}/testing/src/test_bed.mjs +2 -2
  65. package/{fesm2020 → fesm2022}/core.mjs +869 -639
  66. package/fesm2022/core.mjs.map +1 -0
  67. package/{fesm2020 → fesm2022}/testing.mjs +406 -124
  68. package/fesm2022/testing.mjs.map +1 -0
  69. package/index.d.ts +334 -187
  70. package/package.json +8 -16
  71. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +694 -0
  72. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +7 -0
  73. package/schematics/migrations/{router-link-with-href → remove-module-id}/bundle.js +149 -151
  74. package/schematics/migrations/remove-module-id/bundle.js.map +7 -0
  75. package/schematics/migrations.json +8 -8
  76. package/schematics/ng-generate/standalone-migration/bundle.js +617 -251
  77. package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
  78. package/testing/index.d.ts +1 -1
  79. package/esm2020/src/application_ref.mjs +0 -907
  80. package/esm2020/src/change_detection/differs/iterable_differs.mjs +0 -81
  81. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +0 -74
  82. package/esm2020/src/core_private_export.mjs +0 -38
  83. package/esm2020/src/core_reactivity_export_internal.mjs +0 -9
  84. package/esm2020/src/di/contextual.mjs +0 -37
  85. package/esm2020/src/di/index.mjs +0 -29
  86. package/esm2020/src/di/injector.mjs +0 -62
  87. package/esm2020/src/di/injector_compatibility.mjs +0 -236
  88. package/esm2020/src/di/provider_collection.mjs +0 -279
  89. package/esm2020/src/di/reflective_injector.mjs +0 -311
  90. package/esm2020/src/hydration/annotate.mjs +0 -384
  91. package/esm2020/src/hydration/api.mjs +0 -141
  92. package/esm2020/src/hydration/cleanup.mjs +0 -101
  93. package/esm2020/src/hydration/node_lookup_utils.mjs +0 -275
  94. package/esm2020/src/hydration/utils.mjs +0 -219
  95. package/esm2020/src/linker/component_factory_resolver.mjs +0 -42
  96. package/esm2020/src/linker/query_list.mjs +0 -169
  97. package/esm2020/src/metadata/di.mjs +0 -108
  98. package/esm2020/src/metadata.mjs +0 -18
  99. package/esm2020/src/render3/component_ref.mjs +0 -377
  100. package/esm2020/src/render3/features/standalone_feature.mjs +0 -70
  101. package/esm2020/src/render3/instructions/listener.mjs +0 -243
  102. package/esm2020/src/render3/instructions/shared.mjs +0 -1696
  103. package/esm2020/src/render3/interfaces/view.mjs +0 -47
  104. package/esm2020/src/render3/jit/module.mjs +0 -544
  105. package/esm2020/src/render3/node_manipulation.mjs +0 -961
  106. package/esm2020/src/render3/view_ref.mjs +0 -306
  107. package/esm2020/src/signals/index.mjs +0 -16
  108. package/esm2020/src/signals/src/api.mjs +0 -46
  109. package/esm2020/src/signals/src/computed.mjs +0 -142
  110. package/esm2020/src/signals/src/effect.mjs +0 -67
  111. package/esm2020/src/signals/src/graph.mjs +0 -114
  112. package/esm2020/src/signals/src/signal.mjs +0 -78
  113. package/esm2020/src/signals/src/watch.mjs +0 -54
  114. package/esm2020/src/signals/src/weak_ref.mjs +0 -27
  115. package/esm2020/src/transfer_state.mjs +0 -153
  116. package/fesm2015/core.mjs +0 -30473
  117. package/fesm2015/core.mjs.map +0 -1
  118. package/fesm2015/testing.mjs +0 -26417
  119. package/fesm2015/testing.mjs.map +0 -1
  120. package/fesm2020/core.mjs.map +0 -1
  121. package/fesm2020/testing.mjs.map +0 -1
  122. package/schematics/migrations/relative-link-resolution/bundle.js +0 -283
  123. package/schematics/migrations/relative-link-resolution/bundle.js.map +0 -7
  124. package/schematics/migrations/router-link-with-href/bundle.js.map +0 -7
  125. /package/{esm2020 → esm2022}/core.mjs +0 -0
  126. /package/{esm2020 → esm2022}/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  128. /package/{esm2020 → esm2022}/src/application_config.mjs +0 -0
  129. /package/{esm2020 → esm2022}/src/application_tokens.mjs +0 -0
  130. /package/{esm2020 → esm2022}/src/change_detection/change_detection.mjs +0 -0
  131. /package/{esm2020 → esm2022}/src/change_detection/constants.mjs +0 -0
  132. /package/{esm2020 → esm2022}/src/change_detection/differs/default_iterable_differ.mjs +0 -0
  133. /package/{esm2020 → esm2022}/src/change_detection/differs/default_keyvalue_differ.mjs +0 -0
  134. /package/{esm2020 → esm2022}/src/change_detection/pipe_transform.mjs +0 -0
  135. /package/{esm2020 → esm2022}/src/change_detection.mjs +0 -0
  136. /package/{esm2020 → esm2022}/src/compiler/compiler_facade.mjs +0 -0
  137. /package/{esm2020 → esm2022}/src/compiler/compiler_facade_interface.mjs +0 -0
  138. /package/{esm2020 → esm2022}/src/core_reactivity_export.mjs +0 -0
  139. /package/{esm2020 → esm2022}/src/core_render3_private_export.mjs +0 -0
  140. /package/{esm2020 → esm2022}/src/debug/debug_node.mjs +0 -0
  141. /package/{esm2020 → esm2022}/src/di/create_injector.mjs +0 -0
  142. /package/{esm2020 → esm2022}/src/di/forward_ref.mjs +0 -0
  143. /package/{esm2020 → esm2022}/src/di/initializer_token.mjs +0 -0
  144. /package/{esm2020 → esm2022}/src/di/inject_switch.mjs +0 -0
  145. /package/{esm2020 → esm2022}/src/di/injectable.mjs +0 -0
  146. /package/{esm2020 → esm2022}/src/di/injection_token.mjs +0 -0
  147. /package/{esm2020 → esm2022}/src/di/injector_marker.mjs +0 -0
  148. /package/{esm2020 → esm2022}/src/di/injector_token.mjs +0 -0
  149. /package/{esm2020 → esm2022}/src/di/interface/defs.mjs +0 -0
  150. /package/{esm2020 → esm2022}/src/di/interface/injector.mjs +0 -0
  151. /package/{esm2020 → esm2022}/src/di/interface/provider.mjs +0 -0
  152. /package/{esm2020 → esm2022}/src/di/internal_tokens.mjs +0 -0
  153. /package/{esm2020 → esm2022}/src/di/jit/environment.mjs +0 -0
  154. /package/{esm2020 → esm2022}/src/di/jit/injectable.mjs +0 -0
  155. /package/{esm2020 → esm2022}/src/di/jit/util.mjs +0 -0
  156. /package/{esm2020 → esm2022}/src/di/metadata.mjs +0 -0
  157. /package/{esm2020 → esm2022}/src/di/metadata_attr.mjs +0 -0
  158. /package/{esm2020 → esm2022}/src/di/null_injector.mjs +0 -0
  159. /package/{esm2020 → esm2022}/src/di/provider_token.mjs +0 -0
  160. /package/{esm2020 → esm2022}/src/di/r3_injector.mjs +0 -0
  161. /package/{esm2020 → esm2022}/src/di/reflective_errors.mjs +0 -0
  162. /package/{esm2020 → esm2022}/src/di/reflective_key.mjs +0 -0
  163. /package/{esm2020 → esm2022}/src/di/reflective_provider.mjs +0 -0
  164. /package/{esm2020 → esm2022}/src/di/scope.mjs +0 -0
  165. /package/{esm2020 → esm2022}/src/di.mjs +0 -0
  166. /package/{esm2020 → esm2022}/src/error_details_base_url.mjs +0 -0
  167. /package/{esm2020 → esm2022}/src/error_handler.mjs +0 -0
  168. /package/{esm2020 → esm2022}/src/errors.mjs +0 -0
  169. /package/{esm2020 → esm2022}/src/event_emitter.mjs +0 -0
  170. /package/{esm2020 → esm2022}/src/hydration/compression.mjs +0 -0
  171. /package/{esm2020 → esm2022}/src/hydration/error_handling.mjs +0 -0
  172. /package/{esm2020 → esm2022}/src/hydration/interfaces.mjs +0 -0
  173. /package/{esm2020 → esm2022}/src/hydration/skip_hydration.mjs +0 -0
  174. /package/{esm2020 → esm2022}/src/hydration/tokens.mjs +0 -0
  175. /package/{esm2020 → esm2022}/src/hydration/views.mjs +0 -0
  176. /package/{esm2020 → esm2022}/src/i18n/locale_data_api.mjs +0 -0
  177. /package/{esm2020 → esm2022}/src/i18n/locale_en.mjs +0 -0
  178. /package/{esm2020 → esm2022}/src/i18n/localization.mjs +0 -0
  179. /package/{esm2020 → esm2022}/src/i18n/tokens.mjs +0 -0
  180. /package/{esm2020 → esm2022}/src/interface/lifecycle_hooks.mjs +0 -0
  181. /package/{esm2020 → esm2022}/src/interface/simple_change.mjs +0 -0
  182. /package/{esm2020 → esm2022}/src/interface/type.mjs +0 -0
  183. /package/{esm2020 → esm2022}/src/linker/component_factory.mjs +0 -0
  184. /package/{esm2020 → esm2022}/src/linker/ng_module_factory.mjs +0 -0
  185. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader.mjs +0 -0
  186. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader_impl.mjs +0 -0
  187. /package/{esm2020 → esm2022}/src/linker/ng_module_registration.mjs +0 -0
  188. /package/{esm2020 → esm2022}/src/linker/view_ref.mjs +0 -0
  189. /package/{esm2020 → esm2022}/src/linker.mjs +0 -0
  190. /package/{esm2020 → esm2022}/src/metadata/ng_module_def.mjs +0 -0
  191. /package/{esm2020 → esm2022}/src/metadata/resource_loading.mjs +0 -0
  192. /package/{esm2020 → esm2022}/src/metadata/schema.mjs +0 -0
  193. /package/{esm2020 → esm2022}/src/metadata/view.mjs +0 -0
  194. /package/{esm2020 → esm2022}/src/platform_core_providers.mjs +0 -0
  195. /package/{esm2020 → esm2022}/src/r3_symbols.mjs +0 -0
  196. /package/{esm2020 → esm2022}/src/reflection/platform_reflection_capabilities.mjs +0 -0
  197. /package/{esm2020 → esm2022}/src/reflection/reflection_capabilities.mjs +0 -0
  198. /package/{esm2020 → esm2022}/src/render/api_flags.mjs +0 -0
  199. /package/{esm2020 → esm2022}/src/render.mjs +0 -0
  200. /package/{esm2020 → esm2022}/src/render3/assert.mjs +0 -0
  201. /package/{esm2020 → esm2022}/src/render3/bindings.mjs +0 -0
  202. /package/{esm2020 → esm2022}/src/render3/collect_native_nodes.mjs +0 -0
  203. /package/{esm2020 → esm2022}/src/render3/component.mjs +0 -0
  204. /package/{esm2020 → esm2022}/src/render3/definition.mjs +0 -0
  205. /package/{esm2020 → esm2022}/src/render3/definition_factory.mjs +0 -0
  206. /package/{esm2020 → esm2022}/src/render3/di.mjs +0 -0
  207. /package/{esm2020 → esm2022}/src/render3/di_setup.mjs +0 -0
  208. /package/{esm2020 → esm2022}/src/render3/errors.mjs +0 -0
  209. /package/{esm2020 → esm2022}/src/render3/errors_di.mjs +0 -0
  210. /package/{esm2020 → esm2022}/src/render3/features/copy_definition_feature.mjs +0 -0
  211. /package/{esm2020 → esm2022}/src/render3/features/host_directives_feature.mjs +0 -0
  212. /package/{esm2020 → esm2022}/src/render3/features/inherit_definition_feature.mjs +0 -0
  213. /package/{esm2020 → esm2022}/src/render3/features/ng_onchanges_feature.mjs +0 -0
  214. /package/{esm2020 → esm2022}/src/render3/features/providers_feature.mjs +0 -0
  215. /package/{esm2020 → esm2022}/src/render3/fields.mjs +0 -0
  216. /package/{esm2020 → esm2022}/src/render3/global_utils_api.mjs +0 -0
  217. /package/{esm2020 → esm2022}/src/render3/hooks.mjs +0 -0
  218. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_apply.mjs +0 -0
  219. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_debug.mjs +0 -0
  220. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_insert_before_index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_locale_id.mjs +0 -0
  222. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_parse.mjs +0 -0
  223. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_postprocess.mjs +0 -0
  224. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_tree_shaking.mjs +0 -0
  225. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_util.mjs +0 -0
  226. /package/{esm2020 → esm2022}/src/render3/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/src/render3/instructions/advance.mjs +0 -0
  228. /package/{esm2020 → esm2022}/src/render3/instructions/all.mjs +0 -0
  229. /package/{esm2020 → esm2022}/src/render3/instructions/attribute.mjs +0 -0
  230. /package/{esm2020 → esm2022}/src/render3/instructions/attribute_interpolation.mjs +0 -0
  231. /package/{esm2020 → esm2022}/src/render3/instructions/change_detection.mjs +0 -0
  232. /package/{esm2020 → esm2022}/src/render3/instructions/class_map_interpolation.mjs +0 -0
  233. /package/{esm2020 → esm2022}/src/render3/instructions/di.mjs +0 -0
  234. /package/{esm2020 → esm2022}/src/render3/instructions/di_attr.mjs +0 -0
  235. /package/{esm2020 → esm2022}/src/render3/instructions/element_container.mjs +0 -0
  236. /package/{esm2020 → esm2022}/src/render3/instructions/element_validation.mjs +0 -0
  237. /package/{esm2020 → esm2022}/src/render3/instructions/get_current_view.mjs +0 -0
  238. /package/{esm2020 → esm2022}/src/render3/instructions/host_property.mjs +0 -0
  239. /package/{esm2020 → esm2022}/src/render3/instructions/i18n.mjs +0 -0
  240. /package/{esm2020 → esm2022}/src/render3/instructions/i18n_icu_container_visitor.mjs +0 -0
  241. /package/{esm2020 → esm2022}/src/render3/instructions/interpolation.mjs +0 -0
  242. /package/{esm2020 → esm2022}/src/render3/instructions/namespace.mjs +0 -0
  243. /package/{esm2020 → esm2022}/src/render3/instructions/next_context.mjs +0 -0
  244. /package/{esm2020 → esm2022}/src/render3/instructions/projection.mjs +0 -0
  245. /package/{esm2020 → esm2022}/src/render3/instructions/property.mjs +0 -0
  246. /package/{esm2020 → esm2022}/src/render3/instructions/property_interpolation.mjs +0 -0
  247. /package/{esm2020 → esm2022}/src/render3/instructions/storage.mjs +0 -0
  248. /package/{esm2020 → esm2022}/src/render3/instructions/style_map_interpolation.mjs +0 -0
  249. /package/{esm2020 → esm2022}/src/render3/instructions/style_prop_interpolation.mjs +0 -0
  250. /package/{esm2020 → esm2022}/src/render3/instructions/template.mjs +0 -0
  251. /package/{esm2020 → esm2022}/src/render3/instructions/text.mjs +0 -0
  252. /package/{esm2020 → esm2022}/src/render3/instructions/text_interpolation.mjs +0 -0
  253. /package/{esm2020 → esm2022}/src/render3/interfaces/container.mjs +0 -0
  254. /package/{esm2020 → esm2022}/src/render3/interfaces/context.mjs +0 -0
  255. /package/{esm2020 → esm2022}/src/render3/interfaces/definition.mjs +0 -0
  256. /package/{esm2020 → esm2022}/src/render3/interfaces/document.mjs +0 -0
  257. /package/{esm2020 → esm2022}/src/render3/interfaces/i18n.mjs +0 -0
  258. /package/{esm2020 → esm2022}/src/render3/interfaces/injector.mjs +0 -0
  259. /package/{esm2020 → esm2022}/src/render3/interfaces/lview_tracking.mjs +0 -0
  260. /package/{esm2020 → esm2022}/src/render3/interfaces/node.mjs +0 -0
  261. /package/{esm2020 → esm2022}/src/render3/interfaces/projection.mjs +0 -0
  262. /package/{esm2020 → esm2022}/src/render3/interfaces/public_definitions.mjs +0 -0
  263. /package/{esm2020 → esm2022}/src/render3/interfaces/query.mjs +0 -0
  264. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer.mjs +0 -0
  265. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer_dom.mjs +0 -0
  266. /package/{esm2020 → esm2022}/src/render3/interfaces/sanitization.mjs +0 -0
  267. /package/{esm2020 → esm2022}/src/render3/interfaces/styling.mjs +0 -0
  268. /package/{esm2020 → esm2022}/src/render3/interfaces/type_checks.mjs +0 -0
  269. /package/{esm2020 → esm2022}/src/render3/jit/directive.mjs +0 -0
  270. /package/{esm2020 → esm2022}/src/render3/jit/environment.mjs +0 -0
  271. /package/{esm2020 → esm2022}/src/render3/jit/jit_options.mjs +0 -0
  272. /package/{esm2020 → esm2022}/src/render3/jit/module_patch.mjs +0 -0
  273. /package/{esm2020 → esm2022}/src/render3/jit/partial.mjs +0 -0
  274. /package/{esm2020 → esm2022}/src/render3/jit/pipe.mjs +0 -0
  275. /package/{esm2020 → esm2022}/src/render3/jit/util.mjs +0 -0
  276. /package/{esm2020 → esm2022}/src/render3/metadata.mjs +0 -0
  277. /package/{esm2020 → esm2022}/src/render3/namespaces.mjs +0 -0
  278. /package/{esm2020 → esm2022}/src/render3/ng_module_ref.mjs +0 -0
  279. /package/{esm2020 → esm2022}/src/render3/node_assert.mjs +0 -0
  280. /package/{esm2020 → esm2022}/src/render3/node_manipulation_i18n.mjs +0 -0
  281. /package/{esm2020 → esm2022}/src/render3/node_selector_matcher.mjs +0 -0
  282. /package/{esm2020 → esm2022}/src/render3/pipe.mjs +0 -0
  283. /package/{esm2020 → esm2022}/src/render3/profiler.mjs +0 -0
  284. /package/{esm2020 → esm2022}/src/render3/pure_function.mjs +0 -0
  285. /package/{esm2020 → esm2022}/src/render3/query.mjs +0 -0
  286. /package/{esm2020 → esm2022}/src/render3/state.mjs +0 -0
  287. /package/{esm2020 → esm2022}/src/render3/styling/class_differ.mjs +0 -0
  288. /package/{esm2020 → esm2022}/src/render3/styling/static_styling.mjs +0 -0
  289. /package/{esm2020 → esm2022}/src/render3/styling/style_binding_list.mjs +0 -0
  290. /package/{esm2020 → esm2022}/src/render3/styling/styling_parser.mjs +0 -0
  291. /package/{esm2020 → esm2022}/src/render3/tokens.mjs +0 -0
  292. /package/{esm2020 → esm2022}/src/render3/util/attrs_utils.mjs +0 -0
  293. /package/{esm2020 → esm2022}/src/render3/util/discovery_utils.mjs +0 -0
  294. /package/{esm2020 → esm2022}/src/render3/util/global_utils.mjs +0 -0
  295. /package/{esm2020 → esm2022}/src/render3/util/injector_utils.mjs +0 -0
  296. /package/{esm2020 → esm2022}/src/render3/util/misc_utils.mjs +0 -0
  297. /package/{esm2020 → esm2022}/src/render3/util/stringify_utils.mjs +0 -0
  298. /package/{esm2020 → esm2022}/src/render3/util/view_traversal_utils.mjs +0 -0
  299. /package/{esm2020 → esm2022}/src/render3/util/view_utils.mjs +0 -0
  300. /package/{esm2020 → esm2022}/src/render3/view_engine_compatibility_prebound.mjs +0 -0
  301. /package/{esm2020 → esm2022}/src/sanitization/bypass.mjs +0 -0
  302. /package/{esm2020 → esm2022}/src/sanitization/html_sanitizer.mjs +0 -0
  303. /package/{esm2020 → esm2022}/src/sanitization/iframe_attrs_validation.mjs +0 -0
  304. /package/{esm2020 → esm2022}/src/sanitization/inert_body.mjs +0 -0
  305. /package/{esm2020 → esm2022}/src/sanitization/sanitization.mjs +0 -0
  306. /package/{esm2020 → esm2022}/src/sanitization/security.mjs +0 -0
  307. /package/{esm2020 → esm2022}/src/sanitization/url_sanitizer.mjs +0 -0
  308. /package/{esm2020 → esm2022}/src/signals/src/untracked.mjs +0 -0
  309. /package/{esm2020 → esm2022}/src/util/array_utils.mjs +0 -0
  310. /package/{esm2020 → esm2022}/src/util/assert.mjs +0 -0
  311. /package/{esm2020 → esm2022}/src/util/char_code.mjs +0 -0
  312. /package/{esm2020 → esm2022}/src/util/closure.mjs +0 -0
  313. /package/{esm2020 → esm2022}/src/util/coercion.mjs +0 -0
  314. /package/{esm2020 → esm2022}/src/util/comparison.mjs +0 -0
  315. /package/{esm2020 → esm2022}/src/util/decorators.mjs +0 -0
  316. /package/{esm2020 → esm2022}/src/util/dom.mjs +0 -0
  317. /package/{esm2020 → esm2022}/src/util/empty.mjs +0 -0
  318. /package/{esm2020 → esm2022}/src/util/errors.mjs +0 -0
  319. /package/{esm2020 → esm2022}/src/util/global.mjs +0 -0
  320. /package/{esm2020 → esm2022}/src/util/is_dev_mode.mjs +0 -0
  321. /package/{esm2020 → esm2022}/src/util/iterable.mjs +0 -0
  322. /package/{esm2020 → esm2022}/src/util/lang.mjs +0 -0
  323. /package/{esm2020 → esm2022}/src/util/microtask.mjs +0 -0
  324. /package/{esm2020 → esm2022}/src/util/ng_dev_mode.mjs +0 -0
  325. /package/{esm2020 → esm2022}/src/util/ng_i18n_closure_mode.mjs +0 -0
  326. /package/{esm2020 → esm2022}/src/util/ng_jit_mode.mjs +0 -0
  327. /package/{esm2020 → esm2022}/src/util/ng_reflect.mjs +0 -0
  328. /package/{esm2020 → esm2022}/src/util/noop.mjs +0 -0
  329. /package/{esm2020 → esm2022}/src/util/property.mjs +0 -0
  330. /package/{esm2020 → esm2022}/src/util/raf.mjs +0 -0
  331. /package/{esm2020 → esm2022}/src/util/security/trusted_type_defs.mjs +0 -0
  332. /package/{esm2020 → esm2022}/src/util/security/trusted_types.mjs +0 -0
  333. /package/{esm2020 → esm2022}/src/util/security/trusted_types_bypass.mjs +0 -0
  334. /package/{esm2020 → esm2022}/src/util/stringify.mjs +0 -0
  335. /package/{esm2020 → esm2022}/src/view/provider_flags.mjs +0 -0
  336. /package/{esm2020 → esm2022}/src/zone/async-stack-tagging.mjs +0 -0
  337. /package/{esm2020 → esm2022}/src/zone/ng_zone.mjs +0 -0
  338. /package/{esm2020 → esm2022}/src/zone.mjs +0 -0
  339. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  340. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  341. /package/{esm2020 → esm2022}/testing/src/async.mjs +0 -0
  342. /package/{esm2020 → esm2022}/testing/src/component_fixture.mjs +0 -0
  343. /package/{esm2020 → esm2022}/testing/src/fake_async.mjs +0 -0
  344. /package/{esm2020 → esm2022}/testing/src/metadata_override.mjs +0 -0
  345. /package/{esm2020 → esm2022}/testing/src/metadata_overrider.mjs +0 -0
  346. /package/{esm2020 → esm2022}/testing/src/resolvers.mjs +0 -0
  347. /package/{esm2020 → esm2022}/testing/src/styling.mjs +0 -0
  348. /package/{esm2020 → esm2022}/testing/src/test_bed_common.mjs +0 -0
  349. /package/{esm2020 → esm2022}/testing/src/test_bed_compiler.mjs +0 -0
  350. /package/{esm2020 → esm2022}/testing/src/test_hooks.mjs +0 -0
  351. /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
  352. /package/{esm2020 → esm2022}/testing/src/testing_internal.mjs +0 -0
  353. /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
@@ -1,219 +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 { getDocument } from '../render3/interfaces/document';
9
- import { isRootView } from '../render3/interfaces/type_checks';
10
- import { HEADER_OFFSET, TVIEW } from '../render3/interfaces/view';
11
- import { makeStateKey, TransferState } from '../transfer_state';
12
- import { assertDefined } from '../util/assert';
13
- import { CONTAINERS, DISCONNECTED_NODES, ELEMENT_CONTAINERS, MULTIPLIER, NUM_ROOT_NODES } from './interfaces';
14
- /**
15
- * The name of the key used in the TransferState collection,
16
- * where hydration information is located.
17
- */
18
- const TRANSFER_STATE_TOKEN_ID = '__ɵnghData__';
19
- /**
20
- * Lookup key used to reference DOM hydration data (ngh) in `TransferState`.
21
- */
22
- export const NGH_DATA_KEY = makeStateKey(TRANSFER_STATE_TOKEN_ID);
23
- /**
24
- * The name of the attribute that would be added to host component
25
- * nodes and contain a reference to a particular slot in transferred
26
- * state that contains the necessary hydration info for this component.
27
- */
28
- export const NGH_ATTR_NAME = 'ngh';
29
- /**
30
- * Reference to a function that reads `ngh` attribute value from a given RNode
31
- * and retrieves hydration information from the TransferState using that value
32
- * as an index. Returns `null` by default, when hydration is not enabled.
33
- *
34
- * @param rNode Component's host element.
35
- * @param injector Injector that this component has access to.
36
- */
37
- let _retrieveHydrationInfoImpl = (rNode, injector) => null;
38
- export function retrieveHydrationInfoImpl(rNode, injector) {
39
- const nghAttrValue = rNode.getAttribute(NGH_ATTR_NAME);
40
- if (nghAttrValue == null)
41
- return null;
42
- let data = {};
43
- // An element might have an empty `ngh` attribute value (e.g. `<comp ngh="" />`),
44
- // which means that no special annotations are required. Do not attempt to read
45
- // from the TransferState in this case.
46
- if (nghAttrValue !== '') {
47
- const transferState = injector.get(TransferState, null, { optional: true });
48
- if (transferState !== null) {
49
- const nghData = transferState.get(NGH_DATA_KEY, []);
50
- // The nghAttrValue is always a number referencing an index
51
- // in the hydration TransferState data.
52
- data = nghData[Number(nghAttrValue)];
53
- // If the `ngh` attribute exists and has a non-empty value,
54
- // the hydration info *must* be present in the TransferState.
55
- // If there is no data for some reasons, this is an error.
56
- ngDevMode && assertDefined(data, 'Unable to retrieve hydration info from the TransferState.');
57
- }
58
- }
59
- const dehydratedView = {
60
- data,
61
- firstChild: rNode.firstChild ?? null,
62
- };
63
- // The `ngh` attribute is cleared from the DOM node now
64
- // that the data has been retrieved.
65
- rNode.removeAttribute(NGH_ATTR_NAME);
66
- // Note: don't check whether this node was claimed for hydration,
67
- // because this node might've been previously claimed while processing
68
- // template instructions.
69
- ngDevMode && markRNodeAsClaimedByHydration(rNode, /* checkIfAlreadyClaimed */ false);
70
- ngDevMode && ngDevMode.hydratedComponents++;
71
- return dehydratedView;
72
- }
73
- /**
74
- * Sets the implementation for the `retrieveHydrationInfo` function.
75
- */
76
- export function enableRetrieveHydrationInfoImpl() {
77
- _retrieveHydrationInfoImpl = retrieveHydrationInfoImpl;
78
- }
79
- /**
80
- * Retrieves hydration info by reading the value from the `ngh` attribute
81
- * and accessing a corresponding slot in TransferState storage.
82
- */
83
- export function retrieveHydrationInfo(rNode, injector) {
84
- return _retrieveHydrationInfoImpl(rNode, injector);
85
- }
86
- /**
87
- * Retrieves an instance of a component LView from a given ViewRef.
88
- * Returns an instance of a component LView or `null` in case of an embedded view.
89
- */
90
- export function getComponentLViewForHydration(viewRef) {
91
- // Reading an internal field from `ViewRef` instance.
92
- let lView = viewRef._lView;
93
- const tView = lView[TVIEW];
94
- // A registered ViewRef might represent an instance of an
95
- // embedded view, in which case we do not need to annotate it.
96
- if (tView.type === 2 /* TViewType.Embedded */) {
97
- return null;
98
- }
99
- // Check if it's a root view and if so, retrieve component's
100
- // LView from the first slot after the header.
101
- if (isRootView(lView)) {
102
- lView = lView[HEADER_OFFSET];
103
- }
104
- return lView;
105
- }
106
- function getTextNodeContent(node) {
107
- return node.textContent?.replace(/\s/gm, '');
108
- }
109
- /**
110
- * Restores text nodes and separators into the DOM that were lost during SSR
111
- * serialization. The hydration process replaces empty text nodes and text
112
- * nodes that are immediately adjacent to other text nodes with comment nodes
113
- * that this method filters on to restore those missing nodes that the
114
- * hydration process is expecting to be present.
115
- *
116
- * @param node The app's root HTML Element
117
- */
118
- export function processTextNodeMarkersBeforeHydration(node) {
119
- const doc = getDocument();
120
- const commentNodesIterator = doc.createNodeIterator(node, NodeFilter.SHOW_COMMENT, {
121
- acceptNode(node) {
122
- const content = getTextNodeContent(node);
123
- const isTextNodeMarker = content === "ngetn" /* TextNodeMarker.EmptyNode */ || content === "ngtns" /* TextNodeMarker.Separator */;
124
- return isTextNodeMarker ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
125
- }
126
- });
127
- let currentNode;
128
- // We cannot modify the DOM while using the commentIterator,
129
- // because it throws off the iterator state.
130
- // So we collect all marker nodes first and then follow up with
131
- // applying the changes to the DOM: either inserting an empty node
132
- // or just removing the marker if it was used as a separator.
133
- const nodes = [];
134
- while (currentNode = commentNodesIterator.nextNode()) {
135
- nodes.push(currentNode);
136
- }
137
- for (const node of nodes) {
138
- if (node.textContent === "ngetn" /* TextNodeMarker.EmptyNode */) {
139
- node.replaceWith(doc.createTextNode(''));
140
- }
141
- else {
142
- node.remove();
143
- }
144
- }
145
- }
146
- /**
147
- * Marks a node as "claimed" by hydration process.
148
- * This is needed to make assessments in tests whether
149
- * the hydration process handled all nodes.
150
- */
151
- export function markRNodeAsClaimedByHydration(node, checkIfAlreadyClaimed = true) {
152
- if (!ngDevMode) {
153
- throw new Error('Calling `markRNodeAsClaimedByHydration` in prod mode ' +
154
- 'is not supported and likely a mistake.');
155
- }
156
- if (checkIfAlreadyClaimed && isRNodeClaimedForHydration(node)) {
157
- throw new Error('Trying to claim a node, which was claimed already.');
158
- }
159
- node.__claimed = true;
160
- ngDevMode.hydratedNodes++;
161
- }
162
- export function isRNodeClaimedForHydration(node) {
163
- return !!node.__claimed;
164
- }
165
- export function setSegmentHead(hydrationInfo, index, node) {
166
- hydrationInfo.segmentHeads ?? (hydrationInfo.segmentHeads = {});
167
- hydrationInfo.segmentHeads[index] = node;
168
- }
169
- export function getSegmentHead(hydrationInfo, index) {
170
- return hydrationInfo.segmentHeads?.[index] ?? null;
171
- }
172
- /**
173
- * Returns the size of an <ng-container>, using either the information
174
- * serialized in `ELEMENT_CONTAINERS` (element container size) or by
175
- * computing the sum of root nodes in all dehydrated views in a given
176
- * container (in case this `<ng-container>` was also used as a view
177
- * container host node, e.g. <ng-container *ngIf>).
178
- */
179
- export function getNgContainerSize(hydrationInfo, index) {
180
- const data = hydrationInfo.data;
181
- let size = data[ELEMENT_CONTAINERS]?.[index] ?? null;
182
- // If there is no serialized information available in the `ELEMENT_CONTAINERS` slot,
183
- // check if we have info about view containers at this location (e.g.
184
- // `<ng-container *ngIf>`) and use container size as a number of root nodes in this
185
- // element container.
186
- if (size === null && data[CONTAINERS]?.[index]) {
187
- size = calcSerializedContainerSize(hydrationInfo, index);
188
- }
189
- return size;
190
- }
191
- export function getSerializedContainerViews(hydrationInfo, index) {
192
- return hydrationInfo.data[CONTAINERS]?.[index] ?? null;
193
- }
194
- /**
195
- * Computes the size of a serialized container (the number of root nodes)
196
- * by calculating the sum of root nodes in all dehydrated views in this container.
197
- */
198
- export function calcSerializedContainerSize(hydrationInfo, index) {
199
- const views = getSerializedContainerViews(hydrationInfo, index) ?? [];
200
- let numNodes = 0;
201
- for (let view of views) {
202
- numNodes += view[NUM_ROOT_NODES] * (view[MULTIPLIER] ?? 1);
203
- }
204
- return numNodes;
205
- }
206
- /**
207
- * Checks whether a node is annotated as "disconnected", i.e. not present
208
- * in the DOM at serialization time. We should not attempt hydration for
209
- * such nodes and instead, use a regular "creation mode".
210
- */
211
- export function isDisconnectedNode(hydrationInfo, index) {
212
- // Check if we are processing disconnected info for the first time.
213
- if (typeof hydrationInfo.disconnectedNodes === 'undefined') {
214
- const nodeIds = hydrationInfo.data[DISCONNECTED_NODES];
215
- hydrationInfo.disconnectedNodes = nodeIds ? (new Set(nodeIds)) : null;
216
- }
217
- return !!hydrationInfo.disconnectedNodes?.has(index);
218
- }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9oeWRyYXRpb24vdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7Ozs7OztHQU1HO0FBSUgsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsYUFBYSxFQUFTLEtBQUssRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxVQUFVLEVBQWtCLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQTBDLE1BQU0sY0FBYyxDQUFDO0FBRXJLOzs7R0FHRztBQUNILE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBd0IsdUJBQXVCLENBQUMsQ0FBQztBQUV6Rjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQXVCbkM7Ozs7Ozs7R0FPRztBQUNILElBQUksMEJBQTBCLEdBQzFCLENBQUMsS0FBZSxFQUFFLFFBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztBQUVsRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsS0FBZSxFQUFFLFFBQWtCO0lBRTNFLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsSUFBSSxZQUFZLElBQUksSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXRDLElBQUksSUFBSSxHQUFt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QUFFLENBQUM7SUFDdEUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3RCLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDNUQ7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxhQUE2QixFQUFFLEtBQWE7SUFDN0UsbUVBQW1FO0lBQ25FLElBQUksT0FBTyxhQUFhLENBQUMsaUJBQWlCLEtBQUssV0FBVyxFQUFFO1FBQzFELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxhQUFhLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztLQUN2RTtJQUNELE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJy4uL2RpL2luamVjdG9yJztcbmltcG9ydCB7Vmlld1JlZn0gZnJvbSAnLi4vbGlua2VyL3ZpZXdfcmVmJztcbmltcG9ydCB7Z2V0RG9jdW1lbnR9IGZyb20gJy4uL3JlbmRlcjMvaW50ZXJmYWNlcy9kb2N1bWVudCc7XG5pbXBvcnQge1JFbGVtZW50LCBSTm9kZX0gZnJvbSAnLi4vcmVuZGVyMy9pbnRlcmZhY2VzL3JlbmRlcmVyX2RvbSc7XG5pbXBvcnQge2lzUm9vdFZpZXd9IGZyb20gJy4uL3JlbmRlcjMvaW50ZXJmYWNlcy90eXBlX2NoZWNrcyc7XG5pbXBvcnQge0hFQURFUl9PRkZTRVQsIExWaWV3LCBUVklFVywgVFZpZXdUeXBlfSBmcm9tICcuLi9yZW5kZXIzL2ludGVyZmFjZXMvdmlldyc7XG5pbXBvcnQge21ha2VTdGF0ZUtleSwgVHJhbnNmZXJTdGF0ZX0gZnJvbSAnLi4vdHJhbnNmZXJfc3RhdGUnO1xuaW1wb3J0IHthc3NlcnREZWZpbmVkfSBmcm9tICcuLi91dGlsL2Fzc2VydCc7XG5cbmltcG9ydCB7Q09OVEFJTkVSUywgRGVoeWRyYXRlZFZpZXcsIERJU0NPTk5FQ1RFRF9OT0RFUywgRUxFTUVOVF9DT05UQUlORVJTLCBNVUxUSVBMSUVSLCBOVU1fUk9PVF9OT0RFUywgU2VyaWFsaXplZENvbnRhaW5lclZpZXcsIFNlcmlhbGl6ZWRWaWV3fSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBrZXkgdXNlZCBpbiB0aGUgVHJhbnNmZXJTdGF0ZSBjb2xsZWN0aW9uLFxuICogd2hlcmUgaHlkcmF0aW9uIGluZm9ybWF0aW9uIGlzIGxvY2F0ZWQuXG4gKi9cbmNvbnN0IFRSQU5TRkVSX1NUQVRFX1RPS0VOX0lEID0gJ19fybVuZ2hEYXRhX18nO1xuXG4vKipcbiAqIExvb2t1cCBrZXkgdXNlZCB0byByZWZlcmVuY2UgRE9NIGh5ZHJhdGlvbiBkYXRhIChuZ2gpIGluIGBUcmFuc2ZlclN0YXRlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE5HSF9EQVRBX0tFWSA9IG1ha2VTdGF0ZUtleTxBcnJheTxTZXJpYWxpemVkVmlldz4+KFRSQU5TRkVSX1NUQVRFX1RPS0VOX0lEKTtcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRoYXQgd291bGQgYmUgYWRkZWQgdG8gaG9zdCBjb21wb25lbnRcbiAqIG5vZGVzIGFuZCBjb250YWluIGEgcmVmZXJlbmNlIHRvIGEgcGFydGljdWxhciBzbG90IGluIHRyYW5zZmVycmVkXG4gKiBzdGF0ZSB0aGF0IGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaHlkcmF0aW9uIGluZm8gZm9yIHRoaXMgY29tcG9uZW50LlxuICovXG5leHBvcnQgY29uc3QgTkdIX0FUVFJfTkFNRSA9ICduZ2gnO1xuXG5leHBvcnQgY29uc3QgZW51bSBUZXh0Tm9kZU1hcmtlciB7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50cyBvZiB0aGUgdGV4dCBjb21tZW50IGFkZGVkIHRvIG5vZGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlXG4gICAqIGVtcHR5IHdoZW4gc2VyaWFsaXplZCBieSB0aGUgc2VydmVyIGFuZCBwYXNzZWQgdG8gdGhlIGNsaWVudC4gVGhlIGVtcHR5XG4gICAqIG5vZGUgaXMgbG9zdCB3aGVuIHRoZSBicm93c2VyIHBhcnNlcyBpdCBvdGhlcndpc2UuIFRoaXMgY29tbWVudCBub2RlIHdpbGxcbiAgICogYmUgcmVwbGFjZWQgZHVyaW5nIGh5ZHJhdGlvbiBpbiB0aGUgY2xpZW50IHRvIHJlc3RvcmUgdGhlIGxvc3QgZW1wdHkgdGV4dFxuICAgKiBub2RlLlxuICAgKi9cbiAgRW1wdHlOb2RlID0gJ25nZXRuJyxcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIHRoZSB0ZXh0IGNvbW1lbnQgYWRkZWQgaW4gdGhlIGNhc2Ugb2YgYWRqYWNlbnQgdGV4dCBub2Rlcy5cbiAgICogV2hlbiBhZGphY2VudCB0ZXh0IG5vZGVzIGFyZSBzZXJpYWxpemVkIGJ5IHRoZSBzZXJ2ZXIgYW5kIHNlbnQgdG8gdGhlXG4gICAqIGNsaWVudCwgdGhlIGJyb3dzZXIgbG9zZXMgcmVmZXJlbmNlIHRvIHRoZSBhbW91bnQgb2Ygbm9kZXMgYW5kIGFzc3VtZXNcbiAgICoganVzdCBvbmUgdGV4dCBub2RlLiBUaGlzIHNlcGFyYXRvciBpcyByZXBsYWNlZCBkdXJpbmcgaHlkcmF0aW9uIHRvIHJlc3RvcmVcbiAgICogdGhlIHByb3BlciBzZXBhcmF0aW9uIGFuZCBhbW91bnQgb2YgdGV4dCBub2RlcyB0aGF0IHNob3VsZCBiZSBwcmVzZW50LlxuICAgKi9cbiAgU2VwYXJhdG9yID0gJ25ndG5zJyxcbn1cblxuLyoqXG4gKiBSZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiB0aGF0IHJlYWRzIGBuZ2hgIGF0dHJpYnV0ZSB2YWx1ZSBmcm9tIGEgZ2l2ZW4gUk5vZGVcbiAqIGFuZCByZXRyaWV2ZXMgaHlkcmF0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFRyYW5zZmVyU3RhdGUgdXNpbmcgdGhhdCB2YWx1ZVxuICogYXMgYW4gaW5kZXguIFJldHVybnMgYG51bGxgIGJ5IGRlZmF1bHQsIHdoZW4gaHlkcmF0aW9uIGlzIG5vdCBlbmFibGVkLlxuICpcbiAqIEBwYXJhbSByTm9kZSBDb21wb25lbnQncyBob3N0IGVsZW1lbnQuXG4gKiBAcGFyYW0gaW5qZWN0b3IgSW5qZWN0b3IgdGhhdCB0aGlzIGNvbXBvbmVudCBoYXMgYWNjZXNzIHRvLlxuICovXG5sZXQgX3JldHJpZXZlSHlkcmF0aW9uSW5mb0ltcGw6IHR5cGVvZiByZXRyaWV2ZUh5ZHJhdGlvbkluZm9JbXBsID1cbiAgICAock5vZGU6IFJFbGVtZW50LCBpbmplY3RvcjogSW5qZWN0b3IpID0+IG51bGw7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXRyaWV2ZUh5ZHJhdGlvbkluZm9JbXBsKHJOb2RlOiBSRWxlbWVudCwgaW5qZWN0b3I6IEluamVjdG9yKTogRGVoeWRyYXRlZFZpZXd8XG4gICAgbnVsbCB7XG4gIGNvbnN0IG5naEF0dHJWYWx1ZSA9IHJOb2RlLmdldEF0dHJpYnV0ZShOR0hfQVRUUl9OQU1FKTtcbiAgaWYgKG5naEF0dHJWYWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICBsZXQgZGF0YTogU2VyaWFsaXplZFZpZXcgPSB7fTtcbiAgLy8gQW4gZWxlbWVudCBtaWdodCBoYXZlIGFuIGVtcHR5IGBuZ2hgIGF0dHJpYnV0ZSB2YWx1ZSAoZS5nLiBgPGNvbXAgbmdoPVwiXCIgLz5gKSxcbiAgLy8gd2hpY2ggbWVhbnMgdGhhdCBubyBzcGVjaWFsIGFubm90YXRpb25zIGFyZSByZXF1aXJlZC4gRG8gbm90IGF0dGVtcHQgdG8gcmVhZFxuICAvLyBmcm9tIHRoZSBUcmFuc2ZlclN0YXRlIGluIHRoaXMgY2FzZS5cbiAgaWYgKG5naEF0dHJWYWx1ZSAhPT0gJycpIHtcbiAgICBjb25zdCB0cmFuc2ZlclN0YXRlID0gaW5qZWN0b3IuZ2V0KFRyYW5zZmVyU3RhdGUsIG51bGwsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIGlmICh0cmFuc2ZlclN0YXRlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBuZ2hEYXRhID0gdHJhbnNmZXJTdGF0ZS5nZXQoTkdIX0RBVEFfS0VZLCBbXSk7XG5cbiAgICAgIC8vIFRoZSBuZ2hBdHRyVmFsdWUgaXMgYWx3YXlzIGEgbnVtYmVyIHJlZmVyZW5jaW5nIGFuIGluZGV4XG4gICAgICAvLyBpbiB0aGUgaHlkcmF0aW9uIFRyYW5zZmVyU3RhdGUgZGF0YS5cbiAgICAgIGRhdGEgPSBuZ2hEYXRhW051bWJlcihuZ2hBdHRyVmFsdWUpXTtcblxuICAgICAgLy8gSWYgdGhlIGBuZ2hgIGF0dHJpYnV0ZSBleGlzdHMgYW5kIGhhcyBhIG5vbi1lbXB0eSB2YWx1ZSxcbiAgICAgIC8vIHRoZSBoeWRyYXRpb24gaW5mbyAqbXVzdCogYmUgcHJlc2VudCBpbiB0aGUgVHJhbnNmZXJTdGF0ZS5cbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGRhdGEgZm9yIHNvbWUgcmVhc29ucywgdGhpcyBpcyBhbiBlcnJvci5cbiAgICAgIG5nRGV2TW9kZSAmJiBhc3NlcnREZWZpbmVkKGRhdGEsICdVbmFibGUgdG8gcmV0cmlldmUgaHlkcmF0aW9uIGluZm8gZnJvbSB0aGUgVHJhbnNmZXJTdGF0ZS4nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZGVoeWRyYXRlZFZpZXc6IERlaHlkcmF0ZWRWaWV3ID0ge1xuICAgIGRhdGEsXG4gICAgZmlyc3RDaGlsZDogck5vZGUuZmlyc3RDaGlsZCA/PyBudWxsLFxuICB9O1xuICAvLyBUaGUgYG5naGAgYXR0cmlidXRlIGlzIGNsZWFyZWQgZnJvbSB0aGUgRE9NIG5vZGUgbm93XG4gIC8vIHRoYXQgdGhlIGRhdGEgaGFzIGJlZW4gcmV0cmlldmVkLlxuICByTm9kZS5yZW1vdmVBdHRyaWJ1dGUoTkdIX0FUVFJfTkFNRSk7XG5cbiAgLy8gTm90ZTogZG9uJ3QgY2hlY2sgd2hldGhlciB0aGlzIG5vZGUgd2FzIGNsYWltZWQgZm9yIGh5ZHJhdGlvbixcbiAgLy8gYmVjYXVzZSB0aGlzIG5vZGUgbWlnaHQndmUgYmVlbiBwcmV2aW91c2x5IGNsYWltZWQgd2hpbGUgcHJvY2Vzc2luZ1xuICAvLyB0ZW1wbGF0ZSBpbnN0cnVjdGlvbnMuXG4gIG5nRGV2TW9kZSAmJiBtYXJrUk5vZGVBc0NsYWltZWRCeUh5ZHJhdGlvbihyTm9kZSwgLyogY2hlY2tJZkFscmVhZHlDbGFpbWVkICovIGZhbHNlKTtcbiAgbmdEZXZNb2RlICYmIG5nRGV2TW9kZS5oeWRyYXRlZENvbXBvbmVudHMrKztcblxuICByZXR1cm4gZGVoeWRyYXRlZFZpZXc7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBgcmV0cmlldmVIeWRyYXRpb25JbmZvYCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZVJldHJpZXZlSHlkcmF0aW9uSW5mb0ltcGwoKSB7XG4gIF9yZXRyaWV2ZUh5ZHJhdGlvbkluZm9JbXBsID0gcmV0cmlldmVIeWRyYXRpb25JbmZvSW1wbDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgaHlkcmF0aW9uIGluZm8gYnkgcmVhZGluZyB0aGUgdmFsdWUgZnJvbSB0aGUgYG5naGAgYXR0cmlidXRlXG4gKiBhbmQgYWNjZXNzaW5nIGEgY29ycmVzcG9uZGluZyBzbG90IGluIFRyYW5zZmVyU3RhdGUgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlSHlkcmF0aW9uSW5mbyhyTm9kZTogUkVsZW1lbnQsIGluamVjdG9yOiBJbmplY3Rvcik6IERlaHlkcmF0ZWRWaWV3fG51bGwge1xuICByZXR1cm4gX3JldHJpZXZlSHlkcmF0aW9uSW5mb0ltcGwock5vZGUsIGluamVjdG9yKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2Ugb2YgYSBjb21wb25lbnQgTFZpZXcgZnJvbSBhIGdpdmVuIFZpZXdSZWYuXG4gKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgY29tcG9uZW50IExWaWV3IG9yIGBudWxsYCBpbiBjYXNlIG9mIGFuIGVtYmVkZGVkIHZpZXcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wb25lbnRMVmlld0Zvckh5ZHJhdGlvbih2aWV3UmVmOiBWaWV3UmVmKTogTFZpZXd8bnVsbCB7XG4gIC8vIFJlYWRpbmcgYW4gaW50ZXJuYWwgZmllbGQgZnJvbSBgVmlld1JlZmAgaW5zdGFuY2UuXG4gIGxldCBsVmlldyA9ICh2aWV3UmVmIGFzIGFueSkuX2xWaWV3IGFzIExWaWV3O1xuICBjb25zdCB0VmlldyA9IGxWaWV3W1RWSUVXXTtcbiAgLy8gQSByZWdpc3RlcmVkIFZpZXdSZWYgbWlnaHQgcmVwcmVzZW50IGFuIGluc3RhbmNlIG9mIGFuXG4gIC8vIGVtYmVkZGVkIHZpZXcsIGluIHdoaWNoIGNhc2Ugd2UgZG8gbm90IG5lZWQgdG8gYW5ub3RhdGUgaXQuXG4gIGlmICh0Vmlldy50eXBlID09PSBUVmlld1R5cGUuRW1iZWRkZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBDaGVjayBpZiBpdCdzIGEgcm9vdCB2aWV3IGFuZCBpZiBzbywgcmV0cmlldmUgY29tcG9uZW50J3NcbiAgLy8gTFZpZXcgZnJvbSB0aGUgZmlyc3Qgc2xvdCBhZnRlciB0aGUgaGVhZGVyLlxuICBpZiAoaXNSb290VmlldyhsVmlldykpIHtcbiAgICBsVmlldyA9IGxWaWV3W0hFQURFUl9PRkZTRVRdO1xuICB9XG4gIHJldHVybiBsVmlldztcbn1cblxuZnVuY3Rpb24gZ2V0VGV4dE5vZGVDb250ZW50KG5vZGU6IE5vZGUpOiBzdHJpbmd8dW5kZWZpbmVkIHtcbiAgcmV0dXJuIG5vZGUudGV4dENvbnRlbnQ/LnJlcGxhY2UoL1xccy9nbSwgJycpO1xufVxuXG4vKipcbiAqIFJlc3RvcmVzIHRleHQgbm9kZXMgYW5kIHNlcGFyYXRvcnMgaW50byB0aGUgRE9NIHRoYXQgd2VyZSBsb3N0IGR1cmluZyBTU1JcbiAqIHNlcmlhbGl6YXRpb24uIFRoZSBoeWRyYXRpb24gcHJvY2VzcyByZXBsYWNlcyBlbXB0eSB0ZXh0IG5vZGVzIGFuZCB0ZXh0XG4gKiBub2RlcyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZGphY2VudCB0byBvdGhlciB0ZXh0IG5vZGVzIHdpdGggY29tbWVudCBub2Rlc1xuICogdGhhdCB0aGlzIG1ldGhvZCBmaWx0ZXJzIG9uIHRvIHJlc3RvcmUgdGhvc2UgbWlzc2luZyBub2RlcyB0aGF0IHRoZVxuICogaHlkcmF0aW9uIHByb2Nlc3MgaXMgZXhwZWN0aW5nIHRvIGJlIHByZXNlbnQuXG4gKlxuICogQHBhcmFtIG5vZGUgVGhlIGFwcCdzIHJvb3QgSFRNTCBFbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzVGV4dE5vZGVNYXJrZXJzQmVmb3JlSHlkcmF0aW9uKG5vZGU6IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IGRvYyA9IGdldERvY3VtZW50KCk7XG4gIGNvbnN0IGNvbW1lbnROb2Rlc0l0ZXJhdG9yID0gZG9jLmNyZWF0ZU5vZGVJdGVyYXRvcihub2RlLCBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwge1xuICAgIGFjY2VwdE5vZGUobm9kZSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGdldFRleHROb2RlQ29udGVudChub2RlKTtcbiAgICAgIGNvbnN0IGlzVGV4dE5vZGVNYXJrZXIgPVxuICAgICAgICAgIGNvbnRlbnQgPT09IFRleHROb2RlTWFya2VyLkVtcHR5Tm9kZSB8fCBjb250ZW50ID09PSBUZXh0Tm9kZU1hcmtlci5TZXBhcmF0b3I7XG4gICAgICByZXR1cm4gaXNUZXh0Tm9kZU1hcmtlciA/IE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCA6IE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICB9XG4gIH0pO1xuICBsZXQgY3VycmVudE5vZGU6IENvbW1lbnQ7XG4gIC8vIFdlIGNhbm5vdCBtb2RpZnkgdGhlIERPTSB3aGlsZSB1c2luZyB0aGUgY29tbWVudEl0ZXJhdG9yLFxuICAvLyBiZWNhdXNlIGl0IHRocm93cyBvZmYgdGhlIGl0ZXJhdG9yIHN0YXRlLlxuICAvLyBTbyB3ZSBjb2xsZWN0IGFsbCBtYXJrZXIgbm9kZXMgZmlyc3QgYW5kIHRoZW4gZm9sbG93IHVwIHdpdGhcbiAgLy8gYXBwbHlpbmcgdGhlIGNoYW5nZXMgdG8gdGhlIERPTTogZWl0aGVyIGluc2VydGluZyBhbiBlbXB0eSBub2RlXG4gIC8vIG9yIGp1c3QgcmVtb3ZpbmcgdGhlIG1hcmtlciBpZiBpdCB3YXMgdXNlZCBhcyBhIHNlcGFyYXRvci5cbiAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgd2hpbGUgKGN1cnJlbnROb2RlID0gY29tbWVudE5vZGVzSXRlcmF0b3IubmV4dE5vZGUoKSBhcyBDb21tZW50KSB7XG4gICAgbm9kZXMucHVzaChjdXJyZW50Tm9kZSk7XG4gIH1cbiAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgaWYgKG5vZGUudGV4dENvbnRlbnQgPT09IFRleHROb2RlTWFya2VyLkVtcHR5Tm9kZSkge1xuICAgICAgbm9kZS5yZXBsYWNlV2l0aChkb2MuY3JlYXRlVGV4dE5vZGUoJycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5yZW1vdmUoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcm5hbCB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGNsYWltZWQgbm9kZS5cbiAqIE9ubHkgdXNlZCBpbiBkZXYgbW9kZS5cbiAqL1xudHlwZSBDbGFpbWVkTm9kZSA9IHtcbiAgX19jbGFpbWVkPzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogTWFya3MgYSBub2RlIGFzIFwiY2xhaW1lZFwiIGJ5IGh5ZHJhdGlvbiBwcm9jZXNzLlxuICogVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSBhc3Nlc3NtZW50cyBpbiB0ZXN0cyB3aGV0aGVyXG4gKiB0aGUgaHlkcmF0aW9uIHByb2Nlc3MgaGFuZGxlZCBhbGwgbm9kZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrUk5vZGVBc0NsYWltZWRCeUh5ZHJhdGlvbihub2RlOiBSTm9kZSwgY2hlY2tJZkFscmVhZHlDbGFpbWVkID0gdHJ1ZSkge1xuICBpZiAoIW5nRGV2TW9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NhbGxpbmcgYG1hcmtSTm9kZUFzQ2xhaW1lZEJ5SHlkcmF0aW9uYCBpbiBwcm9kIG1vZGUgJyArXG4gICAgICAgICdpcyBub3Qgc3VwcG9ydGVkIGFuZCBsaWtlbHkgYSBtaXN0YWtlLicpO1xuICB9XG4gIGlmIChjaGVja0lmQWxyZWFkeUNsYWltZWQgJiYgaXNSTm9kZUNsYWltZWRGb3JIeWRyYXRpb24obm9kZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBjbGFpbSBhIG5vZGUsIHdoaWNoIHdhcyBjbGFpbWVkIGFscmVhZHkuJyk7XG4gIH1cbiAgKG5vZGUgYXMgQ2xhaW1lZE5vZGUpLl9fY2xhaW1lZCA9IHRydWU7XG4gIG5nRGV2TW9kZS5oeWRyYXRlZE5vZGVzKys7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JOb2RlQ2xhaW1lZEZvckh5ZHJhdGlvbihub2RlOiBSTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gISEobm9kZSBhcyBDbGFpbWVkTm9kZSkuX19jbGFpbWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0U2VnbWVudEhlYWQoXG4gICAgaHlkcmF0aW9uSW5mbzogRGVoeWRyYXRlZFZpZXcsIGluZGV4OiBudW1iZXIsIG5vZGU6IFJOb2RlfG51bGwpOiB2b2lkIHtcbiAgaHlkcmF0aW9uSW5mby5zZWdtZW50SGVhZHMgPz89IHt9O1xuICBoeWRyYXRpb25JbmZvLnNlZ21lbnRIZWFkc1tpbmRleF0gPSBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VnbWVudEhlYWQoaHlkcmF0aW9uSW5mbzogRGVoeWRyYXRlZFZpZXcsIGluZGV4OiBudW1iZXIpOiBSTm9kZXxudWxsIHtcbiAgcmV0dXJuIGh5ZHJhdGlvbkluZm8uc2VnbWVudEhlYWRzPy5baW5kZXhdID8/IG51bGw7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgc2l6ZSBvZiBhbiA8bmctY29udGFpbmVyPiwgdXNpbmcgZWl0aGVyIHRoZSBpbmZvcm1hdGlvblxuICogc2VyaWFsaXplZCBpbiBgRUxFTUVOVF9DT05UQUlORVJTYCAoZWxlbWVudCBjb250YWluZXIgc2l6ZSkgb3IgYnlcbiAqIGNvbXB1dGluZyB0aGUgc3VtIG9mIHJvb3Qgbm9kZXMgaW4gYWxsIGRlaHlkcmF0ZWQgdmlld3MgaW4gYSBnaXZlblxuICogY29udGFpbmVyIChpbiBjYXNlIHRoaXMgYDxuZy1jb250YWluZXI+YCB3YXMgYWxzbyB1c2VkIGFzIGEgdmlld1xuICogY29udGFpbmVyIGhvc3Qgbm9kZSwgZS5nLiA8bmctY29udGFpbmVyICpuZ0lmPikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZ0NvbnRhaW5lclNpemUoaHlkcmF0aW9uSW5mbzogRGVoeWRyYXRlZFZpZXcsIGluZGV4OiBudW1iZXIpOiBudW1iZXJ8bnVsbCB7XG4gIGNvbnN0IGRhdGEgPSBoeWRyYXRpb25JbmZvLmRhdGE7XG4gIGxldCBzaXplID0gZGF0YVtFTEVNRU5UX0NPTlRBSU5FUlNdPy5baW5kZXhdID8/IG51bGw7XG4gIC8vIElmIHRoZXJlIGlzIG5vIHNlcmlhbGl6ZWQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGluIHRoZSBgRUxFTUVOVF9DT05UQUlORVJTYCBzbG90LFxuICAvLyBjaGVjayBpZiB3ZSBoYXZlIGluZm8gYWJvdXQgdmlldyBjb250YWluZXJzIGF0IHRoaXMgbG9jYXRpb24gKGUuZy5cbiAgLy8gYDxuZy1jb250YWluZXIgKm5nSWY+YCkgYW5kIHVzZSBjb250YWluZXIgc2l6ZSBhcyBhIG51bWJlciBvZiByb290IG5vZGVzIGluIHRoaXNcbiAgLy8gZWxlbWVudCBjb250YWluZXIuXG4gIGlmIChzaXplID09PSBudWxsICYmIGRhdGFbQ09OVEFJTkVSU10/LltpbmRleF0pIHtcbiAgICBzaXplID0gY2FsY1NlcmlhbGl6ZWRDb250YWluZXJTaXplKGh5ZHJhdGlvbkluZm8sIGluZGV4KTtcbiAgfVxuICByZXR1cm4gc2l6ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcmlhbGl6ZWRDb250YWluZXJWaWV3cyhcbiAgICBoeWRyYXRpb25JbmZvOiBEZWh5ZHJhdGVkVmlldywgaW5kZXg6IG51bWJlcik6IFNlcmlhbGl6ZWRDb250YWluZXJWaWV3W118bnVsbCB7XG4gIHJldHVybiBoeWRyYXRpb25JbmZvLmRhdGFbQ09OVEFJTkVSU10/LltpbmRleF0gPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIHNlcmlhbGl6ZWQgY29udGFpbmVyICh0aGUgbnVtYmVyIG9mIHJvb3Qgbm9kZXMpXG4gKiBieSBjYWxjdWxhdGluZyB0aGUgc3VtIG9mIHJvb3Qgbm9kZXMgaW4gYWxsIGRlaHlkcmF0ZWQgdmlld3MgaW4gdGhpcyBjb250YWluZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjU2VyaWFsaXplZENvbnRhaW5lclNpemUoaHlkcmF0aW9uSW5mbzogRGVoeWRyYXRlZFZpZXcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCB2aWV3cyA9IGdldFNlcmlhbGl6ZWRDb250YWluZXJWaWV3cyhoeWRyYXRpb25JbmZvLCBpbmRleCkgPz8gW107XG4gIGxldCBudW1Ob2RlcyA9IDA7XG4gIGZvciAobGV0IHZpZXcgb2Ygdmlld3MpIHtcbiAgICBudW1Ob2RlcyArPSB2aWV3W05VTV9ST09UX05PREVTXSAqICh2aWV3W01VTFRJUExJRVJdID8/IDEpO1xuICB9XG4gIHJldHVybiBudW1Ob2Rlcztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgYW5ub3RhdGVkIGFzIFwiZGlzY29ubmVjdGVkXCIsIGkuZS4gbm90IHByZXNlbnRcbiAqIGluIHRoZSBET00gYXQgc2VyaWFsaXphdGlvbiB0aW1lLiBXZSBzaG91bGQgbm90IGF0dGVtcHQgaHlkcmF0aW9uIGZvclxuICogc3VjaCBub2RlcyBhbmQgaW5zdGVhZCwgdXNlIGEgcmVndWxhciBcImNyZWF0aW9uIG1vZGVcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGlzY29ubmVjdGVkTm9kZShoeWRyYXRpb25JbmZvOiBEZWh5ZHJhdGVkVmlldywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAvLyBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBkaXNjb25uZWN0ZWQgaW5mbyBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gIGlmICh0eXBlb2YgaHlkcmF0aW9uSW5mby5kaXNjb25uZWN0ZWROb2RlcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBub2RlSWRzID0gaHlkcmF0aW9uSW5mby5kYXRhW0RJU0NPTk5FQ1RFRF9OT0RFU107XG4gICAgaHlkcmF0aW9uSW5mby5kaXNjb25uZWN0ZWROb2RlcyA9IG5vZGVJZHMgPyAobmV3IFNldChub2RlSWRzKSkgOiBudWxsO1xuICB9XG4gIHJldHVybiAhIWh5ZHJhdGlvbkluZm8uZGlzY29ubmVjdGVkTm9kZXM/LmhhcyhpbmRleCk7XG59XG4iXX0=
@@ -1,42 +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 { stringify } from '../util/stringify';
9
- export function noComponentFactoryError(component) {
10
- const error = Error(`No component factory found for ${stringify(component)}. Did you add it to @NgModule.entryComponents?`);
11
- error[ERROR_COMPONENT] = component;
12
- return error;
13
- }
14
- const ERROR_COMPONENT = 'ngComponent';
15
- export function getComponent(error) {
16
- return error[ERROR_COMPONENT];
17
- }
18
- class _NullComponentFactoryResolver {
19
- resolveComponentFactory(component) {
20
- throw noComponentFactoryError(component);
21
- }
22
- }
23
- /**
24
- * A simple registry that maps `Components` to generated `ComponentFactory` classes
25
- * that can be used to create instances of components.
26
- * Use to obtain the factory for a given component type,
27
- * then use the factory's `create()` method to create a component of that type.
28
- *
29
- * Note: since v13, dynamic component creation via
30
- * [`ViewContainerRef.createComponent`](api/core/ViewContainerRef#createComponent)
31
- * does **not** require resolving component factory: component class can be used directly.
32
- *
33
- * @publicApi
34
- *
35
- * @deprecated Angular no longer requires Component factories. Please use other APIs where
36
- * Component class can be used directly.
37
- */
38
- class ComponentFactoryResolver {
39
- }
40
- ComponentFactoryResolver.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver());
41
- export { ComponentFactoryResolver };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50X2ZhY3RvcnlfcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saW5rZXIvY29tcG9uZW50X2ZhY3RvcnlfcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSTVDLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxTQUFtQjtJQUN6RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsa0NBQ2hCLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUN6RSxLQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzVDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQUV0QyxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQVk7SUFDdkMsT0FBUSxLQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUdELE1BQU0sNkJBQTZCO0lBQ2pDLHVCQUF1QixDQUFJLFNBQW1DO1FBQzVELE1BQU0sdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFzQix3QkFBd0I7O0FBQ3JDLDZCQUFJLEdBQTZCLEVBQUMsZUFBZ0IsSUFBSSw2QkFBNkIsRUFBRSxDQUFDLENBQUM7U0FEMUUsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7VHlwZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3R5cGUnO1xuaW1wb3J0IHtzdHJpbmdpZnl9IGZyb20gJy4uL3V0aWwvc3RyaW5naWZ5JztcblxuaW1wb3J0IHtDb21wb25lbnRGYWN0b3J5fSBmcm9tICcuL2NvbXBvbmVudF9mYWN0b3J5JztcblxuZXhwb3J0IGZ1bmN0aW9uIG5vQ29tcG9uZW50RmFjdG9yeUVycm9yKGNvbXBvbmVudDogRnVuY3Rpb24pIHtcbiAgY29uc3QgZXJyb3IgPSBFcnJvcihgTm8gY29tcG9uZW50IGZhY3RvcnkgZm91bmQgZm9yICR7XG4gICAgICBzdHJpbmdpZnkoY29tcG9uZW50KX0uIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVudHM/YCk7XG4gIChlcnJvciBhcyBhbnkpW0VSUk9SX0NPTVBPTkVOVF0gPSBjb21wb25lbnQ7XG4gIHJldHVybiBlcnJvcjtcbn1cblxuY29uc3QgRVJST1JfQ09NUE9ORU5UID0gJ25nQ29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudChlcnJvcjogRXJyb3IpOiBUeXBlPGFueT4ge1xuICByZXR1cm4gKGVycm9yIGFzIGFueSlbRVJST1JfQ09NUE9ORU5UXTtcbn1cblxuXG5jbGFzcyBfTnVsbENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciBpbXBsZW1lbnRzIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB7XG4gIHJlc29sdmVDb21wb25lbnRGYWN0b3J5PFQ+KGNvbXBvbmVudDoge25ldyguLi5hcmdzOiBhbnlbXSk6IFR9KTogQ29tcG9uZW50RmFjdG9yeTxUPiB7XG4gICAgdGhyb3cgbm9Db21wb25lbnRGYWN0b3J5RXJyb3IoY29tcG9uZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc2ltcGxlIHJlZ2lzdHJ5IHRoYXQgbWFwcyBgQ29tcG9uZW50c2AgdG8gZ2VuZXJhdGVkIGBDb21wb25lbnRGYWN0b3J5YCBjbGFzc2VzXG4gKiB0aGF0IGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZXMgb2YgY29tcG9uZW50cy5cbiAqIFVzZSB0byBvYnRhaW4gdGhlIGZhY3RvcnkgZm9yIGEgZ2l2ZW4gY29tcG9uZW50IHR5cGUsXG4gKiB0aGVuIHVzZSB0aGUgZmFjdG9yeSdzIGBjcmVhdGUoKWAgbWV0aG9kIHRvIGNyZWF0ZSBhIGNvbXBvbmVudCBvZiB0aGF0IHR5cGUuXG4gKlxuICogTm90ZTogc2luY2UgdjEzLCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbiB2aWFcbiAqIFtgVmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnRgXShhcGkvY29yZS9WaWV3Q29udGFpbmVyUmVmI2NyZWF0ZUNvbXBvbmVudClcbiAqIGRvZXMgKipub3QqKiByZXF1aXJlIHJlc29sdmluZyBjb21wb25lbnQgZmFjdG9yeTogY29tcG9uZW50IGNsYXNzIGNhbiBiZSB1c2VkIGRpcmVjdGx5LlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqXG4gKiBAZGVwcmVjYXRlZCBBbmd1bGFyIG5vIGxvbmdlciByZXF1aXJlcyBDb21wb25lbnQgZmFjdG9yaWVzLiBQbGVhc2UgdXNlIG90aGVyIEFQSXMgd2hlcmVcbiAqICAgICBDb21wb25lbnQgY2xhc3MgY2FuIGJlIHVzZWQgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIge1xuICBzdGF0aWMgTlVMTDogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gKC8qIEBfX1BVUkVfXyAqLyBuZXcgX051bGxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIoKSk7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGZhY3Rvcnkgb2JqZWN0IHRoYXQgY3JlYXRlcyBhIGNvbXBvbmVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICogQHBhcmFtIGNvbXBvbmVudCBUaGUgY29tcG9uZW50IHR5cGUuXG4gICAqL1xuICBhYnN0cmFjdCByZXNvbHZlQ29tcG9uZW50RmFjdG9yeTxUPihjb21wb25lbnQ6IFR5cGU8VD4pOiBDb21wb25lbnRGYWN0b3J5PFQ+O1xufVxuIl19
@@ -1,169 +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 { EventEmitter } from '../event_emitter';
9
- import { arrayEquals, flatten } from '../util/array_utils';
10
- function symbolIterator() {
11
- // @ts-expect-error accessing a private member
12
- return this._results[Symbol.iterator]();
13
- }
14
- /**
15
- * An unmodifiable list of items that Angular keeps up to date when the state
16
- * of the application changes.
17
- *
18
- * The type of object that {@link ViewChildren}, {@link ContentChildren}, and {@link QueryList}
19
- * provide.
20
- *
21
- * Implements an iterable interface, therefore it can be used in both ES6
22
- * javascript `for (var i of items)` loops as well as in Angular templates with
23
- * `*ngFor="let i of myList"`.
24
- *
25
- * Changes can be observed by subscribing to the changes `Observable`.
26
- *
27
- * NOTE: In the future this class will implement an `Observable` interface.
28
- *
29
- * @usageNotes
30
- * ### Example
31
- * ```typescript
32
- * @Component({...})
33
- * class Container {
34
- * @ViewChildren(Item) items:QueryList<Item>;
35
- * }
36
- * ```
37
- *
38
- * @publicApi
39
- */
40
- export class QueryList {
41
- /**
42
- * Returns `Observable` of `QueryList` notifying the subscriber of changes.
43
- */
44
- get changes() {
45
- return this._changes || (this._changes = new EventEmitter());
46
- }
47
- /**
48
- * @param emitDistinctChangesOnly Whether `QueryList.changes` should fire only when actual change
49
- * has occurred. Or if it should fire when query is recomputed. (recomputing could resolve in
50
- * the same result)
51
- */
52
- constructor(_emitDistinctChangesOnly = false) {
53
- this._emitDistinctChangesOnly = _emitDistinctChangesOnly;
54
- this.dirty = true;
55
- this._results = [];
56
- this._changesDetected = false;
57
- this._changes = null;
58
- this.length = 0;
59
- this.first = undefined;
60
- this.last = undefined;
61
- // This function should be declared on the prototype, but doing so there will cause the class
62
- // declaration to have side-effects and become not tree-shakable. For this reason we do it in
63
- // the constructor.
64
- // [Symbol.iterator](): Iterator<T> { ... }
65
- const proto = QueryList.prototype;
66
- if (!proto[Symbol.iterator])
67
- proto[Symbol.iterator] = symbolIterator;
68
- }
69
- /**
70
- * Returns the QueryList entry at `index`.
71
- */
72
- get(index) {
73
- return this._results[index];
74
- }
75
- /**
76
- * See
77
- * [Array.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)
78
- */
79
- map(fn) {
80
- return this._results.map(fn);
81
- }
82
- /**
83
- * See
84
- * [Array.filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
85
- */
86
- filter(fn) {
87
- return this._results.filter(fn);
88
- }
89
- /**
90
- * See
91
- * [Array.find](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)
92
- */
93
- find(fn) {
94
- return this._results.find(fn);
95
- }
96
- /**
97
- * See
98
- * [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
99
- */
100
- reduce(fn, init) {
101
- return this._results.reduce(fn, init);
102
- }
103
- /**
104
- * See
105
- * [Array.forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach)
106
- */
107
- forEach(fn) {
108
- this._results.forEach(fn);
109
- }
110
- /**
111
- * See
112
- * [Array.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
113
- */
114
- some(fn) {
115
- return this._results.some(fn);
116
- }
117
- /**
118
- * Returns a copy of the internal results list as an Array.
119
- */
120
- toArray() {
121
- return this._results.slice();
122
- }
123
- toString() {
124
- return this._results.toString();
125
- }
126
- /**
127
- * Updates the stored data of the query list, and resets the `dirty` flag to `false`, so that
128
- * on change detection, it will not notify of changes to the queries, unless a new change
129
- * occurs.
130
- *
131
- * @param resultsTree The query results to store
132
- * @param identityAccessor Optional function for extracting stable object identity from a value
133
- * in the array. This function is executed for each element of the query result list while
134
- * comparing current query list with the new one (provided as a first argument of the `reset`
135
- * function) to detect if the lists are different. If the function is not provided, elements
136
- * are compared as is (without any pre-processing).
137
- */
138
- reset(resultsTree, identityAccessor) {
139
- // Cast to `QueryListInternal` so that we can mutate fields which are readonly for the usage of
140
- // QueryList (but not for QueryList itself.)
141
- const self = this;
142
- self.dirty = false;
143
- const newResultFlat = flatten(resultsTree);
144
- if (this._changesDetected = !arrayEquals(self._results, newResultFlat, identityAccessor)) {
145
- self._results = newResultFlat;
146
- self.length = newResultFlat.length;
147
- self.last = newResultFlat[this.length - 1];
148
- self.first = newResultFlat[0];
149
- }
150
- }
151
- /**
152
- * Triggers a change event by emitting on the `changes` {@link EventEmitter}.
153
- */
154
- notifyOnChanges() {
155
- if (this._changes && (this._changesDetected || !this._emitDistinctChangesOnly))
156
- this._changes.emit(this);
157
- }
158
- /** internal */
159
- setDirty() {
160
- this.dirty = true;
161
- }
162
- /** internal */
163
- destroy() {
164
- this.changes.complete();
165
- this.changes.unsubscribe();
166
- }
167
- }
168
- Symbol.iterator;
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlfbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpbmtlci9xdWVyeV9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXpELFNBQVMsY0FBYztJQUNyQiw4Q0FBOEM7SUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQzFDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBVXBCOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFvQiwyQkFBb0MsS0FBSztRQUF6Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQWlCO1FBckI3QyxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2xDLGFBQVEsR0FBb0MsSUFBSSxDQUFDO1FBRWhELFdBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsVUFBSyxHQUFNLFNBQVUsQ0FBQztRQUN0QixTQUFJLEdBQU0sU0FBVSxDQUFDO1FBZTVCLDZGQUE2RjtRQUM3Riw2RkFBNkY7UUFDN0YsbUJBQW1CO1FBQ25CLDJDQUEyQztRQUMzQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFL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QUFNLENBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSAnLi4vZXZlbnRfZW1pdHRlcic7XG5pbXBvcnQge2FycmF5RXF1YWxzLCBmbGF0dGVufSBmcm9tICcuLi91dGlsL2FycmF5X3V0aWxzJztcblxuZnVuY3Rpb24gc3ltYm9sSXRlcmF0b3I8VD4odGhpczogUXVlcnlMaXN0PFQ+KTogSXRlcmF0b3I8VD4ge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIGFjY2Vzc2luZyBhIHByaXZhdGUgbWVtYmVyXG4gIHJldHVybiB0aGlzLl9yZXN1bHRzW1N5bWJvbC5pdGVyYXRvcl0oKTtcbn1cblxuLyoqXG4gKiBBbiB1bm1vZGlmaWFibGUgbGlzdCBvZiBpdGVtcyB0aGF0IEFuZ3VsYXIga2VlcHMgdXAgdG8gZGF0ZSB3aGVuIHRoZSBzdGF0ZVxuICogb2YgdGhlIGFwcGxpY2F0aW9uIGNoYW5nZXMuXG4gKlxuICogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoYXQge0BsaW5rIFZpZXdDaGlsZHJlbn0sIHtAbGluayBDb250ZW50Q2hpbGRyZW59LCBhbmQge0BsaW5rIFF1ZXJ5TGlzdH1cbiAqIHByb3ZpZGUuXG4gKlxuICogSW1wbGVtZW50cyBhbiBpdGVyYWJsZSBpbnRlcmZhY2UsIHRoZXJlZm9yZSBpdCBjYW4gYmUgdXNlZCBpbiBib3RoIEVTNlxuICogamF2YXNjcmlwdCBgZm9yICh2YXIgaSBvZiBpdGVtcylgIGxvb3BzIGFzIHdlbGwgYXMgaW4gQW5ndWxhciB0ZW1wbGF0ZXMgd2l0aFxuICogYCpuZ0Zvcj1cImxldCBpIG9mIG15TGlzdFwiYC5cbiAqXG4gKiBDaGFuZ2VzIGNhbiBiZSBvYnNlcnZlZCBieSBzdWJzY3JpYmluZyB0byB0aGUgY2hhbmdlcyBgT2JzZXJ2YWJsZWAuXG4gKlxuICogTk9URTogSW4gdGhlIGZ1dHVyZSB0aGlzIGNsYXNzIHdpbGwgaW1wbGVtZW50IGFuIGBPYnNlcnZhYmxlYCBpbnRlcmZhY2UuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqICMjIyBFeGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogY2xhc3MgQ29udGFpbmVyIHtcbiAqICAgQFZpZXdDaGlsZHJlbihJdGVtKSBpdGVtczpRdWVyeUxpc3Q8SXRlbT47XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWVyeUxpc3Q8VD4gaW1wbGVtZW50cyBJdGVyYWJsZTxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBkaXJ0eSA9IHRydWU7XG4gIHByaXZhdGUgX3Jlc3VsdHM6IEFycmF5PFQ+ID0gW107XG4gIHByaXZhdGUgX2NoYW5nZXNEZXRlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jaGFuZ2VzOiBFdmVudEVtaXR0ZXI8UXVlcnlMaXN0PFQ+PnxudWxsID0gbnVsbDtcblxuICByZWFkb25seSBsZW5ndGg6IG51bWJlciA9IDA7XG4gIHJlYWRvbmx5IGZpcnN0OiBUID0gdW5kZWZpbmVkITtcbiAgcmVhZG9ubHkgbGFzdDogVCA9IHVuZGVmaW5lZCE7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYE9ic2VydmFibGVgIG9mIGBRdWVyeUxpc3RgIG5vdGlmeWluZyB0aGUgc3Vic2NyaWJlciBvZiBjaGFuZ2VzLlxuICAgKi9cbiAgZ2V0IGNoYW5nZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcyB8fCAodGhpcy5fY2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGVtaXREaXN0aW5jdENoYW5nZXNPbmx5IFdoZXRoZXIgYFF1ZXJ5TGlzdC5jaGFuZ2VzYCBzaG91bGQgZmlyZSBvbmx5IHdoZW4gYWN0dWFsIGNoYW5nZVxuICAgKiAgICAgaGFzIG9jY3VycmVkLiBPciBpZiBpdCBzaG91bGQgZmlyZSB3aGVuIHF1ZXJ5IGlzIHJlY29tcHV0ZWQuIChyZWNvbXB1dGluZyBjb3VsZCByZXNvbHZlIGluXG4gICAqICAgICB0aGUgc2FtZSByZXN1bHQpXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbWl0RGlzdGluY3RDaGFuZ2VzT25seTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZGVjbGFyZWQgb24gdGhlIHByb3RvdHlwZSwgYnV0IGRvaW5nIHNvIHRoZXJlIHdpbGwgY2F1c2UgdGhlIGNsYXNzXG4gICAgLy8gZGVjbGFyYXRpb24gdG8gaGF2ZSBzaWRlLWVmZmVjdHMgYW5kIGJlY29tZSBub3QgdHJlZS1zaGFrYWJsZS4gRm9yIHRoaXMgcmVhc29uIHdlIGRvIGl0IGluXG4gICAgLy8gdGhlIGNvbnN0cnVjdG9yLlxuICAgIC8vIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhdG9yPFQ+IHsgLi4uIH1cbiAgICBjb25zdCBwcm90byA9IFF1ZXJ5TGlzdC5wcm90b3R5cGU7XG4gICAgaWYgKCFwcm90b1tTeW1ib2wuaXRlcmF0b3JdKSBwcm90b1tTeW1ib2wuaXRlcmF0b3JdID0gc3ltYm9sSXRlcmF0b3I7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgUXVlcnlMaXN0IGVudHJ5IGF0IGBpbmRleGAuXG4gICAqL1xuICBnZXQoaW5kZXg6IG51bWJlcik6IFR8dW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0c1tpbmRleF07XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIFtBcnJheS5tYXBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L21hcClcbiAgICovXG4gIG1hcDxVPihmbjogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFUpOiBVW10ge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzLm1hcChmbik7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIFtBcnJheS5maWx0ZXJdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L2ZpbHRlcilcbiAgICovXG4gIGZpbHRlcihmbjogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IGJvb2xlYW4pOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcihmbik7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIFtBcnJheS5maW5kXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9BcnJheS9maW5kKVxuICAgKi9cbiAgZmluZChmbjogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IGJvb2xlYW4pOiBUfHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZChmbik7XG4gIH1cblxuICAvKipcbiAgICogU2VlXG4gICAqIFtBcnJheS5yZWR1Y2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L3JlZHVjZSlcbiAgICovXG4gIHJlZHVjZTxVPihmbjogKHByZXZWYWx1ZTogVSwgY3VyVmFsdWU6IFQsIGN1ckluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IFUsIGluaXQ6IFUpOiBVIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5yZWR1Y2UoZm4sIGluaXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlZVxuICAgKiBbQXJyYXkuZm9yRWFjaF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvQXJyYXkvZm9yRWFjaClcbiAgICovXG4gIGZvckVhY2goZm46IChpdGVtOiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogVFtdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzdWx0cy5mb3JFYWNoKGZuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWVcbiAgICogW0FycmF5LnNvbWVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0FycmF5L3NvbWUpXG4gICAqL1xuICBzb21lKGZuOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiBUW10pID0+IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKGZuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgcmVzdWx0cyBsaXN0IGFzIGFuIEFycmF5LlxuICAgKi9cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzLnNsaWNlKCk7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RvcmVkIGRhdGEgb2YgdGhlIHF1ZXJ5IGxpc3QsIGFuZCByZXNldHMgdGhlIGBkaXJ0eWAgZmxhZyB0byBgZmFsc2VgLCBzbyB0aGF0XG4gICAqIG9uIGNoYW5nZSBkZXRlY3Rpb24sIGl0IHdpbGwgbm90IG5vdGlmeSBvZiBjaGFuZ2VzIHRvIHRoZSBxdWVyaWVzLCB1bmxlc3MgYSBuZXcgY2hhbmdlXG4gICAqIG9jY3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHJlc3VsdHNUcmVlIFRoZSBxdWVyeSByZXN1bHRzIHRvIHN0b3JlXG4gICAqIEBwYXJhbSBpZGVudGl0eUFjY2Vzc29yIE9wdGlvbmFsIGZ1bmN0aW9uIGZvciBleHRyYWN0aW5nIHN0YWJsZSBvYmplY3QgaWRlbnRpdHkgZnJvbSBhIHZhbHVlXG4gICAqICAgIGluIHRoZSBhcnJheS4gVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBmb3IgZWFjaCBlbGVtZW50IG9mIHRoZSBxdWVyeSByZXN1bHQgbGlzdCB3aGlsZVxuICAgKiAgICBjb21wYXJpbmcgY3VycmVudCBxdWVyeSBsaXN0IHdpdGggdGhlIG5ldyBvbmUgKHByb3ZpZGVkIGFzIGEgZmlyc3QgYXJndW1lbnQgb2YgdGhlIGByZXNldGBcbiAgICogICAgZnVuY3Rpb24pIHRvIGRldGVjdCBpZiB0aGUgbGlzdHMgYXJlIGRpZmZlcmVudC4gSWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCwgZWxlbWVudHNcbiAgICogICAgYXJlIGNvbXBhcmVkIGFzIGlzICh3aXRob3V0IGFueSBwcmUtcHJvY2Vzc2luZykuXG4gICAqL1xuICByZXNldChyZXN1bHRzVHJlZTogQXJyYXk8VHxhbnlbXT4sIGlkZW50aXR5QWNjZXNzb3I/OiAodmFsdWU6IFQpID0+IHVua25vd24pOiB2b2lkIHtcbiAgICAvLyBDYXN0IHRvIGBRdWVyeUxpc3RJbnRlcm5hbGAgc28gdGhhdCB3ZSBjYW4gbXV0YXRlIGZpZWxkcyB3aGljaCBhcmUgcmVhZG9ubHkgZm9yIHRoZSB1c2FnZSBvZlxuICAgIC8vIFF1ZXJ5TGlzdCAoYnV0IG5vdCBmb3IgUXVlcnlMaXN0IGl0c2VsZi4pXG4gICAgY29uc3Qgc2VsZiA9IHRoaXMgYXMgUXVlcnlMaXN0SW50ZXJuYWw8VD47XG4gICAgKHNlbGYgYXMge2RpcnR5OiBib29sZWFufSkuZGlydHkgPSBmYWxzZTtcbiAgICBjb25zdCBuZXdSZXN1bHRGbGF0ID0gZmxhdHRlbihyZXN1bHRzVHJlZSk7XG4gICAgaWYgKHRoaXMuX2NoYW5nZXNEZXRlY3RlZCA9ICFhcnJheUVxdWFscyhzZWxmLl9yZXN1bHRzLCBuZXdSZXN1bHRGbGF0LCBpZGVudGl0eUFjY2Vzc29yKSkge1xuICAgICAgc2VsZi5fcmVzdWx0cyA9IG5ld1Jlc3VsdEZsYXQ7XG4gICAgICBzZWxmLmxlbmd0aCA9IG5ld1Jlc3VsdEZsYXQubGVuZ3RoO1xuICAgICAgc2VsZi5sYXN0ID0gbmV3UmVzdWx0RmxhdFt0aGlzLmxlbmd0aCAtIDFdO1xuICAgICAgc2VsZi5maXJzdCA9IG5ld1Jlc3VsdEZsYXRbMF07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJzIGEgY2hhbmdlIGV2ZW50IGJ5IGVtaXR0aW5nIG9uIHRoZSBgY2hhbmdlc2Age0BsaW5rIEV2ZW50RW1pdHRlcn0uXG4gICAqL1xuICBub3RpZnlPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NoYW5nZXMgJiYgKHRoaXMuX2NoYW5nZXNEZXRlY3RlZCB8fCAhdGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHkpKVxuICAgICAgdGhpcy5fY2hhbmdlcy5lbWl0KHRoaXMpO1xuICB9XG5cbiAgLyoqIGludGVybmFsICovXG4gIHNldERpcnR5KCkge1xuICAgICh0aGlzIGFzIHtkaXJ0eTogYm9vbGVhbn0pLmRpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbnRlcm5hbCAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgICh0aGlzLmNoYW5nZXMgYXMgRXZlbnRFbWl0dGVyPGFueT4pLmNvbXBsZXRlKCk7XG4gICAgKHRoaXMuY2hhbmdlcyBhcyBFdmVudEVtaXR0ZXI8YW55PikudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgU3ltYm9sLml0ZXJhdG9yYCBzaG91bGQgYmUgZGVjbGFyZWQgaGVyZSwgYnV0IHRoaXMgd291bGQgY2F1c2VcbiAgLy8gdHJlZS1zaGFraW5nIGlzc3VlcyB3aXRoIGBRdWVyeUxpc3QuIFNvIGluc3RlYWQsIGl0J3MgYWRkZWQgaW4gdGhlIGNvbnN0cnVjdG9yIChzZWUgY29tbWVudHNcbiAgLy8gdGhlcmUpIGFuZCB0aGlzIGRlY2xhcmF0aW9uIGlzIGxlZnQgaGVyZSB0byBlbnN1cmUgdGhhdCBUeXBlU2NyaXB0IGNvbnNpZGVycyBRdWVyeUxpc3QgdG9cbiAgLy8gaW1wbGVtZW50IHRoZSBJdGVyYWJsZSBpbnRlcmZhY2UuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgb2YgTmdGb3IgbG9vcHNcbiAgLy8gb3ZlciBRdWVyeUxpc3RzIHRvIHdvcmsgY29ycmVjdGx5LCBzaW5jZSBRdWVyeUxpc3QgbXVzdCBiZSBhc3NpZ25hYmxlIHRvIE5nSXRlcmFibGUuXG4gIFtTeW1ib2wuaXRlcmF0b3JdITogKCkgPT4gSXRlcmF0b3I8VD47XG59XG5cbi8qKlxuICogSW50ZXJuYWwgc2V0IG9mIEFQSXMgdXNlZCBieSB0aGUgZnJhbWV3b3JrLiAobm90IHRvIGJlIG1hZGUgcHVibGljKVxuICovXG5pbnRlcmZhY2UgUXVlcnlMaXN0SW50ZXJuYWw8VD4gZXh0ZW5kcyBRdWVyeUxpc3Q8VD4ge1xuICByZXNldChhOiBhbnlbXSk6IHZvaWQ7XG4gIG5vdGlmeU9uQ2hhbmdlcygpOiB2b2lkO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgbGFzdDogVDtcbiAgZmlyc3Q6IFQ7XG59XG4iXX0=