mediasfu-angular 1.0.0 → 1.0.2

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 (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +194 -192
  3. package/dist/README.md +194 -192
  4. package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
  5. package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
  6. package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
  7. package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
  8. package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
  9. package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
  10. package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
  11. package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
  12. package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
  13. package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
  14. package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
  15. package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
  16. package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
  17. package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
  18. package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
  19. package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
  20. package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
  21. package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
  22. package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
  23. package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
  24. package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
  25. package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
  26. package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
  27. package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
  28. package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
  29. package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
  30. package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
  31. package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
  32. package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
  33. package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
  34. package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
  35. package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
  36. package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
  37. package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
  38. package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
  39. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +54 -3
  40. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +54 -3
  41. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +52 -3
  42. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +52 -3
  43. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +50 -3
  44. package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
  45. package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
  46. package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
  47. package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
  48. package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
  49. package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
  50. package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
  51. package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
  52. package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
  53. package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
  54. package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
  55. package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
  56. package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
  57. package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
  58. package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
  59. package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
  60. package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
  61. package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
  62. package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
  63. package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
  64. package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
  65. package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
  66. package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
  67. package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
  68. package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
  69. package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
  70. package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
  71. package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
  72. package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
  73. package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
  74. package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
  75. package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
  76. package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
  77. package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
  78. package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
  79. package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
  80. package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
  81. package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
  82. package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
  83. package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
  84. package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
  85. package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
  86. package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
  87. package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
  88. package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
  89. package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
  90. package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
  91. package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
  92. package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
  93. package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
  94. package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
  95. package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
  96. package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
  97. package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
  98. package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
  99. package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
  100. package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
  101. package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
  102. package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
  103. package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
  104. package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
  105. package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
  106. package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
  107. package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
  108. package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
  109. package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
  110. package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
  111. package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
  112. package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
  113. package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
  114. package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
  115. package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
  116. package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
  117. package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
  118. package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
  119. package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
  120. package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
  121. package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
  122. package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
  123. package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
  124. package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
  125. package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
  126. package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
  127. package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
  128. package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
  129. package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
  130. package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
  131. package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
  132. package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
  133. package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
  134. package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
  135. package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
  136. package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
  137. package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
  138. package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
  139. package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
  140. package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
  141. package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
  142. package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
  143. package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
  144. package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
  145. package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
  146. package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
  147. package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
  148. package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
  149. package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
  150. package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
  151. package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
  152. package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
  153. package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
  154. package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
  155. package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
  156. package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
  157. package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
  158. package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
  159. package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
  160. package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
  161. package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
  162. package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
  163. package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
  164. package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
  165. package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
  166. package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
  167. package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
  168. package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
  169. package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
  170. package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
  171. package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
  172. package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
  173. package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
  174. package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
  175. package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
  176. package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
  177. package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
  178. package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
  179. package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
  180. package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
  181. package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
  182. package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +13 -3
  183. package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
  184. package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
  185. package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
  186. package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
  187. package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
  188. package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
  189. package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
  190. package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
  191. package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
  192. package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
  193. package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
  194. package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
  195. package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
  196. package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
  197. package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
  198. package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
  199. package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
  200. package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
  201. package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
  202. package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
  203. package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
  204. package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
  205. package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
  206. package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
  207. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
  208. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
  209. package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
  210. package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
  211. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
  212. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
  213. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
  214. package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
  215. package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
  216. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
  217. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
  218. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
  219. package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
  220. package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
  221. package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
  222. package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
  223. package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
  224. package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
  225. package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
  226. package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
  227. package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
  228. package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
  229. package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
  230. package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
  231. package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
  232. package/dist/fesm2022/mediasfu-angular.mjs +8192 -910
  233. package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
  234. package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
  235. package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
  236. package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
  237. package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
  238. package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
  239. package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
  240. package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
  241. package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
  242. package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
  243. package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
  244. package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
  245. package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
  246. package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
  247. package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
  248. package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
  249. package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
  250. package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
  251. package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
  252. package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
  253. package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
  254. package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
  255. package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
  256. package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
  257. package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
  258. package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
  259. package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
  260. package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
  261. package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
  262. package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
  263. package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
  264. package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
  265. package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
  266. package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
  267. package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
  268. package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
  269. package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +49 -0
  270. package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +49 -0
  271. package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +47 -11
  272. package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +47 -11
  273. package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +45 -11
  274. package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
  275. package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
  276. package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
  277. package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
  278. package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
  279. package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
  280. package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
  281. package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
  282. package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
  283. package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
  284. package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
  285. package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
  286. package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
  287. package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
  288. package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
  289. package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
  290. package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
  291. package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
  292. package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
  293. package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
  294. package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
  295. package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
  296. package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
  297. package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
  298. package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
  299. package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
  300. package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
  301. package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
  302. package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
  303. package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
  304. package/dist/lib/consumers/change-vids.service.d.ts +131 -66
  305. package/dist/lib/consumers/check-grid.service.d.ts +32 -18
  306. package/dist/lib/consumers/check-permission.service.d.ts +25 -0
  307. package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
  308. package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
  309. package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
  310. package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
  311. package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
  312. package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
  313. package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
  314. package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
  315. package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
  316. package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
  317. package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
  318. package/dist/lib/consumers/control-media.service.d.ts +45 -0
  319. package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
  320. package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
  321. package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
  322. package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
  323. package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
  324. package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
  325. package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
  326. package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
  327. package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
  328. package/dist/lib/consumers/get-videos.service.d.ts +33 -0
  329. package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
  330. package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
  331. package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
  332. package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
  333. package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
  334. package/dist/lib/consumers/re-port.service.d.ts +48 -0
  335. package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
  336. package/dist/lib/consumers/readjust.service.d.ts +50 -0
  337. package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
  338. package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
  339. package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
  340. package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
  341. package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
  342. package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
  343. package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
  344. package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
  345. package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
  346. package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
  347. package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
  348. package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
  349. package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
  350. package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
  351. package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
  352. package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
  353. package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
  354. package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
  355. package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
  356. package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
  357. package/dist/lib/consumers/trigger.service.d.ts +38 -0
  358. package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
  359. package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
  360. package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
  361. package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
  362. package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
  363. package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
  364. package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
  365. package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
  366. package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
  367. package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
  368. package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
  369. package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
  370. package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
  371. package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
  372. package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
  373. package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
  374. package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
  375. package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
  376. package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
  377. package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
  378. package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
  379. package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
  380. package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
  381. package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
  382. package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
  383. package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
  384. package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
  385. package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
  386. package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
  387. package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
  388. package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
  389. package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
  390. package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
  391. package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
  392. package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
  393. package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
  394. package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
  395. package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
  396. package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
  397. package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
  398. package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
  399. package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
  400. package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
  401. package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
  402. package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
  403. package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
  404. package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
  405. package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
  406. package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
  407. package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
  408. package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
  409. package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
  410. package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
  411. package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
  412. package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
  413. package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
  414. package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
  415. package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
  416. package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
  417. package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
  418. package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
  419. package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
  420. package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
  421. package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
  422. package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
  423. package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
  424. package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
  425. package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
  426. package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
  427. package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
  428. package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
  429. package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
  430. package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
  431. package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
  432. package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
  433. package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
  434. package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
  435. package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
  436. package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
  437. package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
  438. package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
  439. package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
  440. package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
  441. package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
  442. package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
  443. package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
  444. package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
  445. package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
  446. package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
  447. package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
  448. package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
  449. package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
  450. package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
  451. package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
  452. package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
  453. package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
  454. package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
  455. package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
  456. package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
  457. package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
  458. package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
  459. package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
  460. package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
  461. package/package.json +11 -2
@@ -1,5 +1,102 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * Handles the click event for toggling audio in a media session.
5
+ *
6
+ * @param {ClickAudioOptions} options - The parameters required for handling the audio click event.
7
+ * @param {Object} options.parameters - The parameters for toggling audio.
8
+ * @param {boolean} options.parameters.checkMediaPermission - Flag indicating whether to check media permission.
9
+ * @param {boolean} options.parameters.hasAudioPermission - Flag indicating if the user has audio permission.
10
+ * @param {boolean} options.parameters.audioPaused - Flag indicating if audio is paused.
11
+ * @param {boolean} options.parameters.audioAlreadyOn - Flag indicating if audio is already turned on.
12
+ * @param {boolean} options.parameters.audioOnlyRoom - Flag indicating if the room is audio-only.
13
+ * @param {boolean} options.parameters.recordStarted - Flag indicating if recording has started.
14
+ * @param {boolean} options.parameters.recordResumed - Flag indicating if recording has resumed.
15
+ * @param {boolean} options.parameters.recordPaused - Flag indicating if recording is paused.
16
+ * @param {boolean} options.parameters.recordStopped - Flag indicating if recording is stopped.
17
+ * @param {string} options.parameters.recordingMediaOptions - Media options for recording (e.g., "video", "audio").
18
+ * @param {string} options.parameters.islevel - User's level in the application.
19
+ * @param {boolean} options.parameters.youAreCoHost - Flag indicating if the user is a co-host.
20
+ * @param {boolean} options.parameters.adminRestrictSetting - Flag indicating if admin restrictions are set.
21
+ * @param {string | null} options.parameters.audioRequestState - Current state of the audio request.
22
+ * @param {number} options.parameters.audioRequestTime - Timestamp of the audio request.
23
+ * @param {string} options.parameters.member - Current member's name.
24
+ * @param {Socket} options.parameters.socket - The socket instance for communication.
25
+ * @param {string} options.parameters.roomName - The name of the room.
26
+ * @param {string} options.parameters.userDefaultAudioInputDevice - The default audio input device for the user.
27
+ * @param {boolean} options.parameters.micAction - Flag indicating if the microphone action is in progress.
28
+ * @param {MediaStream | null} options.parameters.localStream - The user's local media stream.
29
+ * @param {string} options.parameters.audioSetting - Current audio setting.
30
+ * @param {string} options.parameters.videoSetting - Current video setting.
31
+ * @param {string} options.parameters.screenshareSetting - Current screenshare setting.
32
+ * @param {string} options.parameters.chatSetting - Current chat setting.
33
+ * @param {number} options.parameters.updateRequestIntervalSeconds - Interval for updating request states.
34
+ * @param {Participant[]} options.parameters.participants - List of participants in the room.
35
+ * @param {boolean} options.parameters.transportCreated - Flag indicating if the transport has been created.
36
+ * @param {boolean} options.parameters.transportCreatedAudio - Flag indicating if audio transport has been created.
37
+ *
38
+ * @returns {Promise<void>} A promise that resolves when the audio click event has been handled.
39
+ *
40
+ * @remarks
41
+ * This function performs the following actions:
42
+ * - If the event is audio-only, it shows an alert and exits.
43
+ * - If the audio is already on, it handles the logic for turning it off, including checking recording states and permissions.
44
+ * - If the audio is off, it checks for admin restrictions, user permissions, and handles the logic for turning the audio on.
45
+ * - It updates various states and emits socket events as necessary.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const options: ClickAudioOptions = {
50
+ * parameters: {
51
+ * checkMediaPermission: true,
52
+ * hasAudioPermission: false,
53
+ * audioPaused: false,
54
+ * audioAlreadyOn: false,
55
+ * audioOnlyRoom: false,
56
+ * recordStarted: false,
57
+ * recordResumed: false,
58
+ * recordPaused: false,
59
+ * recordStopped: false,
60
+ * recordingMediaOptions: 'audio',
61
+ * islevel: '1',
62
+ * youAreCoHost: false,
63
+ * adminRestrictSetting: false,
64
+ * audioRequestState: null,
65
+ * audioRequestTime: 0,
66
+ * member: 'John Doe',
67
+ * socket: socketInstance,
68
+ * roomName: 'exampleRoom',
69
+ * userDefaultAudioInputDevice: 'default',
70
+ * micAction: false,
71
+ * localStream: null,
72
+ * audioSetting: 'enabled',
73
+ * videoSetting: 'disabled',
74
+ * screenshareSetting: 'disabled',
75
+ * chatSetting: 'enabled',
76
+ * updateRequestIntervalSeconds: 30,
77
+ * participants: [],
78
+ * transportCreated: false,
79
+ * transportCreatedAudio: false,
80
+ * updateAudioAlreadyOn: (status) => console.log(status),
81
+ * updateAudioRequestState: (state) => console.log(state),
82
+ * updateAudioPaused: (status) => console.log(status),
83
+ * updateLocalStream: (stream) => console.log(stream),
84
+ * updateParticipants: (participants) => console.log(participants),
85
+ * updateTransportCreated: (status) => console.log(status),
86
+ * updateTransportCreatedAudio: (status) => console.log(status),
87
+ * updateMicAction: (action) => console.log(action),
88
+ * checkPermission: async () => 'granted',
89
+ * streamSuccessAudio: async () => console.log('Audio streaming success'),
90
+ * disconnectSendTransportAudio: async () => console.log('Audio transport disconnected'),
91
+ * requestPermissionAudio: async () => 'granted',
92
+ * resumeSendTransportAudio: async () => console.log('Audio transport resumed'),
93
+ * },
94
+ * };
95
+ *
96
+ * const clickAudioService = new ClickAudio();
97
+ * await clickAudioService.clickAudio(options);
98
+ * ```
99
+ */
3
100
  export class ClickAudio {
4
101
  /**
5
102
  * Handles the click event for toggling audio in a media session.
@@ -175,4 +272,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
175
272
  providedIn: 'root',
176
273
  }]
177
274
  }] });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3N0cmVhbS1tZXRob2RzL2NsaWNrLWF1ZGlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFpRjNDLE1BQU0sT0FBTyxVQUFVO0lBQ3JCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFFSCxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFxQjtRQUNoRCxJQUFJLEVBQ0Ysb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsMkJBQTJCLEVBQzNCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLDRCQUE0QixFQUM1QixZQUFZLEVBQ1osU0FBUyxFQUNULGdCQUFnQixFQUNoQixxQkFBcUIsRUFFckIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLGVBQWUsRUFFZixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsNEJBQTRCLEdBQzdCLEdBQUcsVUFBVSxDQUFDO1FBRWYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixTQUFTLEVBQUUsQ0FBQztnQkFD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SyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNyQixTQUFTLEVBQUUsQ0FBQztnQ0FDVixPQUFPLEVBQ0wsdUdBQXVHO2dDQUN6RyxJQUFJLEVBQUUsUUFBUTtnQ0FDZCxRQUFRLEVBQUUsSUFBSTs2QkFDZixDQUFDLENBQUM7d0JBQ0wsQ0FBQztvQkFDSCxDQUFDO29CQUNELE1BQU07Z0JBRVIsUUFBUTtZQUNWLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt1R0F4T1UsVUFBVTsyR0FBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDaGVja1Blcm1pc3Npb25UeXBlLFxuICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVycyxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1R5cGUsXG4gIFBhcnRpY2lwYW50LFxuICBSZXF1ZXN0UGVybWlzc2lvbkF1ZGlvVHlwZSxcbiAgUmVzdW1lU2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVycyxcbiAgUmVzdW1lU2VuZFRyYW5zcG9ydEF1ZGlvVHlwZSxcbiAgU2hvd0FsZXJ0LFxuICBTdHJlYW1TdWNjZXNzQXVkaW9QYXJhbWV0ZXJzLFxuICBTdHJlYW1TdWNjZXNzQXVkaW9UeXBlLFxufSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGlja0F1ZGlvUGFyYW1ldGVyc1xuICBleHRlbmRzIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW9QYXJhbWV0ZXJzLFxuICAgIFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMsXG4gICAgU3RyZWFtU3VjY2Vzc0F1ZGlvUGFyYW1ldGVycyB7XG4gIGNoZWNrTWVkaWFQZXJtaXNzaW9uOiBib29sZWFuO1xuICBoYXNBdWRpb1Blcm1pc3Npb246IGJvb2xlYW47XG4gIGF1ZGlvUGF1c2VkOiBib29sZWFuO1xuICBhdWRpb0FscmVhZHlPbjogYm9vbGVhbjtcbiAgYXVkaW9Pbmx5Um9vbTogYm9vbGVhbjtcbiAgcmVjb3JkU3RhcnRlZDogYm9vbGVhbjtcbiAgcmVjb3JkUmVzdW1lZDogYm9vbGVhbjtcbiAgcmVjb3JkUGF1c2VkOiBib29sZWFuO1xuICByZWNvcmRTdG9wcGVkOiBib29sZWFuO1xuICByZWNvcmRpbmdNZWRpYU9wdGlvbnM6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICB5b3VBcmVDb0hvc3Q6IGJvb2xlYW47XG4gIGFkbWluUmVzdHJpY3RTZXR0aW5nOiBib29sZWFuO1xuICBhdWRpb1JlcXVlc3RTdGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgYXVkaW9SZXF1ZXN0VGltZTogbnVtYmVyO1xuICBtZW1iZXI6IHN0cmluZztcbiAgc29ja2V0OiBTb2NrZXQ7XG4gIHJvb21OYW1lOiBzdHJpbmc7XG4gIHVzZXJEZWZhdWx0QXVkaW9JbnB1dERldmljZTogc3RyaW5nO1xuICBtaWNBY3Rpb246IGJvb2xlYW47XG4gIGxvY2FsU3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGw7XG4gIGF1ZGlvU2V0dGluZzogc3RyaW5nO1xuICB2aWRlb1NldHRpbmc6IHN0cmluZztcbiAgc2NyZWVuc2hhcmVTZXR0aW5nOiBzdHJpbmc7XG4gIGNoYXRTZXR0aW5nOiBzdHJpbmc7XG4gIHVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHM6IG51bWJlcjtcbiAgcGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdO1xuICB0cmFuc3BvcnRDcmVhdGVkOiBib29sZWFuO1xuICB0cmFuc3BvcnRDcmVhdGVkQXVkaW86IGJvb2xlYW47XG5cbiAgdXBkYXRlQXVkaW9BbHJlYWR5T246IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUF1ZGlvUmVxdWVzdFN0YXRlOiAoc3RhdGU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZUF1ZGlvUGF1c2VkOiAoc3RhdHVzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVMb2NhbFN0cmVhbTogKHN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVQYXJ0aWNpcGFudHM6IChwYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W10pID0+IHZvaWQ7XG4gIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWQ6IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbzogKHN0YXR1czogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlTWljQWN0aW9uOiAoYWN0aW9uOiBib29sZWFuKSA9PiB2b2lkO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIGNoZWNrUGVybWlzc2lvbjogQ2hlY2tQZXJtaXNzaW9uVHlwZTtcbiAgc3RyZWFtU3VjY2Vzc0F1ZGlvOiBTdHJlYW1TdWNjZXNzQXVkaW9UeXBlO1xuICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvOiBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvVHlwZTtcbiAgcmVxdWVzdFBlcm1pc3Npb25BdWRpbzogUmVxdWVzdFBlcm1pc3Npb25BdWRpb1R5cGU7XG4gIHJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpbzogUmVzdW1lU2VuZFRyYW5zcG9ydEF1ZGlvVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDbGlja0F1ZGlvUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrQXVkaW9PcHRpb25zIHtcbiAgcGFyYW1ldGVyczogQ2xpY2tBdWRpb1BhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrQXVkaW9UeXBlID0gKG9wdGlvbnM6IENsaWNrQXVkaW9PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tBdWRpbyB7XG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCBmb3IgdG9nZ2xpbmcgYXVkaW8gaW4gYSBtZWRpYSBzZXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0NsaWNrQXVkaW9PcHRpb25zfSBwYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGhhbmRsaW5nIHRoZSBhdWRpbyBjbGljayBldmVudC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGF1ZGlvIGNsaWNrIGV2ZW50IGhhcyBiZWVuIGhhbmRsZWQuXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIGFjdGlvbnM6XG4gICAqIC0gSWYgdGhlIGV2ZW50IGlzIGF1ZGlvLW9ubHksIGl0IHNob3dzIGFuIGFsZXJ0IGFuZCBleGl0cy5cbiAgICogLSBJZiB0aGUgYXVkaW8gaXMgYWxyZWFkeSBvbiwgaXQgaGFuZGxlcyB0aGUgbG9naWMgZm9yIHR1cm5pbmcgaXQgb2ZmLCBpbmNsdWRpbmcgY2hlY2tpbmcgcmVjb3JkaW5nIHN0YXRlcyBhbmQgcGVybWlzc2lvbnMuXG4gICAqIC0gSWYgdGhlIGF1ZGlvIGlzIG9mZiwgaXQgY2hlY2tzIGZvciBhZG1pbiByZXN0cmljdGlvbnMsIHVzZXIgcGVybWlzc2lvbnMsIGFuZCBoYW5kbGVzIHRoZSBsb2dpYyBmb3IgdHVybmluZyB0aGUgYXVkaW8gb24uXG4gICAqIC0gSXQgdXBkYXRlcyB2YXJpb3VzIHN0YXRlcyBhbmQgZW1pdHMgc29ja2V0IGV2ZW50cyBhcyBuZWNlc3NhcnkuXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBtYWtlcyB1c2Ugb2Ygc2V2ZXJhbCBoZWxwZXIgZnVuY3Rpb25zIGFuZCBzdGF0ZSB1cGRhdGUgZnVuY3Rpb25zIHBhc3NlZCBpbiB0aHJvdWdoIHRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cblxuICBhc3luYyBjbGlja0F1ZGlvKHsgcGFyYW1ldGVycyB9OiBDbGlja0F1ZGlvT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCB7XG4gICAgICBjaGVja01lZGlhUGVybWlzc2lvbixcbiAgICAgIGhhc0F1ZGlvUGVybWlzc2lvbixcbiAgICAgIGF1ZGlvUGF1c2VkLFxuICAgICAgYXVkaW9BbHJlYWR5T24sXG4gICAgICBhdWRpb09ubHlSb29tLFxuICAgICAgcmVjb3JkU3RhcnRlZCxcbiAgICAgIHJlY29yZFJlc3VtZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuICAgICAgaXNsZXZlbCxcbiAgICAgIHlvdUFyZUNvSG9zdCxcbiAgICAgIGFkbWluUmVzdHJpY3RTZXR0aW5nLFxuICAgICAgYXVkaW9SZXF1ZXN0U3RhdGUsXG4gICAgICBhdWRpb1JlcXVlc3RUaW1lLFxuICAgICAgbWVtYmVyLFxuICAgICAgc29ja2V0LFxuICAgICAgcm9vbU5hbWUsXG4gICAgICB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2UsXG4gICAgICBtaWNBY3Rpb24sXG4gICAgICBsb2NhbFN0cmVhbSxcbiAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgIHZpZGVvU2V0dGluZyxcbiAgICAgIHNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kcyxcbiAgICAgIHBhcnRpY2lwYW50cyxcbiAgICAgIHNob3dBbGVydCxcbiAgICAgIHRyYW5zcG9ydENyZWF0ZWQsXG4gICAgICB0cmFuc3BvcnRDcmVhdGVkQXVkaW8sXG5cbiAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uLFxuICAgICAgdXBkYXRlQXVkaW9SZXF1ZXN0U3RhdGUsXG4gICAgICB1cGRhdGVBdWRpb1BhdXNlZCxcbiAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtLFxuICAgICAgdXBkYXRlUGFydGljaXBhbnRzLFxuICAgICAgdXBkYXRlVHJhbnNwb3J0Q3JlYXRlZCxcbiAgICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbyxcbiAgICAgIHVwZGF0ZU1pY0FjdGlvbixcblxuICAgICAgY2hlY2tQZXJtaXNzaW9uLFxuICAgICAgc3RyZWFtU3VjY2Vzc0F1ZGlvLFxuICAgICAgcmVxdWVzdFBlcm1pc3Npb25BdWRpbyxcbiAgICAgIHJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpbyxcbiAgICAgIGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8sXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICBpZiAoYXVkaW9Pbmx5Um9vbSkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCB0dXJuIG9uIHlvdXIgY2FtZXJhIGluIGFuIGF1ZGlvLW9ubHkgZXZlbnQuJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGF1ZGlvQWxyZWFkeU9uKSB7XG4gICAgICBpZiAoaXNsZXZlbCA9PT0gJzInICYmIChyZWNvcmRTdGFydGVkIHx8IHJlY29yZFJlc3VtZWQpKSB7XG4gICAgICAgIGlmICghKHJlY29yZFBhdXNlZCB8fCByZWNvcmRTdG9wcGVkKSkge1xuICAgICAgICAgIGlmIChyZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAnWW91IGNhbm5vdCB0dXJuIG9mZiB5b3VyIGF1ZGlvIHdoaWxlIHJlY29yZGluZywgcGxlYXNlIHBhdXNlIG9yIHN0b3AgcmVjb3JkaW5nIGZpcnN0LicsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhdWRpb0FscmVhZHlPbiA9IGZhbHNlO1xuICAgICAgdXBkYXRlQXVkaW9BbHJlYWR5T24oYXVkaW9BbHJlYWR5T24pO1xuICAgICAgaWYgKGxvY2FsU3RyZWFtKSB7XG4gICAgICAgIGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdXBkYXRlTG9jYWxTdHJlYW0obG9jYWxTdHJlYW0pO1xuICAgICAgYXdhaXQgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpbyh7IHBhcmFtZXRlcnMgfSk7IC8vZGlzY29ubmVjdCBmdW5jdGlvbiBoZXJlIGFjdHVhbGwgY2FsbHMgYXVkaW9Qcm9kdWNlci5wYXVzZSgpIGluc3RlYWQgb2YgY2xvc2UoKSBhcyBpbiBtZWRpYXNmdVxuICAgICAgYXVkaW9QYXVzZWQgPSB0cnVlO1xuICAgICAgdXBkYXRlQXVkaW9QYXVzZWQoYXVkaW9QYXVzZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYWRtaW5SZXN0cmljdFNldHRpbmcpIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHR1cm4gb24geW91ciBtaWNyb3Bob25lLiBBY2Nlc3MgZGVuaWVkIGJ5IGhvc3QuJyxcbiAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3BvbnNlID0gMjtcbiAgICAgIGlmICghbWljQWN0aW9uICYmIGlzbGV2ZWwgIT09ICcyJyAmJiAheW91QXJlQ29Ib3N0KSB7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgY2hlY2tQZXJtaXNzaW9uKHtcbiAgICAgICAgICBwZXJtaXNzaW9uVHlwZTogJ2F1ZGlvU2V0dGluZycsXG4gICAgICAgICAgYXVkaW9TZXR0aW5nLFxuICAgICAgICAgIHZpZGVvU2V0dGluZyxcbiAgICAgICAgICBzY3JlZW5zaGFyZVNldHRpbmcsXG4gICAgICAgICAgY2hhdFNldHRpbmcsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2UgPSAwO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHJlc3BvbnNlKSB7XG4gICAgICAgIGNhc2UgMToge1xuICAgICAgICAgIGlmIChhdWRpb1JlcXVlc3RTdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdBIHJlcXVlc3QgaXMgcGVuZGluZy4gUGxlYXNlIHdhaXQgZm9yIHRoZSBob3N0IHRvIHJlc3BvbmQuJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgbWVzc2FnZTogJ1JlcXVlc3Qgc2VudCB0byBob3N0LicsXG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGF1ZGlvUmVxdWVzdFN0YXRlID0gJ3BlbmRpbmcnO1xuICAgICAgICAgIHVwZGF0ZUF1ZGlvUmVxdWVzdFN0YXRlKGF1ZGlvUmVxdWVzdFN0YXRlKTtcbiAgICAgICAgICAvL2NyZWF0ZSBhIHJlcXVlc3QgYW5kIGFkZCB0byB0aGUgcmVxdWVzdCBsaXN0IGFuZCBzZW5kIHRvIGhvc3RcblxuICAgICAgICAgIGNvbnN0IHVzZXJSZXF1ZXN0ID0ge1xuICAgICAgICAgICAgaWQ6IHNvY2tldC5pZCxcbiAgICAgICAgICAgIG5hbWU6IG1lbWJlcixcbiAgICAgICAgICAgIGljb246ICdmYS1taWNyb3Bob25lJyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNvY2tldC5lbWl0KCdwYXJ0aWNpcGFudFJlcXVlc3QnLCB7IHVzZXJSZXF1ZXN0LCByb29tTmFtZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBhdWRpb1JlcXVlc3RTdGF0ZSA9PT0gJ3JlamVjdGVkJyAmJlxuICAgICAgICAgICAgRGF0ZS5ub3coKSAtIGF1ZGlvUmVxdWVzdFRpbWUgPCB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzICogMTAwMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiBgQSByZXF1ZXN0IHdhcyByZWplY3RlZC4gUGxlYXNlIHdhaXQgZm9yICR7dXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc30gc2Vjb25kcyBiZWZvcmUgc2VuZGluZyBhbm90aGVyIHJlcXVlc3QuYCxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAvL2FsbG93XG5cbiAgICAgICAgICBpZiAoYXVkaW9QYXVzZWQpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbFN0cmVhbSkge1xuICAgICAgICAgICAgICBsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdXBkYXRlQXVkaW9BbHJlYWR5T24odHJ1ZSk7XG4gICAgICAgICAgICBhd2FpdCByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW8oeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgc29ja2V0LmVtaXQoJ3Jlc3VtZVByb2R1Y2VyQXVkaW8nLCB7IG1lZGlhVGFnOiAnYXVkaW8nLCByb29tTmFtZSB9KTtcblxuICAgICAgICAgICAgdXBkYXRlTG9jYWxTdHJlYW0obG9jYWxTdHJlYW0pO1xuICAgICAgICAgICAgdXBkYXRlQXVkaW9BbHJlYWR5T24oYXVkaW9BbHJlYWR5T24pO1xuXG4gICAgICAgICAgICBpZiAobWljQWN0aW9uID09IHRydWUpIHtcbiAgICAgICAgICAgICAgbWljQWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgIHVwZGF0ZU1pY0FjdGlvbihtaWNBY3Rpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHMuZm9yRWFjaCgocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50Wydzb2NrZXRJZCddID09PSBzb2NrZXQuaWQgJiYgcGFydGljaXBhbnQubmFtZSA9PT0gbWVtYmVyKSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQubXV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRzKTtcblxuICAgICAgICAgICAgdHJhbnNwb3J0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkKHRyYW5zcG9ydENyZWF0ZWQpO1xuXG4gICAgICAgICAgICB0cmFuc3BvcnRDcmVhdGVkQXVkaW8gPSB0cnVlO1xuICAgICAgICAgICAgdXBkYXRlVHJhbnNwb3J0Q3JlYXRlZEF1ZGlvKHRyYW5zcG9ydENyZWF0ZWRBdWRpbyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghaGFzQXVkaW9QZXJtaXNzaW9uICYmIGNoZWNrTWVkaWFQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXR1c01pYyA9IGF3YWl0IHJlcXVlc3RQZXJtaXNzaW9uQXVkaW8oKTtcbiAgICAgICAgICAgICAgaWYgKHN0YXR1c01pYyAhPT0gJ2dyYW50ZWQnKSB7XG4gICAgICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgJ0FsbG93IGFjY2VzcyB0byB5b3VyIG1pY3JvcGhvbmUgb3IgY2hlY2sgaWYgeW91ciBtaWNyb3Bob25lIGlzIG5vdCBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhQ29uc3RyYWludHMgPSB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2VcbiAgICAgICAgICAgICAgPyB7IGF1ZGlvOiB7IGRldmljZUlkOiB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2UgfSwgdmlkZW86IGZhbHNlIH1cbiAgICAgICAgICAgICAgOiB7IGF1ZGlvOiB0cnVlLCB2aWRlbzogZmFsc2UgfTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEobWVkaWFDb25zdHJhaW50cyk7XG4gICAgICAgICAgICAgIGF3YWl0IHN0cmVhbVN1Y2Nlc3NBdWRpbyh7IHN0cmVhbSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICdBbGxvdyBhY2Nlc3MgdG8geW91ciBtaWNyb3Bob25lIG9yIGNoZWNrIGlmIHlvdXIgbWljcm9waG9uZSBpcyBub3QgYmVpbmcgdXNlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLicsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3N0cmVhbS1tZXRob2RzL2NsaWNrLWF1ZGlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE4RTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR0c7QUFLSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7Ozs7Ozs7Ozs7OztPQWFHO0lBRUgsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBcUI7UUFDaEQsSUFBSSxFQUNGLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLDJCQUEyQixFQUMzQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCw0QkFBNEIsRUFDNUIsWUFBWSxFQUNaLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBRXJCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixlQUFlLEVBRWYsZUFBZSxFQUNmLGtCQUFrQixFQUNs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TSxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxDQUFDO3dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7NEJBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDckIsU0FBUyxFQUFFLENBQUM7Z0NBQ1YsT0FBTyxFQUNMLHVHQUF1RztnQ0FDekcsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxNQUFNO2dCQUVSLFFBQVE7WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7dUdBeE9VLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hlY2tQZXJtaXNzaW9uVHlwZSxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMsXG4gIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW9UeXBlLFxuICBQYXJ0aWNpcGFudCxcbiAgUmVxdWVzdFBlcm1pc3Npb25BdWRpb1R5cGUsXG4gIFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMsXG4gIFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1R5cGUsXG4gIFNob3dBbGVydCxcbiAgU3RyZWFtU3VjY2Vzc0F1ZGlvUGFyYW1ldGVycyxcbiAgU3RyZWFtU3VjY2Vzc0F1ZGlvVHlwZSxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tBdWRpb1BhcmFtZXRlcnNcbiAgZXh0ZW5kcyBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVycyxcbiAgICBSZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW9QYXJhbWV0ZXJzLFxuICAgIFN0cmVhbVN1Y2Nlc3NBdWRpb1BhcmFtZXRlcnMge1xuICBjaGVja01lZGlhUGVybWlzc2lvbjogYm9vbGVhbjtcbiAgaGFzQXVkaW9QZXJtaXNzaW9uOiBib29sZWFuO1xuICBhdWRpb1BhdXNlZDogYm9vbGVhbjtcbiAgYXVkaW9BbHJlYWR5T246IGJvb2xlYW47XG4gIGF1ZGlvT25seVJvb206IGJvb2xlYW47XG4gIHJlY29yZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHJlY29yZFJlc3VtZWQ6IGJvb2xlYW47XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiBzdHJpbmc7XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgeW91QXJlQ29Ib3N0OiBib29sZWFuO1xuICBhZG1pblJlc3RyaWN0U2V0dGluZzogYm9vbGVhbjtcbiAgYXVkaW9SZXF1ZXN0U3RhdGU6IHN0cmluZyB8IG51bGw7XG4gIGF1ZGlvUmVxdWVzdFRpbWU6IG51bWJlcjtcbiAgbWVtYmVyOiBzdHJpbmc7XG4gIHNvY2tldDogU29ja2V0O1xuICByb29tTmFtZTogc3RyaW5nO1xuICB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2U6IHN0cmluZztcbiAgbWljQWN0aW9uOiBib29sZWFuO1xuICBsb2NhbFN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBhdWRpb1NldHRpbmc6IHN0cmluZztcbiAgdmlkZW9TZXR0aW5nOiBzdHJpbmc7XG4gIHNjcmVlbnNoYXJlU2V0dGluZzogc3RyaW5nO1xuICBjaGF0U2V0dGluZzogc3RyaW5nO1xuICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiBudW1iZXI7XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgdHJhbnNwb3J0Q3JlYXRlZDogYm9vbGVhbjtcbiAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvOiBib29sZWFuO1xuXG4gIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uOiAoc3RhdHVzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVBdWRpb1JlcXVlc3RTdGF0ZTogKHN0YXRlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVBdWRpb1BhdXNlZDogKHN0YXR1czogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlTG9jYWxTdHJlYW06IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlUGFydGljaXBhbnRzOiAocGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdKSA9PiB2b2lkO1xuICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkOiAoc3RhdHVzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkQXVkaW86IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZU1pY0FjdGlvbjogKGFjdGlvbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBjaGVja1Blcm1pc3Npb246IENoZWNrUGVybWlzc2lvblR5cGU7XG4gIHN0cmVhbVN1Y2Nlc3NBdWRpbzogU3RyZWFtU3VjY2Vzc0F1ZGlvVHlwZTtcbiAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpbzogRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1R5cGU7XG4gIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW86IFJlcXVlc3RQZXJtaXNzaW9uQXVkaW9UeXBlO1xuICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW86IFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1R5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQ2xpY2tBdWRpb1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGlja0F1ZGlvT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IENsaWNrQXVkaW9QYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDbGlja0F1ZGlvVHlwZSA9IChvcHRpb25zOiBDbGlja0F1ZGlvT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCBmb3IgdG9nZ2xpbmcgYXVkaW8gaW4gYSBtZWRpYSBzZXNzaW9uLlxuICpcbiAqIEBwYXJhbSB7Q2xpY2tBdWRpb09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgaGFuZGxpbmcgdGhlIGF1ZGlvIGNsaWNrIGV2ZW50LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0b2dnbGluZyBhdWRpby5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNoZWNrTWVkaWFQZXJtaXNzaW9uIC0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gY2hlY2sgbWVkaWEgcGVybWlzc2lvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmhhc0F1ZGlvUGVybWlzc2lvbiAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdXNlciBoYXMgYXVkaW8gcGVybWlzc2lvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvUGF1c2VkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGF1ZGlvIGlzIHBhdXNlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvQWxyZWFkeU9uIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGF1ZGlvIGlzIGFscmVhZHkgdHVybmVkIG9uLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9Pbmx5Um9vbSAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcm9vbSBpcyBhdWRpby1vbmx5LlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RhcnRlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRSZXN1bWVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHJlY29yZGluZyBoYXMgcmVzdW1lZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFBhdXNlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaXMgcGF1c2VkLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RvcHBlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaXMgc3RvcHBlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nTWVkaWFPcHRpb25zIC0gTWVkaWEgb3B0aW9ucyBmb3IgcmVjb3JkaW5nIChlLmcuLCBcInZpZGVvXCIsIFwiYXVkaW9cIikuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzbGV2ZWwgLSBVc2VyJ3MgbGV2ZWwgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMueW91QXJlQ29Ib3N0IC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB1c2VyIGlzIGEgY28taG9zdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFkbWluUmVzdHJpY3RTZXR0aW5nIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGFkbWluIHJlc3RyaWN0aW9ucyBhcmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9SZXF1ZXN0U3RhdGUgLSBDdXJyZW50IHN0YXRlIG9mIHRoZSBhdWRpbyByZXF1ZXN0LlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5hdWRpb1JlcXVlc3RUaW1lIC0gVGltZXN0YW1wIG9mIHRoZSBhdWRpbyByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5tZW1iZXIgLSBDdXJyZW50IG1lbWJlcidzIG5hbWUuXG4gKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJEZWZhdWx0QXVkaW9JbnB1dERldmljZSAtIFRoZSBkZWZhdWx0IGF1ZGlvIGlucHV0IGRldmljZSBmb3IgdGhlIHVzZXIuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5taWNBY3Rpb24gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIG1pY3JvcGhvbmUgYWN0aW9uIGlzIGluIHByb2dyZXNzLlxuICogQHBhcmFtIHtNZWRpYVN0cmVhbSB8IG51bGx9IG9wdGlvbnMucGFyYW1ldGVycy5sb2NhbFN0cmVhbSAtIFRoZSB1c2VyJ3MgbG9jYWwgbWVkaWEgc3RyZWFtLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5hdWRpb1NldHRpbmcgLSBDdXJyZW50IGF1ZGlvIHNldHRpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnZpZGVvU2V0dGluZyAtIEN1cnJlbnQgdmlkZW8gc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuc2hhcmVTZXR0aW5nIC0gQ3VycmVudCBzY3JlZW5zaGFyZSBzZXR0aW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5jaGF0U2V0dGluZyAtIEN1cnJlbnQgY2hhdCBzZXR0aW5nLlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzIC0gSW50ZXJ2YWwgZm9yIHVwZGF0aW5nIHJlcXVlc3Qgc3RhdGVzLlxuICogQHBhcmFtIHtQYXJ0aWNpcGFudFtdfSBvcHRpb25zLnBhcmFtZXRlcnMucGFydGljaXBhbnRzIC0gTGlzdCBvZiBwYXJ0aWNpcGFudHMgaW4gdGhlIHJvb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy50cmFuc3BvcnRDcmVhdGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB0cmFuc3BvcnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnRyYW5zcG9ydENyZWF0ZWRBdWRpbyAtIEZsYWcgaW5kaWNhdGluZyBpZiBhdWRpbyB0cmFuc3BvcnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXVkaW8gY2xpY2sgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIGFjdGlvbnM6XG4gKiAtIElmIHRoZSBldmVudCBpcyBhdWRpby1vbmx5LCBpdCBzaG93cyBhbiBhbGVydCBhbmQgZXhpdHMuXG4gKiAtIElmIHRoZSBhdWRpbyBpcyBhbHJlYWR5IG9uLCBpdCBoYW5kbGVzIHRoZSBsb2dpYyBmb3IgdHVybmluZyBpdCBvZmYsIGluY2x1ZGluZyBjaGVja2luZyByZWNvcmRpbmcgc3RhdGVzIGFuZCBwZXJtaXNzaW9ucy5cbiAqIC0gSWYgdGhlIGF1ZGlvIGlzIG9mZiwgaXQgY2hlY2tzIGZvciBhZG1pbiByZXN0cmljdGlvbnMsIHVzZXIgcGVybWlzc2lvbnMsIGFuZCBoYW5kbGVzIHRoZSBsb2dpYyBmb3IgdHVybmluZyB0aGUgYXVkaW8gb24uXG4gKiAtIEl0IHVwZGF0ZXMgdmFyaW91cyBzdGF0ZXMgYW5kIGVtaXRzIHNvY2tldCBldmVudHMgYXMgbmVjZXNzYXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBDbGlja0F1ZGlvT3B0aW9ucyA9IHtcbiAqICAgcGFyYW1ldGVyczoge1xuICogICAgIGNoZWNrTWVkaWFQZXJtaXNzaW9uOiB0cnVlLFxuICogICAgIGhhc0F1ZGlvUGVybWlzc2lvbjogZmFsc2UsXG4gKiAgICAgYXVkaW9QYXVzZWQ6IGZhbHNlLFxuICogICAgIGF1ZGlvQWxyZWFkeU9uOiBmYWxzZSxcbiAqICAgICBhdWRpb09ubHlSb29tOiBmYWxzZSxcbiAqICAgICByZWNvcmRTdGFydGVkOiBmYWxzZSxcbiAqICAgICByZWNvcmRSZXN1bWVkOiBmYWxzZSxcbiAqICAgICByZWNvcmRQYXVzZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZFN0b3BwZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZGluZ01lZGlhT3B0aW9uczogJ2F1ZGlvJyxcbiAqICAgICBpc2xldmVsOiAnMScsXG4gKiAgICAgeW91QXJlQ29Ib3N0OiBmYWxzZSxcbiAqICAgICBhZG1pblJlc3RyaWN0U2V0dGluZzogZmFsc2UsXG4gKiAgICAgYXVkaW9SZXF1ZXN0U3RhdGU6IG51bGwsXG4gKiAgICAgYXVkaW9SZXF1ZXN0VGltZTogMCxcbiAqICAgICBtZW1iZXI6ICdKb2huIERvZScsXG4gKiAgICAgc29ja2V0OiBzb2NrZXRJbnN0YW5jZSxcbiAqICAgICByb29tTmFtZTogJ2V4YW1wbGVSb29tJyxcbiAqICAgICB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2U6ICdkZWZhdWx0JyxcbiAqICAgICBtaWNBY3Rpb246IGZhbHNlLFxuICogICAgIGxvY2FsU3RyZWFtOiBudWxsLFxuICogICAgIGF1ZGlvU2V0dGluZzogJ2VuYWJsZWQnLFxuICogICAgIHZpZGVvU2V0dGluZzogJ2Rpc2FibGVkJyxcbiAqICAgICBzY3JlZW5zaGFyZVNldHRpbmc6ICdkaXNhYmxlZCcsXG4gKiAgICAgY2hhdFNldHRpbmc6ICdlbmFibGVkJyxcbiAqICAgICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiAzMCxcbiAqICAgICBwYXJ0aWNpcGFudHM6IFtdLFxuICogICAgIHRyYW5zcG9ydENyZWF0ZWQ6IGZhbHNlLFxuICogICAgIHRyYW5zcG9ydENyZWF0ZWRBdWRpbzogZmFsc2UsXG4gKiAgICAgdXBkYXRlQXVkaW9BbHJlYWR5T246IChzdGF0dXMpID0+IGNvbnNvbGUubG9nKHN0YXR1cyksXG4gKiAgICAgdXBkYXRlQXVkaW9SZXF1ZXN0U3RhdGU6IChzdGF0ZSkgPT4gY29uc29sZS5sb2coc3RhdGUpLFxuICogICAgIHVwZGF0ZUF1ZGlvUGF1c2VkOiAoc3RhdHVzKSA9PiBjb25zb2xlLmxvZyhzdGF0dXMpLFxuICogICAgIHVwZGF0ZUxvY2FsU3RyZWFtOiAoc3RyZWFtKSA9PiBjb25zb2xlLmxvZyhzdHJlYW0pLFxuICogICAgIHVwZGF0ZVBhcnRpY2lwYW50czogKHBhcnRpY2lwYW50cykgPT4gY29uc29sZS5sb2cocGFydGljaXBhbnRzKSxcbiAqICAgICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkOiAoc3RhdHVzKSA9PiBjb25zb2xlLmxvZyhzdGF0dXMpLFxuICogICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbzogKHN0YXR1cykgPT4gY29uc29sZS5sb2coc3RhdHVzKSxcbiAqICAgICB1cGRhdGVNaWNBY3Rpb246IChhY3Rpb24pID0+IGNvbnNvbGUubG9nKGFjdGlvbiksXG4gKiAgICAgY2hlY2tQZXJtaXNzaW9uOiBhc3luYyAoKSA9PiAnZ3JhbnRlZCcsXG4gKiAgICAgc3RyZWFtU3VjY2Vzc0F1ZGlvOiBhc3luYyAoKSA9PiBjb25zb2xlLmxvZygnQXVkaW8gc3RyZWFtaW5nIHN1Y2Nlc3MnKSxcbiAqICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvOiBhc3luYyAoKSA9PiBjb25zb2xlLmxvZygnQXVkaW8gdHJhbnNwb3J0IGRpc2Nvbm5lY3RlZCcpLFxuICogICAgIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW86IGFzeW5jICgpID0+ICdncmFudGVkJyxcbiAqICAgICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW86IGFzeW5jICgpID0+IGNvbnNvbGUubG9nKCdBdWRpbyB0cmFuc3BvcnQgcmVzdW1lZCcpLFxuICogICB9LFxuICogfTtcbiAqXG4gKiBjb25zdCBjbGlja0F1ZGlvU2VydmljZSA9IG5ldyBDbGlja0F1ZGlvKCk7XG4gKiBhd2FpdCBjbGlja0F1ZGlvU2VydmljZS5jbGlja0F1ZGlvKG9wdGlvbnMpO1xuICogYGBgXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrQXVkaW8ge1xuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgZm9yIHRvZ2dsaW5nIGF1ZGlvIGluIGEgbWVkaWEgc2Vzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHtDbGlja0F1ZGlvT3B0aW9uc30gcGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgYXVkaW8gY2xpY2sgZXZlbnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhdWRpbyBjbGljayBldmVudCBoYXMgYmVlbiBoYW5kbGVkLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBhY3Rpb25zOlxuICAgKiAtIElmIHRoZSBldmVudCBpcyBhdWRpby1vbmx5LCBpdCBzaG93cyBhbiBhbGVydCBhbmQgZXhpdHMuXG4gICAqIC0gSWYgdGhlIGF1ZGlvIGlzIGFscmVhZHkgb24sIGl0IGhhbmRsZXMgdGhlIGxvZ2ljIGZvciB0dXJuaW5nIGl0IG9mZiwgaW5jbHVkaW5nIGNoZWNraW5nIHJlY29yZGluZyBzdGF0ZXMgYW5kIHBlcm1pc3Npb25zLlxuICAgKiAtIElmIHRoZSBhdWRpbyBpcyBvZmYsIGl0IGNoZWNrcyBmb3IgYWRtaW4gcmVzdHJpY3Rpb25zLCB1c2VyIHBlcm1pc3Npb25zLCBhbmQgaGFuZGxlcyB0aGUgbG9naWMgZm9yIHR1cm5pbmcgdGhlIGF1ZGlvIG9uLlxuICAgKiAtIEl0IHVwZGF0ZXMgdmFyaW91cyBzdGF0ZXMgYW5kIGVtaXRzIHNvY2tldCBldmVudHMgYXMgbmVjZXNzYXJ5LlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gbWFrZXMgdXNlIG9mIHNldmVyYWwgaGVscGVyIGZ1bmN0aW9ucyBhbmQgc3RhdGUgdXBkYXRlIGZ1bmN0aW9ucyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgcGFyYW1ldGVycy5cbiAgICovXG5cbiAgYXN5bmMgY2xpY2tBdWRpbyh7IHBhcmFtZXRlcnMgfTogQ2xpY2tBdWRpb09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQge1xuICAgICAgY2hlY2tNZWRpYVBlcm1pc3Npb24sXG4gICAgICBoYXNBdWRpb1Blcm1pc3Npb24sXG4gICAgICBhdWRpb1BhdXNlZCxcbiAgICAgIGF1ZGlvQWxyZWFkeU9uLFxuICAgICAgYXVkaW9Pbmx5Um9vbSxcbiAgICAgIHJlY29yZFN0YXJ0ZWQsXG4gICAgICByZWNvcmRSZXN1bWVkLFxuICAgICAgcmVjb3JkUGF1c2VkLFxuICAgICAgcmVjb3JkU3RvcHBlZCxcbiAgICAgIHJlY29yZGluZ01lZGlhT3B0aW9ucyxcbiAgICAgIGlzbGV2ZWwsXG4gICAgICB5b3VBcmVDb0hvc3QsXG4gICAgICBhZG1pblJlc3RyaWN0U2V0dGluZyxcbiAgICAgIGF1ZGlvUmVxdWVzdFN0YXRlLFxuICAgICAgYXVkaW9SZXF1ZXN0VGltZSxcbiAgICAgIG1lbWJlcixcbiAgICAgIHNvY2tldCxcbiAgICAgIHJvb21OYW1lLFxuICAgICAgdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlLFxuICAgICAgbWljQWN0aW9uLFxuICAgICAgbG9jYWxTdHJlYW0sXG4gICAgICBhdWRpb1NldHRpbmcsXG4gICAgICB2aWRlb1NldHRpbmcsXG4gICAgICBzY3JlZW5zaGFyZVNldHRpbmcsXG4gICAgICBjaGF0U2V0dGluZyxcbiAgICAgIHVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHMsXG4gICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICBzaG93QWxlcnQsXG4gICAgICB0cmFuc3BvcnRDcmVhdGVkLFxuICAgICAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvLFxuXG4gICAgICB1cGRhdGVBdWRpb0FscmVhZHlPbixcbiAgICAgIHVwZGF0ZUF1ZGlvUmVxdWVzdFN0YXRlLFxuICAgICAgdXBkYXRlQXVkaW9QYXVzZWQsXG4gICAgICB1cGRhdGVMb2NhbFN0cmVhbSxcbiAgICAgIHVwZGF0ZVBhcnRpY2lwYW50cyxcbiAgICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWQsXG4gICAgICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkQXVkaW8sXG4gICAgICB1cGRhdGVNaWNBY3Rpb24sXG5cbiAgICAgIGNoZWNrUGVybWlzc2lvbixcbiAgICAgIHN0cmVhbVN1Y2Nlc3NBdWRpbyxcbiAgICAgIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW8sXG4gICAgICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW8sXG4gICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvLFxuICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgaWYgKGF1ZGlvT25seVJvb20pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYSBpbiBhbiBhdWRpby1vbmx5IGV2ZW50LicsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChhdWRpb0FscmVhZHlPbikge1xuICAgICAgaWYgKGlzbGV2ZWwgPT09ICcyJyAmJiAocmVjb3JkU3RhcnRlZCB8fCByZWNvcmRSZXN1bWVkKSkge1xuICAgICAgICBpZiAoIShyZWNvcmRQYXVzZWQgfHwgcmVjb3JkU3RvcHBlZCkpIHtcbiAgICAgICAgICBpZiAocmVjb3JkaW5nTWVkaWFPcHRpb25zID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgdHVybiBvZmYgeW91ciBhdWRpbyB3aGlsZSByZWNvcmRpbmcsIHBsZWFzZSBwYXVzZSBvciBzdG9wIHJlY29yZGluZyBmaXJzdC4nLFxuICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXVkaW9BbHJlYWR5T24gPSBmYWxzZTtcbiAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKGF1ZGlvQWxyZWFkeU9uKTtcbiAgICAgIGlmIChsb2NhbFN0cmVhbSkge1xuICAgICAgICBsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtKGxvY2FsU3RyZWFtKTtcbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8oeyBwYXJhbWV0ZXJzIH0pOyAvL2Rpc2Nvbm5lY3QgZnVuY3Rpb24gaGVyZSBhY3R1YWxsIGNhbGxzIGF1ZGlvUHJvZHVjZXIucGF1c2UoKSBpbnN0ZWFkIG9mIGNsb3NlKCkgYXMgaW4gbWVkaWFzZnVcbiAgICAgIGF1ZGlvUGF1c2VkID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZUF1ZGlvUGF1c2VkKGF1ZGlvUGF1c2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFkbWluUmVzdHJpY3RTZXR0aW5nKSB7XG4gICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCB0dXJuIG9uIHlvdXIgbWljcm9waG9uZS4gQWNjZXNzIGRlbmllZCBieSBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXNwb25zZSA9IDI7XG4gICAgICBpZiAoIW1pY0FjdGlvbiAmJiBpc2xldmVsICE9PSAnMicgJiYgIXlvdUFyZUNvSG9zdCkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNoZWNrUGVybWlzc2lvbih7XG4gICAgICAgICAgcGVybWlzc2lvblR5cGU6ICdhdWRpb1NldHRpbmcnLFxuICAgICAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgICAgICB2aWRlb1NldHRpbmcsXG4gICAgICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gMDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChyZXNwb25zZSkge1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBpZiAoYXVkaW9SZXF1ZXN0U3RhdGUgPT09ICdwZW5kaW5nJykge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiAnQSByZXF1ZXN0IGlzIHBlbmRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgaG9zdCB0byByZXNwb25kLicsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IHNlbnQgdG8gaG9zdC4nLFxuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhdWRpb1JlcXVlc3RTdGF0ZSA9ICdwZW5kaW5nJztcbiAgICAgICAgICB1cGRhdGVBdWRpb1JlcXVlc3RTdGF0ZShhdWRpb1JlcXVlc3RTdGF0ZSk7XG4gICAgICAgICAgLy9jcmVhdGUgYSByZXF1ZXN0IGFuZCBhZGQgdG8gdGhlIHJlcXVlc3QgbGlzdCBhbmQgc2VuZCB0byBob3N0XG5cbiAgICAgICAgICBjb25zdCB1c2VyUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGlkOiBzb2NrZXQuaWQsXG4gICAgICAgICAgICBuYW1lOiBtZW1iZXIsXG4gICAgICAgICAgICBpY29uOiAnZmEtbWljcm9waG9uZScsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzb2NrZXQuZW1pdCgncGFydGljaXBhbnRSZXF1ZXN0JywgeyB1c2VyUmVxdWVzdCwgcm9vbU5hbWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXVkaW9SZXF1ZXN0U3RhdGUgPT09ICdyZWplY3RlZCcgJiZcbiAgICAgICAgICAgIERhdGUubm93KCkgLSBhdWRpb1JlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kcyAqIDEwMDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogYEEgcmVxdWVzdCB3YXMgcmVqZWN0ZWQuIFBsZWFzZSB3YWl0IGZvciAke3VwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHN9IHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgYW5vdGhlciByZXF1ZXN0LmAsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy9hbGxvd1xuXG4gICAgICAgICAgaWYgKGF1ZGlvUGF1c2VkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxTdHJlYW0pIHtcbiAgICAgICAgICAgICAgbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXS5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKHRydWUpO1xuICAgICAgICAgICAgYXdhaXQgcmVzdW1lU2VuZFRyYW5zcG9ydEF1ZGlvKHsgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIHNvY2tldC5lbWl0KCdyZXN1bWVQcm9kdWNlckF1ZGlvJywgeyBtZWRpYVRhZzogJ2F1ZGlvJywgcm9vbU5hbWUgfSk7XG5cbiAgICAgICAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtKGxvY2FsU3RyZWFtKTtcbiAgICAgICAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKGF1ZGlvQWxyZWFkeU9uKTtcblxuICAgICAgICAgICAgaWYgKG1pY0FjdGlvbiA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgIG1pY0FjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB1cGRhdGVNaWNBY3Rpb24obWljQWN0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFydGljaXBhbnRzLmZvckVhY2goKHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYXJ0aWNpcGFudFsnc29ja2V0SWQnXSA9PT0gc29ja2V0LmlkICYmIHBhcnRpY2lwYW50Lm5hbWUgPT09IG1lbWJlcikge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50Lm11dGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXBkYXRlUGFydGljaXBhbnRzKHBhcnRpY2lwYW50cyk7XG5cbiAgICAgICAgICAgIHRyYW5zcG9ydENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdXBkYXRlVHJhbnNwb3J0Q3JlYXRlZCh0cmFuc3BvcnRDcmVhdGVkKTtcblxuICAgICAgICAgICAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvID0gdHJ1ZTtcbiAgICAgICAgICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbyh0cmFuc3BvcnRDcmVhdGVkQXVkaW8pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc0F1ZGlvUGVybWlzc2lvbiAmJiBjaGVja01lZGlhUGVybWlzc2lvbikge1xuICAgICAgICAgICAgICBjb25zdCBzdGF0dXNNaWMgPSBhd2FpdCByZXF1ZXN0UGVybWlzc2lvbkF1ZGlvKCk7XG4gICAgICAgICAgICAgIGlmIChzdGF0dXNNaWMgIT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICdBbGxvdyBhY2Nlc3MgdG8geW91ciBtaWNyb3Bob25lIG9yIGNoZWNrIGlmIHlvdXIgbWljcm9waG9uZSBpcyBub3QgYmVpbmcgdXNlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtZWRpYUNvbnN0cmFpbnRzID0gdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlXG4gICAgICAgICAgICAgID8geyBhdWRpbzogeyBkZXZpY2VJZDogdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlIH0sIHZpZGVvOiBmYWxzZSB9XG4gICAgICAgICAgICAgIDogeyBhdWRpbzogdHJ1ZSwgdmlkZW86IGZhbHNlIH07XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKG1lZGlhQ29uc3RyYWludHMpO1xuICAgICAgICAgICAgICBhd2FpdCBzdHJlYW1TdWNjZXNzQXVkaW8oeyBzdHJlYW0sIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgbWljcm9waG9uZSBvciBjaGVjayBpZiB5b3VyIG1pY3JvcGhvbmUgaXMgbm90IGJlaW5nIHVzZWQgYnkgYW5vdGhlciBhcHBsaWNhdGlvbi4nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,36 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * Toggles the visibility of the chat modal based on the current state and event settings.
5
+ *
6
+ * @param {ClickChatOptions} options - The options for the clickChat function.
7
+ * @param {boolean} options.isMessagesModalVisible - Indicates if the messages modal is currently visible.
8
+ * @param {Function} options.updateIsMessagesModalVisible - Function to update the visibility state of the messages modal.
9
+ * @param {string} options.chatSetting - The chat setting for the event, which can be "allow" or other values.
10
+ * @param {string} options.islevel - The participant's level, where "2" indicates a level that allows chat.
11
+ * @param {Function} [options.showAlert] - Optional function to show an alert message.
12
+ *
13
+ * @returns {Promise<void>} A promise that resolves when the operation is complete.
14
+ *
15
+ * @remarks
16
+ * This function checks the current visibility state of the messages modal. If it is already visible, it will hide the modal.
17
+ * If it is not visible, it checks the chat settings and the participant's level to determine whether to show an alert
18
+ * indicating that chat is disabled or to display the chat modal.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const options: ClickChatOptions = {
23
+ * isMessagesModalVisible: false,
24
+ * updateIsMessagesModalVisible: (visible) => console.log(`Modal is now ${visible ? 'visible' : 'hidden'}`),
25
+ * chatSetting: 'allow',
26
+ * islevel: '1',
27
+ * showAlert: (alert) => console.log(`Alert: ${alert.message}`),
28
+ * };
29
+ *
30
+ * const clickChatService = new ClickChat();
31
+ * await clickChatService.clickChat(options);
32
+ * ```
33
+ */
3
34
  export class ClickChat {
4
35
  /**
5
36
  * Toggles the visibility of the chat modal based on the current state and event settings.
@@ -41,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
41
72
  providedIn: 'root',
42
73
  }]
43
74
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvc3RyZWFtLW1ldGhvZHMvY2xpY2stY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBZ0IzQyxNQUFNLE9BQU8sU0FBUztJQUNwQjs7Ozs7Ozs7Ozs7T0FXRztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsRUFDZCxzQkFBc0IsRUFDdEIsNEJBQTRCLEVBQzVCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxHQUNRO1FBQ2pCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQiw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHlFQUF5RTtZQUN6RSxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMvQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsU0FBUyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxFQUFFLGtDQUFrQztvQkFDM0MsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt1R0FwQ1UsU0FBUzsyR0FBVCxTQUFTLGNBRlIsTUFBTTs7MkZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDbGlja0NoYXRPcHRpb25zIHtcbiAgaXNNZXNzYWdlc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZTogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgY2hhdFNldHRpbmc6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrQ2hhdFR5cGUgPSAob3B0aW9uczogQ2xpY2tDaGF0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrQ2hhdCB7XG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjaGF0IG1vZGFsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBldmVudCBzZXR0aW5ncy5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNsaWNrQ2hhdCBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmlzTWVzc2FnZXNNb2RhbFZpc2libGUgLSBJbmRpY2F0ZXMgaWYgdGhlIG1lc3NhZ2VzIG1vZGFsIGlzIGN1cnJlbnRseSB2aXNpYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZUlzTWVzc2FnZXNNb2RhbFZpc2libGUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIG1lc3NhZ2VzIG1vZGFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0dGluZyAtIFRoZSBjaGF0IHNldHRpbmcgZm9yIHRoZSBldmVudCwgd2hpY2ggY2FuIGJlIFwiYWxsb3dcIiBvciBvdGhlciB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmlzbGV2ZWwgLSBUaGUgcGFydGljaXBhbnQncyBsZXZlbCwgd2hlcmUgXCIyXCIgaW5kaWNhdGVzIGEgbGV2ZWwgdGhhdCBhbGxvd3MgY2hhdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMuc2hvd0FsZXJ0XSAtIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIHNob3cgYW4gYWxlcnQgbWVzc2FnZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAgICovXG5cbiAgYXN5bmMgY2xpY2tDaGF0KHtcbiAgICBpc01lc3NhZ2VzTW9kYWxWaXNpYmxlLFxuICAgIHVwZGF0ZUlzTWVzc2FnZXNNb2RhbFZpc2libGUsXG4gICAgY2hhdFNldHRpbmcsXG4gICAgaXNsZXZlbCxcbiAgICBzaG93QWxlcnQsXG4gIH06IENsaWNrQ2hhdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoaXNNZXNzYWdlc01vZGFsVmlzaWJsZSkge1xuICAgICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZShmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENoZWNrIGlmIGNoYXQgaXMgYWxsb3dlZCBiYXNlZCBvbiBldmVudCBzZXR0aW5ncyBhbmQgcGFydGljaXBhbnQgbGV2ZWxcbiAgICAgIGlmIChjaGF0U2V0dGluZyAhPT0gJ2FsbG93JyAmJiBpc2xldmVsICE9PSAnMicpIHtcbiAgICAgICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZShmYWxzZSk7XG4gICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICBtZXNzYWdlOiAnQ2hhdCBpcyBkaXNhYmxlZCBmb3IgdGhpcyBldmVudC4nLFxuICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZUlzTWVzc2FnZXNNb2RhbFZpc2libGUodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvc3RyZWFtLW1ldGhvZHMvY2xpY2stY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFNSCxNQUFNLE9BQU8sU0FBUztJQUNwQjs7Ozs7Ozs7Ozs7T0FXRztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsRUFDZCxzQkFBc0IsRUFDdEIsNEJBQTRCLEVBQzVCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxHQUNRO1FBQ2pCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQiw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHlFQUF5RTtZQUN6RSxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMvQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsU0FBUyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxFQUFFLGtDQUFrQztvQkFDM0MsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt1R0FwQ1UsU0FBUzsyR0FBVCxTQUFTLGNBRlIsTUFBTTs7MkZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDbGlja0NoYXRPcHRpb25zIHtcbiAgaXNNZXNzYWdlc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZTogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgY2hhdFNldHRpbmc6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrQ2hhdFR5cGUgPSAob3B0aW9uczogQ2xpY2tDaGF0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjaGF0IG1vZGFsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBldmVudCBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0ge0NsaWNrQ2hhdE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNsaWNrQ2hhdCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5pc01lc3NhZ2VzTW9kYWxWaXNpYmxlIC0gSW5kaWNhdGVzIGlmIHRoZSBtZXNzYWdlcyBtb2RhbCBpcyBjdXJyZW50bHkgdmlzaWJsZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgbWVzc2FnZXMgbW9kYWwuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0dGluZyAtIFRoZSBjaGF0IHNldHRpbmcgZm9yIHRoZSBldmVudCwgd2hpY2ggY2FuIGJlIFwiYWxsb3dcIiBvciBvdGhlciB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5pc2xldmVsIC0gVGhlIHBhcnRpY2lwYW50J3MgbGV2ZWwsIHdoZXJlIFwiMlwiIGluZGljYXRlcyBhIGxldmVsIHRoYXQgYWxsb3dzIGNoYXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5zaG93QWxlcnRdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdG8gc2hvdyBhbiBhbGVydCBtZXNzYWdlLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBjdXJyZW50IHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIG1lc3NhZ2VzIG1vZGFsLiBJZiBpdCBpcyBhbHJlYWR5IHZpc2libGUsIGl0IHdpbGwgaGlkZSB0aGUgbW9kYWwuXG4gKiBJZiBpdCBpcyBub3QgdmlzaWJsZSwgaXQgY2hlY2tzIHRoZSBjaGF0IHNldHRpbmdzIGFuZCB0aGUgcGFydGljaXBhbnQncyBsZXZlbCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBzaG93IGFuIGFsZXJ0XG4gKiBpbmRpY2F0aW5nIHRoYXQgY2hhdCBpcyBkaXNhYmxlZCBvciB0byBkaXNwbGF5IHRoZSBjaGF0IG1vZGFsLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBDbGlja0NoYXRPcHRpb25zID0ge1xuICogICBpc01lc3NhZ2VzTW9kYWxWaXNpYmxlOiBmYWxzZSxcbiAqICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZTogKHZpc2libGUpID0+IGNvbnNvbGUubG9nKGBNb2RhbCBpcyBub3cgJHt2aXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9YCksXG4gKiAgIGNoYXRTZXR0aW5nOiAnYWxsb3cnLFxuICogICBpc2xldmVsOiAnMScsXG4gKiAgIHNob3dBbGVydDogKGFsZXJ0KSA9PiBjb25zb2xlLmxvZyhgQWxlcnQ6ICR7YWxlcnQubWVzc2FnZX1gKSxcbiAqIH07XG4gKlxuICogY29uc3QgY2xpY2tDaGF0U2VydmljZSA9IG5ldyBDbGlja0NoYXQoKTtcbiAqIGF3YWl0IGNsaWNrQ2hhdFNlcnZpY2UuY2xpY2tDaGF0KG9wdGlvbnMpO1xuICogYGBgXG4gKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tDaGF0IHtcbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNoYXQgbW9kYWwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGV2ZW50IHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgY2xpY2tDaGF0IGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuaXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEluZGljYXRlcyBpZiB0aGUgbWVzc2FnZXMgbW9kYWwgaXMgY3VycmVudGx5IHZpc2libGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgbWVzc2FnZXMgbW9kYWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmNoYXRTZXR0aW5nIC0gVGhlIGNoYXQgc2V0dGluZyBmb3IgdGhlIGV2ZW50LCB3aGljaCBjYW4gYmUgXCJhbGxvd1wiIG9yIG90aGVyIHZhbHVlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuaXNsZXZlbCAtIFRoZSBwYXJ0aWNpcGFudCdzIGxldmVsLCB3aGVyZSBcIjJcIiBpbmRpY2F0ZXMgYSBsZXZlbCB0aGF0IGFsbG93cyBjaGF0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5zaG93QWxlcnRdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdG8gc2hvdyBhbiBhbGVydCBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKi9cblxuICBhc3luYyBjbGlja0NoYXQoe1xuICAgIGlzTWVzc2FnZXNNb2RhbFZpc2libGUsXG4gICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSxcbiAgICBjaGF0U2V0dGluZyxcbiAgICBpc2xldmVsLFxuICAgIHNob3dBbGVydCxcbiAgfTogQ2xpY2tDaGF0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChpc01lc3NhZ2VzTW9kYWxWaXNpYmxlKSB7XG4gICAgICB1cGRhdGVJc01lc3NhZ2VzTW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2hlY2sgaWYgY2hhdCBpcyBhbGxvd2VkIGJhc2VkIG9uIGV2ZW50IHNldHRpbmdzIGFuZCBwYXJ0aWNpcGFudCBsZXZlbFxuICAgICAgaWYgKGNoYXRTZXR0aW5nICE9PSAnYWxsb3cnICYmIGlzbGV2ZWwgIT09ICcyJykge1xuICAgICAgICB1cGRhdGVJc01lc3NhZ2VzTW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdDaGF0IGlzIGRpc2FibGVkIGZvciB0aGlzIGV2ZW50LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,74 @@
1
1
  // screen-share.service.ts
2
2
  import { Injectable } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Handles the action for the screen button, including starting and stopping screen sharing.
6
+ *
7
+ * @param {ClickScreenShareOptions} options - Options for handling the screen button action.
8
+ * @param {Object} options.parameters - The parameters required for the screen share action.
9
+ * @param {Function} options.parameters.showAlert - Function to show alert messages.
10
+ * @param {string} options.parameters.roomName - The name of the room where the screen share is taking place.
11
+ * @param {string} options.parameters.member - The member initiating the screen share.
12
+ * @param {Socket} options.parameters.socket - The socket connection used for communication.
13
+ * @param {string} options.parameters.islevel - The participant's level.
14
+ * @param {boolean} options.parameters.youAreCoHost - Indicates if the user is a co-host.
15
+ * @param {boolean} options.parameters.adminRestrictSetting - Indicates if there are restrictions set by the admin.
16
+ * @param {string} options.parameters.audioSetting - Current audio setting.
17
+ * @param {string} options.parameters.videoSetting - Current video setting.
18
+ * @param {string} options.parameters.screenshareSetting - Current screen share setting.
19
+ * @param {string} options.parameters.chatSetting - Current chat setting.
20
+ * @param {boolean} options.parameters.screenAction - Indicates if a screen action is currently taking place.
21
+ * @param {boolean} options.parameters.screenAlreadyOn - Indicates if screen sharing is currently active.
22
+ * @param {string | null} options.parameters.screenRequestState - State of the screen share request.
23
+ * @param {number} options.parameters.screenRequestTime - Timestamp of when the screen share request was made.
24
+ * @param {boolean} options.parameters.audioOnlyRoom - Indicates if the room is audio-only.
25
+ * @param {number} options.parameters.updateRequestIntervalSeconds - Interval time for updating request state.
26
+ * @param {Function} options.parameters.updateScreenRequestState - Function to update the screen request state.
27
+ * @param {Function} options.parameters.updateScreenAlreadyOn - Function to update the screen sharing status.
28
+ * @param {Function} options.parameters.checkPermission - Function to check permissions for screen sharing.
29
+ * @param {Function} options.parameters.checkScreenShare - Function to check and initiate screen sharing.
30
+ * @param {Function} options.parameters.stopShareScreen - Function to stop screen sharing.
31
+ *
32
+ * @returns {Promise<void>} A promise that resolves when the screen share action has been handled.
33
+ *
34
+ * @remarks
35
+ * This function checks the current status of screen sharing and handles the logic for starting or stopping screen sharing.
36
+ * It validates permissions and room settings before allowing screen sharing to be activated or deactivated.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const options: ClickScreenShareOptions = {
41
+ * parameters: {
42
+ * showAlert: (alert) => console.log(alert.message),
43
+ * roomName: 'myRoom',
44
+ * member: 'John Doe',
45
+ * socket: socketInstance,
46
+ * islevel: '1',
47
+ * youAreCoHost: false,
48
+ * adminRestrictSetting: false,
49
+ * audioSetting: 'on',
50
+ * videoSetting: 'on',
51
+ * screenshareSetting: 'off',
52
+ * chatSetting: 'allow',
53
+ * screenAction: false,
54
+ * screenAlreadyOn: false,
55
+ * screenRequestState: null,
56
+ * screenRequestTime: 0,
57
+ * audioOnlyRoom: false,
58
+ * updateRequestIntervalSeconds: 30,
59
+ * updateScreenRequestState: (state) => console.log(`Screen request state: ${state}`),
60
+ * updateScreenAlreadyOn: (status) => console.log(`Screen already on: ${status}`),
61
+ * checkPermission: checkPermissionFunction,
62
+ * checkScreenShare: checkScreenShareFunction,
63
+ * stopShareScreen: stopShareScreenFunction,
64
+ * getUpdatedAllParams: () => parameters,
65
+ * },
66
+ * };
67
+ *
68
+ * const clickScreenShareService = new ClickScreenShare();
69
+ * await clickScreenShareService.clickScreenShare(options);
70
+ * ```
71
+ */
4
72
  export class ClickScreenShare {
5
73
  /**
6
74
  * Handles the action for the screen button, including starting and stopping screen sharing.
@@ -107,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
107
175
  providedIn: 'root',
108
176
  }]
109
177
  }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stc2NyZWVuLXNoYXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9zdHJlYW0tbWV0aG9kcy9jbGljay1zY3JlZW4tc2hhcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFxRDNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQTJCLEVBQWlCLEVBQUU7UUFDbEYsVUFBVSxHQUFHLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDO1FBQ3BFLElBQUksRUFDRixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFlBQVksRUFDWixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixlQUFlLEdBQ2hCLEdBQUcsVUFBVSxDQUFDO1FBRWYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixTQUFTLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsd0RBQXdEO2dCQUNqRSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUN4QixxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2QyxNQUFNLGVBQWUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pCLFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSx1REFBdUQ7b0JBQ2hFLElBQUksRUFBRSxRQUFRO29CQUNkLFFBQVEsRUFBRSxJQUFJO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDckQsUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDO29CQUMvQixjQUFjLEVBQUUsb0JBQW9CO29CQUNwQyxZQUFZO29CQUNaLFlBQVk7b0JBQ1osa0JBQWtCO29CQUNsQixXQUFXO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUVELFFBQVEsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQztvQkFDSixnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7b0JBQ2pDLE1BQU07Z0JBQ1IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNQLElBQUksa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQ3JDLFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSxvRUFBb0U7NEJBQzdFLElBQUksRUFBRSxRQUFROzRCQUNkLFFBQVEsRUFBRSxJQUFJO3lCQUNmLENBQUMsQ0FBQzt3QkFDSCxPQUFPO29CQUNULENBQUM7b0JBRUQsSUFDRSxrQkFBa0IsS0FBSyxVQUFVO3dCQUNqQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsaUJBQWlCLEdBQUcsNEJBQTRCLEVBQzdELENBQUM7d0JBQ0QsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLCtDQUErQzs0QkFDeEQsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsUUFBUSxFQUFFLElBQUk7eUJBQ2YsQ0FBQyxDQUFDO3dCQUVILE9BQU87b0JBQ1QsQ0FBQztvQkFFRCxTQUFTLEVBQUUsQ0FBQzt3QkFDVixPQUFPLEVBQUUseUNBQXlDO3dCQUNsRCxJQUFJLEVBQUUsU0FBUzt3QkFDZixRQUFRLEVBQUUsSUFBSTtxQkFDZixDQUFDLENBQUM7b0JBRUgsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO29CQUMvQix3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO29CQUU3QyxJQUFJLFdBQVcsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO29CQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQzdELE1BQU07Z0JBQ1IsQ0FBQztnQkFDRCxLQUFLLENBQUM7b0JBQ0osU0FBUyxFQUFFLENBQUM7d0JBQ1YsT0FBTyxFQUFFLDRDQUE0Qzt3QkFDckQsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsUUFBUSxFQUFFLElBQUk7cUJBQ2YsQ0FBQyxDQUFDO29CQUVILE1BQU07Z0JBQ1IsUUFBUTtZQUNWLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO3VHQWxJUyxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzY3JlZW4tc2hhcmUuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQge1xuICBDaGVja1Blcm1pc3Npb25UeXBlLFxuICBDaGVja1NjcmVlblNoYXJlUGFyYW1ldGVycyxcbiAgQ2hlY2tTY3JlZW5TaGFyZVR5cGUsXG4gIFNob3dBbGVydCxcbiAgU3RvcFNoYXJlU2NyZWVuUGFyYW1ldGVycyxcbiAgU3RvcFNoYXJlU2NyZWVuVHlwZSxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDbGlja1NjcmVlblNoYXJlUGFyYW1ldGVyc1xuICBleHRlbmRzIENoZWNrU2NyZWVuU2hhcmVQYXJhbWV0ZXJzLFxuICAgIFN0b3BTaGFyZVNjcmVlblBhcmFtZXRlcnMge1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG4gIHJvb21OYW1lOiBzdHJpbmc7XG4gIG1lbWJlcjogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgaXNsZXZlbDogc3RyaW5nO1xuICB5b3VBcmVDb0hvc3Q6IGJvb2xlYW47XG4gIGFkbWluUmVzdHJpY3RTZXR0aW5nOiBib29sZWFuO1xuICBhdWRpb1NldHRpbmc6IHN0cmluZztcbiAgdmlkZW9TZXR0aW5nOiBzdHJpbmc7XG4gIHNjcmVlbnNoYXJlU2V0dGluZzogc3RyaW5nO1xuICBjaGF0U2V0dGluZzogc3RyaW5nO1xuICBzY3JlZW5BY3Rpb246IGJvb2xlYW47XG4gIHNjcmVlbkFscmVhZHlPbjogYm9vbGVhbjtcbiAgc2NyZWVuUmVxdWVzdFN0YXRlOiBzdHJpbmcgfCBudWxsO1xuICBzY3JlZW5SZXF1ZXN0VGltZTogbnVtYmVyO1xuICBhdWRpb09ubHlSb29tOiBib29sZWFuO1xuICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiBudW1iZXI7XG4gIHVwZGF0ZVNjcmVlblJlcXVlc3RTdGF0ZTogKHN0YXRlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVTY3JlZW5BbHJlYWR5T246IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIGNoZWNrUGVybWlzc2lvbjogQ2hlY2tQZXJtaXNzaW9uVHlwZTtcbiAgY2hlY2tTY3JlZW5TaGFyZTogQ2hlY2tTY3JlZW5TaGFyZVR5cGU7XG4gIHN0b3BTaGFyZVNjcmVlbjogU3RvcFNoYXJlU2NyZWVuVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDbGlja1NjcmVlblNoYXJlUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrU2NyZWVuU2hhcmVPcHRpb25zIHtcbiAgcGFyYW1ldGVyczogQ2xpY2tTY3JlZW5TaGFyZVBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrU2NyZWVuU2hhcmVUeXBlID0gKG9wdGlvbnM6IENsaWNrU2NyZWVuU2hhcmVPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tTY3JlZW5TaGFyZSB7XG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBhY3Rpb24gZm9yIHRoZSBzY3JlZW4gYnV0dG9uLCBpbmNsdWRpbmcgc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHNjcmVlbiBzaGFyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0NsaWNrU2NyZWVuU2hhcmVQYXJhbXN9IG9wdGlvbnMgLSBPcHRpb25zIGZvciBoYW5kbGluZyB0aGUgc2NyZWVuIGJ1dHRvbiBhY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgY2xpY2tTY3JlZW5TaGFyZSA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogQ2xpY2tTY3JlZW5TaGFyZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0geyAuLi5wYXJhbWV0ZXJzLCAuLi5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKSB9O1xuICAgIGxldCB7XG4gICAgICBzaG93QWxlcnQsXG4gICAgICByb29tTmFtZSxcbiAgICAgIG1lbWJlcixcbiAgICAgIHNvY2tldCxcbiAgICAgIGlzbGV2ZWwsXG4gICAgICB5b3VBcmVDb0hvc3QsXG4gICAgICBhZG1pblJlc3RyaWN0U2V0dGluZyxcbiAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgIHZpZGVvU2V0dGluZyxcbiAgICAgIHNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgc2NyZWVuQWN0aW9uLFxuICAgICAgc2NyZWVuQWxyZWFkeU9uLFxuICAgICAgc2NyZWVuUmVxdWVzdFN0YXRlLFxuICAgICAgc2NyZWVuUmVxdWVzdFRpbWUsXG4gICAgICBhdWRpb09ubHlSb29tLFxuICAgICAgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kcyxcbiAgICAgIHVwZGF0ZVNjcmVlblJlcXVlc3RTdGF0ZSxcbiAgICAgIHVwZGF0ZVNjcmVlbkFscmVhZHlPbixcbiAgICAgIGNoZWNrUGVybWlzc2lvbixcbiAgICAgIGNoZWNrU2NyZWVuU2hhcmUsXG4gICAgICBzdG9wU2hhcmVTY3JlZW4sXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICBpZiAoYXVkaW9Pbmx5Um9vbSkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCB0dXJuIG9uIHlvdXIgY2FtZXJhIGluIGFuIGF1ZGlvLW9ubHkgZXZlbnQuJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJvb21OYW1lLnN0YXJ0c1dpdGgoJ2QnKSkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCBzdGFydCBzY3JlZW4gc2hhcmUgaW4gYSBkZW1vIHJvb20uJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNjcmVlbkFscmVhZHlPbikge1xuICAgICAgc2NyZWVuQWxyZWFkeU9uID0gZmFsc2U7XG4gICAgICB1cGRhdGVTY3JlZW5BbHJlYWR5T24oc2NyZWVuQWxyZWFkeU9uKTtcbiAgICAgIGF3YWl0IHN0b3BTaGFyZVNjcmVlbih7IHBhcmFtZXRlcnMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhZG1pblJlc3RyaWN0U2V0dGluZykge1xuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3Qgc3RhcnQgc2NyZWVuIHNoYXJlLiBBY2Nlc3MgZGVuaWVkIGJ5IGhvc3QuJyxcbiAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3BvbnNlID0gMjtcbiAgICAgIGlmICghc2NyZWVuQWN0aW9uICYmIGlzbGV2ZWwgIT0gJzInICYmICF5b3VBcmVDb0hvc3QpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBjaGVja1Blcm1pc3Npb24oe1xuICAgICAgICAgIHBlcm1pc3Npb25UeXBlOiAnc2NyZWVuc2hhcmVTZXR0aW5nJyxcbiAgICAgICAgICBhdWRpb1NldHRpbmcsXG4gICAgICAgICAgdmlkZW9TZXR0aW5nLFxuICAgICAgICAgIHNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgICAgICBjaGF0U2V0dGluZyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocmVzcG9uc2UpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGNoZWNrU2NyZWVuU2hhcmUoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBpZiAoc2NyZWVuUmVxdWVzdFN0YXRlID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ0EgcmVxdWVzdCBpcyBhbHJlYWR5IHBlbmRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgaG9zdCB0byByZXNwb25kLicsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNjcmVlblJlcXVlc3RTdGF0ZSA9PT0gJ3JlamVjdGVkJyAmJlxuICAgICAgICAgICAgRGF0ZS5ub3coKSAtIHNjcmVlblJlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCBzZW5kIGFub3RoZXIgcmVxdWVzdCBhdCB0aGlzIHRpbWUuJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiAnWW91ciByZXF1ZXN0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIGhvc3QuJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2NyZWVuUmVxdWVzdFN0YXRlID0gJ3BlbmRpbmcnO1xuICAgICAgICAgIHVwZGF0ZVNjcmVlblJlcXVlc3RTdGF0ZShzY3JlZW5SZXF1ZXN0U3RhdGUpO1xuXG4gICAgICAgICAgbGV0IHVzZXJSZXF1ZXN0ID0geyBpZDogc29ja2V0LmlkLCBuYW1lOiBtZW1iZXIsIGljb246ICdmYS1kZXNrdG9wJyB9O1xuICAgICAgICAgIHNvY2tldC5lbWl0KCdwYXJ0aWNpcGFudFJlcXVlc3QnLCB7IHVzZXJSZXF1ZXN0LCByb29tTmFtZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgbWVzc2FnZTogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gc3RhcnQgc2NyZWVuIHNoYXJlLicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl19
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stc2NyZWVuLXNoYXJlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9zdHJlYW0tbWV0aG9kcy9jbGljay1zY3JlZW4tc2hhcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFrRDNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUVHO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7T0FLRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBMkIsRUFBaUIsRUFBRTtRQUNsRixVQUFVLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7UUFDcEUsSUFBSSxFQUNGLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLEVBQ1AsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osWUFBWSxFQUNaLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsWUFBWSxFQUNaLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYiw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsR0FBRyxVQUFVLENBQUM7UUFFZixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLFNBQVMsRUFBRSxDQUFDO2dCQUNWLE9BQU8sRUFBRSx3REFBd0Q7Z0JBQ2pFLElBQUksRUFBRSxRQUFRO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2FBQ2Ys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QztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7dUdBbElTLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNjcmVlbi1zaGFyZS5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb2NrZXQgfSBmcm9tICdzb2NrZXQuaW8tY2xpZW50JztcbmltcG9ydCB7XG4gIENoZWNrUGVybWlzc2lvblR5cGUsXG4gIENoZWNrU2NyZWVuU2hhcmVQYXJhbWV0ZXJzLFxuICBDaGVja1NjcmVlblNoYXJlVHlwZSxcbiAgU2hvd0FsZXJ0LFxuICBTdG9wU2hhcmVTY3JlZW5QYXJhbWV0ZXJzLFxuICBTdG9wU2hhcmVTY3JlZW5UeXBlLFxufSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrU2NyZWVuU2hhcmVQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgQ2hlY2tTY3JlZW5TaGFyZVBhcmFtZXRlcnMsXG4gICAgU3RvcFNoYXJlU2NyZWVuUGFyYW1ldGVycyB7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgbWVtYmVyOiBzdHJpbmc7XG4gIHNvY2tldDogU29ja2V0O1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHlvdUFyZUNvSG9zdDogYm9vbGVhbjtcbiAgYWRtaW5SZXN0cmljdFNldHRpbmc6IGJvb2xlYW47XG4gIGF1ZGlvU2V0dGluZzogc3RyaW5nO1xuICB2aWRlb1NldHRpbmc6IHN0cmluZztcbiAgc2NyZWVuc2hhcmVTZXR0aW5nOiBzdHJpbmc7XG4gIGNoYXRTZXR0aW5nOiBzdHJpbmc7XG4gIHNjcmVlbkFjdGlvbjogYm9vbGVhbjtcbiAgc2NyZWVuQWxyZWFkeU9uOiBib29sZWFuO1xuICBzY3JlZW5SZXF1ZXN0U3RhdGU6IHN0cmluZyB8IG51bGw7XG4gIHNjcmVlblJlcXVlc3RUaW1lOiBudW1iZXI7XG4gIGF1ZGlvT25seVJvb206IGJvb2xlYW47XG4gIHVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHM6IG51bWJlcjtcbiAgdXBkYXRlU2NyZWVuUmVxdWVzdFN0YXRlOiAoc3RhdGU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZVNjcmVlbkFscmVhZHlPbjogKHN0YXR1czogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgY2hlY2tQZXJtaXNzaW9uOiBDaGVja1Blcm1pc3Npb25UeXBlO1xuICBjaGVja1NjcmVlblNoYXJlOiBDaGVja1NjcmVlblNoYXJlVHlwZTtcbiAgc3RvcFNoYXJlU2NyZWVuOiBTdG9wU2hhcmVTY3JlZW5UeXBlO1xuXG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IENsaWNrU2NyZWVuU2hhcmVQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tTY3JlZW5TaGFyZU9wdGlvbnMge1xuICBwYXJhbWV0ZXJzOiBDbGlja1NjcmVlblNoYXJlUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ2xpY2tTY3JlZW5TaGFyZVR5cGUgPSAob3B0aW9uczogQ2xpY2tTY3JlZW5TaGFyZU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgYWN0aW9uIGZvciB0aGUgc2NyZWVuIGJ1dHRvbiwgaW5jbHVkaW5nIHN0YXJ0aW5nIGFuZCBzdG9wcGluZyBzY3JlZW4gc2hhcmluZy5cbiAqXG4gKiBAcGFyYW0ge0NsaWNrU2NyZWVuU2hhcmVPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIHNjcmVlbiBidXR0b24gYWN0aW9uLlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciB0aGUgc2NyZWVuIHNoYXJlIGFjdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5zaG93QWxlcnQgLSBGdW5jdGlvbiB0byBzaG93IGFsZXJ0IG1lc3NhZ2VzLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yb29tTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByb29tIHdoZXJlIHRoZSBzY3JlZW4gc2hhcmUgaXMgdGFraW5nIHBsYWNlLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5tZW1iZXIgLSBUaGUgbWVtYmVyIGluaXRpYXRpbmcgdGhlIHNjcmVlbiBzaGFyZS5cbiAqIEBwYXJhbSB7U29ja2V0fSBvcHRpb25zLnBhcmFtZXRlcnMuc29ja2V0IC0gVGhlIHNvY2tldCBjb25uZWN0aW9uIHVzZWQgZm9yIGNvbW11bmljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzbGV2ZWwgLSBUaGUgcGFydGljaXBhbnQncyBsZXZlbC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnlvdUFyZUNvSG9zdCAtIEluZGljYXRlcyBpZiB0aGUgdXNlciBpcyBhIGNvLWhvc3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5hZG1pblJlc3RyaWN0U2V0dGluZyAtIEluZGljYXRlcyBpZiB0aGVyZSBhcmUgcmVzdHJpY3Rpb25zIHNldCBieSB0aGUgYWRtaW4uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvU2V0dGluZyAtIEN1cnJlbnQgYXVkaW8gc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9TZXR0aW5nIC0gQ3VycmVudCB2aWRlbyBzZXR0aW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5zY3JlZW5zaGFyZVNldHRpbmcgLSBDdXJyZW50IHNjcmVlbiBzaGFyZSBzZXR0aW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5jaGF0U2V0dGluZyAtIEN1cnJlbnQgY2hhdCBzZXR0aW5nLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuQWN0aW9uIC0gSW5kaWNhdGVzIGlmIGEgc2NyZWVuIGFjdGlvbiBpcyBjdXJyZW50bHkgdGFraW5nIHBsYWNlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuQWxyZWFkeU9uIC0gSW5kaWNhdGVzIGlmIHNjcmVlbiBzaGFyaW5nIGlzIGN1cnJlbnRseSBhY3RpdmUuXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IG9wdGlvbnMucGFyYW1ldGVycy5zY3JlZW5SZXF1ZXN0U3RhdGUgLSBTdGF0ZSBvZiB0aGUgc2NyZWVuIHNoYXJlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNjcmVlblJlcXVlc3RUaW1lIC0gVGltZXN0YW1wIG9mIHdoZW4gdGhlIHNjcmVlbiBzaGFyZSByZXF1ZXN0IHdhcyBtYWRlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9Pbmx5Um9vbSAtIEluZGljYXRlcyBpZiB0aGUgcm9vbSBpcyBhdWRpby1vbmx5LlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzIC0gSW50ZXJ2YWwgdGltZSBmb3IgdXBkYXRpbmcgcmVxdWVzdCBzdGF0ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVTY3JlZW5SZXF1ZXN0U3RhdGUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHNjcmVlbiByZXF1ZXN0IHN0YXRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVNjcmVlbkFscmVhZHlPbiAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgc2NyZWVuIHNoYXJpbmcgc3RhdHVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNoZWNrUGVybWlzc2lvbiAtIEZ1bmN0aW9uIHRvIGNoZWNrIHBlcm1pc3Npb25zIGZvciBzY3JlZW4gc2hhcmluZy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5jaGVja1NjcmVlblNoYXJlIC0gRnVuY3Rpb24gdG8gY2hlY2sgYW5kIGluaXRpYXRlIHNjcmVlbiBzaGFyaW5nLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnN0b3BTaGFyZVNjcmVlbiAtIEZ1bmN0aW9uIHRvIHN0b3Agc2NyZWVuIHNoYXJpbmcuXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNjcmVlbiBzaGFyZSBhY3Rpb24gaGFzIGJlZW4gaGFuZGxlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHNjcmVlbiBzaGFyaW5nIGFuZCBoYW5kbGVzIHRoZSBsb2dpYyBmb3Igc3RhcnRpbmcgb3Igc3RvcHBpbmcgc2NyZWVuIHNoYXJpbmcuXG4gKiBJdCB2YWxpZGF0ZXMgcGVybWlzc2lvbnMgYW5kIHJvb20gc2V0dGluZ3MgYmVmb3JlIGFsbG93aW5nIHNjcmVlbiBzaGFyaW5nIHRvIGJlIGFjdGl2YXRlZCBvciBkZWFjdGl2YXRlZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgb3B0aW9uczogQ2xpY2tTY3JlZW5TaGFyZU9wdGlvbnMgPSB7XG4gKiAgIHBhcmFtZXRlcnM6IHtcbiAqICAgICBzaG93QWxlcnQ6IChhbGVydCkgPT4gY29uc29sZS5sb2coYWxlcnQubWVzc2FnZSksXG4gKiAgICAgcm9vbU5hbWU6ICdteVJvb20nLFxuICogICAgIG1lbWJlcjogJ0pvaG4gRG9lJyxcbiAqICAgICBzb2NrZXQ6IHNvY2tldEluc3RhbmNlLFxuICogICAgIGlzbGV2ZWw6ICcxJyxcbiAqICAgICB5b3VBcmVDb0hvc3Q6IGZhbHNlLFxuICogICAgIGFkbWluUmVzdHJpY3RTZXR0aW5nOiBmYWxzZSxcbiAqICAgICBhdWRpb1NldHRpbmc6ICdvbicsXG4gKiAgICAgdmlkZW9TZXR0aW5nOiAnb24nLFxuICogICAgIHNjcmVlbnNoYXJlU2V0dGluZzogJ29mZicsXG4gKiAgICAgY2hhdFNldHRpbmc6ICdhbGxvdycsXG4gKiAgICAgc2NyZWVuQWN0aW9uOiBmYWxzZSxcbiAqICAgICBzY3JlZW5BbHJlYWR5T246IGZhbHNlLFxuICogICAgIHNjcmVlblJlcXVlc3RTdGF0ZTogbnVsbCxcbiAqICAgICBzY3JlZW5SZXF1ZXN0VGltZTogMCxcbiAqICAgICBhdWRpb09ubHlSb29tOiBmYWxzZSxcbiAqICAgICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiAzMCxcbiAqICAgICB1cGRhdGVTY3JlZW5SZXF1ZXN0U3RhdGU6IChzdGF0ZSkgPT4gY29uc29sZS5sb2coYFNjcmVlbiByZXF1ZXN0IHN0YXRlOiAke3N0YXRlfWApLFxuICogICAgIHVwZGF0ZVNjcmVlbkFscmVhZHlPbjogKHN0YXR1cykgPT4gY29uc29sZS5sb2coYFNjcmVlbiBhbHJlYWR5IG9uOiAke3N0YXR1c31gKSxcbiAqICAgICBjaGVja1Blcm1pc3Npb246IGNoZWNrUGVybWlzc2lvbkZ1bmN0aW9uLFxuICogICAgIGNoZWNrU2NyZWVuU2hhcmU6IGNoZWNrU2NyZWVuU2hhcmVGdW5jdGlvbixcbiAqICAgICBzdG9wU2hhcmVTY3JlZW46IHN0b3BTaGFyZVNjcmVlbkZ1bmN0aW9uLFxuICogICAgIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IHBhcmFtZXRlcnMsXG4gKiAgIH0sXG4gKiB9O1xuICpcbiAqIGNvbnN0IGNsaWNrU2NyZWVuU2hhcmVTZXJ2aWNlID0gbmV3IENsaWNrU2NyZWVuU2hhcmUoKTtcbiAqIGF3YWl0IGNsaWNrU2NyZWVuU2hhcmVTZXJ2aWNlLmNsaWNrU2NyZWVuU2hhcmUob3B0aW9ucyk7XG4gKiBgYGBcbiAqL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tTY3JlZW5TaGFyZSB7XG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBhY3Rpb24gZm9yIHRoZSBzY3JlZW4gYnV0dG9uLCBpbmNsdWRpbmcgc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHNjcmVlbiBzaGFyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0NsaWNrU2NyZWVuU2hhcmVQYXJhbXN9IG9wdGlvbnMgLSBPcHRpb25zIGZvciBoYW5kbGluZyB0aGUgc2NyZWVuIGJ1dHRvbiBhY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgY2xpY2tTY3JlZW5TaGFyZSA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogQ2xpY2tTY3JlZW5TaGFyZU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBwYXJhbWV0ZXJzID0geyAuLi5wYXJhbWV0ZXJzLCAuLi5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKSB9O1xuICAgIGxldCB7XG4gICAgICBzaG93QWxlcnQsXG4gICAgICByb29tTmFtZSxcbiAgICAgIG1lbWJlcixcbiAgICAgIHNvY2tldCxcbiAgICAgIGlzbGV2ZWwsXG4gICAgICB5b3VBcmVDb0hvc3QsXG4gICAgICBhZG1pblJlc3RyaWN0U2V0dGluZyxcbiAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgIHZpZGVvU2V0dGluZyxcbiAgICAgIHNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgc2NyZWVuQWN0aW9uLFxuICAgICAgc2NyZWVuQWxyZWFkeU9uLFxuICAgICAgc2NyZWVuUmVxdWVzdFN0YXRlLFxuICAgICAgc2NyZWVuUmVxdWVzdFRpbWUsXG4gICAgICBhdWRpb09ubHlSb29tLFxuICAgICAgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kcyxcbiAgICAgIHVwZGF0ZVNjcmVlblJlcXVlc3RTdGF0ZSxcbiAgICAgIHVwZGF0ZVNjcmVlbkFscmVhZHlPbixcbiAgICAgIGNoZWNrUGVybWlzc2lvbixcbiAgICAgIGNoZWNrU2NyZWVuU2hhcmUsXG4gICAgICBzdG9wU2hhcmVTY3JlZW4sXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICBpZiAoYXVkaW9Pbmx5Um9vbSkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCB0dXJuIG9uIHlvdXIgY2FtZXJhIGluIGFuIGF1ZGlvLW9ubHkgZXZlbnQuJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHJvb21OYW1lLnN0YXJ0c1dpdGgoJ2QnKSkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCBzdGFydCBzY3JlZW4gc2hhcmUgaW4gYSBkZW1vIHJvb20uJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNjcmVlbkFscmVhZHlPbikge1xuICAgICAgc2NyZWVuQWxyZWFkeU9uID0gZmFsc2U7XG4gICAgICB1cGRhdGVTY3JlZW5BbHJlYWR5T24oc2NyZWVuQWxyZWFkeU9uKTtcbiAgICAgIGF3YWl0IHN0b3BTaGFyZVNjcmVlbih7IHBhcmFtZXRlcnMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhZG1pblJlc3RyaWN0U2V0dGluZykge1xuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3Qgc3RhcnQgc2NyZWVuIHNoYXJlLiBBY2Nlc3MgZGVuaWVkIGJ5IGhvc3QuJyxcbiAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3BvbnNlID0gMjtcbiAgICAgIGlmICghc2NyZWVuQWN0aW9uICYmIGlzbGV2ZWwgIT0gJzInICYmICF5b3VBcmVDb0hvc3QpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBjaGVja1Blcm1pc3Npb24oe1xuICAgICAgICAgIHBlcm1pc3Npb25UeXBlOiAnc2NyZWVuc2hhcmVTZXR0aW5nJyxcbiAgICAgICAgICBhdWRpb1NldHRpbmcsXG4gICAgICAgICAgdmlkZW9TZXR0aW5nLFxuICAgICAgICAgIHNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgICAgICBjaGF0U2V0dGluZyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocmVzcG9uc2UpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGNoZWNrU2NyZWVuU2hhcmUoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBpZiAoc2NyZWVuUmVxdWVzdFN0YXRlID09PSAncGVuZGluZycpIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ0EgcmVxdWVzdCBpcyBhbHJlYWR5IHBlbmRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgaG9zdCB0byByZXNwb25kLicsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNjcmVlblJlcXVlc3RTdGF0ZSA9PT0gJ3JlamVjdGVkJyAmJlxuICAgICAgICAgICAgRGF0ZS5ub3coKSAtIHNjcmVlblJlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCBzZW5kIGFub3RoZXIgcmVxdWVzdCBhdCB0aGlzIHRpbWUuJyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiAnWW91ciByZXF1ZXN0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIGhvc3QuJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2NyZWVuUmVxdWVzdFN0YXRlID0gJ3BlbmRpbmcnO1xuICAgICAgICAgIHVwZGF0ZVNjcmVlblJlcXVlc3RTdGF0ZShzY3JlZW5SZXF1ZXN0U3RhdGUpO1xuXG4gICAgICAgICAgbGV0IHVzZXJSZXF1ZXN0ID0geyBpZDogc29ja2V0LmlkLCBuYW1lOiBtZW1iZXIsIGljb246ICdmYS1kZXNrdG9wJyB9O1xuICAgICAgICAgIHNvY2tldC5lbWl0KCdwYXJ0aWNpcGFudFJlcXVlc3QnLCB7IHVzZXJSZXF1ZXN0LCByb29tTmFtZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgbWVzc2FnZTogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gc3RhcnQgc2NyZWVuIHNoYXJlLicsXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuIl19
@@ -1,6 +1,94 @@
1
1
  // click-video.service.ts
2
2
  import { Injectable } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Handles the click event to toggle the participant's video on/off and manages video permission requests.
6
+ *
7
+ * @param {ClickVideoOptions} options - The options for handling the video click event.
8
+ * @param {ClickVideoParameters} options.parameters - The parameters required for the video action.
9
+ * @param {boolean} options.parameters.checkMediaPermission - Indicates if media permission needs to be checked.
10
+ * @param {boolean} options.parameters.hasCameraPermission - Indicates if camera permission has been granted.
11
+ * @param {boolean} options.parameters.videoAlreadyOn - Indicates if the video is currently active.
12
+ * @param {boolean} options.parameters.audioOnlyRoom - Indicates if the current room is audio-only.
13
+ * @param {boolean} options.parameters.recordStarted - Indicates if recording has started.
14
+ * @param {boolean} options.parameters.recordResumed - Indicates if recording has resumed.
15
+ * @param {boolean} options.parameters.recordPaused - Indicates if recording is paused.
16
+ * @param {boolean} options.parameters.recordStopped - Indicates if recording is stopped.
17
+ * @param {string} options.parameters.recordingMediaOptions - The media options for recording (e.g., "video", "audio").
18
+ * @param {string} options.parameters.islevel - The participant's level.
19
+ * @param {boolean} options.parameters.youAreCoHost - Indicates if the user is a co-host.
20
+ * @param {boolean} options.parameters.adminRestrictSetting - Indicates if there are admin restrictions on video.
21
+ * @param {string | null} options.parameters.videoRequestState - State of the video request.
22
+ * @param {number} options.parameters.videoRequestTime - Timestamp of the video request.
23
+ * @param {string} options.parameters.member - The participant's name.
24
+ * @param {Socket} options.parameters.socket - The socket connection used for communication.
25
+ * @param {string} options.parameters.roomName - The name of the room where the video is being toggled.
26
+ * @param {string} options.parameters.userDefaultVideoInputDevice - The default video input device.
27
+ * @param {string} options.parameters.currentFacingMode - The current facing mode of the camera.
28
+ * @param {VidCons} options.parameters.vidCons - Video constraints for the stream.
29
+ * @param {number} options.parameters.frameRate - Desired frame rate for the video.
30
+ * @param {boolean} options.parameters.videoAction - Indicates if a video action is currently taking place.
31
+ * @param {MediaStream | null} options.parameters.localStream - The local media stream.
32
+ * @param {string} options.parameters.audioSetting - The current audio setting.
33
+ * @param {string} options.parameters.videoSetting - The current video setting.
34
+ * @param {string} options.parameters.screenshareSetting - The current screenshare setting.
35
+ * @param {string} options.parameters.chatSetting - The current chat setting.
36
+ * @param {number} options.parameters.updateRequestIntervalSeconds - Interval time for updating request state.
37
+ *
38
+ * @returns {Promise<void>} A promise that resolves when the video action has been handled.
39
+ *
40
+ * @remarks
41
+ * This function checks the current status of the video and handles the logic for starting or stopping the video stream.
42
+ * It validates permissions and room settings before allowing the video to be activated or deactivated.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const options: ClickVideoOptions = {
47
+ * parameters: {
48
+ * checkMediaPermission: true,
49
+ * hasCameraPermission: false,
50
+ * videoAlreadyOn: false,
51
+ * audioOnlyRoom: false,
52
+ * recordStarted: false,
53
+ * recordResumed: false,
54
+ * recordPaused: false,
55
+ * recordStopped: false,
56
+ * recordingMediaOptions: 'video',
57
+ * islevel: '1',
58
+ * youAreCoHost: false,
59
+ * adminRestrictSetting: false,
60
+ * videoRequestState: null,
61
+ * videoRequestTime: 0,
62
+ * member: 'John Doe',
63
+ * socket: socketInstance,
64
+ * roomName: 'myRoom',
65
+ * userDefaultVideoInputDevice: '',
66
+ * currentFacingMode: 'user',
67
+ * vidCons: { width: 1280, height: 720 },
68
+ * frameRate: 30,
69
+ * videoAction: false,
70
+ * localStream: null,
71
+ * audioSetting: 'on',
72
+ * videoSetting: 'on',
73
+ * screenshareSetting: 'off',
74
+ * chatSetting: 'allow',
75
+ * updateRequestIntervalSeconds: 30,
76
+ * showAlert: (alert) => console.log(alert.message),
77
+ * updateVideoAlreadyOn: (status) => console.log(`Video already on: ${status}`),
78
+ * updateVideoRequestState: (state) => console.log(`Video request state: ${state}`),
79
+ * updateLocalStream: (stream) => console.log('Local stream updated'),
80
+ * streamSuccessVideo: streamSuccessFunction,
81
+ * disconnectSendTransportVideo: disconnectFunction,
82
+ * requestPermissionCamera: requestPermissionFunction,
83
+ * checkPermission: checkPermissionFunction,
84
+ * getUpdatedAllParams: () => parameters,
85
+ * },
86
+ * };
87
+ *
88
+ * const clickVideoService = new ClickVideo();
89
+ * await clickVideoService.clickVideo(options);
90
+ * ```
91
+ */
4
92
  export class ClickVideo {
5
93
  /**
6
94
  * Handles the click event to toggle the participant's video on/off and manages video permission requests.
@@ -180,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
180
268
  providedIn: 'root',
181
269
  }]
182
270
  }] });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stdmlkZW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3N0cmVhbS1tZXRob2RzL2NsaWNrLXZpZGVvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBQXlCO0FBQ3pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBcUUzQyxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7Ozs7T0FLRztJQUVILFVBQVUsR0FBRyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQXFCLEVBQWlCLEVBQUU7UUFDdEUsSUFBSSxFQUNGLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksRUFDWixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsMkJBQTJCLEVBQzNCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLDRCQUE0QixFQUM1QixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsZUFBZSxHQUNoQixHQUFHLFVBQVUsQ0FBQztRQUVmLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLHdEQUF3RDtnQkFDakUsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFD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QWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTtvQkFDaEIsTUFBTSxTQUFTLENBQUMsWUFBWTt5QkFDekIsWUFBWSxDQUFDLG1CQUFtQixDQUFDO3lCQUNqQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQW1CLEVBQUUsRUFBRTt3QkFDbEMsTUFBTSxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxDQUFDLENBQUM7eUJBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTt3QkFDVixTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQ0wsK0ZBQStGOzRCQUNqRyxJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTt5QkFDZixDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0EvTlMsVUFBVTsyR0FBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjbGljay12aWRlby5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDaGVja1Blcm1pc3Npb25UeXBlLFxuICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvUGFyYW1ldGVycyxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb1R5cGUsXG4gIFJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhVHlwZSxcbiAgU2hvd0FsZXJ0LFxuICBTdHJlYW1TdWNjZXNzVmlkZW9QYXJhbWV0ZXJzLFxuICBTdHJlYW1TdWNjZXNzVmlkZW9UeXBlLFxuICBWaWRDb25zLFxufSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tWaWRlb1BhcmFtZXRlcnNcbiAgZXh0ZW5kcyBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvUGFyYW1ldGVycyxcbiAgICBTdHJlYW1TdWNjZXNzVmlkZW9QYXJhbWV0ZXJzIHtcbiAgY2hlY2tNZWRpYVBlcm1pc3Npb246IGJvb2xlYW47XG4gIGhhc0NhbWVyYVBlcm1pc3Npb246IGJvb2xlYW47XG4gIHZpZGVvQWxyZWFkeU9uOiBib29sZWFuO1xuICBhdWRpb09ubHlSb29tOiBib29sZWFuO1xuICByZWNvcmRTdGFydGVkOiBib29sZWFuO1xuICByZWNvcmRSZXN1bWVkOiBib29sZWFuO1xuICByZWNvcmRQYXVzZWQ6IGJvb2xlYW47XG4gIHJlY29yZFN0b3BwZWQ6IGJvb2xlYW47XG4gIHJlY29yZGluZ01lZGlhT3B0aW9uczogc3RyaW5nO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHlvdUFyZUNvSG9zdDogYm9vbGVhbjtcbiAgYWRtaW5SZXN0cmljdFNldHRpbmc6IGJvb2xlYW47XG4gIHZpZGVvUmVxdWVzdFN0YXRlOiBzdHJpbmcgfCBudWxsO1xuICB2aWRlb1JlcXVlc3RUaW1lOiBudW1iZXI7XG4gIG1lbWJlcjogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgdXNlckRlZmF1bHRWaWRlb0lucHV0RGV2aWNlOiBzdHJpbmc7XG4gIGN1cnJlbnRGYWNpbmdNb2RlOiBzdHJpbmc7XG4gIHZpZENvbnM6IFZpZENvbnM7XG4gIGZyYW1lUmF0ZTogbnVtYmVyO1xuICB2aWRlb0FjdGlvbjogYm9vbGVhbjtcbiAgbG9jYWxTdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbDtcbiAgYXVkaW9TZXR0aW5nOiBzdHJpbmc7XG4gIHZpZGVvU2V0dGluZzogc3RyaW5nO1xuICBzY3JlZW5zaGFyZVNldHRpbmc6IHN0cmluZztcbiAgY2hhdFNldHRpbmc6IHN0cmluZztcbiAgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kczogbnVtYmVyO1xuXG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgdXBkYXRlVmlkZW9BbHJlYWR5T246ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlVmlkZW9SZXF1ZXN0U3RhdGU6IChzdGF0ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVMb2NhbFN0cmVhbTogKHN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsKSA9PiB2b2lkO1xuXG4gIHN0cmVhbVN1Y2Nlc3NWaWRlbzogU3RyZWFtU3VjY2Vzc1ZpZGVvVHlwZTtcbiAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbzogRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb1R5cGU7XG4gIHJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhOiBSZXF1ZXN0UGVybWlzc2lvbkNhbWVyYVR5cGU7XG4gIGNoZWNrUGVybWlzc2lvbjogQ2hlY2tQZXJtaXNzaW9uVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDbGlja1ZpZGVvUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrVmlkZW9PcHRpb25zIHtcbiAgcGFyYW1ldGVyczogQ2xpY2tWaWRlb1BhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrVmlkZW9UeXBlID0gKG9wdGlvbnM6IENsaWNrVmlkZW9PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tWaWRlbyB7XG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCB0byB0b2dnbGUgdGhlIHBhcnRpY2lwYW50J3MgdmlkZW8gb24vb2ZmIGFuZCBtYW5hZ2VzIHZpZGVvIHBlcm1pc3Npb24gcmVxdWVzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q2xpY2tWaWRlb1BhcmFtc30gb3B0aW9ucyAtIFRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG5cbiAgY2xpY2tWaWRlbyA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogQ2xpY2tWaWRlb09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBsZXQge1xuICAgICAgY2hlY2tNZWRpYVBlcm1pc3Npb24sXG4gICAgICBoYXNDYW1lcmFQZXJtaXNzaW9uLFxuICAgICAgdmlkZW9BbHJlYWR5T24sXG4gICAgICBhdWRpb09ubHlSb29tLFxuICAgICAgcmVjb3JkU3RhcnRlZCxcbiAgICAgIHJlY29yZFJlc3VtZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuICAgICAgaXNsZXZlbCxcbiAgICAgIHlvdUFyZUNvSG9zdCxcbiAgICAgIGFkbWluUmVzdHJpY3RTZXR0aW5nLFxuICAgICAgdmlkZW9SZXF1ZXN0U3RhdGUsXG4gICAgICB2aWRlb1JlcXVlc3RUaW1lLFxuICAgICAgbWVtYmVyLFxuICAgICAgc29ja2V0LFxuICAgICAgcm9vbU5hbWUsXG4gICAgICB1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UsXG4gICAgICBjdXJyZW50RmFjaW5nTW9kZSxcbiAgICAgIHZpZENvbnMsXG4gICAgICBmcmFtZVJhdGUsXG4gICAgICB2aWRlb0FjdGlvbixcbiAgICAgIGxvY2FsU3RyZWFtLFxuICAgICAgYXVkaW9TZXR0aW5nLFxuICAgICAgdmlkZW9TZXR0aW5nLFxuICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgY2hhdFNldHRpbmcsXG4gICAgICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzLFxuICAgICAgc3RyZWFtU3VjY2Vzc1ZpZGVvLFxuICAgICAgc2hvd0FsZXJ0LFxuICAgICAgdXBkYXRlVmlkZW9BbHJlYWR5T24sXG4gICAgICB1cGRhdGVWaWRlb1JlcXVlc3RTdGF0ZSxcbiAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtLFxuICAgICAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyxcbiAgICAgIHJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhLFxuICAgICAgY2hlY2tQZXJtaXNzaW9uLFxuICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgaWYgKGF1ZGlvT25seVJvb20pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYSBpbiBhbiBhdWRpbyBvbmx5IGV2ZW50LicsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZpZGVvQWxyZWFkeU9uKSB7XG4gICAgICBpZiAoaXNsZXZlbCA9PT0gJzInICYmIChyZWNvcmRTdGFydGVkIHx8IHJlY29yZFJlc3VtZWQpKSB7XG4gICAgICAgIGlmICghKHJlY29yZFBhdXNlZCB8fCByZWNvcmRTdG9wcGVkKSAmJiByZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAnWW91IGNhbm5vdCB0dXJuIG9mZiB5b3VyIGNhbWVyYSB3aGlsZSByZWNvcmRpbmcgdmlkZW8sIHBsZWFzZSBwYXVzZSBvciBzdG9wIHJlY29yZGluZyBmaXJzdC4nLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2aWRlb0FscmVhZHlPbiA9IGZhbHNlO1xuICAgICAgdXBkYXRlVmlkZW9BbHJlYWR5T24odmlkZW9BbHJlYWR5T24pO1xuICAgICAgaWYgKGxvY2FsU3RyZWFtKSB7XG4gICAgICAgIGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdXBkYXRlTG9jYWxTdHJlYW0obG9jYWxTdHJlYW0pO1xuICAgICAgYXdhaXQgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyh7IHBhcmFtZXRlcnMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhZG1pblJlc3RyaWN0U2V0dGluZykge1xuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYS4gQWNjZXNzIGRlbmllZCBieSBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3BvbnNlID0gMjtcblxuICAgICAgaWYgKCF2aWRlb0FjdGlvbiAmJiBpc2xldmVsICE9PSAnMicgJiYgIXlvdUFyZUNvSG9zdCkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNoZWNrUGVybWlzc2lvbih7XG4gICAgICAgICAgcGVybWlzc2lvblR5cGU6ICd2aWRlb1NldHRpbmcnLFxuICAgICAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgICAgICB2aWRlb1NldHRpbmcsXG4gICAgICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlID09PSAxKSB7XG4gICAgICAgIGlmICh2aWRlb1JlcXVlc3RTdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgbWVzc2FnZTogJ0EgcmVxdWVzdCBpcyBwZW5kaW5nLiBQbGVhc2Ugd2FpdCBmb3IgdGhlIGhvc3QgdG8gcmVzcG9uZC4nLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB2aWRlb1JlcXVlc3RTdGF0ZSA9PT0gJ3JlamVjdGVkJyAmJlxuICAgICAgICAgIERhdGUubm93KCkgLSB2aWRlb1JlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc1xuICAgICAgICApIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiBgQSByZXF1ZXN0IHdhcyByZWplY3RlZC4gUGxlYXNlIHdhaXQgZm9yICR7dXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc30gc2Vjb25kcyBiZWZvcmUgc2VuZGluZyBhbm90aGVyIHJlcXVlc3QuYCxcbiAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1JlcXVlc3Qgc2VudCB0byBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICB9KTtcblxuICAgICAgICB2aWRlb1JlcXVlc3RTdGF0ZSA9ICdwZW5kaW5nJztcbiAgICAgICAgdXBkYXRlVmlkZW9SZXF1ZXN0U3RhdGUodmlkZW9SZXF1ZXN0U3RhdGUpO1xuXG4gICAgICAgIGxldCB1c2VyUmVxdWVzdCA9IHsgaWQ6IHNvY2tldC5pZCwgbmFtZTogbWVtYmVyLCBpY29uOiAnZmEtdmlkZW8nIH07XG4gICAgICAgIHNvY2tldC5lbWl0KCdwYXJ0aWNpcGFudFJlcXVlc3QnLCB7IHVzZXJSZXF1ZXN0LCByb29tTmFtZSB9KTtcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT09IDIpIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHR1cm4gb24geW91ciBjYW1lcmEuIEFjY2VzcyBkZW5pZWQgYnkgaG9zdC4nLFxuICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghaGFzQ2FtZXJhUGVybWlzc2lvbikge1xuICAgICAgICAgIGlmIChjaGVja01lZGlhUGVybWlzc2lvbikge1xuICAgICAgICAgICAgbGV0IHN0YXR1c0NhbWVyYSA9IGF3YWl0IHJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhKCk7XG4gICAgICAgICAgICBpZiAoc3RhdHVzQ2FtZXJhICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgY2FtZXJhIG9yIGNoZWNrIGlmIHlvdXIgY2FtZXJhIGlzIG5vdCBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24uJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtZWRpYUNvbnN0cmFpbnRzID0ge307XG4gICAgICAgIGxldCBhbHRNZWRpYUNvbnN0cmFpbnRzID0ge307XG4gICAgICAgIGlmICh1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UpIHtcbiAgICAgICAgICBpZiAodmlkQ29ucyAmJiB2aWRDb25zLndpZHRoICYmIHZpZENvbnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzoge1xuICAgICAgICAgICAgICAgIGRldmljZUlkOiB1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UsXG4gICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogY3VycmVudEZhY2luZ01vZGUsXG4gICAgICAgICAgICAgICAgLi4udmlkQ29ucyxcbiAgICAgICAgICAgICAgICBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhdWRpbzogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWx0TWVkaWFDb25zdHJhaW50cyA9IHtcbiAgICAgICAgICAgICAgdmlkZW86IHsgLi4udmlkQ29ucywgZnJhbWVSYXRlOiB7IGlkZWFsOiBmcmFtZVJhdGUgfSB9LFxuICAgICAgICAgICAgICBhdWRpbzogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbHRNZWRpYUNvbnN0cmFpbnRzID0geyB2aWRlbzogeyBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sIGF1ZGlvOiBmYWxzZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodmlkQ29ucyAmJiB2aWRDb25zLndpZHRoICYmIHZpZENvbnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbHRNZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSB7IHZpZGVvOiB7IGZyYW1lUmF0ZTogeyBpZGVhbDogZnJhbWVSYXRlIH0gfSwgYXVkaW86IGZhbHNlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlc1xuICAgICAgICAgIC5nZXRVc2VyTWVkaWEobWVkaWFDb25zdHJhaW50cylcbiAgICAgICAgICAudGhlbihhc3luYyAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgc3RyZWFtU3VjY2Vzc1ZpZGVvKHsgc3RyZWFtLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXNcbiAgICAgICAgICAgICAgLmdldFVzZXJNZWRpYShhbHRNZWRpYUNvbnN0cmFpbnRzKVxuICAgICAgICAgICAgICAudGhlbihhc3luYyAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHN0cmVhbVN1Y2Nlc3NWaWRlbyh7IHN0cmVhbSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgY2FtZXJhIG9yIGNoZWNrIGlmIHlvdXIgY2FtZXJhIGlzIG5vdCBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stdmlkZW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3N0cmVhbS1tZXRob2RzL2NsaWNrLXZpZGVvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUJBQXlCO0FBQ3pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBa0UzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUZHO0FBS0gsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFFSCxVQUFVLEdBQUcsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFxQixFQUFpQixFQUFFO1FBQ3RFLElBQUksRUFDRixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLDJCQUEyQixFQUMzQixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCw0QkFBNEIsRUFDNUIsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLGVBQWUsR0FDaEIsR0FBRyxVQUFVLENBQUM7UUFFZixJQUFJLGFBQWEsRUFBRSxDQUFD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Q0FBQyxZQUFZO3FCQUN6QixZQUFZLENBQUMsZ0JBQWdCLENBQUM7cUJBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBbUIsRUFBRSxFQUFFO29CQUNsQyxNQUFNLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQztxQkFDRCxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ2hCLE1BQU0sU0FBUyxDQUFDLFlBQVk7eUJBQ3pCLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQzt5QkFDakMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFtQixFQUFFLEVBQUU7d0JBQ2xDLE1BQU0sa0JBQWtCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDbkQsQ0FBQyxDQUFDO3lCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7d0JBQ1YsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUNMLCtGQUErRjs0QkFDakcsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsUUFBUSxFQUFFLElBQUk7eUJBQ2YsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7dUdBL05TLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY2xpY2stdmlkZW8uc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hlY2tQZXJtaXNzaW9uVHlwZSxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb1BhcmFtZXRlcnMsXG4gIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0VmlkZW9UeXBlLFxuICBSZXF1ZXN0UGVybWlzc2lvbkNhbWVyYVR5cGUsXG4gIFNob3dBbGVydCxcbiAgU3RyZWFtU3VjY2Vzc1ZpZGVvUGFyYW1ldGVycyxcbiAgU3RyZWFtU3VjY2Vzc1ZpZGVvVHlwZSxcbiAgVmlkQ29ucyxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrVmlkZW9QYXJhbWV0ZXJzXG4gIGV4dGVuZHMgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb1BhcmFtZXRlcnMsXG4gICAgU3RyZWFtU3VjY2Vzc1ZpZGVvUGFyYW1ldGVycyB7XG4gIGNoZWNrTWVkaWFQZXJtaXNzaW9uOiBib29sZWFuO1xuICBoYXNDYW1lcmFQZXJtaXNzaW9uOiBib29sZWFuO1xuICB2aWRlb0FscmVhZHlPbjogYm9vbGVhbjtcbiAgYXVkaW9Pbmx5Um9vbTogYm9vbGVhbjtcbiAgcmVjb3JkU3RhcnRlZDogYm9vbGVhbjtcbiAgcmVjb3JkUmVzdW1lZDogYm9vbGVhbjtcbiAgcmVjb3JkUGF1c2VkOiBib29sZWFuO1xuICByZWNvcmRTdG9wcGVkOiBib29sZWFuO1xuICByZWNvcmRpbmdNZWRpYU9wdGlvbnM6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICB5b3VBcmVDb0hvc3Q6IGJvb2xlYW47XG4gIGFkbWluUmVzdHJpY3RTZXR0aW5nOiBib29sZWFuO1xuICB2aWRlb1JlcXVlc3RTdGF0ZTogc3RyaW5nIHwgbnVsbDtcbiAgdmlkZW9SZXF1ZXN0VGltZTogbnVtYmVyO1xuICBtZW1iZXI6IHN0cmluZztcbiAgc29ja2V0OiBTb2NrZXQ7XG4gIHJvb21OYW1lOiBzdHJpbmc7XG4gIHVzZXJEZWZhdWx0VmlkZW9JbnB1dERldmljZTogc3RyaW5nO1xuICBjdXJyZW50RmFjaW5nTW9kZTogc3RyaW5nO1xuICB2aWRDb25zOiBWaWRDb25zO1xuICBmcmFtZVJhdGU6IG51bWJlcjtcbiAgdmlkZW9BY3Rpb246IGJvb2xlYW47XG4gIGxvY2FsU3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGw7XG4gIGF1ZGlvU2V0dGluZzogc3RyaW5nO1xuICB2aWRlb1NldHRpbmc6IHN0cmluZztcbiAgc2NyZWVuc2hhcmVTZXR0aW5nOiBzdHJpbmc7XG4gIGNoYXRTZXR0aW5nOiBzdHJpbmc7XG4gIHVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHM6IG51bWJlcjtcblxuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG4gIHVwZGF0ZVZpZGVvQWxyZWFkeU9uOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVZpZGVvUmVxdWVzdFN0YXRlOiAoc3RhdGU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlTG9jYWxTdHJlYW06IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcblxuICBzdHJlYW1TdWNjZXNzVmlkZW86IFN0cmVhbVN1Y2Nlc3NWaWRlb1R5cGU7XG4gIGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0VmlkZW86IERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0VmlkZW9UeXBlO1xuICByZXF1ZXN0UGVybWlzc2lvbkNhbWVyYTogUmVxdWVzdFBlcm1pc3Npb25DYW1lcmFUeXBlO1xuICBjaGVja1Blcm1pc3Npb246IENoZWNrUGVybWlzc2lvblR5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQ2xpY2tWaWRlb1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGlja1ZpZGVvT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IENsaWNrVmlkZW9QYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDbGlja1ZpZGVvVHlwZSA9IChvcHRpb25zOiBDbGlja1ZpZGVvT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCB0byB0b2dnbGUgdGhlIHBhcnRpY2lwYW50J3MgdmlkZW8gb24vb2ZmIGFuZCBtYW5hZ2VzIHZpZGVvIHBlcm1pc3Npb24gcmVxdWVzdHMuXG4gKlxuICogQHBhcmFtIHtDbGlja1ZpZGVvT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBoYW5kbGluZyB0aGUgdmlkZW8gY2xpY2sgZXZlbnQuXG4gKiBAcGFyYW0ge0NsaWNrVmlkZW9QYXJhbWV0ZXJzfSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgdGhlIHZpZGVvIGFjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNoZWNrTWVkaWFQZXJtaXNzaW9uIC0gSW5kaWNhdGVzIGlmIG1lZGlhIHBlcm1pc3Npb24gbmVlZHMgdG8gYmUgY2hlY2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmhhc0NhbWVyYVBlcm1pc3Npb24gLSBJbmRpY2F0ZXMgaWYgY2FtZXJhIHBlcm1pc3Npb24gaGFzIGJlZW4gZ3JhbnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnZpZGVvQWxyZWFkeU9uIC0gSW5kaWNhdGVzIGlmIHRoZSB2aWRlbyBpcyBjdXJyZW50bHkgYWN0aXZlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9Pbmx5Um9vbSAtIEluZGljYXRlcyBpZiB0aGUgY3VycmVudCByb29tIGlzIGF1ZGlvLW9ubHkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdGFydGVkIC0gSW5kaWNhdGVzIGlmIHJlY29yZGluZyBoYXMgc3RhcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFJlc3VtZWQgLSBJbmRpY2F0ZXMgaWYgcmVjb3JkaW5nIGhhcyByZXN1bWVkLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkUGF1c2VkIC0gSW5kaWNhdGVzIGlmIHJlY29yZGluZyBpcyBwYXVzZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRTdG9wcGVkIC0gSW5kaWNhdGVzIGlmIHJlY29yZGluZyBpcyBzdG9wcGVkLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRpbmdNZWRpYU9wdGlvbnMgLSBUaGUgbWVkaWEgb3B0aW9ucyBmb3IgcmVjb3JkaW5nIChlLmcuLCBcInZpZGVvXCIsIFwiYXVkaW9cIikuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzbGV2ZWwgLSBUaGUgcGFydGljaXBhbnQncyBsZXZlbC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnlvdUFyZUNvSG9zdCAtIEluZGljYXRlcyBpZiB0aGUgdXNlciBpcyBhIGNvLWhvc3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5hZG1pblJlc3RyaWN0U2V0dGluZyAtIEluZGljYXRlcyBpZiB0aGVyZSBhcmUgYWRtaW4gcmVzdHJpY3Rpb25zIG9uIHZpZGVvLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9SZXF1ZXN0U3RhdGUgLSBTdGF0ZSBvZiB0aGUgdmlkZW8gcmVxdWVzdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9SZXF1ZXN0VGltZSAtIFRpbWVzdGFtcCBvZiB0aGUgdmlkZW8gcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMubWVtYmVyIC0gVGhlIHBhcnRpY2lwYW50J3MgbmFtZS5cbiAqIEBwYXJhbSB7U29ja2V0fSBvcHRpb25zLnBhcmFtZXRlcnMuc29ja2V0IC0gVGhlIHNvY2tldCBjb25uZWN0aW9uIHVzZWQgZm9yIGNvbW11bmljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20gd2hlcmUgdGhlIHZpZGVvIGlzIGJlaW5nIHRvZ2dsZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJEZWZhdWx0VmlkZW9JbnB1dERldmljZSAtIFRoZSBkZWZhdWx0IHZpZGVvIGlucHV0IGRldmljZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuY3VycmVudEZhY2luZ01vZGUgLSBUaGUgY3VycmVudCBmYWNpbmcgbW9kZSBvZiB0aGUgY2FtZXJhLlxuICogQHBhcmFtIHtWaWRDb25zfSBvcHRpb25zLnBhcmFtZXRlcnMudmlkQ29ucyAtIFZpZGVvIGNvbnN0cmFpbnRzIGZvciB0aGUgc3RyZWFtLlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5mcmFtZVJhdGUgLSBEZXNpcmVkIGZyYW1lIHJhdGUgZm9yIHRoZSB2aWRlby5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnZpZGVvQWN0aW9uIC0gSW5kaWNhdGVzIGlmIGEgdmlkZW8gYWN0aW9uIGlzIGN1cnJlbnRseSB0YWtpbmcgcGxhY2UuXG4gKiBAcGFyYW0ge01lZGlhU3RyZWFtIHwgbnVsbH0gb3B0aW9ucy5wYXJhbWV0ZXJzLmxvY2FsU3RyZWFtIC0gVGhlIGxvY2FsIG1lZGlhIHN0cmVhbS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9TZXR0aW5nIC0gVGhlIGN1cnJlbnQgYXVkaW8gc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMudmlkZW9TZXR0aW5nIC0gVGhlIGN1cnJlbnQgdmlkZW8gc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuc2hhcmVTZXR0aW5nIC0gVGhlIGN1cnJlbnQgc2NyZWVuc2hhcmUgc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuY2hhdFNldHRpbmcgLSBUaGUgY3VycmVudCBjaGF0IHNldHRpbmcuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHMgLSBJbnRlcnZhbCB0aW1lIGZvciB1cGRhdGluZyByZXF1ZXN0IHN0YXRlLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB2aWRlbyBhY3Rpb24gaGFzIGJlZW4gaGFuZGxlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSB2aWRlbyBhbmQgaGFuZGxlcyB0aGUgbG9naWMgZm9yIHN0YXJ0aW5nIG9yIHN0b3BwaW5nIHRoZSB2aWRlbyBzdHJlYW0uXG4gKiBJdCB2YWxpZGF0ZXMgcGVybWlzc2lvbnMgYW5kIHJvb20gc2V0dGluZ3MgYmVmb3JlIGFsbG93aW5nIHRoZSB2aWRlbyB0byBiZSBhY3RpdmF0ZWQgb3IgZGVhY3RpdmF0ZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9wdGlvbnM6IENsaWNrVmlkZW9PcHRpb25zID0ge1xuICogICBwYXJhbWV0ZXJzOiB7XG4gKiAgICAgY2hlY2tNZWRpYVBlcm1pc3Npb246IHRydWUsXG4gKiAgICAgaGFzQ2FtZXJhUGVybWlzc2lvbjogZmFsc2UsXG4gKiAgICAgdmlkZW9BbHJlYWR5T246IGZhbHNlLFxuICogICAgIGF1ZGlvT25seVJvb206IGZhbHNlLFxuICogICAgIHJlY29yZFN0YXJ0ZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZFJlc3VtZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZFBhdXNlZDogZmFsc2UsXG4gKiAgICAgcmVjb3JkU3RvcHBlZDogZmFsc2UsXG4gKiAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiAndmlkZW8nLFxuICogICAgIGlzbGV2ZWw6ICcxJyxcbiAqICAgICB5b3VBcmVDb0hvc3Q6IGZhbHNlLFxuICogICAgIGFkbWluUmVzdHJpY3RTZXR0aW5nOiBmYWxzZSxcbiAqICAgICB2aWRlb1JlcXVlc3RTdGF0ZTogbnVsbCxcbiAqICAgICB2aWRlb1JlcXVlc3RUaW1lOiAwLFxuICogICAgIG1lbWJlcjogJ0pvaG4gRG9lJyxcbiAqICAgICBzb2NrZXQ6IHNvY2tldEluc3RhbmNlLFxuICogICAgIHJvb21OYW1lOiAnbXlSb29tJyxcbiAqICAgICB1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2U6ICcnLFxuICogICAgIGN1cnJlbnRGYWNpbmdNb2RlOiAndXNlcicsXG4gKiAgICAgdmlkQ29uczogeyB3aWR0aDogMTI4MCwgaGVpZ2h0OiA3MjAgfSxcbiAqICAgICBmcmFtZVJhdGU6IDMwLFxuICogICAgIHZpZGVvQWN0aW9uOiBmYWxzZSxcbiAqICAgICBsb2NhbFN0cmVhbTogbnVsbCxcbiAqICAgICBhdWRpb1NldHRpbmc6ICdvbicsXG4gKiAgICAgdmlkZW9TZXR0aW5nOiAnb24nLFxuICogICAgIHNjcmVlbnNoYXJlU2V0dGluZzogJ29mZicsXG4gKiAgICAgY2hhdFNldHRpbmc6ICdhbGxvdycsXG4gKiAgICAgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kczogMzAsXG4gKiAgICAgc2hvd0FsZXJ0OiAoYWxlcnQpID0+IGNvbnNvbGUubG9nKGFsZXJ0Lm1lc3NhZ2UpLFxuICogICAgIHVwZGF0ZVZpZGVvQWxyZWFkeU9uOiAoc3RhdHVzKSA9PiBjb25zb2xlLmxvZyhgVmlkZW8gYWxyZWFkeSBvbjogJHtzdGF0dXN9YCksXG4gKiAgICAgdXBkYXRlVmlkZW9SZXF1ZXN0U3RhdGU6IChzdGF0ZSkgPT4gY29uc29sZS5sb2coYFZpZGVvIHJlcXVlc3Qgc3RhdGU6ICR7c3RhdGV9YCksXG4gKiAgICAgdXBkYXRlTG9jYWxTdHJlYW06IChzdHJlYW0pID0+IGNvbnNvbGUubG9nKCdMb2NhbCBzdHJlYW0gdXBkYXRlZCcpLFxuICogICAgIHN0cmVhbVN1Y2Nlc3NWaWRlbzogc3RyZWFtU3VjY2Vzc0Z1bmN0aW9uLFxuICogICAgIGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0VmlkZW86IGRpc2Nvbm5lY3RGdW5jdGlvbixcbiAqICAgICByZXF1ZXN0UGVybWlzc2lvbkNhbWVyYTogcmVxdWVzdFBlcm1pc3Npb25GdW5jdGlvbixcbiAqICAgICBjaGVja1Blcm1pc3Npb246IGNoZWNrUGVybWlzc2lvbkZ1bmN0aW9uLFxuICogICAgIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IHBhcmFtZXRlcnMsXG4gKiAgIH0sXG4gKiB9O1xuICpcbiAqIGNvbnN0IGNsaWNrVmlkZW9TZXJ2aWNlID0gbmV3IENsaWNrVmlkZW8oKTtcbiAqIGF3YWl0IGNsaWNrVmlkZW9TZXJ2aWNlLmNsaWNrVmlkZW8ob3B0aW9ucyk7XG4gKiBgYGBcbiAqL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tWaWRlbyB7XG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCB0byB0b2dnbGUgdGhlIHBhcnRpY2lwYW50J3MgdmlkZW8gb24vb2ZmIGFuZCBtYW5hZ2VzIHZpZGVvIHBlcm1pc3Npb24gcmVxdWVzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q2xpY2tWaWRlb1BhcmFtc30gb3B0aW9ucyAtIFRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG5cbiAgY2xpY2tWaWRlbyA9IGFzeW5jICh7IHBhcmFtZXRlcnMgfTogQ2xpY2tWaWRlb09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBsZXQge1xuICAgICAgY2hlY2tNZWRpYVBlcm1pc3Npb24sXG4gICAgICBoYXNDYW1lcmFQZXJtaXNzaW9uLFxuICAgICAgdmlkZW9BbHJlYWR5T24sXG4gICAgICBhdWRpb09ubHlSb29tLFxuICAgICAgcmVjb3JkU3RhcnRlZCxcbiAgICAgIHJlY29yZFJlc3VtZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuICAgICAgaXNsZXZlbCxcbiAgICAgIHlvdUFyZUNvSG9zdCxcbiAgICAgIGFkbWluUmVzdHJpY3RTZXR0aW5nLFxuICAgICAgdmlkZW9SZXF1ZXN0U3RhdGUsXG4gICAgICB2aWRlb1JlcXVlc3RUaW1lLFxuICAgICAgbWVtYmVyLFxuICAgICAgc29ja2V0LFxuICAgICAgcm9vbU5hbWUsXG4gICAgICB1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UsXG4gICAgICBjdXJyZW50RmFjaW5nTW9kZSxcbiAgICAgIHZpZENvbnMsXG4gICAgICBmcmFtZVJhdGUsXG4gICAgICB2aWRlb0FjdGlvbixcbiAgICAgIGxvY2FsU3RyZWFtLFxuICAgICAgYXVkaW9TZXR0aW5nLFxuICAgICAgdmlkZW9TZXR0aW5nLFxuICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgY2hhdFNldHRpbmcsXG4gICAgICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzLFxuICAgICAgc3RyZWFtU3VjY2Vzc1ZpZGVvLFxuICAgICAgc2hvd0FsZXJ0LFxuICAgICAgdXBkYXRlVmlkZW9BbHJlYWR5T24sXG4gICAgICB1cGRhdGVWaWRlb1JlcXVlc3RTdGF0ZSxcbiAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtLFxuICAgICAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyxcbiAgICAgIHJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhLFxuICAgICAgY2hlY2tQZXJtaXNzaW9uLFxuICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgaWYgKGF1ZGlvT25seVJvb20pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYSBpbiBhbiBhdWRpbyBvbmx5IGV2ZW50LicsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZpZGVvQWxyZWFkeU9uKSB7XG4gICAgICBpZiAoaXNsZXZlbCA9PT0gJzInICYmIChyZWNvcmRTdGFydGVkIHx8IHJlY29yZFJlc3VtZWQpKSB7XG4gICAgICAgIGlmICghKHJlY29yZFBhdXNlZCB8fCByZWNvcmRTdG9wcGVkKSAmJiByZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAnWW91IGNhbm5vdCB0dXJuIG9mZiB5b3VyIGNhbWVyYSB3aGlsZSByZWNvcmRpbmcgdmlkZW8sIHBsZWFzZSBwYXVzZSBvciBzdG9wIHJlY29yZGluZyBmaXJzdC4nLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2aWRlb0FscmVhZHlPbiA9IGZhbHNlO1xuICAgICAgdXBkYXRlVmlkZW9BbHJlYWR5T24odmlkZW9BbHJlYWR5T24pO1xuICAgICAgaWYgKGxvY2FsU3RyZWFtKSB7XG4gICAgICAgIGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdXBkYXRlTG9jYWxTdHJlYW0obG9jYWxTdHJlYW0pO1xuICAgICAgYXdhaXQgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyh7IHBhcmFtZXRlcnMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhZG1pblJlc3RyaWN0U2V0dGluZykge1xuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYS4gQWNjZXNzIGRlbmllZCBieSBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3BvbnNlID0gMjtcblxuICAgICAgaWYgKCF2aWRlb0FjdGlvbiAmJiBpc2xldmVsICE9PSAnMicgJiYgIXlvdUFyZUNvSG9zdCkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNoZWNrUGVybWlzc2lvbih7XG4gICAgICAgICAgcGVybWlzc2lvblR5cGU6ICd2aWRlb1NldHRpbmcnLFxuICAgICAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgICAgICB2aWRlb1NldHRpbmcsXG4gICAgICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3BvbnNlID09PSAxKSB7XG4gICAgICAgIGlmICh2aWRlb1JlcXVlc3RTdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgbWVzc2FnZTogJ0EgcmVxdWVzdCBpcyBwZW5kaW5nLiBQbGVhc2Ugd2FpdCBmb3IgdGhlIGhvc3QgdG8gcmVzcG9uZC4nLFxuICAgICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB2aWRlb1JlcXVlc3RTdGF0ZSA9PT0gJ3JlamVjdGVkJyAmJlxuICAgICAgICAgIERhdGUubm93KCkgLSB2aWRlb1JlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc1xuICAgICAgICApIHtcbiAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICBtZXNzYWdlOiBgQSByZXF1ZXN0IHdhcyByZWplY3RlZC4gUGxlYXNlIHdhaXQgZm9yICR7dXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kc30gc2Vjb25kcyBiZWZvcmUgc2VuZGluZyBhbm90aGVyIHJlcXVlc3QuYCxcbiAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgbWVzc2FnZTogJ1JlcXVlc3Qgc2VudCB0byBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICB9KTtcblxuICAgICAgICB2aWRlb1JlcXVlc3RTdGF0ZSA9ICdwZW5kaW5nJztcbiAgICAgICAgdXBkYXRlVmlkZW9SZXF1ZXN0U3RhdGUodmlkZW9SZXF1ZXN0U3RhdGUpO1xuXG4gICAgICAgIGxldCB1c2VyUmVxdWVzdCA9IHsgaWQ6IHNvY2tldC5pZCwgbmFtZTogbWVtYmVyLCBpY29uOiAnZmEtdmlkZW8nIH07XG4gICAgICAgIHNvY2tldC5lbWl0KCdwYXJ0aWNpcGFudFJlcXVlc3QnLCB7IHVzZXJSZXF1ZXN0LCByb29tTmFtZSB9KTtcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT09IDIpIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHR1cm4gb24geW91ciBjYW1lcmEuIEFjY2VzcyBkZW5pZWQgYnkgaG9zdC4nLFxuICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghaGFzQ2FtZXJhUGVybWlzc2lvbikge1xuICAgICAgICAgIGlmIChjaGVja01lZGlhUGVybWlzc2lvbikge1xuICAgICAgICAgICAgbGV0IHN0YXR1c0NhbWVyYSA9IGF3YWl0IHJlcXVlc3RQZXJtaXNzaW9uQ2FtZXJhKCk7XG4gICAgICAgICAgICBpZiAoc3RhdHVzQ2FtZXJhICE9PSAnZ3JhbnRlZCcpIHtcbiAgICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgY2FtZXJhIG9yIGNoZWNrIGlmIHlvdXIgY2FtZXJhIGlzIG5vdCBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24uJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtZWRpYUNvbnN0cmFpbnRzID0ge307XG4gICAgICAgIGxldCBhbHRNZWRpYUNvbnN0cmFpbnRzID0ge307XG4gICAgICAgIGlmICh1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UpIHtcbiAgICAgICAgICBpZiAodmlkQ29ucyAmJiB2aWRDb25zLndpZHRoICYmIHZpZENvbnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzoge1xuICAgICAgICAgICAgICAgIGRldmljZUlkOiB1c2VyRGVmYXVsdFZpZGVvSW5wdXREZXZpY2UsXG4gICAgICAgICAgICAgICAgZmFjaW5nTW9kZTogY3VycmVudEZhY2luZ01vZGUsXG4gICAgICAgICAgICAgICAgLi4udmlkQ29ucyxcbiAgICAgICAgICAgICAgICBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBhdWRpbzogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWx0TWVkaWFDb25zdHJhaW50cyA9IHtcbiAgICAgICAgICAgICAgdmlkZW86IHsgLi4udmlkQ29ucywgZnJhbWVSYXRlOiB7IGlkZWFsOiBmcmFtZVJhdGUgfSB9LFxuICAgICAgICAgICAgICBhdWRpbzogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbHRNZWRpYUNvbnN0cmFpbnRzID0geyB2aWRlbzogeyBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sIGF1ZGlvOiBmYWxzZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodmlkQ29ucyAmJiB2aWRDb25zLndpZHRoICYmIHZpZENvbnMuaGVpZ2h0KSB7XG4gICAgICAgICAgICBtZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhbHRNZWRpYUNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgICAgICB2aWRlbzogeyAuLi52aWRDb25zLCBmcmFtZVJhdGU6IHsgaWRlYWw6IGZyYW1lUmF0ZSB9IH0sXG4gICAgICAgICAgICAgIGF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1lZGlhQ29uc3RyYWludHMgPSB7IHZpZGVvOiB7IGZyYW1lUmF0ZTogeyBpZGVhbDogZnJhbWVSYXRlIH0gfSwgYXVkaW86IGZhbHNlIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlc1xuICAgICAgICAgIC5nZXRVc2VyTWVkaWEobWVkaWFDb25zdHJhaW50cylcbiAgICAgICAgICAudGhlbihhc3luYyAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgc3RyZWFtU3VjY2Vzc1ZpZGVvKHsgc3RyZWFtLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXNcbiAgICAgICAgICAgICAgLmdldFVzZXJNZWRpYShhbHRNZWRpYUNvbnN0cmFpbnRzKVxuICAgICAgICAgICAgICAudGhlbihhc3luYyAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHN0cmVhbVN1Y2Nlc3NWaWRlbyh7IHN0cmVhbSwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgY2FtZXJhIG9yIGNoZWNrIGlmIHlvdXIgY2FtZXJhIGlzIG5vdCBiZWluZyB1c2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24uJyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==