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.
- package/LICENSE +21 -0
- package/README.md +194 -192
- package/dist/README.md +194 -192
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +50 -3
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
- package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
- package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +13 -3
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
- package/dist/fesm2022/mediasfu-angular.mjs +8192 -910
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
- package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
- package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
- package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
- package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
- package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
- package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
- package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
- package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
- package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
- package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
- package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
- package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
- package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
- package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
- package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
- package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
- package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
- package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
- package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
- package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
- package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
- package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
- package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
- package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
- package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
- package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
- package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
- package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
- package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
- package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
- package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +45 -11
- package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
- package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
- package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
- package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
- package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
- package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
- package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
- package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
- package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
- package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
- package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
- package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
- package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
- package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
- package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
- package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
- package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
- package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
- package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
- package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
- package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
- package/dist/lib/consumers/change-vids.service.d.ts +131 -66
- package/dist/lib/consumers/check-grid.service.d.ts +32 -18
- package/dist/lib/consumers/check-permission.service.d.ts +25 -0
- package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
- package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
- package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
- package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
- package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
- package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
- package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
- package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
- package/dist/lib/consumers/control-media.service.d.ts +45 -0
- package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
- package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
- package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
- package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
- package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
- package/dist/lib/consumers/get-videos.service.d.ts +33 -0
- package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
- package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
- package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
- package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
- package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
- package/dist/lib/consumers/re-port.service.d.ts +48 -0
- package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
- package/dist/lib/consumers/readjust.service.d.ts +50 -0
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
- package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
- package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
- package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
- package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
- package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
- package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
- package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
- package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
- package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
- package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
- package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
- package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
- package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
- package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
- package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
- package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
- package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
- package/dist/lib/consumers/trigger.service.d.ts +38 -0
- package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
- package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
- package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
- package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
- package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
- package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
- package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
- package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
- package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
- package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
- package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
- package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
- package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
- package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
- package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
- package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
- package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
- package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
- package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
- package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
- package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
- package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
- package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
- package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
- package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
- package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
- package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
- package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
- package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
- package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
- package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
- package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
- package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
- package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
- package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
- package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
- package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
- package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
- package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
- package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
- package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
- package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
- package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
- package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
- package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
- package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
- package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
- package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
- package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
- package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
- package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
- package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
- package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
- package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
- package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
- package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
- package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
- package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
- package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
- package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
- package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
- package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
- package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
- package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
- package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
- package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
- package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
- package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
- package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
- package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
- package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
- package/package.json +11 -2
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Disconnects the send transport for video, closes the video producer, and updates the state.
|
|
5
|
+
*
|
|
6
|
+
* @param {DisconnectSendTransportVideoOptions} options - The options required for disconnecting the send transport.
|
|
7
|
+
* @param {Object} options.parameters - The parameters for the disconnection.
|
|
8
|
+
* @param {Producer} options.parameters.videoProducer - The video producer to be closed.
|
|
9
|
+
* @param {Socket} options.parameters.socket - The socket instance for communication.
|
|
10
|
+
* @param {string} options.parameters.islevel - The participant's level.
|
|
11
|
+
* @param {string} options.parameters.roomName - The name of the room.
|
|
12
|
+
* @param {boolean} options.parameters.lock_screen - Flag indicating if the screen is locked.
|
|
13
|
+
* @param {boolean} options.parameters.updateMainWindow - Flag to update the main window.
|
|
14
|
+
* @param {Function} options.parameters.updateUpdateMainWindow - Function to update the main window state.
|
|
15
|
+
* @param {Function} options.parameters.updateVideoProducer - Function to update the video producer state.
|
|
16
|
+
* @param {Function} options.parameters.reorderStreams - Function to reorder streams.
|
|
17
|
+
*
|
|
18
|
+
* @returns {Promise<void>} A promise that resolves when the disconnection process is complete.
|
|
19
|
+
*
|
|
20
|
+
* @throws {Error} Throws an error if the disconnection process fails.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const options = {
|
|
25
|
+
* parameters: {
|
|
26
|
+
* videoProducer,
|
|
27
|
+
* socket,
|
|
28
|
+
* islevel: '1',
|
|
29
|
+
* roomName: 'Room 101',
|
|
30
|
+
* lock_screen: false,
|
|
31
|
+
* updateMainWindow: false,
|
|
32
|
+
* updateUpdateMainWindow: (state) => { console.log(updated) },
|
|
33
|
+
* updateVideoProducer: (producer) => { console.log(updated) },
|
|
34
|
+
* reorderStreams: (params) => { },
|
|
35
|
+
* getUpdatedAllParams: () => ({}),
|
|
36
|
+
* },
|
|
37
|
+
* };
|
|
38
|
+
*
|
|
39
|
+
* disconnectSendTransportVideoService.disconnectSendTransportVideo(options)
|
|
40
|
+
* .then(() => {
|
|
41
|
+
* console.log('Video transport disconnected successfully');
|
|
42
|
+
* })
|
|
43
|
+
* .catch((error) => {
|
|
44
|
+
* console.error('Error disconnecting video transport:', error);
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
3
48
|
export class DisconnectSendTransportVideo {
|
|
4
49
|
/**
|
|
5
50
|
* Disconnects the send transport for video, closes the video producer, and updates the state.
|
|
@@ -53,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
53
98
|
providedIn: 'root',
|
|
54
99
|
}]
|
|
55
100
|
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY29ubmVjdC1zZW5kLXRyYW5zcG9ydC12aWRlby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9kaXNjb25uZWN0LXNlbmQtdHJhbnNwb3J0LXZpZGVvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE0QnpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQU1MLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBRUgsS0FBSyxDQUFDLDRCQUE0QixDQUFDLEVBQ2pDLFVBQVUsR0FDMEI7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxFQUNGLGFBQWEsRUFDYixNQUFNLEVBQ04sT0FBTyxFQUNQLFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFFckMsZ0RBQWdEO1lBQ2hELE1BQU0sYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTFCLGdEQUFnRDtZQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBRW5FLHdFQUF3RTtZQUN4RSxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixNQUFNLGNBQWMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLGNBQWMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixpREFBaUQ7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUUsQ0FBQztJQUNILENBQUM7dUdBMURVLDRCQUE0QjsyR0FBNUIsNEJBQTRCLGNBRjNCLE1BQU07OzJGQUVQLDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWNlciB9IGZyb20gJ21lZGlhc291cC1jbGllbnQvbGliL3R5cGVzJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuaW1wb3J0IHsgUmVvcmRlclN0cmVhbXNUeXBlLCBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMgfSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvUGFyYW1ldGVycyBleHRlbmRzIFJlb3JkZXJTdHJlYW1zUGFyYW1ldGVycyB7XG4gIHZpZGVvUHJvZHVjZXI6IFByb2R1Y2VyIHwgbnVsbDtcbiAgc29ja2V0OiBTb2NrZXQ7XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgbG9ja19zY3JlZW46IGJvb2xlYW47XG4gIHVwZGF0ZU1haW5XaW5kb3c6IGJvb2xlYW47XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6IChzdGF0ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlVmlkZW9Qcm9kdWNlcjogKHByb2R1Y2VyOiBQcm9kdWNlciB8IG51bGwpID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHJlb3JkZXJTdHJlYW1zOiBSZW9yZGVyU3RyZWFtc1R5cGU7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0VmlkZW9QYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvVHlwZSA9IChcbiAgb3B0aW9uczogRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb09wdGlvbnMsXG4pID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIERpc2Nvbm5lY3RzIHRoZSBzZW5kIHRyYW5zcG9ydCBmb3IgdmlkZW8sIGNsb3NlcyB0aGUgdmlkZW8gcHJvZHVjZXIsIGFuZCB1cGRhdGVzIHRoZSBzdGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIHJlcXVpcmVkIGZvciBkaXNjb25uZWN0aW5nIHRoZSBzZW5kIHRyYW5zcG9ydC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGlzY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIHtQcm9kdWNlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnZpZGVvUHJvZHVjZXIgLSBUaGUgdmlkZW8gcHJvZHVjZXIgdG8gYmUgY2xvc2VkLlxuICAgKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuaXNsZXZlbCAtIFRoZSBwYXJ0aWNpcGFudCdzIGxldmVsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmxvY2tfc2NyZWVuIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBzY3JlZW4gaXMgbG9ja2VkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVNYWluV2luZG93IC0gRmxhZyB0byB1cGRhdGUgdGhlIG1haW4gd2luZG93LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlVXBkYXRlTWFpbldpbmRvdyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cgc3RhdGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVWaWRlb1Byb2R1Y2VyIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aWRlbyBwcm9kdWNlciBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlb3JkZXJTdHJlYW1zIC0gRnVuY3Rpb24gdG8gcmVvcmRlciBzdHJlYW1zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGlzY29ubmVjdGlvbiBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBkaXNjb25uZWN0aW9uIHByb2Nlc3MgZmFpbHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3Qgb3B0aW9ucyA9IHtcbiAgICogICBwYXJhbWV0ZXJzOiB7XG4gICAqICAgICB2aWRlb1Byb2R1Y2VyLFxuICAgKiAgICAgc29ja2V0LFxuICAgKiAgICAgaXNsZXZlbDogJzEnLFxuICAgKiAgICAgcm9vbU5hbWU6ICdSb29tIDEwMScsXG4gICAqICAgICBsb2NrX3NjcmVlbjogZmFsc2UsXG4gICAqICAgICB1cGRhdGVNYWluV2luZG93OiBmYWxzZSxcbiAgICogICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6IChzdGF0ZSkgPT4geyBjb25zb2xlLmxvZyh1cGRhdGVkKSB9LFxuICAgKiAgICAgdXBkYXRlVmlkZW9Qcm9kdWNlcjogKHByb2R1Y2VyKSA9PiB7IGNvbnNvbGUubG9nKHVwZGF0ZWQpIH0sXG4gICAqICAgICByZW9yZGVyU3RyZWFtczogKHBhcmFtcykgPT4geyB9LFxuICAgKiAgICAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gKHt9KSxcbiAgICogICB9LFxuICAgKiB9O1xuICAgKlxuICAgKiBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvU2VydmljZS5kaXNjb25uZWN0U2VuZFRyYW5zcG9ydFZpZGVvKG9wdGlvbnMpXG4gICAqICAgLnRoZW4oKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1ZpZGVvIHRyYW5zcG9ydCBkaXNjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAqICAgfSlcbiAgICogICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkaXNjb25uZWN0aW5nIHZpZGVvIHRyYW5zcG9ydDonLCBlcnJvcik7XG4gICAqICAgfSk7XG4gICAqIGBgYFxuICAgKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyB7XG4gIC8qKlxuICAgKiBEaXNjb25uZWN0cyB0aGUgc2VuZCB0cmFuc3BvcnQgZm9yIHZpZGVvLCBjbG9zZXMgdGhlIHZpZGVvIHByb2R1Y2VyLCBhbmQgdXBkYXRlcyB0aGUgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb09wdGlvbnN9IHBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgZGlzY29ubmVjdGluZyB0aGUgc2VuZCB0cmFuc3BvcnQuXG4gICAqIEBwYXJhbSB7UHJvZHVjZXJ9IHBhcmFtZXRlcnMudmlkZW9Qcm9kdWNlciAtIFRoZSB2aWRlbyBwcm9kdWNlciB0byBiZSBjbG9zZWQuXG4gICAqIEBwYXJhbSB7U29ja2V0fSBwYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbWV0ZXJzLmlzbGV2ZWwgLSBUaGUgcGFydGljaXBhbnQncyBsZXZlbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtZXRlcnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBwYXJhbWV0ZXJzLnVwZGF0ZU1haW5XaW5kb3cgLSBGbGFnIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcGFyYW1ldGVycy5sb2NrX3NjcmVlbiAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgc2NyZWVuIGlzIGxvY2tlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy51cGRhdGVVcGRhdGVNYWluV2luZG93IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBtYWluIHdpbmRvdyBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy51cGRhdGVWaWRlb1Byb2R1Y2VyIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aWRlbyBwcm9kdWNlciBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5yZW9yZGVyU3RyZWFtcyAtIEZ1bmN0aW9uIHRvIHJlb3JkZXIgc3RyZWFtcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZGlzY29ubmVjdGlvbiBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gLSBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGRpc2Nvbm5lY3Rpb24gcHJvY2VzcyBmYWlscy5cbiAgICovXG5cbiAgYXN5bmMgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlbyh7XG4gICAgcGFyYW1ldGVycyxcbiAgfTogRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRWaWRlb09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgbGV0IHtcbiAgICAgICAgdmlkZW9Qcm9kdWNlcixcbiAgICAgICAgc29ja2V0LFxuICAgICAgICBpc2xldmVsLFxuICAgICAgICByb29tTmFtZSxcbiAgICAgICAgbG9ja19zY3JlZW4sXG4gICAgICAgIHVwZGF0ZU1haW5XaW5kb3csXG4gICAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3csXG4gICAgICAgIHVwZGF0ZVZpZGVvUHJvZHVjZXIsXG4gICAgICAgIHJlb3JkZXJTdHJlYW1zLFxuICAgICAgfSA9IHBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgICAvLyBDbG9zZSB0aGUgdmlkZW8gcHJvZHVjZXIgYW5kIHVwZGF0ZSB0aGUgc3RhdGVcbiAgICAgIGF3YWl0IHZpZGVvUHJvZHVjZXIuY2xvc2UoKTtcbiAgICAgIHVwZGF0ZVZpZGVvUHJvZHVjZXIobnVsbCk7XG5cbiAgICAgIC8vIE5vdGlmeSB0aGUgc2VydmVyIGFib3V0IHBhdXNpbmcgdmlkZW8gc2hhcmluZ1xuICAgICAgc29ja2V0LmVtaXQoJ3BhdXNlUHJvZHVjZXJNZWRpYScsIHsgbWVkaWFUYWc6ICd2aWRlbycsIHJvb21OYW1lIH0pO1xuXG4gICAgICAvLyBVcGRhdGUgdGhlIFVJIGJhc2VkIG9uIHRoZSBwYXJ0aWNpcGFudCdzIGxldmVsIGFuZCBzY3JlZW4gbG9jayBzdGF0dXNcbiAgICAgIGlmIChpc2xldmVsID09PSAnMicpIHtcbiAgICAgICAgdXBkYXRlTWFpbldpbmRvdyA9IHRydWU7XG4gICAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3codXBkYXRlTWFpbldpbmRvdyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2NrX3NjcmVlbikge1xuICAgICAgICBhd2FpdCByZW9yZGVyU3RyZWFtcyh7IGFkZDogdHJ1ZSwgc2NyZWVuQ2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHJlb3JkZXJTdHJlYW1zKHsgYWRkOiBmYWxzZSwgc2NyZWVuQ2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JzIGR1cmluZyB0aGUgZGlzY29ubmVjdGlvbiBwcm9jZXNzXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgZGlzY29ubmVjdGluZyBzZW5kIHRyYW5zcG9ydCBmb3IgdmlkZW86JywgZXJyb3IubWVzc2FnZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,97 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Function to display streams based on various parameters and conditions.
|
|
5
|
+
*
|
|
6
|
+
* @param {DispStreamsOptions} options - The options object.
|
|
7
|
+
* @param {Array<(Stream | Participant)>} options.lStreams - List of streams to display.
|
|
8
|
+
* @param {number} options.ind - Index of the current stream.
|
|
9
|
+
* @param {boolean} [options.auto=false] - Flag to indicate if the function should run automatically.
|
|
10
|
+
* @param {boolean} [options.ChatSkip=false] - Flag to indicate if chat should be skipped.
|
|
11
|
+
* @param {string|null} [options.forChatID=null] - ID for chat reference.
|
|
12
|
+
* @param {DispStreamsParameters} options.parameters - Parameters object containing various settings and functions.
|
|
13
|
+
* @param {number} [options.breakRoom=-1] - Break room number.
|
|
14
|
+
* @param {boolean} [options.inBreakRoom=false] - Flag to indicate if in break room.
|
|
15
|
+
*
|
|
16
|
+
* @returns {Promise<void>} A promise that resolves when the function completes.
|
|
17
|
+
*
|
|
18
|
+
* @async
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const options = {
|
|
23
|
+
* lStreams: [...], // Your streams data here
|
|
24
|
+
* ind: 0,
|
|
25
|
+
* auto: true,
|
|
26
|
+
* ChatSkip: false,
|
|
27
|
+
* parameters: {
|
|
28
|
+
* consumerTransports: [],
|
|
29
|
+
* streamNames: [],
|
|
30
|
+
* audStreamNames: [],
|
|
31
|
+
* participants: [],
|
|
32
|
+
* ref_participants: [],
|
|
33
|
+
* recordingDisplayType: 'video',
|
|
34
|
+
* recordingVideoOptimized: false,
|
|
35
|
+
* meetingDisplayType: 'video',
|
|
36
|
+
* meetingVideoOptimized: false,
|
|
37
|
+
* currentUserPage: 1,
|
|
38
|
+
* hostLabel: 'Host',
|
|
39
|
+
* mainHeightWidth: 100,
|
|
40
|
+
* prevMainHeightWidth: 100,
|
|
41
|
+
* prevDoPaginate: false,
|
|
42
|
+
* doPaginate: false,
|
|
43
|
+
* firstAll: false,
|
|
44
|
+
* shared: false,
|
|
45
|
+
* shareScreenStarted: false,
|
|
46
|
+
* shareEnded: false,
|
|
47
|
+
* oldAllStreams: [],
|
|
48
|
+
* updateMainWindow: false,
|
|
49
|
+
* remoteProducerId: null,
|
|
50
|
+
* activeNames: [],
|
|
51
|
+
* dispActiveNames: [],
|
|
52
|
+
* p_dispActiveNames: [],
|
|
53
|
+
* nForReadjustRecord: 0,
|
|
54
|
+
* first_round: false,
|
|
55
|
+
* lock_screen: false,
|
|
56
|
+
* chatRefStreams: [],
|
|
57
|
+
* eventType: 'normal',
|
|
58
|
+
* islevel: '1',
|
|
59
|
+
* localStreamVideo: null,
|
|
60
|
+
* breakOutRoomStarted: false,
|
|
61
|
+
* breakOutRoomEnded: false,
|
|
62
|
+
* keepBackground: false,
|
|
63
|
+
* virtualStream: null,
|
|
64
|
+
* updateActiveNames: (names) => {},
|
|
65
|
+
* updateDispActiveNames: (names) => {},
|
|
66
|
+
* updateLStreams: (streams) => {},
|
|
67
|
+
* updateChatRefStreams: (streams) => {},
|
|
68
|
+
* updateNForReadjustRecord: (n) => {},
|
|
69
|
+
* updateUpdateMainWindow: (value) => {},
|
|
70
|
+
* updateShowMiniView: (value) => {},
|
|
71
|
+
* prepopulateUserMedia: async () => {},
|
|
72
|
+
* rePort: async () => {},
|
|
73
|
+
* processConsumerTransports: async () => {},
|
|
74
|
+
* resumePauseStreams: async () => {},
|
|
75
|
+
* readjust: async () => {},
|
|
76
|
+
* addVideosGrid: async () => {},
|
|
77
|
+
* getEstimate: async () => {},
|
|
78
|
+
* checkGrid: async () => {},
|
|
79
|
+
* resumePauseAudioStreams: async () => {},
|
|
80
|
+
* getUpdatedAllParams: () => options.parameters,
|
|
81
|
+
* },
|
|
82
|
+
* breakRoom: -1,
|
|
83
|
+
* inBreakRoom: false,
|
|
84
|
+
* };
|
|
85
|
+
*
|
|
86
|
+
* dispStreamsService.dispStreams(options)
|
|
87
|
+
* .then(() => {
|
|
88
|
+
* console.log('Streams displayed successfully');
|
|
89
|
+
* })
|
|
90
|
+
* .catch((error) => {
|
|
91
|
+
* console.error('Error displaying streams:', error);
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
3
95
|
export class DispStreams {
|
|
4
96
|
/**
|
|
5
97
|
* Function to display streams based on various parameters and conditions.
|
|
@@ -418,4 +510,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
418
510
|
providedIn: 'root',
|
|
419
511
|
}]
|
|
420
512
|
}] });
|
|
421
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcC1zdHJlYW1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2Rpc3Atc3RyZWFtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBa0gzQyxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFDbkIsUUFBUSxFQUNSLEdBQUcsRUFDSCxJQUFJLEdBQUcsS0FBSyxFQUNaLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFNBQVMsR0FBRyxJQUFJLEVBQ2hCLFVBQVUsRUFDVixTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxHQUFHLEtBQUssR0FDQSxFQUFpQixFQUFFO1FBQ3RDLDhCQUE4QjtRQUM5QixJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDekMsVUFBVSxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFFbkMsSUFBSSxFQUNGLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsY0FBYyxFQUNkLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixTQUFTLEVBQ1QsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEVBQ04sa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2QsU0FBUyxFQUNULE9BQU8sRUFD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Q2QsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLE9BQU87Z0JBQ1AsT0FBTztnQkFDUCxVQUFVO2dCQUNWLFdBQVc7Z0JBQ1gsYUFBYTtnQkFDYixVQUFVO2FBQ1gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sb0JBQW9CLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0FuaUJTLFdBQVc7MkdBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdHJlYW0sXG4gIFBhcnRpY2lwYW50LFxuICBUcmFuc3BvcnQsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlLFxuICBSZVBvcnRQYXJhbWV0ZXJzLFxuICBSZVBvcnRUeXBlLFxuICBQcm9jZXNzQ29uc3VtZXJUcmFuc3BvcnRzUGFyYW1ldGVycyxcbiAgUHJvY2Vzc0NvbnN1bWVyVHJhbnNwb3J0c1R5cGUsXG4gIFJlc3VtZVBhdXNlU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFJlc3VtZVBhdXNlU3RyZWFtc1R5cGUsXG4gIFJlYWRqdXN0UGFyYW1ldGVycyxcbiAgUmVhZGp1c3RUeXBlLFxuICBBZGRWaWRlb3NHcmlkVHlwZSxcbiAgQWRkVmlkZW9zR3JpZFBhcmFtZXRlcnMsXG4gIEdldEVzdGltYXRlVHlwZSxcbiAgQ2hlY2tHcmlkVHlwZSxcbiAgUmVzdW1lUGF1c2VBdWRpb1N0cmVhbXNQYXJhbWV0ZXJzLFxuICBSZXN1bWVQYXVzZUF1ZGlvU3RyZWFtc1R5cGUsXG4gIEdldEVzdGltYXRlUGFyYW1ldGVycyxcbiAgRXZlbnRUeXBlLFxufSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BTdHJlYW1zUGFyYW1ldGVyc1xuICBleHRlbmRzIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBSZVBvcnRQYXJhbWV0ZXJzLFxuICAgIFByb2Nlc3NDb25zdW1lclRyYW5zcG9ydHNQYXJhbWV0ZXJzLFxuICAgIFJlc3VtZVBhdXNlU3RyZWFtc1BhcmFtZXRlcnMsXG4gICAgUmVhZGp1c3RQYXJhbWV0ZXJzLFxuICAgIFJlc3VtZVBhdXNlQXVkaW9TdHJlYW1zUGFyYW1ldGVycyxcbiAgICBHZXRFc3RpbWF0ZVBhcmFtZXRlcnMsXG4gICAgQWRkVmlkZW9zR3JpZFBhcmFtZXRlcnMge1xuICBjb25zdW1lclRyYW5zcG9ydHM6IFRyYW5zcG9ydFtdO1xuICBzdHJlYW1OYW1lczogU3RyZWFtW107XG4gIGF1ZFN0cmVhbU5hbWVzOiBTdHJlYW1bXTtcbiAgcGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdO1xuICByZWZfcGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdO1xuICByZWNvcmRpbmdEaXNwbGF5VHlwZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJztcbiAgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQ6IGJvb2xlYW47XG4gIG1lZXRpbmdEaXNwbGF5VHlwZTogc3RyaW5nO1xuICBtZWV0aW5nVmlkZW9PcHRpbWl6ZWQ6IGJvb2xlYW47XG4gIGN1cnJlbnRVc2VyUGFnZTogbnVtYmVyO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgbWFpbkhlaWdodFdpZHRoOiBudW1iZXI7XG4gIHByZXZNYWluSGVpZ2h0V2lkdGg6IG51bWJlcjtcbiAgcHJldkRvUGFnaW5hdGU6IGJvb2xlYW47XG4gIGRvUGFnaW5hdGU6IGJvb2xlYW47XG4gIGZpcnN0QWxsOiBib29sZWFuO1xuICBzaGFyZWQ6IGJvb2xlYW47XG4gIHNoYXJlU2NyZWVuU3RhcnRlZDogYm9vbGVhbjtcbiAgc2hhcmVFbmRlZDogYm9vbGVhbjtcbiAgb2xkQWxsU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICB1cGRhdGVNYWluV2luZG93OiBib29sZWFuO1xuICByZW1vdGVQcm9kdWNlcklkPzogc3RyaW5nO1xuICBhY3RpdmVOYW1lczogc3RyaW5nW107XG4gIGRpc3BBY3RpdmVOYW1lczogc3RyaW5nW107XG4gIHBfZGlzcEFjdGl2ZU5hbWVzOiBzdHJpbmdbXTtcbiAgbkZvclJlYWRqdXN0UmVjb3JkOiBudW1iZXI7XG4gIGZpcnN0X3JvdW5kOiBib29sZWFuO1xuICBsb2NrX3NjcmVlbjogYm9vbGVhbjtcbiAgY2hhdFJlZlN0cmVhbXM6IChTdHJlYW0gfCBQYXJ0aWNpcGFudClbXTtcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgbG9jYWxTdHJlYW1WaWRlbzogTWVkaWFTdHJlYW0gfCBudWxsO1xuXG4gIGJyZWFrT3V0Um9vbVN0YXJ0ZWQ6IGJvb2xlYW47XG4gIGJyZWFrT3V0Um9vbUVuZGVkOiBib29sZWFuO1xuICBrZWVwQmFja2dyb3VuZDogYm9vbGVhbjtcbiAgdmlydHVhbFN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuXG4gIHVwZGF0ZUFjdGl2ZU5hbWVzOiAobmFtZXM6IHN0cmluZ1tdKSA9PiB2b2lkO1xuICB1cGRhdGVEaXNwQWN0aXZlTmFtZXM6IChuYW1lczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZUxTdHJlYW1zOiAoc3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdKSA9PiB2b2lkO1xuICB1cGRhdGVDaGF0UmVmU3RyZWFtczogKHN0cmVhbXM6IChTdHJlYW0gfCBQYXJ0aWNpcGFudClbXSkgPT4gdm9pZDtcbiAgdXBkYXRlTkZvclJlYWRqdXN0UmVjb3JkOiAobjogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVVcGRhdGVNYWluV2luZG93OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVNob3dNaW5pVmlldzogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlO1xuICByZVBvcnQ6IFJlUG9ydFR5cGU7XG4gIHByb2Nlc3NDb25zdW1lclRyYW5zcG9ydHM6IFByb2Nlc3NDb25zdW1lclRyYW5zcG9ydHNUeXBlO1xuICByZXN1bWVQYXVzZVN0cmVhbXM6IFJlc3VtZVBhdXNlU3RyZWFtc1R5cGU7XG4gIHJlYWRqdXN0OiBSZWFkanVzdFR5cGU7XG4gIGFkZFZpZGVvc0dyaWQ6IEFkZFZpZGVvc0dyaWRUeXBlO1xuICBnZXRFc3RpbWF0ZTogR2V0RXN0aW1hdGVUeXBlO1xuICBjaGVja0dyaWQ6IENoZWNrR3JpZFR5cGU7XG4gIHJlc3VtZVBhdXNlQXVkaW9TdHJlYW1zOiBSZXN1bWVQYXVzZUF1ZGlvU3RyZWFtc1R5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gRGlzcFN0cmVhbXNQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcFN0cmVhbXNPcHRpb25zIHtcbiAgbFN0cmVhbXM6IChTdHJlYW0gfCBQYXJ0aWNpcGFudClbXTtcbiAgaW5kOiBudW1iZXI7XG4gIGF1dG8/OiBib29sZWFuO1xuICBDaGF0U2tpcD86IGJvb2xlYW47XG4gIGZvckNoYXRDYXJkPzogYW55O1xuICBmb3JDaGF0SUQ/OiBhbnk7XG4gIHBhcmFtZXRlcnM6IERpc3BTdHJlYW1zUGFyYW1ldGVycztcbiAgYnJlYWtSb29tPzogbnVtYmVyO1xuICBpbkJyZWFrUm9vbT86IGJvb2xlYW47XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIERpc3BTdHJlYW1zVHlwZSA9IChvcHRpb25zOiBEaXNwU3RyZWFtc09wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEaXNwU3RyZWFtcyB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBkaXNwbGF5IHN0cmVhbXMgYmFzZWQgb24gdmFyaW91cyBwYXJhbWV0ZXJzIGFuZCBjb25kaXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gb3B0aW9ucy5sU3RyZWFtcyAtIExpc3Qgb2Ygc3RyZWFtcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMuaW5kIC0gSW5kZXggb2YgdGhlIGN1cnJlbnQgc3RyZWFtLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmF1dG89ZmFsc2VdIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgZnVuY3Rpb24gc2hvdWxkIHJ1biBhdXRvbWF0aWNhbGx5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLkNoYXRTa2lwPWZhbHNlXSAtIEZsYWcgdG8gaW5kaWNhdGUgaWYgY2hhdCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gW29wdGlvbnMuZm9yQ2hhdElEPW51bGxdIC0gSUQgZm9yIGNoYXQgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBvYmplY3QgY29udGFpbmluZyB2YXJpb3VzIHNldHRpbmdzIGFuZCBmdW5jdGlvbnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5icmVha1Jvb209LTFdIC0gQnJlYWsgcm9vbSBudW1iZXIuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaW5CcmVha1Jvb209ZmFsc2VdIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiBpbiBicmVhayByb29tLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiBjb21wbGV0ZXMuXG4gICAqXG4gICAqIEBhc3luY1xuICAgKi9cbiAgZGlzcFN0cmVhbXMgPSBhc3luYyAoe1xuICAgIGxTdHJlYW1zLFxuICAgIGluZCxcbiAgICBhdXRvID0gZmFsc2UsXG4gICAgQ2hhdFNraXAgPSBmYWxzZSxcbiAgICBmb3JDaGF0SUQgPSBudWxsLFxuICAgIHBhcmFtZXRlcnMsXG4gICAgYnJlYWtSb29tID0gLTEsXG4gICAgaW5CcmVha1Jvb20gPSBmYWxzZSxcbiAgfTogRGlzcFN0cmVhbXNPcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLy8gZnVuY3Rpb24gdG8gZGlzcGxheSBzdHJlYW1zXG4gICAgbGV0IHsgZ2V0VXBkYXRlZEFsbFBhcmFtcyB9ID0gcGFyYW1ldGVycztcbiAgICBwYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgbGV0IHtcbiAgICAgIGNvbnN1bWVyVHJhbnNwb3J0cyxcbiAgICAgIHN0cmVhbU5hbWVzLFxuICAgICAgYXVkU3RyZWFtTmFtZXMsXG4gICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICByZWZfcGFydGljaXBhbnRzLFxuICAgICAgcmVjb3JkaW5nRGlzcGxheVR5cGUsXG4gICAgICByZWNvcmRpbmdWaWRlb09wdGltaXplZCxcbiAgICAgIG1lZXRpbmdEaXNwbGF5VHlwZSxcbiAgICAgIG1lZXRpbmdWaWRlb09wdGltaXplZCxcbiAgICAgIGN1cnJlbnRVc2VyUGFnZSxcbiAgICAgIGhvc3RMYWJlbCxcbiAgICAgIG1haW5IZWlnaHRXaWR0aCxcbiAgICAgIHByZXZNYWluSGVpZ2h0V2lkdGgsXG4gICAgICBwcmV2RG9QYWdpbmF0ZSxcbiAgICAgIGRvUGFnaW5hdGUsXG4gICAgICBmaXJzdEFsbCxcbiAgICAgIHNoYXJlZCxcbiAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICAgIHNoYXJlRW5kZWQsXG4gICAgICBvbGRBbGxTdHJlYW1zLFxuICAgICAgdXBkYXRlTWFpbldpbmRvdyxcbiAgICAgIHJlbW90ZVByb2R1Y2VySWQsXG4gICAgICBhY3RpdmVOYW1lcyxcbiAgICAgIGRpc3BBY3RpdmVOYW1lcyxcbiAgICAgIHBfZGlzcEFjdGl2ZU5hbWVzLFxuICAgICAgbkZvclJlYWRqdXN0UmVjb3JkLFxuICAgICAgZmlyc3Rfcm91bmQsXG4gICAgICBsb2NrX3NjcmVlbixcbiAgICAgIGNoYXRSZWZTdHJlYW1zLFxuICAgICAgZXZlbnRUeXBlLFxuICAgICAgaXNsZXZlbCxcbiAgICAgIGxvY2FsU3RyZWFtVmlkZW8sXG5cbiAgICAgIGJyZWFrT3V0Um9vbVN0YXJ0ZWQsXG4gICAgICBicmVha091dFJvb21FbmRlZCxcbiAgICAgIGtlZXBCYWNrZ3JvdW5kLFxuICAgICAgdmlydHVhbFN0cmVhbSxcblxuICAgICAgdXBkYXRlQWN0aXZlTmFtZXMsXG4gICAgICB1cGRhdGVEaXNwQWN0aXZlTmFtZXMsXG4gICAgICB1cGRhdGVMU3RyZWFtcyxcbiAgICAgIHVwZGF0ZUNoYXRSZWZTdHJlYW1zLFxuICAgICAgdXBkYXRlTkZvclJlYWRqdXN0UmVjb3JkLFxuICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyxcbiAgICAgIHVwZGF0ZVNob3dNaW5pVmlldyxcblxuICAgICAgcHJlcG9wdWxhdGVVc2VyTWVkaWEsXG4gICAgICByZVBvcnQsXG4gICAgICBwcm9jZXNzQ29uc3VtZXJUcmFuc3BvcnRzLFxuICAgICAgcmVzdW1lUGF1c2VTdHJlYW1zLFxuICAgICAgcmVhZGp1c3QsXG4gICAgICBhZGRWaWRlb3NHcmlkLFxuICAgICAgY2hlY2tHcmlkLFxuICAgICAgZ2V0RXN0aW1hdGUsXG4gICAgICByZXN1bWVQYXVzZUF1ZGlvU3RyZWFtcyxcbiAgICB9ID0gcGFyYW1ldGVycztcblxuICAgIGxldCBwcm9jZWVkID0gdHJ1ZTtcblxuICAgIGxldCBsU3RyZWFtc18gPSBsU3RyZWFtcy5maWx0ZXIoXG4gICAgICAoc3RyZWFtKSA9PiBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJ3lvdXlvdScgJiYgc3RyZWFtLnByb2R1Y2VySWQgIT09ICd5b3V5b3V5b3UnLFxuICAgICk7XG4gICAgbFN0cmVhbXNfID0gbFN0cmVhbXNfLmZpbHRlcihcbiAgICAgIChzdHJlYW0pID0+XG4gICAgICAgIHN0cmVhbS5pZCAhPT0gJ3lvdXlvdScgJiZcbiAgICAgICAgc3RyZWFtLmlkICE9PSAneW91eW91eW91JyAmJlxuICAgICAgICBzdHJlYW0ubmFtZSAhPT0gJ3lvdXlvdScgJiZcbiAgICAgICAgc3RyZWFtLm5hbWUgIT09ICd5b3V5b3V5b3UnLFxuICAgICk7XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAnY2hhdCcpIHtcbiAgICAgIHByb2NlZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoaW5kID09PSAwIHx8IChpc2xldmVsICE9PSAnMicgJiYgY3VycmVudFVzZXJQYWdlID09PSBpbmQpKSB7XG4gICAgICBwcm9jZWVkID0gZmFsc2U7XG5cbiAgICAgIGxTdHJlYW1zXy5mb3JFYWNoKChzdHJlYW0pID0+IHtcbiAgICAgICAgbGV0IGNoZWNrZXIgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNoZWNrX2xldmVsID0gMDtcblxuICAgICAgICBpZiAocmVjb3JkaW5nRGlzcGxheVR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICBpZiAocmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgICBjaGVja19sZXZlbCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnKSB8fFxuICAgICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPT0gJycpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY2hlY2tlciA9IHRydWU7XG4gICAgICAgICAgICAgIGNoZWNrX2xldmVsID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkaW5nRGlzcGxheVR5cGUgPT09ICdtZWRpYScpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hlY2tlciA9IHRydWU7XG4gICAgICAgICAgICBjaGVja19sZXZlbCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnKSB8fFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPT0gJycpIHx8XG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ25hbWUnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ubmFtZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ubmFtZSAhPSAnJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgY2hlY2tfbGV2ZWwgPSAyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJ0aWNpcGFudDtcblxuICAgICAgICBpZiAoY2hlY2tlcikge1xuICAgICAgICAgIGlmIChjaGVja19sZXZlbCA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSBzdHJlYW1OYW1lcy5maW5kKChvYmo6IGFueSkgPT4gb2JqLnByb2R1Y2VySWQgPT09IHN0cmVhbS5wcm9kdWNlcklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrX2xldmVsID09PSAxKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBwYXJ0aWNpcGFudCA9IHN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLnByb2R1Y2VySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPT0gJydcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSBhdWRTdHJlYW1OYW1lcy5maW5kKChvYmo6IGFueSkgPT4gb2JqLnByb2R1Y2VySWQgPT09IHN0cmVhbS5hdWRpb0lEKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudCA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai5hdWRpb0lEID09PSBzdHJlYW0uYXVkaW9JRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGVja19sZXZlbCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSBzdHJlYW1OYW1lcy5maW5kKChvYmo6IGFueSkgPT4gb2JqLnByb2R1Y2VySWQgPT09IHN0cmVhbS5wcm9kdWNlcklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gYXVkU3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0uYXVkaW9JRCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSByZWZfcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmouYXVkaW9JRCA9PT0gc3RyZWFtLmF1ZGlvSUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ25hbWUnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5uYW1lICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT0gJydcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSByZWZfcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmoubmFtZSA9PT0gc3RyZWFtLm5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICBpZiAocGFydGljaXBhbnQubmFtZSAmJiAhYWN0aXZlTmFtZXMuaW5jbHVkZXMocGFydGljaXBhbnQubmFtZSkpIHtcbiAgICAgICAgICAgICAgYWN0aXZlTmFtZXMucHVzaChwYXJ0aWNpcGFudC5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB1cGRhdGVBY3RpdmVOYW1lcyhhY3RpdmVOYW1lcyk7XG5cbiAgICAgIGxTdHJlYW1zXy5mb3JFYWNoKChzdHJlYW0pID0+IHtcbiAgICAgICAgbGV0IGRpc3BfY2hlY2tlciA9IGZhbHNlO1xuICAgICAgICBsZXQgZGlzcF9jaGVja19sZXZlbCA9IDA7XG5cbiAgICAgICAgaWYgKG1lZXRpbmdEaXNwbGF5VHlwZSA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgIGlmIChtZWV0aW5nVmlkZW9PcHRpbWl6ZWQpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGRpc3BfY2hlY2tlciA9IHRydWU7XG4gICAgICAgICAgICAgIGRpc3BfY2hlY2tfbGV2ZWwgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGRpc3BfY2hlY2tlciA9IHRydWU7XG4gICAgICAgICAgICAgIGRpc3BfY2hlY2tfbGV2ZWwgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChtZWV0aW5nRGlzcGxheVR5cGUgPT09ICdtZWRpYScpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZGlzcF9jaGVja2VyID0gdHJ1ZTtcbiAgICAgICAgICAgIGRpc3BfY2hlY2tfbGV2ZWwgPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKSB8fFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICduYW1lJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT0gJycpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBkaXNwX2NoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgZGlzcF9jaGVja19sZXZlbCA9IDI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhcnRpY2lwYW50XztcblxuICAgICAgICBpZiAoZGlzcF9jaGVja2VyKSB7XG4gICAgICAgICAgaWYgKGRpc3BfY2hlY2tfbGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLnByb2R1Y2VySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZGlzcF9jaGVja19sZXZlbCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcGFydGljaXBhbnRfID0gc3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0ucHJvZHVjZXJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhcnRpY2lwYW50Xykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPT0gJydcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnRfID0gYXVkU3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0uYXVkaW9JRCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudF8pIHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKG9iajogYW55KSA9PiBvYmouYXVkaW9JRCA9PT0gc3RyZWFtLmF1ZGlvSUQsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZGlzcF9jaGVja19sZXZlbCA9PT0gMikge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcGFydGljaXBhbnRfID0gc3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0ucHJvZHVjZXJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhcnRpY2lwYW50Xykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPT0gJydcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnRfID0gYXVkU3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0uYXVkaW9JRCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudF8pIHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKG9iajogYW55KSA9PiBvYmouYXVkaW9JRCA9PT0gc3RyZWFtLmF1ZGlvSUQsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudF8pIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICduYW1lJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0ubmFtZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5uYW1lICE9ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHJlZl9wYXJ0aWNpcGFudHMuZmluZCgob2JqOiBhbnkpID0+IG9iai5uYW1lID09PSBzdHJlYW0ubmFtZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICBpZiAocGFydGljaXBhbnRfLm5hbWUgJiYgIWRpc3BBY3RpdmVOYW1lcy5pbmNsdWRlcyhwYXJ0aWNpcGFudF8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgZGlzcEFjdGl2ZU5hbWVzLnB1c2gocGFydGljaXBhbnRfLm5hbWUpO1xuICAgICAgICAgICAgICBpZiAoIXBfZGlzcEFjdGl2ZU5hbWVzLmluY2x1ZGVzKHBhcnRpY2lwYW50Xy5uYW1lKSkge1xuICAgICAgICAgICAgICAgIHByb2NlZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlRGlzcEFjdGl2ZU5hbWVzKGRpc3BBY3RpdmVOYW1lcyk7XG5cbiAgICAgIGlmIChsU3RyZWFtc18ubGVuZ3RoIDwgMSkge1xuICAgICAgICBpZiAoc2hhcmVTY3JlZW5TdGFydGVkIHx8IHNoYXJlZCkge1xuICAgICAgICAgIHByb2NlZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCFmaXJzdEFsbCkge1xuICAgICAgICAgIHByb2NlZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSB7XG4gICAgICAgIC8vIHNjcmVlbiBzaGFyZSBzdGFydGVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJldk1haW5IZWlnaHRXaWR0aCAhPT0gbWFpbkhlaWdodFdpZHRoKSB7XG4gICAgICAgICAgdXBkYXRlTWFpbldpbmRvdyA9IHRydWU7XG4gICAgICAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdyh1cGRhdGVNYWluV2luZG93KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuRm9yUmVhZGp1c3RSZWNvcmQgPSBhY3RpdmVOYW1lcy5sZW5ndGg7XG4gICAgICB1cGRhdGVORm9yUmVhZGp1c3RSZWNvcmQobkZvclJlYWRqdXN0UmVjb3JkKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb2NlZWQgJiYgYXV0bykge1xuICAgICAgaWYgKHVwZGF0ZU1haW5XaW5kb3cpIHtcbiAgICAgICAgaWYgKCFsb2NrX3NjcmVlbiAmJiAhc2hhcmVkKSB7XG4gICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFmaXJzdF9yb3VuZCkge1xuICAgICAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmQgPT09IDAgJiYgZXZlbnRUeXBlICE9PSAnY2hhdCcpIHtcbiAgICAgICAgYXdhaXQgcmVQb3J0KHsgcGFyYW1ldGVycyB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAnYnJvYWRjYXN0Jykge1xuICAgICAgbFN0cmVhbXMgPSBsU3RyZWFtc187XG4gICAgICB1cGRhdGVMU3RyZWFtcyhsU3RyZWFtcyk7XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjaGF0Jykge1xuICAgICAgaWYgKGZvckNoYXRJRCAhPSBudWxsKSB7XG4gICAgICAgIGxTdHJlYW1zID0gY2hhdFJlZlN0cmVhbXM7XG4gICAgICAgIHVwZGF0ZUxTdHJlYW1zKGxTdHJlYW1zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZVNob3dNaW5pVmlldyhmYWxzZSk7XG5cbiAgICAgICAgaWYgKGlzbGV2ZWwgIT09ICcyJykge1xuICAgICAgICAgIGxldCBob3N0ID0gcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmouaXNsZXZlbCA9PT0gJzInKTtcbiAgICAgICAgICBpZiAoaG9zdCkge1xuICAgICAgICAgICAgbGV0IHN0cmVhbWU7XG4gICAgICAgICAgICByZW1vdGVQcm9kdWNlcklkID0gaG9zdC52aWRlb0lEO1xuICAgICAgICAgICAgaWYgKGlzbGV2ZWwgPT09ICcyJykge1xuICAgICAgICAgICAgICBob3N0WydzdHJlYW0nXSA9IGtlZXBCYWNrZ3JvdW5kICYmIHZpcnR1YWxTdHJlYW0gPyB2aXJ0dWFsU3RyZWFtIDogbG9jYWxTdHJlYW1WaWRlbztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0cmVhbWUgPSBvbGRBbGxTdHJlYW1zLmZpbmQoXG4gICAgICAgICAgICAgICAgKHN0cmVhbWU6IGFueSkgPT4gc3RyZWFtZS5wcm9kdWNlcklkID09PSByZW1vdGVQcm9kdWNlcklkLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoc3RyZWFtZSkge1xuICAgICAgICAgICAgICAgIGxTdHJlYW1zID0gbFN0cmVhbXMuZmlsdGVyKChzdHJlYW0pID0+IHN0cmVhbS5uYW1lICE9PSBob3N0Lm5hbWUpO1xuICAgICAgICAgICAgICAgIGxTdHJlYW1zLnB1c2goc3RyZWFtZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgeW91eW91ID0gbFN0cmVhbXMuZmluZChcbiAgICAgICAgICAob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSAneW91eW91JyB8fCBvYmoucHJvZHVjZXJJZCA9PT0gJ3lvdXlvdXlvdScsXG4gICAgICAgICk7XG4gICAgICAgIGxTdHJlYW1zID0gbFN0cmVhbXMuZmlsdGVyKFxuICAgICAgICAgIChzdHJlYW0pID0+IHN0cmVhbS5wcm9kdWNlcklkICE9PSAneW91eW91JyAmJiBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJ3lvdXlvdXlvdScsXG4gICAgICAgICk7XG4gICAgICAgIGlmICh5b3V5b3UpIHtcbiAgICAgICAgICBsU3RyZWFtcy5wdXNoKHlvdXlvdSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaGF0UmVmU3RyZWFtcyA9IGxTdHJlYW1zO1xuICAgICAgICB1cGRhdGVMU3RyZWFtcyhsU3RyZWFtcyk7XG4gICAgICAgIHVwZGF0ZUNoYXRSZWZTdHJlYW1zKGNoYXRSZWZTdHJlYW1zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVmTGVuZ3RoID0gbFN0cmVhbXMubGVuZ3RoO1xuXG4gICAgY29uc3QgWywgcm93cywgY29sc10gPSBnZXRFc3RpbWF0ZSh7IG46IHJlZkxlbmd0aCwgcGFyYW1ldGVycyB9KTtcbiAgICBsZXQgcmVzdWx0ID0gKGF3YWl0IGNoZWNrR3JpZCh7IHJvd3MsIGNvbHMsIGFjdGl2ZXM6IHJlZkxlbmd0aCB9KSkgfHwgW2ZhbHNlLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgICBsZXQgW3JlbW92ZUFsdEdyaWQsIG51bXRvYWRkZCwgbnVtUm93cywgbnVtQ29scywgLCBhY3R1YWxSb3dzLCBsYXN0cm93Y29sc10gPSByZXN1bHQ7XG5cbiAgICBpZiAoQ2hhdFNraXAgJiYgZXZlbnRUeXBlID09ICdjaGF0Jykge1xuICAgICAgbnVtUm93cyA9IDE7XG4gICAgICBudW1Db2xzID0gMTtcbiAgICAgIGFjdHVhbFJvd3MgPSAxO1xuICAgIH1cblxuICAgIC8vaWYgcmVtb3ZlQWx0R3JpZCBpcyB0cnVlIHRoZW4gcmVtb3ZlIGV2ZXJ5dGluZyBmcm9tIGFsdEdyaWQgYW5kIGFkZCB0byBtYWluR3JpZCxjaGVjayBmb3Igc3RyZWFtcyBvbiBhbHZpZGVvU3RyZWFtcyBhbmQgYWRkIHRvIG1haW5HcmlkIHRoYXQgYXJlIG5vdCBvbiBtYWluR3JpZCBhbmQgYWRkIHN3aXRjaGluZyB0byB0cnVlXG5cbiAgICBhd2FpdCByZWFkanVzdCh7IG46IGxTdHJlYW1zLmxlbmd0aCwgc3RhdGU6IGluZCwgcGFyYW1ldGVycyB9KTtcblxuICAgIC8vIHNwbGl0IHRoZSBzdHJlYW1zIGludG8gdHdvIGFycmF5cywgb25lIGZvciBtYWluR3JpZCBhbmQgb25lIGZvciBhbHRHcmlkXG4gICAgLy8gdGFrZSB1cCB0byBudW10b2FkZCBmcm9tIHRoZSBsU3RyZWFtcyBhbmQgYWRkIHRvIG1haW5HcmlkU3RyZWFtc1xuICAgIGxldCBtYWluR3JpZFN0cmVhbXMgPSBsU3RyZWFtcy5zbGljZSgwLCBudW10b2FkZGQpO1xuICAgIC8vIHRha2UgdGhlIHJlc3Qgb2YgdGhlIHN0cmVhbXMgYW5kIGFkZCB0byBhbHRHcmlkU3RyZWFtc1xuICAgIGxldCBhbHRHcmlkU3RyZWFtcyA9IGxTdHJlYW1zLnNsaWNlKG51bXRvYWRkZCwgbFN0cmVhbXMubGVuZ3RoKTtcbiAgICAvL2FkZCB0byBncmlkc1xuXG4gICAgaWYgKFxuICAgICAgZG9QYWdpbmF0ZSA9PSB0cnVlIHx8XG4gICAgICBwcmV2RG9QYWdpbmF0ZSAhPSBkb1BhZ2luYXRlIHx8XG4gICAgICBzaGFyZWQgfHxcbiAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCB8fFxuICAgICAgc2hhcmVFbmRlZFxuICAgICkge1xuICAgICAgbGV0IGxTdHJlYW1zX2FsdCA9IGxTdHJlYW1zXztcbiAgICAgIGF3YWl0IHByb2Nlc3NDb25zdW1lclRyYW5zcG9ydHMoeyBjb25zdW1lclRyYW5zcG9ydHMsIGxTdHJlYW1zXzogbFN0cmVhbXNfYWx0LCBwYXJhbWV0ZXJzIH0pO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoYnJlYWtPdXRSb29tU3RhcnRlZCAmJiAhYnJlYWtPdXRSb29tRW5kZWQpIHtcbiAgICAgICAgICBhd2FpdCByZXN1bWVQYXVzZUF1ZGlvU3RyZWFtcyh7IGluQnJlYWtSb29tLCBicmVha1Jvb20sIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdFcnJvciBpbiByZXN1bWVQYXVzZUF1ZGlvU3RyZWFtczonLCBlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghYnJlYWtPdXRSb29tU3RhcnRlZCB8fCAoYnJlYWtPdXRSb29tU3RhcnRlZCAmJiBicmVha091dFJvb21FbmRlZCkpIHtcbiAgICAgICAgICBhd2FpdCByZXN1bWVQYXVzZVN0cmVhbXMoeyBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICB9XG5cbiAgICAgIGlmIChzaGFyZUVuZGVkKSB7XG4gICAgICAgIHNoYXJlRW5kZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoQ2hhdFNraXAgJiYgZXZlbnRUeXBlID09ICdjaGF0Jykge1xuICAgICAgYXdhaXQgYWRkVmlkZW9zR3JpZCh7XG4gICAgICAgIG1haW5HcmlkU3RyZWFtcyxcbiAgICAgICAgYWx0R3JpZFN0cmVhbXMsXG4gICAgICAgIG51bXRvYWRkOiBudW10b2FkZGQgLSAxLFxuICAgICAgICBudW1Sb3dzLFxuICAgICAgICBudW1Db2xzLFxuICAgICAgICBhY3R1YWxSb3dzLFxuICAgICAgICBsYXN0cm93Y29scyxcbiAgICAgICAgcmVtb3ZlQWx0R3JpZCxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBhZGRWaWRlb3NHcmlkKHtcbiAgICAgICAgbWFpbkdyaWRTdHJlYW1zLFxuICAgICAgICBhbHRHcmlkU3RyZWFtcyxcbiAgICAgICAgbnVtdG9hZGQ6IG51bXRvYWRkZCxcbiAgICAgICAgbnVtUm93cyxcbiAgICAgICAgbnVtQ29scyxcbiAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgbGFzdHJvd2NvbHMsXG4gICAgICAgIHJlbW92ZUFsdEdyaWQsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlTWFpbldpbmRvdykge1xuICAgICAgaWYgKCFsb2NrX3NjcmVlbiAmJiAhc2hhcmVkKSB7XG4gICAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFmaXJzdF9yb3VuZCkge1xuICAgICAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZCA9PSAwICYmIGV2ZW50VHlwZSAhPT0gJ2NoYXQnKSB7XG4gICAgICBhd2FpdCByZVBvcnQoeyBwYXJhbWV0ZXJzIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
513
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcC1zdHJlYW1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2Rpc3Atc3RyZWFtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBK0d6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJGRztBQUtMLE1BQU0sT0FBTyxXQUFXO0lBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUNuQixRQUFRLEVBQ1IsR0FBRyxFQUNILElBQUksR0FBRyxLQUFLLEVBQ1osUUFBUSxHQUFHLEtBQUssRUFDaEIsU0FBUyxHQUFHLElBQUksRUFDaEIsVUFBVSxFQUNWLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFDZCxXQUFXLEdBQUcsS0FBSyxHQUNBLEVBQWlCLEVBQUU7UUFDdEMsOEJBQThCO1FBQzlCLElBQUksRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUN6QyxVQUFVLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUVuQyxJQUFJLEVBQ0Ysa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxjQUFjLEVBQ2QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLFNBQVMsRUFDVCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdC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QUNYLGFBQWE7Z0JBQ2IsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxhQUFhLENBQUM7Z0JBQ2xCLGVBQWU7Z0JBQ2YsY0FBYztnQkFDZCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsT0FBTztnQkFDUCxPQUFPO2dCQUNQLFVBQVU7Z0JBQ1YsV0FBVztnQkFDWCxhQUFhO2dCQUNiLFVBQVU7YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxvQkFBb0IsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNqQixNQUFNLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLE1BQU0sTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO3VHQW5pQlMsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFN0cmVhbSxcbiAgUGFydGljaXBhbnQsXG4gIFRyYW5zcG9ydCxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFQYXJhbWV0ZXJzLFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGUsXG4gIFJlUG9ydFBhcmFtZXRlcnMsXG4gIFJlUG9ydFR5cGUsXG4gIFByb2Nlc3NDb25zdW1lclRyYW5zcG9ydHNQYXJhbWV0ZXJzLFxuICBQcm9jZXNzQ29uc3VtZXJUcmFuc3BvcnRzVHlwZSxcbiAgUmVzdW1lUGF1c2VTdHJlYW1zUGFyYW1ldGVycyxcbiAgUmVzdW1lUGF1c2VTdHJlYW1zVHlwZSxcbiAgUmVhZGp1c3RQYXJhbWV0ZXJzLFxuICBSZWFkanVzdFR5cGUsXG4gIEFkZFZpZGVvc0dyaWRUeXBlLFxuICBBZGRWaWRlb3NHcmlkUGFyYW1ldGVycyxcbiAgR2V0RXN0aW1hdGVUeXBlLFxuICBDaGVja0dyaWRUeXBlLFxuICBSZXN1bWVQYXVzZUF1ZGlvU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFJlc3VtZVBhdXNlQXVkaW9TdHJlYW1zVHlwZSxcbiAgR2V0RXN0aW1hdGVQYXJhbWV0ZXJzLFxuICBFdmVudFR5cGUsXG59IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzcFN0cmVhbXNQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgUHJlcG9wdWxhdGVVc2VyTWVkaWFQYXJhbWV0ZXJzLFxuICAgIFJlUG9ydFBhcmFtZXRlcnMsXG4gICAgUHJvY2Vzc0NvbnN1bWVyVHJhbnNwb3J0c1BhcmFtZXRlcnMsXG4gICAgUmVzdW1lUGF1c2VTdHJlYW1zUGFyYW1ldGVycyxcbiAgICBSZWFkanVzdFBhcmFtZXRlcnMsXG4gICAgUmVzdW1lUGF1c2VBdWRpb1N0cmVhbXNQYXJhbWV0ZXJzLFxuICAgIEdldEVzdGltYXRlUGFyYW1ldGVycyxcbiAgICBBZGRWaWRlb3NHcmlkUGFyYW1ldGVycyB7XG4gIGNvbnN1bWVyVHJhbnNwb3J0czogVHJhbnNwb3J0W107XG4gIHN0cmVhbU5hbWVzOiBTdHJlYW1bXTtcbiAgYXVkU3RyZWFtTmFtZXM6IFN0cmVhbVtdO1xuICBwYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIHJlZl9wYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIHJlY29yZGluZ0Rpc3BsYXlUeXBlOiAndmlkZW8nIHwgJ21lZGlhJyB8ICdhbGwnO1xuICByZWNvcmRpbmdWaWRlb09wdGltaXplZDogYm9vbGVhbjtcbiAgbWVldGluZ0Rpc3BsYXlUeXBlOiBzdHJpbmc7XG4gIG1lZXRpbmdWaWRlb09wdGltaXplZDogYm9vbGVhbjtcbiAgY3VycmVudFVzZXJQYWdlOiBudW1iZXI7XG4gIGhvc3RMYWJlbDogc3RyaW5nO1xuICBtYWluSGVpZ2h0V2lkdGg6IG51bWJlcjtcbiAgcHJldk1haW5IZWlnaHRXaWR0aDogbnVtYmVyO1xuICBwcmV2RG9QYWdpbmF0ZTogYm9vbGVhbjtcbiAgZG9QYWdpbmF0ZTogYm9vbGVhbjtcbiAgZmlyc3RBbGw6IGJvb2xlYW47XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgc2hhcmVTY3JlZW5TdGFydGVkOiBib29sZWFuO1xuICBzaGFyZUVuZGVkOiBib29sZWFuO1xuICBvbGRBbGxTdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW107XG4gIHVwZGF0ZU1haW5XaW5kb3c6IGJvb2xlYW47XG4gIHJlbW90ZVByb2R1Y2VySWQ/OiBzdHJpbmc7XG4gIGFjdGl2ZU5hbWVzOiBzdHJpbmdbXTtcbiAgZGlzcEFjdGl2ZU5hbWVzOiBzdHJpbmdbXTtcbiAgcF9kaXNwQWN0aXZlTmFtZXM6IHN0cmluZ1tdO1xuICBuRm9yUmVhZGp1c3RSZWNvcmQ6IG51bWJlcjtcbiAgZmlyc3Rfcm91bmQ6IGJvb2xlYW47XG4gIGxvY2tfc2NyZWVuOiBib29sZWFuO1xuICBjaGF0UmVmU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBldmVudFR5cGU6IEV2ZW50VHlwZTtcbiAgaXNsZXZlbDogc3RyaW5nO1xuICBsb2NhbFN0cmVhbVZpZGVvOiBNZWRpYVN0cmVhbSB8IG51bGw7XG5cbiAgYnJlYWtPdXRSb29tU3RhcnRlZDogYm9vbGVhbjtcbiAgYnJlYWtPdXRSb29tRW5kZWQ6IGJvb2xlYW47XG4gIGtlZXBCYWNrZ3JvdW5kOiBib29sZWFuO1xuICB2aXJ0dWFsU3RyZWFtOiBNZWRpYVN0cmVhbSB8IG51bGw7XG5cbiAgdXBkYXRlQWN0aXZlTmFtZXM6IChuYW1lczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZURpc3BBY3RpdmVOYW1lczogKG5hbWVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgdXBkYXRlTFN0cmVhbXM6IChzdHJlYW1zOiAoU3RyZWFtIHwgUGFydGljaXBhbnQpW10pID0+IHZvaWQ7XG4gIHVwZGF0ZUNoYXRSZWZTdHJlYW1zOiAoc3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdKSA9PiB2b2lkO1xuICB1cGRhdGVORm9yUmVhZGp1c3RSZWNvcmQ6IChuOiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlU2hvd01pbmlWaWV3OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHByZXBvcHVsYXRlVXNlck1lZGlhOiBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGU7XG4gIHJlUG9ydDogUmVQb3J0VHlwZTtcbiAgcHJvY2Vzc0NvbnN1bWVyVHJhbnNwb3J0czogUHJvY2Vzc0NvbnN1bWVyVHJhbnNwb3J0c1R5cGU7XG4gIHJlc3VtZVBhdXNlU3RyZWFtczogUmVzdW1lUGF1c2VTdHJlYW1zVHlwZTtcbiAgcmVhZGp1c3Q6IFJlYWRqdXN0VHlwZTtcbiAgYWRkVmlkZW9zR3JpZDogQWRkVmlkZW9zR3JpZFR5cGU7XG4gIGdldEVzdGltYXRlOiBHZXRFc3RpbWF0ZVR5cGU7XG4gIGNoZWNrR3JpZDogQ2hlY2tHcmlkVHlwZTtcbiAgcmVzdW1lUGF1c2VBdWRpb1N0cmVhbXM6IFJlc3VtZVBhdXNlQXVkaW9TdHJlYW1zVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBEaXNwU3RyZWFtc1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNwU3RyZWFtc09wdGlvbnMge1xuICBsU3RyZWFtczogKFN0cmVhbSB8IFBhcnRpY2lwYW50KVtdO1xuICBpbmQ6IG51bWJlcjtcbiAgYXV0bz86IGJvb2xlYW47XG4gIENoYXRTa2lwPzogYm9vbGVhbjtcbiAgZm9yQ2hhdENhcmQ/OiBhbnk7XG4gIGZvckNoYXRJRD86IGFueTtcbiAgcGFyYW1ldGVyczogRGlzcFN0cmVhbXNQYXJhbWV0ZXJzO1xuICBicmVha1Jvb20/OiBudW1iZXI7XG4gIGluQnJlYWtSb29tPzogYm9vbGVhbjtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgRGlzcFN0cmVhbXNUeXBlID0gKG9wdGlvbnM6IERpc3BTdHJlYW1zT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZGlzcGxheSBzdHJlYW1zIGJhc2VkIG9uIHZhcmlvdXMgcGFyYW1ldGVycyBhbmQgY29uZGl0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtEaXNwU3RyZWFtc09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7QXJyYXk8KFN0cmVhbSB8IFBhcnRpY2lwYW50KT59IG9wdGlvbnMubFN0cmVhbXMgLSBMaXN0IG9mIHN0cmVhbXMgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMuaW5kIC0gSW5kZXggb2YgdGhlIGN1cnJlbnQgc3RyZWFtLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmF1dG89ZmFsc2VdIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiB0aGUgZnVuY3Rpb24gc2hvdWxkIHJ1biBhdXRvbWF0aWNhbGx5LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLkNoYXRTa2lwPWZhbHNlXSAtIEZsYWcgdG8gaW5kaWNhdGUgaWYgY2hhdCBzaG91bGQgYmUgc2tpcHBlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gW29wdGlvbnMuZm9yQ2hhdElEPW51bGxdIC0gSUQgZm9yIGNoYXQgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0ge0Rpc3BTdHJlYW1zUGFyYW1ldGVyc30gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gUGFyYW1ldGVycyBvYmplY3QgY29udGFpbmluZyB2YXJpb3VzIHNldHRpbmdzIGFuZCBmdW5jdGlvbnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5icmVha1Jvb209LTFdIC0gQnJlYWsgcm9vbSBudW1iZXIuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuaW5CcmVha1Jvb209ZmFsc2VdIC0gRmxhZyB0byBpbmRpY2F0ZSBpZiBpbiBicmVhayByb29tLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gY29tcGxldGVzLlxuICAgKlxuICAgKiBAYXN5bmNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIGxTdHJlYW1zOiBbLi4uXSwgLy8gWW91ciBzdHJlYW1zIGRhdGEgaGVyZVxuICAgKiAgIGluZDogMCxcbiAgICogICBhdXRvOiB0cnVlLFxuICAgKiAgIENoYXRTa2lwOiBmYWxzZSxcbiAgICogICBwYXJhbWV0ZXJzOiB7XG4gICAqICAgICBjb25zdW1lclRyYW5zcG9ydHM6IFtdLFxuICAgKiAgICAgc3RyZWFtTmFtZXM6IFtdLFxuICAgKiAgICAgYXVkU3RyZWFtTmFtZXM6IFtdLFxuICAgKiAgICAgcGFydGljaXBhbnRzOiBbXSxcbiAgICogICAgIHJlZl9wYXJ0aWNpcGFudHM6IFtdLFxuICAgKiAgICAgcmVjb3JkaW5nRGlzcGxheVR5cGU6ICd2aWRlbycsXG4gICAqICAgICByZWNvcmRpbmdWaWRlb09wdGltaXplZDogZmFsc2UsXG4gICAqICAgICBtZWV0aW5nRGlzcGxheVR5cGU6ICd2aWRlbycsXG4gICAqICAgICBtZWV0aW5nVmlkZW9PcHRpbWl6ZWQ6IGZhbHNlLFxuICAgKiAgICAgY3VycmVudFVzZXJQYWdlOiAxLFxuICAgKiAgICAgaG9zdExhYmVsOiAnSG9zdCcsXG4gICAqICAgICBtYWluSGVpZ2h0V2lkdGg6IDEwMCxcbiAgICogICAgIHByZXZNYWluSGVpZ2h0V2lkdGg6IDEwMCxcbiAgICogICAgIHByZXZEb1BhZ2luYXRlOiBmYWxzZSxcbiAgICogICAgIGRvUGFnaW5hdGU6IGZhbHNlLFxuICAgKiAgICAgZmlyc3RBbGw6IGZhbHNlLFxuICAgKiAgICAgc2hhcmVkOiBmYWxzZSxcbiAgICogICAgIHNoYXJlU2NyZWVuU3RhcnRlZDogZmFsc2UsXG4gICAqICAgICBzaGFyZUVuZGVkOiBmYWxzZSxcbiAgICogICAgIG9sZEFsbFN0cmVhbXM6IFtdLFxuICAgKiAgICAgdXBkYXRlTWFpbldpbmRvdzogZmFsc2UsXG4gICAqICAgICByZW1vdGVQcm9kdWNlcklkOiBudWxsLFxuICAgKiAgICAgYWN0aXZlTmFtZXM6IFtdLFxuICAgKiAgICAgZGlzcEFjdGl2ZU5hbWVzOiBbXSxcbiAgICogICAgIHBfZGlzcEFjdGl2ZU5hbWVzOiBbXSxcbiAgICogICAgIG5Gb3JSZWFkanVzdFJlY29yZDogMCxcbiAgICogICAgIGZpcnN0X3JvdW5kOiBmYWxzZSxcbiAgICogICAgIGxvY2tfc2NyZWVuOiBmYWxzZSxcbiAgICogICAgIGNoYXRSZWZTdHJlYW1zOiBbXSxcbiAgICogICAgIGV2ZW50VHlwZTogJ25vcm1hbCcsXG4gICAqICAgICBpc2xldmVsOiAnMScsXG4gICAqICAgICBsb2NhbFN0cmVhbVZpZGVvOiBudWxsLFxuICAgKiAgICAgYnJlYWtPdXRSb29tU3RhcnRlZDogZmFsc2UsXG4gICAqICAgICBicmVha091dFJvb21FbmRlZDogZmFsc2UsXG4gICAqICAgICBrZWVwQmFja2dyb3VuZDogZmFsc2UsXG4gICAqICAgICB2aXJ0dWFsU3RyZWFtOiBudWxsLFxuICAgKiAgICAgdXBkYXRlQWN0aXZlTmFtZXM6IChuYW1lcykgPT4ge30sXG4gICAqICAgICB1cGRhdGVEaXNwQWN0aXZlTmFtZXM6IChuYW1lcykgPT4ge30sXG4gICAqICAgICB1cGRhdGVMU3RyZWFtczogKHN0cmVhbXMpID0+IHt9LFxuICAgKiAgICAgdXBkYXRlQ2hhdFJlZlN0cmVhbXM6IChzdHJlYW1zKSA9PiB7fSxcbiAgICogICAgIHVwZGF0ZU5Gb3JSZWFkanVzdFJlY29yZDogKG4pID0+IHt9LFxuICAgKiAgICAgdXBkYXRlVXBkYXRlTWFpbldpbmRvdzogKHZhbHVlKSA9PiB7fSxcbiAgICogICAgIHVwZGF0ZVNob3dNaW5pVmlldzogKHZhbHVlKSA9PiB7fSxcbiAgICogICAgIHByZXBvcHVsYXRlVXNlck1lZGlhOiBhc3luYyAoKSA9PiB7fSxcbiAgICogICAgIHJlUG9ydDogYXN5bmMgKCkgPT4ge30sXG4gICAqICAgICBwcm9jZXNzQ29uc3VtZXJUcmFuc3BvcnRzOiBhc3luYyAoKSA9PiB7fSxcbiAgICogICAgIHJlc3VtZVBhdXNlU3RyZWFtczogYXN5bmMgKCkgPT4ge30sXG4gICAqICAgICByZWFkanVzdDogYXN5bmMgKCkgPT4ge30sXG4gICAqICAgICBhZGRWaWRlb3NHcmlkOiBhc3luYyAoKSA9PiB7fSxcbiAgICogICAgIGdldEVzdGltYXRlOiBhc3luYyAoKSA9PiB7fSxcbiAgICogICAgIGNoZWNrR3JpZDogYXN5bmMgKCkgPT4ge30sXG4gICAqICAgICByZXN1bWVQYXVzZUF1ZGlvU3RyZWFtczogYXN5bmMgKCkgPT4ge30sXG4gICAqICAgICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBvcHRpb25zLnBhcmFtZXRlcnMsXG4gICAqICAgfSxcbiAgICogICBicmVha1Jvb206IC0xLFxuICAgKiAgIGluQnJlYWtSb29tOiBmYWxzZSxcbiAgICogfTtcbiAgICpcbiAgICogZGlzcFN0cmVhbXNTZXJ2aWNlLmRpc3BTdHJlYW1zKG9wdGlvbnMpXG4gICAqICAgLnRoZW4oKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1N0cmVhbXMgZGlzcGxheWVkIHN1Y2Nlc3NmdWxseScpO1xuICAgKiAgIH0pXG4gICAqICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgKiAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGlzcGxheWluZyBzdHJlYW1zOicsIGVycm9yKTtcbiAgICogICB9KTtcbiAgICogYGBgXG4gICAqL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGlzcFN0cmVhbXMge1xuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZGlzcGxheSBzdHJlYW1zIGJhc2VkIG9uIHZhcmlvdXMgcGFyYW1ldGVycyBhbmQgY29uZGl0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbnMubFN0cmVhbXMgLSBMaXN0IG9mIHN0cmVhbXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLmluZCAtIEluZGV4IG9mIHRoZSBjdXJyZW50IHN0cmVhbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5hdXRvPWZhbHNlXSAtIEZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIGZ1bmN0aW9uIHNob3VsZCBydW4gYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5DaGF0U2tpcD1mYWxzZV0gLSBGbGFnIHRvIGluZGljYXRlIGlmIGNoYXQgc2hvdWxkIGJlIHNraXBwZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfG51bGx9IFtvcHRpb25zLmZvckNoYXRJRD1udWxsXSAtIElEIGZvciBjaGF0IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFBhcmFtZXRlcnMgb2JqZWN0IGNvbnRhaW5pbmcgdmFyaW91cyBzZXR0aW5ncyBhbmQgZnVuY3Rpb25zLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuYnJlYWtSb29tPS0xXSAtIEJyZWFrIHJvb20gbnVtYmVyLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmluQnJlYWtSb29tPWZhbHNlXSAtIEZsYWcgdG8gaW5kaWNhdGUgaWYgaW4gYnJlYWsgcm9vbS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZnVuY3Rpb24gY29tcGxldGVzLlxuICAgKlxuICAgKiBAYXN5bmNcbiAgICovXG4gIGRpc3BTdHJlYW1zID0gYXN5bmMgKHtcbiAgICBsU3RyZWFtcyxcbiAgICBpbmQsXG4gICAgYXV0byA9IGZhbHNlLFxuICAgIENoYXRTa2lwID0gZmFsc2UsXG4gICAgZm9yQ2hhdElEID0gbnVsbCxcbiAgICBwYXJhbWV0ZXJzLFxuICAgIGJyZWFrUm9vbSA9IC0xLFxuICAgIGluQnJlYWtSb29tID0gZmFsc2UsXG4gIH06IERpc3BTdHJlYW1zT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8vIGZ1bmN0aW9uIHRvIGRpc3BsYXkgc3RyZWFtc1xuICAgIGxldCB7IGdldFVwZGF0ZWRBbGxQYXJhbXMgfSA9IHBhcmFtZXRlcnM7XG4gICAgcGFyYW1ldGVycyA9IGdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgIGxldCB7XG4gICAgICBjb25zdW1lclRyYW5zcG9ydHMsXG4gICAgICBzdHJlYW1OYW1lcyxcbiAgICAgIGF1ZFN0cmVhbU5hbWVzLFxuICAgICAgcGFydGljaXBhbnRzLFxuICAgICAgcmVmX3BhcnRpY2lwYW50cyxcbiAgICAgIHJlY29yZGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgcmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQsXG4gICAgICBtZWV0aW5nRGlzcGxheVR5cGUsXG4gICAgICBtZWV0aW5nVmlkZW9PcHRpbWl6ZWQsXG4gICAgICBjdXJyZW50VXNlclBhZ2UsXG4gICAgICBob3N0TGFiZWwsXG4gICAgICBtYWluSGVpZ2h0V2lkdGgsXG4gICAgICBwcmV2TWFpbkhlaWdodFdpZHRoLFxuICAgICAgcHJldkRvUGFnaW5hdGUsXG4gICAgICBkb1BhZ2luYXRlLFxuICAgICAgZmlyc3RBbGwsXG4gICAgICBzaGFyZWQsXG4gICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQsXG4gICAgICBzaGFyZUVuZGVkLFxuICAgICAgb2xkQWxsU3RyZWFtcyxcbiAgICAgIHVwZGF0ZU1haW5XaW5kb3csXG4gICAgICByZW1vdGVQcm9kdWNlcklkLFxuICAgICAgYWN0aXZlTmFtZXMsXG4gICAgICBkaXNwQWN0aXZlTmFtZXMsXG4gICAgICBwX2Rpc3BBY3RpdmVOYW1lcyxcbiAgICAgIG5Gb3JSZWFkanVzdFJlY29yZCxcbiAgICAgIGZpcnN0X3JvdW5kLFxuICAgICAgbG9ja19zY3JlZW4sXG4gICAgICBjaGF0UmVmU3RyZWFtcyxcbiAgICAgIGV2ZW50VHlwZSxcbiAgICAgIGlzbGV2ZWwsXG4gICAgICBsb2NhbFN0cmVhbVZpZGVvLFxuXG4gICAgICBicmVha091dFJvb21TdGFydGVkLFxuICAgICAgYnJlYWtPdXRSb29tRW5kZWQsXG4gICAgICBrZWVwQmFja2dyb3VuZCxcbiAgICAgIHZpcnR1YWxTdHJlYW0sXG5cbiAgICAgIHVwZGF0ZUFjdGl2ZU5hbWVzLFxuICAgICAgdXBkYXRlRGlzcEFjdGl2ZU5hbWVzLFxuICAgICAgdXBkYXRlTFN0cmVhbXMsXG4gICAgICB1cGRhdGVDaGF0UmVmU3RyZWFtcyxcbiAgICAgIHVwZGF0ZU5Gb3JSZWFkanVzdFJlY29yZCxcbiAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3csXG4gICAgICB1cGRhdGVTaG93TWluaVZpZXcsXG5cbiAgICAgIHByZXBvcHVsYXRlVXNlck1lZGlhLFxuICAgICAgcmVQb3J0LFxuICAgICAgcHJvY2Vzc0NvbnN1bWVyVHJhbnNwb3J0cyxcbiAgICAgIHJlc3VtZVBhdXNlU3RyZWFtcyxcbiAgICAgIHJlYWRqdXN0LFxuICAgICAgYWRkVmlkZW9zR3JpZCxcbiAgICAgIGNoZWNrR3JpZCxcbiAgICAgIGdldEVzdGltYXRlLFxuICAgICAgcmVzdW1lUGF1c2VBdWRpb1N0cmVhbXMsXG4gICAgfSA9IHBhcmFtZXRlcnM7XG5cbiAgICBsZXQgcHJvY2VlZCA9IHRydWU7XG5cbiAgICBsZXQgbFN0cmVhbXNfID0gbFN0cmVhbXMuZmlsdGVyKFxuICAgICAgKHN0cmVhbSkgPT4gc3RyZWFtLnByb2R1Y2VySWQgIT09ICd5b3V5b3UnICYmIHN0cmVhbS5wcm9kdWNlcklkICE9PSAneW91eW91eW91JyxcbiAgICApO1xuICAgIGxTdHJlYW1zXyA9IGxTdHJlYW1zXy5maWx0ZXIoXG4gICAgICAoc3RyZWFtKSA9PlxuICAgICAgICBzdHJlYW0uaWQgIT09ICd5b3V5b3UnICYmXG4gICAgICAgIHN0cmVhbS5pZCAhPT0gJ3lvdXlvdXlvdScgJiZcbiAgICAgICAgc3RyZWFtLm5hbWUgIT09ICd5b3V5b3UnICYmXG4gICAgICAgIHN0cmVhbS5uYW1lICE9PSAneW91eW91eW91JyxcbiAgICApO1xuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2NoYXQnKSB7XG4gICAgICBwcm9jZWVkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGluZCA9PT0gMCB8fCAoaXNsZXZlbCAhPT0gJzInICYmIGN1cnJlbnRVc2VyUGFnZSA9PT0gaW5kKSkge1xuICAgICAgcHJvY2VlZCA9IGZhbHNlO1xuXG4gICAgICBsU3RyZWFtc18uZm9yRWFjaCgoc3RyZWFtKSA9PiB7XG4gICAgICAgIGxldCBjaGVja2VyID0gZmFsc2U7XG4gICAgICAgIGxldCBjaGVja19sZXZlbCA9IDA7XG5cbiAgICAgICAgaWYgKHJlY29yZGluZ0Rpc3BsYXlUeXBlID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgaWYgKHJlY29yZGluZ1ZpZGVvT3B0aW1pemVkKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjaGVja2VyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY2hlY2tfbGV2ZWwgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgICBjaGVja19sZXZlbCA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZGluZ0Rpc3BsYXlUeXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJycpIHx8XG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9PSAnJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgY2hlY2tfbGV2ZWwgPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJykgfHxcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnKSB8fFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICduYW1lJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT0gJycpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGVja2VyID0gdHJ1ZTtcbiAgICAgICAgICAgIGNoZWNrX2xldmVsID0gMjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFydGljaXBhbnQ7XG5cbiAgICAgICAgaWYgKGNoZWNrZXIpIHtcbiAgICAgICAgICBpZiAoY2hlY2tfbGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gc3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0ucHJvZHVjZXJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChjaGVja19sZXZlbCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAncHJvZHVjZXJJZCcpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT09ICcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSBzdHJlYW1OYW1lcy5maW5kKChvYmo6IGFueSkgPT4gb2JqLnByb2R1Y2VySWQgPT09IHN0cmVhbS5wcm9kdWNlcklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gYXVkU3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0uYXVkaW9JRCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnQgPSByZWZfcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmouYXVkaW9JRCA9PT0gc3RyZWFtLmF1ZGlvSUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tfbGV2ZWwgPT09IDIpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gc3RyZWFtTmFtZXMuZmluZCgob2JqOiBhbnkpID0+IG9iai5wcm9kdWNlcklkID09PSBzdHJlYW0ucHJvZHVjZXJJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9PSAnJ1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudCA9IGF1ZFN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLmF1ZGlvSUQpO1xuICAgICAgICAgICAgICAgIGlmICghcGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gcmVmX3BhcnRpY2lwYW50cy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmF1ZGlvSUQgPT09IHN0cmVhbS5hdWRpb0lEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICduYW1lJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0ubmFtZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5uYW1lICE9ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50ID0gcmVmX3BhcnRpY2lwYW50cy5maW5kKChvYmo6IGFueSkgPT4gb2JqLm5hbWUgPT09IHN0cmVhbS5uYW1lKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50Lm5hbWUgJiYgIWFjdGl2ZU5hbWVzLmluY2x1ZGVzKHBhcnRpY2lwYW50Lm5hbWUpKSB7XG4gICAgICAgICAgICAgIGFjdGl2ZU5hbWVzLnB1c2gocGFydGljaXBhbnQubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdXBkYXRlQWN0aXZlTmFtZXMoYWN0aXZlTmFtZXMpO1xuXG4gICAgICBsU3RyZWFtc18uZm9yRWFjaCgoc3RyZWFtKSA9PiB7XG4gICAgICAgIGxldCBkaXNwX2NoZWNrZXIgPSBmYWxzZTtcbiAgICAgICAgbGV0IGRpc3BfY2hlY2tfbGV2ZWwgPSAwO1xuXG4gICAgICAgIGlmIChtZWV0aW5nRGlzcGxheVR5cGUgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICBpZiAobWVldGluZ1ZpZGVvT3B0aW1pemVkKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBkaXNwX2NoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgICBkaXNwX2NoZWNrX2xldmVsID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJycpIHx8XG4gICAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnYXVkaW9JRCcpICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9PSAnJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBkaXNwX2NoZWNrZXIgPSB0cnVlO1xuICAgICAgICAgICAgICBkaXNwX2NoZWNrX2xldmVsID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobWVldGluZ0Rpc3BsYXlUeXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJycpIHx8XG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9PSAnJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGRpc3BfY2hlY2tlciA9IHRydWU7XG4gICAgICAgICAgICBkaXNwX2NoZWNrX2xldmVsID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJycpIHx8XG4gICAgICAgICAgICAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ2F1ZGlvSUQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5hdWRpb0lEICE9PSAnJykgfHxcbiAgICAgICAgICAgIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnbmFtZScpICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5uYW1lICE9PSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5uYW1lICE9ICcnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZGlzcF9jaGVja2VyID0gdHJ1ZTtcbiAgICAgICAgICAgIGRpc3BfY2hlY2tfbGV2ZWwgPSAyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJ0aWNpcGFudF87XG5cbiAgICAgICAgaWYgKGRpc3BfY2hlY2tlcikge1xuICAgICAgICAgIGlmIChkaXNwX2NoZWNrX2xldmVsID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdwcm9kdWNlcklkJykgJiZcbiAgICAgICAgICAgICAgc3RyZWFtLnByb2R1Y2VySWQgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBwYXJ0aWNpcGFudF8gPSBzdHJlYW1OYW1lcy5maW5kKChvYmo6IGFueSkgPT4gb2JqLnByb2R1Y2VySWQgPT09IHN0cmVhbS5wcm9kdWNlcklkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BfY2hlY2tfbGV2ZWwgPT09IDEpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLnByb2R1Y2VySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudF8pIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IGF1ZFN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLmF1ZGlvSUQpO1xuICAgICAgICAgICAgICAgIGlmICghcGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudF8gPSByZWZfcGFydGljaXBhbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChvYmo6IGFueSkgPT4gb2JqLmF1ZGlvSUQgPT09IHN0cmVhbS5hdWRpb0lELFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGRpc3BfY2hlY2tfbGV2ZWwgPT09IDIpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0cmVhbSwgJ3Byb2R1Y2VySWQnKSAmJlxuICAgICAgICAgICAgICBzdHJlYW0ucHJvZHVjZXJJZCAhPSBudWxsICYmXG4gICAgICAgICAgICAgIHN0cmVhbS5wcm9kdWNlcklkICE9PSAnJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IHN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLnByb2R1Y2VySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJ0aWNpcGFudF8pIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHJlYW0sICdhdWRpb0lEJykgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0uYXVkaW9JRCAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLmF1ZGlvSUQgIT09ICcnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50XyA9IGF1ZFN0cmVhbU5hbWVzLmZpbmQoKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gc3RyZWFtLmF1ZGlvSUQpO1xuICAgICAgICAgICAgICAgIGlmICghcGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudF8gPSByZWZfcGFydGljaXBhbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChvYmo6IGFueSkgPT4gb2JqLmF1ZGlvSUQgPT09IHN0cmVhbS5hdWRpb0lELFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFydGljaXBhbnRfKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3RyZWFtLCAnbmFtZScpICYmXG4gICAgICAgICAgICAgICAgc3RyZWFtLm5hbWUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBzdHJlYW0ubmFtZSAhPSAnJ1xuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudF8gPSByZWZfcGFydGljaXBhbnRzLmZpbmQoKG9iajogYW55KSA9PiBvYmoubmFtZSA9PT0gc3RyZWFtLm5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhcnRpY2lwYW50Xykge1xuICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50Xy5uYW1lICYmICFkaXNwQWN0aXZlTmFtZXMuaW5jbHVkZXMocGFydGljaXBhbnRfLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGRpc3BBY3RpdmVOYW1lcy5wdXNoKHBhcnRpY2lwYW50Xy5uYW1lKTtcbiAgICAgICAgICAgICAgaWYgKCFwX2Rpc3BBY3RpdmVOYW1lcy5pbmNsdWRlcyhwYXJ0aWNpcGFudF8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICBwcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHVwZGF0ZURpc3BBY3RpdmVOYW1lcyhkaXNwQWN0aXZlTmFtZXMpO1xuXG4gICAgICBpZiAobFN0cmVhbXNfLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgaWYgKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpIHtcbiAgICAgICAgICBwcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICghZmlyc3RBbGwpIHtcbiAgICAgICAgICBwcm9jZWVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hhcmVTY3JlZW5TdGFydGVkIHx8IHNoYXJlZCkge1xuICAgICAgICAvLyBzY3JlZW4gc2hhcmUgc3RhcnRlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByZXZNYWluSGVpZ2h0V2lkdGggIT09IG1haW5IZWlnaHRXaWR0aCkge1xuICAgICAgICAgIHVwZGF0ZU1haW5XaW5kb3cgPSB0cnVlO1xuICAgICAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3codXBkYXRlTWFpbldpbmRvdyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbkZvclJlYWRqdXN0UmVjb3JkID0gYWN0aXZlTmFtZXMubGVuZ3RoO1xuICAgICAgdXBkYXRlTkZvclJlYWRqdXN0UmVjb3JkKG5Gb3JSZWFkanVzdFJlY29yZCk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9jZWVkICYmIGF1dG8pIHtcbiAgICAgIGlmICh1cGRhdGVNYWluV2luZG93KSB7XG4gICAgICAgIGlmICghbG9ja19zY3JlZW4gJiYgIXNoYXJlZCkge1xuICAgICAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghZmlyc3Rfcm91bmQpIHtcbiAgICAgICAgICAgIGF3YWl0IHByZXBvcHVsYXRlVXNlck1lZGlhKHsgbmFtZTogaG9zdExhYmVsLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5kID09PSAwICYmIGV2ZW50VHlwZSAhPT0gJ2NoYXQnKSB7XG4gICAgICAgIGF3YWl0IHJlUG9ydCh7IHBhcmFtZXRlcnMgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50VHlwZSA9PT0gJ2Jyb2FkY2FzdCcpIHtcbiAgICAgIGxTdHJlYW1zID0gbFN0cmVhbXNfO1xuICAgICAgdXBkYXRlTFN0cmVhbXMobFN0cmVhbXMpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY2hhdCcpIHtcbiAgICAgIGlmIChmb3JDaGF0SUQgIT0gbnVsbCkge1xuICAgICAgICBsU3RyZWFtcyA9IGNoYXRSZWZTdHJlYW1zO1xuICAgICAgICB1cGRhdGVMU3RyZWFtcyhsU3RyZWFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGVTaG93TWluaVZpZXcoZmFsc2UpO1xuXG4gICAgICAgIGlmIChpc2xldmVsICE9PSAnMicpIHtcbiAgICAgICAgICBsZXQgaG9zdCA9IHBhcnRpY2lwYW50cy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmlzbGV2ZWwgPT09ICcyJyk7XG4gICAgICAgICAgaWYgKGhvc3QpIHtcbiAgICAgICAgICAgIGxldCBzdHJlYW1lO1xuICAgICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCA9IGhvc3QudmlkZW9JRDtcbiAgICAgICAgICAgIGlmIChpc2xldmVsID09PSAnMicpIHtcbiAgICAgICAgICAgICAgaG9zdFsnc3RyZWFtJ10gPSBrZWVwQmFja2dyb3VuZCAmJiB2aXJ0dWFsU3RyZWFtID8gdmlydHVhbFN0cmVhbSA6IGxvY2FsU3RyZWFtVmlkZW87XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzdHJlYW1lID0gb2xkQWxsU3RyZWFtcy5maW5kKFxuICAgICAgICAgICAgICAgIChzdHJlYW1lOiBhbnkpID0+IHN0cmVhbWUucHJvZHVjZXJJZCA9PT0gcmVtb3RlUHJvZHVjZXJJZCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKHN0cmVhbWUpIHtcbiAgICAgICAgICAgICAgICBsU3RyZWFtcyA9IGxTdHJlYW1zLmZpbHRlcigoc3RyZWFtKSA9PiBzdHJlYW0ubmFtZSAhPT0gaG9zdC5uYW1lKTtcbiAgICAgICAgICAgICAgICBsU3RyZWFtcy5wdXNoKHN0cmVhbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHlvdXlvdSA9IGxTdHJlYW1zLmZpbmQoXG4gICAgICAgICAgKG9iajogYW55KSA9PiBvYmoucHJvZHVjZXJJZCA9PT0gJ3lvdXlvdScgfHwgb2JqLnByb2R1Y2VySWQgPT09ICd5b3V5b3V5b3UnLFxuICAgICAgICApO1xuICAgICAgICBsU3RyZWFtcyA9IGxTdHJlYW1zLmZpbHRlcihcbiAgICAgICAgICAoc3RyZWFtKSA9PiBzdHJlYW0ucHJvZHVjZXJJZCAhPT0gJ3lvdXlvdScgJiYgc3RyZWFtLnByb2R1Y2VySWQgIT09ICd5b3V5b3V5b3UnLFxuICAgICAgICApO1xuICAgICAgICBpZiAoeW91eW91KSB7XG4gICAgICAgICAgbFN0cmVhbXMucHVzaCh5b3V5b3UpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hhdFJlZlN0cmVhbXMgPSBsU3RyZWFtcztcbiAgICAgICAgdXBkYXRlTFN0cmVhbXMobFN0cmVhbXMpO1xuICAgICAgICB1cGRhdGVDaGF0UmVmU3RyZWFtcyhjaGF0UmVmU3RyZWFtcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlZkxlbmd0aCA9IGxTdHJlYW1zLmxlbmd0aDtcblxuICAgIGNvbnN0IFssIHJvd3MsIGNvbHNdID0gZ2V0RXN0aW1hdGUoeyBuOiByZWZMZW5ndGgsIHBhcmFtZXRlcnMgfSk7XG4gICAgbGV0IHJlc3VsdCA9IChhd2FpdCBjaGVja0dyaWQoeyByb3dzLCBjb2xzLCBhY3RpdmVzOiByZWZMZW5ndGggfSkpIHx8IFtmYWxzZSwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgbGV0IFtyZW1vdmVBbHRHcmlkLCBudW10b2FkZGQsIG51bVJvd3MsIG51bUNvbHMsICwgYWN0dWFsUm93cywgbGFzdHJvd2NvbHNdID0gcmVzdWx0O1xuXG4gICAgaWYgKENoYXRTa2lwICYmIGV2ZW50VHlwZSA9PSAnY2hhdCcpIHtcbiAgICAgIG51bVJvd3MgPSAxO1xuICAgICAgbnVtQ29scyA9IDE7XG4gICAgICBhY3R1YWxSb3dzID0gMTtcbiAgICB9XG5cbiAgICAvL2lmIHJlbW92ZUFsdEdyaWQgaXMgdHJ1ZSB0aGVuIHJlbW92ZSBldmVyeXRpbmcgZnJvbSBhbHRHcmlkIGFuZCBhZGQgdG8gbWFpbkdyaWQsY2hlY2sgZm9yIHN0cmVhbXMgb24gYWx2aWRlb1N0cmVhbXMgYW5kIGFkZCB0byBtYWluR3JpZCB0aGF0IGFyZSBub3Qgb24gbWFpbkdyaWQgYW5kIGFkZCBzd2l0Y2hpbmcgdG8gdHJ1ZVxuXG4gICAgYXdhaXQgcmVhZGp1c3QoeyBuOiBsU3RyZWFtcy5sZW5ndGgsIHN0YXRlOiBpbmQsIHBhcmFtZXRlcnMgfSk7XG5cbiAgICAvLyBzcGxpdCB0aGUgc3RyZWFtcyBpbnRvIHR3byBhcnJheXMsIG9uZSBmb3IgbWFpbkdyaWQgYW5kIG9uZSBmb3IgYWx0R3JpZFxuICAgIC8vIHRha2UgdXAgdG8gbnVtdG9hZGQgZnJvbSB0aGUgbFN0cmVhbXMgYW5kIGFkZCB0byBtYWluR3JpZFN0cmVhbXNcbiAgICBsZXQgbWFpbkdyaWRTdHJlYW1zID0gbFN0cmVhbXMuc2xpY2UoMCwgbnVtdG9hZGRkKTtcbiAgICAvLyB0YWtlIHRoZSByZXN0IG9mIHRoZSBzdHJlYW1zIGFuZCBhZGQgdG8gYWx0R3JpZFN0cmVhbXNcbiAgICBsZXQgYWx0R3JpZFN0cmVhbXMgPSBsU3RyZWFtcy5zbGljZShudW10b2FkZGQsIGxTdHJlYW1zLmxlbmd0aCk7XG4gICAgLy9hZGQgdG8gZ3JpZHNcblxuICAgIGlmIChcbiAgICAgIGRvUGFnaW5hdGUgPT0gdHJ1ZSB8fFxuICAgICAgcHJldkRvUGFnaW5hdGUgIT0gZG9QYWdpbmF0ZSB8fFxuICAgICAgc2hhcmVkIHx8XG4gICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQgfHxcbiAgICAgIHNoYXJlRW5kZWRcbiAgICApIHtcbiAgICAgIGxldCBsU3RyZWFtc19hbHQgPSBsU3RyZWFtc187XG4gICAgICBhd2FpdCBwcm9jZXNzQ29uc3VtZXJUcmFuc3BvcnRzKHsgY29uc3VtZXJUcmFuc3BvcnRzLCBsU3RyZWFtc186IGxTdHJlYW1zX2FsdCwgcGFyYW1ldGVycyB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGJyZWFrT3V0Um9vbVN0YXJ0ZWQgJiYgIWJyZWFrT3V0Um9vbUVuZGVkKSB7XG4gICAgICAgICAgYXdhaXQgcmVzdW1lUGF1c2VBdWRpb1N0cmVhbXMoeyBpbkJyZWFrUm9vbSwgYnJlYWtSb29tLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnRXJyb3IgaW4gcmVzdW1lUGF1c2VBdWRpb1N0cmVhbXM6JywgZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWJyZWFrT3V0Um9vbVN0YXJ0ZWQgfHwgKGJyZWFrT3V0Um9vbVN0YXJ0ZWQgJiYgYnJlYWtPdXRSb29tRW5kZWQpKSB7XG4gICAgICAgICAgYXdhaXQgcmVzdW1lUGF1c2VTdHJlYW1zKHsgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hhcmVFbmRlZCkge1xuICAgICAgICBzaGFyZUVuZGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKENoYXRTa2lwICYmIGV2ZW50VHlwZSA9PSAnY2hhdCcpIHtcbiAgICAgIGF3YWl0IGFkZFZpZGVvc0dyaWQoe1xuICAgICAgICBtYWluR3JpZFN0cmVhbXMsXG4gICAgICAgIGFsdEdyaWRTdHJlYW1zLFxuICAgICAgICBudW10b2FkZDogbnVtdG9hZGRkIC0gMSxcbiAgICAgICAgbnVtUm93cyxcbiAgICAgICAgbnVtQ29scyxcbiAgICAgICAgYWN0dWFsUm93cyxcbiAgICAgICAgbGFzdHJvd2NvbHMsXG4gICAgICAgIHJlbW92ZUFsdEdyaWQsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgYWRkVmlkZW9zR3JpZCh7XG4gICAgICAgIG1haW5HcmlkU3RyZWFtcyxcbiAgICAgICAgYWx0R3JpZFN0cmVhbXMsXG4gICAgICAgIG51bXRvYWRkOiBudW10b2FkZGQsXG4gICAgICAgIG51bVJvd3MsXG4gICAgICAgIG51bUNvbHMsXG4gICAgICAgIGFjdHVhbFJvd3MsXG4gICAgICAgIGxhc3Ryb3djb2xzLFxuICAgICAgICByZW1vdmVBbHRHcmlkLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZU1haW5XaW5kb3cpIHtcbiAgICAgIGlmICghbG9ja19zY3JlZW4gJiYgIXNoYXJlZCkge1xuICAgICAgICBhd2FpdCBwcmVwb3B1bGF0ZVVzZXJNZWRpYSh7IG5hbWU6IGhvc3RMYWJlbCwgcGFyYW1ldGVycyB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghZmlyc3Rfcm91bmQpIHtcbiAgICAgICAgICBhd2FpdCBwcmVwb3B1bGF0ZVVzZXJNZWRpYSh7IG5hbWU6IGhvc3RMYWJlbCwgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbmQgPT0gMCAmJiBldmVudFR5cGUgIT09ICdjaGF0Jykge1xuICAgICAgYXdhaXQgcmVQb3J0KHsgcGFyYW1ldGVycyB9KTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Generates the content for a specific page.
|
|
5
|
+
*
|
|
6
|
+
* @param {GeneratePageContentOptions} options - The options for generating page content.
|
|
7
|
+
* @param {number | string} options.page - The page number to generate content for.
|
|
8
|
+
* @param {GeneratePageContentParameters} options.parameters - The parameters required for generating content.
|
|
9
|
+
* @param {Array<(Participant | Stream)[]>} options.parameters.paginatedStreams - The streams to be paginated.
|
|
10
|
+
* @param {number} options.parameters.currentUserPage - The current page of the user.
|
|
11
|
+
* @param {Function} options.parameters.updateMainWindow - Function to update the main window flag.
|
|
12
|
+
* @param {Function} options.parameters.updateCurrentUserPage - Function to update the current user page.
|
|
13
|
+
* @param {Function} options.parameters.updateUpdateMainWindow - Function to update the main window update flag.
|
|
14
|
+
* @param {Function} options.parameters.dispStreams - Function to display streams for the specified page.
|
|
15
|
+
* @param {number} [options.breakRoom=-1] - The break room identifier.
|
|
16
|
+
* @param {boolean} [options.inBreakRoom=false] - Flag indicating if the user is in a break room.
|
|
17
|
+
*
|
|
18
|
+
* @returns {Promise<void>} A promise that resolves when the content generation is complete.
|
|
19
|
+
*
|
|
20
|
+
* @throws {Error} Throws an error if content generation fails.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const options = {
|
|
25
|
+
* page: 1,
|
|
26
|
+
* parameters: {
|
|
27
|
+
* paginatedStreams: [
|
|
28
|
+
* // Page 0 streams
|
|
29
|
+
* [stream1, stream2],
|
|
30
|
+
* // Page 1 streams
|
|
31
|
+
* [stream3, stream4],
|
|
32
|
+
* ],
|
|
33
|
+
* currentUserPage: 0,
|
|
34
|
+
* updateMainWindow: false,
|
|
35
|
+
* updateCurrentUserPage: (page) => { console.log(`Current page updated to: ${page}`); },
|
|
36
|
+
* updateUpdateMainWindow: (flag) => { console.log(`Main window update flag: ${flag}`); },
|
|
37
|
+
* dispStreams: async ({ lStreams, ind }) => {
|
|
38
|
+
* console.log(`Displaying streams for page ${ind}:`, lStreams);
|
|
39
|
+
* },
|
|
40
|
+
* getUpdatedAllParams: () => options.parameters,
|
|
41
|
+
* },
|
|
42
|
+
* breakRoom: -1,
|
|
43
|
+
* inBreakRoom: false,
|
|
44
|
+
* };
|
|
45
|
+
*
|
|
46
|
+
* const generatePageContentService = new GeneratePageContent();
|
|
47
|
+
* await generatePageContentService.generatePageContent(options);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
3
50
|
export class GeneratePageContent {
|
|
4
51
|
/**
|
|
5
52
|
* Generates the content for a specific page.
|
|
@@ -56,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
56
103
|
providedIn: 'root',
|
|
57
104
|
}]
|
|
58
105
|
}] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtcGFnZS1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2dlbmVyYXRlLXBhZ2UtY29udGVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBeUJ6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQU1MLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFDeEIsSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQ2QsV0FBVyxHQUFHLEtBQUssR0FDUTtRQUMzQixJQUFJLENBQUM7WUFDSCx5QkFBeUI7WUFDekIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBRTlDLElBQUksRUFDRixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsc0JBQXNCO1lBQ3RCLHFCQUFxQjtZQUNyQixXQUFXLEdBQ1osR0FBRyxVQUFVLENBQUM7WUFFZiw2QkFBNkI7WUFDN0IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFckMsMkJBQTJCO1lBQzNCLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDdkIscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFdkMsMEJBQTBCO1lBQzFCLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRXpDLHlDQUF5QztZQUN6QyxNQUFNLFdBQVcsQ0FBQztnQkFDaEIsUUFBUSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQztnQkFDaEMsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsVUFBVTtnQkFDVixTQUFTO2dCQUNULFdBQVc7YUFDWixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQiwwQ0FBMEM7WUFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0QsQ0FBQztJQUNILENBQUM7dUdBN0RVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJ0aWNpcGFudCwgU3RyZWFtLCBEaXNwU3RyZWFtc1R5cGUsIERpc3BTdHJlYW1zUGFyYW1ldGVycyB9IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUGFnZUNvbnRlbnRQYXJhbWV0ZXJzIGV4dGVuZHMgRGlzcFN0cmVhbXNQYXJhbWV0ZXJzIHtcbiAgcGFnaW5hdGVkU3RyZWFtczogKFBhcnRpY2lwYW50IHwgU3RyZWFtKVtdW107XG4gIGN1cnJlbnRVc2VyUGFnZTogbnVtYmVyO1xuICB1cGRhdGVNYWluV2luZG93OiBib29sZWFuO1xuICB1cGRhdGVDdXJyZW50VXNlclBhZ2U6IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3c6IChmbGFnOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBkaXNwU3RyZWFtczogRGlzcFN0cmVhbXNUeXBlO1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBHZW5lcmF0ZVBhZ2VDb250ZW50UGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUGFnZUNvbnRlbnRPcHRpb25zIHtcbiAgcGFnZTogbnVtYmVyIHwgc3RyaW5nO1xuICBwYXJhbWV0ZXJzOiBHZW5lcmF0ZVBhZ2VDb250ZW50UGFyYW1ldGVycztcbiAgYnJlYWtSb29tPzogbnVtYmVyO1xuICBpbkJyZWFrUm9vbT86IGJvb2xlYW47XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIEdlbmVyYXRlUGFnZUNvbnRlbnRUeXBlID0gKG9wdGlvbnM6IEdlbmVyYXRlUGFnZUNvbnRlbnRPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGNvbnRlbnQgZm9yIGEgc3BlY2lmaWMgcGFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtHZW5lcmF0ZVBhZ2VDb250ZW50T3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHBhZ2UgY29udGVudC5cbiAgICogQHBhcmFtIHtudW1iZXIgfCBzdHJpbmd9IG9wdGlvbnMucGFnZSAtIFRoZSBwYWdlIG51bWJlciB0byBnZW5lcmF0ZSBjb250ZW50IGZvci5cbiAgICogQHBhcmFtIHtHZW5lcmF0ZVBhZ2VDb250ZW50UGFyYW1ldGVyc30gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIGdlbmVyYXRpbmcgY29udGVudC5cbiAgICogQHBhcmFtIHtBcnJheTwoUGFydGljaXBhbnQgfCBTdHJlYW0pW10+fSBvcHRpb25zLnBhcmFtZXRlcnMucGFnaW5hdGVkU3RyZWFtcyAtIFRoZSBzdHJlYW1zIHRvIGJlIHBhZ2luYXRlZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5jdXJyZW50VXNlclBhZ2UgLSBUaGUgY3VycmVudCBwYWdlIG9mIHRoZSB1c2VyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTWFpbldpbmRvdyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cgZmxhZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUN1cnJlbnRVc2VyUGFnZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3VycmVudCB1c2VyIHBhZ2UuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVVcGRhdGVNYWluV2luZG93IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBtYWluIHdpbmRvdyB1cGRhdGUgZmxhZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmRpc3BTdHJlYW1zIC0gRnVuY3Rpb24gdG8gZGlzcGxheSBzdHJlYW1zIGZvciB0aGUgc3BlY2lmaWVkIHBhZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5icmVha1Jvb209LTFdIC0gVGhlIGJyZWFrIHJvb20gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pbkJyZWFrUm9vbT1mYWxzZV0gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHVzZXIgaXMgaW4gYSBicmVhayByb29tLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29udGVudCBnZW5lcmF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIGNvbnRlbnQgZ2VuZXJhdGlvbiBmYWlscy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIHBhZ2U6IDEsXG4gICAqICAgcGFyYW1ldGVyczoge1xuICAgKiAgICAgcGFnaW5hdGVkU3RyZWFtczogW1xuICAgKiAgICAgICAvLyBQYWdlIDAgc3RyZWFtc1xuICAgKiAgICAgICBbc3RyZWFtMSwgc3RyZWFtMl0sXG4gICAqICAgICAgIC8vIFBhZ2UgMSBzdHJlYW1zXG4gICAqICAgICAgIFtzdHJlYW0zLCBzdHJlYW00XSxcbiAgICogICAgIF0sXG4gICAqICAgICBjdXJyZW50VXNlclBhZ2U6IDAsXG4gICAqICAgICB1cGRhdGVNYWluV2luZG93OiBmYWxzZSxcbiAgICogICAgIHVwZGF0ZUN1cnJlbnRVc2VyUGFnZTogKHBhZ2UpID0+IHsgY29uc29sZS5sb2coYEN1cnJlbnQgcGFnZSB1cGRhdGVkIHRvOiAke3BhZ2V9YCk7IH0sXG4gICAqICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93OiAoZmxhZykgPT4geyBjb25zb2xlLmxvZyhgTWFpbiB3aW5kb3cgdXBkYXRlIGZsYWc6ICR7ZmxhZ31gKTsgfSxcbiAgICogICAgIGRpc3BTdHJlYW1zOiBhc3luYyAoeyBsU3RyZWFtcywgaW5kIH0pID0+IHtcbiAgICogICAgICAgY29uc29sZS5sb2coYERpc3BsYXlpbmcgc3RyZWFtcyBmb3IgcGFnZSAke2luZH06YCwgbFN0cmVhbXMpO1xuICAgKiAgICAgfSxcbiAgICogICAgIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IG9wdGlvbnMucGFyYW1ldGVycyxcbiAgICogICB9LFxuICAgKiAgIGJyZWFrUm9vbTogLTEsXG4gICAqICAgaW5CcmVha1Jvb206IGZhbHNlLFxuICAgKiB9O1xuICAgKlxuICAgKiBjb25zdCBnZW5lcmF0ZVBhZ2VDb250ZW50U2VydmljZSA9IG5ldyBHZW5lcmF0ZVBhZ2VDb250ZW50KCk7XG4gICAqIGF3YWl0IGdlbmVyYXRlUGFnZUNvbnRlbnRTZXJ2aWNlLmdlbmVyYXRlUGFnZUNvbnRlbnQob3B0aW9ucyk7XG4gICAqIGBgYFxuICAgKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJhdGVQYWdlQ29udGVudCB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGNvbnRlbnQgZm9yIGEgc3BlY2lmaWMgcGFnZS5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgZ2VuZXJhdGluZyBwYWdlIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyIHwgc3RyaW5nfSBvcHRpb25zLnBhZ2UgLSBUaGUgcGFnZSBudW1iZXIgdG8gZ2VuZXJhdGUgY29udGVudCBmb3IuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgZ2VuZXJhdGluZyBjb250ZW50LlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLnBhcmFtZXRlcnMucGFnaW5hdGVkU3RyZWFtcyAtIFRoZSBzdHJlYW1zIHRvIGJlIHBhZ2luYXRlZC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5jdXJyZW50VXNlclBhZ2UgLSBUaGUgY3VycmVudCBwYWdlIG9mIHRoZSB1c2VyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlTWFpbldpbmRvdyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbWFpbiB3aW5kb3cgZmxhZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUN1cnJlbnRVc2VyUGFnZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3VycmVudCB1c2VyIHBhZ2UuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVVcGRhdGVNYWluV2luZG93IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBtYWluIHdpbmRvdyB1cGRhdGUgZmxhZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmRpc3BTdHJlYW1zIC0gRnVuY3Rpb24gdG8gZGlzcGxheSBzdHJlYW1zIGZvciB0aGUgc3BlY2lmaWVkIHBhZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5icmVha1Jvb209LTFdIC0gVGhlIGJyZWFrIHJvb20gaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pbkJyZWFrUm9vbT1mYWxzZV0gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHVzZXIgaXMgaW4gYSBicmVhayByb29tLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgY29udGVudCBnZW5lcmF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIGNvbnRlbnQgZ2VuZXJhdGlvbiBmYWlscy5cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlUGFnZUNvbnRlbnQoe1xuICAgIHBhZ2UsXG4gICAgcGFyYW1ldGVycyxcbiAgICBicmVha1Jvb20gPSAtMSxcbiAgICBpbkJyZWFrUm9vbSA9IGZhbHNlLFxuICB9OiBHZW5lcmF0ZVBhZ2VDb250ZW50T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBEZXN0cnVjdHVyZSBwYXJhbWV0ZXJzXG4gICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICAgIGxldCB7XG4gICAgICAgIHBhZ2luYXRlZFN0cmVhbXMsXG4gICAgICAgIGN1cnJlbnRVc2VyUGFnZSxcbiAgICAgICAgdXBkYXRlTWFpbldpbmRvdyxcbiAgICAgICAgdXBkYXRlQ3VycmVudFVzZXJQYWdlLFxuICAgICAgICB1cGRhdGVVcGRhdGVNYWluV2luZG93LFxuICAgICAgICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgICAgICAgZGlzcFN0cmVhbXMsXG4gICAgICB9ID0gcGFyYW1ldGVycztcblxuICAgICAgLy8gQ29udmVydCBwYWdlIHRvIGFuIGludGVnZXJcbiAgICAgIHBhZ2UgPSBwYXJzZUludChwYWdlLnRvU3RyaW5nKCksIDEwKTtcblxuICAgICAgLy8gVXBkYXRlIGN1cnJlbnQgdXNlciBwYWdlXG4gICAgICBjdXJyZW50VXNlclBhZ2UgPSBwYWdlO1xuICAgICAgdXBkYXRlQ3VycmVudFVzZXJQYWdlKGN1cnJlbnRVc2VyUGFnZSk7XG5cbiAgICAgIC8vIFVwZGF0ZSBtYWluIHdpbmRvdyBmbGFnXG4gICAgICB1cGRhdGVNYWluV2luZG93ID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZVVwZGF0ZU1haW5XaW5kb3codXBkYXRlTWFpbldpbmRvdyk7XG5cbiAgICAgIC8vIERpc3BsYXkgc3RyZWFtcyBmb3IgdGhlIHNwZWNpZmllZCBwYWdlXG4gICAgICBhd2FpdCBkaXNwU3RyZWFtcyh7XG4gICAgICAgIGxTdHJlYW1zOiBwYWdpbmF0ZWRTdHJlYW1zW3BhZ2VdLFxuICAgICAgICBpbmQ6IHBhZ2UsXG4gICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgIGJyZWFrUm9vbSxcbiAgICAgICAgaW5CcmVha1Jvb20sXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JzIGR1cmluZyBjb250ZW50IGdlbmVyYXRpb25cbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBnZW5lcmF0aW5nIHBhZ2UgY29udGVudDonLCBlcnJvci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
// estimate.service.ts
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Estimates the number of rows and columns for a given set of parameters.
|
|
6
|
+
*
|
|
7
|
+
* @param {GetEstimateOptions} options - The options for the estimation.
|
|
8
|
+
* @param {number} options.n - The number of items to estimate for.
|
|
9
|
+
* @param {GetEstimateParameters} options.parameters - The parameters for the estimation.
|
|
10
|
+
* @param {number} options.parameters.fixedPageLimit - The fixed page limit.
|
|
11
|
+
* @param {number} options.parameters.screenPageLimit - The screen page limit.
|
|
12
|
+
* @param {boolean} options.parameters.shareScreenStarted - Indicates if screen sharing has started.
|
|
13
|
+
* @param {boolean} [options.parameters.shared=false] - Indicates if sharing is active.
|
|
14
|
+
* @param {EventType} options.parameters.eventType - The type of event (e.g., "chat", "conference").
|
|
15
|
+
* @param {boolean} options.parameters.removeAltGrid - Indicates if the alternate grid should be removed.
|
|
16
|
+
* @param {boolean} options.parameters.isWideScreen - Indicates if the screen is wide.
|
|
17
|
+
* @param {boolean} options.parameters.isMediumScreen - Indicates if the screen is medium-sized.
|
|
18
|
+
* @param {Function} options.parameters.updateRemoveAltGrid - Function to update the removeAltGrid parameter.
|
|
19
|
+
* @param {CalculateRowsAndColumnsType} options.parameters.calculateRowsAndColumns - Function to calculate rows and columns.
|
|
20
|
+
*
|
|
21
|
+
* @returns {[number, number, number]} An array containing:
|
|
22
|
+
* - Estimated number of items,
|
|
23
|
+
* - Estimated number of rows,
|
|
24
|
+
* - Estimated number of columns.
|
|
25
|
+
*
|
|
26
|
+
* @throws Will log an error message if an error occurs during estimation.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const estimateOptions = {
|
|
31
|
+
* n: 20,
|
|
32
|
+
* parameters: {
|
|
33
|
+
* fixedPageLimit: 10,
|
|
34
|
+
* screenPageLimit: 15,
|
|
35
|
+
* shareScreenStarted: false,
|
|
36
|
+
* shared: false,
|
|
37
|
+
* eventType: 'conference',
|
|
38
|
+
* removeAltGrid: false,
|
|
39
|
+
* isWideScreen: true,
|
|
40
|
+
* isMediumScreen: false,
|
|
41
|
+
* updateRemoveAltGrid: (value) => console.log(`Remove Alt Grid: ${value}`),
|
|
42
|
+
* calculateRowsAndColumns: ({ n }) => {
|
|
43
|
+
* const sqrt = Math.sqrt(n);
|
|
44
|
+
* return [Math.ceil(sqrt), Math.floor(sqrt)];
|
|
45
|
+
* },
|
|
46
|
+
* },
|
|
47
|
+
* };
|
|
48
|
+
*
|
|
49
|
+
* const estimateService = new GetEstimate();
|
|
50
|
+
* const [estimatedItems, estimatedRows, estimatedCols] = estimateService.getEstimate(estimateOptions);
|
|
51
|
+
* console.log(`Estimated Items: ${estimatedItems}, Rows: ${estimatedRows}, Columns: ${estimatedCols}`);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
4
54
|
export class GetEstimate {
|
|
5
55
|
/**
|
|
6
56
|
* Estimates the number of rows and columns for a given set of parameters.
|
|
@@ -67,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
67
117
|
providedIn: 'root',
|
|
68
118
|
}]
|
|
69
119
|
}] });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVzdGltYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2dldC1lc3RpbWF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWdDM0MsTUFBTSxPQUFPLFdBQVc7SUFDdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0lBQ0gsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBc0I7UUFDL0MsSUFBSSxDQUFDO1lBQ0gseUJBQXlCO1lBQ3pCLElBQUksRUFDRixjQUFjLEVBQ2QsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLEVBQ1osY0FBYyxFQUNkLG1CQUFtQjtZQUNuQixxQkFBcUI7WUFDckIsdUJBQXVCLEdBQ3hCLEdBQUcsVUFBVSxDQUFDO1lBRWYsNkJBQTZCO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsdUJBQXVCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXBELHlDQUF5QztZQUN6QyxJQUFJLENBQUMsR0FBRyxjQUFjLElBQUksQ0FBQyxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEYsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDckIsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRW5DLGdEQUFnRDtnQkFDaEQsSUFBSSxDQUFDLENBQUMsY0FBYyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sU0FBUyxLQUFLLE1BQU07d0JBQ3pCLENBQUMsU0FBUyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLENBQUM7d0JBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLFNBQVMsS0FBSyxNQUFNO3dCQUN6QixDQUFDLFNBQVMsS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxDQUFDO3dCQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixrQ0FBa0M7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakUsZUFBZTtZQUNmLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO3VHQXBFVSxXQUFXOzJHQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzdGltYXRlLnNlcnZpY2UudHNcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2FsY3VsYXRlUm93c0FuZENvbHVtbnNUeXBlLCBFdmVudFR5cGUgfSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldEVzdGltYXRlUGFyYW1ldGVycyB7XG4gIGZpeGVkUGFnZUxpbWl0OiBudW1iZXI7XG4gIHNjcmVlblBhZ2VMaW1pdDogbnVtYmVyO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHNoYXJlZD86IGJvb2xlYW47XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICByZW1vdmVBbHRHcmlkOiBib29sZWFuO1xuICBpc1dpZGVTY3JlZW46IGJvb2xlYW47XG4gIGlzTWVkaXVtU2NyZWVuOiBib29sZWFuO1xuICB1cGRhdGVSZW1vdmVBbHRHcmlkOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFTZnUgZnVuY3Rpb25zXG4gIGNhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zOiBDYWxjdWxhdGVSb3dzQW5kQ29sdW1uc1R5cGU7XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEVzdGltYXRlT3B0aW9ucyB7XG4gIG46IG51bWJlcjtcbiAgcGFyYW1ldGVyczogR2V0RXN0aW1hdGVQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBHZXRFc3RpbWF0ZVR5cGUgPSAob3B0aW9uczogR2V0RXN0aW1hdGVPcHRpb25zKSA9PiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRFc3RpbWF0ZSB7XG4gIC8qKlxuICAgKiBFc3RpbWF0ZXMgdGhlIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIGZvciBhIGdpdmVuIHNldCBvZiBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge0dldEVzdGltYXRlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXN0aW1hdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubiAtIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gZXN0aW1hdGUgZm9yLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlc3RpbWF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmZpeGVkUGFnZUxpbWl0IC0gVGhlIGZpeGVkIHBhZ2UgbGltaXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuUGFnZUxpbWl0IC0gVGhlIHNjcmVlbiBwYWdlIGxpbWl0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgLSBJbmRpY2F0ZXMgaWYgc2NyZWVuIHNoYXJpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNoYXJlZCAtIEluZGljYXRlcyBpZiBzaGFyaW5nIGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5ldmVudFR5cGUgLSBUaGUgdHlwZSBvZiBldmVudCAoZS5nLiwgXCJjaGF0XCIsIFwiY29uZmVyZW5jZVwiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVtb3ZlQWx0R3JpZCAtIEluZGljYXRlcyBpZiB0aGUgYWx0ZXJuYXRlIGdyaWQgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzV2lkZVNjcmVlbiAtIEluZGljYXRlcyBpZiB0aGUgc2NyZWVuIGlzIHdpZGUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzTWVkaXVtU2NyZWVuIC0gSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgbWVkaXVtLXNpemVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVtb3ZlQWx0R3JpZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVtb3ZlQWx0R3JpZCBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5jYWxjdWxhdGVSb3dzQW5kQ29sdW1ucyAtIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSByb3dzIGFuZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyW119IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgaXRlbXMsIHJvd3MsIGFuZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAdGhyb3dzIFdpbGwgbG9nIGFuIGVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBlc3RpbWF0aW9uLlxuICAgKi9cbiAgZ2V0RXN0aW1hdGUoeyBuLCBwYXJhbWV0ZXJzIH06IEdldEVzdGltYXRlT3B0aW9ucyk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIERlc3RydWN0dXJlIHBhcmFtZXRlcnNcbiAgICAgIGxldCB7XG4gICAgICAgIGZpeGVkUGFnZUxpbWl0LFxuICAgICAgICBzY3JlZW5QYWdlTGltaXQsXG4gICAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICAgICAgc2hhcmVkLFxuICAgICAgICBldmVudFR5cGUsXG4gICAgICAgIHJlbW92ZUFsdEdyaWQsXG4gICAgICAgIGlzV2lkZVNjcmVlbixcbiAgICAgICAgaXNNZWRpdW1TY3JlZW4sXG4gICAgICAgIHVwZGF0ZVJlbW92ZUFsdEdyaWQsXG4gICAgICAgIC8vIG1lZGlhU2Z1IGZ1bmN0aW9uc1xuICAgICAgICBjYWxjdWxhdGVSb3dzQW5kQ29sdW1ucyxcbiAgICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgcm93cyBhbmQgY29sdW1uc1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gY2FsY3VsYXRlUm93c0FuZENvbHVtbnMoeyBuIH0pO1xuXG4gICAgICAvLyBDaGVjayBjb25kaXRpb25zIGZvciByZW1vdmluZyBhbHQgZ3JpZFxuICAgICAgaWYgKG4gPCBmaXhlZFBhZ2VMaW1pdCB8fCAoKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpICYmIG4gPCBzY3JlZW5QYWdlTGltaXQgKyAxKSkge1xuICAgICAgICByZW1vdmVBbHRHcmlkID0gdHJ1ZTtcbiAgICAgICAgdXBkYXRlUmVtb3ZlQWx0R3JpZChyZW1vdmVBbHRHcmlkKTtcblxuICAgICAgICAvLyBSZXR1cm4gZXN0aW1hdGVkIHZhbHVlcyBiYXNlZCBvbiBzY3JlZW4gd2lkdGhcbiAgICAgICAgaWYgKCEoaXNNZWRpdW1TY3JlZW4gfHwgaXNXaWRlU2NyZWVuKSkge1xuICAgICAgICAgIHJldHVybiBldmVudFR5cGUgPT09ICdjaGF0JyB8fFxuICAgICAgICAgICAgKGV2ZW50VHlwZSA9PT0gJ2NvbmZlcmVuY2UnICYmICEoc2hhcmVTY3JlZW5TdGFydGVkIHx8IHNoYXJlZCkpXG4gICAgICAgICAgICA/IFtuLCBuLCAxXVxuICAgICAgICAgICAgOiBbbiwgMSwgbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGV2ZW50VHlwZSA9PT0gJ2NoYXQnIHx8XG4gICAgICAgICAgICAoZXZlbnRUeXBlID09PSAnY29uZmVyZW5jZScgJiYgIShzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSlcbiAgICAgICAgICAgID8gW24sIDEsIG5dXG4gICAgICAgICAgICA6IFtuLCBuLCAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gW3Jvd3MgKiBjb2xzLCByb3dzLCBjb2xzXTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JzIGR1cmluZyBlc3RpbWF0aW9uXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgZXN0aW1hdGluZyByb3dzIGFuZCBjb2x1bW5zOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgLy8gdGhyb3cgZXJyb3I7XG4gICAgICByZXR1cm4gWzAsIDAsIDBdO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWVzdGltYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2dldC1lc3RpbWF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQjtBQUN0QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQTZCekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFNTCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFDSCxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFzQjtRQUMvQyxJQUFJLENBQUM7WUFDSCx5QkFBeUI7WUFDekIsSUFBSSxFQUNGLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixTQUFTLEVBQ1QsYUFBYSxFQUNiLFlBQVksRUFDWixjQUFjLEVBQ2QsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQix1QkFBdUIsR0FDeEIsR0FBRyxVQUFVLENBQUM7WUFFZiw2QkFBNkI7WUFDN0IsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFcEQseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxHQUFHLGNBQWMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0RixhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFFbkMsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsQ0FBQyxjQUFjLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsT0FBTyxTQUFTLEtBQUssTUFBTTt3QkFDekIsQ0FBQyxTQUFTLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxNQUFNLENBQUMsQ0FBQzt3QkFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ1gsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sU0FBUyxLQUFLLE1BQU07d0JBQ3pCLENBQUMsU0FBUyxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLENBQUM7d0JBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNYLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLGtDQUFrQztZQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRSxlQUFlO1lBQ2YsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7dUdBcEVVLFdBQVc7MkdBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXN0aW1hdGUuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDYWxjdWxhdGVSb3dzQW5kQ29sdW1uc1R5cGUsIEV2ZW50VHlwZSB9IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RXN0aW1hdGVQYXJhbWV0ZXJzIHtcbiAgZml4ZWRQYWdlTGltaXQ6IG51bWJlcjtcbiAgc2NyZWVuUGFnZUxpbWl0OiBudW1iZXI7XG4gIHNoYXJlU2NyZWVuU3RhcnRlZDogYm9vbGVhbjtcbiAgc2hhcmVkPzogYm9vbGVhbjtcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHJlbW92ZUFsdEdyaWQ6IGJvb2xlYW47XG4gIGlzV2lkZVNjcmVlbjogYm9vbGVhbjtcbiAgaXNNZWRpdW1TY3JlZW46IGJvb2xlYW47XG4gIHVwZGF0ZVJlbW92ZUFsdEdyaWQ6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvLyBtZWRpYVNmdSBmdW5jdGlvbnNcbiAgY2FsY3VsYXRlUm93c0FuZENvbHVtbnM6IENhbGN1bGF0ZVJvd3NBbmRDb2x1bW5zVHlwZTtcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RXN0aW1hdGVPcHRpb25zIHtcbiAgbjogbnVtYmVyO1xuICBwYXJhbWV0ZXJzOiBHZXRFc3RpbWF0ZVBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIEdldEVzdGltYXRlVHlwZSA9IChvcHRpb25zOiBHZXRFc3RpbWF0ZU9wdGlvbnMpID0+IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblxuICAvKipcbiAgICogRXN0aW1hdGVzIHRoZSBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyBmb3IgYSBnaXZlbiBzZXQgb2YgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtHZXRFc3RpbWF0ZU9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGVzdGltYXRpb24uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLm4gLSBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRvIGVzdGltYXRlIGZvci5cbiAgICogQHBhcmFtIHtHZXRFc3RpbWF0ZVBhcmFtZXRlcnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXN0aW1hdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5maXhlZFBhZ2VMaW1pdCAtIFRoZSBmaXhlZCBwYWdlIGxpbWl0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNjcmVlblBhZ2VMaW1pdCAtIFRoZSBzY3JlZW4gcGFnZSBsaW1pdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVTY3JlZW5TdGFydGVkIC0gSW5kaWNhdGVzIGlmIHNjcmVlbiBzaGFyaW5nIGhhcyBzdGFydGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnBhcmFtZXRlcnMuc2hhcmVkPWZhbHNlXSAtIEluZGljYXRlcyBpZiBzaGFyaW5nIGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtFdmVudFR5cGV9IG9wdGlvbnMucGFyYW1ldGVycy5ldmVudFR5cGUgLSBUaGUgdHlwZSBvZiBldmVudCAoZS5nLiwgXCJjaGF0XCIsIFwiY29uZmVyZW5jZVwiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVtb3ZlQWx0R3JpZCAtIEluZGljYXRlcyBpZiB0aGUgYWx0ZXJuYXRlIGdyaWQgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzV2lkZVNjcmVlbiAtIEluZGljYXRlcyBpZiB0aGUgc2NyZWVuIGlzIHdpZGUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzTWVkaXVtU2NyZWVuIC0gSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgbWVkaXVtLXNpemVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVtb3ZlQWx0R3JpZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVtb3ZlQWx0R3JpZCBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB7Q2FsY3VsYXRlUm93c0FuZENvbHVtbnNUeXBlfSBvcHRpb25zLnBhcmFtZXRlcnMuY2FsY3VsYXRlUm93c0FuZENvbHVtbnMgLSBGdW5jdGlvbiB0byBjYWxjdWxhdGUgcm93cyBhbmQgY29sdW1ucy5cbiAgICpcbiAgICogQHJldHVybnMge1tudW1iZXIsIG51bWJlciwgbnVtYmVyXX0gQW4gYXJyYXkgY29udGFpbmluZzpcbiAgICogLSBFc3RpbWF0ZWQgbnVtYmVyIG9mIGl0ZW1zLFxuICAgKiAtIEVzdGltYXRlZCBudW1iZXIgb2Ygcm93cyxcbiAgICogLSBFc3RpbWF0ZWQgbnVtYmVyIG9mIGNvbHVtbnMuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGVzdGltYXRpb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgZXN0aW1hdGVPcHRpb25zID0ge1xuICAgKiAgIG46IDIwLFxuICAgKiAgIHBhcmFtZXRlcnM6IHtcbiAgICogICAgIGZpeGVkUGFnZUxpbWl0OiAxMCxcbiAgICogICAgIHNjcmVlblBhZ2VMaW1pdDogMTUsXG4gICAqICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGZhbHNlLFxuICAgKiAgICAgc2hhcmVkOiBmYWxzZSxcbiAgICogICAgIGV2ZW50VHlwZTogJ2NvbmZlcmVuY2UnLFxuICAgKiAgICAgcmVtb3ZlQWx0R3JpZDogZmFsc2UsXG4gICAqICAgICBpc1dpZGVTY3JlZW46IHRydWUsXG4gICAqICAgICBpc01lZGl1bVNjcmVlbjogZmFsc2UsXG4gICAqICAgICB1cGRhdGVSZW1vdmVBbHRHcmlkOiAodmFsdWUpID0+IGNvbnNvbGUubG9nKGBSZW1vdmUgQWx0IEdyaWQ6ICR7dmFsdWV9YCksXG4gICAqICAgICBjYWxjdWxhdGVSb3dzQW5kQ29sdW1uczogKHsgbiB9KSA9PiB7XG4gICAqICAgICAgIGNvbnN0IHNxcnQgPSBNYXRoLnNxcnQobik7XG4gICAqICAgICAgIHJldHVybiBbTWF0aC5jZWlsKHNxcnQpLCBNYXRoLmZsb29yKHNxcnQpXTtcbiAgICogICAgIH0sXG4gICAqICAgfSxcbiAgICogfTtcbiAgICpcbiAgICogY29uc3QgZXN0aW1hdGVTZXJ2aWNlID0gbmV3IEdldEVzdGltYXRlKCk7XG4gICAqIGNvbnN0IFtlc3RpbWF0ZWRJdGVtcywgZXN0aW1hdGVkUm93cywgZXN0aW1hdGVkQ29sc10gPSBlc3RpbWF0ZVNlcnZpY2UuZ2V0RXN0aW1hdGUoZXN0aW1hdGVPcHRpb25zKTtcbiAgICogY29uc29sZS5sb2coYEVzdGltYXRlZCBJdGVtczogJHtlc3RpbWF0ZWRJdGVtc30sIFJvd3M6ICR7ZXN0aW1hdGVkUm93c30sIENvbHVtbnM6ICR7ZXN0aW1hdGVkQ29sc31gKTtcbiAgICogYGBgXG4gICAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHZXRFc3RpbWF0ZSB7XG4gIC8qKlxuICAgKiBFc3RpbWF0ZXMgdGhlIG51bWJlciBvZiByb3dzIGFuZCBjb2x1bW5zIGZvciBhIGdpdmVuIHNldCBvZiBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge0dldEVzdGltYXRlT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXN0aW1hdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMubiAtIFRoZSBudW1iZXIgb2YgaXRlbXMgdG8gZXN0aW1hdGUgZm9yLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBlc3RpbWF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmZpeGVkUGFnZUxpbWl0IC0gVGhlIGZpeGVkIHBhZ2UgbGltaXQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuUGFnZUxpbWl0IC0gVGhlIHNjcmVlbiBwYWdlIGxpbWl0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgLSBJbmRpY2F0ZXMgaWYgc2NyZWVuIHNoYXJpbmcgaGFzIHN0YXJ0ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNoYXJlZCAtIEluZGljYXRlcyBpZiBzaGFyaW5nIGlzIGFjdGl2ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5ldmVudFR5cGUgLSBUaGUgdHlwZSBvZiBldmVudCAoZS5nLiwgXCJjaGF0XCIsIFwiY29uZmVyZW5jZVwiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVtb3ZlQWx0R3JpZCAtIEluZGljYXRlcyBpZiB0aGUgYWx0ZXJuYXRlIGdyaWQgc2hvdWxkIGJlIHJlbW92ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzV2lkZVNjcmVlbiAtIEluZGljYXRlcyBpZiB0aGUgc2NyZWVuIGlzIHdpZGUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzTWVkaXVtU2NyZWVuIC0gSW5kaWNhdGVzIGlmIHRoZSBzY3JlZW4gaXMgbWVkaXVtLXNpemVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUmVtb3ZlQWx0R3JpZCAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgcmVtb3ZlQWx0R3JpZCBwYXJhbWV0ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy5jYWxjdWxhdGVSb3dzQW5kQ29sdW1ucyAtIEZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSByb3dzIGFuZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyW119IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGVzdGltYXRlZCBudW1iZXIgb2YgaXRlbXMsIHJvd3MsIGFuZCBjb2x1bW5zLlxuICAgKlxuICAgKiBAdGhyb3dzIFdpbGwgbG9nIGFuIGVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBlc3RpbWF0aW9uLlxuICAgKi9cbiAgZ2V0RXN0aW1hdGUoeyBuLCBwYXJhbWV0ZXJzIH06IEdldEVzdGltYXRlT3B0aW9ucyk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIERlc3RydWN0dXJlIHBhcmFtZXRlcnNcbiAgICAgIGxldCB7XG4gICAgICAgIGZpeGVkUGFnZUxpbWl0LFxuICAgICAgICBzY3JlZW5QYWdlTGltaXQsXG4gICAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICAgICAgc2hhcmVkLFxuICAgICAgICBldmVudFR5cGUsXG4gICAgICAgIHJlbW92ZUFsdEdyaWQsXG4gICAgICAgIGlzV2lkZVNjcmVlbixcbiAgICAgICAgaXNNZWRpdW1TY3JlZW4sXG4gICAgICAgIHVwZGF0ZVJlbW92ZUFsdEdyaWQsXG4gICAgICAgIC8vIG1lZGlhU2Z1IGZ1bmN0aW9uc1xuICAgICAgICBjYWxjdWxhdGVSb3dzQW5kQ29sdW1ucyxcbiAgICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgcm93cyBhbmQgY29sdW1uc1xuICAgICAgY29uc3QgW3Jvd3MsIGNvbHNdID0gY2FsY3VsYXRlUm93c0FuZENvbHVtbnMoeyBuIH0pO1xuXG4gICAgICAvLyBDaGVjayBjb25kaXRpb25zIGZvciByZW1vdmluZyBhbHQgZ3JpZFxuICAgICAgaWYgKG4gPCBmaXhlZFBhZ2VMaW1pdCB8fCAoKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpICYmIG4gPCBzY3JlZW5QYWdlTGltaXQgKyAxKSkge1xuICAgICAgICByZW1vdmVBbHRHcmlkID0gdHJ1ZTtcbiAgICAgICAgdXBkYXRlUmVtb3ZlQWx0R3JpZChyZW1vdmVBbHRHcmlkKTtcblxuICAgICAgICAvLyBSZXR1cm4gZXN0aW1hdGVkIHZhbHVlcyBiYXNlZCBvbiBzY3JlZW4gd2lkdGhcbiAgICAgICAgaWYgKCEoaXNNZWRpdW1TY3JlZW4gfHwgaXNXaWRlU2NyZWVuKSkge1xuICAgICAgICAgIHJldHVybiBldmVudFR5cGUgPT09ICdjaGF0JyB8fFxuICAgICAgICAgICAgKGV2ZW50VHlwZSA9PT0gJ2NvbmZlcmVuY2UnICYmICEoc2hhcmVTY3JlZW5TdGFydGVkIHx8IHNoYXJlZCkpXG4gICAgICAgICAgICA/IFtuLCBuLCAxXVxuICAgICAgICAgICAgOiBbbiwgMSwgbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGV2ZW50VHlwZSA9PT0gJ2NoYXQnIHx8XG4gICAgICAgICAgICAoZXZlbnRUeXBlID09PSAnY29uZmVyZW5jZScgJiYgIShzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSlcbiAgICAgICAgICAgID8gW24sIDEsIG5dXG4gICAgICAgICAgICA6IFtuLCBuLCAxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gW3Jvd3MgKiBjb2xzLCByb3dzLCBjb2xzXTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBIYW5kbGUgZXJyb3JzIGR1cmluZyBlc3RpbWF0aW9uXG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgZXN0aW1hdGluZyByb3dzIGFuZCBjb2x1bW5zOicsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgLy8gdGhyb3cgZXJyb3I7XG4gICAgICByZXR1cm4gWzAsIDAsIDBdO1xuICAgIH1cbiAgfVxufVxuIl19
|