@angular/core 18.2.5 → 18.2.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 (414) hide show
  1. package/esm2022/index.mjs +2 -2
  2. package/esm2022/primitives/event-dispatch/contract_binary.mjs +2 -2
  3. package/esm2022/primitives/event-dispatch/index.mjs +2 -2
  4. package/esm2022/primitives/event-dispatch/src/a11y_click.mjs +2 -2
  5. package/esm2022/primitives/event-dispatch/src/action_resolver.mjs +2 -2
  6. package/esm2022/primitives/event-dispatch/src/attribute.mjs +2 -2
  7. package/esm2022/primitives/event-dispatch/src/bootstrap_app_scoped.mjs +2 -2
  8. package/esm2022/primitives/event-dispatch/src/bootstrap_global.mjs +2 -2
  9. package/esm2022/primitives/event-dispatch/src/cache.mjs +2 -2
  10. package/esm2022/primitives/event-dispatch/src/char.mjs +2 -2
  11. package/esm2022/primitives/event-dispatch/src/dispatcher.mjs +2 -2
  12. package/esm2022/primitives/event-dispatch/src/earlyeventcontract.mjs +2 -2
  13. package/esm2022/primitives/event-dispatch/src/event.mjs +2 -2
  14. package/esm2022/primitives/event-dispatch/src/event_contract_container.mjs +2 -2
  15. package/esm2022/primitives/event-dispatch/src/event_contract_defines.mjs +2 -2
  16. package/esm2022/primitives/event-dispatch/src/event_contract_multi_container.mjs +2 -2
  17. package/esm2022/primitives/event-dispatch/src/event_dispatcher.mjs +2 -2
  18. package/esm2022/primitives/event-dispatch/src/event_handler.mjs +2 -2
  19. package/esm2022/primitives/event-dispatch/src/event_info.mjs +2 -2
  20. package/esm2022/primitives/event-dispatch/src/event_type.mjs +2 -2
  21. package/esm2022/primitives/event-dispatch/src/eventcontract.mjs +2 -2
  22. package/esm2022/primitives/event-dispatch/src/key_code.mjs +2 -2
  23. package/esm2022/primitives/event-dispatch/src/property.mjs +2 -2
  24. package/esm2022/primitives/event-dispatch/src/restriction.mjs +2 -2
  25. package/esm2022/primitives/signals/index.mjs +2 -2
  26. package/esm2022/primitives/signals/src/computed.mjs +2 -2
  27. package/esm2022/primitives/signals/src/equality.mjs +2 -2
  28. package/esm2022/primitives/signals/src/errors.mjs +2 -2
  29. package/esm2022/primitives/signals/src/graph.mjs +2 -2
  30. package/esm2022/primitives/signals/src/signal.mjs +2 -2
  31. package/esm2022/primitives/signals/src/watch.mjs +2 -2
  32. package/esm2022/primitives/signals/src/weak_ref.mjs +2 -2
  33. package/esm2022/public_api.mjs +2 -2
  34. package/esm2022/rxjs-interop/index.mjs +2 -2
  35. package/esm2022/rxjs-interop/public_api.mjs +2 -2
  36. package/esm2022/rxjs-interop/src/index.mjs +2 -2
  37. package/esm2022/rxjs-interop/src/output_from_observable.mjs +2 -2
  38. package/esm2022/rxjs-interop/src/output_to_observable.mjs +2 -2
  39. package/esm2022/rxjs-interop/src/take_until_destroyed.mjs +2 -2
  40. package/esm2022/rxjs-interop/src/to_observable.mjs +2 -2
  41. package/esm2022/rxjs-interop/src/to_signal.mjs +3 -3
  42. package/esm2022/src/application/application_config.mjs +2 -2
  43. package/esm2022/src/application/application_init.mjs +1 -1
  44. package/esm2022/src/application/application_module.mjs +2 -2
  45. package/esm2022/src/application/application_ngmodule_factory_compiler.mjs +2 -2
  46. package/esm2022/src/application/application_ref.mjs +2 -2
  47. package/esm2022/src/application/application_tokens.mjs +2 -2
  48. package/esm2022/src/application/create_application.mjs +2 -2
  49. package/esm2022/src/authoring/input/input.mjs +2 -2
  50. package/esm2022/src/authoring/input/input_signal.mjs +2 -2
  51. package/esm2022/src/authoring/input/input_signal_node.mjs +2 -2
  52. package/esm2022/src/authoring/input/input_type_checking.mjs +2 -2
  53. package/esm2022/src/authoring/model/model.mjs +2 -2
  54. package/esm2022/src/authoring/model/model_signal.mjs +2 -2
  55. package/esm2022/src/authoring/output/output.mjs +2 -2
  56. package/esm2022/src/authoring/output/output_emitter_ref.mjs +2 -2
  57. package/esm2022/src/authoring/output/output_ref.mjs +2 -2
  58. package/esm2022/src/authoring/queries.mjs +2 -2
  59. package/esm2022/src/authoring.mjs +2 -2
  60. package/esm2022/src/cached_injector_service.mjs +2 -2
  61. package/esm2022/src/change_detection/change_detection.mjs +2 -2
  62. package/esm2022/src/change_detection/change_detector_ref.mjs +2 -2
  63. package/esm2022/src/change_detection/constants.mjs +2 -2
  64. package/esm2022/src/change_detection/differs/default_iterable_differ.mjs +2 -2
  65. package/esm2022/src/change_detection/differs/default_keyvalue_differ.mjs +2 -2
  66. package/esm2022/src/change_detection/differs/iterable_differs.mjs +2 -2
  67. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +2 -2
  68. package/esm2022/src/change_detection/pipe_transform.mjs +2 -2
  69. package/esm2022/src/change_detection/scheduling/exhaustive_check_no_changes.mjs +2 -2
  70. package/esm2022/src/change_detection/scheduling/flags.mjs +2 -2
  71. package/esm2022/src/change_detection/scheduling/ng_zone_scheduling.mjs +2 -2
  72. package/esm2022/src/change_detection/scheduling/zoneless_scheduling.mjs +2 -2
  73. package/esm2022/src/change_detection/scheduling/zoneless_scheduling_impl.mjs +2 -2
  74. package/esm2022/src/change_detection.mjs +2 -2
  75. package/esm2022/src/compiler/compiler_facade.mjs +2 -2
  76. package/esm2022/src/compiler/compiler_facade_interface.mjs +2 -2
  77. package/esm2022/src/console.mjs +2 -2
  78. package/esm2022/src/core.mjs +2 -2
  79. package/esm2022/src/core_private_export.mjs +2 -2
  80. package/esm2022/src/core_reactivity_export.mjs +2 -2
  81. package/esm2022/src/core_reactivity_export_internal.mjs +2 -2
  82. package/esm2022/src/core_render3_private_export.mjs +2 -2
  83. package/esm2022/src/debug/debug_node.mjs +2 -2
  84. package/esm2022/src/defer/cleanup.mjs +2 -2
  85. package/esm2022/src/defer/discovery.mjs +2 -2
  86. package/esm2022/src/defer/dom_triggers.mjs +2 -2
  87. package/esm2022/src/defer/idle_scheduler.mjs +2 -2
  88. package/esm2022/src/defer/instructions.mjs +2 -2
  89. package/esm2022/src/defer/interfaces.mjs +2 -2
  90. package/esm2022/src/defer/timer_scheduler.mjs +2 -2
  91. package/esm2022/src/defer/utils.mjs +2 -2
  92. package/esm2022/src/di/contextual.mjs +2 -2
  93. package/esm2022/src/di/create_injector.mjs +2 -2
  94. package/esm2022/src/di/forward_ref.mjs +2 -2
  95. package/esm2022/src/di/host_attribute_token.mjs +2 -2
  96. package/esm2022/src/di/host_tag_name_token.mjs +2 -2
  97. package/esm2022/src/di/index.mjs +2 -2
  98. package/esm2022/src/di/initializer_token.mjs +2 -2
  99. package/esm2022/src/di/inject_switch.mjs +2 -2
  100. package/esm2022/src/di/injectable.mjs +2 -2
  101. package/esm2022/src/di/injection_token.mjs +2 -2
  102. package/esm2022/src/di/injector.mjs +2 -2
  103. package/esm2022/src/di/injector_compatibility.mjs +2 -2
  104. package/esm2022/src/di/injector_marker.mjs +2 -2
  105. package/esm2022/src/di/injector_token.mjs +2 -2
  106. package/esm2022/src/di/interface/defs.mjs +2 -2
  107. package/esm2022/src/di/interface/injector.mjs +2 -2
  108. package/esm2022/src/di/interface/provider.mjs +2 -2
  109. package/esm2022/src/di/internal_tokens.mjs +2 -2
  110. package/esm2022/src/di/jit/environment.mjs +2 -2
  111. package/esm2022/src/di/jit/injectable.mjs +2 -2
  112. package/esm2022/src/di/jit/util.mjs +2 -2
  113. package/esm2022/src/di/metadata.mjs +2 -2
  114. package/esm2022/src/di/metadata_attr.mjs +2 -2
  115. package/esm2022/src/di/null_injector.mjs +2 -2
  116. package/esm2022/src/di/provider_collection.mjs +2 -2
  117. package/esm2022/src/di/provider_token.mjs +2 -2
  118. package/esm2022/src/di/r3_injector.mjs +2 -2
  119. package/esm2022/src/di/scope.mjs +2 -2
  120. package/esm2022/src/di.mjs +2 -2
  121. package/esm2022/src/error_details_base_url.mjs +2 -2
  122. package/esm2022/src/error_handler.mjs +2 -2
  123. package/esm2022/src/errors.mjs +2 -2
  124. package/esm2022/src/event_delegation_utils.mjs +2 -2
  125. package/esm2022/src/event_dispatch/event_delegation.mjs +2 -2
  126. package/esm2022/src/event_emitter.mjs +2 -2
  127. package/esm2022/src/hydration/annotate.mjs +2 -2
  128. package/esm2022/src/hydration/api.mjs +2 -2
  129. package/esm2022/src/hydration/cleanup.mjs +2 -2
  130. package/esm2022/src/hydration/compression.mjs +2 -2
  131. package/esm2022/src/hydration/error_handling.mjs +2 -2
  132. package/esm2022/src/hydration/event_replay.mjs +2 -2
  133. package/esm2022/src/hydration/i18n.mjs +2 -2
  134. package/esm2022/src/hydration/interfaces.mjs +2 -2
  135. package/esm2022/src/hydration/node_lookup_utils.mjs +2 -2
  136. package/esm2022/src/hydration/skip_hydration.mjs +2 -2
  137. package/esm2022/src/hydration/tokens.mjs +2 -2
  138. package/esm2022/src/hydration/utils.mjs +2 -2
  139. package/esm2022/src/hydration/views.mjs +2 -2
  140. package/esm2022/src/i18n/locale_data_api.mjs +2 -2
  141. package/esm2022/src/i18n/locale_en.mjs +2 -2
  142. package/esm2022/src/i18n/localization.mjs +2 -2
  143. package/esm2022/src/i18n/tokens.mjs +2 -2
  144. package/esm2022/src/i18n/utils.mjs +2 -2
  145. package/esm2022/src/image_performance_warning.mjs +2 -2
  146. package/esm2022/src/interface/lifecycle_hooks.mjs +1 -1
  147. package/esm2022/src/interface/simple_change.mjs +2 -2
  148. package/esm2022/src/interface/type.mjs +2 -2
  149. package/esm2022/src/linker/compiler.mjs +2 -2
  150. package/esm2022/src/linker/component_factory.mjs +2 -2
  151. package/esm2022/src/linker/component_factory_resolver.mjs +2 -2
  152. package/esm2022/src/linker/destroy_ref.mjs +2 -2
  153. package/esm2022/src/linker/element_ref.mjs +2 -2
  154. package/esm2022/src/linker/ng_module_factory.mjs +2 -2
  155. package/esm2022/src/linker/ng_module_factory_loader.mjs +2 -2
  156. package/esm2022/src/linker/ng_module_factory_loader_impl.mjs +2 -2
  157. package/esm2022/src/linker/ng_module_registration.mjs +2 -2
  158. package/esm2022/src/linker/query_list.mjs +2 -2
  159. package/esm2022/src/linker/template_ref.mjs +2 -2
  160. package/esm2022/src/linker/view_container_ref.mjs +2 -2
  161. package/esm2022/src/linker/view_ref.mjs +2 -2
  162. package/esm2022/src/linker.mjs +2 -2
  163. package/esm2022/src/metadata/di.mjs +2 -2
  164. package/esm2022/src/metadata/directives.mjs +2 -2
  165. package/esm2022/src/metadata/do_bootstrap.mjs +2 -2
  166. package/esm2022/src/metadata/ng_module.mjs +2 -2
  167. package/esm2022/src/metadata/ng_module_def.mjs +2 -2
  168. package/esm2022/src/metadata/resource_loading.mjs +2 -2
  169. package/esm2022/src/metadata/schema.mjs +2 -2
  170. package/esm2022/src/metadata/view.mjs +2 -2
  171. package/esm2022/src/metadata.mjs +2 -2
  172. package/esm2022/src/pending_tasks.mjs +2 -2
  173. package/esm2022/src/platform/bootstrap.mjs +1 -1
  174. package/esm2022/src/platform/platform.mjs +2 -2
  175. package/esm2022/src/platform/platform_core_providers.mjs +2 -2
  176. package/esm2022/src/platform/platform_destroy_listeners.mjs +2 -2
  177. package/esm2022/src/platform/platform_ref.mjs +2 -2
  178. package/esm2022/src/r3_symbols.mjs +2 -2
  179. package/esm2022/src/reflection/platform_reflection_capabilities.mjs +2 -2
  180. package/esm2022/src/reflection/reflection_capabilities.mjs +2 -2
  181. package/esm2022/src/render/api.mjs +2 -2
  182. package/esm2022/src/render/api_flags.mjs +2 -2
  183. package/esm2022/src/render.mjs +2 -2
  184. package/esm2022/src/render3/after_render/api.mjs +2 -2
  185. package/esm2022/src/render3/after_render/hooks.mjs +2 -2
  186. package/esm2022/src/render3/after_render/manager.mjs +2 -2
  187. package/esm2022/src/render3/apply_value_input_field.mjs +2 -2
  188. package/esm2022/src/render3/assert.mjs +2 -2
  189. package/esm2022/src/render3/bindings.mjs +2 -2
  190. package/esm2022/src/render3/chained_injector.mjs +2 -2
  191. package/esm2022/src/render3/collect_native_nodes.mjs +2 -2
  192. package/esm2022/src/render3/component.mjs +2 -2
  193. package/esm2022/src/render3/component_ref.mjs +3 -3
  194. package/esm2022/src/render3/context_discovery.mjs +2 -2
  195. package/esm2022/src/render3/debug/framework_injector_profiler.mjs +2 -2
  196. package/esm2022/src/render3/debug/injector_profiler.mjs +2 -2
  197. package/esm2022/src/render3/debug/set_debug_info.mjs +2 -2
  198. package/esm2022/src/render3/definition.mjs +2 -2
  199. package/esm2022/src/render3/definition_factory.mjs +2 -2
  200. package/esm2022/src/render3/deps_tracker/api.mjs +2 -2
  201. package/esm2022/src/render3/deps_tracker/deps_tracker.mjs +2 -2
  202. package/esm2022/src/render3/di.mjs +2 -2
  203. package/esm2022/src/render3/di_setup.mjs +2 -2
  204. package/esm2022/src/render3/errors.mjs +2 -2
  205. package/esm2022/src/render3/errors_di.mjs +2 -2
  206. package/esm2022/src/render3/features/copy_definition_feature.mjs +2 -2
  207. package/esm2022/src/render3/features/host_directives_feature.mjs +2 -2
  208. package/esm2022/src/render3/features/inherit_definition_feature.mjs +2 -2
  209. package/esm2022/src/render3/features/input_transforms_feature.mjs +2 -2
  210. package/esm2022/src/render3/features/ng_onchanges_feature.mjs +2 -2
  211. package/esm2022/src/render3/features/providers_feature.mjs +1 -1
  212. package/esm2022/src/render3/features/standalone_feature.mjs +2 -2
  213. package/esm2022/src/render3/fields.mjs +2 -2
  214. package/esm2022/src/render3/global_utils_api.mjs +2 -2
  215. package/esm2022/src/render3/hooks.mjs +2 -2
  216. package/esm2022/src/render3/i18n/i18n_apply.mjs +2 -2
  217. package/esm2022/src/render3/i18n/i18n_debug.mjs +2 -2
  218. package/esm2022/src/render3/i18n/i18n_insert_before_index.mjs +2 -2
  219. package/esm2022/src/render3/i18n/i18n_locale_id.mjs +2 -2
  220. package/esm2022/src/render3/i18n/i18n_parse.mjs +2 -2
  221. package/esm2022/src/render3/i18n/i18n_postprocess.mjs +2 -2
  222. package/esm2022/src/render3/i18n/i18n_tree_shaking.mjs +2 -2
  223. package/esm2022/src/render3/i18n/i18n_util.mjs +2 -2
  224. package/esm2022/src/render3/index.mjs +2 -2
  225. package/esm2022/src/render3/instructions/advance.mjs +2 -2
  226. package/esm2022/src/render3/instructions/all.mjs +2 -2
  227. package/esm2022/src/render3/instructions/attribute.mjs +2 -2
  228. package/esm2022/src/render3/instructions/attribute_interpolation.mjs +1 -1
  229. package/esm2022/src/render3/instructions/change_detection.mjs +2 -2
  230. package/esm2022/src/render3/instructions/class_map_interpolation.mjs +2 -2
  231. package/esm2022/src/render3/instructions/component_instance.mjs +2 -2
  232. package/esm2022/src/render3/instructions/control_flow.mjs +2 -2
  233. package/esm2022/src/render3/instructions/di.mjs +2 -2
  234. package/esm2022/src/render3/instructions/di_attr.mjs +2 -2
  235. package/esm2022/src/render3/instructions/element.mjs +2 -2
  236. package/esm2022/src/render3/instructions/element_container.mjs +2 -2
  237. package/esm2022/src/render3/instructions/element_validation.mjs +2 -2
  238. package/esm2022/src/render3/instructions/get_current_view.mjs +1 -1
  239. package/esm2022/src/render3/instructions/host_property.mjs +2 -2
  240. package/esm2022/src/render3/instructions/i18n.mjs +2 -2
  241. package/esm2022/src/render3/instructions/i18n_icu_container_visitor.mjs +2 -2
  242. package/esm2022/src/render3/instructions/interpolation.mjs +2 -2
  243. package/esm2022/src/render3/instructions/let_declaration.mjs +2 -2
  244. package/esm2022/src/render3/instructions/listener.mjs +2 -2
  245. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +2 -2
  246. package/esm2022/src/render3/instructions/namespace.mjs +2 -2
  247. package/esm2022/src/render3/instructions/next_context.mjs +2 -2
  248. package/esm2022/src/render3/instructions/projection.mjs +2 -2
  249. package/esm2022/src/render3/instructions/property.mjs +2 -2
  250. package/esm2022/src/render3/instructions/property_interpolation.mjs +1 -1
  251. package/esm2022/src/render3/instructions/queries.mjs +2 -2
  252. package/esm2022/src/render3/instructions/queries_signals.mjs +2 -2
  253. package/esm2022/src/render3/instructions/render.mjs +2 -2
  254. package/esm2022/src/render3/instructions/shared.mjs +2 -2
  255. package/esm2022/src/render3/instructions/storage.mjs +2 -2
  256. package/esm2022/src/render3/instructions/style_map_interpolation.mjs +2 -2
  257. package/esm2022/src/render3/instructions/style_prop_interpolation.mjs +2 -2
  258. package/esm2022/src/render3/instructions/styling.mjs +2 -2
  259. package/esm2022/src/render3/instructions/template.mjs +2 -2
  260. package/esm2022/src/render3/instructions/text.mjs +2 -2
  261. package/esm2022/src/render3/instructions/text_interpolation.mjs +2 -2
  262. package/esm2022/src/render3/instructions/two_way.mjs +2 -2
  263. package/esm2022/src/render3/instructions/write_to_directive_input.mjs +2 -2
  264. package/esm2022/src/render3/interfaces/attribute_marker.mjs +2 -2
  265. package/esm2022/src/render3/interfaces/container.mjs +2 -2
  266. package/esm2022/src/render3/interfaces/context.mjs +2 -2
  267. package/esm2022/src/render3/interfaces/definition.mjs +2 -2
  268. package/esm2022/src/render3/interfaces/document.mjs +2 -2
  269. package/esm2022/src/render3/interfaces/i18n.mjs +2 -2
  270. package/esm2022/src/render3/interfaces/injector.mjs +2 -2
  271. package/esm2022/src/render3/interfaces/input_flags.mjs +2 -2
  272. package/esm2022/src/render3/interfaces/lview_tracking.mjs +2 -2
  273. package/esm2022/src/render3/interfaces/node.mjs +1 -1
  274. package/esm2022/src/render3/interfaces/projection.mjs +2 -2
  275. package/esm2022/src/render3/interfaces/public_definitions.mjs +2 -2
  276. package/esm2022/src/render3/interfaces/query.mjs +2 -2
  277. package/esm2022/src/render3/interfaces/renderer.mjs +2 -2
  278. package/esm2022/src/render3/interfaces/renderer_dom.mjs +2 -2
  279. package/esm2022/src/render3/interfaces/sanitization.mjs +2 -2
  280. package/esm2022/src/render3/interfaces/styling.mjs +2 -2
  281. package/esm2022/src/render3/interfaces/type_checks.mjs +2 -2
  282. package/esm2022/src/render3/interfaces/view.mjs +2 -2
  283. package/esm2022/src/render3/jit/directive.mjs +2 -2
  284. package/esm2022/src/render3/jit/environment.mjs +2 -2
  285. package/esm2022/src/render3/jit/jit_options.mjs +1 -1
  286. package/esm2022/src/render3/jit/module.mjs +2 -2
  287. package/esm2022/src/render3/jit/module_patch.mjs +2 -2
  288. package/esm2022/src/render3/jit/partial.mjs +2 -2
  289. package/esm2022/src/render3/jit/pipe.mjs +2 -2
  290. package/esm2022/src/render3/jit/util.mjs +2 -2
  291. package/esm2022/src/render3/list_reconciliation.mjs +2 -2
  292. package/esm2022/src/render3/local_compilation.mjs +2 -2
  293. package/esm2022/src/render3/metadata.mjs +2 -2
  294. package/esm2022/src/render3/namespaces.mjs +2 -2
  295. package/esm2022/src/render3/ng_module_ref.mjs +2 -2
  296. package/esm2022/src/render3/node_assert.mjs +2 -2
  297. package/esm2022/src/render3/node_manipulation.mjs +2 -2
  298. package/esm2022/src/render3/node_manipulation_i18n.mjs +2 -2
  299. package/esm2022/src/render3/node_selector_matcher.mjs +2 -2
  300. package/esm2022/src/render3/pipe.mjs +2 -2
  301. package/esm2022/src/render3/profiler.mjs +2 -2
  302. package/esm2022/src/render3/profiler_types.mjs +2 -2
  303. package/esm2022/src/render3/pure_function.mjs +2 -2
  304. package/esm2022/src/render3/query.mjs +2 -2
  305. package/esm2022/src/render3/query_reactive.mjs +2 -2
  306. package/esm2022/src/render3/reactive_lview_consumer.mjs +2 -2
  307. package/esm2022/src/render3/reactivity/api.mjs +2 -2
  308. package/esm2022/src/render3/reactivity/asserts.mjs +2 -2
  309. package/esm2022/src/render3/reactivity/computed.mjs +2 -2
  310. package/esm2022/src/render3/reactivity/effect.mjs +2 -2
  311. package/esm2022/src/render3/reactivity/signal.mjs +2 -2
  312. package/esm2022/src/render3/reactivity/untracked.mjs +2 -2
  313. package/esm2022/src/render3/scope.mjs +2 -2
  314. package/esm2022/src/render3/state.mjs +2 -2
  315. package/esm2022/src/render3/styling/class_differ.mjs +2 -2
  316. package/esm2022/src/render3/styling/static_styling.mjs +2 -2
  317. package/esm2022/src/render3/styling/style_binding_list.mjs +2 -2
  318. package/esm2022/src/render3/styling/styling_parser.mjs +2 -2
  319. package/esm2022/src/render3/tokens.mjs +2 -2
  320. package/esm2022/src/render3/util/attrs_utils.mjs +1 -1
  321. package/esm2022/src/render3/util/change_detection_utils.mjs +2 -2
  322. package/esm2022/src/render3/util/discovery_utils.mjs +2 -2
  323. package/esm2022/src/render3/util/global_utils.mjs +2 -2
  324. package/esm2022/src/render3/util/injector_discovery_utils.mjs +2 -2
  325. package/esm2022/src/render3/util/injector_utils.mjs +2 -2
  326. package/esm2022/src/render3/util/misc_utils.mjs +2 -2
  327. package/esm2022/src/render3/util/stringify_utils.mjs +2 -2
  328. package/esm2022/src/render3/util/view_traversal_utils.mjs +2 -2
  329. package/esm2022/src/render3/util/view_utils.mjs +2 -2
  330. package/esm2022/src/render3/view_engine_compatibility_prebound.mjs +2 -2
  331. package/esm2022/src/render3/view_manipulation.mjs +2 -2
  332. package/esm2022/src/render3/view_ref.mjs +2 -2
  333. package/esm2022/src/sanitization/bypass.mjs +2 -2
  334. package/esm2022/src/sanitization/html_sanitizer.mjs +2 -2
  335. package/esm2022/src/sanitization/iframe_attrs_validation.mjs +2 -2
  336. package/esm2022/src/sanitization/inert_body.mjs +2 -2
  337. package/esm2022/src/sanitization/sanitization.mjs +2 -2
  338. package/esm2022/src/sanitization/sanitizer.mjs +2 -2
  339. package/esm2022/src/sanitization/security.mjs +2 -2
  340. package/esm2022/src/sanitization/url_sanitizer.mjs +2 -2
  341. package/esm2022/src/testability/testability.mjs +2 -2
  342. package/esm2022/src/transfer_state.mjs +2 -2
  343. package/esm2022/src/util/array_utils.mjs +2 -2
  344. package/esm2022/src/util/assert.mjs +2 -2
  345. package/esm2022/src/util/callback_scheduler.mjs +2 -2
  346. package/esm2022/src/util/char_code.mjs +2 -2
  347. package/esm2022/src/util/closure.mjs +2 -2
  348. package/esm2022/src/util/coercion.mjs +2 -2
  349. package/esm2022/src/util/comparison.mjs +2 -2
  350. package/esm2022/src/util/decorators.mjs +2 -2
  351. package/esm2022/src/util/dom.mjs +2 -2
  352. package/esm2022/src/util/empty.mjs +2 -2
  353. package/esm2022/src/util/errors.mjs +2 -2
  354. package/esm2022/src/util/global.mjs +2 -2
  355. package/esm2022/src/util/is_dev_mode.mjs +2 -2
  356. package/esm2022/src/util/iterable.mjs +2 -2
  357. package/esm2022/src/util/lang.mjs +2 -2
  358. package/esm2022/src/util/ng_dev_mode.mjs +2 -2
  359. package/esm2022/src/util/ng_i18n_closure_mode.mjs +2 -2
  360. package/esm2022/src/util/ng_jit_mode.mjs +2 -2
  361. package/esm2022/src/util/ng_reflect.mjs +2 -2
  362. package/esm2022/src/util/noop.mjs +2 -2
  363. package/esm2022/src/util/performance.mjs +2 -2
  364. package/esm2022/src/util/property.mjs +2 -2
  365. package/esm2022/src/util/security/trusted_type_defs.mjs +2 -2
  366. package/esm2022/src/util/security/trusted_types.mjs +2 -2
  367. package/esm2022/src/util/security/trusted_types_bypass.mjs +2 -2
  368. package/esm2022/src/util/stringify.mjs +2 -2
  369. package/esm2022/src/version.mjs +3 -3
  370. package/esm2022/src/view/provider_flags.mjs +2 -2
  371. package/esm2022/src/zone/async-stack-tagging.mjs +2 -2
  372. package/esm2022/src/zone/ng_zone.mjs +2 -2
  373. package/esm2022/src/zone.mjs +2 -2
  374. package/esm2022/testing/index.mjs +2 -2
  375. package/esm2022/testing/public_api.mjs +2 -2
  376. package/esm2022/testing/src/application_error_handler.mjs +5 -5
  377. package/esm2022/testing/src/async.mjs +2 -2
  378. package/esm2022/testing/src/component_fixture.mjs +2 -2
  379. package/esm2022/testing/src/defer.mjs +2 -2
  380. package/esm2022/testing/src/fake_async.mjs +2 -2
  381. package/esm2022/testing/src/logger.mjs +5 -5
  382. package/esm2022/testing/src/metadata_override.mjs +2 -2
  383. package/esm2022/testing/src/metadata_overrider.mjs +2 -2
  384. package/esm2022/testing/src/resolvers.mjs +2 -2
  385. package/esm2022/testing/src/styling.mjs +2 -2
  386. package/esm2022/testing/src/test_bed.mjs +2 -2
  387. package/esm2022/testing/src/test_bed_common.mjs +2 -2
  388. package/esm2022/testing/src/test_bed_compiler.mjs +2 -2
  389. package/esm2022/testing/src/test_hooks.mjs +2 -2
  390. package/esm2022/testing/src/testing.mjs +2 -2
  391. package/esm2022/testing/src/testing_internal.mjs +2 -2
  392. package/fesm2022/core.mjs +9 -9
  393. package/fesm2022/core.mjs.map +1 -1
  394. package/fesm2022/primitives/event-dispatch.mjs +1 -1
  395. package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
  396. package/fesm2022/primitives/signals.mjs +1 -1
  397. package/fesm2022/primitives/signals.mjs.map +1 -1
  398. package/fesm2022/rxjs-interop.mjs +2 -2
  399. package/fesm2022/rxjs-interop.mjs.map +1 -1
  400. package/fesm2022/testing.mjs +4 -4
  401. package/fesm2022/testing.mjs.map +1 -1
  402. package/index.d.ts +5 -4
  403. package/package.json +1 -1
  404. package/primitives/event-dispatch/index.d.ts +1 -1
  405. package/primitives/signals/index.d.ts +1 -1
  406. package/rxjs-interop/index.d.ts +1 -1
  407. package/schematics/migrations/after-render-phase/bundle.js +4 -4
  408. package/schematics/migrations/http-providers/bundle.js +4 -4
  409. package/schematics/migrations/invalid-two-way-bindings/bundle.js +4 -4
  410. package/schematics/ng-generate/control-flow-migration/bundle.js +4 -4
  411. package/schematics/ng-generate/inject-migration/bundle.js +4 -4
  412. package/schematics/ng-generate/route-lazy-loading/bundle.js +2 -16
  413. package/schematics/ng-generate/standalone-migration/bundle.js +13 -13
  414. package/testing/index.d.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { isCaptureEventType, EventType } from './event_type';
9
9
  import { KeyCode } from './key_code';
@@ -630,4 +630,4 @@ export const testing = {
630
630
  isMac = value;
631
631
  },
632
632
  };
