@webex/plugin-meetings 3.8.1-web-workers-keepalive.1 → 3.9.0-webinar5k.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/constants.js +8 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/hashTree/constants.js +23 -0
  6. package/dist/hashTree/constants.js.map +1 -0
  7. package/dist/hashTree/hashTree.js +516 -0
  8. package/dist/hashTree/hashTree.js.map +1 -0
  9. package/dist/hashTree/hashTreeParser.js +521 -0
  10. package/dist/hashTree/hashTreeParser.js.map +1 -0
  11. package/dist/interpretation/index.js +1 -1
  12. package/dist/interpretation/siLanguage.js +1 -1
  13. package/dist/locus-info/index.js +301 -59
  14. package/dist/locus-info/index.js.map +1 -1
  15. package/dist/meeting/brbState.js +14 -12
  16. package/dist/meeting/brbState.js.map +1 -1
  17. package/dist/meeting/index.js +110 -12
  18. package/dist/meeting/index.js.map +1 -1
  19. package/dist/meeting/muteState.js +2 -5
  20. package/dist/meeting/muteState.js.map +1 -1
  21. package/dist/meeting/request.js +19 -0
  22. package/dist/meeting/request.js.map +1 -1
  23. package/dist/meeting/request.type.js.map +1 -1
  24. package/dist/meeting/util.js +8 -11
  25. package/dist/meeting/util.js.map +1 -1
  26. package/dist/meetings/index.js +6 -2
  27. package/dist/meetings/index.js.map +1 -1
  28. package/dist/member/index.js.map +1 -1
  29. package/dist/member/types.js.map +1 -1
  30. package/dist/members/collection.js +13 -0
  31. package/dist/members/collection.js.map +1 -1
  32. package/dist/members/index.js +44 -23
  33. package/dist/members/index.js.map +1 -1
  34. package/dist/members/request.js +3 -3
  35. package/dist/members/request.js.map +1 -1
  36. package/dist/members/util.js +18 -6
  37. package/dist/members/util.js.map +1 -1
  38. package/dist/multistream/sendSlotManager.js +32 -2
  39. package/dist/multistream/sendSlotManager.js.map +1 -1
  40. package/dist/types/constants.d.ts +6 -0
  41. package/dist/types/hashTree/constants.d.ts +8 -0
  42. package/dist/types/hashTree/hashTree.d.ts +128 -0
  43. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  44. package/dist/types/locus-info/index.d.ts +93 -3
  45. package/dist/types/meeting/brbState.d.ts +0 -1
  46. package/dist/types/meeting/index.d.ts +29 -3
  47. package/dist/types/meeting/request.d.ts +9 -1
  48. package/dist/types/meeting/request.type.d.ts +74 -0
  49. package/dist/types/meeting/util.d.ts +3 -3
  50. package/dist/types/member/types.d.ts +1 -0
  51. package/dist/types/members/collection.d.ts +6 -0
  52. package/dist/types/members/index.d.ts +15 -3
  53. package/dist/types/members/request.d.ts +1 -1
  54. package/dist/types/members/util.d.ts +5 -2
  55. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  56. package/dist/webinar/index.js +1 -1
  57. package/package.json +24 -23
  58. package/src/constants.ts +7 -0
  59. package/src/hashTree/constants.ts +12 -0
  60. package/src/hashTree/hashTree.ts +460 -0
  61. package/src/hashTree/hashTreeParser.ts +556 -0
  62. package/src/locus-info/index.ts +393 -58
  63. package/src/meeting/brbState.ts +9 -7
  64. package/src/meeting/index.ts +104 -6
  65. package/src/meeting/muteState.ts +2 -6
  66. package/src/meeting/request.ts +16 -0
  67. package/src/meeting/request.type.ts +64 -0
  68. package/src/meeting/util.ts +17 -20
  69. package/src/meetings/index.ts +17 -3
  70. package/src/member/index.ts +1 -0
  71. package/src/member/types.ts +1 -0
  72. package/src/members/collection.ts +11 -0
  73. package/src/members/index.ts +33 -7
  74. package/src/members/request.ts +2 -2
  75. package/src/members/util.ts +14 -3
  76. package/src/multistream/sendSlotManager.ts +34 -2
  77. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  78. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  79. package/test/unit/spec/locus-info/index.js +506 -55
  80. package/test/unit/spec/meeting/brbState.ts +9 -9
  81. package/test/unit/spec/meeting/index.js +475 -42
  82. package/test/unit/spec/meeting/request.js +71 -0
  83. package/test/unit/spec/members/index.js +33 -10
  84. package/test/unit/spec/members/request.js +2 -2
  85. package/test/unit/spec/members/utils.js +27 -7
  86. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  87. package/test/unit/spec/reachability/index.ts +3 -1
