@firestitch/app-message 13.1.1 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/helpers/index-name-value.d.ts +1 -1
- package/app/helpers/index.d.ts +1 -1
- package/app/modules/app-message/app-message.module.d.ts +8 -8
- package/app/modules/app-message/injectors/app-message-config.injector.d.ts +3 -3
- package/app/modules/app-message/injectors/index.d.ts +1 -1
- package/app/modules/app-message/interfaces/app-message-config.d.ts +30 -30
- package/app/modules/app-message/interfaces/index.d.ts +1 -1
- package/app/modules/app-message/types/index.d.ts +1 -1
- package/app/modules/app-message/types/types.type.d.ts +49 -49
- package/app/modules/message-preview/components/index.d.ts +1 -1
- package/app/modules/message-preview/components/preview/index.d.ts +1 -1
- package/app/modules/message-preview/components/preview/preview.component.d.ts +11 -11
- package/app/modules/message-preview/message-preview.module.d.ts +11 -11
- package/app/modules/message-queues/components/queue/queue.component.d.ts +44 -44
- package/app/modules/message-queues/components/queues/queues.component.d.ts +31 -31
- package/app/modules/message-queues/components/recipient/recipient.component.d.ts +10 -10
- package/app/modules/message-queues/consts/index.d.ts +1 -1
- package/app/modules/message-queues/consts/message-queue-event-type.const.d.ts +5 -5
- package/app/modules/message-queues/consts/message-queue-states.const.d.ts +5 -5
- package/app/modules/message-queues/enums/email-message-queue-format.enum.d.ts +5 -5
- package/app/modules/message-queues/enums/index.d.ts +3 -3
- package/app/modules/message-queues/enums/message-queue-event-type.enum.d.ts +4 -4
- package/app/modules/message-queues/enums/message-queue-state.enum.d.ts +9 -9
- package/app/modules/message-queues/enums/message-queue-type.enum.d.ts +4 -4
- package/app/modules/message-queues/message-queues.module.d.ts +29 -29
- package/app/modules/message-queues/pipes/linkify.pipe.d.ts +7 -7
- package/app/modules/message-queues/pipes/truncate.pipe.d.ts +7 -7
- package/app/modules/message-queues/services/message-queue.service.d.ts +10 -10
- package/app/modules/message-templates/components/index.d.ts +2 -2
- package/app/modules/message-templates/components/template/index.d.ts +1 -1
- package/app/modules/message-templates/components/template/template.component.d.ts +23 -23
- package/app/modules/message-templates/components/templates/index.d.ts +1 -1
- package/app/modules/message-templates/components/templates/templates.component.d.ts +19 -19
- package/app/modules/message-templates/message-templates.module.d.ts +24 -24
- package/app/modules/messages/components/attachments/attachments.component.d.ts +18 -18
- package/app/modules/messages/components/attachments/index.d.ts +1 -1
- package/app/modules/messages/components/index.d.ts +3 -3
- package/app/modules/messages/components/message/index.d.ts +1 -1
- package/app/modules/messages/components/message/message.component.d.ts +30 -30
- package/app/modules/messages/components/messages/index.d.ts +1 -1
- package/app/modules/messages/components/messages/messages.component.d.ts +19 -19
- package/app/modules/messages/consts/email-message-formats.const.d.ts +5 -5
- package/app/modules/messages/consts/index.d.ts +1 -1
- package/app/modules/messages/enums/email-message-format.enum.d.ts +5 -5
- package/app/modules/messages/enums/index.d.ts +1 -1
- package/app/modules/messages/messages.module.d.ts +31 -31
- package/app/modules/webhooks/components/webhooks/webhooks.component.d.ts +15 -15
- package/app/modules/webhooks/webhooks.module.d.ts +9 -9
- package/esm2020/app/helpers/index-name-value.mjs +7 -7
- package/esm2020/app/helpers/index.mjs +1 -1
- package/esm2020/app/modules/app-message/app-message.module.mjs +16 -16
- package/esm2020/app/modules/app-message/injectors/app-message-config.injector.mjs +3 -3
- package/esm2020/app/modules/app-message/injectors/index.mjs +1 -1
- package/esm2020/app/modules/app-message/interfaces/app-message-config.mjs +1 -1
- package/esm2020/app/modules/app-message/interfaces/index.mjs +1 -1
- package/esm2020/app/modules/app-message/types/index.mjs +1 -1
- package/esm2020/app/modules/app-message/types/types.type.mjs +1 -1
- package/esm2020/app/modules/message-preview/components/index.mjs +1 -1
- package/esm2020/app/modules/message-preview/components/preview/index.mjs +1 -1
- package/esm2020/app/modules/message-preview/components/preview/preview.component.mjs +25 -25
- package/esm2020/app/modules/message-preview/message-preview.module.mjs +36 -38
- package/esm2020/app/modules/message-queues/components/queue/queue.component.mjs +209 -209
- package/esm2020/app/modules/message-queues/components/queues/queues.component.mjs +197 -197
- package/esm2020/app/modules/message-queues/components/recipient/recipient.component.mjs +25 -25
- package/esm2020/app/modules/message-queues/consts/index.mjs +1 -1
- package/esm2020/app/modules/message-queues/consts/message-queue-event-type.const.mjs +5 -5
- package/esm2020/app/modules/message-queues/consts/message-queue-states.const.mjs +10 -10
- package/esm2020/app/modules/message-queues/enums/email-message-queue-format.enum.mjs +6 -6
- package/esm2020/app/modules/message-queues/enums/index.mjs +3 -3
- package/esm2020/app/modules/message-queues/enums/message-queue-event-type.enum.mjs +5 -5
- package/esm2020/app/modules/message-queues/enums/message-queue-state.enum.mjs +10 -10
- package/esm2020/app/modules/message-queues/enums/message-queue-type.enum.mjs +5 -5
- package/esm2020/app/modules/message-queues/message-queues.module.mjs +112 -114
- package/esm2020/app/modules/message-queues/pipes/linkify.pipe.mjs +21 -21
- package/esm2020/app/modules/message-queues/pipes/truncate.pipe.mjs +21 -21
- package/esm2020/app/modules/message-queues/services/message-queue.service.mjs +28 -28
- package/esm2020/app/modules/message-templates/components/index.mjs +2 -2
- package/esm2020/app/modules/message-templates/components/template/index.mjs +1 -1
- package/esm2020/app/modules/message-templates/components/template/template.component.mjs +81 -81
- package/esm2020/app/modules/message-templates/components/templates/index.mjs +1 -1
- package/esm2020/app/modules/message-templates/components/templates/templates.component.mjs +80 -80
- package/esm2020/app/modules/message-templates/message-templates.module.mjs +92 -94
- package/esm2020/app/modules/messages/components/attachments/attachments.component.mjs +80 -80
- package/esm2020/app/modules/messages/components/attachments/index.mjs +1 -1
- package/esm2020/app/modules/messages/components/index.mjs +3 -3
- package/esm2020/app/modules/messages/components/message/index.mjs +1 -1
- package/esm2020/app/modules/messages/components/message/message.component.mjs +128 -128
- package/esm2020/app/modules/messages/components/messages/index.mjs +1 -1
- package/esm2020/app/modules/messages/components/messages/messages.component.mjs +71 -71
- package/esm2020/app/modules/messages/consts/email-message-formats.const.mjs +6 -6
- package/esm2020/app/modules/messages/consts/index.mjs +1 -1
- package/esm2020/app/modules/messages/enums/email-message-format.enum.mjs +6 -6
- package/esm2020/app/modules/messages/enums/index.mjs +1 -1
- package/esm2020/app/modules/messages/messages.module.mjs +119 -121
- package/esm2020/app/modules/webhooks/components/webhooks/webhooks.component.mjs +62 -62
- package/esm2020/app/modules/webhooks/webhooks.module.mjs +28 -30
- package/esm2020/firestitch-app-message.mjs +4 -4
- package/esm2020/public_api.mjs +15 -15
- package/fesm2015/firestitch-app-message.mjs +1213 -1223
- package/fesm2015/firestitch-app-message.mjs.map +1 -1
- package/fesm2020/firestitch-app-message.mjs +1217 -1227
- package/fesm2020/firestitch-app-message.mjs.map +1 -1
- package/{firestitch-app-message.d.ts → index.d.ts} +5 -5
- package/package.json +3 -3
- package/public_api.d.ts +16 -16
|
@@ -1,198 +1,198 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { ItemType } from '@firestitch/filter';
|
|
3
|
-
import { FsListComponent } from '@firestitch/list';
|
|
4
|
-
import { SelectionActionType } from '@firestitch/selection';
|
|
5
|
-
import { FsStore } from '@firestitch/store';
|
|
6
|
-
import { Subject } from 'rxjs';
|
|
7
|
-
import { filter, map, takeUntil, tap } from 'rxjs/operators';
|
|
8
|
-
import { isAfter } from 'date-fns';
|
|
9
|
-
import { indexNameValue } from '../../../../helpers';
|
|
10
|
-
import { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';
|
|
11
|
-
import { MessageQueueStates } from '../../consts';
|
|
12
|
-
import { MessageQueueType } from '../../enums';
|
|
13
|
-
import { MessageQueueState } from '../../enums/message-queue-state.enum';
|
|
14
|
-
import { FsMessageQueueService } from '../../services/message-queue.service';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../../services/message-queue.service";
|
|
17
|
-
import * as i2 from "@firestitch/store";
|
|
18
|
-
import * as i3 from "@
|
|
19
|
-
import * as i4 from "@angular/material/
|
|
20
|
-
import * as i5 from "@
|
|
21
|
-
import * as i6 from "@angular/material/icon";
|
|
22
|
-
import * as i7 from "
|
|
23
|
-
import * as i8 from "@
|
|
24
|
-
import * as i9 from "@firestitch/
|
|
25
|
-
import * as i10 from "
|
|
26
|
-
import * as i11 from "
|
|
27
|
-
import * as i12 from "
|
|
28
|
-
export class QueuesComponent {
|
|
29
|
-
constructor(_config, _messageQueueService, _cdRef, _store) {
|
|
30
|
-
this._config = _config;
|
|
31
|
-
this._messageQueueService = _messageQueueService;
|
|
32
|
-
this._cdRef = _cdRef;
|
|
33
|
-
this._store = _store;
|
|
34
|
-
this.list = null;
|
|
35
|
-
this.query = {};
|
|
36
|
-
this.type = null;
|
|
37
|
-
this.config = null;
|
|
38
|
-
this.messageQueueStates = {};
|
|
39
|
-
this.MessageQueueState = MessageQueueState;
|
|
40
|
-
this._destroy$ = new Subject();
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
this.messageQueueStates = indexNameValue(MessageQueueStates);
|
|
44
|
-
this.initList();
|
|
45
|
-
this.initWebhook();
|
|
46
|
-
}
|
|
47
|
-
enableWebhook() {
|
|
48
|
-
this._config.createWebhook()
|
|
49
|
-
.subscribe(() => {
|
|
50
|
-
this.initWebhook();
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
initWebhook() {
|
|
54
|
-
const domain = document.location.hostname;
|
|
55
|
-
if (domain === 'localhost' || domain === '[::1]') {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
this._config.loadWebhooks({ domain })
|
|
59
|
-
.pipe(filter(() => {
|
|
60
|
-
return !this._store.get('messagesWebhookEnabled');
|
|
61
|
-
}))
|
|
62
|
-
.subscribe((webhooks) => {
|
|
63
|
-
this._cdRef.markForCheck();
|
|
64
|
-
this.webHookEnabled = webhooks
|
|
65
|
-
.some((webhook) => {
|
|
66
|
-
const url = new URL(webhook.url);
|
|
67
|
-
return url.host === domain;
|
|
68
|
-
});
|
|
69
|
-
this._store.set('messagesWebhookEnabled', this.webHookEnabled);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
initList() {
|
|
73
|
-
this.config = {
|
|
74
|
-
filters: [
|
|
75
|
-
{
|
|
76
|
-
name: 'keyword',
|
|
77
|
-
type: ItemType.Keyword,
|
|
78
|
-
label: 'Search',
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
name: 'state',
|
|
82
|
-
type: ItemType.Select,
|
|
83
|
-
label: 'Status',
|
|
84
|
-
values: () => {
|
|
85
|
-
return MessageQueueStates;
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
name: 'date',
|
|
90
|
-
type: ItemType.DateRange,
|
|
91
|
-
label: ['From Date', 'To Date'],
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
sort: { value: 'created_date', direction: 'desc' },
|
|
95
|
-
fetch: (query) => {
|
|
96
|
-
query = {
|
|
97
|
-
...query,
|
|
98
|
-
...this.query,
|
|
99
|
-
type: this.type,
|
|
100
|
-
messageQueueAttachmentCounts: true,
|
|
101
|
-
emailMessageQueues: true,
|
|
102
|
-
emailMessageQueueBodies: false,
|
|
103
|
-
smsMessageQueues: true,
|
|
104
|
-
};
|
|
105
|
-
return this._config.loadMessageQueues(query)
|
|
106
|
-
.pipe(map((response) => ({
|
|
107
|
-
data: response.data
|
|
108
|
-
.map((messageQueue) => {
|
|
109
|
-
return {
|
|
110
|
-
...messageQueue,
|
|
111
|
-
scheduled: messageQueue.state === MessageQueueState.Queued && isAfter(messageQueue.scheduledDate, new Date()),
|
|
112
|
-
messageQueueRecipients: messageQueue.messageQueueRecipients
|
|
113
|
-
.reduce((accum, messageQueueRecipient) => {
|
|
114
|
-
accum[messageQueueRecipient.recipient] = messageQueueRecipient.state;
|
|
115
|
-
return accum;
|
|
116
|
-
}, {}),
|
|
117
|
-
};
|
|
118
|
-
}), paging: response.paging,
|
|
119
|
-
})));
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
if (this._config.bulkMessageQueues) {
|
|
123
|
-
this.config.selection = {
|
|
124
|
-
selectAll: false,
|
|
125
|
-
actions: [
|
|
126
|
-
{
|
|
127
|
-
type: SelectionActionType.Action,
|
|
128
|
-
name: 'queue',
|
|
129
|
-
label: 'Queue',
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
type: SelectionActionType.Action,
|
|
133
|
-
name: 'resend',
|
|
134
|
-
label: 'Resend',
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
type: SelectionActionType.Action,
|
|
138
|
-
name: 'cancel',
|
|
139
|
-
label: 'Cancel',
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
actionSelected: (actionSelected) => {
|
|
143
|
-
return this._config.bulkMessageQueues(actionSelected.action.name, actionSelected.selected)
|
|
144
|
-
.pipe(tap(() => {
|
|
145
|
-
this.list.reload();
|
|
146
|
-
}));
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
this.config.filters.push({
|
|
151
|
-
name: 'messageId',
|
|
152
|
-
type: ItemType.Select,
|
|
153
|
-
label: 'Message Type',
|
|
154
|
-
values: (query) => {
|
|
155
|
-
query = {
|
|
156
|
-
...query,
|
|
157
|
-
limit: 50,
|
|
158
|
-
};
|
|
159
|
-
return this._config.loadMessages(query)
|
|
160
|
-
.pipe(map((response) => {
|
|
161
|
-
return [
|
|
162
|
-
{ value: null, name: 'All' },
|
|
163
|
-
...response.data
|
|
164
|
-
.map((item) => ({ name: item.name, value: item.id })),
|
|
165
|
-
];
|
|
166
|
-
}));
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
open(messageQueue) {
|
|
171
|
-
this._messageQueueService.openMessageQueue(messageQueue.id)
|
|
172
|
-
.pipe(takeUntil(this._destroy$))
|
|
173
|
-
.subscribe(() => {
|
|
174
|
-
this.list.reload();
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
ngOnDestroy() {
|
|
178
|
-
this._destroy$.next();
|
|
179
|
-
this._destroy$.complete();
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
QueuesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
183
|
-
QueuesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
184
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
185
|
-
type: Component,
|
|
186
|
-
args: [{ selector: 'fs-app-message-queues', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"webHookEnabled === false\">\n <fs-message-info>\n <div class=\"fs-row\">\n <span class=\"fs-flex\">The webhook which provides email delivery confirmations is not enabled.</span>\n <a \n (click)=\"enableWebhook()\"\n mat-raised-button>\n Enable\n </a>\n </div>\n\n </fs-message-info>\n</ng-container>\n\n<fs-list [config]=\"config\" #list>\n <fs-list-column title=\"Message\" name=\"subject\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <a (click)=\"open(row)\">{{row.emailMessageQueue.subject|truncate:100}}</a>\n <ng-container *ngIf=\"row.messageQueueAttachmentCount\">\n <mat-icon \n class=\"attachment-icon\"\n [matTooltip]=\"row.messageQueueAttachmentCount + ' Attachment(s)'\">\n attach_file\n </mat-icon>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <a (click)=\"open(row)\">{{row.smsMessageQueue.body|truncate:100}}</a>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Recipients\" class=\"col-recipients\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <ng-container *ngIf=\"row.emailMessageQueue.toRecipients.length; else unspecified\">\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.toRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.ccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.bccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <ng-container *ngIf=\"row.smsMessageQueue.toNumber; else unspecified\">\n <app-recipient \n class=\"small\"\n [state]=\"row.state\"\n [name]=\"row.smsMessageQueue.toNumber\">\n </app-recipient>\n </ng-container>\n </ng-container>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Status\" class=\"col-state\">\n <ng-template fs-list-cell let-row=\"row\"> \n <ng-container *ngIf=\"row.scheduled; else state\">\n Scheduled\n <div class=\"small\">\n {{row.scheduledDate | fsDateFormat: 'date-time' }}\n </div>\n </ng-container>\n <ng-template #state>\n <span [class]=\"'state-' + row.state\">{{messageQueueStates[row.state]}}</span>\n </ng-template>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Date\" name=\"created_date\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.createdDate | fsDateFormat: 'date-time-yeardiff' }}\n </ng-template>\n </fs-list-column>\n</fs-list>\n\n<ng-template #unspecified>\n <app-recipient \n class=\"small\"\n [state]=\"MessageQueueState.Failed\"\n name=\"Unspecified\">\n </app-recipient>\n</ng-template>", styles: [":host ::ng-deep .col-recipients small+small:before{content:\", \"}:host ::ng-deep .col-state .state-F,:host ::ng-deep .col-state .state-P{color:#d8524e}.attachment-icon{vertical-align:bottom}fs-message-info{margin-bottom:10px;display:block}\n"] }]
|
|
187
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
188
|
-
type: Inject,
|
|
189
|
-
args: [FS_APP_MESSAGE_CONFIG]
|
|
190
|
-
}] }, { type: i1.FsMessageQueueService }, { type: i0.ChangeDetectorRef }, { type: i2.FsStore }]; }, propDecorators: { list: [{
|
|
191
|
-
type: ViewChild,
|
|
192
|
-
args: [FsListComponent, { static: true }]
|
|
193
|
-
}], query: [{
|
|
194
|
-
type: Input
|
|
195
|
-
}], type: [{
|
|
196
|
-
type: Input
|
|
197
|
-
}] } });
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { ItemType } from '@firestitch/filter';
|
|
3
|
+
import { FsListComponent } from '@firestitch/list';
|
|
4
|
+
import { SelectionActionType } from '@firestitch/selection';
|
|
5
|
+
import { FsStore } from '@firestitch/store';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
import { filter, map, takeUntil, tap } from 'rxjs/operators';
|
|
8
|
+
import { isAfter } from 'date-fns';
|
|
9
|
+
import { indexNameValue } from '../../../../helpers';
|
|
10
|
+
import { FS_APP_MESSAGE_CONFIG } from '../../../app-message/injectors';
|
|
11
|
+
import { MessageQueueStates } from '../../consts';
|
|
12
|
+
import { MessageQueueType } from '../../enums';
|
|
13
|
+
import { MessageQueueState } from '../../enums/message-queue-state.enum';
|
|
14
|
+
import { FsMessageQueueService } from '../../services/message-queue.service';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "../../services/message-queue.service";
|
|
17
|
+
import * as i2 from "@firestitch/store";
|
|
18
|
+
import * as i3 from "@angular/common";
|
|
19
|
+
import * as i4 from "@angular/material/tooltip";
|
|
20
|
+
import * as i5 from "@angular/material/button";
|
|
21
|
+
import * as i6 from "@angular/material/icon";
|
|
22
|
+
import * as i7 from "@firestitch/list";
|
|
23
|
+
import * as i8 from "@firestitch/form";
|
|
24
|
+
import * as i9 from "@firestitch/message";
|
|
25
|
+
import * as i10 from "../recipient/recipient.component";
|
|
26
|
+
import * as i11 from "@firestitch/date";
|
|
27
|
+
import * as i12 from "../../pipes/truncate.pipe";
|
|
28
|
+
export class QueuesComponent {
|
|
29
|
+
constructor(_config, _messageQueueService, _cdRef, _store) {
|
|
30
|
+
this._config = _config;
|
|
31
|
+
this._messageQueueService = _messageQueueService;
|
|
32
|
+
this._cdRef = _cdRef;
|
|
33
|
+
this._store = _store;
|
|
34
|
+
this.list = null;
|
|
35
|
+
this.query = {};
|
|
36
|
+
this.type = null;
|
|
37
|
+
this.config = null;
|
|
38
|
+
this.messageQueueStates = {};
|
|
39
|
+
this.MessageQueueState = MessageQueueState;
|
|
40
|
+
this._destroy$ = new Subject();
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.messageQueueStates = indexNameValue(MessageQueueStates);
|
|
44
|
+
this.initList();
|
|
45
|
+
this.initWebhook();
|
|
46
|
+
}
|
|
47
|
+
enableWebhook() {
|
|
48
|
+
this._config.createWebhook()
|
|
49
|
+
.subscribe(() => {
|
|
50
|
+
this.initWebhook();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
initWebhook() {
|
|
54
|
+
const domain = document.location.hostname;
|
|
55
|
+
if (domain === 'localhost' || domain === '[::1]') {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this._config.loadWebhooks({ domain })
|
|
59
|
+
.pipe(filter(() => {
|
|
60
|
+
return !this._store.get('messagesWebhookEnabled');
|
|
61
|
+
}))
|
|
62
|
+
.subscribe((webhooks) => {
|
|
63
|
+
this._cdRef.markForCheck();
|
|
64
|
+
this.webHookEnabled = webhooks
|
|
65
|
+
.some((webhook) => {
|
|
66
|
+
const url = new URL(webhook.url);
|
|
67
|
+
return url.host === domain;
|
|
68
|
+
});
|
|
69
|
+
this._store.set('messagesWebhookEnabled', this.webHookEnabled);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
initList() {
|
|
73
|
+
this.config = {
|
|
74
|
+
filters: [
|
|
75
|
+
{
|
|
76
|
+
name: 'keyword',
|
|
77
|
+
type: ItemType.Keyword,
|
|
78
|
+
label: 'Search',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'state',
|
|
82
|
+
type: ItemType.Select,
|
|
83
|
+
label: 'Status',
|
|
84
|
+
values: () => {
|
|
85
|
+
return MessageQueueStates;
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'date',
|
|
90
|
+
type: ItemType.DateRange,
|
|
91
|
+
label: ['From Date', 'To Date'],
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
sort: { value: 'created_date', direction: 'desc' },
|
|
95
|
+
fetch: (query) => {
|
|
96
|
+
query = {
|
|
97
|
+
...query,
|
|
98
|
+
...this.query,
|
|
99
|
+
type: this.type,
|
|
100
|
+
messageQueueAttachmentCounts: true,
|
|
101
|
+
emailMessageQueues: true,
|
|
102
|
+
emailMessageQueueBodies: false,
|
|
103
|
+
smsMessageQueues: true,
|
|
104
|
+
};
|
|
105
|
+
return this._config.loadMessageQueues(query)
|
|
106
|
+
.pipe(map((response) => ({
|
|
107
|
+
data: response.data
|
|
108
|
+
.map((messageQueue) => {
|
|
109
|
+
return {
|
|
110
|
+
...messageQueue,
|
|
111
|
+
scheduled: messageQueue.state === MessageQueueState.Queued && isAfter(messageQueue.scheduledDate, new Date()),
|
|
112
|
+
messageQueueRecipients: messageQueue.messageQueueRecipients
|
|
113
|
+
.reduce((accum, messageQueueRecipient) => {
|
|
114
|
+
accum[messageQueueRecipient.recipient] = messageQueueRecipient.state;
|
|
115
|
+
return accum;
|
|
116
|
+
}, {}),
|
|
117
|
+
};
|
|
118
|
+
}), paging: response.paging,
|
|
119
|
+
})));
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
if (this._config.bulkMessageQueues) {
|
|
123
|
+
this.config.selection = {
|
|
124
|
+
selectAll: false,
|
|
125
|
+
actions: [
|
|
126
|
+
{
|
|
127
|
+
type: SelectionActionType.Action,
|
|
128
|
+
name: 'queue',
|
|
129
|
+
label: 'Queue',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: SelectionActionType.Action,
|
|
133
|
+
name: 'resend',
|
|
134
|
+
label: 'Resend',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: SelectionActionType.Action,
|
|
138
|
+
name: 'cancel',
|
|
139
|
+
label: 'Cancel',
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
actionSelected: (actionSelected) => {
|
|
143
|
+
return this._config.bulkMessageQueues(actionSelected.action.name, actionSelected.selected)
|
|
144
|
+
.pipe(tap(() => {
|
|
145
|
+
this.list.reload();
|
|
146
|
+
}));
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
this.config.filters.push({
|
|
151
|
+
name: 'messageId',
|
|
152
|
+
type: ItemType.Select,
|
|
153
|
+
label: 'Message Type',
|
|
154
|
+
values: (query) => {
|
|
155
|
+
query = {
|
|
156
|
+
...query,
|
|
157
|
+
limit: 50,
|
|
158
|
+
};
|
|
159
|
+
return this._config.loadMessages(query)
|
|
160
|
+
.pipe(map((response) => {
|
|
161
|
+
return [
|
|
162
|
+
{ value: null, name: 'All' },
|
|
163
|
+
...response.data
|
|
164
|
+
.map((item) => ({ name: item.name, value: item.id })),
|
|
165
|
+
];
|
|
166
|
+
}));
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
open(messageQueue) {
|
|
171
|
+
this._messageQueueService.openMessageQueue(messageQueue.id)
|
|
172
|
+
.pipe(takeUntil(this._destroy$))
|
|
173
|
+
.subscribe(() => {
|
|
174
|
+
this.list.reload();
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
ngOnDestroy() {
|
|
178
|
+
this._destroy$.next();
|
|
179
|
+
this._destroy$.complete();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
QueuesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QueuesComponent, deps: [{ token: FS_APP_MESSAGE_CONFIG }, { token: i1.FsMessageQueueService }, { token: i0.ChangeDetectorRef }, { token: i2.FsStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
QueuesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: QueuesComponent, selector: "fs-app-message-queues", inputs: { query: "query", type: "type" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"webHookEnabled === false\">\n <fs-message-info>\n <div class=\"fs-row\">\n <span class=\"fs-flex\">The webhook which provides email delivery confirmations is not enabled.</span>\n <a \n (click)=\"enableWebhook()\"\n mat-raised-button>\n Enable\n </a>\n </div>\n\n </fs-message-info>\n</ng-container>\n\n<fs-list [config]=\"config\" #list>\n <fs-list-column title=\"Message\" name=\"subject\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <a (click)=\"open(row)\">{{row.emailMessageQueue.subject|truncate:100}}</a>\n <ng-container *ngIf=\"row.messageQueueAttachmentCount\">\n <mat-icon \n class=\"attachment-icon\"\n [matTooltip]=\"row.messageQueueAttachmentCount + ' Attachment(s)'\">\n attach_file\n </mat-icon>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <a (click)=\"open(row)\">{{row.smsMessageQueue.body|truncate:100}}</a>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Recipients\" class=\"col-recipients\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <ng-container *ngIf=\"row.emailMessageQueue.toRecipients.length; else unspecified\">\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.toRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.ccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.bccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <ng-container *ngIf=\"row.smsMessageQueue.toNumber; else unspecified\">\n <app-recipient \n class=\"small\"\n [state]=\"row.state\"\n [name]=\"row.smsMessageQueue.toNumber\">\n </app-recipient>\n </ng-container>\n </ng-container>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Status\" class=\"col-state\">\n <ng-template fs-list-cell let-row=\"row\"> \n <ng-container *ngIf=\"row.scheduled; else state\">\n Scheduled\n <div class=\"small\">\n {{row.scheduledDate | fsDateFormat: 'date-time' }}\n </div>\n </ng-container>\n <ng-template #state>\n <span [class]=\"'state-' + row.state\">{{messageQueueStates[row.state]}}</span>\n </ng-template>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Date\" name=\"created_date\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.createdDate | fsDateFormat: 'date-time-yeardiff' }}\n </ng-template>\n </fs-list-column>\n</fs-list>\n\n<ng-template #unspecified>\n <app-recipient \n class=\"small\"\n [state]=\"MessageQueueState.Failed\"\n name=\"Unspecified\">\n </app-recipient>\n</ng-template>", styles: [":host ::ng-deep .col-recipients small+small:before{content:\", \"}:host ::ng-deep .col-state .state-F,:host ::ng-deep .col-state .state-P{color:#d8524e}.attachment-icon{vertical-align:bottom}fs-message-info{margin-bottom:10px;display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: i7.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { kind: "directive", type: i7.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { kind: "directive", type: i8.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i9.FsMessageInfoComponent, selector: "fs-message-info" }, { kind: "component", type: i10.RecipientComponent, selector: "app-recipient", inputs: ["name", "state"] }, { kind: "pipe", type: i11.FsDateFormatPipe, name: "fsDateFormat" }, { kind: "pipe", type: i12.TruncatePipe, name: "truncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: QueuesComponent, decorators: [{
|
|
185
|
+
type: Component,
|
|
186
|
+
args: [{ selector: 'fs-app-message-queues', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"webHookEnabled === false\">\n <fs-message-info>\n <div class=\"fs-row\">\n <span class=\"fs-flex\">The webhook which provides email delivery confirmations is not enabled.</span>\n <a \n (click)=\"enableWebhook()\"\n mat-raised-button>\n Enable\n </a>\n </div>\n\n </fs-message-info>\n</ng-container>\n\n<fs-list [config]=\"config\" #list>\n <fs-list-column title=\"Message\" name=\"subject\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <a (click)=\"open(row)\">{{row.emailMessageQueue.subject|truncate:100}}</a>\n <ng-container *ngIf=\"row.messageQueueAttachmentCount\">\n <mat-icon \n class=\"attachment-icon\"\n [matTooltip]=\"row.messageQueueAttachmentCount + ' Attachment(s)'\">\n attach_file\n </mat-icon>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <a (click)=\"open(row)\">{{row.smsMessageQueue.body|truncate:100}}</a>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Recipients\" class=\"col-recipients\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.emailMessageQueue\">\n <ng-container *ngIf=\"row.emailMessageQueue.toRecipients.length; else unspecified\">\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.toRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.ccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n <div class=\"small\" *ngFor=\"let recipient of row.emailMessageQueue.bccRecipients\">\n <app-recipient \n [state]=\"row.messageQueueRecipients[recipient] || row.state\"\n [name]=\"recipient\">\n </app-recipient>\n </div>\n </ng-container>\n <ng-container *ngIf=\"row.smsMessageQueue\">\n <ng-container *ngIf=\"row.smsMessageQueue.toNumber; else unspecified\">\n <app-recipient \n class=\"small\"\n [state]=\"row.state\"\n [name]=\"row.smsMessageQueue.toNumber\">\n </app-recipient>\n </ng-container>\n </ng-container>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Status\" class=\"col-state\">\n <ng-template fs-list-cell let-row=\"row\"> \n <ng-container *ngIf=\"row.scheduled; else state\">\n Scheduled\n <div class=\"small\">\n {{row.scheduledDate | fsDateFormat: 'date-time' }}\n </div>\n </ng-container>\n <ng-template #state>\n <span [class]=\"'state-' + row.state\">{{messageQueueStates[row.state]}}</span>\n </ng-template>\n </ng-template>\n </fs-list-column> \n <fs-list-column title=\"Date\" name=\"created_date\" [sortable]=\"true\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.createdDate | fsDateFormat: 'date-time-yeardiff' }}\n </ng-template>\n </fs-list-column>\n</fs-list>\n\n<ng-template #unspecified>\n <app-recipient \n class=\"small\"\n [state]=\"MessageQueueState.Failed\"\n name=\"Unspecified\">\n </app-recipient>\n</ng-template>", styles: [":host ::ng-deep .col-recipients small+small:before{content:\", \"}:host ::ng-deep .col-state .state-F,:host ::ng-deep .col-state .state-P{color:#d8524e}.attachment-icon{vertical-align:bottom}fs-message-info{margin-bottom:10px;display:block}\n"] }]
|
|
187
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
188
|
+
type: Inject,
|
|
189
|
+
args: [FS_APP_MESSAGE_CONFIG]
|
|
190
|
+
}] }, { type: i1.FsMessageQueueService }, { type: i0.ChangeDetectorRef }, { type: i2.FsStore }]; }, propDecorators: { list: [{
|
|
191
|
+
type: ViewChild,
|
|
192
|
+
args: [FsListComponent, { static: true }]
|
|
193
|
+
}], query: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], type: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}] } });
|
|
198
198
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXF1ZXVlcy9jb21wb25lbnRzL3F1ZXVlcy9xdWV1ZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcXVldWVzL3F1ZXVlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduSSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUF3QixlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFp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QUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUc1QixLQUFLO3NCQUFwQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IEZzTGlzdEFjdGlvblNlbGVjdGVkLCBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQWN0aW9uVHlwZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBGc1N0b3JlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc3RvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzQWZ0ZXIgfSBmcm9tICdkYXRlLWZucyc7XG5cbmltcG9ydCB7IGluZGV4TmFtZVZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycyc7XG5pbXBvcnQgeyBGU19BUFBfTUVTU0FHRV9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi9hcHAtbWVzc2FnZS9pbmplY3RvcnMnO1xuaW1wb3J0IHsgRnNBcHBNZXNzYWdlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vYXBwLW1lc3NhZ2UvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNZXNzYWdlUXVldWVTdGF0ZXMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgTWVzc2FnZVF1ZXVlVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IE1lc3NhZ2VRdWV1ZVN0YXRlIH0gZnJvbSAnLi4vLi4vZW51bXMvbWVzc2FnZS1xdWV1ZS1zdGF0ZS5lbnVtJztcbmltcG9ydCB7IEZzTWVzc2FnZVF1ZXVlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lc3NhZ2UtcXVldWUuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtYXBwLW1lc3NhZ2UtcXVldWVzJyxcbiAgc3R5bGVVcmxzOiBbJy4vcXVldWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWV1ZXMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUXVldWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoRnNMaXN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgbGlzdDogRnNMaXN0Q29tcG9uZW50ID0gbnVsbDtcblxuICBASW5wdXQoKSBwdWJsaWMgcXVlcnkgPSB7fTtcblxuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogTWVzc2FnZVF1ZXVlVHlwZSA9IG51bGw7XG5cbiAgcHVibGljIGNvbmZpZzogRnNMaXN0Q29uZmlnID0gbnVsbDtcbiAgcHVibGljIG1lc3NhZ2VRdWV1ZVN0YXRlcyA9IHt9O1xuICBwdWJsaWMgTWVzc2FnZVF1ZXVlU3RhdGUgPSBNZXNzYWdlUXVldWVTdGF0ZTtcbiAgcHVibGljIHdlYkhvb2tFbmFibGVkO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEZTX0FQUF9NRVNTQUdFX0NPTkZJRykgcHJpdmF0ZSBfY29uZmlnOiBGc0FwcE1lc3NhZ2VDb25maWcsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVF1ZXVlU2VydmljZTogRnNNZXNzYWdlUXVldWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9zdG9yZTogRnNTdG9yZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tZXNzYWdlUXVldWVTdGF0ZXMgPSBpbmRleE5hbWVWYWx1ZShNZXNzYWdlUXVldWVTdGF0ZXMpO1xuICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB0aGlzLmluaXRXZWJob29rKCk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlV2ViaG9vaygpIHtcbiAgICB0aGlzLl9jb25maWcuY3JlYXRlV2ViaG9vaygpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0V2ViaG9vaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFdlYmhvb2soKSB7XG4gICAgY29uc3QgZG9tYWluID0gZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7XG5cbiAgICBpZihkb21haW4gPT09ICdsb2NhbGhvc3QnIHx8IGRvbWFpbiA9PT0gJ1s6OjFdJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2NvbmZpZy5sb2FkV2ViaG9va3MoeyBkb21haW4gfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiAhdGhpcy5fc3RvcmUuZ2V0KCdtZXNzYWdlc1dlYmhvb2tFbmFibGVkJyk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgod2ViaG9va3MpID0+IHtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMud2ViSG9va0VuYWJsZWQgPSB3ZWJob29rc1xuICAgICAgICAgIC5zb21lKCh3ZWJob29rKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHdlYmhvb2sudXJsKTtcblxuICAgICAgICAgICAgcmV0dXJuIHVybC5ob3N0ID09PSBkb21haW47XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc3RvcmUuc2V0KCdtZXNzYWdlc1dlYmhvb2tFbmFibGVkJywgdGhpcy53ZWJIb29rRW5hYmxlZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0TGlzdCgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdrZXl3b3JkJyxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5LZXl3b3JkLFxuICAgICAgICAgIGxhYmVsOiAnU2VhcmNoJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzdGF0ZScsXG4gICAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICAgIGxhYmVsOiAnU3RhdHVzJyxcbiAgICAgICAgICB2YWx1ZXM6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBNZXNzYWdlUXVldWVTdGF0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdkYXRlJyxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5EYXRlUmFuZ2UsXG4gICAgICAgICAgbGFiZWw6IFsnRnJvbSBEYXRlJywgJ1RvIERhdGUnXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzb3J0OiB7IHZhbHVlOiAnY3JlYXRlZF9kYXRlJywgZGlyZWN0aW9uOiAnZGVzYycgfSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgLi4udGhpcy5xdWVyeSxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgbWVzc2FnZVF1ZXVlQXR0YWNobWVudENvdW50czogdHJ1ZSxcbiAgICAgICAgICBlbWFpbE1lc3NhZ2VRdWV1ZXM6IHRydWUsXG4gICAgICAgICAgZW1haWxNZXNzYWdlUXVldWVCb2RpZXM6IGZhbHNlLFxuICAgICAgICAgIHNtc01lc3NhZ2VRdWV1ZXM6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5sb2FkTWVzc2FnZVF1ZXVlcyhxdWVyeSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGFcbiAgICAgICAgICAgICAgICAubWFwKChtZXNzYWdlUXVldWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm1lc3NhZ2VRdWV1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVkOiBtZXNzYWdlUXVldWUuc3RhdGUgPT09IE1lc3NhZ2VRdWV1ZVN0YXRlLlF1ZXVlZCAmJiBpc0FmdGVyKG1lc3NhZ2VRdWV1ZS5zY2hlZHVsZWREYXRlLCBuZXcgRGF0ZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVF1ZXVlUmVjaXBpZW50czogbWVzc2FnZVF1ZXVlLm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAucmVkdWNlKChhY2N1bSwgbWVzc2FnZVF1ZXVlUmVjaXBpZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2N1bVttZXNzYWdlUXVldWVSZWNpcGllbnQucmVjaXBpZW50XSA9IG1lc3NhZ2VRdWV1ZVJlY2lwaWVudC5zdGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KSxcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksIHBhZ2luZzogcmVzcG9uc2UucGFnaW5nLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmJ1bGtNZXNzYWdlUXVldWVzKSB7XG4gICAgICB0aGlzLmNvbmZpZy5zZWxlY3Rpb24gPSB7XG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdxdWV1ZScsXG4gICAgICAgICAgICBsYWJlbDogJ1F1ZXVlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFNlbGVjdGlvbkFjdGlvblR5cGUuQWN0aW9uLFxuICAgICAgICAgICAgbmFtZTogJ3Jlc2VuZCcsXG4gICAgICAgICAgICBsYWJlbDogJ1Jlc2VuZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBTZWxlY3Rpb25BY3Rpb25UeXBlLkFjdGlvbixcbiAgICAgICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICAgICAgbGFiZWw6ICdDYW5jZWwnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvblNlbGVjdGVkOiAoYWN0aW9uU2VsZWN0ZWQ6IEZzTGlzdEFjdGlvblNlbGVjdGVkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5idWxrTWVzc2FnZVF1ZXVlcyhhY3Rpb25TZWxlY3RlZC5hY3Rpb24ubmFtZSwgYWN0aW9uU2VsZWN0ZWQuc2VsZWN0ZWQpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5jb25maWcuZmlsdGVycy5wdXNoKHtcbiAgICAgIG5hbWU6ICdtZXNzYWdlSWQnLFxuICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgbGFiZWw6ICdNZXNzYWdlIFR5cGUnLFxuICAgICAgdmFsdWVzOiAocXVlcnkpID0+IHtcbiAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgbGltaXQ6IDUwLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWcubG9hZE1lc3NhZ2VzKHF1ZXJ5KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IG51bGwsIG5hbWU6ICdBbGwnIH0sXG4gICAgICAgICAgICAgICAgLi4ucmVzcG9uc2UuZGF0YVxuICAgICAgICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gKHsgbmFtZTogaXRlbS5uYW1lLCB2YWx1ZTogaXRlbS5pZCB9KSksXG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgfSxcbiAgICB9IGFzIGFueSk7XG4gIH1cblxuICBwdWJsaWMgb3BlbihtZXNzYWdlUXVldWUpIHtcbiAgICB0aGlzLl9tZXNzYWdlUXVldWVTZXJ2aWNlLm9wZW5NZXNzYWdlUXVldWUobWVzc2FnZVF1ZXVlLmlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ3ZWJIb29rRW5hYmxlZCA9PT0gZmFsc2VcIj5cbiAgPGZzLW1lc3NhZ2UtaW5mbz5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtcm93XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImZzLWZsZXhcIj5UaGUgd2ViaG9vayB3aGljaCBwcm92aWRlcyBlbWFpbCBkZWxpdmVyeSBjb25maXJtYXRpb25zIGlzIG5vdCBlbmFibGVkLjwvc3Bhbj5cbiAgICAgIDxhICBcbiAgICAgICAgICAoY2xpY2spPVwiZW5hYmxlV2ViaG9vaygpXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvbj5cbiAgICAgICAgRW5hYmxlXG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG5cbiAgPC9mcy1tZXNzYWdlLWluZm8+XG48L25nLWNvbnRhaW5lcj5cblxuPGZzLWxpc3QgW2NvbmZpZ109XCJjb25maWdcIiAjbGlzdD5cbiAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiTWVzc2FnZVwiIG5hbWU9XCJzdWJqZWN0XCIgW3NvcnRhYmxlXT1cInRydWVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuZW1haWxNZXNzYWdlUXVldWVcIj5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm9wZW4ocm93KVwiPnt7cm93LmVtYWlsTWVzc2FnZVF1ZXVlLnN1YmplY3R8dHJ1bmNhdGU6MTAwfX08L2E+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cubWVzc2FnZVF1ZXVlQXR0YWNobWVudENvdW50XCI+XG4gICAgICAgICAgPG1hdC1pY29uICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXR0YWNobWVudC1pY29uXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwicm93Lm1lc3NhZ2VRdWV1ZUF0dGFjaG1lbnRDb3VudCArICcgQXR0YWNobWVudChzKSdcIj5cbiAgICAgICAgICAgIGF0dGFjaF9maWxlXG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc21zTWVzc2FnZVF1ZXVlXCI+XG4gICAgICAgIDxhIChjbGljayk9XCJvcGVuKHJvdylcIj57e3Jvdy5zbXNNZXNzYWdlUXVldWUuYm9keXx0cnVuY2F0ZToxMDB9fTwvYT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDxmcy1saXN0LWNvbHVtbiB0aXRsZT1cIlJlY2lwaWVudHNcIiBjbGFzcz1cImNvbC1yZWNpcGllbnRzXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmVtYWlsTWVzc2FnZVF1ZXVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuZW1haWxNZXNzYWdlUXVldWUudG9SZWNpcGllbnRzLmxlbmd0aDsgZWxzZSB1bnNwZWNpZmllZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiICpuZ0Zvcj1cImxldCByZWNpcGllbnQgb2Ygcm93LmVtYWlsTWVzc2FnZVF1ZXVlLnRvUmVjaXBpZW50c1wiPlxuICAgICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCJyb3cubWVzc2FnZVF1ZXVlUmVjaXBpZW50c1tyZWNpcGllbnRdIHx8IHJvdy5zdGF0ZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cInJlY2lwaWVudFwiPlxuICAgICAgICAgICAgPC9hcHAtcmVjaXBpZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgKm5nRm9yPVwibGV0IHJlY2lwaWVudCBvZiByb3cuZW1haWxNZXNzYWdlUXVldWUuY2NSZWNpcGllbnRzXCI+XG4gICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICBbc3RhdGVdPVwicm93Lm1lc3NhZ2VRdWV1ZVJlY2lwaWVudHNbcmVjaXBpZW50XSB8fCByb3cuc3RhdGVcIlxuICAgICAgICAgICAgW25hbWVdPVwicmVjaXBpZW50XCI+XG4gICAgICAgICAgPC9hcHAtcmVjaXBpZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCIgKm5nRm9yPVwibGV0IHJlY2lwaWVudCBvZiByb3cuZW1haWxNZXNzYWdlUXVldWUuYmNjUmVjaXBpZW50c1wiPlxuICAgICAgICAgIDxhcHAtcmVjaXBpZW50ICAgICAgICAgICAgIFxuICAgICAgICAgICAgW3N0YXRlXT1cInJvdy5tZXNzYWdlUXVldWVSZWNpcGllbnRzW3JlY2lwaWVudF0gfHwgcm93LnN0YXRlXCJcbiAgICAgICAgICAgIFtuYW1lXT1cInJlY2lwaWVudFwiPlxuICAgICAgICAgIDwvYXBwLXJlY2lwaWVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc21zTWVzc2FnZVF1ZXVlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc21zTWVzc2FnZVF1ZXVlLnRvTnVtYmVyOyBlbHNlIHVuc3BlY2lmaWVkXCI+XG4gICAgICAgICAgPGFwcC1yZWNpcGllbnQgXG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJyb3cuc3RhdGVcIlxuICAgICAgICAgICAgW25hbWVdPVwicm93LnNtc01lc3NhZ2VRdWV1ZS50b051bWJlclwiPlxuICAgICAgICAgIDwvYXBwLXJlY2lwaWVudD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPiBcbiAgPGZzLWxpc3QtY29sdW1uIHRpdGxlPVwiU3RhdHVzXCIgY2xhc3M9XCJjb2wtc3RhdGVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj4gICAgXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LnNjaGVkdWxlZDsgZWxzZSBzdGF0ZVwiPlxuICAgICAgICBTY2hlZHVsZWRcbiAgICAgICAgPGRpdiBjbGFzcz1cInNtYWxsXCI+XG4gICAgICAgICAgIHt7cm93LnNjaGVkdWxlZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUnIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3N0YXRlPlxuICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ3N0YXRlLScgKyByb3cuc3RhdGVcIj57e21lc3NhZ2VRdWV1ZVN0YXRlc1tyb3cuc3RhdGVdfX08L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZnMtbGlzdC1jb2x1bW4+IFxuICA8ZnMtbGlzdC1jb2x1bW4gdGl0bGU9XCJEYXRlXCIgbmFtZT1cImNyZWF0ZWRfZGF0ZVwiIFtzb3J0YWJsZV09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICB7eyByb3cuY3JlYXRlZERhdGUgfCBmc0RhdGVGb3JtYXQ6ICdkYXRlLXRpbWUteWVhcmRpZmYnIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9mcy1saXN0LWNvbHVtbj5cbjwvZnMtbGlzdD5cblxuPG5nLXRlbXBsYXRlICN1bnNwZWNpZmllZD5cbiAgPGFwcC1yZWNpcGllbnQgXG4gICAgY2xhc3M9XCJzbWFsbFwiXG4gICAgW3N0YXRlXT1cIk1lc3NhZ2VRdWV1ZVN0YXRlLkZhaWxlZFwiXG4gICAgbmFtZT1cIlVuc3BlY2lmaWVkXCI+XG4gIDwvYXBwLXJlY2lwaWVudD5cbjwvbmctdGVtcGxhdGU+Il19
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/
|
|
4
|
-
import * as i2 from "@angular/
|
|
5
|
-
import * as i3 from "@angular/material/
|
|
6
|
-
export class RecipientComponent {
|
|
7
|
-
ngOnInit() {
|
|
8
|
-
const icons = {
|
|
9
|
-
'S': { name: 'check_circle', tooltip: 'Sent' },
|
|
10
|
-
'E': { name: 'offline_bolt', tooltip: 'Sending' },
|
|
11
|
-
'F': { name: 'info', tooltip: 'Failed' },
|
|
12
|
-
};
|
|
13
|
-
this.icon = icons[this.state];
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
RecipientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
17
|
-
RecipientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
-
type: Component,
|
|
20
|
-
args: [{ selector: 'app-recipient', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"recipient\">\n <span class=\"name\">{{name}}</span>\n <mat-icon *ngIf=\"icon\" [class]=\"'state-' + state\" [matTooltip]=\"icon.tooltip\">{{icon.name}}</mat-icon>\n</span>", styles: ["mat-icon{font-size:14px;width:14px;height:14px;line-height:normal;margin-left:2px}mat-icon.state-S{color:#5fa099}mat-icon.state-E{color:#fbbc04}mat-icon.state-F{color:#d8524e}.recipient{display:inline-flex;align-items:center}\n"] }]
|
|
21
|
-
}], propDecorators: { name: [{
|
|
22
|
-
type: Input
|
|
23
|
-
}], state: [{
|
|
24
|
-
type: Input
|
|
25
|
-
}] } });
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/tooltip";
|
|
5
|
+
import * as i3 from "@angular/material/icon";
|
|
6
|
+
export class RecipientComponent {
|
|
7
|
+
ngOnInit() {
|
|
8
|
+
const icons = {
|
|
9
|
+
'S': { name: 'check_circle', tooltip: 'Sent' },
|
|
10
|
+
'E': { name: 'offline_bolt', tooltip: 'Sending' },
|
|
11
|
+
'F': { name: 'info', tooltip: 'Failed' },
|
|
12
|
+
};
|
|
13
|
+
this.icon = icons[this.state];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
RecipientComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecipientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
17
|
+
RecipientComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: RecipientComponent, selector: "app-recipient", inputs: { name: "name", state: "state" }, ngImport: i0, template: "<span class=\"recipient\">\n <span class=\"name\">{{name}}</span>\n <mat-icon *ngIf=\"icon\" [class]=\"'state-' + state\" [matTooltip]=\"icon.tooltip\">{{icon.name}}</mat-icon>\n</span>", styles: ["mat-icon{font-size:14px;width:14px;height:14px;line-height:normal;margin-left:2px}mat-icon.state-S{color:#5fa099}mat-icon.state-E{color:#fbbc04}mat-icon.state-F{color:#d8524e}.recipient{display:inline-flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RecipientComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'app-recipient', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"recipient\">\n <span class=\"name\">{{name}}</span>\n <mat-icon *ngIf=\"icon\" [class]=\"'state-' + state\" [matTooltip]=\"icon.tooltip\">{{icon.name}}</mat-icon>\n</span>", styles: ["mat-icon{font-size:14px;width:14px;height:14px;line-height:normal;margin-left:2px}mat-icon.state-S{color:#5fa099}mat-icon.state-E{color:#fbbc04}mat-icon.state-F{color:#d8524e}.recipient{display:inline-flex;align-items:center}\n"] }]
|
|
21
|
+
}], propDecorators: { name: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], state: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}] } });
|
|
26
26
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXF1ZXVlcy9jb21wb25lbnRzL3JlY2lwaWVudC9yZWNpcGllbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbXBvbmVudHMvcmVjaXBpZW50L3JlY2lwaWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFBRSxLQUFLLEdBQ2pCLE1BQU0sZUFBZSxDQUFDOzs7OztBQVV2QixNQUFNLE9BQU8sa0JBQWtCO0lBT3RCLFFBQVE7UUFFYixNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtZQUM5QyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDakQsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1NBQ3pDLENBQUE7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7K0dBaEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtGQ2IvQiw2TEFHTzsyRkRVTSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmVjaXBpZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwaWVudC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwaWVudC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBpZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgXG4gIEBJbnB1dCgpIG5hbWU7XG4gIEBJbnB1dCgpIHN0YXRlO1xuICBcbiAgcHVibGljIGljb247XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIFxuICAgIGNvbnN0IGljb25zID0ge1xuICAgICAgJ1MnOiB7IG5hbWU6ICdjaGVja19jaXJjbGUnLCB0b29sdGlwOiAnU2VudCcgfSxcbiAgICAgICdFJzogeyBuYW1lOiAnb2ZmbGluZV9ib2x0JywgdG9vbHRpcDogJ1NlbmRpbmcnIH0sXG4gICAgICAnRic6IHsgbmFtZTogJ2luZm8nLCB0b29sdGlwOiAnRmFpbGVkJyB9LFxuICAgIH1cblxuICAgIHRoaXMuaWNvbiA9IGljb25zW3RoaXMuc3RhdGVdO1xuICB9XG5cbn1cbiIsIjxzcGFuIGNsYXNzPVwicmVjaXBpZW50XCI+XG4gIDxzcGFuIGNsYXNzPVwibmFtZVwiPnt7bmFtZX19PC9zcGFuPlxuICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCIgW2NsYXNzXT1cIidzdGF0ZS0nICsgc3RhdGVcIiBbbWF0VG9vbHRpcF09XCJpY29uLnRvb2x0aXBcIj57e2ljb24ubmFtZX19PC9tYXQtaWNvbj5cbjwvc3Bhbj4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './message-queue-states.const';
|
|
1
|
+
export * from './message-queue-states.const';
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbWVzc2FnZS1xdWV1ZXMvY29uc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lc3NhZ2UtcXVldWUtc3RhdGVzLmNvbnN0JztcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { MessageQueueEventType } from "../enums";
|
|
2
|
-
export const MessageQueueEventTypes = [
|
|
3
|
-
{ name: 'Open', value: MessageQueueEventType.Open },
|
|
4
|
-
{ name: 'Click', value: MessageQueueEventType.Click },
|
|
5
|
-
];
|
|
1
|
+
import { MessageQueueEventType } from "../enums";
|
|
2
|
+
export const MessageQueueEventTypes = [
|
|
3
|
+
{ name: 'Open', value: MessageQueueEventType.Open },
|
|
4
|
+
{ name: 'Click', value: MessageQueueEventType.Click },
|
|
5
|
+
];
|
|
6
6
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1xdWV1ZS1ldmVudC10eXBlLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21lc3NhZ2UtcXVldWVzL2NvbnN0cy9tZXNzYWdlLXF1ZXVlLWV2ZW50LXR5cGUuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHO0lBQ3BDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFO0lBQ25ELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLENBQUMsS0FBSyxFQUFFO0NBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlUXVldWVFdmVudFR5cGUgfSBmcm9tIFwiLi4vZW51bXNcIjtcblxuXG5leHBvcnQgY29uc3QgTWVzc2FnZVF1ZXVlRXZlbnRUeXBlcyA9IFtcbiAgeyBuYW1lOiAnT3BlbicsIHZhbHVlOiBNZXNzYWdlUXVldWVFdmVudFR5cGUuT3BlbiB9LFxuICB7IG5hbWU6ICdDbGljaycsIHZhbHVlOiBNZXNzYWdlUXVldWVFdmVudFR5cGUuQ2xpY2sgfSxcbl07XG4iXX0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MessageQueueState } from '../enums/message-queue-state.enum';
|
|
2
|
-
export const MessageQueueStates = [
|
|
3
|
-
{ name: 'Sent', value: MessageQueueState.Sent },
|
|
4
|
-
{ name: 'Partially Sent', value: MessageQueueState.PartiallySent },
|
|
5
|
-
{ name: 'Sending', value: MessageQueueState.Sending },
|
|
6
|
-
{ name: 'Queued', value: MessageQueueState.Queued },
|
|
7
|
-
{ name: 'Canceled', value: MessageQueueState.Canceled },
|
|
8
|
-
{ name: 'Invalid Recipients', value: MessageQueueState.InvalidRecipients },
|
|
9
|
-
{ name: 'Failed', value: MessageQueueState.Failed }
|
|
10
|
-
];
|
|
1
|
+
import { MessageQueueState } from '../enums/message-queue-state.enum';
|
|
2
|
+
export const MessageQueueStates = [
|
|
3
|
+
{ name: 'Sent', value: MessageQueueState.Sent },
|
|
4
|
+
{ name: 'Partially Sent', value: MessageQueueState.PartiallySent },
|
|
5
|
+
{ name: 'Sending', value: MessageQueueState.Sending },
|
|
6
|
+
{ name: 'Queued', value: MessageQueueState.Queued },
|
|
7
|
+
{ name: 'Canceled', value: MessageQueueState.Canceled },
|
|
8
|
+
{ name: 'Invalid Recipients', value: MessageQueueState.InvalidRecipients },
|
|
9
|
+
{ name: 'Failed', value: MessageQueueState.Failed }
|
|
10
|
+
];
|
|
11
11
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1xdWV1ZS1zdGF0ZXMuY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvbWVzc2FnZS1xdWV1ZXMvY29uc3RzL21lc3NhZ2UtcXVldWUtc3RhdGVzLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3RFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFO0lBQy9DLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7SUFDbEUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7SUFDckQsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7SUFDbkQsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7SUFDdkQsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFO0lBQzFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxFQUFFO0NBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlUXVldWVTdGF0ZSB9IGZyb20gJy4uL2VudW1zL21lc3NhZ2UtcXVldWUtc3RhdGUuZW51bSc7XG5cblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VRdWV1ZVN0YXRlcyA9IFtcbiAgeyBuYW1lOiAnU2VudCcsIHZhbHVlOiBNZXNzYWdlUXVldWVTdGF0ZS5TZW50IH0sXG4gIHsgbmFtZTogJ1BhcnRpYWxseSBTZW50JywgdmFsdWU6IE1lc3NhZ2VRdWV1ZVN0YXRlLlBhcnRpYWxseVNlbnQgfSxcbiAgeyBuYW1lOiAnU2VuZGluZycsIHZhbHVlOiBNZXNzYWdlUXVldWVTdGF0ZS5TZW5kaW5nIH0sXG4gIHsgbmFtZTogJ1F1ZXVlZCcsIHZhbHVlOiBNZXNzYWdlUXVldWVTdGF0ZS5RdWV1ZWQgfSxcbiAgeyBuYW1lOiAnQ2FuY2VsZWQnLCB2YWx1ZTogTWVzc2FnZVF1ZXVlU3RhdGUuQ2FuY2VsZWQgfSxcbiAgeyBuYW1lOiAnSW52YWxpZCBSZWNpcGllbnRzJywgdmFsdWU6IE1lc3NhZ2VRdWV1ZVN0YXRlLkludmFsaWRSZWNpcGllbnRzIH0sXG4gIHsgbmFtZTogJ0ZhaWxlZCcsIHZhbHVlOiBNZXNzYWdlUXVldWVTdGF0ZS5GYWlsZWQgfVxuXTtcbiJdfQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export var EmailMessageQueueFormat;
|
|
2
|
-
(function (EmailMessageQueueFormat) {
|
|
3
|
-
EmailMessageQueueFormat["Text"] = "T";
|
|
4
|
-
EmailMessageQueueFormat["HTML"] = "H";
|
|
5
|
-
EmailMessageQueueFormat["RichText"] = "R";
|
|
6
|
-
})(EmailMessageQueueFormat || (EmailMessageQueueFormat = {}));
|
|
1
|
+
export var EmailMessageQueueFormat;
|
|
2
|
+
(function (EmailMessageQueueFormat) {
|
|
3
|
+
EmailMessageQueueFormat["Text"] = "T";
|
|
4
|
+
EmailMessageQueueFormat["HTML"] = "H";
|
|
5
|
+
EmailMessageQueueFormat["RichText"] = "R";
|
|
6
|
+
})(EmailMessageQueueFormat || (EmailMessageQueueFormat = {}));
|
|
7
7
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtbWVzc2FnZS1xdWV1ZS1mb3JtYXQuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tZXNzYWdlLXF1ZXVlcy9lbnVtcy9lbWFpbC1tZXNzYWdlLXF1ZXVlLWZvcm1hdC5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLHVCQUlYO0FBSkQsV0FBWSx1QkFBdUI7SUFDakMscUNBQVUsQ0FBQTtJQUNWLHFDQUFVLENBQUE7SUFDVix5Q0FBYyxDQUFBO0FBQ2hCLENBQUMsRUFKVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSWxDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRW1haWxNZXNzYWdlUXVldWVGb3JtYXQge1xuICBUZXh0ID0gJ1QnLFxuICBIVE1MID0gJ0gnLFxuICBSaWNoVGV4dCA9ICdSJ1xufVxuIl19
|