633
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFpQjtJQUNuRCx5RUFBeUU7SUFDekUsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsdURBQXVEO0lBQ3ZELElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDNUIsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsT0FBZ0IsRUFDaEIsU0FBaUIsRUFDakIsT0FBK0I7SUFFL0Isb0RBQW9EO0lBQ3BELFNBQVM7SUFDVCxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxZ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WixVQUFVLEVBQUUsSUFBSTtJQUNoQixRQUFRLEVBQUUsSUFBSTtJQUNkLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7Q0FDakIsQ0FBQztBQUVGLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsUUFBUSxDQUFDLEtBQWM7UUFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNoQixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0V2ZW50SGFuZGxlckluZm99IGZyb20gJy4vZXZlbnRfaGFuZGxlcic7XG5pbXBvcnQge2lzQ2FwdHVyZUV2ZW50VHlwZSwgRXZlbnRUeXBlfSBmcm9tICcuL2V2ZW50X3R5cGUnO1xuaW1wb3J0IHtLZXlDb2RlfSBmcm9tICcuL2tleV9jb2RlJztcblxuLyoqXG4gKiBHZXRzIGEgYnJvd3NlciBldmVudCB0eXBlLCBpZiBpdCB3b3VsZCBkaWZmZXIgZnJvbSB0aGUgSlNBY3Rpb24gZXZlbnQgdHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJFdmVudFR5cGUoZXZlbnRUeXBlOiBzdHJpbmcpIHtcbiAgLy8gTW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZSBldmVudHMgYXJlIG5vdCBoYW5kbGVkIGRpcmVjdGx5IGJlY2F1c2UgdGhleVxuICAvLyBhcmUgbm90IGF2YWlsYWJsZSBldmVyeXdoZXJlLiBJbiBicm93c2VycyB3aGVyZSB0aGV5IGFyZSBhdmFpbGFibGUsIHRoZXlcbiAgLy8gZG9uJ3QgYnViYmxlIGFuZCBhcmVuJ3QgdmlzaWJsZSBhdCB0aGUgY29udGFpbmVyIGJvdW5kYXJ5LiBJbnN0ZWFkLCB3ZVxuICAvLyBzeW50aGVzaXplIHRoZSBtb3VzZWVudGVyIGFuZCBtb3VzZWxlYXZlIGV2ZW50cyBmcm9tIG1vdXNlb3ZlciBhbmRcbiAgLy8gbW91c2VvdXQgZXZlbnRzLCByZXNwZWN0aXZlbHkuIENmLiBldmVudGNvbnRyYWN0LmpzLlxuICBpZiAoZXZlbnRUeXBlID09PSBFdmVudFR5cGUuTU9VU0VFTlRFUikge1xuICAgIHJldHVybiBFdmVudFR5cGUuTU9VU0VPVkVSO1xuICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFTEVBVkUpIHtcbiAgICByZXR1cm4gRXZlbnRUeXBlLk1PVVNFT1VUO1xuICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLlBPSU5URVJFTlRFUikge1xuICAgIHJldHVybiBFdmVudFR5cGUuUE9JTlRFUk9WRVI7XG4gIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSBFdmVudFR5cGUuUE9JTlRFUkxFQVZFKSB7XG4gICAgcmV0dXJuIEV2ZW50VHlwZS5QT0lOVEVST1VUO1xuICB9XG4gIHJldHVybiBldmVudFR5cGU7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBldmVudCBoYW5kbGVyIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVuIERPTSBlbGVtZW50IGZvclxuICogdGhlIGdpdmVuIGV2ZW50IHR5cGUuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0gZXZlbnRUeXBlIFRoZSBldmVudCB0eXBlLlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZnVuY3Rpb24gdG8gaW5zdGFsbC5cbiAqIEByZXR1cm4gSW5mb3JtYXRpb24gbmVlZGVkIHRvIHVuaW5zdGFsbCB0aGUgZXZlbnQgaGFuZGxlciBldmVudHVhbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcihcbiAgZWxlbWVudDogRWxlbWVudCxcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGhhbmRsZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsXG4pOiBFdmVudEhhbmRsZXJJbmZvIHtcbiAgLy8gQWxsIGV2ZW50IGhhbmRsZXJzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBidWJibGluZ1xuICAvLyBwaGFzZS5cbiAgLy9cbiAgLy8gQWxsIGJyb3dzZXJzIHN1cHBvcnQgZm9jdXMgYW5kIGJsdXIsIGJ1dCB0aGVzZSBldmVudHMgb25seSBhcmUgcHJvcGFnYXRlZFxuICAvLyBpbiB0aGUgY2FwdHVyZSBwaGFzZS4gVmVyeSBsZWdhY3kgYnJvd3NlcnMgZG8gbm90IHN1cHBvcnQgZm9jdXNpbiBvclxuICAvLyBmb2N1c291dC5cbiAgLy9cbiAgLy8gSXQgd291bGQgYmUgYSBiYWQgaWRlYSB0byByZWdpc3RlciBhbGwgZXZlbnQgaGFuZGxlcnMgaW4gdGhlXG4gIC8vIGNhcHR1cmUgcGhhc2UgYmVjYXVzZSB0aGVuIHJlZ3VsYXIgb25jbGljayBoYW5kbGVycyB3b3VsZCBub3QgYmVcbiAgLy8gZXhlY3V0ZWQgYXQgYWxsIG9uIGV2ZW50cyB0aGF0IHRyaWdnZXIgYSBqc2FjdGlvbi4gVGhhdCdzIG5vdFxuICAvLyBlbnRpcmVseSB3aGF0IHdlIHdhbnQsIGF0IGxlYXN0IGZvciBub3cuXG4gIC8vXG4gIC8vIEVycm9yIGFuZCBsb2FkIGV2ZW50cyAoaS5lLiBvbiBpbWFnZXMpIGRvIG5vdCBidWJibGUgc28gdGhleSBhcmUgYWxzb1xuICAvLyBoYW5kbGVkIGluIHRoZSBjYXB0dXJlIHBoYXNlLlxuICBsZXQgY2FwdHVyZSA9IGZhbHNlO1xuXG4gIGlmIChpc0NhcHR1cmVFdmVudFR5cGUoZXZlbnRUeXBlKSkge1xuICAgIGNhcHR1cmUgPSB0cnVlO1xuICB9XG4gIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGNhcHR1cmUpO1xuXG4gIHJldHVybiB7ZXZlbnRUeXBlLCBoYW5kbGVyLCBjYXB0dXJlfTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBldmVudCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gZXZlbnQgZnJvbSB0aGUgZWxlbWVudC5cbiAqIHRoZSBnaXZlbiBldmVudCB0eXBlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50LlxuICogQHBhcmFtIGluZm8gVGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBkZXJlZ2lzdGVyIHRoZSBoYW5kbGVyLCBhcyByZXR1cm5lZCBieVxuICogICAgIGFkZEV2ZW50TGlzdGVuZXIoKSwgYWJvdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKGVsZW1lbnQ6IEVsZW1lbnQsIGluZm86IEV2ZW50SGFuZGxlckluZm8pIHtcbiAgaWYgKGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcikge1xuICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihpbmZvLmV2ZW50VHlwZSwgaW5mby5oYW5kbGVyIGFzIEV2ZW50TGlzdGVuZXIsIGluZm8uY2FwdHVyZSk7XG4gICAgLy8gYGRldGFjaEV2ZW50YCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIH0gZWxzZSBpZiAoKGVsZW1lbnQgYXMgYW55KS5kZXRhY2hFdmVudCkge1xuICAgIC8vIGBkZXRhY2hFdmVudGAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlbGVtZW50IGFzIGFueSkuZGV0YWNoRXZlbnQoYG9uJHtpbmZvLmV2ZW50VHlwZX1gLCBpbmZvLmhhbmRsZXIpO1xuICB9XG59XG5cbi8qKlxuICogQ2FuY2VscyBwcm9wYWdhdGlvbiBvZiBhbiBldmVudC5cbiAqIEBwYXJhbSBlIFRoZSBldmVudCB0byBjYW5jZWwgcHJvcGFnYXRpb24gZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcFByb3BhZ2F0aW9uKGU6IEV2ZW50KSB7XG4gIGUuc3RvcFByb3BhZ2F0aW9uID8gZS5zdG9wUHJvcGFnYXRpb24oKSA6IChlLmNhbmNlbEJ1YmJsZSA9IHRydWUpO1xufVxuXG4vKipcbiAqIFByZXZlbnRzIHRoZSBkZWZhdWx0IGFjdGlvbiBvZiBhbiBldmVudC5cbiAqIEBwYXJhbSBlIFRoZSBldmVudCB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChlOiBFdmVudCkge1xuICBlLnByZXZlbnREZWZhdWx0ID8gZS5wcmV2ZW50RGVmYXVsdCgpIDogKGUucmV0dXJuVmFsdWUgPSBmYWxzZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdGFyZ2V0IEVsZW1lbnQgb2YgdGhlIGV2ZW50LiBJbiBGaXJlZm94LCBhIHRleHQgbm9kZSBtYXkgYXBwZWFyIGFzXG4gKiB0aGUgdGFyZ2V0IG9mIHRoZSBldmVudCwgaW4gd2hpY2ggY2FzZSB3ZSByZXR1cm4gdGhlIHBhcmVudCBlbGVtZW50IG9mIHRoZVxuICogdGV4dCBub2RlLlxuICogQHBhcmFtIGUgVGhlIGV2ZW50IHRvIGdldCB0aGUgdGFyZ2V0IG9mLlxuICogQHJldHVybiBUaGUgdGFyZ2V0IGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUYXJnZXQoZTogRXZlbnQpOiBFbGVtZW50IHtcbiAgbGV0IGVsID0gZS50YXJnZXQgYXMgRWxlbWVudDtcblxuICAvLyBJbiBGaXJlZm94LCB0aGUgZXZlbnQgbWF5IGhhdmUgYSB0ZXh0IG5vZGUgYXMgaXRzIHRhcmdldC4gV2UgYWx3YXlzXG4gIC8vIHdhbnQgdGhlIHBhcmVudCBFbGVtZW50IHRoZSB0ZXh0IG5vZGUgYmVsb25ncyB0bywgaG93ZXZlci5cbiAgaWYgKCFlbC5nZXRBdHRyaWJ1dGUgJiYgZWwucGFyZW50Tm9kZSkge1xuICAgIGVsID0gZWwucGFyZW50Tm9kZSBhcyBFbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGVsO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgd2UgYXJlIG9uIGEgTWFjLiBOb3QgcHVsbGluZyBpbiB1c2VyYWdlbnQganVzdCBmb3IgdGhpcy5cbiAqL1xubGV0IGlzTWFjOiBib29sZWFuID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL01hY2ludG9zaC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGV2ZW50ICh3aGljaCBpcyBhc3N1bWVkIHRvIGJlIGFcbiAqIGNsaWNrIGV2ZW50KSBpcyBhIG1pZGRsZSBjbGljay5cbiAqIE5PVEU6IFRoZXJlIGlzIG5vdCBhIGNvbnNpc3RlbnQgd2F5IHRvIGlkZW50aWZ5IG1pZGRsZSBjbGlja1xuICogaHR0cDovL3d3dy51bml4cGFwYS5jb20vanMvbW91c2UuaHRtbFxuICovXG5mdW5jdGlvbiBpc01pZGRsZUNsaWNrKGU6IEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgLy8gYHdoaWNoYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS53aGljaCA9PT0gMiB8fFxuICAgIC8vIGB3aGljaGAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICgoZSBhcyBhbnkpLndoaWNoID09IG51bGwgJiZcbiAgICAgIC8vIGBidXR0b25gIGlzIGFuIG9sZCBET00gQVBJLlxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgKGUgYXMgYW55KS5idXR0b24gPT09IDQpIC8vIG1pZGRsZSBjbGljayBmb3IgSUVcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGV2ZW50ICh3aGljaCBpcyBhc3N1bWVkXG4gKiB0byBiZSBhIGNsaWNrIGV2ZW50KSBpcyBtb2RpZmllZC4gQSBtaWRkbGUgY2xpY2sgaXMgY29uc2lkZXJlZCBhIG1vZGlmaWVkXG4gKiBjbGljayB0byByZXRhaW4gdGhlIGRlZmF1bHQgYnJvd3NlciBhY3Rpb24sIHdoaWNoIG9wZW5zIGEgbGluayBpbiBhIG5ldyB0YWIuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQuXG4gKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGdpdmVuIGV2ZW50IGlzIG1vZGlmaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNb2RpZmllZENsaWNrRXZlbnQoZTogRXZlbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAvLyBgbWV0YUtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChpc01hYyAmJiAoZSBhcyBhbnkpLm1ldGFLZXkpIHx8XG4gICAgLy8gYGN0cmxLZXlgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoIWlzTWFjICYmIChlIGFzIGFueSkuY3RybEtleSkgfHxcbiAgICBpc01pZGRsZUNsaWNrKGUpIHx8XG4gICAgLy8gYHNoaWZ0S2V5YCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS5zaGlmdEtleVxuICApO1xufVxuXG4vKiogV2hldGhlciB3ZSBhcmUgb24gV2ViS2l0IChlLmcuLCBDaHJvbWUpLiAqL1xuZXhwb3J0IGNvbnN0IGlzV2ViS2l0OiBib29sZWFuID1cbiAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgIS9PcGVyYS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJlxuICAvV2ViS2l0Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vKiogV2hldGhlciB3ZSBhcmUgb24gSUUuICovXG5leHBvcnQgY29uc3QgaXNJZTogYm9vbGVhbiA9XG4gIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICgvTVNJRS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAvVHJpZGVudC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSk7XG5cbi8qKiBXaGV0aGVyIHdlIGFyZSBvbiBHZWNrbyAoZS5nLiwgRmlyZWZveCkuICovXG5leHBvcnQgY29uc3QgaXNHZWNrbzogYm9vbGVhbiA9XG4gIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICEvT3BlcmF8V2ViS2l0Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmXG4gIC9HZWNrby8udGVzdChuYXZpZ2F0b3IucHJvZHVjdCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBhbmQgcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgdmFsaWQgdGFyZ2V0IGZvclxuICoga2V5cHJlc3Mva2V5ZG93biBET00gZXZlbnRzIHRoYXQgYWN0IGxpa2UgcmVndWxhciBET00gY2xpY2tzLlxuICogQHBhcmFtIGVsIFRoZSBlbGVtZW50LlxuICogQHJldHVybiBXaGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgdmFsaWQgYWN0aW9uIGtleSB0YXJnZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWN0aW9uS2V5VGFyZ2V0KGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmICghKCdnZXRBdHRyaWJ1dGUnIGluIGVsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoaXNUZXh0Q29udHJvbChlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzTmF0aXZlbHlBY3RpdmF0YWJsZShlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gYGlzQ29udGVudEVkaXRhYmxlYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBpZiAoKGVsIGFzIGFueSkuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGFuIGV2ZW50IGhhcyBhIG1vZGlmaWVyIGtleSBhY3RpdmF0ZWQuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQuXG4gKiBAcmV0dXJuIFRydWUsIGlmIGEgbW9kaWZpZXIga2V5IGlzIGFjdGl2YXRlZC5cbiAqL1xuZnVuY3Rpb24gaGFzTW9kaWZpZXJLZXkoZTogRXZlbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAvLyBgY3RybEtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkuY3RybEtleSB8fFxuICAgIC8vIGBzaGlmdEtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkuc2hpZnRLZXkgfHxcbiAgICAvLyBgYWx0S2V5YCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS5hbHRLZXkgfHxcbiAgICAvLyBgbWV0YUtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkubWV0YUtleVxuICApO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgYW5kIHJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gZXZlbnQgaGFzIGEgdGFyZ2V0IHRoYXQgYWxyZWFkeVxuICogaGFzIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIGJlY2F1c2UgaXQgaXMgYSBuYXRpdmUgSFRNTCBjb250cm9sLiBVc2VkIHRvXG4gKiBkZXRlcm1pbmUgaWYgcHJldmVudERlZmF1bHQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGlzQWN0aW9uS2V5RXZlbnQgaXMgdHJ1ZS5cbiAqIEBwYXJhbSBlIFRoZSBldmVudC5cbiAqIEByZXR1cm4gSWYgcHJldmVudERlZmF1bHQgc2hvdWxkIGJlIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZENhbGxQcmV2ZW50RGVmYXVsdE9uTmF0aXZlSHRtbENvbnRyb2woZTogRXZlbnQpOiBib29sZWFuIHtcbiAgY29uc3QgZWwgPSBnZXRUYXJnZXQoZSk7XG4gIGNvbnN0IHRhZ05hbWUgPSBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHJvbGUgPSAoZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykgfHwgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgaWYgKHRhZ05hbWUgPT09ICdCVVRUT04nIHx8IHJvbGUgPT09ICdCVVRUT04nKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKCFpc05hdGl2ZUhUTUxDb250cm9sKGVsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBGaXggZm9yIHBoeXNpY2FsIGQtcGFkcyBvbiBmZWF0dXJlIHBob25lIHBsYXRmb3JtczsgdGhlIG5hdGl2ZSBldmVudFxuICAgKiAoaWUuIGlzVHJ1c3RlZDogdHJ1ZSkgbmVlZHMgdG8gZmlyZSB0byBzaG93IHRoZSBPUFRJT04gbGlzdC4gU2VlXG4gICAqIGIvMTM1Mjg4NDY5IGZvciBtb3JlIGluZm8uXG4gICAqL1xuICBpZiAodGFnTmFtZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHByb2Nlc3NTcGFjZShlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzVGV4dENvbnRyb2woZWwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgYW5kIHJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gZXZlbnQgYWN0cyBsaWtlIGEgcmVndWxhciBET00gY2xpY2ssXG4gKiBhbmQgc2hvdWxkIGJlIGhhbmRsZWQgaW5zdGVhZCBvZiB0aGUgY2xpY2suICBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdGhlIGNhbGxlclxuICogd2lsbCBjYWxsIHByZXZlbnREZWZhdWx0KCkgdG8gcHJldmVudCBhIHBvc3NpYmxlIGR1cGxpY2F0ZSBldmVudC5cbiAqIFRoaXMgaXMgcmVwcmVzZW50ZWQgYnkgYSBrZXlwcmVzcyAoa2V5ZG93biBvbiBHZWNrbyBicm93c2Vycykgb24gRW50ZXIgb3JcbiAqIFNwYWNlIGtleS5cbiAqIEBwYXJhbSBlIFRoZSBldmVudC5cbiAqIEByZXR1cm4gVHJ1ZSwgaWYgdGhlIGV2ZW50IGVtdWxhdGVzIGEgRE9NIGNsaWNrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25LZXlFdmVudChlOiBFdmVudCk6IGJvb2xlYW4ge1xuICBsZXQga2V5ID1cbiAgICAvLyBgd2hpY2hgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLndoaWNoIHx8XG4gICAgLy8gYGtleUNvZGVgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLmtleUNvZGU7XG4gIGlmICgha2V5ICYmIChlIGFzIEtleWJvYXJkRXZlbnQpLmtleSkge1xuICAgIGtleSA9IEFDVElPTl9LRVlfVE9fS0VZQ09ERVsoZSBhcyBLZXlib2FyZEV2ZW50KS5rZXldO1xuICB9XG4gIGlmIChpc1dlYktpdCAmJiBrZXkgPT09IEtleUNvZGUuTUFDX0VOVEVSKSB7XG4gICAga2V5ID0gS2V5Q29kZS5FTlRFUjtcbiAgfVxuICBpZiAoa2V5ICE9PSBLZXlDb2RlLkVOVEVSICYmIGtleSAhPT0gS2V5Q29kZS5TUEFDRSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBlbCA9IGdldFRhcmdldChlKTtcbiAgaWYgKGUudHlwZSAhPT0gRXZlbnRUeXBlLktFWURPV04gfHwgIWlzVmFsaWRBY3Rpb25LZXlUYXJnZXQoZWwpIHx8IGhhc01vZGlmaWVyS2V5KGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gRm9yIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj4sIHdlIG11c3Qgb25seSBoYW5kbGUgdGhlIGJyb3dzZXIncyBuYXRpdmUgY2xpY2tcbiAgLy8gZXZlbnQsIHNvIHRoYXQgdGhlIGJyb3dzZXIgY2FuIHRvZ2dsZSB0aGUgY2hlY2tib3guXG4gIGlmIChwcm9jZXNzU3BhY2UoZWwpICYmIGtleSA9PT0gS2V5Q29kZS5TUEFDRSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIElmIHRoaXMgZWxlbWVudCBpcyBub24tZm9jdXNhYmxlLCBpZ25vcmUgc3RyYXkga2V5c3Ryb2tlcyAoYi8xODMzNzIwOSlcbiAgLy8gU3NjcmVlbiByZWFkZXJzIGNhbiBtb3ZlIHdpdGhvdXQgdGFiIGZvY3VzLCBzbyBhbnkgdGFiSW5kZXggaXMgZm9jdXNhYmxlLlxuICAvLyBTZWUgQi8yMTgwOTYwNFxuICBpZiAoIWlzRm9jdXNhYmxlKGVsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSAoXG4gICAgZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykgfHxcbiAgICAoZWwgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSB8fFxuICAgIGVsLnRhZ05hbWVcbiAgKS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCBpc1NwZWNpZmljVHJpZ2dlcktleSA9IElERU5USUZJRVJfVE9fS0VZX1RSSUdHRVJfTUFQUElOR1t0eXBlXSAlIGtleSA9PT0gMDtcbiAgY29uc3QgaXNEZWZhdWx0VHJpZ2dlcktleSA9ICEodHlwZSBpbiBJREVOVElGSUVSX1RPX0tFWV9UUklHR0VSX01BUFBJTkcpICYmIGtleSA9PT0gS2V5Q29kZS5FTlRFUjtcbiAgY29uc3QgaGFzVHlwZSA9IGVsLnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gJ0lOUFVUJyB8fCAhIShlbCBhcyBIVE1MSW5wdXRFbGVtZW50KS50eXBlO1xuICByZXR1cm4gKGlzU3BlY2lmaWNUcmlnZ2VyS2V5IHx8IGlzRGVmYXVsdFRyaWdnZXJLZXkpICYmIGhhc1R5cGU7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBET00gZWxlbWVudCBjYW4gcmVjZWl2ZSBrZXlib2FyZCBmb2N1cy5cbiAqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBnb29nLmRvbS5pc0ZvY3VzYWJsZSwgYnV0IHNpbXBsaWZpZWQgc2luY2Ugd2Ugc2hvdWxkbid0XG4gKiBjYXJlIGFib3V0IHZpc2liaWxpdHkgaWYgd2UncmUgYWxyZWFkeSBoYW5kbGluZyBhIGtleWJvYXJkIGV2ZW50LlxuICovXG5mdW5jdGlvbiBpc0ZvY3VzYWJsZShlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIChlbC50YWdOYW1lIGluIE5BVElWRUxZX0ZPQ1VTQUJMRV9FTEVNRU5UUyB8fCBoYXNTcGVjaWZpZWRUYWJJbmRleChlbCkpICYmXG4gICAgIShlbCBhcyBIVE1MSW5wdXRFbGVtZW50KS5kaXNhYmxlZFxuICApO1xufVxuXG4vKipcbiAqIEBwYXJhbSBlbGVtZW50IEVsZW1lbnQgdG8gY2hlY2suXG4gKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGVsZW1lbnQgaGFzIGEgc3BlY2lmaWVkIHRhYiBpbmRleC5cbiAqL1xuZnVuY3Rpb24gaGFzU3BlY2lmaWVkVGFiSW5kZXgoZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBJRSByZXR1cm5zIDAgZm9yIGFuIHVuc2V0IHRhYkluZGV4LCBzbyB3ZSBtdXN0IHVzZSBnZXRBdHRyaWJ1dGVOb2RlKCksXG4gIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSAnc3BlY2lmaWVkJyBwcm9wZXJ0eSBpZiB0YWJJbmRleCBpc1xuICAvLyBzcGVjaWZpZWQuICBUaGlzIHdvcmtzIG9uIG90aGVyIGJyb3dzZXJzLCB0b28uXG4gIGNvbnN0IGF0dHJOb2RlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGVOb2RlKCd0YWJpbmRleCcpOyAvLyBNdXN0IGJlIGxvd2VyY2FzZSFcbiAgcmV0dXJuIGF0dHJOb2RlICE9IG51bGwgJiYgYXR0ck5vZGUuc3BlY2lmaWVkO1xufVxuXG4vKiogRWxlbWVudCB0YWduYW1lcyB0aGF0IGFyZSBmb2N1c2FibGUgYnkgZGVmYXVsdC4gKi9cbmNvbnN0IE5BVElWRUxZX0ZPQ1VTQUJMRV9FTEVNRU5UUzoge1trZXk6IHN0cmluZ106IG51bWJlcn0gPSB7XG4gICdBJzogMSxcbiAgJ0lOUFVUJzogMSxcbiAgJ1RFWFRBUkVBJzogMSxcbiAgJ1NFTEVDVCc6IDEsXG4gICdCVVRUT04nOiAxLFxufTtcblxuLyoqIEByZXR1cm4gVHJ1ZSwgaWYgdGhlIFNwYWNlIGtleSB3YXMgcHJlc3NlZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NwYWNlS2V5RXZlbnQoZTogRXZlbnQpOiBib29sZWFuIHtcbiAgY29uc3Qga2V5ID1cbiAgICAvLyBgd2hpY2hgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLndoaWNoIHx8XG4gICAgLy8gYGtleUNvZGVgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLmtleUNvZGU7XG4gIGNvbnN0IGVsID0gZ2V0VGFyZ2V0KGUpO1xuICBjb25zdCBlbGVtZW50TmFtZSA9ICgoZWwgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZSB8fCBlbC50YWdOYW1lKS50b1VwcGVyQ2FzZSgpO1xuICByZXR1cm4ga2V5ID09PSBLZXlDb2RlLlNQQUNFICYmIGVsZW1lbnROYW1lICE9PSAnQ0hFQ0tCT1gnO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgZXZlbnQgY29ycmVzcG9uZHMgdG8gYSBub24tYnViYmxpbmcgbW91c2VcbiAqIGV2ZW50IHR5cGUgKG1vdXNlZW50ZXIsIG1vdXNlbGVhdmUsIHBvaW50ZXJlbnRlciwgYW5kIHBvaW50ZXJsZWF2ZSkuXG4gKlxuICogRHVyaW5nIG1vdXNlb3ZlciAobW91c2VlbnRlcikgYW5kIHBvaW50ZXJvdmVyIChwb2ludGVyZW50ZXIpLCB0aGVcbiAqIHJlbGF0ZWRUYXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgZW50ZXJlZCBmcm9tLiBEdXJpbmcgbW91c2VvdXQgKG1vdXNlbGVhdmUpXG4gKiBhbmQgcG9pbnRlcm91dCAocG9pbnRlcmxlYXZlKSwgdGhlIHJlbGF0ZWRUYXJnZXQgaXMgdGhlIGVsZW1lbnQgYmVpbmcgZXhpdGVkXG4gKiB0by5cbiAqXG4gKiBJbiBib3RoIGNhc2VzLCBpZiByZWxhdGVkVGFyZ2V0IGlzIG91dHNpZGUgdGFyZ2V0LCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nXG4gKiBzcGVjaWFsIGV2ZW50IGhhcyBvY2N1cnJlZCwgb3RoZXJ3aXNlIGl0IGhhc24ndC5cbiAqXG4gKiBAcGFyYW0gZSBUaGUgbW91c2VvdmVyL21vdXNlb3V0IGV2ZW50LlxuICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIG1vdXNlIHNwZWNpYWwgZXZlbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCBvbiB3aGljaCB0aGUganNhY3Rpb24gZm9yIHRoZVxuICogICAgIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudCBpcyBkZWZpbmVkLlxuICogQHJldHVybiBUcnVlIGlmIHRoZSBldmVudCBpcyBhIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTW91c2VTcGVjaWFsRXZlbnQoZTogRXZlbnQsIHR5cGU6IHN0cmluZywgZWxlbWVudDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAvLyBgcmVsYXRlZFRhcmdldGAgaXMgYW4gb2xkIERPTSBBUEkuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgY29uc3QgcmVsYXRlZCA9IChlIGFzIGFueSkucmVsYXRlZFRhcmdldCBhcyBOb2RlO1xuXG4gIHJldHVybiAoXG4gICAgKChlLnR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRU9WRVIgJiYgdHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFRU5URVIpIHx8XG4gICAgICAoZS50eXBlID09PSBFdmVudFR5cGUuTU9VU0VPVVQgJiYgdHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFTEVBVkUpIHx8XG4gICAgICAoZS50eXBlID09PSBFdmVudFR5cGUuUE9JTlRFUk9WRVIgJiYgdHlwZSA9PT0gRXZlbnRUeXBlLlBPSU5URVJFTlRFUikgfHxcbiAgICAgIChlLnR5cGUgPT09IEV2ZW50VHlwZS5QT0lOVEVST1VUICYmIHR5cGUgPT09IEV2ZW50VHlwZS5QT0lOVEVSTEVBVkUpKSAmJlxuICAgICghcmVsYXRlZCB8fCAocmVsYXRlZCAhPT0gZWxlbWVudCAmJiAhZWxlbWVudC5jb250YWlucyhyZWxhdGVkKSkpXG4gICk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBFdmVudExpa2Ugb2JqZWN0IGZvciBhIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudCB0aGF0J3NcbiAqIGRlcml2ZWQgZnJvbSB0aGUgb3JpZ2luYWwgY29ycmVzcG9uZGluZyBtb3VzZW92ZXIvbW91c2VvdXQgZXZlbnQuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQuXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSBlbGVtZW50IG9uIHdoaWNoIHRoZSBqc2FjdGlvbiBmb3IgdGhlIG1vdXNlZW50ZXIvbW91c2VsZWF2ZVxuICogICAgIGV2ZW50IGlzIGRlZmluZWQuXG4gKiBAcmV0dXJuIEEgbW9kaWZpZWQgZXZlbnQtbGlrZSBvYmplY3QgY29waWVkIGZyb20gdGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgaW50b1xuICogICAgIHRoaXMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb3VzZVNwZWNpYWxFdmVudChlOiBFdmVudCwgdGFyZ2V0OiBFbGVtZW50KTogRXZlbnQge1xuICAvLyBXZSBoYXZlIHRvIGNyZWF0ZSBhIGNvcHkgb2YgdGhlIGV2ZW50IG9iamVjdCBiZWNhdXNlIHdlIG5lZWQgdG8gbXV0YXRlXG4gIC8vIGl0cyBmaWVsZHMuIFdlIGRvIHRoaXMgZm9yIHRoZSBzcGVjaWFsIG1vdXNlIGV2ZW50cyBiZWNhdXNlIHRoZSBldmVudFxuICAvLyB0YXJnZXQgbmVlZHMgdG8gYmUgcmV0YXJnZXRlZCB0byB0aGUgYWN0aW9uIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIHJlYWxcbiAgLy8gZWxlbWVudCAoc2luY2Ugd2UgYXJlIHNpbXVsYXRpbmcgdGhlIHNwZWNpYWwgbW91c2UgZXZlbnRzIHdpdGggbW91c2VvdmVyL1xuICAvLyBtb3VzZW91dCkuXG4gIC8vXG4gIC8vIFNpbmNlIHdlJ3JlIG1ha2luZyBhIGNvcHkgYW55d2F5cywgd2UgbWlnaHQgYXMgd2VsbCBhdHRlbXB0IHRvIGNvbnZlcnRcbiAgLy8gdGhpcyBldmVudCBpbnRvIGEgcHNldWRvLXJlYWwgbW91c2VlbnRlci9tb3VzZWxlYXZlIGV2ZW50IGJ5IGFkanVzdGluZ1xuICAvLyBpdHMgdHlwZS5cbiAgLy9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBjb25zdCBjb3B5OiB7LXJlYWRvbmx5IFtQIGluIGtleW9mIEV2ZW50XT86IEV2ZW50W1BdfSA9IHt9O1xuICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGUpIHtcbiAgICBpZiAocHJvcGVydHkgPT09ICdzcmNFbGVtZW50JyB8fCBwcm9wZXJ0eSA9PT0gJ3RhcmdldCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBwcm9wZXJ0eSBhcyBrZXlvZiBFdmVudDtcbiAgICAvLyBNYWtpbmcgYSBjb3B5IHJlcXVpcmVzIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBwcm9wZXJ0aWVzIG9mIGBFdmVudGAuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWRpY3QtYWNjZXNzLW9uLXN0cnVjdC10eXBlXG4gICAgY29uc3QgdmFsdWUgPSBlW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIFZhbHVlIHNob3VsZCBiZSB0aGUgZXhwZWN0ZWQgdHlwZSwgYnV0IHRoZSB2YWx1ZSBvZiBga2V5YCBpcyBub3Qga25vd25cbiAgICAvLyBzdGF0aWNhbGx5LlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICBjb3B5W2tleV0gPSB2YWx1ZSBhcyBhbnk7XG4gIH1cbiAgaWYgKGUudHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFT1ZFUikge1xuICAgIGNvcHlbJ3R5cGUnXSA9IEV2ZW50VHlwZS5NT1VTRUVOVEVSO1xuICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFT1VUKSB7XG4gICAgY29weVsndHlwZSddID0gRXZlbnRUeXBlLk1PVVNFTEVBVkU7XG4gIH0gZWxzZSBpZiAoZS50eXBlID09PSBFdmVudFR5cGUuUE9JTlRFUk9WRVIpIHtcbiAgICBjb3B5Wyd0eXBlJ10gPSBFdmVudFR5cGUuUE9JTlRFUkVOVEVSO1xuICB9IGVsc2Uge1xuICAgIGNvcHlbJ3R5cGUnXSA9IEV2ZW50VHlwZS5QT0lOVEVSTEVBVkU7XG4gIH1cbiAgY29weVsndGFyZ2V0J10gPSBjb3B5WydzcmNFbGVtZW50J10gPSB0YXJnZXQ7XG4gIGNvcHlbJ2J1YmJsZXMnXSA9IGZhbHNlO1xuICByZXR1cm4gY29weSBhcyBFdmVudDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRvdWNoIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIHRvdWNoIGV2ZW50OiBjbGllbnRYLCBjbGllbnRZLCBzY3JlZW5YXG4gKiBhbmQgc2NyZWVuWS4gSWYgdGhlIGV2ZW50IGhhcyBubyB0b3VjaCBpbmZvcm1hdGlvbiBhdCBhbGwsIHRoZSByZXR1cm5lZFxuICogdmFsdWUgaXMgbnVsbC5cbiAqXG4gKiBUaGUgZmllbGRzIG9mIHRoaXMgT2JqZWN0IGFyZSB1bnF1b3RlZC5cbiAqXG4gKiBAcGFyYW0gZXZlbnQgQSB0b3VjaCBldmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvdWNoRGF0YShcbiAgZXZlbnQ6IFRvdWNoRXZlbnQsXG4pOiB7Y2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXI7IHNjcmVlblg6IG51bWJlcjsgc2NyZWVuWTogbnVtYmVyfSB8IG51bGwge1xuICBjb25zdCB0b3VjaCA9XG4gICAgKGV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKSB8fCAoZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzWzBdKTtcbiAgaWYgKCF0b3VjaCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiB7XG4gICAgY2xpZW50WDogdG91Y2guY2xpZW50WCxcbiAgICBjbGllbnRZOiB0b3VjaC5jbGllbnRZLFxuICAgIHNjcmVlblg6IHRvdWNoLnNjcmVlblgsXG4gICAgc2NyZWVuWTogdG91Y2guc2NyZWVuWSxcbiAgfTtcbn1cblxuZGVjbGFyZSBpbnRlcmZhY2UgU3ludGhldGljTW91c2VFdmVudCBleHRlbmRzIEV2ZW50IHtcbiAgLy8gUmVkZWNsYXJlZCBmcm9tIEV2ZW50IHRvIGluZGljYXRlIHRoYXQgaXQgaXMgbm90IHJlYWRvbmx5LlxuICBkZWZhdWx0UHJldmVudGVkOiBib29sZWFuO1xuICBvcmlnaW5hbEV2ZW50VHlwZTogc3RyaW5nO1xuICBfcHJvcGFnYXRpb25TdG9wcGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IEV2ZW50TGlrZSBvYmplY3QgZm9yIGEgXCJjbGlja1wiIGV2ZW50IHRoYXQncyBkZXJpdmVkIGZyb20gdGhlXG4gKiBvcmlnaW5hbCBjb3JyZXNwb25kaW5nIFwidG91Y2hlbmRcIiBldmVudCBmb3IgYSBmYXN0LWNsaWNrIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEl0IHRha2VzIGEgdG91Y2ggZXZlbnQsIGFkZHMgY29tbW9uIGZpZWxkcyBmb3VuZCBpbiBhIGNsaWNrIGV2ZW50IGFuZFxuICogY2hhbmdlcyB0aGUgdHlwZSB0byAnY2xpY2snLCBzbyB0aGF0IHRoZSByZXN1bHRpbmcgZXZlbnQgbG9va3MgbW9yZSBsaWtlXG4gKiBhIHJlYWwgY2xpY2sgZXZlbnQuXG4gKlxuICogQHBhcmFtIGV2ZW50IEEgdG91Y2ggZXZlbnQuXG4gKiBAcmV0dXJuIEEgbW9kaWZpZWQgZXZlbnQtbGlrZSBvYmplY3QgY29waWVkIGZyb20gdGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgaW50b1xuICogICAgIHRoaXMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNyZWF0ZVRvdWNoRXZlbnRBc0NsaWNrKGV2ZW50OiBUb3VjaEV2ZW50KTogTW91c2VFdmVudCB7XG4gIGNvbnN0IGNsaWNrOiB7LXJlYWRvbmx5IFtQIGluIGtleW9mIE1vdXNlRXZlbnRdPzogTW91c2VFdmVudFtQXX0gJiBQYXJ0aWFsPFN5bnRoZXRpY01vdXNlRXZlbnQ+ID1cbiAgICB7fTtcbiAgY2xpY2tbJ29yaWdpbmFsRXZlbnRUeXBlJ10gPSBldmVudC50eXBlO1xuICBjbGlja1sndHlwZSddID0gRXZlbnRUeXBlLkNMSUNLO1xuICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGV2ZW50KSB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAndHlwZScgfHwgcHJvcGVydHkgPT09ICdzcmNFbGVtZW50Jykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IHByb3BlcnR5IGFzIGtleW9mIFRvdWNoRXZlbnQ7XG4gICAgLy8gTWFraW5nIGEgY29weSByZXF1aXJlcyBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgcHJvcGVydGllcyBvZiBgVG91Y2hFdmVudGAuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWRpY3QtYWNjZXNzLW9uLXN0cnVjdC10eXBlXG4gICAgY29uc3QgdmFsdWUgPSBldmVudFtrZXldO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBWYWx1ZSBzaG91bGQgYmUgdGhlIGV4cGVjdGVkIHR5cGUsIGJ1dCB0aGUgdmFsdWUgb2YgYGtleWAgaXMgbm90IGtub3duXG4gICAgLy8gc3RhdGljYWxseS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgY2xpY2tba2V5IGFzIGtleW9mIE1vdXNlRXZlbnRdID0gdmFsdWUgYXMgYW55O1xuICB9XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIGV2ZW50IGhhcyB0aGUgbW9zdCByZWNlbnQgdGltZXN0YW1wLiBUaGlzIHRpbWVzdGFtcFxuICAvLyBtYXkgYmUgdXNlZCBpbiB0aGUgZnV0dXJlIHRvIHZhbGlkYXRlIG9yIGNhbmNlbCBzdWJzZXF1ZW50IGNsaWNrIGV2ZW50cy5cbiAgY2xpY2tbJ3RpbWVTdGFtcCddID0gRGF0ZS5ub3coKTtcblxuICAvLyBFbXVsYXRlIHByZXZlbnREZWZhdWx0IGFuZCBzdG9wUHJvcGFnYXRpb24gYmVoYXZpb3JcbiAgY2xpY2tbJ2RlZmF1bHRQcmV2ZW50ZWQnXSA9IGZhbHNlO1xuICBjbGlja1sncHJldmVudERlZmF1bHQnXSA9IHN5bnRoZXRpY1ByZXZlbnREZWZhdWx0O1xuICBjbGlja1snX3Byb3BhZ2F0aW9uU3RvcHBlZCddID0gZmFsc2U7XG4gIGNsaWNrWydzdG9wUHJvcGFnYXRpb24nXSA9IHN5bnRoZXRpY1N0b3BQcm9wYWdhdGlvbjtcblxuICAvLyBFbXVsYXRlIGNsaWNrIGNvb3JkaW5hdGVzIHVzaW5nIHRvdWNoIGluZm9cbiAgY29uc3QgdG91Y2ggPSBnZXRUb3VjaERhdGEoZXZlbnQpO1xuICBpZiAodG91Y2gpIHtcbiAgICBjbGlja1snY2xpZW50WCddID0gdG91Y2guY2xpZW50WDtcbiAgICBjbGlja1snY2xpZW50WSddID0gdG91Y2guY2xpZW50WTtcbiAgICBjbGlja1snc2NyZWVuWCddID0gdG91Y2guc2NyZWVuWDtcbiAgICBjbGlja1snc2NyZWVuWSddID0gdG91Y2guc2NyZWVuWTtcbiAgfVxuICByZXR1cm4gY2xpY2sgYXMgTW91c2VFdmVudDtcbn1cblxuLyoqXG4gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiBcInByZXZlbnREZWZhdWx0XCIgZm9yIGEgc3ludGhlc2l6ZWQgZXZlbnQuIFNpbXBseVxuICogc2V0cyBcImRlZmF1bHRQcmV2ZW50ZWRcIiBwcm9wZXJ0eSB0byB0cnVlLlxuICovXG5mdW5jdGlvbiBzeW50aGV0aWNQcmV2ZW50RGVmYXVsdCh0aGlzOiBFdmVudCkge1xuICAodGhpcyBhcyBTeW50aGV0aWNNb3VzZUV2ZW50KS5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiBcInN0b3BQcm9wYWdhdGlvblwiIGZvciBhIHN5bnRoZXNpemVkIGV2ZW50LiBJdCBzaW1wbHlcbiAqIHNldHMgYSBzeW50aGV0aWMgbm9uLXN0YW5kYXJkIFwiX3Byb3BhZ2F0aW9uU3RvcHBlZFwiIHByb3BlcnR5IHRvIHRydWUuXG4gKi9cbmZ1bmN0aW9uIHN5bnRoZXRpY1N0b3BQcm9wYWdhdGlvbih0aGlzOiBFdmVudCkge1xuICAodGhpcyBhcyBTeW50aGV0aWNNb3VzZUV2ZW50KS5fcHJvcGFnYXRpb25TdG9wcGVkID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBNYXBwaW5nIG9mIEtleWJvYXJkRXZlbnQua2V5IHZhbHVlcyB0b1xuICogS2V5Q29kZSB2YWx1ZXMuXG4gKi9cbmNvbnN0IEFDVElPTl9LRVlfVE9fS0VZQ09ERToge1trZXk6IHN0cmluZ106IG51bWJlcn0gPSB7XG4gICdFbnRlcic6IEtleUNvZGUuRU5URVIsXG4gICcgJzogS2V5Q29kZS5TUEFDRSxcbn07XG5cbi8qKlxuICogTWFwcGluZyBvZiBIVE1MIGVsZW1lbnQgaWRlbnRpZmllcnMgKEFSSUEgcm9sZSwgdHlwZSwgb3IgdGFnTmFtZSkgdG8gdGhlXG4gKiBrZXlzIChlbnRlciBhbmQvb3Igc3BhY2UpIHRoYXQgc2hvdWxkIGFjdGl2YXRlIHRoZW0uIEEgdmFsdWUgb2YgemVybyBtZWFuc1xuICogdGhhdCBib3RoIHNob3VsZCBhY3RpdmF0ZSB0aGVtLlxuICovXG5leHBvcnQgY29uc3QgSURFTlRJRklFUl9UT19LRVlfVFJJR0dFUl9NQVBQSU5HOiB7W2tleTogc3RyaW5nXTogbnVtYmVyfSA9IHtcbiAgJ0EnOiBLZXlDb2RlLkVOVEVSLFxuICAnQlVUVE9OJzogMCxcbiAgJ0NIRUNLQk9YJzogS2V5Q29kZS5TUEFDRSxcbiAgJ0NPTUJPQk9YJzogS2V5Q29kZS5FTlRFUixcbiAgJ0ZJTEUnOiAwLFxuICAnR1JJRENFTEwnOiBLZXlDb2RlLkVOVEVSLFxuICAnTElOSyc6IEtleUNvZGUuRU5URVIsXG4gICdMSVNUQk9YJzogS2V5Q29kZS5FTlRFUixcbiAgJ01FTlUnOiAwLFxuICAnTUVOVUJBUic6IDAsXG4gICdNRU5VSVRFTSc6IDAsXG4gICdNRU5VSVRFTUNIRUNLQk9YJzogMCxcbiAgJ01FTlVJVEVNUkFESU8nOiAwLFxuICAnT1BUSU9OJzogMCxcbiAgJ1JBRElPJzogS2V5Q29kZS5TUEFDRSxcbiAgJ1JBRElPR1JPVVAnOiBLZXlDb2RlLlNQQUNFLFxuICAnUkVTRVQnOiAwLFxuICAnU1VCTUlUJzogMCxcbiAgJ1NXSVRDSCc6IEtleUNvZGUuU1BBQ0UsXG4gICdUQUInOiAwLFxuICAnVFJFRSc6IEtleUNvZGUuRU5URVIsXG4gICdUUkVFSVRFTSc6IEtleUNvZGUuRU5URVIsXG59O1xuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBvciBub3QgdG8gcHJvY2VzcyBzcGFjZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudDtcbiAqIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0eXBlIGlzIG5vdCBudWxsLlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQuXG4gKiBAcmV0dXJuIFdoZXRoZXIgb3Igbm90IHRvIHByb2Nlc3Mgc3BhY2UgYmFzZWQgb24gdHlwZS5cbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1NwYWNlKGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgdHlwZSA9IChlbGVtZW50LmdldEF0dHJpYnV0ZSgndHlwZScpIHx8IGVsZW1lbnQudGFnTmFtZSkudG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIHR5cGUgaW4gUFJPQ0VTU19TUEFDRTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgdGV4dCBjb250cm9sLlxuICogQHBhcmFtIGVsIFRoZSBlbGVtZW50LlxuICogQHJldHVybiBXaGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHRleHQgY29udHJvbC5cbiAqL1xuZnVuY3Rpb24gaXNUZXh0Q29udHJvbChlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCB0eXBlID0gKGVsLmdldEF0dHJpYnV0ZSgndHlwZScpIHx8IGVsLnRhZ05hbWUpLnRvVXBwZXJDYXNlKCk7XG4gIHJldHVybiB0eXBlIGluIFRFWFRfQ09OVFJPTFM7XG59XG5cbi8qKlxuICogUmV0dXJucyBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIG5hdGl2ZSBIVE1MIGNvbnRyb2wuXG4gKiBAcGFyYW0gZWwgVGhlIGVsZW1lbnQuXG4gKiBAcmV0dXJuIElmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgbmF0aXZlIEhUTUwgY29udHJvbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmF0aXZlSFRNTENvbnRyb2woZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVsLnRhZ05hbWUudG9VcHBlckNhc2UoKSBpbiBOQVRJVkVfSFRNTF9DT05UUk9MUztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGlmIHRoZSBnaXZlbiBlbGVtZW50IGlzIG5hdGl2ZWx5IGFjdGl2YXRhYmxlLiBCcm93c2VycyBlbWl0IGNsaWNrXG4gKiBldmVudHMgZm9yIG5hdGl2ZWx5IGFjdGl2YXRhYmxlIGVsZW1lbnRzLCBldmVuIHdoZW4gYWN0aXZhdGVkIHZpYSBrZXlib2FyZC5cbiAqIEZvciB0aGVzZSBlbGVtZW50cywgd2UgZG9uJ3QgbmVlZCB0byByYWlzZSBhMTF5IGNsaWNrIGV2ZW50cy5cbiAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudC5cbiAqIEByZXR1cm4gSWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBuYXRpdmUgSFRNTCBjb250cm9sLlxuICovXG5mdW5jdGlvbiBpc05hdGl2ZWx5QWN0aXZhdGFibGUoZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgPT09ICdCVVRUT04nIHx8XG4gICAgKCEhKGVsIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgJiYgKGVsIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0ZJTEUnKVxuICApO1xufVxuXG4vKipcbiAqIEhUTUwgPGlucHV0PiB0eXBlcyAobm90IEFSSUEgcm9sZXMpIHdoaWNoIHdpbGwgYXV0by10cmlnZ2VyIGEgY2xpY2sgZXZlbnQgZm9yXG4gKiB0aGUgU3BhY2Uga2V5LCB3aXRoIHNpZGUtZWZmZWN0cy4gV2Ugd2lsbCBub3QgY2FsbCBwcmV2ZW50RGVmYXVsdCBpZiBzcGFjZSBpc1xuICogcHJlc3NlZCwgbm9yIHdpbGwgd2UgcmFpc2UgYTExeSBjbGljayBldmVudHMuICBGb3IgYWxsIG90aGVyIGVsZW1lbnRzLCB3ZSBjYW5cbiAqIHN1cHByZXNzIHRoZSBkZWZhdWx0IGV2ZW50ICh3aGljaCBoYXMgbm8gZGVzaXJlZCBzaWRlLWVmZmVjdHMpIGFuZCBoYW5kbGUgdGhlXG4gKiBrZXlkb3duIG91cnNlbHZlcy5cbiAqL1xuY29uc3QgUFJPQ0VTU19TUEFDRToge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge1xuICAnQ0hFQ0tCT1gnOiB0cnVlLFxuICAnRklMRSc6IHRydWUsXG4gICdPUFRJT04nOiB0cnVlLFxuICAnUkFESU8nOiB0cnVlLFxufTtcblxuLyoqIFRhZ05hbWVzIGFuZCBJbnB1dCB0eXBlcyBmb3Igd2hpY2ggdG8gbm90IHByb2Nlc3MgZW50ZXIvc3BhY2UgYXMgY2xpY2suICovXG5jb25zdCBURVhUX0NPTlRST0xTOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gPSB7XG4gICdDT0xPUic6IHRydWUsXG4gICdEQVRFJzogdHJ1ZSxcbiAgJ0RBVEVUSU1FJzogdHJ1ZSxcbiAgJ0RBVEVUSU1FLUxPQ0FMJzogdHJ1ZSxcbiAgJ0VNQUlMJzogdHJ1ZSxcbiAgJ01PTlRIJzogdHJ1ZSxcbiAgJ05VTUJFUic6IHRydWUsXG4gICdQQVNTV09SRCc6IHRydWUsXG4gICdSQU5HRSc6IHRydWUsXG4gICdTRUFSQ0gnOiB0cnVlLFxuICAnVEVMJzogdHJ1ZSxcbiAgJ1RFWFQnOiB0cnVlLFxuICAnVEVYVEFSRUEnOiB0cnVlLFxuICAnVElNRSc6IHRydWUsXG4gICdVUkwnOiB0cnVlLFxuICAnV0VFSyc6IHRydWUsXG59O1xuXG4vKiogVGFnTmFtZXMgdGhhdCBhcmUgbmF0aXZlIEhUTUwgY29udHJvbHMuICovXG5jb25zdCBOQVRJVkVfSFRNTF9DT05UUk9MUzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge1xuICAnQSc6IHRydWUsXG4gICdBUkVBJzogdHJ1ZSxcbiAgJ0JVVFRPTic6IHRydWUsXG4gICdESUFMT0cnOiB0cnVlLFxuICAnSU1HJzogdHJ1ZSxcbiAgJ0lOUFVUJzogdHJ1ZSxcbiAgJ0xJTksnOiB0cnVlLFxuICAnTUVOVSc6IHRydWUsXG4gICdPUFRHUk9VUCc6IHRydWUsXG4gICdPUFRJT04nOiB0cnVlLFxuICAnUFJPR1JFU1MnOiB0cnVlLFxuICAnU0VMRUNUJzogdHJ1ZSxcbiAgJ1RFWFRBUkVBJzogdHJ1ZSxcbn07XG5cbi8qKiBFeHBvcnRlZCBmb3IgdGVzdGluZy4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0aW5nID0ge1xuICBzZXRJc01hYyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlzTWFjID0gdmFsdWU7XG4gIH0sXG59O1xuIl19
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZXMvZXZlbnQtZGlzcGF0Y2gvc3JjL2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDM0QsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVuQzs7R0FFRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUFpQjtJQUNuRCx5RUFBeUU7SUFDekUsMkVBQTJFO0lBQzNFLHlFQUF5RTtJQUN6RSxxRUFBcUU7SUFDckUsdURBQXVEO0lBQ3ZELElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDNUIsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUM7SUFDL0IsQ0FBQztTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRCxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsT0FBZ0IsRUFDaEIsU0FBaUIsRUFDakIsT0FBK0I7SUFFL0Isb0RBQW9EO0lBQ3BELFNBQVM7SUFDVCxFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSxZ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WixVQUFVLEVBQUUsSUFBSTtJQUNoQixRQUFRLEVBQUUsSUFBSTtJQUNkLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLElBQUk7Q0FDakIsQ0FBQztBQUVGLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsUUFBUSxDQUFDLEtBQWM7UUFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNoQixDQUFDO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtFdmVudEhhbmRsZXJJbmZvfSBmcm9tICcuL2V2ZW50X2hhbmRsZXInO1xuaW1wb3J0IHtpc0NhcHR1cmVFdmVudFR5cGUsIEV2ZW50VHlwZX0gZnJvbSAnLi9ldmVudF90eXBlJztcbmltcG9ydCB7S2V5Q29kZX0gZnJvbSAnLi9rZXlfY29kZSc7XG5cbi8qKlxuICogR2V0cyBhIGJyb3dzZXIgZXZlbnQgdHlwZSwgaWYgaXQgd291bGQgZGlmZmVyIGZyb20gdGhlIEpTQWN0aW9uIGV2ZW50IHR5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcm93c2VyRXZlbnRUeXBlKGV2ZW50VHlwZTogc3RyaW5nKSB7XG4gIC8vIE1vdXNlZW50ZXIgYW5kIG1vdXNlbGVhdmUgZXZlbnRzIGFyZSBub3QgaGFuZGxlZCBkaXJlY3RseSBiZWNhdXNlIHRoZXlcbiAgLy8gYXJlIG5vdCBhdmFpbGFibGUgZXZlcnl3aGVyZS4gSW4gYnJvd3NlcnMgd2hlcmUgdGhleSBhcmUgYXZhaWxhYmxlLCB0aGV5XG4gIC8vIGRvbid0IGJ1YmJsZSBhbmQgYXJlbid0IHZpc2libGUgYXQgdGhlIGNvbnRhaW5lciBib3VuZGFyeS4gSW5zdGVhZCwgd2VcbiAgLy8gc3ludGhlc2l6ZSB0aGUgbW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZSBldmVudHMgZnJvbSBtb3VzZW92ZXIgYW5kXG4gIC8vIG1vdXNlb3V0IGV2ZW50cywgcmVzcGVjdGl2ZWx5LiBDZi4gZXZlbnRjb250cmFjdC5qcy5cbiAgaWYgKGV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFRU5URVIpIHtcbiAgICByZXR1cm4gRXZlbnRUeXBlLk1PVVNFT1ZFUjtcbiAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRUxFQVZFKSB7XG4gICAgcmV0dXJuIEV2ZW50VHlwZS5NT1VTRU9VVDtcbiAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IEV2ZW50VHlwZS5QT0lOVEVSRU5URVIpIHtcbiAgICByZXR1cm4gRXZlbnRUeXBlLlBPSU5URVJPVkVSO1xuICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gRXZlbnRUeXBlLlBPSU5URVJMRUFWRSkge1xuICAgIHJldHVybiBFdmVudFR5cGUuUE9JTlRFUk9VVDtcbiAgfVxuICByZXR1cm4gZXZlbnRUeXBlO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiB3aXRoIHRoZSBnaXZlbiBET00gZWxlbWVudCBmb3JcbiAqIHRoZSBnaXZlbiBldmVudCB0eXBlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50LlxuICogQHBhcmFtIGV2ZW50VHlwZSBUaGUgZXZlbnQgdHlwZS5cbiAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIGZ1bmN0aW9uIHRvIGluc3RhbGwuXG4gKiBAcmV0dXJuIEluZm9ybWF0aW9uIG5lZWRlZCB0byB1bmluc3RhbGwgdGhlIGV2ZW50IGhhbmRsZXIgZXZlbnR1YWxseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBoYW5kbGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLFxuKTogRXZlbnRIYW5kbGVySW5mbyB7XG4gIC8vIEFsbCBldmVudCBoYW5kbGVycyBhcmUgcmVnaXN0ZXJlZCBpbiB0aGUgYnViYmxpbmdcbiAgLy8gcGhhc2UuXG4gIC8vXG4gIC8vIEFsbCBicm93c2VycyBzdXBwb3J0IGZvY3VzIGFuZCBibHVyLCBidXQgdGhlc2UgZXZlbnRzIG9ubHkgYXJlIHByb3BhZ2F0ZWRcbiAgLy8gaW4gdGhlIGNhcHR1cmUgcGhhc2UuIFZlcnkgbGVnYWN5IGJyb3dzZXJzIGRvIG5vdCBzdXBwb3J0IGZvY3VzaW4gb3JcbiAgLy8gZm9jdXNvdXQuXG4gIC8vXG4gIC8vIEl0IHdvdWxkIGJlIGEgYmFkIGlkZWEgdG8gcmVnaXN0ZXIgYWxsIGV2ZW50IGhhbmRsZXJzIGluIHRoZVxuICAvLyBjYXB0dXJlIHBoYXNlIGJlY2F1c2UgdGhlbiByZWd1bGFyIG9uY2xpY2sgaGFuZGxlcnMgd291bGQgbm90IGJlXG4gIC8vIGV4ZWN1dGVkIGF0IGFsbCBvbiBldmVudHMgdGhhdCB0cmlnZ2VyIGEganNhY3Rpb24uIFRoYXQncyBub3RcbiAgLy8gZW50aXJlbHkgd2hhdCB3ZSB3YW50LCBhdCBsZWFzdCBmb3Igbm93LlxuICAvL1xuICAvLyBFcnJvciBhbmQgbG9hZCBldmVudHMgKGkuZS4gb24gaW1hZ2VzKSBkbyBub3QgYnViYmxlIHNvIHRoZXkgYXJlIGFsc29cbiAgLy8gaGFuZGxlZCBpbiB0aGUgY2FwdHVyZSBwaGFzZS5cbiAgbGV0IGNhcHR1cmUgPSBmYWxzZTtcblxuICBpZiAoaXNDYXB0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHtcbiAgICBjYXB0dXJlID0gdHJ1ZTtcbiAgfVxuICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBjYXB0dXJlKTtcblxuICByZXR1cm4ge2V2ZW50VHlwZSwgaGFuZGxlciwgY2FwdHVyZX07XG59XG5cbi8qKlxuICogUmVtb3ZlcyB0aGUgZXZlbnQgaGFuZGxlciBmb3IgdGhlIGdpdmVuIGV2ZW50IGZyb20gdGhlIGVsZW1lbnQuXG4gKiB0aGUgZ2l2ZW4gZXZlbnQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudC5cbiAqIEBwYXJhbSBpbmZvIFRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGVyZWdpc3RlciB0aGUgaGFuZGxlciwgYXMgcmV0dXJuZWQgYnlcbiAqICAgICBhZGRFdmVudExpc3RlbmVyKCksIGFib3ZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcihlbGVtZW50OiBFbGVtZW50LCBpbmZvOiBFdmVudEhhbmRsZXJJbmZvKSB7XG4gIGlmIChlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHtcbiAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoaW5mby5ldmVudFR5cGUsIGluZm8uaGFuZGxlciBhcyBFdmVudExpc3RlbmVyLCBpbmZvLmNhcHR1cmUpO1xuICAgIC8vIGBkZXRhY2hFdmVudGAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICB9IGVsc2UgaWYgKChlbGVtZW50IGFzIGFueSkuZGV0YWNoRXZlbnQpIHtcbiAgICAvLyBgZGV0YWNoRXZlbnRgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZWxlbWVudCBhcyBhbnkpLmRldGFjaEV2ZW50KGBvbiR7aW5mby5ldmVudFR5cGV9YCwgaW5mby5oYW5kbGVyKTtcbiAgfVxufVxuXG4vKipcbiAqIENhbmNlbHMgcHJvcGFnYXRpb24gb2YgYW4gZXZlbnQuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQgdG8gY2FuY2VsIHByb3BhZ2F0aW9uIGZvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3BQcm9wYWdhdGlvbihlOiBFdmVudCkge1xuICBlLnN0b3BQcm9wYWdhdGlvbiA/IGUuc3RvcFByb3BhZ2F0aW9uKCkgOiAoZS5jYW5jZWxCdWJibGUgPSB0cnVlKTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50cyB0aGUgZGVmYXVsdCBhY3Rpb24gb2YgYW4gZXZlbnQuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQgdG8gcHJldmVudCB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJldmVudERlZmF1bHQoZTogRXZlbnQpIHtcbiAgZS5wcmV2ZW50RGVmYXVsdCA/IGUucHJldmVudERlZmF1bHQoKSA6IChlLnJldHVyblZhbHVlID0gZmFsc2UpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHRhcmdldCBFbGVtZW50IG9mIHRoZSBldmVudC4gSW4gRmlyZWZveCwgYSB0ZXh0IG5vZGUgbWF5IGFwcGVhciBhc1xuICogdGhlIHRhcmdldCBvZiB0aGUgZXZlbnQsIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGVcbiAqIHRleHQgbm9kZS5cbiAqIEBwYXJhbSBlIFRoZSBldmVudCB0byBnZXQgdGhlIHRhcmdldCBvZi5cbiAqIEByZXR1cm4gVGhlIHRhcmdldCBlbGVtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0KGU6IEV2ZW50KTogRWxlbWVudCB7XG4gIGxldCBlbCA9IGUudGFyZ2V0IGFzIEVsZW1lbnQ7XG5cbiAgLy8gSW4gRmlyZWZveCwgdGhlIGV2ZW50IG1heSBoYXZlIGEgdGV4dCBub2RlIGFzIGl0cyB0YXJnZXQuIFdlIGFsd2F5c1xuICAvLyB3YW50IHRoZSBwYXJlbnQgRWxlbWVudCB0aGUgdGV4dCBub2RlIGJlbG9uZ3MgdG8sIGhvd2V2ZXIuXG4gIGlmICghZWwuZ2V0QXR0cmlidXRlICYmIGVsLnBhcmVudE5vZGUpIHtcbiAgICBlbCA9IGVsLnBhcmVudE5vZGUgYXMgRWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiBlbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHdlIGFyZSBvbiBhIE1hYy4gTm90IHB1bGxpbmcgaW4gdXNlcmFnZW50IGp1c3QgZm9yIHRoaXMuXG4gKi9cbmxldCBpc01hYzogYm9vbGVhbiA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9NYWNpbnRvc2gvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBhbmQgcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBldmVudCAod2hpY2ggaXMgYXNzdW1lZCB0byBiZSBhXG4gKiBjbGljayBldmVudCkgaXMgYSBtaWRkbGUgY2xpY2suXG4gKiBOT1RFOiBUaGVyZSBpcyBub3QgYSBjb25zaXN0ZW50IHdheSB0byBpZGVudGlmeSBtaWRkbGUgY2xpY2tcbiAqIGh0dHA6Ly93d3cudW5peHBhcGEuY29tL2pzL21vdXNlLmh0bWxcbiAqL1xuZnVuY3Rpb24gaXNNaWRkbGVDbGljayhlOiBFdmVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIC8vIGB3aGljaGAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkud2hpY2ggPT09IDIgfHxcbiAgICAvLyBgd2hpY2hgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoKGUgYXMgYW55KS53aGljaCA9PSBudWxsICYmXG4gICAgICAvLyBgYnV0dG9uYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgIChlIGFzIGFueSkuYnV0dG9uID09PSA0KSAvLyBtaWRkbGUgY2xpY2sgZm9yIElFXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBhbmQgcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBldmVudCAod2hpY2ggaXMgYXNzdW1lZFxuICogdG8gYmUgYSBjbGljayBldmVudCkgaXMgbW9kaWZpZWQuIEEgbWlkZGxlIGNsaWNrIGlzIGNvbnNpZGVyZWQgYSBtb2RpZmllZFxuICogY2xpY2sgdG8gcmV0YWluIHRoZSBkZWZhdWx0IGJyb3dzZXIgYWN0aW9uLCB3aGljaCBvcGVucyBhIGxpbmsgaW4gYSBuZXcgdGFiLlxuICogQHBhcmFtIGUgVGhlIGV2ZW50LlxuICogQHJldHVybiBXaGV0aGVyIHRoZSBnaXZlbiBldmVudCBpcyBtb2RpZmllZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kaWZpZWRDbGlja0V2ZW50KGU6IEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgLy8gYG1ldGFLZXlgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoaXNNYWMgJiYgKGUgYXMgYW55KS5tZXRhS2V5KSB8fFxuICAgIC8vIGBjdHJsS2V5YCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKCFpc01hYyAmJiAoZSBhcyBhbnkpLmN0cmxLZXkpIHx8XG4gICAgaXNNaWRkbGVDbGljayhlKSB8fFxuICAgIC8vIGBzaGlmdEtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkuc2hpZnRLZXlcbiAgKTtcbn1cblxuLyoqIFdoZXRoZXIgd2UgYXJlIG9uIFdlYktpdCAoZS5nLiwgQ2hyb21lKS4gKi9cbmV4cG9ydCBjb25zdCBpc1dlYktpdDogYm9vbGVhbiA9XG4gIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICEvT3BlcmEvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiZcbiAgL1dlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqIFdoZXRoZXIgd2UgYXJlIG9uIElFLiAqL1xuZXhwb3J0IGNvbnN0IGlzSWU6IGJvb2xlYW4gPVxuICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAoL01TSUUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgL1RyaWRlbnQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpO1xuXG4vKiogV2hldGhlciB3ZSBhcmUgb24gR2Vja28gKGUuZy4sIEZpcmVmb3gpLiAqL1xuZXhwb3J0IGNvbnN0IGlzR2Vja286IGJvb2xlYW4gPVxuICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAhL09wZXJhfFdlYktpdC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJlxuICAvR2Vja28vLnRlc3QobmF2aWdhdG9yLnByb2R1Y3QpO1xuXG4vKipcbiAqIERldGVybWluZXMgYW5kIHJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHZhbGlkIHRhcmdldCBmb3JcbiAqIGtleXByZXNzL2tleWRvd24gRE9NIGV2ZW50cyB0aGF0IGFjdCBsaWtlIHJlZ3VsYXIgRE9NIGNsaWNrcy5cbiAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudC5cbiAqIEByZXR1cm4gV2hldGhlciB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHZhbGlkIGFjdGlvbiBrZXkgdGFyZ2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEFjdGlvbktleVRhcmdldChlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICBpZiAoISgnZ2V0QXR0cmlidXRlJyBpbiBlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzVGV4dENvbnRyb2woZWwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc05hdGl2ZWx5QWN0aXZhdGFibGUoZWwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGBpc0NvbnRlbnRFZGl0YWJsZWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgaWYgKChlbCBhcyBhbnkpLmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBldmVudCBoYXMgYSBtb2RpZmllciBrZXkgYWN0aXZhdGVkLlxuICogQHBhcmFtIGUgVGhlIGV2ZW50LlxuICogQHJldHVybiBUcnVlLCBpZiBhIG1vZGlmaWVyIGtleSBpcyBhY3RpdmF0ZWQuXG4gKi9cbmZ1bmN0aW9uIGhhc01vZGlmaWVyS2V5KGU6IEV2ZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgLy8gYGN0cmxLZXlgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLmN0cmxLZXkgfHxcbiAgICAvLyBgc2hpZnRLZXlgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLnNoaWZ0S2V5IHx8XG4gICAgLy8gYGFsdEtleWAgaXMgYW4gb2xkIERPTSBBUEkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIChlIGFzIGFueSkuYWx0S2V5IHx8XG4gICAgLy8gYG1ldGFLZXlgIGlzIGFuIG9sZCBET00gQVBJLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAoZSBhcyBhbnkpLm1ldGFLZXlcbiAgKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGV2ZW50IGhhcyBhIHRhcmdldCB0aGF0IGFscmVhZHlcbiAqIGhhcyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCBiZWNhdXNlIGl0IGlzIGEgbmF0aXZlIEhUTUwgY29udHJvbC4gVXNlZCB0b1xuICogZGV0ZXJtaW5lIGlmIHByZXZlbnREZWZhdWx0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiBpc0FjdGlvbktleUV2ZW50IGlzIHRydWUuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQuXG4gKiBAcmV0dXJuIElmIHByZXZlbnREZWZhdWx0IHNob3VsZCBiZSBjYWxsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRDYWxsUHJldmVudERlZmF1bHRPbk5hdGl2ZUh0bWxDb250cm9sKGU6IEV2ZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IGVsID0gZ2V0VGFyZ2V0KGUpO1xuICBjb25zdCB0YWdOYW1lID0gZWwudGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xuICBjb25zdCByb2xlID0gKGVsLmdldEF0dHJpYnV0ZSgncm9sZScpIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmICh0YWdOYW1lID09PSAnQlVUVE9OJyB8fCByb2xlID09PSAnQlVUVE9OJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICghaXNOYXRpdmVIVE1MQ29udHJvbChlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRhZ05hbWUgPT09ICdBJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKipcbiAgICogRml4IGZvciBwaHlzaWNhbCBkLXBhZHMgb24gZmVhdHVyZSBwaG9uZSBwbGF0Zm9ybXM7IHRoZSBuYXRpdmUgZXZlbnRcbiAgICogKGllLiBpc1RydXN0ZWQ6IHRydWUpIG5lZWRzIHRvIGZpcmUgdG8gc2hvdyB0aGUgT1BUSU9OIGxpc3QuIFNlZVxuICAgKiBiLzEzNTI4ODQ2OSBmb3IgbW9yZSBpbmZvLlxuICAgKi9cbiAgaWYgKHRhZ05hbWUgPT09ICdTRUxFQ1QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChwcm9jZXNzU3BhY2UoZWwpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpc1RleHRDb250cm9sKGVsKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGFuZCByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGV2ZW50IGFjdHMgbGlrZSBhIHJlZ3VsYXIgRE9NIGNsaWNrLFxuICogYW5kIHNob3VsZCBiZSBoYW5kbGVkIGluc3RlYWQgb2YgdGhlIGNsaWNrLiAgSWYgdGhpcyByZXR1cm5zIHRydWUsIHRoZSBjYWxsZXJcbiAqIHdpbGwgY2FsbCBwcmV2ZW50RGVmYXVsdCgpIHRvIHByZXZlbnQgYSBwb3NzaWJsZSBkdXBsaWNhdGUgZXZlbnQuXG4gKiBUaGlzIGlzIHJlcHJlc2VudGVkIGJ5IGEga2V5cHJlc3MgKGtleWRvd24gb24gR2Vja28gYnJvd3NlcnMpIG9uIEVudGVyIG9yXG4gKiBTcGFjZSBrZXkuXG4gKiBAcGFyYW0gZSBUaGUgZXZlbnQuXG4gKiBAcmV0dXJuIFRydWUsIGlmIHRoZSBldmVudCBlbXVsYXRlcyBhIERPTSBjbGljay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uS2V5RXZlbnQoZTogRXZlbnQpOiBib29sZWFuIHtcbiAgbGV0IGtleSA9XG4gICAgLy8gYHdoaWNoYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS53aGljaCB8fFxuICAgIC8vIGBrZXlDb2RlYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS5rZXlDb2RlO1xuICBpZiAoIWtleSAmJiAoZSBhcyBLZXlib2FyZEV2ZW50KS5rZXkpIHtcbiAgICBrZXkgPSBBQ1RJT05fS0VZX1RPX0tFWUNPREVbKGUgYXMgS2V5Ym9hcmRFdmVudCkua2V5XTtcbiAgfVxuICBpZiAoaXNXZWJLaXQgJiYga2V5ID09PSBLZXlDb2RlLk1BQ19FTlRFUikge1xuICAgIGtleSA9IEtleUNvZGUuRU5URVI7XG4gIH1cbiAgaWYgKGtleSAhPT0gS2V5Q29kZS5FTlRFUiAmJiBrZXkgIT09IEtleUNvZGUuU1BBQ0UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZWwgPSBnZXRUYXJnZXQoZSk7XG4gIGlmIChlLnR5cGUgIT09IEV2ZW50VHlwZS5LRVlET1dOIHx8ICFpc1ZhbGlkQWN0aW9uS2V5VGFyZ2V0KGVsKSB8fCBoYXNNb2RpZmllcktleShlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEZvciA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+LCB3ZSBtdXN0IG9ubHkgaGFuZGxlIHRoZSBicm93c2VyJ3MgbmF0aXZlIGNsaWNrXG4gIC8vIGV2ZW50LCBzbyB0aGF0IHRoZSBicm93c2VyIGNhbiB0b2dnbGUgdGhlIGNoZWNrYm94LlxuICBpZiAocHJvY2Vzc1NwYWNlKGVsKSAmJiBrZXkgPT09IEtleUNvZGUuU1BBQ0UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgbm9uLWZvY3VzYWJsZSwgaWdub3JlIHN0cmF5IGtleXN0cm9rZXMgKGIvMTgzMzcyMDkpXG4gIC8vIFNzY3JlZW4gcmVhZGVycyBjYW4gbW92ZSB3aXRob3V0IHRhYiBmb2N1cywgc28gYW55IHRhYkluZGV4IGlzIGZvY3VzYWJsZS5cbiAgLy8gU2VlIEIvMjE4MDk2MDRcbiAgaWYgKCFpc0ZvY3VzYWJsZShlbCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0eXBlID0gKFxuICAgIGVsLmdldEF0dHJpYnV0ZSgncm9sZScpIHx8XG4gICAgKGVsIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgfHxcbiAgICBlbC50YWdOYW1lXG4gICkudG9VcHBlckNhc2UoKTtcbiAgY29uc3QgaXNTcGVjaWZpY1RyaWdnZXJLZXkgPSBJREVOVElGSUVSX1RPX0tFWV9UUklHR0VSX01BUFBJTkdbdHlwZV0gJSBrZXkgPT09IDA7XG4gIGNvbnN0IGlzRGVmYXVsdFRyaWdnZXJLZXkgPSAhKHR5cGUgaW4gSURFTlRJRklFUl9UT19LRVlfVFJJR0dFUl9NQVBQSU5HKSAmJiBrZXkgPT09IEtleUNvZGUuRU5URVI7XG4gIGNvbnN0IGhhc1R5cGUgPSBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdJTlBVVCcgfHwgISEoZWwgYXMgSFRNTElucHV0RWxlbWVudCkudHlwZTtcbiAgcmV0dXJuIChpc1NwZWNpZmljVHJpZ2dlcktleSB8fCBpc0RlZmF1bHRUcmlnZ2VyS2V5KSAmJiBoYXNUeXBlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgRE9NIGVsZW1lbnQgY2FuIHJlY2VpdmUga2V5Ym9hcmQgZm9jdXMuXG4gKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gZ29vZy5kb20uaXNGb2N1c2FibGUsIGJ1dCBzaW1wbGlmaWVkIHNpbmNlIHdlIHNob3VsZG4ndFxuICogY2FyZSBhYm91dCB2aXNpYmlsaXR5IGlmIHdlJ3JlIGFscmVhZHkgaGFuZGxpbmcgYSBrZXlib2FyZCBldmVudC5cbiAqL1xuZnVuY3Rpb24gaXNGb2N1c2FibGUoZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoZWwudGFnTmFtZSBpbiBOQVRJVkVMWV9GT0NVU0FCTEVfRUxFTUVOVFMgfHwgaGFzU3BlY2lmaWVkVGFiSW5kZXgoZWwpKSAmJlxuICAgICEoZWwgYXMgSFRNTElucHV0RWxlbWVudCkuZGlzYWJsZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGNoZWNrLlxuICogQHJldHVybiBXaGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIHNwZWNpZmllZCB0YWIgaW5kZXguXG4gKi9cbmZ1bmN0aW9uIGhhc1NwZWNpZmllZFRhYkluZGV4KGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgLy8gSUUgcmV0dXJucyAwIGZvciBhbiB1bnNldCB0YWJJbmRleCwgc28gd2UgbXVzdCB1c2UgZ2V0QXR0cmlidXRlTm9kZSgpLFxuICAvLyB3aGljaCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgJ3NwZWNpZmllZCcgcHJvcGVydHkgaWYgdGFiSW5kZXggaXNcbiAgLy8gc3BlY2lmaWVkLiAgVGhpcyB3b3JrcyBvbiBvdGhlciBicm93c2VycywgdG9vLlxuICBjb25zdCBhdHRyTm9kZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlTm9kZSgndGFiaW5kZXgnKTsgLy8gTXVzdCBiZSBsb3dlcmNhc2UhXG4gIHJldHVybiBhdHRyTm9kZSAhPSBudWxsICYmIGF0dHJOb2RlLnNwZWNpZmllZDtcbn1cblxuLyoqIEVsZW1lbnQgdGFnbmFtZXMgdGhhdCBhcmUgZm9jdXNhYmxlIGJ5IGRlZmF1bHQuICovXG5jb25zdCBOQVRJVkVMWV9GT0NVU0FCTEVfRUxFTUVOVFM6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICAnQSc6IDEsXG4gICdJTlBVVCc6IDEsXG4gICdURVhUQVJFQSc6IDEsXG4gICdTRUxFQ1QnOiAxLFxuICAnQlVUVE9OJzogMSxcbn07XG5cbi8qKiBAcmV0dXJuIFRydWUsIGlmIHRoZSBTcGFjZSBrZXkgd2FzIHByZXNzZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTcGFjZUtleUV2ZW50KGU6IEV2ZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IGtleSA9XG4gICAgLy8gYHdoaWNoYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS53aGljaCB8fFxuICAgIC8vIGBrZXlDb2RlYCBpcyBhbiBvbGQgRE9NIEFQSS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgKGUgYXMgYW55KS5rZXlDb2RlO1xuICBjb25zdCBlbCA9IGdldFRhcmdldChlKTtcbiAgY29uc3QgZWxlbWVudE5hbWUgPSAoKGVsIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnR5cGUgfHwgZWwudGFnTmFtZSkudG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIGtleSA9PT0gS2V5Q29kZS5TUEFDRSAmJiBlbGVtZW50TmFtZSAhPT0gJ0NIRUNLQk9YJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV2ZW50IGNvcnJlc3BvbmRzIHRvIGEgbm9uLWJ1YmJsaW5nIG1vdXNlXG4gKiBldmVudCB0eXBlIChtb3VzZWVudGVyLCBtb3VzZWxlYXZlLCBwb2ludGVyZW50ZXIsIGFuZCBwb2ludGVybGVhdmUpLlxuICpcbiAqIER1cmluZyBtb3VzZW92ZXIgKG1vdXNlZW50ZXIpIGFuZCBwb2ludGVyb3ZlciAocG9pbnRlcmVudGVyKSwgdGhlXG4gKiByZWxhdGVkVGFyZ2V0IGlzIHRoZSBlbGVtZW50IGJlaW5nIGVudGVyZWQgZnJvbS4gRHVyaW5nIG1vdXNlb3V0IChtb3VzZWxlYXZlKVxuICogYW5kIHBvaW50ZXJvdXQgKHBvaW50ZXJsZWF2ZSksIHRoZSByZWxhdGVkVGFyZ2V0IGlzIHRoZSBlbGVtZW50IGJlaW5nIGV4aXRlZFxuICogdG8uXG4gKlxuICogSW4gYm90aCBjYXNlcywgaWYgcmVsYXRlZFRhcmdldCBpcyBvdXRzaWRlIHRhcmdldCwgdGhlbiB0aGUgY29ycmVzcG9uZGluZ1xuICogc3BlY2lhbCBldmVudCBoYXMgb2NjdXJyZWQsIG90aGVyd2lzZSBpdCBoYXNuJ3QuXG4gKlxuICogQHBhcmFtIGUgVGhlIG1vdXNlb3Zlci9tb3VzZW91dCBldmVudC5cbiAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBtb3VzZSBzcGVjaWFsIGV2ZW50LlxuICogQHBhcmFtIGVsZW1lbnQgVGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIGpzYWN0aW9uIGZvciB0aGVcbiAqICAgICBtb3VzZWVudGVyL21vdXNlbGVhdmUgZXZlbnQgaXMgZGVmaW5lZC5cbiAqIEByZXR1cm4gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBtb3VzZWVudGVyL21vdXNlbGVhdmUgZXZlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01vdXNlU3BlY2lhbEV2ZW50KGU6IEV2ZW50LCB0eXBlOiBzdHJpbmcsIGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgLy8gYHJlbGF0ZWRUYXJnZXRgIGlzIGFuIG9sZCBET00gQVBJLlxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIGNvbnN0IHJlbGF0ZWQgPSAoZSBhcyBhbnkpLnJlbGF0ZWRUYXJnZXQgYXMgTm9kZTtcblxuICByZXR1cm4gKFxuICAgICgoZS50eXBlID09PSBFdmVudFR5cGUuTU9VU0VPVkVSICYmIHR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRUVOVEVSKSB8fFxuICAgICAgKGUudHlwZSA9PT0gRXZlbnRUeXBlLk1PVVNFT1VUICYmIHR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRUxFQVZFKSB8fFxuICAgICAgKGUudHlwZSA9PT0gRXZlbnRUeXBlLlBPSU5URVJPVkVSICYmIHR5cGUgPT09IEV2ZW50VHlwZS5QT0lOVEVSRU5URVIpIHx8XG4gICAgICAoZS50eXBlID09PSBFdmVudFR5cGUuUE9JTlRFUk9VVCAmJiB0eXBlID09PSBFdmVudFR5cGUuUE9JTlRFUkxFQVZFKSkgJiZcbiAgICAoIXJlbGF0ZWQgfHwgKHJlbGF0ZWQgIT09IGVsZW1lbnQgJiYgIWVsZW1lbnQuY29udGFpbnMocmVsYXRlZCkpKVxuICApO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgRXZlbnRMaWtlIG9iamVjdCBmb3IgYSBtb3VzZWVudGVyL21vdXNlbGVhdmUgZXZlbnQgdGhhdCdzXG4gKiBkZXJpdmVkIGZyb20gdGhlIG9yaWdpbmFsIGNvcnJlc3BvbmRpbmcgbW91c2VvdmVyL21vdXNlb3V0IGV2ZW50LlxuICogQHBhcmFtIGUgVGhlIGV2ZW50LlxuICogQHBhcmFtIHRhcmdldCBUaGUgZWxlbWVudCBvbiB3aGljaCB0aGUganNhY3Rpb24gZm9yIHRoZSBtb3VzZWVudGVyL21vdXNlbGVhdmVcbiAqICAgICBldmVudCBpcyBkZWZpbmVkLlxuICogQHJldHVybiBBIG1vZGlmaWVkIGV2ZW50LWxpa2Ugb2JqZWN0IGNvcGllZCBmcm9tIHRoZSBldmVudCBvYmplY3QgcGFzc2VkIGludG9cbiAqICAgICB0aGlzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW91c2VTcGVjaWFsRXZlbnQoZTogRXZlbnQsIHRhcmdldDogRWxlbWVudCk6IEV2ZW50IHtcbiAgLy8gV2UgaGF2ZSB0byBjcmVhdGUgYSBjb3B5IG9mIHRoZSBldmVudCBvYmplY3QgYmVjYXVzZSB3ZSBuZWVkIHRvIG11dGF0ZVxuICAvLyBpdHMgZmllbGRzLiBXZSBkbyB0aGlzIGZvciB0aGUgc3BlY2lhbCBtb3VzZSBldmVudHMgYmVjYXVzZSB0aGUgZXZlbnRcbiAgLy8gdGFyZ2V0IG5lZWRzIHRvIGJlIHJldGFyZ2V0ZWQgdG8gdGhlIGFjdGlvbiBlbGVtZW50IHJhdGhlciB0aGFuIHRoZSByZWFsXG4gIC8vIGVsZW1lbnQgKHNpbmNlIHdlIGFyZSBzaW11bGF0aW5nIHRoZSBzcGVjaWFsIG1vdXNlIGV2ZW50cyB3aXRoIG1vdXNlb3Zlci9cbiAgLy8gbW91c2VvdXQpLlxuICAvL1xuICAvLyBTaW5jZSB3ZSdyZSBtYWtpbmcgYSBjb3B5IGFueXdheXMsIHdlIG1pZ2h0IGFzIHdlbGwgYXR0ZW1wdCB0byBjb252ZXJ0XG4gIC8vIHRoaXMgZXZlbnQgaW50byBhIHBzZXVkby1yZWFsIG1vdXNlZW50ZXIvbW91c2VsZWF2ZSBldmVudCBieSBhZGp1c3RpbmdcbiAgLy8gaXRzIHR5cGUuXG4gIC8vXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgY29uc3QgY29weTogey1yZWFkb25seSBbUCBpbiBrZXlvZiBFdmVudF0/OiBFdmVudFtQXX0gPSB7fTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlKSB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAnc3JjRWxlbWVudCcgfHwgcHJvcGVydHkgPT09ICd0YXJnZXQnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gcHJvcGVydHkgYXMga2V5b2YgRXZlbnQ7XG4gICAgLy8gTWFraW5nIGEgY29weSByZXF1aXJlcyBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgcHJvcGVydGllcyBvZiBgRXZlbnRgLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1kaWN0LWFjY2Vzcy1vbi1zdHJ1Y3QtdHlwZVxuICAgIGNvbnN0IHZhbHVlID0gZVtrZXldO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBWYWx1ZSBzaG91bGQgYmUgdGhlIGV4cGVjdGVkIHR5cGUsIGJ1dCB0aGUgdmFsdWUgb2YgYGtleWAgaXMgbm90IGtub3duXG4gICAgLy8gc3RhdGljYWxseS5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgY29weVtrZXldID0gdmFsdWUgYXMgYW55O1xuICB9XG4gIGlmIChlLnR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRU9WRVIpIHtcbiAgICBjb3B5Wyd0eXBlJ10gPSBFdmVudFR5cGUuTU9VU0VFTlRFUjtcbiAgfSBlbHNlIGlmIChlLnR5cGUgPT09IEV2ZW50VHlwZS5NT1VTRU9VVCkge1xuICAgIGNvcHlbJ3R5cGUnXSA9IEV2ZW50VHlwZS5NT1VTRUxFQVZFO1xuICB9IGVsc2UgaWYgKGUudHlwZSA9PT0gRXZlbnRUeXBlLlBPSU5URVJPVkVSKSB7XG4gICAgY29weVsndHlwZSddID0gRXZlbnRUeXBlLlBPSU5URVJFTlRFUjtcbiAgfSBlbHNlIHtcbiAgICBjb3B5Wyd0eXBlJ10gPSBFdmVudFR5cGUuUE9JTlRFUkxFQVZFO1xuICB9XG4gIGNvcHlbJ3RhcmdldCddID0gY29weVsnc3JjRWxlbWVudCddID0gdGFyZ2V0O1xuICBjb3B5WydidWJibGVzJ10gPSBmYWxzZTtcbiAgcmV0dXJuIGNvcHkgYXMgRXZlbnQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0b3VjaCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZSB0b3VjaCBldmVudDogY2xpZW50WCwgY2xpZW50WSwgc2NyZWVuWFxuICogYW5kIHNjcmVlblkuIElmIHRoZSBldmVudCBoYXMgbm8gdG91Y2ggaW5mb3JtYXRpb24gYXQgYWxsLCB0aGUgcmV0dXJuZWRcbiAqIHZhbHVlIGlzIG51bGwuXG4gKlxuICogVGhlIGZpZWxkcyBvZiB0aGlzIE9iamVjdCBhcmUgdW5xdW90ZWQuXG4gKlxuICogQHBhcmFtIGV2ZW50IEEgdG91Y2ggZXZlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3VjaERhdGEoXG4gIGV2ZW50OiBUb3VjaEV2ZW50LFxuKToge2NsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyOyBzY3JlZW5YOiBudW1iZXI7IHNjcmVlblk6IG51bWJlcn0gfCBudWxsIHtcbiAgY29uc3QgdG91Y2ggPVxuICAgIChldmVudC5jaGFuZ2VkVG91Y2hlcyAmJiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXSkgfHwgKGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlc1swXSk7XG4gIGlmICghdG91Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNsaWVudFg6IHRvdWNoLmNsaWVudFgsXG4gICAgY2xpZW50WTogdG91Y2guY2xpZW50WSxcbiAgICBzY3JlZW5YOiB0b3VjaC5zY3JlZW5YLFxuICAgIHNjcmVlblk6IHRvdWNoLnNjcmVlblksXG4gIH07XG59XG5cbmRlY2xhcmUgaW50ZXJmYWNlIFN5bnRoZXRpY01vdXNlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIC8vIFJlZGVjbGFyZWQgZnJvbSBFdmVudCB0byBpbmRpY2F0ZSB0aGF0IGl0IGlzIG5vdCByZWFkb25seS5cbiAgZGVmYXVsdFByZXZlbnRlZDogYm9vbGVhbjtcbiAgb3JpZ2luYWxFdmVudFR5cGU6IHN0cmluZztcbiAgX3Byb3BhZ2F0aW9uU3RvcHBlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBFdmVudExpa2Ugb2JqZWN0IGZvciBhIFwiY2xpY2tcIiBldmVudCB0aGF0J3MgZGVyaXZlZCBmcm9tIHRoZVxuICogb3JpZ2luYWwgY29ycmVzcG9uZGluZyBcInRvdWNoZW5kXCIgZXZlbnQgZm9yIGEgZmFzdC1jbGljayBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBJdCB0YWtlcyBhIHRvdWNoIGV2ZW50LCBhZGRzIGNvbW1vbiBmaWVsZHMgZm91bmQgaW4gYSBjbGljayBldmVudCBhbmRcbiAqIGNoYW5nZXMgdGhlIHR5cGUgdG8gJ2NsaWNrJywgc28gdGhhdCB0aGUgcmVzdWx0aW5nIGV2ZW50IGxvb2tzIG1vcmUgbGlrZVxuICogYSByZWFsIGNsaWNrIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBldmVudCBBIHRvdWNoIGV2ZW50LlxuICogQHJldHVybiBBIG1vZGlmaWVkIGV2ZW50LWxpa2Ugb2JqZWN0IGNvcGllZCBmcm9tIHRoZSBldmVudCBvYmplY3QgcGFzc2VkIGludG9cbiAqICAgICB0aGlzIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVjcmVhdGVUb3VjaEV2ZW50QXNDbGljayhldmVudDogVG91Y2hFdmVudCk6IE1vdXNlRXZlbnQge1xuICBjb25zdCBjbGljazogey1yZWFkb25seSBbUCBpbiBrZXlvZiBNb3VzZUV2ZW50XT86IE1vdXNlRXZlbnRbUF19ICYgUGFydGlhbDxTeW50aGV0aWNNb3VzZUV2ZW50PiA9XG4gICAge307XG4gIGNsaWNrWydvcmlnaW5hbEV2ZW50VHlwZSddID0gZXZlbnQudHlwZTtcbiAgY2xpY2tbJ3R5cGUnXSA9IEV2ZW50VHlwZS5DTElDSztcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBldmVudCkge1xuICAgIGlmIChwcm9wZXJ0eSA9PT0gJ3R5cGUnIHx8IHByb3BlcnR5ID09PSAnc3JjRWxlbWVudCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBwcm9wZXJ0eSBhcyBrZXlvZiBUb3VjaEV2ZW50O1xuICAgIC8vIE1ha2luZyBhIGNvcHkgcmVxdWlyZXMgaXRlcmF0aW5nIHRocm91Z2ggYWxsIHByb3BlcnRpZXMgb2YgYFRvdWNoRXZlbnRgLlxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1kaWN0LWFjY2Vzcy1vbi1zdHJ1Y3QtdHlwZVxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnRba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gVmFsdWUgc2hvdWxkIGJlIHRoZSBleHBlY3RlZCB0eXBlLCBidXQgdGhlIHZhbHVlIG9mIGBrZXlgIGlzIG5vdCBrbm93blxuICAgIC8vIHN0YXRpY2FsbHkuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgIGNsaWNrW2tleSBhcyBrZXlvZiBNb3VzZUV2ZW50XSA9IHZhbHVlIGFzIGFueTtcbiAgfVxuXG4gIC8vIEVuc3VyZSB0aGF0IHRoZSBldmVudCBoYXMgdGhlIG1vc3QgcmVjZW50IHRpbWVzdGFtcC4gVGhpcyB0aW1lc3RhbXBcbiAgLy8gbWF5IGJlIHVzZWQgaW4gdGhlIGZ1dHVyZSB0byB2YWxpZGF0ZSBvciBjYW5jZWwgc3Vic2VxdWVudCBjbGljayBldmVudHMuXG4gIGNsaWNrWyd0aW1lU3RhbXAnXSA9IERhdGUubm93KCk7XG5cbiAgLy8gRW11bGF0ZSBwcmV2ZW50RGVmYXVsdCBhbmQgc3RvcFByb3BhZ2F0aW9uIGJlaGF2aW9yXG4gIGNsaWNrWydkZWZhdWx0UHJldmVudGVkJ10gPSBmYWxzZTtcbiAgY2xpY2tbJ3ByZXZlbnREZWZhdWx0J10gPSBzeW50aGV0aWNQcmV2ZW50RGVmYXVsdDtcbiAgY2xpY2tbJ19wcm9wYWdhdGlvblN0b3BwZWQnXSA9IGZhbHNlO1xuICBjbGlja1snc3RvcFByb3BhZ2F0aW9uJ10gPSBzeW50aGV0aWNTdG9wUHJvcGFnYXRpb247XG5cbiAgLy8gRW11bGF0ZSBjbGljayBjb29yZGluYXRlcyB1c2luZyB0b3VjaCBpbmZvXG4gIGNvbnN0IHRvdWNoID0gZ2V0VG91Y2hEYXRhKGV2ZW50KTtcbiAgaWYgKHRvdWNoKSB7XG4gICAgY2xpY2tbJ2NsaWVudFgnXSA9IHRvdWNoLmNsaWVudFg7XG4gICAgY2xpY2tbJ2NsaWVudFknXSA9IHRvdWNoLmNsaWVudFk7XG4gICAgY2xpY2tbJ3NjcmVlblgnXSA9IHRvdWNoLnNjcmVlblg7XG4gICAgY2xpY2tbJ3NjcmVlblknXSA9IHRvdWNoLnNjcmVlblk7XG4gIH1cbiAgcmV0dXJuIGNsaWNrIGFzIE1vdXNlRXZlbnQ7XG59XG5cbi8qKlxuICogQW4gaW1wbGVtZW50YXRpb24gb2YgXCJwcmV2ZW50RGVmYXVsdFwiIGZvciBhIHN5bnRoZXNpemVkIGV2ZW50LiBTaW1wbHlcbiAqIHNldHMgXCJkZWZhdWx0UHJldmVudGVkXCIgcHJvcGVydHkgdG8gdHJ1ZS5cbiAqL1xuZnVuY3Rpb24gc3ludGhldGljUHJldmVudERlZmF1bHQodGhpczogRXZlbnQpIHtcbiAgKHRoaXMgYXMgU3ludGhldGljTW91c2VFdmVudCkuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG59XG5cbi8qKlxuICogQW4gaW1wbGVtZW50YXRpb24gb2YgXCJzdG9wUHJvcGFnYXRpb25cIiBmb3IgYSBzeW50aGVzaXplZCBldmVudC4gSXQgc2ltcGx5XG4gKiBzZXRzIGEgc3ludGhldGljIG5vbi1zdGFuZGFyZCBcIl9wcm9wYWdhdGlvblN0b3BwZWRcIiBwcm9wZXJ0eSB0byB0cnVlLlxuICovXG5mdW5jdGlvbiBzeW50aGV0aWNTdG9wUHJvcGFnYXRpb24odGhpczogRXZlbnQpIHtcbiAgKHRoaXMgYXMgU3ludGhldGljTW91c2VFdmVudCkuX3Byb3BhZ2F0aW9uU3RvcHBlZCA9IHRydWU7XG59XG5cbi8qKlxuICogTWFwcGluZyBvZiBLZXlib2FyZEV2ZW50LmtleSB2YWx1ZXMgdG9cbiAqIEtleUNvZGUgdmFsdWVzLlxuICovXG5jb25zdCBBQ1RJT05fS0VZX1RPX0tFWUNPREU6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICAnRW50ZXInOiBLZXlDb2RlLkVOVEVSLFxuICAnICc6IEtleUNvZGUuU1BBQ0UsXG59O1xuXG4vKipcbiAqIE1hcHBpbmcgb2YgSFRNTCBlbGVtZW50IGlkZW50aWZpZXJzIChBUklBIHJvbGUsIHR5cGUsIG9yIHRhZ05hbWUpIHRvIHRoZVxuICoga2V5cyAoZW50ZXIgYW5kL29yIHNwYWNlKSB0aGF0IHNob3VsZCBhY3RpdmF0ZSB0aGVtLiBBIHZhbHVlIG9mIHplcm8gbWVhbnNcbiAqIHRoYXQgYm90aCBzaG91bGQgYWN0aXZhdGUgdGhlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IElERU5USUZJRVJfVE9fS0VZX1RSSUdHRVJfTUFQUElORzoge1trZXk6IHN0cmluZ106IG51bWJlcn0gPSB7XG4gICdBJzogS2V5Q29kZS5FTlRFUixcbiAgJ0JVVFRPTic6IDAsXG4gICdDSEVDS0JPWCc6IEtleUNvZGUuU1BBQ0UsXG4gICdDT01CT0JPWCc6IEtleUNvZGUuRU5URVIsXG4gICdGSUxFJzogMCxcbiAgJ0dSSURDRUxMJzogS2V5Q29kZS5FTlRFUixcbiAgJ0xJTksnOiBLZXlDb2RlLkVOVEVSLFxuICAnTElTVEJPWCc6IEtleUNvZGUuRU5URVIsXG4gICdNRU5VJzogMCxcbiAgJ01FTlVCQVInOiAwLFxuICAnTUVOVUlURU0nOiAwLFxuICAnTUVOVUlURU1DSEVDS0JPWCc6IDAsXG4gICdNRU5VSVRFTVJBRElPJzogMCxcbiAgJ09QVElPTic6IDAsXG4gICdSQURJTyc6IEtleUNvZGUuU1BBQ0UsXG4gICdSQURJT0dST1VQJzogS2V5Q29kZS5TUEFDRSxcbiAgJ1JFU0VUJzogMCxcbiAgJ1NVQk1JVCc6IDAsXG4gICdTV0lUQ0gnOiBLZXlDb2RlLlNQQUNFLFxuICAnVEFCJzogMCxcbiAgJ1RSRUUnOiBLZXlDb2RlLkVOVEVSLFxuICAnVFJFRUlURU0nOiBLZXlDb2RlLkVOVEVSLFxufTtcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRvIHByb2Nlc3Mgc3BhY2UgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQ7XG4gKiBjaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdHlwZSBpcyBub3QgbnVsbC5cbiAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50LlxuICogQHJldHVybiBXaGV0aGVyIG9yIG5vdCB0byBwcm9jZXNzIHNwYWNlIGJhc2VkIG9uIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NTcGFjZShlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGNvbnN0IHR5cGUgPSAoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSB8fCBlbGVtZW50LnRhZ05hbWUpLnRvVXBwZXJDYXNlKCk7XG4gIHJldHVybiB0eXBlIGluIFBST0NFU1NfU1BBQ0U7XG59XG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIHRleHQgY29udHJvbC5cbiAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudC5cbiAqIEByZXR1cm4gV2hldGhlciBvciBub3QgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSB0ZXh0IGNvbnRyb2wuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dENvbnRyb2woZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgdHlwZSA9IChlbC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSB8fCBlbC50YWdOYW1lKS50b1VwcGVyQ2FzZSgpO1xuICByZXR1cm4gdHlwZSBpbiBURVhUX0NPTlRST0xTO1xufVxuXG4vKipcbiAqIFJldHVybnMgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgYSBuYXRpdmUgSFRNTCBjb250cm9sLlxuICogQHBhcmFtIGVsIFRoZSBlbGVtZW50LlxuICogQHJldHVybiBJZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBhIG5hdGl2ZSBIVE1MIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05hdGl2ZUhUTUxDb250cm9sKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBlbC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgaW4gTkFUSVZFX0hUTUxfQ09OVFJPTFM7XG59XG5cbi8qKlxuICogUmV0dXJucyBpZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBuYXRpdmVseSBhY3RpdmF0YWJsZS4gQnJvd3NlcnMgZW1pdCBjbGlja1xuICogZXZlbnRzIGZvciBuYXRpdmVseSBhY3RpdmF0YWJsZSBlbGVtZW50cywgZXZlbiB3aGVuIGFjdGl2YXRlZCB2aWEga2V5Ym9hcmQuXG4gKiBGb3IgdGhlc2UgZWxlbWVudHMsIHdlIGRvbid0IG5lZWQgdG8gcmFpc2UgYTExeSBjbGljayBldmVudHMuXG4gKiBAcGFyYW0gZWwgVGhlIGVsZW1lbnQuXG4gKiBAcmV0dXJuIElmIHRoZSBnaXZlbiBlbGVtZW50IGlzIGEgbmF0aXZlIEhUTUwgY29udHJvbC5cbiAqL1xuZnVuY3Rpb24gaXNOYXRpdmVseUFjdGl2YXRhYmxlKGVsOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgZWwudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQlVUVE9OJyB8fFxuICAgICghIShlbCBhcyBIVE1MSW5wdXRFbGVtZW50KS50eXBlICYmIChlbCBhcyBIVE1MSW5wdXRFbGVtZW50KS50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdGSUxFJylcbiAgKTtcbn1cblxuLyoqXG4gKiBIVE1MIDxpbnB1dD4gdHlwZXMgKG5vdCBBUklBIHJvbGVzKSB3aGljaCB3aWxsIGF1dG8tdHJpZ2dlciBhIGNsaWNrIGV2ZW50IGZvclxuICogdGhlIFNwYWNlIGtleSwgd2l0aCBzaWRlLWVmZmVjdHMuIFdlIHdpbGwgbm90IGNhbGwgcHJldmVudERlZmF1bHQgaWYgc3BhY2UgaXNcbiAqIHByZXNzZWQsIG5vciB3aWxsIHdlIHJhaXNlIGExMXkgY2xpY2sgZXZlbnRzLiAgRm9yIGFsbCBvdGhlciBlbGVtZW50cywgd2UgY2FuXG4gKiBzdXBwcmVzcyB0aGUgZGVmYXVsdCBldmVudCAod2hpY2ggaGFzIG5vIGRlc2lyZWQgc2lkZS1lZmZlY3RzKSBhbmQgaGFuZGxlIHRoZVxuICoga2V5ZG93biBvdXJzZWx2ZXMuXG4gKi9cbmNvbnN0IFBST0NFU1NfU1BBQ0U6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSA9IHtcbiAgJ0NIRUNLQk9YJzogdHJ1ZSxcbiAgJ0ZJTEUnOiB0cnVlLFxuICAnT1BUSU9OJzogdHJ1ZSxcbiAgJ1JBRElPJzogdHJ1ZSxcbn07XG5cbi8qKiBUYWdOYW1lcyBhbmQgSW5wdXQgdHlwZXMgZm9yIHdoaWNoIHRvIG5vdCBwcm9jZXNzIGVudGVyL3NwYWNlIGFzIGNsaWNrLiAqL1xuY29uc3QgVEVYVF9DT05UUk9MUzoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge1xuICAnQ09MT1InOiB0cnVlLFxuICAnREFURSc6IHRydWUsXG4gICdEQVRFVElNRSc6IHRydWUsXG4gICdEQVRFVElNRS1MT0NBTCc6IHRydWUsXG4gICdFTUFJTCc6IHRydWUsXG4gICdNT05USCc6IHRydWUsXG4gICdOVU1CRVInOiB0cnVlLFxuICAnUEFTU1dPUkQnOiB0cnVlLFxuICAnUkFOR0UnOiB0cnVlLFxuICAnU0VBUkNIJzogdHJ1ZSxcbiAgJ1RFTCc6IHRydWUsXG4gICdURVhUJzogdHJ1ZSxcbiAgJ1RFWFRBUkVBJzogdHJ1ZSxcbiAgJ1RJTUUnOiB0cnVlLFxuICAnVVJMJzogdHJ1ZSxcbiAgJ1dFRUsnOiB0cnVlLFxufTtcblxuLyoqIFRhZ05hbWVzIHRoYXQgYXJlIG5hdGl2ZSBIVE1MIGNvbnRyb2xzLiAqL1xuY29uc3QgTkFUSVZFX0hUTUxfQ09OVFJPTFM6IHtba2V5OiBzdHJpbmddOiBib29sZWFufSA9IHtcbiAgJ0EnOiB0cnVlLFxuICAnQVJFQSc6IHRydWUsXG4gICdCVVRUT04nOiB0cnVlLFxuICAnRElBTE9HJzogdHJ1ZSxcbiAgJ0lNRyc6IHRydWUsXG4gICdJTlBVVCc6IHRydWUsXG4gICdMSU5LJzogdHJ1ZSxcbiAgJ01FTlUnOiB0cnVlLFxuICAnT1BUR1JPVVAnOiB0cnVlLFxuICAnT1BUSU9OJzogdHJ1ZSxcbiAgJ1BST0dSRVNTJzogdHJ1ZSxcbiAgJ1NFTEVDVCc6IHRydWUsXG4gICdURVhUQVJFQSc6IHRydWUsXG59O1xuXG4vKiogRXhwb3J0ZWQgZm9yIHRlc3RpbmcuICovXG5leHBvcnQgY29uc3QgdGVzdGluZyA9IHtcbiAgc2V0SXNNYWModmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpc01hYyA9IHZhbHVlO1xuICB9LFxufTtcbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import * as eventLib from './event';
9
9
  /**
@@ -60,4 +60,4 @@ export class EventContractContainer {
60
60
  this.handlerInfos = [];
61
61
  }
62
62
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9ldmVudF9jb250cmFjdF9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLFFBQVEsTUFBTSxTQUFTLENBQUM7QUFnQnBDOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0Y7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFRakM7O09BRUc7SUFDSCxZQUFxQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBVnJDOzs7O1dBSUc7UUFDSyxpQkFBWSxHQUF1QixFQUFFLENBQUM7SUFLTixDQUFDO0lBRXpDOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQXdEO1FBQzFGLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsc0VBQXNFO1FBQ3RFLG1DQUFtQztRQUNuQyxFQUFFO1FBQ0YsNkVBQTZFO1FBQzdFLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsRUFBRTtRQUNGLDBFQUEwRTtRQUMxRSxxRUFBcUU7UUFDckUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUF1QixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBldmVudExpYiBmcm9tICcuL2V2ZW50JztcbmltcG9ydCB7RXZlbnRIYW5kbGVySW5mb30gZnJvbSAnLi9ldmVudF9oYW5kbGVyJztcblxuLyoqXG4gKiBBbiBgRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXJgIHByb3ZpZGVzIHRoZSBjb21tb24gaW50ZXJmYWNlIGZvciBtYW5hZ2luZ1xuICogY29udGFpbmVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlciB7XG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gICAgZ2V0SGFuZGxlcjogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IChldmVudDogRXZlbnQpID0+IHZvaWQsXG4gICk6IHZvaWQ7XG5cbiAgY2xlYW5VcCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIHVzZXIgYWdlbnQgaXMgcnVubmluZyBvbiBpT1MuXG4gKi9cbmNvbnN0IGlzSW9zID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL2lQaG9uZXxpUGFkfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKlxuICogQSBjbGFzcyByZXByZXNlbnRpbmcgYSBjb250YWluZXIgbm9kZSBhbmQgYWxsIHRoZSBldmVudCBoYW5kbGVyc1xuICogaW5zdGFsbGVkIG9uIGl0LiBVc2VkIHNvIHRoYXQgaGFuZGxlcnMgY2FuIGJlIGNsZWFuZWQgdXAgaWYgdGhlXG4gKiBjb250YWluZXIgaXMgcmVtb3ZlZCBmcm9tIHRoZSBjb250cmFjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJhY3RDb250YWluZXIgaW1wbGVtZW50cyBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlciB7XG4gIC8qKlxuICAgKiBBcnJheSBvZiBldmVudCBoYW5kbGVycyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBldmVudCB0eXBlcyB0aGF0IGFyZVxuICAgKiBpbnN0YWxsZWQgb24gdGhpcyBjb250YWluZXIuXG4gICAqXG4gICAqL1xuICBwcml2YXRlIGhhbmRsZXJJbmZvczogRXZlbnRIYW5kbGVySW5mb1tdID0gW107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBjb250YWluZXIgRWxlbWVudC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnQpIHt9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIHRoZSBwcm92aWRlZCBpbnN0YWxsZXIgb24gdGhlIGVsZW1lbnQgb3duZWQgYnkgdGhpcyBjb250YWluZXIsXG4gICAqIGFuZCBtYWludGFpbnMgYSByZWZlcmVuY2UgdG8gcmVzdWx0aW5nIGhhbmRsZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIGl0XG4gICAqIGxhdGVyIGlmIGRlc2lyZWQuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogc3RyaW5nLCBnZXRIYW5kbGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gKGV2ZW50OiBFdmVudCkgPT4gdm9pZCkge1xuICAgIC8vIEluIGlPUywgZXZlbnQgYnViYmxpbmcgZG9lc24ndCBoYXBwZW4gYXV0b21hdGljYWxseSBpbiBhbnkgRE9NIGVsZW1lbnQsXG4gICAgLy8gdW5sZXNzIGl0IGhhcyBhbiBvbmNsaWNrIGF0dHJpYnV0ZSBvciBET00gZXZlbnQgaGFuZGxlciBhdHRhY2hlZCB0byBpdC5cbiAgICAvLyBUaGlzIGJyZWFrcyBKc0FjdGlvbiBpbiBzb21lIGNhc2VzLiBTZWUgXCJNYWtpbmcgRWxlbWVudHMgQ2xpY2thYmxlXCJcbiAgICAvLyBzZWN0aW9uIGF0IGh0dHA6Ly9nb28uZ2wvMlZvR25CLlxuICAgIC8vXG4gICAgLy8gQSB3b3JrYXJvdW5kIGZvciB0aGlzIGlzc3VlIGlzIHRvIGNoYW5nZSB0aGUgQ1NTIGN1cnNvciBzdHlsZSB0byAncG9pbnRlcidcbiAgICAvLyBmb3IgdGhlIGNvbnRhaW5lciBlbGVtZW50LCB3aGljaCBtYWdpY2FsbHkgdHVybnMgb24gZXZlbnQgYnViYmxpbmcuIFRoaXNcbiAgICAvLyBzb2x1dGlvbiBpcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIHNlY3Rpb24gYXQgaHR0cDovL2dvby5nbC82cEVPMXouXG4gICAgLy9cbiAgICAvLyBXZSB1c2UgYSBuYXZpZ2F0b3IudXNlckFnZW50IGNoZWNrIGhlcmUgYXMgdGhpcyBwcm9ibGVtIGlzIHByZXNlbnQgYm90aFxuICAgIC8vIG9uIE1vYmlsZSBTYWZhcmkgYW5kIHRoaW4gV2ViS2l0IHdyYXBwZXJzLCBzdWNoIGFzIENocm9tZSBmb3IgaU9TLlxuICAgIGlmIChpc0lvcykge1xuICAgICAgKHRoaXMuZWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZXJJbmZvcy5wdXNoKFxuICAgICAgZXZlbnRMaWIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmVsZW1lbnQsIGV2ZW50VHlwZSwgZ2V0SGFuZGxlcih0aGlzLmVsZW1lbnQpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIHRoZSBoYW5kbGVycyBpbnN0YWxsZWQgb24gdGhpcyBjb250YWluZXIuXG4gICAqL1xuICBjbGVhblVwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5oYW5kbGVySW5mb3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGV2ZW50TGliLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5lbGVtZW50LCB0aGlzLmhhbmRsZXJJbmZvc1tpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVySW5mb3MgPSBbXTtcbiAgfVxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9ldmVudF9jb250cmFjdF9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLFFBQVEsTUFBTSxTQUFTLENBQUM7QUFnQnBDOztHQUVHO0FBQ0gsTUFBTSxLQUFLLEdBQUcsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0Y7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFRakM7O09BRUc7SUFDSCxZQUFxQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBVnJDOzs7O1dBSUc7UUFDSyxpQkFBWSxHQUF1QixFQUFFLENBQUM7SUFLTixDQUFDO0lBRXpDOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQXdEO1FBQzFGLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsc0VBQXNFO1FBQ3RFLG1DQUFtQztRQUNuQyxFQUFFO1FBQ0YsNkVBQTZFO1FBQzdFLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsRUFBRTtRQUNGLDBFQUEwRTtRQUMxRSxxRUFBcUU7UUFDckUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUF1QixDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgZXZlbnRMaWIgZnJvbSAnLi9ldmVudCc7XG5pbXBvcnQge0V2ZW50SGFuZGxlckluZm99IGZyb20gJy4vZXZlbnRfaGFuZGxlcic7XG5cbi8qKlxuICogQW4gYEV2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyYCBwcm92aWRlcyB0aGUgY29tbW9uIGludGVyZmFjZSBmb3IgbWFuYWdpbmdcbiAqIGNvbnRhaW5lcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIge1xuICBhZGRFdmVudExpc3RlbmVyKFxuICAgIGV2ZW50VHlwZTogc3RyaW5nLFxuICAgIGdldEhhbmRsZXI6IChlbGVtZW50OiBFbGVtZW50KSA9PiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLFxuICApOiB2b2lkO1xuXG4gIGNsZWFuVXAoKTogdm9pZDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSB1c2VyIGFnZW50IGlzIHJ1bm5pbmcgb24gaU9TLlxuICovXG5jb25zdCBpc0lvcyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9pUGhvbmV8aVBhZHxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vKipcbiAqIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgY29udGFpbmVyIG5vZGUgYW5kIGFsbCB0aGUgZXZlbnQgaGFuZGxlcnNcbiAqIGluc3RhbGxlZCBvbiBpdC4gVXNlZCBzbyB0aGF0IGhhbmRsZXJzIGNhbiBiZSBjbGVhbmVkIHVwIGlmIHRoZVxuICogY29udGFpbmVyIGlzIHJlbW92ZWQgZnJvbSB0aGUgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudENvbnRyYWN0Q29udGFpbmVyIGltcGxlbWVudHMgRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXIge1xuICAvKipcbiAgICogQXJyYXkgb2YgZXZlbnQgaGFuZGxlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXZlbnQgdHlwZXMgdGhhdCBhcmVcbiAgICogaW5zdGFsbGVkIG9uIHRoaXMgY29udGFpbmVyLlxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVySW5mb3M6IEV2ZW50SGFuZGxlckluZm9bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgY29udGFpbmVyIEVsZW1lbnQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBlbGVtZW50OiBFbGVtZW50KSB7fVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyB0aGUgcHJvdmlkZWQgaW5zdGFsbGVyIG9uIHRoZSBlbGVtZW50IG93bmVkIGJ5IHRoaXMgY29udGFpbmVyLFxuICAgKiBhbmQgbWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHJlc3VsdGluZyBoYW5kbGVyIGluIG9yZGVyIHRvIHJlbW92ZSBpdFxuICAgKiBsYXRlciBpZiBkZXNpcmVkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGU6IHN0cmluZywgZ2V0SGFuZGxlcjogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IChldmVudDogRXZlbnQpID0+IHZvaWQpIHtcbiAgICAvLyBJbiBpT1MsIGV2ZW50IGJ1YmJsaW5nIGRvZXNuJ3QgaGFwcGVuIGF1dG9tYXRpY2FsbHkgaW4gYW55IERPTSBlbGVtZW50LFxuICAgIC8vIHVubGVzcyBpdCBoYXMgYW4gb25jbGljayBhdHRyaWJ1dGUgb3IgRE9NIGV2ZW50IGhhbmRsZXIgYXR0YWNoZWQgdG8gaXQuXG4gICAgLy8gVGhpcyBicmVha3MgSnNBY3Rpb24gaW4gc29tZSBjYXNlcy4gU2VlIFwiTWFraW5nIEVsZW1lbnRzIENsaWNrYWJsZVwiXG4gICAgLy8gc2VjdGlvbiBhdCBodHRwOi8vZ29vLmdsLzJWb0duQi5cbiAgICAvL1xuICAgIC8vIEEgd29ya2Fyb3VuZCBmb3IgdGhpcyBpc3N1ZSBpcyB0byBjaGFuZ2UgdGhlIENTUyBjdXJzb3Igc3R5bGUgdG8gJ3BvaW50ZXInXG4gICAgLy8gZm9yIHRoZSBjb250YWluZXIgZWxlbWVudCwgd2hpY2ggbWFnaWNhbGx5IHR1cm5zIG9uIGV2ZW50IGJ1YmJsaW5nLiBUaGlzXG4gICAgLy8gc29sdXRpb24gaXMgZGVzY3JpYmVkIGluIHRoZSBjb21tZW50cyBzZWN0aW9uIGF0IGh0dHA6Ly9nb28uZ2wvNnBFTzF6LlxuICAgIC8vXG4gICAgLy8gV2UgdXNlIGEgbmF2aWdhdG9yLnVzZXJBZ2VudCBjaGVjayBoZXJlIGFzIHRoaXMgcHJvYmxlbSBpcyBwcmVzZW50IGJvdGhcbiAgICAvLyBvbiBNb2JpbGUgU2FmYXJpIGFuZCB0aGluIFdlYktpdCB3cmFwcGVycywgc3VjaCBhcyBDaHJvbWUgZm9yIGlPUy5cbiAgICBpZiAoaXNJb3MpIHtcbiAgICAgICh0aGlzLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVySW5mb3MucHVzaChcbiAgICAgIGV2ZW50TGliLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5lbGVtZW50LCBldmVudFR5cGUsIGdldEhhbmRsZXIodGhpcy5lbGVtZW50KSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCB0aGUgaGFuZGxlcnMgaW5zdGFsbGVkIG9uIHRoaXMgY29udGFpbmVyLlxuICAgKi9cbiAgY2xlYW5VcCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaGFuZGxlckluZm9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBldmVudExpYi5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuZWxlbWVudCwgdGhpcy5oYW5kbGVySW5mb3NbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlckluZm9zID0gW107XG4gIH1cbn1cbiJdfQ==
@@ -3,11 +3,11 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /**
9
9
  * @define Support for the non-bubbling mouseenter and mouseleave events. This
10
10
  * flag can be overridden in a build rule.
11
11
  */
