@webex/calling 3.10.0-next.9 → 3.10.0-wxc-disconnect.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/CallHistory/CallHistory.js +41 -42
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +5 -120
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallSettings/UcmBackendConnector.js +6 -6
  6. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  7. package/dist/CallSettings/UcmBackendConnector.test.js +1 -2
  8. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  9. package/dist/CallSettings/WxCallBackendConnector.js +43 -38
  10. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/WxCallBackendConnector.test.js +1 -4
  12. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  13. package/dist/CallingClient/CallingClient.js +207 -161
  14. package/dist/CallingClient/CallingClient.js.map +1 -1
  15. package/dist/CallingClient/CallingClient.test.js +290 -152
  16. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  17. package/dist/CallingClient/calling/call.js +40 -37
  18. package/dist/CallingClient/calling/call.js.map +1 -1
  19. package/dist/CallingClient/calling/call.test.js +264 -330
  20. package/dist/CallingClient/calling/call.test.js.map +1 -1
  21. package/dist/CallingClient/calling/callManager.test.js +1 -1
  22. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  23. package/dist/CallingClient/registration/register.js +4 -5
  24. package/dist/CallingClient/registration/register.js.map +1 -1
  25. package/dist/CallingClient/registration/webWorker.js +3 -3
  26. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  27. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  28. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  29. package/dist/Contacts/ContactsClient.js +45 -39
  30. package/dist/Contacts/ContactsClient.js.map +1 -1
  31. package/dist/Contacts/ContactsClient.test.js +3 -4
  32. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  33. package/dist/Events/impl/index.js +1 -1
  34. package/dist/Events/impl/index.js.map +1 -1
  35. package/dist/Logger/index.js +3 -3
  36. package/dist/Logger/index.js.map +1 -1
  37. package/dist/Logger/index.test.js +1 -1
  38. package/dist/Logger/index.test.js.map +1 -1
  39. package/dist/SDKConnector/types.js.map +1 -1
  40. package/dist/Voicemail/BroadworksBackendConnector.js +54 -47
  41. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  42. package/dist/Voicemail/BroadworksBackendConnector.test.js +2 -10
  43. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  44. package/dist/Voicemail/UcmBackendConnector.js +32 -29
  45. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  46. package/dist/Voicemail/Voicemail.js +102 -77
  47. package/dist/Voicemail/Voicemail.js.map +1 -1
  48. package/dist/Voicemail/WxCallBackendConnector.js +59 -46
  49. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  50. package/dist/Voicemail/WxCallBackendConnector.test.js +18 -44
  51. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  52. package/dist/common/Utils.js +2 -2
  53. package/dist/common/Utils.js.map +1 -1
  54. package/dist/common/Utils.test.js +8 -4
  55. package/dist/common/Utils.test.js.map +1 -1
  56. package/dist/common/testUtil.js +1 -2
  57. package/dist/common/testUtil.js.map +1 -1
  58. package/dist/module/CallHistory/CallHistory.js +11 -20
  59. package/dist/module/CallSettings/UcmBackendConnector.js +2 -1
  60. package/dist/module/CallSettings/WxCallBackendConnector.js +15 -10
  61. package/dist/module/CallingClient/CallingClient.js +123 -83
  62. package/dist/module/CallingClient/calling/call.js +19 -13
  63. package/dist/module/CallingClient/registration/register.js +3 -3
  64. package/dist/module/CallingClient/registration/webWorker.js +2 -2
  65. package/dist/module/CallingClient/registration/webWorkerStr.js +2 -2
  66. package/dist/module/Contacts/ContactsClient.js +25 -19
  67. package/dist/module/Events/impl/index.js +1 -1
  68. package/dist/module/Logger/index.js +2 -2
  69. package/dist/module/Voicemail/BroadworksBackendConnector.js +18 -10
  70. package/dist/module/Voicemail/UcmBackendConnector.js +11 -7
  71. package/dist/module/Voicemail/Voicemail.js +68 -42
  72. package/dist/module/Voicemail/WxCallBackendConnector.js +28 -14
  73. package/dist/module/common/Utils.js +2 -2
  74. package/dist/module/common/testUtil.js +0 -1
  75. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  76. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  77. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  78. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  79. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  80. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  81. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  82. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  83. package/dist/types/Contacts/ContactsClient.d.ts +0 -1
  84. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  85. package/dist/types/Logger/index.d.ts +2 -1
  86. package/dist/types/Logger/index.d.ts.map +1 -1
  87. package/dist/types/SDKConnector/types.d.ts +0 -10
  88. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  89. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  90. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  91. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  92. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  93. package/dist/types/common/Utils.d.ts.map +1 -1
  94. package/dist/types/common/testUtil.d.ts +0 -1
  95. package/dist/types/common/testUtil.d.ts.map +1 -1
  96. package/package.json +4 -4
@@ -16,7 +16,6 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
16
16
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
17
17
  var _entries = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/entries"));
18
18
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
19
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
20
19
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
21
20
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
22
21
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
@@ -47,7 +46,6 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
47
46
  * @ignore
48
47
  */
