@rocketshow/designer 1.32.0 → 1.33.0

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 (339) hide show
  1. package/esm2022/lib/array-sort-pipe.mjs +30 -0
  2. package/esm2022/lib/designer.component.mjs +605 -0
  3. package/esm2022/lib/designer.module.mjs +183 -0
  4. package/esm2022/lib/designer.service.mjs +14 -0
  5. package/esm2022/lib/effect/effect-curve/effect-curve.component.mjs +569 -0
  6. package/esm2022/lib/effect/effect-pan-tilt/effect-pan-tilt.component.mjs +36 -0
  7. package/esm2022/lib/effect/effect.component.mjs +174 -0
  8. package/esm2022/lib/error-dialog/error-dialog.component.mjs +75 -0
  9. package/esm2022/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.mjs +222 -0
  10. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.mjs +147 -0
  11. package/esm2022/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.mjs +213 -0
  12. package/esm2022/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.mjs +78 -0
  13. package/esm2022/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.mjs +119 -0
  14. package/esm2022/lib/fixture/fixture-capability/fixture-capability.component.mjs +169 -0
  15. package/esm2022/lib/fixture/fixture-channel/fixture-channel.component.mjs +160 -0
  16. package/esm2022/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.mjs +365 -0
  17. package/esm2022/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.mjs +151 -0
  18. package/esm2022/lib/fixture/fixture-settings/fixture-settings.component.mjs +46 -0
  19. package/esm2022/lib/fixture/fixture.component.mjs +138 -0
  20. package/esm2022/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.mjs +145 -0
  21. package/esm2022/lib/fixture-pool/fixture-pool.component.mjs +589 -0
  22. package/esm2022/lib/intro/intro.component.mjs +95 -0
  23. package/esm2022/lib/master-dimmer/master-dimmer.component.mjs +66 -0
  24. package/esm2022/lib/models/cached-fixture-capability.mjs +9 -0
  25. package/esm2022/lib/models/cached-fixture-channel.mjs +7 -0
  26. package/esm2022/lib/models/cached-fixture.mjs +6 -0
  27. package/esm2022/lib/models/color.mjs +8 -0
  28. package/esm2022/lib/models/composition.mjs +46 -0
  29. package/esm2022/lib/models/effect-curve-profile-channel.mjs +15 -0
  30. package/esm2022/lib/models/effect-curve.mjs +69 -0
  31. package/esm2022/lib/models/effect-pan-tilt.mjs +19 -0
  32. package/esm2022/lib/models/effect.mjs +12 -0
  33. package/esm2022/lib/models/fixture-capability-value.mjs +15 -0
  34. package/esm2022/lib/models/fixture-capability.mjs +84 -0
  35. package/esm2022/lib/models/fixture-channel-value.mjs +11 -0
  36. package/esm2022/lib/models/fixture-channel.mjs +24 -0
  37. package/esm2022/lib/models/fixture-mode.mjs +14 -0
  38. package/esm2022/lib/models/fixture-profile.mjs +70 -0
  39. package/esm2022/lib/models/fixture-wheel-slot.mjs +26 -0
  40. package/esm2022/lib/models/fixture-wheel.mjs +15 -0
  41. package/esm2022/lib/models/fixture.mjs +40 -0
  42. package/esm2022/lib/models/preset-region-scene.mjs +8 -0
  43. package/esm2022/lib/models/preset.mjs +56 -0
  44. package/esm2022/lib/models/project.mjs +68 -0
  45. package/esm2022/lib/models/scene-playback-region.mjs +11 -0
  46. package/esm2022/lib/models/scene.mjs +27 -0
  47. package/esm2022/lib/models/universe.mjs +11 -0
  48. package/esm2022/lib/preset/preset-settings/preset-settings.component.mjs +194 -0
  49. package/esm2022/lib/preset/preset.component.mjs +131 -0
  50. package/esm2022/lib/preview/models/color-changer-3d.mjs +167 -0
  51. package/esm2022/lib/preview/models/fixture-3d.mjs +150 -0
  52. package/esm2022/lib/preview/models/moving-head-3d.mjs +243 -0
  53. package/esm2022/lib/preview/preview.component.mjs +212 -0
  54. package/esm2022/lib/project/project-browser/project-browser.component.mjs +143 -0
  55. package/esm2022/lib/project/project-import/project-import.component.mjs +107 -0
  56. package/esm2022/lib/project/project-save/project-save.component.mjs +178 -0
  57. package/esm2022/lib/project/project-share/project-share.component.mjs +71 -0
  58. package/esm2022/lib/scene/scene-settings/scene-settings.component.mjs +146 -0
  59. package/esm2022/lib/scene/scene.component.mjs +110 -0
  60. package/esm2022/lib/services/animation.service.mjs +16 -0
  61. package/esm2022/lib/services/config.service.mjs +27 -0
  62. package/esm2022/lib/services/effect.service.mjs +14 -0
  63. package/esm2022/lib/services/error-dialog.service.mjs +39 -0
  64. package/esm2022/lib/services/fixture-pool.service.mjs +30 -0
  65. package/esm2022/lib/services/fixture.service.mjs +431 -0
  66. package/esm2022/lib/services/hotkey-target-exclude.service.mjs +24 -0
  67. package/esm2022/lib/services/intro.service.mjs +140 -0
  68. package/esm2022/lib/services/preset.service.mjs +400 -0
  69. package/esm2022/lib/services/preview-mesh.service.mjs +57 -0
  70. package/esm2022/lib/services/preview.service.mjs +496 -0
  71. package/esm2022/lib/services/project-load.service.mjs +149 -0
  72. package/esm2022/lib/services/project.service.mjs +97 -0
  73. package/esm2022/lib/services/scene.service.mjs +164 -0
  74. package/esm2022/lib/services/timeline.service.mjs +726 -0
  75. package/esm2022/lib/services/universe.service.mjs +23 -0
  76. package/esm2022/lib/services/user-ensure-login.service.mjs +38 -0
  77. package/esm2022/lib/services/user.service.mjs +89 -0
  78. package/esm2022/lib/services/uuid.service.mjs +23 -0
  79. package/esm2022/lib/services/warning-dialog.service.mjs +38 -0
  80. package/esm2022/lib/timeline/composition-settings/composition-settings.component.mjs +334 -0
  81. package/esm2022/lib/timeline/timeline-grid/timeline-grid.component.mjs +216 -0
  82. package/esm2022/lib/timeline/timeline.component.mjs +418 -0
  83. package/esm2022/lib/user/user-login/user-login.component.mjs +144 -0
  84. package/esm2022/lib/user/user-register/user-register.component.mjs +220 -0
  85. package/esm2022/lib/wait-dialog/wait-dialog.component.mjs +26 -0
  86. package/esm2022/lib/warning-dialog/warning-dialog.component.mjs +68 -0
  87. package/esm2022/public_api.mjs +7 -0
  88. package/esm2022/rocketshow-designer.mjs +5 -0
  89. package/fesm2022/rocketshow-designer.mjs +10626 -0
  90. package/fesm2022/rocketshow-designer.mjs.map +1 -0
  91. package/index.d.ts +5 -0
  92. package/lib/array-sort-pipe.d.ts +3 -0
  93. package/lib/designer.component.d.ts +15 -12
  94. package/lib/designer.module.d.ts +54 -0
  95. package/lib/designer.service.d.ts +3 -0
  96. package/lib/effect/effect-curve/effect-curve.component.d.ts +4 -1
  97. package/lib/effect/effect-pan-tilt/effect-pan-tilt.component.d.ts +3 -0
  98. package/lib/effect/effect.component.d.ts +3 -0
  99. package/lib/error-dialog/error-dialog.component.d.ts +3 -0
  100. package/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.d.ts +4 -1
  101. package/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.d.ts +3 -0
  102. package/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.d.ts +5 -2
  103. package/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.d.ts +3 -0
  104. package/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.d.ts +3 -0
  105. package/lib/fixture/fixture-capability/fixture-capability.component.d.ts +3 -0
  106. package/lib/fixture/fixture-channel/fixture-channel.component.d.ts +3 -0
  107. package/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.d.ts +3 -0
  108. package/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.d.ts +3 -0
  109. package/lib/fixture/fixture-settings/fixture-settings.component.d.ts +3 -0
  110. package/lib/fixture/fixture.component.d.ts +3 -0
  111. package/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.d.ts +3 -0
  112. package/lib/fixture-pool/fixture-pool.component.d.ts +3 -0
  113. package/lib/intro/intro.component.d.ts +3 -0
  114. package/lib/master-dimmer/master-dimmer.component.d.ts +3 -0
  115. package/lib/preset/preset-settings/preset-settings.component.d.ts +3 -0
  116. package/lib/preset/preset.component.d.ts +3 -0
  117. package/lib/preview/preview.component.d.ts +4 -4
  118. package/lib/project/project-browser/project-browser.component.d.ts +3 -0
  119. package/lib/project/project-import/project-import.component.d.ts +3 -0
  120. package/lib/project/project-save/project-save.component.d.ts +3 -0
  121. package/lib/project/project-share/project-share.component.d.ts +3 -0
  122. package/lib/scene/scene-settings/scene-settings.component.d.ts +3 -0
  123. package/lib/scene/scene.component.d.ts +3 -0
  124. package/lib/services/animation.service.d.ts +3 -0
  125. package/lib/services/config.service.d.ts +3 -0
  126. package/lib/services/effect.service.d.ts +3 -0
  127. package/lib/services/error-dialog.service.d.ts +3 -0
  128. package/lib/services/fixture-pool.service.d.ts +3 -0
  129. package/lib/services/fixture.service.d.ts +3 -0
  130. package/lib/services/hotkey-target-exclude.service.d.ts +3 -0
  131. package/lib/services/intro.service.d.ts +3 -0
  132. package/lib/services/preset.service.d.ts +3 -0
  133. package/lib/services/preview-mesh.service.d.ts +3 -0
  134. package/lib/services/preview.service.d.ts +4 -0
  135. package/lib/services/project-load.service.d.ts +3 -0
  136. package/lib/services/project.service.d.ts +3 -0
  137. package/lib/services/scene.service.d.ts +3 -0
  138. package/lib/services/timeline.service.d.ts +4 -1
  139. package/lib/services/universe.service.d.ts +3 -0
  140. package/lib/services/user-ensure-login.service.d.ts +3 -0
  141. package/lib/services/user.service.d.ts +3 -0
  142. package/lib/services/uuid.service.d.ts +3 -0
  143. package/lib/services/warning-dialog.service.d.ts +3 -0
  144. package/lib/timeline/composition-settings/composition-settings.component.d.ts +3 -0
  145. package/lib/timeline/timeline-grid/timeline-grid.component.d.ts +3 -0
  146. package/lib/timeline/timeline.component.d.ts +3 -0
  147. package/lib/user/user-login/user-login.component.d.ts +3 -0
  148. package/lib/user/user-register/user-register.component.d.ts +3 -0
  149. package/lib/wait-dialog/wait-dialog.component.d.ts +3 -0
  150. package/lib/warning-dialog/warning-dialog.component.d.ts +3 -0
  151. package/package.json +20 -22
  152. package/rocketshow-designer-1.33.0.tgz +0 -0
  153. package/bundles/rocketshow-designer.umd.js +0 -9966
  154. package/bundles/rocketshow-designer.umd.js.map +0 -1
  155. package/bundles/rocketshow-designer.umd.min.js +0 -17
  156. package/bundles/rocketshow-designer.umd.min.js.map +0 -1
  157. package/esm2015/lib/array-sort-pipe.js +0 -28
  158. package/esm2015/lib/designer.component.js +0 -411
  159. package/esm2015/lib/designer.module.js +0 -117
  160. package/esm2015/lib/designer.service.js +0 -16
  161. package/esm2015/lib/effect/effect-curve/effect-curve.component.js +0 -325
  162. package/esm2015/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -30
  163. package/esm2015/lib/effect/effect.component.js +0 -73
  164. package/esm2015/lib/error-dialog/error-dialog.component.js +0 -42
  165. package/esm2015/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -141
  166. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -128
  167. package/esm2015/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -163
  168. package/esm2015/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -60
  169. package/esm2015/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -87
  170. package/esm2015/lib/fixture/fixture-capability/fixture-capability.component.js +0 -97
  171. package/esm2015/lib/fixture/fixture-channel/fixture-channel.component.js +0 -66
  172. package/esm2015/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -200
  173. package/esm2015/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -31
  174. package/esm2015/lib/fixture/fixture-settings/fixture-settings.component.js +0 -35
  175. package/esm2015/lib/fixture/fixture.component.js +0 -70
  176. package/esm2015/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -128
  177. package/esm2015/lib/fixture-pool/fixture-pool.component.js +0 -331
  178. package/esm2015/lib/intro/intro.component.js +0 -25
  179. package/esm2015/lib/master-dimmer/master-dimmer.component.js +0 -41
  180. package/esm2015/lib/models/cached-fixture-capability.js +0 -9
  181. package/esm2015/lib/models/cached-fixture-channel.js +0 -7
  182. package/esm2015/lib/models/cached-fixture.js +0 -6
  183. package/esm2015/lib/models/color.js +0 -8
  184. package/esm2015/lib/models/composition.js +0 -46
  185. package/esm2015/lib/models/effect-curve-profile-channel.js +0 -15
  186. package/esm2015/lib/models/effect-curve.js +0 -69
  187. package/esm2015/lib/models/effect-pan-tilt.js +0 -19
  188. package/esm2015/lib/models/effect.js +0 -12
  189. package/esm2015/lib/models/fixture-capability-value.js +0 -15
  190. package/esm2015/lib/models/fixture-capability.js +0 -84
  191. package/esm2015/lib/models/fixture-channel-value.js +0 -11
  192. package/esm2015/lib/models/fixture-channel.js +0 -24
  193. package/esm2015/lib/models/fixture-mode.js +0 -14
  194. package/esm2015/lib/models/fixture-profile.js +0 -70
  195. package/esm2015/lib/models/fixture-wheel-slot.js +0 -26
  196. package/esm2015/lib/models/fixture-wheel.js +0 -15
  197. package/esm2015/lib/models/fixture.js +0 -40
  198. package/esm2015/lib/models/preset-region-scene.js +0 -8
  199. package/esm2015/lib/models/preset.js +0 -56
  200. package/esm2015/lib/models/project.js +0 -68
  201. package/esm2015/lib/models/scene-playback-region.js +0 -11
  202. package/esm2015/lib/models/scene.js +0 -27
  203. package/esm2015/lib/models/universe.js +0 -11
  204. package/esm2015/lib/preset/preset-settings/preset-settings.component.js +0 -66
  205. package/esm2015/lib/preset/preset.component.js +0 -85
  206. package/esm2015/lib/preview/models/color-changer-3d.js +0 -167
  207. package/esm2015/lib/preview/models/fixture-3d.js +0 -150
  208. package/esm2015/lib/preview/models/moving-head-3d.js +0 -233
  209. package/esm2015/lib/preview/preview.component.js +0 -242
  210. package/esm2015/lib/project/project-browser/project-browser.component.js +0 -73
  211. package/esm2015/lib/project/project-import/project-import.component.js +0 -89
  212. package/esm2015/lib/project/project-save/project-save.component.js +0 -105
  213. package/esm2015/lib/project/project-share/project-share.component.js +0 -43
  214. package/esm2015/lib/scene/scene-settings/scene-settings.component.js +0 -52
  215. package/esm2015/lib/scene/scene.component.js +0 -56
  216. package/esm2015/lib/services/animation.service.js +0 -17
  217. package/esm2015/lib/services/config.service.js +0 -28
  218. package/esm2015/lib/services/effect.service.js +0 -16
  219. package/esm2015/lib/services/error-dialog.service.js +0 -44
  220. package/esm2015/lib/services/fixture-pool.service.js +0 -34
  221. package/esm2015/lib/services/fixture.service.js +0 -443
  222. package/esm2015/lib/services/hotkey-target-exclude.service.js +0 -26
  223. package/esm2015/lib/services/intro.service.js +0 -144
  224. package/esm2015/lib/services/preset.service.js +0 -416
  225. package/esm2015/lib/services/preview-mesh.service.js +0 -58
  226. package/esm2015/lib/services/preview.service.js +0 -500
  227. package/esm2015/lib/services/project-load.service.js +0 -171
  228. package/esm2015/lib/services/project.service.js +0 -113
  229. package/esm2015/lib/services/scene.service.js +0 -174
  230. package/esm2015/lib/services/timeline.service.js +0 -738
  231. package/esm2015/lib/services/universe.service.js +0 -24
  232. package/esm2015/lib/services/user-ensure-login.service.js +0 -44
  233. package/esm2015/lib/services/user.service.js +0 -93
  234. package/esm2015/lib/services/uuid.service.js +0 -25
  235. package/esm2015/lib/services/warning-dialog.service.js +0 -43
  236. package/esm2015/lib/timeline/composition-settings/composition-settings.component.js +0 -197
  237. package/esm2015/lib/timeline/timeline-grid/timeline-grid.component.js +0 -55
  238. package/esm2015/lib/timeline/timeline.component.js +0 -239
  239. package/esm2015/lib/user/user-login/user-login.component.js +0 -64
  240. package/esm2015/lib/user/user-register/user-register.component.js +0 -89
  241. package/esm2015/lib/wait-dialog/wait-dialog.component.js +0 -16
  242. package/esm2015/lib/warning-dialog/warning-dialog.component.js +0 -42
  243. package/esm2015/public_api.js +0 -7
  244. package/esm2015/rocketshow-designer.js +0 -61
  245. package/esm5/lib/array-sort-pipe.js +0 -31
  246. package/esm5/lib/designer.component.js +0 -468
  247. package/esm5/lib/designer.module.js +0 -120
  248. package/esm5/lib/designer.service.js +0 -17
  249. package/esm5/lib/effect/effect-curve/effect-curve.component.js +0 -386
  250. package/esm5/lib/effect/effect-pan-tilt/effect-pan-tilt.component.js +0 -31
  251. package/esm5/lib/effect/effect.component.js +0 -75
  252. package/esm5/lib/error-dialog/error-dialog.component.js +0 -43
  253. package/esm5/lib/fixture/fixture-capability/fixture-capability-channel/fixture-capability-channel.component.js +0 -159
  254. package/esm5/lib/fixture/fixture-capability/fixture-capability-color/fixture-capability-color.component.js +0 -130
  255. package/esm5/lib/fixture/fixture-capability/fixture-capability-color-wheel/fixture-capability-color-wheel.component.js +0 -215
  256. package/esm5/lib/fixture/fixture-capability/fixture-capability-dimmer/fixture-capability-dimmer.component.js +0 -61
  257. package/esm5/lib/fixture/fixture-capability/fixture-capability-pan-tilt/fixture-capability-pan-tilt.component.js +0 -88
  258. package/esm5/lib/fixture/fixture-capability/fixture-capability.component.js +0 -130
  259. package/esm5/lib/fixture/fixture-channel/fixture-channel.component.js +0 -68
  260. package/esm5/lib/fixture/fixture-settings/fixture-settings-position/fixture-settings-position.component.js +0 -306
  261. package/esm5/lib/fixture/fixture-settings/fixture-settings-stage/fixture-settings-stage.component.js +0 -32
  262. package/esm5/lib/fixture/fixture-settings/fixture-settings.component.js +0 -36
  263. package/esm5/lib/fixture/fixture.component.js +0 -71
  264. package/esm5/lib/fixture-pool/fixture-pool-create-from-file/fixture-pool-create-from-file.component.js +0 -127
  265. package/esm5/lib/fixture-pool/fixture-pool.component.js +0 -430
  266. package/esm5/lib/intro/intro.component.js +0 -26
  267. package/esm5/lib/master-dimmer/master-dimmer.component.js +0 -42
  268. package/esm5/lib/models/cached-fixture-capability.js +0 -11
  269. package/esm5/lib/models/cached-fixture-channel.js +0 -9
  270. package/esm5/lib/models/cached-fixture.js +0 -8
  271. package/esm5/lib/models/color.js +0 -10
  272. package/esm5/lib/models/composition.js +0 -60
  273. package/esm5/lib/models/effect-curve-profile-channel.js +0 -29
  274. package/esm5/lib/models/effect-curve.js +0 -95
  275. package/esm5/lib/models/effect-pan-tilt.js +0 -24
  276. package/esm5/lib/models/effect.js +0 -14
  277. package/esm5/lib/models/fixture-capability-value.js +0 -17
  278. package/esm5/lib/models/fixture-capability.js +0 -86
  279. package/esm5/lib/models/fixture-channel-value.js +0 -13
  280. package/esm5/lib/models/fixture-channel.js +0 -38
  281. package/esm5/lib/models/fixture-mode.js +0 -16
  282. package/esm5/lib/models/fixture-profile.js +0 -114
  283. package/esm5/lib/models/fixture-wheel-slot.js +0 -28
  284. package/esm5/lib/models/fixture-wheel.js +0 -29
  285. package/esm5/lib/models/fixture.js +0 -42
  286. package/esm5/lib/models/preset-region-scene.js +0 -10
  287. package/esm5/lib/models/preset.js +0 -90
  288. package/esm5/lib/models/project.js +0 -122
  289. package/esm5/lib/models/scene-playback-region.js +0 -13
  290. package/esm5/lib/models/scene.js +0 -29
  291. package/esm5/lib/models/universe.js +0 -13
  292. package/esm5/lib/preset/preset-settings/preset-settings.component.js +0 -67
  293. package/esm5/lib/preset/preset.component.js +0 -86
  294. package/esm5/lib/preview/models/color-changer-3d.js +0 -194
  295. package/esm5/lib/preview/models/fixture-3d.js +0 -196
  296. package/esm5/lib/preview/models/moving-head-3d.js +0 -250
  297. package/esm5/lib/preview/preview.component.js +0 -280
  298. package/esm5/lib/project/project-browser/project-browser.component.js +0 -77
  299. package/esm5/lib/project/project-import/project-import.component.js +0 -88
  300. package/esm5/lib/project/project-save/project-save.component.js +0 -120
  301. package/esm5/lib/project/project-share/project-share.component.js +0 -44
  302. package/esm5/lib/scene/scene-settings/scene-settings.component.js +0 -53
  303. package/esm5/lib/scene/scene.component.js +0 -57
  304. package/esm5/lib/services/animation.service.js +0 -18
  305. package/esm5/lib/services/config.service.js +0 -29
  306. package/esm5/lib/services/effect.service.js +0 -17
  307. package/esm5/lib/services/error-dialog.service.js +0 -46
  308. package/esm5/lib/services/fixture-pool.service.js +0 -36
  309. package/esm5/lib/services/fixture.service.js +0 -643
  310. package/esm5/lib/services/hotkey-target-exclude.service.js +0 -27
  311. package/esm5/lib/services/intro.service.js +0 -145
  312. package/esm5/lib/services/preset.service.js +0 -637
  313. package/esm5/lib/services/preview-mesh.service.js +0 -61
  314. package/esm5/lib/services/preview.service.js +0 -754
  315. package/esm5/lib/services/project-load.service.js +0 -185
  316. package/esm5/lib/services/project.service.js +0 -127
  317. package/esm5/lib/services/scene.service.js +0 -251
  318. package/esm5/lib/services/timeline.service.js +0 -845
  319. package/esm5/lib/services/universe.service.js +0 -36
  320. package/esm5/lib/services/user-ensure-login.service.js +0 -45
  321. package/esm5/lib/services/user.service.js +0 -95
  322. package/esm5/lib/services/uuid.service.js +0 -26
  323. package/esm5/lib/services/warning-dialog.service.js +0 -45
  324. package/esm5/lib/timeline/composition-settings/composition-settings.component.js +0 -206
  325. package/esm5/lib/timeline/timeline-grid/timeline-grid.component.js +0 -56
  326. package/esm5/lib/timeline/timeline.component.js +0 -243
  327. package/esm5/lib/user/user-login/user-login.component.js +0 -66
  328. package/esm5/lib/user/user-register/user-register.component.js +0 -91
  329. package/esm5/lib/wait-dialog/wait-dialog.component.js +0 -18
  330. package/esm5/lib/warning-dialog/warning-dialog.component.js +0 -43
  331. package/esm5/public_api.js +0 -7
  332. package/esm5/rocketshow-designer.js +0 -61
  333. package/fesm2015/rocketshow-designer.js +0 -7945
  334. package/fesm2015/rocketshow-designer.js.map +0 -1
  335. package/fesm5/rocketshow-designer.js +0 -9690
  336. package/fesm5/rocketshow-designer.js.map +0 -1
  337. package/rocketshow-designer-1.32.0.tgz +0 -0
  338. package/rocketshow-designer.d.ts +0 -60
  339. package/rocketshow-designer.metadata.json +0 -1
