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

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 (369) hide show
  1. package/esm2022/rxjs-interop/index.mjs +9 -0
  2. package/esm2022/rxjs-interop/public_api.mjs +15 -0
  3. package/esm2022/rxjs-interop/rxjs-interop.mjs +5 -0
  4. package/esm2022/rxjs-interop/src/from_observable.mjs +46 -0
  5. package/esm2022/rxjs-interop/src/from_signal.mjs +36 -0
  6. package/esm2022/rxjs-interop/src/index.mjs +11 -0
  7. package/esm2022/rxjs-interop/src/take_until_destroyed.mjs +33 -0
  8. package/{esm2020 → esm2022}/src/application_init.mjs +3 -3
  9. package/{esm2020 → esm2022}/src/application_module.mjs +4 -4
  10. package/esm2022/src/application_ref.mjs +969 -0
  11. package/{esm2020 → esm2022}/src/change_detection/change_detector_ref.mjs +6 -6
  12. package/esm2022/src/change_detection/differs/iterable_differs.mjs +81 -0
  13. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +74 -0
  14. package/{esm2020 → esm2022}/src/console.mjs +3 -3
  15. package/esm2022/src/core.mjs +56 -0
  16. package/esm2022/src/core_private_export.mjs +39 -0
  17. package/esm2022/src/core_reactivity_export_internal.mjs +12 -0
  18. package/esm2022/src/di/contextual.mjs +54 -0
  19. package/esm2022/src/di/index.mjs +29 -0
  20. package/esm2022/src/di/injector.mjs +62 -0
  21. package/esm2022/src/di/injector_compatibility.mjs +239 -0
  22. package/esm2022/src/di/provider_collection.mjs +279 -0
  23. package/esm2022/src/di/reflective_injector.mjs +311 -0
  24. package/esm2022/src/errors.mjs +49 -0
  25. package/esm2022/src/hydration/annotate.mjs +426 -0
  26. package/esm2022/src/hydration/api.mjs +176 -0
  27. package/esm2022/src/hydration/cleanup.mjs +95 -0
  28. package/esm2022/src/hydration/node_lookup_utils.mjs +273 -0
  29. package/esm2022/src/hydration/utils.mjs +219 -0
  30. package/esm2022/src/initial_render_pending_tasks.mjs +75 -0
  31. package/{esm2020 → esm2022}/src/linker/compiler.mjs +5 -5
  32. package/{esm2020 → esm2022}/src/linker/component_factory.mjs +1 -1
  33. package/esm2022/src/linker/component_factory_resolver.mjs +42 -0
  34. package/{esm2020 → esm2022}/src/linker/destroy_ref.mjs +11 -11
  35. package/{esm2020 → esm2022}/src/linker/element_ref.mjs +6 -6
  36. package/esm2022/src/linker/query_list.mjs +169 -0
  37. package/esm2022/src/linker/template_ref.mjs +102 -0
  38. package/{esm2020 → esm2022}/src/linker/view_container_ref.mjs +7 -7
  39. package/{esm2020 → esm2022}/src/linker/view_ref.mjs +2 -2
  40. package/esm2022/src/metadata/di.mjs +69 -0
  41. package/{esm2020 → esm2022}/src/metadata/directives.mjs +1 -1
  42. package/{esm2020 → esm2022}/src/metadata/do_boostrap.mjs +1 -1
  43. package/{esm2020 → esm2022}/src/metadata/ng_module.mjs +2 -2
  44. package/esm2022/src/metadata.mjs +18 -0
  45. package/{esm2020 → esm2022}/src/render/api.mjs +6 -6
  46. package/esm2022/src/render3/component_ref.mjs +393 -0
  47. package/{esm2020 → esm2022}/src/render3/context_discovery.mjs +1 -1
  48. package/esm2022/src/render3/features/standalone_feature.mjs +70 -0
  49. package/{esm2020 → esm2022}/src/render3/instructions/element.mjs +3 -2
  50. package/{esm2020 → esm2022}/src/render3/instructions/element_container.mjs +1 -2
  51. package/esm2022/src/render3/instructions/listener.mjs +244 -0
  52. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +35 -0
  53. package/{esm2020 → esm2022}/src/render3/instructions/shared.mjs +26 -38
  54. package/{esm2020 → esm2022}/src/render3/instructions/styling.mjs +5 -2
  55. package/esm2022/src/render3/interfaces/view.mjs +48 -0
  56. package/esm2022/src/render3/jit/module.mjs +531 -0
  57. package/esm2022/src/render3/ng_module_ref.mjs +134 -0
  58. package/esm2022/src/render3/node_manipulation.mjs +960 -0
  59. package/esm2022/src/render3/reactive_lview_consumer.mjs +81 -0
  60. package/esm2022/src/render3/reactivity/effect.mjs +77 -0
  61. package/{esm2020 → esm2022}/src/render3/util/change_detection_utils.mjs +2 -2
  62. package/esm2022/src/render3/view_ref.mjs +307 -0
  63. package/{esm2020 → esm2022}/src/sanitization/sanitization.mjs +3 -3
  64. package/{esm2020 → esm2022}/src/sanitization/sanitizer.mjs +7 -7
  65. package/esm2022/src/signals/index.mjs +16 -0
  66. package/esm2022/src/signals/src/api.mjs +46 -0
  67. package/esm2022/src/signals/src/computed.mjs +140 -0
  68. package/esm2022/src/signals/src/errors.mjs +18 -0
  69. package/esm2022/src/signals/src/graph.mjs +189 -0
  70. package/esm2022/src/signals/src/signal.mjs +86 -0
  71. package/esm2022/src/signals/src/watch.mjs +63 -0
  72. package/esm2022/src/signals/src/weak_ref.mjs +35 -0
  73. package/{esm2020 → esm2022}/src/testability/testability.mjs +5 -5
  74. package/esm2022/src/transfer_state.mjs +153 -0
  75. package/esm2022/src/util/ng_dev_mode.mjs +80 -0
  76. package/{esm2020 → esm2022}/src/version.mjs +1 -1
  77. package/{esm2020 → esm2022}/testing/src/logger.mjs +4 -4
  78. package/{esm2020 → esm2022}/testing/src/ng_zone_mock.mjs +4 -4
  79. package/{esm2020 → esm2022}/testing/src/test_bed.mjs +2 -2
  80. package/esm2022/testing/src/test_bed_compiler.mjs +845 -0
  81. package/{fesm2020 → fesm2022}/core.mjs +15745 -15364
  82. package/fesm2022/core.mjs.map +1 -0
  83. package/fesm2022/rxjs-interop.mjs +104 -0
  84. package/fesm2022/rxjs-interop.mjs.map +1 -0
  85. package/{fesm2020 → fesm2022}/testing.mjs +913 -176
  86. package/fesm2022/testing.mjs.map +1 -0
  87. package/index.d.ts +459 -211
  88. package/package.json +14 -16
  89. package/rxjs-interop/index.d.ts +95 -0
  90. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +694 -0
  91. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +7 -0
  92. package/schematics/migrations/{router-link-with-href → remove-module-id}/bundle.js +153 -155
  93. package/schematics/migrations/remove-module-id/bundle.js.map +7 -0
  94. package/schematics/migrations.json +8 -8
  95. package/schematics/ng-generate/standalone-migration/bundle.js +928 -562
  96. package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
  97. package/testing/index.d.ts +1 -1
  98. package/esm2020/src/application_ref.mjs +0 -907
  99. package/esm2020/src/change_detection/differs/iterable_differs.mjs +0 -81
  100. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +0 -74
  101. package/esm2020/src/core.mjs +0 -55
  102. package/esm2020/src/core_private_export.mjs +0 -38
  103. package/esm2020/src/core_reactivity_export_internal.mjs +0 -9
  104. package/esm2020/src/di/contextual.mjs +0 -37
  105. package/esm2020/src/di/index.mjs +0 -29
  106. package/esm2020/src/di/injector.mjs +0 -62
  107. package/esm2020/src/di/injector_compatibility.mjs +0 -236
  108. package/esm2020/src/di/provider_collection.mjs +0 -279
  109. package/esm2020/src/di/reflective_injector.mjs +0 -311
  110. package/esm2020/src/errors.mjs +0 -48
  111. package/esm2020/src/hydration/annotate.mjs +0 -384
  112. package/esm2020/src/hydration/api.mjs +0 -141
  113. package/esm2020/src/hydration/cleanup.mjs +0 -101
  114. package/esm2020/src/hydration/node_lookup_utils.mjs +0 -275
  115. package/esm2020/src/hydration/utils.mjs +0 -219
  116. package/esm2020/src/linker/component_factory_resolver.mjs +0 -42
  117. package/esm2020/src/linker/query_list.mjs +0 -169
  118. package/esm2020/src/linker/template_ref.mjs +0 -102
  119. package/esm2020/src/metadata/di.mjs +0 -108
  120. package/esm2020/src/metadata.mjs +0 -18
  121. package/esm2020/src/render3/component_ref.mjs +0 -377
  122. package/esm2020/src/render3/features/standalone_feature.mjs +0 -70
  123. package/esm2020/src/render3/instructions/listener.mjs +0 -243
  124. package/esm2020/src/render3/interfaces/view.mjs +0 -47
  125. package/esm2020/src/render3/jit/module.mjs +0 -544
  126. package/esm2020/src/render3/ng_module_ref.mjs +0 -132
  127. package/esm2020/src/render3/node_manipulation.mjs +0 -961
  128. package/esm2020/src/render3/view_ref.mjs +0 -306
  129. package/esm2020/src/signals/index.mjs +0 -16
  130. package/esm2020/src/signals/src/api.mjs +0 -46
  131. package/esm2020/src/signals/src/computed.mjs +0 -142
  132. package/esm2020/src/signals/src/effect.mjs +0 -67
  133. package/esm2020/src/signals/src/graph.mjs +0 -114
  134. package/esm2020/src/signals/src/signal.mjs +0 -78
  135. package/esm2020/src/signals/src/watch.mjs +0 -54
  136. package/esm2020/src/signals/src/weak_ref.mjs +0 -27
  137. package/esm2020/src/transfer_state.mjs +0 -153
  138. package/esm2020/src/util/ng_dev_mode.mjs +0 -79
  139. package/esm2020/testing/src/test_bed_compiler.mjs +0 -846
  140. package/fesm2015/core.mjs +0 -30473
  141. package/fesm2015/core.mjs.map +0 -1
  142. package/fesm2015/testing.mjs +0 -26417
  143. package/fesm2015/testing.mjs.map +0 -1
  144. package/fesm2020/core.mjs.map +0 -1
  145. package/fesm2020/testing.mjs.map +0 -1
  146. package/schematics/migrations/relative-link-resolution/bundle.js +0 -283
  147. package/schematics/migrations/relative-link-resolution/bundle.js.map +0 -7
  148. package/schematics/migrations/router-link-with-href/bundle.js.map +0 -7
  149. /package/{esm2020 → esm2022}/core.mjs +0 -0
  150. /package/{esm2020 → esm2022}/index.mjs +0 -0
  151. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  152. /package/{esm2020 → esm2022}/src/application_config.mjs +0 -0
  153. /package/{esm2020 → esm2022}/src/application_tokens.mjs +0 -0
  154. /package/{esm2020 → esm2022}/src/change_detection/change_detection.mjs +0 -0
  155. /package/{esm2020 → esm2022}/src/change_detection/constants.mjs +0 -0
  156. /package/{esm2020 → esm2022}/src/change_detection/differs/default_iterable_differ.mjs +0 -0
  157. /package/{esm2020 → esm2022}/src/change_detection/differs/default_keyvalue_differ.mjs +0 -0
  158. /package/{esm2020 → esm2022}/src/change_detection/pipe_transform.mjs +0 -0
  159. /package/{esm2020 → esm2022}/src/change_detection.mjs +0 -0
  160. /package/{esm2020 → esm2022}/src/compiler/compiler_facade.mjs +0 -0
  161. /package/{esm2020 → esm2022}/src/compiler/compiler_facade_interface.mjs +0 -0
  162. /package/{esm2020 → esm2022}/src/core_reactivity_export.mjs +0 -0
  163. /package/{esm2020 → esm2022}/src/core_render3_private_export.mjs +0 -0
  164. /package/{esm2020 → esm2022}/src/debug/debug_node.mjs +0 -0
  165. /package/{esm2020 → esm2022}/src/di/create_injector.mjs +0 -0
  166. /package/{esm2020 → esm2022}/src/di/forward_ref.mjs +0 -0
  167. /package/{esm2020 → esm2022}/src/di/initializer_token.mjs +0 -0
  168. /package/{esm2020 → esm2022}/src/di/inject_switch.mjs +0 -0
  169. /package/{esm2020 → esm2022}/src/di/injectable.mjs +0 -0
  170. /package/{esm2020 → esm2022}/src/di/injection_token.mjs +0 -0
  171. /package/{esm2020 → esm2022}/src/di/injector_marker.mjs +0 -0
  172. /package/{esm2020 → esm2022}/src/di/injector_token.mjs +0 -0
  173. /package/{esm2020 → esm2022}/src/di/interface/defs.mjs +0 -0
  174. /package/{esm2020 → esm2022}/src/di/interface/injector.mjs +0 -0
  175. /package/{esm2020 → esm2022}/src/di/interface/provider.mjs +0 -0
  176. /package/{esm2020 → esm2022}/src/di/internal_tokens.mjs +0 -0
  177. /package/{esm2020 → esm2022}/src/di/jit/environment.mjs +0 -0
  178. /package/{esm2020 → esm2022}/src/di/jit/injectable.mjs +0 -0
  179. /package/{esm2020 → esm2022}/src/di/jit/util.mjs +0 -0
  180. /package/{esm2020 → esm2022}/src/di/metadata.mjs +0 -0
  181. /package/{esm2020 → esm2022}/src/di/metadata_attr.mjs +0 -0
  182. /package/{esm2020 → esm2022}/src/di/null_injector.mjs +0 -0
  183. /package/{esm2020 → esm2022}/src/di/provider_token.mjs +0 -0
  184. /package/{esm2020 → esm2022}/src/di/r3_injector.mjs +0 -0
  185. /package/{esm2020 → esm2022}/src/di/reflective_errors.mjs +0 -0
  186. /package/{esm2020 → esm2022}/src/di/reflective_key.mjs +0 -0
  187. /package/{esm2020 → esm2022}/src/di/reflective_provider.mjs +0 -0
  188. /package/{esm2020 → esm2022}/src/di/scope.mjs +0 -0
  189. /package/{esm2020 → esm2022}/src/di.mjs +0 -0
  190. /package/{esm2020 → esm2022}/src/error_details_base_url.mjs +0 -0
  191. /package/{esm2020 → esm2022}/src/error_handler.mjs +0 -0
  192. /package/{esm2020 → esm2022}/src/event_emitter.mjs +0 -0
  193. /package/{esm2020 → esm2022}/src/hydration/compression.mjs +0 -0
  194. /package/{esm2020 → esm2022}/src/hydration/error_handling.mjs +0 -0
  195. /package/{esm2020 → esm2022}/src/hydration/interfaces.mjs +0 -0
  196. /package/{esm2020 → esm2022}/src/hydration/skip_hydration.mjs +0 -0
  197. /package/{esm2020 → esm2022}/src/hydration/tokens.mjs +0 -0
  198. /package/{esm2020 → esm2022}/src/hydration/views.mjs +0 -0
  199. /package/{esm2020 → esm2022}/src/i18n/locale_data_api.mjs +0 -0
  200. /package/{esm2020 → esm2022}/src/i18n/locale_en.mjs +0 -0
  201. /package/{esm2020 → esm2022}/src/i18n/localization.mjs +0 -0
  202. /package/{esm2020 → esm2022}/src/i18n/tokens.mjs +0 -0
  203. /package/{esm2020 → esm2022}/src/interface/lifecycle_hooks.mjs +0 -0
  204. /package/{esm2020 → esm2022}/src/interface/simple_change.mjs +0 -0
  205. /package/{esm2020 → esm2022}/src/interface/type.mjs +0 -0
  206. /package/{esm2020 → esm2022}/src/linker/ng_module_factory.mjs +0 -0
  207. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader.mjs +0 -0
  208. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader_impl.mjs +0 -0
  209. /package/{esm2020 → esm2022}/src/linker/ng_module_registration.mjs +0 -0
  210. /package/{esm2020 → esm2022}/src/linker.mjs +0 -0
  211. /package/{esm2020 → esm2022}/src/metadata/ng_module_def.mjs +0 -0
  212. /package/{esm2020 → esm2022}/src/metadata/resource_loading.mjs +0 -0
  213. /package/{esm2020 → esm2022}/src/metadata/schema.mjs +0 -0
  214. /package/{esm2020 → esm2022}/src/metadata/view.mjs +0 -0
  215. /package/{esm2020 → esm2022}/src/platform_core_providers.mjs +0 -0
  216. /package/{esm2020 → esm2022}/src/r3_symbols.mjs +0 -0
  217. /package/{esm2020 → esm2022}/src/reflection/platform_reflection_capabilities.mjs +0 -0
  218. /package/{esm2020 → esm2022}/src/reflection/reflection_capabilities.mjs +0 -0
  219. /package/{esm2020 → esm2022}/src/render/api_flags.mjs +0 -0
  220. /package/{esm2020 → esm2022}/src/render.mjs +0 -0
  221. /package/{esm2020 → esm2022}/src/render3/assert.mjs +0 -0
  222. /package/{esm2020 → esm2022}/src/render3/bindings.mjs +0 -0
  223. /package/{esm2020 → esm2022}/src/render3/collect_native_nodes.mjs +0 -0
  224. /package/{esm2020 → esm2022}/src/render3/component.mjs +0 -0
  225. /package/{esm2020 → esm2022}/src/render3/definition.mjs +0 -0
  226. /package/{esm2020 → esm2022}/src/render3/definition_factory.mjs +0 -0
  227. /package/{esm2020 → esm2022}/src/render3/di.mjs +0 -0
  228. /package/{esm2020 → esm2022}/src/render3/di_setup.mjs +0 -0
  229. /package/{esm2020 → esm2022}/src/render3/errors.mjs +0 -0
  230. /package/{esm2020 → esm2022}/src/render3/errors_di.mjs +0 -0
  231. /package/{esm2020 → esm2022}/src/render3/features/copy_definition_feature.mjs +0 -0
  232. /package/{esm2020 → esm2022}/src/render3/features/host_directives_feature.mjs +0 -0
  233. /package/{esm2020 → esm2022}/src/render3/features/inherit_definition_feature.mjs +0 -0
  234. /package/{esm2020 → esm2022}/src/render3/features/ng_onchanges_feature.mjs +0 -0
  235. /package/{esm2020 → esm2022}/src/render3/features/providers_feature.mjs +0 -0
  236. /package/{esm2020 → esm2022}/src/render3/fields.mjs +0 -0
  237. /package/{esm2020 → esm2022}/src/render3/global_utils_api.mjs +0 -0
  238. /package/{esm2020 → esm2022}/src/render3/hooks.mjs +0 -0
  239. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_apply.mjs +0 -0
  240. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_debug.mjs +0 -0
  241. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_insert_before_index.mjs +0 -0
  242. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_locale_id.mjs +0 -0
  243. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_parse.mjs +0 -0
  244. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_postprocess.mjs +0 -0
  245. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_tree_shaking.mjs +0 -0
  246. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_util.mjs +0 -0
  247. /package/{esm2020 → esm2022}/src/render3/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/src/render3/instructions/advance.mjs +0 -0
  249. /package/{esm2020 → esm2022}/src/render3/instructions/all.mjs +0 -0
  250. /package/{esm2020 → esm2022}/src/render3/instructions/attribute.mjs +0 -0
  251. /package/{esm2020 → esm2022}/src/render3/instructions/attribute_interpolation.mjs +0 -0
  252. /package/{esm2020 → esm2022}/src/render3/instructions/change_detection.mjs +0 -0
  253. /package/{esm2020 → esm2022}/src/render3/instructions/class_map_interpolation.mjs +0 -0
  254. /package/{esm2020 → esm2022}/src/render3/instructions/di.mjs +0 -0
  255. /package/{esm2020 → esm2022}/src/render3/instructions/di_attr.mjs +0 -0
  256. /package/{esm2020 → esm2022}/src/render3/instructions/element_validation.mjs +0 -0
  257. /package/{esm2020 → esm2022}/src/render3/instructions/get_current_view.mjs +0 -0
  258. /package/{esm2020 → esm2022}/src/render3/instructions/host_property.mjs +0 -0
  259. /package/{esm2020 → esm2022}/src/render3/instructions/i18n.mjs +0 -0
  260. /package/{esm2020 → esm2022}/src/render3/instructions/i18n_icu_container_visitor.mjs +0 -0
  261. /package/{esm2020 → esm2022}/src/render3/instructions/interpolation.mjs +0 -0
  262. /package/{esm2020 → esm2022}/src/render3/instructions/namespace.mjs +0 -0
  263. /package/{esm2020 → esm2022}/src/render3/instructions/next_context.mjs +0 -0
  264. /package/{esm2020 → esm2022}/src/render3/instructions/projection.mjs +0 -0
  265. /package/{esm2020 → esm2022}/src/render3/instructions/property.mjs +0 -0
  266. /package/{esm2020 → esm2022}/src/render3/instructions/property_interpolation.mjs +0 -0
  267. /package/{esm2020 → esm2022}/src/render3/instructions/storage.mjs +0 -0
  268. /package/{esm2020 → esm2022}/src/render3/instructions/style_map_interpolation.mjs +0 -0
  269. /package/{esm2020 → esm2022}/src/render3/instructions/style_prop_interpolation.mjs +0 -0
  270. /package/{esm2020 → esm2022}/src/render3/instructions/template.mjs +0 -0
  271. /package/{esm2020 → esm2022}/src/render3/instructions/text.mjs +0 -0
  272. /package/{esm2020 → esm2022}/src/render3/instructions/text_interpolation.mjs +0 -0
  273. /package/{esm2020 → esm2022}/src/render3/interfaces/container.mjs +0 -0
  274. /package/{esm2020 → esm2022}/src/render3/interfaces/context.mjs +0 -0
  275. /package/{esm2020 → esm2022}/src/render3/interfaces/definition.mjs +0 -0
  276. /package/{esm2020 → esm2022}/src/render3/interfaces/document.mjs +0 -0
  277. /package/{esm2020 → esm2022}/src/render3/interfaces/i18n.mjs +0 -0
  278. /package/{esm2020 → esm2022}/src/render3/interfaces/injector.mjs +0 -0
  279. /package/{esm2020 → esm2022}/src/render3/interfaces/lview_tracking.mjs +0 -0
  280. /package/{esm2020 → esm2022}/src/render3/interfaces/node.mjs +0 -0
  281. /package/{esm2020 → esm2022}/src/render3/interfaces/projection.mjs +0 -0
  282. /package/{esm2020 → esm2022}/src/render3/interfaces/public_definitions.mjs +0 -0
  283. /package/{esm2020 → esm2022}/src/render3/interfaces/query.mjs +0 -0
  284. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer.mjs +0 -0
  285. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer_dom.mjs +0 -0
  286. /package/{esm2020 → esm2022}/src/render3/interfaces/sanitization.mjs +0 -0
  287. /package/{esm2020 → esm2022}/src/render3/interfaces/styling.mjs +0 -0
  288. /package/{esm2020 → esm2022}/src/render3/interfaces/type_checks.mjs +0 -0
  289. /package/{esm2020 → esm2022}/src/render3/jit/directive.mjs +0 -0
  290. /package/{esm2020 → esm2022}/src/render3/jit/environment.mjs +0 -0
  291. /package/{esm2020 → esm2022}/src/render3/jit/jit_options.mjs +0 -0
  292. /package/{esm2020 → esm2022}/src/render3/jit/module_patch.mjs +0 -0
  293. /package/{esm2020 → esm2022}/src/render3/jit/partial.mjs +0 -0
  294. /package/{esm2020 → esm2022}/src/render3/jit/pipe.mjs +0 -0
  295. /package/{esm2020 → esm2022}/src/render3/jit/util.mjs +0 -0
  296. /package/{esm2020 → esm2022}/src/render3/metadata.mjs +0 -0
  297. /package/{esm2020 → esm2022}/src/render3/namespaces.mjs +0 -0
  298. /package/{esm2020 → esm2022}/src/render3/node_assert.mjs +0 -0
  299. /package/{esm2020 → esm2022}/src/render3/node_manipulation_i18n.mjs +0 -0
  300. /package/{esm2020 → esm2022}/src/render3/node_selector_matcher.mjs +0 -0
  301. /package/{esm2020 → esm2022}/src/render3/pipe.mjs +0 -0
  302. /package/{esm2020 → esm2022}/src/render3/profiler.mjs +0 -0
  303. /package/{esm2020 → esm2022}/src/render3/pure_function.mjs +0 -0
  304. /package/{esm2020 → esm2022}/src/render3/query.mjs +0 -0
  305. /package/{esm2020 → esm2022}/src/render3/state.mjs +0 -0
  306. /package/{esm2020 → esm2022}/src/render3/styling/class_differ.mjs +0 -0
  307. /package/{esm2020 → esm2022}/src/render3/styling/static_styling.mjs +0 -0
  308. /package/{esm2020 → esm2022}/src/render3/styling/style_binding_list.mjs +0 -0
  309. /package/{esm2020 → esm2022}/src/render3/styling/styling_parser.mjs +0 -0
  310. /package/{esm2020 → esm2022}/src/render3/tokens.mjs +0 -0
  311. /package/{esm2020 → esm2022}/src/render3/util/attrs_utils.mjs +0 -0
  312. /package/{esm2020 → esm2022}/src/render3/util/discovery_utils.mjs +0 -0
  313. /package/{esm2020 → esm2022}/src/render3/util/global_utils.mjs +0 -0
  314. /package/{esm2020 → esm2022}/src/render3/util/injector_utils.mjs +0 -0
  315. /package/{esm2020 → esm2022}/src/render3/util/misc_utils.mjs +0 -0
  316. /package/{esm2020 → esm2022}/src/render3/util/stringify_utils.mjs +0 -0
  317. /package/{esm2020 → esm2022}/src/render3/util/view_traversal_utils.mjs +0 -0
  318. /package/{esm2020 → esm2022}/src/render3/util/view_utils.mjs +0 -0
  319. /package/{esm2020 → esm2022}/src/render3/view_engine_compatibility_prebound.mjs +0 -0
  320. /package/{esm2020 → esm2022}/src/sanitization/bypass.mjs +0 -0
  321. /package/{esm2020 → esm2022}/src/sanitization/html_sanitizer.mjs +0 -0
  322. /package/{esm2020 → esm2022}/src/sanitization/iframe_attrs_validation.mjs +0 -0
  323. /package/{esm2020 → esm2022}/src/sanitization/inert_body.mjs +0 -0
  324. /package/{esm2020 → esm2022}/src/sanitization/security.mjs +0 -0
  325. /package/{esm2020 → esm2022}/src/sanitization/url_sanitizer.mjs +0 -0
  326. /package/{esm2020 → esm2022}/src/signals/src/untracked.mjs +0 -0
  327. /package/{esm2020 → esm2022}/src/util/array_utils.mjs +0 -0
  328. /package/{esm2020 → esm2022}/src/util/assert.mjs +0 -0
  329. /package/{esm2020 → esm2022}/src/util/char_code.mjs +0 -0
  330. /package/{esm2020 → esm2022}/src/util/closure.mjs +0 -0
  331. /package/{esm2020 → esm2022}/src/util/coercion.mjs +0 -0
  332. /package/{esm2020 → esm2022}/src/util/comparison.mjs +0 -0
  333. /package/{esm2020 → esm2022}/src/util/decorators.mjs +0 -0
  334. /package/{esm2020 → esm2022}/src/util/dom.mjs +0 -0
  335. /package/{esm2020 → esm2022}/src/util/empty.mjs +0 -0
  336. /package/{esm2020 → esm2022}/src/util/errors.mjs +0 -0
  337. /package/{esm2020 → esm2022}/src/util/global.mjs +0 -0
  338. /package/{esm2020 → esm2022}/src/util/is_dev_mode.mjs +0 -0
  339. /package/{esm2020 → esm2022}/src/util/iterable.mjs +0 -0
  340. /package/{esm2020 → esm2022}/src/util/lang.mjs +0 -0
  341. /package/{esm2020 → esm2022}/src/util/microtask.mjs +0 -0
  342. /package/{esm2020 → esm2022}/src/util/ng_i18n_closure_mode.mjs +0 -0
  343. /package/{esm2020 → esm2022}/src/util/ng_jit_mode.mjs +0 -0
  344. /package/{esm2020 → esm2022}/src/util/ng_reflect.mjs +0 -0
  345. /package/{esm2020 → esm2022}/src/util/noop.mjs +0 -0
  346. /package/{esm2020 → esm2022}/src/util/property.mjs +0 -0
  347. /package/{esm2020 → esm2022}/src/util/raf.mjs +0 -0
  348. /package/{esm2020 → esm2022}/src/util/security/trusted_type_defs.mjs +0 -0
  349. /package/{esm2020 → esm2022}/src/util/security/trusted_types.mjs +0 -0
  350. /package/{esm2020 → esm2022}/src/util/security/trusted_types_bypass.mjs +0 -0
  351. /package/{esm2020 → esm2022}/src/util/stringify.mjs +0 -0
  352. /package/{esm2020 → esm2022}/src/view/provider_flags.mjs +0 -0
  353. /package/{esm2020 → esm2022}/src/zone/async-stack-tagging.mjs +0 -0
  354. /package/{esm2020 → esm2022}/src/zone/ng_zone.mjs +0 -0
  355. /package/{esm2020 → esm2022}/src/zone.mjs +0 -0
  356. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  357. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  358. /package/{esm2020 → esm2022}/testing/src/async.mjs +0 -0
  359. /package/{esm2020 → esm2022}/testing/src/component_fixture.mjs +0 -0
  360. /package/{esm2020 → esm2022}/testing/src/fake_async.mjs +0 -0
  361. /package/{esm2020 → esm2022}/testing/src/metadata_override.mjs +0 -0
  362. /package/{esm2020 → esm2022}/testing/src/metadata_overrider.mjs +0 -0
  363. /package/{esm2020 → esm2022}/testing/src/resolvers.mjs +0 -0
  364. /package/{esm2020 → esm2022}/testing/src/styling.mjs +0 -0
  365. /package/{esm2020 → esm2022}/testing/src/test_bed_common.mjs +0 -0
  366. /package/{esm2020 → esm2022}/testing/src/test_hooks.mjs +0 -0
  367. /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
  368. /package/{esm2020 → esm2022}/testing/src/testing_internal.mjs +0 -0
  369. /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