49
48
  function ContactsClient(webex, logger) {
50
- var _this$webex$internal$;
51
49
  (0, _classCallCheck2.default)(this, ContactsClient);
52
50
  (0, _defineProperty2.default)(this, "sdkConnector", void 0);
53
51
  (0, _defineProperty2.default)(this, "encryptionKeyUrl", void 0);
@@ -55,7 +53,6 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
55
53
  (0, _defineProperty2.default)(this, "groups", void 0);
56
54
  (0, _defineProperty2.default)(this, "contacts", void 0);
57
55
  (0, _defineProperty2.default)(this, "defaultGroupId", void 0);
58
- (0, _defineProperty2.default)(this, "contactsServiceUrl", void 0);
59
56
  this.sdkConnector = _SDKConnector.default;
60
57
  if (!this.sdkConnector.getWebex()) {
61
58
  _SDKConnector.default.setWebex(webex);
@@ -65,7 +62,6 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
65
62
  this.groups = undefined;
66
63
  this.contacts = undefined;
67
64
  this.defaultGroupId = '';
68
- this.contactsServiceUrl = ((_this$webex$internal$ = this.webex.internal.services._serviceUrls) === null || _this$webex$internal$ === void 0 ? void 0 : _this$webex$internal$.contactsService) || this.webex.internal.services.get(this.webex.internal.services._activeServices.contactsService);
69
65
  _Logger.default.setLogger(logger.level, _constants2.CONTACTS_CLIENT);
70
66
  }
71
67
 
@@ -455,7 +451,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
455
451
  value: (function () {
456
452
  var _getContacts = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1() {
457
453
  var _this5 = this;
458
- var loggerContext, contactList, cloudContactsMap, _response$headers, response, responseBody, contacts, groups, contactIdList, totalContacts, MAX_CONTACTS_PER_QUERY, i, contactIdListChunk, query, result, slicedCloudContactsMap, resolvedContacts, contactResponse, errorStatus;
454
+ var loggerContext, contactList, cloudContactsMap, _response$headers, response, responseBody, contacts, groups, contactIdList, totalContacts, MAX_CONTACTS_PER_QUERY, i, contactIdListChunk, query, result, slicedCloudContactsMap, resolvedContacts, contactResponse, errorInfo, extendedError, errorStatus;
459
455
  return _regenerator.default.wrap(function _callee1$(_context1) {
460
456
  while (1) switch (_context1.prev = _context1.next) {
461
457
  case 0:
@@ -470,7 +466,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
470
466
  _context1.next = 7;
471
467
  return this.webex.request({
472
468
  // eslint-disable-next-line no-underscore-dangle
473
- uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
469
+ uri: "".concat(this.webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
474
470
  method: _types.HTTP_METHODS.GET
475
471
  });
476
472
  case 7:
@@ -593,13 +589,15 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
593
589
  case 47:
594
590
  _context1.prev = 47;
595
591
  _context1.t1 = _context1["catch"](4);
596
- _Logger.default.error("Error fetching contacts: ".concat((0, _stringify.default)(_context1.t1)), loggerContext);
597
- errorStatus = (0, _Utils.serviceErrorCodeHandler)(_context1.t1, loggerContext);
598
- _context1.next = 53;
592
+ errorInfo = _context1.t1;
593
+ extendedError = new Error("Error fetching contacts: ".concat(_context1.t1));
594
+ _Logger.default.error(extendedError, loggerContext);
595
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
596
+ _context1.next = 55;
599
597
  return (0, _Utils.uploadLogs)();
600
- case 53:
598
+ case 55:
601
599
  return _context1.abrupt("return", errorStatus);
602
- case 54:
600
+ case 56:
603
601
  case "end":
604
602
  return _context1.stop();
605
603
  }
@@ -819,7 +817,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
819
817
  key: "createContactGroup",
820
818
  value: (function () {
821
819
  var _createContactGroup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(displayName, encryptionKeyUrl, groupType) {
822
- var loggerContext, encryptionKeyUrlFinal, isExistingGroup, encryptedDisplayName, groupInfo, _response$headers2, _this$groups, response, group, contactResponse, errorStatus;
820
+ var loggerContext, encryptionKeyUrlFinal, isExistingGroup, encryptedDisplayName, groupInfo, _response$headers2, _this$groups, response, group, contactResponse, errorInfo, extendedError, errorStatus;
823
821
  return _regenerator.default.wrap(function _callee13$(_context13) {
824
822
  while (1) switch (_context13.prev = _context13.next) {
825
823
  case 0:
@@ -880,7 +878,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
880
878
  _context13.next = 23;
881
879
  return this.webex.request({
882
880
  // eslint-disable-next-line no-underscore-dangle
883
- uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER),
881
+ uri: "".concat(this.webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER),
884
882
  method: _types.HTTP_METHODS.POST,
885
883
  body: groupInfo
886
884
  });
@@ -903,13 +901,15 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
903
901
  case 34:
904
902
  _context13.prev = 34;
905
903
  _context13.t1 = _context13["catch"](20);
906
- _Logger.default.error("Unable to create contact group: ".concat((0, _stringify.default)(_context13.t1)), loggerContext);
907
- errorStatus = (0, _Utils.serviceErrorCodeHandler)(_context13.t1, loggerContext);
908
- _context13.next = 40;
904
+ errorInfo = _context13.t1;
905
+ extendedError = new Error("Unable to create contact group: ".concat(_context13.t1));
906
+ _Logger.default.error(extendedError, loggerContext);
907
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
908
+ _context13.next = 42;
909
909
  return (0, _Utils.uploadLogs)();
910
- case 40:
910
+ case 42:
911
911
  return _context13.abrupt("return", errorStatus);
912
- case 41:
912
+ case 43:
913
913
  case "end":
914
914
  return _context13.stop();
915
915
  }
@@ -929,7 +929,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
929
929
  key: "deleteContactGroup",
930
930
  value: (function () {
931
931
  var _deleteContactGroup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(groupId) {
932
- var loggerContext, _response$headers3, _this$groups2, _this$groups4, response, contactResponse, groupToDelete, _this$groups3, errorStatus;
932
+ var loggerContext, _response$headers3, _this$groups2, _this$groups4, response, contactResponse, groupToDelete, _this$groups3, errorInfo, extendedError, errorStatus;
933
933
  return _regenerator.default.wrap(function _callee14$(_context14) {
934
934
  while (1) switch (_context14.prev = _context14.next) {
935
935
  case 0:
@@ -943,7 +943,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
943
943
  _context14.next = 6;
944
944
  return this.webex.request({
945
945
  // eslint-disable-next-line no-underscore-dangle
946
- uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER, "/").concat(groupId),
946
+ uri: "".concat(this.webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.GROUP_FILTER, "/").concat(groupId),
947
947
  method: _types.HTTP_METHODS.DELETE
948
948
  });
949
949
  case 6:
@@ -968,13 +968,15 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
968
968
  case 16:
969
969
  _context14.prev = 16;
970
970
  _context14.t0 = _context14["catch"](2);
971
- _Logger.default.error("Unable to delete contact group ".concat(groupId, ": ").concat((0, _stringify.default)(_context14.t0)), loggerContext);
972
- errorStatus = (0, _Utils.serviceErrorCodeHandler)(_context14.t0, loggerContext);
973
- _context14.next = 22;
971
+ errorInfo = _context14.t0;
972
+ extendedError = new Error("Unable to delete contact group ".concat(groupId, ": ").concat(_context14.t0));
973
+ _Logger.default.error(extendedError, loggerContext);
974
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
975
+ _context14.next = 24;
974
976
  return (0, _Utils.uploadLogs)();
975
- case 22:
977
+ case 24:
976
978
  return _context14.abrupt("return", errorStatus);
977
- case 23:
979
+ case 25:
978
980
  case "end":
979
981
  return _context14.stop();
980
982
  }
@@ -994,7 +996,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
994
996
  key: "createContact",
995
997
  value: (function () {
996
998
  var _createContact = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(contactInfo) {
997
- var loggerContext, _response$headers4, contact, defaultGroupId, requestBody, encryptedContact, _encryptedContact, response, newContact, contactResponse, query, res, resolvedContact, _this$contacts, _this$contacts2, errorStatus;
999
+ var loggerContext, _response$headers4, contact, defaultGroupId, requestBody, encryptedContact, _encryptedContact, response, newContact, contactResponse, query, res, resolvedContact, _this$contacts, _this$contacts2, errorInfo, extendedError, errorStatus;
998
1000
  return _regenerator.default.wrap(function _callee15$(_context15) {
999
1001
  while (1) switch (_context15.prev = _context15.next) {
1000
1002
  case 0:
@@ -1067,7 +1069,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
1067
1069
  _context15.next = 33;
1068
1070
  return this.webex.request({
1069
1071
  // eslint-disable-next-line no-underscore-dangle
1070
- uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
1072
+ uri: "".concat(this.webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER),
1071
1073
  method: _types.HTTP_METHODS.POST,
1072
1074
  body: requestBody
1073
1075
  });
@@ -1107,13 +1109,15 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
1107
1109
  case 53:
1108
1110
  _context15.prev = 53;
1109
1111
  _context15.t1 = _context15["catch"](2);
1110
- _Logger.default.error("Failed to create contact: ".concat((0, _stringify.default)(_context15.t1)), loggerContext);
1111
- errorStatus = (0, _Utils.serviceErrorCodeHandler)(_context15.t1, loggerContext);
1112
- _context15.next = 59;
1112
+ errorInfo = _context15.t1;
1113
+ extendedError = new Error("Failed to create contact: ".concat(_context15.t1));
1114
+ _Logger.default.error(extendedError, loggerContext);
1115
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
1116
+ _context15.next = 61;
1113
1117
  return (0, _Utils.uploadLogs)();
1114
- case 59:
1118
+ case 61:
1115
1119
  return _context15.abrupt("return", errorStatus);
1116
- case 60:
1120
+ case 62:
1117
1121
  case "end":
1118
1122
  return _context15.stop();
1119
1123
  }
@@ -1133,7 +1137,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
1133
1137
  key: "deleteContact",
1134
1138
  value: (function () {
1135
1139
  var _deleteContact = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(contactId) {
1136
- var loggerContext, _this$contacts3, response, contactResponse, contactToDelete, _this$contacts4, errorStatus;
1140
+ var loggerContext, _this$contacts3, response, contactResponse, contactToDelete, _this$contacts4, errorInfo, extendedError, errorStatus;
1137
1141
  return _regenerator.default.wrap(function _callee16$(_context16) {
1138
1142
  while (1) switch (_context16.prev = _context16.next) {
1139
1143
  case 0:
@@ -1147,7 +1151,7 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
1147
1151
  _context16.next = 6;
1148
1152
  return this.webex.request({
1149
1153
  // eslint-disable-next-line no-underscore-dangle
1150
- uri: "".concat(this.contactsServiceUrl, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER, "/").concat(contactId),
1154
+ uri: "".concat(this.webex.internal.services._serviceUrls.contactsService, "/").concat(_constants2.ENCRYPT_FILTER, "/").concat(_constants2.USERS, "/").concat(_constants2.CONTACT_FILTER, "/").concat(contactId),
1151
1155
  method: _types.HTTP_METHODS.DELETE
1152
1156
  });
1153
1157
  case 6:
@@ -1168,13 +1172,15 @@ var ContactsClient = exports.ContactsClient = /*#__PURE__*/function () {
1168
1172
  case 14:
1169
1173
  _context16.prev = 14;
1170
1174
  _context16.t0 = _context16["catch"](2);
1171
- _Logger.default.error("Unable to delete contact ".concat(contactId, ": ").concat((0, _stringify.default)(_context16.t0)), loggerContext);
1172
- errorStatus = (0, _Utils.serviceErrorCodeHandler)(_context16.t0, loggerContext);
1173
- _context16.next = 20;
1175
+ errorInfo = _context16.t0;
1176
+ extendedError = new Error("Unable to delete contact ".concat(contactId, ": ").concat(_context16.t0));
1177
+ _Logger.default.error(extendedError, loggerContext);
1178
+ errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
1179
+ _context16.next = 22;
1174
1180
  return (0, _Utils.uploadLogs)();
1175
- case 20:
1181
+ case 22:
1176
1182
  return _context16.abrupt("return", errorStatus);
1177
- case 21:
1183
+ case 23:
1178
1184
  case "end":
1179
1185
  return _context16.stop();
1180
1186
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_this$webex$internal$","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","contactsServiceUrl","internal","services","_serviceUrls","contactsService","get","_activeServices","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref0","_callee6$","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorStatus","_callee1$","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_callee0$","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","_stringify","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_callee10$","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_callee11$","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_callee12$","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_callee13$","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee14$","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee15$","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_callee16$","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n private contactsServiceUrl: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n this.contactsServiceUrl =\n this.webex.internal.services._serviceUrls?.contactsService ||\n this.webex.internal.services.get(\n this.webex.internal.services._activeServices.contactsService\n );\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Error fetching contacts: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to create contact group: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact group ${groupId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Failed to create contact: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.contactsServiceUrl}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n log.error(`Unable to delete contact ${contactId}: ${JSON.stringify(err)}`, loggerContext);\n const errorStatus = serviceErrorCodeHandler(err as WebexRequestPayload, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAD,OAAA;AAGA,IAAAE,aAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAaA,IAAAM,OAAA,GAAAN,OAAA;AAWA,IAAAO,MAAA,GAAAP,OAAA;AAA+E,SAAAQ,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,aAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA,IAvC/E;AAyCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,IAUaqB,cAAc,GAAAC,OAAA,CAAAD,cAAA;EAezB;AACF;AACA;EACE,SAAAA,eAAYE,KAAe,EAAEC,MAAuB,EAAE;IAAA,IAAAC,qBAAA;IAAA,IAAAC,gBAAA,CAAAT,OAAA,QAAAI,cAAA;IAAA,IAAAL,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;IACpD,IAAI,CAACU,YAAY,GAAGC,qBAAY;IAEhC,IAAI,CAAC,IAAI,CAACD,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACP,KAAK,CAAC;IAC9B;IAEA,IAAI,CAACA,KAAK,GAAG,IAAI,CAACI,YAAY,CAACE,QAAQ,CAAC,CAAC;IAEzC,IAAI,CAACE,gBAAgB,GAAG,EAAE;IAC1B,IAAI,CAACC,MAAM,GAAGC,SAAS;IACvB,IAAI,CAACC,QAAQ,GAAGD,SAAS;IACzB,IAAI,CAACE,cAAc,GAAG,EAAE;IACxB,IAAI,CAACC,kBAAkB,GACrB,EAAAX,qBAAA,OAAI,CAACF,KAAK,CAACc,QAAQ,CAACC,QAAQ,CAACC,YAAY,cAAAd,qBAAA,uBAAzCA,qBAAA,CAA2Ce,eAAe,KAC1D,IAAI,CAACjB,KAAK,CAACc,QAAQ,CAACC,QAAQ,CAACG,GAAG,CAC9B,IAAI,CAAClB,KAAK,CAACc,QAAQ,CAACC,QAAQ,CAACI,eAAe,CAACF,eAC/C,CAAC;IACHG,eAAG,CAACC,SAAS,CAACpB,MAAM,CAACqB,KAAK,EAAEC,2BAAe,CAAC;EAC9C;;EAEA;AACF;AACA;EAFE,IAAAC,aAAA,CAAA9B,OAAA,EAAAI,cAAA;IAAA2B,GAAA;IAAAC,KAAA;MAAA,IAAAC,qBAAA,OAAAC,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAGA,SAAAC,QACEvB,gBAAwB,EACxBwB,cAA+B;QAAA,IAAAC,KAAA;QAAA,IAAAC,sBAAA,EAAAC,eAAA;QAAA,OAAAN,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAEzBN,sBAAsB,OAAAO,mBAAA,CAAA/C,OAAA,EAAOsC,cAAc;cAAAM,QAAA,CAAAE,IAAA;cAAA,OAEnBE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CACvCT,sBAAsB,CAACU,GAAG,CAAC,UAACC,MAAM;gBAAA,OAChCZ,KAAI,CAACjC,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACC,WAAW,CAACvC,gBAAgB,EAAEqC,MAAM,CAACnB,KAAK,CAAC;cAAA,CAC5E,CACF,CAAC;YAAA;cAJKS,eAAe,GAAAG,QAAA,CAAAU,IAAA;cAMrBb,eAAe,CAAC3C,OAAO,CAAC,UAACyD,cAAc,EAAEC,KAAK,EAAK;gBACjDhB,sBAAsB,CAACgB,KAAK,CAAC,CAACxB,KAAK,GAAGuB,cAAc;cACtD,CAAC,CAAC;cAAC,OAAAX,QAAA,CAAAa,MAAA,WAEIjB,sBAAsB;YAAA;YAAA;cAAA,OAAAI,QAAA,CAAAc,IAAA;UAAA;QAAA,GAAArB,OAAA;MAAA,CAC9B;MAAA,SAAAsB,qBAAAC,EAAA,EAAAC,GAAA;QAAA,OAAA5B,qBAAA,CAAAxC,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAgE,oBAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAA5B,GAAA;IAAAC,KAAA;MAAA,IAAA8B,qBAAA,OAAA5B,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAIA,SAAA2B,SACEjD,gBAAwB,EACxBwB,cAA+B;QAAA,IAAA0B,MAAA;QAAA,IAAAC,sBAAA,EAAAC,eAAA;QAAA,OAAA/B,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAyB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAvB,IAAA,GAAAuB,SAAA,CAAAtB,IAAA;YAAA;cAEzBmB,sBAAsB,OAAAlB,mBAAA,CAAA/C,OAAA,EAAOsC,cAAc;cAAA8B,SAAA,CAAAtB,IAAA;cAAA,OAEnBE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CACvCgB,sBAAsB,CAACf,GAAG,CAAC,UAACC,MAAM;gBAAA,OAChCa,MAAI,CAAC1D,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACiB,WAAW,CAACvD,gBAAgB,EAAEqC,MAAM,CAACnB,KAAK,CAAC;cAAA,CAC5E,CACF,CAAC;YAAA;cAJKkC,eAAe,GAAAE,SAAA,CAAAd,IAAA;cAMrBY,eAAe,CAACpE,OAAO,CAAC,UAACwE,cAAc,EAAEd,KAAK,EAAK;gBACjDS,sBAAsB,CAACT,KAAK,CAAC,CAACxB,KAAK,GAAGsC,cAAc;cACtD,CAAC,CAAC;cAAC,OAAAF,SAAA,CAAAX,MAAA,WAEIQ,sBAAsB;YAAA;YAAA;cAAA,OAAAG,SAAA,CAAAV,IAAA;UAAA;QAAA,GAAAK,QAAA;MAAA,CAC9B;MAAA,SAAAQ,qBAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAX,qBAAA,CAAArE,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA4E,oBAAA;IAAA;IAED;AACF;AACA;IAFE;EAAA;IAAAxC,GAAA;IAAAC,KAAA;MAAA,IAAA0C,eAAA,OAAAxC,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAGA,SAAAuC,SAA6BC,OAAgB;QAAA,IAAAC,MAAA;QAAA,IAAA/D,gBAAA,EAAAgE,gBAAA,EAAAC,kBAAA,EAAAC,mBAAA;QAAA,OAAA7C,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAuC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAArC,IAAA,GAAAqC,SAAA,CAAApC,IAAA;YAAA;cACpChC,gBAAgB,GAAI8D,OAAO,CAA3B9D,gBAAgB;cACjBgE,gBAAyB,GAAApF,aAAA,KAAOkF,OAAO;cAEvCG,kBAAkB,GAAG,IAAAI,OAAA,CAAAnF,OAAA,EAAcoF,2BAAe,CAAC,CAAClC,GAAG;gBAAA,IAAAmC,IAAA,OAAAnD,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAAC,SAAAkD,SAAOC,KAAK;kBAAA,IAAAC,oBAAA,EAAAC,oBAAA,EAAAC,4BAAA,EAAAC,gBAAA,EAAAC,gBAAA,EAAAtB,cAAA;kBAAA,OAAAnC,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAmD,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;sBAAA;wBAAAgD,SAAA,CAAAC,EAAA,GAChER,KAAK;wBAAAO,SAAA,CAAAhD,IAAA,GAAAgD,SAAA,CAAAC,EAAA,KACNX,2BAAe,CAACY,YAAY,OAAAF,SAAA,CAAAC,EAAA,KAmB5BX,2BAAe,CAACa,MAAM,QAAAH,SAAA,CAAAC,EAAA,KACtBX,2BAAe,CAACc,aAAa,QAAAJ,SAAA,CAAAC,EAAA,KAC7BX,2BAAe,CAACe,aAAa;wBAAA;sBAAA;wBApB1BX,oBAAoB,GAAGV,gBAAgB,CAACsB,WAAW;wBAAA,KAGrDZ,oBAAoB;0BAAAM,SAAA,CAAAhD,IAAA;0BAAA;wBAAA;wBAChB4C,4BAA4B,GAAG,IAAAW,QAAA,CAAArG,OAAA,EAAewF,oBAAoB,CAAC,CAACtC,GAAG;0BAAA,IAAAoD,KAAA,OAAApE,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAC3E,SAAAmE,SAAAC,KAAA;4BAAA,IAAAC,KAAA,EAAA1E,GAAA,EAAAC,KAAA;4BAAA,OAAAG,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAgE,UAAAC,SAAA;8BAAA,kBAAAA,SAAA,CAAA9D,IAAA,GAAA8D,SAAA,CAAA7D,IAAA;gCAAA;kCAAA2D,KAAA,OAAAG,eAAA,CAAA5G,OAAA,EAAAwG,KAAA,MAAQzE,GAAG,GAAA0E,KAAA,KAAEzE,KAAK,GAAAyE,KAAA;kCAAAE,SAAA,CAAAZ,EAAA,GAChBhE,GAAG;kCAAA4E,SAAA,CAAA7D,IAAA;kCAAA,OACG+B,MAAI,CAACvE,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACiB,WAAW,CAACvD,gBAAgB,EAAEkB,KAAK,CAAC;gCAAA;kCAAA2E,SAAA,CAAAE,EAAA,GAAAF,SAAA,CAAArD,IAAA;kCAAA,OAAAqD,SAAA,CAAAlD,MAAA,YAAAkD,SAAA,CAAAZ,EAAA,EAAAY,SAAA,CAAAE,EAAA;gCAAA;gCAAA;kCAAA,OAAAF,SAAA,CAAAjD,IAAA;8BAAA;4BAAA,GAAA6C,QAAA;0BAAA,CAC1E;0BAAA,iBAAAO,GAAA;4BAAA,OAAAR,KAAA,CAAA7G,KAAA,OAAAE,SAAA;0BAAA;wBAAA,GACH,CAAC;wBAAAmG,SAAA,CAAAe,EAAA,GAEsBhH,MAAM;wBAAAiG,SAAA,CAAAhD,IAAA;wBAAA,OACrBE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CAACyC,4BAA4B,CAAC;sBAAA;wBAAAI,SAAA,CAAAiB,EAAA,GAAAjB,SAAA,CAAAxC,IAAA;wBADjDmC,oBAAoB,GAAAK,SAAA,CAAAe,EAAA,CAAUG,WAAW,CAAAC,IAAA,CAAAnB,SAAA,CAAAe,EAAA,EAAAf,SAAA,CAAAiB,EAAA;sBAAA;wBAAA,OAAAjB,SAAA,CAAArC,MAAA,WAKpC,CAAC8B,KAAK,EAAEE,oBAAoB,CAAC;sBAAA;wBAK9BE,gBAAgB,GAAGb,gBAAgB,CAACS,KAAK,CAAC;wBAAA,KAG5CI,gBAAgB;0BAAAG,SAAA,CAAAhD,IAAA;0BAAA;wBAAA;wBAAAgD,SAAA,CAAAhD,IAAA;wBAAA,OACO+B,MAAI,CAACN,oBAAoB,CAACzD,gBAAgB,EAAE6E,gBAAgB,CAAC;sBAAA;wBAAtFC,gBAAgB,GAAAE,SAAA,CAAAxC,IAAA;sBAAA;wBAAA,OAAAwC,SAAA,CAAArC,MAAA,WAGX,CAAC8B,KAAK,EAAEK,gBAAgB,CAAC;sBAAA;wBAAA,MAK5B,IAAAT,OAAA,CAAAnF,OAAA,EAAcoF,2BAAe,CAAC,CAAC8B,QAAQ,CAAC3B,KAAK,CAAC,IAAIT,gBAAgB,CAACS,KAAK,CAAC;0BAAAO,SAAA,CAAAhD,IAAA;0BAAA;wBAAA;wBAAAgD,SAAA,CAAAhD,IAAA;wBAAA,OACpD+B,MAAI,CAACvE,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACiB,WAAW,CAC/DvD,gBAAgB,EAChBgE,gBAAgB,CAACS,KAAK,CACxB,CAAC;sBAAA;wBAHDjB,cAAc,GAAAwB,SAAA,CAAAxC,IAAA;sBAAA;wBAAA,OAAAwC,SAAA,CAAArC,MAAA,WAMT,CAAC8B,KAAK,EAAEjB,cAAc,CAAC;sBAAA;sBAAA;wBAAA,OAAAwB,SAAA,CAAApC,IAAA;oBAAA;kBAAA,GAAA4B,QAAA;gBAAA,CAGnC;gBAAA,iBAAA6B,GAAA;kBAAA,OAAA9B,IAAA,CAAA5F,KAAA,OAAAE,SAAA;gBAAA;cAAA,IAAC;cAAAuF,SAAA,CAAApC,IAAA;cAAA,OAEgCE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CAAC8B,kBAAkB,CAAC;YAAA;cAA3DC,mBAAmB,GAAAE,SAAA,CAAA5B,IAAA;cAEzB0B,mBAAmB,CAAClF,OAAO,CAAC,UAAAsH,KAAA,EAAoB;gBAAA,IAAAC,KAAA,OAAAT,eAAA,CAAA5G,OAAA,EAAAoH,KAAA;kBAAlB7B,KAAK,GAAA8B,KAAA;kBAAErF,KAAK,GAAAqF,KAAA;gBACxC,IAAIrF,KAAK,KAAKhB,SAAS,EAAE;kBACvB8D,gBAAgB,CAACS,KAAK,CAAC,GAAGvD,KAAK;gBACjC;cACF,CAAC,CAAC;cAAC,OAAAkD,SAAA,CAAAzB,MAAA,WAEIqB,gBAAgB;YAAA;YAAA;cAAA,OAAAI,SAAA,CAAAxB,IAAA;UAAA;QAAA,GAAAiB,QAAA;MAAA,CACxB;MAAA,SAAA2C,eAAAC,GAAA;QAAA,OAAA7C,eAAA,CAAAjF,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA2H,cAAA;IAAA;IAED;AACF;AACA;IAFE;EAAA;IAAAvF,GAAA;IAAAC,KAAA;MAAA,IAAAwF,eAAA,OAAAtF,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAGA,SAAAqF,SAA6B7C,OAAgB;QAAA,IAAA8C,MAAA;QAAA,IAAA5G,gBAAA,EAAA6G,gBAAA,EAAAC,kBAAA,EAAAC,mBAAA;QAAA,OAAA1F,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAoF,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAlF,IAAA,GAAAkF,SAAA,CAAAjF,IAAA;YAAA;cACpChC,gBAAgB,GAAI8D,OAAO,CAA3B9D,gBAAgB;cACjB6G,gBAAyB,GAAAjI,aAAA,KAAOkF,OAAO;cAEvCgD,kBAAkB,GAAG,IAAAzC,OAAA,CAAAnF,OAAA,EAAcoF,2BAAe,CAAC,CAAClC,GAAG;gBAAA,IAAA8E,KAAA,OAAA9F,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAAC,SAAA6F,SAAO1C,KAAK;kBAAA,IAAAC,oBAAA,EAAA0C,oBAAA,EAAAC,4BAAA,EAAAxC,gBAAA,EAAAyC,gBAAA,EAAA7E,cAAA;kBAAA,OAAApB,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA2F,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAAzF,IAAA,GAAAyF,SAAA,CAAAxF,IAAA;sBAAA;wBAAAwF,SAAA,CAAAvC,EAAA,GAChER,KAAK;wBAAA+C,SAAA,CAAAxF,IAAA,GAAAwF,SAAA,CAAAvC,EAAA,KACNX,2BAAe,CAACY,YAAY,OAAAsC,SAAA,CAAAvC,EAAA,KAmB5BX,2BAAe,CAACa,MAAM,QAAAqC,SAAA,CAAAvC,EAAA,KACtBX,2BAAe,CAACc,aAAa,QAAAoC,SAAA,CAAAvC,EAAA,KAC7BX,2BAAe,CAACe,aAAa;wBAAA;sBAAA;wBApB1BX,oBAAoB,GAAGmC,gBAAgB,CAACvB,WAAW;wBAAA,KAGrDZ,oBAAoB;0BAAA8C,SAAA,CAAAxF,IAAA;0BAAA;wBAAA;wBAChBqF,4BAA4B,GAAG,IAAA9B,QAAA,CAAArG,OAAA,EAAewF,oBAAoB,CAAC,CAACtC,GAAG;0BAAA,IAAAqF,KAAA,OAAArG,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAC3E,SAAAoG,SAAAC,KAAA;4BAAA,IAAAC,KAAA,EAAA3G,GAAA,EAAAC,KAAA;4BAAA,OAAAG,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAiG,UAAAC,SAAA;8BAAA,kBAAAA,SAAA,CAAA/F,IAAA,GAAA+F,SAAA,CAAA9F,IAAA;gCAAA;kCAAA4F,KAAA,OAAA9B,eAAA,CAAA5G,OAAA,EAAAyI,KAAA,MAAQ1G,GAAG,GAAA2G,KAAA,KAAE1G,KAAK,GAAA0G,KAAA;kCAAAE,SAAA,CAAA7C,EAAA,GAChBhE,GAAG;kCAAA6G,SAAA,CAAA9F,IAAA;kCAAA,OACG4E,MAAI,CAACpH,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACC,WAAW,CAACvC,gBAAgB,EAAEkB,KAAK,CAAC;gCAAA;kCAAA4G,SAAA,CAAA/B,EAAA,GAAA+B,SAAA,CAAAtF,IAAA;kCAAA,OAAAsF,SAAA,CAAAnF,MAAA,YAAAmF,SAAA,CAAA7C,EAAA,EAAA6C,SAAA,CAAA/B,EAAA;gCAAA;gCAAA;kCAAA,OAAA+B,SAAA,CAAAlF,IAAA;8BAAA;4BAAA,GAAA8E,QAAA;0BAAA,CAC1E;0BAAA,iBAAAK,GAAA;4BAAA,OAAAN,KAAA,CAAA9I,KAAA,OAAAE,SAAA;0BAAA;wBAAA,GACH,CAAC;wBAAA2I,SAAA,CAAAzB,EAAA,GAEsBhH,MAAM;wBAAAyI,SAAA,CAAAxF,IAAA;wBAAA,OACrBE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CAACkF,4BAA4B,CAAC;sBAAA;wBAAAG,SAAA,CAAAvB,EAAA,GAAAuB,SAAA,CAAAhF,IAAA;wBADjD4E,oBAAoB,GAAAI,SAAA,CAAAzB,EAAA,CAAUG,WAAW,CAAAC,IAAA,CAAAqB,SAAA,CAAAzB,EAAA,EAAAyB,SAAA,CAAAvB,EAAA;sBAAA;wBAAA,OAAAuB,SAAA,CAAA7E,MAAA,WAKpC,CAAC8B,KAAK,EAAE2C,oBAAoB,CAAC;sBAAA;wBAK9BvC,gBAAgB,GAAGgC,gBAAgB,CAACpC,KAAK,CAAC;wBAAA,KAG5CI,gBAAgB;0BAAA2C,SAAA,CAAAxF,IAAA;0BAAA;wBAAA;wBAAAwF,SAAA,CAAAxF,IAAA;wBAAA,OACO4E,MAAI,CAAC/D,oBAAoB,CAAC7C,gBAAgB,EAAE6E,gBAAgB,CAAC;sBAAA;wBAAtFyC,gBAAgB,GAAAE,SAAA,CAAAhF,IAAA;sBAAA;wBAAA,OAAAgF,SAAA,CAAA7E,MAAA,WAGX,CAAC8B,KAAK,EAAE6C,gBAAgB,CAAC;sBAAA;wBAAA,MAK5B,IAAAjD,OAAA,CAAAnF,OAAA,EAAcoF,2BAAe,CAAC,CAAC8B,QAAQ,CAAC3B,KAAK,CAAC,IAAIoC,gBAAgB,CAACpC,KAAK,CAAC;0BAAA+C,SAAA,CAAAxF,IAAA;0BAAA;wBAAA;wBAAAwF,SAAA,CAAAxF,IAAA;wBAAA,OACpD4E,MAAI,CAACpH,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACC,WAAW,CAC/DvC,gBAAgB,EAChB6G,gBAAgB,CAACpC,KAAK,CACxB,CAAC;sBAAA;wBAHDhC,cAAc,GAAA+E,SAAA,CAAAhF,IAAA;sBAAA;wBAAA,OAAAgF,SAAA,CAAA7E,MAAA,WAMT,CAAC8B,KAAK,EAAEhC,cAAc,CAAC;sBAAA;sBAAA;wBAAA,OAAA+E,SAAA,CAAA5E,IAAA;oBAAA;kBAAA,GAAAuE,QAAA;gBAAA,CAGnC;gBAAA,iBAAAa,GAAA;kBAAA,OAAAd,KAAA,CAAAvI,KAAA,OAAAE,SAAA;gBAAA;cAAA,IAAC;cAAAoI,SAAA,CAAAjF,IAAA;cAAA,OAEgCE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CAAC2E,kBAAkB,CAAC;YAAA;cAA3DC,mBAAmB,GAAAE,SAAA,CAAAzE,IAAA;cAEzBuE,mBAAmB,CAAC/H,OAAO,CAAC,UAAAiJ,KAAA,EAAoB;gBAAA,IAAAC,MAAA,OAAApC,eAAA,CAAA5G,OAAA,EAAA+I,KAAA;kBAAlBxD,KAAK,GAAAyD,MAAA;kBAAEhH,KAAK,GAAAgH,MAAA;gBACxC,IAAIhH,KAAK,KAAKhB,SAAS,EAAE;kBACvB2G,gBAAgB,CAACpC,KAAK,CAAC,GAAGvD,KAAK;gBACjC;cACF,CAAC,CAAC;cAAC,OAAA+F,SAAA,CAAAtE,MAAA,WAEIkE,gBAAgB;YAAA;YAAA;cAAA,OAAAI,SAAA,CAAArE,IAAA;UAAA;QAAA,GAAA+D,QAAA;MAAA,CACxB;MAAA,SAAAwB,eAAAC,GAAA;QAAA,OAAA1B,eAAA,CAAA/H,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAsJ,cAAA;IAAA;EAAA;IAAAlH,GAAA;IAAAC,KAAA,EAED,SAAAmH,qBACEC,eAAqC,EACrCC,SAA2B,EACT;MAClB,IAAMC,aAAa,GAAG;QACpBC,IAAI,EAAE1H,2BAAe;QACrB2H,MAAM,EAAE;MACV,CAAC;MACD,IAAMC,gBAA2B,GAAG,EAAE;MACtC,IAAMC,YAAsB,GAAG,EAAE;MAEjC,IAAI;QACFL,SAAS,CAACM,SAAS,CAAC7J,OAAO,CAAC,UAAC8J,IAAI,EAAK;UACpCF,YAAY,CAAClK,IAAI,CAACoK,IAAI,CAACC,EAAE,CAAC;QAC5B,CAAC,CAAC;QAEF,IAAA1E,OAAA,CAAAnF,OAAA,EAAcoJ,eAAe,CAAC,CAACtJ,OAAO,CAAC,UAAC8J,IAAI,EAAK;UAC/C,IAAME,UAAU,GAAGJ,YAAY,CAACK,IAAI,CAAC,UAACC,QAAQ;YAAA,OAAKA,QAAQ,KAAKJ,IAAI,CAACK,SAAS;UAAA,EAAC;UAC/E,IAAI,CAACH,UAAU,EAAE;YACfL,gBAAgB,CAACjK,IAAI,CAAAE,aAAA,CAAAA,aAAA,KAAKkK,IAAI;cAAEM,QAAQ,EAAE;YAAK,EAAC,CAAC;UACnD;QACF,CAAC,CAAC;QAEF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,SAAS,CAACM,SAAS,CAAC/J,MAAM,EAAEuK,CAAC,IAAI,CAAC,EAAE;UAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;UACtD,IAAMC,eAAe,GAAGpB,SAAS,CAACM,SAAS,CAACQ,CAAC,CAAC;UAC9C,IAAOO,WAAW,GAAkCD,eAAe,CAA5DC,WAAW;YAAEC,MAAM,GAA0BF,eAAe,CAA/CE,MAAM;YAAEC,YAAY,GAAYH,eAAe,CAAvCG,YAAY;YAAEC,MAAM,GAAIJ,eAAe,CAAzBI,MAAM;UAChD,IAAIC,YAAY;UAChB,IAAIL,eAAe,CAACM,kCAAuB,CAAC,EAAE;YAC5CD,YAAY,GAAGL,eAAe,CAACM,kCAAuB,CAAC,CAACD,YAAY;UACtE;UACA,IAAME,SAAS,IAAAZ,qBAAA,GAAGK,eAAe,CAACQ,IAAI,cAAAb,qBAAA,uBAApBA,qBAAA,CAAsBc,SAAS;UACjD,IAAMC,QAAQ,IAAAd,sBAAA,GAAGI,eAAe,CAACQ,IAAI,cAAAZ,sBAAA,uBAApBA,sBAAA,CAAsBe,UAAU;UACjD,IAAMC,OAAO,IAAAf,qBAAA,GAAGG,eAAe,CAACa,+BAAoB,CAAC,cAAAhB,qBAAA,wBAAAC,sBAAA,GAArCD,qBAAA,CAAuCe,OAAO,cAAAd,sBAAA,uBAA9CA,sBAAA,CAAgDG,WAAW;UAC3E,IAAMa,UAAU,IAAAf,sBAAA,GAAGC,eAAe,CAACa,+BAAoB,CAAC,cAAAd,sBAAA,uBAArCA,sBAAA,CAAuCe,UAAU;UACpE,IAAMC,SAAS,GAAGX,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEjL,MAAM,GAAGiL,MAAM,CAAC,CAAC,CAAC,CAAC7I,KAAK,GAAG,EAAE;UAEvD,IAAAyJ,qBAAA,GACErC,eAAe,CAACC,SAAS,CAACM,SAAS,CAACQ,CAAC,CAAC,CAACN,EAAE,CAAC;YADrC6B,WAAW,GAAAD,qBAAA,CAAXC,WAAW;YAAEC,eAAe,GAAAF,qBAAA,CAAfE,eAAe;YAAE7K,gBAAgB,GAAA2K,qBAAA,CAAhB3K,gBAAgB;YAAE8K,OAAO,GAAAH,qBAAA,CAAPG,OAAO;YAAE7K,MAAM,GAAA0K,qBAAA,CAAN1K,MAAM;UAGtE,IAAM8K,YAAY,GAAG;YACnBF,eAAe,EAAfA,eAAe;YACfH,SAAS,EAATA,SAAS;YACTvB,SAAS,EAAEZ,SAAS,CAACM,SAAS,CAACQ,CAAC,CAAC,CAACN,EAAE;YACpC6B,WAAW,EAAXA,WAAW;YACXH,UAAU,EAAVA,UAAU;YACVb,WAAW,EAAXA,WAAW;YACXC,MAAM,EAANA,MAAM;YACN7J,gBAAgB,EAAhBA,gBAAgB;YAChBkK,SAAS,EAATA,SAAS;YACTjK,MAAM,EAANA,MAAM;YACNoK,QAAQ,EAARA,QAAQ;YACRE,OAAO,EAAPA,OAAO;YACPO,OAAO,EAAPA,OAAO;YACPhB,YAAY,EAAZA,YAAY;YACZE,YAAY,EAAZA,YAAY;YACZZ,QAAQ,EAAE;UACZ,CAAC;UAEDT,gBAAgB,CAACjK,IAAI,CAACqM,YAAY,CAAC;QACrC;MACF,CAAC,CAAC,OAAOC,KAAU,EAAE;QACnBpK,eAAG,CAACqK,IAAI,CAAC,gDAAgD,EAAEzC,aAAa,CAAC;QAEzE,OAAO,IAAI;MACb;MAEA,OAAOG,gBAAgB;IACzB;;IAEA;AACF;AACA;EAFE;IAAA1H,GAAA;IAAAC,KAAA;MAAA,IAAAgK,YAAA,OAAA9J,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAGA,SAAA6J,SAAA;QAAA,IAAAC,MAAA;QAAA,IAAA5C,aAAA,EAAA6C,WAAA,EAAAC,gBAAA,EAAAC,iBAAA,EAAAC,QAAA,EAAAC,YAAA,EAAAtL,QAAA,EAAAF,MAAA,EAAAyL,aAAA,EAAAC,aAAA,EAAAC,sBAAA,EAAAC,CAAA,EAAAC,kBAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,sBAAA,EAAAC,gBAAA,EAAAC,eAAA,EAAAC,WAAA;QAAA,OAAA/K,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAyK,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAvK,IAAA,GAAAuK,SAAA,CAAAtK,IAAA;YAAA;cACQwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAACC;cAClB,CAAC;cAED5L,eAAG,CAAC6L,IAAI,CAACC,+BAAoB,EAAElE,aAAa,CAAC;cAEvC6C,WAAsB,GAAG,EAAE;cAC3BC,gBAAsC,GAAG,CAAC,CAAC;cAAAgB,SAAA,CAAAvK,IAAA;cAAAuK,SAAA,CAAAtK,IAAA;cAAA,OAGH,IAAI,CAACxC,KAAK,CAACmN,OAAO,CAAC;gBAC7D;gBACAC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACxM,kBAAkB,OAAAwM,MAAA,CAAIC,0BAAc,OAAAD,MAAA,CAAIE,iBAAK,OAAAF,MAAA,CAAIG,0BAAc,CAAE;gBAC9EtE,MAAM,EAAEuE,mBAAY,CAACC;cACvB,CAAC,CAAC;YAAA;cAJI1B,QAAQ,GAAAc,SAAA,CAAA9J,IAAA;cAMd5B,eAAG,CAACA,GAAG,mBAAAiM,MAAA,CACarB,QAAQ,CAAC2B,UAAU,gCAAAN,MAAA,CAA6BrB,QAAQ,aAARA,QAAQ,wBAAAD,iBAAA,GAARC,QAAQ,CAAE4B,OAAO,cAAA7B,iBAAA,uBAAjBA,iBAAA,CAAmB8B,UAAU,GAC/F7E,aACF,CAAC;cAEKiD,YAAY,GAAGD,QAAQ,CAAC8B,IAAI;cAAA,IAE7B7B,YAAY;gBAAAa,SAAA,CAAAtK,IAAA;gBAAA;cAAA;cAAA,MACT,IAAIuL,KAAK,IAAAV,MAAA,CAAIrB,QAAQ,CAAE,CAAC;YAAA;cAGzBrL,QAAQ,GAAYsL,YAAY,CAAhCtL,QAAQ,EAAEF,MAAM,GAAIwL,YAAY,CAAtBxL,MAAM;cAAAqM,SAAA,CAAAtK,IAAA;cAAA,OAEjBE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CACfhC,QAAQ,CAACiC,GAAG;gBAAA,IAAAoL,MAAA,OAAApM,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAAC,SAAAmM,SAAO3J,OAAO;kBAAA,IAAA+C,gBAAA;kBAAA,OAAAxF,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA8L,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAA5L,IAAA,GAAA4L,SAAA,CAAA3L,IAAA;sBAAA;wBAAA,MACrB8B,OAAO,CAAC8G,WAAW,KAAKgD,mBAAW,CAACC,MAAM;0BAAAF,SAAA,CAAA3L,IAAA;0BAAA;wBAAA;wBAAA2L,SAAA,CAAA3L,IAAA;wBAAA,OACboJ,MAAI,CAACjD,cAAc,CAACrE,OAAO,CAAC;sBAAA;wBAArD+C,gBAAgB,GAAA8G,SAAA,CAAAnL,IAAA;wBAEtB6I,WAAW,CAAC3M,IAAI,CAACmI,gBAAgB,CAAC;wBAAC8G,SAAA,CAAA3L,IAAA;wBAAA;sBAAA;wBAC9B,IAAI8B,OAAO,CAAC8G,WAAW,KAAKgD,mBAAW,CAACE,KAAK,IAAIhK,OAAO,CAACqF,SAAS,EAAE;0BACzEmC,gBAAgB,CAACxH,OAAO,CAACqF,SAAS,CAAC,GAAGrF,OAAO;wBAC/C;sBAAC;sBAAA;wBAAA,OAAA6J,SAAA,CAAA/K,IAAA;oBAAA;kBAAA,GAAA6K,QAAA;gBAAA,CACF;gBAAA,iBAAAM,GAAA;kBAAA,OAAAP,MAAA,CAAA7O,KAAA,OAAAE,SAAA;gBAAA;cAAA,IACH,CAAC;YAAA;cAAA,KAGG,IAAAmP,KAAA,CAAA9O,OAAA,EAAYoM,gBAAgB,CAAC,CAACxM,MAAM;gBAAAwN,SAAA,CAAAtK,IAAA;gBAAA;cAAA;cAChC0J,aAAa,GAAG,IAAAsC,KAAA,CAAA9O,OAAA,EAAYoM,gBAAgB,CAAC;cAC7CK,aAAa,GAAGD,aAAa,CAAC5M,MAAM;cACpC8M,sBAAsB,GAAG,EAAE;cAExBC,CAAC,GAAG,CAAC;YAAA;cAAA,MAAEA,CAAC,GAAGF,aAAa;gBAAAW,SAAA,CAAAtK,IAAA;gBAAA;cAAA;cAAAsK,SAAA,CAAAvK,IAAA;cAEvB+J,kBAAkB,GAAGJ,aAAa,CAACuC,KAAK,CAACpC,CAAC,EAAEA,CAAC,GAAGD,sBAAsB,CAAC;cACvEG,KAAK,GAAGD,kBAAkB,CAAC1J,GAAG,CAAC,UAAC0G,IAAI;gBAAA,UAAA+D,MAAA,CAAQqB,0BAAc,SAAArB,MAAA,CAAK/D,IAAI;cAAA,CAAG,CAAC,CAACqF,IAAI,CAACC,cAAE,CAAC;cAAA9B,SAAA,CAAAtK,IAAA;cAAA,OACjE,IAAAqM,gBAAS,EAACtC,KAAK,CAAC;YAAA;cAA/BC,MAAM,GAAAM,SAAA,CAAA9J,IAAA;cAENyJ,sBAAsB,GAAGlN,MAAM,CAACmH,WAAW,CAC/C,IAAAX,QAAA,CAAArG,OAAA,EAAeoM,gBAAgB,CAAC,CAAC2C,KAAK,CAACpC,CAAC,EAAEA,CAAC,GAAGD,sBAAsB,CACtE,CAAC;cAEKM,gBAAgB,GAAG,IAAI,CAAC7D,oBAAoB,CAChD4D,sBAAsB,EACtBD,MAAM,CAACsB,IACT,CAAC;cAED,IAAIpB,gBAAgB,EAAE;gBACpBA,gBAAgB,CAAClN,OAAO,CAAC,UAAC8J,IAAI;kBAAA,OAAKuC,WAAW,CAAC3M,IAAI,CAACoK,IAAI,CAAC;gBAAA,EAAC;cAC5D;cAACwD,SAAA,CAAAtK,IAAA;cAAA;YAAA;cAAAsK,SAAA,CAAAvK,IAAA;cAAAuK,SAAA,CAAArH,EAAA,GAAAqH,SAAA;cAED1L,eAAG,CAACqK,IAAI,mCAAA4B,MAAA,CAC4BhB,CAAC,OAAAgB,MAAA,CAAIhB,CAAC,GAAGD,sBAAsB,GACjEpD,aACF,CAAC;YAAC;cAtB6BqD,CAAC,IAAID,sBAAsB;cAAAU,SAAA,CAAAtK,IAAA;cAAA;YAAA;cAAAsK,SAAA,CAAAtK,IAAA;cAAA,OA2B1DE,QAAA,CAAAhD,OAAA,CAAQiD,GAAG,CACflC,MAAM,CAACmC,GAAG;gBAAA,IAAAkM,MAAA,OAAAlN,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAAC,SAAAiN,SAAOC,KAAK,EAAEC,GAAG;kBAAA,OAAApN,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA8M,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAA5M,IAAA,GAAA4M,SAAA,CAAA3M,IAAA;sBAAA;wBAAA2M,SAAA,CAAA3M,IAAA;wBAAA,OACMoJ,MAAI,CAAC5L,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACC,WAAW,CACxEiM,KAAK,CAACxO,gBAAgB,EACtBwO,KAAK,CAAC5E,WACR,CAAC;sBAAA;wBAHD3J,MAAM,CAACwO,GAAG,CAAC,CAAC7E,WAAW,GAAA+E,SAAA,CAAAnM,IAAA;sBAAA;sBAAA;wBAAA,OAAAmM,SAAA,CAAA/L,IAAA;oBAAA;kBAAA,GAAA2L,QAAA;gBAAA,CAIxB;gBAAA,iBAAAK,IAAA,EAAAC,IAAA;kBAAA,OAAAP,MAAA,CAAA3P,KAAA,OAAAE,SAAA;gBAAA;cAAA,IACH,CAAC;YAAA;cAED,IAAI,CAACoB,MAAM,GAAGA,MAAM;cACpB,IAAI,CAACE,QAAQ,GAAGkL,WAAW;cACrBc,eAAgC,GAAG;gBACvCgB,UAAU,EAAE2B,MAAM,CAACtD,QAAQ,CAACuD,sBAAW,CAAC,CAAC;gBACzCC,IAAI,EAAE;kBACJ7O,QAAQ,EAAEkL,WAAW;kBACrBpL,MAAM,EAANA;gBACF,CAAC;gBACDgP,OAAO,EAAEC;cACX,CAAC;cAEDtO,eAAG,CAACA,GAAG,CAAC,0CAA0C,EAAE4H,aAAa,CAAC;cAAC,OAAA8D,SAAA,CAAA3J,MAAA,WAE5DwJ,eAAe;YAAA;cAAAG,SAAA,CAAAvK,IAAA;cAAAuK,SAAA,CAAAvG,EAAA,GAAAuG,SAAA;cAEtB1L,eAAG,CAACoK,KAAK,6BAAA6B,MAAA,CAA6B,IAAAsC,UAAA,CAAAjQ,OAAA,EAAAoN,SAAA,CAAAvG,EAAkB,CAAC,GAAIyC,aAAa,CAAC;cACrE4D,WAAW,GAAG,IAAAgD,8BAAuB,EAAA9C,SAAA,CAAAvG,EAAA,EAA6ByC,aAAa,CAAC;cAAA8D,SAAA,CAAAtK,IAAA;cAAA,OAChF,IAAAqN,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAA/C,SAAA,CAAA3J,MAAA,WAEXyJ,WAAW;YAAA;YAAA;cAAA,OAAAE,SAAA,CAAA1J,IAAA;UAAA;QAAA,GAAAuI,QAAA;MAAA,CAErB;MAAA,SAAAmE,YAAA;QAAA,OAAApE,YAAA,CAAAvM,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAyQ,WAAA;IAAA;IAED;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAArO,GAAA;IAAAC,KAAA;MAAA,IAAAqO,0BAAA,OAAAnO,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAKA,SAAAkO,UAAA;QAAA,IAAAhH,aAAA,EAAAiH,eAAA,EAAAC,aAAA;QAAA,OAAArO,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA+N,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA7N,IAAA,GAAA6N,UAAA,CAAA5N,IAAA;YAAA;cACQwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAACsD;cAClB,CAAC;cAEDjP,eAAG,CAAC6L,IAAI,CAACC,+BAAoB,EAAElE,aAAa,CAAC;cAEzCiH,eAAe,GAAG,EAAE;cAExB7O,eAAG,CAAC6L,IAAI,CAAC,sCAAsC,EAAEjE,aAAa,CAAC;cAACoH,UAAA,CAAA5N,IAAA;cAAA,OACpC,IAAI,CAACxC,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACwN,GAAG,CAACC,iBAAiB,CAAC;gBAACC,KAAK,EAAE;cAAC,CAAC,CAAC;YAAA;cAAtFN,aAAa,GAAAE,UAAA,CAAApN,IAAA;cAEnBiN,eAAe,GAAGC,aAAa,CAAC,CAAC,CAAC,CAAC9C,GAAG;cACtC,IAAI,CAACpN,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACwN,GAAG,CAACG,cAAc,CAAC;gBAACC,OAAO,EAAE,CAACT,eAAe;cAAC,CAAC,CAAC;cAAC,OAAAG,UAAA,CAAAjN,MAAA,WAEzE8M,eAAe;YAAA;YAAA;cAAA,OAAAG,UAAA,CAAAhN,IAAA;UAAA;QAAA,GAAA4M,SAAA;MAAA,CACvB;MAAA,SAAAW,0BAAA;QAAA,OAAAZ,0BAAA,CAAA5Q,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAsR,yBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAlP,GAAA;IAAAC,KAAA;MAAA,IAAAkP,sBAAA,OAAAhP,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAKA,SAAA+O,UAAA;QAAA,IAAAC,oBAAA;QAAA,IAAA9H,aAAA,EAAAgD,QAAA,EAAA+E,qBAAA;QAAA,OAAAlP,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA4O,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA1O,IAAA,GAAA0O,UAAA,CAAAzO,IAAA;YAAA;cACQwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAACmE;cAClB,CAAC;cAED9P,eAAG,CAAC6L,IAAI,CAACC,+BAAoB,EAAElE,aAAa,CAAC;cAAC,KAE1C,IAAI,CAACxI,gBAAgB;gBAAAyQ,UAAA,CAAAzO,IAAA;gBAAA;cAAA;cAAA,OAAAyO,UAAA,CAAA9N,MAAA,WAChB,IAAI,CAAC3C,gBAAgB;YAAA;cAE9B;cACA,IAAI,IAAI,CAACC,MAAM,KAAKC,SAAS,EAAE;gBAC7B,IAAI,CAACoP,WAAW,CAAC,CAAC;cACpB;cACA;cAAA,MACI,IAAI,CAACrP,MAAM,IAAI,IAAI,CAACA,MAAM,CAACnB,MAAM;gBAAA2R,UAAA,CAAAzO,IAAA;gBAAA;cAAA;cAAA,OAAAyO,UAAA,CAAA9N,MAAA,WAE5B,IAAI,CAAC1C,MAAM,CAAC,CAAC,CAAC,CAACD,gBAAgB;YAAA;cAAAyQ,UAAA,CAAAzO,IAAA;cAAA,OAGV,IAAI,CAACmO,yBAAyB,CAAC,CAAC;YAAA;cAA9D,IAAI,CAACnQ,gBAAgB,GAAAyQ,UAAA,CAAAjO,IAAA;cACrB5B,eAAG,CAACA,GAAG,8BAAAiM,MAAA,CAA8B8D,8BAAkB,GAAI;gBACzDlI,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE,IAAI,CAACkI,qBAAqB,CAACzG;cACrC,CAAC,CAAC;cAACsG,UAAA,CAAAzO,IAAA;cAAA,OACqC,IAAI,CAAC6O,kBAAkB,CAC7DF,8BAAkB,EAClB,IAAI,CAAC3Q,gBACP,CAAC;YAAA;cAHKwL,QAAyB,GAAAiF,UAAA,CAAAjO,IAAA;cAK/B,KAAA8N,oBAAA,GAAI9E,QAAQ,CAACwD,IAAI,CAACR,KAAK,cAAA8B,oBAAA,eAAnBA,oBAAA,CAAqBQ,OAAO,EAAE;gBAChC,IAAI,CAAC1Q,cAAc,IAAAmQ,qBAAA,GAAG/E,QAAQ,CAACwD,IAAI,CAACR,KAAK,cAAA+B,qBAAA,uBAAnBA,qBAAA,CAAqBO,OAAO;gBAClDlQ,eAAG,CAACA,GAAG,gDAAAiM,MAAA,CAAgD,IAAI,CAACzM,cAAc,GAAI;kBAC5EqI,IAAI,EAAE1H,2BAAe;kBACrB2H,MAAM,EAAE,IAAI,CAACkI,qBAAqB,CAACzG;gBACrC,CAAC,CAAC;cACJ;cAAC,OAAAsG,UAAA,CAAA9N,MAAA,WAEM,IAAI,CAAC3C,gBAAgB;YAAA;YAAA;cAAA,OAAAyQ,UAAA,CAAA7N,IAAA;UAAA;QAAA,GAAAyN,SAAA;MAAA,CAC7B;MAAA,SAAAO,sBAAA;QAAA,OAAAR,sBAAA,CAAAzR,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA+R,qBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAA3P,GAAA;IAAAC,KAAA;MAAA,IAAA6P,kBAAA,OAAA3P,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAKA,SAAA0P,UAAA;QAAA,IAAAxI,aAAA,EAAAqD,CAAA,EAAAL,QAAA,EAAAgD,KAAA,EAAAsC,OAAA;QAAA,OAAAzP,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAqP,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAnP,IAAA,GAAAmP,UAAA,CAAAlP,IAAA;YAAA;cACQwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAAC4E;cAClB,CAAC;cAEDvQ,eAAG,CAAC6L,IAAI,CAACC,+BAAoB,EAAElE,aAAa,CAAC;cAAC,KAE1C,IAAI,CAACpI,cAAc;gBAAA8Q,UAAA,CAAAlP,IAAA;gBAAA;cAAA;cACrBpB,eAAG,CAACA,GAAG,0CAAAiM,MAAA,CAA0C,IAAI,CAACzM,cAAc,GAAI;gBACtEqI,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE,IAAI,CAAC0I,iBAAiB,CAACjH;cACjC,CAAC,CAAC;cAAC,OAAA+G,UAAA,CAAAvO,MAAA,WAEI,IAAI,CAACvC,cAAc;YAAA;cAAA,MAIxB,IAAI,CAACH,MAAM,IAAI,IAAI,CAACA,MAAM,CAACnB,MAAM;gBAAAoS,UAAA,CAAAlP,IAAA;gBAAA;cAAA;cAC1B6J,CAAC,GAAG,CAAC;YAAA;cAAA,MAAEA,CAAC,GAAG,IAAI,CAAC5L,MAAM,CAACnB,MAAM;gBAAAoS,UAAA,CAAAlP,IAAA;gBAAA;cAAA;cAAA,MAChC,IAAI,CAAC/B,MAAM,CAAC4L,CAAC,CAAC,CAACjC,WAAW,KAAK+G,8BAAkB;gBAAAO,UAAA,CAAAlP,IAAA;gBAAA;cAAA;cACnD,IAAI,CAAC5B,cAAc,GAAG,IAAI,CAACH,MAAM,CAAC4L,CAAC,CAAC,CAACiF,OAAO;cAC5ClQ,eAAG,CAACA,GAAG,iCAAAiM,MAAA,CAAiC,IAAI,CAACzM,cAAc,GAAI;gBAC7DqI,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE,IAAI,CAAC0I,iBAAiB,CAACjH;cACjC,CAAC,CAAC;cAAC,OAAA+G,UAAA,CAAAvO,MAAA,WAEI,IAAI,CAACvC,cAAc;YAAA;cARUyL,CAAC,IAAI,CAAC;cAAAqF,UAAA,CAAAlP,IAAA;cAAA;YAAA;cAahDpB,eAAG,CAACA,GAAG,CAAC,yBAAyB,EAAE;gBACjC6H,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE,IAAI,CAAC0I,iBAAiB,CAACjH;cACjC,CAAC,CAAC;cAAC+G,UAAA,CAAAlP,IAAA;cAAA,OAEqC,IAAI,CAAC6O,kBAAkB,CAACF,8BAAkB,CAAC;YAAA;cAA7EnF,QAAyB,GAAA0F,UAAA,CAAA1O,IAAA;cAExBgM,KAAK,GAAIhD,QAAQ,CAACwD,IAAI,CAAtBR,KAAK;cAAA,KAERA,KAAK;gBAAA0C,UAAA,CAAAlP,IAAA;gBAAA;cAAA;cACD8O,OAAO,GAAGtC,KAAK,CAACsC,OAAO;cAC7BlQ,eAAG,CAACA,GAAG,oDAAAiM,MAAA,CAAoDiE,OAAO,GAAI;gBACpErI,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE,IAAI,CAAC0I,iBAAiB,CAACjH;cACjC,CAAC,CAAC;cAAC,OAAA+G,UAAA,CAAAvO,MAAA,WAEImO,OAAO;YAAA;cAAA,OAAAI,UAAA,CAAAvO,MAAA,WAGT,EAAE;YAAA;YAAA;cAAA,OAAAuO,UAAA,CAAAtO,IAAA;UAAA;QAAA,GAAAoO,SAAA;MAAA,CACV;MAAA,SAAAI,kBAAA;QAAA,OAAAL,kBAAA,CAAApS,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAuS,iBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;AACA;IANE;EAAA;IAAAnQ,GAAA;IAAAC,KAAA;MAAA,IAAAmQ,mBAAA,OAAAjQ,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAOA,SAAAgQ,UACE1H,WAAmB,EACnB5J,gBAAyB,EACzBuR,SAAqB;QAAA,IAAA/I,aAAA,EAAAgJ,qBAAA,EAAAC,eAAA,EAAAC,oBAAA,EAAAC,SAAA,EAAAC,kBAAA,EAAAC,YAAA,EAAArG,QAAA,EAAAgD,KAAA,EAAArC,eAAA,EAAAC,WAAA;QAAA,OAAA/K,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAkQ,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAhQ,IAAA,GAAAgQ,UAAA,CAAA/P,IAAA;YAAA;cAEfwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAACyF;cAClB,CAAC;cAEDpR,eAAG,CAAC6L,IAAI,IAAAI,MAAA,CAAIH,+BAAoB,yBAAAG,MAAA,CAAsBjD,WAAW,GAAIpB,aAAa,CAAC;cAACuJ,UAAA,CAAA9M,EAAA,GAEtDjF,gBAAgB;cAAA,IAAA+R,UAAA,CAAA9M,EAAA;gBAAA8M,UAAA,CAAA/P,IAAA;gBAAA;cAAA;cAAA+P,UAAA,CAAA/P,IAAA;cAAA,OAAW,IAAI,CAAC4O,qBAAqB,CAAC,CAAC;YAAA;cAAAmB,UAAA,CAAA9M,EAAA,GAAA8M,UAAA,CAAAvP,IAAA;YAAA;cAA/EgP,qBAAqB,GAAAO,UAAA,CAAA9M,EAAA;cAAA,MAEvB,IAAI,CAAChF,MAAM,KAAKC,SAAS;gBAAA6R,UAAA,CAAA/P,IAAA;gBAAA;cAAA;cAAA+P,UAAA,CAAA/P,IAAA;cAAA,OACrB,IAAI,CAACsN,WAAW,CAAC,CAAC;YAAA;cAAA,MAGtB,IAAI,CAACrP,MAAM,IAAI,IAAI,CAACA,MAAM,CAACnB,MAAM;gBAAAiT,UAAA,CAAA/P,IAAA;gBAAA;cAAA;cAC7ByP,eAAe,GAAG,IAAI,CAACxR,MAAM,CAACgS,IAAI,CAAC,UAACzD,KAAK,EAAK;gBAClD,OAAOA,KAAK,CAAC5E,WAAW,KAAKA,WAAW;cAC1C,CAAC,CAAC;cAAA,KAEE6H,eAAe;gBAAAM,UAAA,CAAA/P,IAAA;gBAAA;cAAA;cACjBpB,eAAG,CAACqK,IAAI,eAAA4B,MAAA,CAAejD,WAAW,uBAAoBpB,aAAa,CAAC;cAAC,OAAAuJ,UAAA,CAAApP,MAAA,WAE9D;gBACLwK,UAAU,EAAE,GAAa;gBACzB6B,IAAI,EAAE;kBAAChE,KAAK,EAAE;gBAAkC,CAAC;gBACjDiE,OAAO,EAAEiD;cACX,CAAC;YAAA;cAAAH,UAAA,CAAA/P,IAAA;cAAA,OAI8B,IAAI,CAACxC,KAAK,CAACc,QAAQ,CAACgC,UAAU,CAACiB,WAAW,CAC3EiO,qBAAqB,EACrB5H,WACF,CAAC;YAAA;cAHK8H,oBAAoB,GAAAK,UAAA,CAAAvP,IAAA;cAKpBmP,SAAS,GAAG;gBAChBQ,OAAO,EAAEC,2BAAe;gBACxBxI,WAAW,EAAE8H,oBAAoB;gBACjCH,SAAS,EAAEA,SAAS,IAAIc,iBAAS,CAACC,MAAM;gBACxCtS,gBAAgB,EAAEwR;cACpB,CAAC;cAAAO,UAAA,CAAAhQ,IAAA;cAAAgQ,UAAA,CAAA/P,IAAA;cAAA,OAG6C,IAAI,CAACxC,KAAK,CAACmN,OAAO,CAAC;gBAC7D;gBACAC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACxM,kBAAkB,OAAAwM,MAAA,CAAIC,0BAAc,OAAAD,MAAA,CAAIE,iBAAK,OAAAF,MAAA,CAAI0F,wBAAY,CAAE;gBAC5E7J,MAAM,EAAEuE,mBAAY,CAACuF,IAAI;gBACzBlF,IAAI,EAAEqE;cACR,CAAC,CAAC;YAAA;cALInG,QAAQ,GAAAuG,UAAA,CAAAvP,IAAA;cAOd5B,eAAG,CAACA,GAAG,mBAAAiM,MAAA,CAAmBrB,QAAQ,CAAC2B,UAAU,GAAI3E,aAAa,CAAC;cAC/D5H,eAAG,CAACA,GAAG,yBAAAiM,MAAA,CAAyBrB,QAAQ,aAARA,QAAQ,wBAAAoG,kBAAA,GAARpG,QAAQ,CAAE4B,OAAO,cAAAwE,kBAAA,uBAAjBA,kBAAA,CAAmBvE,UAAU,GAAI7E,aAAa,CAAC;cAEzEgG,KAAK,GAAGhD,QAAQ,CAAC8B,IAAI;cAE3BkB,KAAK,CAAC5E,WAAW,GAAGA,WAAW;cACzBuC,eAAgC,GAAG;gBACvCgB,UAAU,EAAE2B,MAAM,CAACtD,QAAQ,CAACuD,sBAAW,CAAC,CAAC;gBACzCC,IAAI,EAAE;kBACJR,KAAK,EAALA;gBACF,CAAC;gBACDS,OAAO,EAAEC;cACX,CAAC;cAED,CAAA2C,YAAA,OAAI,CAAC5R,MAAM,cAAA4R,YAAA,uBAAXA,YAAA,CAAanT,IAAI,CAAC8P,KAAK,CAAC;cACxB5N,eAAG,CAACA,GAAG,kBAAAiM,MAAA,CAAkBjD,WAAW,4BAAyBpB,aAAa,CAAC;cAAC,OAAAuJ,UAAA,CAAApP,MAAA,WAErEwJ,eAAe;YAAA;cAAA4F,UAAA,CAAAhQ,IAAA;cAAAgQ,UAAA,CAAAhM,EAAA,GAAAgM,UAAA;cAEtBnR,eAAG,CAACoK,KAAK,oCAAA6B,MAAA,CAAoC,IAAAsC,UAAA,CAAAjQ,OAAA,EAAA6S,UAAA,CAAAhM,EAAkB,CAAC,GAAIyC,aAAa,CAAC;cAC5E4D,WAAW,GAAG,IAAAgD,8BAAuB,EAAA2C,UAAA,CAAAhM,EAAA,EAA6ByC,aAAa,CAAC;cAAAuJ,UAAA,CAAA/P,IAAA;cAAA,OAChF,IAAAqN,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAA0C,UAAA,CAAApP,MAAA,WAEXyJ,WAAW;YAAA;YAAA;cAAA,OAAA2F,UAAA,CAAAnP,IAAA;UAAA;QAAA,GAAA0O,SAAA;MAAA,CAErB;MAAA,SAAAT,mBAAA4B,IAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAAtB,mBAAA,CAAA1S,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAgS,kBAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAA5P,GAAA;IAAAC,KAAA;MAAA,IAAA0R,mBAAA,OAAAxR,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAIA,SAAAuR,UAAgC/B,OAAe;QAAA,IAAAtI,aAAA,EAAAsK,kBAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAxH,QAAA,EAAAW,eAAA,EAAA8G,aAAA,EAAAC,aAAA,EAAA9G,WAAA;QAAA,OAAA/K,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAuR,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAArR,IAAA,GAAAqR,UAAA,CAAApR,IAAA;YAAA;cACvCwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAAC8G;cAClB,CAAC;cAEDzS,eAAG,CAAC6L,IAAI,IAAAI,MAAA,CAAIH,+BAAoB,qBAAAG,MAAA,CAAkBiE,OAAO,GAAItI,aAAa,CAAC;cAAC4K,UAAA,CAAArR,IAAA;cAG1EnB,eAAG,CAAC6L,IAAI,4BAAAI,MAAA,CAA4BiE,OAAO,GAAItI,aAAa,CAAC;cAAC4K,UAAA,CAAApR,IAAA;cAAA,OAClB,IAAI,CAACxC,KAAK,CAACmN,OAAO,CAAC;gBAC7D;gBACAC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACxM,kBAAkB,OAAAwM,MAAA,CAAIC,0BAAc,OAAAD,MAAA,CAAIE,iBAAK,OAAAF,MAAA,CAAI0F,wBAAY,OAAA1F,MAAA,CAAIiE,OAAO,CAAE;gBACvFpI,MAAM,EAAEuE,mBAAY,CAACqG;cACvB,CAAC,CAAC;YAAA;cAJI9H,QAAQ,GAAA4H,UAAA,CAAA5Q,IAAA;cAMd5B,eAAG,CAACA,GAAG,yBAAAiM,MAAA,CAAyBrB,QAAQ,aAARA,QAAQ,wBAAAsH,kBAAA,GAARtH,QAAQ,CAAE4B,OAAO,cAAA0F,kBAAA,uBAAjBA,kBAAA,CAAmBzF,UAAU,GAAI7E,aAAa,CAAC;cAEzE2D,eAAgC,GAAG;gBACvCgB,UAAU,EAAE2B,MAAM,CAACtD,QAAQ,CAACuD,sBAAW,CAAC,CAAC;gBACzCC,IAAI,EAAE,CAAC,CAAC;gBACRC,OAAO,EAAEC;cACX,CAAC;cAEK+D,aAAa,IAAAF,aAAA,GAAG,IAAI,CAAC9S,MAAM,cAAA8S,aAAA,uBAAXA,aAAA,CAAaQ,SAAS,CAAC,UAAC/E,KAAK;gBAAA,OAAKA,KAAK,CAACsC,OAAO,KAAKA,OAAO;cAAA,EAAC;cAElF,IAAImC,aAAa,KAAK/S,SAAS,IAAI+S,aAAa,KAAK,CAAC,CAAC,EAAE;gBACvD,CAAAC,aAAA,OAAI,CAACjT,MAAM,cAAAiT,aAAA,uBAAXA,aAAA,CAAaM,MAAM,CAACP,aAAa,EAAE,CAAC,CAAC;cACvC;cAEA,IAAI,GAAAD,aAAA,GAAC,IAAI,CAAC/S,MAAM,cAAA+S,aAAA,eAAXA,aAAA,CAAalU,MAAM,GAAE;gBACxB,IAAI,CAACsB,cAAc,GAAG,EAAE;cAC1B;cAEAQ,eAAG,CAACA,GAAG,kBAAAiM,MAAA,CAAkBiE,OAAO,4BAAyBtI,aAAa,CAAC;cAAC,OAAA4K,UAAA,CAAAzQ,MAAA,WAEjEwJ,eAAe;YAAA;cAAAiH,UAAA,CAAArR,IAAA;cAAAqR,UAAA,CAAAnO,EAAA,GAAAmO,UAAA;cAEtBxS,eAAG,CAACoK,KAAK,mCAAA6B,MAAA,CAAmCiE,OAAO,QAAAjE,MAAA,CAAK,IAAAsC,UAAA,CAAAjQ,OAAA,EAAAkU,UAAA,CAAAnO,EAAkB,CAAC,GAAIuD,aAAa,CAAC;cACvF4D,WAAW,GAAG,IAAAgD,8BAAuB,EAAAgE,UAAA,CAAAnO,EAAA,EAA6BuD,aAAa,CAAC;cAAA4K,UAAA,CAAApR,IAAA;cAAA,OAChF,IAAAqN,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAA+D,UAAA,CAAAzQ,MAAA,WAEXyJ,WAAW;YAAA;YAAA;cAAA,OAAAgH,UAAA,CAAAxQ,IAAA;UAAA;QAAA,GAAAiQ,SAAA;MAAA,CAErB;MAAA,SAAAY,mBAAAC,IAAA;QAAA,OAAAd,mBAAA,CAAAjU,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA4U,kBAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAAxS,GAAA;IAAAC,KAAA;MAAA,IAAAyS,cAAA,OAAAvS,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAIA,SAAAsS,UAA2BC,WAAoB;QAAA,IAAArL,aAAA,EAAAsL,kBAAA,EAAAhQ,OAAA,EAAA1D,cAAA,EAAA2T,WAAA,EAAA/P,gBAAA,EAAAgQ,iBAAA,EAAAxI,QAAA,EAAAyI,UAAA,EAAA9H,eAAA,EAAAJ,KAAA,EAAAmI,GAAA,EAAAC,eAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAjI,WAAA;QAAA,OAAA/K,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAA0S,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAxS,IAAA,GAAAwS,UAAA,CAAAvS,IAAA;YAAA;cACvCwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAACiI;cAClB,CAAC;cAED5T,eAAG,CAAC6L,IAAI,IAAAI,MAAA,CAAIH,+BAAoB,yBAAAG,MAAA,CAAsBgH,WAAW,CAACjJ,WAAW,GAAIpC,aAAa,CAAC;cAAC+L,UAAA,CAAAxS,IAAA;cAGxF+B,OAAO,GAAAlF,aAAA,KAAOiV,WAAW;cAAA,IAE1B/P,OAAO,CAAC9D,gBAAgB;gBAAAuU,UAAA,CAAAvS,IAAA;gBAAA;cAAA;cAAAuS,UAAA,CAAAvS,IAAA;cAAA,OACM,IAAI,CAAC4O,qBAAqB,CAAC,CAAC;YAAA;cAA7D9M,OAAO,CAAC9D,gBAAgB,GAAAuU,UAAA,CAAA/R,IAAA;YAAA;cAAA,MAGtB,CAACsB,OAAO,CAAC7D,MAAM,IAAI6D,OAAO,CAAC7D,MAAM,CAACnB,MAAM,KAAK,CAAC;gBAAAyV,UAAA,CAAAvS,IAAA;gBAAA;cAAA;cAAAuS,UAAA,CAAAvS,IAAA;cAAA,OAEnB,IAAI,CAACoP,iBAAiB,CAAC,CAAC;YAAA;cAA/ChR,cAAc,GAAAmU,UAAA,CAAA/R,IAAA;cAEpBsB,OAAO,CAAC7D,MAAM,GAAG,CAACG,cAAc,CAAC;YAAC;cAGpC0D,OAAO,CAACqO,OAAO,GAAGC,2BAAe;cAC7B2B,WAAW,GAAG,CAAC,CAAC;cAAAQ,UAAA,CAAAtP,EAAA,GAEZnB,OAAO,CAAC8G,WAAW;cAAA2J,UAAA,CAAAvS,IAAA,GAAAuS,UAAA,CAAAtP,EAAA,KACpB2I,mBAAW,CAACC,MAAM,QAAA0G,UAAA,CAAAtP,EAAA,KAMlB2I,mBAAW,CAACE,KAAK;cAAA;YAAA;cAAAyG,UAAA,CAAAvS,IAAA;cAAA,OALW,IAAI,CAACwE,cAAc,CAAC1C,OAAO,CAAC;YAAA;cAArDE,gBAAgB,GAAAuQ,UAAA,CAAA/R,IAAA;cAEtBuR,WAAW,GAAG/P,gBAAgB;cAAC,OAAAuQ,UAAA,CAAA5R,MAAA;YAAA;cAAA,IAI1BmB,OAAO,CAACqF,SAAS;gBAAAoL,UAAA,CAAAvS,IAAA;gBAAA;cAAA;cAAA,OAAAuS,UAAA,CAAA5R,MAAA,WACb;gBACLwK,UAAU,EAAE,GAAa;gBACzB6B,IAAI,EAAE;kBACJhE,KAAK,EAAE;gBACT,CAAC;gBACDiE,OAAO,EAAEiD;cACX,CAAC;YAAA;cAAAqC,UAAA,CAAAvS,IAAA;cAAA,OAE4B,IAAI,CAACwE,cAAc,CAAC1C,OAAO,CAAC;YAAA;cAArDE,iBAAgB,GAAAuQ,UAAA,CAAA/R,IAAA;cAEtBuR,WAAW,GAAG/P,iBAAgB;cAAC,OAAAuQ,UAAA,CAAA5R,MAAA;YAAA;cAAA,OAAA4R,UAAA,CAAA5R,MAAA,WAIxB;gBACLwK,UAAU,EAAE,GAAa;gBACzB6B,IAAI,EAAE;kBACJhE,KAAK,EAAE;gBACT,CAAC;gBACDiE,OAAO,EAAEiD;cACX,CAAC;YAAA;cAAAqC,UAAA,CAAAvS,IAAA;cAAA,OAIuC,IAAI,CAACxC,KAAK,CAACmN,OAAO,CAAC;gBAC7D;gBACAC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACxM,kBAAkB,OAAAwM,MAAA,CAAIC,0BAAc,OAAAD,MAAA,CAAIE,iBAAK,OAAAF,MAAA,CAAIG,0BAAc,CAAE;gBAC9EtE,MAAM,EAAEuE,mBAAY,CAACuF,IAAI;gBACzBlF,IAAI,EAAEyG;cACR,CAAC,CAAC;YAAA;cALIvI,QAAQ,GAAA+I,UAAA,CAAA/R,IAAA;cAOd5B,eAAG,CAACA,GAAG,mBAAAiM,MAAA,CAAmBrB,QAAQ,CAAC2B,UAAU,GAAI3E,aAAa,CAAC;cAC/D5H,eAAG,CAACA,GAAG,yBAAAiM,MAAA,CAAyBrB,QAAQ,aAARA,QAAQ,wBAAAsI,kBAAA,GAARtI,QAAQ,CAAE4B,OAAO,cAAA0G,kBAAA,uBAAjBA,kBAAA,CAAmBzG,UAAU,GAAI7E,aAAa,CAAC;cAEzEyL,UAAU,GAAGzI,QAAQ,CAAC8B,IAAI;cAEhCxJ,OAAO,CAACqF,SAAS,GAAG8K,UAAU,CAAC9K,SAAS;cAClCgD,eAAgC,GAAG;gBACvCgB,UAAU,EAAE2B,MAAM,CAACtD,QAAQ,CAACuD,sBAAW,CAAC,CAAC;gBACzCC,IAAI,EAAE;kBACJlL,OAAO,EAAPA;gBACF,CAAC;gBACDmL,OAAO,EAAEC;cACX,CAAC;cAAA,MAEGpL,OAAO,CAAC8G,WAAW,KAAKgD,mBAAW,CAACE,KAAK,IAAImG,UAAU,CAAC9K,SAAS;gBAAAoL,UAAA,CAAAvS,IAAA;gBAAA;cAAA;cAC7D+J,KAAK,MAAAc,MAAA,CAAMqB,0BAAc,SAAArB,MAAA,CAAKoH,UAAU,CAAC9K,SAAS;cAAAoL,UAAA,CAAAvS,IAAA;cAAA,OACtC,IAAAqM,gBAAS,EAACtC,KAAK,CAAC;YAAA;cAA5BmI,GAAG,GAAAK,UAAA,CAAA/R,IAAA;cACH2R,eAAe,GAAG,IAAI,CAAC9L,oBAAoB,CAC/CtJ,MAAM,CAACmH,WAAW,CAAC,CAAC,CAAC+N,UAAU,CAAC9K,SAAS,EAAE8K,UAAU,CAAC,CAAC,CAAC,EACxDC,GAAG,CAAC5G,IACN,CAAC;cACD,IAAI6G,eAAe,EAAE;gBACnB,CAAAC,cAAA,OAAI,CAACjU,QAAQ,cAAAiU,cAAA,uBAAbA,cAAA,CAAe1V,IAAI,CAACyV,eAAe,CAAC,CAAC,CAAC,CAAC;cACzC;cAACI,UAAA,CAAAvS,IAAA;cAAA;YAAA;cAED,CAAAqS,eAAA,OAAI,CAAClU,QAAQ,cAAAkU,eAAA,uBAAbA,eAAA,CAAe3V,IAAI,CAACoF,OAAO,CAAC;YAAC;cAE/BlD,eAAG,CAACA,GAAG,iCAAiC4H,aAAa,CAAC;cAAC,OAAA+L,UAAA,CAAA5R,MAAA,WAEhDwJ,eAAe;YAAA;cAAAoI,UAAA,CAAAxS,IAAA;cAAAwS,UAAA,CAAAxO,EAAA,GAAAwO,UAAA;cAEtB3T,eAAG,CAACoK,KAAK,8BAAA6B,MAAA,CAA8B,IAAAsC,UAAA,CAAAjQ,OAAA,EAAAqV,UAAA,CAAAxO,EAAkB,CAAC,GAAIyC,aAAa,CAAC;cACtE4D,WAAW,GAAG,IAAAgD,8BAAuB,EAAAmF,UAAA,CAAAxO,EAAA,EAA6ByC,aAAa,CAAC;cAAA+L,UAAA,CAAAvS,IAAA;cAAA,OAChF,IAAAqN,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAAkF,UAAA,CAAA5R,MAAA,WAEXyJ,WAAW;YAAA;YAAA;cAAA,OAAAmI,UAAA,CAAA3R,IAAA;UAAA;QAAA,GAAAgR,SAAA;MAAA,CAErB;MAAA,SAAAa,cAAAC,IAAA;QAAA,OAAAf,cAAA,CAAAhV,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAA4V,aAAA;IAAA;IAED;AACF;AACA;AACA;IAHE;EAAA;IAAAxT,GAAA;IAAAC,KAAA;MAAA,IAAAyT,cAAA,OAAAvT,kBAAA,CAAAlC,OAAA,eAAAmC,YAAA,CAAAnC,OAAA,CAAAoC,IAAA,CAIA,SAAAsT,UAA2BzL,SAAiB;QAAA,IAAAX,aAAA,EAAAqM,eAAA,EAAArJ,QAAA,EAAAW,eAAA,EAAA2I,eAAA,EAAAC,eAAA,EAAA3I,WAAA;QAAA,OAAA/K,YAAA,CAAAnC,OAAA,CAAA0C,IAAA,UAAAoT,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAlT,IAAA,GAAAkT,UAAA,CAAAjT,IAAA;YAAA;cACpCwG,aAAa,GAAG;gBACpBC,IAAI,EAAE1H,2BAAe;gBACrB2H,MAAM,EAAE6D,mBAAO,CAAC2I;cAClB,CAAC;cAEDtU,eAAG,CAAC6L,IAAI,IAAAI,MAAA,CAAIH,+BAAoB,uBAAAG,MAAA,CAAoB1D,SAAS,GAAIX,aAAa,CAAC;cAACyM,UAAA,CAAAlT,IAAA;cAG9EnB,eAAG,CAAC6L,IAAI,uBAAAI,MAAA,CAAuB1D,SAAS,GAAIX,aAAa,CAAC;cAACyM,UAAA,CAAAjT,IAAA;cAAA,OACf,IAAI,CAACxC,KAAK,CAACmN,OAAO,CAAC;gBAC7D;gBACAC,GAAG,KAAAC,MAAA,CAAK,IAAI,CAACxM,kBAAkB,OAAAwM,MAAA,CAAIC,0BAAc,OAAAD,MAAA,CAAIE,iBAAK,OAAAF,MAAA,CAAIG,0BAAc,OAAAH,MAAA,CAAI1D,SAAS,CAAE;gBAC3FT,MAAM,EAAEuE,mBAAY,CAACqG;cACvB,CAAC,CAAC;YAAA;cAJI9H,QAAQ,GAAAyJ,UAAA,CAAAzS,IAAA;cAMR2J,eAAgC,GAAG;gBACvCgB,UAAU,EAAE2B,MAAM,CAACtD,QAAQ,CAACuD,sBAAW,CAAC,CAAC;gBACzCC,IAAI,EAAE,CAAC,CAAC;gBACRC,OAAO,EAAEC;cACX,CAAC;cAEK4F,eAAe,IAAAD,eAAA,GAAG,IAAI,CAAC1U,QAAQ,cAAA0U,eAAA,uBAAbA,eAAA,CAAetB,SAAS,CAC9C,UAACzP,OAAO;gBAAA,OAAKA,OAAO,CAACqF,SAAS,KAAKA,SAAS;cAAA,CAC9C,CAAC;cAED,IAAI2L,eAAe,KAAK5U,SAAS,IAAI4U,eAAe,KAAK,CAAC,CAAC,EAAE;gBAC3D,CAAAC,eAAA,OAAI,CAAC5U,QAAQ,cAAA4U,eAAA,uBAAbA,eAAA,CAAevB,MAAM,CAACsB,eAAe,EAAE,CAAC,CAAC;cAC3C;cAEAlU,eAAG,CAACA,GAAG,YAAAiM,MAAA,CAAY1D,SAAS,4BAAyBX,aAAa,CAAC;cAAC,OAAAyM,UAAA,CAAAtS,MAAA,WAE7DwJ,eAAe;YAAA;cAAA8I,UAAA,CAAAlT,IAAA;cAAAkT,UAAA,CAAAhQ,EAAA,GAAAgQ,UAAA;cAEtBrU,eAAG,CAACoK,KAAK,6BAAA6B,MAAA,CAA6B1D,SAAS,QAAA0D,MAAA,CAAK,IAAAsC,UAAA,CAAAjQ,OAAA,EAAA+V,UAAA,CAAAhQ,EAAkB,CAAC,GAAIuD,aAAa,CAAC;cACnF4D,WAAW,GAAG,IAAAgD,8BAAuB,EAAA6F,UAAA,CAAAhQ,EAAA,EAA6BuD,aAAa,CAAC;cAAAyM,UAAA,CAAAjT,IAAA;cAAA,OAChF,IAAAqN,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAA4F,UAAA,CAAAtS,MAAA,WAEXyJ,WAAW;YAAA;YAAA;cAAA,OAAA6I,UAAA,CAAArS,IAAA;UAAA;QAAA,GAAAgS,SAAA;MAAA,CAErB;MAAA,SAAAO,cAAAC,IAAA;QAAA,OAAAT,cAAA,CAAAhW,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAAsW,aAAA;IAAA;IAED;AACF;AACA;IAFE;EAAA;IAAAlU,GAAA;IAAAC,KAAA,EAGA,SAAAmU,gBAAA,EAAwC;MACtC,OAAO,IAAI,CAACzV,YAAY;IAC1B;EAAC;EAAA,OAAAN,cAAA;AAAA;AAGH;AACA;AACA;AACA;AACA;AACA;AACO,IAAMgW,oBAAoB,GAAA/V,OAAA,CAAA+V,oBAAA,GAAG,SAAvBA,oBAAoBA,CAAI9V,KAAe,EAAEC,MAAuB;EAAA,OAC3E,IAAIH,cAAc,CAACE,KAAK,EAAEC,MAAM,CAAC;AAAA","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_CLIENT","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref0","_callee6$","_context6","_x0","_x9","_ref1","_ref10","decryptContact","_x8","resolveCloudContacts","contactsDataMap","inputList","loggerContext","file","method","finalContactList","resolvedList","Resources","item","id","isResolved","some","listItem","contactId","resolved","n","_filteredContact$name","_filteredContact$name2","_filteredContact$SCIM","_filteredContact$SCIM2","_filteredContact$SCIM3","filteredContact","displayName","emails","phoneNumbers","photos","sipAddresses","SCIM_WEBEXIDENTITY_USER","firstName","name","givenName","lastName","familyName","manager","SCIM_ENTERPRISE_USER","department","avatarURL","_contactsDataMap$inpu","contactType","avatarUrlDomain","ownerId","cloudContact","error","warn","_getContacts","_callee1","_this5","contactList","cloudContactsMap","_response$headers","response","responseBody","contactIdList","totalContacts","MAX_CONTACTS_PER_QUERY","i","contactIdListChunk","query","result","slicedCloudContactsMap","resolvedContacts","contactResponse","errorInfo","extendedError","errorStatus","_callee1$","_context1","METHODS","GET_CONTACTS","info","METHOD_START_MESSAGE","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","statusCode","headers","trackingid","body","Error","_ref11","_callee9","_callee9$","_context9","ContactType","CUSTOM","CLOUD","_x1","_keys","slice","SCIM_ID_FILTER","join","OR","scimQuery","_ref12","_callee0","group","idx","_callee0$","_context0","_x10","_x11","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","uploadLogs","getContacts","_createNewEncryptionKeyUrl","_callee10","unboundedKeyUri","unboundedKeys","_callee10$","_context10","CREATE_NEW_ENCRYPTION_KEY_URL","kms","createUnboundKeys","count","createResource","keyUris","createNewEncryptionKeyUrl","_fetchEncryptionKeyUrl","_callee11","_response$data$group","_response$data$group2","_callee11$","_context11","FETCH_ENCRYPTION_KEY_URL","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee12","_callee12$","_context12","FETCH_DEFAULT_GROUP","fetchDefaultGroup","_createContactGroup","_callee13","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_response$headers2","_this$groups","_callee13$","_context13","CREATE_CONTACT_GROUP","find","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x12","_x13","_x14","_deleteContactGroup","_callee14","_response$headers3","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee14$","_context14","DELETE_CONTACT_GROUP","DELETE","findIndex","splice","deleteContactGroup","_x15","_createContact","_callee15","contactInfo","_response$headers4","requestBody","_encryptedContact","newContact","res","resolvedContact","_this$contacts","_this$contacts2","_callee15$","_context15","CREATE_CONTACT","createContact","_x16","_deleteContact","_callee16","_this$contacts3","contactToDelete","_this$contacts4","_callee16$","_context16","DELETE_CONTACT","deleteContact","_x17","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport ExtendedError from 'Errors/catalog/ExtendedError';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n SCIM_ENTERPRISE_USER,\n SCIM_WEBEXIDENTITY_USER,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail, SCIMListResponse} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_CLIENT,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n METHODS,\n OR,\n SCIM_ID_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {scimQuery, serviceErrorCodeHandler, uploadLogs} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_CLIENT);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n private resolveCloudContacts(\n contactsDataMap: ContactIdContactInfo,\n inputList: SCIMListResponse\n ): Contact[] | null {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: 'resolveCloudContacts',\n };\n const finalContactList: Contact[] = [];\n const resolvedList: string[] = [];\n\n try {\n inputList.Resources.forEach((item) => {\n resolvedList.push(item.id);\n });\n\n Object.values(contactsDataMap).forEach((item) => {\n const isResolved = resolvedList.some((listItem) => listItem === item.contactId);\n if (!isResolved) {\n finalContactList.push({...item, resolved: false});\n }\n });\n\n for (let n = 0; n < inputList.Resources.length; n += 1) {\n const filteredContact = inputList.Resources[n];\n const {displayName, emails, phoneNumbers, photos} = filteredContact;\n let sipAddresses;\n if (filteredContact[SCIM_WEBEXIDENTITY_USER]) {\n sipAddresses = filteredContact[SCIM_WEBEXIDENTITY_USER].sipAddresses;\n }\n const firstName = filteredContact.name?.givenName;\n const lastName = filteredContact.name?.familyName;\n const manager = filteredContact[SCIM_ENTERPRISE_USER]?.manager?.displayName;\n const department = filteredContact[SCIM_ENTERPRISE_USER]?.department;\n const avatarURL = photos?.length ? photos[0].value : '';\n\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[inputList.Resources[n].id];\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId: inputList.Resources[n].id,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n resolved: true,\n };\n\n finalContactList.push(cloudContact);\n }\n } catch (error: any) {\n log.warn('Error occurred while parsing resolved contacts', loggerContext);\n\n return null;\n }\n\n return finalContactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.GET_CONTACTS,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n const contactList: Contact[] = [];\n const cloudContactsMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(\n `Response code: ${response.statusCode} and Response trackingId: ${response?.headers?.trackingid}`,\n loggerContext\n );\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n await Promise.all(\n contacts.map(async (contact) => {\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n cloudContactsMap[contact.contactId] = contact;\n }\n })\n );\n\n // Resolve cloud contacts\n if (Object.keys(cloudContactsMap).length) {\n const contactIdList = Object.keys(cloudContactsMap);\n const totalContacts = contactIdList.length;\n const MAX_CONTACTS_PER_QUERY = 50;\n\n for (let i = 0; i < totalContacts; i += MAX_CONTACTS_PER_QUERY) {\n try {\n const contactIdListChunk = contactIdList.slice(i, i + MAX_CONTACTS_PER_QUERY);\n const query = contactIdListChunk.map((item) => `${SCIM_ID_FILTER} \"${item}\"`).join(OR);\n const result = await scimQuery(query);\n\n const slicedCloudContactsMap = Object.fromEntries(\n Object.entries(cloudContactsMap).slice(i, i + MAX_CONTACTS_PER_QUERY)\n );\n\n const resolvedContacts = this.resolveCloudContacts(\n slicedCloudContactsMap,\n result.body as SCIMListResponse\n );\n\n if (resolvedContacts) {\n resolvedContacts.forEach((item) => contactList.push(item));\n }\n } catch (error: any) {\n log.warn(\n `Error processing contact chunk ${i}-${i + MAX_CONTACTS_PER_QUERY}`,\n loggerContext\n );\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log('Successfully fetched contacts and groups', loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const extendedError = new Error(`Error fetching contacts: ${err}`) as ExtendedError;\n log.error(extendedError, loggerContext);\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_NEW_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_ENCRYPTION_KEY_URL,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.log(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n log.log(`Successfully created default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchEncryptionKeyUrl.name,\n });\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.FETCH_DEFAULT_GROUP,\n };\n\n log.info(METHOD_START_MESSAGE, loggerContext);\n\n if (this.defaultGroupId) {\n log.log(`Using existing default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n log.log(`Found default group with ID: ${this.defaultGroupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.log('No default group found.', {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n const groupId = group.groupId;\n log.log(`Successfully created new default group with ID: ${groupId}`, {\n file: CONTACTS_CLIENT,\n method: this.fetchDefaultGroup.name,\n });\n\n return groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with displayName: ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n log.log(`Contact group ${displayName} successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const extendedError = new Error(`Unable to create contact group: ${err}`) as ExtendedError;\n log.error(extendedError, loggerContext);\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT_GROUP,\n };\n\n log.info(`${METHOD_START_MESSAGE} with groupId: ${groupId}`, loggerContext);\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n log.log(`Contact group ${groupId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const extendedError = new Error(\n `Unable to delete contact group ${groupId}: ${err}`\n ) as ExtendedError;\n log.error(extendedError, loggerContext);\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.CREATE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n log.log(`Response code: ${response.statusCode}`, loggerContext);\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const query = `${SCIM_ID_FILTER} \"${newContact.contactId}\"`;\n const res = await scimQuery(query);\n const resolvedContact = this.resolveCloudContacts(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n res.body as SCIMListResponse\n );\n if (resolvedContact) {\n this.contacts?.push(resolvedContact[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n log.log(`Contact successfully created`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const extendedError = new Error(`Failed to create contact: ${err}`) as ExtendedError;\n log.error(extendedError, loggerContext);\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_CLIENT,\n method: METHODS.DELETE_CONTACT,\n };\n\n log.info(`${METHOD_START_MESSAGE} with contactId: ${contactId}`, loggerContext);\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n log.log(`Contact ${contactId} successfully deleted`, loggerContext);\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const extendedError = new Error(\n `Unable to delete contact ${contactId}: ${err}`\n ) as ExtendedError;\n log.error(extendedError, loggerContext);\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n await uploadLogs();\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,6 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regene
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
15
15
  var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
16
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
17
16
  var _types = require("../common/types");
18
17
  var _testUtil = require("../common/testUtil");
19
18
  var _types2 = require("../Logger/types");
@@ -456,7 +455,7 @@ describe('ContactClient Tests', function () {
456
455
  expect(warnSpy).toBeCalledTimes(1);
457
456
  expect(warnSpy).toHaveBeenNthCalledWith(1, '503 Unable to establish a connection with the server', loggerContext);
458
457
  expect(errorSpy).toBeCalledTimes(1);
459
- expect(errorSpy).toHaveBeenNthCalledWith(1, "Unable to create contact group: ".concat((0, _stringify.default)(failureResponsePayload)), loggerContext);
458
+ expect(errorSpy).toHaveBeenNthCalledWith(1, Error("Unable to create contact group: ".concat(failureResponsePayload)), loggerContext);
460
459
  expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
461
460
  expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
462
461
  case 20:
@@ -494,7 +493,7 @@ describe('ContactClient Tests', function () {
494
493
  expect(warnSpy).toBeCalledTimes(1);
495
494
  expect(errorSpy).toBeCalledTimes(1);
496
495
  expect(uploadLogsSpy).toBeCalledTimes(1);
497
- expect(errorSpy).toHaveBeenNthCalledWith(1, "Unable to delete contact group ".concat(mockGroupResponse.groupId, ": ").concat((0, _stringify.default)(failureResponsePayload)), loggerContext);
496
+ expect(errorSpy).toHaveBeenNthCalledWith(1, Error("Unable to delete contact group ".concat(mockGroupResponse.groupId, ": ").concat(failureResponsePayload)), loggerContext);
498
497
  expect(warnSpy).toHaveBeenNthCalledWith(1, '503 Unable to establish a connection with the server', loggerContext);
499
498
  expect(contactClient['groups']).toEqual(_contactFixtures.mockContactGroupListOne);
500
499
  expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);
@@ -809,7 +808,7 @@ describe('ContactClient Tests', function () {
809
808
  file: _constants2.CONTACTS_CLIENT,
810
809
  method: _constants2.METHODS.CREATE_CONTACT
811
810
  });
812
- expect(_Logger.default.error).toBeCalledWith("Failed to create contact: ".concat((0, _stringify.default)(failureResponsePayload)), {
811
+ expect(_Logger.default.error).toBeCalledWith(Error("Failed to create contact: ".concat(failureResponsePayload)), {
813
812
  file: _constants2.CONTACTS_CLIENT,
814
813
  method: _constants2.METHODS.CREATE_CONTACT
815
814
  });