@@ -1,34 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { BsModalService } from 'ngx-bootstrap/modal';
4
- import { FixturePoolComponent } from '../fixture-pool/fixture-pool.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ngx-bootstrap/modal";
7
- let FixturePoolService = class FixturePoolService {
8
- constructor(modalService) {
9
- this.modalService = modalService;
10
- this.fixturePoolOpened = false;
11
- }
12
- open() {
13
- if (this.fixturePoolOpened) {
14
- return;
15
- }
16
- this.fixturePoolOpened = true;
17
- const bsModalRef = this.modalService.show(FixturePoolComponent, { keyboard: false, ignoreBackdropClick: true, class: 'modal-full' });
18
- bsModalRef.content.onClose.subscribe((result) => {
19
- this.fixturePoolOpened = false;
20
- });
21
- }
22
- };
23
- FixturePoolService.ctorParameters = () => [
24
- { type: BsModalService }
25
- ];
26
- FixturePoolService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FixturePoolService_Factory() { return new FixturePoolService(i0.ɵɵinject(i1.BsModalService)); }, token: FixturePoolService, providedIn: "root" });
27
- FixturePoolService = __decorate([
28
- Injectable({
29
- providedIn: 'root',
30
- }),
31
- __metadata("design:paramtypes", [BsModalService])
32
- ], FixturePoolService);
33
- export { FixturePoolService };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS1wb29sLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9maXh0dXJlLXBvb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUs5RSxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQUc3QixZQUFvQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFGeEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRWlCLENBQUM7SUFFcEQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNwSSxVQUFVLENBQUMsT0FBZ0MsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFBOztZQWJtQyxjQUFjOzs7QUFIckMsa0JBQWtCO0lBSDlCLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7cUNBSWtDLGNBQWM7R0FIckMsa0JBQWtCLENBZ0I5QjtTQWhCWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRml4dHVyZVBvb2xDb21wb25lbnQgfSBmcm9tICcuLi9maXh0dXJlLXBvb2wvZml4dHVyZS1wb29sLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlUG9vbFNlcnZpY2Uge1xuICBwcml2YXRlIGZpeHR1cmVQb29sT3BlbmVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlKSB7fVxuXG4gIG9wZW4oKSB7XG4gICAgaWYgKHRoaXMuZml4dHVyZVBvb2xPcGVuZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpeHR1cmVQb29sT3BlbmVkID0gdHJ1ZTtcbiAgICBjb25zdCBic01vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhGaXh0dXJlUG9vbENvbXBvbmVudCwgeyBrZXlib2FyZDogZmFsc2UsIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsIGNsYXNzOiAnbW9kYWwtZnVsbCcgfSk7XG4gICAgKGJzTW9kYWxSZWYuY29udGVudCBhcyBGaXh0dXJlUG9vbENvbXBvbmVudCkub25DbG9zZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5maXh0dXJlUG9vbE9wZW5lZCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,443 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { HttpClient } from '@angular/common/http';
3
- import { Injectable } from '@angular/core';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { ToastrService } from 'ngx-toastr';
6
- import { forkJoin, of } from 'rxjs';
7
- import { map } from 'rxjs/operators';
8
- import { CachedFixture } from '../models/cached-fixture';
9
- import { CachedFixtureCapability } from '../models/cached-fixture-capability';
10
- import { CachedFixtureChannel } from '../models/cached-fixture-channel';
11
- import { Color } from '../models/color';
12
- import { Fixture } from '../models/fixture';
13
- import { FixtureProfile } from '../models/fixture-profile';
14
- import { FixtureWheelSlotType } from '../models/fixture-wheel-slot';
15
- import { ProjectService } from './project.service';
16
- import { UuidService } from './uuid.service';
17
- import * as i0 from "@angular/core";
18
- import * as i1 from "@angular/common/http";
19
- import * as i2 from "./project.service";
20
- import * as i3 from "@ngx-translate/core";
21
- import * as i4 from "ngx-toastr";
22
- import * as i5 from "./uuid.service";
23
- let FixtureService = class FixtureService {
24
- constructor(http, projectService, translateService, toastrService, uuidService) {
25
- this.http = http;
26
- this.projectService = projectService;
27
- this.translateService = translateService;
28
- this.toastrService = toastrService;
29
- this.uuidService = uuidService;
30
- this.cachedFixtures = [];
31
- // is the side-tab settings currently selected?
32
- this.settingsSelection = false;
33
- this.selectedSettingsFixtures = [];
34
- }
35
- getFixtureByUuid(uuid) {
36
- for (const fixture of this.projectService.project.fixtures) {
37
- if (fixture.uuid === uuid) {
38
- return fixture;
39
- }
40
- }
41
- }
42
- getCachedFixtureByUuid(uuid) {
43
- for (const fixture of this.cachedFixtures) {
44
- if (fixture.fixture.uuid === uuid) {
45
- return fixture;
46
- }
47
- }
48
- }
49
- // Get all profiles to search for (only metadata)
50
- getSearchProfiles() {
51
- return this.http.get('fixtures').pipe(map((response) => {
52
- const searchProfiles = [];
53
- for (const profile of response) {
54
- searchProfiles.push(new FixtureProfile(profile));
55
- }
56
- return searchProfiles;
57
- }));
58
- }
59
- getProfileByUuid(uuid) {
60
- for (const fixtureProfile of this.projectService.project.fixtureProfiles) {
61
- if (fixtureProfile.uuid === uuid) {
62
- return fixtureProfile;
63
- }
64
- }
65
- }
66
- loadProfileByUuid(uuid) {
67
- const loadedProfile = this.getProfileByUuid(uuid);
68
- if (loadedProfile) {
69
- // This profile is already loaded
70
- return of(undefined);
71
- }
72
- // Load the metadata and the profile
73
- return forkJoin([this.http.get('fixtures?uuid=' + encodeURI(uuid)), this.http.get('fixture?uuid=' + encodeURI(uuid))]).pipe(map((result) => {
74
- const mergedData = Object.assign(Object.assign({}, result[0][0]), result[1]);
75
- const fixtureProfile = new FixtureProfile(mergedData);
76
- this.projectService.project.fixtureProfiles.push(fixtureProfile);
77
- }));
78
- }
79
- getRotationAngleDeg(value) {
80
- // convert a rotation angle value into degrees
81
- if (value.endsWith('deg')) {
82
- return Number.parseInt(value.replace('deg', ''));
83
- }
84
- else if (value.endsWith('%')) {
85
- const perc = Number.parseInt(value.replace('%', ''));
86
- return (perc / 100) * 360;
87
- }
88
- return undefined;
89
- }
90
- getWheelSlotColors(wheel, slotNumber) {
91
- let colors = [];
92
- const wheelSlots = this.getWheelSlots(wheel, slotNumber);
93
- for (const slot of wheelSlots) {
94
- if (slot.colors && slot.colors.length > 0) {
95
- colors = colors.concat(slot.colors);
96
- }
97
- }
98
- return colors;
99
- }
100
- getMixedWheelSlotColor(wheel, slotNumber) {
101
- const colors = this.getWheelSlotColors(wheel, slotNumber);
102
- const colorsRgb = [];
103
- if (colors.length === 0) {
104
- return undefined;
105
- }
106
- for (const color of colors) {
107
- colorsRgb.push(this.hexToRgb(color));
108
- }
109
- return this.mixColors(colorsRgb);
110
- }
111
- componentToHex(c) {
112
- const hex = c.toString(16);
113
- return hex.length === 1 ? '0' + hex : hex;
114
- }
115
- rgbToHex(r, g, b) {
116
- return '#' + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);
117
- }
118
- hexToRgb(hex) {
119
- // expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
120
- const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
121
- hex = hex.replace(shorthandRegex, (m, r, g, b) => {
122
- return r + r + g + g + b + b;
123
- });
124
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
125
- return result ? new Color(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) : null;
126
- }
127
- mixColors(colors) {
128
- // mix an array of rgb-colors containing r, g, b values to a new color
129
- let r = 0;
130
- let g = 0;
131
- let b = 0;
132
- for (const color of colors) {
133
- r += color.red;
134
- g += color.green;
135
- b += color.blue;
136
- }
137
- r /= colors.length;
138
- g /= colors.length;
139
- b /= colors.length;
140
- return new Color(r, g, b);
141
- }
142
- wheelHasSlotType(wheel, slotType) {
143
- for (const slot of wheel.slots) {
144
- if (slot.type === slotType) {
145
- return true;
146
- }
147
- }
148
- return false;
149
- }
150
- getWheelByName(profile, wheelName) {
151
- for (const property in profile.wheels) {
152
- if (property === wheelName) {
153
- return profile.wheels[property];
154
- }
155
- }
156
- // wheel not found
157
- return undefined;
158
- }
159
- getWheelSlots(wheel, slotNumber) {
160
- // return one slot or two slots, if they are mixed (e.g. slor number 2.5 returns the slots 2 and 3)
161
- const slots = [];
162
- if (!wheel) {
163
- return slots;
164
- }
165
- if (slotNumber - Math.floor(slotNumber) > 0) {
166
- // two slots are set
167
- const number = Math.floor(slotNumber);
168
- slots.push(wheel.slots[number - 1]);
169
- if (number >= 0 && number < wheel.slots.length) {
170
- slots.push(wheel.slots[number]);
171
- }
172
- }
173
- else {
174
- // only one slot is set
175
- slots.push(wheel.slots[slotNumber - 1]);
176
- }
177
- return slots;
178
- }
179
- getModeByFixture(profile, fixture) {
180
- for (const mode of profile.modes) {
181
- if (mode.shortName) {
182
- if (mode.shortName === fixture.modeShortName) {
183
- return mode;
184
- }
185
- }
186
- else {
187
- if (mode.name === fixture.modeShortName) {
188
- return mode;
189
- }
190
- }
191
- }
192
- }
193
- getFixtureCapability(capability, channelName, profile) {
194
- const cachedFixtureCapability = new CachedFixtureCapability();
195
- cachedFixtureCapability.capability = capability;
196
- if (capability.slotNumber) {
197
- // there is a wheel connected to this capability
198
- if (typeof capability.wheel === 'string') {
199
- cachedFixtureCapability.wheelName = capability.wheel;
200
- }
201
- else if (Array.isArray(capability.wheel)) {
202
- cachedFixtureCapability.wheelName = capability.wheel[0];
203
- }
204
- else {
205
- cachedFixtureCapability.wheelName = channelName;
206
- }
207
- cachedFixtureCapability.wheel = this.getWheelByName(profile, cachedFixtureCapability.wheelName);
208
- cachedFixtureCapability.wheelSlots = this.getWheelSlots(cachedFixtureCapability.wheel, capability.slotNumber);
209
- cachedFixtureCapability.wheelIsColor = this.wheelHasSlotType(cachedFixtureCapability.wheel, FixtureWheelSlotType.Color);
210
- }
211
- if (cachedFixtureCapability.capability.dmxRange && cachedFixtureCapability.capability.dmxRange.length === 2) {
212
- cachedFixtureCapability.centerValue = Math.floor((cachedFixtureCapability.capability.dmxRange[0] + cachedFixtureCapability.capability.dmxRange[1]) / 2);
213
- }
214
- return cachedFixtureCapability;
215
- }
216
- getCapabilitiesByChannel(fixtureChannel, channelName, profile) {
217
- const capabilites = [];
218
- if (fixtureChannel.capability) {
219
- capabilites.push(this.getFixtureCapability(fixtureChannel.capability, channelName, profile));
220
- }
221
- else if (fixtureChannel.capabilities) {
222
- for (const capability of fixtureChannel.capabilities) {
223
- capabilites.push(this.getFixtureCapability(capability, channelName, profile));
224
- }
225
- }
226
- return capabilites;
227
- }
228
- getMaxValueByChannel(fixtureChannel) {
229
- return Math.pow(256, 1 + fixtureChannel.fineChannelAliases.length) - 1;
230
- }
231
- getDefaultValueByChannel(fixtureChannel) {
232
- if (!fixtureChannel.defaultValue) {
233
- return undefined;
234
- }
235
- if (isNaN(fixtureChannel.defaultValue) && fixtureChannel.defaultValue.endsWith('%')) {
236
- // percentage value
237
- const percentage = Number.parseInt(fixtureChannel.defaultValue.replace('%', ''));
238
- const maxValue = this.getMaxValueByChannel(fixtureChannel);
239
- return (maxValue / 100) * percentage;
240
- }
241
- else {
242
- // DMX value
243
- return Number.parseInt(fixtureChannel.defaultValue);
244
- }
245
- }
246
- getColorWheelByChannel(channel, profile) {
247
- for (const channelCapability of channel.capabilities) {
248
- if (channelCapability.wheelIsColor) {
249
- return channelCapability.wheel;
250
- }
251
- }
252
- return undefined;
253
- }
254
- // private channelInList(channels: CachedFixtureChannel[], name: string): boolean {
255
- // for (let channel of channels) {
256
- // if (channel.channelName === name) {
257
- // return true;
258
- // }
259
- // }
260
- // return false;
261
- // }
262
- getChannelByName(fixture, channelName) {
263
- for (const channel of fixture.channels) {
264
- if ((channel.name && channel.name === channelName) ||
265
- (channel.channel && channel.channel.fineChannelAliases.indexOf(channelName) > -1)) {
266
- return channel;
267
- }
268
- }
269
- return undefined;
270
- }
271
- getCachedChannels(profile, mode) {
272
- const channels = [];
273
- if (!mode) {
274
- return channels;
275
- }
276
- for (const availableChannelName of Object.keys(profile.availableChannels)) {
277
- const availableChannel = profile.availableChannels[availableChannelName];
278
- for (const channel of mode.channels) {
279
- // check for string channel. It can get creepy for matrix modes
280
- if (typeof channel === 'string') {
281
- const modeChannel = channel;
282
- // don't check the fine channels. only add the coarse channel.
283
- if (modeChannel === availableChannelName) {
284
- const cachedFixtureChannel = new CachedFixtureChannel();
285
- cachedFixtureChannel.channel = availableChannel;
286
- cachedFixtureChannel.name = availableChannelName;
287
- cachedFixtureChannel.capabilities = this.getCapabilitiesByChannel(cachedFixtureChannel.channel, availableChannelName, profile);
288
- const defaultValue = this.getDefaultValueByChannel(cachedFixtureChannel.channel);
289
- if (defaultValue) {
290
- cachedFixtureChannel.defaultValue = defaultValue;
291
- }
292
- cachedFixtureChannel.maxValue = this.getMaxValueByChannel(cachedFixtureChannel.channel);
293
- cachedFixtureChannel.colorWheel = this.getColorWheelByChannel(cachedFixtureChannel, profile);
294
- channels.push(cachedFixtureChannel);
295
- }
296
- }
297
- else {
298
- // null may be passed as a placeholder for an undefined channel
299
- channels.push(new CachedFixtureChannel());
300
- }
301
- }
302
- }
303
- return channels;
304
- }
305
- updateCachedFixtures() {
306
- // calculate some frequently used values as a cache to save cpu time
307
- // afterwards
308
- this.cachedFixtures = [];
309
- for (const fixture of this.projectService.project.fixtures) {
310
- const cachedFixture = new CachedFixture();
311
- cachedFixture.fixture = fixture;
312
- cachedFixture.profile = this.getProfileByUuid(fixture.profileUuid);
313
- cachedFixture.mode = this.getModeByFixture(cachedFixture.profile, fixture);
314
- cachedFixture.channels = this.getCachedChannels(cachedFixture.profile, cachedFixture.mode);
315
- this.cachedFixtures.push(cachedFixture);
316
- }
317
- }
318
- capabilitiesMatch(type1, type2, color1, color2, wheel1, wheel2, profileUuid1, profileUuid2) {
319
- // checks, whether two provided capapabilities match
320
- return (type1 === type2 &&
321
- (!color1 || color1 === color2) &&
322
- (!wheel1 || wheel1 === wheel2) &&
323
- (!profileUuid1 || profileUuid1 === profileUuid2));
324
- }
325
- settingsFixtureIsSelected(fixture) {
326
- for (const selectedFixture of this.selectedSettingsFixtures) {
327
- if (selectedFixture === fixture) {
328
- return true;
329
- }
330
- }
331
- return false;
332
- }
333
- switchSettingsFixtureSelection(fixture) {
334
- if (this.settingsFixtureIsSelected(fixture)) {
335
- this.selectedSettingsFixtures.splice(this.selectedSettingsFixtures.indexOf(fixture), 1);
336
- }
337
- else {
338
- this.selectedSettingsFixtures.push(fixture);
339
- }
340
- }
341
- getFixtureIconClass(profile) {
342
- if (!profile) {
343
- return '';
344
- }
345
- if (profile.categories.length === 0) {
346
- return '';
347
- }
348
- if (!profile.categories[0]) {
349
- return '';
350
- }
351
- return profile.categories[0].replace(' ', '-').toLocaleLowerCase();
352
- }
353
- updateProfiles() {
354
- return this.http.post('update-profiles', null);
355
- }
356
- getNextFreeDmxChannel(fixturePool, neededChannels) {
357
- // get the next free space for this fixture
358
- let freeChannels = 0;
359
- for (let i = 0; i < 512; i++) {
360
- let occupiedChannels = 0;
361
- for (const fixture of fixturePool) {
362
- const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);
363
- if (i >= fixture.dmxFirstChannel && i < fixture.dmxFirstChannel + mode.channels.length) {
364
- // this channel is already occupied by a fixture -> move forward to the end of the fixture
365
- if (mode.channels.length > occupiedChannels) {
366
- occupiedChannels = mode.channels.length - (i - fixture.dmxFirstChannel);
367
- }
368
- }
369
- }
370
- if (occupiedChannels > 0) {
371
- i += occupiedChannels - 1;
372
- freeChannels = 0;
373
- }
374
- else {
375
- freeChannels++;
376
- }
377
- if (freeChannels === neededChannels) {
378
- return i - freeChannels + 1;
379
- }
380
- }
381
- // no free space left for the needed channels
382
- return -1;
383
- }
384
- addFixture(profile, fixturePool) {
385
- const fixture = new Fixture();
386
- fixture.uuid = this.uuidService.getUuid();
387
- fixture.profileUuid = profile.uuid;
388
- fixture.name = profile.name;
389
- if (profile.modes && profile.modes.length > 0) {
390
- fixture.modeShortName = profile.modes[0].shortName;
391
- }
392
- // add the same mode as an existing fixture, if available
393
- let existingModeShortName;
394
- for (const existingFixture of fixturePool) {
395
- const existingProfile = this.getProfileByUuid(existingFixture.profileUuid);
396
- if (existingProfile === profile) {
397
- existingModeShortName = existingFixture.modeShortName;
398
- break;
399
- }
400
- }
401
- if (existingModeShortName) {
402
- fixture.modeShortName = existingModeShortName;
403
- }
404
- else {
405
- fixture.modeShortName = profile.modes[0].shortName || profile.modes[0].name;
406
- }
407
- const mode = this.getModeByFixture(this.getProfileByUuid(fixture.profileUuid), fixture);
408
- const firstChannel = this.getNextFreeDmxChannel(fixturePool, mode.channels.length);
409
- if (firstChannel >= 0) {
410
- fixture.dmxFirstChannel = firstChannel;
411
- fixturePool.push(fixture);
412
- return fixture;
413
- }
414
- else {
415
- // no free space anymore
416
- const msg = 'designer.fixture-pool.no-free-space';
417
- const title = 'designer.fixture-pool.no-free-space-title';
418
- this.translateService.get([msg, title]).subscribe((result) => {
419
- this.toastrService.error(result[msg], result[title]);
420
- });
421
- }
422
- }
423
- };
424
- FixtureService.ctorParameters = () => [
425
- { type: HttpClient },
426
- { type: ProjectService },
427
- { type: TranslateService },
428
- { type: ToastrService },
429
- { type: UuidService }
430
- ];
431
- FixtureService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FixtureService_Factory() { return new FixtureService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.ProjectService), i0.ɵɵinject(i3.TranslateService), i0.ɵɵinject(i4.ToastrService), i0.ɵɵinject(i5.UuidService)); }, token: FixtureService, providedIn: "root" });
432
- FixtureService = __decorate([
433
- Injectable({
434
- providedIn: 'root',
435
- }),
436
- __metadata("design:paramtypes", [HttpClient,
437
- ProjectService,
438
- TranslateService,
439
- ToastrService,
440
- UuidService])
441
- ], FixtureService);
442
- export { FixtureService };
443
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHJvY2tldHNob3cvZGVzaWduZXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZml4dHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFvQixvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFLN0MsSUFBYSxjQUFjLEdBQTNCLE1BQWEsY0FBYztJQVF6QixZQUNVLElBQWdCLEVBQ2hCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixXQUF3QjtRQUp4QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBWmxDLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUVyQywrQ0FBK0M7UUFDL0Msc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLDZCQUF3QixHQUFjLEVBQUUsQ0FBQztJQVF0QyxDQUFDO0lBRUosZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUMxRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUN6QixPQUFPLE9BQU8sQ0FBQzthQUNoQjtTQUNGO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVk7UUFDakMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3pDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQyxPQUFPLE9BQU8sQ0FBQzthQUNoQjtTQUNGO0lBQ0gsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sY0FBYyxHQUFxQixFQUFFLENBQUM7WUFFNUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQzlCLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNsRDtZQUVELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBWTtRQUMzQixLQUFLLE1BQU0sY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUN4RSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNoQyxPQUFPLGNBQWMsQ0FBQzthQUN2QjtTQUNGO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVk7UUFDNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxELElBQUksYUFBYSxFQUFFO1lBQ2pCLGlDQUFpQztZQUNqQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtRQUVELG9DQUFvQztRQUNwQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6SCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNiLE1BQU0sVUFBVSxtQ0FBUSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUM7WUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsOENBQThDO1FBQzlDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNsRDthQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDM0I7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBbUIsRUFBRSxVQUFrQjtRQUN4RCxJQUFJLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFekQsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDekMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBbUIsRUFBRSxVQUFrQjtRQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFZLEVBQUUsQ0FBQztRQUU5QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxDQUFTO1FBQzlCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVDLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQ3RDLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNsQixrRUFBa0U7UUFDbEUsTUFBTSxjQUFjLEdBQUcsa0NBQWtDLENBQUM7UUFDMUQsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLDJDQUEyQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlHLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUN2QixzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRVYsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDMUIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDZixDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQixDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztTQUNqQjtRQUVELENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ25CLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ25CLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRW5CLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBbUIsRUFBRSxRQUE4QjtRQUNsRSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQXVCLEVBQUUsU0FBaUI7UUFDdkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3JDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDMUIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7UUFFRCxrQkFBa0I7UUFDbEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFtQixFQUFFLFVBQWtCO1FBQzNELG1HQUFtRztRQUNuRyxNQUFNLEtBQUssR0FBdUIsRUFBRSxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0Msb0JBQW9CO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQzlDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7YUFBTTtZQUNMLHVCQUF1QjtZQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUF1QixFQUFFLE9BQWdCO1FBQ3hELEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFO29CQUM1QyxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsYUFBYSxFQUFFO29CQUN2QyxPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBNkIsRUFBRSxXQUFtQixFQUFFLE9BQXVCO1FBQ3RHLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQzlELHVCQUF1QixDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDaEQsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ3pCLGdEQUFnRDtZQUNoRCxJQUFJLE9BQU8sVUFBVSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQ3hDLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBZSxDQUFDO2FBQ2hFO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzFDLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pEO2lCQUFNO2dCQUNMLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUM7YUFDakQ7WUFDRCx1QkFBdUIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEcsdUJBQXVCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5Ryx1QkFBdUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6SDtRQUNELElBQUksdUJBQXVCLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDM0csdUJBQXVCLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzlDLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN0RyxDQUFDO1NBQ0g7UUFDRCxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFTyx3QkFBd0IsQ0FDOUIsY0FBOEIsRUFDOUIsV0FBbUIsRUFDbkIsT0FBdUI7UUFFdkIsTUFBTSxXQUFXLEdBQThCLEVBQUUsQ0FBQztRQUVsRCxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUU7WUFDN0IsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM5RjthQUFNLElBQUksY0FBYyxDQUFDLFlBQVksRUFBRTtZQUN0QyxLQUFLLE1BQU0sVUFBVSxJQUFJLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3BELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUMvRTtTQUNGO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLG9CQUFvQixDQUFDLGNBQThCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGNBQThCO1FBQzdELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFO1lBQ2hDLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQW1CLENBQUMsSUFBSyxjQUFjLENBQUMsWUFBdUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEcsbUJBQW1CO1lBQ25CLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUUsY0FBYyxDQUFDLFlBQXVCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzRCxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUN0QzthQUFNO1lBQ0wsWUFBWTtZQUNaLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBbUIsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE9BQTZCLEVBQUUsT0FBdUI7UUFDbkYsS0FBSyxNQUFNLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDcEQsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2xDLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDO2FBQ2hDO1NBQ0Y7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLG9DQUFvQztJQUNwQywwQ0FBMEM7SUFDMUMscUJBQXFCO0lBQ3JCLFFBQVE7SUFDUixNQUFNO0lBRU4sa0JBQWtCO0lBQ2xCLElBQUk7SUFFSixnQkFBZ0IsQ0FBQyxPQUFzQixFQUFFLFdBQW1CO1FBQzFELEtBQUssTUFBTSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUN0QyxJQUNFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQztnQkFDOUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ2pGO2dCQUNBLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1NBQ0Y7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBdUIsRUFBRSxJQUFpQjtRQUMxRCxNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELEtBQUssTUFBTSxvQkFBb0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3pFLE1BQU0sZ0JBQWdCLEdBQW1CLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRXpGLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbkMsK0RBQStEO2dCQUMvRCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtvQkFDL0IsTUFBTSxXQUFXLEdBQVcsT0FBaUIsQ0FBQztvQkFFOUMsOERBQThEO29CQUM5RCxJQUFJLFdBQVcsS0FBSyxvQkFBb0IsRUFBRTt3QkFDeEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7d0JBQ3hELG9CQUFvQixDQUFDLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQzt3QkFDaEQsb0JBQW9CLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO3dCQUNqRCxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDL0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUNqRixJQUFJLFlBQVksRUFBRTs0QkFDaEIsb0JBQW9CLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQzt5QkFDbEQ7d0JBQ0Qsb0JBQW9CLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDeEYsb0JBQW9CLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDN0YsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3FCQUNyQztpQkFDRjtxQkFBTTtvQkFDTCwrREFBK0Q7b0JBQy9ELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsb0VBQW9FO1FBQ3BFLGFBQWE7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV6QixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtZQUMxRCxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBRTFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ2hDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRSxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUNmLEtBQTRCLEVBQzVCLEtBQTRCLEVBQzVCLE1BQThCLEVBQzlCLE1BQThCLEVBQzlCLE1BQWMsRUFDZCxNQUFjLEVBQ2QsWUFBb0IsRUFDcEIsWUFBb0I7UUFFcEIsb0RBQW9EO1FBQ3BELE9BQU8sQ0FDTCxLQUFLLEtBQUssS0FBSztZQUNmLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sQ0FBQztZQUM5QixDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sS0FBSyxNQUFNLENBQUM7WUFDOUIsQ0FBQyxDQUFDLFlBQVksSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsT0FBZ0I7UUFDeEMsS0FBSyxNQUFNLGVBQWUsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDM0QsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFO2dCQUMvQixPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxPQUFnQjtRQUM3QyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDekY7YUFBTTtZQUNMLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBdUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxXQUFzQixFQUFFLGNBQXNCO1FBQ2xFLDJDQUEyQztRQUMzQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUV6QixLQUFLLE1BQU0sT0FBTyxJQUFJLFdBQVcsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXhGLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxlQUFlLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQ3RGLDBGQUEwRjtvQkFDMUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRTt3QkFDM0MsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO3FCQUN6RTtpQkFDRjthQUNGO1lBRUQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLFlBQVksR0FBRyxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0wsWUFBWSxFQUFFLENBQUM7YUFDaEI7WUFFRCxJQUFJLFlBQVksS0FBSyxjQUFjLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxHQUFHLFlBQVksR0FBRyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUVELDZDQUE2QztRQUM3QyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUF1QixFQUFFLFdBQXNCO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFOUIsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNuQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFFNUIsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ3BEO1FBRUQseURBQXlEO1FBQ3pELElBQUkscUJBQTZCLENBQUM7UUFDbEMsS0FBSyxNQUFNLGVBQWUsSUFBSSxXQUFXLEVBQUU7WUFDekMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUUzRSxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUU7Z0JBQy9CLHFCQUFxQixHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7Z0JBQ3RELE1BQU07YUFDUDtTQUNGO1FBRUQsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixPQUFPLENBQUMsYUFBYSxHQUFHLHFCQUFxQixDQUFDO1NBQy9DO2FBQU07WUFDTCxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzdFO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5GLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsZUFBZSxHQUFHLFlBQVksQ0FBQztZQUN2QyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO2FBQU07WUFDTCx3QkFBd0I7WUFDeEIsTUFBTSxHQUFHLEdBQUcscUNBQXFDLENBQUM7WUFDbEQsTUFBTSxLQUFLLEdBQUcsMkNBQTJDLENBQUM7WUFFMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRixDQUFBOztZQXJlaUIsVUFBVTtZQUNBLGNBQWM7WUFDWixnQkFBZ0I7WUFDbkIsYUFBYTtZQUNmLFdBQVc7OztBQWJ2QixjQUFjO0lBSDFCLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7cUNBVWdCLFVBQVU7UUFDQSxjQUFjO1FBQ1osZ0JBQWdCO1FBQ25CLGFBQWE7UUFDZixXQUFXO0dBYnZCLGNBQWMsQ0E4ZTFCO1NBOWVZLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYWNoZWRGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL2NhY2hlZC1maXh0dXJlJztcbmltcG9ydCB7IENhY2hlZEZpeHR1cmVDYXBhYmlsaXR5IH0gZnJvbSAnLi4vbW9kZWxzL2NhY2hlZC1maXh0dXJlLWNhcGFiaWxpdHknO1xuaW1wb3J0IHsgQ2FjaGVkRml4dHVyZUNoYW5uZWwgfSBmcm9tICcuLi9tb2RlbHMvY2FjaGVkLWZpeHR1cmUtY2hhbm5lbCc7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gJy4uL21vZGVscy9jb2xvcic7XG5pbXBvcnQgeyBGaXh0dXJlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUnO1xuaW1wb3J0IHsgRml4dHVyZUNhcGFiaWxpdHksIEZpeHR1cmVDYXBhYmlsaXR5Q29sb3IsIEZpeHR1cmVDYXBhYmlsaXR5VHlwZSB9IGZyb20gJy4uL21vZGVscy9maXh0dXJlLWNhcGFiaWxpdHknO1xuaW1wb3J0IHsgRml4dHVyZUNoYW5uZWwgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS1jaGFubmVsJztcbmltcG9ydCB7IEZpeHR1cmVNb2RlIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUtbW9kZSc7XG5pbXBvcnQgeyBGaXh0dXJlUHJvZmlsZSB9IGZyb20gJy4uL21vZGVscy9maXh0dXJlLXByb2ZpbGUnO1xuaW1wb3J0IHsgRml4dHVyZVdoZWVsIH0gZnJvbSAnLi4vbW9kZWxzL2ZpeHR1cmUtd2hlZWwnO1xuaW1wb3J0IHsgRml4dHVyZVdoZWVsU2xvdCwgRml4dHVyZVdoZWVsU2xvdFR5cGUgfSBmcm9tICcuLi9tb2RlbHMvZml4dHVyZS13aGVlbC1zbG90JztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXVpZFNlcnZpY2UgfSBmcm9tICcuL3V1aWQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGaXh0dXJlU2VydmljZSB7XG4gIGNhY2hlZEZpeHR1cmVzOiBDYWNoZWRGaXh0dXJlW10gPSBbXTtcblxuICAvLyBpcyB0aGUgc2lkZS10YWIgc2V0dGluZ3MgY3VycmVudGx5IHNlbGVjdGVkP1xuICBzZXR0aW5nc1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlczogRml4dHVyZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dWlkU2VydmljZTogVXVpZFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZpeHR1cmVCeVV1aWQodXVpZDogc3RyaW5nKTogRml4dHVyZSB7XG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlcykge1xuICAgICAgaWYgKGZpeHR1cmUudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICByZXR1cm4gZml4dHVyZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDYWNoZWRGaXh0dXJlQnlVdWlkKHV1aWQ6IHN0cmluZyk6IENhY2hlZEZpeHR1cmUge1xuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLmNhY2hlZEZpeHR1cmVzKSB7XG4gICAgICBpZiAoZml4dHVyZS5maXh0dXJlLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIGZpeHR1cmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGFsbCBwcm9maWxlcyB0byBzZWFyY2ggZm9yIChvbmx5IG1ldGFkYXRhKVxuICBnZXRTZWFyY2hQcm9maWxlcygpOiBPYnNlcnZhYmxlPEZpeHR1cmVQcm9maWxlW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCgnZml4dHVyZXMnKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgY29uc3Qgc2VhcmNoUHJvZmlsZXM6IEZpeHR1cmVQcm9maWxlW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHByb2ZpbGUgb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICBzZWFyY2hQcm9maWxlcy5wdXNoKG5ldyBGaXh0dXJlUHJvZmlsZShwcm9maWxlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VhcmNoUHJvZmlsZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRQcm9maWxlQnlVdWlkKHV1aWQ6IHN0cmluZyk6IEZpeHR1cmVQcm9maWxlIHtcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmVQcm9maWxlIG9mIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXMpIHtcbiAgICAgIGlmIChmaXh0dXJlUHJvZmlsZS51dWlkID09PSB1dWlkKSB7XG4gICAgICAgIHJldHVybiBmaXh0dXJlUHJvZmlsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2FkUHJvZmlsZUJ5VXVpZCh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2FkZWRQcm9maWxlID0gdGhpcy5nZXRQcm9maWxlQnlVdWlkKHV1aWQpO1xuXG4gICAgaWYgKGxvYWRlZFByb2ZpbGUpIHtcbiAgICAgIC8vIFRoaXMgcHJvZmlsZSBpcyBhbHJlYWR5IGxvYWRlZFxuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLy8gTG9hZCB0aGUgbWV0YWRhdGEgYW5kIHRoZSBwcm9maWxlXG4gICAgcmV0dXJuIGZvcmtKb2luKFt0aGlzLmh0dHAuZ2V0KCdmaXh0dXJlcz91dWlkPScgKyBlbmNvZGVVUkkodXVpZCkpLCB0aGlzLmh0dHAuZ2V0KCdmaXh0dXJlP3V1aWQ9JyArIGVuY29kZVVSSSh1dWlkKSldKS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgY29uc3QgbWVyZ2VkRGF0YSA9IHsgLi4ucmVzdWx0WzBdWzBdLCAuLi5yZXN1bHRbMV0gfTtcbiAgICAgICAgY29uc3QgZml4dHVyZVByb2ZpbGUgPSBuZXcgRml4dHVyZVByb2ZpbGUobWVyZ2VkRGF0YSk7XG4gICAgICAgIHRoaXMucHJvamVjdFNlcnZpY2UucHJvamVjdC5maXh0dXJlUHJvZmlsZXMucHVzaChmaXh0dXJlUHJvZmlsZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRSb3RhdGlvbkFuZ2xlRGVnKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIC8vIGNvbnZlcnQgYSByb3RhdGlvbiBhbmdsZSB2YWx1ZSBpbnRvIGRlZ3JlZXNcbiAgICBpZiAodmFsdWUuZW5kc1dpdGgoJ2RlZycpKSB7XG4gICAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KHZhbHVlLnJlcGxhY2UoJ2RlZycsICcnKSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICBjb25zdCBwZXJjID0gTnVtYmVyLnBhcnNlSW50KHZhbHVlLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgcmV0dXJuIChwZXJjIC8gMTAwKSAqIDM2MDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0V2hlZWxTbG90Q29sb3JzKHdoZWVsOiBGaXh0dXJlV2hlZWwsIHNsb3ROdW1iZXI6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBsZXQgY29sb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdoZWVsU2xvdHMgPSB0aGlzLmdldFdoZWVsU2xvdHMod2hlZWwsIHNsb3ROdW1iZXIpO1xuXG4gICAgZm9yIChjb25zdCBzbG90IG9mIHdoZWVsU2xvdHMpIHtcbiAgICAgIGlmIChzbG90LmNvbG9ycyAmJiBzbG90LmNvbG9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbG9ycyA9IGNvbG9ycy5jb25jYXQoc2xvdC5jb2xvcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2xvcnM7XG4gIH1cblxuICBnZXRNaXhlZFdoZWVsU2xvdENvbG9yKHdoZWVsOiBGaXh0dXJlV2hlZWwsIHNsb3ROdW1iZXI6IG51bWJlcik6IENvbG9yIHtcbiAgICBjb25zdCBjb2xvcnMgPSB0aGlzLmdldFdoZWVsU2xvdENvbG9ycyh3aGVlbCwgc2xvdE51bWJlcik7XG4gICAgY29uc3QgY29sb3JzUmdiOiBDb2xvcltdID0gW107XG5cbiAgICBpZiAoY29sb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbG9yIG9mIGNvbG9ycykge1xuICAgICAgY29sb3JzUmdiLnB1c2godGhpcy5oZXhUb1JnYihjb2xvcikpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1peENvbG9ycyhjb2xvcnNSZ2IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRUb0hleChjOiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xuICAgIHJldHVybiBoZXgubGVuZ3RoID09PSAxID8gJzAnICsgaGV4IDogaGV4O1xuICB9XG5cbiAgcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuICcjJyArIHRoaXMuY29tcG9uZW50VG9IZXgocikgKyB0aGlzLmNvbXBvbmVudFRvSGV4KGcpICsgdGhpcy5jb21wb25lbnRUb0hleChiKTtcbiAgfVxuXG4gIGhleFRvUmdiKGhleDogc3RyaW5nKTogQ29sb3Ige1xuICAgIC8vIGV4cGFuZCBzaG9ydGhhbmQgZm9ybSAoZS5nLiBcIjAzRlwiKSB0byBmdWxsIGZvcm0gKGUuZy4gXCIwMDMzRkZcIilcbiAgICBjb25zdCBzaG9ydGhhbmRSZWdleCA9IC9eIz8oW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkkL2k7XG4gICAgaGV4ID0gaGV4LnJlcGxhY2Uoc2hvcnRoYW5kUmVnZXgsIChtLCByLCBnLCBiKSA9PiB7XG4gICAgICByZXR1cm4gciArIHIgKyBnICsgZyArIGIgKyBiO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBDb2xvcihwYXJzZUludChyZXN1bHRbMV0sIDE2KSwgcGFyc2VJbnQocmVzdWx0WzJdLCAxNiksIHBhcnNlSW50KHJlc3VsdFszXSwgMTYpKSA6IG51bGw7XG4gIH1cblxuICBtaXhDb2xvcnMoY29sb3JzOiBDb2xvcltdKTogQ29sb3Ige1xuICAgIC8vIG1peCBhbiBhcnJheSBvZiByZ2ItY29sb3JzIGNvbnRhaW5pbmcgciwgZywgYiB2YWx1ZXMgdG8gYSBuZXcgY29sb3JcbiAgICBsZXQgciA9IDA7XG4gICAgbGV0IGcgPSAwO1xuICAgIGxldCBiID0gMDtcblxuICAgIGZvciAoY29uc3QgY29sb3Igb2YgY29sb3JzKSB7XG4gICAgICByICs9IGNvbG9yLnJlZDtcbiAgICAgIGcgKz0gY29sb3IuZ3JlZW47XG4gICAgICBiICs9IGNvbG9yLmJsdWU7XG4gICAgfVxuXG4gICAgciAvPSBjb2xvcnMubGVuZ3RoO1xuICAgIGcgLz0gY29sb3JzLmxlbmd0aDtcbiAgICBiIC89IGNvbG9ycy5sZW5ndGg7XG5cbiAgICByZXR1cm4gbmV3IENvbG9yKHIsIGcsIGIpO1xuICB9XG5cbiAgd2hlZWxIYXNTbG90VHlwZSh3aGVlbDogRml4dHVyZVdoZWVsLCBzbG90VHlwZTogRml4dHVyZVdoZWVsU2xvdFR5cGUpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNsb3Qgb2Ygd2hlZWwuc2xvdHMpIHtcbiAgICAgIGlmIChzbG90LnR5cGUgPT09IHNsb3RUeXBlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldFdoZWVsQnlOYW1lKHByb2ZpbGU6IEZpeHR1cmVQcm9maWxlLCB3aGVlbE5hbWU6IHN0cmluZyk6IEZpeHR1cmVXaGVlbCB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBwcm9maWxlLndoZWVscykge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSB3aGVlbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHByb2ZpbGUud2hlZWxzW3Byb3BlcnR5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVlbCBub3QgZm91bmRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaGVlbFNsb3RzKHdoZWVsOiBGaXh0dXJlV2hlZWwsIHNsb3ROdW1iZXI6IG51bWJlcik6IEZpeHR1cmVXaGVlbFNsb3RbXSB7XG4gICAgLy8gcmV0dXJuIG9uZSBzbG90IG9yIHR3byBzbG90cywgaWYgdGhleSBhcmUgbWl4ZWQgKGUuZy4gc2xvciBudW1iZXIgMi41IHJldHVybnMgdGhlIHNsb3RzIDIgYW5kIDMpXG4gICAgY29uc3Qgc2xvdHM6IEZpeHR1cmVXaGVlbFNsb3RbXSA9IFtdO1xuXG4gICAgaWYgKCF3aGVlbCkge1xuICAgICAgcmV0dXJuIHNsb3RzO1xuICAgIH1cblxuICAgIGlmIChzbG90TnVtYmVyIC0gTWF0aC5mbG9vcihzbG90TnVtYmVyKSA+IDApIHtcbiAgICAgIC8vIHR3byBzbG90cyBhcmUgc2V0XG4gICAgICBjb25zdCBudW1iZXIgPSBNYXRoLmZsb29yKHNsb3ROdW1iZXIpO1xuICAgICAgc2xvdHMucHVzaCh3aGVlbC5zbG90c1tudW1iZXIgLSAxXSk7XG4gICAgICBpZiAobnVtYmVyID49IDAgJiYgbnVtYmVyIDwgd2hlZWwuc2xvdHMubGVuZ3RoKSB7XG4gICAgICAgIHNsb3RzLnB1c2god2hlZWwuc2xvdHNbbnVtYmVyXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9ubHkgb25lIHNsb3QgaXMgc2V0XG4gICAgICBzbG90cy5wdXNoKHdoZWVsLnNsb3RzW3Nsb3ROdW1iZXIgLSAxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNsb3RzO1xuICB9XG5cbiAgZ2V0TW9kZUJ5Rml4dHVyZShwcm9maWxlOiBGaXh0dXJlUHJvZmlsZSwgZml4dHVyZTogRml4dHVyZSk6IEZpeHR1cmVNb2RlIHtcbiAgICBmb3IgKGNvbnN0IG1vZGUgb2YgcHJvZmlsZS5tb2Rlcykge1xuICAgICAgaWYgKG1vZGUuc2hvcnROYW1lKSB7XG4gICAgICAgIGlmIChtb2RlLnNob3J0TmFtZSA9PT0gZml4dHVyZS5tb2RlU2hvcnROYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb2RlLm5hbWUgPT09IGZpeHR1cmUubW9kZVNob3J0TmFtZSkge1xuICAgICAgICAgIHJldHVybiBtb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXh0dXJlQ2FwYWJpbGl0eShjYXBhYmlsaXR5OiBGaXh0dXJlQ2FwYWJpbGl0eSwgY2hhbm5lbE5hbWU6IHN0cmluZywgcHJvZmlsZTogRml4dHVyZVByb2ZpbGUpOiBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eSB7XG4gICAgY29uc3QgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkgPSBuZXcgQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHkoKTtcbiAgICBjYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eS5jYXBhYmlsaXR5ID0gY2FwYWJpbGl0eTtcbiAgICBpZiAoY2FwYWJpbGl0eS5zbG90TnVtYmVyKSB7XG4gICAgICAvLyB0aGVyZSBpcyBhIHdoZWVsIGNvbm5lY3RlZCB0byB0aGlzIGNhcGFiaWxpdHlcbiAgICAgIGlmICh0eXBlb2YgY2FwYWJpbGl0eS53aGVlbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkud2hlZWxOYW1lID0gY2FwYWJpbGl0eS53aGVlbCBhcyBzdHJpbmc7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2FwYWJpbGl0eS53aGVlbCkpIHtcbiAgICAgICAgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkud2hlZWxOYW1lID0gY2FwYWJpbGl0eS53aGVlbFswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlZEZpeHR1cmVDYXBhYmlsaXR5LndoZWVsTmFtZSA9IGNoYW5uZWxOYW1lO1xuICAgICAgfVxuICAgICAgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkud2hlZWwgPSB0aGlzLmdldFdoZWVsQnlOYW1lKHByb2ZpbGUsIGNhY2hlZEZpeHR1cmVDYXBhYmlsaXR5LndoZWVsTmFtZSk7XG4gICAgICBjYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eS53aGVlbFNsb3RzID0gdGhpcy5nZXRXaGVlbFNsb3RzKGNhY2hlZEZpeHR1cmVDYXBhYmlsaXR5LndoZWVsLCBjYXBhYmlsaXR5LnNsb3ROdW1iZXIpO1xuICAgICAgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkud2hlZWxJc0NvbG9yID0gdGhpcy53aGVlbEhhc1Nsb3RUeXBlKGNhY2hlZEZpeHR1cmVDYXBhYmlsaXR5LndoZWVsLCBGaXh0dXJlV2hlZWxTbG90VHlwZS5Db2xvcik7XG4gICAgfVxuICAgIGlmIChjYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlICYmIGNhY2hlZEZpeHR1cmVDYXBhYmlsaXR5LmNhcGFiaWxpdHkuZG14UmFuZ2UubGVuZ3RoID09PSAyKSB7XG4gICAgICBjYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eS5jZW50ZXJWYWx1ZSA9IE1hdGguZmxvb3IoXG4gICAgICAgIChjYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eS5jYXBhYmlsaXR5LmRteFJhbmdlWzBdICsgY2FjaGVkRml4dHVyZUNhcGFiaWxpdHkuY2FwYWJpbGl0eS5kbXhSYW5nZVsxXSkgLyAyXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY2FjaGVkRml4dHVyZUNhcGFiaWxpdHk7XG4gIH1cblxuICBwcml2YXRlIGdldENhcGFiaWxpdGllc0J5Q2hhbm5lbChcbiAgICBmaXh0dXJlQ2hhbm5lbDogRml4dHVyZUNoYW5uZWwsXG4gICAgY2hhbm5lbE5hbWU6IHN0cmluZyxcbiAgICBwcm9maWxlOiBGaXh0dXJlUHJvZmlsZVxuICApOiBDYWNoZWRGaXh0dXJlQ2FwYWJpbGl0eVtdIHtcbiAgICBjb25zdCBjYXBhYmlsaXRlczogQ2FjaGVkRml4dHVyZUNhcGFiaWxpdHlbXSA9IFtdO1xuXG4gICAgaWYgKGZpeHR1cmVDaGFubmVsLmNhcGFiaWxpdHkpIHtcbiAgICAgIGNhcGFiaWxpdGVzLnB1c2godGhpcy5nZXRGaXh0dXJlQ2FwYWJpbGl0eShmaXh0dXJlQ2hhbm5lbC5jYXBhYmlsaXR5LCBjaGFubmVsTmFtZSwgcHJvZmlsZSkpO1xuICAgIH0gZWxzZSBpZiAoZml4dHVyZUNoYW5uZWwuY2FwYWJpbGl0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGNhcGFiaWxpdHkgb2YgZml4dHVyZUNoYW5uZWwuY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgIGNhcGFiaWxpdGVzLnB1c2godGhpcy5nZXRGaXh0dXJlQ2FwYWJpbGl0eShjYXBhYmlsaXR5LCBjaGFubmVsTmFtZSwgcHJvZmlsZSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjYXBhYmlsaXRlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWF4VmFsdWVCeUNoYW5uZWwoZml4dHVyZUNoYW5uZWw6IEZpeHR1cmVDaGFubmVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMjU2LCAxICsgZml4dHVyZUNoYW5uZWwuZmluZUNoYW5uZWxBbGlhc2VzLmxlbmd0aCkgLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsdWVCeUNoYW5uZWwoZml4dHVyZUNoYW5uZWw6IEZpeHR1cmVDaGFubmVsKTogbnVtYmVyIHtcbiAgICBpZiAoIWZpeHR1cmVDaGFubmVsLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNOYU4oZml4dHVyZUNoYW5uZWwuZGVmYXVsdFZhbHVlIGFzIGFueSkgJiYgKGZpeHR1cmVDaGFubmVsLmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpLmVuZHNXaXRoKCclJykpIHtcbiAgICAgIC8vIHBlcmNlbnRhZ2UgdmFsdWVcbiAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSBOdW1iZXIucGFyc2VJbnQoKGZpeHR1cmVDaGFubmVsLmRlZmF1bHRWYWx1ZSBhcyBzdHJpbmcpLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgY29uc3QgbWF4VmFsdWUgPSB0aGlzLmdldE1heFZhbHVlQnlDaGFubmVsKGZpeHR1cmVDaGFubmVsKTtcbiAgICAgIHJldHVybiAobWF4VmFsdWUgLyAxMDApICogcGVyY2VudGFnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRE1YIHZhbHVlXG4gICAgICByZXR1cm4gTnVtYmVyLnBhcnNlSW50KGZpeHR1cmVDaGFubmVsLmRlZmF1bHRWYWx1ZSBhcyBhbnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sb3JXaGVlbEJ5Q2hhbm5lbChjaGFubmVsOiBDYWNoZWRGaXh0dXJlQ2hhbm5lbCwgcHJvZmlsZTogRml4dHVyZVByb2ZpbGUpOiBGaXh0dXJlV2hlZWwge1xuICAgIGZvciAoY29uc3QgY2hhbm5lbENhcGFiaWxpdHkgb2YgY2hhbm5lbC5jYXBhYmlsaXRpZXMpIHtcbiAgICAgIGlmIChjaGFubmVsQ2FwYWJpbGl0eS53aGVlbElzQ29sb3IpIHtcbiAgICAgICAgcmV0dXJuIGNoYW5uZWxDYXBhYmlsaXR5LndoZWVsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBwcml2YXRlIGNoYW5uZWxJbkxpc3QoY2hhbm5lbHM6IENhY2hlZEZpeHR1cmVDaGFubmVsW10sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAvLyAgIGZvciAobGV0IGNoYW5uZWwgb2YgY2hhbm5lbHMpIHtcbiAgLy8gICAgIGlmIChjaGFubmVsLmNoYW5uZWxOYW1lID09PSBuYW1lKSB7XG4gIC8vICAgICAgIHJldHVybiB0cnVlO1xuICAvLyAgICAgfVxuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiBmYWxzZTtcbiAgLy8gfVxuXG4gIGdldENoYW5uZWxCeU5hbWUoZml4dHVyZTogQ2FjaGVkRml4dHVyZSwgY2hhbm5lbE5hbWU6IHN0cmluZyk6IENhY2hlZEZpeHR1cmVDaGFubmVsIHtcbiAgICBmb3IgKGNvbnN0IGNoYW5uZWwgb2YgZml4dHVyZS5jaGFubmVscykge1xuICAgICAgaWYgKFxuICAgICAgICAoY2hhbm5lbC5uYW1lICYmIGNoYW5uZWwubmFtZSA9PT0gY2hhbm5lbE5hbWUpIHx8XG4gICAgICAgIChjaGFubmVsLmNoYW5uZWwgJiYgY2hhbm5lbC5jaGFubmVsLmZpbmVDaGFubmVsQWxpYXNlcy5pbmRleE9mKGNoYW5uZWxOYW1lKSA+IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBjaGFubmVsO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRDYWNoZWRDaGFubmVscyhwcm9maWxlOiBGaXh0dXJlUHJvZmlsZSwgbW9kZTogRml4dHVyZU1vZGUpOiBDYWNoZWRGaXh0dXJlQ2hhbm5lbFtdIHtcbiAgICBjb25zdCBjaGFubmVsczogQ2FjaGVkRml4dHVyZUNoYW5uZWxbXSA9IFtdO1xuXG4gICAgaWYgKCFtb2RlKSB7XG4gICAgICByZXR1cm4gY2hhbm5lbHM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhdmFpbGFibGVDaGFubmVsTmFtZSBvZiBPYmplY3Qua2V5cyhwcm9maWxlLmF2YWlsYWJsZUNoYW5uZWxzKSkge1xuICAgICAgY29uc3QgYXZhaWxhYmxlQ2hhbm5lbDogRml4dHVyZUNoYW5uZWwgPSBwcm9maWxlLmF2YWlsYWJsZUNoYW5uZWxzW2F2YWlsYWJsZUNoYW5uZWxOYW1lXTtcblxuICAgICAgZm9yIChjb25zdCBjaGFubmVsIG9mIG1vZGUuY2hhbm5lbHMpIHtcbiAgICAgICAgLy8gY2hlY2sgZm9yIHN0cmluZyBjaGFubmVsLiBJdCBjYW4gZ2V0IGNyZWVweSBmb3IgbWF0cml4IG1vZGVzXG4gICAgICAgIGlmICh0eXBlb2YgY2hhbm5lbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBtb2RlQ2hhbm5lbDogc3RyaW5nID0gY2hhbm5lbCBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAvLyBkb24ndCBjaGVjayB0aGUgZmluZSBjaGFubmVscy4gb25seSBhZGQgdGhlIGNvYXJzZSBjaGFubmVsLlxuICAgICAgICAgIGlmIChtb2RlQ2hhbm5lbCA9PT0gYXZhaWxhYmxlQ2hhbm5lbE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZEZpeHR1cmVDaGFubmVsID0gbmV3IENhY2hlZEZpeHR1cmVDaGFubmVsKCk7XG4gICAgICAgICAgICBjYWNoZWRGaXh0dXJlQ2hhbm5lbC5jaGFubmVsID0gYXZhaWxhYmxlQ2hhbm5lbDtcbiAgICAgICAgICAgIGNhY2hlZEZpeHR1cmVDaGFubmVsLm5hbWUgPSBhdmFpbGFibGVDaGFubmVsTmFtZTtcbiAgICAgICAgICAgIGNhY2hlZEZpeHR1cmVDaGFubmVsLmNhcGFiaWxpdGllcyA9IHRoaXMuZ2V0Q2FwYWJpbGl0aWVzQnlDaGFubmVsKGNhY2hlZEZpeHR1cmVDaGFubmVsLmNoYW5uZWwsIGF2YWlsYWJsZUNoYW5uZWxOYW1lLCBwcm9maWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlQnlDaGFubmVsKGNhY2hlZEZpeHR1cmVDaGFubmVsLmNoYW5uZWwpO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICBjYWNoZWRGaXh0dXJlQ2hhbm5lbC5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZWRGaXh0dXJlQ2hhbm5lbC5tYXhWYWx1ZSA9IHRoaXMuZ2V0TWF4VmFsdWVCeUNoYW5uZWwoY2FjaGVkRml4dHVyZUNoYW5uZWwuY2hhbm5lbCk7XG4gICAgICAgICAgICBjYWNoZWRGaXh0dXJlQ2hhbm5lbC5jb2xvcldoZWVsID0gdGhpcy5nZXRDb2xvcldoZWVsQnlDaGFubmVsKGNhY2hlZEZpeHR1cmVDaGFubmVsLCBwcm9maWxlKTtcbiAgICAgICAgICAgIGNoYW5uZWxzLnB1c2goY2FjaGVkRml4dHVyZUNoYW5uZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBudWxsIG1heSBiZSBwYXNzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgYW4gdW5kZWZpbmVkIGNoYW5uZWxcbiAgICAgICAgICBjaGFubmVscy5wdXNoKG5ldyBDYWNoZWRGaXh0dXJlQ2hhbm5lbCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaGFubmVscztcbiAgfVxuXG4gIHVwZGF0ZUNhY2hlZEZpeHR1cmVzKCkge1xuICAgIC8vIGNhbGN1bGF0ZSBzb21lIGZyZXF1ZW50bHkgdXNlZCB2YWx1ZXMgYXMgYSBjYWNoZSB0byBzYXZlIGNwdSB0aW1lXG4gICAgLy8gYWZ0ZXJ3YXJkc1xuICAgIHRoaXMuY2FjaGVkRml4dHVyZXMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiB0aGlzLnByb2plY3RTZXJ2aWNlLnByb2plY3QuZml4dHVyZXMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZEZpeHR1cmUgPSBuZXcgQ2FjaGVkRml4dHVyZSgpO1xuXG4gICAgICBjYWNoZWRGaXh0dXJlLmZpeHR1cmUgPSBmaXh0dXJlO1xuICAgICAgY2FjaGVkRml4dHVyZS5wcm9maWxlID0gdGhpcy5nZXRQcm9maWxlQnlVdWlkKGZpeHR1cmUucHJvZmlsZVV1aWQpO1xuICAgICAgY2FjaGVkRml4dHVyZS5tb2RlID0gdGhpcy5nZXRNb2RlQnlGaXh0dXJlKGNhY2hlZEZpeHR1cmUucHJvZmlsZSwgZml4dHVyZSk7XG4gICAgICBjYWNoZWRGaXh0dXJlLmNoYW5uZWxzID0gdGhpcy5nZXRDYWNoZWRDaGFubmVscyhjYWNoZWRGaXh0dXJlLnByb2ZpbGUsIGNhY2hlZEZpeHR1cmUubW9kZSk7XG5cbiAgICAgIHRoaXMuY2FjaGVkRml4dHVyZXMucHVzaChjYWNoZWRGaXh0dXJlKTtcbiAgICB9XG4gIH1cblxuICBjYXBhYmlsaXRpZXNNYXRjaChcbiAgICB0eXBlMTogRml4dHVyZUNhcGFiaWxpdHlUeXBlLFxuICAgIHR5cGUyOiBGaXh0dXJlQ2FwYWJpbGl0eVR5cGUsXG4gICAgY29sb3IxOiBGaXh0dXJlQ2FwYWJpbGl0eUNvbG9yLFxuICAgIGNvbG9yMjogRml4dHVyZUNhcGFiaWxpdHlDb2xvcixcbiAgICB3aGVlbDE6IHN0cmluZyxcbiAgICB3aGVlbDI6IHN0cmluZyxcbiAgICBwcm9maWxlVXVpZDE6IHN0cmluZyxcbiAgICBwcm9maWxlVXVpZDI6IHN0cmluZ1xuICApOiBib29sZWFuIHtcbiAgICAvLyBjaGVja3MsIHdoZXRoZXIgdHdvIHByb3ZpZGVkIGNhcGFwYWJpbGl0aWVzIG1hdGNoXG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGUxID09PSB0eXBlMiAmJlxuICAgICAgKCFjb2xvcjEgfHwgY29sb3IxID09PSBjb2xvcjIpICYmXG4gICAgICAoIXdoZWVsMSB8fCB3aGVlbDEgPT09IHdoZWVsMikgJiZcbiAgICAgICghcHJvZmlsZVV1aWQxIHx8IHByb2ZpbGVVdWlkMSA9PT0gcHJvZmlsZVV1aWQyKVxuICAgICk7XG4gIH1cblxuICBzZXR0aW5nc0ZpeHR1cmVJc1NlbGVjdGVkKGZpeHR1cmU6IEZpeHR1cmUpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IHNlbGVjdGVkRml4dHVyZSBvZiB0aGlzLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcykge1xuICAgICAgaWYgKHNlbGVjdGVkRml4dHVyZSA9PT0gZml4dHVyZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzd2l0Y2hTZXR0aW5nc0ZpeHR1cmVTZWxlY3Rpb24oZml4dHVyZTogRml4dHVyZSkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzRml4dHVyZUlzU2VsZWN0ZWQoZml4dHVyZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZXR0aW5nc0ZpeHR1cmVzLnNwbGljZSh0aGlzLnNlbGVjdGVkU2V0dGluZ3NGaXh0dXJlcy5pbmRleE9mKGZpeHR1cmUpLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFNldHRpbmdzRml4dHVyZXMucHVzaChmaXh0dXJlKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaXh0dXJlSWNvbkNsYXNzKHByb2ZpbGU6IEZpeHR1cmVQcm9maWxlKTogc3RyaW5nIHtcbiAgICBpZiAoIXByb2ZpbGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHByb2ZpbGUuY2F0ZWdvcmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKCFwcm9maWxlLmNhdGVnb3JpZXNbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHByb2ZpbGUuY2F0ZWdvcmllc1swXS5yZXBsYWNlKCcgJywgJy0nKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICB9XG5cbiAgdXBkYXRlUHJvZmlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KCd1cGRhdGUtcHJvZmlsZXMnLCBudWxsKTtcbiAgfVxuXG4gIGdldE5leHRGcmVlRG14Q2hhbm5lbChmaXh0dXJlUG9vbDogRml4dHVyZVtdLCBuZWVkZWRDaGFubmVsczogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBnZXQgdGhlIG5leHQgZnJlZSBzcGFjZSBmb3IgdGhpcyBmaXh0dXJlXG4gICAgbGV0IGZyZWVDaGFubmVscyA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUxMjsgaSsrKSB7XG4gICAgICBsZXQgb2NjdXBpZWRDaGFubmVscyA9IDA7XG5cbiAgICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiBmaXh0dXJlUG9vbCkge1xuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRNb2RlQnlGaXh0dXJlKHRoaXMuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKSwgZml4dHVyZSk7XG5cbiAgICAgICAgaWYgKGkgPj0gZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgJiYgaSA8IGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsICsgbW9kZS5jaGFubmVscy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyB0aGlzIGNoYW5uZWwgaXMgYWxyZWFkeSBvY2N1cGllZCBieSBhIGZpeHR1cmUgLT4gbW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgdGhlIGZpeHR1cmVcbiAgICAgICAgICBpZiAobW9kZS5jaGFubmVscy5sZW5ndGggPiBvY2N1cGllZENoYW5uZWxzKSB7XG4gICAgICAgICAgICBvY2N1cGllZENoYW5uZWxzID0gbW9kZS5jaGFubmVscy5sZW5ndGggLSAoaSAtIGZpeHR1cmUuZG14Rmlyc3RDaGFubmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9jY3VwaWVkQ2hhbm5lbHMgPiAwKSB7XG4gICAgICAgIGkgKz0gb2NjdXBpZWRDaGFubmVscyAtIDE7XG4gICAgICAgIGZyZWVDaGFubmVscyA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmVlQ2hhbm5lbHMrKztcbiAgICAgIH1cblxuICAgICAgaWYgKGZyZWVDaGFubmVscyA9PT0gbmVlZGVkQ2hhbm5lbHMpIHtcbiAgICAgICAgcmV0dXJuIGkgLSBmcmVlQ2hhbm5lbHMgKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG5vIGZyZWUgc3BhY2UgbGVmdCBmb3IgdGhlIG5lZWRlZCBjaGFubmVsc1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGFkZEZpeHR1cmUocHJvZmlsZTogRml4dHVyZVByb2ZpbGUsIGZpeHR1cmVQb29sOiBGaXh0dXJlW10pOiBGaXh0dXJlIHtcbiAgICBjb25zdCBmaXh0dXJlID0gbmV3IEZpeHR1cmUoKTtcblxuICAgIGZpeHR1cmUudXVpZCA9IHRoaXMudXVpZFNlcnZpY2UuZ2V0VXVpZCgpO1xuICAgIGZpeHR1cmUucHJvZmlsZVV1aWQgPSBwcm9maWxlLnV1aWQ7XG4gICAgZml4dHVyZS5uYW1lID0gcHJvZmlsZS5uYW1lO1xuXG4gICAgaWYgKHByb2ZpbGUubW9kZXMgJiYgcHJvZmlsZS5tb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmaXh0dXJlLm1vZGVTaG9ydE5hbWUgPSBwcm9maWxlLm1vZGVzWzBdLnNob3J0TmFtZTtcbiAgICB9XG5cbiAgICAvLyBhZGQgdGhlIHNhbWUgbW9kZSBhcyBhbiBleGlzdGluZyBmaXh0dXJlLCBpZiBhdmFpbGFibGVcbiAgICBsZXQgZXhpc3RpbmdNb2RlU2hvcnROYW1lOiBzdHJpbmc7XG4gICAgZm9yIChjb25zdCBleGlzdGluZ0ZpeHR1cmUgb2YgZml4dHVyZVBvb2wpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUHJvZmlsZSA9IHRoaXMuZ2V0UHJvZmlsZUJ5VXVpZChleGlzdGluZ0ZpeHR1cmUucHJvZmlsZVV1aWQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmdQcm9maWxlID09PSBwcm9maWxlKSB7XG4gICAgICAgIGV4aXN0aW5nTW9kZVNob3J0TmFtZSA9IGV4aXN0aW5nRml4dHVyZS5tb2RlU2hvcnROYW1lO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhpc3RpbmdNb2RlU2hvcnROYW1lKSB7XG4gICAgICBmaXh0dXJlLm1vZGVTaG9ydE5hbWUgPSBleGlzdGluZ01vZGVTaG9ydE5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpeHR1cmUubW9kZVNob3J0TmFtZSA9IHByb2ZpbGUubW9kZXNbMF0uc2hvcnROYW1lIHx8IHByb2ZpbGUubW9kZXNbMF0ubmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRNb2RlQnlGaXh0dXJlKHRoaXMuZ2V0UHJvZmlsZUJ5VXVpZChmaXh0dXJlLnByb2ZpbGVVdWlkKSwgZml4dHVyZSk7XG4gICAgY29uc3QgZmlyc3RDaGFubmVsID0gdGhpcy5nZXROZXh0RnJlZURteENoYW5uZWwoZml4dHVyZVBvb2wsIG1vZGUuY2hhbm5lbHMubGVuZ3RoKTtcblxuICAgIGlmIChmaXJzdENoYW5uZWwgPj0gMCkge1xuICAgICAgZml4dHVyZS5kbXhGaXJzdENoYW5uZWwgPSBmaXJzdENoYW5uZWw7XG4gICAgICBmaXh0dXJlUG9vbC5wdXNoKGZpeHR1cmUpO1xuICAgICAgcmV0dXJuIGZpeHR1cmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5vIGZyZWUgc3BhY2UgYW55bW9yZVxuICAgICAgY29uc3QgbXNnID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5uby1mcmVlLXNwYWNlJztcbiAgICAgIGNvbnN0IHRpdGxlID0gJ2Rlc2lnbmVyLmZpeHR1cmUtcG9vbC5uby1mcmVlLXNwYWNlLXRpdGxlJztcblxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbbXNnLCB0aXRsZV0pLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcihyZXN1bHRbbXNnXSwgcmVzdWx0W3RpdGxlXSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- let HotkeyTargetExcludeService = class HotkeyTargetExcludeService {
5
- constructor() {
6
- }
7
- exclude(event) {
8
- // don't react on certain targets (e.g. the user is inside an input field)
9
- if (!event.target) {
10
- return false;
11
- }
12
- if (event.target.nodeName === 'INPUT') {
13
- return true;
14
- }
15
- return false;
16
- }
17
- };
18
- HotkeyTargetExcludeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function HotkeyTargetExcludeService_Factory() { return new HotkeyTargetExcludeService(); }, token: HotkeyTargetExcludeService, providedIn: "root" });
19
- HotkeyTargetExcludeService = __decorate([
20
- Injectable({
21
- providedIn: 'root',
22
- }),
23
- __metadata("design:paramtypes", [])
24
- ], HotkeyTargetExcludeService);
25
- export { HotkeyTargetExcludeService };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LXRhcmdldC1leGNsdWRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Acm9ja2V0c2hvdy9kZXNpZ25lci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9ob3RrZXktdGFyZ2V0LWV4Y2x1ZGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFBMEI7SUFDckM7SUFBZSxDQUFDO0lBRWhCLE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGLENBQUE7O0FBZlksMEJBQTBCO0lBSHRDLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7O0dBQ1csMEJBQTBCLENBZXRDO1NBZlksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSG90a2V5VGFyZ2V0RXhjbHVkZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZXhjbHVkZShldmVudDogYW55KTogYm9vbGVhbiB7XG4gICAgLy8gZG9uJ3QgcmVhY3Qgb24gY2VydGFpbiB0YXJnZXRzIChlLmcuIHRoZSB1c2VyIGlzIGluc2lkZSBhbiBpbnB1dCBmaWVsZClcbiAgICBpZiAoIWV2ZW50LnRhcmdldCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudC50YXJnZXQubm9kZU5hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19