@@ -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","_this2","isDelta","url","workingCopy","syncUrl","locusUrl","LoggerProxy","logger","info","concat","meetingRequest","getLocusDTO","catch","Metrics","sendBehavioralMetric","BEHAVIORAL_METRICS","LOCUS_DELTA_SYNC_FAILED","correlationId","reason","message","errorName","stack","code","meetings","destroy","MEETING_REMOVED_REASON","LOCUS_DTO_SYNC_FAILED","then","res","isEmpty","body","locusInfo","handleLocusDelta","onFullLocus","LOCUS_SYNC_HANDLING_FAILED","finally","resume","applyLocusDeltaData","action","locus","_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","baseSequence","sequence","membership","identities","participants","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","initialSetup","parse","data","eventType","getTheLocusToUpdate","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","error","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","isNeedReplaceMembers","updateLocusInfo","isMeetingActive","handleOneOnOneEvent","type","_CALL_","_SIP_BRIDGE_","file","function","EVENTS","REMOTE_RESPONSE","remoteDeclined","remoteAnswered","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","_this4","findParticipant","collection","item","person","id","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","forEach","reduce","existingParticipant","delta","status","changed","push","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isArray","_iterator","_step","_participant$person","LOCUSINFO","PARTICIPANT_REASON_CHANGED","displayName","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","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","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","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","currentMediaStatus","audio","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","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","cloneDeep","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this5","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\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 deltaParticipants: 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 * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\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 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 throw err;\n });\n }\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 throw e;\n })\n .then((res) => {\n if (isDelta) {\n if (!isEmpty(res.body)) {\n meeting.locusInfo.handleLocusDelta(res.body, meeting);\n } else {\n LoggerProxy.logger.info(\n 'Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO'\n );\n }\n } else {\n meeting.locusInfo.onFullLocus(res.body);\n }\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 // 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 * 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\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);\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 /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\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);\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 * @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 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.updateParticipantDeltas(locus.participants);\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(locus.participants, isReplaceMembers);\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(locus.participants, isReplaceMembers);\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.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.updateLocusUrl(locus.url);\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 the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\n }, []);\n }\n\n /**\n * update meeting's members\n * @param {Object} participants new participants object\n * @param {Boolean} isReplace is replace the whole members\n * @returns {Array} updatedParticipants\n * @memberof LocusInfo\n */\n updateParticipants(participants: object, isReplace?: boolean) {\n this.emitScoped(\n {\n file: 'locus-info',\n function: 'updateParticipants',\n },\n EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS,\n {\n participants,\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 },\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 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 (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\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 * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\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\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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"}
1
+ {"version":3,"names":["_lodash","require","_loggerProxy","_interopRequireDefault","_eventsScope","_constants","_infoUtils","_fullState","_selfUtils","_hostUtils","_controlsUtils","_embeddedAppsUtils","_mediaSharesUtils","_parser","_metrics","_constants2","_hashTreeParser","_interopRequireWildcard","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray2","_unsupportedIterableToArray","length","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","_Reflect$construct","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","valueOf","LocusDtoTopLevelKeys","LocusInfo","exports","_EventsScope","_inherits2","_super","updateMeeting","webex","meetingId","_this","_classCallCheck2","_assertThisInitialized2","parsedLocus","states","emitChange","compareAndUpdateFlags","locusParser","LocusDeltaParser","hashTreeObjectId2ParticipantId","_map","_createClass2","key","doLocusSync","meeting","_this2","isDelta","url","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","locus","_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","deltaParticipants","updateLocusCache","updateParticipants","updateConversationUrl","conversationUrl","updateControls","controls","self","updateLocusUrl","updateFullState","fullState","updateMeetingInfo","updateEmbeddedApps","embeddedApps","updateSelf","updateHostInfo","host","updateMediaShares","mediaShares","updateServices","links","services","updateResources","resources","initialSetup","dataSets","updateHashTreeObjectInLocus","object","type","htMeta","elementId","toLowerCase","ObjectType","data","warn","locusObjectFromData","participant","id","console","log","cloneDeep","participantObject","participantId","jsSdkMeta","removedParticipantIds","delete","handleLocusAPIResponse","responseBody","hashTreeParser","handleLocusUpdate","handleHashTreeMessage","locusStateElements","handleRootHashHeartBeatMessage","handleMessage","updateFromHashTree","updateType","_this4","LocusInfoUpdateType","OBJECTS_UPDATED","updatedObjects","MEETING_ENDED","meetingCollection","parse","eventType","stateElementsMessage","getTheLocusToUpdate","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","_this$participants","_this5","_locus$jsSdkMeta","error","HashTreeParser","initialLocus","webexRequest","request","bind","locusInfoUpdateCallback","debugId","substring","isNewFullLocus","updateParticipantDeltas","isReplaceMembers","ControlsUtils","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","find","identity","_USER_","removed","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","SELF_REMOVED","compareSelfAndHost","compareHostAndSelf","_this$parsedLocus$hos","selfIdentity","hostId","moderator","LOCUS_INFO_CAN_ASSIGN_HOST","canAssignHost","_this6","findParticipant","collection","item","person","generateDelta","prevState","newState","deltas","audioStatus","videoSlidesStatus","videoStatus","_keys","reduce","existingParticipant","delta","status","changed","isReplace","_this$parsedLocus$con","LOCUS_INFO_UPDATE_PARTICIPANTS","recordingId","record","modifiedBy","selfId","_isArray","_iterator","_step","_participant$person","LOCUSINFO","PARTICIPANT_REASON_CHANGED","displayName","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","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","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","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","currentMediaStatus","audio","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","LOCUS_INFO_UPDATE_URL","isMainSessionDTO","updateMainSessionLocusCache","newLocus","switchStatus","getSessionSwitchStatus","isReturnToMain","mainSessionLocusCache","_this$fullState","_this$mainSessionLocu","_this$mainSessionLocu2","isActive","ACTIVE","INITIALIZING","includes","clearMainSessionLocusCache","sourceParticipants","existIndex","findIndex","p","splice","mainLocus","_this7","locusClone","assignWith","objValue","srcValue","EventsScope"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport {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';\nimport HashTreeParser, {\n DataSet,\n HashTreeMessage,\n HashTreeObject,\n HtMeta,\n LocusInfoUpdateType,\n ObjectType,\n} from '../hashTree/hashTreeParser';\n\nexport type LocusLLMEvent = {\n data: {\n eventType: 'locus.state_message';\n stateElementsMessage: HashTreeMessage;\n };\n};\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 htMeta?: HtMeta;\n info?: any;\n jsSdkMeta?: {\n removedParticipantIds: string[]; // list of ids of participants that are removed in the last update\n };\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 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 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];\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 deltaParticipants: 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\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 *\n * @param {Meeting} meeting\n * @returns {undefined}\n */\n private doLocusSync(meeting: any) {\n let isDelta;\n let url;\n let meetingDestroyed = false;\n\n if (this.locusParser.workingCopy.syncUrl) {\n url = this.locusParser.workingCopy.syncUrl;\n isDelta = true;\n } else {\n url = meeting.locusUrl;\n isDelta = false;\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); // todo: check if this is safe, is isDelta=true always only for non-hash tree locus\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\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);\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 /**\n * Stored participant changes between the last event and the current event.\n * All previously stored events are overwritten between events.\n *\n * @instance\n * @type {Array<DeltaParticipant>}\n * @private\n * @member LocusInfo\n */\n this.deltaParticipants = [];\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);\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 * @param {DataSet[]} [dataSets=[]] - Array of data sets\n * @returns {undefined}\n * @memberof LocusInfo\n */\n initialSetup(locus: object, dataSets: DataSet[] = []) {\n this.updateLocusCache(locus);\n this.onFullLocus(locus, undefined, dataSets);\n\n // Change it to true after it receives it first locus object\n this.emitChange = true;\n }\n\n /**\n *\n * @param {HashTreeObject} object data set object\n * @param {any} locus\n * @returns {void}\n */\n updateHashTreeObjectInLocus(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 LoggerProxy.logger.warn(\n `Locus-info:index#updateHashTreeObjectInLocus --> received LOCUS object without data, this is not supported!`\n );\n\n return locus;\n }\n // replace the main locus\n\n // The Locus object from MAIN dataset has empty participants, so removing them to avoid it overriding the ones in our current locus object\n // Also, it 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\n locus = {...locus, ...locusObjectFromData};\n locus.htMeta = object.htMeta;\n break;\n }\n case ObjectType.participant:\n LoggerProxy.logger.info(\n `Locus-info:index#updateHashTreeObjectInLocus --> participant id=${\n object.htMeta.elementId.id\n } ${object.data ? 'updated' : 'removed'}`\n );\n console.log(\n 'marcin: hashTreeObjectId2ParticipantId=',\n cloneDeep(this.hashTreeObjectId2ParticipantId)\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 LoggerProxy.logger.warn(\n `Locus-info:index#updateHashTreeObjectInLocus --> received SELF object without data, this is not supported!`\n );\n\n return locus;\n }\n locus.self = object.data;\n break;\n }\n\n return locus;\n }\n\n /**\n * Handles HTTP response from Locus API call when hash tree update.\n * @param {Meeting} meeting meeting object\n * @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call\n * @returns {void}\n */\n handleLocusAPIResponse(meeting, responseBody: LocusApiResponseBody): void {\n console.log('marcin: locus response from API call:', responseBody);\n if (responseBody.dataSets) {\n if (!this.hashTreeParser) {\n LoggerProxy.logger.warn(\n `Locus-info:index#handleLocusAPIResponse --> received response with hash tree info from Locus API, but we don't have the hashTreeParser created`\n );\n\n return;\n }\n // Locus is using the new hash tree mechanism\n // so update our data in the hash tree parser\n this.hashTreeParser.handleLocusUpdate(responseBody);\n\n // but the Locus object we receive in this case looks same like classic delta, so we can use existing delta method to process it\n this.onDeltaLocus(responseBody.locus);\n } else {\n // classic Locus delta\n this.handleLocusDelta(responseBody.locus, meeting);\n }\n }\n\n /**\n * Handles a hash tree message received from Locus.\n *\n * @param {Meeting} meeting - The meeting object\n * @param {HashTreeMessage} message incoming hash tree message\n * @returns {void}\n */\n private handleHashTreeMessage(meeting: any, message: HashTreeMessage) {\n if (!this.hashTreeParser) {\n LoggerProxy.logger.warn(\n `Locus-info:index#handleHashTreeMessage --> received hash tree message, but we don't have the hashTreeParser`\n );\n\n return;\n }\n if (message.locusStateElements === undefined) {\n // todo: need to see in practice how exactly the heartbeat messages look like\n this.hashTreeParser.handleRootHashHeartBeatMessage(message);\n } else {\n this.hashTreeParser.handleMessage(message);\n }\n }\n\n /**\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 the main locus with what we currently have\n // but with empty participants array\n let locus: LocusDTO = {\n participants: [],\n jsSdkMeta: {removedParticipantIds: []},\n };\n\n LocusDtoTopLevelKeys.forEach((key) => {\n if (key === 'participants') {\n locus[key] = [];\n } else {\n locus[key] = cloneDeep(this[key]);\n }\n });\n\n // apply the updates from the hash tree onto the locus\n data.updatedObjects.forEach((object) => {\n locus = this.updateHashTreeObjectInLocus(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.LOCUS_DTO_SYNC_FAILED);\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 (data.eventType === 'locus.state_message') {\n // this is the new hashmap Locus message format (only applicable to webinars for now)\n this.handleHashTreeMessage(meeting, data.stateElementsMessage as HashTreeMessage);\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\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 * updates the locus with full locus object\n * @param {object} locus locus object\n * @param {string} eventType particulat 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 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 = new HashTreeParser({\n initialLocus: {locus, dataSets},\n webexRequest: this.webex.request.bind(this.webex),\n locusInfoUpdateCallback: this.updateFromHashTree.bind(this),\n debugId: `HT-${this.meetingId.substring(0, 4)}`,\n });\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 a message\n console.log('marcin: !!!!!!!! full DTO - this is not fully implemented/tested yet');\n\n LoggerProxy.logger.warn(\n 'Locus-info:index#onFullLocus --> full DTO - this is not fully implemented/tested yet!!!!!!!!'\n );\n this.handleLocusAPIResponse(undefined, {dataSets, locus});\n\n return;\n }\n } else 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.updateParticipantDeltas(locus.participants);\n this.scheduledMeeting = locus.meeting || null;\n this.participants = locus.participants;\n this.participants?.forEach((participant) => {\n this.hashTreeObjectId2ParticipantId.set(participant.htMeta.elementId.id, participant.id);\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);\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 the deltaParticipants property of this object based on a list of\n * provided participants.\n *\n * @param {Array} [participants] - The participants to update against.\n * @returns {void}\n */\n updateParticipantDeltas(participants: Array<any> = []) {\n // Used to find a participant within a participants collection.\n const findParticipant = (participant, collection) =>\n collection.find((item) => item.person.id === participant.person.id);\n\n // Generates an object that indicates which state properties have changed.\n const generateDelta = (prevState: any = {}, newState: any = {}) => {\n // Setup deltas.\n const deltas = {\n audioStatus: prevState.audioStatus !== newState.audioStatus,\n videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,\n videoStatus: prevState.videoStatus !== newState.videoStatus,\n };\n\n // Clean the object\n Object.keys(deltas).forEach((key) => {\n if (deltas[key] !== true) {\n delete deltas[key];\n }\n });\n\n return deltas;\n };\n\n this.deltaParticipants = participants.reduce((collection, participant) => {\n const existingParticipant = findParticipant(participant, this.participants || []) || {};\n\n const delta = generateDelta(existingParticipant.status, participant.status);\n\n const changed = Object.keys(delta).length > 0;\n\n if (changed) {\n collection.push({\n person: participant.person,\n delta,\n });\n }\n\n return collection;\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 },\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 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 (\n (info && !isEqual(this.info, info)) ||\n (roles.length && !isEqual(this.roles, roles) && info)\n ) {\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 * @returns {undefined}\n * emits internal event locus_info_update_url\n */\n updateLocusUrl(url: string) {\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\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,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;AACA,IAAAe,eAAA,GAAAC,uBAAA,CAAAhB,OAAA;AAOoC,SAAAiB,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAY,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,MAAAL,CAAA,UAAAW,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAArB,CAAA,WAAAA,EAAA,QAAAU,CAAA,IAAAG,CAAA,CAAAO,MAAA,WAAAG,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAX,CAAA,CAAAH,CAAA,UAAAnB,CAAA,WAAAA,EAAAkC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAL,CAAA,gBAAAM,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAR,CAAA,WAAAA,EAAA,IAAAP,EAAA,GAAAA,EAAA,CAAAN,IAAA,CAAAI,CAAA,MAAAb,CAAA,WAAAA,EAAA,QAAA+B,IAAA,GAAAhB,EAAA,CAAAiB,IAAA,IAAAJ,gBAAA,GAAAG,IAAA,CAAAR,IAAA,SAAAQ,IAAA,KAAAxC,CAAA,WAAAA,EAAA0C,GAAA,IAAAJ,MAAA,SAAAC,GAAA,GAAAG,GAAA,KAAAP,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAb,EAAA,CAAAmB,MAAA,UAAAnB,EAAA,CAAAmB,MAAA,oBAAAL,MAAA,QAAAC,GAAA;AAAA,SAAAX,4BAAAN,CAAA,EAAAsB,MAAA,SAAAtB,CAAA,qBAAAA,CAAA,sBAAAuB,iBAAA,CAAAvB,CAAA,EAAAsB,MAAA,OAAAnC,CAAA,GAAAM,MAAA,CAAAC,SAAA,CAAA8B,QAAA,CAAA5B,IAAA,CAAAI,CAAA,EAAAyB,KAAA,aAAAtC,CAAA,iBAAAa,CAAA,CAAA0B,WAAA,EAAAvC,CAAA,GAAAa,CAAA,CAAA0B,WAAA,CAAAC,IAAA,MAAAxC,CAAA,cAAAA,CAAA,mBAAAyC,WAAA,CAAA5B,CAAA,OAAAb,CAAA,+DAAA0C,IAAA,CAAA1C,CAAA,UAAAoC,iBAAA,CAAAvB,CAAA,EAAAsB,MAAA;AAAA,SAAAC,kBAAAO,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAAvB,MAAA,EAAAwB,GAAA,GAAAD,GAAA,CAAAvB,MAAA,WAAAV,CAAA,MAAAmC,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAAlC,CAAA,GAAAkC,GAAA,EAAAlC,CAAA,IAAAmC,IAAA,CAAAnC,CAAA,IAAAiC,GAAA,CAAAjC,CAAA,UAAAmC,IAAA;AAAA,SAAAE,QAAAxD,CAAA,EAAAE,CAAA,QAAAC,CAAA,GAAAsD,aAAA,CAAAzD,CAAA,OAAA0D,6BAAA,QAAApC,CAAA,GAAAoC,6BAAA,CAAA1D,CAAA,GAAAE,CAAA,KAAAoB,CAAA,GAAAA,CAAA,CAAAqC,MAAA,WAAAzD,CAAA,WAAAW,gCAAA,CAAAb,CAAA,EAAAE,CAAA,EAAA0D,UAAA,OAAAzD,CAAA,CAAA0D,IAAA,CAAAC,KAAA,CAAA3D,CAAA,EAAAmB,CAAA,YAAAnB,CAAA;AAAA,SAAA4D,cAAA/D,CAAA,aAAAE,CAAA,MAAAA,CAAA,GAAA8D,SAAA,CAAAnC,MAAA,EAAA3B,CAAA,UAAAC,CAAA,WAAA6D,SAAA,CAAA9D,CAAA,IAAA8D,SAAA,CAAA9D,CAAA,QAAAA,CAAA,OAAAsD,OAAA,CAAAzC,MAAA,CAAAZ,CAAA,OAAA8D,OAAA,WAAA/D,CAAA,QAAAgE,gBAAA,CAAA5D,OAAA,EAAAN,CAAA,EAAAE,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiE,iCAAA,GAAAC,wBAAA,CAAApE,CAAA,EAAAmE,iCAAA,CAAAhE,CAAA,KAAAqD,OAAA,CAAAzC,MAAA,CAAAZ,CAAA,GAAA8D,OAAA,WAAA/D,CAAA,IAAAU,sBAAA,CAAAZ,CAAA,EAAAE,CAAA,EAAAW,gCAAA,CAAAV,CAAA,EAAAD,CAAA,iBAAAF,CAAA;AAAA,SAAAqE,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAArE,OAAA,EAAAgE,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,OAAAF,gBAAA,CAAArE,OAAA,QAAA0C,WAAA,EAAA4B,MAAA,GAAAE,kBAAA,CAAAJ,KAAA,EAAAV,SAAA,EAAAa,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAZ,KAAA,OAAAE,SAAA,gBAAAe,2BAAA,CAAAzE,OAAA,QAAAsE,MAAA;AAAA,SAAAJ,0BAAA,eAAAQ,OAAA,qBAAAF,kBAAA,oBAAAA,kBAAA,CAAAG,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAnE,SAAA,CAAAoE,OAAA,CAAAlE,IAAA,CAAA4D,kBAAA,CAAAK,OAAA,8CAAAnF,CAAA,sBAxCpC;AAmGA,IAAMqF,oBAAoB,GAAG,CAC3B,UAAU,EACV,WAAW,EACX,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACN,UAAU,EACV,SAAS,EACT,KAAK,CACN;;AAED;AACA;AACA;AACA;AACA;AACA;AALA,IAMqBC,SAAS,GAAAC,OAAA,CAAAjF,OAAA,0BAAAkF,YAAA;EAAA,IAAAC,UAAA,CAAAnF,OAAA,EAAAgF,SAAA,EAAAE,YAAA;EAAA,IAAAE,MAAA,GAAArB,YAAA,CAAAiB,SAAA;EAkCyB;;EAErD;AACF;AACA;AACA;AACA;AACA;AACA;EACE,SAAAA,UAAYK,aAAa,EAAEC,KAAK,EAAEC,SAAS,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAzF,OAAA,QAAAgF,SAAA;IAC3CQ,KAAA,GAAAJ,MAAA,CAAAxE,IAAA;IAAQ,IAAAgD,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IAAA,IAAA5B,gBAAA,CAAA5D,OAAA,MAAA0F,uBAAA,CAAA1F,OAAA,EAAAwF,KAAA;IACRA,KAAA,CAAKG,WAAW,GAAG;MACjBC,MAAM,EAAE;IACV,CAAC;IACDJ,KAAA,CAAKF,KAAK,GAAGA,KAAK;IAClBE,KAAA,CAAKK,UAAU,GAAG,KAAK;IACvBL,KAAA,CAAKM,qBAAqB,GAAG,CAAC,CAAC;IAC/BN,KAAA,CAAKD,SAAS,GAAGA,SAAS;IAC1BC,KAAA,CAAKH,aAAa,GAAGA,aAAa;IAClCG,KAAA,CAAKO,WAAW,GAAG,IAAIC,eAAgB,CAAC,CAAC;IACzCR,KAAA,CAAKS,8BAA8B,GAAG,IAAAC,IAAA,CAAAlG,OAAA,CAAQ,CAAC;IAAC,OAAAwF,KAAA;EAClD;;EAEA;AACF;AACA;AACA;AACA;AACA;EALE,IAAAW,aAAA,CAAAnG,OAAA,EAAAgF,SAAA;IAAAoB,GAAA;IAAAzE,KAAA,EAMA,SAAA0E,YAAoBC,OAAY,EAAE;MAAA,IAAAC,MAAA;MAChC,IAAIC,OAAO;MACX,IAAIC,GAAG;MACP,IAAIC,gBAAgB,GAAG,KAAK;MAE5B,IAAI,IAAI,CAACX,WAAW,CAACY,WAAW,CAACC,OAAO,EAAE;QACxCH,GAAG,GAAG,IAAI,CAACV,WAAW,CAACY,WAAW,CAACC,OAAO;QAC1CJ,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACLC,GAAG,GAAGH,OAAO,CAACO,QAAQ;QACtBL,OAAO,GAAG,KAAK;MACjB;MAEAM,oBAAW,CAACC,MAAM,CAACC,IAAI,+DAAAC,MAAA,CAEnBT,OAAO,GAAG,OAAO,GAAG,MAAM,UAE9B,CAAC;;MAED;MACAF,OAAO,CAACY,cAAc,CACnBC,WAAW,CAAC;QAACV,GAAG,EAAHA;MAAG,CAAC,CAAC,CAClBW,KAAK,CAAC,UAAC1H,CAAC,EAAK;QACZ,IAAI8G,OAAO,EAAE;UACXM,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,+EACF,CAAC;UAEDK,gBAAO,CAACC,oBAAoB,CAACC,mBAAkB,CAACC,uBAAuB,EAAE;YACvEC,aAAa,EAAEnB,OAAO,CAACmB,aAAa;YACpChB,GAAG,EAAHA,GAAG;YACHiB,MAAM,EAAEhI,CAAC,CAACiI,OAAO;YACjBC,SAAS,EAAElI,CAAC,CAACiD,IAAI;YACjBkF,KAAK,EAAEnI,CAAC,CAACmI,KAAK;YACdC,IAAI,EAAEpI,CAAC,CAACoI;UACV,CAAC,CAAC;UAEFtB,OAAO,GAAG,KAAK;;UAEf;UACA,IAAI9G,CAAC,CAACqI,UAAU,KAAK,GAAG,EAAE;YACxB,OAAOzB,OAAO,CAACY,cAAc,CAACC,WAAW,CAAC;cAACV,GAAG,EAAEH,OAAO,CAACO;YAAQ,CAAC,CAAC,CAACO,KAAK,CAAC,UAACnF,GAAG,EAAK;cAChF6E,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,oFACF,CAAC;cACDT,MAAI,CAACjB,KAAK,CAAC0C,QAAQ,CAACC,OAAO,CAAC3B,OAAO,EAAE4B,iCAAsB,CAACC,qBAAqB,CAAC;cAClFzB,gBAAgB,GAAG,IAAI;cACvB,MAAMzE,GAAG;YACX,CAAC,CAAC;UACJ;UACA6E,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,6GACF,CAAC;QACH,CAAC,MAAM;UACLF,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,oFACF,CAAC;QACH;QACAT,MAAI,CAACjB,KAAK,CAAC0C,QAAQ,CAACC,OAAO,CAAC3B,OAAO,EAAE4B,iCAAsB,CAACC,qBAAqB,CAAC;QAClFzB,gBAAgB,GAAG,IAAI;QACvB,MAAMhH,CAAC;MACT,CAAC,CAAC,CACD0I,IAAI,CAAC,UAACC,GAAG,EAAK;QACb,IAAI,IAAAC,eAAO,EAACD,GAAG,CAACE,IAAI,CAAC,EAAE;UACrB,IAAI/B,OAAO,EAAE;YACXM,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,wGACF,CAAC;UACH,CAAC,MAAM;YACLF,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,iFACF,CAAC;UACH;UAEA;QACF;QAEA,IAAIR,OAAO,EAAE;UACX,IAAI6B,GAAG,CAACE,IAAI,CAACC,YAAY,EAAE;YACzBlC,OAAO,CAACmC,SAAS,CAACC,gBAAgB,CAACL,GAAG,CAACE,IAAI,EAAEjC,OAAO,CAAC,CAAC,CAAC;;YAEvD;UACF;UACA;UACAQ,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,uEACF,CAAC;QACH;QACAV,OAAO,CAACmC,SAAS,CAACE,WAAW,CAACN,GAAG,CAACE,IAAI,CAAC;MACzC,CAAC,CAAC,CACDnB,KAAK,CAAC,UAAC1H,CAAC,EAAK;QACZoH,oBAAW,CAACC,MAAM,CAACC,IAAI,iJAAAC,MAAA,CAC2HvH,CAAC,CAAC8C,QAAQ,CAAC,CAAC,MAC9J,CAAC;QAED6E,gBAAO,CAACC,oBAAoB,CAACC,mBAAkB,CAACqB,0BAA0B,EAAE;UAC1EnB,aAAa,EAAEnB,OAAO,CAACmB,aAAa;UACpChB,GAAG,EAAHA,GAAG;UACHiB,MAAM,EAAEhI,CAAC,CAACiI,OAAO;UACjBC,SAAS,EAAElI,CAAC,CAACiD,IAAI;UACjBkF,KAAK,EAAEnI,CAAC,CAACmI,KAAK;UACdC,IAAI,EAAEpI,CAAC,CAACoI;QACV,CAAC,CAAC;MACJ,CAAC,CAAC,CACDe,OAAO,CAAC,YAAM;QACb,IAAI,CAACnC,gBAAgB,EAAE;UACrB;UACA;UACAH,MAAI,CAACR,WAAW,CAAC+C,MAAM,CAAC,CAAC;QAC3B;MACF,CAAC,CAAC;IACN;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA1C,GAAA;IAAAzE,KAAA,EAOA,SAAAoH,oBAAoBC,MAAc,EAAEC,KAAU,EAAE3C,OAAY,EAAE;MAC5D,IAAA4C,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;MAEjE,QAAQR,MAAM;QACZ,KAAKM,YAAY;UACfhD,OAAO,CAACmC,SAAS,CAACgB,YAAY,CAACR,KAAK,CAAC;UACrC;QACF,KAAKI,WAAW;QAChB,KAAKE,IAAI;UACP;UACA;QACF,KAAKH,MAAM;QACX,KAAKI,iBAAiB;UACpB,IAAI,CAACnD,WAAW,CAACC,OAAO,CAAC;UACzB;QACF;UACEQ,oBAAW,CAACC,MAAM,CAACC,IAAI,yEAAAC,MAAA,CACmD+B,MAAM,CAChF,CAAC;MACL;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA5C,GAAA;IAAAzE,KAAA,EAQA,SAAA+G,iBAAiBO,KAAU,EAAE3C,OAAY,EAAE;MAAA,IAAAoD,MAAA;MACzC;MACA,IAAI,CAAC,IAAI,CAAC3D,WAAW,CAAC4D,aAAa,EAAE;QACnC;QACA;QACA,IAAI,CAAC5D,WAAW,CAAC4D,aAAa,GAAG,UAACX,MAAM,EAAEY,UAAU,EAAK;UACvDF,MAAI,CAACX,mBAAmB,CAACC,MAAM,EAAEY,UAAU,EAAEtD,OAAO,CAAC;QACvD,CAAC;MACH;MACA;MACA,IAAI,CAACP,WAAW,CAAC8D,YAAY,CAACZ,KAAK,CAAC;IACtC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA7C,GAAA;IAAAzE,KAAA,EAKA,SAAAmI,KAAA,EAAsB;MAAA,IAAAC,YAAA,EAAAC,aAAA;MAAA,IAAjBf,KAAU,GAAAvF,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,CAAC,CAAC;MAClB,IAAI,CAACwG,OAAO,GAAGjB,KAAK,CAACiB,OAAO,IAAI,IAAI;MACpC,IAAI,CAACC,gBAAgB,GAAGlB,KAAK,CAAC3C,OAAO,IAAI,IAAI;MAC7C,IAAI,CAAC8D,eAAe,GAAGnB,KAAK,CAACmB,eAAe,IAAI,IAAI;MACpD,IAAI,CAACC,QAAQ,GAAGpB,KAAK,CAACoB,QAAQ,IAAI,IAAI;MACtC,IAAI,CAACC,MAAM,GAAGrB,KAAK,CAACqB,MAAM,IAAI,IAAI;MAClC,IAAI,CAAC9B,YAAY,GAAGS,KAAK,CAACT,YAAY,IAAI,IAAI;MAC9C,IAAI,CAAC+B,QAAQ,GAAGtB,KAAK,CAACsB,QAAQ,IAAI,IAAI;MACtC,IAAI,CAACC,UAAU,GAAGvB,KAAK,CAACuB,UAAU,IAAI,IAAI;MAC1C,IAAI,CAACC,UAAU,GAAGxB,KAAK,CAACwB,UAAU,IAAI,IAAI;MAC1C,IAAI,CAACC,YAAY,GAAGzB,KAAK,CAACyB,YAAY,IAAI,IAAI;;MAE9C;AACJ;AACA;AACA;AACA;AACA;AACA;;MAEI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACI,IAAI,CAACC,iBAAiB,GAAG,EAAE;MAE3B,IAAI,CAACC,gBAAgB,CAAC3B,KAAK,CAAC;MAC5B;MACA;MACA,IAAI,CAAC4B,kBAAkB,CAAC5B,KAAK,CAACyB,YAAY,EAAE,EAAE,CAAC;MAC/C;MACA,IAAI,CAACI,qBAAqB,CAAC7B,KAAK,CAAC8B,eAAe,EAAE9B,KAAK,CAACjC,IAAI,CAAC;MAC7D,IAAI,CAACgE,cAAc,CAAC/B,KAAK,CAACgC,QAAQ,EAAEhC,KAAK,CAACiC,IAAI,CAAC;MAC/C,IAAI,CAACC,cAAc,CAAClC,KAAK,CAACxC,GAAG,CAAC;MAC9B,IAAI,CAAC2E,eAAe,CAACnC,KAAK,CAACoC,SAAS,CAAC;MACrC,IAAI,CAACC,iBAAiB,CAACrC,KAAK,CAACjC,IAAI,CAAC;MAClC,IAAI,CAACuE,kBAAkB,CAACtC,KAAK,CAACuC,YAAY,CAAC;MAC3C;MACA,IAAI,CAACC,UAAU,CAACxC,KAAK,CAACiC,IAAI,CAAC;MAC3B,IAAI,CAACQ,cAAc,CAACzC,KAAK,CAAC0C,IAAI,CAAC;MAC/B,IAAI,CAACC,iBAAiB,CAAC3C,KAAK,CAAC4C,WAAW,CAAC;MACzC,IAAI,CAACC,cAAc,EAAA/B,YAAA,GAACd,KAAK,CAAC8C,KAAK,cAAAhC,YAAA,uBAAXA,YAAA,CAAaiC,QAAQ,CAAC;MAC1C,IAAI,CAACC,eAAe,EAAAjC,aAAA,GAACf,KAAK,CAAC8C,KAAK,cAAA/B,aAAA,uBAAXA,aAAA,CAAakC,SAAS,CAAC;IAC9C;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA9F,GAAA;IAAAzE,KAAA,EAMA,SAAAwK,aAAalD,KAAa,EAA4B;MAAA,IAA1BmD,QAAmB,GAAA1I,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,EAAE;MAClD,IAAI,CAACkH,gBAAgB,CAAC3B,KAAK,CAAC;MAC5B,IAAI,CAACN,WAAW,CAACM,KAAK,EAAEgB,SAAS,EAAEmC,QAAQ,CAAC;;MAE5C;MACA,IAAI,CAACvG,UAAU,GAAG,IAAI;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAO,GAAA;IAAAzE,KAAA,EAMA,SAAA0K,4BAA4BC,MAAsB,EAAErD,KAAe,EAAY;MAC7E,IAAMsD,IAAI,GAAGD,MAAM,CAACE,MAAM,CAACC,SAAS,CAACF,IAAI,CAACG,WAAW,CAAC,CAAC;MAEvD,QAAQH,IAAI;QACV,KAAKI,0BAAU,CAAC1D,KAAK;UAAE;YACrB,IAAI,CAACqD,MAAM,CAACM,IAAI,EAAE;cAChB9F,oBAAW,CAACC,MAAM,CAAC8F,IAAI,8GAEvB,CAAC;cAED,OAAO5D,KAAK;YACd;YACA;;YAEA;YACA;YACA,IAAM6D,mBAAmB,GAAGR,MAAM,CAACM,IAAI;YACvC,OAAOE,mBAAmB,CAACpC,YAAY;YAEvCzB,KAAK,GAAAxF,aAAA,CAAAA,aAAA,KAAOwF,KAAK,GAAK6D,mBAAmB,CAAC;YAC1C7D,KAAK,CAACuD,MAAM,GAAGF,MAAM,CAACE,MAAM;YAC5B;UACF;QACA,KAAKG,0BAAU,CAACI,WAAW;UACzBjG,oBAAW,CAACC,MAAM,CAACC,IAAI,oEAAAC,MAAA,CAEnBqF,MAAM,CAACE,MAAM,CAACC,SAAS,CAACO,EAAE,OAAA/F,MAAA,CACxBqF,MAAM,CAACM,IAAI,GAAG,SAAS,GAAG,SAAS,CACzC,CAAC;UACDK,OAAO,CAACC,GAAG,CACT,yCAAyC,EACzC,IAAAC,iBAAS,EAAC,IAAI,CAAClH,8BAA8B,CAC/C,CAAC;UACD,IAAIqG,MAAM,CAACM,IAAI,EAAE;YACf,IAAI,CAAC3D,KAAK,CAACyB,YAAY,EAAE;cACvBzB,KAAK,CAACyB,YAAY,GAAG,EAAE;YACzB;YACA,IAAM0C,iBAAiB,GAAGd,MAAM,CAACM,IAAI;YACrCQ,iBAAiB,CAACZ,MAAM,GAAGF,MAAM,CAACE,MAAM;YACxCvD,KAAK,CAACyB,YAAY,CAACnH,IAAI,CAAC6J,iBAAiB,CAAC;YAC1C,IAAI,CAACnH,8BAA8B,CAACnF,GAAG,CAACwL,MAAM,CAACE,MAAM,CAACC,SAAS,CAACO,EAAE,EAAEI,iBAAiB,CAACJ,EAAE,CAAC;UAC3F,CAAC,MAAM;YACL,IAAMK,aAAa,GAAG,IAAI,CAACpH,8BAA8B,CAAC/F,GAAG,CAACoM,MAAM,CAACE,MAAM,CAACC,SAAS,CAACO,EAAE,CAAC;YAEzF,IAAI,CAAC/D,KAAK,CAACqE,SAAS,EAAE;cACpBrE,KAAK,CAACqE,SAAS,GAAG;gBAACC,qBAAqB,EAAE;cAAE,CAAC;YAC/C;YACAtE,KAAK,CAACqE,SAAS,CAACC,qBAAqB,CAAChK,IAAI,CAAC8J,aAAa,CAAC;YACzD,IAAI,CAACpH,8BAA8B,CAACuH,MAAM,CAAClB,MAAM,CAACE,MAAM,CAACC,SAAS,CAACO,EAAE,CAAC;UACxE;UACA;QACF,KAAKL,0BAAU,CAACzB,IAAI;UAClB,IAAI,CAACoB,MAAM,CAACM,IAAI,EAAE;YAChB9F,oBAAW,CAACC,MAAM,CAAC8F,IAAI,6GAEvB,CAAC;YAED,OAAO5D,KAAK;UACd;UACAA,KAAK,CAACiC,IAAI,GAAGoB,MAAM,CAACM,IAAI;UACxB;MACJ;MAEA,OAAO3D,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA7C,GAAA;IAAAzE,KAAA,EAMA,SAAA8L,uBAAuBnH,OAAO,EAAEoH,YAAkC,EAAQ;MACxET,OAAO,CAACC,GAAG,CAAC,uCAAuC,EAAEQ,YAAY,CAAC;MAClE,IAAIA,YAAY,CAACtB,QAAQ,EAAE;QACzB,IAAI,CAAC,IAAI,CAACuB,cAAc,EAAE;UACxB7G,oBAAW,CAACC,MAAM,CAAC8F,IAAI,iJAEvB,CAAC;UAED;QACF;QACA;QACA;QACA,IAAI,CAACc,cAAc,CAACC,iBAAiB,CAACF,YAAY,CAAC;;QAEnD;QACA,IAAI,CAACjE,YAAY,CAACiE,YAAY,CAACzE,KAAK,CAAC;MACvC,CAAC,MAAM;QACL;QACA,IAAI,CAACP,gBAAgB,CAACgF,YAAY,CAACzE,KAAK,EAAE3C,OAAO,CAAC;MACpD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAF,GAAA;IAAAzE,KAAA,EAOA,SAAAkM,sBAA8BvH,OAAY,EAAEqB,OAAwB,EAAE;MACpE,IAAI,CAAC,IAAI,CAACgG,cAAc,EAAE;QACxB7G,oBAAW,CAACC,MAAM,CAAC8F,IAAI,8GAEvB,CAAC;QAED;MACF;MACA,IAAIlF,OAAO,CAACmG,kBAAkB,KAAK7D,SAAS,EAAE;QAC5C;QACA,IAAI,CAAC0D,cAAc,CAACI,8BAA8B,CAACpG,OAAO,CAAC;MAC7D,CAAC,MAAM;QACL,IAAI,CAACgG,cAAc,CAACK,aAAa,CAACrG,OAAO,CAAC;MAC5C;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAvB,GAAA;IAAAzE,KAAA,EAOA,SAAAsM,mBACEC,UAA+B,EAC/BtB,IAAyC,EACzC;MAAA,IAAAuB,MAAA;MACA,QAAQD,UAAU;QAChB,KAAKE,mCAAmB,CAACC,eAAe;UAAE;YACxC;YACA;YACA,IAAIpF,KAAe,GAAG;cACpByB,YAAY,EAAE,EAAE;cAChB4C,SAAS,EAAE;gBAACC,qBAAqB,EAAE;cAAE;YACvC,CAAC;YAEDxI,oBAAoB,CAACpB,OAAO,CAAC,UAACyC,GAAG,EAAK;cACpC,IAAIA,GAAG,KAAK,cAAc,EAAE;gBAC1B6C,KAAK,CAAC7C,GAAG,CAAC,GAAG,EAAE;cACjB,CAAC,MAAM;gBACL6C,KAAK,CAAC7C,GAAG,CAAC,GAAG,IAAA+G,iBAAS,EAACgB,MAAI,CAAC/H,GAAG,CAAC,CAAC;cACnC;YACF,CAAC,CAAC;;YAEF;YACAwG,IAAI,CAAC0B,cAAc,CAAC3K,OAAO,CAAC,UAAC2I,MAAM,EAAK;cACtCrD,KAAK,GAAGkF,MAAI,CAAC9B,2BAA2B,CAACC,MAAM,EAAErD,KAAK,CAAC;YACzD,CAAC,CAAC;;YAEF;YACA,IAAI,CAACQ,YAAY,CAACR,KAAK,CAAC;YAExB;UACF;QAEA,KAAKmF,mCAAmB,CAACG,aAAa;UAAE;YACtCzH,oBAAW,CAACC,MAAM,CAACC,IAAI,mGAAAC,MAAA,CAC6E,IAAI,CAAC1B,SAAS,CAClH,CAAC;YACD,IAAMe,OAAO,GAAG,IAAI,CAAChB,KAAK,CAAC0C,QAAQ,CAACwG,iBAAiB,CAACtO,GAAG,CAAC,IAAI,CAACqF,SAAS,CAAC;YACzE,IAAI,CAACD,KAAK,CAAC0C,QAAQ,CAACC,OAAO,CAAC3B,OAAO,EAAE4B,iCAAsB,CAACC,qBAAqB,CAAC;UACpF;MACF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA/B,GAAA;IAAAzE,KAAA,EAMA,SAAA8M,MAAMnI,OAAY,EAAEsG,IAAS,EAAE;MAC7B,IAAIA,IAAI,CAAC8B,SAAS,KAAK,qBAAqB,EAAE;QAC5C;QACA,IAAI,CAACb,qBAAqB,CAACvH,OAAO,EAAEsG,IAAI,CAAC+B,oBAAuC,CAAC;MACnF,CAAC,MAAM;QACL;QACA,IAAOD,SAAS,GAAI9B,IAAI,CAAjB8B,SAAS;QAChB,IAAMzF,KAAK,GAAG,IAAI,CAAC2F,mBAAmB,CAAChC,IAAI,CAAC3D,KAAK,CAAC;QAClDnC,oBAAW,CAACC,MAAM,CAACC,IAAI,oDAAAC,MAAA,CAAoDyH,SAAS,CAAE,CAAC;QAEvFzF,KAAK,CAACqE,SAAS,GAAG;UAACC,qBAAqB,EAAE;QAAE,CAAC;QAE7C,QAAQmB,SAAS;UACf,KAAKG,qBAAU,CAACC,gBAAgB;UAChC,KAAKD,qBAAU,CAACE,gBAAgB;UAChC,KAAKF,qBAAU,CAACG,gBAAgB;UAChC,KAAKH,qBAAU,CAACI,uBAAuB;UACvC,KAAKJ,qBAAU,CAACK,yBAAyB;UACzC,KAAKL,qBAAU,CAACM,uBAAuB;UACvC,KAAKN,qBAAU,CAACO,yBAAyB;UACzC,KAAKP,qBAAU,CAACQ,YAAY;UAC5B,KAAKR,qBAAU,CAACS,mBAAmB;UACnC,KAAKT,qBAAU,CAACU,4BAA4B;UAC5C,KAAKV,qBAAU,CAACW,yBAAyB;UACzC,KAAKX,qBAAU,CAACY,oBAAoB;UACpC,KAAKZ,qBAAU,CAACa,aAAa;UAC7B,KAAKb,qBAAU,CAACc,cAAc;YAC5B,IAAI,CAAChH,WAAW,CAACM,KAAK,EAAEyF,SAAS,CAAC;YAClC;UACF,KAAKG,qBAAU,CAACe,UAAU;YACxB,IAAI,CAAClH,gBAAgB,CAACO,KAAK,EAAE3C,OAAO,CAAC;YACrC;UAEF;YACE;YACA;YACA,IAAI,CAACoC,gBAAgB,CAACO,KAAK,EAAE3C,OAAO,CAAC;QACzC;MACF;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAF,GAAA;IAAAzE,KAAA,EAOA,SAAAkO,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;AACA;EAPE;IAAA5J,GAAA;IAAAzE,KAAA,EAQA,SAAAgH,YAAYM,KAAU,EAAEyF,SAAkB,EAAEtC,QAAyB,EAAE;MAAA,IAAA8D,kBAAA;QAAAC,MAAA;QAAAC,gBAAA;MACrE,IAAI,CAACnH,KAAK,EAAE;QACVnC,oBAAW,CAACC,MAAM,CAACsJ,KAAK,CACtB,qFACF,CAAC;MACH;MAEA,IAAIjE,QAAQ,EAAE;QACZ;QACA,IAAI,CAAC,IAAI,CAACuB,cAAc,EAAE;UACxB7G,oBAAW,CAACC,MAAM,CAACC,IAAI,6DAA6D,CAAC;UACrFF,oBAAW,CAACC,MAAM,CAACC,IAAI,CACrB,4CAA4C,EAC5CoF,QAAQ,EACR,aAAa,EACbnD,KACF,CAAC;UACD,IAAI,CAAC0E,cAAc,GAAG,IAAI2C,uBAAc,CAAC;YACvCC,YAAY,EAAE;cAACtH,KAAK,EAALA,KAAK;cAAEmD,QAAQ,EAARA;YAAQ,CAAC;YAC/BoE,YAAY,EAAE,IAAI,CAAClL,KAAK,CAACmL,OAAO,CAACC,IAAI,CAAC,IAAI,CAACpL,KAAK,CAAC;YACjDqL,uBAAuB,EAAE,IAAI,CAAC1C,kBAAkB,CAACyC,IAAI,CAAC,IAAI,CAAC;YAC3DE,OAAO,QAAA3J,MAAA,CAAQ,IAAI,CAAC1B,SAAS,CAACsL,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;UAC/C,CAAC,CAAC;QACJ,CAAC,MAAM;UACL;UACA;UACA5D,OAAO,CAACC,GAAG,CAAC,sEAAsE,CAAC;UAEnFpG,oBAAW,CAACC,MAAM,CAAC8F,IAAI,CACrB,8FACF,CAAC;UACD,IAAI,CAACY,sBAAsB,CAACxD,SAAS,EAAE;YAACmC,QAAQ,EAARA,QAAQ;YAAEnD,KAAK,EAALA;UAAK,CAAC,CAAC;UAEzD;QACF;MACF,CAAC,MAAM,IAAI,CAAC,IAAI,CAAClD,WAAW,CAAC+K,cAAc,CAAC7H,KAAK,CAAC,EAAE;QAClDnC,oBAAW,CAACC,MAAM,CAACC,IAAI,4EAAAC,MAAA,CACsDyH,SAAS,CACtF,CAAC;QAED;MACF;MAEA,IAAI,CAACqC,uBAAuB,CAAC9H,KAAK,CAACyB,YAAY,CAAC;MAChD,IAAI,CAACP,gBAAgB,GAAGlB,KAAK,CAAC3C,OAAO,IAAI,IAAI;MAC7C,IAAI,CAACoE,YAAY,GAAGzB,KAAK,CAACyB,YAAY;MACtC,CAAAwF,kBAAA,OAAI,CAACxF,YAAY,cAAAwF,kBAAA,uBAAjBA,kBAAA,CAAmBvM,OAAO,CAAC,UAACoJ,WAAW,EAAK;QAC1CoD,MAAI,CAAClK,8BAA8B,CAACnF,GAAG,CAACiM,WAAW,CAACP,MAAM,CAACC,SAAS,CAACO,EAAE,EAAED,WAAW,CAACC,EAAE,CAAC;MAC1F,CAAC,CAAC;MACF,IAAMgE,gBAAgB,GAAGC,sBAAa,CAACC,oBAAoB,CAAC,IAAI,CAACjG,QAAQ,EAAEhC,KAAK,CAACgC,QAAQ,CAAC;MAC1F,IAAI,CAACkG,eAAe,CAAClI,KAAK,CAAC;MAC3B,IAAI,CAAC4B,kBAAkB,CACrB5B,KAAK,CAACyB,YAAY,GAAA0F,gBAAA,GAClBnH,KAAK,CAACqE,SAAS,cAAA8C,gBAAA,uBAAfA,gBAAA,CAAiB7C,qBAAqB,EACtCyD,gBACF,CAAC;MACD,IAAI,CAACI,eAAe,CAAC,CAAC;MACtB,IAAI,CAACC,mBAAmB,CAAC3C,SAAS,CAAC;MACnC,IAAI,CAACnD,kBAAkB,CAACtC,KAAK,CAACuC,YAAY,CAAC;MAC3C;MACA,IAAI,CAACzF,WAAW,CAACY,WAAW,GAAGsC,KAAK;IACtC;;IAEA;IACA;AACF;AACA;AACA;AACA;IACE;EAAA;IAAA7C,GAAA;IAAAzE,KAAA,EACA,SAAA0P,oBAAoB3C,SAAiB,EAAE;MACrC,IACE,IAAI,CAAC/I,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAK+E,iBAAM,IAC1C,IAAI,CAAC3L,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAKgF,uBAAY,EAChD;QACA;QACA,IAAI7C,SAAS,KAAKG,qBAAU,CAACY,oBAAoB,EAAE;UACjD;UACA,IAAI,CAACI,UAAU,CACb;YACE2B,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,IAAInD,SAAS,KAAKG,qBAAU,CAACC,gBAAgB,EAAE;UAC7C;UACA,IAAI,CAACe,UAAU,CACb;YACE2B,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;IAAAzL,GAAA;IAAAzE,KAAA,EAKA,SAAA8H,aAAaR,KAAU,EAAE;MAAA,IAAA6I,iBAAA;MACvB,IAAMd,gBAAgB,GAAGC,sBAAa,CAACC,oBAAoB,CAAC,IAAI,CAACjG,QAAQ,EAAEhC,KAAK,CAACgC,QAAQ,CAAC;MAC1F,IAAI,CAAC8G,iBAAiB,CAAC,IAAI,CAACrH,YAAY,EAAEzB,KAAK,CAACyB,YAAY,CAAC;MAC7D,IAAI,CAACyG,eAAe,CAAClI,KAAK,CAAC;MAC3B,IAAI,CAAC4B,kBAAkB,CACrB5B,KAAK,CAACyB,YAAY,GAAAoH,iBAAA,GAClB7I,KAAK,CAACqE,SAAS,cAAAwE,iBAAA,uBAAfA,iBAAA,CAAiBvE,qBAAqB,EACtCyD,gBACF,CAAC;MACD,IAAI,CAACI,eAAe,CAAC,CAAC;IACxB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhL,GAAA;IAAAzE,KAAA,EAKA,SAAAwP,gBAAgBlI,KAAK,EAAE;MAAA,IAAA+I,WAAA,EAAAC,YAAA,EAAAC,aAAA,EAAAC,aAAA;MACrB,IAAI,EAAAH,WAAA,GAAA/I,KAAK,CAACiC,IAAI,cAAA8G,WAAA,uBAAVA,WAAA,CAAYtK,MAAM,MAAK,OAAO,IAAI,EAAAuK,YAAA,GAAAhJ,KAAK,CAACiC,IAAI,cAAA+G,YAAA,uBAAVA,YAAA,CAAYG,KAAK,MAAK,MAAM,EAAE;QAClE;QACA;QACA;QACA;MACF;MAEA,IAAI,CAACpH,cAAc,CAAC/B,KAAK,CAACgC,QAAQ,EAAEhC,KAAK,CAACiC,IAAI,CAAC;MAC/C,IAAI,CAACJ,qBAAqB,CAAC7B,KAAK,CAAC8B,eAAe,EAAE9B,KAAK,CAACjC,IAAI,CAAC;MAC7D,IAAI,CAACqL,aAAa,CAACpJ,KAAK,CAACiB,OAAO,CAAC;MACjC,IAAI,CAACkB,eAAe,CAACnC,KAAK,CAACoC,SAAS,CAAC;MACrC,IAAI,CAACK,cAAc,CAACzC,KAAK,CAAC0C,IAAI,CAAC;MAC/B,IAAI,CAACR,cAAc,CAAClC,KAAK,CAACxC,GAAG,CAAC;MAC9B,IAAI,CAAC6E,iBAAiB,CAACrC,KAAK,CAACjC,IAAI,EAAEiC,KAAK,CAACiC,IAAI,CAAC;MAC9C,IAAI,CAACU,iBAAiB,CAAC3C,KAAK,CAAC4C,WAAW,CAAC;MACzC,IAAI,CAACyG,qBAAqB,CAACrJ,KAAK,CAACmB,eAAe,CAAC;MACjD,IAAI,CAACmI,aAAa,CAACtJ,KAAK,CAACuJ,OAAO,CAAC;MACjC,IAAI,CAAC/G,UAAU,CAACxC,KAAK,CAACiC,IAAI,CAAC;MAC3B,IAAI,CAACuH,YAAY,CAACxJ,KAAK,CAACqB,MAAM,CAAC;MAC/B,IAAI,CAACoI,gBAAgB,CAACzJ,KAAK,CAACT,YAAY,CAAC;MACzC,IAAI,CAACmK,cAAc,CAAC1J,KAAK,CAACsB,QAAQ,CAAC;MACnC,IAAI,CAACqI,gBAAgB,CAAC3J,KAAK,CAACuB,UAAU,CAAC;MACvC,IAAI,CAACqI,iBAAiB,CAAC5J,KAAK,CAACwB,UAAU,CAAC;MACxC,IAAI,CAACc,kBAAkB,CAACtC,KAAK,CAACuC,YAAY,CAAC;MAC3C,IAAI,CAACM,cAAc,EAAAoG,aAAA,GAACjJ,KAAK,CAAC8C,KAAK,cAAAmG,aAAA,uBAAXA,aAAA,CAAalG,QAAQ,CAAC;MAC1C,IAAI,CAACC,eAAe,EAAAkG,aAAA,GAAClJ,KAAK,CAAC8C,KAAK,cAAAoG,aAAA,uBAAXA,aAAA,CAAajG,SAAS,CAAC;MAC5C,IAAI,CAAC4G,gBAAgB,CAAC,CAAC;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA1M,GAAA;IAAAzE,KAAA,EAMA,SAAAoR,gBAAgBrI,YAAwB,EAAEQ,IAAS,EAAE;MACnD,IAAI,CAACR,YAAY,IAAIA,YAAY,CAACnJ,MAAM,KAAK,CAAC,EAAE;QAC9C,OAAO,IAAI;MACb;MAEA,OACEmJ,YAAY,CAACsI,IAAI,CACf,UAACjG,WAAW;QAAA,OACV7B,IAAI,IACJ6B,WAAW,CAACkG,QAAQ,KAAK/H,IAAI,CAAC+H,QAAQ,KACrCvI,YAAY,CAACnJ,MAAM,IAAI,CAAC,IAAKwL,WAAW,CAACR,IAAI,KAAK2G,iBAAM,IAAI,CAACnG,WAAW,CAACoG,OAAQ,CAAC;MAAA;MACrF;MACF,CAAC,IAAI,IAAI,CAACC,OAAO;IAErB;;IAEA;IACA;AACF;AACA;AACA;EAHE;IAAAhN,GAAA;IAAAzE,KAAA,EAIA,SAAAyP,gBAAA,EAAkB;MAChB,IACE,IAAI,CAACzL,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAK+E,iBAAM,IAC1C,IAAI,CAAC3L,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAKgF,uBAAY,IAChD,IAAI,CAAC5L,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAK8G,wBAAa,EACjD;QACA;QACA,IAAMD,OAAO,GAAG,IAAI,CAACL,eAAe,CAAC,IAAI,CAACrI,YAAY,EAAE,IAAI,CAACQ,IAAI,CAAC;QAElE,IAAI,CAAC7F,aAAa,CAAC;UAAC+N,OAAO,EAAPA;QAAO,CAAC,CAAC;;QAE7B;;QAEA;QACA;;QAEA;;QAEA,IAAI,IAAI,CAAC/H,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC+G,KAAK,KAAKkB,gBAAK,CAACC,KAAK,CAACC,QAAQ,EAAE;UACnE;UACA1M,oBAAW,CAACC,MAAM,CAAC8F,IAAI,CACrB,2EACF,CAAC;;UAED;UACA,IAAI,CAACvH,KAAK,CAACmO,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/ChR,IAAI,EAAE,0BAA0B;YAChCiR,OAAO,EAAE;cACPrO,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UAEF,IAAI,CAACsK,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEoM,8BAAmB,CAACC,aAAa;YACzCC,WAAW,EAAE;UACf,CACF,CAAC;QACH,CAAC,MAAM,IACLZ,OAAO,CAAChB,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACC,IAAI,IAC3C,IAAI,CAACxO,WAAW,CAACuF,IAAI,KACpB,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAACkH,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACE,QAAQ,IAC5D,IAAI,CAACzO,WAAW,CAACuF,IAAI,CAACkH,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACG,QAAQ,IAC7D,IAAI,CAAC1O,WAAW,CAACuF,IAAI,CAACkH,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACI,MAAM,CAAC,EAC9D;UACA;UACA,IAAI,CAAChP,KAAK,CAACmO,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/ChR,IAAI,EAAE,0BAA0B;YAChCiR,OAAO,EAAE;cACPrO,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACsK,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEoM,8BAAmB,CAACS,YAAY;YACxCP,WAAW,EACT,IAAI,CAACrO,WAAW,CAACuF,IAAI,CAACsJ,UAAU,IAAI,IAAI,CAAC7O,WAAW,CAACuF,IAAI,CAACsJ,UAAU,CAACpC,KAAK,KAAKqC;UACnF,CACF,CAAC;QACH,CAAC,MAAM,IACL,IAAI,CAAC9O,WAAW,CAACuF,IAAI,IACrB,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAACkH,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACC,IAAI,KACxDf,OAAO,CAAChB,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACC,IAAI,IAC1Cf,OAAO,CAAChB,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACE,QAAQ,IAC/ChB,OAAO,CAAChB,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACG,QAAQ,IAC/CjB,OAAO,CAAChB,KAAK,KAAK6B,wBAAa,CAACC,MAAM,CAACQ,IAAI,CAAC,CAAC;QAAA,EAC/C;UACA;UACA,IAAI,CAACpP,KAAK,CAACmO,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/ChR,IAAI,EAAE,0BAA0B;YAChCiR,OAAO,EAAE;cACPrO,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UAEF,IAAI,CAACsK,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEoM,8BAAmB,CAACa,SAAS;YACrCX,WAAW,EAAE;UACf,CACF,CAAC;QACH;MACF,CAAC,MAAM,IAAI,IAAI,CAACrO,WAAW,CAAC0F,SAAS,CAACkB,IAAI,KAAKqI,oBAAS,EAAE;QACxD,IACE,IAAI,CAACvJ,SAAS,KACb,IAAI,CAACA,SAAS,CAAC+G,KAAK,KAAKkB,gBAAK,CAACC,KAAK,CAACC,QAAQ;QAC5C;QACA,IAAI,CAACnI,SAAS,CAAC+G,KAAK,KAAKkB,gBAAK,CAACC,KAAK,CAACsB,WAAW,CAAC,EACnD;UACA/N,oBAAW,CAACC,MAAM,CAAC8F,IAAI,CACrB,uFACF,CAAC;;UAED;UACA,IAAI,CAACvH,KAAK,CAACmO,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/ChR,IAAI,EAAE,0BAA0B;YAChCiR,OAAO,EAAE;cACPrO,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACsK,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEQ,iCAAsB,CAAC4M,4BAA4B;YAC3Dd,WAAW,EAAE;UACf,CACF,CAAC;QACH,CAAC,MAAM,IAAI,IAAI,CAAC3I,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC8H,OAAO,EAAE;UACnD;;UAEA;UACA,IAAI,CAAC7N,KAAK,CAACmO,QAAQ,CAACC,UAAU,CAACC,iBAAiB,CAAC;YAC/ChR,IAAI,EAAE,0BAA0B;YAChCiR,OAAO,EAAE;cACPrO,SAAS,EAAE,IAAI,CAACA;YAClB;UACF,CAAC,CAAC;UACF,IAAI,CAACsK,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEQ,iCAAsB,CAAC6M,iBAAiB;YAChDf,WAAW,EAAE;UACf,CACF,CAAC;QACH;QACA;QACA;QAAA,KACK,IAAI,IAAI,CAACrO,WAAW,CAACuF,IAAI,IAAI,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAACiI,OAAO,EAAE;UAC/D;UACA,IAAI,CAACtD,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAACmC,eAAe,EACtB;YACEnM,MAAM,EAAEQ,iCAAsB,CAAC8M,YAAY;YAC3ChB,WAAW,EAAE;UACf,CACF,CAAC;QACH;MACF,CAAC,MAAM;QACLlN,oBAAW,CAACC,MAAM,CAAC8F,IAAI,CAAC,+DAA+D,CAAC;MAC1F;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAzG,GAAA;IAAAzE,KAAA,EAMA,SAAAmR,iBAAA,EAAmB;MACjB;MACA;MACA,IACE,IAAI,CAAChN,qBAAqB,CAACmP,kBAAkB,IAC7C,IAAI,CAACnP,qBAAqB,CAACoP,kBAAkB,EAC7C;QACA,IAAI,CAACD,kBAAkB,CAAC,CAAC;MAC3B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA7O,GAAA;IAAAzE,KAAA,EAKA,SAAAsT,mBAAA,EAAqB;MAAA,IAAAE,qBAAA;MACnB;MACA,IACE,IAAI,CAACxP,WAAW,CAACuF,IAAI,CAACkK,YAAY,OAAAD,qBAAA,GAAK,IAAI,CAACxP,WAAW,CAACgG,IAAI,cAAAwJ,qBAAA,uBAArBA,qBAAA,CAAuBE,MAAM,KACpE,IAAI,CAAC1P,WAAW,CAACuF,IAAI,CAACoK,SAAS,EAC/B;QACA,IAAI,CAACzF,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC6D,0BAA0B,EACjC;UACEC,aAAa,EAAE;QACjB,CACF,CAAC;MACH,CAAC,MAAM;QACL,IAAI,CAAC3F,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC6D,0BAA0B,EACjC;UACEC,aAAa,EAAE;QACjB,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAApP,GAAA;IAAAzE,KAAA,EAOA,SAAAoP,wBAAA,EAAuD;MAAA,IAAA0E,MAAA;MAAA,IAA/B/K,YAAwB,GAAAhH,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,EAAE;MACnD;MACA,IAAMgS,eAAe,GAAG,SAAlBA,eAAeA,CAAI3I,WAAW,EAAE4I,UAAU;QAAA,OAC9CA,UAAU,CAAC3C,IAAI,CAAC,UAAC4C,IAAI;UAAA,OAAKA,IAAI,CAACC,MAAM,CAAC7I,EAAE,KAAKD,WAAW,CAAC8I,MAAM,CAAC7I,EAAE;QAAA,EAAC;MAAA;;MAErE;MACA,IAAM8I,aAAa,GAAG,SAAhBA,aAAaA,CAAA,EAAgD;QAAA,IAA5CC,SAAc,GAAArS,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,CAAC,CAAC;QAAA,IAAEsS,QAAa,GAAAtS,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,CAAC,CAAC;QAC5D;QACA,IAAMuS,MAAM,GAAG;UACbC,WAAW,EAAEH,SAAS,CAACG,WAAW,KAAKF,QAAQ,CAACE,WAAW;UAC3DC,iBAAiB,EAAEJ,SAAS,CAACI,iBAAiB,KAAKH,QAAQ,CAACG,iBAAiB;UAC7EC,WAAW,EAAEL,SAAS,CAACK,WAAW,KAAKJ,QAAQ,CAACI;QAClD,CAAC;;QAED;QACA,IAAAC,KAAA,CAAArW,OAAA,EAAYiW,MAAM,CAAC,CAACtS,OAAO,CAAC,UAACyC,GAAG,EAAK;UACnC,IAAI6P,MAAM,CAAC7P,GAAG,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO6P,MAAM,CAAC7P,GAAG,CAAC;UACpB;QACF,CAAC,CAAC;QAEF,OAAO6P,MAAM;MACf,CAAC;MAED,IAAI,CAACtL,iBAAiB,GAAGD,YAAY,CAAC4L,MAAM,CAAC,UAACX,UAAU,EAAE5I,WAAW,EAAK;QACxE,IAAMwJ,mBAAmB,GAAGb,eAAe,CAAC3I,WAAW,EAAE0I,MAAI,CAAC/K,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QAEvF,IAAM8L,KAAK,GAAGV,aAAa,CAACS,mBAAmB,CAACE,MAAM,EAAE1J,WAAW,CAAC0J,MAAM,CAAC;QAE3E,IAAMC,OAAO,GAAG,IAAAL,KAAA,CAAArW,OAAA,EAAYwW,KAAK,CAAC,CAACjV,MAAM,GAAG,CAAC;QAE7C,IAAImV,OAAO,EAAE;UACXf,UAAU,CAACpS,IAAI,CAAC;YACdsS,MAAM,EAAE9I,WAAW,CAAC8I,MAAM;YAC1BW,KAAK,EAALA;UACF,CAAC,CAAC;QACJ;QAEA,OAAOb,UAAU;MACnB,CAAC,EAAE,EAAE,CAAC;IACR;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAvP,GAAA;IAAAzE,KAAA,EAQA,SAAAkJ,mBAAmBH,YAAoB,EAAE6C,qBAA+B,EAAEoJ,SAAmB,EAAE;MAAA,IAAAC,qBAAA;MAC7F,IAAI,CAAC/G,UAAU,CACb;QACE2B,IAAI,EAAE,YAAY;QAClBC,QAAQ,EAAE;MACZ,CAAC,EACDC,iBAAM,CAACmF,8BAA8B,EACrC;QACEnM,YAAY,EAAZA,YAAY;QACZ6C,qBAAqB,EAArBA,qBAAqB;QACrBuJ,WAAW,EAAE,IAAI,CAACnR,WAAW,CAACsF,QAAQ,MAAA2L,qBAAA,GAAI,IAAI,CAACjR,WAAW,CAACsF,QAAQ,CAAC8L,MAAM,cAAAH,qBAAA,uBAAhCA,qBAAA,CAAkCI,UAAU;QACtF5B,YAAY,EAAE,IAAI,CAACzP,WAAW,CAACuF,IAAI,IAAI,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAACkK,YAAY;QACzE6B,MAAM,EAAE,IAAI,CAACtR,WAAW,CAACuF,IAAI,IAAI,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAAC+L,MAAM;QAC7D5B,MAAM,EAAE,IAAI,CAAC1P,WAAW,CAACgG,IAAI,IAAI,IAAI,CAAChG,WAAW,CAACgG,IAAI,CAAC0J,MAAM;QAC7DsB,SAAS,EAATA;MACF,CACF,CAAC;MAED,IAAIjM,YAAY,IAAI,IAAAwM,QAAA,CAAAlX,OAAA,EAAc0K,YAAY,CAAC,IAAIA,YAAY,CAACnJ,MAAM,GAAG,CAAC,EAAE;QAAA,IAAA4V,SAAA,GAAApW,0BAAA,CAChD2J,YAAY;UAAA0M,KAAA;QAAA;UAAtC,KAAAD,SAAA,CAAA1V,CAAA,MAAA2V,KAAA,GAAAD,SAAA,CAAAhX,CAAA,IAAAuB,IAAA,GAAwC;YAAA,IAA7BqL,WAAW,GAAAqK,KAAA,CAAAzV,KAAA;YACpB,IAAIoL,WAAW,IAAI,CAAAA,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAErF,MAAM,MAAK,SAAS,EAAE;cAAA,IAAA2P,mBAAA;cACpD,IAAI,CAACxH,UAAU,CACb;gBACE2B,IAAI,EAAE,YAAY;gBAClBC,QAAQ,EAAE;cACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC6F,0BAA0B,EAC3C;gBACEC,WAAW,EAAEzK,WAAW,aAAXA,WAAW,wBAAAsK,mBAAA,GAAXtK,WAAW,CAAE8I,MAAM,cAAAwB,mBAAA,uBAAnBA,mBAAA,CAAqBI;cACpC,CACF,CAAC;YACH;UACF;QAAC,SAAAxV,GAAA;UAAAkV,SAAA,CAAAzX,CAAA,CAAAuC,GAAA;QAAA;UAAAkV,SAAA,CAAAtV,CAAA;QAAA;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAuE,GAAA;IAAAzE,KAAA,EAMA,SAAAqJ,eAAeC,QAAgB,EAAEC,IAAY,EAAE;MAC7C,IAAID,QAAQ,IAAI,CAAC,IAAAyM,eAAO,EAAC,IAAI,CAACzM,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACtF,WAAW,CAACsF,QAAQ,GAAGgG,sBAAa,CAACxC,KAAK,CAACxD,QAAQ,CAAC;QACzD,IAAA0M,qBAAA,GA6BI1G,sBAAa,CAAC2G,WAAW,CAAC,IAAI,CAAC3M,QAAQ,EAAEA,QAAQ,CAAC;UAAA4M,sBAAA,GAAAF,qBAAA,CA5BpDG,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;UAE5BC,OAAO,GAAA7B,qBAAA,CAAP6B,OAAO;QAGT,IAAIhB,qBAAqB,EAAE;UACzB,IAAI,CAAC3I,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAAC+H,8BAA8B,EAC/C;YAACrH,KAAK,EAAEoH,OAAO,CAACE;UAAW,CAC7B,CAAC;QACH;QAEA,IAAIjB,sBAAsB,EAAE;UAC1B,IAAI,CAAC5I,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACiI,8BAA8B,EAC/C;YAACvH,KAAK,EAAEoH,OAAO,CAACI;UAAY,CAC9B,CAAC;QACH;QAEA,IAAIlB,wBAAwB,EAAE;UAC5B,IAAI,CAAC7I,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACmI,gCAAgC,EACjD;YAACzH,KAAK,EAAEoH,OAAO,CAACM;UAAc,CAChC,CAAC;QACH;QAEA,IAAInB,mBAAmB,IAAIC,8BAA8B,EAAE;UACzD,IAAI,CAAC/I,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACqI,0BAA0B,EAC3C;YAAC3H,KAAK,EAAEoH,OAAO,CAACQ;UAAS,CAC3B,CAAC;QACH;QAEA,IAAInB,gCAAgC,EAAE;UACpC,IAAI,CAAChJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACuI,2CAA2C,EAC5D;YAAC7H,KAAK,EAAEoH,OAAO,CAACU;UAAsB,CACxC,CAAC;QACH;QAEA,IAAIpB,mBAAmB,EAAE;UACvB,IAAI,CAACjJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACyI,2BAA2B,EAC5C;YAAC/H,KAAK,EAAEoH,OAAO,CAACY;UAAS,CAC3B,CAAC;QACH;QAEA,IAAIrB,eAAe,EAAE;UACnB,IAAI,CAAClJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAAC2I,sBAAsB,EACvC;YAACjI,KAAK,EAAEoH,OAAO,CAACc;UAAK,CACvB,CAAC;QACH;QAEA,IAAIvC,mBAAmB,IAAIC,yBAAyB,EAAE;UACpD,IAAI5F,KAAK,GAAG,IAAI;UAEhB,IAAI4F,yBAAyB,EAAE;YAC7B,IAAIwB,OAAO,CAACzC,MAAM,CAACwD,MAAM,EAAE;cACzBnI,KAAK,GAAGoI,0BAAe,CAACC,MAAM;YAChC,CAAC,MAAM;cACL;cACArI,KAAK,GAAGoH,OAAO,CAACzC,MAAM,CAAC2D,SAAS,GAAGF,0BAAe,CAACG,OAAO,GAAGH,0BAAe,CAAC9F,IAAI;YACnF;UACF,CAAC,MAAM,IAAIqD,mBAAmB,EAAE;YAC9B3F,KAAK,GAAGoH,OAAO,CAACzC,MAAM,CAAC2D,SAAS,GAAGF,0BAAe,CAACI,SAAS,GAAGJ,0BAAe,CAAC9F,IAAI;UACrF;UAEA,IAAI,CAAC7E,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACmJ,0BAA0B,EAC3C;YACEzI,KAAK,EAALA,KAAK;YACL4E,UAAU,EAAEwC,OAAO,CAACzC,MAAM,CAACC,UAAU;YACrC8D,YAAY,EAAEtB,OAAO,CAACzC,MAAM,CAAC+D;UAC/B,CACF,CAAC;QACH;QAEA,IAAI7C,0BAA0B,EAAE;UAC9B,IAAO8C,mBAAmB,GAAIvB,OAAO,CAACwB,gBAAgB,CAA/CD,mBAAmB;UAE1B,IAAI,CAAClL,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACuJ,kCAAkC,EACnD;YACEF,mBAAmB,EAAnBA;UACF,CACF,CAAC;QACH;QAEA,IAAI7C,oBAAoB,EAAE;UACxB,IAAAgD,mBAAA,GAAgC1B,OAAO,CAAC2B,UAAU;YAA3CC,YAAY,GAAAF,mBAAA,CAAZE,YAAY;YAAEC,OAAO,GAAAH,mBAAA,CAAPG,OAAO;UAE5B,IAAI,CAACxL,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC4J,mCAAmC,EACpD;YACEF,YAAY,EAAZA,YAAY;YACZC,OAAO,EAAPA;UACF,CACF,CAAC;QACH;QAEA,IAAIlD,kCAAkC,EAAE;UACtC,IAAOoD,cAAc,GAAI/B,OAAO,CAAC2B,UAAU,CAApCI,cAAc;UAErB,IAAI,CAAC1L,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC8J,sDAAsD,EACvE;YACED,cAAc,EAAdA;UACF,CACF,CAAC;QACH;QAEA,IAAInD,uBAAuB,EAAE;UAC3B,IAAOqD,OAAO,GAAIjC,OAAO,CAACkC,oBAAoB,CAAvCD,OAAO;UAEd,IAAI,CAAC5L,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACiK,uCAAuC,EACxD;YACEF,OAAO,EAAPA;UACF,CACF,CAAC;QACH;QAEA,IAAInD,kBAAkB,EAAE;UACtB,IAAOsD,QAAQ,GAAIpC,OAAO,CAAnBoC,QAAQ;UACfA,QAAQ,CAACC,cAAc,GAAGC,kBAAS,CAACC,yBAAyB,CAC3D7Q,IAAI,EACJ,IAAI,CAAC5F,KAAK,CAACmO,QAAQ,CAACuI,MAAM,CAACvV,GAC7B,CAAC;UACD,IAAI,CAACoJ,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACuK,iCAAiC,EAClD;YACEL,QAAQ,EAARA;UACF,CACF,CAAC;QACH;QAEA,IAAI5C,wBAAwB,EAAE;UAC5B,IAAOkD,cAAc,GAAI1C,OAAO,CAAzB0C,cAAc;UACrB,IAAI,CAACrM,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACyK,uCAAuC,EACxD;YACED,cAAc,EAAdA;UACF,CACF,CAAC;QACH;QAEA,IAAI7D,uBAAuB,EAAE;UAC3B,IAAO+D,aAAa,GAAI5C,OAAO,CAAxB4C,aAAa;UAEpB,IAAI,CAAC/W,aAAa,CAAC;YAAC+W,aAAa,EAAbA;UAAa,CAAC,CAAC;UAEnC,IAAI,CAACvM,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC2K,gCAAgC,EACjD;YACED,aAAa,EAAbA;UACF,CACF,CAAC;QACH;;QAEA;QACA;QACA,IAAI7D,sBAAsB,EAAE;UAC1B,IAAO+D,YAAY,GAAI9C,OAAO,CAAvB8C,YAAY;UAEnB,IAAI,CAACjX,aAAa,CAAC;YAACkX,kBAAkB,EAAED;UAAY,CAAC,CAAC;UAEtD,IAAI,CAACzM,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC8K,qCAAqC,EACtD;YACE;YACAC,aAAa,EAAEH;UACjB,CACF,CAAC;QACH;QAEA,IAAIrD,iBAAiB,EAAE;UACrB,IAAI,CAACpJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACgL,wBAAwB,EACzC;YAACtK,KAAK,EAAEoH,OAAO,CAACmD;UAAc,CAChC,CAAC;QACH;QAEA,IAAIzD,qBAAqB,EAAE;UACzB,IAAI,CAACrJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACkL,6BAA6B,EAC9C;YAACxK,KAAK,EAAEoH,OAAO,CAACqD;UAAW,CAC7B,CAAC;QACH;QAEA,IAAI1D,gCAAgC,EAAE;UACpC,IAAI,CAACtJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACoL,wCAAwC,EACzD;YAAC1K,KAAK,EAAEoH,OAAO,CAACuD;UAAe,CACjC,CAAC;QACH;QAEA,IAAI3D,mBAAmB,EAAE;UACvB,IAAI,CAACvJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACsL,2BAA2B,EAC5C;YAAC5K,KAAK,EAAEoH,OAAO,CAACyD;UAAW,CAC7B,CAAC;QACH;QAEA,IAAI5D,2BAA2B,EAAE;UAC/B,IAAI,CAACxJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAACwL,2BAA2B,EAC5C;YAAC9K,KAAK,EAAEoH,OAAO,CAAC2D;UAAiB,CACnC,CAAC;QACH;QAEA,IAAI7D,8BAA8B,EAAE;UAClC,IAAI,CAACzJ,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAAC0L,uCAAuC,EACxD;YAAChL,KAAK,EAAEoH,OAAO,CAAC6D;UAAU,CAC5B,CAAC;QACH;QAEA,IAAI9D,0BAA0B,EAAE;UAC9B,IAAI,CAAC1J,UAAU,CACb;YAAC2B,IAAI,EAAE,YAAY;YAAEC,QAAQ,EAAE;UAAgB,CAAC,EAChD6F,oBAAS,CAAC5F,MAAM,CAAC4L,2BAA2B,EAC5C;YAAClL,KAAK,EAAEoH,OAAO,CAAC+D;UAAgB,CAClC,CAAC;QACH;QAEA,IAAI,CAACtS,QAAQ,GAAGA,QAAQ;MAC1B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA7E,GAAA;IAAAzE,KAAA,EAMA,SAAAmJ,sBAAsBC,eAAuB,EAAE/D,IAAS,EAAE;MACxD,IAAI+D,eAAe,IAAI,CAAC,IAAA2M,eAAO,EAAC,IAAI,CAAC3M,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,IACL/D,IAAI,IACJA,IAAI,CAAC+D,eAAe,IACpB,CAAC,IAAA2M,eAAO,EAAC,IAAI,CAAC3M,eAAe,EAAE/D,IAAI,CAAC+D,eAAe,CAAC,EACpD;QACA,IAAI,CAACA,eAAe,GAAG/D,IAAI,CAAC+D,eAAe;QAC3C,IAAI,CAAC1F,aAAa,CAAC;UAAC0F,eAAe,EAAE/D,IAAI,CAAC+D;QAAe,CAAC,CAAC;MAC7D;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA3E,GAAA;IAAAzE,KAAA,EAKA,SAAA0Q,cAAcnI,OAAe,EAAE;MAC7B,IAAIA,OAAO,IAAI,CAAC,IAAAwN,eAAO,EAAC,IAAI,CAACxN,OAAO,EAAEA,OAAO,CAAC,EAAE;QAC9C,IAAI,CAACA,OAAO,GAAGA,OAAO;MACxB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA9D,GAAA;IAAAzE,KAAA,EAKA,SAAAmK,eAAeE,QAAsD,EAAE;MACrE,IAAIA,QAAQ,IAAI,CAAC,IAAA0L,eAAO,EAAC,IAAI,CAAC1L,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACA,QAAQ,GAAGA,QAAQ;QACxB,IAAI,CAAC6D,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC8L,cAAc,EAC/B;UACExR,QAAQ,EAARA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA5F,GAAA;IAAAzE,KAAA,EAKA,SAAAsK,gBAAgBC,SAAmD,EAAE;MACnE,IAAIA,SAAS,IAAI,CAAC,IAAAwL,eAAO,EAAC,IAAI,CAACxL,SAAS,EAAEA,SAAS,CAAC,EAAE;QACpD,IAAI,CAACA,SAAS,GAAGA,SAAS;QAC1B,IAAI,CAAC2D,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC+L,eAAe,EAChC;UACEvR,SAAS,EAATA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA9F,GAAA;IAAAzE,KAAA,EAKA,SAAAyJ,gBAAgBC,SAAiB,EAAE;MACjC,IAAIA,SAAS,IAAI,CAAC,IAAAqM,eAAO,EAAC,IAAI,CAACrM,SAAS,EAAEA,SAAS,CAAC,EAAE;QACpD,IAAM/G,MAAM,GAAGoZ,kBAAS,CAACC,YAAY,CAAC,IAAI,CAACtS,SAAS,EAAEA,SAAS,CAAC;QAEhE,IAAI,CAAChG,aAAa,CAACf,MAAM,CAACkV,OAAO,CAAC;QAElC,IAAIlV,MAAM,CAACwT,OAAO,CAAC8F,qBAAqB,EAAE;UACxC,IAAI,CAAC/N,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACmM,+BAA+B,EAChD;YACEC,aAAa,EAAExZ,MAAM,CAACyZ,QAAQ,IAAIzZ,MAAM,CAACyZ,QAAQ,CAACC,YAAY;YAC9DC,YAAY,EAAE3Z,MAAM,CAACkV,OAAO,CAACwE;UAC/B,CACF,CAAC;QACH;QAEA,IAAI1Z,MAAM,CAACwT,OAAO,CAACoG,oBAAoB,EAAE;UACvC,IAAI,CAACrO,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACyM,sBAAsB,EACvC;YACE5R,IAAI,EAAEjI,MAAM,CAACkV,OAAO,CAACjN;UACvB,CACF,CAAC;QACH;QACA,IAAI,CAAC5G,WAAW,CAAC0F,SAAS,GAAG/G,MAAM,CAACkV,OAAO;QAC3C,IAAI,CAACnO,SAAS,GAAGA,SAAS;MAC5B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAjF,GAAA;IAAAzE,KAAA,EAOA,SAAA+J,eAAeC,IAAY,EAAE;MAC3B,IAAIA,IAAI,IAAI,CAAC,IAAA+L,eAAO,EAAC,IAAI,CAAC/L,IAAI,EAAEA,IAAI,CAAC,EAAE;QACrC,IAAMyS,WAAW,GAAGC,kBAAS,CAACC,QAAQ,CAAC,IAAI,CAAC3S,IAAI,EAAEA,IAAI,CAAC;QAEvD,IAAI,CAACtG,aAAa,CAAC+Y,WAAW,CAAC5E,OAAO,CAAC;QACvC,IAAI,CAAC7T,WAAW,CAACgG,IAAI,GAAGyS,WAAW,CAAC5E,OAAO;QAC3C,IAAI4E,WAAW,CAACtG,OAAO,CAACyG,SAAS,EAAE;UACjC,IAAI,CAACzY,qBAAqB,CAACmP,kBAAkB,GAAG,IAAI;UACpD,IAAI,CAACpF,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACDC,iBAAM,CAAC8M,sBAAsB,EAC7B;YACEC,OAAO,EAAEL,WAAW,CAAC5E,OAAO;YAC5BkF,OAAO,EAAEN,WAAW,CAACL;UACvB,CACF,CAAC;QACH;QACA,IAAI,CAACpS,IAAI,GAAGA,IAAI;MAClB,CAAC,MAAM;QACL,IAAI,CAAC7F,qBAAqB,CAACmP,kBAAkB,GAAG,KAAK;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA7O,GAAA;IAAAzE,KAAA,EAMA,SAAA2J,kBAAkBtE,IAAY,EAAEkE,IAAa,EAAE;MAAA,IAAAyT,qBAAA;MAC7C,IAAMC,KAAK,GAAG1T,IAAI,GAAG4Q,kBAAS,CAAC+C,QAAQ,CAAC3T,IAAI,CAAC,GAAG,EAAAyT,qBAAA,OAAI,CAAChZ,WAAW,CAACuF,IAAI,cAAAyT,qBAAA,uBAArBA,qBAAA,CAAuBC,KAAK,KAAI,EAAE;MAClF,IACG5X,IAAI,IAAI,CAAC,IAAA0Q,eAAO,EAAC,IAAI,CAAC1Q,IAAI,EAAEA,IAAI,CAAC,IACjC4X,KAAK,CAACrd,MAAM,IAAI,CAAC,IAAAmW,eAAO,EAAC,IAAI,CAACkH,KAAK,EAAEA,KAAK,CAAC,IAAI5X,IAAK,EACrD;QACA,IAAM8X,QAAQ,GAAGhD,kBAAS,CAACgD,QAAQ,CAAC5T,IAAI,IAAI,IAAI,CAACvF,WAAW,CAACuF,IAAI,CAAC;QAClE,IAAM6T,UAAU,GAAGC,kBAAS,CAACC,QAAQ,CAAC,IAAI,CAACtZ,WAAW,CAACqB,IAAI,EAAEA,IAAI,EAAE4X,KAAK,EAAEE,QAAQ,CAAC;QAEnF,IAAIC,UAAU,CAACjH,OAAO,CAACoH,QAAQ,EAAE;UAC/B,IAAI,CAACrP,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACyN,cAAc,EAC/BnY,IACF,CAAC;QACH;QACA,IAAI+X,UAAU,CAACjH,OAAO,CAACsH,UAAU,EAAE;UACjC,IAAI,CAACvP,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC2N,gBAAgB,EACjCrY,IACF,CAAC;QACH;QAEA,IAAI,CAACA,IAAI,GAAGA,IAAI;QAChB,IAAI,CAACrB,WAAW,CAACqB,IAAI,GAAG+X,UAAU,CAACvF,OAAO;QAC1C;QACA,IAAI,CAACnU,aAAa,CAAC0Z,UAAU,CAACvF,OAAO,CAAC;QAEtC,IAAI,CAAC3J,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC4N,oBAAoB,EACrC;UACEC,cAAc,EAAE,CAACrU,IAAI,CAAE;QACzB,CACF,CAAC;MACH;;MACA,IAAI,CAAC0T,KAAK,GAAGA,KAAK;IACpB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxY,GAAA;IAAAzE,KAAA,EAKA,SAAA4J,mBAAmBC,YAAoB,EAAE;MACvC;MACA,IAAIgU,0BAAiB,CAACC,UAAU,CAAC,IAAI,CAACjU,YAAY,EAAEA,YAAY,CAAC,EAAE;QACjE;MACF;MAEA,IAAMkU,kBAAkB,GAAGF,0BAAiB,CAAC/Q,KAAK,CAACjD,YAAY,CAAC;MAEhE,IAAI,CAACnG,aAAa,CAAC;QAACmG,YAAY,EAAEkU;MAAkB,CAAC,CAAC;MAEtD,IAAI,CAAC7P,UAAU,CACb;QACE2B,IAAI,EAAE,YAAY;QAClBC,QAAQ,EAAE;MACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACiO,qBAAqB,EACtCD,kBACF,CAAC;MACD,IAAI,CAAClU,YAAY,GAAGA,YAAY;IAClC;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAApF,GAAA;IAAAzE,KAAA,EAQA,SAAAiK,kBAAkBC,WAAmB,EAAuB;MAAA,IAArB+T,WAAW,GAAAlc,SAAA,CAAAnC,MAAA,QAAAmC,SAAA,QAAAuG,SAAA,GAAAvG,SAAA,MAAG,KAAK;MACxD,IAAImI,WAAW,KAAK,CAAC,IAAA6L,eAAO,EAAC,IAAI,CAAC7L,WAAW,EAAEA,WAAW,CAAC,IAAI+T,WAAW,CAAC,EAAE;QAC3E,IAAMC,iBAAiB,GAAGC,yBAAgB,CAACC,cAAc,CAAC,IAAI,CAAClU,WAAW,EAAEA,WAAW,CAAC;QAExF,IAAI,CAACxG,aAAa,CAACwa,iBAAiB,CAACrG,OAAO,CAAC;QAC7C,IAAI,CAAC7T,WAAW,CAACkG,WAAW,GAAGgU,iBAAiB,CAACrG,OAAO;QACxD,IAAI,CAAC3N,WAAW,GAAGA,WAAW;QAC9B,IAAI,CAACgE,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAACsO,8BAA8B,EACrC;UACExG,OAAO,EAAEqG,iBAAiB,CAACrG,OAAO;UAClCuE,QAAQ,EAAE8B,iBAAiB,CAAC9B,QAAQ;UACpC6B,WAAW,EAAXA;QACF,CACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxZ,GAAA;IAAAzE,KAAA,EAKA,SAAA2Q,sBAAsBlI,eAAuB,EAAE;MAC7C,IAAIA,eAAe,IAAI,CAAC,IAAAsN,eAAO,EAAC,IAAI,CAACtN,eAAe,EAAEA,eAAe,CAAC,EAAE;QACtE,IAAI,CAACA,eAAe,GAAGA,eAAe;MACxC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhE,GAAA;IAAAzE,KAAA,EAKA,SAAA4Q,cAAcC,OAAe,EAAE;MAC7B,IAAIA,OAAO,IAAI,CAAC,IAAAkF,eAAO,EAAC,IAAI,CAAClF,OAAO,EAAEA,OAAO,CAAC,EAAE;QAC9C,IAAI,CAACA,OAAO,GAAGA,OAAO;MACxB;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAApM,GAAA;IAAAzE,KAAA,EAOA,SAAA8J,WAAWP,IAAS,EAAE;MACpB,IAAIA,IAAI,EAAE;QACR;QACA,IAAM+U,YAAY,GAAGnE,kBAAS,CAACoE,SAAS,CACtC,IAAI,CAACva,WAAW,CAACuF,IAAI,EACrBA,IAAI,EACJ,IAAI,CAAC5F,KAAK,CAACmO,QAAQ,CAACuI,MAAM,CAACvV,GAAG,EAC9B,IAAI,CAACiE,YAAY,CAAC;QACpB,CAAC;;QAED,IAAI,CAACrF,aAAa,CAAC4a,YAAY,CAACzG,OAAO,CAAC;QACxC,IAAI,CAAC7T,WAAW,CAACuF,IAAI,GAAG+U,YAAY,CAACzG,OAAO;QAE5C,IAAM2G,OAAO,GAAG,IAAI,CAACxa,WAAW,CAACC,MAAM,CAAC,IAAI,CAACD,WAAW,CAACC,MAAM,CAACrE,MAAM,GAAG,CAAC,CAAC;QAE3E,IAAI4e,OAAO,KAAKF,YAAY,CAACzG,OAAO,CAACpH,KAAK,EAAE;UAC1C,IAAI,CAACzM,WAAW,CAACC,MAAM,CAACrC,IAAI,CAAC0c,YAAY,CAACzG,OAAO,CAACpH,KAAK,CAAC;QAC1D;;QAEA;QACA;QACA,IAAM9N,MAAM,GAAGwX,kBAAS,CAACsE,SAAS,CAChC,IAAI,CAACrN,eAAe,CAAC,IAAI,CAACrI,YAAY,EAAEQ,IAAI,CAAC,EAC7C,IAAI,CAACvF,WAAW,CAAC0F,SAAS,CAACkB,IAAI,EAC/B,IAAI,CAAC5G,WAAW,CAACqB,IAAI,CAACqZ,MACxB,CAAC;QAED,IAAI/b,MAAM,CAAC+b,MAAM,EAAE;UACjB,IAAI,CAAChb,aAAa,CAACf,MAAM,CAAC;QAC5B;QAEA,IAAI2b,YAAY,CAACnI,OAAO,CAACwI,gBAAgB,EAAE;UACzC,IAAI,CAACxa,qBAAqB,CAACoP,kBAAkB,GAAG,IAAI;QACtD,CAAC,MAAM;UACL,IAAI,CAACpP,qBAAqB,CAACoP,kBAAkB,GAAG,KAAK;QACvD;QAEA,IAAI+K,YAAY,CAACnI,OAAO,CAACyI,aAAa,EAAE;UACtC,IAAI,CAAC1Q,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC8O,+BAA+B,EAChD;YAACC,MAAM,EAAER,YAAY,CAACzG,OAAO,CAACiH;UAAM,CACtC,CAAC;QACH;QAEA,IAAIR,YAAY,CAACnI,OAAO,CAAC4I,gBAAgB,EAAE;UACzC,IAAI,CAAC7Q,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACiP,8BAA8B,EAC/C;YAACC,gBAAgB,EAAEX,YAAY,CAACzG,OAAO,CAACoH;UAAgB,CAC1D,CAAC;QACH;QAEA,IAAIX,YAAY,CAACnI,OAAO,CAAC+I,UAAU,EAAE;UACnC,IAAI,CAAChR,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACoP,wBAAwB,EACzC;YACEC,GAAG,EAAEd,YAAY,CAACzG,OAAO,CAACuH;UAC5B,CACF,CAAC;QACH;QAEA,IAAId,YAAY,CAACnI,OAAO,CAACkJ,qBAAqB,EAAE;UAC9C,IAAI,CAACnR,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACuP,mCAAmC,EACpD;YACE/E,cAAc,EAAE+D,YAAY,CAACzG,OAAO,CAAC0C,cAAc;YACnDgF,iBAAiB,EAAEjB,YAAY,CAACzG,OAAO,CAACvC;UAC1C,CACF,CAAC;QACH;QAEA,IAAIgJ,YAAY,CAACnI,OAAO,CAACqJ,yBAAyB,EAAE;UAClD,IAAI,CAACtR,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC0P,4BAA4B,EAC7C;YAAC1Z,MAAM,EAAEwD,IAAI,CAACxD;UAAM,CACtB,CAAC;QACH;QAEA,IAAIuY,YAAY,CAACnI,OAAO,CAACwI,gBAAgB,EAAE;UACzC,IAAI,CAACzQ,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC2P,sBAAsB,EACvCnW,IACF,CAAC;QACH;QAEA,IAAI+U,YAAY,CAACnI,OAAO,CAACwJ,cAAc,EAAE;UAAA,IAAAC,qBAAA,EAAAC,qBAAA;UACvC,IAAI,CAAC3R,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC+P,kBAAkB,EACnC;YAACC,QAAQ,GAAAH,qBAAA,GAAEtB,YAAY,CAAClC,QAAQ,cAAAwD,qBAAA,uBAArBA,qBAAA,CAAuB3C,KAAK;YAAE+C,QAAQ,GAAAH,qBAAA,GAAEvB,YAAY,CAACzG,OAAO,cAAAgI,qBAAA,uBAApBA,qBAAA,CAAsB5C;UAAK,CAChF,CAAC;QACH;QAEA,IAAIqB,YAAY,CAACnI,OAAO,CAAC8J,2BAA2B,EAAE;UACpD,IAAI,CAAC/R,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC8K,qCAAqC,EACtD;YACEqF,KAAK,EAAE5B,YAAY,CAACzG,OAAO,CAACsI;YAC5B;UACF,CACF,CAAC;QACH;;QACA,IAAI7B,YAAY,CAACnI,OAAO,CAACiK,gCAAgC,EAAE;UACzD,IAAI,CAAClS,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACsQ,qBAAqB,EACtC;YACEH,KAAK,EAAE5B,YAAY,CAACzG,OAAO,CAACyI,WAAW;YACvCxF,aAAa,EAAEwD,YAAY,CAACzG,OAAO,CAACiD;UACtC,CACF,CAAC;QACH;QACA,IAAIwD,YAAY,CAACnI,OAAO,CAACoK,sBAAsB,EAAE;UAC/C,IAAI,CAACrS,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACyQ,+BAA+B,EAChD;YACEN,KAAK,EAAE5B,YAAY,CAACzG,OAAO,CAACyI,WAAW;YACvCxF,aAAa,EAAEwD,YAAY,CAACzG,OAAO,CAACiD;UACtC,CACF,CAAC;QACH;QACA,IAAIwD,YAAY,CAACnI,OAAO,CAACsK,iCAAiC,EAAE;UAC1D,IAAI,CAACvS,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC2Q,sBAAsB,EACvC,CAAC,CACH,CAAC;QACH;QACA,IAAIpC,YAAY,CAACnI,OAAO,CAACwK,mBAAmB,EAAE;UAC5C,IAAI,CAACzS,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC6Q,qBAAqB,EACtCrX,IACF,CAAC;QACH;QACA,IAAI+U,YAAY,CAACnI,OAAO,CAAC0K,mBAAmB,EAAE;UAC5C,IAAI,CAAC3S,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC+Q,mBAAmB,EACpCvX,IACF,CAAC;QACH;QAEA,IAAI+U,YAAY,CAACnI,OAAO,CAAC4K,eAAe,EAAE;UACxC,IAAI,CAAC7S,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC;UACD;UACA6F,oBAAS,CAAC5F,MAAM,CAACiR,gBAAgB,EACjC7G,kBAAS,CAAC8G,cAAc,CAAC1X,IAAI,CAAC2X,aAAa,CAC7C,CAAC;QACH;QAEA,IACE5C,YAAY,CAACnI,OAAO,CAACgL,gBAAgB,IACrC7C,YAAY,CAACnI,OAAO,CAACiL,gBAAgB,IACrC9C,YAAY,CAACnI,OAAO,CAACkL,gBAAgB,EACrC;UAAA,IAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;UACA,IAAI,CAACtT,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAAC0R,mBAAmB,EACpC;YACElN,WAAW,GAAA+M,sBAAA,GAAEhD,YAAY,CAACzG,OAAO,CAAC6J,kBAAkB,cAAAJ,sBAAA,uBAAvCA,sBAAA,CAAyCK,KAAK;YAC3DlN,WAAW,GAAA8M,sBAAA,GAAEjD,YAAY,CAACzG,OAAO,CAAC6J,kBAAkB,cAAAH,sBAAA,uBAAvCA,sBAAA,CAAyC5I,KAAK;YAC3DiJ,WAAW,GAAAJ,sBAAA,GAAElD,YAAY,CAACzG,OAAO,CAAC6J,kBAAkB,cAAAF,sBAAA,uBAAvCA,sBAAA,CAAyCK;UACxD,CACF,CAAC;QACH;QAEA,IAAIvD,YAAY,CAACnI,OAAO,CAAC2L,eAAe,EAAE;UACxC,IAAI,CAAC5T,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACgS,cACnB,CAAC;QACH;QAEA,IAAIzD,YAAY,CAACnI,OAAO,CAAC6L,mCAAmC,EAAE;UAC5D,IAAI,CAAC9T,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACkS,wCAAwC,EACzD;YAACC,4BAA4B,EAAE5D,YAAY,CAACzG,OAAO,CAACqK;UAA4B,CAClF,CAAC;QACH;QAEA,IAAI5D,YAAY,CAACnI,OAAO,CAACgM,uBAAuB,EAAE;UAChD,IAAI,CAACjU,UAAU,CACb;YACE2B,IAAI,EAAE,YAAY;YAClBC,QAAQ,EAAE;UACZ,CAAC,EACD6F,oBAAS,CAAC5F,MAAM,CAACqS,8BAA8B,EAC/C;YAACC,gBAAgB,EAAE/D,YAAY,CAACzG,OAAO,CAACwK;UAAgB,CAC1D,CAAC;QACH;QAEA,IAAI,CAACnU,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAACuS,sBAAsB,EAC7B;UACEC,OAAO,EAAEjE,YAAY,CAAClC,QAAQ;UAC9BoG,OAAO,EAAElE,YAAY,CAACzG;QACxB,CACF,CAAC;QACD,IAAI,CAAC7T,WAAW,CAACuF,IAAI,GAAG+U,YAAY,CAACzG,OAAO;QAC5C;QACA,IAAI,CAACtO,IAAI,GAAGA,IAAI;MAClB,CAAC,MAAM;QACL,IAAI,CAACpF,qBAAqB,CAACoP,kBAAkB,GAAG,KAAK;MACvD;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA9O,GAAA;IAAAzE,KAAA,EAMA,SAAAwJ,eAAe1E,GAAW,EAAE;MAC1B,IAAIA,GAAG,IAAI,IAAI,CAACA,GAAG,KAAKA,GAAG,EAAE;QAC3B,IAAI,CAACA,GAAG,GAAGA,GAAG;QACd,IAAI,CAACpB,aAAa,CAAC;UAACwB,QAAQ,EAAEJ;QAAG,CAAC,CAAC;QACnC,IAAI,CAACoJ,UAAU,CACb;UACE2B,IAAI,EAAE,YAAY;UAClBC,QAAQ,EAAE;QACZ,CAAC,EACDC,iBAAM,CAAC0S,qBAAqB,EAC5B3d,GACF,CAAC;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAL,GAAA;IAAAzE,KAAA,EAKA,SAAA8Q,aAAanI,MAAc,EAAE;MAC3B,IAAIA,MAAM,IAAI,CAAC,IAAAoN,eAAO,EAAC,IAAI,CAACpN,MAAM,EAAEA,MAAM,CAAC,EAAE;QAC3C,IAAI,CAACA,MAAM,GAAGA,MAAM;MACtB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAlE,GAAA;IAAAzE,KAAA,EAKA,SAAA+Q,iBAAiBlK,YAAoB,EAAE;MACrC,IAAIA,YAAY,IAAI,CAAC,IAAAkP,eAAO,EAAC,IAAI,CAAClP,YAAY,EAAEA,YAAY,CAAC,EAAE;QAC7D,IAAI,CAACA,YAAY,GAAGA,YAAY;MAClC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAApC,GAAA;IAAAzE,KAAA,EAKA,SAAAgR,eAAepI,QAAgB,EAAE;MAC/B,IAAIA,QAAQ,IAAI,CAAC,IAAAmN,eAAO,EAAC,IAAI,CAACnN,QAAQ,EAAEA,QAAQ,CAAC,EAAE;QACjD,IAAI,CAACA,QAAQ,GAAGA,QAAQ;MAC1B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAnE,GAAA;IAAAzE,KAAA,EAKA,SAAAiR,iBAAiBpI,UAAkB,EAAE;MACnC,IAAIA,UAAU,IAAI,CAAC,IAAAkN,eAAO,EAAC,IAAI,CAAClN,UAAU,EAAEA,UAAU,CAAC,EAAE;QACvD,IAAI,CAACA,UAAU,GAAGA,UAAU;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAApE,GAAA;IAAAzE,KAAA,EAKA,SAAAkR,kBAAkBpI,UAAsB,EAAE;MACxC,IAAIA,UAAU,IAAI,CAAC,IAAAiN,eAAO,EAAC,IAAI,CAACjN,UAAU,EAAEA,UAAU,CAAC,EAAE;QACvD,IAAI,CAACA,UAAU,GAAGA,UAAU;MAC9B;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAArE,GAAA;IAAAzE,KAAA,EAMA,SAAAiJ,iBAAiB3B,KAAU,EAAE;MAC3B,IAAMob,gBAAgB,GAAGpT,sBAAa,CAACoT,gBAAgB,CAACpb,KAAK,CAAC;MAC9D,IAAIob,gBAAgB,EAAE;QACpB,IAAI,CAACC,2BAA2B,CAACrb,KAAK,CAAC;MACzC;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7C,GAAA;IAAAzE,KAAA,EAOA,SAAAiN,oBAAoB2V,QAAa,EAAE;MACjC,IAAMC,YAAY,GAAGvT,sBAAa,CAACwT,sBAAsB,CAAC,IAAI,EAAEF,QAAQ,CAAC;MAEzE,IAAIC,YAAY,CAACE,cAAc,IAAI,IAAI,CAACC,qBAAqB,EAAE;QAC7D,OAAO,IAAAxX,iBAAS,EAAC,IAAI,CAACwX,qBAAqB,CAAC;MAC9C;MACA,IAAMN,gBAAgB,GACpB,IAAI,CAACM,qBAAqB,IAAI1T,sBAAa,CAACoT,gBAAgB,CAAC,IAAI,CAACM,qBAAqB,CAAC;MAE1F,IAAIN,gBAAgB,EAAE;QAAA,IAAAO,eAAA,EAAAC,qBAAA,EAAAC,sBAAA;QACpB,IAAMC,QAAQ,GACZ,CAACzR,gBAAK,CAACC,KAAK,CAACyR,MAAM,EAAE1R,gBAAK,CAACC,KAAK,CAAC0R,YAAY,EAAE3R,gBAAK,CAACC,KAAK,CAACsB,WAAW,CAAC,CAACqQ,QAAQ,EAAAN,eAAA,GAC9E,IAAI,CAACvZ,SAAS,cAAAuZ,eAAA,uBAAdA,eAAA,CAAgBxS,KAClB,CAAC,IAAI,GAAAyS,qBAAA,GAAC,IAAI,CAACF,qBAAqB,cAAAE,qBAAA,gBAAAC,sBAAA,GAA1BD,qBAAA,CAA4B3Z,IAAI,cAAA4Z,sBAAA,eAAhCA,sBAAA,CAAkC3R,OAAO;QAEjD,IAAI,CAAC4R,QAAQ,EAAE;UACb,IAAI,CAACI,0BAA0B,CAAC,CAAC;QACnC;MACF;MAEA,OAAOZ,QAAQ;IACjB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;IACE;EAAA;IAAAne,GAAA;IAAAzE,KAAA,EACA,SAAAoQ,kBAAkBrH,YAAY,EAAE0a,kBAAkB,EAAE;MAClD,IAAI,CAACA,kBAAkB,IAAI,CAACA,kBAAkB,CAAC7jB,MAAM,EAAE,OAAOmJ,YAAY;MAC1E,IAAI,CAACA,YAAY,IAAI,CAACA,YAAY,CAACnJ,MAAM,EAAE;QACzC,OAAO6jB,kBAAkB;MAC3B;MACAA,kBAAkB,CAACzhB,OAAO,CAAC,UAACoJ,WAAW,EAAK;QAC1C,IAAMsY,UAAU,GAAG3a,YAAY,CAAC4a,SAAS,CAAC,UAACC,CAAC;UAAA,OAAKA,CAAC,CAACvY,EAAE,KAAKD,WAAW,CAACC,EAAE;QAAA,EAAC;QACzE,IAAIqY,UAAU,GAAG,CAAC,CAAC,EAAE;UACnB3a,YAAY,CAAC8a,MAAM,CAACH,UAAU,EAAE,CAAC,EAAEtY,WAAW,CAAC;QACjD,CAAC,MAAM;UACLrC,YAAY,CAACnH,IAAI,CAACwJ,WAAW,CAAC;QAChC;MACF,CAAC,CAAC;MAEF,OAAOrC,YAAY;IACrB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtE,GAAA;IAAAzE,KAAA,EAMA,SAAA2iB,4BAA4BmB,SAAc,EAAE;MAAA,IAAAC,MAAA;MAC1C,IAAI,CAACD,SAAS,EAAE;QACd;MACF;MACA,IAAME,UAAU,GAAG,IAAAxY,iBAAS,EAACsY,SAAS,CAAC;MACvC,IAAI,IAAI,CAACd,qBAAqB,EAAE;QAC9B;QACA,IAAAiB,kBAAU,EAAC,IAAI,CAACjB,qBAAqB,EAAEgB,UAAU,EAAE,UAACE,QAAQ,EAAEC,QAAQ,EAAE1f,GAAG,EAAK;UAC9E,IAAIA,GAAG,KAAK,cAAc,EAAE;YAC1B,OAAOsf,MAAI,CAAC3T,iBAAiB,CAAC8T,QAAQ,EAAEC,QAAQ,CAAC;UACnD;UAEA,OAAOA,QAAQ,IAAID,QAAQ;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAI,CAAClB,qBAAqB,GAAGgB,UAAU;MACzC;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAvf,GAAA;IAAAzE,KAAA,EAKA,SAAAwjB,2BAAA,EAA6B;MAC3B,IAAI,CAACR,qBAAqB,GAAG,IAAI;IACnC;EAAC;EAAA,OAAA3f,SAAA;AAAA,EApiEoC+gB,oBAAW"}