fluxmail 0.4.0 → 0.5.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/README.md +7 -5
- package/dist/accounts/defaultGoogleOAuth.d.ts +4 -0
- package/dist/accounts/defaultGoogleOAuth.d.ts.map +1 -0
- package/dist/accounts/defaultGoogleOAuth.js +7 -0
- package/dist/accounts/defaultGoogleOAuth.js.map +1 -0
- package/dist/accounts/gmailConnection.js +2 -2
- package/dist/accounts/gmailConnection.js.map +1 -1
- package/dist/accounts/googleAuth.d.ts +10 -7
- package/dist/accounts/googleAuth.d.ts.map +1 -1
- package/dist/accounts/googleAuth.js +48 -17
- package/dist/accounts/googleAuth.js.map +1 -1
- package/dist/accounts/microsoftAuth.js +1 -1
- package/dist/accounts/microsoftAuth.js.map +1 -1
- package/dist/accounts/registry.d.ts +9 -8
- package/dist/accounts/registry.d.ts.map +1 -1
- package/dist/accounts/registry.js +166 -96
- package/dist/accounts/registry.js.map +1 -1
- package/dist/auth.d.ts +106 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +452 -0
- package/dist/auth.js.map +1 -0
- package/dist/authorization.d.ts +9 -0
- package/dist/authorization.d.ts.map +1 -0
- package/dist/authorization.js +23 -0
- package/dist/authorization.js.map +1 -0
- package/dist/cli.d.ts +7 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +734 -358
- package/dist/cli.js.map +1 -1
- package/dist/cliInstances.d.ts +37 -0
- package/dist/cliInstances.d.ts.map +1 -0
- package/dist/cliInstances.js +170 -0
- package/dist/cliInstances.js.map +1 -0
- package/dist/config.d.ts +16 -10
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +125 -35
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +8 -4
- package/dist/context.js.map +1 -1
- package/dist/http/admin.d.ts +57 -3
- package/dist/http/admin.d.ts.map +1 -1
- package/dist/http/admin.js +188 -67
- package/dist/http/admin.js.map +1 -1
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +78 -54
- package/dist/http/app.js.map +1 -1
- package/dist/http/identity.d.ts +114 -0
- package/dist/http/identity.d.ts.map +1 -0
- package/dist/http/identity.js +931 -0
- package/dist/http/identity.js.map +1 -0
- package/dist/http/operationRoutes.d.ts +8 -0
- package/dist/http/operationRoutes.d.ts.map +1 -0
- package/dist/http/operationRoutes.js +13 -0
- package/dist/http/operationRoutes.js.map +1 -0
- package/dist/http/rest.d.ts +11 -3
- package/dist/http/rest.d.ts.map +1 -1
- package/dist/http/rest.js +138 -66
- package/dist/http/rest.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/buildServer.d.ts +1 -1
- package/dist/mcp/buildServer.d.ts.map +1 -1
- package/dist/mcp/buildServer.js +14 -19
- package/dist/mcp/buildServer.js.map +1 -1
- package/dist/permissions.d.ts +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +7 -1
- package/dist/permissions.js.map +1 -1
- package/dist/scheduler/sendScheduler.d.ts +1 -2
- package/dist/scheduler/sendScheduler.d.ts.map +1 -1
- package/dist/scheduler/sendScheduler.js +1 -2
- package/dist/scheduler/sendScheduler.js.map +1 -1
- package/dist/service/emailService.d.ts +8 -16
- package/dist/service/emailService.d.ts.map +1 -1
- package/dist/service/emailService.js +25 -38
- package/dist/service/emailService.js.map +1 -1
- package/dist/storage/adminAudit.d.ts +15 -2
- package/dist/storage/adminAudit.d.ts.map +1 -1
- package/dist/storage/adminAudit.js +22 -27
- package/dist/storage/adminAudit.js.map +1 -1
- package/dist/storage/apiKeys.d.ts +8 -8
- package/dist/storage/apiKeys.d.ts.map +1 -1
- package/dist/storage/apiKeys.js +16 -11
- package/dist/storage/apiKeys.js.map +1 -1
- package/dist/storage/db.d.ts +593 -31
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +330 -45
- package/dist/storage/db.js.map +1 -1
- package/dist/storage/fileLock.d.ts +7 -0
- package/dist/storage/fileLock.d.ts.map +1 -0
- package/dist/storage/fileLock.js +183 -0
- package/dist/storage/fileLock.js.map +1 -0
- package/dist/storage/gmailConnectionGrants.d.ts +3 -4
- package/dist/storage/gmailConnectionGrants.d.ts.map +1 -1
- package/dist/storage/gmailConnectionGrants.js +6 -6
- package/dist/storage/gmailConnectionGrants.js.map +1 -1
- package/dist/storage/members.d.ts +11 -0
- package/dist/storage/members.d.ts.map +1 -1
- package/dist/storage/members.js +70 -6
- package/dist/storage/members.js.map +1 -1
- package/dist/telemetry.d.ts +14 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +22 -0
- package/dist/telemetry.js.map +1 -1
- package/package.json +9 -8
|
@@ -2,20 +2,12 @@ import { type Account, type AttachmentMeta, type DraftInput, type EmailAddress,
|
|
|
2
2
|
import type { AccountRegistry } from '../accounts/registry.js';
|
|
3
3
|
import { type Entitlements } from '../licensing/entitlements.js';
|
|
4
4
|
import type { FluxmailDb } from '../storage/db.js';
|
|
5
|
-
import {
|
|
5
|
+
import type { Principal } from '../auth.js';
|
|
6
6
|
import { type ScheduledSendStatus } from '../storage/scheduledSends.js';
|
|
7
7
|
export interface SendInput extends DraftInput {
|
|
8
8
|
/** With replyToMessageId: compute recipients from the original (reply-all semantics). */
|
|
9
9
|
replyAll?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export interface AccessScope {
|
|
12
|
-
/** null identifies a trusted local caller or a migrated system credential. */
|
|
13
|
-
memberId: string | null;
|
|
14
|
-
/** Omitted for trusted local callers; null for management-only system credentials. */
|
|
15
|
-
role?: MemberRole | null;
|
|
16
|
-
/** Optional extra narrowing applied after member mailbox grants. */
|
|
17
|
-
accountIds?: string[] | null;
|
|
18
|
-
}
|
|
19
11
|
export interface ForwardInput {
|
|
20
12
|
messageId: string;
|
|
21
13
|
to: EmailAddress[];
|
|
@@ -25,7 +17,7 @@ export interface ForwardInput {
|
|
|
25
17
|
includeAttachments?: boolean;
|
|
26
18
|
}
|
|
27
19
|
export interface ServiceStatus {
|
|
28
|
-
accounts: Array<Pick<Account, 'id' | 'provider' | 'email' | 'status' | '
|
|
20
|
+
accounts: Array<Pick<Account, 'id' | 'provider' | 'email' | 'status' | 'ownerMemberId'> & {
|
|
29
21
|
error?: {
|
|
30
22
|
code: string;
|
|
31
23
|
message: string;
|
|
@@ -69,17 +61,17 @@ export declare function resolveSendAt(sendAtIso: string, now?: number): number;
|
|
|
69
61
|
export declare class EmailService {
|
|
70
62
|
private readonly registry;
|
|
71
63
|
private readonly db;
|
|
72
|
-
private readonly
|
|
64
|
+
private readonly principal?;
|
|
73
65
|
/** Wired to SendScheduler.wake() in long-lived processes; a no-op for one-shot CLI commands. */
|
|
74
66
|
onScheduleChanged: () => void;
|
|
75
|
-
constructor(registry: AccountRegistry, db: FluxmailDb,
|
|
67
|
+
constructor(registry: AccountRegistry, db: FluxmailDb, principal?: Principal | undefined);
|
|
76
68
|
/**
|
|
77
69
|
* A view restricted to a member's mailbox grants and optional connection
|
|
78
|
-
* allowlist.
|
|
70
|
+
* allowlist. Internal background workers use the default service instead.
|
|
79
71
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
private
|
|
72
|
+
withPrincipal(principal: Principal): EmailService;
|
|
73
|
+
/** Internal background work only. HTTP, MCP, and CLI requests always use withPrincipal(). */
|
|
74
|
+
private isInternal;
|
|
83
75
|
private canAccess;
|
|
84
76
|
private accessibleAccounts;
|
|
85
77
|
private metadataAccounts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailService.d.ts","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EAEZ,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"emailService.d.ts","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { computeReplyRecipients, EmailError, formatAddressList, forwardSubject, isEmailError, } from '@fluxmail/core';
|
|
2
2
|
import { assertWithinQuota, checkLicenseState } from '../licensing/entitlements.js';
|
|
3
3
|
import { listMembers } from '../storage/members.js';
|
|
4
|
+
import { canAccessAccount, canAdminister, canSeeAccountMetadata } from '../authorization.js';
|
|
4
5
|
import { cancelScheduledSend, countPending, createScheduledSend, findPendingByDraft, getScheduledSend, listScheduledSends, markSent, } from '../storage/scheduledSends.js';
|
|
5
|
-
const ADMIN_SCOPE = { memberId: null };
|
|
6
6
|
const SCHEDULE_GRACE_MS = 60_000;
|
|
7
7
|
const SCHEDULE_MAX_HORIZON_MS = 365 * 24 * 3_600_000;
|
|
8
8
|
/** Parse and validate a sendAt timestamp; returns epoch ms. */
|
|
@@ -43,51 +43,38 @@ function toScheduledInfo(row) {
|
|
|
43
43
|
export class EmailService {
|
|
44
44
|
registry;
|
|
45
45
|
db;
|
|
46
|
-
|
|
46
|
+
principal;
|
|
47
47
|
/** Wired to SendScheduler.wake() in long-lived processes; a no-op for one-shot CLI commands. */
|
|
48
48
|
onScheduleChanged = () => { };
|
|
49
|
-
constructor(registry, db,
|
|
49
|
+
constructor(registry, db, principal) {
|
|
50
50
|
this.registry = registry;
|
|
51
51
|
this.db = db;
|
|
52
|
-
this.
|
|
52
|
+
this.principal = principal;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* A view restricted to a member's mailbox grants and optional connection
|
|
56
|
-
* allowlist.
|
|
56
|
+
* allowlist. Internal background workers use the default service instead.
|
|
57
57
|
*/
|
|
58
|
-
|
|
59
|
-
const scoped = new EmailService(this.registry, this.db,
|
|
58
|
+
withPrincipal(principal) {
|
|
59
|
+
const scoped = new EmailService(this.registry, this.db, principal);
|
|
60
60
|
scoped.onScheduleChanged = () => this.onScheduleChanged();
|
|
61
61
|
return scoped;
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
isAdministrator() {
|
|
67
|
-
return (this.isTrustedLocal() || this.scope.role === 'admin' || (this.scope.memberId === null && this.scope.role === null));
|
|
63
|
+
/** Internal background work only. HTTP, MCP, and CLI requests always use withPrincipal(). */
|
|
64
|
+
isInternal() {
|
|
65
|
+
return this.principal === undefined;
|
|
68
66
|
}
|
|
69
67
|
canAccess(account) {
|
|
70
|
-
|
|
71
|
-
const granted = this.isTrustedLocal() ||
|
|
72
|
-
(memberId !== null &&
|
|
73
|
-
(account.ownerId === memberId ||
|
|
74
|
-
account.memberId === memberId ||
|
|
75
|
-
(account.sharingMode === undefined && account.ownerId === undefined && account.memberId === undefined) ||
|
|
76
|
-
account.sharingMode === 'all' ||
|
|
77
|
-
(account.sharingMode === 'selected' && account.sharedMemberIds.includes(memberId))));
|
|
78
|
-
const allowlist = this.scope.accountIds;
|
|
79
|
-
return granted && (allowlist == null || allowlist.includes(account.id));
|
|
68
|
+
return this.principal ? canAccessAccount(this.principal, account) : true;
|
|
80
69
|
}
|
|
81
70
|
accessibleAccounts() {
|
|
82
71
|
const all = this.registry.listAccounts();
|
|
83
72
|
return all.filter((a) => this.canAccess(a));
|
|
84
73
|
}
|
|
85
74
|
metadataAccounts() {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const allowlist = this.scope.accountIds;
|
|
90
|
-
return allowlist == null ? all : all.filter((account) => allowlist.includes(account.id));
|
|
75
|
+
return this.principal
|
|
76
|
+
? this.registry.listAccounts().filter((account) => canSeeAccountMetadata(this.principal, account))
|
|
77
|
+
: this.registry.listAccounts();
|
|
91
78
|
}
|
|
92
79
|
/**
|
|
93
80
|
* Resolve an account id within the current scope. A member connection defaults
|
|
@@ -102,7 +89,7 @@ export class EmailService {
|
|
|
102
89
|
}
|
|
103
90
|
return account.id;
|
|
104
91
|
}
|
|
105
|
-
if (this.
|
|
92
|
+
if (this.isInternal())
|
|
106
93
|
return this.registry.resolveAccountId();
|
|
107
94
|
const accessible = this.accessibleAccounts();
|
|
108
95
|
if (accessible.length === 0) {
|
|
@@ -169,23 +156,23 @@ export class EmailService {
|
|
|
169
156
|
: { code: 'internal', message: err instanceof Error ? err.message : String(err) });
|
|
170
157
|
}
|
|
171
158
|
}));
|
|
172
|
-
const
|
|
173
|
-
const
|
|
159
|
+
const canReadMembers = this.principal === undefined || canAdminister(this.principal, 'admin.members');
|
|
160
|
+
const canReadLicense = this.principal === undefined || canAdminister(this.principal, 'admin.license');
|
|
161
|
+
const license = canReadLicense ? checkLicenseState(this.db) : undefined;
|
|
174
162
|
return {
|
|
175
163
|
// Re-read so statuses reflect any markStatus writes from the live checks above.
|
|
176
|
-
accounts: this.metadataAccounts().map(({ id, provider, email, status,
|
|
164
|
+
accounts: this.metadataAccounts().map(({ id, provider, email, status, ownerMemberId }) => ({
|
|
177
165
|
id,
|
|
178
166
|
provider,
|
|
179
167
|
email,
|
|
180
168
|
status,
|
|
181
|
-
|
|
182
|
-
...(memberId ? { memberId } : {}),
|
|
169
|
+
ownerMemberId,
|
|
183
170
|
...(errors.has(id) ? { error: errors.get(id) } : {}),
|
|
184
171
|
...(warnings.has(id) ? { warnings: warnings.get(id) } : {}),
|
|
185
172
|
})),
|
|
186
|
-
...(
|
|
173
|
+
...(canReadMembers ? { members: { count: listMembers(this.db).length } } : {}),
|
|
174
|
+
...(license
|
|
187
175
|
? {
|
|
188
|
-
members: { count: listMembers(this.db).length },
|
|
189
176
|
entitlements: license.entitlements,
|
|
190
177
|
...(license.warning ? { licenseWarning: license.warning } : {}),
|
|
191
178
|
}
|
|
@@ -200,7 +187,7 @@ export class EmailService {
|
|
|
200
187
|
* while the license is in its grace period or has lapsed.
|
|
201
188
|
*/
|
|
202
189
|
enforceQuota() {
|
|
203
|
-
if (!this.
|
|
190
|
+
if (!this.isInternal() && (!this.principal || !canAdminister(this.principal, 'admin.license'))) {
|
|
204
191
|
const state = checkLicenseState(this.db);
|
|
205
192
|
if (state.overQuota) {
|
|
206
193
|
throw new EmailError('entitlement_exceeded', 'This Fluxmail instance is over its plan limits. Ask an administrator to renew the license or reduce usage.');
|
|
@@ -211,7 +198,7 @@ export class EmailService {
|
|
|
211
198
|
return assertWithinQuota(this.db).warning;
|
|
212
199
|
}
|
|
213
200
|
scheduledStatus() {
|
|
214
|
-
if (this.
|
|
201
|
+
if (this.isInternal()) {
|
|
215
202
|
const { pending, nextSendAt } = countPending(this.db);
|
|
216
203
|
return {
|
|
217
204
|
pending,
|
|
@@ -305,7 +292,7 @@ export class EmailService {
|
|
|
305
292
|
}
|
|
306
293
|
// Listing must work across accounts, but a member key only sees its own mailboxes'.
|
|
307
294
|
const rows = listScheduledSends(this.db);
|
|
308
|
-
if (this.
|
|
295
|
+
if (this.isInternal())
|
|
309
296
|
return rows.map(toScheduledInfo);
|
|
310
297
|
const accessible = new Set(this.accessibleAccounts().map((a) => a.id));
|
|
311
298
|
return rows.filter((r) => accessible.has(r.accountId)).map(toScheduledInfo);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailService.js","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,GAcb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAqB,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAmB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,GAGT,MAAM,8BAA8B,CAAC;AAgBtC,MAAM,WAAW,GAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AA0CpD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,uBAAuB,GAAG,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC;AAErD,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC/D,gFAAgF;IAChF,MAAM,MAAM,GAAG,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9F,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,4BAA4B,SAAS,uBAAuB,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,GAAG,iBAAiB,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,iDAAiD,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,GAAG,uBAAuB,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,GAAqB;IAC5C,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,EAAE;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;QAC1C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAKJ;IACA;IACA;IANnB,gGAAgG;IAChG,iBAAiB,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IAEzC,YACmB,QAAyB,EACzB,EAAc,EACd,QAAqB,WAAW;QAFhC,aAAQ,GAAR,QAAQ,CAAiB;QACzB,OAAE,GAAF,EAAE,CAAY;QACd,UAAK,GAAL,KAAK,CAA2B;IAChD,CAAC;IAEJ;;;OAGG;IACH,SAAS,CAAC,KAAkB;QAC1B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;IACvE,CAAC;IAEO,eAAe;QACrB,OAAO,CACL,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CACnH,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,OAAgB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,MAAM,OAAO,GACX,IAAI,CAAC,cAAc,EAAE;YACrB,CAAC,QAAQ,KAAK,IAAI;gBAChB,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ;oBAC3B,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAC7B,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;oBACtG,OAAO,CAAC,WAAW,KAAK,KAAK;oBAC7B,CAAC,OAAO,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACxC,OAAO,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACxC,OAAO,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,SAAkB;QAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,uBAAuB,SAAS,GAAG,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,OAAO,CAAC,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAClB,iBAAiB,EACjB,kEAAkE,UAAU;iBACzE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC;iBAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAC5D,mBAAmB,CAAC,SAAiB;QACnC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,kFAAkF;IAC1E,KAAK,CAAC,YAAY,CACxB,SAA6B,EAC7B,EAA8G;QAE9G,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,WAAW,UAAU,cAAc,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACpF,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;gBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB;aACf,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;aAClD,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAEpD,CAAC;gBACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC1D,IAAI,cAAc,CAAC,MAAM;wBACvB,QAAQ,CAAC,GAAG,CACV,OAAO,CAAC,EAAE,EACV,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CACjD,CAAC;gBACN,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;oBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACtF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACrD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;gBACrD,CAAC;gBACD,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,EAAE,EACV,YAAY,CAAC,GAAG,CAAC;oBACf,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,OAAO;YACL,gFAAgF;YAChF,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7F,EAAE;gBACF,QAAQ;gBACR,KAAK;gBACL,MAAM;gBACN,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D,CAAC,CAAC;YACH,GAAG,CAAC,KAAK;gBACP,CAAC,CAAC;oBACE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;oBAC/C,YAAY,EAAE,OAAQ,CAAC,YAAY;oBACnC,GAAG,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClE;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,kBAAkB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;SAClC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,UAAU,CAClB,sBAAsB,EACtB,4GAA4G,CAC7G,CAAC;YACJ,CAAC;YACD,uEAAuE;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC1B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO;gBACP,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CACjG,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,SAA6B,EAAE,CAAa,EAAE,IAAe;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,SAA6B,EAAE,EAAU;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,SAA6B,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,CAAY;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC5D,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,OAAe,EAAE,CAAY;QACtE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC5D,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,OAAe;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,SAA6B,EAAE,KAAsC;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACnE,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,yDAAyD;gBACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,SAA6B,EAC7B,KAAsC,EACtC,SAAiB;QAEjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YACxF,IAAI,OAAgB,CAAC;YACrB,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;oBAC1E,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,8CAA8C,CAAC,CAAC;gBAC1F,CAAC;gBACD,OAAO,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,UAAU,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE;YACvC,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,SAAkB;QAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAClG,CAAC;QACD,oFAAoF;QACpF,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAED,8DAA8D;IAC9D,eAAe,CAAC,UAAkB;QAChC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAClD,8EAA8E;QAC9E,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,6BAA6B,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,UAAU,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,UAAU,8BAA8B,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAC7B,CAA6C,EAC7C,OAAgB,EAChB,KAAgB;QAEhB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC;QACtF,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM;YAAE,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,SAA6B,EAAE,KAAmB;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC;YAE5D,MAAM,WAAW,GAAsB,EAAE,CAAC;YAC1C,IAAI,kBAAkB,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;oBAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChE,WAAW,CAAC,IAAI,CAAC;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACnC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC/D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAe;gBACxB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACzC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC/C,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,CAAC;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAA6B,EAAE,GAAa,EAAE,MAAoB;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,aAAa,CACX,SAA6B,EAC7B,SAAiB,EACjB,YAAoB,EACpB,QAAiB;QAEjB,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAiB,EAAE,OAAgB;IAClE,MAAM,WAAW,GAAG;QAClB,yCAAyC;QACzC,SAAS,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC3E,SAAS,QAAQ,CAAC,IAAI,EAAE;QACxB,YAAY,QAAQ,CAAC,OAAO,EAAE;QAC9B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACvC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEzC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI;YACP,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,0FAA0F,YAAY,eAAe,CAAC;IAC7I,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"emailService.js","sourceRoot":"","sources":["../../src/service/emailService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,GAcb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAqB,MAAM,8BAA8B,CAAC;AAEvG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,GAGT,MAAM,8BAA8B,CAAC;AA+CtC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,uBAAuB,GAAG,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC;AAErD,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC/D,gFAAgF;IAChF,MAAM,MAAM,GAAG,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9F,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,4BAA4B,SAAS,uBAAuB,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,GAAG,iBAAiB,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,iDAAiD,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,MAAM,GAAG,GAAG,GAAG,uBAAuB,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,GAAqB;IAC5C,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,EAAE;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE;QAC1C,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAKJ;IACA;IACA;IANnB,gGAAgG;IAChG,iBAAiB,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IAEzC,YACmB,QAAyB,EACzB,EAAc,EACd,SAAqB;QAFrB,aAAQ,GAAR,QAAQ,CAAiB;QACzB,OAAE,GAAF,EAAE,CAAY;QACd,cAAS,GAAT,SAAS,CAAY;IACrC,CAAC;IAEJ;;;OAGG;IACH,aAAa,CAAC,SAAoB;QAChC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6FAA6F;IACrF,UAAU;QAChB,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IACtC,CAAC;IAEO,SAAS,CAAC,OAAgB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,CAAC;IAEO,kBAAkB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,SAAS;YACnB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAU,EAAE,OAAO,CAAC,CAAC;YACnG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,SAAkB;QAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,uBAAuB,SAAS,GAAG,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,OAAO,CAAC,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kDAAkD,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAClB,iBAAiB,EACjB,kEAAkE,UAAU;iBACzE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC;iBAClC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAC5D,mBAAmB,CAAC,SAAiB;QACnC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,kFAAkF;IAC1E,KAAK,CAAC,YAAY,CACxB,SAA6B,EAC7B,EAA8G;QAE9G,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,WAAW,UAAU,cAAc,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACpF,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;gBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACpF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC7C,MAAM,OAAO,CAAC,GAAG,CACf,kBAAkB;aACf,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;aAClD,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAEpD,CAAC;gBACF,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBAC1D,IAAI,cAAc,CAAC,MAAM;wBACvB,QAAQ,CAAC,GAAG,CACV,OAAO,CAAC,EAAE,EACV,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CACjD,CAAC;gBACN,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY;oBAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACtF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACrD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;gBACrD,CAAC;gBACD,MAAM,CAAC,GAAG,CACR,OAAO,CAAC,EAAE,EACV,YAAY,CAAC,GAAG,CAAC;oBACf,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CACL,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACtG,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACtG,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,OAAO;YACL,gFAAgF;YAChF,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzF,EAAE;gBACF,QAAQ;gBACR,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D,CAAC,CAAC;YACH,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,GAAG,CAAC,OAAO;gBACT,CAAC,CAAC;oBACE,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,kBAAkB,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;SAClC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YAC/F,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,UAAU,CAClB,sBAAsB,EACtB,4GAA4G,CAC7G,CAAC;YACJ,CAAC;YACD,uEAAuE;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACtB,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO;gBACP,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CACjG,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,SAAkB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,SAA6B,EAAE,CAAa,EAAE,IAAe;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,SAA6B,EAAE,EAAU;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS,CAAC,SAA6B,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,CAAY;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC5D,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,OAAe,EAAE,CAAY;QACtE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;YAC5D,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,SAA6B,EAAE,OAAe;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,SAA6B,EAAE,KAAsC;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACnE,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,yDAAyD;gBACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,SAA6B,EAC7B,KAAsC,EACtC,SAAiB;QAEjB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;YACxF,IAAI,OAAgB,CAAC;YACrB,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;gBACvB,OAAO,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;oBAC1E,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,8CAA8C,CAAC,CAAC;gBAC1F,CAAC;gBACD,OAAO,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,UAAU,CAAC,sBAAsB,EAAE,oCAAoC,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE;YACvC,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM;YACN,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,SAAkB;QAC9B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAClG,CAAC;QACD,oFAAoF;QACpF,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9E,CAAC;IAED,8DAA8D;IAC9D,eAAe,CAAC,UAAkB;QAChC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAClD,8EAA8E;QAC9E,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,6BAA6B,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,UAAU,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,UAAU,CAAC,iBAAiB,EAAE,kBAAkB,UAAU,8BAA8B,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,iBAAiB,CAC7B,CAA6C,EAC7C,OAAgB,EAChB,KAAgB;QAEhB,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,EAAE,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC;QACtF,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM;YAAE,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,SAA6B,EAAE,KAAmB;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC;YAE5D,MAAM,WAAW,GAAsB,EAAE,CAAC;YAC1C,IAAI,kBAAkB,EAAE,CAAC;gBACvB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;oBAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChE,WAAW,CAAC,IAAI,CAAC;wBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACnC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC/D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAe;gBACxB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACzC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC/C,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,CAAC;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAA6B,EAAE,GAAa,EAAE,MAAoB;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,aAAa,CACX,SAA6B,EAC7B,SAAiB,EACjB,YAAoB,EACpB,QAAiB;QAEjB,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAiB,EAAE,OAAgB;IAClE,MAAM,WAAW,GAAG;QAClB,yCAAyC;QACzC,SAAS,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC3E,SAAS,QAAQ,CAAC,IAAI,EAAE;QACxB,YAAY,QAAQ,CAAC,OAAO,EAAE;QAC9B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACvC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAEzC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI;YACP,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,0FAA0F,YAAY,eAAe,CAAC;IAC7I,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
import { type FluxmailDb } from './db.js';
|
|
2
|
-
export declare const ADMIN_AUDIT_RETENTION = 10000;
|
|
3
2
|
export interface AdminAuditInput {
|
|
4
3
|
operation: string;
|
|
5
4
|
outcome: 'success' | 'error';
|
|
6
|
-
actorKeyId
|
|
5
|
+
actorKeyId?: string;
|
|
6
|
+
actorSessionId?: string;
|
|
7
7
|
actorMemberId: string | null;
|
|
8
8
|
resourceType?: string;
|
|
9
9
|
resourceId?: string;
|
|
10
10
|
errorCode?: string;
|
|
11
11
|
}
|
|
12
|
+
export interface AdminAuditEvent {
|
|
13
|
+
id: number;
|
|
14
|
+
timestamp: number;
|
|
15
|
+
operation: string;
|
|
16
|
+
outcome: string;
|
|
17
|
+
actorKeyId: string | null;
|
|
18
|
+
actorSessionId: string | null;
|
|
19
|
+
actorMemberId: string | null;
|
|
20
|
+
resourceType: string | null;
|
|
21
|
+
resourceId: string | null;
|
|
22
|
+
errorCode: string | null;
|
|
23
|
+
}
|
|
24
|
+
export declare function listAdminAuditEvents(db: FluxmailDb, limit?: number): AdminAuditEvent[];
|
|
12
25
|
/** Store identifiers and stable codes only. Callers must not pass request data or error text. */
|
|
13
26
|
export declare function recordAdminAuditEvent(db: FluxmailDb, input: AdminAuditInput): void;
|
|
14
27
|
//# sourceMappingURL=adminAudit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminAudit.d.ts","sourceRoot":"","sources":["../../src/storage/adminAudit.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE5D,
|
|
1
|
+
{"version":3,"file":"adminAudit.d.ts","sourceRoot":"","sources":["../../src/storage/adminAudit.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,SAAM,GAAG,eAAe,EAAE,CAOnF;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAclF"}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
2
|
import { adminAuditEvents } from './db.js';
|
|
3
|
-
export
|
|
3
|
+
export function listAdminAuditEvents(db, limit = 100) {
|
|
4
|
+
return db
|
|
5
|
+
.select()
|
|
6
|
+
.from(adminAuditEvents)
|
|
7
|
+
.orderBy(sql `${adminAuditEvents.id} DESC`)
|
|
8
|
+
.limit(Math.min(Math.max(limit, 1), 500))
|
|
9
|
+
.all();
|
|
10
|
+
}
|
|
4
11
|
/** Store identifiers and stable codes only. Callers must not pass request data or error text. */
|
|
5
12
|
export function recordAdminAuditEvent(db, input) {
|
|
6
|
-
db.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const excess = tx.select({ id: adminAuditEvents.id }).from(adminAuditEvents).all().length - ADMIN_AUDIT_RETENTION;
|
|
20
|
-
if (excess <= 0)
|
|
21
|
-
return;
|
|
22
|
-
const oldest = tx
|
|
23
|
-
.select({ id: adminAuditEvents.id })
|
|
24
|
-
.from(adminAuditEvents)
|
|
25
|
-
.orderBy(asc(adminAuditEvents.id))
|
|
26
|
-
.limit(excess)
|
|
27
|
-
.all();
|
|
28
|
-
for (const event of oldest)
|
|
29
|
-
tx.delete(adminAuditEvents).where(eq(adminAuditEvents.id, event.id)).run();
|
|
30
|
-
});
|
|
13
|
+
db.insert(adminAuditEvents)
|
|
14
|
+
.values({
|
|
15
|
+
timestamp: Date.now(),
|
|
16
|
+
operation: input.operation,
|
|
17
|
+
outcome: input.outcome,
|
|
18
|
+
actorKeyId: input.actorKeyId ?? null,
|
|
19
|
+
actorSessionId: input.actorSessionId ?? null,
|
|
20
|
+
actorMemberId: input.actorMemberId,
|
|
21
|
+
resourceType: input.resourceType ?? null,
|
|
22
|
+
resourceId: input.resourceId ?? null,
|
|
23
|
+
errorCode: input.errorCode ?? null,
|
|
24
|
+
})
|
|
25
|
+
.run();
|
|
31
26
|
}
|
|
32
27
|
//# sourceMappingURL=adminAudit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminAudit.js","sourceRoot":"","sources":["../../src/storage/adminAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"adminAudit.js","sourceRoot":"","sources":["../../src/storage/adminAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AA0B5D,MAAM,UAAU,oBAAoB,CAAC,EAAc,EAAE,KAAK,GAAG,GAAG;IAC9D,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,gBAAgB,CAAC;SACtB,OAAO,CAAC,GAAG,CAAA,GAAG,gBAAgB,CAAC,EAAE,OAAO,CAAC;SACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACxC,GAAG,EAAE,CAAC;AACX,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,qBAAqB,CAAC,EAAc,EAAE,KAAsB;IAC1E,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;SACxB,MAAM,CAAC;QACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QACxC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;KACnC,CAAC;SACD,GAAG,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -6,8 +6,8 @@ export interface ApiKeyInfo {
|
|
|
6
6
|
name: string;
|
|
7
7
|
createdAt: number;
|
|
8
8
|
lastUsedAt: number | null;
|
|
9
|
-
/** Member the key was issued to
|
|
10
|
-
memberId: string
|
|
9
|
+
/** Member the key was issued to. */
|
|
10
|
+
memberId: string;
|
|
11
11
|
permissionProfile: PermissionProfile;
|
|
12
12
|
capabilities: Capability[];
|
|
13
13
|
supplementalCapabilities: AdminCapability[];
|
|
@@ -15,23 +15,23 @@ export interface ApiKeyInfo {
|
|
|
15
15
|
accountIds: string[] | null;
|
|
16
16
|
}
|
|
17
17
|
/** Returns the plaintext key exactly once; only its hash is stored. */
|
|
18
|
-
export declare function createApiKey(db: FluxmailDb, name: string, memberId
|
|
18
|
+
export declare function createApiKey(db: FluxmailDb, name: string, memberId: string, permissions?: PermissionPolicy, accountIds?: readonly string[] | null): {
|
|
19
19
|
key: string;
|
|
20
20
|
info: ApiKeyInfo;
|
|
21
21
|
};
|
|
22
22
|
export interface ApiKeyAuth {
|
|
23
23
|
/** Stable key id used to scope REST idempotency records. */
|
|
24
24
|
keyId: string;
|
|
25
|
-
/** Member the key was issued to
|
|
26
|
-
memberId: string
|
|
27
|
-
/** Current member role.
|
|
28
|
-
role: MemberRole
|
|
25
|
+
/** Member the key was issued to. */
|
|
26
|
+
memberId: string;
|
|
27
|
+
/** Current member role. */
|
|
28
|
+
role: MemberRole;
|
|
29
29
|
permissions: PermissionPolicy;
|
|
30
30
|
accountIds: string[] | null;
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Verify a key, record its use, and return its live member role and mailbox
|
|
34
|
-
* narrowing.
|
|
34
|
+
* narrowing. Suspended and pending members cannot authenticate with API keys.
|
|
35
35
|
*/
|
|
36
36
|
export declare function authenticateApiKey(db: FluxmailDb, key: string): ApiKeyAuth | null;
|
|
37
37
|
export declare function verifyApiKey(db: FluxmailDb, key: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiKeys.d.ts","sourceRoot":"","sources":["../../src/storage/apiKeys.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"apiKeys.d.ts","sourceRoot":"","sources":["../../src/storage/apiKeys.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,wBAAwB,EAAE,eAAe,EAAE,CAAC;IAC5C,oFAAoF;IACpF,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC7B;AAuBD,uEAAuE;AACvE,wBAAgB,YAAY,CAC1B,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,gBAAyC,EACtD,UAAU,GAAE,SAAS,MAAM,EAAE,GAAG,IAAW,GAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAwCnC;AAED,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsBjF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,EAAE,CAwBxD;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAO9G;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAkB1G;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACvC;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS,CAsBrG;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAenE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAGhE"}
|
package/dist/storage/apiKeys.js
CHANGED
|
@@ -24,16 +24,18 @@ function hashKey(key) {
|
|
|
24
24
|
}
|
|
25
25
|
/** Returns the plaintext key exactly once; only its hash is stored. */
|
|
26
26
|
export function createApiKey(db, name, memberId, permissions = FULL_PERMISSION_POLICY, accountIds = null) {
|
|
27
|
-
if (!memberId)
|
|
27
|
+
if (!memberId)
|
|
28
28
|
throw new EmailError('invalid_request', 'A member is required when creating an API key.');
|
|
29
|
-
}
|
|
30
29
|
const member = getMember(db, memberId);
|
|
30
|
+
if (member.status !== 'active') {
|
|
31
|
+
throw new EmailError('permission_denied', 'API keys can only be issued to active members.');
|
|
32
|
+
}
|
|
31
33
|
const policy = normalizePermissionPolicy(permissions);
|
|
32
34
|
if (member.role !== 'admin' && policy.capabilities.some((capability) => capability.startsWith('admin.'))) {
|
|
33
35
|
throw new EmailError('permission_denied', 'Administrative capabilities can only be issued to an admin member.');
|
|
34
36
|
}
|
|
35
37
|
const id = `key_${randomBytes(8).toString('hex')}`;
|
|
36
|
-
const key = `fmk_${randomBytes(
|
|
38
|
+
const key = `fmk_${randomBytes(32).toString('hex')}`;
|
|
37
39
|
const createdAt = Date.now();
|
|
38
40
|
db.insert(apiKeys)
|
|
39
41
|
.values({
|
|
@@ -65,7 +67,7 @@ export function createApiKey(db, name, memberId, permissions = FULL_PERMISSION_P
|
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
67
69
|
* Verify a key, record its use, and return its live member role and mailbox
|
|
68
|
-
* narrowing.
|
|
70
|
+
* narrowing. Suspended and pending members cannot authenticate with API keys.
|
|
69
71
|
*/
|
|
70
72
|
export function authenticateApiKey(db, key) {
|
|
71
73
|
const row = db
|
|
@@ -79,9 +81,11 @@ export function authenticateApiKey(db, key) {
|
|
|
79
81
|
try {
|
|
80
82
|
permissions = deserializePermissionPolicy(row.permissionProfile, row.customCapabilities, row.supplementalCapabilities);
|
|
81
83
|
const accountIds = deserializeAccountIds(row.accountIds);
|
|
82
|
-
const member =
|
|
84
|
+
const member = getMember(db, row.memberId);
|
|
85
|
+
if (member.status !== 'active')
|
|
86
|
+
return null;
|
|
83
87
|
db.update(apiKeys).set({ lastUsedAt: Date.now() }).where(eq(apiKeys.id, row.id)).run();
|
|
84
|
-
return { keyId: row.id, memberId: row.memberId, role: member
|
|
88
|
+
return { keyId: row.id, memberId: row.memberId, role: member.role, permissions, accountIds };
|
|
85
89
|
}
|
|
86
90
|
catch {
|
|
87
91
|
return null;
|
|
@@ -124,8 +128,8 @@ export function updateApiKeyPermissions(db, id, permissions) {
|
|
|
124
128
|
const existing = db.select().from(apiKeys).where(eq(apiKeys.id, id)).get();
|
|
125
129
|
if (!existing)
|
|
126
130
|
return false;
|
|
127
|
-
const member =
|
|
128
|
-
if (member
|
|
131
|
+
const member = getMember(db, existing.memberId);
|
|
132
|
+
if (member.role !== 'admin' && policy.capabilities.some((capability) => capability.startsWith('admin.'))) {
|
|
129
133
|
throw new EmailError('permission_denied', 'Administrative capabilities can only be issued to an admin member.');
|
|
130
134
|
}
|
|
131
135
|
const result = db
|
|
@@ -145,8 +149,8 @@ export function updateApiKey(db, id, update) {
|
|
|
145
149
|
if (!existing)
|
|
146
150
|
return undefined;
|
|
147
151
|
const policy = update.permissions ? normalizePermissionPolicy(update.permissions) : undefined;
|
|
148
|
-
const member =
|
|
149
|
-
if (policy && member
|
|
152
|
+
const member = getMember(db, existing.memberId);
|
|
153
|
+
if (policy && member.role !== 'admin' && policy.capabilities.some((item) => item.startsWith('admin.'))) {
|
|
150
154
|
throw new EmailError('permission_denied', 'Administrative capabilities can only be issued to an admin member.');
|
|
151
155
|
}
|
|
152
156
|
db.update(apiKeys)
|
|
@@ -172,7 +176,8 @@ export function isUsableRootKey(db, id) {
|
|
|
172
176
|
const permissions = deserializePermissionPolicy(row.permissionProfile, row.customCapabilities, row.supplementalCapabilities);
|
|
173
177
|
if (!hasCapability(permissions, 'admin.api_keys'))
|
|
174
178
|
return false;
|
|
175
|
-
|
|
179
|
+
const member = getMember(db, row.memberId);
|
|
180
|
+
return member.status === 'active' && member.role === 'admin';
|
|
176
181
|
}
|
|
177
182
|
catch {
|
|
178
183
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../src/storage/apiKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAmB,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,iCAAiC,EACjC,aAAa,GAKd,MAAM,mBAAmB,CAAC;AAgB3B,SAAS,gBAAgB,CAAC,UAA6B;IACrD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAoC;IAC/D,OAAO,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAoB;IACjD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAC1B,EAAc,EACd,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"apiKeys.js","sourceRoot":"","sources":["../../src/storage/apiKeys.ts"],"names":[],"mappings":"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"}
|