@webex/calling 3.12.0-next.4 → 3.12.0-next.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallingClient/CallingClient.js +463 -205
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +170 -77
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +589 -445
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +695 -445
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +25 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +4 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +712 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +46 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +354 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +13 -11
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Events/types.js +1 -11
- package/dist/Events/types.js.map +1 -1
- package/dist/Metrics/index.js +63 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +357 -1
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +19 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +138 -44
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +143 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/errors.test.js +20 -0
- package/dist/mobius-socket/errors.test.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +841 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1845 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +55 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallingClient/CallingClient.js +141 -10
- package/dist/module/CallingClient/calling/call.js +177 -61
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +21 -0
- package/dist/module/CallingClient/line/index.js +2 -2
- package/dist/module/CallingClient/registration/register.js +234 -62
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +30 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +165 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
- package/dist/module/Contacts/ContactsClient.js +1 -1
- package/dist/module/Events/types.js +0 -10
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/common/Utils.js +52 -12
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +58 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +589 -0
- package/dist/module/mobius-socket/socket/constants.js +26 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +7 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +12 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +34 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +21 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +7 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +4 -2
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +30 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +24 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Events/types.d.ts +4 -11
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +19 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +9 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +20 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setDeviceInfo","devicesInfo","_devicesInfo$devices","_slicedToArray2","devices","deviceInfo","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","_response","response","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_context2","fetch","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","CISCO_DEVICE_URL","credentials","getUserToken","sent","WEBEX_WEB_CLIENT","uuid","SPARK_USER_AGENT","CALLING_USER_AGENT","headers","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","_context3","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","abort","_context5","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","includes","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee12","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t1","_t10","_context12","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee13","_context13","executeFailback","_executeFailback","_callee15","_this5","_context15","_callee14","primaryServerStatus","abortNew","_context14","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee16","_context16","_x9","_handleConnectionRestoration","_callee18","retry","_this6","_context18","HANDLE_CONNECTION_RESTORATION","_callee17","_context17","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this7","_ref1","_callee19","restoreData","logContext","restore","finalError","_context19","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee20","_context20","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee21","_this8","servers","_iterator2","_step2","_loop","_ret","_args22","_t12","_context22","REGISTER_UTIL","_this8$backupMobiusUr","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","resp","_t11","_context21","CONNECTING","REGISTERED","trackingid","REGISTER","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x11","_startKeepaliveTimer","_callee24","_this9","RETRY_COUNT_THRESHOLD","_context25","_callee23","accessToken","blob","blobUrl","_context24","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee22","event","_context23","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee25","_this$deviceInfo$devi","_this$deviceInfo$devi2","_t13","_context26","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee26","_context27","RECONNECT_ON_FAILURE","_x16","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n Devices,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\n FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n /**\n * Populate deviceInfo using a devices response body.\n */\n public setDeviceInfo(devicesInfo: Devices): void {\n const [device] = devicesInfo.devices;\n\n this.deviceInfo = {\n userId: devicesInfo.userId,\n device,\n devices: devicesInfo.devices,\n };\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n return true;\n }\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\n });\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (await this.resumeFailover()) {\n return;\n }\n\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearFailoverState();\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_constants","require","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_request","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","apiRequest","APIRequest","getInstance","_createClass2","key","getServerType","url","_this$backupMobiusUri","includes","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setDeviceInfo","devicesInfo","_devicesInfo$devices","_slicedToArray2","devices","deviceInfo","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","response","requestObj","_t2","_context2","uri","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","isSocketEnabled","body","makeRequest","sent","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","_context3","clientDeviceUri","POST","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","loggerContext","abort","_context5","RESTORE_PREVIOUS_REGISTRATION","getConnectedWebSocketUrl","disconnectFromMobiusSocket","code","reason","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","HANDLE_404_KEEPALIVE_FAILURE","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_postKeepAlive","_callee12","_this$deviceInfo$devi","_context12","postKeepAlive","_x9","_x0","_isPrimaryActive","_callee13","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t3","_t4","_context13","replace","URL_ENDPOINT","request","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","INITIATE_FAILBACK","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee14","_context14","executeFailback","_executeFailback","_callee16","_this5","_context16","EXECUTE_FAILBACK","_callee15","primaryServerStatus","abortNew","_context15","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee17","_context17","RESTART_REGISTRATION","_x1","_handleConnectionRestoration","_callee19","retry","_this6","_context19","HANDLE_CONNECTION_RESTORATION","_callee18","_context18","handleConnectionRestoration","_x10","restoreRegistrationCallBack","_this7","_ref1","_callee20","restoreData","logContext","restore","finalError","_context20","isRegRetry","getExistingDevice","setRegRetry","_x11","_x12","_triggerRegistration","_callee21","_context21","TRIGGER_REGISTRATION","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee22","_this8","servers","connectedWebSocketUrl","_iterator2","_step2","_loop","_ret","_args23","_t6","_context23","REGISTER_UTIL","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","wssNormalizedUrl","resp","_yield$handleRegistra","shouldDisconnect","_t5","_context22","CONNECTING","endsWith","connectToMobiusSocket","REGISTERED","trackingid","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","isFinalError","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x13","_startKeepaliveTimer","_callee25","_this9","RETRY_COUNT_THRESHOLD","_context26","_callee24","blob","blobUrl","_context25","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee23","event","_this9$webWorker","res","_err$headers","_this9$webWorker2","_error","_yield$handleRegistra2","_t7","_context24","data","SEND_KEEPALIVE","KEEPALIVE_RESULT","statusText","err","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x17","_x14","_x15","_x16","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee26","closeMobiusWss","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_args27","_t8","_context27","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee27","_context28","RECONNECT_ON_FAILURE","_x18","_handleRegistrationDownEvent","_callee28","_event$trackingId","_event$eventId","_Object$values","_Object$values2","activeCall","_context29","HANDLE_REGISTRATION_DOWN_EVENT","trackingId","eventId","_values","end","performRegistrationDownCleanup","handleRegistrationDownEvent","_x19","_performRegistrationDownCleanup","_callee30","_this0","_context31","_callee29","_t9","_context30","_x20","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager, MobiusAsyncEvent} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n Devices,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\n FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\nimport {APIRequest} from '../utils/request';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n private apiRequest: APIRequest;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.apiRequest = APIRequest.getInstance({webex: this.webex});\n }\n\n private getServerType(url: string): SERVER_TYPE {\n return (\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN'\n );\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n /**\n * Populate deviceInfo using a devices response body.\n */\n public setDeviceInfo(devicesInfo: Devices): void {\n const [device] = devicesInfo.devices;\n\n this.deviceInfo = {\n userId: devicesInfo.userId,\n device,\n devices: devicesInfo.devices,\n };\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n\n const requestObj = {\n uri: `${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`,\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n };\n\n if (this.apiRequest.isSocketEnabled()) {\n // @ts-ignore - body is added for mobius wss support, it is not used for mobius http\n requestObj.body = {\n deviceId,\n };\n }\n\n try {\n response = await this.apiRequest.makeRequest(requestObj);\n } catch (error) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return response as WebexRequestPayload;\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return this.apiRequest.makeRequest({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n }) as Promise<WebexRequestPayload>;\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTORE_PREVIOUS_REGISTRATION,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} - caller: ${caller}, activeMobiusUrl: ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n let abort = false;\n\n if (\n this.apiRequest.isSocketEnabled() &&\n `${this.apiRequest.getConnectedWebSocketUrl()}/` !== this.activeMobiusUrl\n ) {\n log.info(`Disconnecting from Mobius socket to restore previous registration.`, {\n file: REGISTRATION_FILE,\n method: 'restorePreviousRegistration',\n });\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n }\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n await this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n log.log(\n `restorePreviousRegistration completed via 429 retry-after path - caller: ${caller}`,\n loggerContext\n );\n\n return true;\n }\n }\n\n log.log(\n `restorePreviousRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_404_KEEPALIVE_FAILURE,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n log.warn(\n 'Keepalive 404 recovery: re-registration did not complete, starting failover timer',\n loggerContext\n );\n await this.startFailoverTimer();\n } else {\n log.log(\n `Keepalive 404 recovery handled - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\n });\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n if (this.apiRequest.isSocketEnabled()) {\n log.info(\n 'Disconnecting from primary Mobius socket for failover to backup servers',\n loggerContext\n );\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log('Mobius socket disconnect complete prior to backup failover', loggerContext);\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure(\n (clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n },\n loggerContext,\n interval < 0 ? 'Timer threshold exceeded during failover' : undefined\n );\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async postKeepAlive(deviceUrl: string, url: string) {\n return this.apiRequest.makeRequest({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: {\n deviceId: this.deviceInfo.device?.deviceId,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/').replace('wss://', 'https://');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.INITIATE_FAILBACK,\n };\n\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n log.info(\n `Scheduling failback to primary - intervalMinutes: ${intervalInMinutes}`,\n loggerContext\n );\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n } else {\n log.info('Failback timer already scheduled, skipping', loggerContext);\n }\n } else {\n log.info('Failback not required, clearing any pending failback timer', loggerContext);\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.EXECUTE_FAILBACK,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, loggerContext);\n await this.deregister();\n\n if (this.apiRequest.isSocketEnabled()) {\n log.info(\n 'Disconnecting from backup Mobius socket for failback to primary',\n loggerContext\n );\n\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log('Mobius socket disconnect complete prior to primary failback', loggerContext);\n }\n\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(loggerContext.method);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n loggerContext\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.RESTART_REGISTRATION,\n };\n\n log.info(`${METHOD_START_MESSAGE} - caller: ${caller}`, loggerContext);\n\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n\n log.log(\n `restartRegistration completed - caller: ${caller}, deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.TRIGGER_REGISTRATION,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (await this.resumeFailover()) {\n log.info('Registration trigger handled by resumeFailover path', loggerContext);\n\n return;\n }\n\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n\n log.log(\n `triggerRegistration completed - deviceRegistered: ${this.isDeviceRegistered()}, abort: ${abort}`,\n loggerContext\n );\n } else {\n log.warn('triggerRegistration skipped: no primary Mobius URIs available', loggerContext);\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n };\n\n let abort = false;\n this.retryAfter = undefined;\n let connectedWebSocketUrl: string | undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(\n `[${caller}] : Device already registered with : ${this.activeMobiusUrl}`,\n loggerContext\n );\n\n return abort;\n }\n for (const url of servers) {\n const serverType = this.getServerType(url);\n\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, loggerContext);\n\n if (this.apiRequest.isSocketEnabled()) {\n const wssNormalizedUrl = url.endsWith('/') ? url.slice(0, -1) : url;\n\n log.info(\n `[${caller}] : Connecting to Mobius WebSocket - serverType: ${serverType}, wssUrl: ${wssNormalizedUrl}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n connectedWebSocketUrl = await this.apiRequest.connectToMobiusSocket(wssNormalizedUrl);\n connectedWebSocketUrl = connectedWebSocketUrl ? `${connectedWebSocketUrl}/` : undefined;\n\n log.log(\n `[${caller}] : Mobius WebSocket connected - serverType: ${serverType}, connectedWebSocketUrl: ${connectedWebSocketUrl}`,\n loggerContext\n );\n }\n\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(connectedWebSocketUrl || url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n loggerContext\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n const {finalError, shouldDisconnect} = await handleRegistrationErrors(\n body,\n (clientError, isFinalError) => {\n if (isFinalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack(),\n servers.length\n );\n\n abort = finalError;\n\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n loggerContext\n );\n break;\n }\n\n /**\n * 1. This is to ensure that registration error is handled before moving to the disconnect step.\n * 2. We are not tearing down the socket if there is only one server in the list during the failover/re-attempt process.\n * 3. Connection should not be torn down for 429 error case because retry will happen, which takes care disconnect/connect step.\n */\n if (shouldDisconnect && this.apiRequest.isSocketEnabled()) {\n connectedWebSocketUrl = undefined;\n\n log.info(\n `[${caller}] : Tearing down Mobius WebSocket after registration error - serverType: ${serverType}`,\n loggerContext\n );\n\n // eslint-disable-next-line no-await-in-loop\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n\n log.log(\n `[${caller}] : Mobius WebSocket disconnect complete after registration error - serverType: ${serverType}`,\n loggerContext\n );\n }\n\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.SEND_KEEPALIVE) {\n try {\n const res = await this.postKeepAlive(String(this.webex.internal.device.url), url);\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n statusCode: res.statusCode,\n });\n } catch (err: any) {\n const error = {\n headers: {\n trackingid: err.headers?.trackingid,\n 'retry-after': err.headers['retry-after'],\n },\n statusCode: err.statusCode,\n statusText: err.statusText,\n type: err.type,\n };\n\n this.webWorker?.postMessage({\n type: WorkerMessageType.KEEPALIVE_RESULT,\n err: error,\n });\n }\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = event.data.err as WebexRequestPayload;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const {finalError: abort} = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister(closeMobiusWss = false) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', loggerContext);\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, loggerContext);\n }\n\n if (closeMobiusWss) {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after deregistration', loggerContext);\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearFailoverState();\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n let uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n\n if (this.apiRequest.isSocketEnabled()) {\n uri = uri.replace('https://', 'wss://');\n }\n\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n\n /**\n * Handles an async REGISTRATION_DOWN event emitted by Mobius. Ends the first\n * active call (if any) and runs registration-side cleanup.\n *\n * @param event - The Mobius async event payload (trackingId/eventId used for logs).\n */\n public async handleRegistrationDownEvent(event?: MobiusAsyncEvent): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(\n `Registration down received - trackingId: ${event?.trackingId ?? 'unknown'}, eventId: ${\n event?.eventId ?? 'unknown'\n }`,\n loggerContext\n );\n\n const [activeCall] = Object.values(this.callManager.getActiveCalls());\n activeCall?.end();\n\n await this.performRegistrationDownCleanup(METHODS.HANDLE_REGISTRATION_DOWN_EVENT);\n }\n\n /**\n * Cleans up registration-side state after a Mobius registration-down event.\n *\n * Stops timers, resets transient flags, clears failover cache, sets status to\n * INACTIVE, tears down the Mobius WebSocket (when enabled), and finally emits\n * `LINE_EVENTS.UNREGISTERED` so the SDK consumer is notified.\n *\n * Runs under the shared mutex to avoid racing with other registration flows.\n *\n * @param caller - Identifier of the caller, used for logs.\n */\n private async performRegistrationDownCleanup(caller: string): Promise<void> {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_REGISTRATION_DOWN_EVENT,\n };\n\n log.info(`[${caller}] : Running registration-down cleanup`, loggerContext);\n\n await this.mutex.runExclusive(async () => {\n this.clearFailbackTimer();\n this.clearKeepaliveTimer();\n\n this.reconnectPending = false;\n this.scheduled429Retry = false;\n this.failoverImmediately = false;\n this.retryAfter = undefined;\n this.registerRetry = false;\n\n this.clearFailoverState();\n this.setStatus(RegistrationStatus.INACTIVE);\n\n if (this.apiRequest.isSocketEnabled()) {\n try {\n await this.apiRequest.disconnectFromMobiusSocket({\n code: 3050,\n reason: 'done (permanent)',\n });\n log.log('Mobius socket disconnect complete after registration-down', loggerContext);\n } catch (err) {\n log.warn(\n `Mobius socket disconnect failed after registration-down: ${String(err)}`,\n loggerContext\n );\n }\n }\n\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n });\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AAOA,IAAAK,QAAA,GAAAL,OAAA;AAEA,IAAAM,QAAA,GAAAN,OAAA;AAEA,IAAAO,OAAA,GAAAJ,sBAAA,CAAAH,OAAA;AAEA,IAAAQ,aAAA,GAAAL,sBAAA,CAAAH,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AAYA,IAAAU,WAAA,GAAAV,OAAA;AA4BA,IAAAW,OAAA,GAAAX,OAAA;AAEA,IAAAY,QAAA,GAAAZ,OAAA;AAA4C,SAAAa,2BAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,yBAAAC,OAAA,IAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,CAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,CAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,CAAA,IAAAD,CAAA,uBAAAA,CAAA,CAAAO,MAAA,IAAAL,CAAA,KAAAF,CAAA,GAAAE,CAAA,OAAAM,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,WAAAH,EAAA,IAAAR,CAAA,CAAAO,MAAA,KAAAK,IAAA,WAAAA,IAAA,MAAAC,KAAA,EAAAb,CAAA,CAAAQ,EAAA,UAAAP,CAAA,WAAAA,EAAAD,CAAA,UAAAA,CAAA,KAAAc,CAAA,EAAAL,CAAA,gBAAAM,SAAA,iJAAAC,CAAA,EAAAC,CAAA,OAAAC,CAAA,gBAAAR,CAAA,WAAAA,EAAA,IAAAR,CAAA,GAAAA,CAAA,CAAAiB,IAAA,CAAAnB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAX,CAAA,GAAAE,CAAA,CAAAkB,IAAA,WAAAH,CAAA,GAAAjB,CAAA,CAAAY,IAAA,EAAAZ,CAAA,KAAAC,CAAA,WAAAA,EAAAD,CAAA,IAAAkB,CAAA,OAAAF,CAAA,GAAAhB,CAAA,KAAAc,CAAA,WAAAA,EAAA,UAAAG,CAAA,YAAAf,CAAA,CAAAmB,MAAA,IAAAnB,CAAA,CAAAmB,MAAA,oBAAAH,CAAA,QAAAF,CAAA;AAAA,SAAAV,4BAAAN,CAAA,EAAAiB,CAAA,QAAAjB,CAAA,2BAAAA,CAAA,SAAAsB,iBAAA,CAAAtB,CAAA,EAAAiB,CAAA,OAAAf,CAAA,MAAAqB,QAAA,CAAAJ,IAAA,CAAAnB,CAAA,EAAAwB,KAAA,6BAAAtB,CAAA,IAAAF,CAAA,CAAAyB,WAAA,KAAAvB,CAAA,GAAAF,CAAA,CAAAyB,WAAA,CAAAC,IAAA,aAAAxB,CAAA,cAAAA,CAAA,GAAAyB,WAAA,CAAA3B,CAAA,oBAAAE,CAAA,+CAAA0B,IAAA,CAAA1B,CAAA,IAAAoB,iBAAA,CAAAtB,CAAA,EAAAiB,CAAA;AAAA,SAAAK,kBAAAtB,CAAA,EAAAiB,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAAjB,CAAA,CAAAO,MAAA,MAAAU,CAAA,GAAAjB,CAAA,CAAAO,MAAA,YAAAN,CAAA,MAAAU,CAAA,GAAAkB,KAAA,CAAAZ,CAAA,GAAAhB,CAAA,GAAAgB,CAAA,EAAAhB,CAAA,IAAAU,CAAA,CAAAV,CAAA,IAAAD,CAAA,CAAAC,CAAA,UAAAU,CAAA;AAAA,SAAAmB,QAAA7B,CAAA,EAAAD,CAAA,QAAAE,CAAA,GAAA6B,aAAA,CAAA9B,CAAA,OAAA+B,6BAAA,QAAAhB,CAAA,GAAAgB,6BAAA,CAAA/B,CAAA,GAAAD,CAAA,KAAAgB,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAAjC,CAAA,WAAAkC,gCAAA,CAAAjC,CAAA,EAAAD,CAAA,EAAAmC,UAAA,OAAAjC,CAAA,CAAAkC,IAAA,CAAAC,KAAA,CAAAnC,CAAA,EAAAc,CAAA,YAAAd,CAAA;AAAA,SAAAoC,cAAArC,CAAA,aAAAD,CAAA,MAAAA,CAAA,GAAAuC,SAAA,CAAAhC,MAAA,EAAAP,CAAA,UAAAE,CAAA,WAAAqC,SAAA,CAAAvC,CAAA,IAAAuC,SAAA,CAAAvC,CAAA,QAAAA,CAAA,OAAA8B,OAAA,CAAAU,MAAA,CAAAtC,CAAA,OAAAuC,OAAA,WAAAzC,CAAA,QAAA0C,gBAAA,CAAAC,OAAA,EAAA1C,CAAA,EAAAD,CAAA,EAAAE,CAAA,CAAAF,CAAA,SAAA4C,iCAAA,GAAAC,wBAAA,CAAA5C,CAAA,EAAA2C,iCAAA,CAAA1C,CAAA,KAAA4B,OAAA,CAAAU,MAAA,CAAAtC,CAAA,GAAAuC,OAAA,WAAAzC,CAAA,IAAA8C,sBAAA,CAAA7C,CAAA,EAAAD,CAAA,EAAAkC,gCAAA,CAAAhC,CAAA,EAAAF,CAAA,iBAAAC,CAAA;AAE5C;AACA;AACA;AAFA,IAGa8C,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAiCvB;AACF;EACE,SAAAA,aACEE,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB,EAChBC,GAAY,EACZ;IAAA,IAAAC,gBAAA,CAAAZ,OAAA,QAAAI,YAAA;IAAA,IAAAL,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBArCe,EAAE;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,sBAee,CAAC,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,yBAGZ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,4BACF,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,oBAEb,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,+BACM,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,6BAEP,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAc/B,IAAI,CAACW,GAAG,GAAGA,GAAG;IACd,IAAI,CAACE,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACP,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACQ,QAAQ,GAAGR,WAAW,CAACS,SAAS,KAAKC,wBAAgB,CAACC,cAAc;IAEzE,IAAI,CAAC,IAAI,CAACL,YAAY,CAACM,QAAQ,CAAC,CAAC,EAAE;MACjCL,qBAAY,CAACM,QAAQ,CAACd,KAAK,CAAC;IAC9B;IACA,IAAI,CAACA,KAAK,GAAG,IAAI,CAACO,YAAY,CAACM,QAAQ,CAAC,CAAC;IACzC,IAAI,CAACE,MAAM,GAAG,IAAI,CAACf,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACF,MAAM;IAC/C,IAAI,CAACG,kBAAkB,GAAGC,0BAAkB,CAACC,IAAI;IACjD,IAAI,CAACC,wBAAwB,GAAG,CAAC;IACjCC,eAAG,CAACC,SAAS,CAACnB,QAAQ,EAAEoB,6BAAiB,CAAC;IAC1C,IAAI,CAACC,mBAAmB,GAAGC,yCAA6B;IACxD,IAAI,CAACC,mBAAmB,GAAGC,yCAA6B;IACxD,IAAI,CAAC1B,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC2B,WAAW,GAAG,IAAAC,uBAAc,EAAC,IAAI,CAAC9B,KAAK,EAAEC,WAAW,CAACS,SAAS,CAAC;IACpE,IAAI,CAACqB,aAAa,GAAG,IAAAC,yBAAgB,EAAC,IAAI,CAAChC,KAAK,EAAEC,WAAW,CAACS,SAAS,CAAC;IACxE,IAAI,CAACP,WAAW,GAAGA,WAAW;IAE9B,IAAI,CAAC8B,iBAAiB,GAAG,EAAE;IAC3B,IAAI,CAACC,gBAAgB,GAAG,EAAE;IAC1B,IAAI,CAACC,UAAU,GAAGC,mBAAU,CAACC,WAAW,CAAC;MAACrC,KAAK,EAAE,IAAI,CAACA;IAAK,CAAC,CAAC;EAC/D;EAAC,WAAAsC,aAAA,CAAA5C,OAAA,EAAAI,YAAA;IAAAyC,GAAA;IAAA3E,KAAA,EAED,SAAQ4E,aAAaA,CAACC,GAAW,EAAe;MAAA,IAAAC,qBAAA;MAC9C,OACG,IAAI,CAACT,iBAAiB,CAACU,QAAQ,CAACF,GAAG,CAAC,IAAI,SAAS,IACjD,EAAAC,qBAAA,OAAI,CAACR,gBAAgB,cAAAQ,qBAAA,uBAArBA,qBAAA,CAAuBC,QAAQ,CAACF,GAAG,CAAC,KAAI,QAAS,IAClD,SAAS;IAEb;EAAC;IAAAF,GAAA;IAAA3E,KAAA,EAED,SAAQgF,mBAAmBA,CAAA,EAAW;MACpC,UAAAC,MAAA,CAAUC,iCAAqB,OAAAD,MAAA,CAAI,IAAI,CAAC9B,MAAM,IAAI,SAAS;IAC7D;EAAC;IAAAwB,GAAA;IAAA3E,KAAA,EAED,SAAQmF,iBAAiBA,CAACC,aAAiC,EAAQ;MACjE,IAAI;QACFC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACN,mBAAmB,CAAC,CAAC,EAAE,IAAAO,UAAA,CAAAzD,OAAA,EAAesD,aAAa,CAAC,CAAC;MACjF,CAAC,CAAC,OAAOI,KAAK,EAAE;QACd9B,eAAG,CAAC+B,IAAI,uDAAAR,MAAA,CAAuDS,MAAM,CAACF,KAAK,CAAC,GAAI;UAC9EG,IAAI,EAAE/B,6BAAiB;UACvBgC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAjB,GAAA;IAAA3E,KAAA,EAED,SAAQ6F,kBAAkBA,CAAA,EAAS;MACjC,IAAI;QACFR,YAAY,CAACS,UAAU,CAAC,IAAI,CAACd,mBAAmB,CAAC,CAAC,CAAC;MACrD,CAAC,CAAC,OAAAe,OAAA,EAAM;QACNrC,eAAG,CAAC+B,IAAI,CAAC,kDAAkD,EAAE;UAC3DE,IAAI,EAAE/B,6BAAiB;UACvBgC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAjB,GAAA;IAAA3E,KAAA;MAAA,IAAAgG,eAAA,OAAAC,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAED,SAAAC,QAAA;QAAA,IAAAC,WAAA,EAAAjB,aAAA,EAAAkB,WAAA,EAAAC,UAAA,EAAAC,EAAA;QAAA,OAAAN,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAnG,IAAA;YAAA;cAAAmG,QAAA,CAAAC,IAAA;cAEUN,WAAW,GAAGhB,YAAY,CAACuB,OAAO,CAAC,IAAI,CAAC5B,mBAAmB,CAAC,CAAC,CAAC;cAC9DI,aAAa,GAAGiB,WAAW,GAC5BQ,IAAI,CAACC,KAAK,CAACT,WAAW,CAAC,GACxBU,SAAS;cAAA,MACT3B,aAAa,IAAI,CAAC,IAAI,CAAC4B,kBAAkB,CAAC,CAAC;gBAAAN,QAAA,CAAAnG,IAAA;gBAAA;cAAA;cACvC+F,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAArF,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAC3CyE,UAAU,GACdnB,aAAa,CAACgC,WAAW,IAAId,WAAW,GAAGlB,aAAa,CAACiC,kBAAkB,CAAC;cAE9E,IAAI,CAACxB,kBAAkB,CAAC,CAAC;cAACa,QAAA,CAAAnG,IAAA;cAAA,OACpB,IAAI,CAAC+G,kBAAkB,CAAClC,aAAa,CAACmC,OAAO,EAAEhB,UAAU,CAAC;YAAA;cAAA,OAAAG,QAAA,CAAAc,MAAA,WAEzD,IAAI;YAAA;cAAAd,QAAA,CAAAnG,IAAA;cAAA;YAAA;cAAAmG,QAAA,CAAAC,IAAA;cAAAH,EAAA,GAAAE,QAAA;cAGbhD,eAAG,CAAC+B,IAAI,qCAAqC;gBAC3CE,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAE;cACV,CAAC,CAAC;YAAC;cAAA,OAAAc,QAAA,CAAAc,MAAA,WAGE,KAAK;YAAA;YAAA;cAAA,OAAAd,QAAA,CAAAe,IAAA;UAAA;QAAA,GAAArB,OAAA;MAAA,CACb;MAAA,SAxBasB,cAAcA,CAAA;QAAA,OAAA1B,eAAA,CAAAxE,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAdgG,cAAc;IAAA;EAAA;IAAA/C,GAAA;IAAA3E,KAAA,EA0B5B,SAAO2H,kBAAkBA,CAAA,EAAW;MAClC,OAAO,IAAI,CAACC,eAAe;IAC7B;EAAC;IAAAjD,GAAA;IAAA3E,KAAA,EAED,SAAO6H,kBAAkBA,CAAChD,GAAW,EAAE;MACrCnB,eAAG,CAACoE,IAAI,IAAA7C,MAAA,CAAI8C,+BAAoB,YAAA9C,MAAA,CAASJ,GAAG,GAAI;QAC9Ce,MAAM,EAAEoC,mBAAO,CAACC,oBAAoB;QACpCtC,IAAI,EAAE/B;MACR,CAAC,CAAC;MACF,IAAI,CAACgE,eAAe,GAAG/C,GAAG;MAC1B,IAAI,CAACZ,WAAW,CAACiE,kBAAkB,CAACrD,GAAG,CAAC;IAC1C;;IAEA;AACF;AACA;EAFE;IAAAF,GAAA;IAAA3E,KAAA,EAGA,SAAOmI,aAAaA,CAACC,WAAoB,EAAQ;MAC/C,IAAAC,oBAAA,OAAAC,eAAA,CAAAxG,OAAA,EAAiBsG,WAAW,CAACG,OAAO;QAA7BlF,MAAM,GAAAgF,oBAAA;MAEb,IAAI,CAACG,UAAU,GAAG;QAChBrF,MAAM,EAAEiF,WAAW,CAACjF,MAAM;QAC1BE,MAAM,EAANA,MAAM;QACNkF,OAAO,EAAEH,WAAW,CAACG;MACvB,CAAC;IACH;EAAC;IAAA5D,GAAA;IAAA3E,KAAA,EAED,SAAOyI,gBAAgBA,CAACpE,iBAA2B,EAAEC,gBAA0B,EAAE;MAC/EZ,eAAG,CAACA,GAAG,CAACqE,+BAAoB,EAAE;QAACnC,MAAM,EAAEoC,mBAAO,CAACU,kBAAkB;QAAE/C,IAAI,EAAE/B;MAAiB,CAAC,CAAC;MAC5F,IAAI,CAACS,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IAC1C;;IAEA;AACF;AACA;AACA;EAHE;IAAAK,GAAA;IAAA3E,KAAA;MAAA,IAAA2I,mBAAA,OAAA1C,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAAyC,SAAiC/D,GAAW,EAAEgE,QAAgB,EAAEC,SAAiB;QAAA,IAAAC,QAAA,EAAAC,UAAA,EAAAC,GAAA;QAAA,OAAA/C,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAyC,SAAA;UAAA,kBAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAA3I,IAAA;YAAA;cAGzEyI,UAAU,GAAG;gBACjBG,GAAG,KAAAlE,MAAA,CAAKJ,GAAG,EAAAI,MAAA,CAAGmE,qCAAyB,OAAAnE,MAAA,CAAI4D,QAAQ,CAAE;gBACrDjD,MAAM,EAAEyD,oBAAY,CAACC,MAAM;gBAC3BC,OAAO,MAAA1H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ0H,4BAAgB,EAAGV,SAAS,GAC5BW,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDC,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC;cAED,IAAI,IAAI,CAACtF,UAAU,CAACuF,eAAe,CAAC,CAAC,EAAE;gBACrC;gBACAd,UAAU,CAACe,IAAI,GAAG;kBAChBlB,QAAQ,EAARA;gBACF,CAAC;cACH;cAACK,SAAA,CAAAvC,IAAA;cAAAuC,SAAA,CAAA3I,IAAA;cAAA,OAGkB,IAAI,CAACgE,UAAU,CAACyF,WAAW,CAAChB,UAAU,CAAC;YAAA;cAAxDD,QAAQ,GAAAG,SAAA,CAAAe,IAAA;cAAAf,SAAA,CAAA3I,IAAA;cAAA;YAAA;cAAA2I,SAAA,CAAAvC,IAAA;cAAAsC,GAAA,GAAAC,SAAA;cAERxF,eAAG,CAAC+B,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAzD,OAAA,EAAAmH,GAAoB,CAAC,GAAI;gBAC9DtD,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAACkC;cAClB,CAAC,CAAC;cAAChB,SAAA,CAAA3I,IAAA;cAAA,OAEG,IAAA4J,kBAAU,EAAC,CAAC;YAAA;cAGpB,IAAI,CAACC,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;cAC3C,IAAI,CAAC9H,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;cAAC,OAAArB,SAAA,CAAA1B,MAAA,WAEpCuB,QAAQ;YAAA;YAAA;cAAA,OAAAG,SAAA,CAAAzB,IAAA;UAAA;QAAA,GAAAmB,QAAA;MAAA,CAChB;MAAA,SAnCa4B,kBAAkBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAhC,mBAAA,CAAAnH,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlB8I,kBAAkB;IAAA;IAqChC;AACF;AACA;AACA;IAHE;EAAA;IAAA7F,GAAA;IAAA3E,KAAA;MAAA,IAAA4K,iBAAA,OAAA3E,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAA0E,SAA+BhG,GAAW;QAAA,IAAA2D,UAAA;QAAA,OAAAtC,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAqE,SAAA;UAAA,kBAAAA,SAAA,CAAAnE,IAAA,GAAAmE,SAAA,CAAAvK,IAAA;YAAA;cAClCiI,UAAU,GAAG;gBACjBrF,MAAM,EAAE,IAAI,CAACA,MAAM;gBACnB4H,eAAe,EAAE,IAAI,CAAC3I,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACwB,GAAG;gBAC/CxC,WAAW,EAAE,IAAI,CAACI,GAAG,GAAAhB,aAAA,CAAAA,aAAA,KAAO,IAAI,CAACY,WAAW;kBAAEI,GAAG,EAAE,IAAI,CAACA;gBAAG,KAAI,IAAI,CAACJ;cACtE,CAAC;cAAA,OAAAyI,SAAA,CAAAtD,MAAA,WAEM,IAAI,CAACjD,UAAU,CAACyF,WAAW,CAAC;gBACjCb,GAAG,KAAAlE,MAAA,CAAKJ,GAAG,WAAQ;gBACnBe,MAAM,EAAEyD,oBAAY,CAAC2B,IAAI;gBACzBzB,OAAO,MAAA1H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ0H,4BAAgB,EAAGhB,UAAU,CAACuC,eAAe,GAC7CtB,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDK,IAAI,EAAEvB,UAAU;gBAChBmB,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAiB,SAAA,CAAArD,IAAA;UAAA;QAAA,GAAAoD,QAAA;MAAA,CACH;MAAA,SAjBaI,gBAAgBA,CAAAC,GAAA;QAAA,OAAAN,iBAAA,CAAApJ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAhBuJ,gBAAgB;IAAA;IAmB9B;AACF;AACA;AACA;IAHE;EAAA;IAAAtG,GAAA;IAAA3E,KAAA;MAAA,IAAAmL,4BAAA,OAAAlF,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAAiF,SAA0CC,MAAc;QAAA,IAAAC,KAAA;QAAA,IAAAC,aAAA,EAAAC,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAgF,SAAA;UAAA,kBAAAA,SAAA,CAAA9E,IAAA,GAAA8E,SAAA,CAAAlL,IAAA;YAAA;cAChDgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC0D;cAClB,CAAC;cAEDhI,eAAG,CAACoE,IAAI,IAAA7C,MAAA,CACH8C,+BAAoB,iBAAA9C,MAAA,CAAcoG,MAAM,yBAAApG,MAAA,CAAsB,IAAI,CAAC2C,eAAe,GACrF2D,aACF,CAAC;cAEGC,KAAK,GAAG,KAAK;cAAA,MAGf,IAAI,CAACjH,UAAU,CAACuF,eAAe,CAAC,CAAC,IACjC,GAAA7E,MAAA,CAAG,IAAI,CAACV,UAAU,CAACoH,wBAAwB,CAAC,CAAC,WAAQ,IAAI,CAAC/D,eAAe;gBAAA6D,SAAA,CAAAlL,IAAA;gBAAA;cAAA;cAEzEmD,eAAG,CAACoE,IAAI,uEAAuE;gBAC7EnC,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAE;cACV,CAAC,CAAC;cAAC6F,SAAA,CAAAlL,IAAA;cAAA,OAEG,IAAI,CAACgE,UAAU,CAACqH,0BAA0B,CAAC;gBAC/CC,IAAI,EAAE,IAAI;gBACVC,MAAM,EAAE;cACV,CAAC,CAAC;YAAA;cAAA,KAGA,IAAI,CAAClE,eAAe;gBAAA6D,SAAA,CAAAlL,IAAA;gBAAA;cAAA;cAAAkL,SAAA,CAAAlL,IAAA;cAAA,OACR,IAAI,CAACwL,8BAA8B,CAACV,MAAM,EAAE,CAAC,IAAI,CAACzD,eAAe,CAAC,CAAC;YAAA;cAAjF4D,KAAK,GAAAC,SAAA,CAAAxB,IAAA;cAAA,KACD,IAAI,CAAC+B,UAAU;gBAAAP,SAAA,CAAAlL,IAAA;gBAAA;cAAA;cAAA,MACb,IAAI,CAACyL,UAAU,GAAGC,mCAAuB;gBAAAR,SAAA,CAAAlL,IAAA;gBAAA;cAAA;cAC3C;cACA2L,UAAU,kBAAAjG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAgG,SAAA;gBAAA,OAAAjG,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA2F,SAAA;kBAAA,kBAAAA,SAAA,CAAAzF,IAAA,GAAAyF,SAAA,CAAA7L,IAAA;oBAAA;sBAAA6L,SAAA,CAAA7L,IAAA;sBAAA,OACH+K,KAAI,CAACe,mBAAmB,CAAChB,MAAM,CAAC;oBAAA;oBAAA;sBAAA,OAAAe,SAAA,CAAA3E,IAAA;kBAAA;gBAAA,GAAA0E,QAAA;cAAA,CACvC,IAAE,IAAI,CAACH,UAAU,GAAG,IAAI,CAAC;cAACP,SAAA,CAAAlL,IAAA;cAAA;YAAA;cAAA,MAE3B,IAAI,CAAC8D,iBAAiB,CAACU,QAAQ,CAAC,IAAI,CAAC6C,eAAe,CAAC,IACrD,IAAI,CAACtD,gBAAgB,CAAC5E,MAAM,GAAG,CAAC;gBAAA+L,SAAA,CAAAlL,IAAA;gBAAA;cAAA;cAAAkL,SAAA,CAAAlL,IAAA;cAAA,OAGlB,IAAI,CAACwL,8BAA8B,CAACV,MAAM,EAAE,IAAI,CAAC/G,gBAAgB,CAAC;YAAA;cAAhFkH,KAAK,GAAAC,SAAA,CAAAxB,IAAA;cAAAwB,SAAA,CAAAlL,IAAA;cAAA;YAAA;cAAAkL,SAAA,CAAAlL,IAAA;cAAA,OAGC,IAAI,CAAC8L,mBAAmB,CAAChB,MAAM,CAAC;YAAA;cAExC,IAAI,CAACW,UAAU,GAAGjF,SAAS;cAE3BrD,eAAG,CAACA,GAAG,6EAAAuB,MAAA,CACuEoG,MAAM,GAClFE,aACF,CAAC;cAAC,OAAAE,SAAA,CAAAjE,MAAA,WAEK,IAAI;YAAA;cAIf9D,eAAG,CAACA,GAAG,oDAAAuB,MAAA,CAC8CoG,MAAM,0BAAApG,MAAA,CAAuB,IAAI,CAAC+B,kBAAkB,CAAC,CAAC,eAAA/B,MAAA,CAAYuG,KAAK,GAC1HD,aACF,CAAC;cAAC,OAAAE,SAAA,CAAAjE,MAAA,WAEKgE,KAAK;YAAA;YAAA;cAAA,OAAAC,SAAA,CAAAhE,IAAA;UAAA;QAAA,GAAA2D,QAAA;MAAA,CACb;MAAA,SA/DakB,2BAA2BA,CAAAC,GAAA;QAAA,OAAApB,4BAAA,CAAA3J,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3B4K,2BAA2B;IAAA;IAiEzC;AACF;AACA;IAFE;EAAA;IAAA3H,GAAA;IAAA3E,KAAA;MAAA,IAAAwM,0BAAA,OAAAvG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAGA,SAAAsG,SAAwCpB,MAAc;QAAA,IAAAE,aAAA,EAAAC,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAiG,SAAA;UAAA,kBAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAAnM,IAAA;YAAA;cAC9CgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC2E;cAClB,CAAC;cAEDjJ,eAAG,CAACoE,IAAI,IAAA7C,MAAA,CAAI8C,+BAAoB,iBAAA9C,MAAA,CAAcoG,MAAM,GAAIE,aAAa,CAAC;cAAC,MAEnEF,MAAM,KAAKuB,0BAAc;gBAAAF,SAAA,CAAAnM,IAAA;gBAAA;cAAA;cAAAmM,SAAA,CAAAnM,IAAA;cAAA,OACP,IAAI,CAACwL,8BAA8B,CAACV,MAAM,CAAC;YAAA;cAAzDG,KAAK,GAAAkB,SAAA,CAAAzC,IAAA;cAAA,MAEP,CAACuB,KAAK,IAAI,CAAC,IAAI,CAACxE,kBAAkB,CAAC,CAAC;gBAAA0F,SAAA,CAAAnM,IAAA;gBAAA;cAAA;cACtCmD,eAAG,CAAC+B,IAAI,CACN,mFAAmF,EACnF8F,aACF,CAAC;cAACmB,SAAA,CAAAnM,IAAA;cAAA,OACI,IAAI,CAAC+G,kBAAkB,CAAC,CAAC;YAAA;cAAAoF,SAAA,CAAAnM,IAAA;cAAA;YAAA;cAE/BmD,eAAG,CAACA,GAAG,uDAAAuB,MAAA,CACiD,IAAI,CAAC+B,kBAAkB,CAAC,CAAC,eAAA/B,MAAA,CAAYuG,KAAK,GAChGD,aACF,CAAC;YAAC;YAAA;cAAA,OAAAmB,SAAA,CAAAjF,IAAA;UAAA;QAAA,GAAAgF,QAAA;MAAA,CAGP;MAAA,SAxBaI,yBAAyBA,CAAAC,GAAA;QAAA,OAAAN,0BAAA,CAAAhL,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAzBmL,yBAAyB;IAAA;IA0BvC;AACF;AACA;IAFE;EAAA;IAAAlI,GAAA;IAAA3E,KAAA;MAAA,IAAA+M,eAAA,OAAA9G,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAGA,SAAA6G,SAA6BhB,UAAkB,EAAEX,MAAc;QAAA,IAAA4B,MAAA;QAAA,IAAAC,QAAA,EAAA1B,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA0G,SAAA;UAAA,kBAAAA,SAAA,CAAAxG,IAAA,GAAAwG,SAAA,CAAA5M,IAAA;YAAA;cAAA,MACzD8K,MAAM,KAAK+B,yBAAa;gBAAAD,SAAA,CAAA5M,IAAA;gBAAA;cAAA;cAAA,MACtB,IAAI,CAACkD,wBAAwB,IAAI4J,wCAA4B;gBAAAF,SAAA,CAAA5M,IAAA;gBAAA;cAAA;cAAA,OAAA4M,SAAA,CAAA3F,MAAA;YAAA;cAIjE,IAAI,CAAC8F,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAAC7J,wBAAwB,IAAI,CAAC;cAClCC,eAAG,CAACA,GAAG,mDAAAuB,MAAA,CAAmD,IAAI,CAACxB,wBAAwB,GAAI;gBACzFkC,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAE2H;cACV,CAAC,CAAC;cACIL,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,IAAI,CAAC/J,wBAAwB,CAAC;cAExE,IAAI,CAACgK,kBAAkB,CAACP,QAAQ,CAAC;cACjC,IAAI,CAACQ,iBAAiB,GAAG,IAAI;cAACP,SAAA,CAAA5M,IAAA;cAAA,OACV,IAAI,CAAC+L,2BAA2B,CAACiB,8BAAkB,CAAC;YAAA;cAAlE/B,KAAK,GAAA2B,SAAA,CAAAlD,IAAA;cAAA,MAEP,CAACuB,KAAK,IAAI,CAAC,IAAI,CAACxE,kBAAkB,CAAC,CAAC;gBAAAmG,SAAA,CAAA5M,IAAA;gBAAA;cAAA;cAAA4M,SAAA,CAAA5M,IAAA;cAAA,OAChC,IAAI,CAAC8L,mBAAmB,CAACkB,8BAAkB,CAAC;YAAA;cAAAJ,SAAA,CAAA5M,IAAA;cAAA;YAAA;cAE/C,IAAI8K,MAAM,KAAKuB,0BAAc,EAAE;gBACpC,IAAI,CAACe,mBAAmB,CAAC,CAAC;gBAC1BzB,UAAU,kBAAAjG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAyH,SAAA;kBAAA,IAAAC,qBAAA;kBAAA,OAAA3H,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAqH,SAAA;oBAAA,kBAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAAvN,IAAA;sBAAA;wBACTmD,eAAG,CAACA,GAAG,6BAAAuB,MAAA,CAA6B+G,UAAU,eAAY;0BACxDrG,IAAI,EAAE/B,6BAAiB;0BACvBgC,MAAM,EAAE2H;wBACV,CAAC,CAAC;;wBAEF;wBAAAO,SAAA,CAAAvN,IAAA;wBAAA,OACM0M,MAAI,CAACc,mBAAmB,EAAAF,qBAAA,GAC5BZ,MAAI,CAACzE,UAAU,CAACnF,MAAM,cAAAwK,qBAAA,uBAAtBA,qBAAA,CAAwB1E,GAAG,EAC3B8D,MAAI,CAACzE,UAAU,CAACwF,iBAAiB,EACjC,SACF,CAAC;sBAAA;sBAAA;wBAAA,OAAAF,SAAA,CAAArG,IAAA;oBAAA;kBAAA,GAAAmG,QAAA;gBAAA,CACF,IAAE5B,UAAU,GAAG,IAAI,CAAC;cACvB,CAAC,MAAM;gBACL,IAAI,CAACA,UAAU,GAAGA,UAAU;cAC9B;YAAC;YAAA;cAAA,OAAAmB,SAAA,CAAA1F,IAAA;UAAA;QAAA,GAAAuF,QAAA;MAAA,CACF;MAAA,SAvCaiB,cAAcA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAApB,eAAA,CAAAvL,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAduM,cAAc;IAAA;IAyC5B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAAtJ,GAAA;IAAA3E,KAAA,EAMA,SAAQwN,mBAAmBA,CAAA,EAAsB;MAAA,IAArBjG,OAAO,GAAA7F,SAAA,CAAAhC,MAAA,QAAAgC,SAAA,QAAAqF,SAAA,GAAArF,SAAA,MAAG,CAAC;MACrC,OACE0M,2CAA+B,GAAAnH,IAAA,CAAAoH,GAAA,CAC/BC,kCAAsB,EAAI/G,OAAO,IACjCN,IAAI,CAACC,KAAK,CACR,CAACD,IAAI,CAACsH,MAAM,CAAC,CAAC,IAAIC,2CAA+B,GAAGC,+BAAmB,GAAG,CAAC,CAAC,GAC1EA,+BAAmB,IACnBA,+BACJ,CAAC;IAEL;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA9J,GAAA;IAAA3E,KAAA;MAAA,IAAA0O,mBAAA,OAAAzI,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAOA,SAAAwI,UAAA;QAAA,IAAAC,MAAA;QAAA,IAAArH,OAAA;UAAAH,WAAA;UAAAmE,aAAA;UAAA2B,QAAA;UAAA2B,eAAA;UAAAC,SAAA;UAAAtD,KAAA;UAAAuD,aAAA;UAAAC,OAAA,GAAAtN,SAAA;QAAA,OAAAwE,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAwI,UAAA;UAAA,kBAAAA,UAAA,CAAAtI,IAAA,GAAAsI,UAAA,CAAA1O,IAAA;YAAA;cAAiCgH,OAAO,GAAAyH,OAAA,CAAAtP,MAAA,QAAAsP,OAAA,QAAAjI,SAAA,GAAAiI,OAAA,MAAG,CAAC;cAAE5H,WAAW,GAAA4H,OAAA,CAAAtP,MAAA,QAAAsP,OAAA,QAAAjI,SAAA,GAAAiI,OAAA,MAAG,CAAC;cACrDzD,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEsJ;cACV,CAAC;cAEGhC,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAACjG,OAAO,CAAC;cAE1CsH,eAAe,GAAGM,2CAA+B;cAEvD,IAAI/H,WAAW,GAAG8F,QAAQ,GAAG2B,eAAe,EAAE;gBACtCC,SAAS,GAAG1H,WAAW,GAAG8F,QAAQ,GAAG2B,eAAe;gBAE1D3B,QAAQ,IAAI4B,SAAS;cACvB;cAEA,IAAI,IAAI,CAAC9C,UAAU,IAAI,IAAI,IAAIkB,QAAQ,GAAG,IAAI,CAAClB,UAAU,EAAE;gBACzD,IAAI,CAACoD,mBAAmB,GAAG,IAAI,CAACpD,UAAU,GAAG5E,WAAW,GAAGyH,eAAe;cAC5E;cAAC,MAGG3B,QAAQ,GAAGkB,2CAA+B,IAAI,CAAC,IAAI,CAACgB,mBAAmB;gBAAAH,UAAA,CAAA1O,IAAA;gBAAA;cAAA;cACnEwO,aAAa,GAAG9H,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAArF,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAEnD,IAAI,IAAI,CAACkK,UAAU,IAAI,IAAI,EAAE;gBAC3BkB,QAAQ,GAAGjG,IAAI,CAACoI,GAAG,CAACnC,QAAQ,EAAE,IAAI,CAAClB,UAAU,CAAC;cAChD;cAEA,IAAI,CAAC7G,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAE0H,aAAa;gBACjCO,UAAU,EAAE;cACd,CAAC,CAAC;cAEFpD,UAAU,kBAAAjG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAoJ,SAAA;gBAAA,OAAArJ,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA+I,SAAA;kBAAA,kBAAAA,SAAA,CAAA7I,IAAA,GAAA6I,SAAA,CAAAjP,IAAA;oBAAA;sBAAAiP,SAAA,CAAAjP,IAAA;sBAAA,OACHqO,MAAI,CAACtM,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAuJ,SAAA;wBAAA,IAAApJ,WAAA;wBAAA,OAAAJ,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAkJ,SAAA;0BAAA,kBAAAA,SAAA,CAAAhJ,IAAA,GAAAgJ,SAAA,CAAApP,IAAA;4BAAA;8BAAAoP,SAAA,CAAApP,IAAA;8BAAA,OACdqO,MAAI,CAAC7C,8BAA8B,CAACmD,yBAAa,CAAC;4BAAA;8BAAhE1D,KAAK,GAAAmE,SAAA,CAAA1F,IAAA;8BACC3D,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAArF,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;8BAAA,MAE7C,CAAC0J,KAAK,IAAI,CAACoD,MAAI,CAAC5H,kBAAkB,CAAC,CAAC;gCAAA2I,SAAA,CAAApP,IAAA;gCAAA;8BAAA;8BAAAoP,SAAA,CAAApP,IAAA;8BAAA,OAChCqO,MAAI,CAACtH,kBAAkB,CAACC,OAAO,GAAG,CAAC,EAAEH,WAAW,IAAId,WAAW,GAAGyI,aAAa,CAAC,CAAC;4BAAA;4BAAA;8BAAA,OAAAY,SAAA,CAAAlI,IAAA;0BAAA;wBAAA,GAAAiI,QAAA;sBAAA,CAE1F,GAAC;oBAAA;oBAAA;sBAAA,OAAAF,SAAA,CAAA/H,IAAA;kBAAA;gBAAA,GAAA8H,QAAA;cAAA,CACH,IAAErC,QAAQ,GAAGuB,+BAAmB,CAAC;cAClC/K,eAAG,CAACA,GAAG,oCAAAuB,MAAA,CAC8BiI,QAAQ,qCAAAjI,MAAA,CAAkCsC,OAAO,GACpFgE,aACF,CAAC;cAAC0D,UAAA,CAAA1O,IAAA;cAAA;YAAA;cAAA,KACO,IAAI,CAAC+D,gBAAgB,CAAC5E,MAAM;gBAAAuP,UAAA,CAAA1O,IAAA;gBAAA;cAAA;cAAA,KACjC,IAAI,CAACgE,UAAU,CAACuF,eAAe,CAAC,CAAC;gBAAAmF,UAAA,CAAA1O,IAAA;gBAAA;cAAA;cACnCmD,eAAG,CAACoE,IAAI,CACN,yEAAyE,EACzEyD,aACF,CAAC;cAAC0D,UAAA,CAAA1O,IAAA;cAAA,OAEI,IAAI,CAACgE,UAAU,CAACqH,0BAA0B,CAAC;gBAC/CC,IAAI,EAAE,IAAI;gBACVC,MAAM,EAAE;cACV,CAAC,CAAC;YAAA;cAEFpI,eAAG,CAACA,GAAG,CAAC,4DAA4D,EAAE6H,aAAa,CAAC;YAAC;cAGvF,IAAI,CAACpG,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAEJ,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAArF,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;gBACjDwN,UAAU,EAAE;cACd,CAAC,CAAC;cAEF5L,eAAG,CAACoE,IAAI,CAAC,iCAAiC,EAAEyD,aAAa,CAAC;cAC1D,IAAI,CAAC6D,mBAAmB,GAAG,KAAK;cAACH,UAAA,CAAA1O,IAAA;cAAA,OACnB,IAAI,CAACwL,8BAA8B,CAACmD,yBAAa,EAAE,IAAI,CAAC5K,gBAAgB,CAAC;YAAA;cAAvFkH,KAAK,GAAAyD,UAAA,CAAAhF,IAAA;cAEL,IAAI,CAACuB,KAAK,IAAI,CAAC,IAAI,CAACxE,kBAAkB,CAAC,CAAC,EAAE;gBACxCkG,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,CAAC;gBAErC,IAAI,IAAI,CAACxB,UAAU,IAAI,IAAI,IAAI,IAAI,CAACA,UAAU,GAAGC,mCAAuB,EAAE;kBACxEiB,QAAQ,GAAGA,QAAQ,GAAG,IAAI,CAAClB,UAAU,GAAG,IAAI,CAACA,UAAU,GAAGkB,QAAQ;gBACpE;gBAEAhB,UAAU,kBAAAjG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAyJ,UAAA;kBAAA,OAAA1J,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAoJ,UAAA;oBAAA,kBAAAA,UAAA,CAAAlJ,IAAA,GAAAkJ,UAAA,CAAAtP,IAAA;sBAAA;wBAAAsP,UAAA,CAAAtP,IAAA;wBAAA,OACHqO,MAAI,CAACtM,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAA2J,SAAA;0BAAA,OAAA5J,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAsJ,SAAA;4BAAA,kBAAAA,SAAA,CAAApJ,IAAA,GAAAoJ,SAAA,CAAAxP,IAAA;8BAAA;gCAAAwP,SAAA,CAAAxP,IAAA;gCAAA,OACdqO,MAAI,CAAC7C,8BAA8B,CAACmD,yBAAa,EAAEN,MAAI,CAACtK,gBAAgB,CAAC;8BAAA;gCAAvFkH,KAAK,GAAAuE,SAAA,CAAA9F,IAAA;gCAAA,MACD,CAACuB,KAAK,IAAI,CAACoD,MAAI,CAAC5H,kBAAkB,CAAC,CAAC;kCAAA+I,SAAA,CAAAxP,IAAA;kCAAA;gCAAA;gCAAAwP,SAAA,CAAAxP,IAAA;gCAAA,OAChC,IAAA4J,kBAAU,EAAC,CAAC;8BAAA;gCAClB,IAAA6F,wBAAgB,EAAC,UAACC,WAAsB,EAAK;kCAC3CrB,MAAI,CAACrM,WAAW,CAAC+H,mBAAW,CAAC4F,KAAK,EAAEnJ,SAAS,EAAEkJ,WAAW,CAAC;gCAC7D,CAAC,EAAE1E,aAAa,CAAC;8BAAC;8BAAA;gCAAA,OAAAwE,SAAA,CAAAtI,IAAA;4BAAA;0BAAA,GAAAqI,QAAA;wBAAA,CAErB,GAAC;sBAAA;sBAAA;wBAAA,OAAAD,UAAA,CAAApI,IAAA;oBAAA;kBAAA,GAAAmI,SAAA;gBAAA,CACH,IAAE1C,QAAQ,GAAGuB,+BAAmB,CAAC;gBAClC/K,eAAG,CAACA,GAAG,2CAAAuB,MAAA,CAA2CiI,QAAQ,gBAAa3B,aAAa,CAAC;cACvF;cAAC0D,UAAA,CAAA1O,IAAA;cAAA;YAAA;cAAA0O,UAAA,CAAA1O,IAAA;cAAA,OAEK,IAAA4J,kBAAU,EAAC,CAAC;YAAA;cAClB,IAAA6F,wBAAgB,EACd,UAACC,WAAsB,EAAK;gBAC1BrB,MAAI,CAACrM,WAAW,CAAC+H,mBAAW,CAAC4F,KAAK,EAAEnJ,SAAS,EAAEkJ,WAAW,CAAC;cAC7D,CAAC,EACD1E,aAAa,EACb2B,QAAQ,GAAG,CAAC,GAAG,0CAA0C,GAAGnG,SAC9D,CAAC;YAAC;YAAA;cAAA,OAAAkI,UAAA,CAAAxH,IAAA;UAAA;QAAA,GAAAkH,SAAA;MAAA,CAEL;MAAA,SAzGarH,kBAAkBA,CAAA;QAAA,OAAAoH,mBAAA,CAAAlN,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlB4F,kBAAkB;IAAA;IA2GhC;AACF;AACA;IAFE;EAAA;IAAA3C,GAAA;IAAA3E,KAAA,EAGA,SAAQsN,kBAAkBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAAC6C,aAAa,EAAE;QACtBC,YAAY,CAAC,IAAI,CAACD,aAAa,CAAC;QAChC,IAAI,CAACA,aAAa,GAAGpJ,SAAS;MAChC;IACF;EAAC;IAAApC,GAAA;IAAA3E,KAAA;MAAA,IAAAqQ,cAAA,OAAApK,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAED,SAAAmK,UAA4BxH,SAAiB,EAAEjE,GAAW;QAAA,IAAA0L,qBAAA;QAAA,OAAArK,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA+J,UAAA;UAAA,kBAAAA,UAAA,CAAA7J,IAAA,GAAA6J,UAAA,CAAAjQ,IAAA;YAAA;cAAA,OAAAiQ,UAAA,CAAAhJ,MAAA,WACjD,IAAI,CAACjD,UAAU,CAACyF,WAAW,CAAC;gBACjCb,GAAG,KAAAlE,MAAA,CAAKJ,GAAG,YAAS;gBACpBe,MAAM,EAAEyD,oBAAY,CAAC2B,IAAI;gBACzBzB,OAAO,MAAA1H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ0H,4BAAgB,EAAGV,SAAS,GAC5BW,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDK,IAAI,EAAE;kBACJlB,QAAQ,GAAA0H,qBAAA,GAAE,IAAI,CAAC/H,UAAU,CAACnF,MAAM,cAAAkN,qBAAA,uBAAtBA,qBAAA,CAAwB1H;gBACpC,CAAC;gBACDc,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAA2G,UAAA,CAAA/I,IAAA;UAAA;QAAA,GAAA6I,SAAA;MAAA,CACH;MAAA,SAbaG,aAAaA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAN,cAAA,CAAA7O,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAb+O,aAAa;IAAA;EAAA;IAAA9L,GAAA;IAAA3E,KAAA;MAAA,IAAA4Q,gBAAA,OAAA3K,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAe3B,SAAA0K,UAAA;QAAA,IAAAC,MAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAnI,QAAA,EAAAoI,KAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAApL,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA8K,UAAA;UAAA,kBAAAA,UAAA,CAAA5K,IAAA,GAAA4K,UAAA,CAAAhR,IAAA;YAAA;cAAAwQ,SAAA,GAAA7R,0BAAA,CAE0B,IAAI,CAACmF,iBAAiB;cAAAkN,UAAA,CAAA5K,IAAA;cAAAoK,SAAA,CAAAlR,CAAA;YAAA;cAAA,KAAAmR,KAAA,GAAAD,SAAA,CAAAjR,CAAA,IAAAC,IAAA;gBAAAwR,UAAA,CAAAhR,IAAA;gBAAA;cAAA;cAAnC0Q,SAAS,GAAAD,KAAA,CAAAhR,KAAA;cAAAuR,UAAA,CAAA5K,IAAA;cAEVuK,OAAO,GAAGD,SAAS,CAACO,OAAO,CAACC,wBAAY,EAAE,GAAG,CAAC,CAACD,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAClF;cAAAD,UAAA,CAAAhR,IAAA;cAAA,OACuB,IAAI,CAAC6B,KAAK,CAACsP,OAAO,CAAC;gBACxCvI,GAAG,KAAAlE,MAAA,CAAKiM,OAAO,SAAM;gBACrBtL,MAAM,EAAEyD,oBAAY,CAACsI,GAAG;gBACxBpI,OAAO,MAAA1H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ0H,4BAAgB,EAAG,IAAI,CAACpH,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACwB,GAAG,GACjD4E,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDC,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cARId,QAAQ,GAAAwI,UAAA,CAAAtH,IAAA;cAAAkH,KAAA,GAUOpI,QAAQ,EAAtBqI,UAAU,GAAAD,KAAA,CAAVC,UAAU;cAAA,MACbA,UAAU,KAAK,GAAG;gBAAAG,UAAA,CAAAhR,IAAA;gBAAA;cAAA;cACpBmD,eAAG,CAACoE,IAAI,wCAAA7C,MAAA,CAAwCgM,SAAS,GAAI;gBAC3DtL,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEwH;cACV,CAAC,CAAC;cACF0D,MAAM,GAAG,IAAI;cAAC,OAAAS,UAAA,CAAA/J,MAAA;YAAA;cAAA+J,UAAA,CAAAhR,IAAA;cAAA;YAAA;cAAAgR,UAAA,CAAA5K,IAAA;cAAA0K,GAAA,GAAAE,UAAA;cAIhB7N,eAAG,CAAC+B,IAAI,oCAAAR,MAAA,CAC6BgM,SAAS,mBAAAhM,MAAA,CAAgB,IAAAM,UAAA,CAAAzD,OAAA,EAAAuP,GAAoB,CAAC,GACjF;gBACE1L,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEwH;cACV,CACF,CAAC;cACD0D,MAAM,GAAG,MAAM;YAAC;cAAAS,UAAA,CAAAhR,IAAA;cAAA;YAAA;cAAAgR,UAAA,CAAAhR,IAAA;cAAA;YAAA;cAAAgR,UAAA,CAAA5K,IAAA;cAAA2K,GAAA,GAAAC,UAAA;cAAAR,SAAA,CAAA3R,CAAA,CAAAkS,GAAA;YAAA;cAAAC,UAAA,CAAA5K,IAAA;cAAAoK,SAAA,CAAA9Q,CAAA;cAAA,OAAAsR,UAAA,CAAAK,MAAA;YAAA;cAAA,OAAAL,UAAA,CAAA/J,MAAA,WAIbsJ,MAAM,KAAK,IAAI;YAAA;YAAA;cAAA,OAAAS,UAAA,CAAA9J,IAAA;UAAA;QAAA,GAAAoJ,SAAA;MAAA,CACvB;MAAA,SAtCagB,eAAeA,CAAA;QAAA,OAAAjB,gBAAA,CAAApP,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAfmQ,eAAe;IAAA;IAwC7B;AACF;AACA;EAFE;IAAAlN,GAAA;IAAA3E,KAAA,EAGA,SAAQ8R,kBAAkBA,CAAA,EAAY;MACpC,OAAO,IAAI,CAAC9K,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAAC3C,iBAAiB,CAAC0N,OAAO,CAAC,IAAI,CAACnK,eAAe,CAAC,KAAK,CAAC,CAAC;IACjG;;IAEA;AACF;AACA;AACA;EAHE;IAAAjD,GAAA;IAAA3E,KAAA,EAIA,SAAQgS,mBAAmBA,CAAA,EAAW;MACpC,OAAO/K,IAAI,CAACC,KAAK,CACfD,IAAI,CAACsH,MAAM,CAAC,CAAC,IAAI,IAAI,CAACxK,mBAAmB,GAAG,IAAI,CAACF,mBAAmB,GAAG,CAAC,CAAC,GACvE,IAAI,CAACA,mBACT,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAc,GAAA;IAAA3E,KAAA,EAIA,SAAQiS,gBAAgBA,CAAA,EAAG;MACzB,IAAM1G,aAAa,GAAG;QACpB5F,IAAI,EAAE/B,6BAAiB;QACvBgC,MAAM,EAAEoC,mBAAO,CAACkK;MAClB,CAAC;MAED,IAAI,IAAI,CAACJ,kBAAkB,CAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,IAAI,CAAC3B,aAAa,EAAE;UACvB,IAAI,CAAC1M,wBAAwB,GAAG,CAAC;UACjC,IAAM0O,iBAAiB,GAAG,IAAI,CAACH,mBAAmB,CAAC,CAAC;UAEpDtO,eAAG,CAACoE,IAAI,sDAAA7C,MAAA,CAC+CkN,iBAAiB,GACtE5G,aACF,CAAC;UAED,IAAI,CAACkC,kBAAkB,CAAC0E,iBAAiB,GAAGC,kCAAsB,CAAC;QACrE,CAAC,MAAM;UACL1O,eAAG,CAACoE,IAAI,CAAC,4CAA4C,EAAEyD,aAAa,CAAC;QACvE;MACF,CAAC,MAAM;QACL7H,eAAG,CAACoE,IAAI,CAAC,4DAA4D,EAAEyD,aAAa,CAAC;QACrF,IAAI,CAAC9H,wBAAwB,GAAG,CAAC;QACjC,IAAI,CAAC6J,kBAAkB,CAAC,CAAC;MAC3B;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAA3I,GAAA;IAAA3E,KAAA,EAIA,SAAQyN,kBAAkBA,CAAC4E,iBAAyB,EAAE;MAAA,IAAAC,MAAA;MACpD,IAAI,CAACnC,aAAa,GAAGjE,UAAU,kBAAAjG,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAC7B,SAAAoM,UAAA;QAAA,OAAArM,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA+L,UAAA;UAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAAjS,IAAA;YAAA;cAAA,OAAAiS,UAAA,CAAAhL,MAAA,WAAY8K,MAAI,CAACG,eAAe,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA/K,IAAA;UAAA;QAAA,GAAA8K,SAAA;MAAA,KAClCF,iBAAiB,GAAG5D,+BACtB,CAAC;MACD/K,eAAG,CAACA,GAAG,6BAAAuB,MAAA,CAA6BoN,iBAAiB,gBAAa;QAChE1M,IAAI,EAAE/B,6BAAiB;QACvBgC,MAAM,EAAE,IAAI,CAAC6H,kBAAkB,CAAC5M;MAClC,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA8D,GAAA;IAAA3E,KAAA;MAAA,IAAA0S,gBAAA,OAAAzM,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAAwM,UAAA;QAAA,IAAAC,MAAA;QAAA,IAAArH,aAAA;QAAA,OAAArF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAoM,UAAA;UAAA,kBAAAA,UAAA,CAAAlM,IAAA,GAAAkM,UAAA,CAAAtS,IAAA;YAAA;cACQgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC8K;cAClB,CAAC;cAEDpP,eAAG,CAACoE,IAAI,CAACC,+BAAoB,EAAEwD,aAAa,CAAC;cAACsH,UAAA,CAAAtS,IAAA;cAAA,OAExC,IAAI,CAAC+B,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAA4M,UAAA;gBAAA,IAAAC,mBAAA,EAAAxH,KAAA,EAAAyH,QAAA;gBAAA,OAAA/M,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAyM,UAAA;kBAAA,kBAAAA,UAAA,CAAAvM,IAAA,GAAAuM,UAAA,CAAA3S,IAAA;oBAAA;sBAAA,KACxBqS,MAAI,CAACd,kBAAkB,CAAC,CAAC;wBAAAoB,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBAAA2S,UAAA,CAAA3S,IAAA;sBAAA,OACOqS,MAAI,CAACf,eAAe,CAAC,CAAC;oBAAA;sBAAlDmB,mBAAmB,GAAAE,UAAA,CAAAjJ,IAAA;sBAAA,MACrB,IAAAkJ,KAAA,CAAArR,OAAA,EAAY8Q,MAAI,CAAC3O,WAAW,CAACmP,cAAc,CAAC,CAAC,CAAC,CAAC1T,MAAM,KAAK,CAAC,IAAIsT,mBAAmB;wBAAAE,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBACpFmD,eAAG,CAACoE,IAAI,oCAAoCyD,aAAa,CAAC;sBAAC2H,UAAA,CAAA3S,IAAA;sBAAA,OACrDqS,MAAI,CAACS,UAAU,CAAC,CAAC;oBAAA;sBAAA,KAEnBT,MAAI,CAACrO,UAAU,CAACuF,eAAe,CAAC,CAAC;wBAAAoJ,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBACnCmD,eAAG,CAACoE,IAAI,CACN,iEAAiE,EACjEyD,aACF,CAAC;sBAAC2H,UAAA,CAAA3S,IAAA;sBAAA,OAEIqS,MAAI,CAACrO,UAAU,CAACqH,0BAA0B,CAAC;wBAC/CC,IAAI,EAAE,IAAI;wBACVC,MAAM,EAAE;sBACV,CAAC,CAAC;oBAAA;sBAEFpI,eAAG,CAACA,GAAG,CAAC,6DAA6D,EAAE6H,aAAa,CAAC;oBAAC;sBAAA2H,UAAA,CAAA3S,IAAA;sBAAA,OAGpEqS,MAAI,CAAC7G,8BAA8B,CAACqB,yBAAa,CAAC;oBAAA;sBAAhE5B,KAAK,GAAA0H,UAAA,CAAAjJ,IAAA;sBAAA,MAEP2I,MAAI,CAAClF,iBAAiB,IAAIlC,KAAK,IAAIoH,MAAI,CAAC5L,kBAAkB,CAAC,CAAC;wBAAAkM,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBAAA,OAAA2S,UAAA,CAAA1L,MAAA;oBAAA;sBAAA0L,UAAA,CAAA3S,IAAA;sBAAA,OAIzCqS,MAAI,CAACtG,2BAA2B,CAACc,yBAAa,CAAC;oBAAA;sBAAhE6F,QAAQ,GAAAC,UAAA,CAAAjJ,IAAA;sBAAA,KAEVgJ,QAAQ;wBAAAC,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBACVqS,MAAI,CAACtF,kBAAkB,CAAC,CAAC;sBAAC,OAAA4F,UAAA,CAAA1L,MAAA;oBAAA;sBAAA,IAKvBoL,MAAI,CAAC5L,kBAAkB,CAAC,CAAC;wBAAAkM,UAAA,CAAA3S,IAAA;wBAAA;sBAAA;sBAAA2S,UAAA,CAAA3S,IAAA;sBAAA,OACtBqS,MAAI,CAACvG,mBAAmB,CAACd,aAAa,CAAC3F,MAAM,CAAC;oBAAA;sBAAAsN,UAAA,CAAA3S,IAAA;sBAAA;oBAAA;sBAEpDqS,MAAI,CAACzC,aAAa,GAAGpJ,SAAS;sBAC9B6L,MAAI,CAACX,gBAAgB,CAAC,CAAC;oBAAC;sBAAAiB,UAAA,CAAA3S,IAAA;sBAAA;oBAAA;sBAG1BmD,eAAG,CAACoE,IAAI,CACN,mFAAmF,EACnFyD,aACF,CAAC;sBACDqH,MAAI,CAACzC,aAAa,GAAGpJ,SAAS;sBAC9B6L,MAAI,CAACX,gBAAgB,CAAC,CAAC;oBAAC;oBAAA;sBAAA,OAAAiB,UAAA,CAAAzL,IAAA;kBAAA;gBAAA,GAAAsL,SAAA;cAAA,CAG7B,GAAC;YAAA;YAAA;cAAA,OAAAF,UAAA,CAAApL,IAAA;UAAA;QAAA,GAAAkL,SAAA;MAAA,CACH;MAAA,SA3DaF,eAAeA,CAAA;QAAA,OAAAC,gBAAA,CAAAlR,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAf+Q,eAAe;IAAA;IA6D7B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAA9N,GAAA;IAAA3E,KAAA,EAMA,SAAQsT,iBAAiBA,CAAC9K,UAAuB,EAAE;MACjD,IAAI,IAAI,CAACnE,iBAAiB,CAAC0N,OAAO,CAAC,IAAI,CAACnK,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D,IAAI,CAAC/D,mBAAmB,GAAG2E,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE3E,mBAAmB,GACtD2E,UAAU,CAAC3E,mBAAmB,GAC9BC,yCAA6B;QACjC,IAAI,CAACC,mBAAmB,GAAGyE,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEzE,mBAAmB,GACtDyE,UAAU,CAACzE,mBAAmB,GAC9BC,yCAA6B;MACnC;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAW,GAAA;IAAA3E,KAAA,EAIA,SAAOuT,aAAaA,CAAA,EAAgB;MAClC,OAAO,IAAI,CAAC/K,UAAU;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA7D,GAAA;IAAA3E,KAAA,EAMA,SAAOgH,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAAC1D,kBAAkB,KAAKC,0BAAkB,CAACiQ,MAAM;IAC9D;EAAC;IAAA7O,GAAA;IAAA3E,KAAA,EAED,SAAOyT,SAASA,CAAA,EAAuB;MACrC,OAAO,IAAI,CAACnQ,kBAAkB;IAChC;EAAC;IAAAqB,GAAA;IAAA3E,KAAA,EAED,SAAOoK,SAASA,CAACpK,KAAyB,EAAE;MAC1C,IAAI,CAACsD,kBAAkB,GAAGtD,KAAK;IACjC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA2E,GAAA;IAAA3E,KAAA;MAAA,IAAA0T,oBAAA,OAAAzN,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAKA,SAAAwN,UAAkCtI,MAAc;QAAA,IAAAE,aAAA,EAAAC,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAmN,UAAA;UAAA,kBAAAA,UAAA,CAAAjN,IAAA,GAAAiN,UAAA,CAAArT,IAAA;YAAA;cACxCgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC6L;cAClB,CAAC;cAEDnQ,eAAG,CAACoE,IAAI,IAAA7C,MAAA,CAAI8C,+BAAoB,iBAAA9C,MAAA,CAAcoG,MAAM,GAAIE,aAAa,CAAC;;cAEtE;AACJ;AACA;AACA;cACI,IAAI,CAAC+B,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAAC7J,wBAAwB,GAAG,CAAC;cAACmQ,UAAA,CAAArT,IAAA;cAAA,OACd,IAAI,CAACwL,8BAA8B,CAACV,MAAM,EAAE,IAAI,CAAChH,iBAAiB,CAAC;YAAA;cAAjFmH,KAAK,GAAAoI,UAAA,CAAA3J,IAAA;cAAA,MAEP,CAACuB,KAAK,IAAI,CAAC,IAAI,CAACxE,kBAAkB,CAAC,CAAC;gBAAA4M,UAAA,CAAArT,IAAA;gBAAA;cAAA;cAAAqT,UAAA,CAAArT,IAAA;cAAA,OAChC,IAAI,CAAC+G,kBAAkB,CAAC,CAAC;YAAA;cAGjC5D,eAAG,CAACA,GAAG,4CAAAuB,MAAA,CACsCoG,MAAM,0BAAApG,MAAA,CAAuB,IAAI,CAAC+B,kBAAkB,CAAC,CAAC,eAAA/B,MAAA,CAAYuG,KAAK,GAClHD,aACF,CAAC;YAAC;YAAA;cAAA,OAAAqI,UAAA,CAAAnM,IAAA;UAAA;QAAA,GAAAkM,SAAA;MAAA,CACH;MAAA,SAxBatH,mBAAmBA,CAAAyH,GAAA;QAAA,OAAAJ,oBAAA,CAAAlS,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnB2K,mBAAmB;IAAA;IA0BjC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA1H,GAAA;IAAA3E,KAAA;MAAA,IAAA+T,4BAAA,OAAA9N,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAKA,SAAA6N,UAAyCC,KAAc;QAAA,IAAAC,MAAA;QAAA,OAAAhO,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA0N,UAAA;UAAA,kBAAAA,UAAA,CAAAxN,IAAA,GAAAwN,UAAA,CAAA5T,IAAA;YAAA;cACrDmD,eAAG,CAACoE,IAAI,CAACC,+BAAoB,EAAE;gBAC7BnC,MAAM,EAAEoC,mBAAO,CAACoM,6BAA6B;gBAC7CzO,IAAI,EAAE/B;cACR,CAAC,CAAC;cAACuQ,UAAA,CAAA5T,IAAA;cAAA,OACG,IAAI,CAAC+B,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAkO,UAAA;gBAAA,IAAA7I,KAAA;gBAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA6N,UAAA;kBAAA,kBAAAA,UAAA,CAAA3N,IAAA,GAAA2N,UAAA,CAAA/T,IAAA;oBAAA;sBAAA,KAExB0T,KAAK;wBAAAK,UAAA,CAAA/T,IAAA;wBAAA;sBAAA;sBACPmD,eAAG,CAACA,GAAG,CAAC,kEAAkE,EAAE;wBAC1EiC,IAAI,EAAE/B,6BAAiB;wBACvBgC,MAAM,EAAEoC,mBAAO,CAACoM;sBAClB,CAAC,CAAC;sBACFF,MAAI,CAACvG,mBAAmB,CAAC,CAAC;sBAAC,KACvBuG,MAAI,CAAClN,kBAAkB,CAAC,CAAC;wBAAAsN,UAAA,CAAA/T,IAAA;wBAAA;sBAAA;sBAAA+T,UAAA,CAAA/T,IAAA;sBAAA,OAErB2T,MAAI,CAACb,UAAU,CAAC,CAAC;oBAAA;sBAAA,KAQrBa,MAAI,CAACtM,eAAe;wBAAA0M,UAAA,CAAA/T,IAAA;wBAAA;sBAAA;sBAAA+T,UAAA,CAAA/T,IAAA;sBAAA,OAOF2T,MAAI,CAAC5H,2BAA2B,CAClDtE,mBAAO,CAACoM,6BACV,CAAC;oBAAA;sBAFK5I,KAAK,GAAA8I,UAAA,CAAArK,IAAA;sBAAA,MAIP,CAACuB,KAAK,IAAI,CAAC0I,MAAI,CAAClN,kBAAkB,CAAC,CAAC;wBAAAsN,UAAA,CAAA/T,IAAA;wBAAA;sBAAA;sBAAA+T,UAAA,CAAA/T,IAAA;sBAAA,OAChC2T,MAAI,CAAC7H,mBAAmB,CAACrE,mBAAO,CAACoM,6BAA6B,CAAC;oBAAA;sBAGzEH,KAAK,GAAG,KAAK;oBAAC;oBAAA;sBAAA,OAAAK,UAAA,CAAA7M,IAAA;kBAAA;gBAAA,GAAA4M,SAAA;cAAA,CAEjB,GAAC;YAAA;cAAA,OAAAF,UAAA,CAAA3M,MAAA,WAEKyM,KAAK;YAAA;YAAA;cAAA,OAAAE,UAAA,CAAA1M,IAAA;UAAA;QAAA,GAAAuM,SAAA;MAAA,CACb;MAAA,SA3CYO,2BAA2BA,CAAAC,IAAA;QAAA,OAAAT,4BAAA,CAAAvS,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3B6S,2BAA2B;IAAA;IA6CxC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA5P,GAAA;IAAA3E,KAAA,EAKA,SAAQyU,2BAA2BA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACpC;QAAA,IAAAC,KAAA,OAAA1O,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAO,SAAAyO,UAAOC,WAAwB,EAAExJ,MAAc;UAAA,IAAAyJ,UAAA,EAAAC,OAAA,EAAAC,UAAA;UAAA,OAAA9O,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAwO,UAAA;YAAA,kBAAAA,UAAA,CAAAtO,IAAA,GAAAsO,UAAA,CAAA1U,IAAA;cAAA;gBAC9CuU,UAAU,GAAG;kBAACnP,IAAI,EAAE/B,6BAAiB;kBAAEgC,MAAM,EAAEyF;gBAAM,CAAC;gBAAA,IACvDqJ,MAAI,CAACQ,UAAU,CAAC,CAAC;kBAAAD,UAAA,CAAA1U,IAAA;kBAAA;gBAAA;gBACpBmD,eAAG,CAACoE,IAAI,CAAC,uCAAuC,EAAEgN,UAAU,CAAC;gBACvDC,OAAO,GAAGL,MAAI,CAACS,iBAAiB,CAACN,WAAW,CAAC;gBAAA,KAE/CE,OAAO;kBAAAE,UAAA,CAAA1U,IAAA;kBAAA;gBAAA;gBACTmU,MAAI,CAACU,WAAW,CAAC,IAAI,CAAC;gBAACH,UAAA,CAAA1U,IAAA;gBAAA,OACjBmU,MAAI,CAACrB,UAAU,CAAC,CAAC;cAAA;gBAAA4B,UAAA,CAAA1U,IAAA;gBAAA,OACEmU,MAAI,CAACpI,2BAA2B,CAACjB,MAAM,CAAC;cAAA;gBAA3D2J,UAAU,GAAAC,UAAA,CAAAhL,IAAA;gBAChByK,MAAI,CAACU,WAAW,CAAC,KAAK,CAAC;gBACvB,IAAIV,MAAI,CAAC1N,kBAAkB,CAAC,CAAC,EAAE;kBAC7BtD,eAAG,CAACoE,IAAI,CAAC,qCAAqC,EAAEgN,UAAU,CAAC;gBAC7D;gBAAC,OAAAG,UAAA,CAAAzN,MAAA,WAEMwN,UAAU;cAAA;gBAEnBN,MAAI,CAACnS,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;gBAAC0K,UAAA,CAAA1U,IAAA;gBAAA;cAAA;gBAE3CmU,MAAI,CAACnS,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;cAAC;gBAAA,OAAA0K,UAAA,CAAAzN,MAAA,WAGtC,KAAK;cAAA;cAAA;gBAAA,OAAAyN,UAAA,CAAAxN,IAAA;YAAA;UAAA,GAAAmN,SAAA;QAAA,CACb;QAAA,iBAAAS,IAAA,EAAAC,IAAA;UAAA,OAAAX,KAAA,CAAAnT,KAAA,OAAAE,SAAA;QAAA;MAAA;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAiD,GAAA;IAAA3E,KAAA;MAAA,IAAAuV,oBAAA,OAAAtP,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAAqP,UAAA;QAAA,IAAAjK,aAAA,EAAAC,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAgP,UAAA;UAAA,kBAAAA,UAAA,CAAA9O,IAAA,GAAA8O,UAAA,CAAAlV,IAAA;YAAA;cACQgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC0N;cAClB,CAAC;cAEDhS,eAAG,CAACoE,IAAI,CAACC,+BAAoB,EAAEwD,aAAa,CAAC;cAACkK,UAAA,CAAAlV,IAAA;cAAA,OAEpC,IAAI,CAACmH,cAAc,CAAC,CAAC;YAAA;cAAA,KAAA+N,UAAA,CAAAxL,IAAA;gBAAAwL,UAAA,CAAAlV,IAAA;gBAAA;cAAA;cAC7BmD,eAAG,CAACoE,IAAI,CAAC,qDAAqD,EAAEyD,aAAa,CAAC;cAAC,OAAAkK,UAAA,CAAAjO,MAAA;YAAA;cAAA,MAK7E,IAAI,CAACnD,iBAAiB,CAAC3E,MAAM,GAAG,CAAC;gBAAA+V,UAAA,CAAAlV,IAAA;gBAAA;cAAA;cAAAkV,UAAA,CAAAlV,IAAA;cAAA,OACf,IAAI,CAACwL,8BAA8B,CACrD4J,6BAAiB,EACjB,IAAI,CAACtR,iBACP,CAAC;YAAA;cAHKmH,KAAK,GAAAiK,UAAA,CAAAxL,IAAA;cAAA,MAKP,CAAC,IAAI,CAACjD,kBAAkB,CAAC,CAAC,IAAI,CAACwE,KAAK;gBAAAiK,UAAA,CAAAlV,IAAA;gBAAA;cAAA;cAAAkV,UAAA,CAAAlV,IAAA;cAAA,OAChC,IAAI,CAAC+G,kBAAkB,CAAC,CAAC;YAAA;cAGjC5D,eAAG,CAACA,GAAG,sDAAAuB,MAAA,CACgD,IAAI,CAAC+B,kBAAkB,CAAC,CAAC,eAAA/B,MAAA,CAAYuG,KAAK,GAC/FD,aACF,CAAC;cAACkK,UAAA,CAAAlV,IAAA;cAAA;YAAA;cAEFmD,eAAG,CAAC+B,IAAI,CAAC,+DAA+D,EAAE8F,aAAa,CAAC;YAAC;YAAA;cAAA,OAAAkK,UAAA,CAAAhO,IAAA;UAAA;QAAA,GAAA+N,SAAA;MAAA,CAE5F;MAAA,SA/BYI,mBAAmBA,CAAA;QAAA,OAAAL,oBAAA,CAAA/T,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBkU,mBAAmB;IAAA;IAiChC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAAjR,GAAA;IAAA3E,KAAA;MAAA,IAAA6V,+BAAA,OAAA5P,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAQA,SAAA2P,UACEzK,MAAc;QAAA,IAAA0K,MAAA;QAAA,IAAAC,OAAA;UAAAzK,aAAA;UAAAC,KAAA;UAAAyK,qBAAA;UAAAC,UAAA;UAAAC,MAAA;UAAAC,KAAA;UAAAC,IAAA;UAAAC,OAAA,GAAA5U,SAAA;UAAA6U,GAAA;QAAA,OAAArQ,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA+P,UAAA;UAAA,kBAAAA,UAAA,CAAA7P,IAAA,GAAA6P,UAAA,CAAAjW,IAAA;YAAA;cACdyV,OAAiB,GAAAM,OAAA,CAAA5W,MAAA,QAAA4W,OAAA,QAAAvP,SAAA,GAAAuP,OAAA,MAAG,IAAI,CAACjS,iBAAiB;cAEpCkH,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAE6Q;cACV,CAAC;cAEGjL,KAAK,GAAG,KAAK;cACjB,IAAI,CAACQ,UAAU,GAAGjF,SAAS;cAAC,KAGxB,IAAI,CAACqI,mBAAmB;gBAAAoH,UAAA,CAAAjW,IAAA;gBAAA;cAAA;cAAA,OAAAiW,UAAA,CAAAhP,MAAA,WACnBgE,KAAK;YAAA;cAAA,KAGV,IAAI,CAACxE,kBAAkB,CAAC,CAAC;gBAAAwP,UAAA,CAAAjW,IAAA;gBAAA;cAAA;cAC3BmD,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CACFoG,MAAM,2CAAApG,MAAA,CAAwC,IAAI,CAAC2C,eAAe,GACtE2D,aACF,CAAC;cAAC,OAAAiL,UAAA,CAAAhP,MAAA,WAEKgE,KAAK;YAAA;cAAA0K,UAAA,GAAAhX,0BAAA,CAEI8W,OAAO;cAAAQ,UAAA,CAAA7P,IAAA;cAAAyP,KAAA,gBAAAlQ,YAAA,CAAApE,OAAA,CAAAqE,IAAA,UAAAiQ,MAAA;gBAAA,IAAAvR,GAAA,EAAAyK,UAAA,EAAAoH,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,cAAA,EAAAC,sBAAA,EAAAC,gBAAA,EAAAC,IAAA,EAAAjN,IAAA,EAAAkN,qBAAA,EAAAjC,UAAA,EAAAkC,gBAAA,EAAAC,GAAA;gBAAA,OAAAjR,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA2Q,UAAA;kBAAA,kBAAAA,UAAA,CAAAzQ,IAAA,GAAAyQ,UAAA,CAAA7W,IAAA;oBAAA;sBAAdsE,GAAG,GAAAsR,MAAA,CAAAnW,KAAA;sBACNsP,UAAU,GAAGyG,MAAI,CAACnR,aAAa,CAACC,GAAG,CAAC;sBAAAuS,UAAA,CAAAzQ,IAAA;sBAGxC6E,KAAK,GAAG,KAAK;sBACbuK,MAAI,CAACzS,kBAAkB,GAAGC,0BAAkB,CAAC8G,QAAQ;sBACrD0L,MAAI,CAACxT,WAAW,CAAC+H,mBAAW,CAAC+M,UAAU,CAAC;sBACxC3T,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CAAKoG,MAAM,iCAAApG,MAAA,CAA8BJ,GAAG,GAAI0G,aAAa,CAAC;sBAAC,KAEnEwK,MAAI,CAACxR,UAAU,CAACuF,eAAe,CAAC,CAAC;wBAAAsN,UAAA,CAAA7W,IAAA;wBAAA;sBAAA;sBAC7BwW,gBAAgB,GAAGlS,GAAG,CAACyS,QAAQ,CAAC,GAAG,CAAC,GAAGzS,GAAG,CAAClE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGkE,GAAG;sBAEnEnB,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CACFoG,MAAM,uDAAApG,MAAA,CAAoDqK,UAAU,gBAAArK,MAAA,CAAa8R,gBAAgB,GACrGxL,aACF,CAAC;;sBAED;sBAAA6L,UAAA,CAAA7W,IAAA;sBAAA,OAC8BwV,MAAI,CAACxR,UAAU,CAACgT,qBAAqB,CAACR,gBAAgB,CAAC;oBAAA;sBAArFd,qBAAqB,GAAAmB,UAAA,CAAAnN,IAAA;sBACrBgM,qBAAqB,GAAGA,qBAAqB,MAAAhR,MAAA,CAAMgR,qBAAqB,SAAMlP,SAAS;sBAEvFrD,eAAG,CAACA,GAAG,KAAAuB,MAAA,CACDoG,MAAM,mDAAApG,MAAA,CAAgDqK,UAAU,+BAAArK,MAAA,CAA4BgR,qBAAqB,GACrH1K,aACF,CAAC;oBAAC;sBAAA6L,UAAA,CAAA7W,IAAA;sBAAA,OAIewV,MAAI,CAAC9K,gBAAgB,CAACpG,GAAG,CAAC;oBAAA;sBAAvCmS,IAAI,GAAAI,UAAA,CAAAnN,IAAA;sBACV8L,MAAI,CAAClQ,kBAAkB,CAAC,CAAC;sBACzBkQ,MAAI,CAACvN,UAAU,GAAGwO,IAAI,CAACjN,IAAmB;sBAC1CgM,MAAI,CAACzS,kBAAkB,GAAGC,0BAAkB,CAACiQ,MAAM;sBACnDuC,MAAI,CAAClO,kBAAkB,CAACoO,qBAAqB,IAAIpR,GAAG,CAAC;sBACrDkR,MAAI,CAACxT,WAAW,CAAC+H,mBAAW,CAACkN,UAAU,EAAER,IAAI,CAACjN,IAAmB,CAAC;sBAClErG,eAAG,CAACA,GAAG,0CAAAuB,MAAA,EAAAyR,qBAAA,GACoCX,MAAI,CAACvN,UAAU,CAACnF,MAAM,cAAAqT,qBAAA,uBAAtBA,qBAAA,CAAwB7N,QAAQ,eAAA5D,MAAA,CAAY8Q,MAAI,CAAC5S,MAAM,2BAAA8B,MAAA,EAAA0R,aAAA,GAAwBK,IAAI,CAACzN,OAAO,cAAAoN,aAAA,uBAAZA,aAAA,CAAcc,UAAU,GAChJlM,aACF,CAAC;sBACDwK,MAAI,CAACzC,iBAAiB,CAACyC,MAAI,CAACvN,UAAU,CAAC;sBACvCuN,MAAI,CAAC5R,aAAa,CAACgE,aAAa,CAAC4N,MAAI,CAACvN,UAAU,CAAC;sBACjDuN,MAAI,CAAC5R,aAAa,CAACuT,wBAAwB,CACzCC,mBAAY,CAACC,YAAY,EACzBC,iBAAU,CAACC,QAAQ,EACnBC,kBAAW,CAACC,UAAU,EACtB3M,MAAM,EACNiE,UAAU,GAAAsH,qBAAA,IAAAC,cAAA,GACVG,IAAI,CAACzN,OAAO,cAAAsN,cAAA,uBAAZA,cAAA,CAAcY,UAAU,cAAAb,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9B7P,SAAS,EACTA,SACF,CAAC;sBACDgP,MAAI,CAAChI,mBAAmB,EAAA+I,sBAAA,GACtBf,MAAI,CAACvN,UAAU,CAACnF,MAAM,cAAAyT,sBAAA,uBAAtBA,sBAAA,CAAwB3N,GAAG,EAC3B4M,MAAI,CAACvN,UAAU,CAACwF,iBAAiB,EACjCsB,UACF,CAAC;sBACDyG,MAAI,CAAC9D,gBAAgB,CAAC,CAAC;sBAAC,OAAAmF,UAAA,CAAA5P,MAAA;oBAAA;sBAAA4P,UAAA,CAAAzQ,IAAA;sBAAAwQ,GAAA,GAAAC,UAAA;sBAGlBrN,IAAI,GAAAoN,GAAA,EACV;sBAAAC,UAAA,CAAA7W,IAAA;sBAAA,OAC6C,IAAA0X,gCAAwB,EACnElO,IAAI,EACJ,UAACkG,WAAW,EAAEiI,YAAY,EAAK;wBAAA,IAAAC,qBAAA,EAAAC,aAAA;wBAC7B,IAAIF,YAAY,EAAE;0BAChBnC,MAAI,CAACxT,WAAW,CAAC+H,mBAAW,CAAC4F,KAAK,EAAEnJ,SAAS,EAAEkJ,WAAW,CAAC;wBAC7D,CAAC,MAAM;0BACL8F,MAAI,CAACxT,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;wBAC5C;wBACAwL,MAAI,CAAC5R,aAAa,CAACuT,wBAAwB,CACzCC,mBAAY,CAACU,kBAAkB,EAC/BR,iBAAU,CAACC,QAAQ,EACnBC,kBAAW,CAACC,UAAU,EACtB3M,MAAM,EACNiE,UAAU,GAAA6I,qBAAA,IAAAC,aAAA,GACVrO,IAAI,CAACR,OAAO,cAAA6O,aAAA,uBAAZA,aAAA,CAAcX,UAAU,cAAAU,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9BpR,SAAS,EACTkJ,WACF,CAAC;sBACH,CAAC,EACD;wBAACrK,MAAM,EAAEyF,MAAM;wBAAE1F,IAAI,EAAE/B;sBAAiB,CAAC,EACzC,UAACoI,UAAkB,EAAEsM,WAAmB;wBAAA,OAAKvC,MAAI,CAAC9H,cAAc,CAACjC,UAAU,EAAEsM,WAAW,CAAC;sBAAA,GACzFvC,MAAI,CAACtB,2BAA2B,CAAC,CAAC,EAClCuB,OAAO,CAACtW,MACV,CAAC;oBAAA;sBAAAuX,qBAAA,GAAAG,UAAA,CAAAnN,IAAA;sBAvBM+K,UAAU,GAAAiC,qBAAA,CAAVjC,UAAU;sBAAEkC,gBAAgB,GAAAD,qBAAA,CAAhBC,gBAAgB;sBAyBnC1L,KAAK,GAAGwJ,UAAU;sBAAC,MAEfe,MAAI,CAACzS,kBAAkB,KAAKC,0BAAkB,CAACiQ,MAAM;wBAAA4D,UAAA,CAAA7W,IAAA;wBAAA;sBAAA;sBACvDmD,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CACFoG,MAAM,yDAAApG,MAAA,CAAsD8Q,MAAI,CAACnO,eAAe,GACpF2D,aACF,CAAC;sBAAC,OAAA6L,UAAA,CAAA5P,MAAA;oBAAA;sBAAA,MASA0P,gBAAgB,IAAInB,MAAI,CAACxR,UAAU,CAACuF,eAAe,CAAC,CAAC;wBAAAsN,UAAA,CAAA7W,IAAA;wBAAA;sBAAA;sBACvD0V,qBAAqB,GAAGlP,SAAS;sBAEjCrD,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CACFoG,MAAM,+EAAApG,MAAA,CAA4EqK,UAAU,GAChG/D,aACF,CAAC;;sBAED;sBAAA6L,UAAA,CAAA7W,IAAA;sBAAA,OACMwV,MAAI,CAACxR,UAAU,CAACqH,0BAA0B,CAAC;wBAC/CC,IAAI,EAAE,IAAI;wBACVC,MAAM,EAAE;sBACV,CAAC,CAAC;oBAAA;sBAEFpI,eAAG,CAACA,GAAG,KAAAuB,MAAA,CACDoG,MAAM,sFAAApG,MAAA,CAAmFqK,UAAU,GACvG/D,aACF,CAAC;oBAAC;sBAAA,KAGAC,KAAK;wBAAA4L,UAAA,CAAA7W,IAAA;wBAAA;sBAAA;sBACPwV,MAAI,CAAC3L,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;sBAC3C;sBAAA+M,UAAA,CAAA7W,IAAA;sBAAA,OACM,IAAA4J,kBAAU,EAAC,CAAC;oBAAA;sBAAA,OAAAiN,UAAA,CAAA5P,MAAA;oBAAA;oBAAA;sBAAA,OAAA4P,UAAA,CAAA3P,IAAA;kBAAA;gBAAA,GAAA2O,KAAA;cAAA;cAAAF,UAAA,CAAArW,CAAA;YAAA;cAAA,KAAAsW,MAAA,GAAAD,UAAA,CAAApW,CAAA,IAAAC,IAAA;gBAAAyW,UAAA,CAAAjW,IAAA;gBAAA;cAAA;cAAA,OAAAiW,UAAA,CAAA+B,aAAA,CAAAnC,KAAA;YAAA;cAAAC,IAAA,GAAAG,UAAA,CAAAgC,EAAA;cAAA,MAAAnC,IAAA;gBAAAG,UAAA,CAAAjW,IAAA;gBAAA;cAAA;cAAA,OAAAiW,UAAA,CAAAhP,MAAA;YAAA;cAAAgP,UAAA,CAAAjW,IAAA;cAAA;YAAA;cAAAiW,UAAA,CAAAjW,IAAA;cAAA;YAAA;cAAAiW,UAAA,CAAA7P,IAAA;cAAA4P,GAAA,GAAAC,UAAA;cAAAN,UAAA,CAAA9W,CAAA,CAAAmX,GAAA;YAAA;cAAAC,UAAA,CAAA7P,IAAA;cAAAuP,UAAA,CAAAjW,CAAA;cAAA,OAAAuW,UAAA,CAAA5E,MAAA;YAAA;cAAA,OAAA4E,UAAA,CAAAhP,MAAA,WAOjBgE,KAAK;YAAA;YAAA;cAAA,OAAAgL,UAAA,CAAA/O,IAAA;UAAA;QAAA,GAAAqO,SAAA;MAAA,CACb;MAAA,SA5Ja/J,8BAA8BA,CAAA0M,IAAA;QAAA,OAAA5C,+BAAA,CAAArU,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA9BqK,8BAA8B;IAAA;IA8J5C;AACF;AACA;AACA;IAHE;EAAA;IAAApH,GAAA;IAAA3E,KAAA;MAAA,IAAA0Y,oBAAA,OAAAzS,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAIA,SAAAwS,UAAkC9T,GAAW,EAAEqI,QAAgB,EAAEoC,UAAuB;QAAA,IAAAsJ,MAAA;QAAA,IAAAC,qBAAA;QAAA,OAAA3S,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAqS,UAAA;UAAA,kBAAAA,UAAA,CAAAnS,IAAA,GAAAmS,UAAA,CAAAvY,IAAA;YAAA;cACtF,IAAI,CAACoN,mBAAmB,CAAC,CAAC;cACpBkL,qBAAqB,GAAG,IAAI,CAAChW,QAAQ,GAAG,CAAC,GAAG,CAAC;cAAAiW,UAAA,CAAAvY,IAAA;cAAA,OAE7C,IAAI,CAAC+B,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAA4S,UAAA;gBAAA,IAAAC,IAAA,EAAAC,OAAA;gBAAA,OAAA/S,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAyS,UAAA;kBAAA,kBAAAA,UAAA,CAAAvS,IAAA,GAAAuS,UAAA,CAAA3Y,IAAA;oBAAA;sBAC5B,IAAIqY,MAAI,CAAC5R,kBAAkB,CAAC,CAAC,EAAE;wBAC7B,IAAI,CAAC4R,MAAI,CAACO,SAAS,EAAE;0BACbH,IAAI,GAAG,IAAII,IAAI,CAAC,CAACC,qBAAY,CAAC,EAAE;4BAACC,IAAI,EAAE;0BAAwB,CAAC,CAAC;0BACjEL,OAAO,GAAGM,GAAG,CAACC,eAAe,CAACR,IAAI,CAAC;0BACzCJ,MAAI,CAACO,SAAS,GAAG,IAAIM,MAAM,CAACR,OAAO,CAAC;0BACpCM,GAAG,CAACG,eAAe,CAACT,OAAO,CAAC;0BAE5BL,MAAI,CAACO,SAAS,CAACQ,WAAW,CAAC;4BACzBL,IAAI,EAAEM,yBAAiB,CAACC,eAAe;4BACvC3M,QAAQ,EAARA,QAAQ;4BACR4M,mBAAmB,EAAEjB;0BACvB,CAAC,CAAC;0BAEFD,MAAI,CAACO,SAAS,CAACY,SAAS;4BAAA,IAAAC,MAAA,OAAA/T,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAG,SAAA8T,UAAOC,KAAmB;8BAAA,IAAApF,UAAA,EAAAqF,gBAAA,EAAAC,GAAA,EAAAC,YAAA,EAAAC,iBAAA,EAAA9U,KAAA,EAAA+U,MAAA,EAAAC,sBAAA,EAAAhP,KAAA,EAAAiP,GAAA;8BAAA,OAAAvU,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAiU,UAAA;gCAAA,kBAAAA,UAAA,CAAA/T,IAAA,GAAA+T,UAAA,CAAAna,IAAA;kCAAA;oCAC7CuU,UAAU,GAAG;sCACjBnP,IAAI,EAAE/B,6BAAiB;sCACvBgC,MAAM,EAAEgH;oCACV,CAAC;oCAAA,MACGsN,KAAK,CAACS,IAAI,CAACrB,IAAI,KAAKM,yBAAiB,CAACgB,cAAc;sCAAAF,UAAA,CAAAna,IAAA;sCAAA;oCAAA;oCAAAma,UAAA,CAAA/T,IAAA;oCAAA+T,UAAA,CAAAna,IAAA;oCAAA,OAElCqY,MAAI,CAACnI,aAAa,CAAC/K,MAAM,CAACkT,MAAI,CAACxW,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACwB,GAAG,CAAC,EAAEA,GAAG,CAAC;kCAAA;oCAA3EuV,GAAG,GAAAM,UAAA,CAAAzQ,IAAA;oCAET,CAAAkQ,gBAAA,GAAAvB,MAAI,CAACO,SAAS,cAAAgB,gBAAA,uBAAdA,gBAAA,CAAgBR,WAAW,CAAC;sCAC1BL,IAAI,EAAEM,yBAAiB,CAACiB,gBAAgB;sCACxCzJ,UAAU,EAAEgJ,GAAG,CAAChJ;oCAClB,CAAC,CAAC;oCAACsJ,UAAA,CAAAna,IAAA;oCAAA;kCAAA;oCAAAma,UAAA,CAAA/T,IAAA;oCAAA8T,GAAA,GAAAC,UAAA;oCAEGlV,KAAK,GAAG;sCACZ+D,OAAO,EAAE;wCACPkO,UAAU,GAAA4C,YAAA,GAAEI,GAAA,CAAIlR,OAAO,cAAA8Q,YAAA,uBAAXA,YAAA,CAAa5C,UAAU;wCACnC,aAAa,EAAEgD,GAAA,CAAIlR,OAAO,CAAC,aAAa;sCAC1C,CAAC;sCACD6H,UAAU,EAAEqJ,GAAA,CAAIrJ,UAAU;sCAC1B0J,UAAU,EAAEL,GAAA,CAAIK,UAAU;sCAC1BxB,IAAI,EAAEmB,GAAA,CAAInB;oCACZ,CAAC;oCAED,CAAAgB,iBAAA,GAAA1B,MAAI,CAACO,SAAS,cAAAmB,iBAAA,uBAAdA,iBAAA,CAAgBX,WAAW,CAAC;sCAC1BL,IAAI,EAAEM,yBAAiB,CAACiB,gBAAgB;sCACxCE,GAAG,EAAEvV;oCACP,CAAC,CAAC;kCAAC;oCAIP,IAAI0U,KAAK,CAACS,IAAI,CAACrB,IAAI,KAAKM,yBAAiB,CAACoB,iBAAiB,EAAE;sCAC3DtX,eAAG,CAACoE,IAAI,4BAAA7C,MAAA,CAA4BiV,KAAK,CAACS,IAAI,CAACvJ,UAAU,GAAI0D,UAAU,CAAC;sCACxE8D,MAAI,CAACrW,WAAW,CAAC+H,mBAAW,CAAC2Q,WAAW,CAAC;oCAC3C;oCAAC,MAEGf,KAAK,CAACS,IAAI,CAACrB,IAAI,KAAKM,yBAAiB,CAACsB,iBAAiB;sCAAAR,UAAA,CAAAna,IAAA;sCAAA;oCAAA;oCACnDiF,MAAK,GAAG0U,KAAK,CAACS,IAAI,CAACI,GAAG;oCAC5BrX,eAAG,CAAC+B,IAAI,sBAAAR,MAAA,CACeiV,KAAK,CAACS,IAAI,CAACQ,mBAAmB,wBAAAlW,MAAA,CAAqBO,MAAK,CAAC4L,UAAU,QACxF0D,UACF,CAAC;oCAAC4F,UAAA,CAAAna,IAAA;oCAAA,OAEgC,IAAA0X,gCAAwB,EACxDzS,MAAK,EACL,UAACyK,WAAW,EAAE+E,UAAU,EAAK;sCAAA,IAAAoG,qBAAA,EAAAC,cAAA;sCAC3B,IAAIrG,UAAU,EAAE;wCACd4D,MAAI,CAACrW,WAAW,CAAC+H,mBAAW,CAAC4F,KAAK,EAAEnJ,SAAS,EAAEkJ,WAAW,CAAC;sCAC7D;sCAEA2I,MAAI,CAACzU,aAAa,CAACuT,wBAAwB,CACzCC,mBAAY,CAAC2D,eAAe,EAC5BzD,iBAAU,CAACqD,iBAAiB,EAC5BnD,kBAAW,CAACC,UAAU,EACtBpL,0BAAc,EACd0C,UAAU,GAAA8L,qBAAA,IAAAC,cAAA,GACV7V,MAAK,CAAC+D,OAAO,cAAA8R,cAAA,uBAAbA,cAAA,CAAe5D,UAAU,cAAA2D,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC/BlB,KAAK,CAACS,IAAI,CAACQ,mBAAmB,EAC9BlL,WACF,CAAC;oCACH,CAAC,EACD;sCAACrK,MAAM,EAAEgH,0BAAc;sCAAEjH,IAAI,EAAE/B;oCAAiB,CAAC,EACjD,UAACoI,UAAkB,EAAEsM,WAAmB;sCAAA,OACtCM,MAAI,CAAC3K,cAAc,CAACjC,UAAU,EAAEsM,WAAW,CAAC;oCAAA,CAChD,CAAC;kCAAA;oCAAAkC,sBAAA,GAAAE,UAAA,CAAAzQ,IAAA;oCArBkBuB,KAAK,GAAAgP,sBAAA,CAAjBxF,UAAU;oCAAA,MAuBbxJ,KAAK,IAAI0O,KAAK,CAACS,IAAI,CAACQ,mBAAmB,IAAItC,qBAAqB;sCAAA6B,UAAA,CAAAna,IAAA;sCAAA;oCAAA;oCAClEqY,MAAI,CAACxJ,mBAAmB,GAAGwJ,MAAI,CAAC/V,QAAQ;oCACxC+V,MAAI,CAACxO,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;oCAC3CuO,MAAI,CAACjL,mBAAmB,CAAC,CAAC;oCAC1BiL,MAAI,CAACtL,kBAAkB,CAAC,CAAC;oCACzBsL,MAAI,CAACrW,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;oCAACmQ,UAAA,CAAAna,IAAA;oCAAA,OACrC,IAAA4J,kBAAU,EAAC,CAAC;kCAAA;oCAAA,IAEbqB,KAAK;sCAAAkP,UAAA,CAAAna,IAAA;sCAAA;oCAAA;oCAAAma,UAAA,CAAAna,IAAA;oCAAA,OAEFqY,MAAI,CAAC2C,kBAAkB,CAACC,qCAAyB,CAAC;kCAAA;oCAAAd,UAAA,CAAAna,IAAA;oCAAA;kCAAA;oCACnD,IAAIiF,MAAK,CAAC4L,UAAU,KAAK,GAAG,EAAE;sCACnCwH,MAAI,CAAC/L,yBAAyB,CAACD,0BAAc,CAAC;oCAChD;kCAAC;oCAAA8N,UAAA,CAAAna,IAAA;oCAAA;kCAAA;oCAEDqY,MAAI,CAACrW,WAAW,CAAC+H,mBAAW,CAACmR,YAAY,CAAC;kCAAC;kCAAA;oCAAA,OAAAf,UAAA,CAAAjT,IAAA;gCAAA;8BAAA,GAAAwS,SAAA;4BAAA,CAGhD;4BAAA,iBAAAyB,IAAA;8BAAA,OAAA1B,MAAA,CAAAxY,KAAA,OAAAE,SAAA;4BAAA;0BAAA;wBACH;sBACF;oBAAC;oBAAA;sBAAA,OAAAwX,UAAA,CAAAzR,IAAA;kBAAA;gBAAA,GAAAsR,SAAA;cAAA,CACF,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAArR,IAAA;UAAA;QAAA,GAAAkR,SAAA;MAAA,CACH;MAAA,SA1Ga5K,mBAAmBA,CAAA4N,IAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAAnD,oBAAA,CAAAlX,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBqM,mBAAmB;IAAA;IA4GjC;AACF;AACA;IAFE;EAAA;IAAApJ,GAAA;IAAA3E,KAAA,EAGA,SAAO2N,mBAAmBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAACwL,SAAS,EAAE;QAClB,IAAI,CAACA,SAAS,CAACQ,WAAW,CAAC;UAACL,IAAI,EAAEM,yBAAiB,CAACkC;QAAe,CAAC,CAAC;QACrE,IAAI,CAAC3C,SAAS,CAAC4C,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC5C,SAAS,GAAGpS,SAAS;MAC5B;IACF;EAAC;IAAApC,GAAA;IAAA3E,KAAA,EAED,SAAOgc,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAACC,gBAAgB;IAC9B;EAAC;IAAAtX,GAAA;IAAA3E,KAAA;MAAA,IAAAkc,WAAA,OAAAjW,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAED,SAAAgW,UAAA;QAAA,IAAAC,cAAA;UAAA7Q,aAAA;UAAA8Q,sBAAA;UAAAC,sBAAA;UAAAC,OAAA,GAAA7a,SAAA;UAAA8a,GAAA;QAAA,OAAAtW,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAgW,UAAA;UAAA,kBAAAA,UAAA,CAAA9V,IAAA,GAAA8V,UAAA,CAAAlc,IAAA;YAAA;cAAwB6b,cAAc,GAAAG,OAAA,CAAA7c,MAAA,QAAA6c,OAAA,QAAAxV,SAAA,GAAAwV,OAAA,MAAG,KAAK;cACtChR,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC0U;cAClB,CAAC;cAEDhZ,eAAG,CAACoE,IAAI,CAACC,+BAAoB,EAAEwD,aAAa,CAAC;cAACkR,UAAA,CAAA9V,IAAA;cAAA8V,UAAA,CAAAlc,IAAA;cAAA,OAGtC,IAAI,CAACiK,kBAAkB,CAC3B,IAAI,CAAC5C,eAAe,GAAAyU,sBAAA,GACpB,IAAI,CAAC7T,UAAU,CAACnF,MAAM,cAAAgZ,sBAAA,uBAAtBA,sBAAA,CAAwBxT,QAAQ,GAAAyT,sBAAA,GAChC,IAAI,CAAC9T,UAAU,CAACnF,MAAM,cAAAiZ,sBAAA,uBAAtBA,sBAAA,CAAwBvR,eAC1B,CAAC;YAAA;cACDrH,eAAG,CAACA,GAAG,CAAC,wCAAwC,EAAE6H,aAAa,CAAC;cAACkR,UAAA,CAAAlc,IAAA;cAAA;YAAA;cAAAkc,UAAA,CAAA9V,IAAA;cAAA6V,GAAA,GAAAC,UAAA;cAEjE/Y,eAAG,CAAC+B,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAzD,OAAA,EAAA0a,GAAkB,CAAC,GAAIjR,aAAa,CAAC;YAAC;cAAA,KAG3E6Q,cAAc;gBAAAK,UAAA,CAAAlc,IAAA;gBAAA;cAAA;cAAAkc,UAAA,CAAAlc,IAAA;cAAA,OACV,IAAI,CAACgE,UAAU,CAACqH,0BAA0B,CAAC;gBAC/CC,IAAI,EAAE,IAAI;gBACVC,MAAM,EAAE;cACV,CAAC,CAAC;YAAA;cACFpI,eAAG,CAACA,GAAG,CAAC,wDAAwD,EAAE6H,aAAa,CAAC;YAAC;cAGnF,IAAI,CAACoC,mBAAmB,CAAC,CAAC;cAC1B,IAAI,CAACvD,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;cAC3C,IAAI,CAACxE,kBAAkB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAA4W,UAAA,CAAAhV,IAAA;UAAA;QAAA,GAAA0U,SAAA;MAAA,CAC3B;MAAA,SA9BY9I,UAAUA,CAAA;QAAA,OAAA6I,WAAA,CAAA1a,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAV2R,UAAU;IAAA;IAgCvB;AACF;AACA;AACA;EAHE;IAAA1O,GAAA;IAAA3E,KAAA,EAIA,SAAQkV,UAAUA,CAAA,EAAY;MAC5B,OAAO,IAAI,CAACyH,aAAa;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAhY,GAAA;IAAA3E,KAAA,EAKA,SAAQoV,WAAWA,CAACpV,KAAc,EAAE;MAClC,IAAI,CAAC2c,aAAa,GAAG3c,KAAK;IAC5B;;IAEA;AACF;AACA;AACA;EAHE;IAAA2E,GAAA;IAAA3E,KAAA,EAIA,SAAQmV,iBAAiBA,CAACN,WAAwB,EAAE;MAClD,IAAIA,WAAW,CAACtM,OAAO,IAAIsM,WAAW,CAACtM,OAAO,CAAC7I,MAAM,GAAG,CAAC,EAAE;QACzD,IAAI,CAAC8I,UAAU,GAAG;UAChBrF,MAAM,EAAE0R,WAAW,CAAC1R,MAAM;UAC1BE,MAAM,EAAEwR,WAAW,CAACtM,OAAO,CAAC,CAAC,CAAC;UAC9ByF,iBAAiB,EAAE4O,sCAA0B;UAC7C7Y,mBAAmB,EAAEC,yCAA6B;UAClDH,mBAAmB,EAAEC;QACvB,CAAC;QAED,IAAM+Y,eAAe,MAAA5X,MAAA,CAAMmE,qCAAyB,OAAAnE,MAAA,CAAI4P,WAAW,CAACtM,OAAO,CAAC,CAAC,CAAC,CAACM,QAAQ,CAAE;QAEzF,IAAIM,GAAG,GAAG0L,WAAW,CAACtM,OAAO,CAAC,CAAC,CAAC,CAACY,GAAG,CAACqI,OAAO,CAACqL,eAAe,EAAE,EAAE,CAAC;QAEjE,IAAI,IAAI,CAACtY,UAAU,CAACuF,eAAe,CAAC,CAAC,EAAE;UACrCX,GAAG,GAAGA,GAAG,CAACqI,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;QACzC;QAEA,IAAI,CAAC3J,kBAAkB,CAACsB,GAAG,CAAC;QAC5B,IAAI,CAAC7F,kBAAkB,GAAGC,0BAAkB,CAACiQ,MAAM;QAEnD,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA7O,GAAA;IAAA3E,KAAA;MAAA,IAAA8c,mBAAA,OAAA7W,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CASA,SAAA4W,UAAgC1R,MAAc;QAAA,IAAAG,KAAA;QAAA,OAAAtF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAuW,UAAA;UAAA,kBAAAA,UAAA,CAAArW,IAAA,GAAAqW,UAAA,CAAAzc,IAAA;YAAA;cAC5CmD,eAAG,CAACoE,IAAI,CAACC,+BAAoB,EAAE;gBAACnC,MAAM,EAAEoC,mBAAO,CAACiV,oBAAoB;gBAAEtX,IAAI,EAAE/B;cAAiB,CAAC,CAAC;cAC/F,IAAI,CAACqY,gBAAgB,GAAG,KAAK;cAAC,IACzB,IAAI,CAACjV,kBAAkB,CAAC,CAAC;gBAAAgW,UAAA,CAAAzc,IAAA;gBAAA;cAAA;cAAA,MACxB,IAAA4S,KAAA,CAAArR,OAAA,EAAY,IAAI,CAACmC,WAAW,CAACmP,cAAc,CAAC,CAAC,CAAC,CAAC1T,MAAM,KAAK,CAAC;gBAAAsd,UAAA,CAAAzc,IAAA;gBAAA;cAAA;cAAAyc,UAAA,CAAAzc,IAAA;cAAA,OACzC,IAAI,CAAC+L,2BAA2B,CAACjB,MAAM,CAAC;YAAA;cAAtDG,KAAK,GAAAwR,UAAA,CAAA/S,IAAA;cAAA,MAEP,CAACuB,KAAK,IAAI,CAAC,IAAI,CAACxE,kBAAkB,CAAC,CAAC;gBAAAgW,UAAA,CAAAzc,IAAA;gBAAA;cAAA;cAAAyc,UAAA,CAAAzc,IAAA;cAAA,OAChC,IAAI,CAAC8L,mBAAmB,CAAChB,MAAM,CAAC;YAAA;cAAA2R,UAAA,CAAAzc,IAAA;cAAA;YAAA;cAGxC,IAAI,CAAC0b,gBAAgB,GAAG,IAAI;cAC5BvY,eAAG,CAACoE,IAAI,CAAC,+DAA+D,EAAE;gBACxEnC,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAACiV;cAClB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAD,UAAA,CAAAvV,IAAA;UAAA;QAAA,GAAAsV,SAAA;MAAA,CAGR;MAAA,SAlBYxB,kBAAkBA,CAAA2B,IAAA;QAAA,OAAAJ,mBAAA,CAAAtb,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlB6Z,kBAAkB;IAAA;IAoB/B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAA5W,GAAA;IAAA3E,KAAA;MAAA,IAAAmd,4BAAA,OAAAlX,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAMA,SAAAiX,UAAyClD,KAAwB;QAAA,IAAAmD,iBAAA,EAAAC,cAAA;QAAA,IAAA/R,aAAA,EAAAgS,cAAA,EAAAC,eAAA,EAAAC,UAAA;QAAA,OAAAvX,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAiX,UAAA;UAAA,kBAAAA,UAAA,CAAA/W,IAAA,GAAA+W,UAAA,CAAAnd,IAAA;YAAA;cACzDgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC2V;cAClB,CAAC;cAEDja,eAAG,CAACoE,IAAI,6CAAA7C,MAAA,EAAAoY,iBAAA,GACsCnD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE0D,UAAU,cAAAP,iBAAA,cAAAA,iBAAA,GAAI,SAAS,iBAAApY,MAAA,EAAAqY,cAAA,GACxEpD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAE2D,OAAO,cAAAP,cAAA,cAAAA,cAAA,GAAI,SAAS,GAE7B/R,aACF,CAAC;cAACgS,cAAA,GAEmB,IAAAO,OAAA,CAAAhc,OAAA,EAAc,IAAI,CAACmC,WAAW,CAACmP,cAAc,CAAC,CAAC,CAAC,EAAAoK,eAAA,OAAAlV,eAAA,CAAAxG,OAAA,EAAAyb,cAAA,MAA9DE,UAAU,GAAAD,eAAA;cACjBC,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEM,GAAG,CAAC,CAAC;cAACL,UAAA,CAAAnd,IAAA;cAAA,OAEZ,IAAI,CAACyd,8BAA8B,CAAChW,mBAAO,CAAC2V,8BAA8B,CAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAAjW,IAAA;UAAA;QAAA,GAAA2V,SAAA;MAAA,CAClF;MAAA,SAjBYa,2BAA2BA,CAAAC,IAAA;QAAA,OAAAf,4BAAA,CAAA3b,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3Buc,2BAA2B;IAAA;IAmBxC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAVE;EAAA;IAAAtZ,GAAA;IAAA3E,KAAA;MAAA,IAAAme,+BAAA,OAAAlY,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAWA,SAAAiY,UAA6C/S,MAAc;QAAA,IAAAgT,MAAA;QAAA,IAAA9S,aAAA;QAAA,OAAArF,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAA6X,UAAA;UAAA,kBAAAA,UAAA,CAAA3X,IAAA,GAAA2X,UAAA,CAAA/d,IAAA;YAAA;cACnDgL,aAAa,GAAG;gBACpB5F,IAAI,EAAE/B,6BAAiB;gBACvBgC,MAAM,EAAEoC,mBAAO,CAAC2V;cAClB,CAAC;cAEDja,eAAG,CAACoE,IAAI,KAAA7C,MAAA,CAAKoG,MAAM,4CAAyCE,aAAa,CAAC;cAAC+S,UAAA,CAAA/d,IAAA;cAAA,OAErE,IAAI,CAAC+B,KAAK,CAACmN,YAAY,kBAAAxJ,kBAAA,CAAAnE,OAAA,eAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAC,SAAAoY,UAAA;gBAAA,IAAAC,GAAA;gBAAA,OAAAtY,YAAA,CAAApE,OAAA,CAAA2E,IAAA,WAAAgY,UAAA;kBAAA,kBAAAA,UAAA,CAAA9X,IAAA,GAAA8X,UAAA,CAAAle,IAAA;oBAAA;sBAC5B8d,MAAI,CAAC/Q,kBAAkB,CAAC,CAAC;sBACzB+Q,MAAI,CAAC1Q,mBAAmB,CAAC,CAAC;sBAE1B0Q,MAAI,CAACpC,gBAAgB,GAAG,KAAK;sBAC7BoC,MAAI,CAAC3Q,iBAAiB,GAAG,KAAK;sBAC9B2Q,MAAI,CAACjP,mBAAmB,GAAG,KAAK;sBAChCiP,MAAI,CAACrS,UAAU,GAAGjF,SAAS;sBAC3BsX,MAAI,CAAC1B,aAAa,GAAG,KAAK;sBAE1B0B,MAAI,CAACxY,kBAAkB,CAAC,CAAC;sBACzBwY,MAAI,CAACjU,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;sBAAC,KAExCgU,MAAI,CAAC9Z,UAAU,CAACuF,eAAe,CAAC,CAAC;wBAAA2U,UAAA,CAAAle,IAAA;wBAAA;sBAAA;sBAAAke,UAAA,CAAA9X,IAAA;sBAAA8X,UAAA,CAAAle,IAAA;sBAAA,OAE3B8d,MAAI,CAAC9Z,UAAU,CAACqH,0BAA0B,CAAC;wBAC/CC,IAAI,EAAE,IAAI;wBACVC,MAAM,EAAE;sBACV,CAAC,CAAC;oBAAA;sBACFpI,eAAG,CAACA,GAAG,CAAC,2DAA2D,EAAE6H,aAAa,CAAC;sBAACkT,UAAA,CAAAle,IAAA;sBAAA;oBAAA;sBAAAke,UAAA,CAAA9X,IAAA;sBAAA6X,GAAA,GAAAC,UAAA;sBAEpF/a,eAAG,CAAC+B,IAAI,6DAAAR,MAAA,CACsDS,MAAM,CAAA8Y,GAAI,CAAC,GACvEjT,aACF,CAAC;oBAAC;sBAIN8S,MAAI,CAAC9b,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;oBAAC;oBAAA;sBAAA,OAAAkU,UAAA,CAAAhX,IAAA;kBAAA;gBAAA,GAAA8W,SAAA;cAAA,CAC5C,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA7W,IAAA;UAAA;QAAA,GAAA2W,SAAA;MAAA,CACH;MAAA,SAtCaJ,8BAA8BA,CAAAU,IAAA;QAAA,OAAAP,+BAAA,CAAA3c,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA9Bsc,8BAA8B;IAAA;EAAA;AAAA;AAyC9C;AACA;AACO,IAAMW,kBAAkB,GAAAxc,OAAA,CAAAwc,kBAAA,GAAG,SAArBA,kBAAkBA,CAC7Bvc,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB,EAChBC,GAAY;EAAA,OACM,IAAIP,YAAY,CAACE,KAAK,EAAEC,WAAW,EAAEC,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,GAAG,CAAC;AAAA","ignoreList":[]}
|