@cometchat/chat-uikit-angular 4.3.14 → 4.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.d.ts +21 -4
- package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +5 -1
- package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +10 -2
- package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +4 -0
- package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +4 -0
- package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +3 -0
- package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +10 -1
- package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +5 -2
- package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +8 -1
- package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.mjs +31 -9
- package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.mjs +3 -3
- package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +9 -3
- package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +61 -38
- package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +9 -9
- package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +1 -1
- package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +19 -3
- package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +24 -11
- package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +19 -4
- package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +19 -3
- package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +46 -22
- package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +3 -3
- package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +21 -6
- package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +25 -5
- package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +3 -3
- package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +2 -2
- package/examples/sample-app/README.md +8 -4
- package/fesm2015/cometchat-chat-uikit-angular.mjs +294 -121
- package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/fesm2020/cometchat-chat-uikit-angular.mjs +278 -108
- package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -37,6 +37,10 @@ export class CometChatCallLogDetailsComponent {
|
|
|
37
37
|
height: "28px",
|
|
38
38
|
border: "none",
|
|
39
39
|
};
|
|
40
|
+
this.labelStyle = {
|
|
41
|
+
textFont: '600 22px sans-serif, Inter',
|
|
42
|
+
textColor: 'rgb(20, 20, 20)'
|
|
43
|
+
};
|
|
40
44
|
this.callDetailsStyle = {
|
|
41
45
|
width: "100%",
|
|
42
46
|
height: "100%",
|
|
@@ -63,11 +67,6 @@ export class CometChatCallLogDetailsComponent {
|
|
|
63
67
|
this.showParticipantsList = false;
|
|
64
68
|
this.showCallRecordingList = false;
|
|
65
69
|
this.showCallHistory = false;
|
|
66
|
-
this.dividerStyle = {
|
|
67
|
-
background: "rgb(222 222 222 / 46%)",
|
|
68
|
-
height: "1px",
|
|
69
|
-
width: "100%",
|
|
70
|
-
};
|
|
71
70
|
this.userListenerId = "userlist_" + new Date().getTime();
|
|
72
71
|
this.limit = 5;
|
|
73
72
|
this.onItemClick = (call) => {
|
|
@@ -126,6 +125,27 @@ export class CometChatCallLogDetailsComponent {
|
|
|
126
125
|
border: this.callDetailsStyle.border,
|
|
127
126
|
borderRadius: this.callDetailsStyle.borderRadius,
|
|
128
127
|
background: this.callDetailsStyle.background,
|
|
128
|
+
padding: '16px',
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
this.profileContainerStyle = () => {
|
|
132
|
+
return {
|
|
133
|
+
height: "auto",
|
|
134
|
+
width: "100%",
|
|
135
|
+
minHeight: "150px",
|
|
136
|
+
padding: "16px",
|
|
137
|
+
display: "flex",
|
|
138
|
+
flexDirection: "column",
|
|
139
|
+
justifyContent: "center",
|
|
140
|
+
alignItems: "center",
|
|
141
|
+
boxSizing: "border-box",
|
|
142
|
+
gap: "8px",
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
this.getTailViewStyle = () => {
|
|
146
|
+
return {
|
|
147
|
+
font: fontHelper(this.themeService?.theme.typography.text3),
|
|
148
|
+
color: this.themeService.theme.palette.getAccent600()
|
|
129
149
|
};
|
|
130
150
|
};
|
|
131
151
|
this.backButtonStyle = () => {
|
|
@@ -287,7 +307,7 @@ export class CometChatCallLogDetailsComponent {
|
|
|
287
307
|
width: "100%",
|
|
288
308
|
background: option?.backgroundColor ||
|
|
289
309
|
this.themeService.theme.palette.getBackground(),
|
|
290
|
-
borderRadius: "
|
|
310
|
+
borderRadius: "8px",
|
|
291
311
|
titleFont: option?.titleFont ||
|
|
292
312
|
fontHelper(this.themeService.theme.typography.title2),
|
|
293
313
|
border: "none",
|
|
@@ -297,10 +317,10 @@ export class CometChatCallLogDetailsComponent {
|
|
|
297
317
|
}
|
|
298
318
|
}
|
|
299
319
|
CometChatCallLogDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallLogDetailsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
300
|
-
CometChatCallLogDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallLogDetailsComponent, selector: "cometchat-call-log-details", inputs: { call: "call", group: "group", user: "user", title: "title", onBackClick: "onBackClick", hideProfile: "hideProfile", subtitleView: "subtitleView", customProfileView: "customProfileView", backIconUrl: "backIconUrl", greaterThanIconURL: "greaterThanIconURL", callButtonsConfiguration: "callButtonsConfiguration", callLogParticipantsConfiguration: "callLogParticipantsConfiguration", callLogHistoryConfiguration: "callLogHistoryConfiguration", callLogRecordingsConfiguration: "callLogRecordingsConfiguration", onError: "onError", datePattern: "datePattern", datePattern2: "datePattern2", data: "data", avatarStyle: "avatarStyle", callDetailsStyle: "callDetailsStyle", listItemStyle: "listItemStyle", dateStyle: "dateStyle", callButtonsStyle: "callButtonsStyle" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-call-log-details__wrapper\" *ngIf=\"user || group\" [ngStyle]=\"wrapperStyle()\">\n\n <div class=\"cc-call-log-details__header\"\n *ngIf=\"onBackClick && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n <cometchat-button [iconURL]=\"backIconUrl\" class=\"cc-call-log-details__close-button\" [buttonStyle]=\"backButtonStyle()\"\n (cc-button-clicked)=\"onBackClick()\"></cometchat-button>\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\"></cometchat-label>\n </div>\n\n <div class=\"cc-call-log-details\">\n <div class=\"cc-call-log-details__profile\"\n *ngIf=\"!hideProfile && showCallLogDetailOptionList && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n\n\n <div class=\" cc-call-log-details__default-profile\" *ngIf=\"!customProfileView;else listitem\">\n <cometchat-avatar [name]=\"user?.getName() ?? group?.getName()\" [avatarStyle]=\"avatarStyle\"\n [image]=\"user?.getAvatar() ?? group?.getIcon()\">\n </cometchat-avatar>\n\n <cometchat-label [text]=\"user?.getName() ?? this.group?.getName()\"></cometchat-label>\n </div>\n </div>\n <div class=\"cc-call-log-details__section-list\"\n *ngIf=\"showCallLogDetailOptionList && defaultTemplate && defaultTemplate.length > 0\">\n <div class=\"cc-call-log-details__section\" *ngFor=\"let item of defaultTemplate\">\n <div class=\"cc-call-log-details__section-separator\" *ngIf=\"item.title\">\n <cometchat-label [text]=\"item.title\"></cometchat-label>\n </div>\n <div class=\"cc-call-log-details__options-wrapper\" *ngIf=\"getTemplateOptions(item)\">\n <div class=\"cc-call-log-details__options\" *ngFor=\"let option of getTemplateOptions(item); trackBy: trackByFnOption \">\n <div class=\"cc-call-log-details__option\" *ngIf=\"!getCustomOptionView(option);else customView\">\n <div class=\"cc-call-log-details__option-element\">\n\n <div class=\"cc-call-log-details__calling-default-option\" *ngIf=\"option.id=='calls'\">\n\n <cometchat-call-buttons [user]=\"user\" [group]=\"group\"\n [callButtonsStyle]=\"callButtonsConfiguration.callButtonsStyle\"\n [onVideoCallClick]=\"callButtonsConfiguration.onVideoCallClick\"\n [onVoiceCallClick]=\"callButtonsConfiguration.onVoiceCallClick\"\n [videoCallIconURL]=\"callButtonsConfiguration.videoCallIconURL\"\n [voiceCallIconURL]=\"callButtonsConfiguration.voiceCallIconURL\"></cometchat-call-buttons>\n </div>\n <cometchat-list-item *ngIf=\"option.id==='callStatus'\" [listItemStyle]=\"getListItemStyle(option)\"\n [hideSeparator]=\"true\">\n <div class=\"cc-call-log-details__call-Status\" slot=\"subtitleView\" >\n <div *ngIf=\"!subtitleView; else subtitle\" style=\"width: 100%;\">\n <div> <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern2\">\n </cometchat-date></div>\n\n <div\n class=\"cc-call-log-details__call-Status__subTitle\">\n <div>\n\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern\">\n </cometchat-date>\n <cometchat-label [text]=\"getSubtitle(call)\" [labelStyle]=\"subtitleStyle(option)\">\n </cometchat-label>\n </div>\n <div class=\"cc-call-log-details__call-Status__tailview\"> {{ getTailView(call?.getTotalDurationInMinutes()!) }}\n </div>\n\n </div>\n\n\n </div>\n\n <ng-template #subtitle>\n <ng-container *ngTemplateOutlet=\"subtitleView;context:{ $implicit: user ?? group }\">\n </ng-container>\n </ng-template>\n </div>\n\n\n </cometchat-list-item>\n <cometchat-list-item *ngIf=\"option.id!=='calls' && option.id!=='callStatus' \"\n (cc-listitem-clicked)=\"onOptionClick(option)\" [listItemStyle]=\"getListItemStyle(option)\"\n [title]=\"option.title\" [hideSeparator]=\"true\">\n \n <div slot=\"tailView\" class=\"cc-call-log-details__secondary-view__tail-view\"\n >\n {{option.tail}}\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"greaterThanIconURL\"></cometchat-icon>\n </div>\n\n \n\n </cometchat-list-item>\n\n </div>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n <ng-template #customView>\n <ng-container *ngTemplateOutlet=\"getCustomOptionView(option)\">\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"showParticipantsList || showCallRecordingList || showCallHistory\" style=\" height: 100%;\">\n\n <div *ngIf=\"showParticipantsList\" style=\"height: 100%;\">\n <cometchat-call-log-participants [call]=\"call\"\n [onBackClick]=\"callLogParticipantsConfiguration.onBackClick || handlePageOnBackClick\"\n [backIconUrl]=\"callLogParticipantsConfiguration.backIconUrl || backIconUrl\"\n [avatarStyle]=\"callLogParticipantsConfiguration.avatarStyle\"\n [onItemClick]=\"callLogParticipantsConfiguration.onItemClick!\"\n [datePattern]=\"callLogParticipantsConfiguration.datePattern\"\n [subtitleView]=\"callLogParticipantsConfiguration.subtitleView\"\n [listItemView]=\"callLogParticipantsConfiguration.listItemView\"\n\n [listItemStyle]=\"callLogParticipantsConfiguration.listItemStyle\" [callLogParticipantsStyle]=\"\n callLogParticipantsConfiguration.callLogParticipantsStyle\"\n \n [tailView]=\"callLogParticipantsConfiguration.tailView\"></cometchat-call-log-participants>\n </div>\n <div *ngIf=\"showCallRecordingList\" style=\"height:100%;\">\n <cometchat-call-log-recordings [call]=\"call\"\n [backIconUrl]=\"callLogRecordingsConfiguration.backIconUrl || backIconUrl\" [onBackClick]=\"\n callLogRecordingsConfiguration.onBackClick || handlePageOnBackClick\n \" [onItemClick]=\"callLogRecordingsConfiguration.onItemClick!\"\n [datePattern]=\"callLogRecordingsConfiguration.datePattern!\"\n [listItemStyle]=\"callLogRecordingsConfiguration.listItemStyle\" callLogRecordingsStyle=\"\n callLogRecordingsConfiguration.callLogRecordingsStyle\n callLogRecordingsConfiguration.hideDownloadButton || false\n \" [onDownloadClick]=\"callLogRecordingsConfiguration.onDownloadClick!\"\n [listItemView]=\"callLogRecordingsConfiguration.listItemView\"\n [subtitleView]=\"callLogRecordingsConfiguration.subtitleView\"\n [tailView]=\"callLogRecordingsConfiguration.tailView\"></cometchat-call-log-recordings>\n </div>\n <div *ngIf=\"showCallHistory\" style=\"height: 100%; \">\n <cometchat-call-log-history [call]=\"call\" [user]=\"user\" [group]=\"group\" [onBackClick]=\"handlePageOnBackClick\"\n [backIconUrl]=\"callLogHistoryConfiguration.backIconUrl || backIconUrl\"\n [emptyStateView]=\"callLogHistoryConfiguration.emptyStateView\"\n [errorStateView]=\"callLogHistoryConfiguration.errorStateView\"\n [loadingIconURL]=\"callLogHistoryConfiguration.loadingIconURL\"\n [loadingStateView]=\"callLogHistoryConfiguration.loadingStateView\"\n [tailView]=\"callLogHistoryConfiguration.tailView\" [callLogRequestBuilder]=\"\n callLogHistoryConfiguration.callLogRequestBuilder\n \" [onItemClick]=\"callLogHistoryConfiguration.onItemClick || onItemClick\" [onBackClick]=\"\n callLogHistoryConfiguration.onBackClick || handlePageOnBackClick\n \" [listItemStyle]=\"callLogHistoryConfiguration.listItemStyle\"\n [datePattern]=\"callLogHistoryConfiguration.datePattern\" [dateSeparatorPattern]=\"\n callLogHistoryConfiguration.dateSeparatorPattern\n \" [callLogHistoryStyle]=\"\n callLogHistoryConfiguration.callLogHistoryStyle\n \" [onError]=\"callLogHistoryConfiguration.onError!\"></cometchat-call-log-history>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<ng-template #listitem>\n <ng-container *ngTemplateOutlet=\"customProfileView\">\n </ng-container>\n</ng-template>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-call-log-details__header{display:flex;gap:10px;align-items:center;height:3%}.cc-call-log-details{height:98%}.cc-call-log-details__profile{display:flex;align-items:center;justify-content:center}.cc-call-log-details__default-profile{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.cc-call-log-details__section{margin:10px 3px 3px}.cc-call-log-details__option{margin-top:5px}.cc-call-log-details__calling-default-option{display:flex;align-items:center;justify-content:center;margin:10px}.cc-call-log-details__call-Status{display:flex;justify-content:space-between}.cc-call-log-details__call-Status__subTitle{display:flex;justify-content:space-between;margin:10px 0;padding-right:8px;width:100%}.cc-call-log-details__call-Status__tailview{color:gray}.cc-call-log-details__secondary-view__tail-view{display:flex;align-items:center;justify-content:center;gap:5px;color:RGBA(20,20,20,.68)}\n"], components: [{ type: i2.CometChatCallButtonsComponent, selector: "cometchat-call-buttons", inputs: ["user", "group", "voiceCallIconURL", "voiceCallIconText", "voiceCallIconHoverText", "videoCallIconURL", "videoCallIconText", "videoCallIconHoverText", "onVoiceCallClick", "onVideoCallClick", "onError", "callButtonsStyle", "outgoingCallConfiguration", "ongoingCallConfiguration"] }, { type: i3.CometChatCallLogParticipantsComponent, selector: "cometchat-call-log-participants", inputs: ["title", "call", "backIconUrl", "onBackClick", "datePattern", "subtitleView", "listItemView", "onError", "hideSeparator", "avatarStyle", "dateStyle", "CallLogParticipantsStyle", "listItemStyle"] }, { type: i4.CometChatCallLogRecordingsComponent, selector: "cometchat-call-log-recordings", inputs: ["title", "call", "onBackClick", "backIconURL", "datePattern", "subtitleView", "listItemView", "downloadIconURL", "onDownloadClick", "hideDownloadButton", "onError", "avatarStyle", "dateStyle", "CallLogRecordingsStyle", "listItemStyle", "options"] }, { type: i5.CometChatCallLogHistoryComponent, selector: "cometchat-call-log-history", inputs: ["user", "group", "title", "emptyStateView", "errorStateView", "loadingStateView", "subtitleView", "listItemView", "menu", "emptyStateText", "errorStateText", "loadingIconURL", "backIconUrl", "onItemClick", "onBackClick", "callLogRequestBuilder", "DateSeparatorPattern", "hideSeparator", "dateSeparatorStyle", "hideError", "onError", "showSectionHeader", "sectionHeaderField", "datePattern", "avatarStyle", "dateStyle", "CallLogHistoryStyle", "listItemStyle"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
320
|
+
CometChatCallLogDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallLogDetailsComponent, selector: "cometchat-call-log-details", inputs: { call: "call", group: "group", user: "user", title: "title", onBackClick: "onBackClick", hideProfile: "hideProfile", subtitleView: "subtitleView", customProfileView: "customProfileView", backIconUrl: "backIconUrl", greaterThanIconURL: "greaterThanIconURL", callButtonsConfiguration: "callButtonsConfiguration", callLogParticipantsConfiguration: "callLogParticipantsConfiguration", callLogHistoryConfiguration: "callLogHistoryConfiguration", callLogRecordingsConfiguration: "callLogRecordingsConfiguration", onError: "onError", datePattern: "datePattern", datePattern2: "datePattern2", data: "data", avatarStyle: "avatarStyle", labelStyle: "labelStyle", callDetailsStyle: "callDetailsStyle", listItemStyle: "listItemStyle", dateStyle: "dateStyle", callButtonsStyle: "callButtonsStyle" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-call-log-details__wrapper\" *ngIf=\"user || group\" [ngStyle]=\"wrapperStyle()\">\n\n <div class=\"cc-call-log-details__header\"\n *ngIf=\"onBackClick && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n <cometchat-button [iconURL]=\"backIconUrl\" class=\"cc-call-log-details__close-button\" [buttonStyle]=\"backButtonStyle()\"\n (cc-button-clicked)=\"onBackClick()\"></cometchat-button>\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\"></cometchat-label>\n </div>\n\n <div class=\"cc-call-log-details\">\n <div class=\"cc-call-log-details__profile\"\n *ngIf=\"!hideProfile && showCallLogDetailOptionList && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n\n\n <div class=\" cc-call-log-details__default-profile\" *ngIf=\"!customProfileView;else listitem\" [ngStyle]=\"profileContainerStyle()\">\n <cometchat-avatar [name]=\"user?.getName() ?? group?.getName()\" [avatarStyle]=\"avatarStyle\"\n [image]=\"user?.getAvatar() ?? group?.getIcon()\">\n </cometchat-avatar>\n\n <cometchat-label [text]=\"user?.getName() ?? this.group?.getName()\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n </div>\n <div class=\"cc-call-log-details__section-list\"\n *ngIf=\"showCallLogDetailOptionList && defaultTemplate && defaultTemplate.length > 0\">\n <div class=\"cc-call-log-details__section\" *ngFor=\"let item of defaultTemplate\">\n <div class=\"cc-call-log-details__section-separator\" *ngIf=\"item.title\">\n <cometchat-label [text]=\"item.title\"></cometchat-label>\n </div>\n <div class=\"cc-call-log-details__options-wrapper\" *ngIf=\"getTemplateOptions(item)\">\n <div class=\"cc-call-log-details__options\" *ngFor=\"let option of getTemplateOptions(item); trackBy: trackByFnOption \">\n <div class=\"cc-call-log-details__option\" *ngIf=\"!getCustomOptionView(option);else customView\">\n <div class=\"cc-call-log-details__option-element\">\n\n <div class=\"cc-call-log-details__calling-default-option\" *ngIf=\"option.id=='calls'\">\n\n <cometchat-call-buttons [user]=\"user\" [group]=\"group\"\n [callButtonsStyle]=\"callButtonsConfiguration.callButtonsStyle\"\n [onVideoCallClick]=\"callButtonsConfiguration.onVideoCallClick\"\n [onVoiceCallClick]=\"callButtonsConfiguration.onVoiceCallClick\"\n [videoCallIconURL]=\"callButtonsConfiguration.videoCallIconURL\"\n [voiceCallIconURL]=\"callButtonsConfiguration.voiceCallIconURL\"></cometchat-call-buttons>\n </div>\n <cometchat-list-item *ngIf=\"option.id==='callStatus'\" [listItemStyle]=\"getListItemStyle(option)\"\n [hideSeparator]=\"true\">\n <div class=\"cc-call-log-details__call-Status\" slot=\"subtitleView\" >\n <div *ngIf=\"!subtitleView; else subtitle\" style=\"width: 100%;\">\n <div> <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern2\">\n </cometchat-date></div>\n\n <div\n class=\"cc-call-log-details__call-Status__subTitle\">\n <div>\n\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern\">\n </cometchat-date>\n <cometchat-label [text]=\"getSubtitle(call)\" [labelStyle]=\"subtitleStyle(option)\">\n </cometchat-label>\n </div>\n <div class=\"cc-call-log-details__call-Status__tailview\" [style]=\"getTailViewStyle()\"> {{ getTailView(call?.getTotalDurationInMinutes()!) }}\n </div>\n\n </div>\n\n\n </div>\n\n <ng-template #subtitle>\n <ng-container *ngTemplateOutlet=\"subtitleView;context:{ $implicit: user ?? group }\">\n </ng-container>\n </ng-template>\n </div>\n\n\n </cometchat-list-item>\n <cometchat-list-item *ngIf=\"option.id!=='calls' && option.id!=='callStatus' \"\n (cc-listitem-clicked)=\"onOptionClick(option)\" [listItemStyle]=\"getListItemStyle(option)\"\n [title]=\"option.title\" [hideSeparator]=\"true\">\n \n <div slot=\"tailView\" class=\"cc-call-log-details__secondary-view__tail-view\" [style]=\"getTailViewStyle()\"\n >\n {{option.tail}}\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"greaterThanIconURL\"></cometchat-icon>\n </div>\n\n \n\n </cometchat-list-item>\n\n </div>\n </div>\n <ng-template #customView>\n <ng-container *ngTemplateOutlet=\"getCustomOptionView(option)\">\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"showParticipantsList || showCallRecordingList || showCallHistory\" style=\" height: 100%;\">\n\n <div *ngIf=\"showParticipantsList\" style=\"height: 100%;\">\n <cometchat-call-log-participants [call]=\"call\"\n [onBackClick]=\"callLogParticipantsConfiguration.onBackClick || handlePageOnBackClick\"\n [backIconUrl]=\"callLogParticipantsConfiguration.backIconUrl || backIconUrl\"\n [avatarStyle]=\"callLogParticipantsConfiguration.avatarStyle\"\n [onItemClick]=\"callLogParticipantsConfiguration.onItemClick!\"\n [datePattern]=\"callLogParticipantsConfiguration.datePattern\"\n [subtitleView]=\"callLogParticipantsConfiguration.subtitleView\"\n [listItemView]=\"callLogParticipantsConfiguration.listItemView\"\n\n [listItemStyle]=\"callLogParticipantsConfiguration.listItemStyle\" [callLogParticipantsStyle]=\"\n callLogParticipantsConfiguration.callLogParticipantsStyle\"\n \n [tailView]=\"callLogParticipantsConfiguration.tailView\"></cometchat-call-log-participants>\n </div>\n <div *ngIf=\"showCallRecordingList\" style=\"height:100%;\">\n <cometchat-call-log-recordings [call]=\"call\"\n [backIconUrl]=\"callLogRecordingsConfiguration.backIconUrl || backIconUrl\" [onBackClick]=\"\n callLogRecordingsConfiguration.onBackClick || handlePageOnBackClick\n \" [onItemClick]=\"callLogRecordingsConfiguration.onItemClick!\"\n [datePattern]=\"callLogRecordingsConfiguration.datePattern!\"\n [listItemStyle]=\"callLogRecordingsConfiguration.listItemStyle\" callLogRecordingsStyle=\"\n callLogRecordingsConfiguration.callLogRecordingsStyle\n callLogRecordingsConfiguration.hideDownloadButton || false\n \" [onDownloadClick]=\"callLogRecordingsConfiguration.onDownloadClick!\"\n [listItemView]=\"callLogRecordingsConfiguration.listItemView\"\n [subtitleView]=\"callLogRecordingsConfiguration.subtitleView\"\n [tailView]=\"callLogRecordingsConfiguration.tailView\"></cometchat-call-log-recordings>\n </div>\n <div *ngIf=\"showCallHistory\" style=\"height: 100%; \">\n <cometchat-call-log-history [call]=\"call\" [user]=\"user\" [group]=\"group\" [onBackClick]=\"handlePageOnBackClick\"\n [backIconUrl]=\"callLogHistoryConfiguration.backIconUrl || backIconUrl\"\n [emptyStateView]=\"callLogHistoryConfiguration.emptyStateView\"\n [errorStateView]=\"callLogHistoryConfiguration.errorStateView\"\n [loadingIconURL]=\"callLogHistoryConfiguration.loadingIconURL\"\n [loadingStateView]=\"callLogHistoryConfiguration.loadingStateView\"\n [tailView]=\"callLogHistoryConfiguration.tailView\" [callLogRequestBuilder]=\"\n callLogHistoryConfiguration.callLogRequestBuilder\n \" [onItemClick]=\"callLogHistoryConfiguration.onItemClick || onItemClick\" [onBackClick]=\"\n callLogHistoryConfiguration.onBackClick || handlePageOnBackClick\n \" [listItemStyle]=\"callLogHistoryConfiguration.listItemStyle\"\n [datePattern]=\"callLogHistoryConfiguration.datePattern\" [dateSeparatorPattern]=\"\n callLogHistoryConfiguration.dateSeparatorPattern\n \" [callLogHistoryStyle]=\"\n callLogHistoryConfiguration.callLogHistoryStyle\n \" [onError]=\"callLogHistoryConfiguration.onError!\"></cometchat-call-log-history>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<ng-template #listitem>\n <ng-container *ngTemplateOutlet=\"customProfileView\">\n </ng-container>\n</ng-template>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-call-log-details__header{display:flex;gap:10px;align-items:center;height:3%}.cc-call-log-details{height:98%}.cc-call-log-details__profile{display:flex;align-items:center;justify-content:center}.cc-call-log-details__default-profile{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.cc-call-log-details__section{margin:10px 3px 3px}.cc-call-log-details__option{margin-top:5px}.cc-call-log-details__calling-default-option{display:flex;align-items:center;justify-content:center;margin:10px}.cc-call-log-details__call-Status{display:flex;justify-content:space-between}.cc-call-log-details__call-Status__subTitle{display:flex;justify-content:space-between;margin:10px 0;padding-right:8px;width:100%}.cc-call-log-details__call-Status__tailview{color:gray}.cc-call-log-details__secondary-view__tail-view{display:flex;align-items:center;justify-content:center;gap:5px;color:RGBA(20,20,20,.68)}\n"], components: [{ type: i2.CometChatCallButtonsComponent, selector: "cometchat-call-buttons", inputs: ["user", "group", "voiceCallIconURL", "voiceCallIconText", "voiceCallIconHoverText", "videoCallIconURL", "videoCallIconText", "videoCallIconHoverText", "onVoiceCallClick", "onVideoCallClick", "onError", "callButtonsStyle", "outgoingCallConfiguration", "ongoingCallConfiguration"] }, { type: i3.CometChatCallLogParticipantsComponent, selector: "cometchat-call-log-participants", inputs: ["title", "call", "backIconUrl", "onBackClick", "datePattern", "subtitleView", "listItemView", "onError", "hideSeparator", "avatarStyle", "dateStyle", "CallLogParticipantsStyle", "listItemStyle"] }, { type: i4.CometChatCallLogRecordingsComponent, selector: "cometchat-call-log-recordings", inputs: ["title", "call", "onBackClick", "backIconURL", "datePattern", "subtitleView", "listItemView", "downloadIconURL", "onDownloadClick", "hideDownloadButton", "onError", "avatarStyle", "dateStyle", "CallLogRecordingsStyle", "listItemStyle", "options"] }, { type: i5.CometChatCallLogHistoryComponent, selector: "cometchat-call-log-history", inputs: ["user", "group", "title", "emptyStateView", "errorStateView", "loadingStateView", "subtitleView", "listItemView", "menu", "emptyStateText", "errorStateText", "loadingIconURL", "backIconUrl", "onItemClick", "onBackClick", "callLogRequestBuilder", "DateSeparatorPattern", "hideSeparator", "dateSeparatorStyle", "hideError", "onError", "showSectionHeader", "sectionHeaderField", "datePattern", "avatarStyle", "dateStyle", "CallLogHistoryStyle", "listItemStyle"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
301
321
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallLogDetailsComponent, decorators: [{
|
|
302
322
|
type: Component,
|
|
303
|
-
args: [{ selector: "cometchat-call-log-details", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-call-log-details__wrapper\" *ngIf=\"user || group\" [ngStyle]=\"wrapperStyle()\">\n\n <div class=\"cc-call-log-details__header\"\n *ngIf=\"onBackClick && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n <cometchat-button [iconURL]=\"backIconUrl\" class=\"cc-call-log-details__close-button\" [buttonStyle]=\"backButtonStyle()\"\n (cc-button-clicked)=\"onBackClick()\"></cometchat-button>\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\"></cometchat-label>\n </div>\n\n <div class=\"cc-call-log-details\">\n <div class=\"cc-call-log-details__profile\"\n *ngIf=\"!hideProfile && showCallLogDetailOptionList && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n\n\n <div class=\" cc-call-log-details__default-profile\" *ngIf=\"!customProfileView;else listitem\">\n <cometchat-avatar [name]=\"user?.getName() ?? group?.getName()\" [avatarStyle]=\"avatarStyle\"\n [image]=\"user?.getAvatar() ?? group?.getIcon()\">\n </cometchat-avatar>\n\n <cometchat-label [text]=\"user?.getName() ?? this.group?.getName()\"></cometchat-label>\n </div>\n </div>\n <div class=\"cc-call-log-details__section-list\"\n *ngIf=\"showCallLogDetailOptionList && defaultTemplate && defaultTemplate.length > 0\">\n <div class=\"cc-call-log-details__section\" *ngFor=\"let item of defaultTemplate\">\n <div class=\"cc-call-log-details__section-separator\" *ngIf=\"item.title\">\n <cometchat-label [text]=\"item.title\"></cometchat-label>\n </div>\n <div class=\"cc-call-log-details__options-wrapper\" *ngIf=\"getTemplateOptions(item)\">\n <div class=\"cc-call-log-details__options\" *ngFor=\"let option of getTemplateOptions(item); trackBy: trackByFnOption \">\n <div class=\"cc-call-log-details__option\" *ngIf=\"!getCustomOptionView(option);else customView\">\n <div class=\"cc-call-log-details__option-element\">\n\n <div class=\"cc-call-log-details__calling-default-option\" *ngIf=\"option.id=='calls'\">\n\n <cometchat-call-buttons [user]=\"user\" [group]=\"group\"\n [callButtonsStyle]=\"callButtonsConfiguration.callButtonsStyle\"\n [onVideoCallClick]=\"callButtonsConfiguration.onVideoCallClick\"\n [onVoiceCallClick]=\"callButtonsConfiguration.onVoiceCallClick\"\n [videoCallIconURL]=\"callButtonsConfiguration.videoCallIconURL\"\n [voiceCallIconURL]=\"callButtonsConfiguration.voiceCallIconURL\"></cometchat-call-buttons>\n </div>\n <cometchat-list-item *ngIf=\"option.id==='callStatus'\" [listItemStyle]=\"getListItemStyle(option)\"\n [hideSeparator]=\"true\">\n <div class=\"cc-call-log-details__call-Status\" slot=\"subtitleView\" >\n <div *ngIf=\"!subtitleView; else subtitle\" style=\"width: 100%;\">\n <div> <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern2\">\n </cometchat-date></div>\n\n <div\n class=\"cc-call-log-details__call-Status__subTitle\">\n <div>\n\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern\">\n </cometchat-date>\n <cometchat-label [text]=\"getSubtitle(call)\" [labelStyle]=\"subtitleStyle(option)\">\n </cometchat-label>\n </div>\n <div class=\"cc-call-log-details__call-Status__tailview\"> {{ getTailView(call?.getTotalDurationInMinutes()!) }}\n </div>\n\n </div>\n\n\n </div>\n\n <ng-template #subtitle>\n <ng-container *ngTemplateOutlet=\"subtitleView;context:{ $implicit: user ?? group }\">\n </ng-container>\n </ng-template>\n </div>\n\n\n </cometchat-list-item>\n <cometchat-list-item *ngIf=\"option.id!=='calls' && option.id!=='callStatus' \"\n (cc-listitem-clicked)=\"onOptionClick(option)\" [listItemStyle]=\"getListItemStyle(option)\"\n [title]=\"option.title\" [hideSeparator]=\"true\">\n \n <div slot=\"tailView\" class=\"cc-call-log-details__secondary-view__tail-view\"\n >\n {{option.tail}}\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"greaterThanIconURL\"></cometchat-icon>\n </div>\n\n \n\n </cometchat-list-item>\n\n </div>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n <ng-template #customView>\n <ng-container *ngTemplateOutlet=\"getCustomOptionView(option)\">\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"showParticipantsList || showCallRecordingList || showCallHistory\" style=\" height: 100%;\">\n\n <div *ngIf=\"showParticipantsList\" style=\"height: 100%;\">\n <cometchat-call-log-participants [call]=\"call\"\n [onBackClick]=\"callLogParticipantsConfiguration.onBackClick || handlePageOnBackClick\"\n [backIconUrl]=\"callLogParticipantsConfiguration.backIconUrl || backIconUrl\"\n [avatarStyle]=\"callLogParticipantsConfiguration.avatarStyle\"\n [onItemClick]=\"callLogParticipantsConfiguration.onItemClick!\"\n [datePattern]=\"callLogParticipantsConfiguration.datePattern\"\n [subtitleView]=\"callLogParticipantsConfiguration.subtitleView\"\n [listItemView]=\"callLogParticipantsConfiguration.listItemView\"\n\n [listItemStyle]=\"callLogParticipantsConfiguration.listItemStyle\" [callLogParticipantsStyle]=\"\n callLogParticipantsConfiguration.callLogParticipantsStyle\"\n \n [tailView]=\"callLogParticipantsConfiguration.tailView\"></cometchat-call-log-participants>\n </div>\n <div *ngIf=\"showCallRecordingList\" style=\"height:100%;\">\n <cometchat-call-log-recordings [call]=\"call\"\n [backIconUrl]=\"callLogRecordingsConfiguration.backIconUrl || backIconUrl\" [onBackClick]=\"\n callLogRecordingsConfiguration.onBackClick || handlePageOnBackClick\n \" [onItemClick]=\"callLogRecordingsConfiguration.onItemClick!\"\n [datePattern]=\"callLogRecordingsConfiguration.datePattern!\"\n [listItemStyle]=\"callLogRecordingsConfiguration.listItemStyle\" callLogRecordingsStyle=\"\n callLogRecordingsConfiguration.callLogRecordingsStyle\n callLogRecordingsConfiguration.hideDownloadButton || false\n \" [onDownloadClick]=\"callLogRecordingsConfiguration.onDownloadClick!\"\n [listItemView]=\"callLogRecordingsConfiguration.listItemView\"\n [subtitleView]=\"callLogRecordingsConfiguration.subtitleView\"\n [tailView]=\"callLogRecordingsConfiguration.tailView\"></cometchat-call-log-recordings>\n </div>\n <div *ngIf=\"showCallHistory\" style=\"height: 100%; \">\n <cometchat-call-log-history [call]=\"call\" [user]=\"user\" [group]=\"group\" [onBackClick]=\"handlePageOnBackClick\"\n [backIconUrl]=\"callLogHistoryConfiguration.backIconUrl || backIconUrl\"\n [emptyStateView]=\"callLogHistoryConfiguration.emptyStateView\"\n [errorStateView]=\"callLogHistoryConfiguration.errorStateView\"\n [loadingIconURL]=\"callLogHistoryConfiguration.loadingIconURL\"\n [loadingStateView]=\"callLogHistoryConfiguration.loadingStateView\"\n [tailView]=\"callLogHistoryConfiguration.tailView\" [callLogRequestBuilder]=\"\n callLogHistoryConfiguration.callLogRequestBuilder\n \" [onItemClick]=\"callLogHistoryConfiguration.onItemClick || onItemClick\" [onBackClick]=\"\n callLogHistoryConfiguration.onBackClick || handlePageOnBackClick\n \" [listItemStyle]=\"callLogHistoryConfiguration.listItemStyle\"\n [datePattern]=\"callLogHistoryConfiguration.datePattern\" [dateSeparatorPattern]=\"\n callLogHistoryConfiguration.dateSeparatorPattern\n \" [callLogHistoryStyle]=\"\n callLogHistoryConfiguration.callLogHistoryStyle\n \" [onError]=\"callLogHistoryConfiguration.onError!\"></cometchat-call-log-history>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<ng-template #listitem>\n <ng-container *ngTemplateOutlet=\"customProfileView\">\n </ng-container>\n</ng-template>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-call-log-details__header{display:flex;gap:10px;align-items:center;height:3%}.cc-call-log-details{height:98%}.cc-call-log-details__profile{display:flex;align-items:center;justify-content:center}.cc-call-log-details__default-profile{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.cc-call-log-details__section{margin:10px 3px 3px}.cc-call-log-details__option{margin-top:5px}.cc-call-log-details__calling-default-option{display:flex;align-items:center;justify-content:center;margin:10px}.cc-call-log-details__call-Status{display:flex;justify-content:space-between}.cc-call-log-details__call-Status__subTitle{display:flex;justify-content:space-between;margin:10px 0;padding-right:8px;width:100%}.cc-call-log-details__call-Status__tailview{color:gray}.cc-call-log-details__secondary-view__tail-view{display:flex;align-items:center;justify-content:center;gap:5px;color:RGBA(20,20,20,.68)}\n"] }]
|
|
323
|
+
args: [{ selector: "cometchat-call-log-details", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-call-log-details__wrapper\" *ngIf=\"user || group\" [ngStyle]=\"wrapperStyle()\">\n\n <div class=\"cc-call-log-details__header\"\n *ngIf=\"onBackClick && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n <cometchat-button [iconURL]=\"backIconUrl\" class=\"cc-call-log-details__close-button\" [buttonStyle]=\"backButtonStyle()\"\n (cc-button-clicked)=\"onBackClick()\"></cometchat-button>\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\"></cometchat-label>\n </div>\n\n <div class=\"cc-call-log-details\">\n <div class=\"cc-call-log-details__profile\"\n *ngIf=\"!hideProfile && showCallLogDetailOptionList && !(showParticipantsList || showCallRecordingList || showCallHistory)\">\n\n\n <div class=\" cc-call-log-details__default-profile\" *ngIf=\"!customProfileView;else listitem\" [ngStyle]=\"profileContainerStyle()\">\n <cometchat-avatar [name]=\"user?.getName() ?? group?.getName()\" [avatarStyle]=\"avatarStyle\"\n [image]=\"user?.getAvatar() ?? group?.getIcon()\">\n </cometchat-avatar>\n\n <cometchat-label [text]=\"user?.getName() ?? this.group?.getName()\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n </div>\n <div class=\"cc-call-log-details__section-list\"\n *ngIf=\"showCallLogDetailOptionList && defaultTemplate && defaultTemplate.length > 0\">\n <div class=\"cc-call-log-details__section\" *ngFor=\"let item of defaultTemplate\">\n <div class=\"cc-call-log-details__section-separator\" *ngIf=\"item.title\">\n <cometchat-label [text]=\"item.title\"></cometchat-label>\n </div>\n <div class=\"cc-call-log-details__options-wrapper\" *ngIf=\"getTemplateOptions(item)\">\n <div class=\"cc-call-log-details__options\" *ngFor=\"let option of getTemplateOptions(item); trackBy: trackByFnOption \">\n <div class=\"cc-call-log-details__option\" *ngIf=\"!getCustomOptionView(option);else customView\">\n <div class=\"cc-call-log-details__option-element\">\n\n <div class=\"cc-call-log-details__calling-default-option\" *ngIf=\"option.id=='calls'\">\n\n <cometchat-call-buttons [user]=\"user\" [group]=\"group\"\n [callButtonsStyle]=\"callButtonsConfiguration.callButtonsStyle\"\n [onVideoCallClick]=\"callButtonsConfiguration.onVideoCallClick\"\n [onVoiceCallClick]=\"callButtonsConfiguration.onVoiceCallClick\"\n [videoCallIconURL]=\"callButtonsConfiguration.videoCallIconURL\"\n [voiceCallIconURL]=\"callButtonsConfiguration.voiceCallIconURL\"></cometchat-call-buttons>\n </div>\n <cometchat-list-item *ngIf=\"option.id==='callStatus'\" [listItemStyle]=\"getListItemStyle(option)\"\n [hideSeparator]=\"true\">\n <div class=\"cc-call-log-details__call-Status\" slot=\"subtitleView\" >\n <div *ngIf=\"!subtitleView; else subtitle\" style=\"width: 100%;\">\n <div> <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern2\">\n </cometchat-date></div>\n\n <div\n class=\"cc-call-log-details__call-Status__subTitle\">\n <div>\n\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.getInitiatedAt()\"\n [pattern]=\"datePattern\">\n </cometchat-date>\n <cometchat-label [text]=\"getSubtitle(call)\" [labelStyle]=\"subtitleStyle(option)\">\n </cometchat-label>\n </div>\n <div class=\"cc-call-log-details__call-Status__tailview\" [style]=\"getTailViewStyle()\"> {{ getTailView(call?.getTotalDurationInMinutes()!) }}\n </div>\n\n </div>\n\n\n </div>\n\n <ng-template #subtitle>\n <ng-container *ngTemplateOutlet=\"subtitleView;context:{ $implicit: user ?? group }\">\n </ng-container>\n </ng-template>\n </div>\n\n\n </cometchat-list-item>\n <cometchat-list-item *ngIf=\"option.id!=='calls' && option.id!=='callStatus' \"\n (cc-listitem-clicked)=\"onOptionClick(option)\" [listItemStyle]=\"getListItemStyle(option)\"\n [title]=\"option.title\" [hideSeparator]=\"true\">\n \n <div slot=\"tailView\" class=\"cc-call-log-details__secondary-view__tail-view\" [style]=\"getTailViewStyle()\"\n >\n {{option.tail}}\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"greaterThanIconURL\"></cometchat-icon>\n </div>\n\n \n\n </cometchat-list-item>\n\n </div>\n </div>\n <ng-template #customView>\n <ng-container *ngTemplateOutlet=\"getCustomOptionView(option)\">\n </ng-container>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n\n\n\n <div *ngIf=\"showParticipantsList || showCallRecordingList || showCallHistory\" style=\" height: 100%;\">\n\n <div *ngIf=\"showParticipantsList\" style=\"height: 100%;\">\n <cometchat-call-log-participants [call]=\"call\"\n [onBackClick]=\"callLogParticipantsConfiguration.onBackClick || handlePageOnBackClick\"\n [backIconUrl]=\"callLogParticipantsConfiguration.backIconUrl || backIconUrl\"\n [avatarStyle]=\"callLogParticipantsConfiguration.avatarStyle\"\n [onItemClick]=\"callLogParticipantsConfiguration.onItemClick!\"\n [datePattern]=\"callLogParticipantsConfiguration.datePattern\"\n [subtitleView]=\"callLogParticipantsConfiguration.subtitleView\"\n [listItemView]=\"callLogParticipantsConfiguration.listItemView\"\n\n [listItemStyle]=\"callLogParticipantsConfiguration.listItemStyle\" [callLogParticipantsStyle]=\"\n callLogParticipantsConfiguration.callLogParticipantsStyle\"\n \n [tailView]=\"callLogParticipantsConfiguration.tailView\"></cometchat-call-log-participants>\n </div>\n <div *ngIf=\"showCallRecordingList\" style=\"height:100%;\">\n <cometchat-call-log-recordings [call]=\"call\"\n [backIconUrl]=\"callLogRecordingsConfiguration.backIconUrl || backIconUrl\" [onBackClick]=\"\n callLogRecordingsConfiguration.onBackClick || handlePageOnBackClick\n \" [onItemClick]=\"callLogRecordingsConfiguration.onItemClick!\"\n [datePattern]=\"callLogRecordingsConfiguration.datePattern!\"\n [listItemStyle]=\"callLogRecordingsConfiguration.listItemStyle\" callLogRecordingsStyle=\"\n callLogRecordingsConfiguration.callLogRecordingsStyle\n callLogRecordingsConfiguration.hideDownloadButton || false\n \" [onDownloadClick]=\"callLogRecordingsConfiguration.onDownloadClick!\"\n [listItemView]=\"callLogRecordingsConfiguration.listItemView\"\n [subtitleView]=\"callLogRecordingsConfiguration.subtitleView\"\n [tailView]=\"callLogRecordingsConfiguration.tailView\"></cometchat-call-log-recordings>\n </div>\n <div *ngIf=\"showCallHistory\" style=\"height: 100%; \">\n <cometchat-call-log-history [call]=\"call\" [user]=\"user\" [group]=\"group\" [onBackClick]=\"handlePageOnBackClick\"\n [backIconUrl]=\"callLogHistoryConfiguration.backIconUrl || backIconUrl\"\n [emptyStateView]=\"callLogHistoryConfiguration.emptyStateView\"\n [errorStateView]=\"callLogHistoryConfiguration.errorStateView\"\n [loadingIconURL]=\"callLogHistoryConfiguration.loadingIconURL\"\n [loadingStateView]=\"callLogHistoryConfiguration.loadingStateView\"\n [tailView]=\"callLogHistoryConfiguration.tailView\" [callLogRequestBuilder]=\"\n callLogHistoryConfiguration.callLogRequestBuilder\n \" [onItemClick]=\"callLogHistoryConfiguration.onItemClick || onItemClick\" [onBackClick]=\"\n callLogHistoryConfiguration.onBackClick || handlePageOnBackClick\n \" [listItemStyle]=\"callLogHistoryConfiguration.listItemStyle\"\n [datePattern]=\"callLogHistoryConfiguration.datePattern\" [dateSeparatorPattern]=\"\n callLogHistoryConfiguration.dateSeparatorPattern\n \" [callLogHistoryStyle]=\"\n callLogHistoryConfiguration.callLogHistoryStyle\n \" [onError]=\"callLogHistoryConfiguration.onError!\"></cometchat-call-log-history>\n </div>\n\n </div>\n </div>\n</div>\n\n\n<ng-template #listitem>\n <ng-container *ngTemplateOutlet=\"customProfileView\">\n </ng-container>\n</ng-template>", styles: ["*{box-sizing:border-box;margin:0;padding:0}.cc-call-log-details__header{display:flex;gap:10px;align-items:center;height:3%}.cc-call-log-details{height:98%}.cc-call-log-details__profile{display:flex;align-items:center;justify-content:center}.cc-call-log-details__default-profile{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.cc-call-log-details__section{margin:10px 3px 3px}.cc-call-log-details__option{margin-top:5px}.cc-call-log-details__calling-default-option{display:flex;align-items:center;justify-content:center;margin:10px}.cc-call-log-details__call-Status{display:flex;justify-content:space-between}.cc-call-log-details__call-Status__subTitle{display:flex;justify-content:space-between;margin:10px 0;padding-right:8px;width:100%}.cc-call-log-details__call-Status__tailview{color:gray}.cc-call-log-details__secondary-view__tail-view{display:flex;align-items:center;justify-content:center;gap:5px;color:RGBA(20,20,20,.68)}\n"] }]
|
|
304
324
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { call: [{
|
|
305
325
|
type: Input
|
|
306
326
|
}], group: [{
|
|
@@ -339,6 +359,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
339
359
|
type: Input
|
|
340
360
|
}], avatarStyle: [{
|
|
341
361
|
type: Input
|
|
362
|
+
}], labelStyle: [{
|
|
363
|
+
type: Input
|
|
342
364
|
}], callDetailsStyle: [{
|
|
343
365
|
type: Input
|
|
344
366
|
}], listItemStyle: [{
|
|
@@ -348,4 +370,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
348
370
|
}], callButtonsStyle: [{
|
|
349
371
|
type: Input
|
|
350
372
|
}] } });
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtbG9nLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsTG9nRGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxMb2dEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLHVCQUF1QixHQUt4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUVULGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsOEJBQThCLEdBQy9CLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBSVIsWUFBWSxHQUViLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBUWxFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFzRzNDLFlBQ1UsR0FBc0Is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LENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzlELGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1NBQ2hFLENBQUM7SUFDSixDQUFDOzs4SEFyVlUsZ0NBQWdDO2tIQUFoQyxnQ0FBZ0MseTFCQzdDN0MsdXlSQWtLYzs0RkRySEQsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs0SUFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBR0csZ0NBQWdDO3NCQUF4QyxLQUFLO2dCQUdHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFHRyw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQXZhdGFyU3R5bGUsXG4gIERhdGVTdHlsZSxcbiAgSWNvblN0eWxlLFxuICBMaXN0SXRlbVN0eWxlLFxufSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQ2FsbEJ1dHRvbnNTdHlsZSxcbiAgQ2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nRGV0YWlsc1N0eWxlLFxuICBDYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbixcbiAgQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24sXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuaW1wb3J0IHtcbiAgZm9udEhlbHBlcixcbiAgbG9jYWxpemUsXG4gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLFxuICBDb21ldENoYXREZXRhaWxzT3B0aW9uLFxuICBDb21ldENoYXREZXRhaWxzVGVtcGxhdGUsXG4gIERhdGVQYXR0ZXJucyxcbiAgQ29tZXRDaGF0Q2FsbERldGFpbHNPcHRpb24sXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSBcIkBjb21ldGNoYXQvY2hhdC1zZGstamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IENhbGxEZXRhaWxVdGlscyB9IGZyb20gXCIuLi8uLi8uLi9TaGFyZWQvVXRpbHMvQ2FsbERldGFpbFV0aWxzXCJcbmltcG9ydCB7IENhbGxMb2dVdGlscyB9IGZyb20gXCIuLi8uLi8uLi9TaGFyZWQvVXRpbHMvQ2FsbExvZ1V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlsc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbWV0Q2hhdENhbGxMb2dEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjYWxsITogYW55O1xuICBASW5wdXQoKSBncm91cCE6IENvbWV0Q2hhdC5Hcm91cDtcbiAgQElucHV0KCkgdXNlciE6IENvbWV0Q2hhdC5Vc2VyO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gbG9jYWxpemUoXCJDQUxMX0RFVEFJTFNcIik7XG4gIEBJbnB1dCgpIG9uQmFja0NsaWNrITogKCkgPT4gdm9pZDtcbiBcbiAgQElucHV0KCkgaGlkZVByb2ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgY3VzdG9tUHJvZmlsZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIGJhY2tJY29uVXJsOiBzdHJpbmcgPSBcImFzc2V0cy9iYWNrYnV0dG9uLnN2Z1wiO1xuICBASW5wdXQoKSBncmVhdGVyVGhhbkljb25VUkw6IHN0cmluZyA9IFwiYXNzZXRzL2dyZWF0ZXJUaGFuSWNvbi5zdmdcIjtcblxuICBASW5wdXQoKSBjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb246IENhbGxCdXR0b25zQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxCdXR0b25zQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb246IENhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uID1cbiAgICBuZXcgQ2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24oe30pO1xuXG4gIEBJbnB1dCgpIGNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbjogQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uID1cbiAgICBuZXcgQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uKHt9KTtcblxuICBASW5wdXQoKSBjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb246IENhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgb25FcnJvcjogKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCkgfCBudWxsID0gKFxuICAgIGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uXG4gICkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfTtcbiAgQElucHV0KCkgZGF0ZVBhdHRlcm46IERhdGVQYXR0ZXJucyA9IERhdGVQYXR0ZXJucy50aW1lO1xuICBASW5wdXQoKSBkYXRlUGF0dGVybjI6IERhdGVQYXR0ZXJucyA9IERhdGVQYXR0ZXJucy5EYXlEYXRlO1xuXG4gIEBJbnB1dCgpIGRhdGE6IENvbWV0Q2hhdERldGFpbHNUZW1wbGF0ZVtdID0gW107XG5cbiAgQElucHV0KCkgYXZhdGFyU3R5bGU6IEF2YXRhclN0eWxlID0ge1xuICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMjhweFwiLFxuICAgIGhlaWdodDogXCIyOHB4XCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgfTtcbiAgQElucHV0KCkgY2FsbERldGFpbHNTdHlsZTogQ2FsbExvZ0RldGFpbHNTdHlsZSA9IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgfTtcblxuICBASW5wdXQoKSBsaXN0SXRlbVN0eWxlOiBMaXN0SXRlbVN0eWxlID0ge307XG5cbiAgQElucHV0KCkgZGF0ZVN0eWxlOiBEYXRlU3R5bGUgPSB7fTtcbiAgQElucHV0KCkgY2FsbEJ1dHRvbnNTdHlsZTogQ2FsbEJ1dHRvbnNTdHlsZSA9IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICB9O1xuXG4gIGljb25TdHlsZTogSWNvblN0eWxlID0ge1xuICAgIGhlaWdodDogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMTZweFwiLFxuICAgIGljb25UaW50OiBcIlJHQkEoMjAsIDIwLCAyMCwgMC42OClcIixcbiAgfTtcblxuICBkZWZhdWx0VGVtcGxhdGU6IENvbWV0Q2hhdERldGFpbHNUZW1wbGF0ZVtdID0gW107XG5cbiAgcHVibGljIGF1dGhUb2tlbjogc3RyaW5nID0gXCJcIjtcbiAgcHVibGljIGxvZ2dlZEluVXNlcjogQ29tZXRDaGF0LlVzZXIgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdDogQm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBzaG93Q29tZXRDaGF0TWVzc2FnZXM6IEJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd1BhcnRpY2lwYW50c0xpc3Q6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dDYWxsUmVjb3JkaW5nTGlzdDogQm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd0NhbGxIaXN0b3J5OiBCb29sZWFuID0gZmFsc2U7XG5cbiAgZGl2aWRlclN0eWxlOiBhbnkgPSB7XG4gICAgYmFja2dyb3VuZDogXCJyZ2IoMjIyIDIyMiAyMjIgLyA0NiUpXCIsXG4gICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgfTtcblxuICBnZXRUaXRsZVN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0Rm9udDpcbiAgICAgICAgdGhpcy5jYWxsRGV0YWlsc1N0eWxlLnRpdGxlRm9udCB8fFxuICAgICAgICBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIHRleHRDb2xvcjpcbiAgICAgICAgdGhpcy5jYWxsRGV0YWlsc1N0eWxlLnRpdGxlQ29sb3IgfHxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyB1c2VyTGlzdGVuZXJJZCA9IFwidXNlcmxpc3RfXCIgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgcHVibGljIHJlcXVlc3RCdWlsZGVyOiBhbnk7XG4gIHB1YmxpYyBsaW1pdDogbnVtYmVyID0gNTtcblxuICBwdWJsaWMgb25JdGVtQ2xpY2s6IChjYWxsOiBhbnkpID0+IHZvaWQgPSAoY2FsbDogYW55KSA9PiB7XG4gICAgdGhpcy5jYWxsID0gY2FsbDtcbiAgICB0aGlzLnNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCA9IHRydWU7XG4gICAgdGhpcy5zaG93Q2FsbEhpc3RvcnkgPSBmYWxzZTtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH07XG4gIHR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjYXRlZ29yaWVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IENvbWV0Q2hhdFRoZW1lU2VydmljZVxuICApIHt9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcInVzZXJcIl0gfHwgY2hhbmdlc1tcImdyb3VwXCJdKSB7XG4gICAgICB0aGlzLnNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCA9IHRydWU7XG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudHNMaXN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dDYWxsUmVjb3JkaW5nTGlzdCA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Q2FsbEhpc3RvcnkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0NvbWV0Q2hhdE1lc3NhZ2VzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlTGlzdGVuZXIoKSB7XG4gICAgQ29tZXRDaGF0LnJlbW92ZVVzZXJMaXN0ZW5lcih0aGlzLnVzZXJMaXN0ZW5lcklkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKVxuICAgICAgLnRoZW4oKHVzZXI6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlZEluVXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMuYXV0aFRva2VuID0gdGhpcy5sb2dnZWRJblVzZXIhLmdldEF1dGhUb2tlbigpO1xuICAgICAgICB0aGlzLmdldFRlbXBsYXRlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnNldFRoZW1lU3R5bGUoKTtcbiAgfVxuXG4gIHRyYWNrQnlGbk9wdGlvbihpbmRleDogbnVtYmVyLCBvcHRpb246IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG9wdGlvbi5pZDtcbiAgfVxuICBnZXRUZW1wbGF0ZSgpIHtcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlID0gQ2FsbERldGFpbFV0aWxzLmdldERlZmF1bHRDYWxsVGVtcGxhdGUoXG4gICAgICAgIHRoaXMuY2FsbCxcbiAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIhLFxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50aGVtZVxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldFRlbXBsYXRlT3B0aW9ucyA9ICh0ZW1wbGF0ZTogQ29tZXRDaGF0RGV0YWlsc1RlbXBsYXRlKSA9PiB7XG4gICAgaWYgKHRlbXBsYXRlLm9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0ZW1wbGF0ZS5vcHRpb25zKHRoaXMudXNlciwgdGhpcy5ncm91cCwgdGVtcGxhdGUuaWQgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgcmV0dXJuIFtdO1xuICB9O1xuXG4gIGdldEN1c3RvbU9wdGlvblZpZXcob3B0aW9uOiBDb21ldENoYXREZXRhaWxzT3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbj8uY3VzdG9tVmlldztcbiAgfVxuXG4gIGdldFNlY3Rpb25IZWFkZXJTdHlsZSh0ZW1wbGF0ZTogQ29tZXRDaGF0RGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHRGb250OiB0ZW1wbGF0ZS50aXRsZUZvbnQsXG4gICAgICB0ZXh0Q29sb3I6IHRlbXBsYXRlLnRpdGxlQ29sb3IsXG4gICAgfTtcbiAgfVxuXG4gIG9uT3B0aW9uQ2xpY2sgPSAob3B0aW9uOiBDb21ldENoYXRDYWxsRGV0YWlsc09wdGlvbikgPT4ge1xuICAgIGlmIChvcHRpb24/Lm9uQ2xpY2spIHtcbiAgICAgIG9wdGlvbi5vbkNsaWNrKHRoaXMuY2FsbCEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG9wdGlvbi5pZCkge1xuICAgICAgICBjYXNlIFwicGFydGljaXBhbnRzXCI6XG4gICAgICAgICAgdGhpcy5zaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3QgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudHNMaXN0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInJlY29yZGluZ3NcIjpcbiAgICAgICAgICB0aGlzLnNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zaG93Q2FsbFJlY29yZGluZ0xpc3QgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJjYWxsSGlzdG9yeVwiOlxuICAgICAgICAgIHRoaXMuc2hvd0NhbGxMb2dEZXRhaWxPcHRpb25MaXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICB0aGlzLnNob3dDYWxsSGlzdG9yeSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZ2V0QnV0dG9uU3R5bGUob3B0aW9uOiBDb21ldENoYXREZXRhaWxzT3B0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjBcIixcbiAgICAgIGJ1dHRvblRleHRGb250OiBvcHRpb24/LnRpdGxlRm9udCxcbiAgICAgIGJ1dHRvblRleHRDb2xvcjogb3B0aW9uPy50aXRsZUNvbG9yLFxuICAgICAgYmFja2dyb3VuZDogb3B0aW9uPy5iYWNrZ3JvdW5kQ29sb3IgfHwgXCJ0cmFuc3BhcmVudFwiLFxuICAgIH07XG4gIH1cblxuXG4gIGhhbmRsZVBhZ2VPbkJhY2tDbGljayA9ICgpID0+IHtcbiAgICB0aGlzLnNob3dDYWxsSGlzdG9yeSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NhbGxSZWNvcmRpbmdMaXN0ID0gZmFsc2U7XG4gICAgdGhpcy5zaG93UGFydGljaXBhbnRzTGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NvbWV0Q2hhdE1lc3NhZ2VzID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3QgPSB0cnVlO1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfTtcblxuICBzdWJ0aXRsZVN0eWxlKHRlbXBsYXRlOiBDb21ldENoYXREZXRhaWxzVGVtcGxhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dEZvbnQ6IHRlbXBsYXRlLnRpdGxlRm9udCxcbiAgICAgIHRleHRDb2xvcjogdGVtcGxhdGUudGl0bGVDb2xvcixcbiAgICB9O1xuICB9XG4gIHNob3dEYXRhU2VjdGlvblN0eWxlKHRlbXBsYXRlOiBDb21ldENoYXREZXRhaWxzVGVtcGxhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dEZvbnQ6IHRlbXBsYXRlLnRpdGxlRm9udCxcbiAgICAgIHRleHRDb2xvcjogdGVtcGxhdGUudGl0bGVDb2xvcixcbiAgICB9O1xuICB9XG5cbiAgc2V0VGhlbWVTdHlsZSgpIHtcbiAgICB0aGlzLnNldERldGFpbHNTdHlsZSgpO1xuICAgIHRoaXMuc2V0QXZhdGFyU3R5bGUoKTtcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKTtcbiAgICB0aGlzLnNldERhdGVTdHlsZSgpO1xuICB9XG4gIHNldExpc3RJdGVtU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogTGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCI0NXB4XCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDUwKCkgfHxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiNXB4XCIsXG4gICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuICAgICAgdGl0bGVDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBzZXBhcmF0b3JDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQyMDAoKSxcbiAgICAgIGhvdmVyQmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQxMDAoKSxcbiAgICB9KTtcbiAgICB0aGlzLmxpc3RJdGVtU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5saXN0SXRlbVN0eWxlIH07XG4gIH1cbiAgc2V0QXZhdGFyU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogQXZhdGFyU3R5bGUgPSBuZXcgQXZhdGFyU3R5bGUoe1xuICAgICAgYm9yZGVyUmFkaXVzOiBcIjI0cHhcIixcbiAgICAgIHdpZHRoOiBcIjQ2cHhcIixcbiAgICAgIGhlaWdodDogXCI0NnB4XCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDcwMCgpLFxuICAgICAgbmFtZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ5MDAoKSxcbiAgICAgIGJhY2tncm91bmRTaXplOiBcImNvdmVyXCIsXG4gICAgICBuYW1lVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTEpLFxuXG4gICAgICBvdXRlclZpZXdCb3JkZXJTcGFjaW5nOiBcIlwiLFxuICAgIH0pO1xuICAgIHRoaXMuYXZhdGFyU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5hdmF0YXJTdHlsZSB9O1xuICB9XG5cbiAgc2V0RGV0YWlsc1N0eWxlKCkge1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IENhbGxMb2dEZXRhaWxzU3R5bGUgPSBuZXcgQ2FsbExvZ0RldGFpbHNTdHlsZSh7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIHRpdGxlRm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICB0aXRsZUNvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudCgpLFxuICAgICAgYmFja0ljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiXCIsXG4gICAgICBuYW1lVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTIpLFxuICAgIH0pO1xuICAgIHRoaXMuY2FsbERldGFpbHNTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLmNhbGxEZXRhaWxzU3R5bGUgfTtcbiAgfVxuXG4gIHNldERhdGVTdHlsZSgpIHtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOiBEYXRlU3R5bGUgPSBuZXcgRGF0ZVN0eWxlKHtcbiAgICAgIHRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuY2FwdGlvbjIpLFxuICAgICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIH0pO1xuICAgIHRoaXMuZGF0ZVN0eWxlID0geyAuLi5kZWZhdWx0U3R5bGUsIC4uLnRoaXMuZGF0ZVN0eWxlIH07XG4gIH1cbiAgd3JhcHBlclN0eWxlID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdGhpcy5jYWxsRGV0YWlsc1N0eWxlLndpZHRoLFxuICAgICAgaGVpZ2h0OiB0aGlzLmNhbGxEZXRhaWxzU3R5bGUuaGVpZ2h0LFxuICAgICAgYm9yZGVyOiB0aGlzLmNhbGxEZXRhaWxzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmNhbGxEZXRhaWxzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy5jYWxsRGV0YWlsc1N0eWxlLmJhY2tncm91bmQsXG4gICAgfTtcbiAgfTtcblxuICBnZXRUYWlsVmlldyh0b3RhbFNlY29uZHM6IG51bWJlcikge1xuICAgIHJldHVybiBDYWxsTG9nVXRpbHMuY29udmVydE1pbnV0ZXNUb0hvdXJzTWludXRlc1NlY29uZHModG90YWxTZWNvbmRzKTtcbiAgfVxuXG4gIGdldFN1YnRpdGxlKGNhbGw6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENhbGxMb2dVdGlscy5nZXRDYWxsU3RhdHVzV2l0aFR5cGUoY2FsbCwgdGhpcy5sb2dnZWRJblVzZXIhKTtcbiAgfVxuXG4gIGJhY2tCdXR0b25TdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiBcIjI0cHhcIixcbiAgICAgIHdpZHRoOiBcIjI0cHhcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgYnV0dG9uSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0UHJpbWFyeSgpLFxuICAgIH07XG4gIH07XG4gIGdldExpc3RJdGVtU3R5bGUob3B0aW9uOiBDb21ldENoYXREZXRhaWxzT3B0aW9uKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOlxuICAgICAgICBvcHRpb24/LmJhY2tncm91bmRDb2xvciB8fFxuICAgICAgICB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgICB0aXRsZUZvbnQ6XG4gICAgICAgIG9wdGlvbj8udGl0bGVGb250IHx8XG4gICAgICAgIGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3dyYXBwZXJcIiAqbmdJZj1cInVzZXIgfHwgZ3JvdXBcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19oZWFkZXJcIlxuICAgICpuZ0lmPVwib25CYWNrQ2xpY2sgJiYgIShzaG93UGFydGljaXBhbnRzTGlzdCB8fCBzaG93Q2FsbFJlY29yZGluZ0xpc3QgfHwgc2hvd0NhbGxIaXN0b3J5KVwiPlxuICAgIDxjb21ldGNoYXQtYnV0dG9uIFtpY29uVVJMXT1cImJhY2tJY29uVXJsXCIgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jbG9zZS1idXR0b25cIiBbYnV0dG9uU3R5bGVdPVwiYmFja0J1dHRvblN0eWxlKClcIlxuICAgICAgKGNjLWJ1dHRvbi1jbGlja2VkKT1cIm9uQmFja0NsaWNrKClcIj48L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJ0aXRsZVwiIFtsYWJlbFN0eWxlXT1cImdldFRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19wcm9maWxlXCJcbiAgICAgICpuZ0lmPVwiIWhpZGVQcm9maWxlICYmIHNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCAmJiAhKHNob3dQYXJ0aWNpcGFudHNMaXN0IHx8IHNob3dDYWxsUmVjb3JkaW5nTGlzdCB8fCBzaG93Q2FsbEhpc3RvcnkpXCI+XG5cblxuICAgICAgPGRpdiBjbGFzcz1cIiBjYy1jYWxsLWxvZy1kZXRhaWxzX19kZWZhdWx0LXByb2ZpbGVcIiAqbmdJZj1cIiFjdXN0b21Qcm9maWxlVmlldztlbHNlIGxpc3RpdGVtXCI+XG4gICAgICAgIDxjb21ldGNoYXQtYXZhdGFyIFtuYW1lXT1cInVzZXI/LmdldE5hbWUoKSA/PyBncm91cD8uZ2V0TmFtZSgpXCIgW2F2YXRhclN0eWxlXT1cImF2YXRhclN0eWxlXCJcbiAgICAgICAgICBbaW1hZ2VdPVwidXNlcj8uZ2V0QXZhdGFyKCkgPz8gZ3JvdXA/LmdldEljb24oKVwiPlxuICAgICAgICA8L2NvbWV0Y2hhdC1hdmF0YXI+XG5cbiAgICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJ1c2VyPy5nZXROYW1lKCkgPz8gdGhpcy5ncm91cD8uZ2V0TmFtZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fc2VjdGlvbi1saXN0XCJcbiAgICAgICpuZ0lmPVwic2hvd0NhbGxMb2dEZXRhaWxPcHRpb25MaXN0ICYmIGRlZmF1bHRUZW1wbGF0ZSAmJiBkZWZhdWx0VGVtcGxhdGUubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3NlY3Rpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0VGVtcGxhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3NlY3Rpb24tc2VwYXJhdG9yXCIgKm5nSWY9XCJpdGVtLnRpdGxlXCI+XG4gICAgICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJpdGVtLnRpdGxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fb3B0aW9ucy13cmFwcGVyXCIgKm5nSWY9XCJnZXRUZW1wbGF0ZU9wdGlvbnMoaXRlbSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fb3B0aW9uc1wiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0VGVtcGxhdGVPcHRpb25zKGl0ZW0pOyAgdHJhY2tCeTogdHJhY2tCeUZuT3B0aW9uIFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX29wdGlvblwiICpuZ0lmPVwiIWdldEN1c3RvbU9wdGlvblZpZXcob3B0aW9uKTtlbHNlIGN1c3RvbVZpZXdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX29wdGlvbi1lbGVtZW50XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fY2FsbGluZy1kZWZhdWx0LW9wdGlvblwiICpuZ0lmPVwib3B0aW9uLmlkPT0nY2FsbHMnXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxjb21ldGNoYXQtY2FsbC1idXR0b25zIFt1c2VyXT1cInVzZXJcIiBbZ3JvdXBdPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICBbY2FsbEJ1dHRvbnNTdHlsZV09XCJjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb24uY2FsbEJ1dHRvbnNTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtvblZpZGVvQ2FsbENsaWNrXT1cImNhbGxCdXR0b25zQ29uZmlndXJhdGlvbi5vblZpZGVvQ2FsbENsaWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW29uVm9pY2VDYWxsQ2xpY2tdPVwiY2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uLm9uVm9pY2VDYWxsQ2xpY2tcIlxuICAgICAgICAgICAgICAgICAgICBbdmlkZW9DYWxsSWNvblVSTF09XCJjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb24udmlkZW9DYWxsSWNvblVSTFwiXG4gICAgICAgICAgICAgICAgICAgIFt2b2ljZUNhbGxJY29uVVJMXT1cImNhbGxCdXR0b25zQ29uZmlndXJhdGlvbi52b2ljZUNhbGxJY29uVVJMXCI+PC9jb21ldGNoYXQtY2FsbC1idXR0b25zPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxjb21ldGNoYXQtbGlzdC1pdGVtICpuZ0lmPVwib3B0aW9uLmlkPT09J2NhbGxTdGF0dXMnXCIgW2xpc3RJdGVtU3R5bGVdPVwiZ2V0TGlzdEl0ZW1TdHlsZShvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jYWxsLVN0YXR1c1wiIHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIiA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3VidGl0bGVWaWV3OyBlbHNlIHN1YnRpdGxlXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiA8Y29tZXRjaGF0LWRhdGUgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbdGltZXN0YW1wXT1cImNhbGw/LmdldEluaXRpYXRlZEF0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJkYXRlUGF0dGVybjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY29tZXRjaGF0LWRhdGU+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jYWxsLVN0YXR1c19fc3ViVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbWV0Y2hhdC1kYXRlIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCIgW3RpbWVzdGFtcF09XCJjYWxsPy5nZXRJbml0aWF0ZWRBdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJkYXRlUGF0dGVyblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbWV0Y2hhdC1kYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cImdldFN1YnRpdGxlKGNhbGwpXCIgW2xhYmVsU3R5bGVdPVwic3VidGl0bGVTdHlsZShvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29tZXRjaGF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fY2FsbC1TdGF0dXNfX3RhaWx2aWV3XCI+IHt7IGdldFRhaWxWaWV3KGNhbGw/LmdldFRvdGFsRHVyYXRpb25Jbk1pbnV0ZXMoKSEpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWJ0aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VidGl0bGVWaWV3O2NvbnRleHQ6eyAkaW1wbGljaXQ6IHVzZXIgPz8gZ3JvdXAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgIDwvY29tZXRjaGF0LWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICA8Y29tZXRjaGF0LWxpc3QtaXRlbSAqbmdJZj1cIm9wdGlvbi5pZCE9PSdjYWxscycgJiYgb3B0aW9uLmlkIT09J2NhbGxTdGF0dXMnIFwiXG4gICAgICAgICAgICAgICAgICAoY2MtbGlzdGl0ZW0tY2xpY2tlZCk9XCJvbk9wdGlvbkNsaWNrKG9wdGlvbilcIiBbbGlzdEl0ZW1TdHlsZV09XCJnZXRMaXN0SXRlbVN0eWxlKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIm9wdGlvbi50aXRsZVwiIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc2xvdD1cInRhaWxWaWV3XCIgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19zZWNvbmRhcnktdmlld19fdGFpbC12aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24udGFpbH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y29tZXRjaGF0LWljb24gW2ljb25TdHlsZV09XCJpY29uU3R5bGVcIiBbVVJMXT1cImdyZWF0ZXJUaGFuSWNvblVSTFwiPjwvY29tZXRjaGF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgPC9jb21ldGNoYXQtbGlzdC1pdGVtPlxuXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8Y29tZXRjaGF0LWRpdmlkZXIgW2RpdmlkZXJTdHlsZV09XCJkaXZpZGVyU3R5bGVcIj48L2NvbWV0Y2hhdC1kaXZpZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVZpZXc+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZXRDdXN0b21PcHRpb25WaWV3KG9wdGlvbilcIj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRzTGlzdCB8fCBzaG93Q2FsbFJlY29yZGluZ0xpc3QgfHwgc2hvd0NhbGxIaXN0b3J5XCIgc3R5bGU9XCIgaGVpZ2h0OiAxMDAlO1wiPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1BhcnRpY2lwYW50c0xpc3RcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cbiAgICAgICAgPGNvbWV0Y2hhdC1jYWxsLWxvZy1wYXJ0aWNpcGFudHMgW2NhbGxdPVwiY2FsbFwiXG4gICAgICAgICAgW29uQmFja0NsaWNrXT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLm9uQmFja0NsaWNrIHx8IGhhbmRsZVBhZ2VPbkJhY2tDbGlja1wiXG4gICAgICAgICAgW2JhY2tJY29uVXJsXT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLmJhY2tJY29uVXJsIHx8IGJhY2tJY29uVXJsXCJcbiAgICAgICAgICBbYXZhdGFyU3R5bGVdPVwiY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24uYXZhdGFyU3R5bGVcIlxuICAgICAgICAgIFtvbkl0ZW1DbGlja109XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5vbkl0ZW1DbGljayFcIlxuICAgICAgICAgIFtkYXRlUGF0dGVybl09XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5kYXRlUGF0dGVyblwiXG4gICAgICAgICAgW3N1YnRpdGxlVmlld109XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5zdWJ0aXRsZVZpZXdcIlxuICAgICAgICAgIFtsaXN0SXRlbVZpZXddPVwiY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24ubGlzdEl0ZW1WaWV3XCJcblxuICAgICAgICAgIFtsaXN0SXRlbVN0eWxlXT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIiBbY2FsbExvZ1BhcnRpY2lwYW50c1N0eWxlXT1cIlxuICAgICAgICBjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5jYWxsTG9nUGFydGljaXBhbnRzU3R5bGVcIlxuICAgICAgIFxuICAgICAgICAgIFt0YWlsVmlld109XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi50YWlsVmlld1wiPjwvY29tZXRjaGF0LWNhbGwtbG9nLXBhcnRpY2lwYW50cz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDYWxsUmVjb3JkaW5nTGlzdFwiIHN0eWxlPVwiaGVpZ2h0OjEwMCU7XCI+XG4gICAgICAgIDxjb21ldGNoYXQtY2FsbC1sb2ctcmVjb3JkaW5ncyBbY2FsbF09XCJjYWxsXCJcbiAgICAgICAgICBbYmFja0ljb25VcmxdPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLmJhY2tJY29uVXJsIHx8IGJhY2tJY29uVXJsXCIgW29uQmFja0NsaWNrXT1cIlxuICAgICAgICBjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24ub25CYWNrQ2xpY2sgfHwgaGFuZGxlUGFnZU9uQmFja0NsaWNrXG4gICAgICBcIiBbb25JdGVtQ2xpY2tdPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLm9uSXRlbUNsaWNrIVwiXG4gICAgICAgICAgW2RhdGVQYXR0ZXJuXT1cImNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5kYXRlUGF0dGVybiFcIlxuICAgICAgICAgIFtsaXN0SXRlbVN0eWxlXT1cImNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5saXN0SXRlbVN0eWxlXCIgY2FsbExvZ1JlY29yZGluZ3NTdHlsZT1cIlxuICAgICAgICBjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24uY2FsbExvZ1JlY29yZGluZ3NTdHlsZVxuICAgICAgICBjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24uaGlkZURvd25sb2FkQnV0dG9uIHx8IGZhbHNlXG4gICAgICBcIiBbb25Eb3dubG9hZENsaWNrXT1cImNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5vbkRvd25sb2FkQ2xpY2shXCJcbiAgICAgICAgICBbbGlzdEl0ZW1WaWV3XT1cImNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIlxuICAgICAgICAgIFtzdWJ0aXRsZVZpZXddPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLnN1YnRpdGxlVmlld1wiXG4gICAgICAgICAgW3RhaWxWaWV3XT1cImNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi50YWlsVmlld1wiPjwvY29tZXRjaGF0LWNhbGwtbG9nLXJlY29yZGluZ3M+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q2FsbEhpc3RvcnlcIiBzdHlsZT1cImhlaWdodDogMTAwJTsgXCI+XG4gICAgICAgIDxjb21ldGNoYXQtY2FsbC1sb2ctaGlzdG9yeSBbY2FsbF09XCJjYWxsXCIgW3VzZXJdPVwidXNlclwiIFtncm91cF09XCJncm91cFwiIFtvbkJhY2tDbGlja109XCJoYW5kbGVQYWdlT25CYWNrQ2xpY2tcIlxuICAgICAgICAgIFtiYWNrSWNvblVybF09XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uYmFja0ljb25VcmwgfHwgYmFja0ljb25VcmxcIlxuICAgICAgICAgIFtlbXB0eVN0YXRlVmlld109XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uZW1wdHlTdGF0ZVZpZXdcIlxuICAgICAgICAgIFtlcnJvclN0YXRlVmlld109XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uZXJyb3JTdGF0ZVZpZXdcIlxuICAgICAgICAgIFtsb2FkaW5nSWNvblVSTF09XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24ubG9hZGluZ0ljb25VUkxcIlxuICAgICAgICAgIFtsb2FkaW5nU3RhdGVWaWV3XT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5sb2FkaW5nU3RhdGVWaWV3XCJcbiAgICAgICAgICBbdGFpbFZpZXddPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLnRhaWxWaWV3XCIgW2NhbGxMb2dSZXF1ZXN0QnVpbGRlcl09XCJcbiAgICAgICAgICAgIGNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5jYWxsTG9nUmVxdWVzdEJ1aWxkZXJcbiAgICAgICAgICBcIiBbb25JdGVtQ2xpY2tdPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLm9uSXRlbUNsaWNrIHx8IG9uSXRlbUNsaWNrXCIgW29uQmFja0NsaWNrXT1cIlxuICAgICAgICAgICAgY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLm9uQmFja0NsaWNrIHx8IGhhbmRsZVBhZ2VPbkJhY2tDbGlja1xuICAgICAgICAgIFwiIFtsaXN0SXRlbVN0eWxlXT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5saXN0SXRlbVN0eWxlXCJcbiAgICAgICAgICBbZGF0ZVBhdHRlcm5dPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLmRhdGVQYXR0ZXJuXCIgW2RhdGVTZXBhcmF0b3JQYXR0ZXJuXT1cIlxuICAgICAgICAgICAgY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLmRhdGVTZXBhcmF0b3JQYXR0ZXJuXG4gICAgICAgICAgXCIgW2NhbGxMb2dIaXN0b3J5U3R5bGVdPVwiXG4gICAgICAgICAgICBjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uY2FsbExvZ0hpc3RvcnlTdHlsZVxuICAgICAgICAgIFwiIFtvbkVycm9yXT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5vbkVycm9yIVwiPjwvY29tZXRjaGF0LWNhbGwtbG9nLWhpc3Rvcnk+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjbGlzdGl0ZW0+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21Qcm9maWxlVmlld1wiPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtbG9nLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsTG9nRGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxMb2dEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLHVCQUF1QixHQUt4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUdULGFBQWEsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsOEJBQThCLEdBQy9CLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBSVIsWUFBWSxHQUViLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7O0FBUWxFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFvRzNDLFlBQ1UsR0FBc0Is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aUI7c0JBQXpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUdHLGdDQUFnQztzQkFBeEMsS0FBSztnQkFHRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBR0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQUdHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQXZhdGFyU3R5bGUsXG4gIERhdGVTdHlsZSxcbiAgSWNvblN0eWxlLFxuICBMYWJlbFN0eWxlLFxuICBMaXN0SXRlbVN0eWxlLFxufSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQ2FsbEJ1dHRvbnNTdHlsZSxcbiAgQ2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nRGV0YWlsc1N0eWxlLFxuICBDYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbixcbiAgQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24sXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuaW1wb3J0IHtcbiAgZm9udEhlbHBlcixcbiAgbG9jYWxpemUsXG4gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLFxuICBDb21ldENoYXREZXRhaWxzT3B0aW9uLFxuICBDb21ldENoYXREZXRhaWxzVGVtcGxhdGUsXG4gIERhdGVQYXR0ZXJucyxcbiAgQ29tZXRDaGF0Q2FsbERldGFpbHNPcHRpb24sXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSBcIkBjb21ldGNoYXQvY2hhdC1zZGstamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IENhbGxEZXRhaWxVdGlscyB9IGZyb20gXCIuLi8uLi8uLi9TaGFyZWQvVXRpbHMvQ2FsbERldGFpbFV0aWxzXCJcbmltcG9ydCB7IENhbGxMb2dVdGlscyB9IGZyb20gXCIuLi8uLi8uLi9TaGFyZWQvVXRpbHMvQ2FsbExvZ1V0aWxzXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlsc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbWV0Q2hhdENhbGxMb2dEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjYWxsITogYW55O1xuICBASW5wdXQoKSBncm91cCE6IENvbWV0Q2hhdC5Hcm91cDtcbiAgQElucHV0KCkgdXNlciE6IENvbWV0Q2hhdC5Vc2VyO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gbG9jYWxpemUoXCJDQUxMX0RFVEFJTFNcIik7XG4gIEBJbnB1dCgpIG9uQmFja0NsaWNrPzogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgaGlkZVByb2ZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgY3VzdG9tUHJvZmlsZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpIGJhY2tJY29uVXJsOiBzdHJpbmcgPSBcImFzc2V0cy9iYWNrYnV0dG9uLnN2Z1wiO1xuICBASW5wdXQoKSBncmVhdGVyVGhhbkljb25VUkw6IHN0cmluZyA9IFwiYXNzZXRzL2dyZWF0ZXJUaGFuSWNvbi5zdmdcIjtcblxuICBASW5wdXQoKSBjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb246IENhbGxCdXR0b25zQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxCdXR0b25zQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb246IENhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uID1cbiAgICBuZXcgQ2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24oe30pO1xuXG4gIEBJbnB1dCgpIGNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbjogQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uID1cbiAgICBuZXcgQ2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uKHt9KTtcblxuICBASW5wdXQoKSBjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb246IENhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgb25FcnJvcjogKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCkgfCBudWxsID0gKFxuICAgIGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uXG4gICkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfTtcbiAgQElucHV0KCkgZGF0ZVBhdHRlcm46IERhdGVQYXR0ZXJucyA9IERhdGVQYXR0ZXJucy50aW1lO1xuICBASW5wdXQoKSBkYXRlUGF0dGVybjI6IERhdGVQYXR0ZXJucyA9IERhdGVQYXR0ZXJucy5EYXlEYXRlO1xuXG4gIEBJbnB1dCgpIGRhdGE6IENvbWV0Q2hhdERldGFpbHNUZW1wbGF0ZVtdID0gW107XG5cbiAgQElucHV0KCkgYXZhdGFyU3R5bGU6IEF2YXRhclN0eWxlID0ge1xuICAgIGJvcmRlclJhZGl1czogXCIxNnB4XCIsXG4gICAgd2lkdGg6IFwiMjhweFwiLFxuICAgIGhlaWdodDogXCIyOHB4XCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgfTtcbiAgQElucHV0KCkgbGFiZWxTdHlsZTogTGFiZWxTdHlsZSA9IHtcbiAgICB0ZXh0Rm9udDogJzYwMCAyMnB4IHNhbnMtc2VyaWYsIEludGVyJyxcbiAgICB0ZXh0Q29sb3I6ICdyZ2IoMjAsIDIwLCAyMCknXG4gIH07XG4gIEBJbnB1dCgpIGNhbGxEZXRhaWxzU3R5bGU6IENhbGxMb2dEZXRhaWxzU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gIH07XG5cbiAgQElucHV0KCkgbGlzdEl0ZW1TdHlsZTogTGlzdEl0ZW1TdHlsZSA9IHt9O1xuXG4gIEBJbnB1dCgpIGRhdGVTdHlsZTogRGF0ZVN0eWxlID0ge307XG4gIEBJbnB1dCgpIGNhbGxCdXR0b25zU3R5bGU6IENhbGxCdXR0b25zU3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgfTtcblxuICBpY29uU3R5bGU6IEljb25TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjE2cHhcIixcbiAgICBpY29uVGludDogXCJSR0JBKDIwLCAyMCwgMjAsIDAuNjgpXCIsXG4gIH07XG5cbiAgZGVmYXVsdFRlbXBsYXRlOiBDb21ldENoYXREZXRhaWxzVGVtcGxhdGVbXSA9IFtdO1xuXG4gIHB1YmxpYyBhdXRoVG9rZW46IHN0cmluZyA9IFwiXCI7XG4gIHB1YmxpYyBsb2dnZWRJblVzZXI6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBzaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3Q6IEJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgc2hvd0NvbWV0Q2hhdE1lc3NhZ2VzOiBCb29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHNob3dQYXJ0aWNpcGFudHNMaXN0OiBCb29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93Q2FsbFJlY29yZGluZ0xpc3Q6IEJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dDYWxsSGlzdG9yeTogQm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgZ2V0VGl0bGVTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dEZvbnQ6XG4gICAgICAgIHRoaXMuY2FsbERldGFpbHNTdHlsZS50aXRsZUZvbnQgfHxcbiAgICAgICAgZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICB0ZXh0Q29sb3I6XG4gICAgICAgIHRoaXMuY2FsbERldGFpbHNTdHlsZS50aXRsZUNvbG9yIHx8XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgdXNlckxpc3RlbmVySWQgPSBcInVzZXJsaXN0X1wiICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIHB1YmxpYyByZXF1ZXN0QnVpbGRlcjogYW55O1xuICBwdWJsaWMgbGltaXQ6IG51bWJlciA9IDU7XG5cbiAgcHVibGljIG9uSXRlbUNsaWNrOiAoY2FsbDogYW55KSA9PiB2b2lkID0gKGNhbGw6IGFueSkgPT4ge1xuICAgIHRoaXMuY2FsbCA9IGNhbGw7XG4gICAgdGhpcy5zaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3QgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0NhbGxIaXN0b3J5ID0gZmFsc2U7XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9O1xuICB0eXBlczogc3RyaW5nW10gPSBbXTtcbiAgY2F0ZWdvcmllczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBDb21ldENoYXRUaGVtZVNlcnZpY2VcbiAgKSB7fVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJ1c2VyXCJdIHx8IGNoYW5nZXNbXCJncm91cFwiXSkge1xuICAgICAgdGhpcy5zaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3QgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRzTGlzdCA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Q2FsbFJlY29yZGluZ0xpc3QgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0NhbGxIaXN0b3J5ID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dDb21ldENoYXRNZXNzYWdlcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUxpc3RlbmVyKCkge1xuICAgIENvbWV0Q2hhdC5yZW1vdmVVc2VyTGlzdGVuZXIodGhpcy51c2VyTGlzdGVuZXJJZCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgIC50aGVuKCh1c2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHRoaXMubG9nZ2VkSW5Vc2VyIS5nZXRBdXRoVG9rZW4oKTtcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IENvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5zZXRUaGVtZVN0eWxlKCk7XG4gIH1cblxuICB0cmFja0J5Rm5PcHRpb24oaW5kZXg6IG51bWJlciwgb3B0aW9uOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBvcHRpb24uaWQ7XG4gIH1cbiAgZ2V0VGVtcGxhdGUoKSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZGVmYXVsdFRlbXBsYXRlID0gdGhpcy5kYXRhO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRUZW1wbGF0ZSA9IENhbGxEZXRhaWxVdGlscy5nZXREZWZhdWx0Q2FsbFRlbXBsYXRlKFxuICAgICAgICB0aGlzLmNhbGwsXG4gICAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyISxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRUZW1wbGF0ZU9wdGlvbnMgPSAodGVtcGxhdGU6IENvbWV0Q2hhdERldGFpbHNUZW1wbGF0ZSkgPT4ge1xuICAgIGlmICh0ZW1wbGF0ZS5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGVtcGxhdGUub3B0aW9ucyh0aGlzLnVzZXIsIHRoaXMuZ3JvdXAsIHRlbXBsYXRlLmlkIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHJldHVybiBbXTtcbiAgfTtcblxuICBnZXRDdXN0b21PcHRpb25WaWV3KG9wdGlvbjogQ29tZXRDaGF0RGV0YWlsc09wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24/LmN1c3RvbVZpZXc7XG4gIH1cblxuICBnZXRTZWN0aW9uSGVhZGVyU3R5bGUodGVtcGxhdGU6IENvbWV0Q2hhdERldGFpbHNUZW1wbGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICB0ZXh0Rm9udDogdGVtcGxhdGUudGl0bGVGb250LFxuICAgICAgdGV4dENvbG9yOiB0ZW1wbGF0ZS50aXRsZUNvbG9yLFxuICAgIH07XG4gIH1cblxuICBvbk9wdGlvbkNsaWNrID0gKG9wdGlvbjogQ29tZXRDaGF0Q2FsbERldGFpbHNPcHRpb24pID0+IHtcbiAgICBpZiAob3B0aW9uPy5vbkNsaWNrKSB7XG4gICAgICBvcHRpb24ub25DbGljayh0aGlzLmNhbGwhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChvcHRpb24uaWQpIHtcbiAgICAgICAgY2FzZSBcInBhcnRpY2lwYW50c1wiOlxuICAgICAgICAgIHRoaXMuc2hvd0NhbGxMb2dEZXRhaWxPcHRpb25MaXN0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93UGFydGljaXBhbnRzTGlzdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyZWNvcmRpbmdzXCI6XG4gICAgICAgICAgdGhpcy5zaG93Q2FsbExvZ0RldGFpbE9wdGlvbkxpc3QgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuc2hvd0NhbGxSZWNvcmRpbmdMaXN0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiY2FsbEhpc3RvcnlcIjpcbiAgICAgICAgICB0aGlzLnNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zaG93Q2FsbEhpc3RvcnkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGdldEJ1dHRvblN0eWxlKG9wdGlvbjogQ29tZXRDaGF0RGV0YWlsc09wdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgICBidXR0b25UZXh0Rm9udDogb3B0aW9uPy50aXRsZUZvbnQsXG4gICAgICBidXR0b25UZXh0Q29sb3I6IG9wdGlvbj8udGl0bGVDb2xvcixcbiAgICAgIGJhY2tncm91bmQ6IG9wdGlvbj8uYmFja2dyb3VuZENvbG9yIHx8IFwidHJhbnNwYXJlbnRcIixcbiAgICB9O1xuICB9XG5cblxuICBoYW5kbGVQYWdlT25CYWNrQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGhpcy5zaG93Q2FsbEhpc3RvcnkgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDYWxsUmVjb3JkaW5nTGlzdCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50c0xpc3QgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb21ldENoYXRNZXNzYWdlcyA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0NhbGxMb2dEZXRhaWxPcHRpb25MaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH07XG5cbiAgc3VidGl0bGVTdHlsZSh0ZW1wbGF0ZTogQ29tZXRDaGF0RGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHRGb250OiB0ZW1wbGF0ZS50aXRsZUZvbnQsXG4gICAgICB0ZXh0Q29sb3I6IHRlbXBsYXRlLnRpdGxlQ29sb3IsXG4gICAgfTtcbiAgfVxuICBzaG93RGF0YVNlY3Rpb25TdHlsZSh0ZW1wbGF0ZTogQ29tZXRDaGF0RGV0YWlsc1RlbXBsYXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHRGb250OiB0ZW1wbGF0ZS50aXRsZUZvbnQsXG4gICAgICB0ZXh0Q29sb3I6IHRlbXBsYXRlLnRpdGxlQ29sb3IsXG4gICAgfTtcbiAgfVxuXG4gIHNldFRoZW1lU3R5bGUoKSB7XG4gICAgdGhpcy5zZXREZXRhaWxzU3R5bGUoKTtcbiAgICB0aGlzLnNldEF2YXRhclN0eWxlKCk7XG4gICAgdGhpcy5zZXRMaXN0SXRlbVN0eWxlKCk7XG4gICAgdGhpcy5zZXREYXRlU3R5bGUoKTtcbiAgfVxuICBzZXRMaXN0SXRlbVN0eWxlKCkge1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IExpc3RJdGVtU3R5bGUgPSBuZXcgTGlzdEl0ZW1TdHlsZSh7XG4gICAgICBoZWlnaHQ6IFwiNDVweFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ1MCgpIHx8XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYWN0aXZlQmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjVweFwiLFxuICAgICAgdGl0bGVGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUyKSxcbiAgICAgIHRpdGxlQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgfSk7XG4gICAgdGhpcy5saXN0SXRlbVN0eWxlID0geyAuLi5kZWZhdWx0U3R5bGUsIC4uLnRoaXMubGlzdEl0ZW1TdHlsZSB9O1xuICB9XG4gIHNldEF2YXRhclN0eWxlKCkge1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IEF2YXRhclN0eWxlID0gbmV3IEF2YXRhclN0eWxlKHtcbiAgICAgIGJvcmRlclJhZGl1czogXCIyNHB4XCIsXG4gICAgICB3aWR0aDogXCI0NnB4XCIsXG4gICAgICBoZWlnaHQ6IFwiNDZweFwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgIG5hbWVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50OTAwKCksXG4gICAgICBiYWNrZ3JvdW5kU2l6ZTogXCJjb3ZlclwiLFxuICAgICAgbmFtZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcblxuICAgICAgb3V0ZXJWaWV3Qm9yZGVyU3BhY2luZzogXCJcIixcbiAgICB9KTtcbiAgICB0aGlzLmF2YXRhclN0eWxlID0geyAuLi5kZWZhdWx0U3R5bGUsIC4uLnRoaXMuYXZhdGFyU3R5bGUgfTtcbiAgfVxuXG4gIHNldERldGFpbHNTdHlsZSgpIHtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOiBDYWxsTG9nRGV0YWlsc1N0eWxlID0gbmV3IENhbGxMb2dEZXRhaWxzU3R5bGUoe1xuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgICAgdGl0bGVDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGJhY2tJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KCksXG4gICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIlwiLFxuICAgICAgbmFtZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUyKSxcbiAgICB9KTtcbiAgICB0aGlzLmNhbGxEZXRhaWxzU3R5bGUgPSB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5jYWxsRGV0YWlsc1N0eWxlIH07XG4gIH1cblxuICBzZXREYXRlU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogRGF0ZVN0eWxlID0gbmV3IERhdGVTdHlsZSh7XG4gICAgICB0ZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKSxcbiAgICAgIHRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICB9KTtcbiAgICB0aGlzLmRhdGVTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLmRhdGVTdHlsZSB9O1xuICB9XG4gIHdyYXBwZXJTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHRoaXMuY2FsbERldGFpbHNTdHlsZS53aWR0aCxcbiAgICAgIGhlaWdodDogdGhpcy5jYWxsRGV0YWlsc1N0eWxlLmhlaWdodCxcbiAgICAgIGJvcmRlcjogdGhpcy5jYWxsRGV0YWlsc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy5jYWxsRGV0YWlsc1N0eWxlLmJvcmRlclJhZGl1cyxcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMuY2FsbERldGFpbHNTdHlsZS5iYWNrZ3JvdW5kLFxuICAgICAgcGFkZGluZzogJzE2cHgnLFxuICAgIH07XG4gIH07XG5cbiAgcHJvZmlsZUNvbnRhaW5lclN0eWxlID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgbWluSGVpZ2h0OiBcIjE1MHB4XCIsXG4gICAgICBwYWRkaW5nOiBcIjE2cHhcIixcbiAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgIGJveFNpemluZzogXCJib3JkZXItYm94XCIsXG4gICAgICBnYXA6IFwiOHB4XCIsXG4gICAgfVxuICB9XG5cbiAgZ2V0VGFpbFZpZXdTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm57XG4gICAgICBmb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlPy50aGVtZS50eXBvZ3JhcGh5LnRleHQzKSxcbiAgICAgIGNvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgfVxuICB9XG5cbiAgZ2V0VGFpbFZpZXcodG90YWxTZWNvbmRzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gQ2FsbExvZ1V0aWxzLmNvbnZlcnRNaW51dGVzVG9Ib3Vyc01pbnV0ZXNTZWNvbmRzKHRvdGFsU2Vjb25kcyk7XG4gIH1cblxuICBnZXRTdWJ0aXRsZShjYWxsOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBDYWxsTG9nVXRpbHMuZ2V0Q2FsbFN0YXR1c1dpdGhUeXBlKGNhbGwsIHRoaXMubG9nZ2VkSW5Vc2VyISk7XG4gIH1cblxuICBiYWNrQnV0dG9uU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogXCIyNHB4XCIsXG4gICAgICB3aWR0aDogXCIyNHB4XCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjBcIixcbiAgICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgIGJ1dHRvbkljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICB9O1xuICB9O1xuICBnZXRMaXN0SXRlbVN0eWxlKG9wdGlvbjogQ29tZXRDaGF0RGV0YWlsc09wdGlvbikge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgb3B0aW9uPy5iYWNrZ3JvdW5kQ29sb3IgfHxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXJSYWRpdXM6IFwiOHB4XCIsXG4gICAgICB0aXRsZUZvbnQ6XG4gICAgICAgIG9wdGlvbj8udGl0bGVGb250IHx8XG4gICAgICAgIGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3dyYXBwZXJcIiAqbmdJZj1cInVzZXIgfHwgZ3JvdXBcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19oZWFkZXJcIlxuICAgICpuZ0lmPVwib25CYWNrQ2xpY2sgJiYgIShzaG93UGFydGljaXBhbnRzTGlzdCB8fCBzaG93Q2FsbFJlY29yZGluZ0xpc3QgfHwgc2hvd0NhbGxIaXN0b3J5KVwiPlxuICAgIDxjb21ldGNoYXQtYnV0dG9uIFtpY29uVVJMXT1cImJhY2tJY29uVXJsXCIgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jbG9zZS1idXR0b25cIiBbYnV0dG9uU3R5bGVdPVwiYmFja0J1dHRvblN0eWxlKClcIlxuICAgICAgKGNjLWJ1dHRvbi1jbGlja2VkKT1cIm9uQmFja0NsaWNrKClcIj48L2NvbWV0Y2hhdC1idXR0b24+XG4gICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJ0aXRsZVwiIFtsYWJlbFN0eWxlXT1cImdldFRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19wcm9maWxlXCJcbiAgICAgICpuZ0lmPVwiIWhpZGVQcm9maWxlICYmIHNob3dDYWxsTG9nRGV0YWlsT3B0aW9uTGlzdCAmJiAhKHNob3dQYXJ0aWNpcGFudHNMaXN0IHx8IHNob3dDYWxsUmVjb3JkaW5nTGlzdCB8fCBzaG93Q2FsbEhpc3RvcnkpXCI+XG5cblxuICAgICAgPGRpdiBjbGFzcz1cIiBjYy1jYWxsLWxvZy1kZXRhaWxzX19kZWZhdWx0LXByb2ZpbGVcIiAqbmdJZj1cIiFjdXN0b21Qcm9maWxlVmlldztlbHNlIGxpc3RpdGVtXCIgW25nU3R5bGVdPVwicHJvZmlsZUNvbnRhaW5lclN0eWxlKClcIj5cbiAgICAgICAgPGNvbWV0Y2hhdC1hdmF0YXIgW25hbWVdPVwidXNlcj8uZ2V0TmFtZSgpID8/IGdyb3VwPy5nZXROYW1lKClcIiBbYXZhdGFyU3R5bGVdPVwiYXZhdGFyU3R5bGVcIlxuICAgICAgICAgIFtpbWFnZV09XCJ1c2VyPy5nZXRBdmF0YXIoKSA/PyBncm91cD8uZ2V0SWNvbigpXCI+XG4gICAgICAgIDwvY29tZXRjaGF0LWF2YXRhcj5cblxuICAgICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cInVzZXI/LmdldE5hbWUoKSA/PyB0aGlzLmdyb3VwPy5nZXROYW1lKClcIiBbbGFiZWxTdHlsZV09XCJsYWJlbFN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fc2VjdGlvbi1saXN0XCJcbiAgICAgICpuZ0lmPVwic2hvd0NhbGxMb2dEZXRhaWxPcHRpb25MaXN0ICYmIGRlZmF1bHRUZW1wbGF0ZSAmJiBkZWZhdWx0VGVtcGxhdGUubGVuZ3RoID4gMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3NlY3Rpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0VGVtcGxhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX3NlY3Rpb24tc2VwYXJhdG9yXCIgKm5nSWY9XCJpdGVtLnRpdGxlXCI+XG4gICAgICAgICAgPGNvbWV0Y2hhdC1sYWJlbCBbdGV4dF09XCJpdGVtLnRpdGxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fb3B0aW9ucy13cmFwcGVyXCIgKm5nSWY9XCJnZXRUZW1wbGF0ZU9wdGlvbnMoaXRlbSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fb3B0aW9uc1wiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZ2V0VGVtcGxhdGVPcHRpb25zKGl0ZW0pOyAgdHJhY2tCeTogdHJhY2tCeUZuT3B0aW9uIFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX29wdGlvblwiICpuZ0lmPVwiIWdldEN1c3RvbU9wdGlvblZpZXcob3B0aW9uKTtlbHNlIGN1c3RvbVZpZXdcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtbG9nLWRldGFpbHNfX29wdGlvbi1lbGVtZW50XCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fY2FsbGluZy1kZWZhdWx0LW9wdGlvblwiICpuZ0lmPVwib3B0aW9uLmlkPT0nY2FsbHMnXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxjb21ldGNoYXQtY2FsbC1idXR0b25zIFt1c2VyXT1cInVzZXJcIiBbZ3JvdXBdPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICBbY2FsbEJ1dHRvbnNTdHlsZV09XCJjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb24uY2FsbEJ1dHRvbnNTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtvblZpZGVvQ2FsbENsaWNrXT1cImNhbGxCdXR0b25zQ29uZmlndXJhdGlvbi5vblZpZGVvQ2FsbENsaWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW29uVm9pY2VDYWxsQ2xpY2tdPVwiY2FsbEJ1dHRvbnNDb25maWd1cmF0aW9uLm9uVm9pY2VDYWxsQ2xpY2tcIlxuICAgICAgICAgICAgICAgICAgICBbdmlkZW9DYWxsSWNvblVSTF09XCJjYWxsQnV0dG9uc0NvbmZpZ3VyYXRpb24udmlkZW9DYWxsSWNvblVSTFwiXG4gICAgICAgICAgICAgICAgICAgIFt2b2ljZUNhbGxJY29uVVJMXT1cImNhbGxCdXR0b25zQ29uZmlndXJhdGlvbi52b2ljZUNhbGxJY29uVVJMXCI+PC9jb21ldGNoYXQtY2FsbC1idXR0b25zPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxjb21ldGNoYXQtbGlzdC1pdGVtICpuZ0lmPVwib3B0aW9uLmlkPT09J2NhbGxTdGF0dXMnXCIgW2xpc3RJdGVtU3R5bGVdPVwiZ2V0TGlzdEl0ZW1TdHlsZShvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgIFtoaWRlU2VwYXJhdG9yXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jYWxsLVN0YXR1c1wiIHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIiA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3VidGl0bGVWaWV3OyBlbHNlIHN1YnRpdGxlXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiA8Y29tZXRjaGF0LWRhdGUgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbdGltZXN0YW1wXT1cImNhbGw/LmdldEluaXRpYXRlZEF0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJkYXRlUGF0dGVybjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY29tZXRjaGF0LWRhdGU+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYy1jYWxsLWxvZy1kZXRhaWxzX19jYWxsLVN0YXR1c19fc3ViVGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbWV0Y2hhdC1kYXRlIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCIgW3RpbWVzdGFtcF09XCJjYWxsPy5nZXRJbml0aWF0ZWRBdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJkYXRlUGF0dGVyblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbWV0Y2hhdC1kYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cImdldFN1YnRpdGxlKGNhbGwpXCIgW2xhYmVsU3R5bGVdPVwic3VidGl0bGVTdHlsZShvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29tZXRjaGF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fY2FsbC1TdGF0dXNfX3RhaWx2aWV3XCIgW3N0eWxlXT1cImdldFRhaWxWaWV3U3R5bGUoKVwiPiB7eyBnZXRUYWlsVmlldyhjYWxsPy5nZXRUb3RhbER1cmF0aW9uSW5NaW51dGVzKCkhKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3VidGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YnRpdGxlVmlldztjb250ZXh0OnsgJGltcGxpY2l0OiB1c2VyID8/IGdyb3VwIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICA8L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgPGNvbWV0Y2hhdC1saXN0LWl0ZW0gKm5nSWY9XCJvcHRpb24uaWQhPT0nY2FsbHMnICYmIG9wdGlvbi5pZCE9PSdjYWxsU3RhdHVzJyBcIlxuICAgICAgICAgICAgICAgICAgKGNjLWxpc3RpdGVtLWNsaWNrZWQpPVwib25PcHRpb25DbGljayhvcHRpb24pXCIgW2xpc3RJdGVtU3R5bGVdPVwiZ2V0TGlzdEl0ZW1TdHlsZShvcHRpb24pXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJvcHRpb24udGl0bGVcIiBbaGlkZVNlcGFyYXRvcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHNsb3Q9XCJ0YWlsVmlld1wiIGNsYXNzPVwiY2MtY2FsbC1sb2ctZGV0YWlsc19fc2Vjb25kYXJ5LXZpZXdfX3RhaWwtdmlld1wiIFtzdHlsZV09XCJnZXRUYWlsVmlld1N0eWxlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi50YWlsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjb21ldGNoYXQtaWNvbiBbaWNvblN0eWxlXT1cImljb25TdHlsZVwiIFtVUkxdPVwiZ3JlYXRlclRoYW5JY29uVVJMXCI+PC9jb21ldGNoYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICA8L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tVmlldz5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImdldEN1c3RvbU9wdGlvblZpZXcob3B0aW9uKVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuXG4gICAgPGRpdiAqbmdJZj1cInNob3dQYXJ0aWNpcGFudHNMaXN0IHx8IHNob3dDYWxsUmVjb3JkaW5nTGlzdCB8fCBzaG93Q2FsbEhpc3RvcnlcIiBzdHlsZT1cIiBoZWlnaHQ6IDEwMCU7XCI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRzTGlzdFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxuICAgICAgICA8Y29tZXRjaGF0LWNhbGwtbG9nLXBhcnRpY2lwYW50cyBbY2FsbF09XCJjYWxsXCJcbiAgICAgICAgICBbb25CYWNrQ2xpY2tdPVwiY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24ub25CYWNrQ2xpY2sgfHwgaGFuZGxlUGFnZU9uQmFja0NsaWNrXCJcbiAgICAgICAgICBbYmFja0ljb25VcmxdPVwiY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24uYmFja0ljb25VcmwgfHwgYmFja0ljb25VcmxcIlxuICAgICAgICAgIFthdmF0YXJTdHlsZV09XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5hdmF0YXJTdHlsZVwiXG4gICAgICAgICAgW29uSXRlbUNsaWNrXT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLm9uSXRlbUNsaWNrIVwiXG4gICAgICAgICAgW2RhdGVQYXR0ZXJuXT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLmRhdGVQYXR0ZXJuXCJcbiAgICAgICAgICBbc3VidGl0bGVWaWV3XT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLnN1YnRpdGxlVmlld1wiXG4gICAgICAgICAgW2xpc3RJdGVtVmlld109XCJjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIlxuXG4gICAgICAgICAgW2xpc3RJdGVtU3R5bGVdPVwiY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb24ubGlzdEl0ZW1TdHlsZVwiIFtjYWxsTG9nUGFydGljaXBhbnRzU3R5bGVdPVwiXG4gICAgICAgIGNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLmNhbGxMb2dQYXJ0aWNpcGFudHNTdHlsZVwiXG4gICAgICAgXG4gICAgICAgICAgW3RhaWxWaWV3XT1cImNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uLnRhaWxWaWV3XCI+PC9jb21ldGNoYXQtY2FsbC1sb2ctcGFydGljaXBhbnRzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NhbGxSZWNvcmRpbmdMaXN0XCIgc3R5bGU9XCJoZWlnaHQ6MTAwJTtcIj5cbiAgICAgICAgPGNvbWV0Y2hhdC1jYWxsLWxvZy1yZWNvcmRpbmdzIFtjYWxsXT1cImNhbGxcIlxuICAgICAgICAgIFtiYWNrSWNvblVybF09XCJjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24uYmFja0ljb25VcmwgfHwgYmFja0ljb25VcmxcIiBbb25CYWNrQ2xpY2tdPVwiXG4gICAgICAgIGNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5vbkJhY2tDbGljayB8fCBoYW5kbGVQYWdlT25CYWNrQ2xpY2tcbiAgICAgIFwiIFtvbkl0ZW1DbGlja109XCJjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24ub25JdGVtQ2xpY2shXCJcbiAgICAgICAgICBbZGF0ZVBhdHRlcm5dPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLmRhdGVQYXR0ZXJuIVwiXG4gICAgICAgICAgW2xpc3RJdGVtU3R5bGVdPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIiBjYWxsTG9nUmVjb3JkaW5nc1N0eWxlPVwiXG4gICAgICAgIGNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5jYWxsTG9nUmVjb3JkaW5nc1N0eWxlXG4gICAgICAgIGNhbGxMb2dSZWNvcmRpbmdzQ29uZmlndXJhdGlvbi5oaWRlRG93bmxvYWRCdXR0b24gfHwgZmFsc2VcbiAgICAgIFwiIFtvbkRvd25sb2FkQ2xpY2tdPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLm9uRG93bmxvYWRDbGljayFcIlxuICAgICAgICAgIFtsaXN0SXRlbVZpZXddPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLmxpc3RJdGVtVmlld1wiXG4gICAgICAgICAgW3N1YnRpdGxlVmlld109XCJjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb24uc3VidGl0bGVWaWV3XCJcbiAgICAgICAgICBbdGFpbFZpZXddPVwiY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uLnRhaWxWaWV3XCI+PC9jb21ldGNoYXQtY2FsbC1sb2ctcmVjb3JkaW5ncz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDYWxsSGlzdG9yeVwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlOyBcIj5cbiAgICAgICAgPGNvbWV0Y2hhdC1jYWxsLWxvZy1oaXN0b3J5IFtjYWxsXT1cImNhbGxcIiBbdXNlcl09XCJ1c2VyXCIgW2dyb3VwXT1cImdyb3VwXCIgW29uQmFja0NsaWNrXT1cImhhbmRsZVBhZ2VPbkJhY2tDbGlja1wiXG4gICAgICAgICAgW2JhY2tJY29uVXJsXT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5iYWNrSWNvblVybCB8fCBiYWNrSWNvblVybFwiXG4gICAgICAgICAgW2VtcHR5U3RhdGVWaWV3XT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5lbXB0eVN0YXRlVmlld1wiXG4gICAgICAgICAgW2Vycm9yU3RhdGVWaWV3XT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5lcnJvclN0YXRlVmlld1wiXG4gICAgICAgICAgW2xvYWRpbmdJY29uVVJMXT1cImNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5sb2FkaW5nSWNvblVSTFwiXG4gICAgICAgICAgW2xvYWRpbmdTdGF0ZVZpZXddPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLmxvYWRpbmdTdGF0ZVZpZXdcIlxuICAgICAgICAgIFt0YWlsVmlld109XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24udGFpbFZpZXdcIiBbY2FsbExvZ1JlcXVlc3RCdWlsZGVyXT1cIlxuICAgICAgICAgICAgY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLmNhbGxMb2dSZXF1ZXN0QnVpbGRlclxuICAgICAgICAgIFwiIFtvbkl0ZW1DbGlja109XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24ub25JdGVtQ2xpY2sgfHwgb25JdGVtQ2xpY2tcIiBbb25CYWNrQ2xpY2tdPVwiXG4gICAgICAgICAgICBjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24ub25CYWNrQ2xpY2sgfHwgaGFuZGxlUGFnZU9uQmFja0NsaWNrXG4gICAgICAgICAgXCIgW2xpc3RJdGVtU3R5bGVdPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLmxpc3RJdGVtU3R5bGVcIlxuICAgICAgICAgIFtkYXRlUGF0dGVybl09XCJjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uZGF0ZVBhdHRlcm5cIiBbZGF0ZVNlcGFyYXRvclBhdHRlcm5dPVwiXG4gICAgICAgICAgICBjYWxsTG9nSGlzdG9yeUNvbmZpZ3VyYXRpb24uZGF0ZVNlcGFyYXRvclBhdHRlcm5cbiAgICAgICAgICBcIiBbY2FsbExvZ0hpc3RvcnlTdHlsZV09XCJcbiAgICAgICAgICAgIGNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbi5jYWxsTG9nSGlzdG9yeVN0eWxlXG4gICAgICAgICAgXCIgW29uRXJyb3JdPVwiY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uLm9uRXJyb3IhXCI+PC9jb21ldGNoYXQtY2FsbC1sb2ctaGlzdG9yeT5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPG5nLXRlbXBsYXRlICNsaXN0aXRlbT5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVByb2ZpbGVWaWV3XCI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -167,10 +167,10 @@ export class CometChatCallLogsWithDetailsComponent {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
CometChatCallLogsWithDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallLogsWithDetailsComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
-
CometChatCallLogsWithDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallLogsWithDetailsComponent, selector: "cometchat-call-logs-with-details", inputs: { isMobileView: "isMobileView", messageText: "messageText", withDetailsStyle: "withDetailsStyle", showMoreInfo: "showMoreInfo", backdropStyle: "backdropStyle", call: "call", callLogDetailsConfiguration: "callLogDetailsConfiguration", callLogConfiguration: "callLogConfiguration", onError: "onError" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-logs [activeCall]=\"activeCall\" [showMoreInfo]=\"showMoreInfo\" [backdropStyle]=\"backdropStyle\"\n [activeCall]=\"activeCall\" [titleAlignment]=\"callLogConfiguration?.titleAlignment!\"\n [emptyStateView]=\"callLogConfiguration.emptyStateView\" \n [errorStateView]=\"callLogConfiguration.errorStateView\"\n [subtitleView]=\"callLogConfiguration.subtitleView\" \n [listItemView]=\"callLogConfiguration.listItemView\" \n [tailView]=\"callLogConfiguration.tailView\" \n [loadingIconURL]=\"callLogConfiguration.loadingIconURL\" [loadingStateView]=\"callLogConfiguration.loadingStateView\"\n [callLogRequestBuilder]=\"callLogConfiguration.callLogRequestBuilder\"\n [onItemClick]=\"callLogConfiguration.onItemClick!\" [onInfoClick]=\"callLogConfiguration.onInfoClick || onInfoClick! \"\n [onError]=\"callLogConfiguration.onError!\" [listItemStyle]=\"callLogConfiguration.listItemStyle\"\n [infoIconUrl]=\"callLogConfiguration.infoIconUrl\" [datePattern]=\"callLogConfiguration.datePattern\"\n [dateSeparatorPattern]=\"callLogConfiguration.dateSeparatorPattern\"\n [incomingAudioCallIconUrl]=\"callLogConfiguration.incomingAudioCallIconUrl\"\n [incomingVideoCallIconUrl]=\"callLogConfiguration.incomingVideoCallIconUrl\"\n [outgoingAudioCallIconUrl]=\"callLogConfiguration.outgoingAudioCallIconUrl\"\n [outgoingVideoCallIconUrl]=\"callLogConfiguration.outgoingVideoCallIconUrl\"\n [missedAudioCallIconUrl]=\"callLogConfiguration.missedAudioCallIconUrl\"\n [missedVideoCallIconUrl]=\"callLogConfiguration.missedVideoCallIconUrl\"\n [callLogsStyle]=\"callLogConfiguration.callLogsStyle\" [avatarStyle]=\"callLogConfiguration.avatarStyle\"\n [hideSeparator]=\"callLogConfiguration.hideSeparator\"\n [outgoingCallConfiguration]=\"callLogConfiguration.outgoingCallConfiguration\"></cometchat-call-logs>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"activeCall && (user || group)\">\n <!--call details Screen-->\n <cometchat-call-log-details [user]=\"user!\" [group]=\"group!\" [call]=\"call\"\n [backIconUrl]=\"computedCallLogDetailsConfig.backIconUrl\" [avatarStyle]=\"computedCallLogDetailsConfig.avatarStyle\"\n [onBackClick]=\"computedCallLogDetailsConfig.onBackClick
|
|
170
|
+
CometChatCallLogsWithDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallLogsWithDetailsComponent, selector: "cometchat-call-logs-with-details", inputs: { isMobileView: "isMobileView", messageText: "messageText", withDetailsStyle: "withDetailsStyle", showMoreInfo: "showMoreInfo", backdropStyle: "backdropStyle", call: "call", callLogDetailsConfiguration: "callLogDetailsConfiguration", callLogConfiguration: "callLogConfiguration", onError: "onError" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-logs [activeCall]=\"activeCall\" [showMoreInfo]=\"showMoreInfo\" [backdropStyle]=\"backdropStyle\"\n [activeCall]=\"activeCall\" [titleAlignment]=\"callLogConfiguration?.titleAlignment!\"\n [emptyStateView]=\"callLogConfiguration.emptyStateView\" \n [errorStateView]=\"callLogConfiguration.errorStateView\"\n [subtitleView]=\"callLogConfiguration.subtitleView\" \n [listItemView]=\"callLogConfiguration.listItemView\" \n [tailView]=\"callLogConfiguration.tailView\" \n [loadingIconURL]=\"callLogConfiguration.loadingIconURL\" [loadingStateView]=\"callLogConfiguration.loadingStateView\"\n [callLogRequestBuilder]=\"callLogConfiguration.callLogRequestBuilder\"\n [onItemClick]=\"callLogConfiguration.onItemClick!\" [onInfoClick]=\"callLogConfiguration.onInfoClick || onInfoClick! \"\n [onError]=\"callLogConfiguration.onError!\" [listItemStyle]=\"callLogConfiguration.listItemStyle\"\n [infoIconUrl]=\"callLogConfiguration.infoIconUrl\" [datePattern]=\"callLogConfiguration.datePattern\"\n [dateSeparatorPattern]=\"callLogConfiguration.dateSeparatorPattern\"\n [incomingAudioCallIconUrl]=\"callLogConfiguration.incomingAudioCallIconUrl\"\n [incomingVideoCallIconUrl]=\"callLogConfiguration.incomingVideoCallIconUrl\"\n [outgoingAudioCallIconUrl]=\"callLogConfiguration.outgoingAudioCallIconUrl\"\n [outgoingVideoCallIconUrl]=\"callLogConfiguration.outgoingVideoCallIconUrl\"\n [missedAudioCallIconUrl]=\"callLogConfiguration.missedAudioCallIconUrl\"\n [missedVideoCallIconUrl]=\"callLogConfiguration.missedVideoCallIconUrl\"\n [callLogsStyle]=\"callLogConfiguration.callLogsStyle\" [avatarStyle]=\"callLogConfiguration.avatarStyle\"\n [hideSeparator]=\"callLogConfiguration.hideSeparator\"\n [outgoingCallConfiguration]=\"callLogConfiguration.outgoingCallConfiguration\"></cometchat-call-logs>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"activeCall && (user || group)\">\n <!--call details Screen-->\n <cometchat-call-log-details [user]=\"user!\" [group]=\"group!\" [call]=\"call\"\n [backIconUrl]=\"computedCallLogDetailsConfig.backIconUrl\" [avatarStyle]=\"computedCallLogDetailsConfig.avatarStyle\"\n [onBackClick]=\"computedCallLogDetailsConfig.onBackClick || onBackClick\"\n [callLogHistoryConfiguration]=\"computedCallLogDetailsConfig.callLogHistoryConfiguration\"\n [callLogParticipantsConfiguration]=\"computedCallLogDetailsConfig.callLogParticipantsConfiguration\"\n [callLogRecordingsConfiguration]=\"computedCallLogDetailsConfig.callLogRecordingsConfiguration\"\n [callLogDetailStyle]=\"computedCallLogDetailsConfig.callLogDetailsStyle\">\n </cometchat-call-log-details>\n </div>\n\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user && !group\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>", styles: [".cc-with-details__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-details__sidebar{width:280px;height:100%;position:relative}.cc-with-details__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.CometchatCallLogsComponent, selector: "cometchat-call-logs", inputs: ["title", "titleAlignment", "listItemView", "subtitleView", "tailView", "menu", "emptyStateView", "errorStateView", "emptyStateText", "errorStateText", "loadingStateView", "loadingIconURL", "infoIconUrl", "missedAudioCallIconUrl", "missedVideoCallIconUrl", "outgoingAudioCallIconUrl", "outgoingVideoCallIconUrl", "incomingAudioCallIconUrl", "incomingVideoCallIconUrl", "callLogRequestBuilder", "cometchatCallObject", "onItemClick", "onInfoClick", "onError", "activeCall", "datePattern", "DateSeparatorPattern", "callLogsStyle", "avatarStyle", "hideSeparator", "dateSeparatorStyle", "outgoingCallConfiguration", "hideError", "showSectionHeader", "showMoreInfo", "sectionHeaderField", "backdropStyle", "dateStyle", "listItemStyle", "ongoingCallConfiguration"] }, { type: i3.CometChatCallLogDetailsComponent, selector: "cometchat-call-log-details", inputs: ["call", "group", "user", "title", "onBackClick", "hideProfile", "subtitleView", "customProfileView", "backIconUrl", "greaterThanIconURL", "callButtonsConfiguration", "callLogParticipantsConfiguration", "callLogHistoryConfiguration", "callLogRecordingsConfiguration", "onError", "datePattern", "datePattern2", "data", "avatarStyle", "labelStyle", "callDetailsStyle", "listItemStyle", "dateStyle", "callButtonsStyle"] }], 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 });
|
|
171
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallLogsWithDetailsComponent, decorators: [{
|
|
172
172
|
type: Component,
|
|
173
|
-
args: [{ selector: "cometchat-call-logs-with-details", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-logs [activeCall]=\"activeCall\" [showMoreInfo]=\"showMoreInfo\" [backdropStyle]=\"backdropStyle\"\n [activeCall]=\"activeCall\" [titleAlignment]=\"callLogConfiguration?.titleAlignment!\"\n [emptyStateView]=\"callLogConfiguration.emptyStateView\" \n [errorStateView]=\"callLogConfiguration.errorStateView\"\n [subtitleView]=\"callLogConfiguration.subtitleView\" \n [listItemView]=\"callLogConfiguration.listItemView\" \n [tailView]=\"callLogConfiguration.tailView\" \n [loadingIconURL]=\"callLogConfiguration.loadingIconURL\" [loadingStateView]=\"callLogConfiguration.loadingStateView\"\n [callLogRequestBuilder]=\"callLogConfiguration.callLogRequestBuilder\"\n [onItemClick]=\"callLogConfiguration.onItemClick!\" [onInfoClick]=\"callLogConfiguration.onInfoClick || onInfoClick! \"\n [onError]=\"callLogConfiguration.onError!\" [listItemStyle]=\"callLogConfiguration.listItemStyle\"\n [infoIconUrl]=\"callLogConfiguration.infoIconUrl\" [datePattern]=\"callLogConfiguration.datePattern\"\n [dateSeparatorPattern]=\"callLogConfiguration.dateSeparatorPattern\"\n [incomingAudioCallIconUrl]=\"callLogConfiguration.incomingAudioCallIconUrl\"\n [incomingVideoCallIconUrl]=\"callLogConfiguration.incomingVideoCallIconUrl\"\n [outgoingAudioCallIconUrl]=\"callLogConfiguration.outgoingAudioCallIconUrl\"\n [outgoingVideoCallIconUrl]=\"callLogConfiguration.outgoingVideoCallIconUrl\"\n [missedAudioCallIconUrl]=\"callLogConfiguration.missedAudioCallIconUrl\"\n [missedVideoCallIconUrl]=\"callLogConfiguration.missedVideoCallIconUrl\"\n [callLogsStyle]=\"callLogConfiguration.callLogsStyle\" [avatarStyle]=\"callLogConfiguration.avatarStyle\"\n [hideSeparator]=\"callLogConfiguration.hideSeparator\"\n [outgoingCallConfiguration]=\"callLogConfiguration.outgoingCallConfiguration\"></cometchat-call-logs>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"activeCall && (user || group)\">\n <!--call details Screen-->\n <cometchat-call-log-details [user]=\"user!\" [group]=\"group!\" [call]=\"call\"\n [backIconUrl]=\"computedCallLogDetailsConfig.backIconUrl\" [avatarStyle]=\"computedCallLogDetailsConfig.avatarStyle\"\n [onBackClick]=\"computedCallLogDetailsConfig.onBackClick
|
|
173
|
+
args: [{ selector: "cometchat-call-logs-with-details", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-details__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-details__sidebar\" [ngClass]=\"{mobile : isMobileView}\">\n <cometchat-call-logs [activeCall]=\"activeCall\" [showMoreInfo]=\"showMoreInfo\" [backdropStyle]=\"backdropStyle\"\n [activeCall]=\"activeCall\" [titleAlignment]=\"callLogConfiguration?.titleAlignment!\"\n [emptyStateView]=\"callLogConfiguration.emptyStateView\" \n [errorStateView]=\"callLogConfiguration.errorStateView\"\n [subtitleView]=\"callLogConfiguration.subtitleView\" \n [listItemView]=\"callLogConfiguration.listItemView\" \n [tailView]=\"callLogConfiguration.tailView\" \n [loadingIconURL]=\"callLogConfiguration.loadingIconURL\" [loadingStateView]=\"callLogConfiguration.loadingStateView\"\n [callLogRequestBuilder]=\"callLogConfiguration.callLogRequestBuilder\"\n [onItemClick]=\"callLogConfiguration.onItemClick!\" [onInfoClick]=\"callLogConfiguration.onInfoClick || onInfoClick! \"\n [onError]=\"callLogConfiguration.onError!\" [listItemStyle]=\"callLogConfiguration.listItemStyle\"\n [infoIconUrl]=\"callLogConfiguration.infoIconUrl\" [datePattern]=\"callLogConfiguration.datePattern\"\n [dateSeparatorPattern]=\"callLogConfiguration.dateSeparatorPattern\"\n [incomingAudioCallIconUrl]=\"callLogConfiguration.incomingAudioCallIconUrl\"\n [incomingVideoCallIconUrl]=\"callLogConfiguration.incomingVideoCallIconUrl\"\n [outgoingAudioCallIconUrl]=\"callLogConfiguration.outgoingAudioCallIconUrl\"\n [outgoingVideoCallIconUrl]=\"callLogConfiguration.outgoingVideoCallIconUrl\"\n [missedAudioCallIconUrl]=\"callLogConfiguration.missedAudioCallIconUrl\"\n [missedVideoCallIconUrl]=\"callLogConfiguration.missedVideoCallIconUrl\"\n [callLogsStyle]=\"callLogConfiguration.callLogsStyle\" [avatarStyle]=\"callLogConfiguration.avatarStyle\"\n [hideSeparator]=\"callLogConfiguration.hideSeparator\"\n [outgoingCallConfiguration]=\"callLogConfiguration.outgoingCallConfiguration\"></cometchat-call-logs>\n </div>\n <div class=\"cc-with-details__main\" [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"activeCall && (user || group)\">\n <!--call details Screen-->\n <cometchat-call-log-details [user]=\"user!\" [group]=\"group!\" [call]=\"call\"\n [backIconUrl]=\"computedCallLogDetailsConfig.backIconUrl\" [avatarStyle]=\"computedCallLogDetailsConfig.avatarStyle\"\n [onBackClick]=\"computedCallLogDetailsConfig.onBackClick || onBackClick\"\n [callLogHistoryConfiguration]=\"computedCallLogDetailsConfig.callLogHistoryConfiguration\"\n [callLogParticipantsConfiguration]=\"computedCallLogDetailsConfig.callLogParticipantsConfiguration\"\n [callLogRecordingsConfiguration]=\"computedCallLogDetailsConfig.callLogRecordingsConfiguration\"\n [callLogDetailStyle]=\"computedCallLogDetailsConfig.callLogDetailsStyle\">\n </cometchat-call-log-details>\n </div>\n\n <div class=\"cc-decorator__message--empty\" *ngIf=\"!user && !group\" [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\" [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>", styles: [".cc-with-details__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box}.cc-with-details__sidebar{width:280px;height:100%;position:relative}.cc-with-details__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"] }]
|
|
174
174
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { isMobileView: [{
|
|
175
175
|
type: Input
|
|
176
176
|
}], messageText: [{
|
|
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
190
190
|
}], onError: [{
|
|
191
191
|
type: Input
|
|
192
192
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsTG9nc1dpdGhEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZ3Mtd2l0aC1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZ3Mtd2l0aC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ2FsbHMvQ29tZXRDaGF0Q2FsbExvZ3NXaXRoRGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCx1QkFBdUIsR0FLeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLHVCQUF1QixHQUN4QixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sMkJBQTJCLENBQUM7QUFHbkMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ2pCLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQVFqQyxNQUFNLE9BQU8scUNBQXFDO0lBc0NoRCxZQUNVLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLFlBQW1DO1FBRm5DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBdENwQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztR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QUFLLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFO1NBQ3ZFLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ25CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUMsQ0FBQztRQUVKLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O21JQXBLVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyxtWkNqQ2xELDZsR0F1Q1E7NEZETksscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNFLGtDQUFrQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTTtxS0FLdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRWxlbWVudFJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gXCJAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHRcIjtcblxuaW1wb3J0IHtcbiAgZm9udEhlbHBlcixcbiAgbG9jYWxpemUsXG4gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLFxufSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXNcIjtcblxuaW1wb3J0IFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhY2tkcm9wU3R5bGUgfSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nc0NvbmZpZ3VyYXRpb24sXG4gIFdpdGhEZXRhaWxzU3R5bGUsXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRDYWxsTG9nc1dpdGhEZXRhaWxzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIk5PX0NBTExTX1NFTEVDVEVEXCIpO1xuICBASW5wdXQoKSB3aXRoRGV0YWlsc1N0eWxlOiBXaXRoRGV0YWlsc1N0eWxlID0ge307XG4gIEBJbnB1dCgpIHNob3dNb3JlSW5mbzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGJhY2tkcm9wU3R5bGU6IEJhY2tkcm9wU3R5bGUgPSB7fTtcbiAgQElucHV0KCkgY2FsbCE6IGFueTtcblxuICBASW5wdXQoKSBjYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb246IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgY2FsbExvZ0NvbmZpZ3VyYXRpb246IENhbGxMb2dzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgb25FcnJvcjogKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCkgfCBudWxsID0gKFxuICAgIGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uXG4gICkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfTtcbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgZm9yIGludGVybmFsIHVzZVxuICAgKi9cbiAgcHVibGljIGxvZ2dlZEluVXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgcHVibGljIGFjdGl2ZUNhbGwhOmFueTtcbiAgdXNlciE6IGFueSB8IG51bGw7XG4gIGdyb3VwITogQ29tZXRDaGF0Lkdyb3VwIHwgbnVsbDtcblxuICBjb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnOiBDYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb24gPVxuICAgIG5ldyBDYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb24oe30pO1xuXG4gIGxhYmVsU3R5bGU6IGFueSA9IHtcbiAgICBiYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgdGV4dEZvbnQ6IFwiNzAwIDIycHggSW50ZXJcIixcbiAgICB0ZXh0Q29sb3I6IFwicmdiYSgyMCwgMjAsIDIwLCAwLjMzKVwiLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IENvbWV0Q2hhdFRoZW1lU2VydmljZVxuICApIHt9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcInVzZXJcIl0gfHwgY2hhbmdlc1tcImdyb3VwXCJdKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNhbGxMb2coKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcImlzTW9iaWxlVmlld1wiXSkge1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLndpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgIHRoaXMuY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZyA9XG4gICAgICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICB0aGlzLmJhY2tkcm9wU3R5bGUud2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnID1cbiAgICAgICAgICB0aGlzLmNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVCYWNrZHJvcEhlaWdodCgpIHtcbiAgICBjb25zdCBkaXZIZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgZGl2V2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmJhY2tkcm9wU3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IGRpdkhlaWdodCArIFwicHhcIixcbiAgICAgIHdpZHRoOiBkaXZXaWR0aCArIFwicHhcIixcbiAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAwLjUpXCIsXG4gICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBkaXZIZWlnaHQgKyBcInB4XCI7XG4gICAgICB0aGlzLmJhY2tkcm9wU3R5bGUud2lkdGggPSBkaXZXaWR0aCArIFwicHhcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLmhlaWdodCA9IGRpdkhlaWdodCArIFwicHhcIjtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS53aWR0aCA9IGRpdldpZHRoICsgXCJweFwiO1xuICAgIH1cblxuICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBkaXZIZWlnaHQgKyBcInB4XCI7XG4gICAgdGhpcy5iYWNrZHJvcFN0eWxlLndpZHRoID0gZGl2V2lkdGggKyBcInB4XCI7XG4gIH1cblxuICBvbkJhY2tDbGljayA9ICgpID0+IHtcbiAgICB0aGlzLnVzZXIgPSBudWxsO1xuICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlQ2FsbCA9IG51bGw7XG4gIH07XG4gIHNldFdpdGhEZXRhaWxzU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogV2l0aERldGFpbHNTdHlsZSA9IG5ldyBXaXRoRGV0YWlsc1N0eWxlKHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGJvcmRlclJhZGl1czogXCJub25lXCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgbWVzc2FnZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIG1lc3NhZ2VUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgfSk7XG4gICAgdGhpcy53aXRoRGV0YWlsc1N0eWxlID0ge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4udGhpcy53aXRoRGV0YWlsc1N0eWxlLFxuICAgIH07XG4gICAgdGhpcy5sYWJlbFN0eWxlLnRleHRGb250ID0gdGhpcy53aXRoRGV0YWlsc1N0eWxlLm1lc3NhZ2VUZXh0Rm9udDtcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy53aXRoRGV0YWlsc1N0eWxlLm1lc3NhZ2VUZXh0Q29sb3I7XG4gIH1cblxuICBwdWJsaWMgb25JbmZvQ2xpY2s6IChjYWxsOiBhbnkpID0+IHZvaWQgPSAoY2FsbDogYW55KSA9PiB7XG4gICAgdGhpcy5jYWxsID0gY2FsbDtcbiAgICB0aGlzLnNldEFjdGl2ZUNhbGxMb2coKTtcbiAgfTtcbiAgc2V0QWN0aXZlQ2FsbExvZygpIHtcbiAgICB0aGlzLmFjdGl2ZUNhbGwgPSB0aGlzLmNhbGw7XG4gICAgaWYgKHRoaXMuY2FsbCEuZ2V0SW5pdGlhdG9yKCkuZ2V0VWlkKCkgPT0gdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY2FsbCEuZ2V0UmVjZWl2ZXJUeXBlKCkgPT1cbiAgICAgICAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS51c2VyXG4gICAgICApIHtcbiAgICAgICAgdGhpcy51c2VyID0gdGhpcy5jYWxsIS5nZXRSZWNlaXZlcigpIGFzIHVua25vd24gYXMgQ29tZXRDaGF0LlVzZXI7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMuY2FsbCEuZ2V0UmVjZWl2ZXIoKSBhcyB1bmtub3duIGFzIENvbWV0Q2hhdC5Hcm91cDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyID0gdGhpcy5jYWxsIS5nZXRJbml0aWF0b3IoKSBhcyB1bmtub3duIGFzIENvbWV0Q2hhdC5Vc2VyO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcgPVxuICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlQmFja2Ryb3BIZWlnaHQoKTtcbiAgICB0aGlzLnNldFdpdGhEZXRhaWxzU3R5bGUoKTtcbiAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgIC50aGVuKCh1c2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IENvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIGNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKCk6IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgY29uZmlnID0gbmV3IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbih7fSk7XG4gICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHRoaXMuY2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKTtcblxuICAgIGNvbmZpZy5jYWxsTG9nRGV0YWlsc1N0eWxlID0ge1xuICAgICAgLi4uY29uZmlnLmNhbGxMb2dEZXRhaWxzU3R5bGUsXG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlPy5nZXRBY2NlbnQxMDAoKX1gLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpXG4gICAgICBjb25maWcub25CYWNrQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2FsbCA9IG51bGw7XG4gICAgICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgICAgfTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgZW1wdHlNZXNzYWdlU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHRoaXMud2l0aERldGFpbHNTdHlsZS5iYWNrZ3JvdW5kIHx8XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgaGVpZ2h0OiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuaGVpZ2h0LFxuICAgICAgd2lkdGg6IGBjYWxjKCR7dGhpcy53aXRoRGV0YWlsc1N0eWxlLndpZHRofSAtIDI4MHB4KWAsXG4gICAgICBib3JkZXI6IHRoaXMud2l0aERldGFpbHNTdHlsZS5ib3JkZXIsXG4gICAgICBib3JkZXJSYWRpdXM6IHRoaXMud2l0aERldGFpbHNTdHlsZS5ib3JkZXJSYWRpdXMsXG4gICAgfTtcbiAgfTtcbiAgY2hhdHNXcmFwcGVyU3R5bGVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IHRoaXMud2l0aERldGFpbHNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy53aXRoRGV0YWlsc1N0eWxlLndpZHRoLFxuICAgICAgYm9yZGVyOiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgdGhpcy53aXRoRGV0YWlsc1N0eWxlLmJhY2tncm91bmQgfHxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgfTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy13aXRoLWRldGFpbHNfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJjaGF0c1dyYXBwZXJTdHlsZXMoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1kZXRhaWxzX19zaWRlYmFyXCIgW25nQ2xhc3NdPVwie21vYmlsZSA6IGlzTW9iaWxlVmlld31cIj5cbiAgICA8Y29tZXRjaGF0LWNhbGwtbG9ncyBbYWN0aXZlQ2FsbF09XCJhY3RpdmVDYWxsXCIgW3Nob3dNb3JlSW5mb109XCJzaG93TW9yZUluZm9cIiBbYmFja2Ryb3BTdHlsZV09XCJiYWNrZHJvcFN0eWxlXCJcbiAgICAgIFthY3RpdmVDYWxsXT1cImFjdGl2ZUNhbGxcIiBbdGl0bGVBbGlnbm1lbnRdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24/LnRpdGxlQWxpZ25tZW50IVwiXG4gICAgICBbZW1wdHlTdGF0ZVZpZXddPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uZW1wdHlTdGF0ZVZpZXdcIiBcbiAgICAgIFtlcnJvclN0YXRlVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5lcnJvclN0YXRlVmlld1wiXG4gICAgICBbc3VidGl0bGVWaWV3XT1cImNhbGxMb2dDb25maWd1cmF0aW9uLnN1YnRpdGxlVmlld1wiIFxuICAgICAgW2xpc3RJdGVtVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIiBcbiAgICAgIFt0YWlsVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi50YWlsVmlld1wiIFxuICAgICAgW2xvYWRpbmdJY29uVVJMXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmxvYWRpbmdJY29uVVJMXCIgW2xvYWRpbmdTdGF0ZVZpZXddPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ubG9hZGluZ1N0YXRlVmlld1wiXG4gICAgICBbY2FsbExvZ1JlcXVlc3RCdWlsZGVyXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmNhbGxMb2dSZXF1ZXN0QnVpbGRlclwiXG4gICAgICBbb25JdGVtQ2xpY2tdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ub25JdGVtQ2xpY2shXCIgW29uSW5mb0NsaWNrXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLm9uSW5mb0NsaWNrIHx8IG9uSW5mb0NsaWNrISBcIlxuICAgICAgW29uRXJyb3JdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ub25FcnJvciFcIiBbbGlzdEl0ZW1TdHlsZV09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5saXN0SXRlbVN0eWxlXCJcbiAgICAgIFtpbmZvSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmZvSWNvblVybFwiIFtkYXRlUGF0dGVybl09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5kYXRlUGF0dGVyblwiXG4gICAgICBbZGF0ZVNlcGFyYXRvclBhdHRlcm5dPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uZGF0ZVNlcGFyYXRvclBhdHRlcm5cIlxuICAgICAgW2luY29taW5nQXVkaW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmNvbWluZ0F1ZGlvQ2FsbEljb25VcmxcIlxuICAgICAgW2luY29taW5nVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmNvbWluZ1ZpZGVvQ2FsbEljb25VcmxcIlxuICAgICAgW291dGdvaW5nQXVkaW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ0F1ZGlvQ2FsbEljb25VcmxcIlxuICAgICAgW291dGdvaW5nVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ1ZpZGVvQ2FsbEljb25VcmxcIlxuICAgICAgW21pc3NlZEF1ZGlvQ2FsbEljb25VcmxdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ubWlzc2VkQXVkaW9DYWxsSWNvblVybFwiXG4gICAgICBbbWlzc2VkVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5taXNzZWRWaWRlb0NhbGxJY29uVXJsXCJcbiAgICAgIFtjYWxsTG9nc1N0eWxlXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmNhbGxMb2dzU3R5bGVcIiBbYXZhdGFyU3R5bGVdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uYXZhdGFyU3R5bGVcIlxuICAgICAgW2hpZGVTZXBhcmF0b3JdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uaGlkZVNlcGFyYXRvclwiXG4gICAgICBbb3V0Z29pbmdDYWxsQ29uZmlndXJhdGlvbl09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ0NhbGxDb25maWd1cmF0aW9uXCI+PC9jb21ldGNoYXQtY2FsbC1sb2dzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtZGV0YWlsc19fbWFpblwiIFtuZ0NsYXNzXT1cInttb2JpbGUgOiBpc01vYmlsZVZpZXd9XCIgKm5nSWY9XCJhY3RpdmVDYWxsICYmICh1c2VyIHx8IGdyb3VwKVwiPlxuICAgIDwhLS1jYWxsIGRldGFpbHMgU2NyZWVuLS0+XG4gICAgPGNvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzIFt1c2VyXT1cInVzZXIhXCIgW2dyb3VwXT1cImdyb3VwIVwiIFtjYWxsXT1cImNhbGxcIlxuICAgICAgW2JhY2tJY29uVXJsXT1cImNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcuYmFja0ljb25VcmxcIiBbYXZhdGFyU3R5bGVdPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5hdmF0YXJTdHlsZVwiXG4gICAgICBbb25CYWNrQ2xpY2tdPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5vbkJhY2tDbGljayFcIlxuICAgICAgW2NhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvbl09XCJjb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnLmNhbGxMb2dIaXN0b3J5Q29uZmlndXJhdGlvblwiXG4gICAgICBbY2FsbExvZ1BhcnRpY2lwYW50c0NvbmZpZ3VyYXRpb25dPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5jYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvblwiXG4gICAgICBbY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uXT1cImNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcuY2FsbExvZ1JlY29yZGluZ3NDb25maWd1cmF0aW9uXCJcbiAgICAgIFtjYWxsTG9nRGV0YWlsU3R5bGVdPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5jYWxsTG9nRGV0YWlsc1N0eWxlXCI+XG4gICAgPC9jb21ldGNoYXQtY2FsbC1sb2ctZGV0YWlscz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNjLWRlY29yYXRvcl9fbWVzc2FnZS0tZW1wdHlcIiAqbmdJZj1cIiF1c2VyICYmICFncm91cFwiIFtuZ1N0eWxlXT1cImVtcHR5TWVzc2FnZVN0eWxlKClcIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIm1lc3NhZ2VUZXh0XCIgW2xhYmVsU3R5bGVdPVwibGFiZWxTdHlsZVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICA8L2Rpdj4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9DYWxscy9Db21ldENoYXRDYWxsTG9nc1dpdGhEZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZ3Mtd2l0aC1kZXRhaWxzL2NvbWV0Y2hhdC1jYWxsLWxvZ3Mtd2l0aC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ2FsbHMvQ29tZXRDaGF0Q2FsbExvZ3NXaXRoRGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCx1QkFBdUIsR0FLeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNELE9BQU8sRUFDTCxVQUFVLEVBQ1YsUUFBUSxFQUNSLHVCQUF1QixHQUN4QixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sMkJBQTJCLENBQUM7QUFHbkMsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsZ0JBQWdCLEdBQ2pCLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQVFqQyxNQUFNLE9BQU8scUNBQXFDO0lBc0NoRCxZQUNVLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLFlBQW1DO1FBRm5DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBdENwQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztR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QUFLLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFO1NBQ3ZFLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxZQUFZO1lBQ25CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFO2dCQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUMsQ0FBQztRQUVKLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O21JQXBLVSxxQ0FBcUM7dUhBQXJDLHFDQUFxQyxtWkNqQ2xELDJtR0F1Q1E7NEZETksscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNFLGtDQUFrQyxtQkFHM0IsdUJBQXVCLENBQUMsTUFBTTtxS0FLdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRWxlbWVudFJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbWV0Q2hhdCB9IGZyb20gXCJAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHRcIjtcblxuaW1wb3J0IHtcbiAgZm9udEhlbHBlcixcbiAgbG9jYWxpemUsXG4gIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLFxufSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXNcIjtcblxuaW1wb3J0IFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbmltcG9ydCB7IEJhY2tkcm9wU3R5bGUgfSBmcm9tIFwiQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50c1wiO1xuaW1wb3J0IHtcbiAgQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uLFxuICBDYWxsTG9nc0NvbmZpZ3VyYXRpb24sXG4gIFdpdGhEZXRhaWxzU3R5bGUsXG59IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHNcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21ldGNoYXQtY2FsbC1sb2dzLXdpdGgtZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vY29tZXRjaGF0LWNhbGwtbG9ncy13aXRoLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRDYWxsTG9nc1dpdGhEZXRhaWxzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgaXNNb2JpbGVWaWV3OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIk5PX0NBTExTX1NFTEVDVEVEXCIpO1xuICBASW5wdXQoKSB3aXRoRGV0YWlsc1N0eWxlOiBXaXRoRGV0YWlsc1N0eWxlID0ge307XG4gIEBJbnB1dCgpIHNob3dNb3JlSW5mbzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGJhY2tkcm9wU3R5bGU6IEJhY2tkcm9wU3R5bGUgPSB7fTtcbiAgQElucHV0KCkgY2FsbCE6IGFueTtcblxuICBASW5wdXQoKSBjYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb246IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgY2FsbExvZ0NvbmZpZ3VyYXRpb246IENhbGxMb2dzQ29uZmlndXJhdGlvbiA9XG4gICAgbmV3IENhbGxMb2dzQ29uZmlndXJhdGlvbih7fSk7XG5cbiAgQElucHV0KCkgb25FcnJvcjogKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCkgfCBudWxsID0gKFxuICAgIGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uXG4gICkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfTtcbiAgLyoqXG4gICAqIFByb3BlcnRpZXMgZm9yIGludGVybmFsIHVzZVxuICAgKi9cbiAgcHVibGljIGxvZ2dlZEluVXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgcHVibGljIGFjdGl2ZUNhbGwhOmFueTtcbiAgdXNlciE6IGFueSB8IG51bGw7XG4gIGdyb3VwITogQ29tZXRDaGF0Lkdyb3VwIHwgbnVsbDtcblxuICBjb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnOiBDYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb24gPVxuICAgIG5ldyBDYWxsTG9nRGV0YWlsc0NvbmZpZ3VyYXRpb24oe30pO1xuXG4gIGxhYmVsU3R5bGU6IGFueSA9IHtcbiAgICBiYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgdGV4dEZvbnQ6IFwiNzAwIDIycHggSW50ZXJcIixcbiAgICB0ZXh0Q29sb3I6IFwicmdiYSgyMCwgMjAsIDIwLCAwLjMzKVwiLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IENvbWV0Q2hhdFRoZW1lU2VydmljZVxuICApIHt9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1tcInVzZXJcIl0gfHwgY2hhbmdlc1tcImdyb3VwXCJdKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNhbGxMb2coKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1tcImlzTW9iaWxlVmlld1wiXSkge1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBcIjEwMCVcIjtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLndpZHRoID0gXCIxMDAlXCI7XG4gICAgICAgIHRoaXMuY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZyA9XG4gICAgICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLmhlaWdodCA9IFwiMTAwJVwiO1xuICAgICAgICB0aGlzLmJhY2tkcm9wU3R5bGUud2lkdGggPSBcIjEwMCVcIjtcbiAgICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnID1cbiAgICAgICAgICB0aGlzLmNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVCYWNrZHJvcEhlaWdodCgpIHtcbiAgICBjb25zdCBkaXZIZWlnaHQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgZGl2V2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICB0aGlzLmJhY2tkcm9wU3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IGRpdkhlaWdodCArIFwicHhcIixcbiAgICAgIHdpZHRoOiBkaXZXaWR0aCArIFwicHhcIixcbiAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAwLjUpXCIsXG4gICAgICBwb3NpdGlvbjogXCJmaXhlZFwiLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBkaXZIZWlnaHQgKyBcInB4XCI7XG4gICAgICB0aGlzLmJhY2tkcm9wU3R5bGUud2lkdGggPSBkaXZXaWR0aCArIFwicHhcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYWNrZHJvcFN0eWxlLmhlaWdodCA9IGRpdkhlaWdodCArIFwicHhcIjtcbiAgICAgIHRoaXMuYmFja2Ryb3BTdHlsZS53aWR0aCA9IGRpdldpZHRoICsgXCJweFwiO1xuICAgIH1cblxuICAgIHRoaXMuYmFja2Ryb3BTdHlsZS5oZWlnaHQgPSBkaXZIZWlnaHQgKyBcInB4XCI7XG4gICAgdGhpcy5iYWNrZHJvcFN0eWxlLndpZHRoID0gZGl2V2lkdGggKyBcInB4XCI7XG4gIH1cblxuICBvbkJhY2tDbGljayA9ICgpID0+IHtcbiAgICB0aGlzLnVzZXIgPSBudWxsO1xuICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlQ2FsbCA9IG51bGw7XG4gIH07XG4gIHNldFdpdGhEZXRhaWxzU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogV2l0aERldGFpbHNTdHlsZSA9IG5ldyBXaXRoRGV0YWlsc1N0eWxlKHtcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGJvcmRlclJhZGl1czogXCJub25lXCIsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgbWVzc2FnZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIG1lc3NhZ2VUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgfSk7XG4gICAgdGhpcy53aXRoRGV0YWlsc1N0eWxlID0ge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4udGhpcy53aXRoRGV0YWlsc1N0eWxlLFxuICAgIH07XG4gICAgdGhpcy5sYWJlbFN0eWxlLnRleHRGb250ID0gdGhpcy53aXRoRGV0YWlsc1N0eWxlLm1lc3NhZ2VUZXh0Rm9udDtcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy53aXRoRGV0YWlsc1N0eWxlLm1lc3NhZ2VUZXh0Q29sb3I7XG4gIH1cblxuICBwdWJsaWMgb25JbmZvQ2xpY2s6IChjYWxsOiBhbnkpID0+IHZvaWQgPSAoY2FsbDogYW55KSA9PiB7XG4gICAgdGhpcy5jYWxsID0gY2FsbDtcbiAgICB0aGlzLnNldEFjdGl2ZUNhbGxMb2coKTtcbiAgfTtcbiAgc2V0QWN0aXZlQ2FsbExvZygpIHtcbiAgICB0aGlzLmFjdGl2ZUNhbGwgPSB0aGlzLmNhbGw7XG4gICAgaWYgKHRoaXMuY2FsbCEuZ2V0SW5pdGlhdG9yKCkuZ2V0VWlkKCkgPT0gdGhpcy5sb2dnZWRJblVzZXI/LmdldFVpZCgpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY2FsbCEuZ2V0UmVjZWl2ZXJUeXBlKCkgPT1cbiAgICAgICAgQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS51c2VyXG4gICAgICApIHtcbiAgICAgICAgdGhpcy51c2VyID0gdGhpcy5jYWxsIS5nZXRSZWNlaXZlcigpIGFzIHVua25vd24gYXMgQ29tZXRDaGF0LlVzZXI7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMuY2FsbCEuZ2V0UmVjZWl2ZXIoKSBhcyB1bmtub3duIGFzIENvbWV0Q2hhdC5Hcm91cDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyID0gdGhpcy5jYWxsIS5nZXRJbml0aWF0b3IoKSBhcyB1bmtub3duIGFzIENvbWV0Q2hhdC5Vc2VyO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcgPVxuICAgICAgdGhpcy5jb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlQmFja2Ryb3BIZWlnaHQoKTtcbiAgICB0aGlzLnNldFdpdGhEZXRhaWxzU3R5bGUoKTtcbiAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgIC50aGVuKCh1c2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IENvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gIGNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKCk6IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgY29uZmlnID0gbmV3IENhbGxMb2dEZXRhaWxzQ29uZmlndXJhdGlvbih7fSk7XG4gICAgT2JqZWN0LmFzc2lnbihjb25maWcsIHRoaXMuY2FsbExvZ0RldGFpbHNDb25maWd1cmF0aW9uKTtcblxuICAgIGNvbmZpZy5jYWxsTG9nRGV0YWlsc1N0eWxlID0ge1xuICAgICAgLi4uY29uZmlnLmNhbGxMb2dEZXRhaWxzU3R5bGUsXG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlPy5nZXRBY2NlbnQxMDAoKX1gLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pc01vYmlsZVZpZXcpXG4gICAgICBjb25maWcub25CYWNrQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2FsbCA9IG51bGw7XG4gICAgICAgIHRoaXMudXNlciA9IG51bGw7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgICAgfTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgZW1wdHlNZXNzYWdlU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHRoaXMud2l0aERldGFpbHNTdHlsZS5iYWNrZ3JvdW5kIHx8XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgaGVpZ2h0OiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuaGVpZ2h0LFxuICAgICAgd2lkdGg6IGBjYWxjKCR7dGhpcy53aXRoRGV0YWlsc1N0eWxlLndpZHRofSAtIDI4MHB4KWAsXG4gICAgICBib3JkZXI6IHRoaXMud2l0aERldGFpbHNTdHlsZS5ib3JkZXIsXG4gICAgICBib3JkZXJSYWRpdXM6IHRoaXMud2l0aERldGFpbHNTdHlsZS5ib3JkZXJSYWRpdXMsXG4gICAgfTtcbiAgfTtcbiAgY2hhdHNXcmFwcGVyU3R5bGVzID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IHRoaXMud2l0aERldGFpbHNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy53aXRoRGV0YWlsc1N0eWxlLndpZHRoLFxuICAgICAgYm9yZGVyOiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLndpdGhEZXRhaWxzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgdGhpcy53aXRoRGV0YWlsc1N0eWxlLmJhY2tncm91bmQgfHxcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgfTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJjYy13aXRoLWRldGFpbHNfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJjaGF0c1dyYXBwZXJTdHlsZXMoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1kZXRhaWxzX19zaWRlYmFyXCIgW25nQ2xhc3NdPVwie21vYmlsZSA6IGlzTW9iaWxlVmlld31cIj5cbiAgICA8Y29tZXRjaGF0LWNhbGwtbG9ncyBbYWN0aXZlQ2FsbF09XCJhY3RpdmVDYWxsXCIgW3Nob3dNb3JlSW5mb109XCJzaG93TW9yZUluZm9cIiBbYmFja2Ryb3BTdHlsZV09XCJiYWNrZHJvcFN0eWxlXCJcbiAgICAgIFthY3RpdmVDYWxsXT1cImFjdGl2ZUNhbGxcIiBbdGl0bGVBbGlnbm1lbnRdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24/LnRpdGxlQWxpZ25tZW50IVwiXG4gICAgICBbZW1wdHlTdGF0ZVZpZXddPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uZW1wdHlTdGF0ZVZpZXdcIiBcbiAgICAgIFtlcnJvclN0YXRlVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5lcnJvclN0YXRlVmlld1wiXG4gICAgICBbc3VidGl0bGVWaWV3XT1cImNhbGxMb2dDb25maWd1cmF0aW9uLnN1YnRpdGxlVmlld1wiIFxuICAgICAgW2xpc3RJdGVtVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5saXN0SXRlbVZpZXdcIiBcbiAgICAgIFt0YWlsVmlld109XCJjYWxsTG9nQ29uZmlndXJhdGlvbi50YWlsVmlld1wiIFxuICAgICAgW2xvYWRpbmdJY29uVVJMXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmxvYWRpbmdJY29uVVJMXCIgW2xvYWRpbmdTdGF0ZVZpZXddPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ubG9hZGluZ1N0YXRlVmlld1wiXG4gICAgICBbY2FsbExvZ1JlcXVlc3RCdWlsZGVyXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmNhbGxMb2dSZXF1ZXN0QnVpbGRlclwiXG4gICAgICBbb25JdGVtQ2xpY2tdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ub25JdGVtQ2xpY2shXCIgW29uSW5mb0NsaWNrXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLm9uSW5mb0NsaWNrIHx8IG9uSW5mb0NsaWNrISBcIlxuICAgICAgW29uRXJyb3JdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ub25FcnJvciFcIiBbbGlzdEl0ZW1TdHlsZV09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5saXN0SXRlbVN0eWxlXCJcbiAgICAgIFtpbmZvSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmZvSWNvblVybFwiIFtkYXRlUGF0dGVybl09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5kYXRlUGF0dGVyblwiXG4gICAgICBbZGF0ZVNlcGFyYXRvclBhdHRlcm5dPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uZGF0ZVNlcGFyYXRvclBhdHRlcm5cIlxuICAgICAgW2luY29taW5nQXVkaW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmNvbWluZ0F1ZGlvQ2FsbEljb25VcmxcIlxuICAgICAgW2luY29taW5nVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5pbmNvbWluZ1ZpZGVvQ2FsbEljb25VcmxcIlxuICAgICAgW291dGdvaW5nQXVkaW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ0F1ZGlvQ2FsbEljb25VcmxcIlxuICAgICAgW291dGdvaW5nVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ1ZpZGVvQ2FsbEljb25VcmxcIlxuICAgICAgW21pc3NlZEF1ZGlvQ2FsbEljb25VcmxdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24ubWlzc2VkQXVkaW9DYWxsSWNvblVybFwiXG4gICAgICBbbWlzc2VkVmlkZW9DYWxsSWNvblVybF09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5taXNzZWRWaWRlb0NhbGxJY29uVXJsXCJcbiAgICAgIFtjYWxsTG9nc1N0eWxlXT1cImNhbGxMb2dDb25maWd1cmF0aW9uLmNhbGxMb2dzU3R5bGVcIiBbYXZhdGFyU3R5bGVdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uYXZhdGFyU3R5bGVcIlxuICAgICAgW2hpZGVTZXBhcmF0b3JdPVwiY2FsbExvZ0NvbmZpZ3VyYXRpb24uaGlkZVNlcGFyYXRvclwiXG4gICAgICBbb3V0Z29pbmdDYWxsQ29uZmlndXJhdGlvbl09XCJjYWxsTG9nQ29uZmlndXJhdGlvbi5vdXRnb2luZ0NhbGxDb25maWd1cmF0aW9uXCI+PC9jb21ldGNoYXQtY2FsbC1sb2dzPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtZGV0YWlsc19fbWFpblwiIFtuZ0NsYXNzXT1cInttb2JpbGUgOiBpc01vYmlsZVZpZXd9XCIgKm5nSWY9XCJhY3RpdmVDYWxsICYmICh1c2VyIHx8IGdyb3VwKVwiPlxuICAgIDwhLS1jYWxsIGRldGFpbHMgU2NyZWVuLS0+XG4gICAgPGNvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzIFt1c2VyXT1cInVzZXIhXCIgW2dyb3VwXT1cImdyb3VwIVwiIFtjYWxsXT1cImNhbGxcIlxuICAgICAgW2JhY2tJY29uVXJsXT1cImNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcuYmFja0ljb25VcmxcIiBbYXZhdGFyU3R5bGVdPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5hdmF0YXJTdHlsZVwiXG4gICAgICBbb25CYWNrQ2xpY2tdPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5vbkJhY2tDbGljayB8fCBvbkJhY2tDbGlja1wiXG4gICAgICBbY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uXT1cImNvbXB1dGVkQ2FsbExvZ0RldGFpbHNDb25maWcuY2FsbExvZ0hpc3RvcnlDb25maWd1cmF0aW9uXCJcbiAgICAgIFtjYWxsTG9nUGFydGljaXBhbnRzQ29uZmlndXJhdGlvbl09XCJjb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnLmNhbGxMb2dQYXJ0aWNpcGFudHNDb25maWd1cmF0aW9uXCJcbiAgICAgIFtjYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb25dPVwiY29tcHV0ZWRDYWxsTG9nRGV0YWlsc0NvbmZpZy5jYWxsTG9nUmVjb3JkaW5nc0NvbmZpZ3VyYXRpb25cIlxuICAgICAgW2NhbGxMb2dEZXRhaWxTdHlsZV09XCJjb21wdXRlZENhbGxMb2dEZXRhaWxzQ29uZmlnLmNhbGxMb2dEZXRhaWxzU3R5bGVcIj5cbiAgICA8L2NvbWV0Y2hhdC1jYWxsLWxvZy1kZXRhaWxzPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY2MtZGVjb3JhdG9yX19tZXNzYWdlLS1lbXB0eVwiICpuZ0lmPVwiIXVzZXIgJiYgIWdyb3VwXCIgW25nU3R5bGVdPVwiZW1wdHlNZXNzYWdlU3R5bGUoKVwiPlxuICAgIDxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwibWVzc2FnZVRleHRcIiBbbGFiZWxTdHlsZV09XCJsYWJlbFN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gIDwvZGl2PiJdfQ==
|