12
12
  export const MOUSE_SPECIAL_SUPPORT = false;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfZGVmaW5lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfY29udHJhY3RfZGVmaW5lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBAZGVmaW5lIFN1cHBvcnQgZm9yIHRoZSBub24tYnViYmxpbmcgbW91c2VlbnRlciBhbmQgbW91c2VsZWF2ZSBldmVudHMuICBUaGlzXG4gKiBmbGFnIGNhbiBiZSBvdmVycmlkZGVuIGluIGEgYnVpbGQgcnVsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1PVVNFX1NQRUNJQUxfU1VQUE9SVCA9IGZhbHNlO1xuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfZGVmaW5lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfY29udHJhY3RfZGVmaW5lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbi8qKlxuICogQGRlZmluZSBTdXBwb3J0IGZvciB0aGUgbm9uLWJ1YmJsaW5nIG1vdXNlZW50ZXIgYW5kIG1vdXNlbGVhdmUgZXZlbnRzLiAgVGhpc1xuICogZmxhZyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBhIGJ1aWxkIHJ1bGUuXG4gKi9cbmV4cG9ydCBjb25zdCBNT1VTRV9TUEVDSUFMX1NVUFBPUlQgPSBmYWxzZTtcbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { EventContractContainer } from './event_contract_container';
