@webex/plugin-meetings 3.10.0-next.1 → 3.10.0-next.10
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/dist/annotation/annotation.types.js.map +1 -1
- package/dist/annotation/constants.js.map +1 -1
- package/dist/annotation/index.js +19 -22
- package/dist/annotation/index.js.map +1 -1
- package/dist/breakouts/breakout.js +6 -6
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/collection.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +9 -11
- package/dist/breakouts/edit-lock-error.js.map +1 -1
- package/dist/breakouts/events.js.map +1 -1
- package/dist/breakouts/index.js +126 -127
- package/dist/breakouts/index.js.map +1 -1
- package/dist/breakouts/request.js +6 -8
- package/dist/breakouts/request.js.map +1 -1
- package/dist/breakouts/utils.js.map +1 -1
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +1 -2
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +9 -11
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +10 -12
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-forbidden-error.js +10 -12
- package/dist/common/errors/join-forbidden-error.js.map +1 -1
- package/dist/common/errors/join-meeting.js +10 -12
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/join-webinar-error.js +9 -11
- package/dist/common/errors/join-webinar-error.js.map +1 -1
- package/dist/common/errors/media.js +9 -11
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/multistream-not-supported-error.js +9 -11
- package/dist/common/errors/multistream-not-supported-error.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +9 -11
- package/dist/common/errors/no-meeting-info.js.map +1 -1
- package/dist/common/errors/parameter.js +11 -14
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +9 -11
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -11
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.js +32 -38
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -1
- package/dist/common/errors/reconnection-not-started.js +5 -6
- package/dist/common/errors/reconnection-not-started.js.map +1 -1
- package/dist/common/errors/reconnection.js +9 -11
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +9 -11
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +38 -27
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +9 -12
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +9 -10
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +9 -10
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +17 -17
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +1 -2
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +0 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +12 -8
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/index.js +1 -2
- package/dist/controls-options-manager/index.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +1 -2
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/hashTree/hashTreeParser.js +165 -0
- package/dist/hashTree/hashTreeParser.js.map +1 -0
- package/dist/hashTree/types.js +15 -0
- package/dist/hashTree/types.js.map +1 -0
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js.map +1 -1
- package/dist/interceptors/locusRetry.js +6 -8
- package/dist/interceptors/locusRetry.js.map +1 -1
- package/dist/interceptors/locusRouteToken.js +6 -8
- package/dist/interceptors/locusRouteToken.js.map +1 -1
- package/dist/interpretation/collection.js.map +1 -1
- package/dist/interpretation/index.js +1 -2
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/interpretation/siLanguage.js.map +1 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +532 -94
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +3 -4
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/locus-info/types.js +7 -0
- package/dist/locus-info/types.js.map +1 -0
- package/dist/media/MediaConnectionAwaiter.js +1 -2
- package/dist/media/MediaConnectionAwaiter.js.map +1 -1
- package/dist/media/index.js +5 -2
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +15 -17
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js.map +1 -1
- package/dist/meeting/brbState.js +8 -9
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/connectionStateHandler.js +10 -13
- package/dist/meeting/connectionStateHandler.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +1556 -1528
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +13 -17
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +11 -12
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +101 -104
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/type.js.map +1 -1
- package/dist/meeting/util.js +24 -23
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +3 -3
- package/dist/meeting/voicea-meeting.js.map +1 -1
- package/dist/meeting-info/collection.js +7 -10
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +1 -2
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +135 -146
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +1 -2
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +36 -37
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +30 -31
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +6 -8
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +179 -141
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js.map +1 -1
- package/dist/meetings/request.js +6 -8
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +25 -23
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +1 -2
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +6 -3
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +1 -2
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +18 -21
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +8 -11
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js.map +1 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -1
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +3 -4
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +1 -2
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +34 -45
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +8 -9
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +12 -15
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +1 -2
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +122 -123
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +29 -30
- package/dist/multistream/sendSlotManager.js.map +1 -1
- package/dist/personal-meeting-room/index.js +16 -19
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +7 -10
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.js +36 -39
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +203 -205
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js.map +1 -1
- package/dist/reactions/constants.js.map +1 -1
- package/dist/reactions/reactions.js.map +1 -1
- package/dist/reactions/reactions.type.js.map +1 -1
- package/dist/reconnection-manager/index.js +178 -176
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js.map +1 -1
- package/dist/recording-controller/index.js +1 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +12 -15
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +24 -26
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +75 -76
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js.map +1 -1
- package/dist/transcription/index.js +4 -5
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/common/errors/webex-errors.d.ts +12 -0
- package/dist/types/constants.d.ts +26 -21
- package/dist/types/hashTree/hashTreeParser.d.ts +109 -0
- package/dist/types/hashTree/types.d.ts +16 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/locus-info/index.d.ts +91 -42
- package/dist/types/locus-info/types.d.ts +45 -0
- package/dist/types/meeting/index.d.ts +22 -9
- package/dist/types/meetings/index.d.ts +9 -2
- package/dist/types/metrics/constants.d.ts +2 -0
- package/dist/webinar/collection.js +1 -2
- package/dist/webinar/collection.js.map +1 -1
- package/dist/webinar/index.js +148 -158
- package/dist/webinar/index.js.map +1 -1
- package/package.json +16 -16
- package/src/common/errors/webex-errors.ts +19 -0
- package/src/constants.ts +14 -2
- package/src/hashTree/hashTreeParser.ts +146 -0
- package/src/hashTree/types.ts +20 -0
- package/src/index.ts +2 -0
- package/src/locus-info/index.ts +534 -85
- package/src/locus-info/types.ts +46 -0
- package/src/media/index.ts +6 -0
- package/src/meeting/index.ts +61 -27
- package/src/meeting/util.ts +1 -0
- package/src/meetings/index.ts +104 -51
- package/src/metrics/constants.ts +2 -0
- package/test/unit/spec/locus-info/index.js +576 -1
- package/test/unit/spec/media/index.ts +140 -9
- package/test/unit/spec/meeting/index.js +178 -94
- package/test/unit/spec/meeting/utils.js +77 -0
- package/test/unit/spec/meetings/index.js +71 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray2","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","LocusInfo","exports","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","_createClass2","key","doLocusSync","meeting","isLocusUrlChanged","locus","_this$locusParser$wor","_this2","url","isDelta","meetingDestroyed","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","stack","code","statusCode","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","baseSequence","locusInfo","handleLocusDelta","onFullLocus","LOCUS_SYNC_HANDLING_FAILED","finally","resume","applyLocusDeltaData","action","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","LOCUS_URL_CHANGED","onDeltaLocus","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","_locus$links2","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","sequence","membership","identities","participants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","ControlsUtils","isMainSessionDTO","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","initialSetup","handleLocusAPIResponse","responseBody","parse","data","eventType","getTheLocusToUpdate","jsSdkMeta","removedParticipantIds","LOCUSEVENT","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","_locus$jsSdkMeta","error","isNewFullLocus","isReplaceMembers","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$jsSdkMeta2","mergeParticipants","_locus$self","_locus$self2","_locus$links3","_locus$links4","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","find","participant","identity","_USER_","removed","partner","_SPACE_SHARE_","LOCUS","STATE","INACTIVE","warn","internal","newMetrics","submitClientEvent","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isArray","_iterator","_step","_participant$person","LOCUSINFO","PARTICIPANT_REASON_CHANGED","displayName","person","primaryDisplayString","isEqual","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasTranscribeSpokenLanguageChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","hasAnnotationControlChanged","hasRemoteDesktopControlChanged","hasPollingQAControlChanged","hasAutoEndMeetingChanged","current","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","spokenLanguage","CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","enabled","manualCaptionControl","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","CONTROLS_WEBCAST_CHANGED","webcastControl","CONTROLS_MEETING_FULL_CHANGED","meetingFull","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","practiceSession","CONTROLS_STAGE_VIEW_UPDATED","videoLayout","CONTROLS_ANNOTATION_CHANGED","annotationControl","CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED","rdcControl","CONTROLS_POLLING_QA_CHANGED","pollingQAControl","CONTROLS_AUTO_END_MEETING_WARNING_CHANGED","autoEndMeetingWarning","LINKS_SERVICES","LINKS_RESOURCES","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","isInitializing","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","forceUpdate","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","push","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","brbChanged","SELF_MEETING_BRB_CHANGED","brb","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","_parsedSelves$previou","_parsedSelves$current","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","hasUserEnteredLobby","SELF_UNADMITTED_GUEST","hasUserBeenAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current2","_parsedSelves$current3","_parsedSelves$current4","MEDIA_STATUS_CHANGE","audioStatus","currentMediaStatus","audio","videoStatus","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","isMainLocus","LOCUS_INFO_UPDATE_URL","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","cloneDeep","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","sourceParticipants","forEach","existIndex","findIndex","p","id","splice","mainLocus","_this4","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty, forEach} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n _SPACE_SHARE_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n BREAKOUTS,\n} from '../constants';\n\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\n\nexport type LocusDTO = {\n controls?: any;\n fullState?: {\n active: boolean;\n count: number;\n lastActive: string;\n locked: boolean;\n sessionId: string;\n seessionIds: string[];\n startTime: number;\n state: string;\n type: string;\n };\n host?: {\n id: string;\n incomingCallProtocols: any[];\n isExternal: boolean;\n name: string;\n orgId: string;\n };\n info?: any;\n links?: any;\n mediaShares?: any[];\n meetings?: any[];\n participants: any[];\n replaces?: any[];\n self?: any;\n sequence?: {\n dirtyParticipants: number;\n entries: number[];\n rangeEnd: number;\n rangeStart: number;\n sequenceHash: number;\n sessionToken: string;\n since: string;\n totalParticipants: number;\n };\n syncUrl?: string;\n url?: string;\n};\n\nexport type LocusApiResponseBody = {\n locus: LocusDTO; // this LocusDTO here might not be the full one (for example it won't have all the participants, but it should have self)\n};\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n resources: any;\n mainSessionLocusCache: any;\n self: any;\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n *\n * @param {Meeting} meeting\n * @param {boolean} isLocusUrlChanged\n * @param {Locus} locus\n * @returns {undefined}\n */\n private doLocusSync(meeting: any, isLocusUrlChanged: boolean, locus: any) {\n let url;\n let isDelta = false;\n let meetingDestroyed = false;\n\n if (isLocusUrlChanged) {\n // for the locus url changed case from breakout to main session, we should always do a full sync, in this case, the url from locus is always on main session,\n // so use the main session locus url to get the full locus(full participants list in the response).\n // for the locus url changed case from main session to breakout, we don't need to care about it here,\n // because it is a USE_INCOMING case, it will not be executed here.\n url = locus.url;\n } else if (this.locusParser.workingCopy?.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .catch((e) => {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n\n isDelta = false;\n\n // Locus sometimes returns 403, for example if meeting has ended, no point trying the fallback to full sync in that case\n if (e.statusCode !== 403) {\n return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n meetingDestroyed = true;\n throw err;\n });\n }\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> got 403 from Locus, skipping fallback to full sync, destroying the meeting'\n );\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n }\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n meetingDestroyed = true;\n throw e;\n })\n .then((res) => {\n if (isEmpty(res.body)) {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from full DTO sync request'\n );\n }\n\n return;\n }\n\n if (isDelta) {\n if (res.body.baseSequence) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n\n return;\n }\n // in some cases Locus might return us full DTO even when we asked for a delta\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> got full DTO when we asked for delta'\n );\n }\n meeting.locusInfo.onFullLocus(res.body);\n })\n .catch((e) => {\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (${e.toString()})`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_SYNC_HANDLING_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n })\n .finally(() => {\n if (!meetingDestroyed) {\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n }\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;\n const isLocusUrlChanged = action === LOCUS_URL_CHANGED;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n case LOCUS_URL_CHANGED:\n this.doLocusSync(meeting, isLocusUrlChanged, locus);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants, []);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * Handles HTTP response from Locus API call.\n * @param {Meeting} meeting meeting object\n * @param {LocusApiResponseBody} responseBody body of the http response from Locus API call\n * @returns {void}\n */\n handleLocusAPIResponse(meeting, responseBody: LocusApiResponseBody): void {\n this.handleLocusDelta(responseBody.locus, meeting);\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n locus.jsSdkMeta = {removedParticipantIds: []};\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat locus event\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(\n locus.participants,\n locus.jsSdkMeta?.removedParticipantIds,\n isReplaceMembers\n );\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.mergeParticipants(this.participants, locus.participants);\n this.updateLocusInfo(locus);\n this.updateParticipants(\n locus.participants,\n locus.jsSdkMeta?.removedParticipantIds,\n isReplaceMembers\n );\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_ ||\n this.parsedLocus.fullState.type === _SPACE_SHARE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Array} removedParticipantIds list of removed participants\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, removedParticipantIds?: string[], isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n removedParticipantIds,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n\n if (participants && Array.isArray(participants) && participants.length > 0) {\n for (const participant of participants) {\n if (participant && participant?.reason === 'FAILURE') {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED,\n {\n displayName: participant?.person?.primaryDisplayString,\n }\n );\n }\n }\n }\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasTranscribeSpokenLanguageChanged,\n hasManualCaptionChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n hasWebcastChanged,\n hasMeetingFullChanged,\n hasPracticeSessionEnabledChanged,\n hasStageViewChanged,\n hasAnnotationControlChanged,\n hasRemoteDesktopControlChanged,\n hasPollingQAControlChanged,\n hasAutoEndMeetingChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasTranscribeSpokenLanguageChanged) {\n const {spokenLanguage} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n {\n spokenLanguage,\n }\n );\n }\n\n if (hasManualCaptionChanged) {\n const {enabled} = current.manualCaptionControl;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED,\n {\n enabled,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n if (hasWebcastChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,\n {state: current.webcastControl}\n );\n }\n\n if (hasMeetingFullChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,\n {state: current.meetingFull}\n );\n }\n\n if (hasPracticeSessionEnabledChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state: current.practiceSession}\n );\n }\n\n if (hasStageViewChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,\n {state: current.videoLayout}\n );\n }\n\n if (hasAnnotationControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED,\n {state: current.annotationControl}\n );\n }\n\n if (hasRemoteDesktopControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED,\n {state: current.rdcControl}\n );\n }\n\n if (hasPollingQAControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED,\n {state: current.pollingQAControl}\n );\n }\n\n if (hasAutoEndMeetingChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED,\n {state: current.autoEndMeetingWarning}\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} resources\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateResources(resources: Record<'webcastInstance', {url: string}>) {\n if (resources && !isEqual(this.resources, resources)) {\n this.resources = resources;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateResources',\n },\n LOCUSINFO.EVENTS.LINKS_RESOURCES,\n {\n resources,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if ((info && !isEqual(this.info, info)) || (!isEqual(this.roles, roles) && info)) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {\n isInitializing: !self, // if self is undefined, then the update is caused by locus init\n }\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @param {boolean} forceUpdate force to update the mediaShares\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object, forceUpdate = false) {\n if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n forceUpdate,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the new locus.self\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any) {\n if (self) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(\n this.parsedLocus.self,\n self,\n this.webex.internal.device.url,\n this.participants // using this.participants instead of locus.participants here, because with delta DTOs locus.participants will only contain a small subset of participants\n );\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(this.participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.brbChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,\n {\n brb: parsedSelves.current.brb,\n }\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.hasUserEnteredLobby) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.hasUserBeenAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @param {Boolean} isMainLocus\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string, isMainLocus = true) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n {url, isMainLocus}\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, main session is not active for the attendee and remove main session locus cache\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this, newLocus);\n\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n const isMainSessionDTO =\n this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);\n\n if (isMainSessionDTO) {\n const isActive =\n [LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(\n this.fullState?.state\n ) && !this.mainSessionLocusCache?.self?.removed;\n\n if (!isActive) {\n this.clearMainSessionLocusCache();\n }\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAkBA,IAAAK,UAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,UAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,UAAA,GAAAL,sBAAA,CAAAF,OAAA;AACA,IAAAQ,UAAA,GAAAN,sBAAA,CAAAF,OAAA;AACA,IAAAS,cAAA,GAAAP,sBAAA,CAAAF,OAAA;AACA,IAAAU,kBAAA,GAAAR,sBAAA,CAAAF,OAAA;AACA,IAAAW,iBAAA,GAAAT,sBAAA,CAAAF,OAAA;AACA,IAAAY,OAAA,GAAAV,sBAAA,CAAAF,OAAA;AACA,IAAAa,QAAA,GAAAX,sBAAA,CAAAF,OAAA;AACA,IAAAc,WAAA,GAAAZ,sBAAA,CAAAF,OAAA;AAAsD,SAAAe,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,OAAA,oBAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,eAAA,CAAAL,CAAA,MAAAE,EAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAO,MAAA,qBAAAL,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAM,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAR,CAAA,CAAAO,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAQ,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAmB,IAAA,CAAArB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAApB,EAAA,CAAAqB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAhB,EAAA,CAAAuB,MAAA,UAAAvB,EAAA,CAAAuB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAN,CAAA,EAAA0B,MAAA,SAAA1B,CAAA,qBAAAA,CAAA,sBAAA2B,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAArB,CAAA,EAAA+B,KAAA,aAAApB,CAAA,iBAAAX,CAAA,CAAAgC,WAAA,EAAArB,CAAA,GAAAX,CAAA,CAAAgC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAuB,WAAA,CAAAlC,CAAA,OAAAW,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAAA,SAAAE,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAf,WAAA,EAAAgB,MAAA,GAAAE,kBAAA,CAAAL,KAAA,EAAAM,SAAA,EAAAF,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAO,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAN,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAW,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAA5B,SAAA,CAAA6B,OAAA,CAAArC,IAAA,CAAA6B,kBAAA,CAAAO,OAAA,8CAAA3C,CAAA;AA+CtD;AACA;AACA;AACA;AACA;AACA;AALA,IAMqB6C,SAAS,GAAAC,OAAA,CAAAb,OAAA,0BAAAc,YAAA;EAAA,IAAAC,UAAA,CAAAf,OAAA,EAAAY,SAAA,EAAAE,YAAA;EAAA,IAAAE,MAAA,GAAAvB,YAAA,CAAAmB,SAAA;EAgC5B;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,UAAYK,aAAa,EAAEC,KAAK,EAAEC,SAAS,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAArB,OAAA,QAAAY,SAAA;IAC3CQ,KAAA,GAAAJ,MAAA,CAAA1C,IAAA;IAAQ,IAAAgD,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IAAA,IAAAE,gBAAA,CAAAtB,OAAA,MAAAuB,uBAAA,CAAAvB,OAAA,EAAAoB,KAAA;IACRA,KAAA,CAAKI,WAAW,GAAG;MACjBC,MAAM,EAAE;IACV,CAAC;IACDL,KAAA,CAAKF,KAAK,GAAGA,KAAK;IAClBE,KAAA,CAAKM,UAAU,GAAG,KAAK;IACvBN,KAAA,CAAKO,qBAAqB,GAAG,CAAC,CAAC;IAC/BP,KAAA,CAAKD,SAAS,GAAGA,SAAS;IAC1BC,KAAA,CAAKH,aAAa,GAAGA,aAAa;IAClCG,KAAA,CAAKQ,WAAW,GAAG,IAAIC,eAAgB,CAAC,CAAC;IAAC,OAAAT,KAAA;EAC5C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE,IAAAU,aAAA,CAAA9B,OAAA,EAAAY,SAAA;IAAAmB,GAAA;IAAAjE,KAAA,EAQA,SAAAkE,YAAoBC,OAAY,EAAEC,iBAA0B,EAAEC,KAAU,EAAE;MAAA,IAAAC,qBAAA;QAAAC,MAAA;MACxE,IAAIC,GAAG;MACP,IAAIC,OAAO,GAAG,KAAK;MACnB,IAAIC,gBAAgB,GAAG,KAAK;MAE5B,IAAIN,iBAAiB,EAAE;QACrB;QACA;QACA;QACA;QACAI,GAAG,GAAGH,KAAK,CAACG,GAAG;MACjB,CAAC,MAAM,KAAAF,qBAAA,GAAI,IAAI,CAACR,WAAW,CAACa,WAAW,cAAAL,qBAAA,eAA5BA,qBAAA,CAA8BM,OAAO,EAAE;QAChDJ,GAAG,GAAG,IAAI,CAACV,WAAW,CAACa,WAAW,CAACC,OAAO;QAC1CH,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACLD,GAAG,GAAGL,OAAO,CAACU,QAAQ;MACxB;MAEAC,oBAAW,CAACC,MAAM,CAACC,IAAI,+DAAAC,MAAA,CAEnBR,OAAO,GAAG,OAAO,GAAG,MAAM,UAE9B,CAAC;;MAED;MACAN,OAAO,CAACe,cAAc,CACnBC,WAAW,CAAC;QAACX,GAAG,EAAHA;MAAG,CAAC,CAAC,CAClBY,KAAK,CAAC,UAACnF,CAAC,EAAK;QACZ,IAAIwE,OAAO,EAAE;UACXK,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,+EACF,CAAC;UAEDK,gBAAO,CAACC,oBAAoB,CAACC,mBAAkB,CAACC,uBAAuB,EAAE;YACvEC,aAAa,EAAEtB,OAAO,CAACsB,aAAa;YACpCjB,GAAG,EAAHA,GAAG;YACHkB,MAAM,EAAEzF,CAAC,CAAC0F,OAAO;YACjBC,SAAS,EAAE3F,CAAC,CAACmB,IAAI;YACjByE,KAAK,EAAE5F,CAAC,CAAC4F,KAAK;YACdC,IAAI,EAAE7F,CAAC,CAAC6F;UACV,CAAC,CAAC;UAEFrB,OAAO,GAAG,KAAK;;UAEf;UACA,IAAIxE,CAAC,CAAC8F,UAAU,KAAK,GAAG,EAAE;YACxB,OAAO5B,OAAO,CAACe,cAAc,CAACC,WAAW,CAAC;cAACX,GAAG,EAAEL,OAAO,CAACU;YAAQ,CAAC,CAAC,CAACO,KAAK,CAAC,UAAC7E,GAAG,EAAK;cAChFuE,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,oFACF,CAAC;cACDT,MAAI,CAACnB,KAAK,CAAC4C,QAAQ,CAACC,OAAO,CAAC9B,OAAO,EAAE+B,iCAAsB,CAACC,qBAAqB,CAAC;cAClFzB,gBAAgB,GAAG,IAAI;cACvB,MAAMnE,GAAG;YACX,CAAC,CAAC;UACJ;UACAuE,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,6GACF,CAAC;QACH,CAAC,MAAM;UACLF,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,oFACF,CAAC;QACH;QACAT,MAAI,CAACnB,KAAK,CAAC4C,QAAQ,CAACC,OAAO,CAAC9B,OAAO,EAAE+B,iCAAsB,CAACC,qBAAqB,CAAC;QAClFzB,gBAAgB,GAAG,IAAI;QACvB,MAAMzE,CAAC;MACT,CAAC,CAAC,CACDmG,IAAI,CAAC,UAACC,GAAG,EAAK;QACb,IAAI,IAAAC,eAAO,EAACD,GAAG,CAACE,IAAI,CAAC,EAAE;UACrB,IAAI9B,OAAO,EAAE;YACXK,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,wGACF,CAAC;UACH,CAAC,MAAM;YACLF,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,iFACF,CAAC;UACH;UAEA;QACF;QAEA,IAAIP,OAAO,EAAE;UACX,IAAI4B,GAAG,CAACE,IAAI,CAACC,YAAY,EAAE;YACzBrC,OAAO,CAACsC,SAAS,CAACC,gBAAgB,CAACL,GAAG,CAACE,IAAI,EAAEpC,OAAO,CAAC;YAErD;UACF;UACA;UACAW,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,uEACF,CAAC;QACH;QACAb,OAAO,CAACsC,SAAS,CAACE,WAAW,CAACN,GAAG,CAACE,IAAI,CAAC;MACzC,CAAC,CAAC,CACDnB,KAAK,CAAC,UAACnF,CAAC,EAAK;QACZ6E,oBAAW,CAACC,MAAM,CAACC,IAAI,iJAAAC,MAAA,CAC2HhF,CAAC,CAACgB,QAAQ,CAAC,CAAC,MAC9J,CAAC;QAEDoE,gBAAO,CAACC,oBAAoB,CAACC,mBAAkB,CAACqB,0BAA0B,EAAE;UAC1EnB,aAAa,EAAEtB,OAAO,CAACsB,aAAa;UACpCjB,GAAG,EAAHA,GAAG;UACHkB,MAAM,EAAEzF,CAAC,CAAC0F,OAAO;UACjBC,SAAS,EAAE3F,CAAC,CAACmB,IAAI;UACjByE,KAAK,EAAE5F,CAAC,CAAC4F,KAAK;UACdC,IAAI,EAAE7F,CAAC,CAAC6F;QACV,CAAC,CAAC;MACJ,CAAC,CAAC,CACDe,OAAO,CAAC,YAAM;QACb,IAAI,CAACnC,gBAAgB,EAAE;UACrB;UACA;UACAH,MAAI,CAACT,WAAW,CAACgD,MAAM,CAAC,CAAC;QAC3B;MACF,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7C,GAAA;IAAAjE,KAAA,EAOA,SAAA+G,oBAAoBC,MAAc,EAAE3C,KAAU,EAAEF,OAAY,EAAE;MAC5D,IAAA8C,qBAAA,GAAqElD,eAAgB,CAACmD,IAAI;QAAnFC,MAAM,GAAAF,qBAAA,CAANE,MAAM;QAAEC,WAAW,GAAAH,qBAAA,CAAXG,WAAW;QAAEC,YAAY,GAAAJ,qBAAA,CAAZI,YAAY;QAAEC,IAAI,GAAAL,qBAAA,CAAJK,IAAI;QAAEC,iBAAiB,GAAAN,qBAAA,CAAjBM,iBAAiB;MACjE,IAAMnD,iBAAiB,GAAG4C,MAAM,KAAKO,iBAAiB;MAEtD,QAAQP,MAAM;QACZ,KAAKK,YAAY;UACflD,OAAO,CAACsC,SAAS,CAACe,YAAY,CAACnD,KAAK,CAAC;UACrC;QACF,KAAK+C,WAAW;QAChB,KAAKE,IAAI;UACP;UACA;QACF,KAAKH,MAAM;QACX,KAAKI,iBAAiB;UACpB,IAAI,CAACrD,WAAW,CAACC,OAAO,EAAEC,iBAAiB,EAAEC,KAAK,CAAC;UACnD;QACF;UACES,oBAAW,CAACC,MAAM,CAACC,IAAI,yEAAAC,MAAA,CACmD+B,MAAM,CAChF,CAAC;MACL;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA/C,GAAA;IAAAjE,KAAA,EAQA,SAAA0G,iBAAiBrC,KAAU,EAAEF,OAAY,EAAE;MAAA,IAAAsD,MAAA;MACzC;MACA,IAAI,CAAC,IAAI,CAAC3D,WAAW,CAAC4D,aAAa,EAAE;QACnC;QACA;QACA,IAAI,CAAC5D,WAAW,CAAC4D,aAAa,GAAG,UAACV,MAAM,EAAEW,UAAU,EAAK;UACvDF,MAAI,CAACV,mBAAmB,CAACC,MAAM,EAAEW,UAAU,EAAExD,OAAO,CAAC;QACvD,CAAC;MACH;MACA;MACA,IAAI,CAACL,WAAW,CAAC8D,YAAY,CAACvD,KAAK,CAAC;IACtC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAJ,GAAA;IAAAjE,KAAA,EAKA,SAAA6H,KAAA,EAAsB;MAAA,IAAAC,YAAA,EAAAC,aAAA;MAAA,IAAjB1D,KAAU,GAAA/B,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA0F,SAAA,GAAA1F,SAAA,MAAG,CAAC,CAAC;MAClB,IAAI,CAAC2F,OAAO,GAAG5D,KAAK,CAAC4D,OAAO,IAAI,IAAI;MACpC,IAAI,CAACC,gBAAgB,GAAG7D,KAAK,CAACF,OAAO,IAAI,IAAI;MAC7C,IAAI,CAACgE,eAAe,GAAG9D,KAAK,CAAC8D,eAAe,IAAI,IAAI;MACpD,IAAI,CAACC,QAAQ,GAAG/D,KAAK,CAAC+D,QAAQ,IAAI,IAAI;MACtC,IAAI,CAACC,MAAM,GAAGhE,KAAK,CAACgE,MAAM,IAAI,IAAI;MAClC,IAAI,CAAC7B,YAAY,GAAGnC,KAAK,CAACmC,YAAY,IAAI,IAAI;MAC9C,IAAI,CAAC8B,QAAQ,GAAGjE,KAAK,CAACiE,QAAQ,IAAI,IAAI;MACtC,IAAI,CAACC,UAAU,GAAGlE,KAAK,CAACkE,UAAU,IAAI,IAAI;MAC1C,IAAI,CAACC,UAAU,GAAGnE,KAAK,CAACmE,UAAU,IAAI,IAAI;MAC1C,IAAI,CAACC,YAAY,GAAGpE,KAAK,CAACoE,YAAY,IAAI,IAAI;;MAE9C;AACJ;AACA;AACA;AACA;AACA;AACA;;MAEI,IAAI,CAACC,gBAAgB,CAACrE,KAAK,CAAC;MAC5B;MACA;MACA,IAAI,CAACsE,kBAAkB,CAACtE,KAAK,CAACoE,YAAY,EAAE,EAAE,CAAC;MAC/C;MACA,IAAI,CAACG,qBAAqB,CAACvE,KAAK,CAACwE,eAAe,EAAExE,KAAK,CAACW,IAAI,CAAC;MAC7D,IAAI,CAAC8D,cAAc,CAACzE,KAAK,CAAC0E,QAAQ,EAAE1E,KAAK,CAAC2E,IAAI,CAAC;MAC/C,IAAI,CAACC,cAAc,CAAC5E,KAAK,CAACG,GAAG,EAAE0E,sBAAa,CAACC,gBAAgB,CAAC9E,KAAK,CAAC,CAAC;MACrE,IAAI,CAAC+E,eAAe,CAAC/E,KAAK,CAACgF,SAAS,CAAC;MACrC,IAAI,CAACC,iBAAiB,CAACjF,KAAK,CAACW,IAAI,CAAC;MAClC,IAAI,CAACuE,kBAAkB,CAAClF,KAAK,CAACmF,YAAY,CAAC;MAC3C;MACA,IAAI,CAACC,UAAU,CAACpF,KAAK,CAAC2E,IAAI,CAAC;MAC3B,IAAI,CAACU,cAAc,CAACrF,KAAK,CAACsF,IAAI,CAAC;MAC/B,IAAI,CAACC,iBAAiB,CAACvF,KAAK,CAACwF,WAAW,CAAC;MACzC,IAAI,CAACC,cAAc,EAAAhC,YAAA,GAACzD,KAAK,CAAC0F,KAAK,cAAAjC,YAAA,uBAAXA,YAAA,CAAakC,QAAQ,CAAC;MAC1C,IAAI,CAACC,eAAe,EAAAlC,aAAA,GAAC1D,KAAK,CAAC0F,KAAK,cAAAhC,aAAA,uBAAXA,aAAA,CAAamC,SAAS,CAAC;IAC9C;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjG,GAAA;IAAAjE,KAAA,EAKA,SAAAmK,aAAa9F,KAAa,EAAE;MAC1B,IAAI,CAACqE,gBAAgB,CAACrE,KAAK,CAAC;MAC5B,IAAI,CAACsC,WAAW,CAACtC,KAAK,CAAC;;MAEvB;MACA,IAAI,CAACT,UAAU,GAAG,IAAI;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAK,GAAA;IAAAjE,KAAA,EAMA,SAAAoK,uBAAuBjG,OAAO,EAAEkG,YAAkC,EAAQ;MACxE,IAAI,CAAC3D,gBAAgB,CAAC2D,YAAY,CAAChG,KAAK,EAAEF,OAAO,CAAC;IACpD;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAF,GAAA;IAAAjE,KAAA,EAMA,SAAAsK,MAAMnG,OAAY,EAAEoG,IAAS,EAAE;MAC7B;MACA,IAAOC,SAAS,GAAID,IAAI,CAAjBC,SAAS;MAChB,IAAMnG,KAAK,GAAG,IAAI,CAACoG,mBAAmB,CAACF,IAAI,CAAClG,KAAK,CAAC;MAClDS,oBAAW,CAACC,MAAM,CAACC,IAAI,oDAAAC,MAAA,CAAoDuF,SAAS,CAAE,CAAC;MAEvFnG,KAAK,CAACqG,SAAS,GAAG;QAACC,qBAAqB,EAAE;MAAE,CAAC;MAE7C,QAAQH,SAAS;QACf,KAAKI,qBAAU,CAACC,gBAAgB;QAChC,KAAKD,qBAAU,CAACE,gBAAgB;QAChC,KAAKF,qBAAU,CAACG,gBAAgB;QAChC,KAAKH,qBAAU,CAACI,uBAAuB;QACvC,KAAKJ,qBAAU,CAACK,yBAAyB;QACzC,KAAKL,qBAAU,CAACM,uBAAuB;QACvC,KAAKN,qBAAU,CAACO,yBAAyB;QACzC,KAAKP,qBAAU,CAACQ,YAAY;QAC5B,KAAKR,qBAAU,CAACS,mBAAmB;QACnC,KAAKT,qBAAU,CAACU,4BAA4B;QAC5C,KAAKV,qBAAU,CAACW,yBAAyB;QACzC,KAAKX,qBAAU,CAACY,oBAAoB;QACpC,KAAKZ,qBAAU,CAACa,aAAa;QAC7B,KAAKb,qBAAU,CAACc,cAAc;UAC5B,IAAI,CAAC/E,WAAW,CAACtC,KAAK,EAAEmG,SAAS,CAAC;UAClC;QACF,KAAKI,qBAAU,CAACe,UAAU;UACxB,IAAI,CAACjF,gBAAgB,CAACrC,KAAK,EAAEF,OAAO,CAAC;UACrC;QAEF;UACE;UACA;UACA,IAAI,CAACuC,gBAAgB,CAACrC,KAAK,EAAEF,OAAO,CAAC;MACzC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAF,GAAA;IAAAjE,KAAA,EAOA,SAAA4L,WAAWC,KAAW,EAAEC,SAAkB,EAAEC,IAAU,EAAE;MACtD,OAAO,IAAI,CAACC,IAAI,CAACH,KAAK,EAAEC,SAAS,EAAEC,IAAI,CAAC;IAC1C;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA9H,GAAA;IAAAjE,KAAA,EAOA,SAAA2G,YAAYtC,KAAU,EAAEmG,SAAkB,EAAE;MAAA,IAAAyB,gBAAA;MAC1C,IAAI,CAAC5H,KAAK,EAAE;QACVS,oBAAW,CAACC,MAAM,CAACmH,KAAK,CACtB,qFACF,CAAC;MACH;MAEA,IAAI,CAAC,IAAI,CAACpI,WAAW,CAACqI,cAAc,CAAC9H,KAAK,CAAC,EAAE;QAC3CS,oBAAW,CAACC,MAAM,CAACC,IAAI,4EAAAC,MAAA,CACsDuF,SAAS,CACtF,CAAC;QAED;MACF;MAEA,IAAI,CAACtC,gBAAgB,GAAG7D,KAAK,CAACF,OAAO,IAAI,IAAI;MAC7C,IAAI,CAACsE,YAAY,GAAGpE,KAAK,CAACoE,YAAY;MACtC,IAAM2D,gBAAgB,GAAGlD,sBAAa,CAACmD,oBAAoB,CAAC,IAAI,CAACtD,QAAQ,EAAE1E,KAAK,CAAC0E,QAAQ,CAAC;MAC1F,IAAI,CAACuD,eAAe,CAACjI,KAAK,CAAC;MAC3B,IAAI,CAACsE,kBAAkB,CACrBtE,KAAK,CAACoE,YAAY,GAAAwD,gBAAA,GAClB5H,KAAK,CAACqG,SAAS,cAAAuB,gBAAA,uBAAfA,gBAAA,CAAiBtB,qBAAqB,EACtCyB,gBACF,CAAC;MACD,IAAI,CAACG,eAAe,CAAC,CAAC;MACtB,IAAI,CAACC,mBAAmB,CAAChC,SAAS,CAAC;MACnC,IAAI,CAACjB,kBAAkB,CAAClF,KAAK,CAACmF,YAAY,CAAC;MAC3C;MACA,IAAI,CAAC1F,WAAW,CAACa,WAAW,GAAGN,KAAK;IACtC;;IAEA;IACA;AACF;AACA;AACA;AACA;IACE;EAAA;IAAAJ,GAAA;IAAAjE,KAAA,EACA,SAAAwM,oBAAoBhC,SAAiB,EAAE;MACrC,IACE,IAAI,CAAC9G,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKC,iBAAM,IAC1C,IAAI,CAAChJ,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKE,uBAAY,EAChD;QACA;QACA,IAAInC,SAAS,KAAKI,qBAAU,CAACY,oBAAoB,EAAE;UACjD;UACA,IAAI,CAACI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACC,eAAe,EACtB;YACEC,cAAc,EAAE,IAAI;YACpBC,cAAc,EAAE;UAClB,CACF,CAAC;QACH;QACA;QACA,IAAIzC,SAAS,KAAKI,qBAAU,CAACC,gBAAgB,EAAE;UAC7C;UACA,IAAI,CAACe,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACC,eAAe,EACtB;YACEC,cAAc,EAAE,KAAK;YACrBC,cAAc,EAAE;UAClB,CACF,CAAC;QACH;MACF;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhJ,GAAA;IAAAjE,KAAA,EAKA,SAAAwH,aAAanD,KAAU,EAAE;MAAA,IAAA6I,iBAAA;MACvB,IAAMd,gBAAgB,GAAGlD,sBAAa,CAACmD,oBAAoB,CAAC,IAAI,CAACtD,QAAQ,EAAE1E,KAAK,CAAC0E,QAAQ,CAAC;MAC1F,IAAI,CAACoE,iBAAiB,CAAC,IAAI,CAAC1E,YAAY,EAAEpE,KAAK,CAACoE,YAAY,CAAC;MAC7D,IAAI,CAAC6D,eAAe,CAACjI,KAAK,CAAC;MAC3B,IAAI,CAACsE,kBAAkB,CACrBtE,KAAK,CAACoE,YAAY,GAAAyE,iBAAA,GAClB7I,KAAK,CAACqG,SAAS,cAAAwC,iBAAA,uBAAfA,iBAAA,CAAiBvC,qBAAqB,EACtCyB,gBACF,CAAC;MACD,IAAI,CAACG,eAAe,CAAC,CAAC;IACxB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAtI,GAAA;IAAAjE,KAAA,EAKA,SAAAsM,gBAAgBjI,KAAK,EAAE;MAAA,IAAA+I,WAAA,EAAAC,YAAA,EAAAC,aAAA,EAAAC,aAAA;MACrB,IAAI,EAAAH,WAAA,GAAA/I,KAAK,CAAC2E,IAAI,cAAAoE,WAAA,uBAAVA,WAAA,CAAY1H,MAAM,MAAK,OAAO,IAAI,EAAA2H,YAAA,GAAAhJ,KAAK,CAAC2E,IAAI,cAAAqE,YAAA,uBAAVA,YAAA,CAAYG,KAAK,MAAK,MAAM,EAAE;QAClE;QACA;QACA;QACA;MACF;MAEA,IAAI,CAAC1E,cAAc,CAACzE,KAAK,CAAC0E,QAAQ,EAAE1E,KAAK,CAAC2E,IAAI,CAAC;MAC/C,IAAI,CAACJ,qBAAqB,CAACvE,KAAK,CAACwE,eAAe,EAAExE,KAAK,CAACW,IAAI,CAAC;MAC7D,IAAI,CAACyI,aAAa,CAACpJ,KAAK,CAAC4D,OAAO,CAAC;MACjC,IAAI,CAACmB,eAAe,CAAC/E,KAAK,CAACgF,SAAS,CAAC;MACrC,IAAI,CAACK,cAAc,CAACrF,KAAK,CAACsF,IAAI,CAAC;MAC/B,IAAI,CAACV,cAAc,CAAC5E,KAAK,CAACG,GAAG,EAAE0E,sBAAa,CAACC,gBAAgB,CAAC9E,KAAK,CAAC,CAAC;MACrE,IAAI,CAACiF,iBAAiB,CAACjF,KAAK,CAACW,IAAI,EAAEX,KAAK,CAAC2E,IAAI,CAAC;MAC9C,IAAI,CAACY,iBAAiB,CAACvF,KAAK,CAACwF,WAAW,CAAC;MACzC,IAAI,CAAC6D,qBAAqB,CAACrJ,KAAK,CAAC8D,eAAe,CAAC;MACjD,IAAI,CAACwF,aAAa,CAACtJ,KAAK,CAACuJ,OAAO,CAAC;MACjC,IAAI,CAACnE,UAAU,CAACpF,KAAK,CAAC2E,IAAI,CAAC;MAC3B,IAAI,CAAC6E,YAAY,CAACxJ,KAAK,CAACgE,MAAM,CAAC;MAC/B,IAAI,CAACyF,gBAAgB,CAACzJ,KAAK,CAACmC,YAAY,CAAC;MACzC,IAAI,CAACuH,cAAc,CAAC1J,KAAK,CAACiE,QAAQ,CAAC;MACnC,IAAI,CAAC0F,gBAAgB,CAAC3J,KAAK,CAACkE,UAAU,CAAC;MACvC,IAAI,CAAC0F,iBAAiB,CAAC5J,KAAK,CAACmE,UAAU,CAAC;MACxC,IAAI,CAACe,kBAAkB,CAAClF,KAAK,CAACmF,YAAY,CAAC;MAC3C,IAAI,CAACM,cAAc,EAAAwD,aAAA,GAACjJ,KAAK,CAAC0F,KAAK,cAAAuD,aAAA,uBAAXA,aAAA,CAAatD,QAAQ,CAAC;MAC1C,IAAI,CAACC,eAAe,EAAAsD,aAAA,GAAClJ,KAAK,CAAC0F,KAAK,cAAAwD,aAAA,uBAAXA,aAAA,CAAarD,SAAS,CAAC;MAC5C,IAAI,CAACgE,gBAAgB,CAAC,CAAC;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAjK,GAAA;IAAAjE,KAAA,EAMA,SAAAmO,gBAAgB1F,YAAwB,EAAEO,IAAS,EAAE;MACnD,IAAI,CAACP,YAAY,IAAIA,YAAY,CAAC/I,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI;MACb;MAEA,OACE+I,YAAY,CAAC2F,IAAI,CACf,UAACC,WAAW;QAAA,OACVrF,IAAI,IACJqF,WAAW,CAACC,QAAQ,KAAKtF,IAAI,CAACsF,QAAQ,KACrC7F,YAAY,CAAC/I,MAAM,IAAI,CAAC,IAAK2O,WAAW,CAAC5B,IAAI,KAAK8B,iBAAM,IAAI,CAACF,WAAW,CAACG,OAAQ,CAAC;MAAA;MACrF;MACF,CAAC,IAAI,IAAI,CAACC,OAAO;IAErB;;IAEA;IACA;AACF;AACA;AACA;EAHE;IAAAxK,GAAA;IAAAjE,KAAA,EAIA,SAAAuM,gBAAA,EAAkB;MAChB,IACE,IAAI,CAAC7I,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKC,iBAAM,IAC1C,IAAI,CAAChJ,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKE,uBAAY,IAChD,IAAI,CAACjJ,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKiC,wBAAa,EACjD;QACA;QACA,IAAMD,OAAO,GAAG,IAAI,CAACN,eAAe,CAAC,IAAI,CAAC1F,YAAY,EAAE,IAAI,CAACO,IAAI,CAAC;QAElE,IAAI,CAAC7F,aAAa,CAAC;UAACsL,OAAO,EAAPA;QAAO,CAAC,CAAC;;QAE7B;;QAEA;QACA;;QAEA;;QAEA,IAAI,IAAI,CAACpF,SAAS,IAAI,IAAI,CAACA,SAAS,CAACmE,KAAK,KAAKmB,gBAAK,CAACC,KAAK,CAACC,QAAQ,EAAE;UACnE;UACA/J,oBAAW,CAACC,MAAM,CAAC+J,IAAI,CACrB,2EACF,CAAC;;UAED;UACA,IAAI,CAAC1L,KAAK,CAAC2L,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/C7N,IAAI,EAAE,0BAA0B;YAChC8N,OAAO,EAAE;cACP7L,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UAEF,IAAI,CAACuI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAE0J,8BAAmB,CAACC,aAAa;YACzCC,WAAW,EAAE;UACf,CACF,CAAC;QACH,CAAC,MAAM,IACLb,OAAO,CAACjB,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACC,IAAI,IAC3C,IAAI,CAAC/L,WAAW,CAACsF,IAAI,KACpB,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAACwE,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACE,QAAQ,IAC5D,IAAI,CAAChM,WAAW,CAACsF,IAAI,CAACwE,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACG,QAAQ,IAC7D,IAAI,CAACjM,WAAW,CAACsF,IAAI,CAACwE,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACI,MAAM,CAAC,EAC9D;UACA;UACA,IAAI,CAACxM,KAAK,CAAC2L,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/C7N,IAAI,EAAE,0BAA0B;YAChC8N,OAAO,EAAE;cACP7L,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACuI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAE0J,8BAAmB,CAACS,YAAY;YACxCP,WAAW,EACT,IAAI,CAAC5L,WAAW,CAACsF,IAAI,CAAC8G,UAAU,IAAI,IAAI,CAACpM,WAAW,CAACsF,IAAI,CAAC8G,UAAU,CAACtC,KAAK,KAAKuC;UACnF,CACF,CAAC;QACH,CAAC,MAAM,IACL,IAAI,CAACrM,WAAW,CAACsF,IAAI,IACrB,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAACwE,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACC,IAAI,KACxDhB,OAAO,CAACjB,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACC,IAAI,IAC1ChB,OAAO,CAACjB,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACE,QAAQ,IAC/CjB,OAAO,CAACjB,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACG,QAAQ,IAC/ClB,OAAO,CAACjB,KAAK,KAAK+B,wBAAa,CAACC,MAAM,CAACQ,IAAI,CAAC,CAAC;QAAA,EAC/C;UACA;UACA,IAAI,CAAC5M,KAAK,CAAC2L,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/C7N,IAAI,EAAE,0BAA0B;YAChC8N,OAAO,EAAE;cACP7L,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UAEF,IAAI,CAACuI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAE0J,8BAAmB,CAACa,SAAS;YACrCX,WAAW,EAAE;UACf,CACF,CAAC;QACH;MACF,CAAC,MAAM,IAAI,IAAI,CAAC5L,WAAW,CAAC2F,SAAS,CAACoD,IAAI,KAAKyD,oBAAS,EAAE;QACxD,IACE,IAAI,CAAC7G,SAAS,KACb,IAAI,CAACA,SAAS,CAACmE,KAAK,KAAKmB,gBAAK,CAACC,KAAK,CAACC,QAAQ;QAC5C;QACA,IAAI,CAACxF,SAAS,CAACmE,KAAK,KAAKmB,gBAAK,CAACC,KAAK,CAACuB,WAAW,CAAC,EACnD;UACArL,oBAAW,CAACC,MAAM,CAAC+J,IAAI,CACrB,uFACF,CAAC;;UAED;UACA,IAAI,CAAC1L,KAAK,CAAC2L,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/C7N,IAAI,EAAE,0BAA0B;YAChC8N,OAAO,EAAE;cACP7L,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACuI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAEQ,iCAAsB,CAACkK,4BAA4B;YAC3Dd,WAAW,EAAE;UACf,CACF,CAAC;QACH,CAAC,MAAM,IAAI,IAAI,CAACjG,SAAS,IAAI,IAAI,CAACA,SAAS,CAACmF,OAAO,EAAE;UACnD;;UAEA;UACA,IAAI,CAACpL,KAAK,CAAC2L,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/C7N,IAAI,EAAE,0BAA0B;YAChC8N,OAAO,EAAE;cACP7L,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACuI,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAEQ,iCAAsB,CAACmK,iBAAiB;YAChDf,WAAW,EAAE;UACf,CACF,CAAC;QACH;QACA;QACA;QAAA,KACK,IAAI,IAAI,CAAC5L,WAAW,CAACsF,IAAI,IAAI,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAACwF,OAAO,EAAE;UAC/D;UACA,IAAI,CAAC5C,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACqC,eAAe,EACtB;YACEzJ,MAAM,EAAEQ,iCAAsB,CAACoK,YAAY;YAC3ChB,WAAW,EAAE;UACf,CACF,CAAC;QACH;MACF,CAAC,MAAM;QACLxK,oBAAW,CAACC,MAAM,CAAC+J,IAAI,CAAC,+DAA+D,CAAC;MAC1F;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA7K,GAAA;IAAAjE,KAAA,EAMA,SAAAkO,iBAAA,EAAmB;MACjB;MACA;MACA,IACE,IAAI,CAACrK,qBAAqB,CAAC0M,kBAAkB,IAC7C,IAAI,CAAC1M,qBAAqB,CAAC2M,kBAAkB,EAC7C;QACA,IAAI,CAACD,kBAAkB,CAAC,CAAC;MAC3B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAtM,GAAA;IAAAjE,KAAA,EAKA,SAAAuQ,mBAAA,EAAqB;MAAA,IAAAE,qBAAA;MACnB;MACA,IACE,IAAI,CAAC/M,WAAW,CAACsF,IAAI,CAAC0H,YAAY,OAAAD,qBAAA,GAAK,IAAI,CAAC/M,WAAW,CAACiG,IAAI,cAAA8G,qBAAA,uBAArBA,qBAAA,CAAuBE,MAAM,KACpE,IAAI,CAACjN,WAAW,CAACsF,IAAI,CAAC4H,SAAS,EAC/B;QACA,IAAI,CAAChF,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC+D,0BAA0B,EACjC;UACEC,aAAa,EAAE;QACjB,CACF,CAAC;MACH,CAAC,MAAM;QACL,IAAI,CAAClF,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC+D,0BAA0B,EACjC;UACEC,aAAa,EAAE;QACjB,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA7M,GAAA;IAAAjE,KAAA,EAQA,SAAA2I,mBAAmBF,YAAoB,EAAEkC,qBAAgC,EAAEoG,SAAmB,EAAE;MAAA,IAAAC,qBAAA;MAC9F,IAAI,CAACpF,UAAU,CACb;QACEgB,IAAI,EAAE,YAAY;QAClBC,QAAQ,EAAE;MACZ,CAAC,EACDC,iBAAM,CAACmE,8BAA8B,EACrC;QACExI,YAAY,EAAZA,YAAY;QACZkC,qBAAqB,EAArBA,qBAAqB;QACrBuG,WAAW,EAAE,IAAI,CAACxN,WAAW,CAACqF,QAAQ,MAAAiI,qBAAA,GAAI,IAAI,CAACtN,WAAW,CAACqF,QAAQ,CAACoI,MAAM,cAAAH,qBAAA,uBAAhCA,qBAAA,CAAkCI,UAAU;QACtFV,YAAY,EAAE,IAAI,CAAChN,WAAW,CAACsF,IAAI,IAAI,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAAC0H,YAAY;QACzEW,MAAM,EAAE,IAAI,CAAC3N,WAAW,CAACsF,IAAI,IAAI,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAACqI,MAAM;QAC7DV,MAAM,EAAE,IAAI,CAACjN,WAAW,CAACiG,IAAI,IAAI,IAAI,CAACjG,WAAW,CAACiG,IAAI,CAACgH,MAAM;QAC7DI,SAAS,EAATA;MACF,CACF,CAAC;MAED,IAAItI,YAAY,IAAI,IAAA6I,QAAA,CAAApP,OAAA,EAAcuG,YAAY,CAAC,IAAIA,YAAY,CAAC/I,MAAM,GAAG,CAAC,EAAE;QAAA,IAAA6R,SAAA,GAAArS,0BAAA,CAChDuJ,YAAY;UAAA+I,KAAA;QAAA;UAAtC,KAAAD,SAAA,CAAA1R,CAAA,MAAA2R,KAAA,GAAAD,SAAA,CAAAzR,CAAA,IAAAC,IAAA,GAAwC;YAAA,IAA7BsO,WAAW,GAAAmD,KAAA,CAAAxR,KAAA;YACpB,IAAIqO,WAAW,IAAI,CAAAA,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE3I,MAAM,MAAK,SAAS,EAAE;cAAA,IAAA+L,mBAAA;cACpD,IAAI,CAAC7F,UAAU,CACb;gBACEgB,IAAI,EAAE,YAAY;gBAClBC,QAAQ,EAAE;cACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC6E,0BAA0B,EAC3C;gBACEC,WAAW,EAAEvD,WAAW,aAAXA,WAAW,wBAAAoD,mBAAA,GAAXpD,WAAW,CAAEwD,MAAM,cAAAJ,mBAAA,uBAAnBA,mBAAA,CAAqBK;cACpC,CACF,CAAC;YACH;UACF;QAAC,SAAAvR,GAAA;UAAAgR,SAAA,CAAAtR,CAAA,CAAAM,GAAA;QAAA;UAAAgR,SAAA,CAAApR,CAAA;QAAA;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA8D,GAAA;IAAAjE,KAAA,EAMA,SAAA8I,eAAeC,QAAgB,EAAEC,IAAY,EAAE;MAC7C,IAAID,QAAQ,IAAI,CAAC,IAAAgJ,eAAO,EAAC,IAAI,CAAChJ,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACrF,WAAW,CAACqF,QAAQ,GAAGG,sBAAa,CAACoB,KAAK,CAACvB,QAAQ,CAAC;QACzD,IAAAiJ,qBAAA,GA8BI9I,sBAAa,CAAC+I,WAAW,CAAC,IAAI,CAAClJ,QAAQ,EAAEA,QAAQ,CAAC;UAAAmJ,sBAAA,GAAAF,qBAAA,CA7BpDG,OAAO;UACLC,mBAAmB,GAAAF,sBAAA,CAAnBE,mBAAmB;UACnBC,yBAAyB,GAAAH,sBAAA,CAAzBG,yBAAyB;UACzBC,0BAA0B,GAAAJ,sBAAA,CAA1BI,0BAA0B;UAC1BC,oBAAoB,GAAAL,sBAAA,CAApBK,oBAAoB;UACpBC,kCAAkC,GAAAN,sBAAA,CAAlCM,kCAAkC;UAClCC,uBAAuB,GAAAP,sBAAA,CAAvBO,uBAAuB;UACvBC,uBAAuB,GAAAR,sBAAA,CAAvBQ,uBAAuB;UACvBC,kBAAkB,GAAAT,sBAAA,CAAlBS,kBAAkB;UAClBC,sBAAsB,GAAAV,sBAAA,CAAtBU,sBAAsB;UACtBC,qBAAqB,GAAAX,sBAAA,CAArBW,qBAAqB;UACrBC,sBAAsB,GAAAZ,sBAAA,CAAtBY,sBAAsB;UACtBC,wBAAwB,GAAAb,sBAAA,CAAxBa,wBAAwB;UACxBC,mBAAmB,GAAAd,sBAAA,CAAnBc,mBAAmB;UACnBC,8BAA8B,GAAAf,sBAAA,CAA9Be,8BAA8B;UAC9BC,gCAAgC,GAAAhB,sBAAA,CAAhCgB,gCAAgC;UAChCC,mBAAmB,GAAAjB,sBAAA,CAAnBiB,mBAAmB;UACnBC,eAAe,GAAAlB,sBAAA,CAAfkB,eAAe;UACfC,wBAAwB,GAAAnB,sBAAA,CAAxBmB,wBAAwB;UACxBC,iBAAiB,GAAApB,sBAAA,CAAjBoB,iBAAiB;UACjBC,qBAAqB,GAAArB,sBAAA,CAArBqB,qBAAqB;UACrBC,gCAAgC,GAAAtB,sBAAA,CAAhCsB,gCAAgC;UAChCC,mBAAmB,GAAAvB,sBAAA,CAAnBuB,mBAAmB;UACnBC,2BAA2B,GAAAxB,sBAAA,CAA3BwB,2BAA2B;UAC3BC,8BAA8B,GAAAzB,sBAAA,CAA9ByB,8BAA8B;UAC9BC,0BAA0B,GAAA1B,sBAAA,CAA1B0B,0BAA0B;UAC1BC,wBAAwB,GAAA3B,sBAAA,CAAxB2B,wBAAwB;UAE1BC,OAAO,GAAA9B,qBAAA,CAAP8B,OAAO;QAGT,IAAIjB,qBAAqB,EAAE;UACzB,IAAI,CAACjH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACiH,8BAA8B,EAC/C;YAACvG,KAAK,EAAEsG,OAAO,CAACE;UAAW,CAC7B,CAAC;QACH;QAEA,IAAIlB,sBAAsB,EAAE;UAC1B,IAAI,CAAClH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACmH,8BAA8B,EAC/C;YAACzG,KAAK,EAAEsG,OAAO,CAACI;UAAY,CAC9B,CAAC;QACH;QAEA,IAAInB,wBAAwB,EAAE;UAC5B,IAAI,CAACnH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACqH,gCAAgC,EACjD;YAAC3G,KAAK,EAAEsG,OAAO,CAACM;UAAc,CAChC,CAAC;QACH;QAEA,IAAIpB,mBAAmB,IAAIC,8BAA8B,EAAE;UACzD,IAAI,CAACrH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACuH,0BAA0B,EAC3C;YAAC7G,KAAK,EAAEsG,OAAO,CAACQ;UAAS,CAC3B,CAAC;QACH;QAEA,IAAIpB,gCAAgC,EAAE;UACpC,IAAI,CAACtH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACyH,2CAA2C,EAC5D;YAAC/G,KAAK,EAAEsG,OAAO,CAACU;UAAsB,CACxC,CAAC;QACH;QAEA,IAAIrB,mBAAmB,EAAE;UACvB,IAAI,CAACvH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAAC2H,2BAA2B,EAC5C;YAACjH,KAAK,EAAEsG,OAAO,CAACY;UAAS,CAC3B,CAAC;QACH;QAEA,IAAItB,eAAe,EAAE;UACnB,IAAI,CAACxH,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAAC6H,sBAAsB,EACvC;YAACnH,KAAK,EAAEsG,OAAO,CAACc;UAAK,CACvB,CAAC;QACH;QAEA,IAAIxC,mBAAmB,IAAIC,yBAAyB,EAAE;UACpD,IAAI7E,KAAK,GAAG,IAAI;UAEhB,IAAI6E,yBAAyB,EAAE;YAC7B,IAAIyB,OAAO,CAAC3C,MAAM,CAAC0D,MAAM,EAAE;cACzBrH,KAAK,GAAGsH,0BAAe,CAACC,MAAM;YAChC,CAAC,MAAM;cACL;cACAvH,KAAK,GAAGsG,OAAO,CAAC3C,MAAM,CAAC6D,SAAS,GAAGF,0BAAe,CAACG,OAAO,GAAGH,0BAAe,CAAC9E,IAAI;YACnF;UACF,CAAC,MAAM,IAAIoC,mBAAmB,EAAE;YAC9B5E,KAAK,GAAGsG,OAAO,CAAC3C,MAAM,CAAC6D,SAAS,GAAGF,0BAAe,CAACI,SAAS,GAAGJ,0BAAe,CAAC9E,IAAI;UACrF;UAEA,IAAI,CAACpE,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACqI,0BAA0B,EAC3C;YACE3H,KAAK,EAALA,KAAK;YACL4D,UAAU,EAAE0C,OAAO,CAAC3C,MAAM,CAACC,UAAU;YACrCgE,YAAY,EAAEtB,OAAO,CAAC3C,MAAM,CAACiE;UAC/B,CACF,CAAC;QACH;QAEA,IAAI9C,0BAA0B,EAAE;UAC9B,IAAO+C,mBAAmB,GAAIvB,OAAO,CAACwB,gBAAgB,CAA/CD,mBAAmB;UAE1B,IAAI,CAACzJ,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACyI,kCAAkC,EACnD;YACEF,mBAAmB,EAAnBA;UACF,CACF,CAAC;QACH;QAEA,IAAI9C,oBAAoB,EAAE;UACxB,IAAAiD,mBAAA,GAAgC1B,OAAO,CAAC2B,UAAU;YAA3CC,YAAY,GAAAF,mBAAA,CAAZE,YAAY;YAAEC,OAAO,GAAAH,mBAAA,CAAPG,OAAO;UAE5B,IAAI,CAAC/J,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC8I,mCAAmC,EACpD;YACEF,YAAY,EAAZA,YAAY;YACZC,OAAO,EAAPA;UACF,CACF,CAAC;QACH;QAEA,IAAInD,kCAAkC,EAAE;UACtC,IAAOqD,cAAc,GAAI/B,OAAO,CAAC2B,UAAU,CAApCI,cAAc;UAErB,IAAI,CAACjK,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgJ,sDAAsD,EACvE;YACED,cAAc,EAAdA;UACF,CACF,CAAC;QACH;QAEA,IAAIpD,uBAAuB,EAAE;UAC3B,IAAOsD,OAAO,GAAIjC,OAAO,CAACkC,oBAAoB,CAAvCD,OAAO;UAEd,IAAI,CAACnK,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACmJ,uCAAuC,EACxD;YACEF,OAAO,EAAPA;UACF,CACF,CAAC;QACH;QAEA,IAAIpD,kBAAkB,EAAE;UACtB,IAAOuD,QAAQ,GAAIpC,OAAO,CAAnBoC,QAAQ;UACfA,QAAQ,CAACC,cAAc,GAAGC,kBAAS,CAACC,yBAAyB,CAC3DrN,IAAI,EACJ,IAAI,CAAC5F,KAAK,CAAC2L,QAAQ,CAACuH,MAAM,CAAC9R,GAC7B,CAAC;UACD,IAAI,CAACoH,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACyJ,iCAAiC,EAClD;YACEL,QAAQ,EAARA;UACF,CACF,CAAC;QACH;QAEA,IAAI7C,wBAAwB,EAAE;UAC5B,IAAOmD,cAAc,GAAI1C,OAAO,CAAzB0C,cAAc;UACrB,IAAI,CAAC5K,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC2J,uCAAuC,EACxD;YACED,cAAc,EAAdA;UACF,CACF,CAAC;QACH;QAEA,IAAI9D,uBAAuB,EAAE;UAC3B,IAAOgE,aAAa,GAAI5C,OAAO,CAAxB4C,aAAa;UAEpB,IAAI,CAACvT,aAAa,CAAC;YAACuT,aAAa,EAAbA;UAAa,CAAC,CAAC;UAEnC,IAAI,CAAC9K,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC6J,gCAAgC,EACjD;YACED,aAAa,EAAbA;UACF,CACF,CAAC;QACH;;QAEA;QACA;QACA,IAAI9D,sBAAsB,EAAE;UAC1B,IAAOgE,YAAY,GAAI9C,OAAO,CAAvB8C,YAAY;UAEnB,IAAI,CAACzT,aAAa,CAAC;YAAC0T,kBAAkB,EAAED;UAAY,CAAC,CAAC;UAEtD,IAAI,CAAChL,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgK,qCAAqC,EACtD;YACE;YACAC,aAAa,EAAEH;UACjB,CACF,CAAC;QACH;QAEA,IAAItD,iBAAiB,EAAE;UACrB,IAAI,CAAC1H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACkK,wBAAwB,EACzC;YAACxJ,KAAK,EAAEsG,OAAO,CAACmD;UAAc,CAChC,CAAC;QACH;QAEA,IAAI1D,qBAAqB,EAAE;UACzB,IAAI,CAAC3H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACoK,6BAA6B,EAC9C;YAAC1J,KAAK,EAAEsG,OAAO,CAACqD;UAAW,CAC7B,CAAC;QACH;QAEA,IAAI3D,gCAAgC,EAAE;UACpC,IAAI,CAAC5H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACsK,wCAAwC,EACzD;YAAC5J,KAAK,EAAEsG,OAAO,CAACuD;UAAe,CACjC,CAAC;QACH;QAEA,IAAI5D,mBAAmB,EAAE;UACvB,IAAI,CAAC7H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACwK,2BAA2B,EAC5C;YAAC9J,KAAK,EAAEsG,OAAO,CAACyD;UAAW,CAC7B,CAAC;QACH;QAEA,IAAI7D,2BAA2B,EAAE;UAC/B,IAAI,CAAC9H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAAC0K,2BAA2B,EAC5C;YAAChK,KAAK,EAAEsG,OAAO,CAAC2D;UAAiB,CACnC,CAAC;QACH;QAEA,IAAI9D,8BAA8B,EAAE;UAClC,IAAI,CAAC/H,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAAC4K,uCAAuC,EACxD;YAAClK,KAAK,EAAEsG,OAAO,CAAC6D;UAAU,CAC5B,CAAC;QACH;QAEA,IAAI/D,0BAA0B,EAAE;UAC9B,IAAI,CAAChI,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAAC8K,2BAA2B,EAC5C;YAACpK,KAAK,EAAEsG,OAAO,CAAC+D;UAAgB,CAClC,CAAC;QACH;QAEA,IAAIhE,wBAAwB,EAAE;UAC5B,IAAI,CAACjI,UAAU,CACb;YAACgB,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6E,oBAAS,CAAC5E,MAAM,CAACgL,yCAAyC,EAC1D;YAACtK,KAAK,EAAEsG,OAAO,CAACiE;UAAqB,CACvC,CAAC;QACH;QAEA,IAAI,CAAChP,QAAQ,GAAGA,QAAQ;MAC1B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA9E,GAAA;IAAAjE,KAAA,EAMA,SAAA4I,sBAAsBC,eAAuB,EAAE7D,IAAS,EAAE;MACxD,IAAI6D,eAAe,IAAI,CAAC,IAAAkJ,eAAO,EAAC,IAAI,CAAClJ,eAAe,EAAEA,eAAe,CAAC,EAAE;QACtE,IAAI,CAACA,eAAe,GAAGA,eAAe;QACtC,IAAI,CAAC1F,aAAa,CAAC;UAAC0F,eAAe,EAAfA;QAAe,CAAC,CAAC;MACvC,CAAC,MAAM,IACL7D,IAAI,IACJA,IAAI,CAAC6D,eAAe,IACpB,CAAC,IAAAkJ,eAAO,EAAC,IAAI,CAAClJ,eAAe,EAAE7D,IAAI,CAAC6D,eAAe,CAAC,EACpD;QACA,IAAI,CAACA,eAAe,GAAG7D,IAAI,CAAC6D,eAAe;QAC3C,IAAI,CAAC1F,aAAa,CAAC;UAAC0F,eAAe,EAAE7D,IAAI,CAAC6D;QAAe,CAAC,CAAC;MAC7D;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA5E,GAAA;IAAAjE,KAAA,EAKA,SAAAyN,cAAcxF,OAAe,EAAE;MAC7B,IAAIA,OAAO,IAAI,CAAC,IAAA8J,eAAO,EAAC,IAAI,CAAC9J,OAAO,EAAEA,OAAO,CAAC,EAAE;QAC9C,IAAI,CAACA,OAAO,GAAGA,OAAO;MACxB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhE,GAAA;IAAAjE,KAAA,EAKA,SAAA8J,eAAeE,QAAsD,EAAE;MACrE,IAAIA,QAAQ,IAAI,CAAC,IAAA+H,eAAO,EAAC,IAAI,CAAC/H,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACA,QAAQ,GAAGA,QAAQ;QACxB,IAAI,CAAC4B,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACkL,cAAc,EAC/B;UACEhO,QAAQ,EAARA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA/F,GAAA;IAAAjE,KAAA,EAKA,SAAAiK,gBAAgBC,SAAmD,EAAE;MACnE,IAAIA,SAAS,IAAI,CAAC,IAAA6H,eAAO,EAAC,IAAI,CAAC7H,SAAS,EAAEA,SAAS,CAAC,EAAE;QACpD,IAAI,CAACA,SAAS,GAAGA,SAAS;QAC1B,IAAI,CAAC0B,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACmL,eAAe,EAChC;UACE/N,SAAS,EAATA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjG,GAAA;IAAAjE,KAAA,EAKA,SAAAoJ,gBAAgBC,SAAiB,EAAE;MACjC,IAAIA,SAAS,IAAI,CAAC,IAAA0I,eAAO,EAAC,IAAI,CAAC1I,SAAS,EAAEA,SAAS,CAAC,EAAE;QACpD,IAAMlH,MAAM,GAAG+V,kBAAS,CAACC,YAAY,CAAC,IAAI,CAAC9O,SAAS,EAAEA,SAAS,CAAC;QAEhE,IAAI,CAAClG,aAAa,CAAChB,MAAM,CAAC2R,OAAO,CAAC;QAElC,IAAI3R,MAAM,CAACgQ,OAAO,CAACiG,qBAAqB,EAAE;UACxC,IAAI,CAACxM,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACuL,+BAA+B,EAChD;YACEC,aAAa,EAAEnW,MAAM,CAACoW,QAAQ,IAAIpW,MAAM,CAACoW,QAAQ,CAACC,YAAY;YAC9DC,YAAY,EAAEtW,MAAM,CAAC2R,OAAO,CAAC0E;UAC/B,CACF,CAAC;QACH;QAEA,IAAIrW,MAAM,CAACgQ,OAAO,CAACuG,oBAAoB,EAAE;UACvC,IAAI,CAAC9M,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC6L,sBAAsB,EACvC;YACElM,IAAI,EAAEtK,MAAM,CAAC2R,OAAO,CAACrH;UACvB,CACF,CAAC;QACH;QACA,IAAI,CAAC/I,WAAW,CAAC2F,SAAS,GAAGlH,MAAM,CAAC2R,OAAO;QAC3C,IAAI,CAACzK,SAAS,GAAGA,SAAS;MAC5B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAApF,GAAA;IAAAjE,KAAA,EAOA,SAAA0J,eAAeC,IAAY,EAAE;MAC3B,IAAIA,IAAI,IAAI,CAAC,IAAAoI,eAAO,EAAC,IAAI,CAACpI,IAAI,EAAEA,IAAI,CAAC,EAAE;QACrC,IAAMiP,WAAW,GAAGC,kBAAS,CAACC,QAAQ,CAAC,IAAI,CAACnP,IAAI,EAAEA,IAAI,CAAC;QAEvD,IAAI,CAACxG,aAAa,CAACyV,WAAW,CAAC9E,OAAO,CAAC;QACvC,IAAI,CAACpQ,WAAW,CAACiG,IAAI,GAAGiP,WAAW,CAAC9E,OAAO;QAC3C,IAAI8E,WAAW,CAACzG,OAAO,CAAC4G,SAAS,EAAE;UACjC,IAAI,CAAClV,qBAAqB,CAAC0M,kBAAkB,GAAG,IAAI;UACpD,IAAI,CAAC3E,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACkM,sBAAsB,EAC7B;YACEC,OAAO,EAAEL,WAAW,CAAC9E,OAAO;YAC5BoF,OAAO,EAAEN,WAAW,CAACL;UACvB,CACF,CAAC;QACH;QACA,IAAI,CAAC5O,IAAI,GAAGA,IAAI;MAClB,CAAC,MAAM;QACL,IAAI,CAAC9F,qBAAqB,CAAC0M,kBAAkB,GAAG,KAAK;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtM,GAAA;IAAAjE,KAAA,EAMA,SAAAsJ,kBAAkBtE,IAAY,EAAEgE,IAAa,EAAE;MAAA,IAAAmQ,qBAAA;MAC7C,IAAMC,KAAK,GAAGpQ,IAAI,GAAGoN,kBAAS,CAACiD,QAAQ,CAACrQ,IAAI,CAAC,GAAG,EAAAmQ,qBAAA,OAAI,CAACzV,WAAW,CAACsF,IAAI,cAAAmQ,qBAAA,uBAArBA,qBAAA,CAAuBC,KAAK,KAAI,EAAE;MAClF,IAAKpU,IAAI,IAAI,CAAC,IAAA+M,eAAO,EAAC,IAAI,CAAC/M,IAAI,EAAEA,IAAI,CAAC,IAAM,CAAC,IAAA+M,eAAO,EAAC,IAAI,CAACqH,KAAK,EAAEA,KAAK,CAAC,IAAIpU,IAAK,EAAE;QAChF,IAAMsU,QAAQ,GAAGlD,kBAAS,CAACkD,QAAQ,CAACtQ,IAAI,IAAI,IAAI,CAACtF,WAAW,CAACsF,IAAI,CAAC;QAClE,IAAMuQ,UAAU,GAAGC,kBAAS,CAACC,QAAQ,CAAC,IAAI,CAAC/V,WAAW,CAACsB,IAAI,EAAEA,IAAI,EAAEoU,KAAK,EAAEE,QAAQ,CAAC;QAEnF,IAAIC,UAAU,CAACpH,OAAO,CAACuH,QAAQ,EAAE;UAC/B,IAAI,CAAC9N,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC6M,cAAc,EAC/B3U,IACF,CAAC;QACH;QACA,IAAIuU,UAAU,CAACpH,OAAO,CAACyH,UAAU,EAAE;UACjC,IAAI,CAAChO,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC+M,gBAAgB,EACjC7U,IACF,CAAC;QACH;QAEA,IAAI,CAACA,IAAI,GAAGA,IAAI;QAChB,IAAI,CAACtB,WAAW,CAACsB,IAAI,GAAGuU,UAAU,CAACzF,OAAO;QAC1C;QACA,IAAI,CAAC3Q,aAAa,CAACoW,UAAU,CAACzF,OAAO,CAAC;QAEtC,IAAI,CAAClI,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgN,oBAAoB,EACrC;UACEC,cAAc,EAAE,CAAC/Q,IAAI,CAAE;QACzB,CACF,CAAC;MACH;;MACA,IAAI,CAACoQ,KAAK,GAAGA,KAAK;IACpB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAnV,GAAA;IAAAjE,KAAA,EAKA,SAAAuJ,mBAAmBC,YAAoB,EAAE;MACvC;MACA,IAAIwQ,0BAAiB,CAACC,UAAU,CAAC,IAAI,CAACzQ,YAAY,EAAEA,YAAY,CAAC,EAAE;QACjE;MACF;MAEA,IAAM0Q,kBAAkB,GAAGF,0BAAiB,CAAC1P,KAAK,CAACd,YAAY,CAAC;MAEhE,IAAI,CAACrG,aAAa,CAAC;QAACqG,YAAY,EAAE0Q;MAAkB,CAAC,CAAC;MAEtD,IAAI,CAACtO,UAAU,CACb;QACEgB,IAAI,EAAE,YAAY;QAClBC,QAAQ,EAAE;MACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACqN,qBAAqB,EACtCD,kBACF,CAAC;MACD,IAAI,CAAC1Q,YAAY,GAAGA,YAAY;IAClC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAvF,GAAA;IAAAjE,KAAA,EAQA,SAAA4J,kBAAkBC,WAAmB,EAAuB;MAAA,IAArBuQ,WAAW,GAAA9X,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA0F,SAAA,GAAA1F,SAAA,MAAG,KAAK;MACxD,IAAIuH,WAAW,KAAK,CAAC,IAAAkI,eAAO,EAAC,IAAI,CAAClI,WAAW,EAAEA,WAAW,CAAC,IAAIuQ,WAAW,CAAC,EAAE;QAC3E,IAAMC,iBAAiB,GAAGC,yBAAgB,CAACC,cAAc,CAAC,IAAI,CAAC1Q,WAAW,EAAEA,WAAW,CAAC;QAExF,IAAI,CAAC1G,aAAa,CAACkX,iBAAiB,CAACvG,OAAO,CAAC;QAC7C,IAAI,CAACpQ,WAAW,CAACmG,WAAW,GAAGwQ,iBAAiB,CAACvG,OAAO;QACxD,IAAI,CAACjK,WAAW,GAAGA,WAAW;QAC9B,IAAI,CAAC+B,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC0N,8BAA8B,EACrC;UACE1G,OAAO,EAAEuG,iBAAiB,CAACvG,OAAO;UAClCyE,QAAQ,EAAE8B,iBAAiB,CAAC9B,QAAQ;UACpC6B,WAAW,EAAXA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAnW,GAAA;IAAAjE,KAAA,EAKA,SAAA0N,sBAAsBvF,eAAuB,EAAE;MAC7C,IAAIA,eAAe,IAAI,CAAC,IAAA4J,eAAO,EAAC,IAAI,CAAC5J,eAAe,EAAEA,eAAe,CAAC,EAAE;QACtE,IAAI,CAACA,eAAe,GAAGA,eAAe;MACxC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAlE,GAAA;IAAAjE,KAAA,EAKA,SAAA2N,cAAcC,OAAe,EAAE;MAC7B,IAAIA,OAAO,IAAI,CAAC,IAAAmE,eAAO,EAAC,IAAI,CAACnE,OAAO,EAAEA,OAAO,CAAC,EAAE;QAC9C,IAAI,CAACA,OAAO,GAAGA,OAAO;MACxB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA3J,GAAA;IAAAjE,KAAA,EAOA,SAAAyJ,WAAWT,IAAS,EAAE;MACpB,IAAIA,IAAI,EAAE;QACR;QACA,IAAMyR,YAAY,GAAGrE,kBAAS,CAACsE,SAAS,CACtC,IAAI,CAAChX,WAAW,CAACsF,IAAI,EACrBA,IAAI,EACJ,IAAI,CAAC5F,KAAK,CAAC2L,QAAQ,CAACuH,MAAM,CAAC9R,GAAG,EAC9B,IAAI,CAACiE,YAAY,CAAC;QACpB,CAAC;;QAED,IAAI,CAACtF,aAAa,CAACsX,YAAY,CAAC3G,OAAO,CAAC;QACxC,IAAI,CAACpQ,WAAW,CAACsF,IAAI,GAAGyR,YAAY,CAAC3G,OAAO;QAE5C,IAAM6G,OAAO,GAAG,IAAI,CAACjX,WAAW,CAACC,MAAM,CAAC,IAAI,CAACD,WAAW,CAACC,MAAM,CAACjE,MAAM,GAAG,CAAC,CAAC;QAE3E,IAAIib,OAAO,KAAKF,YAAY,CAAC3G,OAAO,CAACtG,KAAK,EAAE;UAC1C,IAAI,CAAC9J,WAAW,CAACC,MAAM,CAACiX,IAAI,CAACH,YAAY,CAAC3G,OAAO,CAACtG,KAAK,CAAC;QAC1D;;QAEA;QACA;QACA,IAAMrL,MAAM,GAAGiU,kBAAS,CAACyE,SAAS,CAChC,IAAI,CAAC1M,eAAe,CAAC,IAAI,CAAC1F,YAAY,EAAEO,IAAI,CAAC,EAC7C,IAAI,CAACtF,WAAW,CAAC2F,SAAS,CAACoD,IAAI,EAC/B,IAAI,CAAC/I,WAAW,CAACsB,IAAI,CAAC8V,MACxB,CAAC;QAED,IAAI3Y,MAAM,CAAC2Y,MAAM,EAAE;UACjB,IAAI,CAAC3X,aAAa,CAAChB,MAAM,CAAC;QAC5B;QAEA,IAAIsY,YAAY,CAACtI,OAAO,CAAC4I,gBAAgB,EAAE;UACzC,IAAI,CAAClX,qBAAqB,CAAC2M,kBAAkB,GAAG,IAAI;QACtD,CAAC,MAAM;UACL,IAAI,CAAC3M,qBAAqB,CAAC2M,kBAAkB,GAAG,KAAK;QACvD;QAEA,IAAIiK,YAAY,CAACtI,OAAO,CAAC6I,aAAa,EAAE;UACtC,IAAI,CAACpP,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACmO,+BAA+B,EAChD;YAACC,MAAM,EAAET,YAAY,CAAC3G,OAAO,CAACoH;UAAM,CACtC,CAAC;QACH;QAEA,IAAIT,YAAY,CAACtI,OAAO,CAACgJ,gBAAgB,EAAE;UACzC,IAAI,CAACvP,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACsO,8BAA8B,EAC/C;YAACC,gBAAgB,EAAEZ,YAAY,CAAC3G,OAAO,CAACuH;UAAgB,CAC1D,CAAC;QACH;QAEA,IAAIZ,YAAY,CAACtI,OAAO,CAACmJ,UAAU,EAAE;UACnC,IAAI,CAAC1P,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACyO,wBAAwB,EACzC;YACEC,GAAG,EAAEf,YAAY,CAAC3G,OAAO,CAAC0H;UAC5B,CACF,CAAC;QACH;QAEA,IAAIf,YAAY,CAACtI,OAAO,CAACsJ,qBAAqB,EAAE;UAC9C,IAAI,CAAC7P,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC4O,mCAAmC,EACpD;YACElF,cAAc,EAAEiE,YAAY,CAAC3G,OAAO,CAAC0C,cAAc;YACnDmF,iBAAiB,EAAElB,YAAY,CAAC3G,OAAO,CAACzC;UAC1C,CACF,CAAC;QACH;QAEA,IAAIoJ,YAAY,CAACtI,OAAO,CAACyJ,yBAAyB,EAAE;UAClD,IAAI,CAAChQ,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC+O,4BAA4B,EAC7C;YAACnW,MAAM,EAAEsD,IAAI,CAACtD;UAAM,CACtB,CAAC;QACH;QAEA,IAAI+U,YAAY,CAACtI,OAAO,CAAC4I,gBAAgB,EAAE;UACzC,IAAI,CAACnP,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgP,sBAAsB,EACvC9S,IACF,CAAC;QACH;QAEA,IAAIyR,YAAY,CAACtI,OAAO,CAAC4J,cAAc,EAAE;UAAA,IAAAC,qBAAA,EAAAC,qBAAA;UACvC,IAAI,CAACrQ,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACoP,kBAAkB,EACnC;YAACC,QAAQ,GAAAH,qBAAA,GAAEvB,YAAY,CAAClC,QAAQ,cAAAyD,qBAAA,uBAArBA,qBAAA,CAAuB5C,KAAK;YAAEgD,QAAQ,GAAAH,qBAAA,GAAExB,YAAY,CAAC3G,OAAO,cAAAmI,qBAAA,uBAApBA,qBAAA,CAAsB7C;UAAK,CAChF,CAAC;QACH;QAEA,IAAIqB,YAAY,CAACtI,OAAO,CAACkK,2BAA2B,EAAE;UACpD,IAAI,CAACzQ,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgK,qCAAqC,EACtD;YACEwF,KAAK,EAAE7B,YAAY,CAAC3G,OAAO,CAACyI;YAC5B;UACF,CACF,CAAC;QACH;;QACA,IAAI9B,YAAY,CAACtI,OAAO,CAACqK,gCAAgC,EAAE;UACzD,IAAI,CAAC5Q,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC2P,qBAAqB,EACtC;YACEH,KAAK,EAAE7B,YAAY,CAAC3G,OAAO,CAAC4I,WAAW;YACvC3F,aAAa,EAAE0D,YAAY,CAAC3G,OAAO,CAACiD;UACtC,CACF,CAAC;QACH;QACA,IAAI0D,YAAY,CAACtI,OAAO,CAACwK,sBAAsB,EAAE;UAC/C,IAAI,CAAC/Q,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC8P,+BAA+B,EAChD;YACEN,KAAK,EAAE7B,YAAY,CAAC3G,OAAO,CAAC4I,WAAW;YACvC3F,aAAa,EAAE0D,YAAY,CAAC3G,OAAO,CAACiD;UACtC,CACF,CAAC;QACH;QACA,IAAI0D,YAAY,CAACtI,OAAO,CAAC0K,iCAAiC,EAAE;UAC1D,IAAI,CAACjR,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACgQ,sBAAsB,EACvC,CAAC,CACH,CAAC;QACH;QACA,IAAIrC,YAAY,CAACtI,OAAO,CAAC4K,mBAAmB,EAAE;UAC5C,IAAI,CAACnR,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACkQ,qBAAqB,EACtChU,IACF,CAAC;QACH;QACA,IAAIyR,YAAY,CAACtI,OAAO,CAAC8K,mBAAmB,EAAE;UAC5C,IAAI,CAACrR,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACoQ,mBAAmB,EACpClU,IACF,CAAC;QACH;QAEA,IAAIyR,YAAY,CAACtI,OAAO,CAACgL,eAAe,EAAE;UACxC,IAAI,CAACvR,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC;UACD;UACA6E,oBAAS,CAAC5E,MAAM,CAACsQ,gBAAgB,EACjChH,kBAAS,CAACiH,cAAc,CAACrU,IAAI,CAACsU,aAAa,CAC7C,CAAC;QACH;QAEA,IACE7C,YAAY,CAACtI,OAAO,CAACoL,gBAAgB,IACrC9C,YAAY,CAACtI,OAAO,CAACqL,gBAAgB,IACrC/C,YAAY,CAACtI,OAAO,CAACsL,gBAAgB,EACrC;UAAA,IAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;UACA,IAAI,CAAChS,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC+Q,mBAAmB,EACpC;YACEC,WAAW,GAAAJ,sBAAA,GAAEjD,YAAY,CAAC3G,OAAO,CAACiK,kBAAkB,cAAAL,sBAAA,uBAAvCA,sBAAA,CAAyCM,KAAK;YAC3DC,WAAW,GAAAN,sBAAA,GAAElD,YAAY,CAAC3G,OAAO,CAACiK,kBAAkB,cAAAJ,sBAAA,uBAAvCA,sBAAA,CAAyC/I,KAAK;YAC3DsJ,WAAW,GAAAN,sBAAA,GAAEnD,YAAY,CAAC3G,OAAO,CAACiK,kBAAkB,cAAAH,sBAAA,uBAAvCA,sBAAA,CAAyCO;UACxD,CACF,CAAC;QACH;QAEA,IAAI1D,YAAY,CAACtI,OAAO,CAACiM,eAAe,EAAE;UACxC,IAAI,CAACxS,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACuR,cACnB,CAAC;QACH;QAEA,IAAI5D,YAAY,CAACtI,OAAO,CAACmM,mCAAmC,EAAE;UAC5D,IAAI,CAAC1S,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAACyR,wCAAwC,EACzD;YAACC,4BAA4B,EAAE/D,YAAY,CAAC3G,OAAO,CAAC0K;UAA4B,CAClF,CAAC;QACH;QAEA,IAAI/D,YAAY,CAACtI,OAAO,CAACsM,uBAAuB,EAAE;UAChD,IAAI,CAAC7S,UAAU,CACb;YACEgB,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6E,oBAAS,CAAC5E,MAAM,CAAC4R,8BAA8B,EAC/C;YAACC,gBAAgB,EAAElE,YAAY,CAAC3G,OAAO,CAAC6K;UAAgB,CAC1D,CAAC;QACH;QAEA,IAAI,CAAC/S,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC8R,sBAAsB,EAC7B;UACEC,OAAO,EAAEpE,YAAY,CAAClC,QAAQ;UAC9BuG,OAAO,EAAErE,YAAY,CAAC3G;QACxB,CACF,CAAC;QACD,IAAI,CAACpQ,WAAW,CAACsF,IAAI,GAAGyR,YAAY,CAAC3G,OAAO;QAC5C;QACA,IAAI,CAAC9K,IAAI,GAAGA,IAAI;MAClB,CAAC,MAAM;QACL,IAAI,CAACnF,qBAAqB,CAAC2M,kBAAkB,GAAG,KAAK;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAvM,GAAA;IAAAjE,KAAA,EAOA,SAAAiJ,eAAezE,GAAW,EAAsB;MAAA,IAApBua,WAAW,GAAAzc,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA0F,SAAA,GAAA1F,SAAA,MAAG,IAAI;MAC5C,IAAIkC,GAAG,IAAI,IAAI,CAACA,GAAG,KAAKA,GAAG,EAAE;QAC3B,IAAI,CAACA,GAAG,GAAGA,GAAG;QACd,IAAI,CAACrB,aAAa,CAAC;UAAC0B,QAAQ,EAAEL;QAAG,CAAC,CAAC;QACnC,IAAI,CAACoH,UAAU,CACb;UACEgB,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAACkS,qBAAqB,EAC5B;UAACxa,GAAG,EAAHA,GAAG;UAAEua,WAAW,EAAXA;QAAW,CACnB,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA9a,GAAA;IAAAjE,KAAA,EAKA,SAAA6N,aAAaxF,MAAc,EAAE;MAC3B,IAAIA,MAAM,IAAI,CAAC,IAAA0J,eAAO,EAAC,IAAI,CAAC1J,MAAM,EAAEA,MAAM,CAAC,EAAE;QAC3C,IAAI,CAACA,MAAM,GAAGA,MAAM;MACtB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAApE,GAAA;IAAAjE,KAAA,EAKA,SAAA8N,iBAAiBtH,YAAoB,EAAE;MACrC,IAAIA,YAAY,IAAI,CAAC,IAAAuL,eAAO,EAAC,IAAI,CAACvL,YAAY,EAAEA,YAAY,CAAC,EAAE;QAC7D,IAAI,CAACA,YAAY,GAAGA,YAAY;MAClC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAvC,GAAA;IAAAjE,KAAA,EAKA,SAAA+N,eAAezF,QAAgB,EAAE;MAC/B,IAAIA,QAAQ,IAAI,CAAC,IAAAyJ,eAAO,EAAC,IAAI,CAACzJ,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MAC1B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAArE,GAAA;IAAAjE,KAAA,EAKA,SAAAgO,iBAAiBzF,UAAkB,EAAE;MACnC,IAAIA,UAAU,IAAI,CAAC,IAAAwJ,eAAO,EAAC,IAAI,CAACxJ,UAAU,EAAEA,UAAU,CAAC,EAAE;QACvD,IAAI,CAACA,UAAU,GAAGA,UAAU;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAtE,GAAA;IAAAjE,KAAA,EAKA,SAAAiO,kBAAkBzF,UAAsB,EAAE;MACxC,IAAIA,UAAU,IAAI,CAAC,IAAAuJ,eAAO,EAAC,IAAI,CAACvJ,UAAU,EAAEA,UAAU,CAAC,EAAE;QACvD,IAAI,CAACA,UAAU,GAAGA,UAAU;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAvE,GAAA;IAAAjE,KAAA,EAMA,SAAA0I,iBAAiBrE,KAAU,EAAE;MAC3B,IAAM8E,gBAAgB,GAAGD,sBAAa,CAACC,gBAAgB,CAAC9E,KAAK,CAAC;MAC9D,IAAI8E,gBAAgB,EAAE;QACpB,IAAI,CAAC8V,2BAA2B,CAAC5a,KAAK,CAAC;MACzC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAJ,GAAA;IAAAjE,KAAA,EAOA,SAAAyK,oBAAoByU,QAAa,EAAE;MACjC,IAAMC,YAAY,GAAGjW,sBAAa,CAACkW,sBAAsB,CAAC,IAAI,EAAEF,QAAQ,CAAC;MAEzE,IAAIC,YAAY,CAACE,cAAc,IAAI,IAAI,CAACC,qBAAqB,EAAE;QAC7D,OAAO,IAAAC,iBAAS,EAAC,IAAI,CAACD,qBAAqB,CAAC;MAC9C;MACA,IAAMnW,gBAAgB,GACpB,IAAI,CAACmW,qBAAqB,IAAIpW,sBAAa,CAACC,gBAAgB,CAAC,IAAI,CAACmW,qBAAqB,CAAC;MAE1F,IAAInW,gBAAgB,EAAE;QAAA,IAAAqW,eAAA,EAAAC,qBAAA,EAAAC,sBAAA;QACpB,IAAMC,QAAQ,GACZ,CAAChR,gBAAK,CAACC,KAAK,CAACgR,MAAM,EAAEjR,gBAAK,CAACC,KAAK,CAACiR,YAAY,EAAElR,gBAAK,CAACC,KAAK,CAACuB,WAAW,CAAC,CAAC2P,QAAQ,EAAAN,eAAA,GAC9E,IAAI,CAACnW,SAAS,cAAAmW,eAAA,uBAAdA,eAAA,CAAgBhS,KAClB,CAAC,IAAI,GAAAiS,qBAAA,GAAC,IAAI,CAACH,qBAAqB,cAAAG,qBAAA,gBAAAC,sBAAA,GAA1BD,qBAAA,CAA4BzW,IAAI,cAAA0W,sBAAA,eAAhCA,sBAAA,CAAkClR,OAAO;QAEjD,IAAI,CAACmR,QAAQ,EAAE;UACb,IAAI,CAACI,0BAA0B,CAAC,CAAC;QACnC;MACF;MAEA,OAAOb,QAAQ;IACjB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;IACE;EAAA;IAAAjb,GAAA;IAAAjE,KAAA,EACA,SAAAmN,kBAAkB1E,YAAY,EAAEuX,kBAAkB,EAAE;MAClD,IAAI,CAACA,kBAAkB,IAAI,CAACA,kBAAkB,CAACtgB,MAAM,EAAE,OAAO+I,YAAY;MAC1E,IAAI,CAACA,YAAY,IAAI,CAACA,YAAY,CAAC/I,MAAM,EAAE;QACzC,OAAOsgB,kBAAkB;MAC3B;MACAA,kBAAkB,CAACC,OAAO,CAAC,UAAC5R,WAAW,EAAK;QAC1C,IAAM6R,UAAU,GAAGzX,YAAY,CAAC0X,SAAS,CAAC,UAACC,CAAC;UAAA,OAAKA,CAAC,CAACC,EAAE,KAAKhS,WAAW,CAACgS,EAAE;QAAA,EAAC;QACzE,IAAIH,UAAU,GAAG,CAAC,CAAC,EAAE;UACnBzX,YAAY,CAAC6X,MAAM,CAACJ,UAAU,EAAE,CAAC,EAAE7R,WAAW,CAAC;QACjD,CAAC,MAAM;UACL5F,YAAY,CAACmS,IAAI,CAACvM,WAAW,CAAC;QAChC;MACF,CAAC,CAAC;MAEF,OAAO5F,YAAY;IACrB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAxE,GAAA;IAAAjE,KAAA,EAMA,SAAAif,4BAA4BsB,SAAc,EAAE;MAAA,IAAAC,MAAA;MAC1C,IAAI,CAACD,SAAS,EAAE;QACd;MACF;MACA,IAAME,UAAU,GAAG,IAAAlB,iBAAS,EAACgB,SAAS,CAAC;MACvC,IAAI,IAAI,CAACjB,qBAAqB,EAAE;QAC9B;QACA,IAAAoB,kBAAU,EAAC,IAAI,CAACpB,qBAAqB,EAAEmB,UAAU,EAAE,UAACE,QAAQ,EAAEC,QAAQ,EAAE3c,GAAG,EAAK;UAC9E,IAAIA,GAAG,KAAK,cAAc,EAAE;YAC1B,OAAOuc,MAAI,CAACrT,iBAAiB,CAACwT,QAAQ,EAAEC,QAAQ,CAAC;UACnD;UAEA,OAAOA,QAAQ,IAAID,QAAQ;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAI,CAACrB,qBAAqB,GAAGmB,UAAU;MACzC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxc,GAAA;IAAAjE,KAAA,EAKA,SAAA+f,2BAAA,EAA6B;MAC3B,IAAI,CAACT,qBAAqB,GAAG,IAAI;IACnC;EAAC;EAAA,OAAAxc,SAAA;AAAA,EAzyDoC+d,oBAAW"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_hashTreeParser","_interopRequireWildcard","_types","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t2","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray2","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","Boolean","prototype","valueOf","LocusDtoTopLevelKeys","LocusObjectStateAfterUpdates","unchanged","removed","updated","LocusInfo","exports","_EventsScope","updateMeeting","webex","meetingId","_this","_classCallCheck2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","hashTreeObjectId2ParticipantId","_map","_inherits2","_createClass2","key","doLocusSync","meeting","isLocusUrlChanged","locus","_this$locusParser$wor","_this2","url","isDelta","meetingDestroyed","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","stack","code","statusCode","err","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","baseSequence","locusInfo","handleLocusDelta","onFullLocus","LOCUS_SYNC_HANDLING_FAILED","finally","resume","applyLocusDeltaData","action","_LocusDeltaParser$loc","loci","DESYNC","USE_CURRENT","USE_INCOMING","WAIT","LOCUS_URL_CHANGED","onDeltaLocus","_this3","onDeltaAction","parsedLoci","onDeltaEvent","init","_locus$links","_locus$links2","undefined","created","scheduledMeeting","participantsUrl","replaces","aclUrl","sequence","membership","identities","participants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","ControlsUtils","isMainSessionDTO","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","createHashTreeParser","_ref","initialLocus","HashTreeParser","webexRequest","request","bind","locusInfoUpdateCallback","updateFromHashTree","debugId","substring","_initialSetup","_asyncToGenerator2","_regenerator","mark","_callee","data","_data$locus","_data$locus$links","_data$locus$links$res","_data$locus$links$res2","_data$hashTreeMessage","_selfObject$data","selfObject","_data$locus2","_data$locus2$self","_t","wrap","_context","prev","trigger","hashTreeMessage","locusStateElements","find","el","isSelf","visibleDataSets","warn","Error","hashTreeParser","dataSets","initializeFromMessage","abrupt","initializeFromGetLociResponse","stop","initialSetup","_x","handleLocusAPIResponse","responseBody","sendClassicVsHashTreeMismatchMetric","updateLocusFromHashTreeObject","object","type","htMeta","elementId","toLowerCase","ObjectType","locusObjectFromData","mediaShare","_object$data$floor","_object$data$floor2","_object$data$floor2$b","_locus$mediaShares","id","floor","disposition","beneficiary","existingMediaShare","ms","_assign","_locus$mediaShares2","participant","participantObject","participantId","jsSdkMeta","removedParticipantIds","delete","classicVsHashTreeMismatchMetricCounter","LOCUS_CLASSIC_VS_HASH_TREE_MISMATCH","handleHashTreeMessage","eventType","LOCUSEVENT","HASH_TREE_DATA_UPDATED","handleMessage","updateType","_this4","LocusInfoUpdateType","OBJECTS_UPDATED","locusObjectStateAfterUpdates","updatedObjects","_object$data","LOCUS_HASH_TREE_UNSUPPORTED_OPERATION","cloneDeep","_stringify","map","hasData","MEETING_ENDED","meetingCollection","SELF_REMOVED","parse","stateElementsMessage","getTheLocusToUpdate","PARTICIPANT_JOIN","PARTICIPANT_LEFT","CONTROLS_UPDATED","PARTICIPANT_AUDIO_MUTED","PARTICIPANT_AUDIO_UNMUTED","PARTICIPANT_VIDEO_MUTED","PARTICIPANT_VIDEO_UNMUTED","SELF_CHANGED","PARTICIPANT_UPDATED","PARTICIPANT_CONTROLS_UPDATED","PARTICIPANT_ROLES_UPDATED","PARTICIPANT_DECLINED","FLOOR_GRANTED","FLOOR_RELEASED","DIFFERENCE","emitScoped","scope","eventName","args","emit","onFullLocusWithHashTrees","onFullLocusCommon","onFullLocusClassic","isNewFullLocus","error","_this$participants","_this5","_locus$jsSdkMeta","_participant$htMeta","isReplaceMembers","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","_locus$jsSdkMeta2","mergeParticipants","_locus$self","_locus$self2","_locus$links3","_locus$links4","state","updateCreated","updateParticipantsUrl","updateReplace","replace","updateAclUrl","updateBasequence","updateSequence","updateMemberShip","updateIdentifiers","compareAndUpdate","getLocusPartner","identity","_USER_","partner","_SPACE_SHARE_","LOCUS","STATE","INACTIVE","internal","newMetrics","submitClientEvent","options","DESTROY_MEETING","CALL_REMOVED_REASON","CALL_INACTIVE","shouldLeave","MEETING_STATE","STATES","LEFT","DECLINED","NOTIFIED","JOINED","PARTNER_LEFT","joinedWith","_LEFT_","IDLE","SELF_LEFT","_MEETING_","TERMINATING","MEETING_INACTIVE_TERMINATING","FULLSTATE_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isArray","_iterator","_step","_participant$person","LOCUSINFO","PARTICIPANT_REASON_CHANGED","displayName","person","primaryDisplayString","isEqual","_ControlsUtils$getCon","getControls","_ControlsUtils$getCon2","updates","hasRecordingChanged","hasRecordingPausedChanged","hasMeetingContainerChanged","hasTranscribeChanged","hasTranscribeSpokenLanguageChanged","hasManualCaptionChanged","hasEntryExitToneChanged","hasBreakoutChanged","hasVideoEnabledChanged","hasMuteOnEntryChanged","hasShareControlChanged","hasDisallowUnmuteChanged","hasReactionsChanged","hasReactionDisplayNamesChanged","hasViewTheParticipantListChanged","hasRaiseHandChanged","hasVideoChanged","hasInterpretationChanged","hasWebcastChanged","hasMeetingFullChanged","hasPracticeSessionEnabledChanged","hasStageViewChanged","hasAnnotationControlChanged","hasRemoteDesktopControlChanged","hasPollingQAControlChanged","hasAutoEndMeetingChanged","current","CONTROLS_MUTE_ON_ENTRY_CHANGED","muteOnEntry","CONTROLS_SHARE_CONTROL_CHANGED","shareControl","CONTROLS_DISALLOW_UNMUTE_CHANGED","disallowUnmute","CONTROLS_REACTIONS_CHANGED","reactions","CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED","viewTheParticipantList","CONTROLS_RAISE_HAND_CHANGED","raiseHand","CONTROLS_VIDEO_CHANGED","video","paused","RECORDING_STATE","PAUSED","recording","RESUMED","RECORDING","CONTROLS_RECORDING_UPDATED","lastModified","meetingContainerUrl","meetingContainer","CONTROLS_MEETING_CONTAINER_UPDATED","_current$transcribe","transcribe","transcribing","caption","CONTROLS_MEETING_TRANSCRIBE_UPDATED","spokenLanguage","CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED","enabled","manualCaptionControl","CONTROLS_MEETING_MANUAL_CAPTION_UPDATED","breakout","breakoutMoveId","SelfUtils","getReplacedBreakoutMoveId","device","CONTROLS_MEETING_BREAKOUT_UPDATED","interpretation","CONTROLS_MEETING_INTERPRETATION_UPDATED","entryExitTone","CONTROLS_ENTRY_EXIT_TONE_UPDATED","videoEnabled","unmuteVideoAllowed","SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED","unmuteAllowed","CONTROLS_WEBCAST_CHANGED","webcastControl","CONTROLS_MEETING_FULL_CHANGED","meetingFull","CONTROLS_PRACTICE_SESSION_STATUS_UPDATED","practiceSession","CONTROLS_STAGE_VIEW_UPDATED","videoLayout","CONTROLS_ANNOTATION_CHANGED","annotationControl","CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED","rdcControl","CONTROLS_POLLING_QA_CHANGED","pollingQAControl","CONTROLS_AUTO_END_MEETING_WARNING_CHANGED","autoEndMeetingWarning","LINKS_SERVICES","LINKS_RESOURCES","result","FullState","getFullState","meetingStateChangedTo","FULL_STATE_MEETING_STATE_CHANGE","previousState","previous","meetingState","currentState","meetingTypeChangedTo","FULL_STATE_TYPE_UPDATE","parsedHosts","HostUtils","getHosts","isNewHost","LOCUS_INFO_UPDATE_HOST","newHost","oldHost","_this$parsedLocus$sel","roles","getRoles","isJoined","parsedInfo","InfoUtils","getInfos","isLocked","MEETING_LOCKED","isUnlocked","MEETING_UNLOCKED","MEETING_INFO_UPDATED","isInitializing","EmbeddedAppsUtils","areSimilar","parsedEmbeddedApps","EMBEDDED_APPS_UPDATED","forceUpdate","parsedMediaShares","MediaSharesUtils","getMediaShares","LOCUS_INFO_UPDATE_MEDIA_SHARES","parsedSelves","getSelves","element","getSipUrl","sipUri","moderatorChanged","layoutChanged","CONTROLS_MEETING_LAYOUT_UPDATED","layout","breakoutsChanged","SELF_MEETING_BREAKOUTS_CHANGED","breakoutSessions","brbChanged","SELF_MEETING_BRB_CHANGED","brb","interpretationChanged","SELF_MEETING_INTERPRETATION_CHANGED","selfParticipantId","isMediaInactiveOrReleased","DISCONNECT_DUE_TO_INACTIVITY","SELF_MODERATOR_CHANGED","isRolesChanged","_parsedSelves$previou","_parsedSelves$current","SELF_ROLES_CHANGED","oldRoles","newRoles","isVideoMutedByOthersChanged","muted","remoteVideoMuted","localAudioUnmuteRequiredByServer","LOCAL_UNMUTE_REQUIRED","remoteMuted","isMutedByOthersChanged","SELF_REMOTE_MUTE_STATUS_UPDATED","localAudioUnmuteRequestedByServer","LOCAL_UNMUTE_REQUESTED","hasUserEnteredLobby","SELF_UNADMITTED_GUEST","hasUserBeenAdmitted","SELF_ADMITTED_GUEST","isMediaInactive","MEDIA_INACTIVITY","getMediaStatus","mediaSessions","audioStateChange","videoStateChange","shareStateChange","_parsedSelves$current2","_parsedSelves$current3","_parsedSelves$current4","MEDIA_STATUS_CHANGE","audioStatus","currentMediaStatus","audio","videoStatus","shareStatus","share","isUserObserving","SELF_OBSERVING","canNotViewTheParticipantListChanged","SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE","canNotViewTheParticipantList","isSharingBlockedChanged","SELF_IS_SHARING_BLOCKED_CHANGE","isSharingBlocked","LOCUS_INFO_UPDATE_SELF","oldSelf","newSelf","isMainLocus","LOCUS_INFO_UPDATE_URL","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this6","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["import {isEqual, assignWith, cloneDeep, isEmpty} from 'lodash';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport EventsScope from '../common/events/events-scope';\nimport {\n EVENTS,\n LOCUSEVENT,\n _USER_,\n _CALL_,\n _SIP_BRIDGE_,\n MEETING_STATE,\n _MEETING_,\n _SPACE_SHARE_,\n LOCUSINFO,\n LOCUS,\n _LEFT_,\n MEETING_REMOVED_REASON,\n CALL_REMOVED_REASON,\n RECORDING_STATE,\n Enum,\n} from '../constants';\n\nimport InfoUtils from './infoUtils';\nimport FullState from './fullState';\nimport SelfUtils from './selfUtils';\nimport HostUtils from './hostUtils';\nimport ControlsUtils from './controlsUtils';\nimport EmbeddedAppsUtils from './embeddedAppsUtils';\nimport MediaSharesUtils from './mediaSharesUtils';\nimport LocusDeltaParser from './parser';\nimport Metrics from '../metrics';\nimport BEHAVIORAL_METRICS from '../metrics/constants';\nimport HashTreeParser, {\n DataSet,\n HashTreeMessage,\n HashTreeObject,\n isSelf,\n LocusInfoUpdateType,\n} from '../hashTree/hashTreeParser';\nimport {ObjectType} from '../hashTree/types';\nimport {LocusDTO} from './types';\n\nexport type LocusLLMEvent = {\n data: {\n eventType: typeof LOCUSEVENT.HASH_TREE_DATA_UPDATED;\n stateElementsMessage: HashTreeMessage;\n };\n};\n\nconst LocusDtoTopLevelKeys = [\n 'controls',\n 'fullState',\n 'host',\n 'info',\n 'links',\n 'mediaShares',\n 'meetings',\n 'participants',\n 'replaces',\n 'self',\n 'sequence',\n 'syncUrl',\n 'url',\n 'htMeta', // only exists when hash trees are used\n];\n\nexport type LocusApiResponseBody = {\n dataSets?: DataSet[];\n locus: LocusDTO; // this LocusDTO here might not be the full one (for example it won't have all the participants, but it should have self)\n};\n\nconst LocusObjectStateAfterUpdates = {\n unchanged: 'unchanged',\n removed: 'removed',\n updated: 'updated',\n} as const;\n\ntype LocusObjectStateAfterUpdates = Enum<typeof LocusObjectStateAfterUpdates>;\n\n/**\n * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object\n * @export\n * @private\n * @class LocusInfo\n */\nexport default class LocusInfo extends EventsScope {\n compareAndUpdateFlags: any;\n emitChange: any;\n locusParser: any;\n meetingId: any;\n parsedLocus: any;\n updateMeeting: any;\n webex: any;\n aclUrl: any;\n baseSequence: any;\n created: any;\n identities: any;\n membership: any;\n participants: any;\n participantsUrl: any;\n replaces: any;\n scheduledMeeting: any;\n sequence: any;\n controls: any;\n conversationUrl: any;\n embeddedApps: any;\n fullState: any;\n host: any;\n info: any;\n roles: any;\n mediaShares: any;\n replace: any;\n url: any;\n services: any;\n resources: any;\n mainSessionLocusCache: any;\n self: any;\n hashTreeParser?: HashTreeParser;\n hashTreeObjectId2ParticipantId: Map<number, string>; // mapping of hash tree object ids to participant ids\n classicVsHashTreeMismatchMetricCounter = 0;\n\n /**\n * Constructor\n * @param {function} updateMeeting callback to update the meeting object from an object\n * @param {object} webex\n * @param {string} meetingId\n * @returns {undefined}\n */\n constructor(updateMeeting, webex, meetingId) {\n super();\n this.parsedLocus = {\n states: [],\n };\n this.webex = webex;\n this.emitChange = false;\n this.compareAndUpdateFlags = {};\n this.meetingId = meetingId;\n this.updateMeeting = updateMeeting;\n this.locusParser = new LocusDeltaParser();\n this.hashTreeObjectId2ParticipantId = new Map();\n }\n\n /**\n * Does a Locus sync. It tries to get the latest delta DTO or if it can't, it falls back to getting the full Locus DTO.\n * WARNING: This function must not be used for hash tree based Locus meetings.\n *\n * @param {Meeting} meeting\n * @param {boolean} isLocusUrlChanged\n * @param {Locus} locus\n * @returns {undefined}\n */\n private doLocusSync(meeting: any, isLocusUrlChanged: boolean, locus: any) {\n let url;\n let isDelta = false;\n let meetingDestroyed = false;\n\n if (isLocusUrlChanged) {\n // for the locus url changed case from breakout to main session, we should always do a full sync, in this case, the url from locus is always on main session,\n // so use the main session locus url to get the full locus(full participants list in the response).\n // for the locus url changed case from main session to breakout, we don't need to care about it here,\n // because it is a USE_INCOMING case, it will not be executed here.\n url = locus.url;\n } else if (this.locusParser.workingCopy?.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> doing Locus sync (getting ${\n isDelta ? 'delta' : 'full'\n } DTO)`\n );\n\n // return value ignored on purpose\n meeting.meetingRequest\n .getLocusDTO({url})\n .catch((e) => {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> delta sync failed, falling back to full sync'\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_DELTA_SYNC_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n\n isDelta = false;\n\n // Locus sometimes returns 403, for example if meeting has ended, no point trying the fallback to full sync in that case\n if (e.statusCode !== 403) {\n return meeting.meetingRequest.getLocusDTO({url: meeting.locusUrl}).catch((err) => {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n meetingDestroyed = true;\n throw err;\n });\n }\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> got 403 from Locus, skipping fallback to full sync, destroying the meeting'\n );\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting'\n );\n }\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);\n meetingDestroyed = true;\n throw e;\n })\n .then((res) => {\n if (isEmpty(res.body)) {\n if (isDelta) {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from full DTO sync request'\n );\n }\n\n return;\n }\n\n if (isDelta) {\n if (res.body.baseSequence) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n\n return;\n }\n // in some cases Locus might return us full DTO even when we asked for a delta\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> got full DTO when we asked for delta'\n );\n }\n meeting.locusInfo.onFullLocus(res.body);\n })\n .catch((e) => {\n LoggerProxy.logger.info(\n `Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (${e.toString()})`\n );\n\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_SYNC_HANDLING_FAILED, {\n correlationId: meeting.correlationId,\n url,\n reason: e.message,\n errorName: e.name,\n stack: e.stack,\n code: e.code,\n });\n })\n .finally(() => {\n if (!meetingDestroyed) {\n // Notify parser to resume processing delta events.\n // Any deltas in the queue that have now been superseded by this sync will simply be ignored\n this.locusParser.resume();\n }\n });\n }\n\n /**\n * Apply locus delta data to meeting\n * @param {string} action Locus delta action\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n applyLocusDeltaData(action: string, locus: any, meeting: any) {\n const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;\n const isLocusUrlChanged = action === LOCUS_URL_CHANGED;\n\n switch (action) {\n case USE_INCOMING:\n meeting.locusInfo.onDeltaLocus(locus);\n break;\n case USE_CURRENT:\n case WAIT:\n // do nothing\n break;\n case DESYNC:\n case LOCUS_URL_CHANGED:\n this.doLocusSync(meeting, isLocusUrlChanged, locus);\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ${action}`\n );\n }\n }\n\n /**\n * Adds locus delta to parser's queue\n * and registers a function handler\n * to recieve parsed actions from queue.\n * @param {Locus} locus\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n handleLocusDelta(locus: any, meeting: any) {\n // register a function to process delta actions\n if (!this.locusParser.onDeltaAction) {\n // delta action, along with associated loci\n // is passed into the function.\n this.locusParser.onDeltaAction = (action, parsedLoci) => {\n this.applyLocusDeltaData(action, parsedLoci, meeting);\n };\n }\n // queue delta event with parser\n this.locusParser.onDeltaEvent(locus);\n }\n\n /**\n * @param {Locus} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n init(locus: any = {}) {\n this.created = locus.created || null;\n this.scheduledMeeting = locus.meeting || null;\n this.participantsUrl = locus.participantsUrl || null;\n this.replaces = locus.replaces || null;\n this.aclUrl = locus.aclUrl || null;\n this.baseSequence = locus.baseSequence || null;\n this.sequence = locus.sequence || null;\n this.membership = locus.membership || null;\n this.identities = locus.identities || null;\n this.participants = locus.participants || null;\n\n /**\n * Stores the delta values for a changed participant.\n *\n * @typedef {Object} DeltaParticipant\n * @property {Record<string, boolean>} delta - Contains changed streams.\n * @property {Object} person - Contains person data.\n */\n\n this.updateLocusCache(locus);\n // above section only updates the locusInfo object\n // The below section makes sure it updates the locusInfo as well as updates the meeting object\n this.updateParticipants(locus.participants, []);\n // For 1:1 space meeting the conversation Url does not exist in locus.conversation\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateControls(locus.controls, locus.self);\n this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));\n this.updateFullState(locus.fullState);\n this.updateMeetingInfo(locus.info);\n this.updateEmbeddedApps(locus.embeddedApps);\n // self and participants generate sipUrl for 1:1 meeting\n this.updateSelf(locus.self);\n this.updateHostInfo(locus.host);\n this.updateMediaShares(locus.mediaShares);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n }\n\n /**\n * Creates the HashTreeParser instance.\n * @param {Object} initial locus data\n * @returns {void}\n */\n private createHashTreeParser({\n initialLocus,\n }: {\n initialLocus: {\n dataSets: Array<DataSet>;\n locus: any;\n };\n }) {\n return new HashTreeParser({\n initialLocus,\n webexRequest: this.webex.request.bind(this.webex),\n locusInfoUpdateCallback: this.updateFromHashTree.bind(this),\n debugId: `HT-${this.meetingId.substring(0, 4)}`,\n });\n }\n\n /**\n * @param {Object} data - data to initialize locus info with. It may be from a join or GET /loci response or from a Mercury event that triggers a creation of meeting object\n * @returns {undefined}\n * @memberof LocusInfo\n */\n async initialSetup(\n data:\n | {\n trigger: 'join-response';\n locus: LocusDTO;\n dataSets?: DataSet[];\n }\n | {\n trigger: 'locus-message';\n locus?: LocusDTO;\n hashTreeMessage?: HashTreeMessage;\n }\n | {\n trigger: 'get-loci-response';\n locus?: LocusDTO;\n }\n ) {\n switch (data.trigger) {\n case 'locus-message':\n if (data.hashTreeMessage) {\n // we need the SELF object to be in the received message, because it contains visibleDataSets\n // and these are needed to initialize all the hash trees\n const selfObject = data.hashTreeMessage.locusStateElements?.find((el) => isSelf(el));\n\n if (!selfObject?.data?.visibleDataSets) {\n LoggerProxy.logger.warn(\n `Locus-info:index#initialSetup --> cannot initialize HashTreeParser, SELF object with visibleDataSets is missing in the message`\n );\n\n throw new Error('SELF object with visibleDataSets is missing in the message');\n }\n\n LoggerProxy.logger.info(\n 'Locus-info:index#initialSetup --> creating HashTreeParser from message'\n );\n // first create the HashTreeParser, but don't initialize it with any data yet\n // pass just a fake locus that contains only the visibleDataSets\n this.hashTreeParser = this.createHashTreeParser({\n initialLocus: {\n locus: {self: {visibleDataSets: selfObject.data.visibleDataSets}},\n dataSets: [], // empty, because they will be populated in initializeFromMessage() call // dataSets: data.hashTreeMessage.dataSets,\n },\n });\n\n // now handle the message - that should populate all the visible datasets\n await this.hashTreeParser.initializeFromMessage(data.hashTreeMessage);\n } else {\n // \"classic\" Locus case, no hash trees involved\n this.updateLocusCache(data.locus);\n this.onFullLocus(data.locus, undefined);\n }\n break;\n case 'join-response':\n this.updateLocusCache(data.locus);\n this.onFullLocus(data.locus, undefined, data.dataSets);\n break;\n case 'get-loci-response':\n if (data.locus?.links?.resources?.visibleDataSets?.url) {\n LoggerProxy.logger.info(\n 'Locus-info:index#initialSetup --> creating HashTreeParser from get-loci-response'\n );\n // first create the HashTreeParser, but don't initialize it with any data yet\n // pass just a fake locus that contains only the visibleDataSets\n this.hashTreeParser = this.createHashTreeParser({\n initialLocus: {\n locus: {self: {visibleDataSets: data.locus?.self?.visibleDataSets}},\n dataSets: [], // empty, because we don't have them yet\n },\n });\n\n // now initialize all the data\n await this.hashTreeParser.initializeFromGetLociResponse(data.locus);\n } else {\n // \"classic\" Locus case, no hash trees involved\n this.updateLocusCache(data.locus);\n this.onFullLocus(data.locus, undefined);\n }\n }\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n * Handles HTTP response from Locus API call.\n * @param {Meeting} meeting meeting object\n * @param {LocusApiResponseBody} responseBody body of the http response from Locus API call\n * @returns {void}\n */\n handleLocusAPIResponse(meeting, responseBody: LocusApiResponseBody): void {\n if (this.hashTreeParser) {\n // API responses with hash tree are a bit problematic and not fully confirmed how they will look like\n // we don't really need them, because all updates are guaranteed to come via Mercury or LLM messages anyway\n // so it's OK to skip them for now\n LoggerProxy.logger.info(\n 'Locus-info:index#handleLocusAPIResponse: skipping handling of API http response with hashTreeParser'\n );\n } else {\n if (responseBody.dataSets) {\n this.sendClassicVsHashTreeMismatchMetric(\n meeting,\n `unexpected hash tree dataSets in API response`\n );\n }\n // classic Locus delta\n this.handleLocusDelta(responseBody.locus, meeting);\n }\n }\n\n /**\n *\n * @param {HashTreeObject} object data set object\n * @param {any} locus\n * @returns {void}\n */\n updateLocusFromHashTreeObject(object: HashTreeObject, locus: LocusDTO): LocusDTO {\n const type = object.htMeta.elementId.type.toLowerCase();\n\n switch (type) {\n case ObjectType.locus: {\n if (!object.data) {\n // not doing anything here, as we need Locus to always be there (at least some fields)\n // and that's already taken care of in updateFromHashTree()\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> LOCUS object removed`\n );\n\n return locus;\n }\n // replace the main locus\n\n // The Locus object we receive from backend has empty participants, so removing them to avoid it overriding the ones in our current locus object\n // Also, other fields like mediaShares are managed by other ObjectType updates, so removing them too\n // BTW, it also doesn't have \"self\". That's OK as it won't override existing locus.self and also existing SDK code can handle that missing self in Locus updates\n const locusObjectFromData = object.data;\n delete locusObjectFromData.participants;\n delete locusObjectFromData.mediaShares;\n\n locus = {...locus, ...locusObjectFromData};\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> LOCUS object updated`\n );\n break;\n }\n case ObjectType.mediaShare:\n if (object.data) {\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> mediaShare id=${\n object.htMeta.elementId.id\n } name='${object.data.name}' updated ${\n object.data.name === 'content'\n ? `floor=${object.data.floor?.disposition}, ${object.data.floor?.beneficiary?.id}`\n : ''\n }`\n );\n const existingMediaShare = locus.mediaShares?.find(\n (ms) => ms.htMeta.elementId.id === object.htMeta.elementId.id\n );\n\n if (existingMediaShare) {\n Object.assign(existingMediaShare, object.data);\n } else {\n locus.mediaShares = locus.mediaShares || [];\n locus.mediaShares.push(object.data);\n }\n } else {\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> mediaShare id=${object.htMeta.elementId.id} removed`\n );\n locus.mediaShares = locus.mediaShares?.filter(\n (ms) => ms.htMeta.elementId.id !== object.htMeta.elementId.id\n );\n }\n break;\n case ObjectType.participant:\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> participant id=${\n object.htMeta.elementId.id\n } ${object.data ? 'updated' : 'removed'}`\n );\n if (object.data) {\n if (!locus.participants) {\n locus.participants = [];\n }\n const participantObject = object.data;\n participantObject.htMeta = object.htMeta;\n locus.participants.push(participantObject);\n this.hashTreeObjectId2ParticipantId.set(object.htMeta.elementId.id, participantObject.id);\n } else {\n const participantId = this.hashTreeObjectId2ParticipantId.get(object.htMeta.elementId.id);\n\n if (!locus.jsSdkMeta) {\n locus.jsSdkMeta = {removedParticipantIds: []};\n }\n locus.jsSdkMeta.removedParticipantIds.push(participantId);\n this.hashTreeObjectId2ParticipantId.delete(object.htMeta.elementId.id);\n }\n break;\n case ObjectType.self:\n if (!object.data) {\n // self without data is handled inside HashTreeParser and results in LocusInfoUpdateType.MEETING_ENDED, so we should never get here\n LoggerProxy.logger.warn(\n `Locus-info:index#updateLocusFromHashTreeObject --> received SELF object without data, this is not expected!`\n );\n\n return locus;\n }\n LoggerProxy.logger.info(\n `Locus-info:index#updateLocusFromHashTreeObject --> SELF object updated`\n );\n locus.self = object.data;\n break;\n default:\n LoggerProxy.logger.warn(\n `Locus-info:index#updateLocusFromHashTreeObject --> received unsupported object type ${type}`\n );\n break;\n }\n\n return locus;\n }\n\n /**\n * Sends a metric when we receive something from Locus that uses hash trees while we\n * expect classic deltas or the other way around.\n * @param {Meeting} meeting\n * @param {string} message\n * @returns {void}\n */\n sendClassicVsHashTreeMismatchMetric(meeting: any, message: string) {\n LoggerProxy.logger.warn(\n `Locus-info:index#sendClassicVsHashTreeMismatchMetric --> classic vs hash tree mismatch! ${message}`\n );\n\n // we don't want to flood the metrics system\n if (this.classicVsHashTreeMismatchMetricCounter < 5) {\n Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.LOCUS_CLASSIC_VS_HASH_TREE_MISMATCH, {\n correlationId: meeting.correlationId,\n message,\n });\n this.classicVsHashTreeMismatchMetricCounter += 1;\n }\n }\n\n /**\n * Handles a hash tree message received from Locus.\n *\n * @param {Meeting} meeting - The meeting object\n * @param {eventType} eventType - The event type\n * @param {HashTreeMessage} message incoming hash tree message\n * @returns {void}\n */\n private handleHashTreeMessage(meeting: any, eventType: LOCUSEVENT, message: HashTreeMessage) {\n if (eventType !== LOCUSEVENT.HASH_TREE_DATA_UPDATED) {\n this.sendClassicVsHashTreeMismatchMetric(\n meeting,\n `got ${eventType}, expected ${LOCUSEVENT.HASH_TREE_DATA_UPDATED}`\n );\n\n return;\n }\n\n this.hashTreeParser.handleMessage(message);\n }\n\n /**\n * Callback registered with HashTreeParser to receive locus info updates.\n * Updates our locus info based on the data parsed by the hash tree parser.\n *\n * @param {LocusInfoUpdateType} updateType - The type of update received.\n * @param {Object} [data] - Additional data for the update, if applicable.\n * @returns {void}\n */\n private updateFromHashTree(\n updateType: LocusInfoUpdateType,\n data?: {updatedObjects: HashTreeObject[]}\n ) {\n switch (updateType) {\n case LocusInfoUpdateType.OBJECTS_UPDATED: {\n // initialize our new locus\n let locus: LocusDTO = {\n participants: [],\n jsSdkMeta: {removedParticipantIds: []},\n };\n\n // first go over all the updates and check what happens with the main locus object\n let locusObjectStateAfterUpdates: LocusObjectStateAfterUpdates =\n LocusObjectStateAfterUpdates.unchanged;\n data.updatedObjects.forEach((object) => {\n if (object.htMeta.elementId.type.toLowerCase() === ObjectType.locus) {\n if (locusObjectStateAfterUpdates === LocusObjectStateAfterUpdates.updated) {\n // this code doesn't supported it right now,\n // cases for \"updated\" followed by \"removed\", or multiple \"updated\" would need more handling\n // but these should never happen\n LoggerProxy.logger.warn(\n `Locus-info:index#updateFromHashTree --> received multiple LOCUS objects in one update, this is unexpected!`\n );\n Metrics.sendBehavioralMetric(\n BEHAVIORAL_METRICS.LOCUS_HASH_TREE_UNSUPPORTED_OPERATION,\n {\n locusUrl: object.data?.url || this.url,\n message: object.data\n ? 'multiple LOCUS object updates'\n : 'LOCUS object update followed by removal',\n }\n );\n }\n if (object.data) {\n locusObjectStateAfterUpdates = LocusObjectStateAfterUpdates.updated;\n } else {\n locusObjectStateAfterUpdates = LocusObjectStateAfterUpdates.removed;\n }\n }\n });\n\n // if Locus object is unchanged or removed, we need to keep using the existing locus\n // because the rest of the locusInfo code expects locus to always be present (with at least some of the fields)\n // if it gets updated, we don't need to do anything and we start with an empty one\n // so that when it gets updated, if the new one is missing some field, that field will\n // be removed from our locusInfo\n if (\n locusObjectStateAfterUpdates === LocusObjectStateAfterUpdates.unchanged ||\n locusObjectStateAfterUpdates === LocusObjectStateAfterUpdates.removed\n ) {\n // copy over existing locus\n LocusDtoTopLevelKeys.forEach((key) => {\n if (key !== 'participants') {\n locus[key] = cloneDeep(this[key]);\n }\n });\n }\n\n LoggerProxy.logger.info(\n `Locus-info:index#updateFromHashTree --> LOCUS object is ${locusObjectStateAfterUpdates}, all updates: ${JSON.stringify(\n data.updatedObjects.map((o) => ({\n type: o.htMeta.elementId.type,\n id: o.htMeta.elementId.id,\n hasData: o.data !== undefined,\n }))\n )}`\n );\n // now apply all the updates from the hash tree onto the locus\n data.updatedObjects.forEach((object) => {\n locus = this.updateLocusFromHashTreeObject(object, locus);\n });\n\n // update our locus info with the new locus\n this.onDeltaLocus(locus);\n\n break;\n }\n\n case LocusInfoUpdateType.MEETING_ENDED: {\n LoggerProxy.logger.info(\n `Locus-info:index#updateFromHashTree --> received signal that meeting ended, destroying meeting ${this.meetingId}`\n );\n const meeting = this.webex.meetings.meetingCollection.get(this.meetingId);\n this.webex.meetings.destroy(meeting, MEETING_REMOVED_REASON.SELF_REMOVED);\n }\n }\n }\n\n /**\n * @param {Meeting} meeting\n * @param {Object} data\n * @returns {undefined}\n * @memberof LocusInfo\n */\n parse(meeting: any, data: any) {\n if (this.hashTreeParser) {\n this.handleHashTreeMessage(\n meeting,\n data.eventType,\n data.stateElementsMessage as HashTreeMessage\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {eventType} = data;\n const locus = this.getTheLocusToUpdate(data.locus);\n LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);\n\n locus.jsSdkMeta = {removedParticipantIds: []};\n\n switch (eventType) {\n case LOCUSEVENT.PARTICIPANT_JOIN:\n case LOCUSEVENT.PARTICIPANT_LEFT:\n case LOCUSEVENT.CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:\n case LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:\n case LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:\n case LOCUSEVENT.SELF_CHANGED:\n case LOCUSEVENT.PARTICIPANT_UPDATED:\n case LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:\n case LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:\n case LOCUSEVENT.PARTICIPANT_DECLINED:\n case LOCUSEVENT.FLOOR_GRANTED:\n case LOCUSEVENT.FLOOR_RELEASED:\n this.onFullLocus(locus, eventType);\n break;\n case LOCUSEVENT.DIFFERENCE:\n this.handleLocusDelta(locus, meeting);\n break;\n case LOCUSEVENT.HASH_TREE_DATA_UPDATED:\n this.sendClassicVsHashTreeMismatchMetric(\n meeting,\n `got ${eventType}, expected classic events`\n );\n break;\n\n default:\n // Why will there be a event with no eventType ????\n // we may not need this, we can get full locus\n this.handleLocusDelta(locus, meeting);\n }\n }\n }\n\n /**\n * @param {String} scope\n * @param {String} eventName\n * @param {Array} args\n * @returns {undefined}\n * @memberof LocusInfo\n */\n emitScoped(scope?: any, eventName?: string, args?: any) {\n return this.emit(scope, eventName, args);\n }\n\n /**\n * Function for handling full locus when it's using hash trees (so not the \"classic\" one).\n *\n * @param {object} locus locus object\n * @param {string} eventType locus event\n * @param {DataSet[]} dataSets\n * @returns {void}\n */\n private onFullLocusWithHashTrees(locus: any, eventType?: string, dataSets?: Array<DataSet>) {\n if (!this.hashTreeParser) {\n LoggerProxy.logger.info(`Locus-info:index#onFullLocus --> creating hash tree parser`);\n LoggerProxy.logger.info(\n 'Locus-info:index#onFullLocus --> dataSets:',\n dataSets,\n ' and locus:',\n locus\n );\n this.hashTreeParser = this.createHashTreeParser({\n initialLocus: {locus, dataSets},\n });\n this.onFullLocusCommon(locus, eventType);\n } else {\n // in this case the Locus we're getting is not necessarily the full one\n // so treat it like if we just got it in any api response\n\n LoggerProxy.logger.info(\n 'Locus-info:index#onFullLocus --> hash tree parser already exists, handling it like a normal API response'\n );\n this.handleLocusAPIResponse(undefined, {dataSets, locus});\n }\n }\n\n /**\n * Function for handling full locus when it's the \"classic\" one (not hash trees)\n *\n * @param {object} locus locus object\n * @param {string} eventType locus event\n * @returns {void}\n */\n private onFullLocusClassic(locus: any, eventType?: string) {\n if (!this.locusParser.isNewFullLocus(locus)) {\n LoggerProxy.logger.info(\n `Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=${eventType}`\n );\n\n return;\n }\n this.onFullLocusCommon(locus, eventType);\n }\n\n /**\n * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType locus event\n * @param {DataSet[]} dataSets\n * @returns {object} null\n * @memberof LocusInfo\n */\n onFullLocus(locus: any, eventType?: string, dataSets?: Array<DataSet>) {\n if (!locus) {\n LoggerProxy.logger.error(\n 'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'\n );\n }\n\n if (dataSets) {\n // this is the new hashmap Locus DTO format (only applicable to webinars for now)\n this.onFullLocusWithHashTrees(locus, eventType, dataSets);\n } else {\n this.onFullLocusClassic(locus, eventType);\n }\n }\n\n /**\n * Common part of handling full locus, used by both classic and hash tree based locus handling\n * @param {object} locus locus object\n * @param {string} eventType locus event\n * @returns {void}\n */\n private onFullLocusCommon(locus: any, eventType?: string) {\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n this.participants?.forEach((participant) => {\n // participant.htMeta is set only for hash tree based locus\n if (participant.htMeta?.elementId.id) {\n this.hashTreeObjectId2ParticipantId.set(participant.htMeta.elementId.id, participant.id);\n }\n });\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.updateLocusInfo(locus);\n this.updateParticipants(\n locus.participants,\n locus.jsSdkMeta?.removedParticipantIds,\n isReplaceMembers\n );\n this.isMeetingActive();\n this.handleOneOnOneEvent(eventType);\n this.updateEmbeddedApps(locus.embeddedApps);\n // set current (working copy) for parser\n this.locusParser.workingCopy = locus;\n }\n\n // used for ringing stops on one on one\n /**\n * @param {String} eventType\n * @returns {undefined}\n * @memberof LocusInfo\n */\n // eslint-disable-next-line @typescript-eslint/no-shadow\n handleOneOnOneEvent(eventType: string) {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_\n ) {\n // for 1:1 bob calls alice and alice declines, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_DECLINED) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: true,\n remoteAnswered: false,\n }\n );\n }\n // for 1:1 bob calls alice and alice answers, notify the meeting state\n if (eventType === LOCUSEVENT.PARTICIPANT_JOIN) {\n // trigger the event for stop ringing\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'handleOneonOneEvent',\n },\n EVENTS.REMOTE_RESPONSE,\n {\n remoteDeclined: false,\n remoteAnswered: true,\n }\n );\n }\n }\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n onDeltaLocus(locus: any) {\n const isReplaceMembers = ControlsUtils.isNeedReplaceMembers(this.controls, locus.controls);\n this.mergeParticipants(this.participants, locus.participants);\n this.updateLocusInfo(locus);\n this.updateParticipants(\n locus.participants,\n locus.jsSdkMeta?.removedParticipantIds,\n isReplaceMembers\n );\n this.isMeetingActive();\n }\n\n /**\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusInfo(locus) {\n if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {\n // When moved to a breakout session locus sends a message for the previous locus\n // indicating that we have been moved. It isn't helpful to continue parsing this\n // as it gets interpreted as if we have left the call\n return;\n }\n\n this.updateControls(locus.controls, locus.self);\n this.updateConversationUrl(locus.conversationUrl, locus.info);\n this.updateCreated(locus.created);\n this.updateFullState(locus.fullState);\n this.updateHostInfo(locus.host);\n this.updateLocusUrl(locus.url, ControlsUtils.isMainSessionDTO(locus));\n this.updateMeetingInfo(locus.info, locus.self);\n this.updateMediaShares(locus.mediaShares);\n this.updateParticipantsUrl(locus.participantsUrl);\n this.updateReplace(locus.replace);\n this.updateSelf(locus.self);\n this.updateAclUrl(locus.aclUrl);\n this.updateBasequence(locus.baseSequence);\n this.updateSequence(locus.sequence);\n this.updateMemberShip(locus.membership);\n this.updateIdentifiers(locus.identities);\n this.updateEmbeddedApps(locus.embeddedApps);\n this.updateServices(locus.links?.services);\n this.updateResources(locus.links?.resources);\n this.compareAndUpdate();\n // update which required to compare different objects from locus\n }\n\n /**\n * @param {Array} participants\n * @param {Object} self\n * @returns {Array}\n * @memberof LocusInfo\n */\n getLocusPartner(participants: Array<any>, self: any) {\n if (!participants || participants.length === 0) {\n return null;\n }\n\n return (\n participants.find(\n (participant) =>\n self &&\n participant.identity !== self.identity &&\n (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))\n // @ts-ignore\n ) || this.partner\n );\n }\n\n // TODO: all the leave states need to be checked\n /**\n * @returns {undefined}\n * @memberof LocusInfo\n */\n isMeetingActive() {\n if (\n this.parsedLocus.fullState.type === _CALL_ ||\n this.parsedLocus.fullState.type === _SIP_BRIDGE_ ||\n this.parsedLocus.fullState.type === _SPACE_SHARE_\n ) {\n // @ts-ignore\n const partner = this.getLocusPartner(this.participants, this.self);\n\n this.updateMeeting({partner});\n\n // Check if guest user needs to be checked here\n\n // 1) when bob declines call from bob, (bob='DECLINED')\n // 2) When alice rejects call to bob , (bob='NOTIFIED')\n\n // When we dont add MEDIA for condition 2. The state of bob='IDLE'\n\n if (this.fullState && this.fullState.state === LOCUS.STATE.INACTIVE) {\n // TODO: update the meeting state\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.CALL_INACTIVE,\n shouldLeave: false,\n }\n );\n } else if (\n partner.state === MEETING_STATE.STATES.LEFT &&\n this.parsedLocus.self &&\n (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.NOTIFIED ||\n this.parsedLocus.self.state === MEETING_STATE.STATES.JOINED)\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.PARTNER_LEFT,\n shouldLeave:\n this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,\n }\n );\n } else if (\n this.parsedLocus.self &&\n this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&\n (partner.state === MEETING_STATE.STATES.LEFT ||\n partner.state === MEETING_STATE.STATES.DECLINED ||\n partner.state === MEETING_STATE.STATES.NOTIFIED ||\n partner.state === MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media\n ) {\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: CALL_REMOVED_REASON.SELF_LEFT,\n shouldLeave: false,\n }\n );\n }\n } else if (this.parsedLocus.fullState.type === _MEETING_) {\n if (\n this.fullState &&\n (this.fullState.state === LOCUS.STATE.INACTIVE ||\n // @ts-ignore\n this.fullState.state === LOCUS.STATE.TERMINATING)\n ) {\n LoggerProxy.logger.warn(\n 'Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating'\n );\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.MEETING_INACTIVE_TERMINATING,\n shouldLeave: false,\n }\n );\n } else if (this.fullState && this.fullState.removed) {\n // user has been dropped from a meeting\n\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent({\n name: 'client.call.remote-ended',\n options: {\n meetingId: this.meetingId,\n },\n });\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.FULLSTATE_REMOVED,\n shouldLeave: false,\n }\n );\n }\n // If you are guest and you are removed from the meeting\n // You wont get any further events\n else if (this.parsedLocus.self && this.parsedLocus.self.removed) {\n // Check if we need to send an event\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'isMeetingActive',\n },\n EVENTS.DESTROY_MEETING,\n {\n reason: MEETING_REMOVED_REASON.SELF_REMOVED,\n shouldLeave: false,\n }\n );\n }\n } else {\n LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');\n }\n }\n\n /**\n * checks if the host permissions have changed while in the meeting\n * This would be the case if your role as host or moderator has been updated\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareAndUpdate() {\n // TODO: check with locus team on host and moderator doc\n // use host as a validator if needed\n if (\n this.compareAndUpdateFlags.compareSelfAndHost ||\n this.compareAndUpdateFlags.compareHostAndSelf\n ) {\n this.compareSelfAndHost();\n }\n }\n\n /**\n * compared the self object to check if the user has host permissions\n * @returns {undefined}\n * @memberof LocusInfo\n */\n compareSelfAndHost() {\n // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update\n if (\n this.parsedLocus.self.selfIdentity === this.parsedLocus.host?.hostId &&\n this.parsedLocus.self.moderator\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: true,\n }\n );\n } else {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'compareSelfAndHost',\n },\n EVENTS.LOCUS_INFO_CAN_ASSIGN_HOST,\n {\n canAssignHost: false,\n }\n );\n }\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Array} removedParticipantIds list of removed participants\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, removedParticipantIds?: string[], isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\n removedParticipantIds,\n recordingId: this.parsedLocus.controls && this.parsedLocus.controls.record?.modifiedBy,\n selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,\n selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,\n hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,\n isReplace,\n }\n );\n\n if (participants && Array.isArray(participants) && participants.length > 0) {\n for (const participant of participants) {\n if (participant && participant?.reason === 'FAILURE') {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n LOCUSINFO.EVENTS.PARTICIPANT_REASON_CHANGED,\n {\n displayName: participant?.person?.primaryDisplayString,\n }\n );\n }\n }\n }\n }\n\n /**\n * @param {Object} controls\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateControls(controls: object, self: object) {\n if (controls && !isEqual(this.controls, controls)) {\n this.parsedLocus.controls = ControlsUtils.parse(controls);\n const {\n updates: {\n hasRecordingChanged,\n hasRecordingPausedChanged,\n hasMeetingContainerChanged,\n hasTranscribeChanged,\n hasTranscribeSpokenLanguageChanged,\n hasManualCaptionChanged,\n hasEntryExitToneChanged,\n hasBreakoutChanged,\n hasVideoEnabledChanged,\n hasMuteOnEntryChanged,\n hasShareControlChanged,\n hasDisallowUnmuteChanged,\n hasReactionsChanged,\n hasReactionDisplayNamesChanged,\n hasViewTheParticipantListChanged,\n hasRaiseHandChanged,\n hasVideoChanged,\n hasInterpretationChanged,\n hasWebcastChanged,\n hasMeetingFullChanged,\n hasPracticeSessionEnabledChanged,\n hasStageViewChanged,\n hasAnnotationControlChanged,\n hasRemoteDesktopControlChanged,\n hasPollingQAControlChanged,\n hasAutoEndMeetingChanged,\n },\n current,\n } = ControlsUtils.getControls(this.controls, controls);\n\n if (hasMuteOnEntryChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,\n {state: current.muteOnEntry}\n );\n }\n\n if (hasShareControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,\n {state: current.shareControl}\n );\n }\n\n if (hasDisallowUnmuteChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,\n {state: current.disallowUnmute}\n );\n }\n\n if (hasReactionsChanged || hasReactionDisplayNamesChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,\n {state: current.reactions}\n );\n }\n\n if (hasViewTheParticipantListChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,\n {state: current.viewTheParticipantList}\n );\n }\n\n if (hasRaiseHandChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,\n {state: current.raiseHand}\n );\n }\n\n if (hasVideoChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED,\n {state: current.video}\n );\n }\n\n if (hasRecordingChanged || hasRecordingPausedChanged) {\n let state = null;\n\n if (hasRecordingPausedChanged) {\n if (current.record.paused) {\n state = RECORDING_STATE.PAUSED;\n } else {\n // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.\n state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;\n }\n } else if (hasRecordingChanged) {\n state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_RECORDING_UPDATED,\n {\n state,\n modifiedBy: current.record.modifiedBy,\n lastModified: current.record.lastModified,\n }\n );\n }\n\n if (hasMeetingContainerChanged) {\n const {meetingContainerUrl} = current.meetingContainer;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_CONTAINER_UPDATED,\n {\n meetingContainerUrl,\n }\n );\n }\n\n if (hasTranscribeChanged) {\n const {transcribing, caption} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIBE_UPDATED,\n {\n transcribing,\n caption,\n }\n );\n }\n\n if (hasTranscribeSpokenLanguageChanged) {\n const {spokenLanguage} = current.transcribe;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED,\n {\n spokenLanguage,\n }\n );\n }\n\n if (hasManualCaptionChanged) {\n const {enabled} = current.manualCaptionControl;\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_MANUAL_CAPTION_UPDATED,\n {\n enabled,\n }\n );\n }\n\n if (hasBreakoutChanged) {\n const {breakout} = current;\n breakout.breakoutMoveId = SelfUtils.getReplacedBreakoutMoveId(\n self,\n this.webex.internal.device.url\n );\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,\n {\n breakout,\n }\n );\n }\n\n if (hasInterpretationChanged) {\n const {interpretation} = current;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED,\n {\n interpretation,\n }\n );\n }\n\n if (hasEntryExitToneChanged) {\n const {entryExitTone} = current;\n\n this.updateMeeting({entryExitTone});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,\n {\n entryExitTone,\n }\n );\n }\n\n // videoEnabled is handled differently than other controls,\n // to fit with audio mute status logic\n if (hasVideoEnabledChanged) {\n const {videoEnabled} = current;\n\n this.updateMeeting({unmuteVideoAllowed: videoEnabled});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateControls',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n // muted: not part of locus.controls\n unmuteAllowed: videoEnabled,\n }\n );\n }\n\n if (hasWebcastChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_WEBCAST_CHANGED,\n {state: current.webcastControl}\n );\n }\n\n if (hasMeetingFullChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_MEETING_FULL_CHANGED,\n {state: current.meetingFull}\n );\n }\n\n if (hasPracticeSessionEnabledChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_PRACTICE_SESSION_STATUS_UPDATED,\n {state: current.practiceSession}\n );\n }\n\n if (hasStageViewChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_STAGE_VIEW_UPDATED,\n {state: current.videoLayout}\n );\n }\n\n if (hasAnnotationControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_ANNOTATION_CHANGED,\n {state: current.annotationControl}\n );\n }\n\n if (hasRemoteDesktopControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_REMOTE_DESKTOP_CONTROL_CHANGED,\n {state: current.rdcControl}\n );\n }\n\n if (hasPollingQAControlChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED,\n {state: current.pollingQAControl}\n );\n }\n\n if (hasAutoEndMeetingChanged) {\n this.emitScoped(\n {file: 'locus-info', function: 'updateControls'},\n LOCUSINFO.EVENTS.CONTROLS_AUTO_END_MEETING_WARNING_CHANGED,\n {state: current.autoEndMeetingWarning}\n );\n }\n\n this.controls = controls;\n }\n }\n\n /**\n * @param {String} conversationUrl\n * @param {Object} info\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateConversationUrl(conversationUrl: string, info: any) {\n if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {\n this.conversationUrl = conversationUrl;\n this.updateMeeting({conversationUrl});\n } else if (\n info &&\n info.conversationUrl &&\n !isEqual(this.conversationUrl, info.conversationUrl)\n ) {\n this.conversationUrl = info.conversationUrl;\n this.updateMeeting({conversationUrl: info.conversationUrl});\n }\n }\n\n /**\n * @param {Object} created\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateCreated(created: object) {\n if (created && !isEqual(this.created, created)) {\n this.created = created;\n }\n }\n\n /**\n * @param {Object} services\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateServices(services: Record<'breakout' | 'record', {url: string}>) {\n if (services && !isEqual(this.services, services)) {\n this.services = services;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateServices',\n },\n LOCUSINFO.EVENTS.LINKS_SERVICES,\n {\n services,\n }\n );\n }\n }\n\n /**\n * @param {Object} resources\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateResources(resources: Record<'webcastInstance', {url: string}>) {\n if (resources && !isEqual(this.resources, resources)) {\n this.resources = resources;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateResources',\n },\n LOCUSINFO.EVENTS.LINKS_RESOURCES,\n {\n resources,\n }\n );\n }\n }\n\n /**\n * @param {Object} fullState\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateFullState(fullState: object) {\n if (fullState && !isEqual(this.fullState, fullState)) {\n const result = FullState.getFullState(this.fullState, fullState);\n\n this.updateMeeting(result.current);\n\n if (result.updates.meetingStateChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_MEETING_STATE_CHANGE,\n {\n previousState: result.previous && result.previous.meetingState,\n currentState: result.current.meetingState,\n }\n );\n }\n\n if (result.updates.meetingTypeChangedTo) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateFullState',\n },\n LOCUSINFO.EVENTS.FULL_STATE_TYPE_UPDATE,\n {\n type: result.current.type,\n }\n );\n }\n this.parsedLocus.fullState = result.current;\n this.fullState = fullState;\n }\n }\n\n /**\n * handles when the locus.host is updated\n * @param {Object} host the locus.host property\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_host\n */\n updateHostInfo(host: object) {\n if (host && !isEqual(this.host, host)) {\n const parsedHosts = HostUtils.getHosts(this.host, host);\n\n this.updateMeeting(parsedHosts.current);\n this.parsedLocus.host = parsedHosts.current;\n if (parsedHosts.updates.isNewHost) {\n this.compareAndUpdateFlags.compareSelfAndHost = true;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateHostInfo',\n },\n EVENTS.LOCUS_INFO_UPDATE_HOST,\n {\n newHost: parsedHosts.current,\n oldHost: parsedHosts.previous,\n }\n );\n }\n this.host = host;\n } else {\n this.compareAndUpdateFlags.compareSelfAndHost = false;\n }\n }\n\n /**\n * @param {Object} info\n * @param {Object} self\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMeetingInfo(info: object, self?: object) {\n const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];\n if ((info && !isEqual(this.info, info)) || (!isEqual(this.roles, roles) && info)) {\n const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);\n const parsedInfo = InfoUtils.getInfos(this.parsedLocus.info, info, roles, isJoined);\n\n if (parsedInfo.updates.isLocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_LOCKED,\n info\n );\n }\n if (parsedInfo.updates.isUnlocked) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_UNLOCKED,\n info\n );\n }\n\n this.info = info;\n this.parsedLocus.info = parsedInfo.current;\n // Parses the info and adds necessary values\n this.updateMeeting(parsedInfo.current);\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMeetingInfo',\n },\n LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,\n {\n isInitializing: !self, // if self is undefined, then the update is caused by locus init\n }\n );\n }\n this.roles = roles;\n }\n\n /**\n * @param {Object} embeddedApps\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateEmbeddedApps(embeddedApps: object) {\n // don't do anything if the arrays of apps haven't changed significantly\n if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {\n return;\n }\n\n const parsedEmbeddedApps = EmbeddedAppsUtils.parse(embeddedApps);\n\n this.updateMeeting({embeddedApps: parsedEmbeddedApps});\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateEmbeddedApps',\n },\n LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED,\n parsedEmbeddedApps\n );\n this.embeddedApps = embeddedApps;\n }\n\n /**\n * handles when the locus.mediaShares is updated\n * @param {Object} mediaShares the locus.mediaShares property\n * @param {boolean} forceUpdate force to update the mediaShares\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal event locus_info_update_media_shares\n */\n updateMediaShares(mediaShares: object, forceUpdate = false) {\n if (mediaShares && (!isEqual(this.mediaShares, mediaShares) || forceUpdate)) {\n const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);\n\n this.updateMeeting(parsedMediaShares.current);\n this.parsedLocus.mediaShares = parsedMediaShares.current;\n this.mediaShares = mediaShares;\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateMediaShares',\n },\n EVENTS.LOCUS_INFO_UPDATE_MEDIA_SHARES,\n {\n current: parsedMediaShares.current,\n previous: parsedMediaShares.previous,\n forceUpdate,\n }\n );\n }\n }\n\n /**\n * @param {String} participantsUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateParticipantsUrl(participantsUrl: string) {\n if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {\n this.participantsUrl = participantsUrl;\n }\n }\n\n /**\n * @param {Object} replace\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateReplace(replace: object) {\n if (replace && !isEqual(this.replace, replace)) {\n this.replace = replace;\n }\n }\n\n /**\n * handles when the locus.self is updated\n * @param {Object} self the new locus.self\n * @returns {undefined}\n * @memberof LocusInfo\n * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self\n */\n updateSelf(self: any) {\n if (self) {\n // @ts-ignore\n const parsedSelves = SelfUtils.getSelves(\n this.parsedLocus.self,\n self,\n this.webex.internal.device.url,\n this.participants // using this.participants instead of locus.participants here, because with delta DTOs locus.participants will only contain a small subset of participants\n );\n\n this.updateMeeting(parsedSelves.current);\n this.parsedLocus.self = parsedSelves.current;\n\n const element = this.parsedLocus.states[this.parsedLocus.states.length - 1];\n\n if (element !== parsedSelves.current.state) {\n this.parsedLocus.states.push(parsedSelves.current.state);\n }\n\n // TODO: check if we need to save the sipUri here as well\n // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));\n const result = SelfUtils.getSipUrl(\n this.getLocusPartner(this.participants, self),\n this.parsedLocus.fullState.type,\n this.parsedLocus.info.sipUri\n );\n\n if (result.sipUri) {\n this.updateMeeting(result);\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.compareAndUpdateFlags.compareHostAndSelf = true;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n\n if (parsedSelves.updates.layoutChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED,\n {layout: parsedSelves.current.layout}\n );\n }\n\n if (parsedSelves.updates.breakoutsChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,\n {breakoutSessions: parsedSelves.current.breakoutSessions}\n );\n }\n\n if (parsedSelves.updates.brbChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_BRB_CHANGED,\n {\n brb: parsedSelves.current.brb,\n }\n );\n }\n\n if (parsedSelves.updates.interpretationChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED,\n {\n interpretation: parsedSelves.current.interpretation,\n selfParticipantId: parsedSelves.current.selfId,\n }\n );\n }\n\n if (parsedSelves.updates.isMediaInactiveOrReleased) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.DISCONNECT_DUE_TO_INACTIVITY,\n {reason: self.reason}\n );\n }\n\n if (parsedSelves.updates.moderatorChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED,\n self\n );\n }\n\n if (parsedSelves.updates.isRolesChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ROLES_CHANGED,\n {oldRoles: parsedSelves.previous?.roles, newRoles: parsedSelves.current?.roles}\n );\n }\n\n if (parsedSelves.updates.isVideoMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteVideoMuted,\n // unmuteAllowed: not part of .self\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUIRED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.isMutedByOthersChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_REMOTE_MUTE_STATUS_UPDATED,\n {\n muted: parsedSelves.current.remoteMuted,\n unmuteAllowed: parsedSelves.current.unmuteAllowed,\n }\n );\n }\n if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED,\n {}\n );\n }\n if (parsedSelves.updates.hasUserEnteredLobby) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST,\n self\n );\n }\n if (parsedSelves.updates.hasUserBeenAdmitted) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST,\n self\n );\n }\n\n if (parsedSelves.updates.isMediaInactive) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n // @ts-ignore\n LOCUSINFO.EVENTS.MEDIA_INACTIVITY,\n SelfUtils.getMediaStatus(self.mediaSessions)\n );\n }\n\n if (\n parsedSelves.updates.audioStateChange ||\n parsedSelves.updates.videoStateChange ||\n parsedSelves.updates.shareStateChange\n ) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE,\n {\n audioStatus: parsedSelves.current.currentMediaStatus?.audio,\n videoStatus: parsedSelves.current.currentMediaStatus?.video,\n shareStatus: parsedSelves.current.currentMediaStatus?.share,\n }\n );\n }\n\n if (parsedSelves.updates.isUserObserving) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_OBSERVING\n );\n }\n\n if (parsedSelves.updates.canNotViewTheParticipantListChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE,\n {canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList}\n );\n }\n\n if (parsedSelves.updates.isSharingBlockedChanged) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n LOCUSINFO.EVENTS.SELF_IS_SHARING_BLOCKED_CHANGE,\n {isSharingBlocked: parsedSelves.current.isSharingBlocked}\n );\n }\n\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateSelf',\n },\n EVENTS.LOCUS_INFO_UPDATE_SELF,\n {\n oldSelf: parsedSelves.previous,\n newSelf: parsedSelves.current,\n }\n );\n this.parsedLocus.self = parsedSelves.current;\n // @ts-ignore\n this.self = self;\n } else {\n this.compareAndUpdateFlags.compareHostAndSelf = false;\n }\n }\n\n /**\n * handles when the locus.url is updated\n * @param {String} url\n * @param {Boolean} isMainLocus\n * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string, isMainLocus = true) {\n if (url && this.url !== url) {\n this.url = url;\n this.updateMeeting({locusUrl: url});\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateLocusUrl',\n },\n EVENTS.LOCUS_INFO_UPDATE_URL,\n {url, isMainLocus}\n );\n }\n }\n\n /**\n * @param {String} aclUrl\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateAclUrl(aclUrl: string) {\n if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {\n this.aclUrl = aclUrl;\n }\n }\n\n /**\n * @param {Number} baseSequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateBasequence(baseSequence: number) {\n if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {\n this.baseSequence = baseSequence;\n }\n }\n\n /**\n * @param {Number} sequence\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateSequence(sequence: number) {\n if (sequence && !isEqual(this.sequence, sequence)) {\n this.sequence = sequence;\n }\n }\n\n /**\n * @param {Object} membership\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMemberShip(membership: object) {\n if (membership && !isEqual(this.membership, membership)) {\n this.membership = membership;\n }\n }\n\n /**\n * @param {Array} identities\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateIdentifiers(identities: Array<any>) {\n if (identities && !isEqual(this.identities, identities)) {\n this.identities = identities;\n }\n }\n\n /**\n * check the locus is main session's one or not, if is main session's, update main session cache\n * @param {Object} locus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateLocusCache(locus: any) {\n const isMainSessionDTO = ControlsUtils.isMainSessionDTO(locus);\n if (isMainSessionDTO) {\n this.updateMainSessionLocusCache(locus);\n }\n }\n\n /**\n * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)\n * if join breakout from main session, main session is not active for the attendee and remove main session locus cache\n * @param {Object} newLocus\n * @returns {Object}\n * @memberof LocusInfo\n */\n getTheLocusToUpdate(newLocus: any) {\n const switchStatus = ControlsUtils.getSessionSwitchStatus(this, newLocus);\n\n if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {\n return cloneDeep(this.mainSessionLocusCache);\n }\n const isMainSessionDTO =\n this.mainSessionLocusCache && ControlsUtils.isMainSessionDTO(this.mainSessionLocusCache);\n\n if (isMainSessionDTO) {\n const isActive =\n [LOCUS.STATE.ACTIVE, LOCUS.STATE.INITIALIZING, LOCUS.STATE.TERMINATING].includes(\n this.fullState?.state\n ) && !this.mainSessionLocusCache?.self?.removed;\n\n if (!isActive) {\n this.clearMainSessionLocusCache();\n }\n }\n\n return newLocus;\n }\n\n /**\n * merge participants by participant id\n * @param {Array} participants\n * @param {Array} sourceParticipants\n * @returns {Array} merged participants\n * @memberof LocusInfo\n */\n // eslint-disable-next-line class-methods-use-this\n mergeParticipants(participants, sourceParticipants) {\n if (!sourceParticipants || !sourceParticipants.length) return participants;\n if (!participants || !participants.length) {\n return sourceParticipants;\n }\n sourceParticipants.forEach((participant) => {\n const existIndex = participants.findIndex((p) => p.id === participant.id);\n if (existIndex > -1) {\n participants.splice(existIndex, 1, participant);\n } else {\n participants.push(participant);\n }\n });\n\n return participants;\n }\n\n /**\n * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout\n * @param {Object} mainLocus\n * @returns {undefined}\n * @memberof LocusInfo\n */\n updateMainSessionLocusCache(mainLocus: any) {\n if (!mainLocus) {\n return;\n }\n const locusClone = cloneDeep(mainLocus);\n if (this.mainSessionLocusCache) {\n // shallow merge and do special merge for participants\n assignWith(this.mainSessionLocusCache, locusClone, (objValue, srcValue, key) => {\n if (key === 'participants') {\n return this.mergeParticipants(objValue, srcValue);\n }\n\n return srcValue || objValue;\n });\n } else {\n this.mainSessionLocusCache = locusClone;\n }\n }\n\n /**\n * clear main session cache\n * @returns {undefined}\n * @memberof LocusInfo\n */\n clearMainSessionLocusCache() {\n this.mainSessionLocusCache = null;\n }\n}\n"],"mappings":"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,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAAA,EAAAmE,KAAA;IAAA,IAAAtB,gBAAA,CAAA7C,OAA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","ignoreList":[]}
|