@tc-libs/email-sender 0.16.0 → 0.18.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/package.json +1 -1
- package/src/email-sender.module.options.d.ts +21 -8
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/services/email-sender.service.d.ts +10 -4
- package/src/services/email-sender.service.js +65 -7
- package/src/services/email-sender.service.js.map +1 -1
package/package.json
CHANGED
|
@@ -2,14 +2,27 @@ import { ModuleMetadata } from '@nestjs/common';
|
|
|
2
2
|
import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface';
|
|
3
3
|
export declare const EMAIL_SENDER_CONFIG_OPTIONS = "EMAIL_SENDER_CONFIG_OPTIONS";
|
|
4
4
|
export interface EmailSenderOptions {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
email: {
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
from: string;
|
|
8
|
+
cc: string[];
|
|
9
|
+
bcc: string[];
|
|
10
|
+
mailgun: {
|
|
11
|
+
host: string;
|
|
12
|
+
key: string;
|
|
13
|
+
domain: string;
|
|
14
|
+
};
|
|
15
|
+
templateDir: string;
|
|
16
|
+
};
|
|
17
|
+
app: {
|
|
18
|
+
endpoints: {
|
|
19
|
+
backoffice: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
aws: {
|
|
23
|
+
s3: {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
};
|
|
13
26
|
};
|
|
14
27
|
}
|
|
15
28
|
type EmailSenderAsyncOptions = Pick<ModuleMetadata, 'imports'> & Pick<FactoryProvider<EmailSenderOptions>, 'useFactory' | 'inject'>;
|
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./email-sender.module"), exports);
|
|
|
5
5
|
tslib_1.__exportStar(require("./interfaces/email-sender.type"), exports);
|
|
6
6
|
tslib_1.__exportStar(require("./services/email-sender.service"), exports);
|
|
7
7
|
tslib_1.__exportStar(require("./dtos/email.dto"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./repository/entities/email.entity"), exports);
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/email-sender/src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,yEAA+C;AAC/C,0EAAgD;AAChD,2DAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/email-sender/src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,yEAA+C;AAC/C,0EAAgD;AAChD,2DAAiC;AACjC,6EAAmD"}
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
-
import { TemplateFunction } from 'ejs';
|
|
2
1
|
import { Mailgun, Attachment } from 'mailgun-js';
|
|
3
|
-
import { IEmailOptions, MailingListAdd, MailingListUpdate,
|
|
2
|
+
import { IEmailOptions, MailingListAdd, MailingListUpdate, MailgunOverrides } from '../interfaces/email-sender.type';
|
|
4
3
|
import { Logger } from '@nestjs/common';
|
|
5
|
-
import { AbstractService } from '@tc-libs/service';
|
|
6
4
|
import { EmailSenderOptions } from '../email-sender.module.options';
|
|
5
|
+
import { AbstractService } from '@tc-libs/service';
|
|
7
6
|
import { EmailDoc, EmailEntity } from '../repository/entities/email.entity';
|
|
8
7
|
import { PaginationService } from '@tc-libs/pagination';
|
|
9
8
|
import { EmailRepository } from '../repository/repositories/email.repository';
|
|
9
|
+
import { SendTemplateDto } from '../dtos/email.dto';
|
|
10
10
|
export declare class EmailSenderService extends AbstractService<EmailEntity, EmailDoc> {
|
|
11
11
|
private readonly _email;
|
|
12
12
|
protected readonly _paging: PaginationService;
|
|
13
13
|
readonly _options: EmailSenderOptions;
|
|
14
14
|
logger: Logger;
|
|
15
15
|
private _smtp;
|
|
16
|
+
private _templateDir;
|
|
17
|
+
private _sharedVariables;
|
|
18
|
+
private _cdn;
|
|
19
|
+
private _backoffice;
|
|
16
20
|
constructor(_email: EmailRepository, _paging: PaginationService, _options: EmailSenderOptions);
|
|
17
21
|
createAttachment(data: any, filename: any, contentType: any, mailgunOverride?: MailgunOverrides): Attachment | null;
|
|
18
22
|
private _createClient;
|
|
19
23
|
private _send;
|
|
20
24
|
private _buildRecipients;
|
|
21
25
|
private _labelCompiler;
|
|
22
|
-
|
|
26
|
+
private _getCompiledTemplate;
|
|
27
|
+
private _sendTemplate;
|
|
28
|
+
sendTemplate({ lang, template, options, variables }: SendTemplateDto): Promise<boolean>;
|
|
23
29
|
sendText(text: string, subject: string, options: IEmailOptions): Promise<boolean>;
|
|
24
30
|
addToMailingList(client: Mailgun, list: string, body: MailingListAdd): Promise<boolean>;
|
|
25
31
|
updateToMailingList(client: Mailgun, list: string, email: string, body: MailingListUpdate): Promise<boolean>;
|
|
@@ -3,10 +3,15 @@ var EmailSenderService_1;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.EmailSenderService = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
|
+
const ejs_1 = require("ejs");
|
|
6
7
|
const mailgun_js_1 = tslib_1.__importDefault(require("mailgun-js"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
11
|
+
const { readFile: readFileAsync } = fs_1.promises;
|
|
7
12
|
const common_1 = require("@nestjs/common");
|
|
8
|
-
const service_1 = require("@tc-libs/service");
|
|
9
13
|
const email_sender_module_options_1 = require("../email-sender.module.options");
|
|
14
|
+
const service_1 = require("@tc-libs/service");
|
|
10
15
|
const pagination_1 = require("@tc-libs/pagination");
|
|
11
16
|
const email_repository_1 = require("../repository/repositories/email.repository");
|
|
12
17
|
let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends service_1.AbstractService {
|
|
@@ -16,17 +21,21 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
16
21
|
this._paging = _paging;
|
|
17
22
|
this._options = _options;
|
|
18
23
|
this.logger = new common_1.Logger(EmailSenderService_1.name);
|
|
24
|
+
this._sharedVariables = ['backoffice', 'cdn'];
|
|
19
25
|
this._smtp = {
|
|
20
|
-
from: _options.from,
|
|
21
|
-
enabled: _options.enabled,
|
|
26
|
+
from: _options.email.from,
|
|
27
|
+
enabled: _options.email.enabled,
|
|
22
28
|
cc: [],
|
|
23
29
|
bcc: [],
|
|
24
30
|
mailgun: {
|
|
25
|
-
host: _options.mailgun.host,
|
|
26
|
-
domain: _options.mailgun.domain,
|
|
27
|
-
key: _options.mailgun.key,
|
|
31
|
+
host: _options.email.mailgun.host,
|
|
32
|
+
domain: _options.email.mailgun.domain,
|
|
33
|
+
key: _options.email.mailgun.key,
|
|
28
34
|
},
|
|
29
35
|
};
|
|
36
|
+
this._templateDir = _options.email.templateDir;
|
|
37
|
+
this._backoffice = _options.app.endpoints.backoffice;
|
|
38
|
+
this._cdn = _options.aws.s3.baseUrl;
|
|
30
39
|
}
|
|
31
40
|
createAttachment(data, filename, contentType, mailgunOverride) {
|
|
32
41
|
if (!this._smtp.enabled)
|
|
@@ -91,7 +100,14 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
91
100
|
return compiled;
|
|
92
101
|
};
|
|
93
102
|
}
|
|
94
|
-
async
|
|
103
|
+
async _getCompiledTemplate(templateHtml) {
|
|
104
|
+
return (0, ejs_1.compile)(templateHtml, {
|
|
105
|
+
delimiter: '?',
|
|
106
|
+
openDelimiter: '[',
|
|
107
|
+
closeDelimiter: ']',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async _sendTemplate(email, tplCompiled, options, variables) {
|
|
95
111
|
// skip if email are disabled
|
|
96
112
|
if (!this._smtp.enabled)
|
|
97
113
|
return false;
|
|
@@ -116,6 +132,48 @@ let EmailSenderService = EmailSenderService_1 = class EmailSenderService extends
|
|
|
116
132
|
const client = this._createClient(options.mailgunOverride);
|
|
117
133
|
return this._send(client, obj);
|
|
118
134
|
}
|
|
135
|
+
async sendTemplate({ lang, template, options, variables }) {
|
|
136
|
+
const tplPath = (0, path_1.resolve)((0, path_1.join)(this._templateDir, `${template}.html`));
|
|
137
|
+
let templateHtml;
|
|
138
|
+
if (options?.remoteTemplatePath) {
|
|
139
|
+
const response = await axios_1.default.get(options.remoteTemplatePath);
|
|
140
|
+
templateHtml = response.data;
|
|
141
|
+
}
|
|
142
|
+
else
|
|
143
|
+
templateHtml = await readFileAsync(tplPath, 'utf8');
|
|
144
|
+
const templateHtmlFunc = await this._getCompiledTemplate(templateHtml);
|
|
145
|
+
// get db email template for subject and languages
|
|
146
|
+
const dbTemplate = await this._email.findOne({ code: template }, {
|
|
147
|
+
returnPlain: true,
|
|
148
|
+
select: {
|
|
149
|
+
[`subject.${lang}`]: true,
|
|
150
|
+
from: true,
|
|
151
|
+
to: true,
|
|
152
|
+
code: true,
|
|
153
|
+
variables: true,
|
|
154
|
+
['labels.code']: true,
|
|
155
|
+
['labels.type']: true,
|
|
156
|
+
[`labels.translations.${lang}`]: true,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
const labels = {};
|
|
160
|
+
// map labels in key value store
|
|
161
|
+
// TODO: RE ENABLE i18n
|
|
162
|
+
for (const label of dbTemplate.labels) {
|
|
163
|
+
labels[label.code] =
|
|
164
|
+
label.translations[lang] || `MISSING LABEL [${label.code}]`;
|
|
165
|
+
}
|
|
166
|
+
return this._sendTemplate({
|
|
167
|
+
code: dbTemplate.code,
|
|
168
|
+
subject: options?.subject ?? dbTemplate.subject[lang],
|
|
169
|
+
labels,
|
|
170
|
+
variables: [...dbTemplate.variables, ...this._sharedVariables],
|
|
171
|
+
bcc: dbTemplate.bcc,
|
|
172
|
+
cc: dbTemplate.cc,
|
|
173
|
+
from: dbTemplate.from,
|
|
174
|
+
to: dbTemplate.to,
|
|
175
|
+
}, templateHtmlFunc, options, { ...variables, cdn: this._cdn, backoffice: this._backoffice });
|
|
176
|
+
}
|
|
119
177
|
sendText(text, subject, options) {
|
|
120
178
|
// extract recipients
|
|
121
179
|
const { from, to, cc, bcc } = this._buildRecipients(null, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender.service.js","sourceRoot":"","sources":["../../../../../packages/email-sender/src/services/email-sender.service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"email-sender.service.js","sourceRoot":"","sources":["../../../../../packages/email-sender/src/services/email-sender.service.ts"],"names":[],"mappings":";;;;;AAAA,6BAAgD;AAChD,oEAAiC;AAEjC,2BAA2C;AAC3C,+BAAgE;AAChE,0DAA0B;AAC1B,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAS,CAAC;AAU9C,2CAA4D;AAC5D,gFAGwC;AACxC,8CAAmD;AAEnD,oDAAwD;AACxD,kFAA8E;AAIvE,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,yBAAsC;IAQ5E,YACmB,MAAuB,EACrB,OAA0B,EAE7C,QAAqC;QAErC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QALN,WAAM,GAAN,MAAM,CAAiB;QACrB,YAAO,GAAP,OAAO,CAAmB;QAEpC,aAAQ,GAAR,QAAQ,CAAoB;QAX9B,WAAM,GAAW,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;QAGtD,qBAAgB,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAW/C,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;YACzB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO;YAC/B,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,EAAE;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;gBACjC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;gBACrC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;aAChC;SACF,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,gBAAgB,CACd,IAAS,EACT,QAAa,EACb,WAAgB,EAChB,eAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC;YAC3B,IAAI;YACJ,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,eAAkC;QACtD,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,eAAe,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;YACtD,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;YACtD,MAAM,EAAE,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;SAC7D,CAAC;QACF,OAAO,IAAA,oBAAO,EAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CACX,MAAe,EACf,MAA0E;QAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC7C,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;gBACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CACtB,UAAyB,EACzB,OAAsB;QAOtB,IAAI,CAAC,UAAU;YACb,UAAU,GAAG;gBACX,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,EAAE,EAAE,IAAI;gBACR,GAAG,EAAE,IAAI;aACO,CAAC;QAErB,YAAY;QACZ,MAAM,IAAI,GACR,OAAO,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxE,mBAAmB;QACnB,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,UAAU,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC;QACpC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;QAChC,mBAAmB;QACnB,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,cAAc,CAAC,MAAiC;QACtD,OAAO,CAAC,KAAa,EAAE,eAA0C,EAAE,EAAE,EAAE;YACrE,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,kBAAkB,KAAK,GAAG,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EACrC,YAAY,CAAC,GAAG,CAAC,IAAI,6BAA6B,GAAG,IAAI,CAC1D,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,YAAoB;QAEpB,OAAO,IAAA,aAAO,EAAC,YAAY,EAAE;YAC3B,SAAS,EAAE,GAAG;YACd,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,GAAG;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,KAAa,EACb,WAA6B,EAC7B,OAAsB,EACtB,SAAc;QAEd,6BAA6B;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACtC,4BAA4B;QAC5B,qBAAqB;QACrB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,WAAW,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,GAAG,SAAS;SACb,CAAC,CAAC;QACH,MAAM,GAAG,GAAQ;YACf,IAAI;YACJ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,sBAAsB;SAC7B,CAAC;QACF,6BAA6B;QAC7B,IAAI,OAAO,CAAC,UAAU;YAAE,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAmB;QACxE,MAAM,OAAO,GAAG,IAAA,cAAW,EACzB,IAAA,WAAQ,EAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,OAAO,CAAC,CAChD,CAAC;QACF,IAAI,YAAoB,CAAC;QACzB,IAAI,OAAO,EAAE,kBAAkB,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC7D,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,CAAC;;YAAM,YAAY,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE3D,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAEvE,kDAAkD;QAClD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC1C,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB;YACE,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE;gBACN,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI;gBACzB,IAAI,EAAE,IAAI;gBACV,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI;gBACf,CAAC,aAAa,CAAC,EAAE,IAAI;gBACrB,CAAC,aAAa,CAAC,EAAE,IAAI;gBACrB,CAAC,uBAAuB,IAAI,EAAE,CAAC,EAAE,IAAI;aACtC;SACF,CACF,CAAC;QACF,MAAM,MAAM,GAA8B,EAAE,CAAC;QAC7C,gCAAgC;QAChC,uBAAuB;QACvB,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACf,KAAK,CAAC,YAAoB,CAAC,IAAI,CAAC,IAAI,kBAAkB,KAAK,CAAC,IAAI,GAAG,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CACvB;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAK,UAAU,CAAC,OAAe,CAAC,IAAI,CAAC;YAC9D,MAAM;YACN,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC9D,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,EAAE,EAAE,UAAU,CAAC,EAAE;SAClB,EACD,gBAAgB,EAChB,OAAO,EACP,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAC/D,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,OAAsB;QAC5D,qBAAqB;QACrB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,GAAG,GAAQ;YACf,IAAI;YACJ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB,OAAO;YACP,IAAI;SACL,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,kEAAkE;IAClE,8BAA8B;IAC9B,qDAAqD;IACrD,YAAY;IACZ,MAAM;IACN,mCAAmC;IACnC,wDAAwD;IACxD,wCAAwC;IACxC,6BAA6B;IAC7B,6CAA6C;IAC7C,+BAA+B;IAC/B,OAAO;IACP,KAAK;IACL,oCAAoC;IACpC,2DAA2D;IAC3D,8CAA8C;IAC9C,6BAA6B;IAC7B,2CAA2C;IAC3C,6BAA6B;IAC7B,OAAO;IACP,KAAK;IACL,kBAAkB;IAClB,IAAI;IAEJ,gBAAgB,CACd,MAAe,EACf,IAAY,EACZ,IAAoB;QAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM;iBACH,KAAK,CAAC,IAAI,CAAC;iBACX,OAAO,EAAE;iBACT,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK,EAAE,CAAC;oBACV,IACE,KAAK;wBACL,KAAK,CAAC,UAAU,KAAK,GAAG;wBACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC;wBAEpD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;oBACvB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB,CACjB,MAAe,EACf,IAAY,EACZ,KAAa,EACb,IAAuB;QAEvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM;iBACH,KAAK,CAAC,IAAI,CAAC;iBACX,OAAO,CAAC,KAAK,CAAC;iBACd,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACtB,IAAI,KAAK;oBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB,CACjB,MAAe,EACf,IAAY,EACZ,KAAa;QAEb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM;iBACH,KAAK,CAAC,IAAI,CAAC;iBACX,OAAO,CAAC,KAAK,CAAC;iBACd,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,KAAK;oBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAnTY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAYR,mBAAA,IAAA,eAAM,EAAC,yDAA2B,CAAC,CAAA;6CAFX,kCAAe;QACZ,8BAAiB;GAVpC,kBAAkB,CAmT9B"}
|