9
9
  /**
@@ -189,4 +189,4 @@ function containsNode(parent, child) {
189
189
  }
190
190
  return parent === child;
191
191
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfbXVsdGlfY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9ldmVudF9jb250cmFjdF9tdWx0aV9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHNCQUFzQixFQUFnQyxNQUFNLDRCQUE0QixDQUFDO0FBRWpHOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQVF0Qzs7O09BR0c7SUFDSCxZQUE2QixrQkFBa0IsS0FBSztRQUF2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQVhwRCw4QkFBOEI7UUFDdEIsZUFBVSxHQUE2QixFQUFFLENBQUM7UUFDbEQscUNBQXFDO1FBQzdCLHFCQUFnQixHQUE2QixFQUFFLENBQUM7UUFDeEQsNENBQTRDO1FBQ3BDLDJCQUFzQixHQUF1RCxFQUFFLENBQUM7SUFNakMsQ0FBQztJQUV4RDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxVQUF3RDtRQUMxRixNQUFNLHFCQUFxQixHQUFHLENBQUMsU0FBaUMsRUFBRSxFQUFFO1lBQ2xFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBQ0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztP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RSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLE1BQVksRUFBRSxLQUFXO0lBQzdDLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sTUFBTSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELE9BQU8sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RXZlbnRDb250cmFjdENvbnRhaW5lciwgRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXJ9IGZyb20gJy4vZXZlbnRfY29udHJhY3RfY29udGFpbmVyJztcblxuLyoqXG4gKiBBbiBgRXZlbnRDb250cmFjdENvbnRhaW5lck1hbmFnZXJgIHRoYXQgc3VwcG9ydHMgbXVsdGlwbGUgY29udGFpbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50Q29udHJhY3RNdWx0aUNvbnRhaW5lciBpbXBsZW1lbnRzIEV2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyIHtcbiAgLyoqIFRoZSBsaXN0IG9mIGNvbnRhaW5lcnMuICovXG4gIHByaXZhdGUgY29udGFpbmVyczogRXZlbnRDb250cmFjdENvbnRhaW5lcltdID0gW107XG4gIC8qKiBUaGUgbGlzdCBvZiBuZXN0ZWQgY29udGFpbmVycy4gKi9cbiAgcHJpdmF0ZSBuZXN0ZWRDb250YWluZXJzOiBFdmVudENvbnRyYWN0Q29udGFpbmVyW10gPSBbXTtcbiAgLyoqIFRoZSBsaXN0IG9mIGV2ZW50IGhhbmRsZXIgaW5zdGFsbGVycy4gKi9cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXJJbnN0YWxsZXJzOiBBcnJheTwoY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyKSA9PiB2b2lkPiA9IFtdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc3RvcFByb3BhZ2F0aW9uIENvbnRyb2xzIHdoZXRoZXIgZXZlbnRzIGNhbiBidWJibGUgYmV0d2VlblxuICAgKiAgICBjb250YWluZXJzIG9yIG5vdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2UpIHt9XG5cbiAgLyoqXG4gICAqIEluc3RhbGxzIHRoZSBwcm92aWRlZCBpbnN0YWxsZXIgb24gdGhlIGVsZW1lbnQgb3duZWQgYnkgdGhpcyBjb250YWluZXIsXG4gICAqIGFuZCBtYWludGFpbnMgYSByZWZlcmVuY2UgdG8gcmVzdWx0aW5nIGhhbmRsZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIGl0XG4gICAqIGxhdGVyIGlmIGRlc2lyZWQuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZTogc3RyaW5nLCBnZXRIYW5kbGVyOiAoZWxlbWVudDogRWxlbWVudCkgPT4gKGV2ZW50OiBFdmVudCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGV2ZW50SGFuZGxlckluc3RhbGxlciA9IChjb250YWluZXI6IEV2ZW50Q29udHJhY3RDb250YWluZXIpID0+IHtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZ2V0SGFuZGxlcik7XG4gICAgfTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29udGFpbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgZXZlbnRIYW5kbGVySW5zdGFsbGVyKHRoaXMuY29udGFpbmVyc1tpXSk7XG4gICAgfVxuICAgIHRoaXMuZXZlbnRIYW5kbGVySW5zdGFsbGVycy5wdXNoKGV2ZW50SGFuZGxlckluc3RhbGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgdGhlIGhhbmRsZXJzIGluc3RhbGxlZCBvbiBhbGwgY29udGFpbmVycy5cbiAgICovXG4gIGNsZWFuVXAoKSB7XG4gICAgY29uc3QgYWxsQ29udGFpbmVycyA9IFsuLi50aGlzLmNvbnRhaW5lcnMsIC4uLnRoaXMubmVzdGVkQ29udGFpbmVyc107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxDb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhbGxDb250YWluZXJzW2ldLmNsZWFuVXAoKTtcbiAgICB9XG4gICAgdGhpcy5jb250YWluZXJzID0gW107XG4gICAgdGhpcy5uZXN0ZWRDb250YWluZXJzID0gW107XG4gICAgdGhpcy5ldmVudEhhbmRsZXJJbnN0YWxsZXJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNvbnRhaW5lciB0byB0aGUgYE11bHRpRXZlbnRDb250cmFjdENvbnRhaW5lcmAuXG4gICAqIFNpZ25zIHRoZSBldmVudCBjb250cmFjdCBmb3IgYSBuZXcgY29udGFpbmVyLiBBbGwgcmVnaXN0ZXJlZCBldmVudHNcbiAgICogYXJlIGVuYWJsZWQgZm9yIHRoaXMgY29udGFpbmVyIHRvby4gQ29udGFpbmVycyBoYXZlIHRvIGJlIGtlcHQgZGlzam9pbnQsXG4gICAqIHNvIGlmIHRoZSBuZXdseSBhZGRlZCBjb250YWluZXIgaXMgYSBwYXJlbnQvY2hpbGQgb2YgZXhpc3RpbmcgY29udGFpbmVycyxcbiAgICogdGhleSB3aWxsIGJlIG1lcmdlZC4gSWYgdGhlIGNvbnRhaW5lciBpcyBhbHJlYWR5IHRyYWNrZWQgYnkgdGhpc1xuICAgKiBgRXZlbnRDb250cmFjdGAsIHRoZW4gdGhlIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBgRXZlbnRDb250cmFjdENvbnRhaW5lcmBcbiAgICogd2lsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIGFkZENvbnRhaW5lcihlbGVtZW50OiBFbGVtZW50KTogRXZlbnRDb250cmFjdENvbnRhaW5lciB7XG4gICAgLy8gSWYgdGhlIGNvbnRhaW5lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHJldHVybi5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29udGFpbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGVsZW1lbnQgPT09IHRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lcnNbaV07XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBFdmVudENvbnRyYWN0Q29udGFpbmVyKGVsZW1lbnQpO1xuICAgIGlmICh0aGlzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgLy8gRXZlbnRzIGFyZSBub3QgcHJvcGFnYXRlZCwgc28gY29udGFpbmVycyBjYW4gYmUgY29uc2lkZXJlZCBpbmRlcGVuZGVudC5cbiAgICAgIHRoaXMuc2V0VXBDb250YWluZXIoY29udGFpbmVyKTtcbiAgICAgIHRoaXMuY29udGFpbmVycy5wdXNoKGNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmlzTmVzdGVkQ29udGFpbmVyKGNvbnRhaW5lcikpIHtcbiAgICAgICAgLy8gVGhpcyBjb250YWluZXIgaGFzIGFuIGFuY2VzdG9yIHRoYXQgaXMgYWxyZWFkeSBhIGNvbnRyYWN0IGNvbnRhaW5lci5cbiAgICAgICAgLy8gRG9uJ3QgaW5zdGFsbCBldmVudCBsaXN0ZW5lcnMgb24gaXQgaW4gb3JkZXIgdG8gcHJldmVudCBhbiBldmVudCBmcm9tXG4gICAgICAgIC8vIGJlaW5nIGhhbmRsZWQgbXVsdGlwbGUgdGltZXMuXG4gICAgICAgIHRoaXMubmVzdGVkQ29udGFpbmVycy5wdXNoKGNvbnRhaW5lcik7XG4gICAgICAgIHJldHVybiBjb250YWluZXI7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFVwQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgICB0aGlzLmNvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgdGhpcy51cGRhdGVOZXN0ZWRDb250YWluZXJzKCk7XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBhbHJlYWR5LWFkZGVkIGNvbnRhaW5lciBmcm9tIHRoZSBjb250cmFjdC5cbiAgICovXG4gIHJlbW92ZUNvbnRhaW5lcihjb250YWluZXI6IEV2ZW50Q29udHJhY3RDb250YWluZXIpIHtcbiAgICBjb250YWluZXIuY2xlYW5VcCgpO1xuICAgIGxldCByZW1vdmVkID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lcnNbaV0gPT09IGNvbnRhaW5lcikge1xuICAgICAgICB0aGlzLmNvbnRhaW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICByZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZW1vdmVkKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubmVzdGVkQ29udGFpbmVycy5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAodGhpcy5uZXN0ZWRDb250YWluZXJzW2ldID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICB0aGlzLm5lc3RlZENvbnRhaW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudXBkYXRlTmVzdGVkQ29udGFpbmVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlc3RlZCB3aGV0aGVyIGFueSBjdXJyZW50IGNvbnRhaW5lciBpcyBhIHBhcmVudCBvZiB0aGUgbmV3IGNvbnRhaW5lci5cbiAgICovXG4gIHByaXZhdGUgaXNOZXN0ZWRDb250YWluZXIoY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjb250YWluc05vZGUodGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnQsIGNvbnRhaW5lci5lbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEluc3RhbGxzIGFsbCBleGlzdGluZyBldmVudCBoYW5kbGVycyBvbiBhIG5ldyBjb250YWluZXIuICovXG4gIHByaXZhdGUgc2V0VXBDb250YWluZXIoY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmV2ZW50SGFuZGxlckluc3RhbGxlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZXZlbnRIYW5kbGVySW5zdGFsbGVyc1tpXShjb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIG5lc3RlZCBjb250YWluZXJzIGFmdGVyIGFuIGFkZC9yZW1vdmUgb3BlcmF0aW9uLiBPbmx5XG4gICAqIGNvbnRhaW5lcnMgdGhhdCBhcmUgbm90IGNoaWxkcmVuIG9mIG90aGVyIGNvbnRhaW5lcnMgYXJlIHBsYWNlZCBpbiB0aGVcbiAgICogY29udGFpbmVycyBsaXN0IChhbmQgaGF2ZSBldmVudCBsaXN0ZW5lcnMgb24gdGhlbSkuIFRoaXMgaXMgZG9uZSBpbiBvcmRlclxuICAgKiB0byBwcmV2ZW50IGV2ZW50cyBmcm9tIGJlaW5nIGhhbmRsZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBgc3RvcFByb3BhZ2F0aW9uYFxuICAgKiBpcyBmYWxzZS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlTmVzdGVkQ29udGFpbmVycygpIHtcbiAgICBjb25zdCBhbGxDb250YWluZXJzID0gWy4uLnRoaXMubmVzdGVkQ29udGFpbmVycywgLi4udGhpcy5jb250YWluZXJzXTtcbiAgICBjb25zdCBuZXdOZXN0ZWRDb250YWluZXJzID0gW107XG4gICAgY29uc3QgbmV3Q29udGFpbmVycyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyc1tpXTtcbiAgICAgIGlmIChpc05lc3RlZChjb250YWluZXIsIGFsbENvbnRhaW5lcnMpKSB7XG4gICAgICAgIG5ld05lc3RlZENvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBuZXN0ZWQgY29udGFpbmVyLlxuICAgICAgICBjb250YWluZXIuY2xlYW5VcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q29udGFpbmVycy5wdXNoKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5lc3RlZENvbnRhaW5lcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubmVzdGVkQ29udGFpbmVyc1tpXTtcbiAgICAgIGlmIChpc05lc3RlZChjb250YWluZXIsIGFsbENvbnRhaW5lcnMpKSB7XG4gICAgICAgIG5ld05lc3RlZENvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q29udGFpbmVycy5wdXNoKGNvbnRhaW5lcik7XG4gICAgICAgIC8vIFRoZSBjb250YWluZXIgaXMgbm8gbG9uZ2VyIG5lc3RlZCwgYWRkIGV2ZW50IGxpc3RlbmVycyBvbiBpdC5cbiAgICAgICAgdGhpcy5zZXRVcENvbnRhaW5lcihjb250YWluZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVycyA9IG5ld0NvbnRhaW5lcnM7XG4gICAgdGhpcy5uZXN0ZWRDb250YWluZXJzID0gbmV3TmVzdGVkQ29udGFpbmVycztcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb250YWluZXIgaXMgYSBjaGlsZCBvZiBhbnkgb2YgdGhlIGNvbnRhaW5lcnMuXG4gKi9cbmZ1bmN0aW9uIGlzTmVzdGVkKFxuICBjb250YWluZXI6IEV2ZW50Q29udHJhY3RDb250YWluZXIsXG4gIGNvbnRhaW5lcnM6IEV2ZW50Q29udHJhY3RDb250YWluZXJbXSxcbik6IGJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRhaW5lcnMubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoY29udGFpbnNOb2RlKGNvbnRhaW5lcnNbaV0uZWxlbWVudCwgY29udGFpbmVyLmVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgcGFyZW50IGNvbnRhaW5zIGNoaWxkLlxuICogSUUxMSBvbmx5IHN1cHBvcnRzIHRoZSBuYXRpdmUgYE5vZGUuY29udGFpbnNgIGZvciBIVE1MRWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gY29udGFpbnNOb2RlKHBhcmVudDogTm9kZSwgY2hpbGQ6IE5vZGUpOiBib29sZWFuIHtcbiAgaWYgKHBhcmVudCA9PT0gY2hpbGQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgd2hpbGUgKHBhcmVudCAhPT0gY2hpbGQgJiYgY2hpbGQucGFyZW50Tm9kZSkge1xuICAgIGNoaWxkID0gY2hpbGQucGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gcGFyZW50ID09PSBjaGlsZDtcbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfY29udHJhY3RfbXVsdGlfY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9wcmltaXRpdmVzL2V2ZW50LWRpc3BhdGNoL3NyYy9ldmVudF9jb250cmFjdF9tdWx0aV9jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLHNCQUFzQixFQUFnQyxNQUFNLDRCQUE0QixDQUFDO0FBRWpHOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQVF0Qzs7O09BR0c7SUFDSCxZQUE2QixrQkFBa0IsS0FBSztRQUF2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQVhwRCw4QkFBOEI7UUFDdEIsZUFBVSxHQUE2QixFQUFFLENBQUM7UUFDbEQscUNBQXFDO1FBQzdCLHFCQUFnQixHQUE2QixFQUFFLENBQUM7UUFDeEQsNENBQTRDO1FBQ3BDLDJCQUFzQixHQUF1RCxFQUFFLENBQUM7SUFNakMsQ0FBQztJQUV4RDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxVQUF3RDtRQUMxRixNQUFNLHFCQUFxQixHQUFHLENBQUMsU0FBaUMsRUFBRSxFQUFFO1lBQ2xFLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO1FBQ0YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDaEQscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztP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RSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLE1BQVksRUFBRSxLQUFXO0lBQzdDLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sTUFBTSxLQUFLLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNELE9BQU8sTUFBTSxLQUFLLEtBQUssQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0V2ZW50Q29udHJhY3RDb250YWluZXIsIEV2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyfSBmcm9tICcuL2V2ZW50X2NvbnRyYWN0X2NvbnRhaW5lcic7XG5cbi8qKlxuICogQW4gYEV2ZW50Q29udHJhY3RDb250YWluZXJNYW5hZ2VyYCB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGNvbnRhaW5lcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudENvbnRyYWN0TXVsdGlDb250YWluZXIgaW1wbGVtZW50cyBFdmVudENvbnRyYWN0Q29udGFpbmVyTWFuYWdlciB7XG4gIC8qKiBUaGUgbGlzdCBvZiBjb250YWluZXJzLiAqL1xuICBwcml2YXRlIGNvbnRhaW5lcnM6IEV2ZW50Q29udHJhY3RDb250YWluZXJbXSA9IFtdO1xuICAvKiogVGhlIGxpc3Qgb2YgbmVzdGVkIGNvbnRhaW5lcnMuICovXG4gIHByaXZhdGUgbmVzdGVkQ29udGFpbmVyczogRXZlbnRDb250cmFjdENvbnRhaW5lcltdID0gW107XG4gIC8qKiBUaGUgbGlzdCBvZiBldmVudCBoYW5kbGVyIGluc3RhbGxlcnMuICovXG4gIHByaXZhdGUgZXZlbnRIYW5kbGVySW5zdGFsbGVyczogQXJyYXk8KGNvbnRhaW5lcjogRXZlbnRDb250cmFjdENvbnRhaW5lcikgPT4gdm9pZD4gPSBbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHN0b3BQcm9wYWdhdGlvbiBDb250cm9scyB3aGV0aGVyIGV2ZW50cyBjYW4gYnViYmxlIGJldHdlZW5cbiAgICogICAgY29udGFpbmVycyBvciBub3QuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0b3BQcm9wYWdhdGlvbiA9IGZhbHNlKSB7fVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyB0aGUgcHJvdmlkZWQgaW5zdGFsbGVyIG9uIHRoZSBlbGVtZW50IG93bmVkIGJ5IHRoaXMgY29udGFpbmVyLFxuICAgKiBhbmQgbWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHJlc3VsdGluZyBoYW5kbGVyIGluIG9yZGVyIHRvIHJlbW92ZSBpdFxuICAgKiBsYXRlciBpZiBkZXNpcmVkLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGU6IHN0cmluZywgZ2V0SGFuZGxlcjogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IChldmVudDogRXZlbnQpID0+IHZvaWQpIHtcbiAgICBjb25zdCBldmVudEhhbmRsZXJJbnN0YWxsZXIgPSAoY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyKSA9PiB7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGdldEhhbmRsZXIpO1xuICAgIH07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGV2ZW50SGFuZGxlckluc3RhbGxlcih0aGlzLmNvbnRhaW5lcnNbaV0pO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50SGFuZGxlckluc3RhbGxlcnMucHVzaChldmVudEhhbmRsZXJJbnN0YWxsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIHRoZSBoYW5kbGVycyBpbnN0YWxsZWQgb24gYWxsIGNvbnRhaW5lcnMuXG4gICAqL1xuICBjbGVhblVwKCkge1xuICAgIGNvbnN0IGFsbENvbnRhaW5lcnMgPSBbLi4udGhpcy5jb250YWluZXJzLCAuLi50aGlzLm5lc3RlZENvbnRhaW5lcnNdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsQ29udGFpbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgYWxsQ29udGFpbmVyc1tpXS5jbGVhblVwKCk7XG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVycyA9IFtdO1xuICAgIHRoaXMubmVzdGVkQ29udGFpbmVycyA9IFtdO1xuICAgIHRoaXMuZXZlbnRIYW5kbGVySW5zdGFsbGVycyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjb250YWluZXIgdG8gdGhlIGBNdWx0aUV2ZW50Q29udHJhY3RDb250YWluZXJgLlxuICAgKiBTaWducyB0aGUgZXZlbnQgY29udHJhY3QgZm9yIGEgbmV3IGNvbnRhaW5lci4gQWxsIHJlZ2lzdGVyZWQgZXZlbnRzXG4gICAqIGFyZSBlbmFibGVkIGZvciB0aGlzIGNvbnRhaW5lciB0b28uIENvbnRhaW5lcnMgaGF2ZSB0byBiZSBrZXB0IGRpc2pvaW50LFxuICAgKiBzbyBpZiB0aGUgbmV3bHkgYWRkZWQgY29udGFpbmVyIGlzIGEgcGFyZW50L2NoaWxkIG9mIGV4aXN0aW5nIGNvbnRhaW5lcnMsXG4gICAqIHRoZXkgd2lsbCBiZSBtZXJnZWQuIElmIHRoZSBjb250YWluZXIgaXMgYWxyZWFkeSB0cmFja2VkIGJ5IHRoaXNcbiAgICogYEV2ZW50Q29udHJhY3RgLCB0aGVuIHRoZSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgYEV2ZW50Q29udHJhY3RDb250YWluZXJgXG4gICAqIHdpbGwgYmUgcmV0dXJuZWQuXG4gICAqL1xuICBhZGRDb250YWluZXIoZWxlbWVudDogRWxlbWVudCk6IEV2ZW50Q29udHJhY3RDb250YWluZXIge1xuICAgIC8vIElmIHRoZSBjb250YWluZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCByZXR1cm4uXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbnRhaW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlbGVtZW50ID09PSB0aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgRXZlbnRDb250cmFjdENvbnRhaW5lcihlbGVtZW50KTtcbiAgICBpZiAodGhpcy5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIC8vIEV2ZW50cyBhcmUgbm90IHByb3BhZ2F0ZWQsIHNvIGNvbnRhaW5lcnMgY2FuIGJlIGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQuXG4gICAgICB0aGlzLnNldFVwQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgICB0aGlzLmNvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc05lc3RlZENvbnRhaW5lcihjb250YWluZXIpKSB7XG4gICAgICAgIC8vIFRoaXMgY29udGFpbmVyIGhhcyBhbiBhbmNlc3RvciB0aGF0IGlzIGFscmVhZHkgYSBjb250cmFjdCBjb250YWluZXIuXG4gICAgICAgIC8vIERvbid0IGluc3RhbGwgZXZlbnQgbGlzdGVuZXJzIG9uIGl0IGluIG9yZGVyIHRvIHByZXZlbnQgYW4gZXZlbnQgZnJvbVxuICAgICAgICAvLyBiZWluZyBoYW5kbGVkIG11bHRpcGxlIHRpbWVzLlxuICAgICAgICB0aGlzLm5lc3RlZENvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4gY29udGFpbmVyO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRVcENvbnRhaW5lcihjb250YWluZXIpO1xuICAgICAgdGhpcy5jb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICAgIHRoaXMudXBkYXRlTmVzdGVkQ29udGFpbmVycygpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gYWxyZWFkeS1hZGRlZCBjb250YWluZXIgZnJvbSB0aGUgY29udHJhY3QuXG4gICAqL1xuICByZW1vdmVDb250YWluZXIoY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyKSB7XG4gICAgY29udGFpbmVyLmNsZWFuVXAoKTtcbiAgICBsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb250YWluZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICBpZiAodGhpcy5jb250YWluZXJzW2ldID09PSBjb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmVtb3ZlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVtb3ZlZCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm5lc3RlZENvbnRhaW5lcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKHRoaXMubmVzdGVkQ29udGFpbmVyc1tpXSA9PT0gY29udGFpbmVyKSB7XG4gICAgICAgICAgdGhpcy5uZXN0ZWRDb250YWluZXJzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZU5lc3RlZENvbnRhaW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXN0ZWQgd2hldGhlciBhbnkgY3VycmVudCBjb250YWluZXIgaXMgYSBwYXJlbnQgb2YgdGhlIG5ldyBjb250YWluZXIuXG4gICAqL1xuICBwcml2YXRlIGlzTmVzdGVkQ29udGFpbmVyKGNvbnRhaW5lcjogRXZlbnRDb250cmFjdENvbnRhaW5lcik6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb250YWluZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY29udGFpbnNOb2RlKHRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50LCBjb250YWluZXIuZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBJbnN0YWxscyBhbGwgZXhpc3RpbmcgZXZlbnQgaGFuZGxlcnMgb24gYSBuZXcgY29udGFpbmVyLiAqL1xuICBwcml2YXRlIHNldFVwQ29udGFpbmVyKGNvbnRhaW5lcjogRXZlbnRDb250cmFjdENvbnRhaW5lcikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ldmVudEhhbmRsZXJJbnN0YWxsZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmV2ZW50SGFuZGxlckluc3RhbGxlcnNbaV0oY29udGFpbmVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgbGlzdCBvZiBuZXN0ZWQgY29udGFpbmVycyBhZnRlciBhbiBhZGQvcmVtb3ZlIG9wZXJhdGlvbi4gT25seVxuICAgKiBjb250YWluZXJzIHRoYXQgYXJlIG5vdCBjaGlsZHJlbiBvZiBvdGhlciBjb250YWluZXJzIGFyZSBwbGFjZWQgaW4gdGhlXG4gICAqIGNvbnRhaW5lcnMgbGlzdCAoYW5kIGhhdmUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZW0pLiBUaGlzIGlzIGRvbmUgaW4gb3JkZXJcbiAgICogdG8gcHJldmVudCBldmVudHMgZnJvbSBiZWluZyBoYW5kbGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gYHN0b3BQcm9wYWdhdGlvbmBcbiAgICogaXMgZmFsc2UuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZU5lc3RlZENvbnRhaW5lcnMoKSB7XG4gICAgY29uc3QgYWxsQ29udGFpbmVycyA9IFsuLi50aGlzLm5lc3RlZENvbnRhaW5lcnMsIC4uLnRoaXMuY29udGFpbmVyc107XG4gICAgY29uc3QgbmV3TmVzdGVkQ29udGFpbmVycyA9IFtdO1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lcnMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb250YWluZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcnNbaV07XG4gICAgICBpZiAoaXNOZXN0ZWQoY29udGFpbmVyLCBhbGxDb250YWluZXJzKSkge1xuICAgICAgICBuZXdOZXN0ZWRDb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBldmVudCBsaXN0ZW5lcnMgZnJvbSB0aGUgbmVzdGVkIGNvbnRhaW5lci5cbiAgICAgICAgY29udGFpbmVyLmNsZWFuVXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0NvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uZXN0ZWRDb250YWluZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm5lc3RlZENvbnRhaW5lcnNbaV07XG4gICAgICBpZiAoaXNOZXN0ZWQoY29udGFpbmVyLCBhbGxDb250YWluZXJzKSkge1xuICAgICAgICBuZXdOZXN0ZWRDb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0NvbnRhaW5lcnMucHVzaChjb250YWluZXIpO1xuICAgICAgICAvLyBUaGUgY29udGFpbmVyIGlzIG5vIGxvbmdlciBuZXN0ZWQsIGFkZCBldmVudCBsaXN0ZW5lcnMgb24gaXQuXG4gICAgICAgIHRoaXMuc2V0VXBDb250YWluZXIoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbnRhaW5lcnMgPSBuZXdDb250YWluZXJzO1xuICAgIHRoaXMubmVzdGVkQ29udGFpbmVycyA9IG5ld05lc3RlZENvbnRhaW5lcnM7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIGEgY2hpbGQgb2YgYW55IG9mIHRoZSBjb250YWluZXJzLlxuICovXG5mdW5jdGlvbiBpc05lc3RlZChcbiAgY29udGFpbmVyOiBFdmVudENvbnRyYWN0Q29udGFpbmVyLFxuICBjb250YWluZXJzOiBFdmVudENvbnRyYWN0Q29udGFpbmVyW10sXG4pOiBib29sZWFuIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250YWluZXJzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGNvbnRhaW5zTm9kZShjb250YWluZXJzW2ldLmVsZW1lbnQsIGNvbnRhaW5lci5lbGVtZW50KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHBhcmVudCBjb250YWlucyBjaGlsZC5cbiAqIElFMTEgb25seSBzdXBwb3J0cyB0aGUgbmF0aXZlIGBOb2RlLmNvbnRhaW5zYCBmb3IgSFRNTEVsZW1lbnQuXG4gKi9cbmZ1bmN0aW9uIGNvbnRhaW5zTm9kZShwYXJlbnQ6IE5vZGUsIGNoaWxkOiBOb2RlKTogYm9vbGVhbiB7XG4gIGlmIChwYXJlbnQgPT09IGNoaWxkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHdoaWxlIChwYXJlbnQgIT09IGNoaWxkICYmIGNoaWxkLnBhcmVudE5vZGUpIHtcbiAgICBjaGlsZCA9IGNoaWxkLnBhcmVudE5vZGU7XG4gIH1cbiAgcmV0dXJuIHBhcmVudCA9PT0gY2hpbGQ7XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  import { ActionResolver } from './action_resolver';
9
9
  import { Dispatcher } from './dispatcher';
@@ -136,4 +136,4 @@ export function registerDispatcher(eventContract, dispatcher) {
136
136
  dispatcher.dispatch(eventInfo);
137
137
  }, Restriction.I_AM_THE_JSACTION_FRAMEWORK);
138
138
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfZGlzcGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU8xQyx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTNFLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLEdBQUc7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQ0FBcUMsR0FDekMsc0ZBQXNGO0lBQ3RGLHlGQUF5RjtJQUN6RiwyQ0FBMkMsQ0FBQztBQUM5QyxNQUFNLDZCQUE2QixHQUFHLGdEQUFnRCxDQUFDO0FBQ3ZGLE1BQU0sbUNBQW1DLEdBQ3ZDLDZDQUE2QztJQUM3Qyx3RkFBd0Y7SUFDeEYsd0VBQXdFLENBQUM7QUFDM0UsTUFBTSwyQkFBMkIsR0FBRyw4Q0FBOEMsQ0FBQztBQVFuRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNtQixnQkFBNEQsRUFDNUQsa0JBQWtCLElBQUk7UUFEdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QztRQUM1RCxvQkFBZSxHQUFmLGVBQWUsQ0FBTztRQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUMsZUFBZSxFQUFD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ckMsVUFBMkI7SUFFM0IsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtRQUMxQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsRUFBRSxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QWN0aW9uUmVzb2x2ZXJ9IGZyb20gJy4vYWN0aW9uX3Jlc29sdmVyJztcbmltcG9ydCB7RGlzcGF0Y2hlcn0gZnJvbSAnLi9kaXNwYXRjaGVyJztcbmltcG9ydCB7RXZlbnRJbmZvLCBFdmVudEluZm9XcmFwcGVyfSBmcm9tICcuL2V2ZW50X2luZm8nO1xuaW1wb3J0IHtpc0NhcHR1cmVFdmVudFR5cGV9IGZyb20gJy4vZXZlbnRfdHlwZSc7XG5pbXBvcnQge1VucmVuYW1lZEV2ZW50Q29udHJhY3R9IGZyb20gJy4vZXZlbnRjb250cmFjdCc7XG5pbXBvcnQge1Jlc3RyaWN0aW9ufSBmcm9tICcuL3Jlc3RyaWN0aW9uJztcblxuLyoqXG4gKiBBIHJlcGxheWVyIGlzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgcXVldWVkIGV2ZW50cywgZnJvbSB0aGUgYEV2ZW50Q29udHJhY3RgLlxuICovXG5leHBvcnQgdHlwZSBSZXBsYXllciA9IChldmVudEluZm9XcmFwcGVyczogRXZlbnRbXSkgPT4gdm9pZDtcblxuLyoqIEFuIGludGVybmFsIHN5bWJvbCB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgcHJvcGFnYXRpb24gc2hvdWxkIGJlIHN0b3BwZWQgb3Igbm90LiAqL1xuZXhwb3J0IGNvbnN0IFBST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MID0gU3ltYm9sLmZvcigncHJvcGFnYXRpb25TdG9wcGVkJyk7XG5cbi8qKiBFeHRyYSBldmVudCBwaGFzZXMgYmV5b25kIHdoYXQgdGhlIGJyb3dzZXIgcHJvdmlkZXMuICovXG5leHBvcnQgY29uc3QgRXZlbnRQaGFzZSA9IHtcbiAgUkVQTEFZOiAxMDEsXG59O1xuXG5jb25zdCBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRV9ERVRBSUxTID1cbiAgJyBCZWNhdXNlIGV2ZW50IHJlcGxheSBvY2N1cnMgYWZ0ZXIgYnJvd3NlciBkaXNwYXRjaCwgYHByZXZlbnREZWZhdWx0YCB3b3VsZCBoYXZlIG5vICcgK1xuICAnZWZmZWN0LiBZb3UgY2FuIGNoZWNrIHdoZXRoZXIgYW4gZXZlbnQgaXMgYmVpbmcgcmVwbGF5ZWQgYnkgYWNjZXNzaW5nIHRoZSBldmVudCBwaGFzZTogJyArXG4gICdgZXZlbnQuZXZlbnRQaGFzZSA9PT0gRXZlbnRQaGFzZS5SRVBMQVlgLic7XG5jb25zdCBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRSA9IGBcXGBwcmV2ZW50RGVmYXVsdFxcYCBjYWxsZWQgZHVyaW5nIGV2ZW50IHJlcGxheS5gO1xuY29uc3QgQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFX0RFVEFJTFMgPVxuICAnIEJlY2F1c2UgZXZlbnQgcmVwbGF5IG9jY3VycyBhZnRlciBicm93c2VyICcgK1xuICAnZGlzcGF0Y2gsIGBjb21wb3NlZFBhdGgoKWAgd2lsbCBiZSBlbXB0eS4gSXRlcmF0ZSBwYXJlbnQgbm9kZXMgZnJvbSBgZXZlbnQudGFyZ2V0YCBvciAnICtcbiAgJ2BldmVudC5jdXJyZW50VGFyZ2V0YCBpZiB5b3UgbmVlZCB0byBjaGVjayBlbGVtZW50cyBpbiB0aGUgZXZlbnQgcGF0aC4nO1xuY29uc3QgQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFID0gYFxcYGNvbXBvc2VkUGF0aFxcYCBjYWxsZWQgZHVyaW5nIGV2ZW50IHJlcGxheS5gO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBFdmVudCB7XG4gICAgW1BST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MXT86IGJvb2xlYW47XG4gIH1cbn1cblxuLyoqXG4gKiBBIGRpc3BhdGNoZXIgdGhhdCB1c2VzIGJyb3dzZXItYmFzZWQgYEV2ZW50YCBzZW1hbnRpY3MsIGZvciBleGFtcGxlIGJ1YmJsaW5nLCBgc3RvcFByb3BhZ2F0aW9uYCxcbiAqIGBjdXJyZW50VGFyZ2V0YCwgZXRjLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnREaXNwYXRjaGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25SZXNvbHZlcjogQWN0aW9uUmVzb2x2ZXI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlzcGF0Y2hEZWxlZ2F0ZTogKGV2ZW50OiBFdmVudCwgYWN0aW9uTmFtZTogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2xpY2tNb2RTdXBwb3J0ID0gdHJ1ZSxcbiAgKSB7XG4gICAgdGhpcy5hY3Rpb25SZXNvbHZlciA9IG5ldyBBY3Rpb25SZXNvbHZlcih7Y2xpY2tNb2RTdXBwb3J0fSk7XG4gICAgdGhpcy5kaXNwYXRjaGVyID0gbmV3IERpc3BhdGNoZXIoXG4gICAgICAoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikgPT4ge1xuICAgICAgICB0aGlzLmRpc3BhdGNoVG9EZWxlZ2F0ZShldmVudEluZm9XcmFwcGVyKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvblJlc29sdmVyOiB0aGlzLmFjdGlvblJlc29sdmVyLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBlbnRyeXBvaW50IGZvciB0aGUgYEV2ZW50Q29udHJhY3RgIGRpc3BhdGNoLlxuICAgKi9cbiAgZGlzcGF0Y2goZXZlbnRJbmZvOiBFdmVudEluZm8pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BhdGNoZXIuZGlzcGF0Y2goZXZlbnRJbmZvKTtcbiAgfVxuXG4gIC8qKiBJbnRlcm5hbCBtZXRob2QgdGhhdCBkb2VzIGJhc2ljIGRpc2FwdGNoaW5nLiAqL1xuICBwcml2YXRlIGRpc3BhdGNoVG9EZWxlZ2F0ZShldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSB7XG4gICAgaWYgKGV2ZW50SW5mb1dyYXBwZXIuZ2V0SXNSZXBsYXkoKSkge1xuICAgICAgcHJlcGFyZUV2ZW50Rm9yUmVwbGF5KGV2ZW50SW5mb1dyYXBwZXIpO1xuICAgIH1cbiAgICBwcmVwYXJlRXZlbnRGb3JCdWJibGluZyhldmVudEluZm9XcmFwcGVyKTtcbiAgICB3aGlsZSAoZXZlbnRJbmZvV3JhcHBlci5nZXRBY3Rpb24oKSkge1xuICAgICAgcHJlcGFyZUV2ZW50Rm9yRGlzcGF0Y2goZXZlbnRJbmZvV3JhcHBlcik7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY2FwdHVyZSBldmVudCwgT05MWSBkaXNwYXRjaCBpZiB0aGUgYWN0aW9uIGVsZW1lbnQgaXMgdGhlIHRhcmdldC5cbiAgICAgIGlmIChcbiAgICAgICAgaXNDYXB0dXJlRXZlbnRUeXBlKGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnRUeXBlKCkpICYmXG4gICAgICAgIGV2ZW50SW5mb1dyYXBwZXIuZ2V0QWN0aW9uKCkhLmVsZW1lbnQgIT09IGV2ZW50SW5mb1dyYXBwZXIuZ2V0VGFyZ2V0RWxlbWVudCgpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwYXRjaERlbGVnYXRlKGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKSwgZXZlbnRJbmZvV3JhcHBlci5nZXRBY3Rpb24oKSEubmFtZSk7XG4gICAgICBpZiAocHJvcGFnYXRpb25TdG9wcGVkKGV2ZW50SW5mb1dyYXBwZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWN0aW9uUmVzb2x2ZXIucmVzb2x2ZVBhcmVudEFjdGlvbihldmVudEluZm9XcmFwcGVyLmV2ZW50SW5mbyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFdmVudEZvckJ1YmJsaW5nKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpIHtcbiAgY29uc3QgZXZlbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCk7XG4gIGNvbnN0IG9yaWdpbmFsU3RvcFByb3BhZ2F0aW9uID0gZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpLnN0b3BQcm9wYWdhdGlvbi5iaW5kKGV2ZW50KTtcbiAgY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50W1BST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MXSA9IHRydWU7XG4gICAgb3JpZ2luYWxTdG9wUHJvcGFnYXRpb24oKTtcbiAgfTtcbiAgcGF0Y2hFdmVudEluc3RhbmNlKGV2ZW50LCAnc3RvcFByb3BhZ2F0aW9uJywgc3RvcFByb3BhZ2F0aW9uKTtcbiAgcGF0Y2hFdmVudEluc3RhbmNlKGV2ZW50LCAnc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJywgc3RvcFByb3BhZ2F0aW9uKTtcbn1cblxuZnVuY3Rpb24gcHJvcGFnYXRpb25TdG9wcGVkKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpIHtcbiAgY29uc3QgZXZlbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCk7XG4gIHJldHVybiAhIWV2ZW50W1BST1BBR0FUSU9OX1NUT1BQRURfU1lNQk9MXTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUV2ZW50Rm9yUmVwbGF5KGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpIHtcbiAgY29uc3QgZXZlbnQgPSBldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCk7XG4gIGNvbnN0IHRhcmdldCA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0VGFyZ2V0RWxlbWVudCgpO1xuICBjb25zdCBvcmlnaW5hbFByZXZlbnREZWZhdWx0ID0gZXZlbnQucHJldmVudERlZmF1bHQuYmluZChldmVudCk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3RhcmdldCcsIHRhcmdldCk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ2V2ZW50UGhhc2UnLCBFdmVudFBoYXNlLlJFUExBWSk7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3ByZXZlbnREZWZhdWx0JywgKCkgPT4ge1xuICAgIG9yaWdpbmFsUHJldmVudERlZmF1bHQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRSArIChuZ0Rldk1vZGUgPyBQUkVWRU5UX0RFRkFVTFRfRVJST1JfTUVTU0FHRV9ERVRBSUxTIDogJycpLFxuICAgICk7XG4gIH0pO1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdjb21wb3NlZFBhdGgnLCAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgQ09NUE9TRURfUEFUSF9FUlJPUl9NRVNTQUdFICsgKG5nRGV2TW9kZSA/IENPTVBPU0VEX1BBVEhfRVJST1JfTUVTU0FHRV9ERVRBSUxTIDogJycpLFxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlRXZlbnRGb3JEaXNwYXRjaChldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSB7XG4gIGNvbnN0IGV2ZW50ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpO1xuICBjb25zdCBjdXJyZW50VGFyZ2V0ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRBY3Rpb24oKT8uZWxlbWVudDtcbiAgaWYgKGN1cnJlbnRUYXJnZXQpIHtcbiAgICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgY3VycmVudFRhcmdldCwge1xuICAgICAgLy8gYGN1cnJlbnRUYXJnZXRgIGlzIGdvaW5nIHRvIGdldCByZWFzc2lnbmVkIGV2ZXJ5IGRpc3BhdGNoLlxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUGF0Y2ggYEV2ZW50YCBpbnN0YW5jZSBkdXJpbmcgbm9uLXN0YW5kYXJkIGBFdmVudGAgZGlzcGF0Y2guIFRoaXMgcGF0Y2hlcyBqdXN0IHRoZSBgRXZlbnRgXG4gKiBpbnN0YW5jZSB0aGF0IHRoZSBicm93c2VyIGNyZWF0ZWQsIGl0IGRvZXMgbm90IHBhdGNoIGdsb2JhbCBwcm9wZXJ0aWVzIG9yIG1ldGhvZHMuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBkaXNwYXRjaGluZyBhbiBgRXZlbnRgIG91dHNpZGUgb2YgYnJvd3NlciBkaXNwYXRjaCByZXN1bHRzIGluXG4gKiBpbmNvcnJlY3QgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IG5lZWQgdG8gYmUgcG9seWZpbGxlZCBvciBkbyBub3Qgd29yay5cbiAqXG4gKiBKU0FjdGlvbiBkaXNwYXRjaCBhZGRzIHR3byBleHRyYSBcInBoYXNlc1wiIHRvIGV2ZW50IGRpc3BhdGNoOlxuICogMS4gRXZlbnQgZGVsZWdhdGlvbiAtIHRoZSBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkIGJ5IGEgZGVsZWdhdGluZyBldmVudCBoYW5kbGVyIG9uIGEgY29udGFpbmVyXG4gKiAgICAodHlwaWNhbGx5IGB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50YCksIHRvIGEgZGVsZWdhdGVkIGV2ZW50IGhhbmRsZXIgb24gc29tZSBjaGlsZFxuICogICAgZWxlbWVudC4gQ2VydGFpbiBgRXZlbnRgIHByb3BlcnRpZXMgd2lsbCBiZSB1bmludHVpdGl2ZSwgc3VjaCBhcyBgY3VycmVudFRhcmdldGAsIHdoaWNoIHdvdWxkXG4gKiAgICBiZSB0aGUgY29udGFpbmVyIHJhdGhlciB0aGFuIHRoZSBjaGlsZCBlbGVtZW50LiBCdWJibGluZyB3b3VsZCBhbHNvIG5vdCB3b3JrLiBJbiBvcmRlciB0b1xuICogICAgZW11bGF0ZSB0aGUgYnJvd3NlciwgdGhlc2UgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBvbiB0aGUgYEV2ZW50YCBhcmUgcGF0Y2hlZC5cbiAqIDIuIEV2ZW50IHJlcGxheSAtIHRoZSBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkIGJ5IHRoZSBmcmFtZXdvcmsgb25jZSB0aGUgaGFuZGxlcnMgaGF2ZSBiZWVuXG4gKiAgICBsb2FkZWQgKGR1cmluZyBoeWRyYXRpb24sIG9yIGxhdGUtbG9hZGVkKS4gQ2VydGFpbiBgRXZlbnRgIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0IGJ5IHRoZVxuICogICAgYnJvd3NlciBiZWNhdXNlIHRoZSBgRXZlbnRgIGlzIG5vIGxvbmdlciBhY3RpdmVseSBiZWluZyBkaXNwYXRjaGVkLCBzdWNoIGFzIGB0YXJnZXRgLiBPdGhlclxuICogICAgbWV0aG9kcyBoYXZlIG5vIGVmZmVjdCBiZWNhdXNlIHRoZSBgRXZlbnRgIGhhcyBhbHJlYWR5IGJlZW4gZGlzcGF0Y2hlZCwgc3VjaCBhc1xuICogICAgYHByZXZlbnREZWZhdWx0YC4gQnViYmxpbmcgd291bGQgYWxzbyBub3Qgd29yay4gVGhlc2UgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBhcmUgcGF0Y2hlZCxcbiAqICAgIGVpdGhlciB0byBmaWxsIGluIGluZm9ybWF0aW9uIHRoYXQgdGhlIGJyb3dzZXIgbWF5IGhhdmUgcmVtb3ZlZCwgb3IgdG8gdGhyb3cgZXJyb3JzIGluIG1ldGhvZHNcbiAqICAgIHRoYXQgbm8gbG9uZ2VyIGJlaGF2ZSBhcyBleHBlY3RlZC5cbiAqL1xuZnVuY3Rpb24gcGF0Y2hFdmVudEluc3RhbmNlPFQ+KFxuICBldmVudDogRXZlbnQsXG4gIHByb3BlcnR5OiBzdHJpbmcsXG4gIHZhbHVlOiBULFxuICB7Y29uZmlndXJhYmxlID0gZmFsc2V9OiB7Y29uZmlndXJhYmxlPzogYm9vbGVhbn0gPSB7fSxcbikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsIHByb3BlcnR5LCB7dmFsdWUsIGNvbmZpZ3VyYWJsZX0pO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBkZWZlcnJlZCBmdW5jdGlvbmFsaXR5IGZvciBhbiBFdmVudENvbnRyYWN0IGFuZCBhIEpzYWN0aW9uXG4gKiBEaXNwYXRjaGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEaXNwYXRjaGVyKFxuICBldmVudENvbnRyYWN0OiBVbnJlbmFtZWRFdmVudENvbnRyYWN0LFxuICBkaXNwYXRjaGVyOiBFdmVudERpc3BhdGNoZXIsXG4pIHtcbiAgZXZlbnRDb250cmFjdC5lY3JkKChldmVudEluZm86IEV2ZW50SW5mbykgPT4ge1xuICAgIGRpc3BhdGNoZXIuZGlzcGF0Y2goZXZlbnRJbmZvKTtcbiAgfSwgUmVzdHJpY3Rpb24uSV9BTV9USEVfSlNBQ1RJT05fRlJBTUVXT1JLKTtcbn1cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfZGlzcGF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFaEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQU8xQyx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTNFLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFLEdBQUc7Q0FDWixDQUFDO0FBRUYsTUFBTSxxQ0FBcUMsR0FDekMsc0ZBQXNGO0lBQ3RGLHlGQUF5RjtJQUN6RiwyQ0FBMkMsQ0FBQztBQUM5QyxNQUFNLDZCQUE2QixHQUFHLGdEQUFnRCxDQUFDO0FBQ3ZGLE1BQU0sbUNBQW1DLEdBQ3ZDLDZDQUE2QztJQUM3Qyx3RkFBd0Y7SUFDeEYsd0VBQXdFLENBQUM7QUFDM0UsTUFBTSwyQkFBMkIsR0FBRyw4Q0FBOEMsQ0FBQztBQVFuRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNtQixnQkFBNEQsRUFDNUQsa0JBQWtCLElBQUk7UUFEdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE0QztRQUM1RCxvQkFBZSxHQUFmLGVBQWUsQ0FBTztRQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUM5QixDQUFDLGdCQUFrQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsQ0FBQyxFQUNEO1lBQ0UsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxTQUFvQjtRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbURBQW1EO0lBQzNDLGtCQUFrQixDQUFDLGdCQUFrQztRQUMzRCxJQUFJLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDbkMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDcEMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQyxpRkFBaUY7WUFDakYsSUFDRSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbkQsZ0JBQWdCLENBQUMsU0FBUyxFQUFHLENBQUMsT0FBTyxLQUFLLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLEVBQzdFLENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxFQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkYsSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxnQkFBa0M7SUFDakUsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUMsTUFBTSx1QkFBdUIsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUMzQixLQUFLLENBQUMsMEJBQTBCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekMsdUJBQXVCLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUM7SUFDRixrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUQsa0JBQWtCLENBQUMsS0FBSyxFQUFFLDBCQUEwQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLGdCQUFrQztJQUM1RCxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMxQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxnQkFBa0M7SUFDL0QsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNuRCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLGtCQUFrQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0Qsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUMvQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkJBQTZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDekYsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNyRixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxnQkFBa0M7SUFDakUsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQzVELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsa0JBQWtCLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUU7WUFDeEQsNkRBQTZEO1lBQzdELFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FDekIsS0FBWSxFQUNaLFFBQWdCLEVBQ2hCLEtBQVEsRUFDUixFQUFDLFlBQVksR0FBRyxLQUFLLEtBQThCLEVBQUU7SUFFckQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUMsS0FBSyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsYUFBcUMsRUFDckMsVUFBMkI7SUFFM0IsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQW9CLEVBQUUsRUFBRTtRQUMxQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsRUFBRSxXQUFXLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0FjdGlvblJlc29sdmVyfSBmcm9tICcuL2FjdGlvbl9yZXNvbHZlcic7XG5pbXBvcnQge0Rpc3BhdGNoZXJ9IGZyb20gJy4vZGlzcGF0Y2hlcic7XG5pbXBvcnQge0V2ZW50SW5mbywgRXZlbnRJbmZvV3JhcHBlcn0gZnJvbSAnLi9ldmVudF9pbmZvJztcbmltcG9ydCB7aXNDYXB0dXJlRXZlbnRUeXBlfSBmcm9tICcuL2V2ZW50X3R5cGUnO1xuaW1wb3J0IHtVbnJlbmFtZWRFdmVudENvbnRyYWN0fSBmcm9tICcuL2V2ZW50Y29udHJhY3QnO1xuaW1wb3J0IHtSZXN0cmljdGlvbn0gZnJvbSAnLi9yZXN0cmljdGlvbic7XG5cbi8qKlxuICogQSByZXBsYXllciBpcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIHF1ZXVlZCBldmVudHMsIGZyb20gdGhlIGBFdmVudENvbnRyYWN0YC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVwbGF5ZXIgPSAoZXZlbnRJbmZvV3JhcHBlcnM6IEV2ZW50W10pID0+IHZvaWQ7XG5cbi8qKiBBbiBpbnRlcm5hbCBzeW1ib2wgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHByb3BhZ2F0aW9uIHNob3VsZCBiZSBzdG9wcGVkIG9yIG5vdC4gKi9cbmV4cG9ydCBjb25zdCBQUk9QQUdBVElPTl9TVE9QUEVEX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ3Byb3BhZ2F0aW9uU3RvcHBlZCcpO1xuXG4vKiogRXh0cmEgZXZlbnQgcGhhc2VzIGJleW9uZCB3aGF0IHRoZSBicm93c2VyIHByb3ZpZGVzLiAqL1xuZXhwb3J0IGNvbnN0IEV2ZW50UGhhc2UgPSB7XG4gIFJFUExBWTogMTAxLFxufTtcblxuY29uc3QgUFJFVkVOVF9ERUZBVUxUX0VSUk9SX01FU1NBR0VfREVUQUlMUyA9XG4gICcgQmVjYXVzZSBldmVudCByZXBsYXkgb2NjdXJzIGFmdGVyIGJyb3dzZXIgZGlzcGF0Y2gsIGBwcmV2ZW50RGVmYXVsdGAgd291bGQgaGF2ZSBubyAnICtcbiAgJ2VmZmVjdC4gWW91IGNhbiBjaGVjayB3aGV0aGVyIGFuIGV2ZW50IGlzIGJlaW5nIHJlcGxheWVkIGJ5IGFjY2Vzc2luZyB0aGUgZXZlbnQgcGhhc2U6ICcgK1xuICAnYGV2ZW50LmV2ZW50UGhhc2UgPT09IEV2ZW50UGhhc2UuUkVQTEFZYC4nO1xuY29uc3QgUFJFVkVOVF9ERUZBVUxUX0VSUk9SX01FU1NBR0UgPSBgXFxgcHJldmVudERlZmF1bHRcXGAgY2FsbGVkIGR1cmluZyBldmVudCByZXBsYXkuYDtcbmNvbnN0IENPTVBPU0VEX1BBVEhfRVJST1JfTUVTU0FHRV9ERVRBSUxTID1cbiAgJyBCZWNhdXNlIGV2ZW50IHJlcGxheSBvY2N1cnMgYWZ0ZXIgYnJvd3NlciAnICtcbiAgJ2Rpc3BhdGNoLCBgY29tcG9zZWRQYXRoKClgIHdpbGwgYmUgZW1wdHkuIEl0ZXJhdGUgcGFyZW50IG5vZGVzIGZyb20gYGV2ZW50LnRhcmdldGAgb3IgJyArXG4gICdgZXZlbnQuY3VycmVudFRhcmdldGAgaWYgeW91IG5lZWQgdG8gY2hlY2sgZWxlbWVudHMgaW4gdGhlIGV2ZW50IHBhdGguJztcbmNvbnN0IENPTVBPU0VEX1BBVEhfRVJST1JfTUVTU0FHRSA9IGBcXGBjb21wb3NlZFBhdGhcXGAgY2FsbGVkIGR1cmluZyBldmVudCByZXBsYXkuYDtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgRXZlbnQge1xuICAgIFtQUk9QQUdBVElPTl9TVE9QUEVEX1NZTUJPTF0/OiBib29sZWFuO1xuICB9XG59XG5cbi8qKlxuICogQSBkaXNwYXRjaGVyIHRoYXQgdXNlcyBicm93c2VyLWJhc2VkIGBFdmVudGAgc2VtYW50aWNzLCBmb3IgZXhhbXBsZSBidWJibGluZywgYHN0b3BQcm9wYWdhdGlvbmAsXG4gKiBgY3VycmVudFRhcmdldGAsIGV0Yy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50RGlzcGF0Y2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uUmVzb2x2ZXI6IEFjdGlvblJlc29sdmVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpc3BhdGNoRGVsZWdhdGU6IChldmVudDogRXZlbnQsIGFjdGlvbk5hbWU6IHN0cmluZykgPT4gdm9pZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNsaWNrTW9kU3VwcG9ydCA9IHRydWUsXG4gICkge1xuICAgIHRoaXMuYWN0aW9uUmVzb2x2ZXIgPSBuZXcgQWN0aW9uUmVzb2x2ZXIoe2NsaWNrTW9kU3VwcG9ydH0pO1xuICAgIHRoaXMuZGlzcGF0Y2hlciA9IG5ldyBEaXNwYXRjaGVyKFxuICAgICAgKGV2ZW50SW5mb1dyYXBwZXI6IEV2ZW50SW5mb1dyYXBwZXIpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaFRvRGVsZWdhdGUoZXZlbnRJbmZvV3JhcHBlcik7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBhY3Rpb25SZXNvbHZlcjogdGhpcy5hY3Rpb25SZXNvbHZlcixcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZW50cnlwb2ludCBmb3IgdGhlIGBFdmVudENvbnRyYWN0YCBkaXNwYXRjaC5cbiAgICovXG4gIGRpc3BhdGNoKGV2ZW50SW5mbzogRXZlbnRJbmZvKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaGVyLmRpc3BhdGNoKGV2ZW50SW5mbyk7XG4gIH1cblxuICAvKiogSW50ZXJuYWwgbWV0aG9kIHRoYXQgZG9lcyBiYXNpYyBkaXNhcHRjaGluZy4gKi9cbiAgcHJpdmF0ZSBkaXNwYXRjaFRvRGVsZWdhdGUoZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICAgIGlmIChldmVudEluZm9XcmFwcGVyLmdldElzUmVwbGF5KCkpIHtcbiAgICAgIHByZXBhcmVFdmVudEZvclJlcGxheShldmVudEluZm9XcmFwcGVyKTtcbiAgICB9XG4gICAgcHJlcGFyZUV2ZW50Rm9yQnViYmxpbmcoZXZlbnRJbmZvV3JhcHBlcik7XG4gICAgd2hpbGUgKGV2ZW50SW5mb1dyYXBwZXIuZ2V0QWN0aW9uKCkpIHtcbiAgICAgIHByZXBhcmVFdmVudEZvckRpc3BhdGNoKGV2ZW50SW5mb1dyYXBwZXIpO1xuICAgICAgLy8gSWYgdGhpcyBpcyBhIGNhcHR1cmUgZXZlbnQsIE9OTFkgZGlzcGF0Y2ggaWYgdGhlIGFjdGlvbiBlbGVtZW50IGlzIHRoZSB0YXJnZXQuXG4gICAgICBpZiAoXG4gICAgICAgIGlzQ2FwdHVyZUV2ZW50VHlwZShldmVudEluZm9XcmFwcGVyLmdldEV2ZW50VHlwZSgpKSAmJlxuICAgICAgICBldmVudEluZm9XcmFwcGVyLmdldEFjdGlvbigpIS5lbGVtZW50ICE9PSBldmVudEluZm9XcmFwcGVyLmdldFRhcmdldEVsZW1lbnQoKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGF0Y2hEZWxlZ2F0ZShldmVudEluZm9XcmFwcGVyLmdldEV2ZW50KCksIGV2ZW50SW5mb1dyYXBwZXIuZ2V0QWN0aW9uKCkhLm5hbWUpO1xuICAgICAgaWYgKHByb3BhZ2F0aW9uU3RvcHBlZChldmVudEluZm9XcmFwcGVyKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFjdGlvblJlc29sdmVyLnJlc29sdmVQYXJlbnRBY3Rpb24oZXZlbnRJbmZvV3JhcHBlci5ldmVudEluZm8pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlRXZlbnRGb3JCdWJibGluZyhldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSB7XG4gIGNvbnN0IGV2ZW50ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpO1xuICBjb25zdCBvcmlnaW5hbFN0b3BQcm9wYWdhdGlvbiA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKS5zdG9wUHJvcGFnYXRpb24uYmluZChldmVudCk7XG4gIGNvbnN0IHN0b3BQcm9wYWdhdGlvbiA9ICgpID0+IHtcbiAgICBldmVudFtQUk9QQUdBVElPTl9TVE9QUEVEX1NZTUJPTF0gPSB0cnVlO1xuICAgIG9yaWdpbmFsU3RvcFByb3BhZ2F0aW9uKCk7XG4gIH07XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3N0b3BQcm9wYWdhdGlvbicsIHN0b3BQcm9wYWdhdGlvbik7XG4gIHBhdGNoRXZlbnRJbnN0YW5jZShldmVudCwgJ3N0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbicsIHN0b3BQcm9wYWdhdGlvbik7XG59XG5cbmZ1bmN0aW9uIHByb3BhZ2F0aW9uU3RvcHBlZChldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSB7XG4gIGNvbnN0IGV2ZW50ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpO1xuICByZXR1cm4gISFldmVudFtQUk9QQUdBVElPTl9TVE9QUEVEX1NZTUJPTF07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVFdmVudEZvclJlcGxheShldmVudEluZm9XcmFwcGVyOiBFdmVudEluZm9XcmFwcGVyKSB7XG4gIGNvbnN0IGV2ZW50ID0gZXZlbnRJbmZvV3JhcHBlci5nZXRFdmVudCgpO1xuICBjb25zdCB0YXJnZXQgPSBldmVudEluZm9XcmFwcGVyLmdldFRhcmdldEVsZW1lbnQoKTtcbiAgY29uc3Qgb3JpZ2luYWxQcmV2ZW50RGVmYXVsdCA9IGV2ZW50LnByZXZlbnREZWZhdWx0LmJpbmQoZXZlbnQpO1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICd0YXJnZXQnLCB0YXJnZXQpO1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdldmVudFBoYXNlJywgRXZlbnRQaGFzZS5SRVBMQVkpO1xuICBwYXRjaEV2ZW50SW5zdGFuY2UoZXZlbnQsICdwcmV2ZW50RGVmYXVsdCcsICgpID0+IHtcbiAgICBvcmlnaW5hbFByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgUFJFVkVOVF9ERUZBVUxUX0VSUk9SX01FU1NBR0UgKyAobmdEZXZNb2RlID8gUFJFVkVOVF9ERUZBVUxUX0VSUk9SX01FU1NBR0VfREVUQUlMUyA6ICcnKSxcbiAgICApO1xuICB9KTtcbiAgcGF0Y2hFdmVudEluc3RhbmNlKGV2ZW50LCAnY29tcG9zZWRQYXRoJywgKCkgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIENPTVBPU0VEX1BBVEhfRVJST1JfTUVTU0FHRSArIChuZ0Rldk1vZGUgPyBDT01QT1NFRF9QQVRIX0VSUk9SX01FU1NBR0VfREVUQUlMUyA6ICcnKSxcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJlcGFyZUV2ZW50Rm9yRGlzcGF0Y2goZXZlbnRJbmZvV3JhcHBlcjogRXZlbnRJbmZvV3JhcHBlcikge1xuICBjb25zdCBldmVudCA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0RXZlbnQoKTtcbiAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50SW5mb1dyYXBwZXIuZ2V0QWN0aW9uKCk/LmVsZW1lbnQ7XG4gIGlmIChjdXJyZW50VGFyZ2V0KSB7XG4gICAgcGF0Y2hFdmVudEluc3RhbmNlKGV2ZW50LCAnY3VycmVudFRhcmdldCcsIGN1cnJlbnRUYXJnZXQsIHtcbiAgICAgIC8vIGBjdXJyZW50VGFyZ2V0YCBpcyBnb2luZyB0byBnZXQgcmVhc3NpZ25lZCBldmVyeSBkaXNwYXRjaC5cbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhdGNoIGBFdmVudGAgaW5zdGFuY2UgZHVyaW5nIG5vbi1zdGFuZGFyZCBgRXZlbnRgIGRpc3BhdGNoLiBUaGlzIHBhdGNoZXMganVzdCB0aGUgYEV2ZW50YFxuICogaW5zdGFuY2UgdGhhdCB0aGUgYnJvd3NlciBjcmVhdGVkLCBpdCBkb2VzIG5vdCBwYXRjaCBnbG9iYWwgcHJvcGVydGllcyBvciBtZXRob2RzLlxuICpcbiAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgZGlzcGF0Y2hpbmcgYW4gYEV2ZW50YCBvdXRzaWRlIG9mIGJyb3dzZXIgZGlzcGF0Y2ggcmVzdWx0cyBpblxuICogaW5jb3JyZWN0IHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgdGhhdCBuZWVkIHRvIGJlIHBvbHlmaWxsZWQgb3IgZG8gbm90IHdvcmsuXG4gKlxuICogSlNBY3Rpb24gZGlzcGF0Y2ggYWRkcyB0d28gZXh0cmEgXCJwaGFzZXNcIiB0byBldmVudCBkaXNwYXRjaDpcbiAqIDEuIEV2ZW50IGRlbGVnYXRpb24gLSB0aGUgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBieSBhIGRlbGVnYXRpbmcgZXZlbnQgaGFuZGxlciBvbiBhIGNvbnRhaW5lclxuICogICAgKHR5cGljYWxseSBgd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudGApLCB0byBhIGRlbGVnYXRlZCBldmVudCBoYW5kbGVyIG9uIHNvbWUgY2hpbGRcbiAqICAgIGVsZW1lbnQuIENlcnRhaW4gYEV2ZW50YCBwcm9wZXJ0aWVzIHdpbGwgYmUgdW5pbnR1aXRpdmUsIHN1Y2ggYXMgYGN1cnJlbnRUYXJnZXRgLCB3aGljaCB3b3VsZFxuICogICAgYmUgdGhlIGNvbnRhaW5lciByYXRoZXIgdGhhbiB0aGUgY2hpbGQgZWxlbWVudC4gQnViYmxpbmcgd291bGQgYWxzbyBub3Qgd29yay4gSW4gb3JkZXIgdG9cbiAqICAgIGVtdWxhdGUgdGhlIGJyb3dzZXIsIHRoZXNlIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb24gdGhlIGBFdmVudGAgYXJlIHBhdGNoZWQuXG4gKiAyLiBFdmVudCByZXBsYXkgLSB0aGUgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBieSB0aGUgZnJhbWV3b3JrIG9uY2UgdGhlIGhhbmRsZXJzIGhhdmUgYmVlblxuICogICAgbG9hZGVkIChkdXJpbmcgaHlkcmF0aW9uLCBvciBsYXRlLWxvYWRlZCkuIENlcnRhaW4gYEV2ZW50YCBwcm9wZXJ0aWVzIGNhbiBiZSB1bnNldCBieSB0aGVcbiAqICAgIGJyb3dzZXIgYmVjYXVzZSB0aGUgYEV2ZW50YCBpcyBubyBsb25nZXIgYWN0aXZlbHkgYmVpbmcgZGlzcGF0Y2hlZCwgc3VjaCBhcyBgdGFyZ2V0YC4gT3RoZXJcbiAqICAgIG1ldGhvZHMgaGF2ZSBubyBlZmZlY3QgYmVjYXVzZSB0aGUgYEV2ZW50YCBoYXMgYWxyZWFkeSBiZWVuIGRpc3BhdGNoZWQsIHN1Y2ggYXNcbiAqICAgIGBwcmV2ZW50RGVmYXVsdGAuIEJ1YmJsaW5nIHdvdWxkIGFsc28gbm90IHdvcmsuIFRoZXNlIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXJlIHBhdGNoZWQsXG4gKiAgICBlaXRoZXIgdG8gZmlsbCBpbiBpbmZvcm1hdGlvbiB0aGF0IHRoZSBicm93c2VyIG1heSBoYXZlIHJlbW92ZWQsIG9yIHRvIHRocm93IGVycm9ycyBpbiBtZXRob2RzXG4gKiAgICB0aGF0IG5vIGxvbmdlciBiZWhhdmUgYXMgZXhwZWN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHBhdGNoRXZlbnRJbnN0YW5jZTxUPihcbiAgZXZlbnQ6IEV2ZW50LFxuICBwcm9wZXJ0eTogc3RyaW5nLFxuICB2YWx1ZTogVCxcbiAge2NvbmZpZ3VyYWJsZSA9IGZhbHNlfToge2NvbmZpZ3VyYWJsZT86IGJvb2xlYW59ID0ge30sXG4pIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV2ZW50LCBwcm9wZXJ0eSwge3ZhbHVlLCBjb25maWd1cmFibGV9KTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgZGVmZXJyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYW4gRXZlbnRDb250cmFjdCBhbmQgYSBKc2FjdGlvblxuICogRGlzcGF0Y2hlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGlzcGF0Y2hlcihcbiAgZXZlbnRDb250cmFjdDogVW5yZW5hbWVkRXZlbnRDb250cmFjdCxcbiAgZGlzcGF0Y2hlcjogRXZlbnREaXNwYXRjaGVyLFxuKSB7XG4gIGV2ZW50Q29udHJhY3QuZWNyZCgoZXZlbnRJbmZvOiBFdmVudEluZm8pID0+IHtcbiAgICBkaXNwYXRjaGVyLmRpc3BhdGNoKGV2ZW50SW5mbyk7XG4gIH0sIFJlc3RyaWN0aW9uLklfQU1fVEhFX0pTQUNUSU9OX0ZSQU1FV09SSyk7XG59XG4iXX0=
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKlxuICogSW5mb3JtYXRpb24gYWJvdXQgYSByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXIsIHdoaWNoIGNhbiBiZSB1c2VkIHRvXG4gKiBkZXJlZ2lzdGVyIHRoZSBldmVudCBoYW5kbGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50SGFuZGxlckluZm8ge1xuICBldmVudFR5cGU6IHN0cmluZztcblxuICBoYW5kbGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuXG4gIGNhcHR1cmU6IGJvb2xlYW47XG59XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbi8qKlxuICpcbiAqIEluZm9ybWF0aW9uIGFib3V0IGEgcmVnaXN0ZXJlZCBldmVudCBoYW5kbGVyLCB3aGljaCBjYW4gYmUgdXNlZCB0b1xuICogZGVyZWdpc3RlciB0aGUgZXZlbnQgaGFuZGxlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEhhbmRsZXJJbmZvIHtcbiAgZXZlbnRUeXBlOiBzdHJpbmc7XG5cbiAgaGFuZGxlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuICBjYXB0dXJlOiBib29sZWFuO1xufVxuIl19
@@ -3,7 +3,7 @@
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  *
5
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
6
+ * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
8
  /** Added for readability when accessing stable property names. */
