@angular/core 7.0.0-rc.1 → 7.0.3

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 (337) hide show
  1. package/bundles/core-testing.umd.js +36 -33
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +3 -3
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +1856 -1463
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +155 -94
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +7 -6
  10. package/core.metadata.json +1 -1
  11. package/esm2015/core.externs.js +0 -3
  12. package/esm2015/core.js +6 -6
  13. package/esm2015/index.js +2 -2
  14. package/esm2015/public_api.js +2 -2
  15. package/esm2015/src/application_init.js +5 -1
  16. package/esm2015/src/application_module.js +2 -2
  17. package/esm2015/src/application_ref.js +11 -9
  18. package/esm2015/src/application_tokens.js +7 -7
  19. package/esm2015/src/change_detection/change_detection_util.js +3 -1
  20. package/esm2015/src/change_detection/change_detector_ref.js +2 -1
  21. package/esm2015/src/change_detection/constants.js +1 -1
  22. package/esm2015/src/change_detection/differs/default_iterable_differ.js +2 -1
  23. package/esm2015/src/change_detection/differs/iterable_differs.js +8 -6
  24. package/esm2015/src/change_detection/differs/keyvalue_differs.js +6 -5
  25. package/esm2015/src/change_detection/pipe_transform.js +2 -2
  26. package/esm2015/src/core.js +2 -2
  27. package/esm2015/src/core_render3_private_export.js +5 -4
  28. package/esm2015/src/debug/debug_node.js +6 -6
  29. package/esm2015/src/di/defs.js +5 -5
  30. package/esm2015/src/di/forward_ref.js +4 -4
  31. package/esm2015/src/di/injectable.js +5 -2
  32. package/esm2015/src/di/injection_token.js +3 -1
  33. package/esm2015/src/di/injector.js +3 -3
  34. package/esm2015/src/di/metadata.js +16 -1
  35. package/esm2015/src/di/provider.js +16 -6
  36. package/esm2015/src/di/r3_injector.js +2 -2
  37. package/esm2015/src/di/reflective_injector.js +2 -2
  38. package/esm2015/src/di/reflective_key.js +3 -1
  39. package/esm2015/src/di/reflective_provider.js +3 -3
  40. package/esm2015/src/error_handler.js +3 -1
  41. package/esm2015/src/event_emitter.js +2 -1
  42. package/esm2015/src/i18n/tokens.js +4 -4
  43. package/esm2015/src/is_dev_mode.js +4 -2
  44. package/esm2015/src/ivy_switch/runtime/index.js +2 -2
  45. package/esm2015/src/ivy_switch/runtime/ivy_switch_on.js +4 -2
  46. package/esm2015/src/ivy_switch/runtime/jit.js +2 -2
  47. package/esm2015/src/ivy_switch/runtime/legacy.js +7 -1
  48. package/esm2015/src/ivy_switch/runtime/local.js +2 -2
  49. package/esm2015/src/linker/compiler.js +5 -4
  50. package/esm2015/src/linker/component_factory.js +4 -2
  51. package/esm2015/src/linker/component_factory_resolver.js +2 -1
  52. package/esm2015/src/linker/element_ref.js +2 -2
  53. package/esm2015/src/linker/ng_module_factory.js +3 -3
  54. package/esm2015/src/linker/ng_module_factory_loader.js +4 -3
  55. package/esm2015/src/linker/query_list.js +3 -1
  56. package/esm2015/src/linker/system_js_ng_module_factory_loader.js +3 -3
  57. package/esm2015/src/linker/template_ref.js +2 -1
  58. package/esm2015/src/linker/view_container_ref.js +2 -1
  59. package/esm2015/src/linker/view_ref.js +4 -2
  60. package/esm2015/src/metadata/di.js +13 -5
  61. package/esm2015/src/metadata/directives.js +20 -7
  62. package/esm2015/src/metadata/lifecycle_hooks.js +10 -5
  63. package/esm2015/src/metadata/ng_module.js +8 -6
  64. package/esm2015/src/metadata/view.js +1 -1
  65. package/esm2015/src/platform_core_providers.js +2 -2
  66. package/esm2015/src/profile/profile.js +5 -5
  67. package/esm2015/src/profile/wtf_impl.js +2 -2
  68. package/esm2015/src/r3_symbols.js +1 -1
  69. package/esm2015/src/reflection/reflection_capabilities.js +3 -3
  70. package/esm2015/src/render/api.js +20 -7
  71. package/esm2015/src/render3/component.js +52 -18
  72. package/esm2015/src/render3/component_ref.js +15 -15
  73. package/esm2015/src/render3/context_discovery.js +35 -126
  74. package/esm2015/src/render3/debug.js +33 -56
  75. package/esm2015/src/render3/definition.js +42 -37
  76. package/esm2015/src/render3/di.js +4 -28
  77. package/esm2015/src/render3/discovery_utils.js +10 -7
  78. package/esm2015/src/render3/i18n.js +60 -34
  79. package/esm2015/src/render3/index.js +3 -3
  80. package/esm2015/src/render3/instructions.js +162 -275
  81. package/esm2015/src/render3/interfaces/container.js +7 -5
  82. package/esm2015/src/render3/interfaces/context.js +60 -0
  83. package/esm2015/src/render3/interfaces/definition.js +7 -1
  84. package/esm2015/src/render3/interfaces/i18n.js +338 -0
  85. package/esm2015/src/render3/interfaces/node.js +12 -126
  86. package/esm2015/src/render3/interfaces/player.js +73 -1
  87. package/esm2015/src/render3/interfaces/styling.js +18 -22
  88. package/esm2015/src/render3/interfaces/view.js +19 -26
  89. package/esm2015/src/render3/jit/compiler_facade.js +22 -0
  90. package/esm2015/src/render3/jit/compiler_facade_interface.js +229 -0
  91. package/esm2015/src/render3/jit/directive.js +57 -93
  92. package/esm2015/src/render3/jit/environment.js +7 -3
  93. package/esm2015/src/render3/jit/injectable.js +21 -46
  94. package/esm2015/src/render3/jit/module.js +16 -43
  95. package/esm2015/src/render3/jit/pipe.js +6 -12
  96. package/esm2015/src/render3/jit/util.js +14 -17
  97. package/esm2015/src/render3/node_assert.js +1 -1
  98. package/esm2015/src/render3/node_manipulation.js +99 -109
  99. package/esm2015/src/render3/players.js +67 -0
  100. package/esm2015/src/render3/styling/class_and_style_bindings.js +347 -88
  101. package/esm2015/src/render3/styling/core_player_handler.js +2 -2
  102. package/esm2015/src/render3/styling/player_factory.js +48 -0
  103. package/esm2015/src/render3/styling/util.js +165 -17
  104. package/esm2015/src/render3/util.js +73 -20
  105. package/esm2015/src/render3/view_engine_compatibility.js +56 -40
  106. package/esm2015/src/sanitization/security.js +2 -2
  107. package/esm2015/src/testability/testability.js +5 -6
  108. package/esm2015/src/type.js +5 -2
  109. package/esm2015/src/util/decorators.js +2 -1
  110. package/esm2015/src/util.js +15 -1
  111. package/esm2015/src/version.js +6 -4
  112. package/esm2015/src/view/refs.js +3 -3
  113. package/esm2015/src/view/services.js +8 -6
  114. package/esm2015/src/zone/ng_zone.js +2 -2
  115. package/esm2015/testing/src/async.js +2 -2
  116. package/esm2015/testing/src/component_fixture.js +2 -2
  117. package/esm2015/testing/src/fake_async.js +7 -7
  118. package/esm2015/testing/src/fake_async_fallback.js +7 -7
  119. package/esm2015/testing/src/metadata_override.js +1 -1
  120. package/esm2015/testing/src/r3_test_bed.js +8 -6
  121. package/esm2015/testing/src/test_bed.js +10 -8
  122. package/esm2015/testing/src/test_bed_common.js +6 -6
  123. package/esm2015/testing/src/test_compiler.js +3 -3
  124. package/esm5/core.js +6 -6
  125. package/esm5/src/application_init.js +5 -1
  126. package/esm5/src/application_module.js +2 -2
  127. package/esm5/src/application_ref.js +11 -9
  128. package/esm5/src/application_tokens.js +7 -7
  129. package/esm5/src/change_detection/change_detection_util.js +3 -1
  130. package/esm5/src/change_detection/change_detector_ref.js +2 -1
  131. package/esm5/src/change_detection/constants.js +2 -1
  132. package/esm5/src/change_detection/differs/default_iterable_differ.js +2 -1
  133. package/esm5/src/change_detection/differs/iterable_differs.js +2 -1
  134. package/esm5/src/change_detection/differs/keyvalue_differs.js +2 -1
  135. package/esm5/src/change_detection/pipe_transform.js +1 -1
  136. package/esm5/src/core_render3_private_export.js +5 -4
  137. package/esm5/src/debug/debug_node.js +5 -5
  138. package/esm5/src/di/defs.js +3 -3
  139. package/esm5/src/di/forward_ref.js +3 -3
  140. package/esm5/src/di/injectable.js +6 -5
  141. package/esm5/src/di/injection_token.js +3 -1
  142. package/esm5/src/di/injector.js +3 -3
  143. package/esm5/src/di/metadata.js +6 -1
  144. package/esm5/src/di/provider.js +1 -1
  145. package/esm5/src/di/r3_injector.js +2 -2
  146. package/esm5/src/di/reflective_injector.js +2 -2
  147. package/esm5/src/di/reflective_key.js +3 -1
  148. package/esm5/src/di/reflective_provider.js +2 -2
  149. package/esm5/src/error_handler.js +3 -1
  150. package/esm5/src/event_emitter.js +2 -1
  151. package/esm5/src/i18n/tokens.js +5 -5
  152. package/esm5/src/is_dev_mode.js +4 -2
  153. package/esm5/src/ivy_switch/runtime/ivy_switch_on.js +3 -2
  154. package/esm5/src/ivy_switch/runtime/legacy.js +4 -1
  155. package/esm5/src/linker/compiler.js +5 -4
  156. package/esm5/src/linker/component_factory.js +5 -1
  157. package/esm5/src/linker/component_factory_resolver.js +4 -1
  158. package/esm5/src/linker/element_ref.js +2 -2
  159. package/esm5/src/linker/ng_module_factory.js +3 -3
  160. package/esm5/src/linker/ng_module_factory_loader.js +4 -3
  161. package/esm5/src/linker/query_list.js +3 -1
  162. package/esm5/src/linker/system_js_ng_module_factory_loader.js +3 -3
  163. package/esm5/src/linker/template_ref.js +2 -1
  164. package/esm5/src/linker/view_container_ref.js +2 -1
  165. package/esm5/src/linker/view_ref.js +4 -2
  166. package/esm5/src/metadata/di.js +10 -3
  167. package/esm5/src/metadata/directives.js +9 -6
  168. package/esm5/src/metadata/lifecycle_hooks.js +1 -1
  169. package/esm5/src/metadata/ng_module.js +4 -3
  170. package/esm5/src/metadata/view.js +4 -1
  171. package/esm5/src/platform_core_providers.js +2 -2
  172. package/esm5/src/profile/profile.js +5 -5
  173. package/esm5/src/profile/wtf_impl.js +1 -1
  174. package/esm5/src/r3_symbols.js +1 -1
  175. package/esm5/src/reflection/reflection_capabilities.js +3 -3
  176. package/esm5/src/render/api.js +11 -5
  177. package/esm5/src/render3/component.js +45 -16
  178. package/esm5/src/render3/component_ref.js +12 -13
  179. package/esm5/src/render3/context_discovery.js +33 -65
  180. package/esm5/src/render3/debug.js +31 -50
  181. package/esm5/src/render3/definition.js +35 -31
  182. package/esm5/src/render3/di.js +4 -20
  183. package/esm5/src/render3/discovery_utils.js +12 -7
  184. package/esm5/src/render3/i18n.js +40 -30
  185. package/esm5/src/render3/index.js +3 -3
  186. package/esm5/src/render3/instructions.js +143 -230
  187. package/esm5/src/render3/interfaces/container.js +6 -5
  188. package/esm5/src/render3/interfaces/context.js +13 -0
  189. package/esm5/src/render3/interfaces/definition.js +1 -1
  190. package/esm5/src/render3/interfaces/i18n.js +25 -0
  191. package/esm5/src/render3/interfaces/node.js +1 -1
  192. package/esm5/src/render3/interfaces/player.js +1 -1
  193. package/esm5/src/render3/interfaces/styling.js +1 -8
  194. package/esm5/src/render3/interfaces/view.js +18 -17
  195. package/esm5/src/render3/jit/compiler_facade.js +21 -0
  196. package/esm5/src/render3/jit/compiler_facade_interface.js +15 -0
  197. package/esm5/src/render3/jit/directive.js +44 -79
  198. package/esm5/src/render3/jit/environment.js +7 -3
  199. package/esm5/src/render3/jit/injectable.js +26 -46
  200. package/esm5/src/render3/jit/module.js +16 -31
  201. package/esm5/src/render3/jit/pipe.js +6 -9
  202. package/esm5/src/render3/jit/util.js +12 -17
  203. package/esm5/src/render3/node_assert.js +1 -1
  204. package/esm5/src/render3/node_manipulation.js +89 -101
  205. package/esm5/src/render3/players.js +59 -0
  206. package/esm5/src/render3/styling/class_and_style_bindings.js +248 -85
  207. package/esm5/src/render3/styling/core_player_handler.js +2 -2
  208. package/esm5/src/render3/styling/player_factory.js +29 -0
  209. package/esm5/src/render3/styling/util.js +132 -14
  210. package/esm5/src/render3/util.js +54 -21
  211. package/esm5/src/render3/view_engine_compatibility.js +46 -32
  212. package/esm5/src/sanitization/security.js +3 -3
  213. package/esm5/src/testability/testability.js +4 -4
  214. package/esm5/src/type.js +2 -2
  215. package/esm5/src/util/decorators.js +1 -1
  216. package/esm5/src/util.js +13 -1
  217. package/esm5/src/version.js +6 -3
  218. package/esm5/src/view/refs.js +1 -1
  219. package/esm5/src/view/services.js +7 -10
  220. package/esm5/src/zone/ng_zone.js +2 -2
  221. package/esm5/testing/src/async.js +2 -2
  222. package/esm5/testing/src/component_fixture.js +2 -2
  223. package/esm5/testing/src/fake_async.js +7 -7
  224. package/esm5/testing/src/fake_async_fallback.js +7 -7
  225. package/esm5/testing/src/metadata_override.js +1 -1
  226. package/esm5/testing/src/r3_test_bed.js +8 -7
  227. package/esm5/testing/src/test_bed.js +10 -8
  228. package/esm5/testing/src/test_bed_common.js +4 -4
  229. package/esm5/testing/src/test_compiler.js +3 -3
  230. package/fesm2015/core.js +2486 -1951
  231. package/fesm2015/core.js.map +1 -1
  232. package/fesm2015/testing.js +36 -32
  233. package/fesm2015/testing.js.map +1 -1
  234. package/fesm5/core.js +1830 -1439
  235. package/fesm5/core.js.map +1 -1
  236. package/fesm5/testing.js +36 -33
  237. package/fesm5/testing.js.map +1 -1
  238. package/package.json +1 -2
  239. package/src/application_init.d.ts +4 -0
  240. package/src/application_module.d.ts +1 -1
  241. package/src/application_ref.d.ts +10 -8
  242. package/src/application_tokens.d.ts +6 -6
  243. package/src/change_detection/change_detection_util.d.ts +2 -0
  244. package/src/change_detection/change_detector_ref.d.ts +1 -0
  245. package/src/change_detection/constants.d.ts +1 -0
  246. package/src/change_detection/differs/default_iterable_differ.d.ts +1 -0
  247. package/src/change_detection/differs/iterable_differs.d.ts +8 -6
  248. package/src/change_detection/differs/keyvalue_differs.d.ts +5 -4
  249. package/src/change_detection/pipe_transform.d.ts +1 -1
  250. package/src/core_render3_private_export.d.ts +7 -5
  251. package/src/debug/debug_node.d.ts +5 -5
  252. package/src/di/defs.d.ts +4 -4
  253. package/src/di/forward_ref.d.ts +3 -3
  254. package/src/di/injectable.d.ts +10 -7
  255. package/src/di/injection_token.d.ts +2 -0
  256. package/src/di/injector.d.ts +5 -3
  257. package/src/di/metadata.d.ts +24 -1
  258. package/src/di/provider.d.ts +19 -5
  259. package/src/di/r3_injector.d.ts +1 -1
  260. package/src/di/reflective_injector.d.ts +1 -1
  261. package/src/di/reflective_key.d.ts +2 -0
  262. package/src/di/reflective_provider.d.ts +2 -2
  263. package/src/error_handler.d.ts +2 -0
  264. package/src/event_emitter.d.ts +1 -0
  265. package/src/i18n/tokens.d.ts +4 -4
  266. package/src/is_dev_mode.d.ts +3 -1
  267. package/src/ivy_switch/runtime/ivy_switch_on.d.ts +2 -1
  268. package/src/ivy_switch/runtime/legacy.d.ts +3 -0
  269. package/src/linker/compiler.d.ts +5 -4
  270. package/src/linker/component_factory.d.ts +5 -1
  271. package/src/linker/component_factory_resolver.d.ts +3 -0
  272. package/src/linker/element_ref.d.ts +1 -1
  273. package/src/linker/ng_module_factory.d.ts +2 -2
  274. package/src/linker/ng_module_factory_loader.d.ts +3 -2
  275. package/src/linker/query_list.d.ts +2 -0
  276. package/src/linker/system_js_ng_module_factory_loader.d.ts +2 -2
  277. package/src/linker/template_ref.d.ts +1 -0
  278. package/src/linker/view_container_ref.d.ts +1 -0
  279. package/src/linker/view_ref.d.ts +3 -1
  280. package/src/metadata/di.d.ts +13 -5
  281. package/src/metadata/directives.d.ts +19 -6
  282. package/src/metadata/lifecycle_hooks.d.ts +9 -4
  283. package/src/metadata/ng_module.d.ts +7 -7
  284. package/src/metadata/view.d.ts +3 -0
  285. package/src/platform_core_providers.d.ts +1 -1
  286. package/src/profile/profile.d.ts +4 -4
  287. package/src/profile/wtf_impl.d.ts +1 -1
  288. package/src/r3_symbols.d.ts +1 -1
  289. package/src/render/api.d.ts +10 -7
  290. package/src/render3/component.d.ts +14 -3
  291. package/src/render3/context_discovery.d.ts +6 -58
  292. package/src/render3/definition.d.ts +0 -4
  293. package/src/render3/di.d.ts +1 -3
  294. package/src/render3/discovery_utils.d.ts +7 -1
  295. package/src/render3/i18n.d.ts +4 -0
  296. package/src/render3/index.d.ts +2 -2
  297. package/src/render3/instructions.d.ts +43 -50
  298. package/src/render3/interfaces/container.d.ts +36 -22
  299. package/src/render3/interfaces/context.d.ts +52 -0
  300. package/src/render3/interfaces/definition.d.ts +8 -3
  301. package/src/render3/interfaces/i18n.d.ts +326 -0
  302. package/src/render3/interfaces/node.d.ts +12 -89
  303. package/src/render3/interfaces/player.d.ts +58 -4
  304. package/src/render3/interfaces/styling.d.ts +17 -15
  305. package/src/render3/interfaces/view.d.ts +28 -28
  306. package/src/render3/jit/compiler_facade.d.ts +3 -0
  307. package/src/render3/jit/compiler_facade_interface.d.ts +131 -0
  308. package/src/render3/jit/directive.d.ts +3 -0
  309. package/src/render3/jit/util.d.ts +3 -3
  310. package/src/render3/node_manipulation.d.ts +21 -22
  311. package/src/render3/players.d.ts +32 -0
  312. package/src/render3/styling/class_and_style_bindings.d.ts +31 -24
  313. package/src/render3/styling/player_factory.d.ts +31 -0
  314. package/src/render3/styling/util.d.ts +31 -9
  315. package/src/render3/util.d.ts +32 -15
  316. package/src/render3/view_engine_compatibility.d.ts +3 -0
  317. package/src/sanitization/security.d.ts +2 -2
  318. package/src/testability/testability.d.ts +5 -6
  319. package/src/type.d.ts +6 -1
  320. package/src/util/decorators.d.ts +1 -0
  321. package/src/util.d.ts +10 -0
  322. package/src/version.d.ts +4 -1
  323. package/src/view/services.d.ts +2 -2
  324. package/src/zone/ng_zone.d.ts +1 -1
  325. package/testing/src/async.d.ts +1 -1
  326. package/testing/src/component_fixture.d.ts +1 -1
  327. package/testing/src/fake_async.d.ts +6 -6
  328. package/testing/src/fake_async_fallback.d.ts +6 -6
  329. package/testing/src/metadata_override.d.ts +1 -1
  330. package/testing/src/r3_test_bed.d.ts +4 -4
  331. package/testing/src/test_bed.d.ts +12 -10
  332. package/testing/src/test_bed_common.d.ts +6 -6
  333. package/testing/src/test_compiler.d.ts +2 -2
  334. package/testing/testing.metadata.json +1 -1
  335. package/esm2015/src/render3/player.js +0 -51
  336. package/esm5/src/render3/player.js +0 -39
  337. package/src/render3/player.d.ts +0 -3