@@ -1,114 +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
- /**
9
- * Tracks the currently active reactive context (or `null` if there is no active
10
- * context).
11
- */
12
- let activeConsumer = null;
13
- /**
14
- * Counter tracking the next `ProducerId` or `ConsumerId`.
15
- */
16
- let _nextReactiveId = 0;
17
- /**
18
- * Get a new `ProducerId` or `ConsumerId`, allocated from the global sequence.
19
- *
20
- * The value returned is a type intersection of both branded types, and thus can be assigned to
21
- * either.
22
- */
23
- export function nextReactiveId() {
24
- return _nextReactiveId++;
25
- }
26
- /**
27
- * Set `consumer` as the active reactive context, and return the previous `Consumer`
28
- * (if any) for later restoration.
29
- */
30
- export function setActiveConsumer(consumer) {
31
- const prevConsumer = activeConsumer;
32
- activeConsumer = consumer;
33
- return prevConsumer;
34
- }
35
- /**
36
- * Notify all `Consumer`s of the given `Producer` that its value may have changed.
37
- */
38
- export function producerNotifyConsumers(producer) {
39
- for (const [consumerId, edge] of producer.consumers) {
40
- const consumer = edge.consumerRef.deref();
41
- if (consumer === undefined || consumer.trackingVersion !== edge.atTrackingVersion) {
42
- producer.consumers.delete(consumerId);
43
- consumer?.producers.delete(producer.id);
44
- continue;
45
- }
46
- consumer.notify();
47
- }
48
- }
49
- /**
50
- * Record a dependency on the given `Producer` by the current reactive `Consumer` if
51
- * one is present.
52
- */
53
- export function producerAccessed(producer) {
54
- if (activeConsumer === null) {
55
- return;
56
- }
57
- // Either create or update the dependency `Edge` in both directions.
58
- let edge = activeConsumer.producers.get(producer.id);
59
- if (edge === undefined) {
60
- edge = {
61
- consumerRef: activeConsumer.ref,
62
- producerRef: producer.ref,
63
- seenValueVersion: producer.valueVersion,
64
- atTrackingVersion: activeConsumer.trackingVersion,
65
- };
66
- activeConsumer.producers.set(producer.id, edge);
67
- producer.consumers.set(activeConsumer.id, edge);
68
- }
69
- else {
70
- edge.seenValueVersion = producer.valueVersion;
71
- edge.atTrackingVersion = activeConsumer.trackingVersion;
72
- }
73
- }
74
- /**
75
- * Checks if a `Producer` has a current value which is different than the value
76
- * last seen at a specific version by a `Consumer` which recorded a dependency on
77
- * this `Producer`.
78
- */
79
- function producerPollStatus(producer, lastSeenValueVersion) {
80
- // `producer.valueVersion` may be stale, but a mismatch still means that the value
81
- // last seen by the `Consumer` is also stale.
82
- if (producer.valueVersion !== lastSeenValueVersion) {
83
- return true;
84
- }
85
- // Trigger the `Producer` to update its `valueVersion` if necessary.
86
- producer.checkForChangedValue();
87
- // At this point, we can trust `producer.valueVersion`.
88
- return producer.valueVersion !== lastSeenValueVersion;
89
- }
90
- /**
91
- * Function called to check the stale status of dependencies (producers) for a given consumer. This
92
- * is a verification step before refreshing a given consumer: if none of the the dependencies
93
- * reports a semantically new value, then the `Consumer` has not observed a real dependency change
94
- * (even though it may have been notified of one).
95
- */
96
- export function consumerPollValueStatus(consumer) {
97
- for (const [producerId, edge] of consumer.producers) {
98
- const producer = edge.producerRef.deref();
99
- if (producer === undefined || edge.atTrackingVersion !== consumer.trackingVersion) {
100
- // This dependency edge is stale, so remove it.
101
- consumer.producers.delete(producerId);
102
- producer?.consumers.delete(consumer.id);
103
- continue;
104
- }
105
- if (producerPollStatus(producer, edge.seenValueVersion)) {
106
- // One of the dependencies reports a real value change.
107
- return true;
108
- }
109
- }
110
- // No dependency reported a real value change, so the `Consumer` has also not been
111
- // impacted.
112
- return false;
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL3NyYy9ncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUE0Qkg7OztHQUdHO0FBQ0gsSUFBSSxjQUFjLEdBQWtCLElBQUksQ0FBQztBQUV6Qzs7R0FFRztBQUNILElBQUksZUFBZSxHQUFXLENBQUMsQ0FBQztBQUVoQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQVEsZUFBZSxFQUE4QixDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBdUI7SUFDdkQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0lBQ3BDLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDMUIsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQTJGRDs7R0FFRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFrQjtJQUN4RCxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtRQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNqRixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0QyxRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEMsU0FBUztTQUNWO1FBRUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ25CO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFrQjtJQUNqRCxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUU7UUFDM0IsT0FBTztLQUNSO0lBRUQsb0VBQW9FO0lBQ3BFLElBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDdEIsSUFBSSxHQUFHO1lBQ0wsV0FBVyxFQUFFLGNBQWMsQ0FBQyxHQUFHO1lBQy9CLFdBQVcsRUFBRSxRQUFRLENBQUMsR0FBRztZQUN6QixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsWUFBWTtZQUN2QyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsZUFBZTtTQUNsRCxDQUFDO1FBQ0YsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2pEO1NBQU07UUFDTCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUM5QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQztLQUN6RDtBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxRQUFrQixFQUFFLG9CQUE0QjtJQUMxRSxrRkFBa0Y7SUFDbEYsNkNBQTZDO0lBQzdDLElBQUksUUFBUSxDQUFDLFlBQVksS0FBSyxvQkFBb0IsRUFBRTtRQUNsRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsb0VBQW9FO0lBQ3BFLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBRWhDLHVEQUF1RDtJQUN2RCxPQUFPLFFBQVEsQ0FBQyxZQUFZLEtBQUssb0JBQW9CLENBQUM7QUFDeEQsQ0FBQztBQWdFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxRQUFrQjtJQUN4RCxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtRQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFDLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUNqRiwrQ0FBK0M7WUFDL0MsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLFNBQVM7U0FDVjtRQUVELElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3ZELHVEQUF1RDtZQUN2RCxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFFRCxrRkFBa0Y7SUFDbEYsWUFBWTtJQUNaLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1dlYWtSZWZ9IGZyb20gJy4vd2Vha19yZWYnO1xuXG4vKipcbiAqIElkZW50aWZpZXIgZm9yIGEgYFByb2R1Y2VyYCwgd2hpY2ggaXMgYSBicmFuZGVkIGBudW1iZXJgLlxuICpcbiAqIE5vdGUgdGhhdCBgUHJvZHVjZXJJZGAgYW5kIGBDb25zdW1lcklkYCBhcmUgYXNzaWduZWQgZnJvbSB0aGUgc2FtZSBzZXF1ZW5jZSwgc28gdGhlIHNhbWUgYG51bWJlcmBcbiAqIHdpbGwgbmV2ZXIgYmUgdXNlZCBmb3IgYm90aC5cbiAqXG4gKiBCcmFuZGluZyBwcm92aWRlcyBhZGRpdGlvbmFsIHR5cGUgc2FmZXR5IGJ5IGVuc3VyaW5nIHRoYXQgYFByb2R1Y2VySWRgIGFuZCBgQ29uc3VtZXJJZGAgYXJlXG4gKiBtdXR1YWxseSB1bmFzc2lnbmFibGUgd2l0aG91dCBhIGNhc3QuIFNpbmNlIHNldmVyYWwgYE1hcGBzIGFyZSBrZXllZCBieSB0aGVzZSBJRHMsIHRoaXMgcHJldmVudHNcbiAqIGBQcm9kdWNlcklkYHMgZnJvbSBiZWluZyBpbmFkdmVydGVudGx5IHVzZWQgdG8gbG9vayB1cCBgQ29uc3VtZXJgcyBvciB2aWNlIHZlcnNhLlxuICovXG5leHBvcnQgdHlwZSBQcm9kdWNlcklkID0gbnVtYmVyJntfX3Byb2R1Y2VyOiB0cnVlfTtcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciBhIGBDb25zdW1lcmAsIHdoaWNoIGlzIGEgYnJhbmRlZCBgbnVtYmVyYC5cbiAqXG4gKiBOb3RlIHRoYXQgYFByb2R1Y2VySWRgIGFuZCBgQ29uc3VtZXJJZGAgYXJlIGFzc2lnbmVkIGZyb20gdGhlIHNhbWUgc2VxdWVuY2UsIHNvIHRoZSBzYW1lIGBudW1iZXJgXG4gKiB3aWxsIG5ldmVyIGJlIHVzZWQgZm9yIGJvdGguXG4gKlxuICogQnJhbmRpbmcgcHJvdmlkZXMgYWRkaXRpb25hbCB0eXBlIHNhZmV0eSBieSBlbnN1cmluZyB0aGF0IGBQcm9kdWNlcklkYCBhbmQgYENvbnN1bWVySWRgIGFyZVxuICogbXV0dWFsbHkgdW5hc3NpZ25hYmxlIHdpdGhvdXQgYSBjYXN0LiBTaW5jZSBzZXZlcmFsIGBNYXBgcyBhcmUga2V5ZWQgYnkgdGhlc2UgSURzLCB0aGlzIHByZXZlbnRzXG4gKiBgQ29uc3VtZXJJZGBzIGZyb20gYmVpbmcgaW5hZHZlcnRlbnRseSB1c2VkIHRvIGxvb2sgdXAgYFByb2R1Y2VyYHMgb3IgdmljZSB2ZXJzYS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uc3VtZXJJZCA9IG51bWJlciZ7X19jb25zdW1lcjogdHJ1ZX07XG5cbi8qKlxuICogVHJhY2tzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJlYWN0aXZlIGNvbnRleHQgKG9yIGBudWxsYCBpZiB0aGVyZSBpcyBubyBhY3RpdmVcbiAqIGNvbnRleHQpLlxuICovXG5sZXQgYWN0aXZlQ29uc3VtZXI6IENvbnN1bWVyfG51bGwgPSBudWxsO1xuXG4vKipcbiAqIENvdW50ZXIgdHJhY2tpbmcgdGhlIG5leHQgYFByb2R1Y2VySWRgIG9yIGBDb25zdW1lcklkYC5cbiAqL1xubGV0IF9uZXh0UmVhY3RpdmVJZDogbnVtYmVyID0gMDtcblxuLyoqXG4gKiBHZXQgYSBuZXcgYFByb2R1Y2VySWRgIG9yIGBDb25zdW1lcklkYCwgYWxsb2NhdGVkIGZyb20gdGhlIGdsb2JhbCBzZXF1ZW5jZS5cbiAqXG4gKiBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgYSB0eXBlIGludGVyc2VjdGlvbiBvZiBib3RoIGJyYW5kZWQgdHlwZXMsIGFuZCB0aHVzIGNhbiBiZSBhc3NpZ25lZCB0b1xuICogZWl0aGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dFJlYWN0aXZlSWQoKTogUHJvZHVjZXJJZCZDb25zdW1lcklkIHtcbiAgcmV0dXJuIChfbmV4dFJlYWN0aXZlSWQrKyBhcyBQcm9kdWNlcklkICYgQ29uc3VtZXJJZCk7XG59XG5cbi8qKlxuICogU2V0IGBjb25zdW1lcmAgYXMgdGhlIGFjdGl2ZSByZWFjdGl2ZSBjb250ZXh0LCBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyBgQ29uc3VtZXJgXG4gKiAoaWYgYW55KSBmb3IgbGF0ZXIgcmVzdG9yYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3RpdmVDb25zdW1lcihjb25zdW1lcjogQ29uc3VtZXJ8bnVsbCk6IENvbnN1bWVyfG51bGwge1xuICBjb25zdCBwcmV2Q29uc3VtZXIgPSBhY3RpdmVDb25zdW1lcjtcbiAgYWN0aXZlQ29uc3VtZXIgPSBjb25zdW1lcjtcbiAgcmV0dXJuIHByZXZDb25zdW1lcjtcbn1cblxuLyoqXG4gKiBBIGJpZGlyZWN0aW9uYWwgZWRnZSBpbiB0aGUgcHJvZHVjZXItY29uc3VtZXIgZGVwZW5kZW5jeSBncmFwaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGdlIHtcbiAgLyoqXG4gICAqIFdlYWtseSBoZWxkIHJlZmVyZW5jZSB0byB0aGUgYENvbnN1bWVyYCBzaWRlIG9mIHRoaXMgZWRnZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN1bWVyUmVmOiBXZWFrUmVmPENvbnN1bWVyPjtcblxuICAvKipcbiAgICogV2Vha2x5IGhlbGQgcmVmZXJlbmNlIHRvIHRoZSBgUHJvZHVjZXJgIHNpZGUgb2YgdGhpcyBlZGdlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvZHVjZXJSZWY6IFdlYWtSZWY8UHJvZHVjZXI+O1xuXG4gIC8qKlxuICAgKiBgdHJhY2tpbmdWZXJzaW9uYCBvZiB0aGUgYENvbnN1bWVyYCBhdCB3aGljaCB0aGlzIGRlcGVuZGVuY3kgZWRnZSB3YXMgbGFzdCBvYnNlcnZlZC5cbiAgICpcbiAgICogSWYgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBgQ29uc3VtZXJgJ3MgY3VycmVudCBgdHJhY2tpbmdWZXJzaW9uYCwgdGhlbiB0aGlzIGRlcGVuZGVuY3kgcmVjb3JkXG4gICAqIGlzIHN0YWxlLCBhbmQgbmVlZHMgdG8gYmUgY2xlYW5lZCB1cC5cbiAgICovXG4gIGF0VHJhY2tpbmdWZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGB2YWx1ZVZlcnNpb25gIG9mIHRoZSBgUHJvZHVjZXJgIGF0IHRoZSB0aW1lIHRoaXMgZGVwZW5kZW5jeSB3YXMgbGFzdCBhY2Nlc3NlZC5cbiAgICpcbiAgICogVGhpcyBpcyB1c2VkIGJ5IGBjb25zdW1lclBvbGxWYWx1ZVN0YXR1c2AgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBgQ29uc3VtZXJgJ3MgZGVwZW5kZW5jaWVzIGhhdmVcbiAgICogc2VtYW50aWNhbGx5IGNoYW5nZWQuXG4gICAqL1xuICBzZWVuVmFsdWVWZXJzaW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHZhbHVlIHRoYXQgY2FuIGJlIHJlYWQgcmVhY3RpdmVseSwgYW5kIGNhbiBub3RpZnkgcmVhZGVycyAoYENvbnN1bWVyYHMpXG4gKiB3aGVuIGl0IGNoYW5nZXMuXG4gKlxuICogUHJvZHVjZXJzIG1haW50YWluIGEgd2VhayByZWZlcmVuY2UgdG8gYW55IGBDb25zdW1lcmBzIHdoaWNoIG1heSBkZXBlbmQgb24gdGhlXG4gKiBwcm9kdWNlcidzIHZhbHVlLlxuICpcbiAqIEltcGxlbWVudGVycyBvZiBgUHJvZHVjZXJgIGV4cG9zZSBhIG1vbm90b25pYyBgdmFsdWVWZXJzaW9uYCBjb3VudGVyLCBhbmQgYXJlIHJlc3BvbnNpYmxlXG4gKiBmb3IgaW5jcmVtZW50aW5nIHRoaXMgdmVyc2lvbiB3aGVuIHRoZWlyIHZhbHVlIHNlbWFudGljYWxseSBjaGFuZ2VzLiBTb21lIFByb2R1Y2VycyBtYXlcbiAqIHByb2R1Y2UgdGhpcyB2YWx1ZSBsYXppbHkgYW5kIHRodXMgYXQgdGltZXMgbmVlZCB0byBiZSBwb2xsZWQgZm9yIHBvdGVudGlhbCB1cGRhdGVzIHRvXG4gKiB0aGVpciB2YWx1ZSAoYW5kIGJ5IGV4dGVuc2lvbiB0aGVpciBgdmFsdWVWZXJzaW9uYCkuIFRoaXMgaXMgYWNjb21wbGlzaGVkIHZpYSB0aGVcbiAqIGBjaGVja0ZvckNoYW5nZWRWYWx1ZWAgbWV0aG9kIGZvciBQcm9kdWNlcnMsIHdoaWNoIHNob3VsZCBwZXJmb3JtIHdoYXRldmVyIGNhbGN1bGF0aW9uc1xuICogYXJlIG5lY2Vzc2FyeSB0byBlbnN1cmUgYHZhbHVlVmVyc2lvbmAgaXMgdXAgdG8gZGF0ZS5cbiAqXG4gKiBgUHJvZHVjZXJgcyBzdXBwb3J0IHR3byBvcGVyYXRpb25zOlxuICogICAqIGBwcm9kdWNlck5vdGlmeUNvbnN1bWVyc2BcbiAqICAgKiBgcHJvZHVjZXJBY2Nlc3NlZGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9kdWNlciB7XG4gIC8qKlxuICAgKiBOdW1lcmljIGlkZW50aWZpZXIgb2YgdGhpcyBgUHJvZHVjZXJgLlxuICAgKlxuICAgKiBNYXkgYWxzbyBiZSB1c2VkIHRvIHNhdGlzZnkgdGhlIGludGVyZmFjZSBmb3IgYENvbnN1bWVyYC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBQcm9kdWNlcklkO1xuXG4gIC8qKlxuICAgKiBBIGBXZWFrUmVmYCB0byB0aGlzIGBQcm9kdWNlcmAgaW5zdGFuY2UuXG4gICAqXG4gICAqIEFuIGltcGxlbWVudGVyIHByb3ZpZGVzIHRoaXMgYXMgYSBjYWNoZWQgdmFsdWUgdG8gYXZvaWQgdGhlIG5lZWQgdG8gaW5zdGFudGlhdGVcbiAgICogbXVsdGlwbGUgYFdlYWtSZWZgIGluc3RhbmNlcyBmb3IgdGhlIHNhbWUgYFByb2R1Y2VyYC5cbiAgICpcbiAgICogTWF5IGFsc28gYmUgdXNlZCB0byBzYXRpc2Z5IHRoZSBpbnRlcmZhY2UgZm9yIGBDb25zdW1lcmAuXG4gICAqL1xuICByZWFkb25seSByZWY6IFdlYWtSZWY8UHJvZHVjZXI+O1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBkZXBlbmRlbmN5IGBFZGdlYHMgdG8gYENvbnN1bWVyYHMsIGtleWVkIGJ5IHRoZSBgQ29uc3VtZXJJZGAuXG4gICAqXG4gICAqIFVzZWQgd2hlbiB0aGUgcHJvZHVjZWQgdmFsdWUgY2hhbmdlcyB0byBub3RpZnkgaW50ZXJlc3RlZCBgQ29uc3VtZXJgcy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN1bWVyczogTWFwPENvbnN1bWVySWQsIEVkZ2U+O1xuXG4gIC8qKlxuICAgKiBNb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgY291bnRlciB3aGljaCBpbmNyZWFzZXMgd2hlbiB0aGUgdmFsdWUgb2YgdGhpcyBgUHJvZHVjZXJgXG4gICAqIHNlbWFudGljYWxseSBjaGFuZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVWZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGF0IGB2YWx1ZVZlcnNpb25gIGlzIHVwIHRvIGRhdGUgZm9yIHRoZSBgUHJvZHVjZXJgJ3MgdmFsdWUuXG4gICAqXG4gICAqIFNvbWUgYFByb2R1Y2VyYHMgbWF5IHByb2R1Y2UgdmFsdWVzIGxhemlseSwgYW5kIHRodXMgcmVxdWlyZSBwb2xsaW5nIGJlZm9yZSB0aGVpclxuICAgKiBgdmFsdWVWZXJzaW9uYCBjYW4gYmUgY29tcGFyZWQgd2l0aCB0aGUgdmVyc2lvbiBjYXB0dXJlZCBkdXJpbmcgYSBwcmV2aW91cyByZWFkLlxuICAgKi9cbiAgY2hlY2tGb3JDaGFuZ2VkVmFsdWUoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBOb3RpZnkgYWxsIGBDb25zdW1lcmBzIG9mIHRoZSBnaXZlbiBgUHJvZHVjZXJgIHRoYXQgaXRzIHZhbHVlIG1heSBoYXZlIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWNlck5vdGlmeUNvbnN1bWVycyhwcm9kdWNlcjogUHJvZHVjZXIpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbY29uc3VtZXJJZCwgZWRnZV0gb2YgcHJvZHVjZXIuY29uc3VtZXJzKSB7XG4gICAgY29uc3QgY29uc3VtZXIgPSBlZGdlLmNvbnN1bWVyUmVmLmRlcmVmKCk7XG4gICAgaWYgKGNvbnN1bWVyID09PSB1bmRlZmluZWQgfHwgY29uc3VtZXIudHJhY2tpbmdWZXJzaW9uICE9PSBlZGdlLmF0VHJhY2tpbmdWZXJzaW9uKSB7XG4gICAgICBwcm9kdWNlci5jb25zdW1lcnMuZGVsZXRlKGNvbnN1bWVySWQpO1xuICAgICAgY29uc3VtZXI/LnByb2R1Y2Vycy5kZWxldGUocHJvZHVjZXIuaWQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3VtZXIubm90aWZ5KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWNvcmQgYSBkZXBlbmRlbmN5IG9uIHRoZSBnaXZlbiBgUHJvZHVjZXJgIGJ5IHRoZSBjdXJyZW50IHJlYWN0aXZlIGBDb25zdW1lcmAgaWZcbiAqIG9uZSBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvZHVjZXJBY2Nlc3NlZChwcm9kdWNlcjogUHJvZHVjZXIpOiB2b2lkIHtcbiAgaWYgKGFjdGl2ZUNvbnN1bWVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRWl0aGVyIGNyZWF0ZSBvciB1cGRhdGUgdGhlIGRlcGVuZGVuY3kgYEVkZ2VgIGluIGJvdGggZGlyZWN0aW9ucy5cbiAgbGV0IGVkZ2UgPSBhY3RpdmVDb25zdW1lci5wcm9kdWNlcnMuZ2V0KHByb2R1Y2VyLmlkKTtcbiAgaWYgKGVkZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgIGVkZ2UgPSB7XG4gICAgICBjb25zdW1lclJlZjogYWN0aXZlQ29uc3VtZXIucmVmLFxuICAgICAgcHJvZHVjZXJSZWY6IHByb2R1Y2VyLnJlZixcbiAgICAgIHNlZW5WYWx1ZVZlcnNpb246IHByb2R1Y2VyLnZhbHVlVmVyc2lvbixcbiAgICAgIGF0VHJhY2tpbmdWZXJzaW9uOiBhY3RpdmVDb25zdW1lci50cmFja2luZ1ZlcnNpb24sXG4gICAgfTtcbiAgICBhY3RpdmVDb25zdW1lci5wcm9kdWNlcnMuc2V0KHByb2R1Y2VyLmlkLCBlZGdlKTtcbiAgICBwcm9kdWNlci5jb25zdW1lcnMuc2V0KGFjdGl2ZUNvbnN1bWVyLmlkLCBlZGdlKTtcbiAgfSBlbHNlIHtcbiAgICBlZGdlLnNlZW5WYWx1ZVZlcnNpb24gPSBwcm9kdWNlci52YWx1ZVZlcnNpb247XG4gICAgZWRnZS5hdFRyYWNraW5nVmVyc2lvbiA9IGFjdGl2ZUNvbnN1bWVyLnRyYWNraW5nVmVyc2lvbjtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGBQcm9kdWNlcmAgaGFzIGEgY3VycmVudCB2YWx1ZSB3aGljaCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgdmFsdWVcbiAqIGxhc3Qgc2VlbiBhdCBhIHNwZWNpZmljIHZlcnNpb24gYnkgYSBgQ29uc3VtZXJgIHdoaWNoIHJlY29yZGVkIGEgZGVwZW5kZW5jeSBvblxuICogdGhpcyBgUHJvZHVjZXJgLlxuICovXG5mdW5jdGlvbiBwcm9kdWNlclBvbGxTdGF0dXMocHJvZHVjZXI6IFByb2R1Y2VyLCBsYXN0U2VlblZhbHVlVmVyc2lvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIC8vIGBwcm9kdWNlci52YWx1ZVZlcnNpb25gIG1heSBiZSBzdGFsZSwgYnV0IGEgbWlzbWF0Y2ggc3RpbGwgbWVhbnMgdGhhdCB0aGUgdmFsdWVcbiAgLy8gbGFzdCBzZWVuIGJ5IHRoZSBgQ29uc3VtZXJgIGlzIGFsc28gc3RhbGUuXG4gIGlmIChwcm9kdWNlci52YWx1ZVZlcnNpb24gIT09IGxhc3RTZWVuVmFsdWVWZXJzaW9uKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBUcmlnZ2VyIHRoZSBgUHJvZHVjZXJgIHRvIHVwZGF0ZSBpdHMgYHZhbHVlVmVyc2lvbmAgaWYgbmVjZXNzYXJ5LlxuICBwcm9kdWNlci5jaGVja0ZvckNoYW5nZWRWYWx1ZSgpO1xuXG4gIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGNhbiB0cnVzdCBgcHJvZHVjZXIudmFsdWVWZXJzaW9uYC5cbiAgcmV0dXJuIHByb2R1Y2VyLnZhbHVlVmVyc2lvbiAhPT0gbGFzdFNlZW5WYWx1ZVZlcnNpb247XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHJlYWRlciB0aGF0IGNhbiBkZXBlbmQgb24gcmVhY3RpdmUgdmFsdWVzIChgUHJvZHVjZXJgcykgYW5kIHJlY2VpdmVcbiAqIG5vdGlmaWNhdGlvbnMgd2hlbiB0aG9zZSB2YWx1ZXMgY2hhbmdlLlxuICpcbiAqIGBDb25zdW1lcmBzIGRvIG5vdCB3cmFwIHRoZSByZWFkcyB0aGV5IGNvbnN1bWUgdGhlbXNlbHZlcywgYnV0IHJhdGhlciBjYW4gYmUgc2V0XG4gKiBhcyB0aGUgYWN0aXZlIHJlYWRlciB2aWEgYHNldEFjdGl2ZUNvbnN1bWVyYC5cbiAqXG4gKiBUaGUgc2V0IG9mIGRlcGVuZGVuY2llcyBvZiBhIGBDb25zdW1lcmAgaXMgZHluYW1pYy4gSW1wbGVtZW50ZXJzIGV4cG9zZSBhXG4gKiBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgYHRyYWNraW5nVmVyc2lvbmAgY291bnRlciwgd2hpY2ggaW5jcmVtZW50cyB3aGVuZXZlclxuICogdGhlIGBDb25zdW1lcmAgaXMgYWJvdXQgdG8gcmUtcnVuIGFueSByZWFjdGl2ZSByZWFkcyBpdCBuZWVkcyBhbmQgZXN0YWJsaXNoIGFcbiAqIG5ldyBzZXQgb2YgZGVwZW5kZW5jaWVzIGFzIGEgcmVzdWx0LlxuICpcbiAqIGBQcm9kdWNlcmBzIHN0b3JlIHRoZSBsYXN0IGB0cmFja2luZ1ZlcnNpb25gIHRoZXkndmUgc2VlbiBmcm9tIGBDb25zdW1lcmBzIHdoaWNoXG4gKiBoYXZlIHJlYWQgdGhlbS4gVGhpcyBhbGxvd3MgYSBgUHJvZHVjZXJgIHRvIGlkZW50aWZ5IHdoZXRoZXIgaXRzIHJlY29yZCBvZiB0aGVcbiAqIGRlcGVuZGVuY3kgaXMgY3VycmVudCBvciBzdGFsZSwgYnkgY29tcGFyaW5nIHRoZSBgQ29uc3VtZXJgJ3MgYHRyYWNraW5nVmVyc2lvbmBcbiAqIHRvIHRoZSB2ZXJzaW9uIGF0IHdoaWNoIHRoZSBkZXBlbmRlbmN5IHdhcyBlc3RhYmxpc2hlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdW1lciB7XG4gIC8qKlxuICAgKiBOdW1lcmljIGlkZW50aWZpZXIgb2YgdGhpcyBgUHJvZHVjZXJgLlxuICAgKlxuICAgKiBNYXkgYWxzbyBiZSB1c2VkIHRvIHNhdGlzZnkgdGhlIGludGVyZmFjZSBmb3IgYFByb2R1Y2VyYC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBDb25zdW1lcklkO1xuXG4gIC8qKlxuICAgKiBBIGBXZWFrUmVmYCB0byB0aGlzIGBDb25zdW1lcmAgaW5zdGFuY2UuXG4gICAqXG4gICAqIEFuIGltcGxlbWVudGVyIHByb3ZpZGVzIHRoaXMgYXMgYSBjYWNoZWQgdmFsdWUgdG8gYXZvaWQgdGhlIG5lZWQgdG8gaW5zdGFudGlhdGVcbiAgICogbXVsdGlwbGUgYFdlYWtSZWZgIGluc3RhbmNlcyBmb3IgdGhlIHNhbWUgYENvbnN1bWVyYC5cbiAgICpcbiAgICogTWF5IGFsc28gYmUgdXNlZCB0byBzYXRpc2Z5IHRoZSBpbnRlcmZhY2UgZm9yIGBQcm9kdWNlcmAuXG4gICAqL1xuICByZWFkb25seSByZWY6IFdlYWtSZWY8Q29uc3VtZXI+O1xuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBgRWRnZWBzIHRvIGBQcm9kdWNlcmAgZGVwZW5kZW5jaWVzLCBrZXllZCBieSB0aGUgYFByb2R1Y2VySWRgLlxuICAgKlxuICAgKiBVc2VkIHRvIHBvbGwgYFByb2R1Y2VyYHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgQ29uc3VtZXJgIGhhcyByZWFsbHkgdXBkYXRlZFxuICAgKiBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBwcm9kdWNlcnM6IE1hcDxQcm9kdWNlcklkLCBFZGdlPjtcblxuICAvKipcbiAgICogTW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGNvdW50ZXIgcmVwcmVzZW50aW5nIGEgdmVyc2lvbiBvZiB0aGlzIGBDb25zdW1lcmAnc1xuICAgKiBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSB0cmFja2luZ1ZlcnNpb246IG51bWJlcjtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBgUHJvZHVjZXJgIGRlcGVuZGVuY3kgb2YgdGhpcyBgQ29uc3VtZXJgIGluZGljYXRlcyBpdCBtYXlcbiAgICogaGF2ZSBhIG5ldyB2YWx1ZS5cbiAgICpcbiAgICogTm90aWZpY2F0aW9uIGFsb25lIGRvZXMgbm90IG1lYW4gdGhlIGBQcm9kdWNlcmAgaGFzIGRlZmluaXRlbHkgcHJvZHVjZWQgYVxuICAgKiBzZW1hbnRpY2FsbHkgZGlmZmVyZW50IHZhbHVlLCBvbmx5IHRoYXQgaXQgX21heV8gaGF2ZSBjaGFuZ2VkLiBCZWZvcmUgYVxuICAgKiBgQ29uc3VtZXJgIHJlLXJ1bnMgYW55IGNvbXB1dGF0aW9ucyBvciBzaWRlIGVmZmVjdHMsIGl0IHNob3VsZCB1c2UgdGhlXG4gICAqIGBjb25zdW1lclBvbGxWYWx1ZVN0YXR1c2AgbWV0aG9kIHRvIHBvbGwgdGhlIGBQcm9kdWNlcmBzIG9uIHdoaWNoIGl0IGRlcGVuZHNcbiAgICogYW5kIGRldGVybWluZSBpZiBhbnkgb2YgdGhlbSBoYXZlIGFjdHVhbGx5IHVwZGF0ZWQuXG4gICAqL1xuICBub3RpZnkoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBjYWxsZWQgdG8gY2hlY2sgdGhlIHN0YWxlIHN0YXR1cyBvZiBkZXBlbmRlbmNpZXMgKHByb2R1Y2VycykgZm9yIGEgZ2l2ZW4gY29uc3VtZXIuIFRoaXNcbiAqIGlzIGEgdmVyaWZpY2F0aW9uIHN0ZXAgYmVmb3JlIHJlZnJlc2hpbmcgYSBnaXZlbiBjb25zdW1lcjogaWYgbm9uZSBvZiB0aGUgdGhlIGRlcGVuZGVuY2llc1xuICogcmVwb3J0cyBhIHNlbWFudGljYWxseSBuZXcgdmFsdWUsIHRoZW4gdGhlIGBDb25zdW1lcmAgaGFzIG5vdCBvYnNlcnZlZCBhIHJlYWwgZGVwZW5kZW5jeSBjaGFuZ2VcbiAqIChldmVuIHRob3VnaCBpdCBtYXkgaGF2ZSBiZWVuIG5vdGlmaWVkIG9mIG9uZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lclBvbGxWYWx1ZVN0YXR1cyhjb25zdW1lcjogQ29uc3VtZXIpOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBbcHJvZHVjZXJJZCwgZWRnZV0gb2YgY29uc3VtZXIucHJvZHVjZXJzKSB7XG4gICAgY29uc3QgcHJvZHVjZXIgPSBlZGdlLnByb2R1Y2VyUmVmLmRlcmVmKCk7XG5cbiAgICBpZiAocHJvZHVjZXIgPT09IHVuZGVmaW5lZCB8fCBlZGdlLmF0VHJhY2tpbmdWZXJzaW9uICE9PSBjb25zdW1lci50cmFja2luZ1ZlcnNpb24pIHtcbiAgICAgIC8vIFRoaXMgZGVwZW5kZW5jeSBlZGdlIGlzIHN0YWxlLCBzbyByZW1vdmUgaXQuXG4gICAgICBjb25zdW1lci5wcm9kdWNlcnMuZGVsZXRlKHByb2R1Y2VySWQpO1xuICAgICAgcHJvZHVjZXI/LmNvbnN1bWVycy5kZWxldGUoY29uc3VtZXIuaWQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHByb2R1Y2VyUG9sbFN0YXR1cyhwcm9kdWNlciwgZWRnZS5zZWVuVmFsdWVWZXJzaW9uKSkge1xuICAgICAgLy8gT25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgcmVwb3J0cyBhIHJlYWwgdmFsdWUgY2hhbmdlLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gTm8gZGVwZW5kZW5jeSByZXBvcnRlZCBhIHJlYWwgdmFsdWUgY2hhbmdlLCBzbyB0aGUgYENvbnN1bWVyYCBoYXMgYWxzbyBub3QgYmVlblxuICAvLyBpbXBhY3RlZC5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl19
@@ -1,78 +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 { createSignalFromFunction, defaultEquals } from './api';
9
- import { nextReactiveId, producerAccessed, producerNotifyConsumers } from './graph';
10
- import { newWeakRef } from './weak_ref';
11
- /**
12
- * Backing type for a `SettableSignal`, a mutable reactive value.
13
- */
14
- class SettableSignalImpl {
15
- constructor(value, equal) {
16
- this.value = value;
17
- this.equal = equal;
18
- this.id = nextReactiveId();
19
- this.ref = newWeakRef(this);
20
- this.consumers = new Map();
21
- this.valueVersion = 0;
22
- }
23
- checkForChangedValue() {
24
- // Settable signals can only change when set, so there's nothing to check here.
25
- }
26
- /**
27
- * Directly update the value of the signal to a new value, which may or may not be
28
- * equal to the previous.
29
- *
30
- * In the event that `newValue` is semantically equal to the current value, `set` is
31
- * a no-op.
32
- */
33
- set(newValue) {
34
- if (!this.equal(this.value, newValue)) {
35
- this.value = newValue;
36
- this.valueVersion++;
37
- producerNotifyConsumers(this);
38
- }
39
- }
40
- /**
41
- * Derive a new value for the signal from its current value using the `updater` function.
42
- *
43
- * This is equivalent to calling `set` on the result of running `updater` on the current
44
- * value.
45
- */
46
- update(updater) {
47
- this.set(updater(this.value));
48
- }
49
- /**
50
- * Calls `mutator` on the current value and assumes that it has been mutated.
51
- */
52
- mutate(mutator) {
53
- // Mutate bypasses equality checks as it's by definition changing the value.
54
- mutator(this.value);
55
- this.valueVersion++;
56
- producerNotifyConsumers(this);
57
- }
58
- signal() {
59
- producerAccessed(this);
60
- return this.value;
61
- }
62
- }
63
- /**
64
- * Create a `Signal` that can be set or updated directly.
65
- *
66
- * @developerPreview
67
- */
68
- export function signal(initialValue, equal = defaultEquals) {
69
- const signalNode = new SettableSignalImpl(initialValue, equal);
70
- // Casting here is required for g3.
71
- const signalFn = createSignalFromFunction(signalNode.signal.bind(signalNode), {
72
- set: signalNode.set.bind(signalNode),
73
- update: signalNode.update.bind(signalNode),
74
- mutate: signalNode.mutate.bind(signalNode),
75
- });
76
- return signalFn;
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2lnbmFscy9zcmMvc2lnbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyx3QkFBd0IsRUFBRSxhQUFhLEVBQTBCLE1BQU0sT0FBTyxDQUFDO0FBQ3ZGLE9BQU8sRUFBbUIsY0FBYyxFQUFZLGdCQUFnQixFQUFFLHVCQUF1QixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzlHLE9BQU8sRUFBQyxVQUFVLEVBQVUsTUFBTSxZQUFZLENBQUM7QUEwQi9DOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0I7SUFDdEIsWUFBb0IsS0FBUSxFQUFVLEtBQXlCO1FBQTNDLFVBQUssR0FBTCxLQUFLLENBQUc7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV0RCxPQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFDdEIsUUFBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7UUFDakQsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFMaUQsQ0FBQztJQU9uRSxvQkFBb0I7UUFDbEIsK0VBQStFO0lBQ2pGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQUMsUUFBVztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQXdCO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUEyQjtRQUNoQyw0RUFBNEU7UUFDNUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU07UUFDSixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxNQUFNLENBQ2xCLFlBQWUsRUFBRSxRQUE0QixhQUFhO0lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksa0JBQWtCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9ELG1DQUFtQztJQUNuQyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMzRCxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDMUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztLQUMzQyxDQUFpQyxDQUFDO0lBQ3BELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtjcmVhdGVTaWduYWxGcm9tRnVuY3Rpb24sIGRlZmF1bHRFcXVhbHMsIFNpZ25hbCwgVmFsdWVFcXVhbGl0eUZufSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0NvbnN1bWVySWQsIEVkZ2UsIG5leHRSZWFjdGl2ZUlkLCBQcm9kdWNlciwgcHJvZHVjZXJBY2Nlc3NlZCwgcHJvZHVjZXJOb3RpZnlDb25zdW1lcnN9IGZyb20gJy4vZ3JhcGgnO1xuaW1wb3J0IHtuZXdXZWFrUmVmLCBXZWFrUmVmfSBmcm9tICcuL3dlYWtfcmVmJztcblxuLyoqXG4gKiBBIGBTaWduYWxgIHdpdGggYSB2YWx1ZSB0aGF0IGNhbiBiZSBtdXRhdGVkIHZpYSBhIHNldHRlciBpbnRlcmZhY2UuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXR0YWJsZVNpZ25hbDxUPiBleHRlbmRzIFNpZ25hbDxUPiB7XG4gIC8qKlxuICAgKiBEaXJlY3RseSBzZXQgdGhlIHNpZ25hbCB0byBhIG5ldyB2YWx1ZSwgYW5kIG5vdGlmeSBhbnkgZGVwZW5kZW50cy5cbiAgICovXG4gIHNldCh2YWx1ZTogVCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIHNpZ25hbCBiYXNlZCBvbiBpdHMgY3VycmVudCB2YWx1ZSwgYW5kXG4gICAqIG5vdGlmeSBhbnkgZGVwZW5kZW50cy5cbiAgICovXG4gIHVwZGF0ZSh1cGRhdGVGbjogKHZhbHVlOiBUKSA9PiBUKTogdm9pZDtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBjdXJyZW50IHZhbHVlIGJ5IG11dGF0aW5nIGl0IGluLXBsYWNlLCBhbmRcbiAgICogbm90aWZ5IGFueSBkZXBlbmRlbnRzLlxuICAgKi9cbiAgbXV0YXRlKG11dGF0b3JGbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZDtcbn1cblxuLyoqXG4gKiBCYWNraW5nIHR5cGUgZm9yIGEgYFNldHRhYmxlU2lnbmFsYCwgYSBtdXRhYmxlIHJlYWN0aXZlIHZhbHVlLlxuICovXG5jbGFzcyBTZXR0YWJsZVNpZ25hbEltcGw8VD4gaW1wbGVtZW50cyBQcm9kdWNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmFsdWU6IFQsIHByaXZhdGUgZXF1YWw6IFZhbHVlRXF1YWxpdHlGbjxUPikge31cblxuICByZWFkb25seSBpZCA9IG5leHRSZWFjdGl2ZUlkKCk7XG4gIHJlYWRvbmx5IHJlZiA9IG5ld1dlYWtSZWYodGhpcyk7XG4gIHJlYWRvbmx5IGNvbnN1bWVycyA9IG5ldyBNYXA8Q29uc3VtZXJJZCwgRWRnZT4oKTtcbiAgdmFsdWVWZXJzaW9uID0gMDtcblxuICBjaGVja0ZvckNoYW5nZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICAvLyBTZXR0YWJsZSBzaWduYWxzIGNhbiBvbmx5IGNoYW5nZSB3aGVuIHNldCwgc28gdGhlcmUncyBub3RoaW5nIHRvIGNoZWNrIGhlcmUuXG4gIH1cblxuICAvKipcbiAgICogRGlyZWN0bHkgdXBkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgc2lnbmFsIHRvIGEgbmV3IHZhbHVlLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZVxuICAgKiBlcXVhbCB0byB0aGUgcHJldmlvdXMuXG4gICAqXG4gICAqIEluIHRoZSBldmVudCB0aGF0IGBuZXdWYWx1ZWAgaXMgc2VtYW50aWNhbGx5IGVxdWFsIHRvIHRoZSBjdXJyZW50IHZhbHVlLCBgc2V0YCBpc1xuICAgKiBhIG5vLW9wLlxuICAgKi9cbiAgc2V0KG5ld1ZhbHVlOiBUKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmVxdWFsKHRoaXMudmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy52YWx1ZVZlcnNpb24rKztcbiAgICAgIHByb2R1Y2VyTm90aWZ5Q29uc3VtZXJzKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgYSBuZXcgdmFsdWUgZm9yIHRoZSBzaWduYWwgZnJvbSBpdHMgY3VycmVudCB2YWx1ZSB1c2luZyB0aGUgYHVwZGF0ZXJgIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgc2V0YCBvbiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYHVwZGF0ZXJgIG9uIHRoZSBjdXJyZW50XG4gICAqIHZhbHVlLlxuICAgKi9cbiAgdXBkYXRlKHVwZGF0ZXI6ICh2YWx1ZTogVCkgPT4gVCk6IHZvaWQge1xuICAgIHRoaXMuc2V0KHVwZGF0ZXIodGhpcy52YWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGBtdXRhdG9yYCBvbiB0aGUgY3VycmVudCB2YWx1ZSBhbmQgYXNzdW1lcyB0aGF0IGl0IGhhcyBiZWVuIG11dGF0ZWQuXG4gICAqL1xuICBtdXRhdGUobXV0YXRvcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgLy8gTXV0YXRlIGJ5cGFzc2VzIGVxdWFsaXR5IGNoZWNrcyBhcyBpdCdzIGJ5IGRlZmluaXRpb24gY2hhbmdpbmcgdGhlIHZhbHVlLlxuICAgIG11dGF0b3IodGhpcy52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZVZlcnNpb24rKztcbiAgICBwcm9kdWNlck5vdGlmeUNvbnN1bWVycyh0aGlzKTtcbiAgfVxuXG4gIHNpZ25hbCgpOiBUIHtcbiAgICBwcm9kdWNlckFjY2Vzc2VkKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYFNpZ25hbGAgdGhhdCBjYW4gYmUgc2V0IG9yIHVwZGF0ZWQgZGlyZWN0bHkuXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbDxUPihcbiAgICBpbml0aWFsVmFsdWU6IFQsIGVxdWFsOiBWYWx1ZUVxdWFsaXR5Rm48VD4gPSBkZWZhdWx0RXF1YWxzKTogU2V0dGFibGVTaWduYWw8VD4ge1xuICBjb25zdCBzaWduYWxOb2RlID0gbmV3IFNldHRhYmxlU2lnbmFsSW1wbChpbml0aWFsVmFsdWUsIGVxdWFsKTtcbiAgLy8gQ2FzdGluZyBoZXJlIGlzIHJlcXVpcmVkIGZvciBnMy5cbiAgY29uc3Qgc2lnbmFsRm4gPSBjcmVhdGVTaWduYWxGcm9tRnVuY3Rpb24oc2lnbmFsTm9kZS5zaWduYWwuYmluZChzaWduYWxOb2RlKSwge1xuICAgICAgICAgICAgICAgICAgICAgc2V0OiBzaWduYWxOb2RlLnNldC5iaW5kKHNpZ25hbE5vZGUpLFxuICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiBzaWduYWxOb2RlLnVwZGF0ZS5iaW5kKHNpZ25hbE5vZGUpLFxuICAgICAgICAgICAgICAgICAgICAgbXV0YXRlOiBzaWduYWxOb2RlLm11dGF0ZS5iaW5kKHNpZ25hbE5vZGUpLFxuICAgICAgICAgICAgICAgICAgIH0pIGFzIHVua25vd24gYXMgU2V0dGFibGVTaWduYWw8VD47XG4gIHJldHVybiBzaWduYWxGbjtcbn1cbiJdfQ==
@@ -1,54 +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 { consumerPollValueStatus, nextReactiveId, setActiveConsumer } from './graph';
9
- import { newWeakRef } from './weak_ref';
10
- /**
11
- * Watches a reactive expression and allows it to be scheduled to re-run
12
- * when any dependencies notify of a change.
13
- *
14
- * `Watch` doesn't run reactive expressions itself, but relies on a consumer-
15
- * provided scheduling operation to coordinate calling `Watch.run()`.
16
- */
17
- export class Watch {
18
- constructor(watch, schedule) {
19
- this.watch = watch;
20
- this.schedule = schedule;
21
- this.id = nextReactiveId();
22
- this.ref = newWeakRef(this);
23
- this.producers = new Map();
24
- this.trackingVersion = 0;
25
- this.dirty = false;
26
- }
27
- notify() {
28
- if (!this.dirty) {
29
- this.schedule(this);
30
- }
31
- this.dirty = true;
32
- }
33
- /**
34
- * Execute the reactive expression in the context of this `Watch` consumer.
35
- *
36
- * Should be called by the user scheduling algorithm when the provided
37
- * `schedule` hook is called by `Watch`.
38
- */
39
- run() {
40
- this.dirty = false;
41
- if (this.trackingVersion !== 0 && !consumerPollValueStatus(this)) {
42
- return;
43
- }
44
- const prevConsumer = setActiveConsumer(this);
45
- this.trackingVersion++;
46
- try {
47
- this.watch();
48
- }
49
- finally {
50
- setActiveConsumer(prevConsumer);
51
- }
52
- }
53
- }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL3NyYy93YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQVcsdUJBQXVCLEVBQVEsY0FBYyxFQUFjLGlCQUFpQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQy9HLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFdEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLEtBQUs7SUFRaEIsWUFBb0IsS0FBaUIsRUFBVSxRQUFnQztRQUEzRCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFQdEUsT0FBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLFFBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBQ2pELG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRVosVUFBSyxHQUFHLEtBQUssQ0FBQztJQUU0RCxDQUFDO0lBRW5GLE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hFLE9BQU87U0FDUjtRQUVELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJO1lBQ0YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7Z0JBQVM7WUFDUixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0NvbnN1bWVyLCBjb25zdW1lclBvbGxWYWx1ZVN0YXR1cywgRWRnZSwgbmV4dFJlYWN0aXZlSWQsIFByb2R1Y2VySWQsIHNldEFjdGl2ZUNvbnN1bWVyfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7bmV3V2Vha1JlZn0gZnJvbSAnLi93ZWFrX3JlZic7XG5cbi8qKlxuICogV2F0Y2hlcyBhIHJlYWN0aXZlIGV4cHJlc3Npb24gYW5kIGFsbG93cyBpdCB0byBiZSBzY2hlZHVsZWQgdG8gcmUtcnVuXG4gKiB3aGVuIGFueSBkZXBlbmRlbmNpZXMgbm90aWZ5IG9mIGEgY2hhbmdlLlxuICpcbiAqIGBXYXRjaGAgZG9lc24ndCBydW4gcmVhY3RpdmUgZXhwcmVzc2lvbnMgaXRzZWxmLCBidXQgcmVsaWVzIG9uIGEgY29uc3VtZXItXG4gKiBwcm92aWRlZCBzY2hlZHVsaW5nIG9wZXJhdGlvbiB0byBjb29yZGluYXRlIGNhbGxpbmcgYFdhdGNoLnJ1bigpYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhdGNoIGltcGxlbWVudHMgQ29uc3VtZXIge1xuICByZWFkb25seSBpZCA9IG5leHRSZWFjdGl2ZUlkKCk7XG4gIHJlYWRvbmx5IHJlZiA9IG5ld1dlYWtSZWYodGhpcyk7XG4gIHJlYWRvbmx5IHByb2R1Y2VycyA9IG5ldyBNYXA8UHJvZHVjZXJJZCwgRWRnZT4oKTtcbiAgdHJhY2tpbmdWZXJzaW9uID0gMDtcblxuICBwcml2YXRlIGRpcnR5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3YXRjaDogKCkgPT4gdm9pZCwgcHJpdmF0ZSBzY2hlZHVsZTogKHdhdGNoOiBXYXRjaCkgPT4gdm9pZCkge31cblxuICBub3RpZnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpcnR5KSB7XG4gICAgICB0aGlzLnNjaGVkdWxlKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSByZWFjdGl2ZSBleHByZXNzaW9uIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgYFdhdGNoYCBjb25zdW1lci5cbiAgICpcbiAgICogU2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgdXNlciBzY2hlZHVsaW5nIGFsZ29yaXRobSB3aGVuIHRoZSBwcm92aWRlZFxuICAgKiBgc2NoZWR1bGVgIGhvb2sgaXMgY2FsbGVkIGJ5IGBXYXRjaGAuXG4gICAqL1xuICBydW4oKTogdm9pZCB7XG4gICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnRyYWNraW5nVmVyc2lvbiAhPT0gMCAmJiAhY29uc3VtZXJQb2xsVmFsdWVTdGF0dXModGhpcykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2Q29uc3VtZXIgPSBzZXRBY3RpdmVDb25zdW1lcih0aGlzKTtcbiAgICB0aGlzLnRyYWNraW5nVmVyc2lvbisrO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLndhdGNoKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEFjdGl2ZUNvbnN1bWVyKHByZXZDb25zdW1lcik7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,27 +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 { global } from '../../util/global';
9
- // `WeakRef` is not always defined in every TS environment where Angular is compiled. Instead,
10
- // read it off of the global context if available.
11
- // tslint:disable-next-line: no-toplevel-property-access
12
- let WeakRefImpl = global['WeakRef'];
13
- export function newWeakRef(value) {
14
- if (typeof ngDevMode !== 'undefined' && ngDevMode && WeakRefImpl === undefined) {
15
- throw new Error(`Angular requires a browser which supports the 'WeakRef' API`);
16
- }
17
- return new WeakRefImpl(value);
18
- }
19
- /**
20
- * Use an alternate implementation of `WeakRef` if a platform implementation isn't available.
21
- */
22
- export function setAlternateWeakRefImpl(impl) {
23
- if (!WeakRefImpl) {
24
- WeakRefImpl = impl;
25
- }
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vha19yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL3NyYy93ZWFrX3JlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFekMsOEZBQThGO0FBQzlGLGtEQUFrRDtBQUNsRCx3REFBd0Q7QUFDeEQsSUFBSSxXQUFXLEdBQTBCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQU0zRCxNQUFNLFVBQVUsVUFBVSxDQUFtQixLQUFRO0lBQ25ELElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1FBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztLQUNoRjtJQUNELE9BQU8sSUFBSSxXQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQU1EOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLElBQWlCO0lBQ3ZELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsV0FBVyxHQUFHLElBQUksQ0FBQztLQUNwQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtnbG9iYWx9IGZyb20gJy4uLy4uL3V0aWwvZ2xvYmFsJztcblxuLy8gYFdlYWtSZWZgIGlzIG5vdCBhbHdheXMgZGVmaW5lZCBpbiBldmVyeSBUUyBlbnZpcm9ubWVudCB3aGVyZSBBbmd1bGFyIGlzIGNvbXBpbGVkLiBJbnN0ZWFkLFxuLy8gcmVhZCBpdCBvZmYgb2YgdGhlIGdsb2JhbCBjb250ZXh0IGlmIGF2YWlsYWJsZS5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tdG9wbGV2ZWwtcHJvcGVydHktYWNjZXNzXG5sZXQgV2Vha1JlZkltcGw6IFdlYWtSZWZDdG9yfHVuZGVmaW5lZCA9IGdsb2JhbFsnV2Vha1JlZiddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdlYWtSZWY8VCBleHRlbmRzIG9iamVjdD4ge1xuICBkZXJlZigpOiBUfHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5ld1dlYWtSZWY8VCBleHRlbmRzIG9iamVjdD4odmFsdWU6IFQpOiBXZWFrUmVmPFQ+IHtcbiAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmIG5nRGV2TW9kZSAmJiBXZWFrUmVmSW1wbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBbmd1bGFyIHJlcXVpcmVzIGEgYnJvd3NlciB3aGljaCBzdXBwb3J0cyB0aGUgJ1dlYWtSZWYnIEFQSWApO1xuICB9XG4gIHJldHVybiBuZXcgV2Vha1JlZkltcGwhKHZhbHVlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXZWFrUmVmQ3RvciB7XG4gIG5ldzxUIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVCk6IFdlYWtSZWY8VD47XG59XG5cbi8qKlxuICogVXNlIGFuIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBgV2Vha1JlZmAgaWYgYSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBpc24ndCBhdmFpbGFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBbHRlcm5hdGVXZWFrUmVmSW1wbChpbXBsOiBXZWFrUmVmQ3Rvcikge1xuICBpZiAoIVdlYWtSZWZJbXBsKSB7XG4gICAgV2Vha1JlZkltcGwgPSBpbXBsO1xuICB9XG59XG4iXX0=
@@ -1,153 +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 { APP_ID } from './application_tokens';
9
- import { inject } from './di/injector_compatibility';
10
- import { ɵɵdefineInjectable } from './di/interface/defs';
11
- import { getDocument } from './render3/interfaces/document';
12
- export function escapeTransferStateContent(text) {
13
- const escapedText = {
14
- '&': '&a;',
15
- '"': '&q;',
16
- '\'': '&s;',
17
- '<': '&l;',
18
- '>': '&g;',
19
- };
20
- return text.replace(/[&"'<>]/g, s => escapedText[s]);
21
- }
22
- export function unescapeTransferStateContent(text) {
23
- const unescapedText = {
24
- '&a;': '&',
25
- '&q;': '"',
26
- '&s;': '\'',
27
- '&l;': '<',
28
- '&g;': '>',
29
- };
30
- return text.replace(/&[^;]+;/g, s => unescapedText[s]);
31
- }
32
- /**
33
- * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.
34
- *
35
- * Example:
36
- *
37
- * ```
38
- * const COUNTER_KEY = makeStateKey<number>('counter');
39
- * let value = 10;
40
- *
41
- * transferState.set(COUNTER_KEY, value);
42
- * ```
43
- *
44
- * @publicApi
45
- */
46
- export function makeStateKey(key) {
47
- return key;
48
- }
49
- function initTransferState() {
50
- const transferState = new TransferState();
51
- transferState.store = retrieveTransferredState(getDocument(), inject(APP_ID));
52
- return transferState;
53
- }
54
- /**
55
- * A key value store that is transferred from the application on the server side to the application
56
- * on the client side.
57
- *
58
- * The `TransferState` is available as an injectable token.
59
- * On the client, just inject this token using DI and use it, it will be lazily initialized.
60
- * On the server it's already included if `renderApplication` function is used. Otherwise, import
61
- * the `ServerTransferStateModule` module to make the `TransferState` available.
62
- *
63
- * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only
64
- * boolean, number, string, null and non-class objects will be serialized and deserialized in a
65
- * non-lossy manner.
66
- *
67
- * @publicApi
68
- */
69
- class TransferState {
70
- constructor() {
71
- /** @internal */
72
- this.store = {};
73
- this.onSerializeCallbacks = {};
74
- }
75
- /**
76
- * Get the value corresponding to a key. Return `defaultValue` if key is not found.
77
- */
78
- get(key, defaultValue) {
79
- return this.store[key] !== undefined ? this.store[key] : defaultValue;
80
- }
81
- /**
82
- * Set the value corresponding to a key.
83
- */
84
- set(key, value) {
85
- this.store[key] = value;
86
- }
87
- /**
88
- * Remove a key from the store.
89
- */
90
- remove(key) {
91
- delete this.store[key];
92
- }
93
- /**
94
- * Test whether a key exists in the store.
95
- */
96
- hasKey(key) {
97
- return this.store.hasOwnProperty(key);
98
- }
99
- /**
100
- * Indicates whether the state is empty.
101
- */
102
- get isEmpty() {
103
- return Object.keys(this.store).length === 0;
104
- }
105
- /**
106
- * Register a callback to provide the value for a key when `toJson` is called.
107
- */
108
- onSerialize(key, callback) {
109
- this.onSerializeCallbacks[key] = callback;
110
- }
111
- /**
112
- * Serialize the current state of the store to JSON.
113
- */
114
- toJson() {
115
- // Call the onSerialize callbacks and put those values into the store.
116
- for (const key in this.onSerializeCallbacks) {
117
- if (this.onSerializeCallbacks.hasOwnProperty(key)) {
118
- try {
119
- this.store[key] = this.onSerializeCallbacks[key]();
120
- }
121
- catch (e) {
122
- console.warn('Exception in onSerialize callback: ', e);
123
- }
124
- }
125
- }
126
- return JSON.stringify(this.store);
127
- }
128
- }
129
- /** @nocollapse */
130
- TransferState.ɵprov =
131
- /** @pureOrBreakMyCode */ ɵɵdefineInjectable({
132
- token: TransferState,
133
- providedIn: 'root',
134
- factory: initTransferState,
135
- });
136
- export { TransferState };
137
- function retrieveTransferredState(doc, appId) {
138
- // Locate the script tag with the JSON data transferred from the server.
139
- // The id of the script tag is set to the Angular appId + 'state'.
140
- const script = doc.getElementById(appId + '-state');
141
- let initialState = {};
142
- if (script && script.textContent) {
143
- try {
144
- // Avoid using any here as it triggers lint errors in google3 (any is not allowed).
145
- initialState = JSON.parse(unescapeTransferStateContent(script.textContent));
146
- }
147
- catch (e) {
148
- console.warn('Exception while restoring TransferState for app ' + appId, e);
149
- }
150
- }
151
- return initialState;
152
- }
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJfc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy90cmFuc2Zlcl9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsSUFBWTtJQUNyRCxNQUFNLFdBQVcsR0FBMEI7UUFDekMsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztRQUNWLElBQUksRUFBRSxLQUFLO1FBQ1gsR0FBRyxFQUFFLEtBQUs7UUFDVixHQUFHLEVBQUUsS0FBSztLQUNYLENBQUM7SUFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxJQUFZO0lBQ3ZELE1BQU0sYUFBYSxHQUEwQjtRQUMzQyxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxHQUFHO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxLQUFLLEVBQUUsR0FBRztRQUNWLEtBQUssRUFBRSxHQUFHO0tBQ1gsQ0FBQztJQUNGLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBcUJEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFXLEdBQVc7SUFDaEQsT0FBTyxHQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRCxTQUFTLGlCQUFpQjtJQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQzFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxhQUFhO0lBQTFCO1FBU0UsZ0JBQWdCO1FBQ2hCLFVBQUssR0FBcUMsRUFBRSxDQUFDO1FBRXJDLHlCQUFvQixHQUE2QyxFQUFFLENBQUM7SUE0RDlFLENBQUM7SUExREM7O09BRUc7SUFDSCxHQUFHLENBQUksR0FBZ0IsRUFBRSxZQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUksR0FBZ0IsRUFBRSxLQUFRO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBSSxHQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFJLEdBQWdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBSSxHQUFnQixFQUFFLFFBQWlCO1FBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLHNFQUFzRTtRQUN0RSxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELElBQUk7b0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztpQkFDcEQ7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDeEQ7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOztBQXRFRCxrQkFBa0I7QUFDWCxtQkFBSztBQUNSLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDO0lBQzNDLEtBQUssRUFBRSxhQUFhO0lBQ3BCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxpQkFBaUI7Q0FDM0IsQ0FBQyxBQUxNLENBS0w7U0FQSSxhQUFhO0FBMEUxQixTQUFTLHdCQUF3QixDQUFDLEdBQWEsRUFBRSxLQUFhO0lBQzVELHdFQUF3RTtJQUN4RSxrRUFBa0U7SUFDbEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDcEQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7UUFDaEMsSUFBSTtZQUNGLG1GQUFtRjtZQUNuRixZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQU8sQ0FBQztTQUNuRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxrREFBa0QsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDN0U7S0FDRjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtBUFBfSUR9IGZyb20gJy4vYXBwbGljYXRpb25fdG9rZW5zJztcbmltcG9ydCB7aW5qZWN0fSBmcm9tICcuL2RpL2luamVjdG9yX2NvbXBhdGliaWxpdHknO1xuaW1wb3J0IHvJtcm1ZGVmaW5lSW5qZWN0YWJsZX0gZnJvbSAnLi9kaS9pbnRlcmZhY2UvZGVmcyc7XG5pbXBvcnQge2dldERvY3VtZW50fSBmcm9tICcuL3JlbmRlcjMvaW50ZXJmYWNlcy9kb2N1bWVudCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVUcmFuc2ZlclN0YXRlQ29udGVudCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlc2NhcGVkVGV4dDoge1trOiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgICcmJzogJyZhOycsXG4gICAgJ1wiJzogJyZxOycsXG4gICAgJ1xcJyc6ICcmczsnLFxuICAgICc8JzogJyZsOycsXG4gICAgJz4nOiAnJmc7JyxcbiAgfTtcbiAgcmV0dXJuIHRleHQucmVwbGFjZSgvWyZcIic8Pl0vZywgcyA9PiBlc2NhcGVkVGV4dFtzXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZVRyYW5zZmVyU3RhdGVDb250ZW50KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVuZXNjYXBlZFRleHQ6IHtbazogc3RyaW5nXTogc3RyaW5nfSA9IHtcbiAgICAnJmE7JzogJyYnLFxuICAgICcmcTsnOiAnXCInLFxuICAgICcmczsnOiAnXFwnJyxcbiAgICAnJmw7JzogJzwnLFxuICAgICcmZzsnOiAnPicsXG4gIH07XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoLyZbXjtdKzsvZywgcyA9PiB1bmVzY2FwZWRUZXh0W3NdKTtcbn1cblxuLyoqXG4gKiBBIHR5cGUtc2FmZSBrZXkgdG8gdXNlIHdpdGggYFRyYW5zZmVyU3RhdGVgLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgXG4gKiBjb25zdCBDT1VOVEVSX0tFWSA9IG1ha2VTdGF0ZUtleTxudW1iZXI+KCdjb3VudGVyJyk7XG4gKiBsZXQgdmFsdWUgPSAxMDtcbiAqXG4gKiB0cmFuc2ZlclN0YXRlLnNldChDT1VOVEVSX0tFWSwgdmFsdWUpO1xuICogYGBgXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBTdGF0ZUtleTxUPiA9IHN0cmluZyZ7XG4gIF9fbm90X2Ffc3RyaW5nOiBuZXZlcixcbiAgX192YWx1ZV90eXBlPzogVCxcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgYFN0YXRlS2V5PFQ+YCB0aGF0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIHZhbHVlIG9mIHR5cGUgVCB3aXRoIGBUcmFuc2ZlclN0YXRlYC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYFxuICogY29uc3QgQ09VTlRFUl9LRVkgPSBtYWtlU3RhdGVLZXk8bnVtYmVyPignY291bnRlcicpO1xuICogbGV0IHZhbHVlID0gMTA7XG4gKlxuICogdHJhbnNmZXJTdGF0ZS5zZXQoQ09VTlRFUl9LRVksIHZhbHVlKTtcbiAqIGBgYFxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VTdGF0ZUtleTxUID0gdm9pZD4oa2V5OiBzdHJpbmcpOiBTdGF0ZUtleTxUPiB7XG4gIHJldHVybiBrZXkgYXMgU3RhdGVLZXk8VD47XG59XG5cbmZ1bmN0aW9uIGluaXRUcmFuc2ZlclN0YXRlKCkge1xuICBjb25zdCB0cmFuc2ZlclN0YXRlID0gbmV3IFRyYW5zZmVyU3RhdGUoKTtcbiAgdHJhbnNmZXJTdGF0ZS5zdG9yZSA9IHJldHJpZXZlVHJhbnNmZXJyZWRTdGF0ZShnZXREb2N1bWVudCgpLCBpbmplY3QoQVBQX0lEKSk7XG4gIHJldHVybiB0cmFuc2ZlclN0YXRlO1xufVxuXG4vKipcbiAqIEEga2V5IHZhbHVlIHN0b3JlIHRoYXQgaXMgdHJhbnNmZXJyZWQgZnJvbSB0aGUgYXBwbGljYXRpb24gb24gdGhlIHNlcnZlciBzaWRlIHRvIHRoZSBhcHBsaWNhdGlvblxuICogb24gdGhlIGNsaWVudCBzaWRlLlxuICpcbiAqIFRoZSBgVHJhbnNmZXJTdGF0ZWAgaXMgYXZhaWxhYmxlIGFzIGFuIGluamVjdGFibGUgdG9rZW4uXG4gKiBPbiB0aGUgY2xpZW50LCBqdXN0IGluamVjdCB0aGlzIHRva2VuIHVzaW5nIERJIGFuZCB1c2UgaXQsIGl0IHdpbGwgYmUgbGF6aWx5IGluaXRpYWxpemVkLlxuICogT24gdGhlIHNlcnZlciBpdCdzIGFscmVhZHkgaW5jbHVkZWQgaWYgYHJlbmRlckFwcGxpY2F0aW9uYCBmdW5jdGlvbiBpcyB1c2VkLiBPdGhlcndpc2UsIGltcG9ydFxuICogdGhlIGBTZXJ2ZXJUcmFuc2ZlclN0YXRlTW9kdWxlYCBtb2R1bGUgdG8gbWFrZSB0aGUgYFRyYW5zZmVyU3RhdGVgIGF2YWlsYWJsZS5cbiAqXG4gKiBUaGUgdmFsdWVzIGluIHRoZSBzdG9yZSBhcmUgc2VyaWFsaXplZC9kZXNlcmlhbGl6ZWQgdXNpbmcgSlNPTi5zdHJpbmdpZnkvSlNPTi5wYXJzZS4gU28gb25seVxuICogYm9vbGVhbiwgbnVtYmVyLCBzdHJpbmcsIG51bGwgYW5kIG5vbi1jbGFzcyBvYmplY3RzIHdpbGwgYmUgc2VyaWFsaXplZCBhbmQgZGVzZXJpYWxpemVkIGluIGFcbiAqIG5vbi1sb3NzeSBtYW5uZXIuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJTdGF0ZSB7XG4gIC8qKiBAbm9jb2xsYXBzZSAqL1xuICBzdGF0aWMgybVwcm92ID1cbiAgICAgIC8qKiBAcHVyZU9yQnJlYWtNeUNvZGUgKi8gybXJtWRlZmluZUluamVjdGFibGUoe1xuICAgICAgICB0b2tlbjogVHJhbnNmZXJTdGF0ZSxcbiAgICAgICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgICAgICBmYWN0b3J5OiBpbml0VHJhbnNmZXJTdGF0ZSxcbiAgICAgIH0pO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RvcmU6IHtbazogc3RyaW5nXTogdW5rbm93bnx1bmRlZmluZWR9ID0ge307XG5cbiAgcHJpdmF0ZSBvblNlcmlhbGl6ZUNhbGxiYWNrczoge1trOiBzdHJpbmddOiAoKSA9PiB1bmtub3duIHwgdW5kZWZpbmVkfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gYSBrZXkuIFJldHVybiBgZGVmYXVsdFZhbHVlYCBpZiBrZXkgaXMgbm90IGZvdW5kLlxuICAgKi9cbiAgZ2V0PFQ+KGtleTogU3RhdGVLZXk8VD4sIGRlZmF1bHRWYWx1ZTogVCk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0b3JlW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXMuc3RvcmVba2V5XSBhcyBUIDogZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byBhIGtleS5cbiAgICovXG4gIHNldDxUPihrZXk6IFN0YXRlS2V5PFQ+LCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGtleSBmcm9tIHRoZSBzdG9yZS5cbiAgICovXG4gIHJlbW92ZTxUPihrZXk6IFN0YXRlS2V5PFQ+KTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuc3RvcmVba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0IHdoZXRoZXIgYSBrZXkgZXhpc3RzIGluIHRoZSBzdG9yZS5cbiAgICovXG4gIGhhc0tleTxUPihrZXk6IFN0YXRlS2V5PFQ+KSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc3RhdGUgaXMgZW1wdHkuXG4gICAqL1xuICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zdG9yZSkubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gcHJvdmlkZSB0aGUgdmFsdWUgZm9yIGEga2V5IHdoZW4gYHRvSnNvbmAgaXMgY2FsbGVkLlxuICAgKi9cbiAgb25TZXJpYWxpemU8VD4oa2V5OiBTdGF0ZUtleTxUPiwgY2FsbGJhY2s6ICgpID0+IFQpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzW2tleV0gPSBjYWxsYmFjaztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0b3JlIHRvIEpTT04uXG4gICAqL1xuICB0b0pzb24oKTogc3RyaW5nIHtcbiAgICAvLyBDYWxsIHRoZSBvblNlcmlhbGl6ZSBjYWxsYmFja3MgYW5kIHB1dCB0aG9zZSB2YWx1ZXMgaW50byB0aGUgc3RvcmUuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcykge1xuICAgICAgaWYgKHRoaXMub25TZXJpYWxpemVDYWxsYmFja3MuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuc3RvcmVba2V5XSA9IHRoaXMub25TZXJpYWxpemVDYWxsYmFja3Nba2V5XSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdFeGNlcHRpb24gaW4gb25TZXJpYWxpemUgY2FsbGJhY2s6ICcsIGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnN0b3JlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVRyYW5zZmVycmVkU3RhdGUoZG9jOiBEb2N1bWVudCwgYXBwSWQ6IHN0cmluZykge1xuICAvLyBMb2NhdGUgdGhlIHNjcmlwdCB0YWcgd2l0aCB0aGUgSlNPTiBkYXRhIHRyYW5zZmVycmVkIGZyb20gdGhlIHNlcnZlci5cbiAgLy8gVGhlIGlkIG9mIHRoZSBzY3JpcHQgdGFnIGlzIHNldCB0byB0aGUgQW5ndWxhciBhcHBJZCArICdzdGF0ZScuXG4gIGNvbnN0IHNjcmlwdCA9IGRvYy5nZXRFbGVtZW50QnlJZChhcHBJZCArICctc3RhdGUnKTtcbiAgbGV0IGluaXRpYWxTdGF0ZSA9IHt9O1xuICBpZiAoc2NyaXB0ICYmIHNjcmlwdC50ZXh0Q29udGVudCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBBdm9pZCB1c2luZyBhbnkgaGVyZSBhcyBpdCB0cmlnZ2VycyBsaW50IGVycm9ycyBpbiBnb29nbGUzIChhbnkgaXMgbm90IGFsbG93ZWQpLlxuICAgICAgaW5pdGlhbFN0YXRlID0gSlNPTi5wYXJzZSh1bmVzY2FwZVRyYW5zZmVyU3RhdGVDb250ZW50KHNjcmlwdC50ZXh0Q29udGVudCkpIGFzIHt9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignRXhjZXB0aW9uIHdoaWxlIHJlc3RvcmluZyBUcmFuc2ZlclN0YXRlIGZvciBhcHAgJyArIGFwcElkLCBlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn1cbiJdfQ==
@@ -1,79 +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 { global } from './global';
9
- export function ngDevModeResetPerfCounters() {
10
- const locationString = typeof location !== 'undefined' ? location.toString() : '';
11
- const newCounters = {
12
- namedConstructors: locationString.indexOf('ngDevMode=namedConstructors') != -1,
13
- firstCreatePass: 0,
14
- tNode: 0,
15
- tView: 0,
16
- rendererCreateTextNode: 0,
17
- rendererSetText: 0,
18
- rendererCreateElement: 0,
19
- rendererAddEventListener: 0,
20
- rendererSetAttribute: 0,
21
- rendererRemoveAttribute: 0,
22
- rendererSetProperty: 0,
23
- rendererSetClassName: 0,
24
- rendererAddClass: 0,
25
- rendererRemoveClass: 0,
26
- rendererSetStyle: 0,
27
- rendererRemoveStyle: 0,
28
- rendererDestroy: 0,
29
- rendererDestroyNode: 0,
30
- rendererMoveNode: 0,
31
- rendererRemoveNode: 0,
32
- rendererAppendChild: 0,
33
- rendererInsertBefore: 0,
34
- rendererCreateComment: 0,
35
- hydratedNodes: 0,
36
- hydratedComponents: 0,
37
- dehydratedViewsRemoved: 0,
38
- dehydratedViewsCleanupRuns: 0,
39
- };
40
- // Make sure to refer to ngDevMode as ['ngDevMode'] for closure.
41
- const allowNgDevModeTrue = locationString.indexOf('ngDevMode=false') === -1;
42
- global['ngDevMode'] = allowNgDevModeTrue && newCounters;
43
- return newCounters;
44
- }
45
- /**
46
- * This function checks to see if the `ngDevMode` has been set. If yes,
47
- * then we honor it, otherwise we default to dev mode with additional checks.
48
- *
49
- * The idea is that unless we are doing production build where we explicitly
50
- * set `ngDevMode == false` we should be helping the developer by providing
51
- * as much early warning and errors as possible.
52
- *
53
- * `ɵɵdefineComponent` is guaranteed to have been called before any component template functions
54
- * (and thus Ivy instructions), so a single initialization there is sufficient to ensure ngDevMode
55
- * is defined for the entire instruction set.
56
- *
57
- * When checking `ngDevMode` on toplevel, always init it before referencing it
58
- * (e.g. `((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode())`), otherwise you can
59
- * get a `ReferenceError` like in https://github.com/angular/angular/issues/31595.
60
- *
61
- * Details on possible values for `ngDevMode` can be found on its docstring.
62
- *
63
- * NOTE:
64
- * - changes to the `ngDevMode` name must be synced with `compiler-cli/src/tooling.ts`.
65
- */
66
- export function initNgDevMode() {
67
- // The below checks are to ensure that calling `initNgDevMode` multiple times does not
68
- // reset the counters.
69
- // If the `ngDevMode` is not an object, then it means we have not created the perf counters
70
- // yet.
71
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
72
- if (typeof ngDevMode !== 'object') {
73
- ngDevModeResetPerfCounters();
74
- }
75
- return typeof ngDevMode !== 'undefined' && !!ngDevMode;
76
- }
77
- return false;
78
- }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfZGV2X21vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy91dGlsL25nX2Rldl9tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFpRGhDLE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsTUFBTSxjQUFjLEdBQUcsT0FBTyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRixNQUFNLFdBQVcsR0FBMEI7UUFDekMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RSxlQUFlLEVBQUUsQ0FBQztRQUNsQixLQUFLLEVBQUUsQ0FBQztRQUNSLEtBQUssRUFBRSxDQUFDO1FBQ1Isc0JBQXNCLEVBQUUsQ0FBQztRQUN6QixlQUFlLEVBQUUsQ0FBQztRQUNsQixxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLHdCQUF3QixFQUFFLENBQUM7UUFDM0Isb0JBQW9CLEVBQUUsQ0FBQztRQUN2Qix1QkFBdUIsRUFBRSxDQUFDO1FBQzFCLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QixnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixtQkFBbUIsRUFBRSxDQUFDO1FBQ3RCLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixrQkFBa0IsRUFBRSxDQUFDO1FBQ3JCLG1CQUFtQixFQUFFLENBQUM7UUFDdEIsb0JBQW9CLEVBQUUsQ0FBQztRQUN2QixxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLGFBQWEsRUFBRSxDQUFDO1FBQ2hCLGtCQUFrQixFQUFFLENBQUM7UUFDckIsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QiwwQkFBMEIsRUFBRSxDQUFDO0tBQzlCLENBQUM7SUFFRixnRUFBZ0U7SUFDaEUsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztJQUN4RCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLGFBQWE7SUFDM0Isc0ZBQXNGO0lBQ3RGLHNCQUFzQjtJQUN0QiwyRkFBMkY7SUFDM0YsT0FBTztJQUNQLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsRUFBRTtRQUNqRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUNqQywwQkFBMEIsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsT0FBTyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUN4RDtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge2dsb2JhbH0gZnJvbSAnLi9nbG9iYWwnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBWYWx1ZXMgb2YgbmdEZXZNb2RlXG4gICAqIERlcGVuZGluZyBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXBwbGljYXRpb24sIG5nRGV2TW9kZSBtYXkgaGF2ZSBvbmUgb2Ygc2V2ZXJhbCB2YWx1ZXMuXG4gICAqXG4gICAqIEZvciBjb252ZW5pZW5jZSwgdGhlIOKAnHRydXRoeeKAnSB2YWx1ZSB3aGljaCBlbmFibGVzIGRldiBtb2RlIGlzIGFsc28gYW4gb2JqZWN0IHdoaWNoIGNvbnRhaW5zXG4gICAqIEFuZ3VsYXLigJlzIHBlcmZvcm1hbmNlIGNvdW50ZXJzLiBUaGlzIGlzIG5vdCBuZWNlc3NhcnksIGJ1dCBjdXRzIGRvd24gb24gYm9pbGVycGxhdGUgZm9yIHRoZVxuICAgKiBwZXJmIGNvdW50ZXJzLlxuICAgKlxuICAgKiBuZ0Rldk1vZGUgbWF5IGFsc28gYmUgc2V0IHRvIGZhbHNlLiBUaGlzIGNhbiBoYXBwZW4gaW4gb25lIG9mIGEgZmV3IHdheXM6XG4gICAqIC0gVGhlIHVzZXIgZXhwbGljaXRseSBzZXRzIGB3aW5kb3cubmdEZXZNb2RlID0gZmFsc2VgIHNvbWV3aGVyZSBpbiB0aGVpciBhcHAuXG4gICAqIC0gVGhlIHVzZXIgY2FsbHMgYGVuYWJsZVByb2RNb2RlKClgLlxuICAgKiAtIFRoZSBVUkwgY29udGFpbnMgYSBgbmdEZXZNb2RlPWZhbHNlYCB0ZXh0LlxuICAgKiBGaW5hbGx5LCBuZ0Rldk1vZGUgbWF5IG5vdCBoYXZlIGJlZW4gZGVmaW5lZCBhdCBhbGwuXG4gICAqL1xuICBjb25zdCBuZ0Rldk1vZGU6IG51bGx8TmdEZXZNb2RlUGVyZkNvdW50ZXJzO1xuICBpbnRlcmZhY2UgTmdEZXZNb2RlUGVyZkNvdW50ZXJzIHtcbiAgICBuYW1lZENvbnN0cnVjdG9yczogYm9vbGVhbjtcbiAgICBmaXJzdENyZWF0ZVBhc3M6IG51bWJlcjtcbiAgICB0Tm9kZTogbnVtYmVyO1xuICAgIHRWaWV3OiBudW1iZXI7XG4gICAgcmVuZGVyZXJDcmVhdGVUZXh0Tm9kZTogbnVtYmVyO1xuICAgIHJlbmRlcmVyU2V0VGV4dDogbnVtYmVyO1xuICAgIHJlbmRlcmVyQ3JlYXRlRWxlbWVudDogbnVtYmVyO1xuICAgIHJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcjogbnVtYmVyO1xuICAgIHJlbmRlcmVyU2V0QXR0cmlidXRlOiBudW1iZXI7XG4gICAgcmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGU6IG51bWJlcjtcbiAgICByZW5kZXJlclNldFByb3BlcnR5OiBudW1iZXI7XG4gICAgcmVuZGVyZXJTZXRDbGFzc05hbWU6IG51bWJlcjtcbiAgICByZW5kZXJlckFkZENsYXNzOiBudW1iZXI7XG4gICAgcmVuZGVyZXJSZW1vdmVDbGFzczogbnVtYmVyO1xuICAgIHJlbmRlcmVyU2V0U3R5bGU6IG51bWJlcjtcbiAgICByZW5kZXJlclJlbW92ZVN0eWxlOiBudW1iZXI7XG4gICAgcmVuZGVyZXJEZXN0cm95OiBudW1iZXI7XG4gICAgcmVuZGVyZXJEZXN0cm95Tm9kZTogbnVtYmVyO1xuICAgIHJlbmRlcmVyTW92ZU5vZGU6IG51bWJlcjtcbiAgICByZW5kZXJlclJlbW92ZU5vZGU6IG51bWJlcjtcbiAgICByZW5kZXJlckFwcGVuZENoaWxkOiBudW1iZXI7XG4gICAgcmVuZGVyZXJJbnNlcnRCZWZvcmU6IG51bWJlcjtcbiAgICByZW5kZXJlckNyZWF0ZUNvbW1lbnQ6IG51bWJlcjtcbiAgICBoeWRyYXRlZE5vZGVzOiBudW1iZXI7XG4gICAgaHlkcmF0ZWRDb21wb25lbnRzOiBudW1iZXI7XG4gICAgZGVoeWRyYXRlZFZpZXdzUmVtb3ZlZDogbnVtYmVyO1xuICAgIGRlaHlkcmF0ZWRWaWV3c0NsZWFudXBSdW5zOiBudW1iZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5nRGV2TW9kZVJlc2V0UGVyZkNvdW50ZXJzKCk6IE5nRGV2TW9kZVBlcmZDb3VudGVycyB7XG4gIGNvbnN0IGxvY2F0aW9uU3RyaW5nID0gdHlwZW9mIGxvY2F0aW9uICE9PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLnRvU3RyaW5nKCkgOiAnJztcbiAgY29uc3QgbmV3Q291bnRlcnM6IE5nRGV2TW9kZVBlcmZDb3VudGVycyA9IHtcbiAgICBuYW1lZENvbnN0cnVjdG9yczogbG9jYXRpb25TdHJpbmcuaW5kZXhPZignbmdEZXZNb2RlPW5hbWVkQ29uc3RydWN0b3JzJykgIT0gLTEsXG4gICAgZmlyc3RDcmVhdGVQYXNzOiAwLFxuICAgIHROb2RlOiAwLFxuICAgIHRWaWV3OiAwLFxuICAgIHJlbmRlcmVyQ3JlYXRlVGV4dE5vZGU6IDAsXG4gICAgcmVuZGVyZXJTZXRUZXh0OiAwLFxuICAgIHJlbmRlcmVyQ3JlYXRlRWxlbWVudDogMCxcbiAgICByZW5kZXJlckFkZEV2ZW50TGlzdGVuZXI6IDAsXG4gICAgcmVuZGVyZXJTZXRBdHRyaWJ1dGU6IDAsXG4gICAgcmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGU6IDAsXG4gICAgcmVuZGVyZXJTZXRQcm9wZXJ0eTogMCxcbiAgICByZW5kZXJlclNldENsYXNzTmFtZTogMCxcbiAgICByZW5kZXJlckFkZENsYXNzOiAwLFxuICAgIHJlbmRlcmVyUmVtb3ZlQ2xhc3M6IDAsXG4gICAgcmVuZGVyZXJTZXRTdHlsZTogMCxcbiAgICByZW5kZXJlclJlbW92ZVN0eWxlOiAwLFxuICAgIHJlbmRlcmVyRGVzdHJveTogMCxcbiAgICByZW5kZXJlckRlc3Ryb3lOb2RlOiAwLFxuICAgIHJlbmRlcmVyTW92ZU5vZGU6IDAsXG4gICAgcmVuZGVyZXJSZW1vdmVOb2RlOiAwLFxuICAgIHJlbmRlcmVyQXBwZW5kQ2hpbGQ6IDAsXG4gICAgcmVuZGVyZXJJbnNlcnRCZWZvcmU6IDAsXG4gICAgcmVuZGVyZXJDcmVhdGVDb21tZW50OiAwLFxuICAgIGh5ZHJhdGVkTm9kZXM6IDAsXG4gICAgaHlkcmF0ZWRDb21wb25lbnRzOiAwLFxuICAgIGRlaHlkcmF0ZWRWaWV3c1JlbW92ZWQ6IDAsXG4gICAgZGVoeWRyYXRlZFZpZXdzQ2xlYW51cFJ1bnM6IDAsXG4gIH07XG5cbiAgLy8gTWFrZSBzdXJlIHRvIHJlZmVyIHRvIG5nRGV2TW9kZSBhcyBbJ25nRGV2TW9kZSddIGZvciBjbG9zdXJlLlxuICBjb25zdCBhbGxvd05nRGV2TW9kZVRydWUgPSBsb2NhdGlvblN0cmluZy5pbmRleE9mKCduZ0Rldk1vZGU9ZmFsc2UnKSA9PT0gLTE7XG4gIGdsb2JhbFsnbmdEZXZNb2RlJ10gPSBhbGxvd05nRGV2TW9kZVRydWUgJiYgbmV3Q291bnRlcnM7XG4gIHJldHVybiBuZXdDb3VudGVycztcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIGBuZ0Rldk1vZGVgIGhhcyBiZWVuIHNldC4gSWYgeWVzLFxuICogdGhlbiB3ZSBob25vciBpdCwgb3RoZXJ3aXNlIHdlIGRlZmF1bHQgdG8gZGV2IG1vZGUgd2l0aCBhZGRpdGlvbmFsIGNoZWNrcy5cbiAqXG4gKiBUaGUgaWRlYSBpcyB0aGF0IHVubGVzcyB3ZSBhcmUgZG9pbmcgcHJvZHVjdGlvbiBidWlsZCB3aGVyZSB3ZSBleHBsaWNpdGx5XG4gKiBzZXQgYG5nRGV2TW9kZSA9PSBmYWxzZWAgd2Ugc2hvdWxkIGJlIGhlbHBpbmcgdGhlIGRldmVsb3BlciBieSBwcm92aWRpbmdcbiAqIGFzIG11Y2ggZWFybHkgd2FybmluZyBhbmQgZXJyb3JzIGFzIHBvc3NpYmxlLlxuICpcbiAqIGDJtcm1ZGVmaW5lQ29tcG9uZW50YCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIGFueSBjb21wb25lbnQgdGVtcGxhdGUgZnVuY3Rpb25zXG4gKiAoYW5kIHRodXMgSXZ5IGluc3RydWN0aW9ucyksIHNvIGEgc2luZ2xlIGluaXRpYWxpemF0aW9uIHRoZXJlIGlzIHN1ZmZpY2llbnQgdG8gZW5zdXJlIG5nRGV2TW9kZVxuICogaXMgZGVmaW5lZCBmb3IgdGhlIGVudGlyZSBpbnN0cnVjdGlvbiBzZXQuXG4gKlxuICogV2hlbiBjaGVja2luZyBgbmdEZXZNb2RlYCBvbiB0b3BsZXZlbCwgYWx3YXlzIGluaXQgaXQgYmVmb3JlIHJlZmVyZW5jaW5nIGl0XG4gKiAoZS5nLiBgKCh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpICYmIGluaXROZ0Rldk1vZGUoKSlgKSwgb3RoZXJ3aXNlIHlvdSBjYW5cbiAqICBnZXQgYSBgUmVmZXJlbmNlRXJyb3JgIGxpa2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzE1OTUuXG4gKlxuICogRGV0YWlscyBvbiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGBuZ0Rldk1vZGVgIGNhbiBiZSBmb3VuZCBvbiBpdHMgZG9jc3RyaW5nLlxuICpcbiAqIE5PVEU6XG4gKiAtIGNoYW5nZXMgdG8gdGhlIGBuZ0Rldk1vZGVgIG5hbWUgbXVzdCBiZSBzeW5jZWQgd2l0aCBgY29tcGlsZXItY2xpL3NyYy90b29saW5nLnRzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXROZ0Rldk1vZGUoKTogYm9vbGVhbiB7XG4gIC8vIFRoZSBiZWxvdyBjaGVja3MgYXJlIHRvIGVuc3VyZSB0aGF0IGNhbGxpbmcgYGluaXROZ0Rldk1vZGVgIG11bHRpcGxlIHRpbWVzIGRvZXMgbm90XG4gIC8vIHJlc2V0IHRoZSBjb3VudGVycy5cbiAgLy8gSWYgdGhlIGBuZ0Rldk1vZGVgIGlzIG5vdCBhbiBvYmplY3QsIHRoZW4gaXQgbWVhbnMgd2UgaGF2ZSBub3QgY3JlYXRlZCB0aGUgcGVyZiBjb3VudGVyc1xuICAvLyB5ZXQuXG4gIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIG5nRGV2TW9kZVJlc2V0UGVyZkNvdW50ZXJzKCk7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgbmdEZXZNb2RlICE9PSAndW5kZWZpbmVkJyAmJiAhIW5nRGV2TW9kZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=