9
9
  export function getEventType(eventInfo) {
@@ -211,4 +211,4 @@ export class EventInfoWrapper {
211
211
  return new EventInfoWrapper(cloneEventInfo(this.eventInfo));
212
212
  }
213
213
  }
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFzREgsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBb0I7SUFDL0MsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQzdCLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO0lBQ2xFLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFFBQVEsQ0FBQyxTQUFvQjtJQUMzQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDekIsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsUUFBUSxDQUFDLFNBQW9CLEVBQUUsS0FBWTtJQUN6RCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxTQUFvQjtJQUNuRCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUM7QUFDakMsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxhQUFzQjtJQUMzRSxTQUFTLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUMxQyxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBb0I7SUFDL0MsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWtCO0lBQ25F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UyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFlO1FBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBaUI7UUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIFJlY29yZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFjdGlvbiB0aGF0IHNob3VsZCBoYW5kbGUgYSBnaXZlbiBgRXZlbnRgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkluZm8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbnR5cGUgQWN0aW9uSW5mb0ludGVybmFsID0gW25hbWU6IHN0cmluZywgZWxlbWVudDogRWxlbWVudF07XG5cbi8qKlxuICogUmVjb3JkcyBpbmZvcm1hdGlvbiBmb3IgbGF0ZXIgaGFuZGxpbmcgb2YgZXZlbnRzLiBUaGlzIHR5cGUgaXNcbiAqIHNoYXJlZCwgYW5kIGluc3RhbmNlcyBvZiBpdCBhcmUgcGFzc2VkLCBiZXR3ZWVuIHRoZSBldmVudGNvbnRyYWN0XG4gKiBhbmQgdGhlIGRpc3BhdGNoZXIganNiaW5hcnkuIFRoZXJlZm9yZSwgdGhlIGZpZWxkcyBvZiB0aGlzIHR5cGUgYXJlXG4gKiByZWZlcmVuY2VkIGJ5IHN0cmluZyBsaXRlcmFscyByYXRoZXIgdGhhbiBwcm9wZXJ0eSBsaXRlcmFsc1xuICogdGhyb3VnaG91dCB0aGUgY29kZS5cbiAqXG4gKiAndGFyZ2V0RWxlbWVudCcgaXMgdGhlIGVsZW1lbnQgdGhlIGFjdGlvbiBvY2N1cnJlZCBvbiwgJ2FjdGlvbkVsZW1lbnQnXG4gKiBpcyB0aGUgZWxlbWVudCB0aGF0IGhhcyB0aGUganNhY3Rpb24gaGFuZGxlci5cbiAqXG4gKiBBIG51bGwgJ2FjdGlvbkVsZW1lbnQnIGlkZW50aWZpZXMgYW4gRXZlbnRJbmZvIGluc3RhbmNlIHRoYXQgZGlkbid0IG1hdGNoIGFcbiAqIGpzYWN0aW9uIGF0dHJpYnV0ZS4gIFRoaXMgYWxsb3dzIHVzIHRvIGV4ZWN1dGUgZ2xvYmFsIGV2ZW50IGhhbmRsZXJzIHdpdGggdGhlXG4gKiBhcHByb3ByaWF0ZSBldmVudCB0eXBlIChpbmNsdWRpbmcgYTExeSBjbGlja3MgYW5kIGN1c3RvbSBldmVudHMpLlxuICogVGhlIGRlY2xhcmUgcG9ydGlvbiBvZiB0aGlzIGludGVyZmFjZSBjcmVhdGVzIGEgc2V0IG9mIGV4dGVybnMgdGhhdCBtYWtlIHN1cmVcbiAqIHJlbmFtaW5nIGRvZXNuJ3QgaGFwcGVuIGZvciBFdmVudEluZm8uIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIEV2ZW50SW5mb1xuICogaXMgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBiaW5hcmllcy5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIEV2ZW50SW5mbyB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudDogRXZlbnQ7XG4gIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQ7XG4gIC8qKiBUaGUgZWxlbWVudCB0aGF0IGlzIHRoZSBjb250YWluZXIgZm9yIHRoaXMgRXZlbnQuICovXG4gIGVpYzogRWxlbWVudDtcbiAgdGltZVN0YW1wOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHBhcnNlZCBmcm9tIHRoZSBKU0FjdGlvbiBlbGVtZW50LlxuICAgKi9cbiAgZWlhPzogQWN0aW9uSW5mb0ludGVybmFsO1xuICAvKipcbiAgICogV2hldGhlciB0aGlzIGBFdmVudGAgaXMgYSByZXBsYXkgZXZlbnQsIG1lYW5pbmcgbm8gZGlzcGF0Y2hlciB3YXNcbiAgICogaW5zdGFsbGVkIHdoZW4gdGhpcyBgRXZlbnRgIHdhcyBvcmlnaW5hbGx5IGRpc3BhdGNoZWQuXG4gICAqL1xuICBlaXJwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBgRXZlbnRgIHJlcHJlc2VudHMgYSBga2V5ZG93bmAgZXZlbnQgdGhhdCBzaG91bGQgYmUgcHJvY2Vzc2VkXG4gICAqIGFzIGEgYGNsaWNrYC4gT25seSB1c2VkIHdoZW4gYTExeSBjbGljayBldmVudHMgaXMgb24uXG4gICAqL1xuICBlaWFjaz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIGFjdGlvbiByZXNvbHV0aW9uIGhhcyBhbHJlYWR5IHJ1biBvbiB0aGlzIGBFdmVudEluZm9gLiAqL1xuICBlaXI/OiBib29sZWFuO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudFR5cGUoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5ldmVudFR5cGU7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEV2ZW50VHlwZShldmVudEluZm86IEV2ZW50SW5mbywgZXZlbnRUeXBlOiBzdHJpbmcpIHtcbiAgZXZlbnRJbmZvLmV2ZW50VHlwZSA9IGV2ZW50VHlwZTtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnQoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5ldmVudDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RXZlbnQoZXZlbnRJbmZvOiBFdmVudEluZm8sIGV2ZW50OiBFdmVudCkge1xuICBldmVudEluZm8uZXZlbnQgPSBldmVudDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFyZ2V0RWxlbWVudChldmVudEluZm86IEV2ZW50SW5mbykge1xuICByZXR1cm4gZXZlbnRJbmZvLnRhcmdldEVsZW1lbnQ7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRhcmdldEVsZW1lbnQoZXZlbnRJbmZvOiBFdmVudEluZm8sIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgZXZlbnRJbmZvLnRhcmdldEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50O1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250YWluZXIoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5laWM7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENvbnRhaW5lcihldmVudEluZm86IEV2ZW50SW5mbywgY29udGFpbmVyOiBFbGVtZW50KSB7XG4gIGV2ZW50SW5mby5laWMgPSBjb250YWluZXI7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWVzdGFtcChldmVudEluZm86IEV2ZW50SW5mbykge1xuICByZXR1cm4gZXZlbnRJbmZvLnRpbWVTdGFtcDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VGltZXN0YW1wKGV2ZW50SW5mbzogRXZlbnRJbmZvLCB0aW1lc3RhbXA6IG51bWJlcikge1xuICBldmVudEluZm8udGltZVN0YW1wID0gdGltZXN0YW1wO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb24oZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5laWE7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEFjdGlvbihldmVudEluZm86IEV2ZW50SW5mbywgYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb25FbGVtZW50OiBFbGVtZW50KSB7XG4gIGV2ZW50SW5mby5laWEgPSBbYWN0aW9uTmFtZSwgYWN0aW9uRWxlbWVudF07XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuc2V0QWN0aW9uKGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIGV2ZW50SW5mby5laWEgPSB1bmRlZmluZWQ7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGlvbk5hbWUoYWN0aW9uSW5mbzogQWN0aW9uSW5mb0ludGVybmFsKSB7XG4gIHJldHVybiBhY3Rpb25JbmZvWzBdO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25FbGVtZW50KGFjdGlvbkluZm86IEFjdGlvbkluZm9JbnRlcm5hbCkge1xuICByZXR1cm4gYWN0aW9uSW5mb1sxXTtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXNSZXBsYXkoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5laXJwO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJc1JlcGxheShldmVudEluZm86IEV2ZW50SW5mbywgcmVwbGF5OiBib29sZWFuKSB7XG4gIGV2ZW50SW5mby5laXJwID0gcmVwbGF5O1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBMTF5Q2xpY2tLZXkoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5laWFjaztcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0QTExeUNsaWNrS2V5KGV2ZW50SW5mbzogRXZlbnRJbmZvLCBhMTF5Q2xpY2tLZXk6IGJvb2xlYW4pIHtcbiAgZXZlbnRJbmZvLmVpYWNrID0gYTExeUNsaWNrS2V5O1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvbHZlZChldmVudEluZm86IEV2ZW50SW5mbykge1xuICByZXR1cm4gZXZlbnRJbmZvLmVpcjtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVzb2x2ZWQoZXZlbnRJbmZvOiBFdmVudEluZm8sIHJlc29sdmVkOiBib29sZWFuKSB7XG4gIGV2ZW50SW5mby5laXIgPSByZXNvbHZlZDtcbn1cblxuLyoqIENsb25lcyBhbiBgRXZlbnRJbmZvYCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRXZlbnRJbmZvKGV2ZW50SW5mbzogRXZlbnRJbmZvKTogRXZlbnRJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICBldmVudFR5cGU6IGV2ZW50SW5mby5ldmVudFR5cGUsXG4gICAgZXZlbnQ6IGV2ZW50SW5mby5ldmVudCxcbiAgICB0YXJnZXRFbGVtZW50OiBldmVudEluZm8udGFyZ2V0RWxlbWVudCxcbiAgICBlaWM6IGV2ZW50SW5mby5laWMsXG4gICAgZWlhOiBldmVudEluZm8uZWlhLFxuICAgIHRpbWVTdGFtcDogZXZlbnRJbmZvLnRpbWVTdGFtcCxcbiAgICBlaXJwOiBldmVudEluZm8uZWlycCxcbiAgICBlaWFjazogZXZlbnRJbmZvLmVpYWNrLFxuICAgIGVpcjogZXZlbnRJbmZvLmVpcixcbiAgfTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBgRXZlbnRJbmZvYC5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIGZyb20gY29kZS1zaXplIHNlbnNpdGl2ZSBjb21waWxhdGlvbiB1bml0cywgYXMgdGFraW5nXG4gKiBwYXJhbWV0ZXJzIHZzLiBhbiBgT2JqZWN0YCBsaXRlcmFsIHJlZHVjZXMgY29kZSBzaXplLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXZlbnRJbmZvRnJvbVBhcmFtZXRlcnMoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudDogRXZlbnQsXG4gIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQsXG4gIGNvbnRhaW5lcjogRWxlbWVudCxcbiAgdGltZXN0YW1wOiBudW1iZXIsXG4gIGFjdGlvbj86IEFjdGlvbkluZm9JbnRlcm5hbCxcbiAgaXNSZXBsYXk/OiBib29sZWFuLFxuICBhMTF5Q2xpY2tLZXk/OiBib29sZWFuLFxuKTogRXZlbnRJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICBldmVudFR5cGUsXG4gICAgZXZlbnQsXG4gICAgdGFyZ2V0RWxlbWVudCxcbiAgICBlaWM6IGNvbnRhaW5lcixcbiAgICB0aW1lU3RhbXA6IHRpbWVzdGFtcCxcbiAgICBlaWE6IGFjdGlvbixcbiAgICBlaXJwOiBpc1JlcGxheSxcbiAgICBlaWFjazogYTExeUNsaWNrS2V5LFxuICB9O1xufVxuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGFuIGBFdmVudEluZm9gLlxuICpcbiAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gY29tcGlsYXRpb24gdW5pdHMgdGhhdCBhcmUgbGVzcyBzZW5zaXRpdmUgdG8gY29kZVxuICogc2l6ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50SW5mbyh7XG4gIGV2ZW50VHlwZSxcbiAgZXZlbnQsXG4gIHRhcmdldEVsZW1lbnQsXG4gIGNvbnRhaW5lcixcbiAgdGltZXN0YW1wLFxuICBhY3Rpb24sXG4gIGlzUmVwbGF5LFxuICBhMTF5Q2xpY2tLZXksXG59OiB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudDogRXZlbnQ7XG4gIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQ7XG4gIGNvbnRhaW5lcjogRWxlbWVudDtcbiAgdGltZXN0YW1wOiBudW1iZXI7XG4gIGFjdGlvbj86IEFjdGlvbkluZm87XG4gIGlzUmVwbGF5PzogYm9vbGVhbjtcbiAgYTExeUNsaWNrS2V5PzogYm9vbGVhbjtcbn0pOiBFdmVudEluZm8ge1xuICByZXR1cm4ge1xuICAgIGV2ZW50VHlwZSxcbiAgICBldmVudCxcbiAgICB0YXJnZXRFbGVtZW50LFxuICAgIGVpYzogY29udGFpbmVyLFxuICAgIHRpbWVTdGFtcDogdGltZXN0YW1wLFxuICAgIGVpYTogYWN0aW9uID8gW2FjdGlvbi5uYW1lLCBhY3Rpb24uZWxlbWVudF0gOiB1bmRlZmluZWQsXG4gICAgZWlycDogaXNSZXBsYXksXG4gICAgZWlhY2s6IGExMXlDbGlja0tleSxcbiAgfTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGNsYXNzIGFyb3VuZCBhbiBgRXZlbnRJbmZvYC5cbiAqXG4gKiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQgYXJlIGxlc3Mgc2Vuc2l0aXZlIHRvIGNvZGVcbiAqIHNpemUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEluZm9XcmFwcGVyIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZXZlbnRJbmZvOiBFdmVudEluZm8pIHt9XG5cbiAgZ2V0RXZlbnRUeXBlKCkge1xuICAgIHJldHVybiBnZXRFdmVudFR5cGUodGhpcy5ldmVudEluZm8pO1xuICB9XG5cbiAgc2V0RXZlbnRUeXBlKGV2ZW50VHlwZTogc3RyaW5nKSB7XG4gICAgc2V0RXZlbnRUeXBlKHRoaXMuZXZlbnRJbmZvLCBldmVudFR5cGUpO1xuICB9XG5cbiAgZ2V0RXZlbnQoKSB7XG4gICAgcmV0dXJuIGdldEV2ZW50KHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIHNldEV2ZW50KHRoaXMuZXZlbnRJbmZvLCBldmVudCk7XG4gIH1cblxuICBnZXRUYXJnZXRFbGVtZW50KCkge1xuICAgIHJldHVybiBnZXRUYXJnZXRFbGVtZW50KHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldFRhcmdldEVsZW1lbnQodGFyZ2V0RWxlbWVudDogRWxlbWVudCkge1xuICAgIHNldFRhcmdldEVsZW1lbnQodGhpcy5ldmVudEluZm8sIHRhcmdldEVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyKCkge1xuICAgIHJldHVybiBnZXRDb250YWluZXIodGhpcy5ldmVudEluZm8pO1xuICB9XG5cbiAgc2V0Q29udGFpbmVyKGNvbnRhaW5lcjogRWxlbWVudCkge1xuICAgIHNldENvbnRhaW5lcih0aGlzLmV2ZW50SW5mbywgY29udGFpbmVyKTtcbiAgfVxuICBnZXRUaW1lc3RhbXAoKSB7XG4gICAgcmV0dXJuIGdldFRpbWVzdGFtcCh0aGlzLmV2ZW50SW5mbyk7XG4gIH1cblxuICBzZXRUaW1lc3RhbXAodGltZXN0YW1wOiBudW1iZXIpIHtcbiAgICBzZXRUaW1lc3RhbXAodGhpcy5ldmVudEluZm8sIHRpbWVzdGFtcCk7XG4gIH1cblxuICBnZXRBY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aW9uID0gZ2V0QWN0aW9uKHRoaXMuZXZlbnRJbmZvKTtcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYWN0aW9uWzBdLFxuICAgICAgZWxlbWVudDogYWN0aW9uWzFdLFxuICAgIH07XG4gIH1cblxuICBzZXRBY3Rpb24oYWN0aW9uOiBBY3Rpb25JbmZvIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFhY3Rpb24pIHtcbiAgICAgIHVuc2V0QWN0aW9uKHRoaXMuZXZlbnRJbmZvKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0QWN0aW9uKHRoaXMuZXZlbnRJbmZvLCBhY3Rpb24ubmFtZSwgYWN0aW9uLmVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0SXNSZXBsYXkoKSB7XG4gICAgcmV0dXJuIGdldElzUmVwbGF5KHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldElzUmVwbGF5KHJlcGxheTogYm9vbGVhbikge1xuICAgIHNldElzUmVwbGF5KHRoaXMuZXZlbnRJbmZvLCByZXBsYXkpO1xuICB9XG5cbiAgZ2V0UmVzb2x2ZWQoKSB7XG4gICAgcmV0dXJuIGdldFJlc29sdmVkKHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldFJlc29sdmVkKHJlc29sdmVkOiBib29sZWFuKSB7XG4gICAgc2V0UmVzb2x2ZWQodGhpcy5ldmVudEluZm8sIHJlc29sdmVkKTtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgRXZlbnRJbmZvV3JhcHBlcihjbG9uZUV2ZW50SW5mbyh0aGlzLmV2ZW50SW5mbykpO1xuICB9XG59XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvcHJpbWl0aXZlcy9ldmVudC1kaXNwYXRjaC9zcmMvZXZlbnRfaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFzREgsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBb0I7SUFDL0MsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO0FBQzdCLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO0lBQ2xFLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFFBQVEsQ0FBQyxTQUFvQjtJQUMzQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDekIsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsUUFBUSxDQUFDLFNBQW9CLEVBQUUsS0FBWTtJQUN6RCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMxQixDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxTQUFvQjtJQUNuRCxPQUFPLFNBQVMsQ0FBQyxhQUFhLENBQUM7QUFDakMsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxhQUFzQjtJQUMzRSxTQUFTLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztBQUMxQyxDQUFDO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU0sVUFBVSxZQUFZLENBQUMsU0FBb0I7SUFDL0MsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWtCO0lBQ25F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UyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFlO1FBQ3pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBaUI7UUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBSZWNvcmRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhY3Rpb24gdGhhdCBzaG91bGQgaGFuZGxlIGEgZ2l2ZW4gYEV2ZW50YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25JbmZvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBlbGVtZW50OiBFbGVtZW50O1xufVxuXG50eXBlIEFjdGlvbkluZm9JbnRlcm5hbCA9IFtuYW1lOiBzdHJpbmcsIGVsZW1lbnQ6IEVsZW1lbnRdO1xuXG4vKipcbiAqIFJlY29yZHMgaW5mb3JtYXRpb24gZm9yIGxhdGVyIGhhbmRsaW5nIG9mIGV2ZW50cy4gVGhpcyB0eXBlIGlzXG4gKiBzaGFyZWQsIGFuZCBpbnN0YW5jZXMgb2YgaXQgYXJlIHBhc3NlZCwgYmV0d2VlbiB0aGUgZXZlbnRjb250cmFjdFxuICogYW5kIHRoZSBkaXNwYXRjaGVyIGpzYmluYXJ5LiBUaGVyZWZvcmUsIHRoZSBmaWVsZHMgb2YgdGhpcyB0eXBlIGFyZVxuICogcmVmZXJlbmNlZCBieSBzdHJpbmcgbGl0ZXJhbHMgcmF0aGVyIHRoYW4gcHJvcGVydHkgbGl0ZXJhbHNcbiAqIHRocm91Z2hvdXQgdGhlIGNvZGUuXG4gKlxuICogJ3RhcmdldEVsZW1lbnQnIGlzIHRoZSBlbGVtZW50IHRoZSBhY3Rpb24gb2NjdXJyZWQgb24sICdhY3Rpb25FbGVtZW50J1xuICogaXMgdGhlIGVsZW1lbnQgdGhhdCBoYXMgdGhlIGpzYWN0aW9uIGhhbmRsZXIuXG4gKlxuICogQSBudWxsICdhY3Rpb25FbGVtZW50JyBpZGVudGlmaWVzIGFuIEV2ZW50SW5mbyBpbnN0YW5jZSB0aGF0IGRpZG4ndCBtYXRjaCBhXG4gKiBqc2FjdGlvbiBhdHRyaWJ1dGUuICBUaGlzIGFsbG93cyB1cyB0byBleGVjdXRlIGdsb2JhbCBldmVudCBoYW5kbGVycyB3aXRoIHRoZVxuICogYXBwcm9wcmlhdGUgZXZlbnQgdHlwZSAoaW5jbHVkaW5nIGExMXkgY2xpY2tzIGFuZCBjdXN0b20gZXZlbnRzKS5cbiAqIFRoZSBkZWNsYXJlIHBvcnRpb24gb2YgdGhpcyBpbnRlcmZhY2UgY3JlYXRlcyBhIHNldCBvZiBleHRlcm5zIHRoYXQgbWFrZSBzdXJlXG4gKiByZW5hbWluZyBkb2Vzbid0IGhhcHBlbiBmb3IgRXZlbnRJbmZvLiBUaGlzIGlzIGltcG9ydGFudCBzaW5jZSBFdmVudEluZm9cbiAqIGlzIHNoYXJlZCBhY3Jvc3MgbXVsdGlwbGUgYmluYXJpZXMuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBFdmVudEluZm8ge1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgZXZlbnQ6IEV2ZW50O1xuICB0YXJnZXRFbGVtZW50OiBFbGVtZW50O1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCBpcyB0aGUgY29udGFpbmVyIGZvciB0aGlzIEV2ZW50LiAqL1xuICBlaWM6IEVsZW1lbnQ7XG4gIHRpbWVTdGFtcDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGFjdGlvbiBwYXJzZWQgZnJvbSB0aGUgSlNBY3Rpb24gZWxlbWVudC5cbiAgICovXG4gIGVpYT86IEFjdGlvbkluZm9JbnRlcm5hbDtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBgRXZlbnRgIGlzIGEgcmVwbGF5IGV2ZW50LCBtZWFuaW5nIG5vIGRpc3BhdGNoZXIgd2FzXG4gICAqIGluc3RhbGxlZCB3aGVuIHRoaXMgYEV2ZW50YCB3YXMgb3JpZ2luYWxseSBkaXNwYXRjaGVkLlxuICAgKi9cbiAgZWlycD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgYEV2ZW50YCByZXByZXNlbnRzIGEgYGtleWRvd25gIGV2ZW50IHRoYXQgc2hvdWxkIGJlIHByb2Nlc3NlZFxuICAgKiBhcyBhIGBjbGlja2AuIE9ubHkgdXNlZCB3aGVuIGExMXkgY2xpY2sgZXZlbnRzIGlzIG9uLlxuICAgKi9cbiAgZWlhY2s/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBhY3Rpb24gcmVzb2x1dGlvbiBoYXMgYWxyZWFkeSBydW4gb24gdGhpcyBgRXZlbnRJbmZvYC4gKi9cbiAgZWlyPzogYm9vbGVhbjtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXZlbnRUeXBlKGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZXZlbnRUeXBlO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRFdmVudFR5cGUoZXZlbnRJbmZvOiBFdmVudEluZm8sIGV2ZW50VHlwZTogc3RyaW5nKSB7XG4gIGV2ZW50SW5mby5ldmVudFR5cGUgPSBldmVudFR5cGU7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50KGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZXZlbnQ7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEV2ZW50KGV2ZW50SW5mbzogRXZlbnRJbmZvLCBldmVudDogRXZlbnQpIHtcbiAgZXZlbnRJbmZvLmV2ZW50ID0gZXZlbnQ7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhcmdldEVsZW1lbnQoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby50YXJnZXRFbGVtZW50O1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRUYXJnZXRFbGVtZW50KGV2ZW50SW5mbzogRXZlbnRJbmZvLCB0YXJnZXRFbGVtZW50OiBFbGVtZW50KSB7XG4gIGV2ZW50SW5mby50YXJnZXRFbGVtZW50ID0gdGFyZ2V0RWxlbWVudDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udGFpbmVyKGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZWljO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb250YWluZXIoZXZlbnRJbmZvOiBFdmVudEluZm8sIGNvbnRhaW5lcjogRWxlbWVudCkge1xuICBldmVudEluZm8uZWljID0gY29udGFpbmVyO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lc3RhbXAoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby50aW1lU3RhbXA7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFRpbWVzdGFtcChldmVudEluZm86IEV2ZW50SW5mbywgdGltZXN0YW1wOiBudW1iZXIpIHtcbiAgZXZlbnRJbmZvLnRpbWVTdGFtcCA9IHRpbWVzdGFtcDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uKGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZWlhO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3Rpb24oZXZlbnRJbmZvOiBFdmVudEluZm8sIGFjdGlvbk5hbWU6IHN0cmluZywgYWN0aW9uRWxlbWVudDogRWxlbWVudCkge1xuICBldmVudEluZm8uZWlhID0gW2FjdGlvbk5hbWUsIGFjdGlvbkVsZW1lbnRdO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnNldEFjdGlvbihldmVudEluZm86IEV2ZW50SW5mbykge1xuICBldmVudEluZm8uZWlhID0gdW5kZWZpbmVkO1xufVxuXG4vKiogQWRkZWQgZm9yIHJlYWRhYmlsaXR5IHdoZW4gYWNjZXNzaW5nIHN0YWJsZSBwcm9wZXJ0eSBuYW1lcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25OYW1lKGFjdGlvbkluZm86IEFjdGlvbkluZm9JbnRlcm5hbCkge1xuICByZXR1cm4gYWN0aW9uSW5mb1swXTtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uRWxlbWVudChhY3Rpb25JbmZvOiBBY3Rpb25JbmZvSW50ZXJuYWwpIHtcbiAgcmV0dXJuIGFjdGlvbkluZm9bMV07XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElzUmVwbGF5KGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZWlycDtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SXNSZXBsYXkoZXZlbnRJbmZvOiBFdmVudEluZm8sIHJlcGxheTogYm9vbGVhbikge1xuICBldmVudEluZm8uZWlycCA9IHJlcGxheTtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QTExeUNsaWNrS2V5KGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7XG4gIHJldHVybiBldmVudEluZm8uZWlhY2s7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEExMXlDbGlja0tleShldmVudEluZm86IEV2ZW50SW5mbywgYTExeUNsaWNrS2V5OiBib29sZWFuKSB7XG4gIGV2ZW50SW5mby5laWFjayA9IGExMXlDbGlja0tleTtcbn1cblxuLyoqIEFkZGVkIGZvciByZWFkYWJpbGl0eSB3aGVuIGFjY2Vzc2luZyBzdGFibGUgcHJvcGVydHkgbmFtZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x2ZWQoZXZlbnRJbmZvOiBFdmVudEluZm8pIHtcbiAgcmV0dXJuIGV2ZW50SW5mby5laXI7XG59XG5cbi8qKiBBZGRlZCBmb3IgcmVhZGFiaWxpdHkgd2hlbiBhY2Nlc3Npbmcgc3RhYmxlIHByb3BlcnR5IG5hbWVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlc29sdmVkKGV2ZW50SW5mbzogRXZlbnRJbmZvLCByZXNvbHZlZDogYm9vbGVhbikge1xuICBldmVudEluZm8uZWlyID0gcmVzb2x2ZWQ7XG59XG5cbi8qKiBDbG9uZXMgYW4gYEV2ZW50SW5mb2AgKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZUV2ZW50SW5mbyhldmVudEluZm86IEV2ZW50SW5mbyk6IEV2ZW50SW5mbyB7XG4gIHJldHVybiB7XG4gICAgZXZlbnRUeXBlOiBldmVudEluZm8uZXZlbnRUeXBlLFxuICAgIGV2ZW50OiBldmVudEluZm8uZXZlbnQsXG4gICAgdGFyZ2V0RWxlbWVudDogZXZlbnRJbmZvLnRhcmdldEVsZW1lbnQsXG4gICAgZWljOiBldmVudEluZm8uZWljLFxuICAgIGVpYTogZXZlbnRJbmZvLmVpYSxcbiAgICB0aW1lU3RhbXA6IGV2ZW50SW5mby50aW1lU3RhbXAsXG4gICAgZWlycDogZXZlbnRJbmZvLmVpcnAsXG4gICAgZWlhY2s6IGV2ZW50SW5mby5laWFjayxcbiAgICBlaXI6IGV2ZW50SW5mby5laXIsXG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYW4gYEV2ZW50SW5mb2AuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZCBmcm9tIGNvZGUtc2l6ZSBzZW5zaXRpdmUgY29tcGlsYXRpb24gdW5pdHMsIGFzIHRha2luZ1xuICogcGFyYW1ldGVycyB2cy4gYW4gYE9iamVjdGAgbGl0ZXJhbCByZWR1Y2VzIGNvZGUgc2l6ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV2ZW50SW5mb0Zyb21QYXJhbWV0ZXJzKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnQ6IEV2ZW50LFxuICB0YXJnZXRFbGVtZW50OiBFbGVtZW50LFxuICBjb250YWluZXI6IEVsZW1lbnQsXG4gIHRpbWVzdGFtcDogbnVtYmVyLFxuICBhY3Rpb24/OiBBY3Rpb25JbmZvSW50ZXJuYWwsXG4gIGlzUmVwbGF5PzogYm9vbGVhbixcbiAgYTExeUNsaWNrS2V5PzogYm9vbGVhbixcbik6IEV2ZW50SW5mbyB7XG4gIHJldHVybiB7XG4gICAgZXZlbnRUeXBlLFxuICAgIGV2ZW50LFxuICAgIHRhcmdldEVsZW1lbnQsXG4gICAgZWljOiBjb250YWluZXIsXG4gICAgdGltZVN0YW1wOiB0aW1lc3RhbXAsXG4gICAgZWlhOiBhY3Rpb24sXG4gICAgZWlycDogaXNSZXBsYXksXG4gICAgZWlhY2s6IGExMXlDbGlja0tleSxcbiAgfTtcbn1cblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBgRXZlbnRJbmZvYC5cbiAqXG4gKiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQgYXJlIGxlc3Mgc2Vuc2l0aXZlIHRvIGNvZGVcbiAqIHNpemUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdmVudEluZm8oe1xuICBldmVudFR5cGUsXG4gIGV2ZW50LFxuICB0YXJnZXRFbGVtZW50LFxuICBjb250YWluZXIsXG4gIHRpbWVzdGFtcCxcbiAgYWN0aW9uLFxuICBpc1JlcGxheSxcbiAgYTExeUNsaWNrS2V5LFxufToge1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgZXZlbnQ6IEV2ZW50O1xuICB0YXJnZXRFbGVtZW50OiBFbGVtZW50O1xuICBjb250YWluZXI6IEVsZW1lbnQ7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBhY3Rpb24/OiBBY3Rpb25JbmZvO1xuICBpc1JlcGxheT86IGJvb2xlYW47XG4gIGExMXlDbGlja0tleT86IGJvb2xlYW47XG59KTogRXZlbnRJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICBldmVudFR5cGUsXG4gICAgZXZlbnQsXG4gICAgdGFyZ2V0RWxlbWVudCxcbiAgICBlaWM6IGNvbnRhaW5lcixcbiAgICB0aW1lU3RhbXA6IHRpbWVzdGFtcCxcbiAgICBlaWE6IGFjdGlvbiA/IFthY3Rpb24ubmFtZSwgYWN0aW9uLmVsZW1lbnRdIDogdW5kZWZpbmVkLFxuICAgIGVpcnA6IGlzUmVwbGF5LFxuICAgIGVpYWNrOiBhMTF5Q2xpY2tLZXksXG4gIH07XG59XG5cbi8qKlxuICogVXRpbGl0eSBjbGFzcyBhcm91bmQgYW4gYEV2ZW50SW5mb2AuXG4gKlxuICogVGhpcyBzaG91bGQgYmUgdXNlZCBpbiBjb21waWxhdGlvbiB1bml0cyB0aGF0IGFyZSBsZXNzIHNlbnNpdGl2ZSB0byBjb2RlXG4gKiBzaXplLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRJbmZvV3JhcHBlciB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGV2ZW50SW5mbzogRXZlbnRJbmZvKSB7fVxuXG4gIGdldEV2ZW50VHlwZSgpIHtcbiAgICByZXR1cm4gZ2V0RXZlbnRUeXBlKHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldEV2ZW50VHlwZShldmVudFR5cGU6IHN0cmluZykge1xuICAgIHNldEV2ZW50VHlwZSh0aGlzLmV2ZW50SW5mbywgZXZlbnRUeXBlKTtcbiAgfVxuXG4gIGdldEV2ZW50KCkge1xuICAgIHJldHVybiBnZXRFdmVudCh0aGlzLmV2ZW50SW5mbyk7XG4gIH1cblxuICBzZXRFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBzZXRFdmVudCh0aGlzLmV2ZW50SW5mbywgZXZlbnQpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0RWxlbWVudCgpIHtcbiAgICByZXR1cm4gZ2V0VGFyZ2V0RWxlbWVudCh0aGlzLmV2ZW50SW5mbyk7XG4gIH1cblxuICBzZXRUYXJnZXRFbGVtZW50KHRhcmdldEVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBzZXRUYXJnZXRFbGVtZW50KHRoaXMuZXZlbnRJbmZvLCB0YXJnZXRFbGVtZW50KTtcbiAgfVxuXG4gIGdldENvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gZ2V0Q29udGFpbmVyKHRoaXMuZXZlbnRJbmZvKTtcbiAgfVxuXG4gIHNldENvbnRhaW5lcihjb250YWluZXI6IEVsZW1lbnQpIHtcbiAgICBzZXRDb250YWluZXIodGhpcy5ldmVudEluZm8sIGNvbnRhaW5lcik7XG4gIH1cbiAgZ2V0VGltZXN0YW1wKCkge1xuICAgIHJldHVybiBnZXRUaW1lc3RhbXAodGhpcy5ldmVudEluZm8pO1xuICB9XG5cbiAgc2V0VGltZXN0YW1wKHRpbWVzdGFtcDogbnVtYmVyKSB7XG4gICAgc2V0VGltZXN0YW1wKHRoaXMuZXZlbnRJbmZvLCB0aW1lc3RhbXApO1xuICB9XG5cbiAgZ2V0QWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGlvbiA9IGdldEFjdGlvbih0aGlzLmV2ZW50SW5mbyk7XG4gICAgaWYgKCFhY3Rpb24pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGFjdGlvblswXSxcbiAgICAgIGVsZW1lbnQ6IGFjdGlvblsxXSxcbiAgICB9O1xuICB9XG5cbiAgc2V0QWN0aW9uKGFjdGlvbjogQWN0aW9uSW5mbyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghYWN0aW9uKSB7XG4gICAgICB1bnNldEFjdGlvbih0aGlzLmV2ZW50SW5mbyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldEFjdGlvbih0aGlzLmV2ZW50SW5mbywgYWN0aW9uLm5hbWUsIGFjdGlvbi5lbGVtZW50KTtcbiAgfVxuXG4gIGdldElzUmVwbGF5KCkge1xuICAgIHJldHVybiBnZXRJc1JlcGxheSh0aGlzLmV2ZW50SW5mbyk7XG4gIH1cblxuICBzZXRJc1JlcGxheShyZXBsYXk6IGJvb2xlYW4pIHtcbiAgICBzZXRJc1JlcGxheSh0aGlzLmV2ZW50SW5mbywgcmVwbGF5KTtcbiAgfVxuXG4gIGdldFJlc29sdmVkKCkge1xuICAgIHJldHVybiBnZXRSZXNvbHZlZCh0aGlzLmV2ZW50SW5mbyk7XG4gIH1cblxuICBzZXRSZXNvbHZlZChyZXNvbHZlZDogYm9vbGVhbikge1xuICAgIHNldFJlc29sdmVkKHRoaXMuZXZlbnRJbmZvLCByZXNvbHZlZCk7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50SW5mb1dyYXBwZXIoY2xvbmVFdmVudEluZm8odGhpcy5ldmVudEluZm8pKTtcbiAgfVxufVxuIl19