@cometchat/chat-uikit-angular 4.0.1 → 4.1.0

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 (113) hide show
  1. package/AI/AIAssistBot/AIAssistBot.d.ts +7 -0
  2. package/AI/AIAssistBot/AIAssistBotDecorator.d.ts +11 -0
  3. package/AI/AIConversationStarter/AIConversationStarter.d.ts +2 -2
  4. package/AI/AIConversationStarter/AIConversationStarterDecorator.d.ts +3 -0
  5. package/AI/AIConversationSummary/AIConversationSummary.d.ts +7 -0
  6. package/AI/AIConversationSummary/AIConversationSummaryDecorator.d.ts +10 -0
  7. package/AI/AISmartReplies/AISmartReplies.d.ts +2 -2
  8. package/AI/AISmartReplies/AISmartRepliesDecorator.d.ts +3 -0
  9. package/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.d.ts +119 -0
  10. package/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.d.ts +14 -0
  11. package/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.d.ts +111 -0
  12. package/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.d.ts +10 -0
  13. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.d.ts +76 -0
  14. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.d.ts +10 -0
  15. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.d.ts +90 -0
  16. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.d.ts +10 -0
  17. package/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.d.ts +133 -0
  18. package/Calls/CometChatCallLogs/cometchat-call-logs.module.d.ts +12 -0
  19. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.d.ts +54 -0
  20. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.d.ts +12 -0
  21. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +18 -7
  22. package/CometChatList/cometchat-list.component.d.ts +12 -9
  23. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +65 -29
  24. package/CometChatMessageComposer/cometchat-message-composer.module.d.ts +3 -3
  25. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +7 -6
  26. package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +6 -4
  27. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +96 -55
  28. package/CometChatMessageList/cometchat-message-list.module.d.ts +1 -1
  29. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +19 -16
  30. package/CometChatMessages/cometchat-messages.module.d.ts +3 -2
  31. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +8 -5
  32. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +13 -3
  33. package/Shared/Framework/AIExtensionDataSource.d.ts +5 -0
  34. package/Shared/Framework/DataSource.d.ts +3 -1
  35. package/Shared/Framework/DataSourceDecorator.d.ts +3 -1
  36. package/Shared/Utils/CallDetailUtils.d.ts +8 -0
  37. package/Shared/Utils/CallLogUtils.d.ts +8 -0
  38. package/Shared/Utils/MessageUtils.d.ts +2 -1
  39. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.d.ts +71 -0
  40. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.d.ts +11 -0
  41. package/assets/InfoIcon.svg +13 -0
  42. package/assets/greaterThanIcon.svg +3 -0
  43. package/assets/incomingAudioCallIconUrl.svg +5 -0
  44. package/assets/incomingVideoCallIconUrl.svg +6 -0
  45. package/assets/missedAudioCallIconUrl.svg +5 -0
  46. package/assets/missedVideoCallIconUrl.svg +6 -0
  47. package/assets/outgoingAudioCallIconUrl.svg +5 -0
  48. package/assets/outgoingVideoCallIconUrl.svg +6 -0
  49. package/esm2020/AI/AIAssistBot/AIAssistBot.mjs +21 -0
  50. package/esm2020/AI/AIAssistBot/AIAssistBotDecorator.mjs +68 -0
  51. package/esm2020/AI/AIConversationStarter/AIConversationStarter.mjs +7 -4
  52. package/esm2020/AI/AIConversationStarter/AIConversationStarterDecorator.mjs +22 -1
  53. package/esm2020/AI/AIConversationSummary/AIConversationSummary.mjs +21 -0
  54. package/esm2020/AI/AIConversationSummary/AIConversationSummaryDecorator.mjs +32 -0
  55. package/esm2020/AI/AISmartReplies/AISmartReplies.mjs +7 -4
  56. package/esm2020/AI/AISmartReplies/AISmartRepliesDecorator.mjs +22 -1
  57. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +3 -3
  58. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.mjs +351 -0
  59. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.mjs +47 -0
  60. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.mjs +352 -0
  61. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.mjs +21 -0
  62. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.mjs +189 -0
  63. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.mjs +21 -0
  64. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.mjs +246 -0
  65. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.mjs +21 -0
  66. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.mjs +585 -0
  67. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs.module.mjs +36 -0
  68. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.mjs +193 -0
  69. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.mjs +39 -0
  70. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +1 -1
  71. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +72 -46
  72. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +3 -3
  73. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +1 -1
  74. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +1 -1
  75. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +3 -3
  76. package/esm2020/CometChatList/cometchat-list.component.mjs +44 -28
  77. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +312 -115
  78. package/esm2020/CometChatMessageComposer/cometchat-message-composer.module.mjs +7 -14
  79. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +15 -17
  80. package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +19 -21
  81. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +888 -300
  82. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +5 -5
  83. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +72 -51
  84. package/esm2020/CometChatMessages/cometchat-messages.module.mjs +10 -6
  85. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +23 -23
  86. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +1 -1
  87. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +3 -3
  88. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +173 -36
  89. package/esm2020/Shared/Framework/AIExtensionDataSource.mjs +3 -0
  90. package/esm2020/Shared/Framework/ChatConfigurator.mjs +2 -2
  91. package/esm2020/Shared/Framework/DataSource.mjs +1 -1
  92. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +5 -2
  93. package/esm2020/Shared/Utils/CallDetailUtils.mjs +72 -0
  94. package/esm2020/Shared/Utils/CallLogUtils.mjs +122 -0
  95. package/esm2020/Shared/Utils/MessageUtils.mjs +31 -20
  96. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.mjs +289 -0
  97. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.mjs +22 -0
  98. package/esm2020/public-api.mjs +106 -91
  99. package/fesm2015/cometchat-chat-uikit-angular.mjs +4249 -817
  100. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
  101. package/fesm2020/cometchat-chat-uikit-angular.mjs +4271 -836
  102. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
  103. package/package.json +6 -6
  104. package/public-api.d.ts +105 -90
  105. package/AI/AIEnabler.d.ts +0 -8
  106. package/AI/AIEnablerDecorator.d.ts +0 -7
  107. package/LICENSE.md +0 -3
  108. package/Shared/Views/CometChatCardView/cometchat-card-view/cometchat-card-view.component.d.ts +0 -71
  109. package/Shared/Views/CometChatCardView/cometchat-card-view.module.d.ts +0 -8
  110. package/esm2020/AI/AIEnabler.mjs +0 -70
  111. package/esm2020/AI/AIEnablerDecorator.mjs +0 -10
  112. package/esm2020/Shared/Views/CometChatCardView/cometchat-card-view/cometchat-card-view.component.mjs +0 -117
  113. package/esm2020/Shared/Views/CometChatCardView/cometchat-card-view.module.mjs +0 -23
@@ -4,10 +4,11 @@ import { CometChatMessagesComponent } from "./cometchat-messages/cometchat-messa
4
4
  import { CometChatMessageHeader } from "../CometChatMessageHeader/cometchat-message-header.module";
5
5
  import { CometChatMessageList } from "../CometChatMessageList/cometchat-message-list.module";
6
6
  import { CometChatMessageComposer } from "../CometChatMessageComposer/cometchat-message-composer.module";
7
- import '@cometchat/uikit-elements';
7
+ import "@cometchat/uikit-elements";
8
8
  import { CometChatThreadedMessages } from "../CometChatThreadedMessages/cometchat-threaded-messages.module";
9
9
  import { CometChatDetails } from "../CometChatDetails/cometchat-details.module";
10
10
  import { CometChatCallButtons } from "../Calls/CometChatCallButtons/cometchat-call-buttons.module";
11
+ import { AIAssistBotMessageList } from "../Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module";
11
12
  import * as i0 from "@angular/core";
12
13
  export class CometChatMessages {
13
14
  }
@@ -18,7 +19,8 @@ CometChatMessages.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
18
19
  CometChatMessageComposer,
19
20
  CometChatThreadedMessages,
20
21
  CometChatDetails,
21
- CometChatCallButtons], exports: [CometChatMessagesComponent] });
22
+ CometChatCallButtons,
23
+ AIAssistBotMessageList], exports: [CometChatMessagesComponent] });
22
24
  CometChatMessages.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessages, imports: [[
23
25
  CommonModule,
24
26
  CometChatMessageHeader,
@@ -26,7 +28,8 @@ CometChatMessages.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
26
28
  CometChatMessageComposer,
27
29
  CometChatThreadedMessages,
28
30
  CometChatDetails,
29
- CometChatCallButtons
31
+ CometChatCallButtons,
32
+ AIAssistBotMessageList,
30
33
  ]] });
31
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessages, decorators: [{
32
35
  type: NgModule,
@@ -39,10 +42,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
39
42
  CometChatMessageComposer,
40
43
  CometChatThreadedMessages,
41
44
  CometChatDetails,
42
- CometChatCallButtons
45
+ CometChatCallButtons,
46
+ AIAssistBotMessageList,
43
47
  ],
44
48
  exports: [CometChatMessagesComponent],
45
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
49
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
46
50
  }]
47
51
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZXMvY29tZXRjaGF0LW1lc3NhZ2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUN6RyxPQUFPLDJCQUEyQixDQUFBO0FBQ2xDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOztBQWdCbkcsTUFBTSxPQUFPLGlCQUFpQjs7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQWJiLDBCQUEwQixhQUV2QyxZQUFZO1FBQ2Isc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLGdCQUFnQjtRQUNoQixvQkFBb0IsYUFFWCwwQkFBMEI7Z0hBR3pCLGlCQUFpQixZQVpuQjtZQUNQLFlBQVk7WUFDYixzQkFBc0I7WUFDdEIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4Qix5QkFBeUI7WUFDekIsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtTQUNwQjs0RkFJVSxpQkFBaUI7a0JBZDdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNiLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3BCO29CQUNELE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUNyQyxPQUFPLEVBQUMsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbWV0Y2hhdC1tZXNzYWdlcy9jb21ldGNoYXQtbWVzc2FnZXMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlSGVhZGVyIH0gZnJvbSBcIi4uL0NvbWV0Q2hhdE1lc3NhZ2VIZWFkZXIvY29tZXRjaGF0LW1lc3NhZ2UtaGVhZGVyLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZUxpc3QgfSBmcm9tIFwiLi4vQ29tZXRDaGF0TWVzc2FnZUxpc3QvY29tZXRjaGF0LW1lc3NhZ2UtbGlzdC5tb2R1bGVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlciB9IGZyb20gXCIuLi9Db21ldENoYXRNZXNzYWdlQ29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIubW9kdWxlXCI7XG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBDb21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzIH0gZnJvbSBcIi4uL0NvbWV0Q2hhdFRocmVhZGVkTWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0RGV0YWlscyB9IGZyb20gXCIuLi9Db21ldENoYXREZXRhaWxzL2NvbWV0Y2hhdC1kZXRhaWxzLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0Q2FsbEJ1dHRvbnMgfSBmcm9tIFwiLi4vQ2FsbHMvQ29tZXRDaGF0Q2FsbEJ1dHRvbnMvY29tZXRjaGF0LWNhbGwtYnV0dG9ucy5tb2R1bGVcIjtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ29tZXRDaGF0TWVzc2FnZXNDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgQ29tZXRDaGF0TWVzc2FnZUhlYWRlcixcbiAgIENvbWV0Q2hhdE1lc3NhZ2VMaXN0LFxuICAgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyLFxuICAgQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcyxcbiAgIENvbWV0Q2hhdERldGFpbHMsXG4gICBDb21ldENoYXRDYWxsQnV0dG9uc1xuICBdLFxuICBleHBvcnRzOiBbQ29tZXRDaGF0TWVzc2FnZXNDb21wb25lbnRdLFxuICBzY2hlbWFzOltDVVNUT01fRUxFTUVOVFNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRNZXNzYWdlcyB7fVxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0TWVzc2FnZXMvY29tZXRjaGF0LW1lc3NhZ2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUN6RyxPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlFQUF5RSxDQUFDOztBQWlCakgsTUFBTSxPQUFPLGlCQUFpQjs7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLGlCQWRiLDBCQUEwQixhQUV2QyxZQUFZO1FBQ1osc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIseUJBQXlCO1FBQ3pCLGdCQUFnQjtRQUNoQixvQkFBb0I7UUFDcEIsc0JBQXNCLGFBRWQsMEJBQTBCO2dIQUd6QixpQkFBaUIsWUFibkI7WUFDUCxZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsc0JBQXNCO1NBQ3ZCOzRGQUlVLGlCQUFpQjtrQkFmN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZXNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21ldGNoYXQtbWVzc2FnZXMvY29tZXRjaGF0LW1lc3NhZ2VzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZUhlYWRlciB9IGZyb20gXCIuLi9Db21ldENoYXRNZXNzYWdlSGVhZGVyL2NvbWV0Y2hhdC1tZXNzYWdlLWhlYWRlci5tb2R1bGVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VMaXN0IH0gZnJvbSBcIi4uL0NvbWV0Q2hhdE1lc3NhZ2VMaXN0L2NvbWV0Y2hhdC1tZXNzYWdlLWxpc3QubW9kdWxlXCI7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlQ29tcG9zZXIgfSBmcm9tIFwiLi4vQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyL2NvbWV0Y2hhdC1tZXNzYWdlLWNvbXBvc2VyLm1vZHVsZVwiO1xuaW1wb3J0IFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcyB9IGZyb20gXCIuLi9Db21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzL2NvbWV0Y2hhdC10aHJlYWRlZC1tZXNzYWdlcy5tb2R1bGVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdERldGFpbHMgfSBmcm9tIFwiLi4vQ29tZXRDaGF0RGV0YWlscy9jb21ldGNoYXQtZGV0YWlscy5tb2R1bGVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdENhbGxCdXR0b25zIH0gZnJvbSBcIi4uL0NhbGxzL0NvbWV0Q2hhdENhbGxCdXR0b25zL2NvbWV0Y2hhdC1jYWxsLWJ1dHRvbnMubW9kdWxlXCI7XG5pbXBvcnQgeyBBSUFzc2lzdEJvdE1lc3NhZ2VMaXN0IH0gZnJvbSBcIi4uL1NoYXJlZC9WaWV3cy9BSUFzc2lzdEJvdE1lc3NhZ2VMaXN0L2FpYXNzaXN0LWJvdC1tZXNzYWdlLWxpc3QubW9kdWxlXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb21ldENoYXRNZXNzYWdlSGVhZGVyLFxuICAgIENvbWV0Q2hhdE1lc3NhZ2VMaXN0LFxuICAgIENvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlcixcbiAgICBDb21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzLFxuICAgIENvbWV0Q2hhdERldGFpbHMsXG4gICAgQ29tZXRDaGF0Q2FsbEJ1dHRvbnMsXG4gICAgQUlBc3Npc3RCb3RNZXNzYWdlTGlzdCxcbiAgXSxcbiAgZXhwb3J0czogW0NvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50XSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRNZXNzYWdlcyB7fVxuIl19
@@ -1,8 +1,8 @@
1
- import { Component, Input, ChangeDetectionStrategy, } from "@angular/core";
2
- import { CometChat } from "@cometchat/chat-sdk-javascript";
3
- import { localize, fontHelper, CometChatMessageEvents, MessageStatus } from "@cometchat/uikit-resources";
4
- import { MessageListConfiguration, MessageComposerConfiguration, ThreadedMessagesStyle } from "@cometchat/uikit-shared";
1
+ import { ChangeDetectionStrategy, Component, Input, } from "@angular/core";
2
+ import { CometChatMessageEvents, MessageStatus, fontHelper, localize } from "@cometchat/uikit-resources";
3
+ import { MessageComposerConfiguration, MessageListConfiguration, ThreadedMessagesStyle } from "@cometchat/uikit-shared";
5
4
  import { ChatConfigurator } from "../../Shared/Framework/ChatConfigurator";
5
+ import { CometChat } from "@cometchat/chat-sdk-javascript";
6
6
  import { CometChatException } from "../../Shared/Utils/ComeChatException";
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../CometChatTheme.service";
@@ -101,7 +101,6 @@ export class CometChatThreadedMessagesComponent {
101
101
  textColor: "black",
102
102
  background: "transparent",
103
103
  };
104
- this.msgListenerId = "message_" + new Date().getTime();
105
104
  }