@@ -13,7 +13,7 @@ export class CorePlayerHandler {
13
13
  for (let i = 0; i < this._players.length; i++) {
14
14
  /** @type {?} */
15
15
  const player = this._players[i];
16
- if (!player.parent) {
16
+ if (!player.parent && player.state === 0 /* Pending */) {
17
17
  player.play();
18
18
  }
19
19
  }
@@ -30,4 +30,4 @@ if (false) {
30
30
  CorePlayerHandler.prototype._players;
31
31
  }
32
32
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZV9wbGF5ZXJfaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvc3R5bGluZy9jb3JlX3BsYXllcl9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFTQSxNQUFNLE9BQU8saUJBQWlCOzt3QkFDQyxFQUFFOzs7OztJQUUvQixZQUFZO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNsQixNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDZjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQzFCOzs7OztJQUVELFdBQVcsQ0FBQyxNQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7UGxheWVyLCBQbGF5ZXJIYW5kbGVyfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsYXllcic7XG5cbmV4cG9ydCBjbGFzcyBDb3JlUGxheWVySGFuZGxlciBpbXBsZW1lbnRzIFBsYXllckhhbmRsZXIge1xuICBwcml2YXRlIF9wbGF5ZXJzOiBQbGF5ZXJbXSA9IFtdO1xuXG4gIGZsdXNoUGxheWVycygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BsYXllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHBsYXllciA9IHRoaXMuX3BsYXllcnNbaV07XG4gICAgICBpZiAoIXBsYXllci5wYXJlbnQpIHtcbiAgICAgICAgcGxheWVyLnBsYXkoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fcGxheWVycy5sZW5ndGggPSAwO1xuICB9XG5cbiAgcXVldWVQbGF5ZXIocGxheWVyOiBQbGF5ZXIpIHsgdGhpcy5fcGxheWVycy5wdXNoKHBsYXllcik7IH1cbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZV9wbGF5ZXJfaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvc3R5bGluZy9jb3JlX3BsYXllcl9oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFTQSxNQUFNLE9BQU8saUJBQWlCOzt3QkFDQyxFQUFFOzs7OztJQUUvQixZQUFZO1FBQ1YsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLG9CQUFzQixFQUFFO2dCQUN4RCxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDZjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQzFCOzs7OztJQUVELFdBQVcsQ0FBQyxNQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtDQUM1RCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7UGxheVN0YXRlLCBQbGF5ZXIsIFBsYXllckhhbmRsZXJ9IGZyb20gJy4uL2ludGVyZmFjZXMvcGxheWVyJztcblxuZXhwb3J0IGNsYXNzIENvcmVQbGF5ZXJIYW5kbGVyIGltcGxlbWVudHMgUGxheWVySGFuZGxlciB7XG4gIHByaXZhdGUgX3BsYXllcnM6IFBsYXllcltdID0gW107XG5cbiAgZmx1c2hQbGF5ZXJzKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fcGxheWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcGxheWVyID0gdGhpcy5fcGxheWVyc1tpXTtcbiAgICAgIGlmICghcGxheWVyLnBhcmVudCAmJiBwbGF5ZXIuc3RhdGUgPT09IFBsYXlTdGF0ZS5QZW5kaW5nKSB7XG4gICAgICAgIHBsYXllci5wbGF5KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3BsYXllcnMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHF1ZXVlUGxheWVyKHBsYXllcjogUGxheWVyKSB7IHRoaXMuX3BsYXllcnMucHVzaChwbGF5ZXIpOyB9XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
+ */
5
+ /**
6
+ * Combines the binding value and a factory for an animation player.
7
+ *
8
+ * Used to bind a player to an element template binding (currently only
9
+ * `[style]`, `[style.prop]`, `[class]` and `[class.name]` bindings
10
+ * supported). The provided `factoryFn` function will be run once all
11
+ * the associated bindings have been evaluated on the element and is
12
+ * designed to return a player which will then be placed on the element.
13
+ *
14
+ * @template T
15
+ * @param {?} factoryFn The function that is used to create a player
16
+ * once all the rendering-related (styling values) have been
17
+ * processed for the element binding.
18
+ * @param {?} value The raw value that will be exposed to the binding
19
+ * so that the binding can update its internal values when
20
+ * any changes are evaluated.
21
+ * @return {?}
22
+ */
23
+ export function bindPlayerFactory(factoryFn, value) {
24
+ return /** @type {?} */ (new BoundPlayerFactory(factoryFn, value));
25
+ }
26
+ /**
27
+ * @template T
28
+ */
29
+ export class BoundPlayerFactory {
30
+ /**
31
+ * @param {?} fn
32
+ * @param {?} value
33
+ */
34
+ constructor(fn, value) {
35
+ this.fn = fn;
36
+ this.value = value;
37
+ }
38
+ }
39
+ if (false) {
40
+ /** @type {?} */
41
+ BoundPlayerFactory.prototype.__brand__;
42
+ /** @type {?} */
43
+ BoundPlayerFactory.prototype.fn;
44
+ /** @type {?} */
45
+ BoundPlayerFactory.prototype.value;
46
+ }
47
+
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyX2ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3N0eWxpbmcvcGxheWVyX2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksU0FBK0IsRUFBRSxLQUFRO0lBQzVFLHlCQUFPLElBQUksa0JBQWtCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBUSxFQUFDO0NBQ3hEOzs7O0FBRUQsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7SUFFN0IsWUFBbUIsRUFBd0IsRUFBUyxLQUFRO1FBQXpDLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBRztLQUFJO0NBQ2pFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHtQbGF5ZXJGYWN0b3J5LCBQbGF5ZXJGYWN0b3J5QnVpbGRGbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbGF5ZXInO1xuXG4vKipcbiAqIENvbWJpbmVzIHRoZSBiaW5kaW5nIHZhbHVlIGFuZCBhIGZhY3RvcnkgZm9yIGFuIGFuaW1hdGlvbiBwbGF5ZXIuXG4gKlxuICogVXNlZCB0byBiaW5kIGEgcGxheWVyIHRvIGFuIGVsZW1lbnQgdGVtcGxhdGUgYmluZGluZyAoY3VycmVudGx5IG9ubHlcbiAqIGBbc3R5bGVdYCwgYFtzdHlsZS5wcm9wXWAsIGBbY2xhc3NdYCBhbmQgYFtjbGFzcy5uYW1lXWAgYmluZGluZ3NcbiAqIHN1cHBvcnRlZCkuIFRoZSBwcm92aWRlZCBgZmFjdG9yeUZuYCBmdW5jdGlvbiB3aWxsIGJlIHJ1biBvbmNlIGFsbFxuICogdGhlIGFzc29jaWF0ZWQgYmluZGluZ3MgaGF2ZSBiZWVuIGV2YWx1YXRlZCBvbiB0aGUgZWxlbWVudCBhbmQgaXNcbiAqIGRlc2lnbmVkIHRvIHJldHVybiBhIHBsYXllciB3aGljaCB3aWxsIHRoZW4gYmUgcGxhY2VkIG9uIHRoZSBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5Rm4gVGhlIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgYSBwbGF5ZXJcbiAqICAgb25jZSBhbGwgdGhlIHJlbmRlcmluZy1yZWxhdGVkIChzdHlsaW5nIHZhbHVlcykgaGF2ZSBiZWVuXG4gKiAgIHByb2Nlc3NlZCBmb3IgdGhlIGVsZW1lbnQgYmluZGluZy5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgcmF3IHZhbHVlIHRoYXQgd2lsbCBiZSBleHBvc2VkIHRvIHRoZSBiaW5kaW5nXG4gKiAgIHNvIHRoYXQgdGhlIGJpbmRpbmcgY2FuIHVwZGF0ZSBpdHMgaW50ZXJuYWwgdmFsdWVzIHdoZW5cbiAqICAgYW55IGNoYW5nZXMgYXJlIGV2YWx1YXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRQbGF5ZXJGYWN0b3J5PFQ+KGZhY3RvcnlGbjogUGxheWVyRmFjdG9yeUJ1aWxkRm4sIHZhbHVlOiBUKTogUGxheWVyRmFjdG9yeSB7XG4gIHJldHVybiBuZXcgQm91bmRQbGF5ZXJGYWN0b3J5KGZhY3RvcnlGbiwgdmFsdWUpIGFzIGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIEJvdW5kUGxheWVyRmFjdG9yeTxUPiB7XG4gICdfX2JyYW5kX18nOiAnQnJhbmQgZm9yIFBsYXllckZhY3RvcnkgdGhhdCBub3RoaW5nIHdpbGwgbWF0Y2gnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm46IFBsYXllckZhY3RvcnlCdWlsZEZuLCBwdWJsaWMgdmFsdWU6IFQpIHt9XG59XG4iXX0=
@@ -2,11 +2,12 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
4
4
  */
5
+ import '../ng_dev_mode';
5
6
  import { getContext } from '../context_discovery';
6
- /** @type {?} */
7
- export const EMPTY_ARR = [];
8
- /** @type {?} */
9
- export const EMPTY_OBJ = {};
7
+ import { ACTIVE_INDEX } from '../interfaces/container';
8
+ import { FLAGS, HEADER_OFFSET, HOST } from '../interfaces/view';
9
+ import { getTNode } from '../util';
10
+ import { CorePlayerHandler } from './core_player_handler';
10
11
  /**
11
12
  * @param {?=} element
12
13
  * @param {?=} sanitizer
@@ -15,9 +16,146 @@ export const EMPTY_OBJ = {};
15
16
  */
16
17
  export function createEmptyStylingContext(element, sanitizer, initialStylingValues) {
17
18
  return [
18
- element || null, null, sanitizer || null, initialStylingValues || [null], 0, 0, null, null
19
+ null,
20
+ // PlayerContext
21
+ sanitizer || null,
22
+ // StyleSanitizer
23
+ initialStylingValues || [null],
24
+ 0,
25
+ 0,
26
+ // ClassOffset
27
+ element || null,
28
+ null,
29
+ null
19
30
  ];
20
31
  }
32
+ /**
33
+ * Used clone a copy of a pre-computed template of a styling context.
34
+ *
35
+ * A pre-computed template is designed to be computed once for a given element
36
+ * (instructions.ts has logic for caching this).
37
+ * @param {?} element
38
+ * @param {?} templateStyleContext
39
+ * @return {?}
40
+ */
41
+ export function allocStylingContext(element, templateStyleContext) {
42
+ /** @type {?} */
43
+ const context = /** @type {?} */ ((templateStyleContext.slice()));
44
+ context[5 /* ElementPosition */] = element;
45
+ return context;
46
+ }
47
+ /**
48
+ * Retrieve the `StylingContext` at a given index.
49
+ *
50
+ * This method lazily creates the `StylingContext`. This is because in most cases
51
+ * we have styling without any bindings. Creating `StylingContext` eagerly would mean that
52
+ * every style declaration such as `<div style="color: red">` would result `StyleContext`
53
+ * which would create unnecessary memory pressure.
54
+ *
55
+ * @param {?} index Index of the style allocation. See: `elementStyling`.
56
+ * @param {?} viewData The view to search for the styling context
57
+ * @return {?}
58
+ */
59
+ export function getStylingContext(index, viewData) {
60
+ /** @type {?} */
61
+ let storageIndex = index + HEADER_OFFSET;
62
+ /** @type {?} */
63
+ let slotValue = viewData[storageIndex];
64
+ /** @type {?} */
65
+ let wrapper = viewData;
66
+ while (Array.isArray(slotValue)) {
67
+ wrapper = slotValue;
68
+ slotValue = /** @type {?} */ (slotValue[HOST]);
69
+ }
70
+ if (isStylingContext(wrapper)) {
71
+ return /** @type {?} */ (wrapper);
72
+ }
73
+ else {
74
+ /** @type {?} */
75
+ const stylingTemplate = getTNode(index, viewData).stylingTemplate;
76
+ if (wrapper !== viewData) {
77
+ storageIndex = HOST;
78
+ }
79
+ return wrapper[storageIndex] = stylingTemplate ?
80
+ allocStylingContext(slotValue, stylingTemplate) :
81
+ createEmptyStylingContext(slotValue);
82
+ }
83
+ }
84
+ /**
85
+ * @param {?} value
86
+ * @return {?}
87
+ */
88
+ function isStylingContext(value) {
89
+ // Not an LViewData or an LContainer
90
+ return typeof value[FLAGS] !== 'number' && typeof value[ACTIVE_INDEX] !== 'number';
91
+ }
92
+ /**
93
+ * @param {?} playerContext
94
+ * @param {?} rootContext
95
+ * @param {?} element
96
+ * @param {?} player
97
+ * @param {?} playerContextIndex
98
+ * @param {?=} ref
99
+ * @return {?}
100
+ */
101
+ export function addPlayerInternal(playerContext, rootContext, element, player, playerContextIndex, ref) {
102
+ ref = ref || element;
103
+ if (playerContextIndex) {
104
+ playerContext[playerContextIndex] = player;
105
+ }
106
+ else {
107
+ playerContext.push(player);
108
+ }
109
+ if (player) {
110
+ player.addEventListener(200 /* Destroyed */, () => {
111
+ /** @type {?} */
112
+ const index = playerContext.indexOf(player);
113
+ /** @type {?} */
114
+ const nonFactoryPlayerIndex = playerContext[0 /* NonBuilderPlayersStart */];
115
+ // if the player is being removed from the factory side of the context
116
+ // (which is where the [style] and [class] bindings do their thing) then
117
+ // that side of the array cannot be resized since the respective bindings
118
+ // have pointer index values that point to the associated factory instance
119
+ if (index) {
120
+ if (index < nonFactoryPlayerIndex) {
121
+ playerContext[index] = null;
122
+ }
123
+ else {
124
+ playerContext.splice(index, 1);
125
+ }
126
+ }
127
+ player.destroy();
128
+ });
129
+ /** @type {?} */
130
+ const playerHandler = rootContext.playerHandler || (rootContext.playerHandler = new CorePlayerHandler());
131
+ playerHandler.queuePlayer(player, ref);
132
+ return true;
133
+ }
134
+ return false;
135
+ }
136
+ /**
137
+ * @param {?} playerContext
138
+ * @return {?}
139
+ */
140
+ export function getPlayersInternal(playerContext) {
141
+ /** @type {?} */
142
+ const players = [];
143
+ /** @type {?} */
144
+ const nonFactoryPlayersStart = playerContext[0 /* NonBuilderPlayersStart */];
145
+ // add all factory-based players (which are apart of [style] and [class] bindings)
146
+ for (let i = 1 /* PlayerBuildersStartPosition */ + 1 /* PlayerOffsetPosition */; i < nonFactoryPlayersStart; i += 2 /* PlayerAndPlayerBuildersTupleSize */) {
147
+ /** @type {?} */
148
+ const player = /** @type {?} */ (playerContext[i]);
149
+ if (player) {
150
+ players.push(player);
151
+ }
152
+ }
153
+ // add all custom players (not apart of [style] and [class] bindings)
154
+ for (let i = nonFactoryPlayersStart; i < playerContext.length; i++) {
155
+ players.push(/** @type {?} */ (playerContext[i]));
156
+ }
157
+ return players;
158
+ }
21
159
  /**
22
160
  * @param {?} target
23
161
  * @param {?=} context
@@ -25,25 +163,35 @@ export function createEmptyStylingContext(element, sanitizer, initialStylingValu
25
163
  */
26
164
  export function getOrCreatePlayerContext(target, context) {
27
165
  context = context || /** @type {?} */ ((getContext(target)));
28
- if (ngDevMode && !context) {
29
- throw new Error('Only elements that exist in an Angular application can be used for player access');
166
+ if (!context) {
167
+ ngDevMode && throwInvalidRefError();
168
+ return null;
30
169
  }
31
170
  const { lViewData, nodeIndex } = context;
32
171
  /** @type {?} */
33
- const value = lViewData[nodeIndex];
34
- /** @type {?} */
35
- let stylingContext = /** @type {?} */ (value);
36
- if (!Array.isArray(value)) {
37
- stylingContext = lViewData[nodeIndex] = createEmptyStylingContext(/** @type {?} */ (value));
38
- }
39
- return stylingContext[1 /* PlayerContext */] || allocPlayerContext(stylingContext);
172
+ const stylingContext = getStylingContext(nodeIndex - HEADER_OFFSET, lViewData);
173
+ return getPlayerContext(stylingContext) || allocPlayerContext(stylingContext);
174
+ }
175
+ /**
176
+ * @param {?} stylingContext
177
+ * @return {?}
178
+ */
179
+ export function getPlayerContext(stylingContext) {
180
+ return stylingContext[0 /* PlayerContext */];
40
181
  }
41
182
  /**
42
183
  * @param {?} data
43
184
  * @return {?}
44
185
  */
45
- function allocPlayerContext(data) {
46
- return data[1 /* PlayerContext */] = [];
186
+ export function allocPlayerContext(data) {
187
+ return data[0 /* PlayerContext */] =
188
+ [5 /* SinglePlayerBuildersStartPosition */, null, null, null, null];
189
+ }
190
+ /**
191
+ * @return {?}
192
+ */
193
+ export function throwInvalidRefError() {
194
+ throw new Error('Only elements that exist in an Angular application can be used for animations');
47
195
  }
48
196
 
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvc3R5bGluZy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFRQSxPQUFPLEVBQVcsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7O0FBSzFELGFBQWEsU0FBUyxHQUFVLEVBQUUsQ0FBQzs7QUFDbkMsYUFBYSxTQUFTLEdBQXlCLEVBQUUsQ0FBQzs7Ozs7OztBQUVsRCxNQUFNLFVBQVUseUJBQXlCLENBQ3JDLE9BQTZCLEVBQUUsU0FBa0MsRUFDakUsb0JBQW9DO0lBQ3RDLE9BQU87UUFDTCxPQUFPLElBQUksSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSTtLQUMzRixDQUFDO0NBQ0g7Ozs7OztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUFVLEVBQUUsT0FBeUI7SUFDNUUsT0FBTyxHQUFHLE9BQU8sdUJBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDMUMsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDWCxrRkFBa0YsQ0FBQyxDQUFDO0tBQ3pGO0lBRUQsTUFBTSxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsR0FBRyxPQUFPLENBQUM7O0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7SUFDbkMsSUFBSSxjQUFjLHFCQUFHLEtBQXVCLEVBQUM7SUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekIsY0FBYyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyx5QkFBeUIsbUJBQUMsS0FBcUIsRUFBQyxDQUFDO0tBQzFGO0lBQ0QsT0FBTyxjQUFjLHVCQUE0QixJQUFJLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0NBQ3pGOzs7OztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBb0I7SUFDOUMsT0FBTyxJQUFJLHVCQUE0QixHQUFHLEVBQUUsQ0FBQztDQUM5QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7U3R5bGVTYW5pdGl6ZUZufSBmcm9tICcuLi8uLi9zYW5pdGl6YXRpb24vc3R5bGVfc2FuaXRpemVyJztcbmltcG9ydCB7TENvbnRleHQsIGdldENvbnRleHR9IGZyb20gJy4uL2NvbnRleHRfZGlzY292ZXJ5JztcbmltcG9ydCB7TEVsZW1lbnROb2RlfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHtQbGF5ZXJDb250ZXh0fSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsYXllcic7XG5pbXBvcnQge0luaXRpYWxTdHlsZXMsIFN0eWxpbmdDb250ZXh0LCBTdHlsaW5nSW5kZXh9IGZyb20gJy4uL2ludGVyZmFjZXMvc3R5bGluZyc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9BUlI6IGFueVtdID0gW107XG5leHBvcnQgY29uc3QgRU1QVFlfT0JKOiB7W2tleTogc3RyaW5nXTogYW55fSA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW1wdHlTdHlsaW5nQ29udGV4dChcbiAgICBlbGVtZW50PzogTEVsZW1lbnROb2RlIHwgbnVsbCwgc2FuaXRpemVyPzogU3R5bGVTYW5pdGl6ZUZuIHwgbnVsbCxcbiAgICBpbml0aWFsU3R5bGluZ1ZhbHVlcz86IEluaXRpYWxTdHlsZXMpOiBTdHlsaW5nQ29udGV4dCB7XG4gIHJldHVybiBbXG4gICAgZWxlbWVudCB8fCBudWxsLCBudWxsLCBzYW5pdGl6ZXIgfHwgbnVsbCwgaW5pdGlhbFN0eWxpbmdWYWx1ZXMgfHwgW251bGxdLCAwLCAwLCBudWxsLCBudWxsXG4gIF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckNyZWF0ZVBsYXllckNvbnRleHQodGFyZ2V0OiB7fSwgY29udGV4dD86IExDb250ZXh0IHwgbnVsbCk6IFBsYXllckNvbnRleHQge1xuICBjb250ZXh0ID0gY29udGV4dCB8fCBnZXRDb250ZXh0KHRhcmdldCkgITtcbiAgaWYgKG5nRGV2TW9kZSAmJiAhY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ09ubHkgZWxlbWVudHMgdGhhdCBleGlzdCBpbiBhbiBBbmd1bGFyIGFwcGxpY2F0aW9uIGNhbiBiZSB1c2VkIGZvciBwbGF5ZXIgYWNjZXNzJyk7XG4gIH1cblxuICBjb25zdCB7bFZpZXdEYXRhLCBub2RlSW5kZXh9ID0gY29udGV4dDtcbiAgY29uc3QgdmFsdWUgPSBsVmlld0RhdGFbbm9kZUluZGV4XTtcbiAgbGV0IHN0eWxpbmdDb250ZXh0ID0gdmFsdWUgYXMgU3R5bGluZ0NvbnRleHQ7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBzdHlsaW5nQ29udGV4dCA9IGxWaWV3RGF0YVtub2RlSW5kZXhdID0gY3JlYXRlRW1wdHlTdHlsaW5nQ29udGV4dCh2YWx1ZSBhcyBMRWxlbWVudE5vZGUpO1xuICB9XG4gIHJldHVybiBzdHlsaW5nQ29udGV4dFtTdHlsaW5nSW5kZXguUGxheWVyQ29udGV4dF0gfHwgYWxsb2NQbGF5ZXJDb250ZXh0KHN0eWxpbmdDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gYWxsb2NQbGF5ZXJDb250ZXh0KGRhdGE6IFN0eWxpbmdDb250ZXh0KTogUGxheWVyQ29udGV4dCB7XG4gIHJldHVybiBkYXRhW1N0eWxpbmdJbmRleC5QbGF5ZXJDb250ZXh0XSA9IFtdO1xufVxuIl19
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvc3R5bGluZy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFPQSxPQUFPLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsWUFBWSxFQUFhLE1BQU0seUJBQXlCLENBQUM7QUFLakUsT0FBTyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3RGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFFakMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFFeEQsTUFBTSxVQUFVLHlCQUF5QixDQUNyQyxPQUF5QixFQUFFLFNBQWtDLEVBQzdELG9CQUFvQztJQUN0QyxPQUFPO1FBQ0wsSUFBSTs7UUFDSixTQUFTLElBQUksSUFBSTs7UUFDakIsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUNELENBQUM7O1FBQ0QsT0FBTyxJQUFJLElBQUk7UUFDZixJQUFJO1FBQ0osSUFBSTtLQUNMLENBQUM7Q0FDSDs7Ozs7Ozs7OztBQVFELE1BQU0sVUFBVSxtQkFBbUIsQ0FDL0IsT0FBd0IsRUFBRSxvQkFBb0M7O0lBRWhFLE1BQU0sT0FBTyxzQkFBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQVMsR0FBbUI7SUFDdEUsT0FBTyx5QkFBOEIsR0FBRyxPQUFPLENBQUM7SUFDaEQsT0FBTyxPQUFPLENBQUM7Q0FDaEI7Ozs7Ozs7Ozs7Ozs7QUFhRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYSxFQUFFLFFBQW1COztJQUNsRSxJQUFJLFlBQVksR0FBRyxLQUFLLEdBQUcsYUFBYSxDQUFDOztJQUN6QyxJ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UmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAnLi4vbmdfZGV2X21vZGUnO1xuXG5pbXBvcnQge1N0eWxlU2FuaXRpemVGbn0gZnJvbSAnLi4vLi4vc2FuaXRpemF0aW9uL3N0eWxlX3Nhbml0aXplcic7XG5pbXBvcnQge2dldENvbnRleHR9IGZyb20gJy4uL2NvbnRleHRfZGlzY292ZXJ5JztcbmltcG9ydCB7QUNUSVZFX0lOREVYLCBMQ29udGFpbmVyfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbnRhaW5lcic7XG5pbXBvcnQge0xDb250ZXh0fSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbnRleHQnO1xuaW1wb3J0IHtQbGF5U3RhdGUsIFBsYXllciwgUGxheWVyQ29udGV4dCwgUGxheWVySW5kZXh9IGZyb20gJy4uL2ludGVyZmFjZXMvcGxheWVyJztcbmltcG9ydCB7UkVsZW1lbnR9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVuZGVyZXInO1xuaW1wb3J0IHtJbml0aWFsU3R5bGVzLCBTdHlsaW5nQ29udGV4dCwgU3R5bGluZ0luZGV4fSBmcm9tICcuLi9pbnRlcmZhY2VzL3N0eWxpbmcnO1xuaW1wb3J0IHtGTEFHUywgSEVBREVSX09GRlNFVCwgSE9TVCwgTFZpZXdEYXRhLCBSb290Q29udGV4dH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3JztcbmltcG9ydCB7Z2V0VE5vZGV9IGZyb20gJy4uL3V0aWwnO1xuXG5pbXBvcnQge0NvcmVQbGF5ZXJIYW5kbGVyfSBmcm9tICcuL2NvcmVfcGxheWVyX2hhbmRsZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW1wdHlTdHlsaW5nQ29udGV4dChcbiAgICBlbGVtZW50PzogUkVsZW1lbnQgfCBudWxsLCBzYW5pdGl6ZXI/OiBTdHlsZVNhbml0aXplRm4gfCBudWxsLFxuICAgIGluaXRpYWxTdHlsaW5nVmFsdWVzPzogSW5pdGlhbFN0eWxlcyk6IFN0eWxpbmdDb250ZXh0IHtcbiAgcmV0dXJuIFtcbiAgICBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF5ZXJDb250ZXh0XG4gICAgc2FuaXRpemVyIHx8IG51bGwsICAgICAgICAgICAgICAgLy8gU3R5bGVTYW5pdGl6ZXJcbiAgICBpbml0aWFsU3R5bGluZ1ZhbHVlcyB8fCBbbnVsbF0sICAvLyBJbml0aWFsU3R5bGVzXG4gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFzdGVyRmxhZ3NcbiAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGFzc09mZnNldFxuICAgIGVsZW1lbnQgfHwgbnVsbCwgICAgICAgICAgICAgICAgIC8vIEVsZW1lbnRcbiAgICBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmV2aW91c011bHRpQ2xhc3NWYWx1ZVxuICAgIG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZpb3VzTXVsdGlTdHlsZVZhbHVlXG4gIF07XG59XG5cbi8qKlxuICogVXNlZCBjbG9uZSBhIGNvcHkgb2YgYSBwcmUtY29tcHV0ZWQgdGVtcGxhdGUgb2YgYSBzdHlsaW5nIGNvbnRleHQuXG4gKlxuICogQSBwcmUtY29tcHV0ZWQgdGVtcGxhdGUgaXMgZGVzaWduZWQgdG8gYmUgY29tcHV0ZWQgb25jZSBmb3IgYSBnaXZlbiBlbGVtZW50XG4gKiAoaW5zdHJ1Y3Rpb25zLnRzIGhhcyBsb2dpYyBmb3IgY2FjaGluZyB0aGlzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG9jU3R5bGluZ0NvbnRleHQoXG4gICAgZWxlbWVudDogUkVsZW1lbnQgfCBudWxsLCB0ZW1wbGF0ZVN0eWxlQ29udGV4dDogU3R5bGluZ0NvbnRleHQpOiBTdHlsaW5nQ29udGV4dCB7XG4gIC8vIGVhY2ggaW5zdGFuY2UgZ2V0cyBhIGNvcHlcbiAgY29uc3QgY29udGV4dCA9IHRlbXBsYXRlU3R5bGVDb250ZXh0LnNsaWNlKCkgYXMgYW55IGFzIFN0eWxpbmdDb250ZXh0O1xuICBjb250ZXh0W1N0eWxpbmdJbmRleC5FbGVtZW50UG9zaXRpb25dID0gZWxlbWVudDtcbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogUmV0cmlldmUgdGhlIGBTdHlsaW5nQ29udGV4dGAgYXQgYSBnaXZlbiBpbmRleC5cbiAqXG4gKiBUaGlzIG1ldGhvZCBsYXppbHkgY3JlYXRlcyB0aGUgYFN0eWxpbmdDb250ZXh0YC4gVGhpcyBpcyBiZWNhdXNlIGluIG1vc3QgY2FzZXNcbiAqIHdlIGhhdmUgc3R5bGluZyB3aXRob3V0IGFueSBiaW5kaW5ncy4gQ3JlYXRpbmcgYFN0eWxpbmdDb250ZXh0YCBlYWdlcmx5IHdvdWxkIG1lYW4gdGhhdFxuICogZXZlcnkgc3R5bGUgZGVjbGFyYXRpb24gc3VjaCBhcyBgPGRpdiBzdHlsZT1cImNvbG9yOiByZWRcIj5gIHdvdWxkIHJlc3VsdCBgU3R5bGVDb250ZXh0YFxuICogd2hpY2ggd291bGQgY3JlYXRlIHVubmVjZXNzYXJ5IG1lbW9yeSBwcmVzc3VyZS5cbiAqXG4gKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHN0eWxlIGFsbG9jYXRpb24uIFNlZTogYGVsZW1lbnRTdHlsaW5nYC5cbiAqIEBwYXJhbSB2aWV3RGF0YSBUaGUgdmlldyB0byBzZWFyY2ggZm9yIHRoZSBzdHlsaW5nIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0eWxpbmdDb250ZXh0KGluZGV4OiBudW1iZXIsIHZpZXdEYXRhOiBMVmlld0RhdGEpOiBTdHlsaW5nQ29udGV4dCB7XG4gIGxldCBzdG9yYWdlSW5kZXggPSBpbmRleCArIEhFQURFUl9PRkZTRVQ7XG4gIGxldCBzbG90VmFsdWU6IExDb250YWluZXJ8TFZpZXdEYXRhfFN0eWxpbmdDb250ZXh0fFJFbGVtZW50ID0gdmlld0RhdGFbc3RvcmFnZUluZGV4XTtcbiAgbGV0IHdyYXBwZXI6IExDb250YWluZXJ8TFZpZXdEYXRhfFN0eWxpbmdDb250ZXh0ID0gdmlld0RhdGE7XG5cbiAgd2hpbGUgKEFycmF5LmlzQXJyYXkoc2xvdFZhbHVlKSkge1xuICAgIHdyYXBwZXIgPSBzbG90VmFsdWU7XG4gICAgc2xvdFZhbHVlID0gc2xvdFZhbHVlW0hPU1RdIGFzIExWaWV3RGF0YSB8IFN0eWxpbmdDb250ZXh0IHwgUkVsZW1lbnQ7XG4gIH1cblxuICBpZiAoaXNTdHlsaW5nQ29udGV4dCh3cmFwcGVyKSkge1xuICAgIHJldHVybiB3cmFwcGVyIGFzIFN0eWxpbmdDb250ZXh0O1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYW4gTFZpZXdEYXRhIG9yIGFuIExDb250YWluZXJcbiAgICBjb25zdCBzdHlsaW5nVGVtcGxhdGUgPSBnZXRUTm9kZShpbmRleCwgdmlld0RhdGEpLnN0eWxpbmdUZW1wbGF0ZTtcblxuICAgIGlmICh3cmFwcGVyICE9PSB2aWV3RGF0YSkge1xuICAgICAgc3RvcmFnZUluZGV4ID0gSE9TVDtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcHBlcltzdG9yYWdlSW5kZXhdID0gc3R5bGluZ1RlbXBsYXRlID9cbiAgICAgICAgYWxsb2NTdHlsaW5nQ29udGV4dChzbG90VmFsdWUsIHN0eWxpbmdUZW1wbGF0ZSkgOlxuICAgICAgICBjcmVhdGVFbXB0eVN0eWxpbmdDb250ZXh0KHNsb3RWYWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdHlsaW5nQ29udGV4dCh2YWx1ZTogTFZpZXdEYXRhIHwgTENvbnRhaW5lciB8IFN0eWxpbmdDb250ZXh0KSB7XG4gIC8vIE5vdCBhbiBMVmlld0RhdGEgb3IgYW4gTENvbnRhaW5lclxuICByZXR1cm4gdHlwZW9mIHZhbHVlW0ZMQUdTXSAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlW0FDVElWRV9JTkRFWF0gIT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkUGxheWVySW50ZXJuYWwoXG4gICAgcGxheWVyQ29udGV4dDogUGxheWVyQ29udGV4dCwgcm9vdENvbnRleHQ6IFJvb3RDb250ZXh0LCBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBwbGF5ZXI6IFBsYXllciB8IG51bGwsIHBsYXllckNvbnRleHRJbmRleDogbnVtYmVyLCByZWY/OiBhbnkpOiBib29sZWFuIHtcbiAgcmVmID0gcmVmIHx8IGVsZW1lbnQ7XG4gIGlmIChwbGF5ZXJDb250ZXh0SW5kZXgpIHtcbiAgICBwbGF5ZXJDb250ZXh0W3BsYXllckNvbnRleHRJbmRleF0gPSBwbGF5ZXI7XG4gIH0gZWxzZSB7XG4gICAgcGxheWVyQ29udGV4dC5wdXNoKHBsYXllcik7XG4gIH1cblxuICBpZiAocGxheWVyKSB7XG4gICAgcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoUGxheVN0YXRlLkRlc3Ryb3llZCwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBwbGF5ZXJDb250ZXh0LmluZGV4T2YocGxheWVyKTtcbiAgICAgIGNvbnN0IG5vbkZhY3RvcnlQbGF5ZXJJbmRleCA9IHBsYXllckNvbnRleHRbUGxheWVySW5kZXguTm9uQnVpbGRlclBsYXllcnNTdGFydF07XG5cbiAgICAgIC8vIGlmIHRoZSBwbGF5ZXIgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBmYWN0b3J5IHNpZGUgb2YgdGhlIGNvbnRleHRcbiAgICAgIC8vICh3aGljaCBpcyB3aGVyZSB0aGUgW3N0eWxlXSBhbmQgW2NsYXNzXSBiaW5kaW5ncyBkbyB0aGVpciB0aGluZykgdGhlblxuICAgICAgLy8gdGhhdCBzaWRlIG9mIHRoZSBhcnJheSBjYW5ub3QgYmUgcmVzaXplZCBzaW5jZSB0aGUgcmVzcGVjdGl2ZSBiaW5kaW5nc1xuICAgICAgLy8gaGF2ZSBwb2ludGVyIGluZGV4IHZhbHVlcyB0aGF0IHBvaW50IHRvIHRoZSBhc3NvY2lhdGVkIGZhY3RvcnkgaW5zdGFuY2VcbiAgICAgIGlmIChpbmRleCkge1xuICAgICAgICBpZiAoaW5kZXggPCBub25GYWN0b3J5UGxheWVySW5kZXgpIHtcbiAgICAgICAgICBwbGF5ZXJDb250ZXh0W2luZGV4XSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGxheWVyQ29udGV4dC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwbGF5ZXIuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcGxheWVySGFuZGxlciA9XG4gICAgICAgIHJvb3RDb250ZXh0LnBsYXllckhhbmRsZXIgfHwgKHJvb3RDb250ZXh0LnBsYXllckhhbmRsZXIgPSBuZXcgQ29yZVBsYXllckhhbmRsZXIoKSk7XG4gICAgcGxheWVySGFuZGxlci5xdWV1ZVBsYXllcihwbGF5ZXIsIHJlZik7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbGF5ZXJzSW50ZXJuYWwocGxheWVyQ29udGV4dDogUGxheWVyQ29udGV4dCk6IFBsYXllcltdIHtcbiAgY29uc3QgcGxheWVyczogUGxheWVyW10gPSBbXTtcbiAgY29uc3Qgbm9uRmFjdG9yeVBsYXllcnNTdGFydCA9IHBsYXllckNvbnRleHRbUGxheWVySW5kZXguTm9uQnVpbGRlclBsYXllcnNTdGFydF07XG5cbiAgLy8gYWRkIGFsbCBmYWN0b3J5LWJhc2VkIHBsYXllcnMgKHdoaWNoIGFyZSBhcGFydCBvZiBbc3R5bGVdIGFuZCBbY2xhc3NdIGJpbmRpbmdzKVxuICBmb3IgKGxldCBpID0gUGxheWVySW5kZXguUGxheWVyQnVpbGRlcnNTdGFydFBvc2l0aW9uICsgUGxheWVySW5kZXguUGxheWVyT2Zmc2V0UG9zaXRpb247XG4gICAgICAgaSA8IG5vbkZhY3RvcnlQbGF5ZXJzU3RhcnQ7IGkgKz0gUGxheWVySW5kZXguUGxheWVyQW5kUGxheWVyQnVpbGRlcnNUdXBsZVNpemUpIHtcbiAgICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJDb250ZXh0W2ldIGFzIFBsYXllciB8IG51bGw7XG4gICAgaWYgKHBsYXllcikge1xuICAgICAgcGxheWVycy5wdXNoKHBsYXllcik7XG4gICAgfVxuICB9XG5cbiAgLy8gYWRkIGFsbCBjdXN0b20gcGxheWVycyAobm90IGFwYXJ0IG9mIFtzdHlsZV0gYW5kIFtjbGFzc10gYmluZGluZ3MpXG4gIGZvciAobGV0IGkgPSBub25GYWN0b3J5UGxheWVyc1N0YXJ0OyBpIDwgcGxheWVyQ29udGV4dC5sZW5ndGg7IGkrKykge1xuICAgIHBsYXllcnMucHVzaChwbGF5ZXJDb250ZXh0W2ldIGFzIFBsYXllcik7XG4gIH1cblxuICByZXR1cm4gcGxheWVycztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JDcmVhdGVQbGF5ZXJDb250ZXh0KHRhcmdldDoge30sIGNvbnRleHQ/OiBMQ29udGV4dCB8IG51bGwpOiBQbGF5ZXJDb250ZXh0fFxuICAgIG51bGwge1xuICBjb250ZXh0ID0gY29udGV4dCB8fCBnZXRDb250ZXh0KHRhcmdldCkgITtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgbmdEZXZNb2RlICYmIHRocm93SW52YWxpZFJlZkVycm9yKCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7bFZpZXdEYXRhLCBub2RlSW5kZXh9ID0gY29udGV4dDtcbiAgY29uc3Qgc3R5bGluZ0NvbnRleHQgPSBnZXRTdHlsaW5nQ29udGV4dChub2RlSW5kZXggLSBIRUFERVJfT0ZGU0VULCBsVmlld0RhdGEpO1xuICByZXR1cm4gZ2V0UGxheWVyQ29udGV4dChzdHlsaW5nQ29udGV4dCkgfHwgYWxsb2NQbGF5ZXJDb250ZXh0KHN0eWxpbmdDb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBsYXllckNvbnRleHQoc3R5bGluZ0NvbnRleHQ6IFN0eWxpbmdDb250ZXh0KTogUGxheWVyQ29udGV4dHxudWxsIHtcbiAgcmV0dXJuIHN0eWxpbmdDb250ZXh0W1N0eWxpbmdJbmRleC5QbGF5ZXJDb250ZXh0XTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG9jUGxheWVyQ29udGV4dChkYXRhOiBTdHlsaW5nQ29udGV4dCk6IFBsYXllckNvbnRleHQge1xuICByZXR1cm4gZGF0YVtTdHlsaW5nSW5kZXguUGxheWVyQ29udGV4dF0gPVxuICAgICAgICAgICAgIFtQbGF5ZXJJbmRleC5TaW5nbGVQbGF5ZXJCdWlsZGVyc1N0YXJ0UG9zaXRpb24sIG51bGwsIG51bGwsIG51bGwsIG51bGxdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dJbnZhbGlkUmVmRXJyb3IoKSB7XG4gIHRocm93IG5ldyBFcnJvcignT25seSBlbGVtZW50cyB0aGF0IGV4aXN0IGluIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24gY2FuIGJlIHVzZWQgZm9yIGFuaW1hdGlvbnMnKTtcbn1cbiJdfQ==
@@ -11,8 +11,9 @@
11
11
  */
12
12
  import { devModeEqual } from '../change_detection/change_detection_util';
13
13
  import { assertDefined, assertLessThan } from './assert';
14
- import { readElementValue, readPatchedLViewData } from './context_discovery';
15
- import { CONTEXT, FLAGS, HEADER_OFFSET, PARENT } from './interfaces/view';
14
+ import { ACTIVE_INDEX } from './interfaces/container';
15
+ import { MONKEY_PATCH_KEY_NAME } from './interfaces/context';
16
+ import { CONTEXT, FLAGS, HEADER_OFFSET, HOST, PARENT, TVIEW } from './interfaces/view';
16
17
  /**
17
18
  * Returns whether the values are different from a change detection stand point.
18
19
  *
@@ -43,15 +44,6 @@ export function stringify(value) {
43
44
  return '';
44
45
  return '' + value;
45
46
  }
46
- /**
47
- * Function that throws a "not implemented" error so it's clear certain
48
- * behaviors/methods aren't yet ready.
49
- *
50
- * @return {?} Not implemented error
51
- */
52
- export function notImplemented() {
53
- return new Error('NotImplemented');
54
- }
55
47
  /**
56
48
  * Flattens an array in non-recursive way. Input arrays are not modified.
57
49
  * @param {?} list
@@ -101,27 +93,59 @@ export function assertDataInRangeInternal(index, arr) {
101
93
  assertLessThan(index, arr ? arr.length : 0, 'index expected to be a valid data index');
102
94
  }
103
95
  /**
104
- * Retrieves an element value from the provided `viewData`.
96
+ * Takes the value of a slot in `LViewData` and returns the element node.
97
+ *
98
+ * Normally, element nodes are stored flat, but if the node has styles/classes on it,
99
+ * it might be wrapped in a styling context. Or if that node has a directive that injects
100
+ * ViewContainerRef, it may be wrapped in an LContainer. Or if that node is a component,
101
+ * it will be wrapped in LViewData. It could even have all three, so we keep looping
102
+ * until we find something that isn't an array.
105
103
  *
106
- * Elements that are read may be wrapped in a style context,
107
- * therefore reading the value may involve unwrapping that.
104
+ * @param {?} value The initial value in `LViewData`
105
+ * @return {?}
106
+ */
107
+ export function readElementValue(value) {
108
+ while (Array.isArray(value)) {
109
+ value = /** @type {?} */ (value[HOST]);
110
+ }
111
+ return value;
112
+ }
113
+ /**
114
+ * Retrieves an element value from the provided `viewData`, by unwrapping
115
+ * from any containers, component views, or style contexts.
108
116
  * @param {?} index
109
117
  * @param {?} arr
110
118
  * @return {?}
111
119
  */
112
- export function loadElementInternal(index, arr) {
113
- /** @type {?} */
114
- const value = loadInternal(index, arr);
115
- return readElementValue(value);
120
+ export function getNativeByIndex(index, arr) {
121
+ return readElementValue(arr[index + HEADER_OFFSET]);
116
122
  }
117
123
  /**
118
124
  * @param {?} tNode
119
125
  * @param {?} hostView
120
126
  * @return {?}
121
127
  */
122
- export function getLNode(tNode, hostView) {
128
+ export function getNativeByTNode(tNode, hostView) {
123
129
  return readElementValue(hostView[tNode.index]);
124
130
  }
131
+ /**
132
+ * @param {?} index
133
+ * @param {?} view
134
+ * @return {?}
135
+ */
136
+ export function getTNode(index, view) {
137
+ return /** @type {?} */ (view[TVIEW].data[index + HEADER_OFFSET]);
138
+ }
139
+ /**
140
+ * @param {?} nodeIndex
141
+ * @param {?} hostView
142
+ * @return {?}
143
+ */
144
+ export function getComponentViewByIndex(nodeIndex, hostView) {
145
+ /** @type {?} */
146
+ const slotValue = hostView[nodeIndex];
147
+ return slotValue.length >= HEADER_OFFSET ? slotValue : slotValue[HOST];
148
+ }
125
149
  /**
126
150
  * @param {?} tNode
127
151
  * @return {?}
@@ -136,6 +160,14 @@ export function isContentQueryHost(tNode) {
136
160
  export function isComponent(tNode) {
137
161
  return (tNode.flags & 4096 /* isComponent */) === 4096 /* isComponent */;
138
162
  }
163
+ /**
164
+ * @param {?} value
165
+ * @return {?}
166
+ */
167
+ export function isLContainer(value) {
168
+ // Styling contexts are also arrays, but their first index contains an element node
169
+ return Array.isArray(value) && typeof value[ACTIVE_INDEX] === 'number';
170
+ }
139
171
  /**
140
172
  * Retrieve the root view from any component by walking the parent `LViewData` until
141
173
  * reaching the root `LViewData`.
@@ -159,5 +191,26 @@ export function getRootView(target) {
159
191
  export function getRootContext(viewOrComponent) {
160
192
  return /** @type {?} */ (getRootView(viewOrComponent)[CONTEXT]);
161
193
  }
194
+ /**
195
+ * Returns the monkey-patch value data present on the target (which could be
196
+ * a component, directive or a DOM node).
197
+ * @param {?} target
198
+ * @return {?}
199
+ */
200
+ export function readPatchedData(target) {
201
+ return target[MONKEY_PATCH_KEY_NAME];
202
+ }
203
+ /**
204
+ * @param {?} target
205
+ * @return {?}
206
+ */
207
+ export function readPatchedLViewData(target) {
208
+ /** @type {?} */
209
+ const value = readPatchedData(target);
210
+ if (value) {
211
+ return Array.isArray(value) ? value : (/** @type {?} */ (value)).lViewData;
212
+ }
213
+ return null;
214
+ }
162
215
 
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUV2RSxPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUUzRSxPQUFPLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQXlCLE1BQU0sRUFBNEIsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7OztBQVMxSCxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsa0JBQTJCO0lBQ3JFLElBQUksU0FBUyxJQUFJLGtCQUFrQixFQUFFO1FBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzVCOzs7SUFHRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3pDOzs7OztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNsQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFVBQVU7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO0lBQzNELElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzNDLElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7Q0FDbkI7Ozs7Ozs7QUFRRCxNQUFNLFVBQVUsY0FBYztJQUM1QixPQUFPLElBQUks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Q0FDN0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7ZGV2TW9kZUVxdWFsfSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rpb25fdXRpbCc7XG5cbmltcG9ydCB7YXNzZXJ0RGVmaW5lZCwgYXNzZXJ0TGVzc1RoYW59IGZyb20gJy4vYXNzZXJ0JztcbmltcG9ydCB7cmVhZEVsZW1lbnRWYWx1ZSwgcmVhZFBhdGNoZWRMVmlld0RhdGF9IGZyb20gJy4vY29udGV4dF9kaXNjb3ZlcnknO1xuaW1wb3J0IHtMQ29udGFpbmVyTm9kZSwgTEVsZW1lbnRDb250YWluZXJOb2RlLCBMRWxlbWVudE5vZGUsIFROb2RlLCBUTm9kZUZsYWdzfSBmcm9tICcuL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQge0NPTlRFWFQsIEZMQUdTLCBIRUFERVJfT0ZGU0VULCBMVmlld0RhdGEsIExWaWV3RmxhZ3MsIFBBUkVOVCwgUm9vdENvbnRleHQsIFREYXRhLCBUVklFV30gZnJvbSAnLi9pbnRlcmZhY2VzL3ZpZXcnO1xuXG5cblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHZhbHVlcyBhcmUgZGlmZmVyZW50IGZyb20gYSBjaGFuZ2UgZGV0ZWN0aW9uIHN0YW5kIHBvaW50LlxuICpcbiAqIENvbnN0cmFpbnRzIGFyZSByZWxheGVkIGluIGNoZWNrTm9DaGFuZ2VzIG1vZGUuIFNlZSBgZGV2TW9kZUVxdWFsYCBmb3IgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGlmZmVyZW50KGE6IGFueSwgYjogYW55LCBjaGVja05vQ2hhbmdlc01vZGU6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgaWYgKG5nRGV2TW9kZSAmJiBjaGVja05vQ2hhbmdlc01vZGUpIHtcbiAgICByZXR1cm4gIWRldk1vZGVFcXVhbChhLCBiKTtcbiAgfVxuICAvLyBOYU4gaXMgdGhlIG9ubHkgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwgdG8gaXRzZWxmIHNvIHRoZSBmaXJzdFxuICAvLyB0ZXN0IGNoZWNrcyBpZiBib3RoIGEgYW5kIGIgYXJlIG5vdCBOYU5cbiAgcmV0dXJuICEoYSAhPT0gYSAmJiBiICE9PSBiKSAmJiBhICE9PSBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHJldHVybiB2YWx1ZS5uYW1lIHx8IHZhbHVlO1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XG4gIHJldHVybiAnJyArIHZhbHVlO1xufVxuXG4vKipcbiAqICBGdW5jdGlvbiB0aGF0IHRocm93cyBhIFwibm90IGltcGxlbWVudGVkXCIgZXJyb3Igc28gaXQncyBjbGVhciBjZXJ0YWluXG4gKiAgYmVoYXZpb3JzL21ldGhvZHMgYXJlbid0IHlldCByZWFkeS5cbiAqXG4gKiBAcmV0dXJucyBOb3QgaW1wbGVtZW50ZWQgZXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdEltcGxlbWVudGVkKCk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcignTm90SW1wbGVtZW50ZWQnKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVucyBhbiBhcnJheSBpbiBub24tcmVjdXJzaXZlIHdheS4gSW5wdXQgYXJyYXlzIGFyZSBub3QgbW9kaWZpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKGxpc3Q6IGFueVtdKTogYW55W10ge1xuICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gIGxldCBpID0gMDtcblxuICB3aGlsZSAoaSA8IGxpc3QubGVuZ3RoKSB7XG4gICAgY29uc3QgaXRlbSA9IGxpc3RbaV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGlmIChpdGVtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGlzdCA9IGl0ZW0uY29uY2F0KGxpc3Quc2xpY2UoaSArIDEpKTtcbiAgICAgICAgaSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmcm9tIGFueSBgTFZpZXdEYXRhYCBvciBgVERhdGFgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRJbnRlcm5hbDxUPihpbmRleDogbnVtYmVyLCBhcnI6IExWaWV3RGF0YSB8IFREYXRhKTogVCB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnREYXRhSW5SYW5nZUludGVybmFsKGluZGV4ICsgSEVBREVSX09GRlNFVCwgYXJyKTtcbiAgcmV0dXJuIGFycltpbmRleCArIEhFQURFUl9PRkZTRVRdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGF0YUluUmFuZ2VJbnRlcm5hbChpbmRleDogbnVtYmVyLCBhcnI6IGFueVtdKSB7XG4gIGFzc2VydExlc3NUaGFuKGluZGV4LCBhcnIgPyBhcnIubGVuZ3RoIDogMCwgJ2luZGV4IGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgZGF0YSBpbmRleCcpO1xufVxuXG4vKiogUmV0cmlldmVzIGFuIGVsZW1lbnQgdmFsdWUgZnJvbSB0aGUgcHJvdmlkZWQgYHZpZXdEYXRhYC5cbiAgKlxuICAqIEVsZW1lbnRzIHRoYXQgYXJlIHJlYWQgbWF5IGJlIHdyYXBwZWQgaW4gYSBzdHlsZSBjb250ZXh0LFxuICAqIHRoZXJlZm9yZSByZWFkaW5nIHRoZSB2YWx1ZSBtYXkgaW52b2x2ZSB1bndyYXBwaW5nIHRoYXQuXG4gICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVsZW1lbnRJbnRlcm5hbChpbmRleDogbnVtYmVyLCBhcnI6IExWaWV3RGF0YSk6IExFbGVtZW50Tm9kZSB7XG4gIGNvbnN0IHZhbHVlID0gbG9hZEludGVybmFsPExFbGVtZW50Tm9kZT4oaW5kZXgsIGFycik7XG4gIHJldHVybiByZWFkRWxlbWVudFZhbHVlKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExOb2RlKHROb2RlOiBUTm9kZSwgaG9zdFZpZXc6IExWaWV3RGF0YSk6IExFbGVtZW50Tm9kZXxMQ29udGFpbmVyTm9kZXxcbiAgICBMRWxlbWVudENvbnRhaW5lck5vZGUge1xuICByZXR1cm4gcmVhZEVsZW1lbnRWYWx1ZShob3N0Vmlld1t0Tm9kZS5pbmRleF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb250ZW50UXVlcnlIb3N0KHROb2RlOiBUTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHROb2RlLmZsYWdzICYgVE5vZGVGbGFncy5oYXNDb250ZW50UXVlcnkpICE9PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wb25lbnQodE5vZGU6IFROb2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiAodE5vZGUuZmxhZ3MgJiBUTm9kZUZsYWdzLmlzQ29tcG9uZW50KSA9PT0gVE5vZGVGbGFncy5pc0NvbXBvbmVudDtcbn1cbi8qKlxuICogUmV0cmlldmUgdGhlIHJvb3QgdmlldyBmcm9tIGFueSBjb21wb25lbnQgYnkgd2Fsa2luZyB0aGUgcGFyZW50IGBMVmlld0RhdGFgIHVudGlsXG4gKiByZWFjaGluZyB0aGUgcm9vdCBgTFZpZXdEYXRhYC5cbiAqXG4gKiBAcGFyYW0gY29tcG9uZW50IGFueSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RWaWV3KHRhcmdldDogTFZpZXdEYXRhIHwge30pOiBMVmlld0RhdGEge1xuICBuZ0Rldk1vZGUgJiYgYXNzZXJ0RGVmaW5lZCh0YXJnZXQsICdjb21wb25lbnQnKTtcbiAgbGV0IGxWaWV3RGF0YSA9IEFycmF5LmlzQXJyYXkodGFyZ2V0KSA/ICh0YXJnZXQgYXMgTFZpZXdEYXRhKSA6IHJlYWRQYXRjaGVkTFZpZXdEYXRhKHRhcmdldCkgITtcbiAgd2hpbGUgKGxWaWV3RGF0YSAmJiAhKGxWaWV3RGF0YVtGTEFHU10gJiBMVmlld0ZsYWdzLklzUm9vdCkpIHtcbiAgICBsVmlld0RhdGEgPSBsVmlld0RhdGFbUEFSRU5UXSAhO1xuICB9XG4gIHJldHVybiBsVmlld0RhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290Q29udGV4dCh2aWV3T3JDb21wb25lbnQ6IExWaWV3RGF0YSB8IHt9KTogUm9vdENvbnRleHQge1xuICByZXR1cm4gZ2V0Um9vdFZpZXcodmlld09yQ29tcG9uZW50KVtDT05URVhUXSBhcyBSb290Q29udGV4dDtcbn1cbiJdfQ==
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUV2RSxPQUFPLEVBQUMsYUFBYSxFQUFFLGNBQWMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFXLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJckUsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBeUIsTUFBTSxFQUFzQixLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7OztBQVFoSSxNQUFNLFVBQVUsV0FBVyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsa0JBQTJCO0lBQ3JFLElBQUksU0FBUyxJQUFJLGtCQUFrQixFQUFFO1FBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzVCOzs7SUFHRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ3pDOzs7OztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBVTtJQUNsQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFVBQVU7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO0lBQzNELElBQUksT0FBTyxLQUFLLElBQUksUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzNDLElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixPQUFPLEVBQUUsR0FBRyxLQUFLLENB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b250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtkZXZNb2RlRXF1YWx9IGZyb20gJy4uL2NoYW5nZV9kZXRlY3Rpb24vY2hhbmdlX2RldGVjdGlvbl91dGlsJztcblxuaW1wb3J0IHthc3NlcnREZWZpbmVkLCBhc3NlcnRMZXNzVGhhbn0gZnJvbSAnLi9hc3NlcnQnO1xuaW1wb3J0IHtBQ1RJVkVfSU5ERVgsIExDb250YWluZXJ9IGZyb20gJy4vaW50ZXJmYWNlcy9jb250YWluZXInO1xuaW1wb3J0IHtMQ29udGV4dCwgTU9OS0VZX1BBVENIX0tFWV9OQU1FfSBmcm9tICcuL2ludGVyZmFjZXMvY29udGV4dCc7XG5pbXBvcnQge1ROb2RlLCBUTm9kZUZsYWdzfSBmcm9tICcuL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQge1JDb21tZW50LCBSRWxlbWVudCwgUlRleHR9IGZyb20gJy4vaW50ZXJmYWNlcy9yZW5kZXJlcic7XG5pbXBvcnQge1N0eWxpbmdDb250ZXh0fSBmcm9tICcuL2ludGVyZmFjZXMvc3R5bGluZyc7XG5pbXBvcnQge0NPTlRFWFQsIEZMQUdTLCBIRUFERVJfT0ZGU0VULCBIT1NULCBMVmlld0RhdGEsIExWaWV3RmxhZ3MsIFBBUkVOVCwgUm9vdENvbnRleHQsIFREYXRhLCBUVklFV30gZnJvbSAnLi9pbnRlcmZhY2VzL3ZpZXcnO1xuXG5cbi8qKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCBmcm9tIGEgY2hhbmdlIGRldGVjdGlvbiBzdGFuZCBwb2ludC5cbiAqXG4gKiBDb25zdHJhaW50cyBhcmUgcmVsYXhlZCBpbiBjaGVja05vQ2hhbmdlcyBtb2RlLiBTZWUgYGRldk1vZGVFcXVhbGAgZm9yIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RpZmZlcmVudChhOiBhbnksIGI6IGFueSwgY2hlY2tOb0NoYW5nZXNNb2RlOiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGlmIChuZ0Rldk1vZGUgJiYgY2hlY2tOb0NoYW5nZXNNb2RlKSB7XG4gICAgcmV0dXJuICFkZXZNb2RlRXF1YWwoYSwgYik7XG4gIH1cbiAgLy8gTmFOIGlzIHRoZSBvbmx5IHZhbHVlIHRoYXQgaXMgbm90IGVxdWFsIHRvIGl0c2VsZiBzbyB0aGUgZmlyc3RcbiAgLy8gdGVzdCBjaGVja3MgaWYgYm90aCBhIGFuZCBiIGFyZSBub3QgTmFOXG4gIHJldHVybiAhKGEgIT09IGEgJiYgYiAhPT0gYikgJiYgYSAhPT0gYjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsdWUubmFtZSB8fCB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykgcmV0dXJuIHZhbHVlO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnO1xuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cblxuLyoqXG4gKiBGbGF0dGVucyBhbiBhcnJheSBpbiBub24tcmVjdXJzaXZlIHdheS4gSW5wdXQgYXJyYXlzIGFyZSBub3QgbW9kaWZpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKGxpc3Q6IGFueVtdKTogYW55W10ge1xuICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gIGxldCBpID0gMDtcblxuICB3aGlsZSAoaSA8IGxpc3QubGVuZ3RoKSB7XG4gICAgY29uc3QgaXRlbSA9IGxpc3RbaV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGlmIChpdGVtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGlzdCA9IGl0ZW0uY29uY2F0KGxpc3Quc2xpY2UoaSArIDEpKTtcbiAgICAgICAgaSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmcm9tIGFueSBgTFZpZXdEYXRhYCBvciBgVERhdGFgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRJbnRlcm5hbDxUPihpbmRleDogbnVtYmVyLCBhcnI6IExWaWV3RGF0YSB8IFREYXRhKTogVCB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnREYXRhSW5SYW5nZUludGVybmFsKGluZGV4ICsgSEVBREVSX09GRlNFVCwgYXJyKTtcbiAgcmV0dXJuIGFycltpbmRleCArIEhFQURFUl9PRkZTRVRdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGF0YUluUmFuZ2VJbnRlcm5hbChpbmRleDogbnVtYmVyLCBhcnI6IGFueVtdKSB7XG4gIGFzc2VydExlc3NUaGFuKGluZGV4LCBhcnIgPyBhcnIubGVuZ3RoIDogMCwgJ2luZGV4IGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgZGF0YSBpbmRleCcpO1xufVxuXG4vKipcbiAqIFRha2VzIHRoZSB2YWx1ZSBvZiBhIHNsb3QgaW4gYExWaWV3RGF0YWAgYW5kIHJldHVybnMgdGhlIGVsZW1lbnQgbm9kZS5cbiAqXG4gKiBOb3JtYWxseSwgZWxlbWVudCBub2RlcyBhcmUgc3RvcmVkIGZsYXQsIGJ1dCBpZiB0aGUgbm9kZSBoYXMgc3R5bGVzL2NsYXNzZXMgb24gaXQsXG4gKiBpdCBtaWdodCBiZSB3cmFwcGVkIGluIGEgc3R5bGluZyBjb250ZXh0LiBPciBpZiB0aGF0IG5vZGUgaGFzIGEgZGlyZWN0aXZlIHRoYXQgaW5qZWN0c1xuICogVmlld0NvbnRhaW5lclJlZiwgaXQgbWF5IGJlIHdyYXBwZWQgaW4gYW4gTENvbnRhaW5lci4gT3IgaWYgdGhhdCBub2RlIGlzIGEgY29tcG9uZW50LFxuICogaXQgd2lsbCBiZSB3cmFwcGVkIGluIExWaWV3RGF0YS4gSXQgY291bGQgZXZlbiBoYXZlIGFsbCB0aHJlZSwgc28gd2Uga2VlcCBsb29waW5nXG4gKiB1bnRpbCB3ZSBmaW5kIHNvbWV0aGluZyB0aGF0IGlzbid0IGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgaW5pdGlhbCB2YWx1ZSBpbiBgTFZpZXdEYXRhYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZEVsZW1lbnRWYWx1ZSh2YWx1ZTogUkVsZW1lbnQgfCBTdHlsaW5nQ29udGV4dCB8IExDb250YWluZXIgfCBMVmlld0RhdGEpOlxuICAgIFJFbGVtZW50IHtcbiAgd2hpbGUgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdmFsdWUgPSB2YWx1ZVtIT1NUXSBhcyBhbnk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhbiBlbGVtZW50IHZhbHVlIGZyb20gdGhlIHByb3ZpZGVkIGB2aWV3RGF0YWAsIGJ5IHVud3JhcHBpbmdcbiAqIGZyb20gYW55IGNvbnRhaW5lcnMsIGNvbXBvbmVudCB2aWV3cywgb3Igc3R5bGUgY29udGV4dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVCeUluZGV4KGluZGV4OiBudW1iZXIsIGFycjogTFZpZXdEYXRhKTogUkVsZW1lbnQge1xuICByZXR1cm4gcmVhZEVsZW1lbnRWYWx1ZShhcnJbaW5kZXggKyBIRUFERVJfT0ZGU0VUXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVCeVROb2RlKHROb2RlOiBUTm9kZSwgaG9zdFZpZXc6IExWaWV3RGF0YSk6IFJFbGVtZW50fFJUZXh0fFJDb21tZW50IHtcbiAgcmV0dXJuIHJlYWRFbGVtZW50VmFsdWUoaG9zdFZpZXdbdE5vZGUuaW5kZXhdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFROb2RlKGluZGV4OiBudW1iZXIsIHZpZXc6IExWaWV3RGF0YSk6IFROb2RlIHtcbiAgcmV0dXJuIHZpZXdbVFZJRVddLmRhdGFbaW5kZXggKyBIRUFERVJfT0ZGU0VUXSBhcyBUTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXBvbmVudFZpZXdCeUluZGV4KG5vZGVJbmRleDogbnVtYmVyLCBob3N0VmlldzogTFZpZXdEYXRhKTogTFZpZXdEYXRhIHtcbiAgLy8gQ291bGQgYmUgYW4gTFZpZXdEYXRhIG9yIGFuIExDb250YWluZXIuIElmIExDb250YWluZXIsIHVud3JhcCB0byBmaW5kIExWaWV3RGF0YS5cbiAgY29uc3Qgc2xvdFZhbHVlID0gaG9zdFZpZXdbbm9kZUluZGV4XTtcbiAgcmV0dXJuIHNsb3RWYWx1ZS5sZW5ndGggPj0gSEVBREVSX09GRlNFVCA/IHNsb3RWYWx1ZSA6IHNsb3RWYWx1ZVtIT1NUXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGVudFF1ZXJ5SG9zdCh0Tm9kZTogVE5vZGUpOiBib29sZWFuIHtcbiAgcmV0dXJuICh0Tm9kZS5mbGFncyAmIFROb2RlRmxhZ3MuaGFzQ29udGVudFF1ZXJ5KSAhPT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9uZW50KHROb2RlOiBUTm9kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHROb2RlLmZsYWdzICYgVE5vZGVGbGFncy5pc0NvbXBvbmVudCkgPT09IFROb2RlRmxhZ3MuaXNDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xDb250YWluZXIodmFsdWU6IFJFbGVtZW50IHwgUkNvbW1lbnQgfCBMQ29udGFpbmVyIHwgU3R5bGluZ0NvbnRleHQpOiBib29sZWFuIHtcbiAgLy8gU3R5bGluZyBjb250ZXh0cyBhcmUgYWxzbyBhcnJheXMsIGJ1dCB0aGVpciBmaXJzdCBpbmRleCBjb250YWlucyBhbiBlbGVtZW50IG5vZGVcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHR5cGVvZiB2YWx1ZVtBQ1RJVkVfSU5ERVhdID09PSAnbnVtYmVyJztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgcm9vdCB2aWV3IGZyb20gYW55IGNvbXBvbmVudCBieSB3YWxraW5nIHRoZSBwYXJlbnQgYExWaWV3RGF0YWAgdW50aWxcbiAqIHJlYWNoaW5nIHRoZSByb290IGBMVmlld0RhdGFgLlxuICpcbiAqIEBwYXJhbSBjb21wb25lbnQgYW55IGNvbXBvbmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9vdFZpZXcodGFyZ2V0OiBMVmlld0RhdGEgfCB7fSk6IExWaWV3RGF0YSB7XG4gIG5nRGV2TW9kZSAmJiBhc3NlcnREZWZpbmVkKHRhcmdldCwgJ2NvbXBvbmVudCcpO1xuICBsZXQgbFZpZXdEYXRhID0gQXJyYXkuaXNBcnJheSh0YXJnZXQpID8gKHRhcmdldCBhcyBMVmlld0RhdGEpIDogcmVhZFBhdGNoZWRMVmlld0RhdGEodGFyZ2V0KSAhO1xuICB3aGlsZSAobFZpZXdEYXRhICYmICEobFZpZXdEYXRhW0ZMQUdTXSAmIExWaWV3RmxhZ3MuSXNSb290KSkge1xuICAgIGxWaWV3RGF0YSA9IGxWaWV3RGF0YVtQQVJFTlRdICE7XG4gIH1cbiAgcmV0dXJuIGxWaWV3RGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RDb250ZXh0KHZpZXdPckNvbXBvbmVudDogTFZpZXdEYXRhIHwge30pOiBSb290Q29udGV4dCB7XG4gIHJldHVybiBnZXRSb290Vmlldyh2aWV3T3JDb21wb25lbnQpW0NPTlRFWFRdIGFzIFJvb3RDb250ZXh0O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG1vbmtleS1wYXRjaCB2YWx1ZSBkYXRhIHByZXNlbnQgb24gdGhlIHRhcmdldCAod2hpY2ggY291bGQgYmVcbiAqIGEgY29tcG9uZW50LCBkaXJlY3RpdmUgb3IgYSBET00gbm9kZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkUGF0Y2hlZERhdGEodGFyZ2V0OiBhbnkpOiBMVmlld0RhdGF8TENvbnRleHR8bnVsbCB7XG4gIHJldHVybiB0YXJnZXRbTU9OS0VZX1BBVENIX0tFWV9OQU1FXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRQYXRjaGVkTFZpZXdEYXRhKHRhcmdldDogYW55KTogTFZpZXdEYXRhfG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHJlYWRQYXRjaGVkRGF0YSh0YXJnZXQpO1xuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6ICh2YWx1ZSBhcyBMQ29udGV4dCkubFZpZXdEYXRhO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19