@webex/calling 3.12.0-next.27 → 3.12.0-next.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/CallingClient/CallingClient.js +463 -205
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.test.js +170 -77
  4. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  5. package/dist/CallingClient/calling/call.js +11 -8
  6. package/dist/CallingClient/calling/call.js.map +1 -1
  7. package/dist/CallingClient/calling/call.test.js +45 -4
  8. package/dist/CallingClient/calling/call.test.js.map +1 -1
  9. package/dist/CallingClient/calling/callManager.js +53 -30
  10. package/dist/CallingClient/calling/callManager.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.test.js +35 -0
  12. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  13. package/dist/CallingClient/calling/types.js +2 -0
  14. package/dist/CallingClient/calling/types.js.map +1 -1
  15. package/dist/CallingClient/constants.js +24 -3
  16. package/dist/CallingClient/constants.js.map +1 -1
  17. package/dist/CallingClient/line/line.test.js +16 -1
  18. package/dist/CallingClient/line/line.test.js.map +1 -1
  19. package/dist/CallingClient/registration/register.js +694 -406
  20. package/dist/CallingClient/registration/register.js.map +1 -1
  21. package/dist/CallingClient/registration/register.test.js +202 -21
  22. package/dist/CallingClient/registration/register.test.js.map +1 -1
  23. package/dist/CallingClient/registration/types.js.map +1 -1
  24. package/dist/CallingClient/registration/webWorker.js +41 -104
  25. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  26. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  27. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  28. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  29. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  30. package/dist/CallingClient/utils/constants.js +46 -0
  31. package/dist/CallingClient/utils/constants.js.map +1 -0
  32. package/dist/CallingClient/utils/index.js +63 -0
  33. package/dist/CallingClient/utils/index.js.map +1 -0
  34. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  35. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  36. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
  37. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  38. package/dist/CallingClient/utils/request.js +349 -0
  39. package/dist/CallingClient/utils/request.js.map +1 -0
  40. package/dist/CallingClient/utils/request.test.js +881 -0
  41. package/dist/CallingClient/utils/request.test.js.map +1 -0
  42. package/dist/CallingClient/utils/types.js +7 -0
  43. package/dist/CallingClient/utils/types.js.map +1 -0
  44. package/dist/CallingClient/utils/wsFeatureFlag.js +28 -0
  45. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  46. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  47. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  48. package/dist/Contacts/ContactsClient.test.js +3 -8
  49. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  50. package/dist/Metrics/index.js +60 -0
  51. package/dist/Metrics/index.js.map +1 -1
  52. package/dist/Metrics/index.test.js +356 -0
  53. package/dist/Metrics/index.test.js.map +1 -1
  54. package/dist/Metrics/types.js +11 -1
  55. package/dist/Metrics/types.js.map +1 -1
  56. package/dist/SDKConnector/types.js.map +1 -1
  57. package/dist/common/Utils.js +138 -44
  58. package/dist/common/Utils.js.map +1 -1
  59. package/dist/common/testUtil.js +8 -4
  60. package/dist/common/testUtil.js.map +1 -1
  61. package/dist/common/types.js +2 -0
  62. package/dist/common/types.js.map +1 -1
  63. package/dist/mobius-socket/config.js +24 -0
  64. package/dist/mobius-socket/config.js.map +1 -0
  65. package/dist/mobius-socket/errors.js +150 -0
  66. package/dist/mobius-socket/errors.js.map +1 -0
  67. package/dist/mobius-socket/index.js +57 -0
  68. package/dist/mobius-socket/index.js.map +1 -0
  69. package/dist/mobius-socket/mobius-socket-events.test.js +485 -0
  70. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  71. package/dist/mobius-socket/mobius-socket.js +804 -0
  72. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  73. package/dist/mobius-socket/mobius-socket.test.js +1833 -0
  74. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  75. package/dist/mobius-socket/socket/constants.js +34 -0
  76. package/dist/mobius-socket/socket/constants.js.map +1 -0
  77. package/dist/mobius-socket/socket/index.js +15 -0
  78. package/dist/mobius-socket/socket/index.js.map +1 -0
  79. package/dist/mobius-socket/socket/socket-base.js +604 -0
  80. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  81. package/dist/mobius-socket/socket/socket.js +19 -0
  82. package/dist/mobius-socket/socket/socket.js.map +1 -0
  83. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  84. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  85. package/dist/mobius-socket/socket/types.js +7 -0
  86. package/dist/mobius-socket/socket/types.js.map +1 -0
  87. package/dist/mobius-socket/socket.test.js +727 -0
  88. package/dist/mobius-socket/socket.test.js.map +1 -0
  89. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  90. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  91. package/dist/mobius-socket/test/promise-tick.js +28 -0
  92. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  93. package/dist/mobius-socket/types.js +7 -0
  94. package/dist/mobius-socket/types.js.map +1 -0
  95. package/dist/module/CallingClient/CallingClient.js +141 -10
  96. package/dist/module/CallingClient/calling/call.js +9 -6
  97. package/dist/module/CallingClient/calling/callManager.js +27 -7
  98. package/dist/module/CallingClient/calling/types.js +2 -0
  99. package/dist/module/CallingClient/constants.js +20 -0
  100. package/dist/module/CallingClient/registration/register.js +226 -62
  101. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  102. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  103. package/dist/module/CallingClient/utils/constants.js +30 -0
  104. package/dist/module/CallingClient/utils/index.js +5 -0
  105. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  106. package/dist/module/CallingClient/utils/request.js +162 -0
  107. package/dist/module/CallingClient/utils/types.js +1 -0
  108. package/dist/module/CallingClient/utils/wsFeatureFlag.js +12 -0
  109. package/dist/module/Metrics/index.js +46 -0
  110. package/dist/module/Metrics/types.js +10 -0
  111. package/dist/module/common/Utils.js +52 -12
  112. package/dist/module/common/testUtil.js +5 -1
  113. package/dist/module/common/types.js +2 -0
  114. package/dist/module/mobius-socket/config.js +15 -0
  115. package/dist/module/mobius-socket/errors.js +64 -0
  116. package/dist/module/mobius-socket/index.js +24 -0
  117. package/dist/module/mobius-socket/mobius-socket.js +571 -0
  118. package/dist/module/mobius-socket/socket/constants.js +10 -0
  119. package/dist/module/mobius-socket/socket/index.js +4 -0
  120. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  121. package/dist/module/mobius-socket/socket/socket.js +9 -0
  122. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  123. package/dist/module/mobius-socket/socket/types.js +1 -0
  124. package/dist/module/mobius-socket/types.js +1 -0
  125. package/dist/types/CallingClient/CallingClient.d.ts +7 -0
  126. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  127. package/dist/types/CallingClient/calling/call.d.ts +1 -0
  128. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  129. package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
  130. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  131. package/dist/types/CallingClient/calling/types.d.ts +21 -9
  132. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  133. package/dist/types/CallingClient/constants.d.ts +20 -0
  134. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  135. package/dist/types/CallingClient/registration/register.d.ts +6 -0
  136. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  137. package/dist/types/CallingClient/registration/types.d.ts +3 -1
  138. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  139. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  140. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  141. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  142. package/dist/types/CallingClient/utils/constants.d.ts +30 -0
  143. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  144. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  145. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  146. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  147. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  148. package/dist/types/CallingClient/utils/request.d.ts +23 -0
  149. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  150. package/dist/types/CallingClient/utils/types.d.ts +29 -0
  151. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  152. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  153. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  154. package/dist/types/Metrics/index.d.ts.map +1 -1
  155. package/dist/types/Metrics/types.d.ts +11 -1
  156. package/dist/types/Metrics/types.d.ts.map +1 -1
  157. package/dist/types/SDKConnector/types.d.ts +24 -0
  158. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  159. package/dist/types/common/Utils.d.ts +9 -2
  160. package/dist/types/common/Utils.d.ts.map +1 -1
  161. package/dist/types/common/testUtil.d.ts +4 -1
  162. package/dist/types/common/testUtil.d.ts.map +1 -1
  163. package/dist/types/common/types.d.ts +3 -0
  164. package/dist/types/common/types.d.ts.map +1 -1
  165. package/dist/types/mobius-socket/config.d.ts +17 -0
  166. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  167. package/dist/types/mobius-socket/errors.d.ts +32 -0
  168. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  169. package/dist/types/mobius-socket/index.d.ts +14 -0
  170. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  171. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  172. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  173. package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
  174. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  175. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  176. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  177. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  178. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  179. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  180. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  181. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  182. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  183. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  184. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  185. package/dist/types/mobius-socket/types.d.ts +21 -0
  186. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  187. package/package.json +16 -2
  188. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  189. 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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAOA,IAAAM,QAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAEA,IAAAQ,OAAA,GAAAJ,sBAAA,CAAAJ,OAAA;AAEA,IAAAS,aAAA,GAAAL,sBAAA,CAAAJ,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AAYA,IAAAW,WAAA,GAAAX,OAAA;AA6BA,IAAAY,OAAA,GAAAZ,OAAA;AAA+D,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;AAG/D;AACA;AACA;AAFA,IAGa8C,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAgCvB;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,kBApCe,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;IAa/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;EAC5B;EAAC,WAAAC,aAAA,CAAAzC,OAAA,EAAAI,YAAA;IAAAsC,GAAA;IAAAxE,KAAA,EAED,SAAQyE,mBAAmBA,CAAA,EAAW;MACpC,UAAAC,MAAA,CAAUC,iCAAqB,OAAAD,MAAA,CAAI,IAAI,CAACvB,MAAM,IAAI,SAAS;IAC7D;EAAC;IAAAqB,GAAA;IAAAxE,KAAA,EAED,SAAQ4E,iBAAiBA,CAACC,aAAiC,EAAQ;MACjE,IAAI;QACFC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACN,mBAAmB,CAAC,CAAC,EAAE,IAAAO,UAAA,CAAAlD,OAAA,EAAe+C,aAAa,CAAC,CAAC;MACjF,CAAC,CAAC,OAAOI,KAAK,EAAE;QACdvB,eAAG,CAACwB,IAAI,uDAAAR,MAAA,CAAuDS,MAAM,CAACF,KAAK,CAAC,GAAI;UAC9EG,IAAI,EAAExB,6BAAiB;UACvByB,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAb,GAAA;IAAAxE,KAAA,EAED,SAAQsF,kBAAkBA,CAAA,EAAS;MACjC,IAAI;QACFR,YAAY,CAACS,UAAU,CAAC,IAAI,CAACd,mBAAmB,CAAC,CAAC,CAAC;MACrD,CAAC,CAAC,OAAAe,OAAA,EAAM;QACN9B,eAAG,CAACwB,IAAI,CAAC,kDAAkD,EAAE;UAC3DE,IAAI,EAAExB,6BAAiB;UACvByB,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAb,GAAA;IAAAxE,KAAA;MAAA,IAAAyF,eAAA,OAAAC,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAAC,QAAA;QAAA,IAAAC,WAAA,EAAAjB,aAAA,EAAAkB,WAAA,EAAAC,UAAA,EAAAC,EAAA;QAAA,OAAAN,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAA5F,IAAA;YAAA;cAAA4F,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,CAAA5F,IAAA;gBAAA;cAAA;cACvCwF,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAC3CkE,UAAU,GACdnB,aAAa,CAACgC,WAAW,IAAId,WAAW,GAAGlB,aAAa,CAACiC,kBAAkB,CAAC;cAE9E,IAAI,CAACxB,kBAAkB,CAAC,CAAC;cAACa,QAAA,CAAA5F,IAAA;cAAA,OACpB,IAAI,CAACwG,kBAAkB,CAAClC,aAAa,CAACmC,OAAO,EAAEhB,UAAU,CAAC;YAAA;cAAA,OAAAG,QAAA,CAAAc,MAAA,WAEzD,IAAI;YAAA;cAAAd,QAAA,CAAA5F,IAAA;cAAA;YAAA;cAAA4F,QAAA,CAAAC,IAAA;cAAAH,EAAA,GAAAE,QAAA;cAGbzC,eAAG,CAACwB,IAAI,qCAAqC;gBAC3CE,IAAI,EAAExB,6BAAiB;gBACvByB,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,CAAAjE,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAdyF,cAAc;IAAA;EAAA;IAAA3C,GAAA;IAAAxE,KAAA,EA0B5B,SAAOoH,kBAAkBA,CAAA,EAAW;MAClC,OAAO,IAAI,CAACC,eAAe;IAC7B;EAAC;IAAA7C,GAAA;IAAAxE,KAAA,EAED,SAAOsH,kBAAkBA,CAACC,GAAW,EAAE;MACrC7D,eAAG,CAAC8D,IAAI,IAAA9C,MAAA,CAAI+C,+BAAoB,YAAA/C,MAAA,CAAS6C,GAAG,GAAI;QAC9ClC,MAAM,EAAEqC,mBAAO,CAACC,oBAAoB;QACpCvC,IAAI,EAAExB;MACR,CAAC,CAAC;MACF,IAAI,CAACyD,eAAe,GAAGE,GAAG;MAC1B,IAAI,CAACtD,WAAW,CAAC2D,kBAAkB,CAACL,GAAG,CAAC;IAC1C;;IAEA;AACF;AACA;EAFE;IAAA/C,GAAA;IAAAxE,KAAA,EAGA,SAAO6H,aAAaA,CAACC,WAAoB,EAAQ;MAC/C,IAAAC,oBAAA,OAAAC,eAAA,CAAAlG,OAAA,EAAiBgG,WAAW,CAACG,OAAO;QAA7B5E,MAAM,GAAA0E,oBAAA;MAEb,IAAI,CAACG,UAAU,GAAG;QAChB/E,MAAM,EAAE2E,WAAW,CAAC3E,MAAM;QAC1BE,MAAM,EAANA,MAAM;QACN4E,OAAO,EAAEH,WAAW,CAACG;MACvB,CAAC;IACH;EAAC;IAAAzD,GAAA;IAAAxE,KAAA,EAED,SAAOmI,gBAAgBA,CAAC9D,iBAA2B,EAAEC,gBAA0B,EAAE;MAC/EZ,eAAG,CAACA,GAAG,CAAC+D,+BAAoB,EAAE;QAACpC,MAAM,EAAEqC,mBAAO,CAACU,kBAAkB;QAAEhD,IAAI,EAAExB;MAAiB,CAAC,CAAC;MAC5F,IAAI,CAACS,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IAC1C;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAxE,KAAA;MAAA,IAAAqI,mBAAA,OAAA3C,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA0C,SAAiCf,GAAW,EAAEgB,QAAgB,EAAEC,SAAiB;QAAA,IAAAC,SAAA;QAAA,IAAAC,QAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAxD,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAkD,SAAA;UAAA,kBAAAA,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAA7I,IAAA;YAAA;cAAA6I,SAAA,CAAAhD,IAAA;cAAAuC,GAAA,GAG5DU,KAAK;cAAAT,GAAA,MAAAlE,MAAA,CAAI6C,GAAG,EAAA7C,MAAA,CAAG4E,qCAAyB,OAAA5E,MAAA,CAAI6D,QAAQ;cAAAM,GAAA,GAC3DU,oBAAY,CAACC,MAAM;cAAAV,GAAA,GAAAjH,gBAAA,CAAAC,OAAA;cAAAiH,GAAA,GAAAlH,gBAAA,CAAAC,OAAA;cAAAkH,GAAA,GAAAnH,gBAAA,CAAAC,OAAA;cAAAmH,GAAA,OAAApH,gBAAA,CAAAC,OAAA,MAExB2H,4BAAgB,EAAGjB,SAAS;cAAAY,SAAA,CAAA7I,IAAA;cAAA,OACR,IAAI,CAAC6B,KAAK,CAACsH,WAAW,CAACC,YAAY,CAAC,CAAC;YAAA;cAAAT,GAAA,GAAAJ,GAAA,CAAAC,GAAA,CAAAC,GAAA,CAAAC,GAAA,mBAAAG,SAAA,CAAAQ,IAAA,oBAAAlF,MAAA,CAC3CmF,4BAAgB,OAAAnF,MAAA,CAAI,IAAAoF,QAAI,EAAC,CAAC,IACxCC,4BAAgB,EAAGC,8BAAkB;cAAAZ,SAAA,CAAA7I,IAAA;cAAA,OAAAoI,GAAA,CAAAC,GAAA;gBALxCvD,MAAM,EAAAwD,GAAA;gBACNoB,OAAO,EAAAf;cAAA;YAAA;cAFTR,QAAQ,GAAAU,SAAA,CAAAQ,IAAA;cAAAR,SAAA,CAAA7I,IAAA;cAAA;YAAA;cAAA6I,SAAA,CAAAhD,IAAA;cAAA+C,GAAA,GAAAC,SAAA;cAUR1F,eAAG,CAACwB,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAlD,OAAA,EAAAqH,GAAoB,CAAC,GAAI;gBAC9D/D,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACwC;cAClB,CAAC,CAAC;cAACd,SAAA,CAAA7I,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,OAAAnB,SAAA,CAAAnC,MAAA,YAAAwB,SAAA,GAEfC,QAAQ,cAAAD,SAAA,uBAARA,SAAA,CAAU+B,IAAI,CAAC,CAAC;YAAA;YAAA;cAAA,OAAApB,SAAA,CAAAlC,IAAA;UAAA;QAAA,GAAAoB,QAAA;MAAA,CAC7C;MAAA,SAzBamC,kBAAkBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAvC,mBAAA,CAAA7G,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlB+I,kBAAkB;IAAA;IA2BhC;AACF;AACA;AACA;IAHE;EAAA;IAAAjG,GAAA;IAAAxE,KAAA;MAAA,IAAA6K,iBAAA,OAAAnF,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAAkF,SAA+BvD,GAAW;QAAA,IAAAW,UAAA;QAAA,OAAAvC,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6E,SAAA;UAAA,kBAAAA,SAAA,CAAA3E,IAAA,GAAA2E,SAAA,CAAAxK,IAAA;YAAA;cAClC2H,UAAU,GAAG;gBACjB/E,MAAM,EAAE,IAAI,CAACA,MAAM;gBACnB6H,eAAe,EAAE,IAAI,CAAC5I,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG;gBAC/ClF,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,OAAA0I,SAAA,CAAA9D,MAAA,WAE2B,IAAI,CAAC7E,KAAK,CAAC6I,OAAO,CAAC;gBAC7CC,GAAG,KAAAxG,MAAA,CAAK6C,GAAG,WAAQ;gBACnBlC,MAAM,EAAEkE,oBAAY,CAAC4B,IAAI;gBACzBlB,OAAO,MAAApI,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ2H,4BAAgB,EAAGvB,UAAU,CAAC8C,eAAe,GAC7CjB,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDoB,IAAI,EAAElD,UAAU;gBAChBmD,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAR,SAAA,CAAA7D,IAAA;UAAA;QAAA,GAAA4D,QAAA;MAAA,CACH;MAAA,SAjBaU,gBAAgBA,CAAAC,GAAA;QAAA,OAAAZ,iBAAA,CAAArJ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAhB8J,gBAAgB;IAAA;IAmB9B;AACF;AACA;AACA;IAHE;EAAA;IAAAhH,GAAA;IAAAxE,KAAA;MAAA,IAAA0L,4BAAA,OAAAhG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA+F,SAA0CC,MAAc;QAAA,IAAAC,KAAA;QAAA,IAAAC,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6F,SAAA;UAAA,kBAAAA,SAAA,CAAA3F,IAAA,GAAA2F,SAAA,CAAAxL,IAAA;YAAA;cAClDuL,KAAK,GAAG,KAAK;cAAA,KAEb,IAAI,CAACzE,eAAe;gBAAA0E,SAAA,CAAAxL,IAAA;gBAAA;cAAA;cAAAwL,SAAA,CAAAxL,IAAA;cAAA,OACR,IAAI,CAACyL,8BAA8B,CAACJ,MAAM,EAAE,CAAC,IAAI,CAACvE,eAAe,CAAC,CAAC;YAAA;cAAjFyE,KAAK,GAAAC,SAAA,CAAAnC,IAAA;cAAA,KACD,IAAI,CAACqC,UAAU;gBAAAF,SAAA,CAAAxL,IAAA;gBAAA;cAAA;cAAA,MACb,IAAI,CAAC0L,UAAU,GAAGC,mCAAuB;gBAAAH,SAAA,CAAAxL,IAAA;gBAAA;cAAA;cAC3C;cACA4L,UAAU,kBAAAzG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAwG,SAAA;gBAAA,OAAAzG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAmG,SAAA;kBAAA,kBAAAA,SAAA,CAAAjG,IAAA,GAAAiG,SAAA,CAAA9L,IAAA;oBAAA;sBAAA8L,SAAA,CAAA9L,IAAA;sBAAA,OACHsL,KAAI,CAACS,mBAAmB,CAACV,MAAM,CAAC;oBAAA;oBAAA;sBAAA,OAAAS,SAAA,CAAAnF,IAAA;kBAAA;gBAAA,GAAAkF,QAAA;cAAA,CACvC,IAAE,IAAI,CAACH,UAAU,GAAG,IAAI,CAAC;cAACF,SAAA,CAAAxL,IAAA;cAAA;YAAA;cAAA,MAE3B,IAAI,CAAC8D,iBAAiB,CAACkI,QAAQ,CAAC,IAAI,CAAClF,eAAe,CAAC,IACrD,IAAI,CAAC/C,gBAAgB,CAAC5E,MAAM,GAAG,CAAC;gBAAAqM,SAAA,CAAAxL,IAAA;gBAAA;cAAA;cAAAwL,SAAA,CAAAxL,IAAA;cAAA,OAGlB,IAAI,CAACyL,8BAA8B,CAACJ,MAAM,EAAE,IAAI,CAACtH,gBAAgB,CAAC;YAAA;cAAhFwH,KAAK,GAAAC,SAAA,CAAAnC,IAAA;cAAAmC,SAAA,CAAAxL,IAAA;cAAA;YAAA;cAEL;cACA,IAAI,CAAC+L,mBAAmB,CAACV,MAAM,CAAC;YAAC;cAEnC,IAAI,CAACK,UAAU,GAAGzF,SAAS;cAAC,OAAAuF,SAAA,CAAA9E,MAAA,WAErB,IAAI;YAAA;cAAA,OAAA8E,SAAA,CAAA9E,MAAA,WAIR6E,KAAK;YAAA;YAAA;cAAA,OAAAC,SAAA,CAAA7E,IAAA;UAAA;QAAA,GAAAyE,QAAA;MAAA,CACb;MAAA,SA5Baa,2BAA2BA,CAAAC,GAAA;QAAA,OAAAf,4BAAA,CAAAlK,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3B8K,2BAA2B;IAAA;IA8BzC;AACF;AACA;IAFE;EAAA;IAAAhI,GAAA;IAAAxE,KAAA;MAAA,IAAA0M,0BAAA,OAAAhH,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAGA,SAAA+G,SAAwCf,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA0G,SAAA;UAAA,kBAAAA,SAAA,CAAAxG,IAAA,GAAAwG,SAAA,CAAArM,IAAA;YAAA;cAAA,MAChDqL,MAAM,KAAKiB,0BAAc;gBAAAD,SAAA,CAAArM,IAAA;gBAAA;cAAA;cAAAqM,SAAA,CAAArM,IAAA;cAAA,OACP,IAAI,CAACyL,8BAA8B,CAACJ,MAAM,CAAC;YAAA;cAAzDE,KAAK,GAAAc,SAAA,CAAAhD,IAAA;cAAA,MAEP,CAACkC,KAAK,IAAI,CAAC,IAAI,CAACrF,kBAAkB,CAAC,CAAC;gBAAAmG,SAAA,CAAArM,IAAA;gBAAA;cAAA;cAAAqM,SAAA,CAAArM,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAA6F,SAAA,CAAA1F,IAAA;UAAA;QAAA,GAAAyF,QAAA;MAAA,CAGpC;MAAA,SARaG,yBAAyBA,CAAAC,GAAA;QAAA,OAAAL,0BAAA,CAAAlL,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAzBoL,yBAAyB;IAAA;IAUvC;AACF;AACA;IAFE;EAAA;IAAAtI,GAAA;IAAAxE,KAAA;MAAA,IAAAgN,eAAA,OAAAtH,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAGA,SAAAqH,SAA6BhB,UAAkB,EAAEL,MAAc;QAAA,IAAAsB,MAAA;QAAA,IAAAC,QAAA,EAAArB,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAkH,SAAA;UAAA,kBAAAA,SAAA,CAAAhH,IAAA,GAAAgH,SAAA,CAAA7M,IAAA;YAAA;cAAA,MACzDqL,MAAM,KAAKyB,yBAAa;gBAAAD,SAAA,CAAA7M,IAAA;gBAAA;cAAA;cAAA,MACtB,IAAI,CAACkD,wBAAwB,IAAI6J,wCAA4B;gBAAAF,SAAA,CAAA7M,IAAA;gBAAA;cAAA;cAAA,OAAA6M,SAAA,CAAAnG,MAAA;YAAA;cAIjE,IAAI,CAACsG,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAAC9J,wBAAwB,IAAI,CAAC;cAClCC,eAAG,CAACA,GAAG,mDAAAgB,MAAA,CAAmD,IAAI,CAACjB,wBAAwB,GAAI;gBACzF2B,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEmI;cACV,CAAC,CAAC;cACIL,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,IAAI,CAAChK,wBAAwB,CAAC;cAExE,IAAI,CAACiK,kBAAkB,CAACP,QAAQ,CAAC;cACjC,IAAI,CAACQ,iBAAiB,GAAG,IAAI;cAACP,SAAA,CAAA7M,IAAA;cAAA,OACV,IAAI,CAACiM,2BAA2B,CAACgB,8BAAkB,CAAC;YAAA;cAAlE1B,KAAK,GAAAsB,SAAA,CAAAxD,IAAA;cAAA,MAEP,CAACkC,KAAK,IAAI,CAAC,IAAI,CAACrF,kBAAkB,CAAC,CAAC;gBAAA2G,SAAA,CAAA7M,IAAA;gBAAA;cAAA;cAAA6M,SAAA,CAAA7M,IAAA;cAAA,OAChC,IAAI,CAAC+L,mBAAmB,CAACkB,8BAAkB,CAAC;YAAA;cAAAJ,SAAA,CAAA7M,IAAA;cAAA;YAAA;cAE/C,IAAIqL,MAAM,KAAKiB,0BAAc,EAAE;gBACpC,IAAI,CAACe,mBAAmB,CAAC,CAAC;gBAC1BzB,UAAU,kBAAAzG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAiI,SAAA;kBAAA,IAAAC,qBAAA;kBAAA,OAAAnI,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6H,SAAA;oBAAA,kBAAAA,SAAA,CAAA3H,IAAA,GAAA2H,SAAA,CAAAxN,IAAA;sBAAA;wBACTmD,eAAG,CAACA,GAAG,6BAAAgB,MAAA,CAA6BuH,UAAU,eAAY;0BACxD7G,IAAI,EAAExB,6BAAiB;0BACvByB,MAAM,EAAEmI;wBACV,CAAC,CAAC;;wBAEF;wBAAAO,SAAA,CAAAxN,IAAA;wBAAA,OACM2M,MAAI,CAACc,mBAAmB,EAAAF,qBAAA,GAC5BZ,MAAI,CAAChF,UAAU,CAAC7E,MAAM,cAAAyK,qBAAA,uBAAtBA,qBAAA,CAAwB5C,GAAG,EAC3BgC,MAAI,CAAChF,UAAU,CAAC+F,iBAAiB,EACjC,SACF,CAAC;sBAAA;sBAAA;wBAAA,OAAAF,SAAA,CAAA7G,IAAA;oBAAA;kBAAA,GAAA2G,QAAA;gBAAA,CACF,IAAE5B,UAAU,GAAG,IAAI,CAAC;cACvB,CAAC,MAAM;gBACL,IAAI,CAACA,UAAU,GAAGA,UAAU;cAC9B;YAAC;YAAA;cAAA,OAAAmB,SAAA,CAAAlG,IAAA;UAAA;QAAA,GAAA+F,QAAA;MAAA,CACF;MAAA,SAvCaiB,cAAcA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAApB,eAAA,CAAAxL,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAdwM,cAAc;IAAA;IAyC5B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAA1J,GAAA;IAAAxE,KAAA,EAMA,SAAQyN,mBAAmBA,CAAA,EAAsB;MAAA,IAArBzG,OAAO,GAAAtF,SAAA,CAAAhC,MAAA,QAAAgC,SAAA,QAAA8E,SAAA,GAAA9E,SAAA,MAAG,CAAC;MACrC,OACE2M,2CAA+B,GAAA3H,IAAA,CAAA4H,GAAA,CAC/BC,kCAAsB,EAAIvH,OAAO,IACjCN,IAAI,CAACC,KAAK,CACR,CAACD,IAAI,CAAC8H,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;IAAAlK,GAAA;IAAAxE,KAAA;MAAA,IAAA2O,mBAAA,OAAAjJ,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAOA,SAAAgJ,UAAA;QAAA,IAAAC,MAAA;QAAA,IAAA7H,OAAA;UAAAH,WAAA;UAAAiI,aAAA;UAAA3B,QAAA;UAAA4B,eAAA;UAAAC,SAAA;UAAAlD,KAAA;UAAAmD,aAAA;UAAAC,OAAA,GAAAxN,SAAA;QAAA,OAAAiE,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAiJ,UAAA;UAAA,kBAAAA,UAAA,CAAA/I,IAAA,GAAA+I,UAAA,CAAA5O,IAAA;YAAA;cAAiCyG,OAAO,GAAAkI,OAAA,CAAAxP,MAAA,QAAAwP,OAAA,QAAA1I,SAAA,GAAA0I,OAAA,MAAG,CAAC;cAAErI,WAAW,GAAAqI,OAAA,CAAAxP,MAAA,QAAAwP,OAAA,QAAA1I,SAAA,GAAA0I,OAAA,MAAG,CAAC;cACrDJ,aAAa,GAAG;gBACpB1J,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE+J;cACV,CAAC;cAEGjC,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAACzG,OAAO,CAAC;cAE1C+H,eAAe,GAAGM,2CAA+B;cAEvD,IAAIxI,WAAW,GAAGsG,QAAQ,GAAG4B,eAAe,EAAE;gBACtCC,SAAS,GAAGnI,WAAW,GAAGsG,QAAQ,GAAG4B,eAAe;gBAE1D5B,QAAQ,IAAI6B,SAAS;cACvB;cAEA,IAAI,IAAI,CAAC/C,UAAU,IAAI,IAAI,IAAIkB,QAAQ,GAAG,IAAI,CAAClB,UAAU,EAAE;gBACzD,IAAI,CAACqD,mBAAmB,GAAG,IAAI,CAACrD,UAAU,GAAGpF,WAAW,GAAGkI,eAAe;cAC5E;cAAC,MAGG5B,QAAQ,GAAGkB,2CAA+B,IAAI,CAAC,IAAI,CAACiB,mBAAmB;gBAAAH,UAAA,CAAA5O,IAAA;gBAAA;cAAA;cACnE0O,aAAa,GAAGvI,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAEnD,IAAI,IAAI,CAACmK,UAAU,IAAI,IAAI,EAAE;gBAC3BkB,QAAQ,GAAGzG,IAAI,CAAC6I,GAAG,CAACpC,QAAQ,EAAE,IAAI,CAAClB,UAAU,CAAC;cAChD;cAEA,IAAI,CAACrH,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAEmI,aAAa;gBACjCO,UAAU,EAAE;cACd,CAAC,CAAC;cAEFrD,UAAU,kBAAAzG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA6J,SAAA;gBAAA,OAAA9J,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwJ,SAAA;kBAAA,kBAAAA,SAAA,CAAAtJ,IAAA,GAAAsJ,SAAA,CAAAnP,IAAA;oBAAA;sBAAAmP,SAAA,CAAAnP,IAAA;sBAAA,OACHsO,MAAI,CAACvM,KAAK,CAACqN,YAAY,kBAAAjK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAgK,SAAA;wBAAA,IAAA7J,WAAA;wBAAA,OAAAJ,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA2J,SAAA;0BAAA,kBAAAA,SAAA,CAAAzJ,IAAA,GAAAyJ,SAAA,CAAAtP,IAAA;4BAAA;8BAAAsP,SAAA,CAAAtP,IAAA;8BAAA,OACdsO,MAAI,CAAC7C,8BAA8B,CAACoD,yBAAa,CAAC;4BAAA;8BAAhEtD,KAAK,GAAA+D,SAAA,CAAAjG,IAAA;8BACC7D,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;8BAAA,MAE7C,CAACgK,KAAK,IAAI,CAAC+C,MAAI,CAACpI,kBAAkB,CAAC,CAAC;gCAAAoJ,SAAA,CAAAtP,IAAA;gCAAA;8BAAA;8BAAAsP,SAAA,CAAAtP,IAAA;8BAAA,OAChCsO,MAAI,CAAC9H,kBAAkB,CAACC,OAAO,GAAG,CAAC,EAAEH,WAAW,IAAId,WAAW,GAAGkJ,aAAa,CAAC,CAAC;4BAAA;4BAAA;8BAAA,OAAAY,SAAA,CAAA3I,IAAA;0BAAA;wBAAA,GAAA0I,QAAA;sBAAA,CAE1F,GAAC;oBAAA;oBAAA;sBAAA,OAAAF,SAAA,CAAAxI,IAAA;kBAAA;gBAAA,GAAAuI,QAAA;cAAA,CACH,IAAEtC,QAAQ,GAAGuB,+BAAmB,CAAC;cAClChL,eAAG,CAACA,GAAG,oCAAAgB,MAAA,CAC8ByI,QAAQ,qCAAAzI,MAAA,CAAkCsC,OAAO,GACpF8H,aACF,CAAC;cAACK,UAAA,CAAA5O,IAAA;cAAA;YAAA;cAAA,KACO,IAAI,CAAC+D,gBAAgB,CAAC5E,MAAM;gBAAAyP,UAAA,CAAA5O,IAAA;gBAAA;cAAA;cACrC,IAAI,CAACqE,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAEJ,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;gBACjD0N,UAAU,EAAE;cACd,CAAC,CAAC;cAEF9L,eAAG,CAAC8D,IAAI,CAAC,iCAAiC,EAAEsH,aAAa,CAAC;cAC1D,IAAI,CAACQ,mBAAmB,GAAG,KAAK;cAACH,UAAA,CAAA5O,IAAA;cAAA,OACnB,IAAI,CAACyL,8BAA8B,CAACoD,yBAAa,EAAE,IAAI,CAAC9K,gBAAgB,CAAC;YAAA;cAAvFwH,KAAK,GAAAqD,UAAA,CAAAvF,IAAA;cAEL,IAAI,CAACkC,KAAK,IAAI,CAAC,IAAI,CAACrF,kBAAkB,CAAC,CAAC,EAAE;gBACxC0G,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,kBAAAzG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAkK,UAAA;kBAAA,OAAAnK,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6J,UAAA;oBAAA,kBAAAA,UAAA,CAAA3J,IAAA,GAAA2J,UAAA,CAAAxP,IAAA;sBAAA;wBAAAwP,UAAA,CAAAxP,IAAA;wBAAA,OACHsO,MAAI,CAACvM,KAAK,CAACqN,YAAY,kBAAAjK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAoK,SAAA;0BAAA,OAAArK,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA+J,SAAA;4BAAA,kBAAAA,SAAA,CAAA7J,IAAA,GAAA6J,SAAA,CAAA1P,IAAA;8BAAA;gCAAA0P,SAAA,CAAA1P,IAAA;gCAAA,OACdsO,MAAI,CAAC7C,8BAA8B,CAACoD,yBAAa,EAAEP,MAAI,CAACvK,gBAAgB,CAAC;8BAAA;gCAAvFwH,KAAK,GAAAmE,SAAA,CAAArG,IAAA;gCAAA,MACD,CAACkC,KAAK,IAAI,CAAC+C,MAAI,CAACpI,kBAAkB,CAAC,CAAC;kCAAAwJ,SAAA,CAAA1P,IAAA;kCAAA;gCAAA;gCAAA0P,SAAA,CAAA1P,IAAA;gCAAA,OAChC,IAAA4J,kBAAU,EAAC,CAAC;8BAAA;gCAClB,IAAA+F,wBAAgB,EAAC,UAACC,WAAsB,EAAK;kCAC3CtB,MAAI,CAACtM,WAAW,CAAC+H,mBAAW,CAAC8F,KAAK,EAAE5J,SAAS,EAAE2J,WAAW,CAAC;gCAC7D,CAAC,EAAErB,aAAa,CAAC;8BAAC;8BAAA;gCAAA,OAAAmB,SAAA,CAAA/I,IAAA;4BAAA;0BAAA,GAAA8I,QAAA;wBAAA,CAErB,GAAC;sBAAA;sBAAA;wBAAA,OAAAD,UAAA,CAAA7I,IAAA;oBAAA;kBAAA,GAAA4I,SAAA;gBAAA,CACH,IAAE3C,QAAQ,GAAGuB,+BAAmB,CAAC;gBAClChL,eAAG,CAACA,GAAG,2CAAAgB,MAAA,CAA2CyI,QAAQ,gBAAa2B,aAAa,CAAC;cACvF;cAACK,UAAA,CAAA5O,IAAA;cAAA;YAAA;cAAA4O,UAAA,CAAA5O,IAAA;cAAA,OAEK,IAAA4J,kBAAU,EAAC,CAAC;YAAA;cAClB,IAAA+F,wBAAgB,EAAC,UAACC,WAAsB,EAAK;gBAC3CtB,MAAI,CAACtM,WAAW,CAAC+H,mBAAW,CAAC8F,KAAK,EAAE5J,SAAS,EAAE2J,WAAW,CAAC;cAC7D,CAAC,EAAErB,aAAa,CAAC;YAAC;YAAA;cAAA,OAAAK,UAAA,CAAAjI,IAAA;UAAA;QAAA,GAAA0H,SAAA;MAAA,CAErB;MAAA,SAvFa7H,kBAAkBA,CAAA;QAAA,OAAA4H,mBAAA,CAAAnN,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlBqF,kBAAkB;IAAA;IAyFhC;AACF;AACA;IAFE;EAAA;IAAAvC,GAAA;IAAAxE,KAAA,EAGA,SAAQuN,kBAAkBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAAC8C,aAAa,EAAE;QACtBC,YAAY,CAAC,IAAI,CAACD,aAAa,CAAC;QAChC,IAAI,CAACA,aAAa,GAAG7J,SAAS;MAChC;IACF;EAAC;IAAAhC,GAAA;IAAAxE,KAAA;MAAA,IAAAuQ,gBAAA,OAAA7K,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAA4K,UAAA;QAAA,IAAAC,MAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAnI,QAAA,EAAAoI,KAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,IAAA;QAAA,OAAAtL,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAgL,UAAA;UAAA,kBAAAA,UAAA,CAAA9K,IAAA,GAAA8K,UAAA,CAAA3Q,IAAA;YAAA;cAAAmQ,SAAA,GAAAxR,0BAAA,CAE0B,IAAI,CAACmF,iBAAiB;cAAA6M,UAAA,CAAA9K,IAAA;cAAAsK,SAAA,CAAA7Q,CAAA;YAAA;cAAA,KAAA8Q,KAAA,GAAAD,SAAA,CAAA5Q,CAAA,IAAAC,IAAA;gBAAAmR,UAAA,CAAA3Q,IAAA;gBAAA;cAAA;cAAnCqQ,SAAS,GAAAD,KAAA,CAAA3Q,KAAA;cAAAkR,UAAA,CAAA9K,IAAA;cAEVyK,OAAO,GAAGD,SAAS,CAACO,OAAO,CAACC,wBAAY,EAAE,GAAG,CAAC,EACpD;cAAAF,UAAA,CAAA3Q,IAAA;cAAA,OACuB,IAAI,CAAC6B,KAAK,CAAC6I,OAAO,CAAC;gBACxCC,GAAG,KAAAxG,MAAA,CAAKmM,OAAO,SAAM;gBACrBxL,MAAM,EAAEkE,oBAAY,CAAC8H,GAAG;gBACxBpH,OAAO,MAAApI,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJ2H,4BAAgB,EAAG,IAAI,CAACrH,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG,GACjDwC,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDqB,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cARI7C,QAAQ,GAAAwI,UAAA,CAAAtH,IAAA;cAAAkH,KAAA,GAUOpI,QAAQ,EAAtBqI,UAAU,GAAAD,KAAA,CAAVC,UAAU;cAAA,MACbA,UAAU,KAAK,GAAG;gBAAAG,UAAA,CAAA3Q,IAAA;gBAAA;cAAA;cACpBmD,eAAG,CAAC8D,IAAI,wCAAA9C,MAAA,CAAwCkM,SAAS,GAAI;gBAC3DxL,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEgI;cACV,CAAC,CAAC;cACFoD,MAAM,GAAG,IAAI;cAAC,OAAAS,UAAA,CAAAjK,MAAA;YAAA;cAAAiK,UAAA,CAAA3Q,IAAA;cAAA;YAAA;cAAA2Q,UAAA,CAAA9K,IAAA;cAAA4K,GAAA,GAAAE,UAAA;cAIhBxN,eAAG,CAACwB,IAAI,oCAAAR,MAAA,CAC6BkM,SAAS,mBAAAlM,MAAA,CAAgB,IAAAM,UAAA,CAAAlD,OAAA,EAAAkP,GAAoB,CAAC,GACjF;gBACE5L,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEgI;cACV,CACF,CAAC;cACDoD,MAAM,GAAG,MAAM;YAAC;cAAAS,UAAA,CAAA3Q,IAAA;cAAA;YAAA;cAAA2Q,UAAA,CAAA3Q,IAAA;cAAA;YAAA;cAAA2Q,UAAA,CAAA9K,IAAA;cAAA6K,IAAA,GAAAC,UAAA;cAAAR,SAAA,CAAAtR,CAAA,CAAA6R,IAAA;YAAA;cAAAC,UAAA,CAAA9K,IAAA;cAAAsK,SAAA,CAAAzQ,CAAA;cAAA,OAAAiR,UAAA,CAAAI,MAAA;YAAA;cAAA,OAAAJ,UAAA,CAAAjK,MAAA,WAIbwJ,MAAM,KAAK,IAAI;YAAA;YAAA;cAAA,OAAAS,UAAA,CAAAhK,IAAA;UAAA;QAAA,GAAAsJ,SAAA;MAAA,CACvB;MAAA,SAtCae,eAAeA,CAAA;QAAA,OAAAhB,gBAAA,CAAA/O,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAf6P,eAAe;IAAA;IAwC7B;AACF;AACA;EAFE;IAAA/M,GAAA;IAAAxE,KAAA,EAGA,SAAQwR,kBAAkBA,CAAA,EAAY;MACpC,OAAO,IAAI,CAAC/K,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAACpC,iBAAiB,CAACoN,OAAO,CAAC,IAAI,CAACpK,eAAe,CAAC,KAAK,CAAC,CAAC;IACjG;;IAEA;AACF;AACA;AACA;EAHE;IAAA7C,GAAA;IAAAxE,KAAA,EAIA,SAAQ0R,mBAAmBA,CAAA,EAAW;MACpC,OAAOhL,IAAI,CAACC,KAAK,CACfD,IAAI,CAAC8H,MAAM,CAAC,CAAC,IAAI,IAAI,CAACzK,mBAAmB,GAAG,IAAI,CAACF,mBAAmB,GAAG,CAAC,CAAC,GACvE,IAAI,CAACA,mBACT,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAW,GAAA;IAAAxE,KAAA,EAIA,SAAQ2R,gBAAgBA,CAAA,EAAG;MACzB,IAAI,IAAI,CAACH,kBAAkB,CAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,IAAI,CAACnB,aAAa,EAAE;UACvB,IAAI,CAAC5M,wBAAwB,GAAG,CAAC;UACjC,IAAMmO,iBAAiB,GAAG,IAAI,CAACF,mBAAmB,CAAC,CAAC;UAEpD,IAAI,CAAChE,kBAAkB,CAACkE,iBAAiB,GAAGC,kCAAsB,CAAC;QACrE;MACF,CAAC,MAAM;QACL,IAAI,CAACpO,wBAAwB,GAAG,CAAC;QACjC,IAAI,CAAC8J,kBAAkB,CAAC,CAAC;MAC3B;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAA/I,GAAA;IAAAxE,KAAA,EAIA,SAAQ0N,kBAAkBA,CAACoE,iBAAyB,EAAE;MAAA,IAAAC,MAAA;MACpD,IAAI,CAAC1B,aAAa,GAAGlE,UAAU,kBAAAzG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAC7B,SAAAoM,UAAA;QAAA,OAAArM,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA+L,UAAA;UAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAA1R,IAAA;YAAA;cAAA,OAAA0R,UAAA,CAAAhL,MAAA,WAAY8K,MAAI,CAACG,eAAe,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA/K,IAAA;UAAA;QAAA,GAAA8K,SAAA;MAAA,KAClCF,iBAAiB,GAAGpD,+BACtB,CAAC;MACDhL,eAAG,CAACA,GAAG,6BAAAgB,MAAA,CAA6BoN,iBAAiB,gBAAa;QAChE1M,IAAI,EAAExB,6BAAiB;QACvByB,MAAM,EAAE,IAAI,CAACqI,kBAAkB,CAAC7M;MAClC,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA2D,GAAA;IAAAxE,KAAA;MAAA,IAAAmS,gBAAA,OAAAzM,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAAwM,UAAA;QAAA,IAAAC,MAAA;QAAA,OAAA1M,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAoM,UAAA;UAAA,kBAAAA,UAAA,CAAAlM,IAAA,GAAAkM,UAAA,CAAA/R,IAAA;YAAA;cAAA+R,UAAA,CAAA/R,IAAA;cAAA,OACQ,IAAI,CAAC+B,KAAK,CAACqN,YAAY,kBAAAjK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA2M,UAAA;gBAAA,IAAAC,mBAAA,EAAA1G,KAAA,EAAA2G,QAAA;gBAAA,OAAA9M,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwM,UAAA;kBAAA,kBAAAA,UAAA,CAAAtM,IAAA,GAAAsM,UAAA,CAAAnS,IAAA;oBAAA;sBAAA,KACxB8R,MAAI,CAACb,kBAAkB,CAAC,CAAC;wBAAAkB,UAAA,CAAAnS,IAAA;wBAAA;sBAAA;sBAAAmS,UAAA,CAAAnS,IAAA;sBAAA,OACO8R,MAAI,CAACd,eAAe,CAAC,CAAC;oBAAA;sBAAlDiB,mBAAmB,GAAAE,UAAA,CAAA9I,IAAA;sBAAA,MACrB,IAAA+I,KAAA,CAAA7Q,OAAA,EAAYuQ,MAAI,CAACpO,WAAW,CAAC2O,cAAc,CAAC,CAAC,CAAC,CAAClT,MAAM,KAAK,CAAC,IAAI8S,mBAAmB;wBAAAE,UAAA,CAAAnS,IAAA;wBAAA;sBAAA;sBACpFmD,eAAG,CAAC8D,IAAI,oCAAoC;wBAC1CpC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEgN,MAAI,CAACH,eAAe,CAACrR;sBAC/B,CAAC,CAAC;sBAAC6R,UAAA,CAAAnS,IAAA;sBAAA,OACG8R,MAAI,CAACQ,UAAU,CAAC,CAAC;oBAAA;sBAAAH,UAAA,CAAAnS,IAAA;sBAAA,OACH8R,MAAI,CAACrG,8BAA8B,CAACqB,yBAAa,CAAC;oBAAA;sBAAhEvB,KAAK,GAAA4G,UAAA,CAAA9I,IAAA;sBAAA,MAEPyI,MAAI,CAAC1E,iBAAiB,IAAI7B,KAAK,IAAIuG,MAAI,CAAC5L,kBAAkB,CAAC,CAAC;wBAAAiM,UAAA,CAAAnS,IAAA;wBAAA;sBAAA;sBAAA,OAAAmS,UAAA,CAAAzL,MAAA;oBAAA;sBAAAyL,UAAA,CAAAnS,IAAA;sBAAA,OAIzC8R,MAAI,CAAC7F,2BAA2B,CAACa,yBAAa,CAAC;oBAAA;sBAAhEoF,QAAQ,GAAAC,UAAA,CAAA9I,IAAA;sBAAA,KAEV6I,QAAQ;wBAAAC,UAAA,CAAAnS,IAAA;wBAAA;sBAAA;sBACV8R,MAAI,CAAC9E,kBAAkB,CAAC,CAAC;sBAAC,OAAAmF,UAAA,CAAAzL,MAAA;oBAAA;sBAAA,IAKvBoL,MAAI,CAAC5L,kBAAkB,CAAC,CAAC;wBAAAiM,UAAA,CAAAnS,IAAA;wBAAA;sBAAA;sBAAAmS,UAAA,CAAAnS,IAAA;sBAAA,OACtB8R,MAAI,CAAC/F,mBAAmB,CAAC+F,MAAI,CAACH,eAAe,CAACrR,IAAI,CAAC;oBAAA;sBAAA6R,UAAA,CAAAnS,IAAA;sBAAA;oBAAA;sBAEzD8R,MAAI,CAAChC,aAAa,GAAG7J,SAAS;sBAC9B6L,MAAI,CAACV,gBAAgB,CAAC,CAAC;oBAAC;sBAAAe,UAAA,CAAAnS,IAAA;sBAAA;oBAAA;sBAG1BmD,eAAG,CAAC8D,IAAI,CACN,mFAAmF,EACnF;wBACEpC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEgN,MAAI,CAACH,eAAe,CAACrR;sBAC/B,CACF,CAAC;sBACDwR,MAAI,CAAChC,aAAa,GAAG7J,SAAS;sBAC9B6L,MAAI,CAACV,gBAAgB,CAAC,CAAC;oBAAC;oBAAA;sBAAA,OAAAe,UAAA,CAAAxL,IAAA;kBAAA;gBAAA,GAAAqL,SAAA;cAAA,CAG7B,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAApL,IAAA;UAAA;QAAA,GAAAkL,SAAA;MAAA,CACH;MAAA,SA3CaF,eAAeA,CAAA;QAAA,OAAAC,gBAAA,CAAA3Q,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAfwQ,eAAe;IAAA;IA6C7B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAA1N,GAAA;IAAAxE,KAAA,EAMA,SAAQ8S,iBAAiBA,CAAC5K,UAAuB,EAAE;MACjD,IAAI,IAAI,CAAC7D,iBAAiB,CAACoN,OAAO,CAAC,IAAI,CAACpK,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D,IAAI,CAACxD,mBAAmB,GAAGqE,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAErE,mBAAmB,GACtDqE,UAAU,CAACrE,mBAAmB,GAC9BC,yCAA6B;QACjC,IAAI,CAACC,mBAAmB,GAAGmE,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEnE,mBAAmB,GACtDmE,UAAU,CAACnE,mBAAmB,GAC9BC,yCAA6B;MACnC;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAQ,GAAA;IAAAxE,KAAA,EAIA,SAAO+S,aAAaA,CAAA,EAAgB;MAClC,OAAO,IAAI,CAAC7K,UAAU;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA1D,GAAA;IAAAxE,KAAA,EAMA,SAAOyG,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAACnD,kBAAkB,KAAKC,0BAAkB,CAACyP,MAAM;IAC9D;EAAC;IAAAxO,GAAA;IAAAxE,KAAA,EAED,SAAOiT,SAASA,CAAA,EAAuB;MACrC,OAAO,IAAI,CAAC3P,kBAAkB;IAChC;EAAC;IAAAkB,GAAA;IAAAxE,KAAA,EAED,SAAOoK,SAASA,CAACpK,KAAyB,EAAE;MAC1C,IAAI,CAACsD,kBAAkB,GAAGtD,KAAK;IACjC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAwE,GAAA;IAAAxE,KAAA;MAAA,IAAAkT,oBAAA,OAAAxN,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAKA,SAAAuN,UAAkCvH,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAkN,UAAA;UAAA,kBAAAA,UAAA,CAAAhN,IAAA,GAAAgN,UAAA,CAAA7S,IAAA;YAAA;cAC9C;AACJ;AACA;AACA;cACI,IAAI,CAACgN,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAAC9J,wBAAwB,GAAG,CAAC;cAAC2P,UAAA,CAAA7S,IAAA;cAAA,OACd,IAAI,CAACyL,8BAA8B,CAACJ,MAAM,EAAE,IAAI,CAACvH,iBAAiB,CAAC;YAAA;cAAjFyH,KAAK,GAAAsH,UAAA,CAAAxJ,IAAA;cAAA,MAEP,CAACkC,KAAK,IAAI,CAAC,IAAI,CAACrF,kBAAkB,CAAC,CAAC;gBAAA2M,UAAA,CAAA7S,IAAA;gBAAA;cAAA;cAAA6S,UAAA,CAAA7S,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAqM,UAAA,CAAAlM,IAAA;UAAA;QAAA,GAAAiM,SAAA;MAAA,CAElC;MAAA,SAZa7G,mBAAmBA,CAAA+G,GAAA;QAAA,OAAAH,oBAAA,CAAA1R,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnB4K,mBAAmB;IAAA;IAcjC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA9H,GAAA;IAAAxE,KAAA;MAAA,IAAAsT,4BAAA,OAAA5N,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAKA,SAAA2N,UAAyCC,KAAc;QAAA,IAAAC,MAAA;QAAA,OAAA9N,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwN,UAAA;UAAA,kBAAAA,UAAA,CAAAtN,IAAA,GAAAsN,UAAA,CAAAnT,IAAA;YAAA;cACrDmD,eAAG,CAAC8D,IAAI,CAACC,+BAAoB,EAAE;gBAC7BpC,MAAM,EAAEqC,mBAAO,CAACiM,6BAA6B;gBAC7CvO,IAAI,EAAExB;cACR,CAAC,CAAC;cAAC8P,UAAA,CAAAnT,IAAA;cAAA,OACG,IAAI,CAAC+B,KAAK,CAACqN,YAAY,kBAAAjK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAgO,UAAA;gBAAA,IAAA9H,KAAA;gBAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA2N,UAAA;kBAAA,kBAAAA,UAAA,CAAAzN,IAAA,GAAAyN,UAAA,CAAAtT,IAAA;oBAAA;sBAAA,KAExBiT,KAAK;wBAAAK,UAAA,CAAAtT,IAAA;wBAAA;sBAAA;sBACPmD,eAAG,CAACA,GAAG,CAAC,kEAAkE,EAAE;wBAC1E0B,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEqC,mBAAO,CAACiM;sBAClB,CAAC,CAAC;sBACFF,MAAI,CAAC7F,mBAAmB,CAAC,CAAC;sBAAC,KACvB6F,MAAI,CAAChN,kBAAkB,CAAC,CAAC;wBAAAoN,UAAA,CAAAtT,IAAA;wBAAA;sBAAA;sBAAAsT,UAAA,CAAAtT,IAAA;sBAAA,OAErBkT,MAAI,CAACZ,UAAU,CAAC,CAAC;oBAAA;sBAAA,KAQrBY,MAAI,CAACpM,eAAe;wBAAAwM,UAAA,CAAAtT,IAAA;wBAAA;sBAAA;sBAAAsT,UAAA,CAAAtT,IAAA;sBAAA,OAOFkT,MAAI,CAACjH,2BAA2B,CAClD9E,mBAAO,CAACiM,6BACV,CAAC;oBAAA;sBAFK7H,KAAK,GAAA+H,UAAA,CAAAjK,IAAA;sBAAA,MAIP,CAACkC,KAAK,IAAI,CAAC2H,MAAI,CAAChN,kBAAkB,CAAC,CAAC;wBAAAoN,UAAA,CAAAtT,IAAA;wBAAA;sBAAA;sBAAAsT,UAAA,CAAAtT,IAAA;sBAAA,OAChCkT,MAAI,CAACnH,mBAAmB,CAAC5E,mBAAO,CAACiM,6BAA6B,CAAC;oBAAA;sBAGzEH,KAAK,GAAG,KAAK;oBAAC;oBAAA;sBAAA,OAAAK,UAAA,CAAA3M,IAAA;kBAAA;gBAAA,GAAA0M,SAAA;cAAA,CAEjB,GAAC;YAAA;cAAA,OAAAF,UAAA,CAAAzM,MAAA,WAEKuM,KAAK;YAAA;YAAA;cAAA,OAAAE,UAAA,CAAAxM,IAAA;UAAA;QAAA,GAAAqM,SAAA;MAAA,CACb;MAAA,SA3CYO,2BAA2BA,CAAAC,GAAA;QAAA,OAAAT,4BAAA,CAAA9R,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3BoS,2BAA2B;IAAA;IA6CxC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAtP,GAAA;IAAAxE,KAAA,EAKA,SAAQgU,2BAA2BA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACpC;QAAA,IAAAC,KAAA,OAAAxO,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAO,SAAAuO,UAAOC,WAAwB,EAAExI,MAAc;UAAA,IAAAyI,UAAA,EAAAC,OAAA,EAAAC,UAAA;UAAA,OAAA5O,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAsO,UAAA;YAAA,kBAAAA,UAAA,CAAApO,IAAA,GAAAoO,UAAA,CAAAjU,IAAA;cAAA;gBAC9C8T,UAAU,GAAG;kBAACjP,IAAI,EAAExB,6BAAiB;kBAAEyB,MAAM,EAAEuG;gBAAM,CAAC;gBAAA,IACvDqI,MAAI,CAACQ,UAAU,CAAC,CAAC;kBAAAD,UAAA,CAAAjU,IAAA;kBAAA;gBAAA;gBACpBmD,eAAG,CAAC8D,IAAI,CAAC,uCAAuC,EAAE6M,UAAU,CAAC;gBACvDC,OAAO,GAAGL,MAAI,CAACS,iBAAiB,CAACN,WAAW,CAAC;gBAAA,KAE/CE,OAAO;kBAAAE,UAAA,CAAAjU,IAAA;kBAAA;gBAAA;gBACT0T,MAAI,CAACU,WAAW,CAAC,IAAI,CAAC;gBAACH,UAAA,CAAAjU,IAAA;gBAAA,OACjB0T,MAAI,CAACpB,UAAU,CAAC,CAAC;cAAA;gBAAA2B,UAAA,CAAAjU,IAAA;gBAAA,OACE0T,MAAI,CAACzH,2BAA2B,CAACZ,MAAM,CAAC;cAAA;gBAA3D2I,UAAU,GAAAC,UAAA,CAAA5K,IAAA;gBAChBqK,MAAI,CAACU,WAAW,CAAC,KAAK,CAAC;gBACvB,IAAIV,MAAI,CAACxN,kBAAkB,CAAC,CAAC,EAAE;kBAC7B/C,eAAG,CAAC8D,IAAI,CAAC,qCAAqC,EAAE6M,UAAU,CAAC;gBAC7D;gBAAC,OAAAG,UAAA,CAAAvN,MAAA,WAEMsN,UAAU;cAAA;gBAEnBN,MAAI,CAAC1R,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;gBAACiK,UAAA,CAAAjU,IAAA;gBAAA;cAAA;gBAE3C0T,MAAI,CAAC1R,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;cAAC;gBAAA,OAAAiK,UAAA,CAAAvN,MAAA,WAGtC,KAAK;cAAA;cAAA;gBAAA,OAAAuN,UAAA,CAAAtN,IAAA;YAAA;UAAA,GAAAiN,SAAA;QAAA,CACb;QAAA,iBAAAS,GAAA,EAAAC,IAAA;UAAA,OAAAX,KAAA,CAAA1S,KAAA,OAAAE,SAAA;QAAA;MAAA;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAA8C,GAAA;IAAAxE,KAAA;MAAA,IAAA8U,oBAAA,OAAApP,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAAmP,UAAA;QAAA,IAAAjJ,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA8O,UAAA;UAAA,kBAAAA,UAAA,CAAA5O,IAAA,GAAA4O,UAAA,CAAAzU,IAAA;YAAA;cAAAyU,UAAA,CAAAzU,IAAA;cAAA,OACY,IAAI,CAAC4G,cAAc,CAAC,CAAC;YAAA;cAAA,KAAA6N,UAAA,CAAApL,IAAA;gBAAAoL,UAAA,CAAAzU,IAAA;gBAAA;cAAA;cAAA,OAAAyU,UAAA,CAAA/N,MAAA;YAAA;cAAA,MAI3B,IAAI,CAAC5C,iBAAiB,CAAC3E,MAAM,GAAG,CAAC;gBAAAsV,UAAA,CAAAzU,IAAA;gBAAA;cAAA;cAAAyU,UAAA,CAAAzU,IAAA;cAAA,OACf,IAAI,CAACyL,8BAA8B,CACrDiJ,6BAAiB,EACjB,IAAI,CAAC5Q,iBACP,CAAC;YAAA;cAHKyH,KAAK,GAAAkJ,UAAA,CAAApL,IAAA;cAAA,MAKP,CAAC,IAAI,CAACnD,kBAAkB,CAAC,CAAC,IAAI,CAACqF,KAAK;gBAAAkJ,UAAA,CAAAzU,IAAA;gBAAA;cAAA;cAAAyU,UAAA,CAAAzU,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAiO,UAAA,CAAA9N,IAAA;UAAA;QAAA,GAAA6N,SAAA;MAAA,CAGpC;MAAA,SAfYG,mBAAmBA,CAAA;QAAA,OAAAJ,oBAAA,CAAAtT,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBwT,mBAAmB;IAAA;IAiBhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAA1Q,GAAA;IAAAxE,KAAA;MAAA,IAAAmV,+BAAA,OAAAzP,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAQA,SAAAwP,UACExJ,MAAc;QAAA,IAAAyJ,MAAA;QAAA,IAAAC,OAAA;UAAAxJ,KAAA;UAAAyJ,UAAA;UAAAC,MAAA;UAAAC,KAAA;UAAAC,IAAA;UAAAC,OAAA,GAAAjU,SAAA;UAAAkU,IAAA;QAAA,OAAAjQ,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA2P,UAAA;UAAA,kBAAAA,UAAA,CAAAzP,IAAA,GAAAyP,UAAA,CAAAtV,IAAA;YAAA;cACd+U,OAAiB,GAAAK,OAAA,CAAAjW,MAAA,QAAAiW,OAAA,QAAAnP,SAAA,GAAAmP,OAAA,MAAG,IAAI,CAACtR,iBAAiB;cAEtCyH,KAAK,GAAG,KAAK;cACjB,IAAI,CAACG,UAAU,GAAGzF,SAAS;cAAC,KAExB,IAAI,CAAC8I,mBAAmB;gBAAAuG,UAAA,CAAAtV,IAAA;gBAAA;cAAA;cAAA,OAAAsV,UAAA,CAAA5O,MAAA,WACnB6E,KAAK;YAAA;cAAA,KAGV,IAAI,CAACrF,kBAAkB,CAAC,CAAC;gBAAAoP,UAAA,CAAAtV,IAAA;gBAAA;cAAA;cAC3BmD,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CAAKkH,MAAM,2CAAAlH,MAAA,CAAwC,IAAI,CAAC2C,eAAe,GAAI;gBACjFjC,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEyQ;cACV,CAAC,CAAC;cAAC,OAAAD,UAAA,CAAA5O,MAAA,WAEI6E,KAAK;YAAA;cAAAyJ,UAAA,GAAArW,0BAAA,CAEIoW,OAAO;cAAAO,UAAA,CAAAzP,IAAA;cAAAqP,KAAA,gBAAA9P,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,UAAA6P,MAAA;gBAAA,IAAAM,qBAAA;gBAAA,IAAAxO,GAAA,EAAAiI,UAAA,EAAAwG,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,cAAA,EAAAC,sBAAA,EAAAC,IAAA,EAAAjL,IAAA,EAAAkL,IAAA;gBAAA,OAAA3Q,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAqQ,UAAA;kBAAA,kBAAAA,UAAA,CAAAnQ,IAAA,GAAAmQ,UAAA,CAAAhW,IAAA;oBAAA;sBAAdgH,GAAG,GAAAiO,MAAA,CAAAxV,KAAA;sBACNwP,UAAU,GACb6F,MAAI,CAAChR,iBAAiB,CAACkI,QAAQ,CAAChF,GAAG,CAAC,IAAI,SAAS,IACjD,EAAAwO,qBAAA,GAAAV,MAAI,CAAC/Q,gBAAgB,cAAAyR,qBAAA,uBAArBA,qBAAA,CAAuBxJ,QAAQ,CAAChF,GAAG,CAAC,KAAI,QAAS,IAClD,SAAS;sBAAAgP,UAAA,CAAAnQ,IAAA;sBAET0F,KAAK,GAAG,KAAK;sBACbuJ,MAAI,CAAC/R,kBAAkB,GAAGC,0BAAkB,CAAC8G,QAAQ;sBACrDgL,MAAI,CAAC9S,WAAW,CAAC+H,mBAAW,CAACkM,UAAU,CAAC;sBACxC9S,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CAAKkH,MAAM,iCAAAlH,MAAA,CAA8B6C,GAAG,GAAI;wBACtDnC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEyQ;sBACV,CAAC,CAAC;sBACF;sBAAAS,UAAA,CAAAhW,IAAA;sBAAA,OACmB8U,MAAI,CAAC7J,gBAAgB,CAACjE,GAAG,CAAC;oBAAA;sBAAvC8O,IAAI,GAAAE,UAAA,CAAA3M,IAAA;sBACVyL,MAAI,CAAC/P,kBAAkB,CAAC,CAAC;sBACzB+P,MAAI,CAACnN,UAAU,GAAGmO,IAAI,CAACjL,IAAmB;sBAC1CiK,MAAI,CAAC/R,kBAAkB,GAAGC,0BAAkB,CAACyP,MAAM;sBACnDqC,MAAI,CAAC/N,kBAAkB,CAACC,GAAG,CAAC;sBAC5B8N,MAAI,CAAC9S,WAAW,CAAC+H,mBAAW,CAACmM,UAAU,EAAEJ,IAAI,CAACjL,IAAmB,CAAC;sBAClE1H,eAAG,CAACA,GAAG,0CAAAgB,MAAA,EAAAsR,qBAAA,GACoCX,MAAI,CAACnN,UAAU,CAAC7E,MAAM,cAAA2S,qBAAA,uBAAtBA,qBAAA,CAAwBzN,QAAQ,eAAA7D,MAAA,CAAY2Q,MAAI,CAAClS,MAAM,2BAAAuB,MAAA,EAAAuR,aAAA,GAAwBI,IAAI,CAACpM,OAAO,cAAAgM,aAAA,uBAAZA,aAAA,CAAcS,UAAU,GAChJ;wBACEtR,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEqC,mBAAO,CAACiP;sBAClB,CACF,CAAC;sBACDtB,MAAI,CAACvC,iBAAiB,CAACuC,MAAI,CAACnN,UAAU,CAAC;sBACvCmN,MAAI,CAAClR,aAAa,CAAC0D,aAAa,CAACwN,MAAI,CAACnN,UAAU,CAAC;sBACjDmN,MAAI,CAAClR,aAAa,CAACyS,wBAAwB,CACzCC,mBAAY,CAACC,YAAY,EACzBC,iBAAU,CAACJ,QAAQ,EACnBK,kBAAW,CAACC,UAAU,EACtBrL,MAAM,EACN4D,UAAU,GAAA0G,qBAAA,IAAAC,cAAA,GACVE,IAAI,CAACpM,OAAO,cAAAkM,cAAA,uBAAZA,cAAA,CAAcO,UAAU,cAAAR,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9B1P,SAAS,EACTA,SACF,CAAC;sBACD6O,MAAI,CAACrH,mBAAmB,EAAAoI,sBAAA,GACtBf,MAAI,CAACnN,UAAU,CAAC7E,MAAM,cAAA+S,sBAAA,uBAAtBA,sBAAA,CAAwBlL,GAAG,EAC3BmK,MAAI,CAACnN,UAAU,CAAC+F,iBAAiB,EACjCuB,UACF,CAAC;sBACD6F,MAAI,CAAC1D,gBAAgB,CAAC,CAAC;sBAAC,OAAA4E,UAAA,CAAAtP,MAAA;oBAAA;sBAAAsP,UAAA,CAAAnQ,IAAA;sBAAAkQ,IAAA,GAAAC,UAAA;sBAGlBnL,IAAI,GAAAkL,IAAA,EACV;sBAAAC,UAAA,CAAAhW,IAAA;sBAAA,OACc,IAAA2W,gCAAwB,EACpC9L,IAAI,EACJ,UAAC+E,WAAW,EAAEoE,UAAU,EAAK;wBAAA,IAAA4C,qBAAA,EAAAC,aAAA;wBAC3B,IAAI7C,UAAU,EAAE;0BACdc,MAAI,CAAC9S,WAAW,CAAC+H,mBAAW,CAAC8F,KAAK,EAAE5J,SAAS,EAAE2J,WAAW,CAAC;wBAC7D,CAAC,MAAM;0BACLkF,MAAI,CAAC9S,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;wBAC5C;wBACA8K,MAAI,CAAClR,aAAa,CAACyS,wBAAwB,CACzCC,mBAAY,CAACQ,kBAAkB,EAC/BN,iBAAU,CAACJ,QAAQ,EACnBK,kBAAW,CAACC,UAAU,EACtBrL,MAAM,EACN4D,UAAU,GAAA2H,qBAAA,IAAAC,aAAA,GACVhM,IAAI,CAACnB,OAAO,cAAAmN,aAAA,uBAAZA,aAAA,CAAcV,UAAU,cAAAS,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9B3Q,SAAS,EACT2J,WACF,CAAC;sBACH,CAAC,EACD;wBAAC9K,MAAM,EAAEuG,MAAM;wBAAExG,IAAI,EAAExB;sBAAiB,CAAC,EACzC,UAACqI,UAAkB,EAAEqL,WAAmB;wBAAA,OAAKjC,MAAI,CAACnH,cAAc,CAACjC,UAAU,EAAEqL,WAAW,CAAC;sBAAA,GACzFjC,MAAI,CAACrB,2BAA2B,CAAC,CACnC,CAAC;oBAAA;sBAtBDlI,KAAK,GAAAyK,UAAA,CAAA3M,IAAA;sBAAA,MAuBDyL,MAAI,CAAC/R,kBAAkB,KAAKC,0BAAkB,CAACyP,MAAM;wBAAAuD,UAAA,CAAAhW,IAAA;wBAAA;sBAAA;sBACvDmD,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CACFkH,MAAM,yDAAAlH,MAAA,CAAsD2Q,MAAI,CAAChO,eAAe,GACpF;wBACEjC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEgQ,MAAI,CAACrJ,8BAA8B,CAACnL;sBAC9C,CACF,CAAC;sBAAC,OAAA0V,UAAA,CAAAtP,MAAA;oBAAA;sBAAA,KAGA6E,KAAK;wBAAAyK,UAAA,CAAAhW,IAAA;wBAAA;sBAAA;sBACP8U,MAAI,CAACjL,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;sBAC3C;sBAAAkM,UAAA,CAAAhW,IAAA;sBAAA,OACM,IAAA4J,kBAAU,EAAC,CAAC;oBAAA;sBAAA,OAAAoM,UAAA,CAAAtP,MAAA;oBAAA;oBAAA;sBAAA,OAAAsP,UAAA,CAAArP,IAAA;kBAAA;gBAAA,GAAAuO,KAAA;cAAA;cAAAF,UAAA,CAAA1V,CAAA;YAAA;cAAA,KAAA2V,MAAA,GAAAD,UAAA,CAAAzV,CAAA,IAAAC,IAAA;gBAAA8V,UAAA,CAAAtV,IAAA;gBAAA;cAAA;cAAA,OAAAsV,UAAA,CAAA0B,aAAA,CAAA9B,KAAA;YAAA;cAAAC,IAAA,GAAAG,UAAA,CAAA2B,EAAA;cAAA,MAAA9B,IAAA;gBAAAG,UAAA,CAAAtV,IAAA;gBAAA;cAAA;cAAA,OAAAsV,UAAA,CAAA5O,MAAA;YAAA;cAAA4O,UAAA,CAAAtV,IAAA;cAAA;YAAA;cAAAsV,UAAA,CAAAtV,IAAA;cAAA;YAAA;cAAAsV,UAAA,CAAAzP,IAAA;cAAAwP,IAAA,GAAAC,UAAA;cAAAN,UAAA,CAAAnW,CAAA,CAAAwW,IAAA;YAAA;cAAAC,UAAA,CAAAzP,IAAA;cAAAmP,UAAA,CAAAtV,CAAA;cAAA,OAAA4V,UAAA,CAAAvE,MAAA;YAAA;cAAA,OAAAuE,UAAA,CAAA5O,MAAA,WAOjB6E,KAAK;YAAA;YAAA;cAAA,OAAA+J,UAAA,CAAA3O,IAAA;UAAA;QAAA,GAAAkO,SAAA;MAAA,CACb;MAAA,SAhHapJ,8BAA8BA,CAAAyL,IAAA;QAAA,OAAAtC,+BAAA,CAAA3T,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA9BsK,8BAA8B;IAAA;IAkH5C;AACF;AACA;AACA;IAHE;EAAA;IAAAxH,GAAA;IAAAxE,KAAA;MAAA,IAAA0X,oBAAA,OAAAhS,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA+R,UAAkCpQ,GAAW,EAAE4F,QAAgB,EAAEqC,UAAuB;QAAA,IAAAoI,MAAA;QAAA,IAAAC,qBAAA;QAAA,OAAAlS,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA4R,UAAA;UAAA,kBAAAA,UAAA,CAAA1R,IAAA,GAAA0R,UAAA,CAAAvX,IAAA;YAAA;cACtF,IAAI,CAACqN,mBAAmB,CAAC,CAAC;cACpBiK,qBAAqB,GAAG,IAAI,CAAChV,QAAQ,GAAG,CAAC,GAAG,CAAC;cAAAiV,UAAA,CAAAvX,IAAA;cAAA,OAE7C,IAAI,CAAC+B,KAAK,CAACqN,YAAY,kBAAAjK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAmS,UAAA;gBAAA,IAAAC,WAAA,EAAAC,IAAA,EAAAC,OAAA;gBAAA,OAAAvS,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAiS,UAAA;kBAAA,kBAAAA,UAAA,CAAA/R,IAAA,GAAA+R,UAAA,CAAA5X,IAAA;oBAAA;sBAAA,KACxBqX,MAAI,CAACnR,kBAAkB,CAAC,CAAC;wBAAA0R,UAAA,CAAA5X,IAAA;wBAAA;sBAAA;sBAAA4X,UAAA,CAAA5X,IAAA;sBAAA,OACDqX,MAAI,CAACxV,KAAK,CAACsH,WAAW,CAACC,YAAY,CAAC,CAAC;oBAAA;sBAAzDqO,WAAW,GAAAG,UAAA,CAAAvO,IAAA;sBAEjB,IAAI,CAACgO,MAAI,CAACQ,SAAS,EAAE;wBACbH,IAAI,GAAG,IAAII,IAAI,CAAC,CAACC,qBAAY,CAAC,EAAE;0BAACC,IAAI,EAAE;wBAAwB,CAAC,CAAC;wBACjEL,OAAO,GAAGM,GAAG,CAACC,eAAe,CAACR,IAAI,CAAC;wBACzCL,MAAI,CAACQ,SAAS,GAAG,IAAIM,MAAM,CAACR,OAAO,CAAC;wBACpCM,GAAG,CAACG,eAAe,CAACT,OAAO,CAAC;wBAE5BN,MAAI,CAACQ,SAAS,CAACQ,WAAW,CAAC;0BACzBL,IAAI,EAAEM,yBAAiB,CAACC,eAAe;0BACvCd,WAAW,EAAE7S,MAAM,CAAC6S,WAAW,CAAC;0BAChCxP,SAAS,EAAErD,MAAM,CAACyS,MAAI,CAACxV,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG,CAAC;0BACjD4F,QAAQ,EAARA,QAAQ;0BACR4L,mBAAmB,EAAElB,qBAAqB;0BAC1CtQ,GAAG,EAAHA;wBACF,CAAC,CAAC;wBAEFqQ,MAAI,CAACQ,SAAS,CAACY,SAAS;0BAAA,IAAAC,MAAA,OAAAvT,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAG,SAAAsT,UAAOC,KAAmB;4BAAA,IAAA9E,UAAA,EAAApP,KAAA,EAAA6G,KAAA;4BAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAkT,UAAA;8BAAA,kBAAAA,UAAA,CAAAhT,IAAA,GAAAgT,UAAA,CAAA7Y,IAAA;gCAAA;kCAC7C8T,UAAU,GAAG;oCACjBjP,IAAI,EAAExB,6BAAiB;oCACvByB,MAAM,EAAEwH;kCACV,CAAC;kCACD,IAAIsM,KAAK,CAACE,IAAI,CAACd,IAAI,KAAKM,yBAAiB,CAACS,iBAAiB,EAAE;oCAC3D5V,eAAG,CAAC8D,IAAI,4BAAA9C,MAAA,CAA4ByU,KAAK,CAACE,IAAI,CAACtI,UAAU,GAAIsD,UAAU,CAAC;oCACxEuD,MAAI,CAACrV,WAAW,CAAC+H,mBAAW,CAACiP,WAAW,CAAC;kCAC3C;kCAAC,MAEGJ,KAAK,CAACE,IAAI,CAACd,IAAI,KAAKM,yBAAiB,CAACW,iBAAiB;oCAAAJ,UAAA,CAAA7Y,IAAA;oCAAA;kCAAA;kCACnD0E,KAAK,GAAwBkU,KAAK,CAACE,IAAI,CAACI,GAAG;kCACjD/V,eAAG,CAACwB,IAAI,sBAAAR,MAAA,CACeyU,KAAK,CAACE,IAAI,CAACK,mBAAmB,wBAAAhV,MAAA,CAAqBO,KAAK,CAAC8L,UAAU,QACxFsD,UACF,CAAC;kCAAC+E,UAAA,CAAA7Y,IAAA;kCAAA,OAEkB,IAAA2W,gCAAwB,EAC1CjS,KAAK,EACL,UAACkL,WAAW,EAAEoE,UAAU,EAAK;oCAAA,IAAAoF,qBAAA,EAAAC,cAAA;oCAC3B,IAAIrF,UAAU,EAAE;sCACdqD,MAAI,CAACrV,WAAW,CAAC+H,mBAAW,CAAC8F,KAAK,EAAE5J,SAAS,EAAE2J,WAAW,CAAC;oCAC7D;oCAEAyH,MAAI,CAACzT,aAAa,CAACyS,wBAAwB,CACzCC,mBAAY,CAACgD,eAAe,EAC5B9C,iBAAU,CAACyC,iBAAiB,EAC5BxC,kBAAW,CAACC,UAAU,EACtBpK,0BAAc,EACd2C,UAAU,GAAAmK,qBAAA,IAAAC,cAAA,GACV3U,KAAK,CAACgF,OAAO,cAAA2P,cAAA,uBAAbA,cAAA,CAAelD,UAAU,cAAAiD,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC/BR,KAAK,CAACE,IAAI,CAACK,mBAAmB,EAC9BvJ,WACF,CAAC;kCACH,CAAC,EACD;oCAAC9K,MAAM,EAAEwH,0BAAc;oCAAEzH,IAAI,EAAExB;kCAAiB,CAAC,EACjD,UAACqI,UAAkB,EAAEqL,WAAmB;oCAAA,OACtCM,MAAI,CAAC1J,cAAc,CAACjC,UAAU,EAAEqL,WAAW,CAAC;kCAAA,CAChD,CAAC;gCAAA;kCArBKxL,KAAK,GAAAsN,UAAA,CAAAxP,IAAA;kCAAA,MAuBPkC,KAAK,IAAIqN,KAAK,CAACE,IAAI,CAACK,mBAAmB,IAAI7B,qBAAqB;oCAAAuB,UAAA,CAAA7Y,IAAA;oCAAA;kCAAA;kCAClEqX,MAAI,CAACtI,mBAAmB,GAAGsI,MAAI,CAAC/U,QAAQ;kCACxC+U,MAAI,CAACxN,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;kCAC3CuN,MAAI,CAAChK,mBAAmB,CAAC,CAAC;kCAC1BgK,MAAI,CAACrK,kBAAkB,CAAC,CAAC;kCACzBqK,MAAI,CAACrV,WAAW,CAAC+H,mBAAW,CAACC,YAAY,CAAC;kCAAC6O,UAAA,CAAA7Y,IAAA;kCAAA,OACrC,IAAA4J,kBAAU,EAAC,CAAC;gCAAA;kCAAA,IAEb2B,KAAK;oCAAAsN,UAAA,CAAA7Y,IAAA;oCAAA;kCAAA;kCAAA6Y,UAAA,CAAA7Y,IAAA;kCAAA,OAEFqX,MAAI,CAACkC,kBAAkB,CAACC,qCAAyB,CAAC;gCAAA;kCAAAX,UAAA,CAAA7Y,IAAA;kCAAA;gCAAA;kCACnD,IAAI0E,KAAK,CAAC8L,UAAU,KAAK,GAAG,EAAE;oCACnC6G,MAAI,CAAC9K,yBAAyB,CAACD,0BAAc,CAAC;kCAChD;gCAAC;kCAAAuM,UAAA,CAAA7Y,IAAA;kCAAA;gCAAA;kCAEDqX,MAAI,CAACrV,WAAW,CAAC+H,mBAAW,CAAC0P,YAAY,CAAC;gCAAC;gCAAA;kCAAA,OAAAZ,UAAA,CAAAlS,IAAA;8BAAA;4BAAA,GAAAgS,SAAA;0BAAA,CAGhD;0BAAA,iBAAAe,IAAA;4BAAA,OAAAhB,MAAA,CAAAzX,KAAA,OAAAE,SAAA;0BAAA;wBAAA;sBACH;oBAAC;oBAAA;sBAAA,OAAAyW,UAAA,CAAAjR,IAAA;kBAAA;gBAAA,GAAA6Q,SAAA;cAAA,CAEJ,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA5Q,IAAA;UAAA;QAAA,GAAAyQ,SAAA;MAAA,CACH;MAAA,SArFa3J,mBAAmBA,CAAAkM,IAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAA1C,oBAAA,CAAAlW,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBsM,mBAAmB;IAAA;IAuFjC;AACF;AACA;IAFE;EAAA;IAAAxJ,GAAA;IAAAxE,KAAA,EAGA,SAAO4N,mBAAmBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAACwK,SAAS,EAAE;QAClB,IAAI,CAACA,SAAS,CAACQ,WAAW,CAAC;UAACL,IAAI,EAAEM,yBAAiB,CAACwB;QAAe,CAAC,CAAC;QACrE,IAAI,CAACjC,SAAS,CAACkC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAClC,SAAS,GAAG5R,SAAS;MAC5B;IACF;EAAC;IAAAhC,GAAA;IAAAxE,KAAA,EAED,SAAOua,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAACC,gBAAgB;IAC9B;EAAC;IAAAhW,GAAA;IAAAxE,KAAA;MAAA,IAAAya,WAAA,OAAA/U,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAA8U,UAAA;QAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,IAAA;QAAA,OAAAlV,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA4U,UAAA;UAAA,kBAAAA,UAAA,CAAA1U,IAAA,GAAA0U,UAAA,CAAAva,IAAA;YAAA;cAAAua,UAAA,CAAA1U,IAAA;cAAA0U,UAAA,CAAAva,IAAA;cAAA,OAEU,IAAI,CAACkK,kBAAkB,CAC3B,IAAI,CAACpD,eAAe,GAAAsT,qBAAA,GACpB,IAAI,CAACzS,UAAU,CAAC7E,MAAM,cAAAsX,qBAAA,uBAAtBA,qBAAA,CAAwBpS,QAAQ,GAAAqS,sBAAA,GAChC,IAAI,CAAC1S,UAAU,CAAC7E,MAAM,cAAAuX,sBAAA,uBAAtBA,sBAAA,CAAwB5P,eAC1B,CAAC;YAAA;cACDtH,eAAG,CAACA,GAAG,CAAC,wCAAwC,EAAE;gBAChD0B,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACqT;cAClB,CAAC,CAAC;cAACD,UAAA,CAAAva,IAAA;cAAA;YAAA;cAAAua,UAAA,CAAA1U,IAAA;cAAAyU,IAAA,GAAAC,UAAA;cAEHpX,eAAG,CAACwB,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAlD,OAAA,EAAA+Y,IAAkB,CAAC,GAAI;gBAC5DzV,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACqT;cAClB,CAAC,CAAC;YAAC;cAGL,IAAI,CAACnN,mBAAmB,CAAC,CAAC;cAC1B,IAAI,CAACxD,SAAS,CAAC7G,0BAAkB,CAAC8G,QAAQ,CAAC;cAC3C,IAAI,CAAC/E,kBAAkB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAwV,UAAA,CAAA5T,IAAA;UAAA;QAAA,GAAAwT,SAAA;MAAA,CAC3B;MAAA,SArBY7H,UAAUA,CAAA;QAAA,OAAA4H,WAAA,CAAAjZ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAVmR,UAAU;IAAA;IAuBvB;AACF;AACA;AACA;EAHE;IAAArO,GAAA;IAAAxE,KAAA,EAIA,SAAQyU,UAAUA,CAAA,EAAY;MAC5B,OAAO,IAAI,CAACuG,aAAa;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAxW,GAAA;IAAAxE,KAAA,EAKA,SAAQ2U,WAAWA,CAAC3U,KAAc,EAAE;MAClC,IAAI,CAACgb,aAAa,GAAGhb,KAAK;IAC5B;;IAEA;AACF;AACA;AACA;EAHE;IAAAwE,GAAA;IAAAxE,KAAA,EAIA,SAAQ0U,iBAAiBA,CAACN,WAAwB,EAAE;MAClD,IAAIA,WAAW,CAACnM,OAAO,IAAImM,WAAW,CAACnM,OAAO,CAACvI,MAAM,GAAG,CAAC,EAAE;QACzD,IAAI,CAACwI,UAAU,GAAG;UAChB/E,MAAM,EAAEiR,WAAW,CAACjR,MAAM;UAC1BE,MAAM,EAAE+Q,WAAW,CAACnM,OAAO,CAAC,CAAC,CAAC;UAC9BgG,iBAAiB,EAAEgN,sCAA0B;UAC7ClX,mBAAmB,EAAEC,yCAA6B;UAClDH,mBAAmB,EAAEC;QACvB,CAAC;QAED,IAAMoX,eAAe,MAAAxW,MAAA,CAAM4E,qCAAyB,OAAA5E,MAAA,CAAI0P,WAAW,CAACnM,OAAO,CAAC,CAAC,CAAC,CAACM,QAAQ,CAAE;QAEzF,IAAM2C,GAAG,GAAGkJ,WAAW,CAACnM,OAAO,CAAC,CAAC,CAAC,CAACiD,GAAG,CAACiG,OAAO,CAAC+J,eAAe,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC5T,kBAAkB,CAAC4D,GAAG,CAAC;QAC5B,IAAI,CAAC5H,kBAAkB,GAAGC,0BAAkB,CAACyP,MAAM;QAEnD,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAxO,GAAA;IAAAxE,KAAA;MAAA,IAAAmb,mBAAA,OAAAzV,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CASA,SAAAwV,UAAgCxP,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAAnG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAmV,UAAA;UAAA,kBAAAA,UAAA,CAAAjV,IAAA,GAAAiV,UAAA,CAAA9a,IAAA;YAAA;cAC5CmD,eAAG,CAAC8D,IAAI,CAACC,+BAAoB,EAAE;gBAACpC,MAAM,EAAEqC,mBAAO,CAAC4T,oBAAoB;gBAAElW,IAAI,EAAExB;cAAiB,CAAC,CAAC;cAC/F,IAAI,CAAC4W,gBAAgB,GAAG,KAAK;cAAC,IACzB,IAAI,CAAC/T,kBAAkB,CAAC,CAAC;gBAAA4U,UAAA,CAAA9a,IAAA;gBAAA;cAAA;cAAA,MACxB,IAAAoS,KAAA,CAAA7Q,OAAA,EAAY,IAAI,CAACmC,WAAW,CAAC2O,cAAc,CAAC,CAAC,CAAC,CAAClT,MAAM,KAAK,CAAC;gBAAA2b,UAAA,CAAA9a,IAAA;gBAAA;cAAA;cAAA8a,UAAA,CAAA9a,IAAA;cAAA,OACzC,IAAI,CAACiM,2BAA2B,CAACZ,MAAM,CAAC;YAAA;cAAtDE,KAAK,GAAAuP,UAAA,CAAAzR,IAAA;cAAA,MAEP,CAACkC,KAAK,IAAI,CAAC,IAAI,CAACrF,kBAAkB,CAAC,CAAC;gBAAA4U,UAAA,CAAA9a,IAAA;gBAAA;cAAA;cAAA8a,UAAA,CAAA9a,IAAA;cAAA,OAChC,IAAI,CAAC+L,mBAAmB,CAACV,MAAM,CAAC;YAAA;cAAAyP,UAAA,CAAA9a,IAAA;cAAA;YAAA;cAGxC,IAAI,CAACia,gBAAgB,GAAG,IAAI;cAC5B9W,eAAG,CAAC8D,IAAI,CAAC,+DAA+D,EAAE;gBACxEpC,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAAC4T;cAClB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAD,UAAA,CAAAnU,IAAA;UAAA;QAAA,GAAAkU,SAAA;MAAA,CAGR;MAAA,SAlBYtB,kBAAkBA,CAAAyB,IAAA;QAAA,OAAAJ,mBAAA,CAAA3Z,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlBoY,kBAAkB;IAAA;EAAA;AAAA;AAqBjC;AACA;AACO,IAAM0B,kBAAkB,GAAArZ,OAAA,CAAAqZ,kBAAA,GAAG,SAArBA,kBAAkBA,CAC7BpZ,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":[]}
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","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","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_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 (this.apiRequest.isSocketEnabled()) {\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() {\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 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":"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","ignoreList":[]}