106
105
  ngOnInit() {
107
106
  this.requestBuilder = new CometChat.MessagesRequestBuilder()
@@ -144,7 +143,10 @@ export class CometChatThreadedMessagesComponent {
144
143
  this.unsubscribeToEvents();
145
144
  try {
146
145
  //Removing Message Listeners
147
- CometChat.removeMessageListener(this.msgListenerId);
146
+ this.onMessagesDelivered?.unsubscribe();
147
+ this.onMessagesRead?.unsubscribe();
148
+ this.onMessageDeleted?.unsubscribe();
149
+ this.onMessageEdited?.unsubscribe();
148
150
  }
149
151
  catch (error) {
150
152
  if (this.onError) {
@@ -171,20 +173,18 @@ export class CometChatThreadedMessagesComponent {
171
173
  }
172
174
  addMessageEventListeners() {
173
175
  try {
174
- CometChat.addMessageListener(this.msgListenerId, new CometChat.MessageListener({
175
- onMessagesDelivered: (messageReceipt) => {
176
- this.updateReceipt(messageReceipt);
177
- },
178
- onMessagesRead: (messageReceipt) => {
179
- this.updateReceipt(messageReceipt);
180
- },
181
- onMessageDeleted: (deletedMessage) => {
182
- this.updateMessage(deletedMessage);
183
- },
184
- onMessageEdited: (editedMessage) => {
185
- this.updateMessage(editedMessage);
186
- },
187
- }));
176
+ this.onMessagesDelivered = CometChatMessageEvents.onMessagesDelivered.subscribe((messageReceipt) => {
177
+ this.updateReceipt(messageReceipt);
178
+ });
179
+ this.onMessagesRead = CometChatMessageEvents.onMessagesRead.subscribe((messageReceipt) => {
180
+ this.updateReceipt(messageReceipt);
181
+ });
182
+ this.onMessageDeleted = CometChatMessageEvents.onMessageDeleted.subscribe((deletedMessage) => {
183
+ this.updateMessage(deletedMessage);
184
+ });
185
+ this.onMessageEdited = CometChatMessageEvents.onMessageEdited.subscribe((editedMessage) => {
186
+ this.updateMessage(editedMessage);
187
+ });
188
188
  }
189
189
  catch (error) {
190
190
  if (this.onError) {
@@ -270,10 +270,10 @@ export class CometChatThreadedMessagesComponent {
270
270
  }
271
271
  }
272
272
  CometChatThreadedMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatThreadedMessagesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
273
- CometChatThreadedMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatThreadedMessagesComponent, selector: "cometchat-threaded-messages", inputs: { onClose: "onClose", onError: "onError", parentMessage: "parentMessage", title: "title", closeIconURL: "closeIconURL", bubbleView: "bubbleView", messageActionView: "messageActionView", messageListConfiguration: "messageListConfiguration", messageComposerConfiguration: "messageComposerConfiguration", threadedMessagesStyle: "threadedMessagesStyle" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-threaded-messages__wrapper\" [ngStyle]=\"wrapperStyle()\">\n<div class=\"cc-threaded-messages__header\">\n<div class=\"cc-threaded-messages__title\">\n<cometchat-label [text]=\"title\" [labelStyle]=\"titleStyle\"></cometchat-label>\n</div>\n<div class=\"cc-threaded-messages__close\">\n<cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"buttonStyle\" (cc-button-clicked)=\"closeView()\"></cometchat-button>\n</div>\n</div>\n<div class=\"cc-threaded-messages__bubble-view\">\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: parentMessage }\">\n </ng-container>\n</div>\n<div class=\"cc-threaded-messages__action-view\">\n <ng-container *ngTemplateOutlet=\"messageActionView; context:{ $implicit: parentMessage }\">\n </ng-container>\n <cometchat-button *ngIf=\"!messageActionView\" [text]=\"getThreadCount()\" [buttonStyle]=\"actionButtonStyle\"></cometchat-button>\n</div>\n<div class=\"cc-threaded-messages__list\">\n <cometchat-message-list #messageListRef [parentMessageId]=\"parentMessage!.getId()\" [emptyStateView]=\"messageListConfiguration.emptyStateView\" [loadingStateView]=\"messageListConfiguration.loadingStateView\" [user]=\"user\" [group]=\"group\"\n [errorStateView]=\"messageListConfiguration.errorStateView\" [disableReceipt]=\"messageListConfiguration.disableReceipt\" [readIcon]=\"messageListConfiguration.readIcon\" [deliveredIcon]=\"messageListConfiguration.deliveredIcon\" [sentIcon]=\"messageListConfiguration.sentIcon\" [waitIcon]=\"messageListConfiguration.waitIcon\"\n [errorIcon]=\"messageListConfiguration.errorIcon\" [alignment]=\"messageListConfiguration.alignment\" [showAvatar]=\"messageListConfiguration.showAvatar\" [datePattern]=\"messageListConfiguration.datePattern\" [timestampAlignment]=\"messageListConfiguration.timestampAlignment\" [DateSeparatorPattern]=\"messageListConfiguration.DateSeparatorPattern\"\n [messageTypes]=\"messageListConfiguration.templates\" [messagesRequestBuilder]=\"messageListConfiguration.messagesRequestBuilder || requestBuilder\" [thresholdValue]=\"messageListConfiguration.thresholdValue\" [onThreadRepliesClick]=\"messageListConfiguration.onThreadRepliesClick\" [headerView]=\"messageListConfiguration.headerView\" [footerView]=\"messageListConfiguration.footerView\"\n [avatarStyle]=\"messageListConfiguration.avatarStyle\" [dateSeparatorStyle]=\"messageListConfiguration.dateSeparatorStyle\" [messageListStyle]=\"messageListConfiguration.messageListStyle\" [onError]=\"messageListConfiguration.onError\"\n >\n </cometchat-message-list>\n</div>\n<div class=\"cc-threaded-messages__composer\">\n <cometchat-message-composer #messageComposerRef [parentMessageId]=\"parentMessage!.getId()\"\n [user]=\"user\" [group]=\"group\" [text]=\"messageComposerConfiguration.text\" [headerView]=\"messageComposerConfiguration.headerView\" [onTextChange]=\"messageComposerConfiguration.onTextChange\" [attachmentIconURL]=\"messageComposerConfiguration.attachmentIconURL\"\n [attachmentOptions]=\"messageComposerConfiguration.attachmentOptions\" [secondaryButtonView]=\"messageComposerConfiguration.secondaryButtonView\" [auxilaryButtonView]=\"messageComposerConfiguration.auxilaryButtonView\" [auxiliaryButtonsAlignment]=\"messageComposerConfiguration.auxiliaryButtonsAlignment\"\n [sendButtonView]=\"messageComposerConfiguration.sendButtonView\" [hideLiveReaction]=\"messageComposerConfiguration.hideLiveReaction\" [LiveReactionIconURL]=\"messageComposerConfiguration.LiveReactionIconURL\" [messageComposerStyle]=\"messageComposerConfiguration.messageComposerStyle\" [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\" [onError]=\"messageComposerConfiguration.onError\"\n >\n </cometchat-message-composer>\n</div>\n </div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-threaded-messages__wrapper{display:flex;flex-direction:column;height:100%;overflow-y:auto}.cc-threaded-messages__header{height:8%;width:100%;display:flex;padding:16px;align-items:flex-start}.cc-threaded-messages__close{display:flex;align-items:center}.cc-threaded-messages__title{display:flex;align-items:center;justify-content:center;width:100%}.cc-threaded-messages__bubble-view{width:-moz-fit-content;width:fit-content}.cc-threaded-messages__header{flex:0 0 auto}.cc-threaded-messages__list{flex:1 1 auto;min-height:65%}.cc-threaded-messages__composer{flex:0 0 auto;min-height:80px}\n"], components: [{ type: i2.CometChatMessageListComponent, selector: "cometchat-message-list", inputs: ["hideError", "errorStateView", "loadingStateView", "emptyStateView", "errorStateText", "emptyStateText", "loadingIconURL", "user", "group", "disableReceipt", "disableSoundForMessages", "customSoundForMessages", "readIcon", "deliveredIcon", "sentIcon", "waitIcon", "errorIcon", "alignment", "showAvatar", "datePattern", "timestampAlignment", "DateSeparatorPattern", "templates", "messagesRequestBuilder", "newMessageIndicatorText", "scrollToBottomOnNewMessages", "thresholdValue", "onThreadRepliesClick", "headerView", "footerView", "parentMessageId", "avatarStyle", "backdropStyle", "dateSeparatorStyle", "messageListStyle", "onError", "messageInformationConfiguration"] }, { type: i3.CometChatMessageComposerComponent, selector: "cometchat-message-composer", inputs: ["user", "group", "disableSoundForMessages", "customSoundForMessage", "disableTypingEvents", "text", "placeholderText", "headerView", "onTextChange", "attachmentIconURL", "attachmentOptions", "secondaryButtonView", "auxilaryButtonView", "auxiliaryButtonsAlignment", "sendButtonView", "parentMessageId", "hideLiveReaction", "LiveReactionIconURL", "messageComposerStyle", "onSendButtonClick", "onError", "backdropStyle", "hideVoiceRecording", "mediaRecorderStyle", "voiceRecordingIconURL", "voiceRecordingCloseIconURL", "voiceRecordingStartIconURL", "voiceRecordingStopIconURL", "voiceRecordingSubmitIconURL"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
273
+ CometChatThreadedMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatThreadedMessagesComponent, selector: "cometchat-threaded-messages", inputs: { onClose: "onClose", onError: "onError", parentMessage: "parentMessage", title: "title", closeIconURL: "closeIconURL", bubbleView: "bubbleView", messageActionView: "messageActionView", messageListConfiguration: "messageListConfiguration", messageComposerConfiguration: "messageComposerConfiguration", threadedMessagesStyle: "threadedMessagesStyle" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-threaded-messages__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-threaded-messages__header\">\n <div class=\"cc-threaded-messages__title\">\n <cometchat-label [text]=\"title\"\n [labelStyle]=\"titleStyle\"></cometchat-label>\n </div>\n <div class=\"cc-threaded-messages__close\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"buttonStyle\"\n (cc-button-clicked)=\"closeView()\"></cometchat-button>\n </div>\n </div>\n <div class=\"cc-threaded-messages__bubble-view\">\n <ng-container\n *ngTemplateOutlet=\"bubbleView; context:{ $implicit: parentMessage }\">\n </ng-container>\n </div>\n <div class=\"cc-threaded-messages__action-view\">\n <ng-container\n *ngTemplateOutlet=\"messageActionView; context:{ $implicit: parentMessage }\">\n </ng-container>\n <cometchat-button *ngIf=\"!messageActionView\" [text]=\"getThreadCount()\"\n [buttonStyle]=\"actionButtonStyle\"></cometchat-button>\n </div>\n <div class=\"cc-threaded-messages__list\">\n <cometchat-message-list #messageListRef\n [parentMessageId]=\"parentMessage!.getId()\"\n [emptyStateView]=\"messageListConfiguration.emptyStateView\"\n [loadingStateView]=\"messageListConfiguration.loadingStateView\"\n [user]=\"user\" [group]=\"group\"\n [errorStateView]=\"messageListConfiguration.errorStateView\"\n [disableReceipt]=\"messageListConfiguration.disableReceipt\"\n [readIcon]=\"messageListConfiguration.readIcon\"\n [deliveredIcon]=\"messageListConfiguration.deliveredIcon\"\n [sentIcon]=\"messageListConfiguration.sentIcon\"\n [waitIcon]=\"messageListConfiguration.waitIcon\"\n [errorIcon]=\"messageListConfiguration.errorIcon\"\n [alignment]=\"messageListConfiguration.alignment\"\n [showAvatar]=\"messageListConfiguration.showAvatar\"\n [datePattern]=\"messageListConfiguration.datePattern\"\n [timestampAlignment]=\"messageListConfiguration.timestampAlignment\"\n [DateSeparatorPattern]=\"messageListConfiguration.DateSeparatorPattern\"\n [messageTypes]=\"messageListConfiguration.templates\"\n [messagesRequestBuilder]=\"messageListConfiguration.messagesRequestBuilder || requestBuilder\"\n [thresholdValue]=\"messageListConfiguration.thresholdValue\"\n [onThreadRepliesClick]=\"messageListConfiguration.onThreadRepliesClick\"\n [headerView]=\"messageListConfiguration.headerView\"\n [footerView]=\"messageListConfiguration.footerView\"\n [avatarStyle]=\"messageListConfiguration.avatarStyle\"\n [dateSeparatorStyle]=\"messageListConfiguration.dateSeparatorStyle\"\n [messageListStyle]=\"messageListConfiguration.messageListStyle\"\n [onError]=\"messageListConfiguration.onError\">\n </cometchat-message-list>\n </div>\n <div class=\"cc-threaded-messages__composer\">\n <cometchat-message-composer #messageComposerRef\n [parentMessageId]=\"parentMessage!.getId()\" [user]=\"user\" [group]=\"group\"\n [text]=\"messageComposerConfiguration.text\"\n [headerView]=\"messageComposerConfiguration.headerView\"\n [onTextChange]=\"messageComposerConfiguration.onTextChange\"\n [attachmentIconURL]=\"messageComposerConfiguration.attachmentIconURL\"\n [attachmentOptions]=\"messageComposerConfiguration.attachmentOptions\"\n [secondaryButtonView]=\"messageComposerConfiguration.secondaryButtonView\"\n [auxilaryButtonView]=\"messageComposerConfiguration.auxilaryButtonView\"\n [auxiliaryButtonsAlignment]=\"messageComposerConfiguration.auxiliaryButtonsAlignment\"\n [sendButtonView]=\"messageComposerConfiguration.sendButtonView\"\n [hideLiveReaction]=\"messageComposerConfiguration.hideLiveReaction\"\n [LiveReactionIconURL]=\"messageComposerConfiguration.LiveReactionIconURL\"\n [messageComposerStyle]=\"messageComposerConfiguration.messageComposerStyle\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onError]=\"messageComposerConfiguration.onError\"\n [actionSheetStyle]=\"messageComposerConfiguration.actionSheetStyle\">\n </cometchat-message-composer>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-threaded-messages__wrapper{display:flex;flex-direction:column;height:100%;overflow-y:auto}.cc-threaded-messages__header{height:8%;width:100%;display:flex;padding:16px;align-items:flex-start}.cc-threaded-messages__close{display:flex;align-items:center}.cc-threaded-messages__title{display:flex;align-items:center;justify-content:center;width:100%}.cc-threaded-messages__bubble-view{width:-moz-fit-content;width:fit-content}.cc-threaded-messages__header{flex:0 0 auto}.cc-threaded-messages__list{flex:1 1 auto;min-height:65%}.cc-threaded-messages__composer{flex:0 0 auto;min-height:80px}\n"], components: [{ type: i2.CometChatMessageListComponent, selector: "cometchat-message-list", inputs: ["hideError", "errorStateView", "loadingStateView", "emptyStateView", "errorStateText", "emptyStateText", "loadingIconURL", "user", "group", "disableReceipt", "disableSoundForMessages", "customSoundForMessages", "readIcon", "deliveredIcon", "sentIcon", "waitIcon", "errorIcon", "aiErrorIcon", "aiEmptyIcon", "alignment", "showAvatar", "datePattern", "timestampAlignment", "DateSeparatorPattern", "templates", "messagesRequestBuilder", "newMessageIndicatorText", "scrollToBottomOnNewMessages", "thresholdValue", "unreadMessageThreshold", "apiConfiguration", "onThreadRepliesClick", "headerView", "footerView", "parentMessageId", "avatarStyle", "backdropStyle", "dateSeparatorStyle", "messageListStyle", "onError", "messageInformationConfiguration"] }, { type: i3.CometChatMessageComposerComponent, selector: "cometchat-message-composer", inputs: ["user", "group", "disableSoundForMessages", "customSoundForMessage", "disableTypingEvents", "text", "placeholderText", "headerView", "onTextChange", "attachmentIconURL", "attachmentOptions", "secondaryButtonView", "auxilaryButtonView", "auxiliaryButtonsAlignment", "sendButtonView", "parentMessageId", "hideLiveReaction", "LiveReactionIconURL", "backButtonIconURL", "messageComposerStyle", "onSendButtonClick", "onError", "backdropStyle", "actionSheetStyle", "aiActionSheetStyle", "hideVoiceRecording", "mediaRecorderStyle", "aiOptionsStyle", "aiIconURL", "voiceRecordingIconURL", "voiceRecordingCloseIconURL", "voiceRecordingStartIconURL", "voiceRecordingStopIconURL", "voiceRecordingSubmitIconURL"], outputs: ["childEvent"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
274
274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatThreadedMessagesComponent, decorators: [{
275
275
  type: Component,
276
- args: [{ selector: "cometchat-threaded-messages", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-threaded-messages__wrapper\" [ngStyle]=\"wrapperStyle()\">\n<div class=\"cc-threaded-messages__header\">\n<div class=\"cc-threaded-messages__title\">\n<cometchat-label [text]=\"title\" [labelStyle]=\"titleStyle\"></cometchat-label>\n</div>\n<div class=\"cc-threaded-messages__close\">\n<cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"buttonStyle\" (cc-button-clicked)=\"closeView()\"></cometchat-button>\n</div>\n</div>\n<div class=\"cc-threaded-messages__bubble-view\">\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: parentMessage }\">\n </ng-container>\n</div>\n<div class=\"cc-threaded-messages__action-view\">\n <ng-container *ngTemplateOutlet=\"messageActionView; context:{ $implicit: parentMessage }\">\n </ng-container>\n <cometchat-button *ngIf=\"!messageActionView\" [text]=\"getThreadCount()\" [buttonStyle]=\"actionButtonStyle\"></cometchat-button>\n</div>\n<div class=\"cc-threaded-messages__list\">\n <cometchat-message-list #messageListRef [parentMessageId]=\"parentMessage!.getId()\" [emptyStateView]=\"messageListConfiguration.emptyStateView\" [loadingStateView]=\"messageListConfiguration.loadingStateView\" [user]=\"user\" [group]=\"group\"\n [errorStateView]=\"messageListConfiguration.errorStateView\" [disableReceipt]=\"messageListConfiguration.disableReceipt\" [readIcon]=\"messageListConfiguration.readIcon\" [deliveredIcon]=\"messageListConfiguration.deliveredIcon\" [sentIcon]=\"messageListConfiguration.sentIcon\" [waitIcon]=\"messageListConfiguration.waitIcon\"\n [errorIcon]=\"messageListConfiguration.errorIcon\" [alignment]=\"messageListConfiguration.alignment\" [showAvatar]=\"messageListConfiguration.showAvatar\" [datePattern]=\"messageListConfiguration.datePattern\" [timestampAlignment]=\"messageListConfiguration.timestampAlignment\" [DateSeparatorPattern]=\"messageListConfiguration.DateSeparatorPattern\"\n [messageTypes]=\"messageListConfiguration.templates\" [messagesRequestBuilder]=\"messageListConfiguration.messagesRequestBuilder || requestBuilder\" [thresholdValue]=\"messageListConfiguration.thresholdValue\" [onThreadRepliesClick]=\"messageListConfiguration.onThreadRepliesClick\" [headerView]=\"messageListConfiguration.headerView\" [footerView]=\"messageListConfiguration.footerView\"\n [avatarStyle]=\"messageListConfiguration.avatarStyle\" [dateSeparatorStyle]=\"messageListConfiguration.dateSeparatorStyle\" [messageListStyle]=\"messageListConfiguration.messageListStyle\" [onError]=\"messageListConfiguration.onError\"\n >\n </cometchat-message-list>\n</div>\n<div class=\"cc-threaded-messages__composer\">\n <cometchat-message-composer #messageComposerRef [parentMessageId]=\"parentMessage!.getId()\"\n [user]=\"user\" [group]=\"group\" [text]=\"messageComposerConfiguration.text\" [headerView]=\"messageComposerConfiguration.headerView\" [onTextChange]=\"messageComposerConfiguration.onTextChange\" [attachmentIconURL]=\"messageComposerConfiguration.attachmentIconURL\"\n [attachmentOptions]=\"messageComposerConfiguration.attachmentOptions\" [secondaryButtonView]=\"messageComposerConfiguration.secondaryButtonView\" [auxilaryButtonView]=\"messageComposerConfiguration.auxilaryButtonView\" [auxiliaryButtonsAlignment]=\"messageComposerConfiguration.auxiliaryButtonsAlignment\"\n [sendButtonView]=\"messageComposerConfiguration.sendButtonView\" [hideLiveReaction]=\"messageComposerConfiguration.hideLiveReaction\" [LiveReactionIconURL]=\"messageComposerConfiguration.LiveReactionIconURL\" [messageComposerStyle]=\"messageComposerConfiguration.messageComposerStyle\" [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\" [onError]=\"messageComposerConfiguration.onError\"\n >\n </cometchat-message-composer>\n</div>\n </div>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-threaded-messages__wrapper{display:flex;flex-direction:column;height:100%;overflow-y:auto}.cc-threaded-messages__header{height:8%;width:100%;display:flex;padding:16px;align-items:flex-start}.cc-threaded-messages__close{display:flex;align-items:center}.cc-threaded-messages__title{display:flex;align-items:center;justify-content:center;width:100%}.cc-threaded-messages__bubble-view{width:-moz-fit-content;width:fit-content}.cc-threaded-messages__header{flex:0 0 auto}.cc-threaded-messages__list{flex:1 1 auto;min-height:65%}.cc-threaded-messages__composer{flex:0 0 auto;min-height:80px}\n"] }]
276
+ args: [{ selector: "cometchat-threaded-messages", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-threaded-messages__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-threaded-messages__header\">\n <div class=\"cc-threaded-messages__title\">\n <cometchat-label [text]=\"title\"\n [labelStyle]=\"titleStyle\"></cometchat-label>\n </div>\n <div class=\"cc-threaded-messages__close\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"buttonStyle\"\n (cc-button-clicked)=\"closeView()\"></cometchat-button>\n </div>\n </div>\n <div class=\"cc-threaded-messages__bubble-view\">\n <ng-container\n *ngTemplateOutlet=\"bubbleView; context:{ $implicit: parentMessage }\">\n </ng-container>\n </div>\n <div class=\"cc-threaded-messages__action-view\">\n <ng-container\n *ngTemplateOutlet=\"messageActionView; context:{ $implicit: parentMessage }\">\n </ng-container>\n <cometchat-button *ngIf=\"!messageActionView\" [text]=\"getThreadCount()\"\n [buttonStyle]=\"actionButtonStyle\"></cometchat-button>\n </div>\n <div class=\"cc-threaded-messages__list\">\n <cometchat-message-list #messageListRef\n [parentMessageId]=\"parentMessage!.getId()\"\n [emptyStateView]=\"messageListConfiguration.emptyStateView\"\n [loadingStateView]=\"messageListConfiguration.loadingStateView\"\n [user]=\"user\" [group]=\"group\"\n [errorStateView]=\"messageListConfiguration.errorStateView\"\n [disableReceipt]=\"messageListConfiguration.disableReceipt\"\n [readIcon]=\"messageListConfiguration.readIcon\"\n [deliveredIcon]=\"messageListConfiguration.deliveredIcon\"\n [sentIcon]=\"messageListConfiguration.sentIcon\"\n [waitIcon]=\"messageListConfiguration.waitIcon\"\n [errorIcon]=\"messageListConfiguration.errorIcon\"\n [alignment]=\"messageListConfiguration.alignment\"\n [showAvatar]=\"messageListConfiguration.showAvatar\"\n [datePattern]=\"messageListConfiguration.datePattern\"\n [timestampAlignment]=\"messageListConfiguration.timestampAlignment\"\n [DateSeparatorPattern]=\"messageListConfiguration.DateSeparatorPattern\"\n [messageTypes]=\"messageListConfiguration.templates\"\n [messagesRequestBuilder]=\"messageListConfiguration.messagesRequestBuilder || requestBuilder\"\n [thresholdValue]=\"messageListConfiguration.thresholdValue\"\n [onThreadRepliesClick]=\"messageListConfiguration.onThreadRepliesClick\"\n [headerView]=\"messageListConfiguration.headerView\"\n [footerView]=\"messageListConfiguration.footerView\"\n [avatarStyle]=\"messageListConfiguration.avatarStyle\"\n [dateSeparatorStyle]=\"messageListConfiguration.dateSeparatorStyle\"\n [messageListStyle]=\"messageListConfiguration.messageListStyle\"\n [onError]=\"messageListConfiguration.onError\">\n </cometchat-message-list>\n </div>\n <div class=\"cc-threaded-messages__composer\">\n <cometchat-message-composer #messageComposerRef\n [parentMessageId]=\"parentMessage!.getId()\" [user]=\"user\" [group]=\"group\"\n [text]=\"messageComposerConfiguration.text\"\n [headerView]=\"messageComposerConfiguration.headerView\"\n [onTextChange]=\"messageComposerConfiguration.onTextChange\"\n [attachmentIconURL]=\"messageComposerConfiguration.attachmentIconURL\"\n [attachmentOptions]=\"messageComposerConfiguration.attachmentOptions\"\n [secondaryButtonView]=\"messageComposerConfiguration.secondaryButtonView\"\n [auxilaryButtonView]=\"messageComposerConfiguration.auxilaryButtonView\"\n [auxiliaryButtonsAlignment]=\"messageComposerConfiguration.auxiliaryButtonsAlignment\"\n [sendButtonView]=\"messageComposerConfiguration.sendButtonView\"\n [hideLiveReaction]=\"messageComposerConfiguration.hideLiveReaction\"\n [LiveReactionIconURL]=\"messageComposerConfiguration.LiveReactionIconURL\"\n [messageComposerStyle]=\"messageComposerConfiguration.messageComposerStyle\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onSendButtonClick]=\"messageComposerConfiguration.onSendButtonClick\"\n [onError]=\"messageComposerConfiguration.onError\"\n [actionSheetStyle]=\"messageComposerConfiguration.actionSheetStyle\">\n </cometchat-message-composer>\n </div>\n</div>\n", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-threaded-messages__wrapper{display:flex;flex-direction:column;height:100%;overflow-y:auto}.cc-threaded-messages__header{height:8%;width:100%;display:flex;padding:16px;align-items:flex-start}.cc-threaded-messages__close{display:flex;align-items:center}.cc-threaded-messages__title{display:flex;align-items:center;justify-content:center;width:100%}.cc-threaded-messages__bubble-view{width:-moz-fit-content;width:fit-content}.cc-threaded-messages__header{flex:0 0 auto}.cc-threaded-messages__list{flex:1 1 auto;min-height:65%}.cc-threaded-messages__composer{flex:0 0 auto;min-height:80px}\n"] }]
277
277
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { onClose: [{
278
278
  type: Input
279
279
  }], onError: [{
@@ -295,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
295
295
  }], threadedMessagesStyle: [{
296
296
  type: Input
297
297
  }] } });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcy9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcy9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUtMLHVCQUF1QixHQUd4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFRM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQTRCLHNCQUFzQixFQUFhLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM5SSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7O0FBQzFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLGtDQUFrQztJQW1HN0MsWUFBcUIsR0FBc0IsRUFBUyxZQUFrQztRQUFqRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQTdGN0UsVUFBSyxHQUFVLFFBQVEsQ0FB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RyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSBcIkBjb21ldGNoYXQvY2hhdC1zZGstamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZUNvbXBvc2VyQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdE1lc3NhZ2VDb21wb3Nlci9jb21ldGNoYXQtbWVzc2FnZS1jb21wb3Nlci9jb21ldGNoYXQtbWVzc2FnZS1jb21wb3Nlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdE1lc3NhZ2VMaXN0L2NvbWV0Y2hhdC1tZXNzYWdlLWxpc3QvY29tZXRjaGF0LW1lc3NhZ2UtbGlzdC5jb21wb25lbnRcIjtcblxuXG5pbXBvcnQgeyBBdmF0YXJTdHlsZSxMaXN0SXRlbVN0eWxlLERhdGVTdHlsZSwgQmFzZVN0eWxlfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LWVsZW1lbnRzJ1xuaW1wb3J0IHsgIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBDb21ldENoYXRUaGVtZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZVwiO1xuaW1wb3J0IHsgbG9jYWxpemUsIGZvbnRIZWxwZXIsIENvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZSwgQ29tZXRDaGF0TWVzc2FnZUV2ZW50cywgSU1lc3NhZ2VzLCBNZXNzYWdlU3RhdHVzIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBNZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24sIE1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24sIFRocmVhZGVkTWVzc2FnZXNTdHlsZSwgTWVzc2FnZUNvbXBvc2VyU3R5bGUgfSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWRcIjtcbmltcG9ydCB7IENoYXRDb25maWd1cmF0b3IgfSBmcm9tIFwiLi4vLi4vU2hhcmVkL0ZyYW1ld29yay9DaGF0Q29uZmlndXJhdG9yXCI7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tIFwiLi4vLi4vU2hhcmVkL1V0aWxzL0NvbWVDaGF0RXhjZXB0aW9uXCI7XG4vKipcbipcbiogQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlc0NvbXBvbmVudCBpcyBhIHdyYXBwZXIgY29tcG9uZW50IGZvciBtZXNzYWdlTGlzdCwgbWVzc2FnZUJ1YmJsZSwgbWVzc2FnZUNvbXBvc2VyICBjb21wb25lbnQuXG4qXG4qIEB2ZXJzaW9uIDEuMC4wXG4qIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuKiBAY29weXJpZ2h0IMKpIDIwMjIgQ29tZXRDaGF0IEluYy5cbipcbiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRUaHJlYWRlZE1lc3NhZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIG9uQ2xvc2UhOiAoKCkgPT4gdm9pZCkgfCBudWxsO1xuICBASW5wdXQoKSBvbkVycm9yITogKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB2b2lkKSB8IG51bGw7XG5cbiAgQElucHV0KCkgcGFyZW50TWVzc2FnZSE6YW55O1xuICBASW5wdXQoKSB0aXRsZTpzdHJpbmcgPSBsb2NhbGl6ZShcIlRIUkVBRFwiKTtcbiAgQElucHV0KCkgY2xvc2VJY29uVVJMOnN0cmluZyA9IFwiYXNzZXRzL2Nsb3NlMnguc3ZnXCI7XG4gIEBJbnB1dCgpIGJ1YmJsZVZpZXchOlRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIG1lc3NhZ2VBY3Rpb25WaWV3ITpUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb246IE1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbiA9IG5ldyBNZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24oe30pO1xuICBASW5wdXQoKSBtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uOiBNZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uID0gbmV3IE1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24oe30pO1xuICBASW5wdXQoKSB0aHJlYWRlZE1lc3NhZ2VzU3R5bGU6IFRocmVhZGVkTWVzc2FnZXNTdHlsZSA9IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICBiYWNrZ3JvdW5kOiBcIndoaXRlXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgICBib3JkZXI6IFwiMXB4IHNvbGlkIHJnYmEoMjAsIDIwLCAyMCwgMC4xKVwiLFxuICAgIHRpdGxlQ29sb3I6IFwicmdiYSgyMCwgMjAsIDIwKVwiLFxuICAgIHRpdGxlRm9udDogXCI3MDAgMjJweCBJbnRlclwiLFxuICAgIGNsb3NlSWNvblRpbnQ6IFwiIzMzOTlGRlwiXG4gIH07XG4gIHVzZXIhOiBDb21ldENoYXQuVXNlcjtcbiAgZ3JvdXAhOiBDb21ldENoYXQuR3JvdXA7XG4gIGxvZ2dlZEluVXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgcHVibGljIGxpbWl0Om51bWJlciA9IDMwO1xuICByZXF1ZXN0QnVpbGRlciE6Q29tZXRDaGF0Lk1lc3NhZ2VzUmVxdWVzdEJ1aWxkZXI7XG4gIHB1YmxpYyBjb21wb3NlclN0eWxlczogTWVzc2FnZUNvbXBvc2VyU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBib3JkZXJSYWRpdXM6IFwiMTJweFwiLFxuICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50OTAwKCksXG4gICAgaW5wdXRCYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFNlY29uZGFyeSgpLCAvLyBkb25lXG4gICAgdGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLCAvLyBkb25lXG4gICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudCgpLCAvLyBkb25lXG4gIH1cbiAgYXZhdGFyU3R5bGU6IEF2YXRhclN0eWxlID0ge1xuICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMjhweFwiLFxuICAgIGhlaWdodDogXCIyOHB4XCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwid2hpdGVcIixcbiAgICBuYW1lVGV4dENvbG9yOiBcInJnYigyMCwyMCwyMClcIixcbiAgICBiYWNrZ3JvdW5kU2l6ZTogXCJjb3ZlclwiLFxuICAgIG5hbWVUZXh0Rm9udDogXCI1MDAgMTZweCBJbnRlclwiLFxuICAgIFxuICAgIG91dGVyVmlld0JvcmRlclNwYWNpbmc6IFwiXCIsXG4gIH1cbiAgc3RhdHVzSW5kaWNhdG9yU3R5bGU6IEJhc2VTdHlsZSA9IHtcbiAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjEwcHhcIixcbiAgICBoZWlnaHQ6IFwiMTBweFwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gIH1cbiAgbGlzdEl0ZW1TdHlsZTogTGlzdEl0ZW1TdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kOiBcIndoaXRlXCIsXG4gICAgdGl0bGVDb2xvcjogXCJibGFja1wiLFxuICAgIHRpdGxlRm9udDogXCI1MDAgMTZweCBJbnRlclwiLFxuICAgIHdpZHRoOiBcIlwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBib3JkZXJSYWRpdXM6IFwiMnB4XCIsXG4gICAgc2VwYXJhdG9yQ29sb3I6IFwiXCIsXG4gICAgYWN0aXZlQmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIGhvdmVyQmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJcbiAgfVxuICBhY3Rpb25CdXR0b25TdHlsZTphbnkgID0ge1xuICAgIGhlaWdodDpcIjEwMCVcIixcbiAgICB3aWR0aDpcIjEwMCVcIixcbiAgICBib3JkZXI6XCJub25lXCIsXG4gICAgYm9yZGVyVG9wOlwiMXB4IHNvbGlkICNlMWUxZTFcIixcbiAgICBib3JkZXJCb3R0b206XCIxcHggc29saWQgI2UxZTFlMVwiLFxuICAgIGJvcmRlclJhZGl1czpcIjBcIixcbiAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcbiAgICBidXR0b25UZXh0Rm9udDpcIjUwMCAxNXB4IEludGVyXCIsXG4gICAgYnV0dG9uVGV4dENvbG9yOlwiYmxhY2tcIixcbiAgICBwYWRkaW5nOlwiOHB4XCJcbiAgfVxuXG5cbiAgYnV0dG9uU3R5bGU6YW55ID0ge1xuICAgIGhlaWdodDpcIjI0cHhcIixcbiAgICB3aWR0aDpcIjI0cHhcIixcbiAgICBib3JkZXI6XCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOlwiMFwiLFxuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICAgIGJ1dHRvbkljb25UaW50OlwiIzdkYmZmZlwiXG4gIH1cbiAgdGl0bGVTdHlsZTphbnkgPSB7XG4gdGV4dEZvbnQ6XCI3MDAgMjJweCBJbnRlclwiLFxuIHRleHRDb2xvcjpcImJsYWNrXCIsXG4gICAgYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsXG4gIH1cbiAgY2NNZXNzYWdlU2VudCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NNZXNzYWdlRWRpdGVkITogU3Vic2NyaXB0aW9uO1xuICBjY01lc3NhZ2VEZWxldGVkITogU3Vic2NyaXB0aW9uO1xuICBjY01lc3NhZ2VSZWFkITogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbXNnTGlzdGVuZXJJZCA9IFwibWVzc2FnZV9cIisgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGNvbnN0cnVjdG9yKCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0aGVtZVNlcnZpY2U6Q29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7IH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXF1ZXN0QnVpbGRlciA9IG5ldyBDb21ldENoYXQuTWVzc2FnZXNSZXF1ZXN0QnVpbGRlcigpXG4gICAgLnNldENhdGVnb3JpZXMoQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0QWxsTWVzc2FnZUNhdGVnb3JpZXMoKSlcbiAgICAuc2V0VHlwZXMoQ2hhdENvbmZpZ3VyYXRvci5nZXREYXRhU291cmNlKCkuZ2V0QWxsTWVzc2FnZVR5cGVzKCkpXG4gICAgLmhpZGVSZXBsaWVzKHRydWUpXG4gICAgLnNldExpbWl0KHRoaXMubGltaXQpXG4gICAgLnNldFBhcmVudE1lc3NhZ2VJZCh0aGlzLnBhcmVudE1lc3NhZ2UhLmdldElkKCkpXG4gICAgdGhpcy5hZGRNZXNzYWdlRXZlbnRMaXN0ZW5lcnMoKVxuICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKS50aGVuKCh1c2VyKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlZEluVXNlciA9IHVzZXI7XG4gICAgICBpZiAodGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRTZW5kZXIoKS5nZXRVaWQoKSA9PT0gdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lc3NhZ2U/LmdldFJlY2VpdmVyVHlwZSgpID09PSBDb21ldENoYXQuUkVDRUlWRVJfVFlQRS5VU0VSKSB7XG4gICAgICAgICAgdGhpcy51c2VyID0gdGhpcy5wYXJlbnRNZXNzYWdlIS5nZXRSZWNlaXZlcigpIGFzIENvbWV0Q2hhdC5Vc2VyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ3JvdXAgPSB0aGlzLnBhcmVudE1lc3NhZ2UhLmdldFJlY2VpdmVyKCkgYXMgQ29tZXRDaGF0Lkdyb3VwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRSZWNlaXZlclR5cGUoKSA9PT0gQ29tZXRDaGF0LlJFQ0VJVkVSX1RZUEUuVVNFUikge1xuICAgICAgICB0aGlzLnVzZXIgPSB0aGlzLnBhcmVudE1lc3NhZ2U/LmdldFNlbmRlcigpO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0UmVjZWl2ZXJUeXBlKCkgPT09IENvbWV0Q2hhdC5SRUNFSVZFUl9UWVBFLkdST1VQKXtcbiAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0UmVjZWl2ZXIoKTtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9XG5cbiAgICB9KS5jYXRjaCgoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuc2V0VGhlbWUoKTtcbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKClcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2U6IFNpbXBsZUNoYW5nZXMpIHtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9FdmVudHMoKVxuICAgIHRyeSB7XG4gICAgICAvL1JlbW92aW5nIE1lc3NhZ2UgTGlzdGVuZXJzXG4gICAgICBDb21ldENoYXQucmVtb3ZlTWVzc2FnZUxpc3RlbmVyKHRoaXMubXNnTGlzdGVuZXJJZCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6YW55KSB7XG4gICAgICAgaWYodGhpcy5vbkVycm9yKXtcbnRoaXMub25FcnJvcihDb21ldENoYXRFeGNlcHRpb24oZXJyb3IpKTtcbn1cbiAgICB9XG4gIH1cbiAgdXBkYXRlTWVzc2FnZShtZXNzYWdlOkNvbWV0Q2hhdC5CYXNlTWVzc2FnZSl7XG4gICAgaWYodGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRJZCgpID09IG1lc3NhZ2UuZ2V0SWQoKSl7XG4gICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVJlY2VpcHQobWVzc2FnZVJlY2VpcHQ6Q29tZXRDaGF0Lk1lc3NhZ2VSZWNlaXB0KXtcbiAgICBpZihOdW1iZXIobWVzc2FnZVJlY2VpcHQ/LmdldE1lc3NhZ2VJZCgpKSA9PSB0aGlzLnBhcmVudE1lc3NhZ2U/LmdldElkKCkpe1xuICAgICAgaWYobWVzc2FnZVJlY2VpcHQuZ2V0UmVhZEF0KCkpe1xuICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2Uuc2V0UmVhZEF0KG1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYobWVzc2FnZVJlY2VpcHQuZ2V0RGVsaXZlcmVkQXQoKSl7XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZS5zZXREZWxpdmVyZWRBdChtZXNzYWdlUmVjZWlwdC5nZXREZWxpdmVyZWRBdCgpKTtcblxuICAgICAgfVxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gIH1cbiAgYWRkTWVzc2FnZUV2ZW50TGlzdGVuZXJzKCkge1xuICAgIHRyeSB7XG4gICAgICBDb21ldENoYXQuYWRkTWVzc2FnZUxpc3RlbmVyKFxuICAgICAgICB0aGlzLm1zZ0xpc3RlbmVySWQsXG4gICAgICAgIG5ldyBDb21ldENoYXQuTWVzc2FnZUxpc3RlbmVyKHtcbiAgICAgICAgICBvbk1lc3NhZ2VzRGVsaXZlcmVkOiAobWVzc2FnZVJlY2VpcHQ6IENvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWNlaXB0KCBtZXNzYWdlUmVjZWlwdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbk1lc3NhZ2VzUmVhZDogKG1lc3NhZ2VSZWNlaXB0OiBDb21ldENoYXQuTWVzc2FnZVJlY2VpcHQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVjZWlwdCggbWVzc2FnZVJlY2VpcHQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25NZXNzYWdlRGVsZXRlZDogKGRlbGV0ZWRNZXNzYWdlOiBDb21ldENoYXQuQmFzZU1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTWVzc2FnZShkZWxldGVkTWVzc2FnZSk7XG5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTWVzc2FnZUVkaXRlZDogKGVkaXRlZE1lc3NhZ2U6IENvbWV0Q2hhdC5CYXNlTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVNZXNzYWdlKCBlZGl0ZWRNZXNzYWdlKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZih0aGlzLm9uRXJyb3Ipe1xuICAgIHRoaXMub25FcnJvcihDb21ldENoYXRFeGNlcHRpb24oZXJyb3IpKTtcbn1cbiAgICB9XG4gIH1cbiAgZ2V0VGhyZWFkQ291bnQoKSB7XG4gICAgY29uc3QgcmVwbHlDb3VudCA9IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0UmVwbHlDb3VudCgpIHx8IDA7XG4gICAgY29uc3Qgc3VmZml4ID0gcmVwbHlDb3VudCA9PT0gMSA/IGxvY2FsaXplKFwiUkVQTFlcIikgOiBsb2NhbGl6ZShcIlJFUExJRVNcIik7XG4gICAgcmV0dXJuIGAke3JlcGx5Q291bnR9ICR7c3VmZml4fWA7XG4gIH1cbiAgc3Vic2NyaWJlVG9FdmVudHMoKXtcbiAgICB0aGlzLmNjTWVzc2FnZVNlbnQgPSBDb21ldENoYXRNZXNzYWdlRXZlbnRzLmNjTWVzc2FnZVNlbnQuc3Vic2NyaWJlKCh7c3RhdHVzLCBtZXNzYWdlfTogSU1lc3NhZ2VzKSA9PiB7XG4gICAgICBpZihzdGF0dXMgPT09IE1lc3NhZ2VTdGF0dXMuc3VjY2VzcyAmJiBtZXNzYWdlPy5nZXRQYXJlbnRNZXNzYWdlSWQoKSA9PT0gdGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRJZCgpKXtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY01lc3NhZ2VFZGl0ZWQgPSBDb21ldENoYXRNZXNzYWdlRXZlbnRzLmNjTWVzc2FnZUVkaXRlZC5zdWJzY3JpYmUoKHtzdGF0dXMsIG1lc3NhZ2V9OiBJTWVzc2FnZXMpID0+IHtcbiAgICAgIGlmKHN0YXR1cyA9PT0gTWVzc2FnZVN0YXR1cy5zdWNjZXNzICYmIG1lc3NhZ2U/LmdldElkKCkgPT09IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0SWQoKSl7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY01lc3NhZ2VEZWxldGVkPSBDb21ldENoYXRNZXNzYWdlRXZlbnRzLmNjTWVzc2FnZURlbGV0ZWQuc3Vic2NyaWJlKChtZXNzYWdlOkNvbWV0Q2hhdC5CYXNlTWVzc2FnZSkgPT4ge1xuICAgICAgaWYobWVzc2FnZT8uZ2V0SWQoKSA9PT0gdGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRJZCgpKXtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjTWVzc2FnZVJlYWQ9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlUmVhZC5zdWJzY3JpYmUoKG1lc3NhZ2U6Q29tZXRDaGF0LkJhc2VNZXNzYWdlKSA9PiB7XG4gICAgICBpZihtZXNzYWdlPy5nZXRJZCgpID09PSB0aGlzLnBhcmVudE1lc3NhZ2U/LmdldElkKCkpe1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgdW5zdWJzY3JpYmVUb0V2ZW50cygpe1xuICAgIHRoaXMuY2NNZXNzYWdlRGVsZXRlZD8udW5zdWJzY3JpYmUoKVxuICAgIHRoaXMuY2NNZXNzYWdlRWRpdGVkPy51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5jY01lc3NhZ2VSZWFkPy51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5jY01lc3NhZ2VTZW50Py51bnN1YnNjcmliZSgpXG4gIH1cbiAgY2xvc2VWaWV3KCl7XG4gICAgaWYodGhpcy5vbkNsb3NlKXtcbiAgICAgIHRoaXMub25DbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgc2V0VGhyZWFkZWRNZXNzYWdlc1N0eWxlKCl7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTpUaHJlYWRlZE1lc3NhZ2VzU3R5bGUgPSBuZXcgVGhyZWFkZWRNZXNzYWdlc1N0eWxlKHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGJvcmRlclJhZGl1czogXCJub25lXCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgdGl0bGVDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIHRpdGxlRm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBjbG9zZUljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKVxuICAgIH0pXG4gICAgdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUgPSB7XG4gICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gICAgICAuLi50aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZVxuICAgIH1cbiAgfVxuICBzZXRUaGVtZSgpIHtcbiAgICB0aGlzLnNldFRocmVhZGVkTWVzc2FnZXNTdHlsZSgpXG4gICAgdGhpcy5idXR0b25TdHlsZS5idXR0b25JY29uVGludCA9IHRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLmNsb3NlSWNvblRpbnQgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KCk7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25TdHlsZS5iYWNrZ3JvdW5kID0gdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCk7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25TdHlsZS5idXR0b25UZXh0Rm9udCA9IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpO1xuICAgIHRoaXMuYWN0aW9uQnV0dG9uU3R5bGUuYnV0dG9uVGV4dENvbG9yID0gdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKTtcbiAgICB0aGlzLnRpdGxlU3R5bGUgPSB7XG4gICAgICB0ZXh0Rm9udCA6IHRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLnRpdGxlRm9udCB8fCBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIHRleHRDb2xvcjp0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZS50aXRsZUNvbG9yIHx8IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIlxuICAgIH07XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgd3JhcHBlclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZS5iYWNrZ3JvdW5kIHx8IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgaGVpZ2h0OiB0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUud2lkdGgsXG4gICAgICBib3JkZXI6IHRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2MtdGhyZWFkZWQtbWVzc2FnZXNfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiPlxuPGRpdiBjbGFzcz1cImNjLXRocmVhZGVkLW1lc3NhZ2VzX19oZWFkZXJcIj5cbjxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19fdGl0bGVcIj5cbjxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwidGl0bGVcIiBbbGFiZWxTdHlsZV09XCJ0aXRsZVN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG48L2Rpdj5cbjxkaXYgIGNsYXNzPVwiY2MtdGhyZWFkZWQtbWVzc2FnZXNfX2Nsb3NlXCI+XG48Y29tZXRjaGF0LWJ1dHRvbiBbaWNvblVSTF09XCJjbG9zZUljb25VUkxcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGVcIiAoY2MtYnV0dG9uLWNsaWNrZWQpPVwiY2xvc2VWaWV3KClcIj48L2NvbWV0Y2hhdC1idXR0b24+XG48L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNjLXRocmVhZGVkLW1lc3NhZ2VzX19idWJibGUtdmlld1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnViYmxlVmlldzsgY29udGV4dDp7ICRpbXBsaWNpdDogcGFyZW50TWVzc2FnZSB9XCI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiY2MtdGhyZWFkZWQtbWVzc2FnZXNfX2FjdGlvbi12aWV3XCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlQWN0aW9uVmlldzsgY29udGV4dDp7ICRpbXBsaWNpdDogcGFyZW50TWVzc2FnZSB9XCI+XG4gIDwvbmctY29udGFpbmVyPlxuIDxjb21ldGNoYXQtYnV0dG9uICpuZ0lmPVwiIW1lc3NhZ2VBY3Rpb25WaWV3XCIgW3RleHRdPVwiZ2V0VGhyZWFkQ291bnQoKVwiIFtidXR0b25TdHlsZV09XCJhY3Rpb25CdXR0b25TdHlsZVwiPjwvY29tZXRjaGF0LWJ1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNjLXRocmVhZGVkLW1lc3NhZ2VzX19saXN0XCI+XG4gIDxjb21ldGNoYXQtbWVzc2FnZS1saXN0ICNtZXNzYWdlTGlzdFJlZiBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2UhLmdldElkKClcIiBbZW1wdHlTdGF0ZVZpZXddPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmVtcHR5U3RhdGVWaWV3XCIgW2xvYWRpbmdTdGF0ZVZpZXddPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmxvYWRpbmdTdGF0ZVZpZXdcIiAgW3VzZXJdPVwidXNlclwiIFtncm91cF09XCJncm91cFwiXG4gIFtlcnJvclN0YXRlVmlld109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uZXJyb3JTdGF0ZVZpZXdcIiBbZGlzYWJsZVJlY2VpcHRdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmRpc2FibGVSZWNlaXB0XCIgW3JlYWRJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5yZWFkSWNvblwiIFtkZWxpdmVyZWRJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5kZWxpdmVyZWRJY29uXCIgW3NlbnRJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5zZW50SWNvblwiIFt3YWl0SWNvbl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ud2FpdEljb25cIlxuICBbZXJyb3JJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5lcnJvckljb25cIiBbYWxpZ25tZW50XT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5hbGlnbm1lbnRcIiBbc2hvd0F2YXRhcl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uc2hvd0F2YXRhclwiIFtkYXRlUGF0dGVybl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uZGF0ZVBhdHRlcm5cIiBbdGltZXN0YW1wQWxpZ25tZW50XT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi50aW1lc3RhbXBBbGlnbm1lbnRcIiBbRGF0ZVNlcGFyYXRvclBhdHRlcm5dPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLkRhdGVTZXBhcmF0b3JQYXR0ZXJuXCJcbiAgW21lc3NhZ2VUeXBlc109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24udGVtcGxhdGVzXCIgW21lc3NhZ2VzUmVxdWVzdEJ1aWxkZXJdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLm1lc3NhZ2VzUmVxdWVzdEJ1aWxkZXIgfHwgcmVxdWVzdEJ1aWxkZXJcIiBbdGhyZXNob2xkVmFsdWVdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLnRocmVzaG9sZFZhbHVlXCIgW29uVGhyZWFkUmVwbGllc0NsaWNrXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5vblRocmVhZFJlcGxpZXNDbGlja1wiIFtoZWFkZXJWaWV3XT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5oZWFkZXJWaWV3XCIgW2Zvb3RlclZpZXddPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmZvb3RlclZpZXdcIlxuICAgW2F2YXRhclN0eWxlXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5hdmF0YXJTdHlsZVwiIFtkYXRlU2VwYXJhdG9yU3R5bGVdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmRhdGVTZXBhcmF0b3JTdHlsZVwiIFttZXNzYWdlTGlzdFN0eWxlXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdFN0eWxlXCIgIFtvbkVycm9yXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5vbkVycm9yXCJcbiAgPlxuICA8L2NvbWV0Y2hhdC1tZXNzYWdlLWxpc3Q+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19fY29tcG9zZXJcIj5cbiAgICA8Y29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIgI21lc3NhZ2VDb21wb3NlclJlZiBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2UhLmdldElkKClcIlxuICAgIFt1c2VyXT1cInVzZXJcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbdGV4dF09XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLnRleHRcIiBbaGVhZGVyVmlld109XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLmhlYWRlclZpZXdcIiBbb25UZXh0Q2hhbmdlXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24ub25UZXh0Q2hhbmdlXCIgW2F0dGFjaG1lbnRJY29uVVJMXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEljb25VUkxcIlxuICAgIFthdHRhY2htZW50T3B0aW9uc109XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLmF0dGFjaG1lbnRPcHRpb25zXCIgW3NlY29uZGFyeUJ1dHRvblZpZXddPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5zZWNvbmRhcnlCdXR0b25WaWV3XCIgW2F1eGlsYXJ5QnV0dG9uVmlld109XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLmF1eGlsYXJ5QnV0dG9uVmlld1wiIFthdXhpbGlhcnlCdXR0b25zQWxpZ25tZW50XT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uYXV4aWxpYXJ5QnV0dG9uc0FsaWdubWVudFwiXG4gICAgW3NlbmRCdXR0b25WaWV3XT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uc2VuZEJ1dHRvblZpZXdcIiBbaGlkZUxpdmVSZWFjdGlvbl09XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLmhpZGVMaXZlUmVhY3Rpb25cIiBbTGl2ZVJlYWN0aW9uSWNvblVSTF09XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLkxpdmVSZWFjdGlvbkljb25VUkxcIiBbbWVzc2FnZUNvbXBvc2VyU3R5bGVdPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5tZXNzYWdlQ29tcG9zZXJTdHlsZVwiIFtvblNlbmRCdXR0b25DbGlja109XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLm9uU2VuZEJ1dHRvbkNsaWNrXCJcbiAgICBbb25TZW5kQnV0dG9uQ2xpY2tdPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5vblNlbmRCdXR0b25DbGlja1wiIFtvbkVycm9yXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24ub25FcnJvclwiXG4gICAgPlxuICAgIDwvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXI+XG48L2Rpdj5cbiA8L2Rpdj4iXX0=
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcy9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlcy9jb21ldGNoYXQtdGhyZWFkZWQtbWVzc2FnZXMvY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FNTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQXVDLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUksT0FBTyxFQUFFLDRCQUE0QixFQUF3Qix3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7O0FBTTFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLGtDQUFrQztJQXNHN0MsWUFBcUIsR0FBc0IsRUFBUyxZQUFrQztRQUFqRSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQWhHN0UsVUFBSyxHQUFVLFFBQVEsQ0FB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bUJBR3RCLHVCQUF1QixDQUFDLE1BQU07NElBSXRDLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF2YXRhclN0eWxlLCBCYXNlU3R5bGUsIERhdGVTdHlsZSwgTGlzdEl0ZW1TdHlsZSB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TWVzc2FnZUV2ZW50cywgQ29tZXRDaGF0TWVzc2FnZVRlbXBsYXRlLCBJTWVzc2FnZXMsIE1lc3NhZ2VTdGF0dXMsIGZvbnRIZWxwZXIsIGxvY2FsaXplIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBNZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLCBNZXNzYWdlQ29tcG9zZXJTdHlsZSwgTWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLCBUaHJlYWRlZE1lc3NhZ2VzU3R5bGUgfSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWRcIjtcblxuaW1wb3J0IHsgQ2hhdENvbmZpZ3VyYXRvciB9IGZyb20gXCIuLi8uLi9TaGFyZWQvRnJhbWV3b3JrL0NoYXRDb25maWd1cmF0b3JcIjtcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gXCJAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHRcIjtcbmltcG9ydCB7IENvbWV0Q2hhdEV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb25cIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VDb21wb3NlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9Db21ldENoYXRNZXNzYWdlQ29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlTGlzdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9Db21ldENoYXRNZXNzYWdlTGlzdC9jb21ldGNoYXQtbWVzc2FnZS1saXN0L2NvbWV0Y2hhdC1tZXNzYWdlLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRUaGVtZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcblxuLyoqXG4qXG4qIENvbWV0Q2hhdFRocmVhZGVkTWVzc2FnZXNDb21wb25lbnQgaXMgYSB3cmFwcGVyIGNvbXBvbmVudCBmb3IgbWVzc2FnZUxpc3QsIG1lc3NhZ2VCdWJibGUsIG1lc3NhZ2VDb21wb3NlciAgY29tcG9uZW50LlxuKlxuKiBAdmVyc2lvbiAxLjAuMFxuKiBAYXV0aG9yIENvbWV0Q2hhdFRlYW1cbiogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4qXG4qL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvbWV0Y2hhdC10aHJlYWRlZC1tZXNzYWdlc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC10aHJlYWRlZC1tZXNzYWdlcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LXRocmVhZGVkLW1lc3NhZ2VzLmNvbXBvbmVudC5zY3NzXCJdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0VGhyZWFkZWRNZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBvbkNsb3NlITogKCgpID0+IHZvaWQpIHwgbnVsbDtcbiAgQElucHV0KCkgb25FcnJvciE6ICgoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCkgfCBudWxsO1xuXG4gIEBJbnB1dCgpIHBhcmVudE1lc3NhZ2UhOmFueTtcbiAgQElucHV0KCkgdGl0bGU6c3RyaW5nID0gbG9jYWxpemUoXCJUSFJFQURcIik7XG4gIEBJbnB1dCgpIGNsb3NlSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9jbG9zZTJ4LnN2Z1wiO1xuICBASW5wdXQoKSBidWJibGVWaWV3ITpUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBtZXNzYWdlQWN0aW9uVmlldyE6VGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbWVzc2FnZUxpc3RDb25maWd1cmF0aW9uOiBNZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24gPSBuZXcgTWVzc2FnZUxpc3RDb25maWd1cmF0aW9uKHt9KTtcbiAgQElucHV0KCkgbWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbjogTWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbiA9IG5ldyBNZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uKHt9KTtcbiAgQElucHV0KCkgdGhyZWFkZWRNZXNzYWdlc1N0eWxlOiBUaHJlYWRlZE1lc3NhZ2VzU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYmFja2dyb3VuZDogXCJ3aGl0ZVwiLFxuICAgIGJvcmRlclJhZGl1czogXCJub25lXCIsXG4gICAgYm9yZGVyOiBcIjFweCBzb2xpZCByZ2JhKDIwLCAyMCwgMjAsIDAuMSlcIixcbiAgICB0aXRsZUNvbG9yOiBcInJnYmEoMjAsIDIwLCAyMClcIixcbiAgICB0aXRsZUZvbnQ6IFwiNzAwIDIycHggSW50ZXJcIixcbiAgICBjbG9zZUljb25UaW50OiBcIiMzMzk5RkZcIlxuICB9O1xuICB1c2VyITogQ29tZXRDaGF0LlVzZXI7XG4gIGdyb3VwITogQ29tZXRDaGF0Lkdyb3VwO1xuICBsb2dnZWRJblVzZXIhOiBDb21ldENoYXQuVXNlciB8IG51bGw7XG4gIHB1YmxpYyBsaW1pdDpudW1iZXIgPSAzMDtcbiAgcmVxdWVzdEJ1aWxkZXIhOkNvbWV0Q2hhdC5NZXNzYWdlc1JlcXVlc3RCdWlsZGVyO1xuICBwdWJsaWMgY29tcG9zZXJTdHlsZXM6IE1lc3NhZ2VDb21wb3NlclN0eWxlID0ge1xuICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIjEycHhcIixcbiAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDkwMCgpLFxuICAgIGlucHV0QmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRTZWNvbmRhcnkoKSwgLy8gZG9uZVxuICAgIHRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSwgLy8gZG9uZVxuICAgIHRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSwgLy8gZG9uZVxuICB9XG4gIGF2YXRhclN0eWxlOiBBdmF0YXJTdHlsZSA9IHtcbiAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjI4cHhcIixcbiAgICBoZWlnaHQ6IFwiMjhweFwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBcIndoaXRlXCIsXG4gICAgbmFtZVRleHRDb2xvcjogXCJyZ2IoMjAsMjAsMjApXCIsXG4gICAgYmFja2dyb3VuZFNpemU6IFwiY292ZXJcIixcbiAgICBuYW1lVGV4dEZvbnQ6IFwiNTAwIDE2cHggSW50ZXJcIixcbiAgICBcbiAgICBvdXRlclZpZXdCb3JkZXJTcGFjaW5nOiBcIlwiLFxuICB9XG4gIHN0YXR1c0luZGljYXRvclN0eWxlOiBCYXNlU3R5bGUgPSB7XG4gICAgYm9yZGVyUmFkaXVzOiBcIjE2cHhcIixcbiAgICB3aWR0aDogXCIxMHB4XCIsXG4gICAgaGVpZ2h0OiBcIjEwcHhcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICB9XG4gIGxpc3RJdGVtU3R5bGU6IExpc3RJdGVtU3R5bGUgPSB7XG4gICAgYmFja2dyb3VuZDogXCJ3aGl0ZVwiLFxuICAgIHRpdGxlQ29sb3I6IFwiYmxhY2tcIixcbiAgICB0aXRsZUZvbnQ6IFwiNTAwIDE2cHggSW50ZXJcIixcbiAgICB3aWR0aDogXCJcIixcbiAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIjJweFwiLFxuICAgIHNlcGFyYXRvckNvbG9yOiBcIlwiLFxuICAgIGFjdGl2ZUJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICBob3ZlckJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiXG4gIH1cbiAgYWN0aW9uQnV0dG9uU3R5bGU6YW55ICA9IHtcbiAgICBoZWlnaHQ6XCIxMDAlXCIsXG4gICAgd2lkdGg6XCIxMDAlXCIsXG4gICAgYm9yZGVyOlwibm9uZVwiLFxuICAgIGJvcmRlclRvcDpcIjFweCBzb2xpZCAjZTFlMWUxXCIsXG4gICAgYm9yZGVyQm90dG9tOlwiMXB4IHNvbGlkICNlMWUxZTFcIixcbiAgICBib3JkZXJSYWRpdXM6XCIwXCIsXG4gICAgYmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsXG4gICAgYnV0dG9uVGV4dEZvbnQ6XCI1MDAgMTVweCBJbnRlclwiLFxuICAgIGJ1dHRvblRleHRDb2xvcjpcImJsYWNrXCIsXG4gICAgcGFkZGluZzpcIjhweFwiXG4gIH1cblxuXG4gIGJ1dHRvblN0eWxlOmFueSA9IHtcbiAgICBoZWlnaHQ6XCIyNHB4XCIsXG4gICAgd2lkdGg6XCIyNHB4XCIsXG4gICAgYm9yZGVyOlwibm9uZVwiLFxuICAgIGJvcmRlclJhZGl1czpcIjBcIixcbiAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcbiAgICBidXR0b25JY29uVGludDpcIiM3ZGJmZmZcIlxuICB9XG4gIHRpdGxlU3R5bGU6YW55ID0ge1xuIHRleHRGb250OlwiNzAwIDIycHggSW50ZXJcIixcbiB0ZXh0Q29sb3I6XCJibGFja1wiLFxuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICB9XG4gIGNjTWVzc2FnZVNlbnQhOiBTdWJzY3JpcHRpb247XG4gIGNjTWVzc2FnZUVkaXRlZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NNZXNzYWdlRGVsZXRlZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NNZXNzYWdlUmVhZCE6IFN1YnNjcmlwdGlvbjtcbiAgb25NZXNzYWdlc0RlbGl2ZXJlZCE6IFN1YnNjcmlwdGlvbjtcbiAgb25NZXNzYWdlc1JlYWQhOiBTdWJzY3JpcHRpb247XG4gIG9uTWVzc2FnZURlbGV0ZWQhOiBTdWJzY3JpcHRpb247XG4gIG9uTWVzc2FnZUVkaXRlZCE6IFN1YnNjcmlwdGlvbjtcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIHRoZW1lU2VydmljZTpDb21ldENoYXRUaGVtZVNlcnZpY2UpIHsgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlcXVlc3RCdWlsZGVyID0gbmV3IENvbWV0Q2hhdC5NZXNzYWdlc1JlcXVlc3RCdWlsZGVyKClcbiAgICAuc2V0Q2F0ZWdvcmllcyhDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRBbGxNZXNzYWdlQ2F0ZWdvcmllcygpKVxuICAgIC5zZXRUeXBlcyhDaGF0Q29uZmlndXJhdG9yLmdldERhdGFTb3VyY2UoKS5nZXRBbGxNZXNzYWdlVHlwZXMoKSlcbiAgICAuaGlkZVJlcGxpZXModHJ1ZSlcbiAgICAuc2V0TGltaXQodGhpcy5saW1pdClcbiAgICAuc2V0UGFyZW50TWVzc2FnZUlkKHRoaXMucGFyZW50TWVzc2FnZSEuZ2V0SWQoKSlcbiAgICB0aGlzLmFkZE1lc3NhZ2VFdmVudExpc3RlbmVycygpXG4gICAgQ29tZXRDaGF0LmdldExvZ2dlZGluVXNlcigpLnRoZW4oKHVzZXIpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlcjtcbiAgICAgIGlmICh0aGlzLnBhcmVudE1lc3NhZ2U/LmdldFNlbmRlcigpLmdldFVpZCgpID09PSB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0UmVjZWl2ZXJUeXBlKCkgPT09IENvbWV0Q2hhdC5SRUNFSVZFUl9UWVBFLlVTRVIpIHtcbiAgICAgICAgICB0aGlzLnVzZXIgPSB0aGlzLnBhcmVudE1lc3NhZ2UhLmdldFJlY2VpdmVyKCkgYXMgQ29tZXRDaGF0LlVzZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMucGFyZW50TWVzc2FnZSEuZ2V0UmVjZWl2ZXIoKSBhcyBDb21ldENoYXQuR3JvdXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBhcmVudE1lc3NhZ2U/LmdldFJlY2VpdmVyVHlwZSgpID09PSBDb21ldENoYXQuUkVDRUlWRVJfVFlQRS5VU0VSKSB7XG4gICAgICAgIHRoaXMudXNlciA9IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0U2VuZGVyKCk7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYodGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRSZWNlaXZlclR5cGUoKSA9PT0gQ29tZXRDaGF0LlJFQ0VJVkVSX1RZUEUuR1JPVVApe1xuICAgICAgICB0aGlzLmdyb3VwID0gdGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRSZWNlaXZlcigpO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgIH1cblxuICAgIH0pLmNhdGNoKChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+e1xuICAgICAgaWYodGhpcy5vbkVycm9yKXtcbiAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5zZXRUaGVtZSgpO1xuICAgIHRoaXMuc3Vic2NyaWJlVG9FdmVudHMoKVxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZTogU2ltcGxlQ2hhbmdlcykge1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUb0V2ZW50cygpXG4gICAgdHJ5IHtcbiAgICAgIC8vUmVtb3ZpbmcgTWVzc2FnZSBMaXN0ZW5lcnNcbiAgICAgIHRoaXMub25NZXNzYWdlc0RlbGl2ZXJlZD8udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMub25NZXNzYWdlc1JlYWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLm9uTWVzc2FnZURlbGV0ZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLm9uTWVzc2FnZUVkaXRlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB9IGNhdGNoIChlcnJvcjphbnkpIHtcbiAgICAgICBpZih0aGlzLm9uRXJyb3Ipe1xudGhpcy5vbkVycm9yKENvbWV0Q2hhdEV4Y2VwdGlvbihlcnJvcikpO1xufVxuICAgIH1cbiAgfVxuICB1cGRhdGVNZXNzYWdlKG1lc3NhZ2U6Q29tZXRDaGF0LkJhc2VNZXNzYWdlKXtcbiAgICBpZih0aGlzLnBhcmVudE1lc3NhZ2U/LmdldElkKCkgPT0gbWVzc2FnZS5nZXRJZCgpKXtcbiAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG4gIH1cbiAgdXBkYXRlUmVjZWlwdChtZXNzYWdlUmVjZWlwdDpDb21ldENoYXQuTWVzc2FnZVJlY2VpcHQpe1xuICAgIGlmKE51bWJlcihtZXNzYWdlUmVjZWlwdD8uZ2V0TWVzc2FnZUlkKCkpID09IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0SWQoKSl7XG4gICAgICBpZihtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKSl7XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZS5zZXRSZWFkQXQobWVzc2FnZVJlY2VpcHQuZ2V0UmVhZEF0KCkpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZihtZXNzYWdlUmVjZWlwdC5nZXREZWxpdmVyZWRBdCgpKXtcbiAgICAgICAgdGhpcy5wYXJlbnRNZXNzYWdlLnNldERlbGl2ZXJlZEF0KG1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KCkpO1xuXG4gICAgICB9XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG5cbiAgfVxuICBhZGRNZXNzYWdlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub25NZXNzYWdlc0RlbGl2ZXJlZCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMub25NZXNzYWdlc0RlbGl2ZXJlZC5zdWJzY3JpYmUoKG1lc3NhZ2VSZWNlaXB0OkNvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdCk9PntcbiAgICAgICAgdGhpcy51cGRhdGVSZWNlaXB0KCBtZXNzYWdlUmVjZWlwdCk7XG4gICAgICB9KVxuICAgICAgdGhpcy5vbk1lc3NhZ2VzUmVhZCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMub25NZXNzYWdlc1JlYWQuc3Vic2NyaWJlKChtZXNzYWdlUmVjZWlwdDpDb21ldENoYXQuTWVzc2FnZVJlY2VpcHQpPT57XG4gICAgICAgIHRoaXMudXBkYXRlUmVjZWlwdCggbWVzc2FnZVJlY2VpcHQpO1xuICAgICAgfSlcbiAgICAgIHRoaXMub25NZXNzYWdlRGVsZXRlZCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMub25NZXNzYWdlRGVsZXRlZC5zdWJzY3JpYmUoKGRlbGV0ZWRNZXNzYWdlOiBDb21ldENoYXQuQmFzZU1lc3NhZ2UpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXNzYWdlKGRlbGV0ZWRNZXNzYWdlKTtcbiAgICAgIH0pXG4gICAgICB0aGlzLm9uTWVzc2FnZUVkaXRlZCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMub25NZXNzYWdlRWRpdGVkLnN1YnNjcmliZSgoZWRpdGVkTWVzc2FnZTogQ29tZXRDaGF0LkJhc2VNZXNzYWdlKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTWVzc2FnZSggZWRpdGVkTWVzc2FnZSk7XG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgdGhpcy5vbkVycm9yKENvbWV0Q2hhdEV4Y2VwdGlvbihlcnJvcikpO1xufVxuICAgIH1cbiAgfVxuICBnZXRUaHJlYWRDb3VudCgpIHtcbiAgICBjb25zdCByZXBseUNvdW50ID0gdGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRSZXBseUNvdW50KCkgfHwgMDtcbiAgICBjb25zdCBzdWZmaXggPSByZXBseUNvdW50ID09PSAxID8gbG9jYWxpemUoXCJSRVBMWVwiKSA6IGxvY2FsaXplKFwiUkVQTElFU1wiKTtcbiAgICByZXR1cm4gYCR7cmVwbHlDb3VudH0gJHtzdWZmaXh9YDtcbiAgfVxuICBzdWJzY3JpYmVUb0V2ZW50cygpe1xuICAgIHRoaXMuY2NNZXNzYWdlU2VudCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlU2VudC5zdWJzY3JpYmUoKHtzdGF0dXMsIG1lc3NhZ2V9OiBJTWVzc2FnZXMpID0+IHtcbiAgICAgIGlmKHN0YXR1cyA9PT0gTWVzc2FnZVN0YXR1cy5zdWNjZXNzICYmIG1lc3NhZ2U/LmdldFBhcmVudE1lc3NhZ2VJZCgpID09PSB0aGlzLnBhcmVudE1lc3NhZ2U/LmdldElkKCkpe1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjTWVzc2FnZUVkaXRlZCA9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlRWRpdGVkLnN1YnNjcmliZSgoe3N0YXR1cywgbWVzc2FnZX06IElNZXNzYWdlcykgPT4ge1xuICAgICAgaWYoc3RhdHVzID09PSBNZXNzYWdlU3RhdHVzLnN1Y2Nlc3MgJiYgbWVzc2FnZT8uZ2V0SWQoKSA9PT0gdGhpcy5wYXJlbnRNZXNzYWdlPy5nZXRJZCgpKXtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjTWVzc2FnZURlbGV0ZWQ9IENvbWV0Q2hhdE1lc3NhZ2VFdmVudHMuY2NNZXNzYWdlRGVsZXRlZC5zdWJzY3JpYmUoKG1lc3NhZ2U6Q29tZXRDaGF0LkJhc2VNZXNzYWdlKSA9PiB7XG4gICAgICBpZihtZXNzYWdlPy5nZXRJZCgpID09PSB0aGlzLnBhcmVudE1lc3NhZ2U/LmdldElkKCkpe1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuY2NNZXNzYWdlUmVhZD0gQ29tZXRDaGF0TWVzc2FnZUV2ZW50cy5jY01lc3NhZ2VSZWFkLnN1YnNjcmliZSgobWVzc2FnZTpDb21ldENoYXQuQmFzZU1lc3NhZ2UpID0+IHtcbiAgICAgIGlmKG1lc3NhZ2U/LmdldElkKCkgPT09IHRoaXMucGFyZW50TWVzc2FnZT8uZ2V0SWQoKSl7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICB1bnN1YnNjcmliZVRvRXZlbnRzKCl7XG4gICAgdGhpcy5jY01lc3NhZ2VEZWxldGVkPy51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5jY01lc3NhZ2VFZGl0ZWQ/LnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLmNjTWVzc2FnZVJlYWQ/LnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLmNjTWVzc2FnZVNlbnQ/LnVuc3Vic2NyaWJlKClcbiAgfVxuICBjbG9zZVZpZXcoKXtcbiAgICBpZih0aGlzLm9uQ2xvc2Upe1xuICAgICAgdGhpcy5vbkNsb3NlKClcbiAgICB9XG4gIH1cblxuICBzZXRUaHJlYWRlZE1lc3NhZ2VzU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOlRocmVhZGVkTWVzc2FnZXNTdHlsZSA9IG5ldyBUaHJlYWRlZE1lc3NhZ2VzU3R5bGUoe1xuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICB0aXRsZUNvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudCgpLFxuICAgICAgdGl0bGVGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIGNsb3NlSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpXG4gICAgfSlcbiAgICB0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZSA9IHtcbiAgICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAgIC4uLnRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlXG4gICAgfVxuICB9XG4gIHNldFRoZW1lKCkge1xuICAgIHRoaXMuc2V0VGhyZWFkZWRNZXNzYWdlc1N0eWxlKClcbiAgICB0aGlzLmJ1dHRvblN0eWxlLmJ1dHRvbkljb25UaW50ID0gdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUuY2xvc2VJY29uVGludCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKTtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvblN0eWxlLmJhY2tncm91bmQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKTtcbiAgICB0aGlzLmFjdGlvbkJ1dHRvblN0eWxlLmJ1dHRvblRleHRGb250ID0gZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnN1YnRpdGxlMSk7XG4gICAgdGhpcy5hY3Rpb25CdXR0b25TdHlsZS5idXR0b25UZXh0Q29sb3IgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpO1xuICAgIHRoaXMudGl0bGVTdHlsZSA9IHtcbiAgICAgIHRleHRGb250IDogdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUudGl0bGVGb250IHx8IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgICAgdGV4dENvbG9yOnRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLnRpdGxlQ29sb3IgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiXG4gICAgfTtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgfVxuICB3cmFwcGVyU3R5bGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLmJhY2tncm91bmQgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBoZWlnaHQ6IHRoaXMudGhyZWFkZWRNZXNzYWdlc1N0eWxlLmhlaWdodCxcbiAgICAgIHdpZHRoOiB0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZS53aWR0aCxcbiAgICAgIGJvcmRlcjogdGhpcy50aHJlYWRlZE1lc3NhZ2VzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLnRocmVhZGVkTWVzc2FnZXNTdHlsZS5ib3JkZXJSYWRpdXNcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19fd3JhcHBlclwiIFtuZ1N0eWxlXT1cIndyYXBwZXJTdHlsZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNjLXRocmVhZGVkLW1lc3NhZ2VzX190aXRsZVwiPlxuICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJ0aXRsZVwiXG4gICAgICAgIFtsYWJlbFN0eWxlXT1cInRpdGxlU3R5bGVcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtdGhyZWFkZWQtbWVzc2FnZXNfX2Nsb3NlXCI+XG4gICAgICA8Y29tZXRjaGF0LWJ1dHRvbiBbaWNvblVSTF09XCJjbG9zZUljb25VUkxcIiBbYnV0dG9uU3R5bGVdPVwiYnV0dG9uU3R5bGVcIlxuICAgICAgICAoY2MtYnV0dG9uLWNsaWNrZWQpPVwiY2xvc2VWaWV3KClcIj48L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtdGhyZWFkZWQtbWVzc2FnZXNfX2J1YmJsZS12aWV3XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidWJibGVWaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiBwYXJlbnRNZXNzYWdlIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19fYWN0aW9uLXZpZXdcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VBY3Rpb25WaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiBwYXJlbnRNZXNzYWdlIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8Y29tZXRjaGF0LWJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlQWN0aW9uVmlld1wiIFt0ZXh0XT1cImdldFRocmVhZENvdW50KClcIlxuICAgICAgW2J1dHRvblN0eWxlXT1cImFjdGlvbkJ1dHRvblN0eWxlXCI+PC9jb21ldGNoYXQtYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXRocmVhZGVkLW1lc3NhZ2VzX19saXN0XCI+XG4gICAgPGNvbWV0Y2hhdC1tZXNzYWdlLWxpc3QgI21lc3NhZ2VMaXN0UmVmXG4gICAgICBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2UhLmdldElkKClcIlxuICAgICAgW2VtcHR5U3RhdGVWaWV3XT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5lbXB0eVN0YXRlVmlld1wiXG4gICAgICBbbG9hZGluZ1N0YXRlVmlld109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubG9hZGluZ1N0YXRlVmlld1wiXG4gICAgICBbdXNlcl09XCJ1c2VyXCIgW2dyb3VwXT1cImdyb3VwXCJcbiAgICAgIFtlcnJvclN0YXRlVmlld109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uZXJyb3JTdGF0ZVZpZXdcIlxuICAgICAgW2Rpc2FibGVSZWNlaXB0XT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5kaXNhYmxlUmVjZWlwdFwiXG4gICAgICBbcmVhZEljb25dPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLnJlYWRJY29uXCJcbiAgICAgIFtkZWxpdmVyZWRJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5kZWxpdmVyZWRJY29uXCJcbiAgICAgIFtzZW50SWNvbl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uc2VudEljb25cIlxuICAgICAgW3dhaXRJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi53YWl0SWNvblwiXG4gICAgICBbZXJyb3JJY29uXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5lcnJvckljb25cIlxuICAgICAgW2FsaWdubWVudF09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uYWxpZ25tZW50XCJcbiAgICAgIFtzaG93QXZhdGFyXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5zaG93QXZhdGFyXCJcbiAgICAgIFtkYXRlUGF0dGVybl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uZGF0ZVBhdHRlcm5cIlxuICAgICAgW3RpbWVzdGFtcEFsaWdubWVudF09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24udGltZXN0YW1wQWxpZ25tZW50XCJcbiAgICAgIFtEYXRlU2VwYXJhdG9yUGF0dGVybl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uRGF0ZVNlcGFyYXRvclBhdHRlcm5cIlxuICAgICAgW21lc3NhZ2VUeXBlc109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24udGVtcGxhdGVzXCJcbiAgICAgIFttZXNzYWdlc1JlcXVlc3RCdWlsZGVyXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5tZXNzYWdlc1JlcXVlc3RCdWlsZGVyIHx8IHJlcXVlc3RCdWlsZGVyXCJcbiAgICAgIFt0aHJlc2hvbGRWYWx1ZV09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24udGhyZXNob2xkVmFsdWVcIlxuICAgICAgW29uVGhyZWFkUmVwbGllc0NsaWNrXT1cIm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5vblRocmVhZFJlcGxpZXNDbGlja1wiXG4gICAgICBbaGVhZGVyVmlld109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uaGVhZGVyVmlld1wiXG4gICAgICBbZm9vdGVyVmlld109XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uZm9vdGVyVmlld1wiXG4gICAgICBbYXZhdGFyU3R5bGVdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmF2YXRhclN0eWxlXCJcbiAgICAgIFtkYXRlU2VwYXJhdG9yU3R5bGVdPVwibWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLmRhdGVTZXBhcmF0b3JTdHlsZVwiXG4gICAgICBbbWVzc2FnZUxpc3RTdHlsZV09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RTdHlsZVwiXG4gICAgICBbb25FcnJvcl09XCJtZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ub25FcnJvclwiPlxuICAgIDwvY29tZXRjaGF0LW1lc3NhZ2UtbGlzdD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy10aHJlYWRlZC1tZXNzYWdlc19fY29tcG9zZXJcIj5cbiAgICA8Y29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXIgI21lc3NhZ2VDb21wb3NlclJlZlxuICAgICAgW3BhcmVudE1lc3NhZ2VJZF09XCJwYXJlbnRNZXNzYWdlIS5nZXRJZCgpXCIgW3VzZXJdPVwidXNlclwiIFtncm91cF09XCJncm91cFwiXG4gICAgICBbdGV4dF09XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLnRleHRcIlxuICAgICAgW2hlYWRlclZpZXddPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5oZWFkZXJWaWV3XCJcbiAgICAgIFtvblRleHRDaGFuZ2VdPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5vblRleHRDaGFuZ2VcIlxuICAgICAgW2F0dGFjaG1lbnRJY29uVVJMXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uYXR0YWNobWVudEljb25VUkxcIlxuICAgICAgW2F0dGFjaG1lbnRPcHRpb25zXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uYXR0YWNobWVudE9wdGlvbnNcIlxuICAgICAgW3NlY29uZGFyeUJ1dHRvblZpZXddPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5zZWNvbmRhcnlCdXR0b25WaWV3XCJcbiAgICAgIFthdXhpbGFyeUJ1dHRvblZpZXddPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5hdXhpbGFyeUJ1dHRvblZpZXdcIlxuICAgICAgW2F1eGlsaWFyeUJ1dHRvbnNBbGlnbm1lbnRdPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5hdXhpbGlhcnlCdXR0b25zQWxpZ25tZW50XCJcbiAgICAgIFtzZW5kQnV0dG9uVmlld109XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLnNlbmRCdXR0b25WaWV3XCJcbiAgICAgIFtoaWRlTGl2ZVJlYWN0aW9uXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uaGlkZUxpdmVSZWFjdGlvblwiXG4gICAgICBbTGl2ZVJlYWN0aW9uSWNvblVSTF09XCJtZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uLkxpdmVSZWFjdGlvbkljb25VUkxcIlxuICAgICAgW21lc3NhZ2VDb21wb3NlclN0eWxlXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24ubWVzc2FnZUNvbXBvc2VyU3R5bGVcIlxuICAgICAgW29uU2VuZEJ1dHRvbkNsaWNrXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24ub25TZW5kQnV0dG9uQ2xpY2tcIlxuICAgICAgW29uU2VuZEJ1dHRvbkNsaWNrXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24ub25TZW5kQnV0dG9uQ2xpY2tcIlxuICAgICAgW29uRXJyb3JdPVwibWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5vbkVycm9yXCJcbiAgICAgIFthY3Rpb25TaGVldFN0eWxlXT1cIm1lc3NhZ2VDb21wb3NlckNvbmZpZ3VyYXRpb24uYWN0aW9uU2hlZXRTdHlsZVwiPlxuICAgIDwvY29tZXRjaGF0LW1lc3NhZ2UtY29tcG9zZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -390,7 +390,7 @@ export class CometChatUsersComponent {
390
390
  }
391
391
  }
392
392
  CometChatUsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatUsersComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
393
- CometChatUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatUsersComponent, selector: "cometchat-users", inputs: { usersRequestBuilder: "usersRequestBuilder", searchRequestBuilder: "searchRequestBuilder", subtitleView: "subtitleView", disableUsersPresence: "disableUsersPresence", listItemView: "listItemView", menu: "menu", options: "options", activeUser: "activeUser", hideSeparator: "hideSeparator", searchPlaceholder: "searchPlaceholder", hideError: "hideError", selectionMode: "selectionMode", searchIconURL: "searchIconURL", hideSearch: "hideSearch", title: "title", onError: "onError", emptyStateView: "emptyStateView", onSelect: "onSelect", errorStateView: "errorStateView", loadingIconURL: "loadingIconURL", showSectionHeader: "showSectionHeader", sectionHeaderField: "sectionHeaderField", loadingStateView: "loadingStateView", emptyStateText: "emptyStateText", errorStateText: "errorStateText", titleAlignment: "titleAlignment", usersStyle: "usersStyle", listItemStyle: "listItemStyle", statusIndicatorStyle: "statusIndicatorStyle", avatarStyle: "avatarStyle", onItemClick: "onItemClick" }, ngImport: i0, template: "<div class=\"cc-users\" [ngStyle]=\"userStyle()\">\n <div class=\"cc-menus\" *ngIf=\"menu\">\n\n <ng-container *ngTemplateOutlet=\"menu\">\n </ng-container>\n\n</div>\n <cometchat-list [listItemView]=\"listItemView ? listItemView : listItem\" [onScrolledToBottom]=\"onScrolledToBottom\" [onSearch]=\"onSearch\"\n [list]=\"usersList\" [searchText]=\"searchKeyword\" [searchPlaceholderText]=\"searchPlaceholder\"\n [searchIconURL]=\"searchIconURL\" [hideSearch]=\"hideSearch\" [hideError]=\"hideError\" [title]=\"title\"\n [sectionHeaderField]=\"sectionHeaderField\" [showSectionHeader]=\"showSectionHeader\"\n [emptyStateText]=\"emptyStateText\" [loadingIconURL]=\"loadingIconURL\"\n [titleAlignment]=\"titleAlignment\" [loadingStateView]=\"loadingStateView\" [emptyStateView]=\"emptyStateView\"\n [errorStateText]=\"errorStateText\" [errorStateView]=\"errorStateView\" [listStyle]=\"listStyle\" [state]=\"state\">\n </cometchat-list>\n <ng-template #listItem let-user>\n <cometchat-list-item [title]=\"user?.name\" [avatarURL]=\"user?.avatar\" [avatarName]=\"user?.name\"\n [listItemStyle]=\"listItemStyle\" [avatarStyle]=\"avatarStyle\" [statusIndicatorStyle]=\"statusIndicatorStyle\"\n [statusIndicatorColor]=\"getStatusIndicatorColor(user)\" [hideSeparator]=\"hideSeparator\" (cc-listitem-clicked)=\"onClick(user)\" [isActive]=\"getActiveUser(user)\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n\n <div slot=\"menuView\" class=\"cc-users__options\" *ngIf=\"options\">\n <cometchat-menu-list [data]=\"options(user)\">\n\n </cometchat-menu-list>\n </div>\n <div slot=\"tailView\" *ngIf=\"selectionMode != selectionmodeEnum.none\" class=\"cc-users__tail-view\">\n <ng-container *ngTemplateOutlet=\"tailView\">\n </ng-container>\n </div>\n <ng-template #tailView>\n <div *ngIf=\"selectionMode == selectionmodeEnum.single\" class=\"cc-users__selection--single\">\n <cometchat-radio-button (cc-radio-button-checked)=\"addMembersToList(user,$event)\" [checked]=\"isUserSelected(user)\" ></cometchat-radio-button>\n\n </div>\n <div *ngIf=\"selectionMode == selectionmodeEnum.multiple\" class=\"cc-users__selection--multiple\">\n <cometchat-checkbox (cc-checkbox-changed)=\"addMembersToList(user,$event)\"></cometchat-checkbox>\n\n </div>\n </ng-template>\n </cometchat-list-item>\n\n </ng-template>\n</div>\n\n", styles: [".cc-users{height:100%;width:100%;box-sizing:border-box}.cc-menus{position:absolute;right:12px;padding:12px;cursor:pointer}.cc-users__selection--multiple{width:65px}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
393
+ CometChatUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatUsersComponent, selector: "cometchat-users", inputs: { usersRequestBuilder: "usersRequestBuilder", searchRequestBuilder: "searchRequestBuilder", subtitleView: "subtitleView", disableUsersPresence: "disableUsersPresence", listItemView: "listItemView", menu: "menu", options: "options", activeUser: "activeUser", hideSeparator: "hideSeparator", searchPlaceholder: "searchPlaceholder", hideError: "hideError", selectionMode: "selectionMode", searchIconURL: "searchIconURL", hideSearch: "hideSearch", title: "title", onError: "onError", emptyStateView: "emptyStateView", onSelect: "onSelect", errorStateView: "errorStateView", loadingIconURL: "loadingIconURL", showSectionHeader: "showSectionHeader", sectionHeaderField: "sectionHeaderField", loadingStateView: "loadingStateView", emptyStateText: "emptyStateText", errorStateText: "errorStateText", titleAlignment: "titleAlignment", usersStyle: "usersStyle", listItemStyle: "listItemStyle", statusIndicatorStyle: "statusIndicatorStyle", avatarStyle: "avatarStyle", onItemClick: "onItemClick" }, ngImport: i0, template: "<div class=\"cc-users\" [ngStyle]=\"userStyle()\">\n <div class=\"cc-menus\" *ngIf=\"menu\">\n\n <ng-container *ngTemplateOutlet=\"menu\">\n </ng-container>\n\n</div>\n <cometchat-list [listItemView]=\"listItemView ? listItemView : listItem\" [onScrolledToBottom]=\"onScrolledToBottom\" [onSearch]=\"onSearch\"\n [list]=\"usersList\" [searchText]=\"searchKeyword\" [searchPlaceholderText]=\"searchPlaceholder\"\n [searchIconURL]=\"searchIconURL\" [hideSearch]=\"hideSearch\" [hideError]=\"hideError\" [title]=\"title\"\n [sectionHeaderField]=\"sectionHeaderField\" [showSectionHeader]=\"showSectionHeader\"\n [emptyStateText]=\"emptyStateText\" [loadingIconURL]=\"loadingIconURL\"\n [titleAlignment]=\"titleAlignment\" [loadingStateView]=\"loadingStateView\" [emptyStateView]=\"emptyStateView\"\n [errorStateText]=\"errorStateText\" [errorStateView]=\"errorStateView\" [listStyle]=\"listStyle\" [state]=\"state\">\n </cometchat-list>\n <ng-template #listItem let-user>\n <cometchat-list-item [title]=\"user?.name\" [avatarURL]=\"user?.avatar\" [avatarName]=\"user?.name\"\n [listItemStyle]=\"listItemStyle\" [avatarStyle]=\"avatarStyle\" [statusIndicatorStyle]=\"statusIndicatorStyle\"\n [statusIndicatorColor]=\"getStatusIndicatorColor(user)\" [hideSeparator]=\"hideSeparator\" (cc-listitem-clicked)=\"onClick(user)\" [isActive]=\"getActiveUser(user)\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n\n <div slot=\"menuView\" class=\"cc-users__options\" *ngIf=\"options\">\n <cometchat-menu-list [data]=\"options(user)\">\n\n </cometchat-menu-list>\n </div>\n <div slot=\"tailView\" *ngIf=\"selectionMode != selectionmodeEnum.none\" class=\"cc-users__tail-view\">\n <ng-container *ngTemplateOutlet=\"tailView\">\n </ng-container>\n </div>\n <ng-template #tailView>\n <div *ngIf=\"selectionMode == selectionmodeEnum.single\" class=\"cc-users__selection--single\">\n <cometchat-radio-button (cc-radio-button-checked)=\"addMembersToList(user,$event)\" [checked]=\"isUserSelected(user)\" ></cometchat-radio-button>\n\n </div>\n <div *ngIf=\"selectionMode == selectionmodeEnum.multiple\" class=\"cc-users__selection--multiple\">\n <cometchat-checkbox (cc-checkbox-changed)=\"addMembersToList(user,$event)\"></cometchat-checkbox>\n\n </div>\n </ng-template>\n </cometchat-list-item>\n\n </ng-template>\n</div>\n\n", styles: [".cc-users{height:100%;width:100%;box-sizing:border-box}.cc-menus{position:absolute;right:12px;padding:12px;cursor:pointer}.cc-users__selection--multiple{width:65px}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "getSectionHeader", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField", "DateSeparatorPattern", "dateSeparatorStyle"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
394
394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatUsersComponent, decorators: [{
395
395
  type: Component,
396
396
  args: [{ selector: 'cometchat-users', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-users\" [ngStyle]=\"userStyle()\">\n <div class=\"cc-menus\" *ngIf=\"menu\">\n\n <ng-container *ngTemplateOutlet=\"menu\">\n </ng-container>\n\n</div>\n <cometchat-list [listItemView]=\"listItemView ? listItemView : listItem\" [onScrolledToBottom]=\"onScrolledToBottom\" [onSearch]=\"onSearch\"\n [list]=\"usersList\" [searchText]=\"searchKeyword\" [searchPlaceholderText]=\"searchPlaceholder\"\n [searchIconURL]=\"searchIconURL\" [hideSearch]=\"hideSearch\" [hideError]=\"hideError\" [title]=\"title\"\n [sectionHeaderField]=\"sectionHeaderField\" [showSectionHeader]=\"showSectionHeader\"\n [emptyStateText]=\"emptyStateText\" [loadingIconURL]=\"loadingIconURL\"\n [titleAlignment]=\"titleAlignment\" [loadingStateView]=\"loadingStateView\" [emptyStateView]=\"emptyStateView\"\n [errorStateText]=\"errorStateText\" [errorStateView]=\"errorStateView\" [listStyle]=\"listStyle\" [state]=\"state\">\n </cometchat-list>\n <ng-template #listItem let-user>\n <cometchat-list-item [title]=\"user?.name\" [avatarURL]=\"user?.avatar\" [avatarName]=\"user?.name\"\n [listItemStyle]=\"listItemStyle\" [avatarStyle]=\"avatarStyle\" [statusIndicatorStyle]=\"statusIndicatorStyle\"\n [statusIndicatorColor]=\"getStatusIndicatorColor(user)\" [hideSeparator]=\"hideSeparator\" (cc-listitem-clicked)=\"onClick(user)\" [isActive]=\"getActiveUser(user)\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n\n <div slot=\"menuView\" class=\"cc-users__options\" *ngIf=\"options\">\n <cometchat-menu-list [data]=\"options(user)\">\n\n </cometchat-menu-list>\n </div>\n <div slot=\"tailView\" *ngIf=\"selectionMode != selectionmodeEnum.none\" class=\"cc-users__tail-view\">\n <ng-container *ngTemplateOutlet=\"tailView\">\n </ng-container>\n </div>\n <ng-template #tailView>\n <div *ngIf=\"selectionMode == selectionmodeEnum.single\" class=\"cc-users__selection--single\">\n <cometchat-radio-button (cc-radio-button-checked)=\"addMembersToList(user,$event)\" [checked]=\"isUserSelected(user)\" ></cometchat-radio-button>\n\n </div>\n <div *ngIf=\"selectionMode == selectionmodeEnum.multiple\" class=\"cc-users__selection--multiple\">\n <cometchat-checkbox (cc-checkbox-changed)=\"addMembersToList(user,$event)\"></cometchat-checkbox>\n\n </div>\n </ng-template>\n </cometchat-list-item>\n\n </ng-template>\n</div>\n\n", styles: [".cc-users{height:100%;width:100%;box-sizing:border-box}.cc-menus{position:absolute;right:12px;padding:12px;cursor:pointer}.cc-users__selection--multiple{width:65px}\n"] }]
@@ -171,10 +171,10 @@ export class CometChatUsersWithMessagesComponent {
171
171
  }
172
172
  }
173
173
  CometChatUsersWithMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatUsersWithMessagesComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
174
- CometChatUsersWithMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatUsersWithMessagesComponent, selector: "cometchat-users-with-messages", inputs: { user: "user", isMobileView: "isMobileView", messageText: "messageText", usersWithMessagesStyle: "usersWithMessagesStyle", messagesConfiguration: "messagesConfiguration", usersConfiguration: "usersConfiguration", onError: "onError" }, viewQueries: [{ propertyName: "userRef", first: true, predicate: ["usersRef"], descendants: true }, { propertyName: "messageListRef", first: true, predicate: ["messagesRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"usersWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\" [ngStyle]=\"sideBarStyle\">\n <cometchat-users\n #usersRef\n [activeUser]=\"user\"\n [hideSearch]=\"usersConfiguration.hideSearch\"\n [searchIconURL]=\"usersConfiguration.searchIconURL\"\n [searchRequestBuilder]=\"usersConfiguration.searchRequestBuilder\"\n [onItemClick]=\"usersConfiguration.onItemClick || onItemClick\"\n [usersStyle]=\"usersConfiguration.usersStyle\"\n [subtitleView]=\"usersConfiguration.subtitleView\"\n [options]=\"usersConfiguration.options\"\n [usersRequestBuilder]=\"usersConfiguration.usersRequestBuilder\"\n [emptyStateView]=\"usersConfiguration.emptyStateView\"\n [onSelect]=\"usersConfiguration.onSelect\"\n [loadingIconURL]=\"usersConfiguration.loadingIconURL\"\n [errorStateView]=\"usersConfiguration.errorStateView\"\n [loadingStateView]=\"usersConfiguration.loadingStateView\"\n [titleAlignment]=\"usersConfiguration.titleAlignment\"\n [showSectionHeader]=\"usersConfiguration.showSectionHeader\"\n [listItemView]=\"usersConfiguration.listItemView\"\n [menu]=\"usersConfiguration.menu\"\n [hideSeparator]=\"usersConfiguration.hideSeparator\"\n [hideError]=\"usersConfiguration.hideError\"\n [selectionMode]=\"usersConfiguration.selectionMode\"\n [listItemStyle]=\"usersConfiguration.listItemStyle\"\n\n ></cometchat-users>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user\">\n <!--Message List Screen-->\n <cometchat-messages\n #messagesRef\n [user]=\"user!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n >\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n</div>", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"], components: [{ type: i2.CometChatUsersComponent, selector: "cometchat-users", inputs: ["usersRequestBuilder", "searchRequestBuilder", "subtitleView", "disableUsersPresence", "listItemView", "menu", "options", "activeUser", "hideSeparator", "searchPlaceholder", "hideError", "selectionMode", "searchIconURL", "hideSearch", "title", "onError", "emptyStateView", "onSelect", "errorStateView", "loadingIconURL", "showSectionHeader", "sectionHeaderField", "loadingStateView", "emptyStateText", "errorStateText", "titleAlignment", "usersStyle", "listItemStyle", "statusIndicatorStyle", "avatarStyle", "onItemClick"] }, { type: i3.CometChatMessagesComponent, selector: "cometchat-messages", inputs: ["user", "group", "hideMessageComposer", "disableTyping", "messageHeaderConfiguration", "messageListConfiguration", "messageComposerConfiguration", "threadedMessageConfiguration", "detailsConfiguration", "customSoundForIncomingMessages", "customSoundForOutgoingMessages", "disableSoundForMessages", "messagesStyle", "messageHeaderView", "messageComposerView", "messageListView", "hideMessageHeader", "hideDetails", "auxiliaryMenu"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
174
+ CometChatUsersWithMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatUsersWithMessagesComponent, selector: "cometchat-users-with-messages", inputs: { user: "user", isMobileView: "isMobileView", messageText: "messageText", usersWithMessagesStyle: "usersWithMessagesStyle", messagesConfiguration: "messagesConfiguration", usersConfiguration: "usersConfiguration", onError: "onError" }, viewQueries: [{ propertyName: "userRef", first: true, predicate: ["usersRef"], descendants: true }, { propertyName: "messageListRef", first: true, predicate: ["messagesRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"usersWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\" [ngStyle]=\"sideBarStyle\">\n <cometchat-users\n #usersRef\n [activeUser]=\"user\"\n [hideSearch]=\"usersConfiguration.hideSearch\"\n [searchIconURL]=\"usersConfiguration.searchIconURL\"\n [searchRequestBuilder]=\"usersConfiguration.searchRequestBuilder\"\n [onItemClick]=\"usersConfiguration.onItemClick || onItemClick\"\n [usersStyle]=\"usersConfiguration.usersStyle\"\n [subtitleView]=\"usersConfiguration.subtitleView\"\n [options]=\"usersConfiguration.options\"\n [usersRequestBuilder]=\"usersConfiguration.usersRequestBuilder\"\n [emptyStateView]=\"usersConfiguration.emptyStateView\"\n [onSelect]=\"usersConfiguration.onSelect\"\n [loadingIconURL]=\"usersConfiguration.loadingIconURL\"\n [errorStateView]=\"usersConfiguration.errorStateView\"\n [loadingStateView]=\"usersConfiguration.loadingStateView\"\n [titleAlignment]=\"usersConfiguration.titleAlignment\"\n [showSectionHeader]=\"usersConfiguration.showSectionHeader\"\n [listItemView]=\"usersConfiguration.listItemView\"\n [menu]=\"usersConfiguration.menu\"\n [hideSeparator]=\"usersConfiguration.hideSeparator\"\n [hideError]=\"usersConfiguration.hideError\"\n [selectionMode]=\"usersConfiguration.selectionMode\"\n [listItemStyle]=\"usersConfiguration.listItemStyle\"\n\n ></cometchat-users>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user\">\n <!--Message List Screen-->\n <cometchat-messages\n #messagesRef\n [user]=\"user!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n [hideDetails]=\"messagesConfiguration.hideDetails!\"\n >\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n</div>", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"], components: [{ type: i2.CometChatUsersComponent, selector: "cometchat-users", inputs: ["usersRequestBuilder", "searchRequestBuilder", "subtitleView", "disableUsersPresence", "listItemView", "menu", "options", "activeUser", "hideSeparator", "searchPlaceholder", "hideError", "selectionMode", "searchIconURL", "hideSearch", "title", "onError", "emptyStateView", "onSelect", "errorStateView", "loadingIconURL", "showSectionHeader", "sectionHeaderField", "loadingStateView", "emptyStateText", "errorStateText", "titleAlignment", "usersStyle", "listItemStyle", "statusIndicatorStyle", "avatarStyle", "onItemClick"] }, { type: i3.CometChatMessagesComponent, selector: "cometchat-messages", inputs: ["user", "group", "currentAskAIBot", "hideMessageComposer", "disableTyping", "messageHeaderConfiguration", "messageListConfiguration", "messageComposerConfiguration", "threadedMessageConfiguration", "detailsConfiguration", "customSoundForIncomingMessages", "customSoundForOutgoingMessages", "disableSoundForMessages", "messagesStyle", "messageHeaderView", "messageComposerView", "messageListView", "hideMessageHeader", "hideDetails", "auxiliaryMenu"] }], directives: [{ type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
175
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatUsersWithMessagesComponent, decorators: [{
176
176
  type: Component,
177
- args: [{ selector: "cometchat-users-with-messages", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"usersWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\" [ngStyle]=\"sideBarStyle\">\n <cometchat-users\n #usersRef\n [activeUser]=\"user\"\n [hideSearch]=\"usersConfiguration.hideSearch\"\n [searchIconURL]=\"usersConfiguration.searchIconURL\"\n [searchRequestBuilder]=\"usersConfiguration.searchRequestBuilder\"\n [onItemClick]=\"usersConfiguration.onItemClick || onItemClick\"\n [usersStyle]=\"usersConfiguration.usersStyle\"\n [subtitleView]=\"usersConfiguration.subtitleView\"\n [options]=\"usersConfiguration.options\"\n [usersRequestBuilder]=\"usersConfiguration.usersRequestBuilder\"\n [emptyStateView]=\"usersConfiguration.emptyStateView\"\n [onSelect]=\"usersConfiguration.onSelect\"\n [loadingIconURL]=\"usersConfiguration.loadingIconURL\"\n [errorStateView]=\"usersConfiguration.errorStateView\"\n [loadingStateView]=\"usersConfiguration.loadingStateView\"\n [titleAlignment]=\"usersConfiguration.titleAlignment\"\n [showSectionHeader]=\"usersConfiguration.showSectionHeader\"\n [listItemView]=\"usersConfiguration.listItemView\"\n [menu]=\"usersConfiguration.menu\"\n [hideSeparator]=\"usersConfiguration.hideSeparator\"\n [hideError]=\"usersConfiguration.hideError\"\n [selectionMode]=\"usersConfiguration.selectionMode\"\n [listItemStyle]=\"usersConfiguration.listItemStyle\"\n\n ></cometchat-users>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user\">\n <!--Message List Screen-->\n <cometchat-messages\n #messagesRef\n [user]=\"user!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n >\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n</div>", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"] }]
177
+ args: [{ selector: "cometchat-users-with-messages", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"usersWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\" [ngStyle]=\"sideBarStyle\">\n <cometchat-users\n #usersRef\n [activeUser]=\"user\"\n [hideSearch]=\"usersConfiguration.hideSearch\"\n [searchIconURL]=\"usersConfiguration.searchIconURL\"\n [searchRequestBuilder]=\"usersConfiguration.searchRequestBuilder\"\n [onItemClick]=\"usersConfiguration.onItemClick || onItemClick\"\n [usersStyle]=\"usersConfiguration.usersStyle\"\n [subtitleView]=\"usersConfiguration.subtitleView\"\n [options]=\"usersConfiguration.options\"\n [usersRequestBuilder]=\"usersConfiguration.usersRequestBuilder\"\n [emptyStateView]=\"usersConfiguration.emptyStateView\"\n [onSelect]=\"usersConfiguration.onSelect\"\n [loadingIconURL]=\"usersConfiguration.loadingIconURL\"\n [errorStateView]=\"usersConfiguration.errorStateView\"\n [loadingStateView]=\"usersConfiguration.loadingStateView\"\n [titleAlignment]=\"usersConfiguration.titleAlignment\"\n [showSectionHeader]=\"usersConfiguration.showSectionHeader\"\n [listItemView]=\"usersConfiguration.listItemView\"\n [menu]=\"usersConfiguration.menu\"\n [hideSeparator]=\"usersConfiguration.hideSeparator\"\n [hideError]=\"usersConfiguration.hideError\"\n [selectionMode]=\"usersConfiguration.selectionMode\"\n [listItemStyle]=\"usersConfiguration.listItemStyle\"\n\n ></cometchat-users>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"user\">\n <!--Message List Screen-->\n <cometchat-messages\n #messagesRef\n [user]=\"user!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n [hideDetails]=\"messagesConfiguration.hideDetails!\"\n >\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n</div>", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"] }]
178
178
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { userRef: [{
179
179
  type: ViewChild,
180
180
  args: ["usersRef", { static: false }]
@@ -196,4 +196,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
196
196
  }], onError: [{
197
197
  type: Input
198
198
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRVc2Vyc1dpdGhNZXNzYWdlcy9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDdEosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNELE9BQU8sMkJBQTJCLENBQUE7QUFHbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUNyRzs7Ozs7Ozs7RUFRQztBQU9ILE1BQU0sT0FBTyxtQ0FBbUM7SUFrQzlDLFlBQW9CLFVBQXNCLEVBQVMsR0FBc0IsRUFBUyxZQUFrQztRQUFoRyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUE3QjNHLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdC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QUFDO0lBQ3RDLENBQUM7O2lJQXRKVSxtQ0FBbUM7cUhBQW5DLG1DQUFtQyxtaEJDeEJoRCxzL0ZBdURNOzRGRC9CTyxtQ0FBbUM7a0JBTi9DLFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNO3FLQUlMLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSyxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2xDLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksc0JBQXNCO3NCQUEvQixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gXCJAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHRcIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdE1lc3NhZ2VzL2NvbWV0Y2hhdC1tZXNzYWdlcy9jb21ldGNoYXQtbWVzc2FnZXMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRDb252ZXJzYXRpb25zQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdENvbnZlcnNhdGlvbnMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMuY29tcG9uZW50XCI7XG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IGxvY2FsaXplLCBDb21ldENoYXRUaGVtZSwgZm9udEhlbHBlciwgQ29tZXRDaGF0VXNlckV2ZW50cyB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlc1wiO1xuaW1wb3J0IHsgV2l0aE1lc3NhZ2VzU3R5bGUsIE1lc3NhZ2VzQ29uZmlndXJhdGlvbiwgVXNlcnNDb25maWd1cmF0aW9uIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtc2hhcmVkXCI7XG4gIC8qKlxuICpcbiAqIENvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzQ29tcG9uZW50IGlzIGEgd3JhcHBlciBjb21wb25lbnQgZm9yIENvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50IGFuZCBDb21ldENoYXRDb252ZXJzYXRpb25zIGNvbXBvbmVudCB0byBzaG93IGNoYXRzIGFuZCBtZXNzYWdlcyBpbiBvbmUgc2NyZWVuXG4gKlxuICogQHZlcnNpb24gMS4wLjBcbiAqIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuICogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRVc2Vyc1dpdGhNZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gdGFraW5nIHJlZmVyZW5jZSBvZiBjb252ZXJzYXRpb25Db21wb25lbnQgYW5kIE1lc3NhZ2VzQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoXCJ1c2Vyc1JlZlwiLCB7IHN0YXRpYzogZmFsc2UgfSkgdXNlclJlZiE6IENvbWV0Q2hhdENvbnZlcnNhdGlvbnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoXCJtZXNzYWdlc1JlZlwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVzc2FnZUxpc3RSZWYhOiBDb21ldENoYXRNZXNzYWdlc0NvbXBvbmVudDtcbiAgQElucHV0KCkgdXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIk5PX1VTRVJTX1NFTEVDVEVEXCIpO1xuICBASW5wdXQoKSAgdXNlcnNXaXRoTWVzc2FnZXNTdHlsZTogV2l0aE1lc3NhZ2VzU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgXG4gIH07XG4gIEBJbnB1dCgpIG1lc3NhZ2VzQ29uZmlndXJhdGlvbjogTWVzc2FnZXNDb25maWd1cmF0aW9uID0gbmV3IE1lc3NhZ2VzQ29uZmlndXJhdGlvbih7fSk7XG4gIEBJbnB1dCgpIHVzZXJzQ29uZmlndXJhdGlvbjogVXNlcnNDb25maWd1cmF0aW9uID0gbmV3IFVzZXJzQ29uZmlndXJhdGlvbih7fSk7XG4gIEBJbnB1dCgpIG9uRXJyb3I6KChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+dm9pZCApIHwgbnVsbD0gKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgIHRoZW1lOiBDb21ldENoYXRUaGVtZSA9IG5ldyBDb21ldENoYXRUaGVtZSh7fSk7XG4gICAgLyoqXG4gICAgICogUHJvcGVydGllcyBmb3IgaW50ZXJuYWwgdXNlXG4gICAgICovXG4gIHB1YmxpYyBsb2dnZWRJblVzZXIhOiBDb21ldENoYXQuVXNlciB8IG51bGw7XG4gIGxhYmVsU3R5bGU6YW55ID0ge1xuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICAgIHRleHRGb250OlwiNzAwIDIycHggSW50ZXJcIixcbiAgICB0ZXh0Q29sb3I6XCJyZ2JhKDIwLCAyMCwgMjAsIDAuMzMpXCJcbiAgfVxuICAgICAvKipcbiAgICAgKiBFdmVudHNcbiAgICAgKi9cbiAgY2NVc2VyQmxvY2tlZCE6U3Vic2NyaXB0aW9uO1xuICBjY1VzZXJVbkJsb2NrZWQhOlN1YnNjcmlwdGlvbjtcbiAgc2lkZUJhclN0eWxlOmFueSA9IHt9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0aGVtZVNlcnZpY2U6Q29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7XG4gICB9XG4gICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpXG4gICAgICB9XG4gICAgICB1cGRhdGVCYWNrZHJvcEhlaWdodCgpe1xuICAgICAgICBjb25zdCBkaXZIZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGRpdldpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBiYWNrZHJvcFN0eWxlID0gIHtcbiAgICAgICAgICBoZWlnaHQ6ZGl2SGVpZ2h0ICsgXCJweFwiLFxuICAgICAgICAgIHdpZHRoOmRpdldpZHRoICsgXCJweFwiLFxuICAgICAgICAgIGJhY2tncm91bmQ6XCJyZ2JhKDAsIDAsIDAsIDAuNSlcIixcbiAgICAgICAgICBwb3NpdGlvbjpcImZpeGVkXCJcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IGJhY2tkcm9wU3R5bGVcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IGJhY2tkcm9wU3R5bGVcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlID0gYmFja2Ryb3BTdHlsZVxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5ncm91cE1lbWJlcnNDb25maWd1cmF0aW9uLmJhY2tkcm9wU3R5bGUgPSBiYWNrZHJvcFN0eWxlXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlc1tcImlzTW9iaWxlVmlld1wiXSl7XG4gICAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvbkNvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCJcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvbkNvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUud2lkdGggPSBcIjEwMCVcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5oaWRlQmFja0J1dHRvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbiA9IHsuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbn1cbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uIH1cblxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIXRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25Db25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmhlaWdodCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uQ29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS53aWR0aCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCAxMDBweFwiXG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uLmhpZGVCYWNrQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb259XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uID0geyAuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbiB9XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpXG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuICBvbkJhY2sgPSAoKT0+e1xuICAgIHRoaXMudXNlciA9IG51bGxcbiAgfVxuICAgb25JdGVtQ2xpY2s6ICgodXNlcjpDb21ldENoYXQuVXNlcik9PnZvaWQpID0gKHVzZXI6Q29tZXRDaGF0LlVzZXIpPT57XG4gICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgfTtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRXaXRoTWVzc2FnZXNTdHlsZSgpXG4gICAgaWYoIXRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uLm9uQmFjayl7XG4gICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5vbkJhY2sgPSB0aGlzLm9uQmFja1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKCk7XG4gICAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgICAgLnRoZW4oKHVzZXI6Q29tZXRDaGF0LlVzZXIgfCBudWxsKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgICBpZih0aGlzLm9uRXJyb3Ipe1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgfVxuICBzZXRXaXRoTWVzc2FnZXNTdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6V2l0aE1lc3NhZ2VzU3R5bGUgPSBuZXcgV2l0aE1lc3NhZ2VzU3R5bGUoe1xuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCl9YCxcbiAgICAgIG1lc3NhZ2VUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBtZXNzYWdlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgIH0pXG4gICAgdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlID0ge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4udGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlXG4gICAgfVxuICAgIHRoaXMubGFiZWxTdHlsZS50ZXh0Rm9udCA9IHRoaXMudXNlcnNXaXRoTWVzc2FnZXNTdHlsZS5tZXNzYWdlVGV4dEZvbnRcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLm1lc3NhZ2VUZXh0Q29sb3I7XG4gICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZS5ib3JkZXIgPSAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZS5ib3JkZXIgPz8gIFwibm9uZVwiXG4gICAgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZS5ib3JkZXIgPSAgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZS5ib3JkZXIgPz8gIFwibm9uZVwiXG4gICAgaWYoIXRoaXMudXNlcnNDb25maWd1cmF0aW9uPy51c2Vyc1N0eWxlPy5ib3JkZXIgfHwgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24/LnVzZXJzU3R5bGU/LmJvcmRlciA9PSBcIm5vbmVcIil7XG4gICAgICB0aGlzLnNpZGVCYXJTdHlsZSA9IHtib3JkZXJSaWdodDp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyfVxuICAgICAgXG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUb0V2ZW50cygpO1xuICB9XG5cbiAgLy8gc3Vic2NyaWJlIHRvIGdsb2JhbCBldmVudHNcbiAgc3Vic2NyaWJlVG9FdmVudHMoKSB7XG4gICAgdGhpcy5jY1VzZXJCbG9ja2VkID0gQ29tZXRDaGF0VXNlckV2ZW50cy5jY1VzZXJCbG9ja2VkLnN1YnNjcmliZSgodXNlcjpDb21ldENoYXQuVXNlcikgPT4ge1xuICAgICAgIGlmKHRoaXMudXNlciAmJiB1c2VyLmdldFVpZCgpID09IHRoaXMudXNlci5nZXRVaWQoKSl7XG4gICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY1VzZXJVbkJsb2NrZWQgPSBDb21ldENoYXRVc2VyRXZlbnRzLmNjVXNlclVuYmxvY2tlZC5zdWJzY3JpYmUoKHVzZXI6Q29tZXRDaGF0LlVzZXIpID0+IHtcbiAgICAgIGlmKHRoaXMudXNlciAmJiB1c2VyLmdldFVpZCgpID09IHRoaXMudXNlci5nZXRVaWQoKSl7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG5cbiAgfVxuICAvLyB1bnN1YnNjcmliZSB0byBzdWJzY3JpYmVkIGV2ZW50cy5cbiAgdW5zdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICB0aGlzLmNjVXNlckJsb2NrZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jY1VzZXJVbkJsb2NrZWQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgZW1wdHlNZXNzYWdlU3R5bGUgPSAoKT0+e1xuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYmFja2dyb3VuZCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGhlaWdodDp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuaGVpZ2h0LFxuICAgICAgd2lkdGg6YGNhbGMoJHt0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUud2lkdGh9IC0gMjgwcHgpYCxcbiAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgIH1cbiAgfVxuICB1c2Vyc1dyYXBwZXJTdHlsZXMgPSAgKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IHRoaXMudXNlcnNXaXRoTWVzc2FnZXNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLndpZHRoLFxuICAgICAgYm9yZGVyOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLmJhY2tncm91bmQgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1tZXNzYWdlc19fd3JhcHBlclwiIFtuZ1N0eWxlXT1cInVzZXJzV3JhcHBlclN0eWxlcygpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy13aXRoLW1lc3NhZ2VzX19zaWRlYmFyXCIgW25nQ2xhc3NdPVwie21vYmlsZSA6IGlzTW9iaWxlVmlld31cIiBbbmdTdHlsZV09XCJzaWRlQmFyU3R5bGVcIj5cbiAgICA8Y29tZXRjaGF0LXVzZXJzXG4gICAgI3VzZXJzUmVmXG4gICAgW2FjdGl2ZVVzZXJdPVwidXNlclwiXG4gICAgW2hpZGVTZWFyY2hdPVwidXNlcnNDb25maWd1cmF0aW9uLmhpZGVTZWFyY2hcIlxuICAgIFtzZWFyY2hJY29uVVJMXT1cInVzZXJzQ29uZmlndXJhdGlvbi5zZWFyY2hJY29uVVJMXCJcbiAgICBbc2VhcmNoUmVxdWVzdEJ1aWxkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnNlYXJjaFJlcXVlc3RCdWlsZGVyXCJcbiAgICBbb25JdGVtQ2xpY2tdPVwidXNlcnNDb25maWd1cmF0aW9uLm9uSXRlbUNsaWNrIHx8IG9uSXRlbUNsaWNrXCJcbiAgICBbdXNlcnNTdHlsZV09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZVwiXG4gICAgW3N1YnRpdGxlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uc3VidGl0bGVWaWV3XCJcbiAgICBbb3B0aW9uc109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ub3B0aW9uc1wiXG4gICAgW3VzZXJzUmVxdWVzdEJ1aWxkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnVzZXJzUmVxdWVzdEJ1aWxkZXJcIlxuICAgIFtlbXB0eVN0YXRlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uZW1wdHlTdGF0ZVZpZXdcIlxuICAgIFtvblNlbGVjdF09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ub25TZWxlY3RcIlxuICAgIFtsb2FkaW5nSWNvblVSTF09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ubG9hZGluZ0ljb25VUkxcIlxuICAgIFtlcnJvclN0YXRlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uZXJyb3JTdGF0ZVZpZXdcIlxuICAgIFtsb2FkaW5nU3RhdGVWaWV3XT1cInVzZXJzQ29uZmlndXJhdGlvbi5sb2FkaW5nU3RhdGVWaWV3XCJcbiAgICBbdGl0bGVBbGlnbm1lbnRdPVwidXNlcnNDb25maWd1cmF0aW9uLnRpdGxlQWxpZ25tZW50XCJcbiAgICBbc2hvd1NlY3Rpb25IZWFkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnNob3dTZWN0aW9uSGVhZGVyXCJcbiAgICBbbGlzdEl0ZW1WaWV3XT1cInVzZXJzQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIlxuICAgIFttZW51XT1cInVzZXJzQ29uZmlndXJhdGlvbi5tZW51XCJcbiAgICBbaGlkZVNlcGFyYXRvcl09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uaGlkZVNlcGFyYXRvclwiXG4gICAgW2hpZGVFcnJvcl09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uaGlkZUVycm9yXCJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uc2VsZWN0aW9uTW9kZVwiXG4gICAgW2xpc3RJdGVtU3R5bGVdPVwidXNlcnNDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIlxuXG4gICAgPjwvY29tZXRjaGF0LXVzZXJzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtbWVzc2FnZXNfX21haW5cIiBbbmdDbGFzc109XCJ7bW9iaWxlIDogaXNNb2JpbGVWaWV3fVwiICpuZ0lmPVwidXNlclwiPlxuICAgIDwhLS1NZXNzYWdlIExpc3QgU2NyZWVuLS0+XG4gICAgPGNvbWV0Y2hhdC1tZXNzYWdlc1xuICAgICNtZXNzYWdlc1JlZlxuICAgIFt1c2VyXT1cInVzZXIhXCJcbiAgICBbbWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb25dPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uXCJcbiAgICBbbWVzc2FnZUxpc3RDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb25cIlxuICAgIFttZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXCJcbiAgICBbbWVzc2FnZXNTdHlsZV09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZVwiXG4gICAgW2N1c3RvbVNvdW5kRm9ySW5jb21pbmdNZXNzYWdlc109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uY3VzdG9tU291bmRGb3JJbmNvbWluZ01lc3NhZ2VzXCJcbiAgICBbY3VzdG9tU291bmRGb3JPdXRnb2luZ01lc3NhZ2VzXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5jdXN0b21Tb3VuZEZvck91dGdvaW5nTWVzc2FnZXNcIlxuICAgIFtkZXRhaWxzQ29uZmlndXJhdGlvbl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb25cIlxuICAgIFtkaXNhYmxlU291bmRGb3JNZXNzYWdlc109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGlzYWJsZVNvdW5kRm9yTWVzc2FnZXNcIlxuICAgIFtkaXNhYmxlVHlwaW5nXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kaXNhYmxlVHlwaW5nXCJcbiAgICBbaGlkZU1lc3NhZ2VDb21wb3Nlcl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uaGlkZU1lc3NhZ2VDb21wb3NlclwiXG4gICAgW2hpZGVNZXNzYWdlSGVhZGVyXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5oaWRlTWVzc2FnZUhlYWRlclwiXG4gICAgW21lc3NhZ2VDb21wb3NlclZpZXddPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VDb21wb3NlclZpZXdcIlxuICAgIFttZXNzYWdlSGVhZGVyVmlld109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlclZpZXdcIlxuICAgIFttZXNzYWdlTGlzdFZpZXddPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Vmlld1wiXG4gICAgPlxuICAgIDwvY29tZXRjaGF0LW1lc3NhZ2VzPlxuICAgIDwhLS1NZXNzYWdlIExpc3QgU2NyZWVuIEVORFMtLT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy1kZWNvcmF0b3JfX21lc3NhZ2UtLWVtcHR5XCIgKm5nSWY9XCIhdXNlclwiIFtuZ1N0eWxlXT1cImVtcHR5TWVzc2FnZVN0eWxlKClcIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIm1lc3NhZ2VUZXh0XCIgW2xhYmVsU3R5bGVdPVwibGFiZWxTdHlsZVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICAgPC9kaXY+XG48L2Rpdj4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRVc2Vyc1dpdGhNZXNzYWdlcy9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzL2NvbWV0Y2hhdC11c2Vycy13aXRoLW1lc3NhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDdEosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzNELE9BQU8sMkJBQTJCLENBQUE7QUFHbEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUNyRzs7Ozs7Ozs7RUFRQztBQU9ILE1BQU0sT0FBTyxtQ0FBbUM7SUFrQzlDLFlBQW9CLFVBQXNCLEVBQVMsR0FBc0IsRUFBUyxZQUFrQztRQUFoRyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBc0I7UUE3QjNHLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdC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QUFDO0lBQ3RDLENBQUM7O2lJQXRKVSxtQ0FBbUM7cUhBQW5DLG1DQUFtQyxtaEJDeEJoRCxnakdBd0RNOzRGRGhDTyxtQ0FBbUM7a0JBTi9DLFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNO3FLQUlMLE9BQU87c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDSyxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2xDLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksc0JBQXNCO3NCQUEvQixLQUFLO2dCQU1HLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gXCJAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHRcIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdE1lc3NhZ2VzL2NvbWV0Y2hhdC1tZXNzYWdlcy9jb21ldGNoYXQtbWVzc2FnZXMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRDb252ZXJzYXRpb25zQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdENvbnZlcnNhdGlvbnMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMuY29tcG9uZW50XCI7XG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IGxvY2FsaXplLCBDb21ldENoYXRUaGVtZSwgZm9udEhlbHBlciwgQ29tZXRDaGF0VXNlckV2ZW50cyB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlc1wiO1xuaW1wb3J0IHsgV2l0aE1lc3NhZ2VzU3R5bGUsIE1lc3NhZ2VzQ29uZmlndXJhdGlvbiwgVXNlcnNDb25maWd1cmF0aW9uIH0gZnJvbSBcIkBjb21ldGNoYXQvdWlraXQtc2hhcmVkXCI7XG4gIC8qKlxuICpcbiAqIENvbWV0Q2hhdFVzZXJzV2l0aE1lc3NhZ2VzQ29tcG9uZW50IGlzIGEgd3JhcHBlciBjb21wb25lbnQgZm9yIENvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50IGFuZCBDb21ldENoYXRDb252ZXJzYXRpb25zIGNvbXBvbmVudCB0byBzaG93IGNoYXRzIGFuZCBtZXNzYWdlcyBpbiBvbmUgc2NyZWVuXG4gKlxuICogQHZlcnNpb24gMS4wLjBcbiAqIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuICogQGNvcHlyaWdodCDCqSAyMDIyIENvbWV0Q2hhdCBJbmMuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtdXNlcnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LXVzZXJzLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRVc2Vyc1dpdGhNZXNzYWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLy8gdGFraW5nIHJlZmVyZW5jZSBvZiBjb252ZXJzYXRpb25Db21wb25lbnQgYW5kIE1lc3NhZ2VzQ29tcG9uZW50XG4gIEBWaWV3Q2hpbGQoXCJ1c2Vyc1JlZlwiLCB7IHN0YXRpYzogZmFsc2UgfSkgdXNlclJlZiE6IENvbWV0Q2hhdENvbnZlcnNhdGlvbnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoXCJtZXNzYWdlc1JlZlwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbWVzc2FnZUxpc3RSZWYhOiBDb21ldENoYXRNZXNzYWdlc0NvbXBvbmVudDtcbiAgQElucHV0KCkgdXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIk5PX1VTRVJTX1NFTEVDVEVEXCIpO1xuICBASW5wdXQoKSAgdXNlcnNXaXRoTWVzc2FnZXNTdHlsZTogV2l0aE1lc3NhZ2VzU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgXG4gIH07XG4gIEBJbnB1dCgpIG1lc3NhZ2VzQ29uZmlndXJhdGlvbjogTWVzc2FnZXNDb25maWd1cmF0aW9uID0gbmV3IE1lc3NhZ2VzQ29uZmlndXJhdGlvbih7fSk7XG4gIEBJbnB1dCgpIHVzZXJzQ29uZmlndXJhdGlvbjogVXNlcnNDb25maWd1cmF0aW9uID0gbmV3IFVzZXJzQ29uZmlndXJhdGlvbih7fSk7XG4gIEBJbnB1dCgpIG9uRXJyb3I6KChlcnJvcjpDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKT0+dm9pZCApIHwgbnVsbD0gKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT57XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gIH1cbiAgIHRoZW1lOiBDb21ldENoYXRUaGVtZSA9IG5ldyBDb21ldENoYXRUaGVtZSh7fSk7XG4gICAgLyoqXG4gICAgICogUHJvcGVydGllcyBmb3IgaW50ZXJuYWwgdXNlXG4gICAgICovXG4gIHB1YmxpYyBsb2dnZWRJblVzZXIhOiBDb21ldENoYXQuVXNlciB8IG51bGw7XG4gIGxhYmVsU3R5bGU6YW55ID0ge1xuICAgIGJhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLFxuICAgIHRleHRGb250OlwiNzAwIDIycHggSW50ZXJcIixcbiAgICB0ZXh0Q29sb3I6XCJyZ2JhKDIwLCAyMCwgMjAsIDAuMzMpXCJcbiAgfVxuICAgICAvKipcbiAgICAgKiBFdmVudHNcbiAgICAgKi9cbiAgY2NVc2VyQmxvY2tlZCE6U3Vic2NyaXB0aW9uO1xuICBjY1VzZXJVbkJsb2NrZWQhOlN1YnNjcmlwdGlvbjtcbiAgc2lkZUJhclN0eWxlOmFueSA9IHt9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYscHJpdmF0ZSB0aGVtZVNlcnZpY2U6Q29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7XG4gICB9XG4gICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpXG4gICAgICB9XG4gICAgICB1cGRhdGVCYWNrZHJvcEhlaWdodCgpe1xuICAgICAgICBjb25zdCBkaXZIZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGRpdldpZHRoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgIGxldCBiYWNrZHJvcFN0eWxlID0gIHtcbiAgICAgICAgICBoZWlnaHQ6ZGl2SGVpZ2h0ICsgXCJweFwiLFxuICAgICAgICAgIHdpZHRoOmRpdldpZHRoICsgXCJweFwiLFxuICAgICAgICAgIGJhY2tncm91bmQ6XCJyZ2JhKDAsIDAsIDAsIDAuNSlcIixcbiAgICAgICAgICBwb3NpdGlvbjpcImZpeGVkXCJcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IGJhY2tkcm9wU3R5bGVcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IGJhY2tkcm9wU3R5bGVcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlID0gYmFja2Ryb3BTdHlsZVxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5ncm91cE1lbWJlcnNDb25maWd1cmF0aW9uLmJhY2tkcm9wU3R5bGUgPSBiYWNrZHJvcFN0eWxlXG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlc1tcImlzTW9iaWxlVmlld1wiXSl7XG4gICAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvbkNvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuaGVpZ2h0ID0gXCIxMDAlXCJcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RDb25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvbkNvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUud2lkdGggPSBcIjEwMCVcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5oaWRlQmFja0J1dHRvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbiA9IHsuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbn1cbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uIH1cblxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIXRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25Db25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmhlaWdodCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uQ29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS53aWR0aCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCAxMDBweFwiXG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uLmhpZGVCYWNrQnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb259XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uID0geyAuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbiB9XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpXG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuICBvbkJhY2sgPSAoKT0+e1xuICAgIHRoaXMudXNlciA9IG51bGxcbiAgfVxuICAgb25JdGVtQ2xpY2s6ICgodXNlcjpDb21ldENoYXQuVXNlcik9PnZvaWQpID0gKHVzZXI6Q29tZXRDaGF0LlVzZXIpPT57XG4gICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgfTtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRXaXRoTWVzc2FnZXNTdHlsZSgpXG4gICAgaWYoIXRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uLm9uQmFjayl7XG4gICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5vbkJhY2sgPSB0aGlzLm9uQmFja1xuICAgIH1cbiAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKCk7XG4gICAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgICAgLnRoZW4oKHVzZXI6Q29tZXRDaGF0LlVzZXIgfCBudWxsKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgICBpZih0aGlzLm9uRXJyb3Ipe1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgfVxuICBzZXRXaXRoTWVzc2FnZXNTdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6V2l0aE1lc3NhZ2VzU3R5bGUgPSBuZXcgV2l0aE1lc3NhZ2VzU3R5bGUoe1xuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCl9YCxcbiAgICAgIG1lc3NhZ2VUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBtZXNzYWdlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgIH0pXG4gICAgdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlID0ge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4udGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlXG4gICAgfVxuICAgIHRoaXMubGFiZWxTdHlsZS50ZXh0Rm9udCA9IHRoaXMudXNlcnNXaXRoTWVzc2FnZXNTdHlsZS5tZXNzYWdlVGV4dEZvbnRcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLm1lc3NhZ2VUZXh0Q29sb3I7XG4gICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZS5ib3JkZXIgPSAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZS5ib3JkZXIgPz8gIFwibm9uZVwiXG4gICAgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZS5ib3JkZXIgPSAgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZS5ib3JkZXIgPz8gIFwibm9uZVwiXG4gICAgaWYoIXRoaXMudXNlcnNDb25maWd1cmF0aW9uPy51c2Vyc1N0eWxlPy5ib3JkZXIgfHwgdGhpcy51c2Vyc0NvbmZpZ3VyYXRpb24/LnVzZXJzU3R5bGU/LmJvcmRlciA9PSBcIm5vbmVcIil7XG4gICAgICB0aGlzLnNpZGVCYXJTdHlsZSA9IHtib3JkZXJSaWdodDp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyfVxuICAgICAgXG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUb0V2ZW50cygpO1xuICB9XG5cbiAgLy8gc3Vic2NyaWJlIHRvIGdsb2JhbCBldmVudHNcbiAgc3Vic2NyaWJlVG9FdmVudHMoKSB7XG4gICAgdGhpcy5jY1VzZXJCbG9ja2VkID0gQ29tZXRDaGF0VXNlckV2ZW50cy5jY1VzZXJCbG9ja2VkLnN1YnNjcmliZSgodXNlcjpDb21ldENoYXQuVXNlcikgPT4ge1xuICAgICAgIGlmKHRoaXMudXNlciAmJiB1c2VyLmdldFVpZCgpID09IHRoaXMudXNlci5nZXRVaWQoKSl7XG4gICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY1VzZXJVbkJsb2NrZWQgPSBDb21ldENoYXRVc2VyRXZlbnRzLmNjVXNlclVuYmxvY2tlZC5zdWJzY3JpYmUoKHVzZXI6Q29tZXRDaGF0LlVzZXIpID0+IHtcbiAgICAgIGlmKHRoaXMudXNlciAmJiB1c2VyLmdldFVpZCgpID09IHRoaXMudXNlci5nZXRVaWQoKSl7XG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG5cbiAgfVxuICAvLyB1bnN1YnNjcmliZSB0byBzdWJzY3JpYmVkIGV2ZW50cy5cbiAgdW5zdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICB0aGlzLmNjVXNlckJsb2NrZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jY1VzZXJVbkJsb2NrZWQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbiAgZW1wdHlNZXNzYWdlU3R5bGUgPSAoKT0+e1xuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYmFja2dyb3VuZCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGhlaWdodDp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuaGVpZ2h0LFxuICAgICAgd2lkdGg6YGNhbGMoJHt0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUud2lkdGh9IC0gMjgwcHgpYCxcbiAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgIGJvcmRlclJhZGl1czp0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgIH1cbiAgfVxuICB1c2Vyc1dyYXBwZXJTdHlsZXMgPSAgKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IHRoaXMudXNlcnNXaXRoTWVzc2FnZXNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLndpZHRoLFxuICAgICAgYm9yZGVyOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLnVzZXJzV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy51c2Vyc1dpdGhNZXNzYWdlc1N0eWxlLmJhY2tncm91bmQgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1tZXNzYWdlc19fd3JhcHBlclwiIFtuZ1N0eWxlXT1cInVzZXJzV3JhcHBlclN0eWxlcygpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy13aXRoLW1lc3NhZ2VzX19zaWRlYmFyXCIgW25nQ2xhc3NdPVwie21vYmlsZSA6IGlzTW9iaWxlVmlld31cIiBbbmdTdHlsZV09XCJzaWRlQmFyU3R5bGVcIj5cbiAgICA8Y29tZXRjaGF0LXVzZXJzXG4gICAgI3VzZXJzUmVmXG4gICAgW2FjdGl2ZVVzZXJdPVwidXNlclwiXG4gICAgW2hpZGVTZWFyY2hdPVwidXNlcnNDb25maWd1cmF0aW9uLmhpZGVTZWFyY2hcIlxuICAgIFtzZWFyY2hJY29uVVJMXT1cInVzZXJzQ29uZmlndXJhdGlvbi5zZWFyY2hJY29uVVJMXCJcbiAgICBbc2VhcmNoUmVxdWVzdEJ1aWxkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnNlYXJjaFJlcXVlc3RCdWlsZGVyXCJcbiAgICBbb25JdGVtQ2xpY2tdPVwidXNlcnNDb25maWd1cmF0aW9uLm9uSXRlbUNsaWNrIHx8IG9uSXRlbUNsaWNrXCJcbiAgICBbdXNlcnNTdHlsZV09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24udXNlcnNTdHlsZVwiXG4gICAgW3N1YnRpdGxlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uc3VidGl0bGVWaWV3XCJcbiAgICBbb3B0aW9uc109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ub3B0aW9uc1wiXG4gICAgW3VzZXJzUmVxdWVzdEJ1aWxkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnVzZXJzUmVxdWVzdEJ1aWxkZXJcIlxuICAgIFtlbXB0eVN0YXRlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uZW1wdHlTdGF0ZVZpZXdcIlxuICAgIFtvblNlbGVjdF09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ub25TZWxlY3RcIlxuICAgIFtsb2FkaW5nSWNvblVSTF09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24ubG9hZGluZ0ljb25VUkxcIlxuICAgIFtlcnJvclN0YXRlVmlld109XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uZXJyb3JTdGF0ZVZpZXdcIlxuICAgIFtsb2FkaW5nU3RhdGVWaWV3XT1cInVzZXJzQ29uZmlndXJhdGlvbi5sb2FkaW5nU3RhdGVWaWV3XCJcbiAgICBbdGl0bGVBbGlnbm1lbnRdPVwidXNlcnNDb25maWd1cmF0aW9uLnRpdGxlQWxpZ25tZW50XCJcbiAgICBbc2hvd1NlY3Rpb25IZWFkZXJdPVwidXNlcnNDb25maWd1cmF0aW9uLnNob3dTZWN0aW9uSGVhZGVyXCJcbiAgICBbbGlzdEl0ZW1WaWV3XT1cInVzZXJzQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIlxuICAgIFttZW51XT1cInVzZXJzQ29uZmlndXJhdGlvbi5tZW51XCJcbiAgICBbaGlkZVNlcGFyYXRvcl09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uaGlkZVNlcGFyYXRvclwiXG4gICAgW2hpZGVFcnJvcl09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uaGlkZUVycm9yXCJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJ1c2Vyc0NvbmZpZ3VyYXRpb24uc2VsZWN0aW9uTW9kZVwiXG4gICAgW2xpc3RJdGVtU3R5bGVdPVwidXNlcnNDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIlxuXG4gICAgPjwvY29tZXRjaGF0LXVzZXJzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtbWVzc2FnZXNfX21haW5cIiBbbmdDbGFzc109XCJ7bW9iaWxlIDogaXNNb2JpbGVWaWV3fVwiICpuZ0lmPVwidXNlclwiPlxuICAgIDwhLS1NZXNzYWdlIExpc3QgU2NyZWVuLS0+XG4gICAgPGNvbWV0Y2hhdC1tZXNzYWdlc1xuICAgICNtZXNzYWdlc1JlZlxuICAgIFt1c2VyXT1cInVzZXIhXCJcbiAgICBbbWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb25dPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uXCJcbiAgICBbbWVzc2FnZUxpc3RDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb25cIlxuICAgIFttZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXCJcbiAgICBbbWVzc2FnZXNTdHlsZV09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZVwiXG4gICAgW2N1c3RvbVNvdW5kRm9ySW5jb21pbmdNZXNzYWdlc109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uY3VzdG9tU291bmRGb3JJbmNvbWluZ01lc3NhZ2VzXCJcbiAgICBbY3VzdG9tU291bmRGb3JPdXRnb2luZ01lc3NhZ2VzXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5jdXN0b21Tb3VuZEZvck91dGdvaW5nTWVzc2FnZXNcIlxuICAgIFtkZXRhaWxzQ29uZmlndXJhdGlvbl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb25cIlxuICAgIFtkaXNhYmxlU291bmRGb3JNZXNzYWdlc109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGlzYWJsZVNvdW5kRm9yTWVzc2FnZXNcIlxuICAgIFtkaXNhYmxlVHlwaW5nXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kaXNhYmxlVHlwaW5nXCJcbiAgICBbaGlkZU1lc3NhZ2VDb21wb3Nlcl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uaGlkZU1lc3NhZ2VDb21wb3NlclwiXG4gICAgW2hpZGVNZXNzYWdlSGVhZGVyXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5oaWRlTWVzc2FnZUhlYWRlclwiXG4gICAgW21lc3NhZ2VDb21wb3NlclZpZXddPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VDb21wb3NlclZpZXdcIlxuICAgIFttZXNzYWdlSGVhZGVyVmlld109XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlclZpZXdcIlxuICAgIFttZXNzYWdlTGlzdFZpZXddPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Vmlld1wiXG4gICAgW2hpZGVEZXRhaWxzXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5oaWRlRGV0YWlscyFcIlxuICAgID5cbiAgICA8L2NvbWV0Y2hhdC1tZXNzYWdlcz5cbiAgICA8IS0tTWVzc2FnZSBMaXN0IFNjcmVlbiBFTkRTLS0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtZGVjb3JhdG9yX19tZXNzYWdlLS1lbXB0eVwiICpuZ0lmPVwiIXVzZXJcIiBbbmdTdHlsZV09XCJlbXB0eU1lc3NhZ2VTdHlsZSgpXCI+XG4gICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJtZXNzYWdlVGV4dFwiIFtsYWJlbFN0eWxlXT1cImxhYmVsU3R5bGVcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgIDwvZGl2PlxuPC9kaXY+Il19