openxiangda-nest 2.0.0-alpha.12
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 +25 -0
- package/dist/application-credentials.d.ts +19 -0
- package/dist/application-credentials.d.ts.map +1 -0
- package/dist/application-credentials.js +158 -0
- package/dist/application-credentials.js.map +1 -0
- package/dist/assignee-provider.d.ts +34 -0
- package/dist/assignee-provider.d.ts.map +1 -0
- package/dist/assignee-provider.js +216 -0
- package/dist/assignee-provider.js.map +1 -0
- package/dist/authz.d.ts +17 -0
- package/dist/authz.d.ts.map +1 -0
- package/dist/authz.js +129 -0
- package/dist/authz.js.map +1 -0
- package/dist/data-api.d.ts +61 -0
- package/dist/data-api.d.ts.map +1 -0
- package/dist/data-api.js +122 -0
- package/dist/data-api.js.map +1 -0
- package/dist/events.d.ts +46 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +359 -0
- package/dist/events.js.map +1 -0
- package/dist/health.d.ts +24 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +81 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +6 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +106 -0
- package/dist/module.js.map +1 -0
- package/dist/platform-client.d.ts +101 -0
- package/dist/platform-client.d.ts.map +1 -0
- package/dist/platform-client.js +250 -0
- package/dist/platform-client.js.map +1 -0
- package/dist/tokens.d.ts +4 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +4 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workflow.d.ts +59 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +84 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authz.js","sourceRoot":"","sources":["../src/authz.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { DataPage, DataAggregatePage, DataAggregateQuery, DataAuditPage, DataFileRef, DataFileUploadPlan, DataQuery, DataRecord, DataTransactionRequest, DataTransactionResult } from 'openxiangda-contracts';
|
|
2
|
+
import { OpenXiangdaApplicationCredentials } from './application-credentials.js';
|
|
3
|
+
import { OpenXiangdaPlatformClient } from './platform-client.js';
|
|
4
|
+
import type { OpenXiangdaHttpRequest } from './types.js';
|
|
5
|
+
export declare class OpenXiangdaDataApiService {
|
|
6
|
+
private readonly request;
|
|
7
|
+
private readonly platform;
|
|
8
|
+
constructor(request: OpenXiangdaHttpRequest, platform: OpenXiangdaPlatformClient);
|
|
9
|
+
query<T extends Record<string, unknown>>(resourceCode: string, query: DataQuery): Promise<DataPage<T>>;
|
|
10
|
+
get<T extends Record<string, unknown>>(resourceCode: string, id: string): Promise<DataRecord<T>>;
|
|
11
|
+
aggregate<T extends Record<string, unknown>>(resourceCode: string, query: DataAggregateQuery): Promise<DataAggregatePage<T>>;
|
|
12
|
+
audit(resourceCode: string, id: string, input?: {
|
|
13
|
+
limit?: number;
|
|
14
|
+
offset?: number;
|
|
15
|
+
}): Promise<DataAuditPage>;
|
|
16
|
+
initiateFileUpload(resourceCode: string, input: {
|
|
17
|
+
fieldCode: string;
|
|
18
|
+
fileName: string;
|
|
19
|
+
fileSize: number;
|
|
20
|
+
contentType?: string;
|
|
21
|
+
recordId?: string;
|
|
22
|
+
}): Promise<DataFileUploadPlan>;
|
|
23
|
+
completeFileUpload(resourceCode: string, fileId: string): Promise<DataFileRef>;
|
|
24
|
+
create<T extends Record<string, unknown>>(resourceCode: string, data: Record<string, unknown>): Promise<DataRecord<T>>;
|
|
25
|
+
update<T extends Record<string, unknown>>(resourceCode: string, id: string, input: {
|
|
26
|
+
expectedRevision: number;
|
|
27
|
+
data: Record<string, unknown>;
|
|
28
|
+
}): Promise<DataRecord<T>>;
|
|
29
|
+
delete<T extends Record<string, unknown>>(resourceCode: string, id: string, expectedRevision: number): Promise<DataRecord<T>>;
|
|
30
|
+
transaction(transaction: DataTransactionRequest): Promise<DataTransactionResult>;
|
|
31
|
+
private context;
|
|
32
|
+
}
|
|
33
|
+
/** Data API facade for Worker/Scheduler and other work without an HTTP request. */
|
|
34
|
+
export declare class OpenXiangdaApplicationDataApiService {
|
|
35
|
+
private readonly platform;
|
|
36
|
+
private readonly credentials;
|
|
37
|
+
constructor(platform: OpenXiangdaPlatformClient, credentials: OpenXiangdaApplicationCredentials);
|
|
38
|
+
query<T extends Record<string, unknown>>(resourceCode: string, query: DataQuery): Promise<DataPage<T>>;
|
|
39
|
+
get<T extends Record<string, unknown>>(resourceCode: string, id: string): Promise<DataRecord<T>>;
|
|
40
|
+
aggregate<T extends Record<string, unknown>>(resourceCode: string, query: DataAggregateQuery): Promise<DataAggregatePage<T>>;
|
|
41
|
+
audit(resourceCode: string, id: string, input?: {
|
|
42
|
+
limit?: number;
|
|
43
|
+
offset?: number;
|
|
44
|
+
}): Promise<DataAuditPage>;
|
|
45
|
+
initiateFileUpload(resourceCode: string, input: {
|
|
46
|
+
fieldCode: string;
|
|
47
|
+
fileName: string;
|
|
48
|
+
fileSize: number;
|
|
49
|
+
contentType?: string;
|
|
50
|
+
recordId?: string;
|
|
51
|
+
}): Promise<DataFileUploadPlan>;
|
|
52
|
+
completeFileUpload(resourceCode: string, fileId: string): Promise<DataFileRef>;
|
|
53
|
+
create<T extends Record<string, unknown>>(resourceCode: string, data: Record<string, unknown>): Promise<DataRecord<T>>;
|
|
54
|
+
update<T extends Record<string, unknown>>(resourceCode: string, id: string, input: {
|
|
55
|
+
expectedRevision: number;
|
|
56
|
+
data: Record<string, unknown>;
|
|
57
|
+
}): Promise<DataRecord<T>>;
|
|
58
|
+
delete<T extends Record<string, unknown>>(resourceCode: string, id: string, expectedRevision: number): Promise<DataRecord<T>>;
|
|
59
|
+
transaction(transaction: DataTransactionRequest): Promise<DataTransactionResult>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-api.d.ts","sourceRoot":"","sources":["../src/data-api.ts"],"names":[],"mappings":"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"}
|
package/dist/data-api.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Inject, Injectable, Scope, UnauthorizedException } from '@nestjs/common';
|
|
14
|
+
import { REQUEST } from '@nestjs/core';
|
|
15
|
+
import { OpenXiangdaApplicationCredentials } from './application-credentials.js';
|
|
16
|
+
import { OpenXiangdaPlatformClient } from './platform-client.js';
|
|
17
|
+
let OpenXiangdaDataApiService = class OpenXiangdaDataApiService {
|
|
18
|
+
request;
|
|
19
|
+
platform;
|
|
20
|
+
constructor(request, platform) {
|
|
21
|
+
this.request = request;
|
|
22
|
+
this.platform = platform;
|
|
23
|
+
}
|
|
24
|
+
async query(resourceCode, query) {
|
|
25
|
+
const context = this.context();
|
|
26
|
+
return await this.platform.queryData(context.authorization, context.roleSessionId, resourceCode, query);
|
|
27
|
+
}
|
|
28
|
+
async get(resourceCode, id) {
|
|
29
|
+
const context = this.context();
|
|
30
|
+
return await this.platform.getData(context.authorization, context.roleSessionId, resourceCode, id);
|
|
31
|
+
}
|
|
32
|
+
async aggregate(resourceCode, query) {
|
|
33
|
+
const context = this.context();
|
|
34
|
+
return await this.platform.aggregateData(context.authorization, context.roleSessionId, resourceCode, query);
|
|
35
|
+
}
|
|
36
|
+
async audit(resourceCode, id, input = {}) {
|
|
37
|
+
const context = this.context();
|
|
38
|
+
return await this.platform.dataAudit(context.authorization, context.roleSessionId, resourceCode, id, input);
|
|
39
|
+
}
|
|
40
|
+
async initiateFileUpload(resourceCode, input) {
|
|
41
|
+
const context = this.context();
|
|
42
|
+
return await this.platform.initiateDataFileUpload(context.authorization, context.roleSessionId, resourceCode, input);
|
|
43
|
+
}
|
|
44
|
+
async completeFileUpload(resourceCode, fileId) {
|
|
45
|
+
const context = this.context();
|
|
46
|
+
return await this.platform.completeDataFileUpload(context.authorization, context.roleSessionId, resourceCode, fileId);
|
|
47
|
+
}
|
|
48
|
+
async create(resourceCode, data) {
|
|
49
|
+
const context = this.context();
|
|
50
|
+
return await this.platform.createData(context.authorization, context.roleSessionId, resourceCode, data);
|
|
51
|
+
}
|
|
52
|
+
async update(resourceCode, id, input) {
|
|
53
|
+
const context = this.context();
|
|
54
|
+
return await this.platform.updateData(context.authorization, context.roleSessionId, resourceCode, id, input);
|
|
55
|
+
}
|
|
56
|
+
async delete(resourceCode, id, expectedRevision) {
|
|
57
|
+
const context = this.context();
|
|
58
|
+
return await this.platform.deleteData(context.authorization, context.roleSessionId, resourceCode, id, expectedRevision);
|
|
59
|
+
}
|
|
60
|
+
async transaction(transaction) {
|
|
61
|
+
const context = this.context();
|
|
62
|
+
return await this.platform.transactData(context.authorization, context.roleSessionId, transaction);
|
|
63
|
+
}
|
|
64
|
+
context() {
|
|
65
|
+
if (!this.request.openxiangda) {
|
|
66
|
+
throw new UnauthorizedException('OPENXIANGDA_CONTEXT_NOT_VERIFIED');
|
|
67
|
+
}
|
|
68
|
+
return this.request.openxiangda;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
OpenXiangdaDataApiService = __decorate([
|
|
72
|
+
Injectable({ scope: Scope.REQUEST }),
|
|
73
|
+
__param(0, Inject(REQUEST)),
|
|
74
|
+
__metadata("design:paramtypes", [Object, OpenXiangdaPlatformClient])
|
|
75
|
+
], OpenXiangdaDataApiService);
|
|
76
|
+
export { OpenXiangdaDataApiService };
|
|
77
|
+
/** Data API facade for Worker/Scheduler and other work without an HTTP request. */
|
|
78
|
+
let OpenXiangdaApplicationDataApiService = class OpenXiangdaApplicationDataApiService {
|
|
79
|
+
platform;
|
|
80
|
+
credentials;
|
|
81
|
+
constructor(platform, credentials) {
|
|
82
|
+
this.platform = platform;
|
|
83
|
+
this.credentials = credentials;
|
|
84
|
+
}
|
|
85
|
+
async query(resourceCode, query) {
|
|
86
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.queryData(authorization, null, resourceCode, query));
|
|
87
|
+
}
|
|
88
|
+
async get(resourceCode, id) {
|
|
89
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.getData(authorization, null, resourceCode, id));
|
|
90
|
+
}
|
|
91
|
+
async aggregate(resourceCode, query) {
|
|
92
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.aggregateData(authorization, null, resourceCode, query));
|
|
93
|
+
}
|
|
94
|
+
async audit(resourceCode, id, input = {}) {
|
|
95
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.dataAudit(authorization, null, resourceCode, id, input));
|
|
96
|
+
}
|
|
97
|
+
async initiateFileUpload(resourceCode, input) {
|
|
98
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.initiateDataFileUpload(authorization, null, resourceCode, input));
|
|
99
|
+
}
|
|
100
|
+
async completeFileUpload(resourceCode, fileId) {
|
|
101
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.completeDataFileUpload(authorization, null, resourceCode, fileId));
|
|
102
|
+
}
|
|
103
|
+
async create(resourceCode, data) {
|
|
104
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.createData(authorization, null, resourceCode, data));
|
|
105
|
+
}
|
|
106
|
+
async update(resourceCode, id, input) {
|
|
107
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.updateData(authorization, null, resourceCode, id, input));
|
|
108
|
+
}
|
|
109
|
+
async delete(resourceCode, id, expectedRevision) {
|
|
110
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.deleteData(authorization, null, resourceCode, id, expectedRevision));
|
|
111
|
+
}
|
|
112
|
+
async transaction(transaction) {
|
|
113
|
+
return await this.credentials.withAuthorization(async (authorization) => this.platform.transactData(authorization, null, transaction));
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
OpenXiangdaApplicationDataApiService = __decorate([
|
|
117
|
+
Injectable(),
|
|
118
|
+
__metadata("design:paramtypes", [OpenXiangdaPlatformClient,
|
|
119
|
+
OpenXiangdaApplicationCredentials])
|
|
120
|
+
], OpenXiangdaApplicationDataApiService);
|
|
121
|
+
export { OpenXiangdaApplicationDataApiService };
|
|
122
|
+
//# sourceMappingURL=data-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-api.js","sourceRoot":"","sources":["../src/data-api.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type CloudEvent } from 'openxiangda-contracts';
|
|
2
|
+
import type { OpenXiangdaEventReceiptContext, OpenXiangdaEventReceiptStore, OpenXiangdaModuleOptions } from './types.js';
|
|
3
|
+
export interface OpenXiangdaEventAcceptResult<T = unknown> {
|
|
4
|
+
accepted: true;
|
|
5
|
+
duplicate: boolean;
|
|
6
|
+
eventId: string;
|
|
7
|
+
result?: T;
|
|
8
|
+
}
|
|
9
|
+
export declare class InMemoryOpenXiangdaEventReceiptStore implements OpenXiangdaEventReceiptStore {
|
|
10
|
+
private readonly receipts;
|
|
11
|
+
claim(receipt: OpenXiangdaEventReceiptContext): Promise<'claimed' | 'duplicate' | 'busy'>;
|
|
12
|
+
complete(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
|
|
13
|
+
release(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
|
|
14
|
+
private key;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Production receipt store backed by the OpenXiangda platform database.
|
|
18
|
+
* The event subscription secret authenticates every command; no app OAuth
|
|
19
|
+
* credential or local database is required.
|
|
20
|
+
*/
|
|
21
|
+
export declare class PlatformOpenXiangdaEventReceiptStore implements OpenXiangdaEventReceiptStore {
|
|
22
|
+
private readonly options;
|
|
23
|
+
private readonly claimTokens;
|
|
24
|
+
constructor(options: OpenXiangdaModuleOptions);
|
|
25
|
+
claim(receipt: OpenXiangdaEventReceiptContext): Promise<'claimed' | 'duplicate' | 'busy'>;
|
|
26
|
+
complete(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
|
|
27
|
+
release(receipt: OpenXiangdaEventReceiptContext): Promise<void>;
|
|
28
|
+
private finish;
|
|
29
|
+
private delay;
|
|
30
|
+
private execute;
|
|
31
|
+
private signatureContent;
|
|
32
|
+
private receiptUrl;
|
|
33
|
+
private signingSecrets;
|
|
34
|
+
private key;
|
|
35
|
+
}
|
|
36
|
+
export declare class OpenXiangdaEventReceiver {
|
|
37
|
+
private readonly options;
|
|
38
|
+
private readonly receipts;
|
|
39
|
+
constructor(options: OpenXiangdaModuleOptions, receipts: OpenXiangdaEventReceiptStore);
|
|
40
|
+
accept<T>(headers: Record<string, string | string[] | undefined>, rawBody: Buffer | string, handler: (event: CloudEvent) => Promise<T> | T): Promise<OpenXiangdaEventAcceptResult<T>>;
|
|
41
|
+
private parseEvent;
|
|
42
|
+
private assertTimestamp;
|
|
43
|
+
private assertSignature;
|
|
44
|
+
private header;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EACV,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,4BAA4B,CAAC,CAAC,GAAG,OAAO;IACvD,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ;AAED,qBACa,oCAAqC,YAAW,4BAA4B;IACvF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiD;IAEpE,KAAK,CACT,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IAStC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,OAAO,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE,OAAO,CAAC,GAAG;CAGZ;AAED;;;;GAIG;AACH,qBACa,oCACX,YAAW,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;gBAE5B,OAAO,EAAE,wBAAwB;IAExD,KAAK,CACT,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;IAiBtC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,OAAO,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;YAQvD,MAAM;YA2CN,KAAK;YAKL,OAAO;IAgFrB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,GAAG;CAGZ;AAED,qBACa,wBAAwB;IAGjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,OAAO,EAAE,wBAAwB,EAEjC,QAAQ,EAAE,4BAA4B;IAGnD,MAAM,CAAC,CAAC,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7C,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IA0E3C,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,MAAM;CAWf"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
14
|
+
import { BadRequestException, Inject, Injectable, ServiceUnavailableException, UnauthorizedException } from '@nestjs/common';
|
|
15
|
+
import { SCHEMA_VERSIONS, } from 'openxiangda-contracts';
|
|
16
|
+
import { OPENXIANGDA_EVENT_RECEIPT_STORE, OPENXIANGDA_MODULE_OPTIONS } from './tokens.js';
|
|
17
|
+
let InMemoryOpenXiangdaEventReceiptStore = class InMemoryOpenXiangdaEventReceiptStore {
|
|
18
|
+
receipts = new Map();
|
|
19
|
+
async claim(receipt) {
|
|
20
|
+
const key = this.key(receipt);
|
|
21
|
+
const current = this.receipts.get(key);
|
|
22
|
+
if (current === 'processing')
|
|
23
|
+
return 'busy';
|
|
24
|
+
if (current === 'succeeded')
|
|
25
|
+
return 'duplicate';
|
|
26
|
+
this.receipts.set(key, 'processing');
|
|
27
|
+
return 'claimed';
|
|
28
|
+
}
|
|
29
|
+
async complete(receipt) {
|
|
30
|
+
this.receipts.set(this.key(receipt), 'succeeded');
|
|
31
|
+
}
|
|
32
|
+
async release(receipt) {
|
|
33
|
+
const key = this.key(receipt);
|
|
34
|
+
if (this.receipts.get(key) === 'processing')
|
|
35
|
+
this.receipts.delete(key);
|
|
36
|
+
}
|
|
37
|
+
key(receipt) {
|
|
38
|
+
return `${receipt.tenantId}:${receipt.appCode}:${receipt.environmentKey}:${receipt.subscriptionCode}:${receipt.eventId}`;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
InMemoryOpenXiangdaEventReceiptStore = __decorate([
|
|
42
|
+
Injectable()
|
|
43
|
+
], InMemoryOpenXiangdaEventReceiptStore);
|
|
44
|
+
export { InMemoryOpenXiangdaEventReceiptStore };
|
|
45
|
+
/**
|
|
46
|
+
* Production receipt store backed by the OpenXiangda platform database.
|
|
47
|
+
* The event subscription secret authenticates every command; no app OAuth
|
|
48
|
+
* credential or local database is required.
|
|
49
|
+
*/
|
|
50
|
+
let PlatformOpenXiangdaEventReceiptStore = class PlatformOpenXiangdaEventReceiptStore {
|
|
51
|
+
options;
|
|
52
|
+
claimTokens = new Map();
|
|
53
|
+
constructor(options) {
|
|
54
|
+
this.options = options;
|
|
55
|
+
}
|
|
56
|
+
async claim(receipt) {
|
|
57
|
+
const result = await this.execute(receipt, 'claim');
|
|
58
|
+
if (result.outcome === 'claimed' && result.claimToken) {
|
|
59
|
+
this.claimTokens.set(this.key(receipt), result.claimToken);
|
|
60
|
+
return 'claimed';
|
|
61
|
+
}
|
|
62
|
+
if (result.outcome === 'duplicate' && result.status === 'succeeded') {
|
|
63
|
+
return 'duplicate';
|
|
64
|
+
}
|
|
65
|
+
if (result.outcome === 'duplicate' && result.status === 'processing') {
|
|
66
|
+
return 'busy';
|
|
67
|
+
}
|
|
68
|
+
throw new ServiceUnavailableException('平台返回了不一致的事件回执领取状态');
|
|
69
|
+
}
|
|
70
|
+
async complete(receipt) {
|
|
71
|
+
await this.finish(receipt, 'complete');
|
|
72
|
+
this.claimTokens.delete(this.key(receipt));
|
|
73
|
+
}
|
|
74
|
+
async release(receipt) {
|
|
75
|
+
try {
|
|
76
|
+
await this.finish(receipt, 'release');
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
this.claimTokens.delete(this.key(receipt));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async finish(receipt, action) {
|
|
83
|
+
const key = this.key(receipt);
|
|
84
|
+
const claimToken = this.claimTokens.get(key);
|
|
85
|
+
if (!claimToken) {
|
|
86
|
+
throw new ServiceUnavailableException('当前事件缺少平台回执 claimToken');
|
|
87
|
+
}
|
|
88
|
+
const maxAttempts = Math.max(1, Math.min(5, Math.floor(this.options.eventReceiptMaxAttempts || 3)));
|
|
89
|
+
const baseDelay = Math.max(0, Math.min(2_000, Math.floor(this.options.eventReceiptRetryDelayMs ?? 150)));
|
|
90
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
91
|
+
try {
|
|
92
|
+
const result = await this.execute(receipt, action, claimToken);
|
|
93
|
+
const expectedOutcome = action === 'complete' ? 'completed' : 'released';
|
|
94
|
+
if (result.outcome !== expectedOutcome &&
|
|
95
|
+
!(action === 'release' && result.outcome === 'completed')) {
|
|
96
|
+
throw new ServiceUnavailableException(`平台事件回执 ${action} 返回状态不一致`);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (!(error instanceof ServiceUnavailableException) ||
|
|
102
|
+
attempt >= maxAttempts) {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
await this.delay(baseDelay * 2 ** (attempt - 1));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async delay(milliseconds) {
|
|
110
|
+
if (milliseconds <= 0)
|
|
111
|
+
return;
|
|
112
|
+
await new Promise(resolve => setTimeout(resolve, milliseconds));
|
|
113
|
+
}
|
|
114
|
+
async execute(receipt, action, claimToken) {
|
|
115
|
+
const secret = this.signingSecrets(receipt.subscriptionCode)[0];
|
|
116
|
+
if (!secret) {
|
|
117
|
+
throw new UnauthorizedException('事件订阅签名密钥未配置');
|
|
118
|
+
}
|
|
119
|
+
const command = {
|
|
120
|
+
schemaVersion: SCHEMA_VERSIONS.eventReceiptCommand,
|
|
121
|
+
action,
|
|
122
|
+
...receipt,
|
|
123
|
+
...(claimToken ? { claimToken } : {}),
|
|
124
|
+
};
|
|
125
|
+
const timestamp = String(Math.floor(Date.now() / 1000));
|
|
126
|
+
const signature = createHmac('sha256', secret)
|
|
127
|
+
.update(this.signatureContent(command, timestamp))
|
|
128
|
+
.digest('hex');
|
|
129
|
+
const controller = new AbortController();
|
|
130
|
+
const timeout = setTimeout(() => controller.abort(), Math.max(1_000, this.options.requestTimeoutMs || 10_000));
|
|
131
|
+
let response;
|
|
132
|
+
try {
|
|
133
|
+
const fetcher = this.options.fetch || globalThis.fetch;
|
|
134
|
+
response = await fetcher(this.receiptUrl(), {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
headers: {
|
|
137
|
+
'Content-Type': 'application/json',
|
|
138
|
+
'X-OpenXiangda-Timestamp': timestamp,
|
|
139
|
+
'X-OpenXiangda-Signature': `v1=${signature}`,
|
|
140
|
+
},
|
|
141
|
+
body: JSON.stringify(command),
|
|
142
|
+
signal: controller.signal,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
throw new ServiceUnavailableException(error instanceof Error && error.name === 'AbortError'
|
|
147
|
+
? '平台事件回执请求超时'
|
|
148
|
+
: '平台事件回执请求失败');
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
clearTimeout(timeout);
|
|
152
|
+
}
|
|
153
|
+
let envelope;
|
|
154
|
+
try {
|
|
155
|
+
envelope = (await response.json());
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
throw new ServiceUnavailableException('平台事件回执返回的不是有效 JSON');
|
|
159
|
+
}
|
|
160
|
+
const code = Number(envelope.code ?? response.status);
|
|
161
|
+
if (!response.ok || code >= 400) {
|
|
162
|
+
const message = String(envelope.errorCode || envelope.message || '').trim() ||
|
|
163
|
+
`平台事件回执请求失败 (${response.status})`;
|
|
164
|
+
if (response.status === 401 || response.status === 403) {
|
|
165
|
+
throw new UnauthorizedException(message);
|
|
166
|
+
}
|
|
167
|
+
throw new ServiceUnavailableException(message);
|
|
168
|
+
}
|
|
169
|
+
const result = envelope.data;
|
|
170
|
+
if (!result ||
|
|
171
|
+
result.schemaVersion !== SCHEMA_VERSIONS.eventReceiptResult ||
|
|
172
|
+
result.eventId !== receipt.eventId ||
|
|
173
|
+
result.deliveryId !== receipt.deliveryId ||
|
|
174
|
+
!Number.isInteger(result.attempts)) {
|
|
175
|
+
throw new ServiceUnavailableException('平台事件回执响应不符合 v2 协议');
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
signatureContent(command, timestamp) {
|
|
180
|
+
return [
|
|
181
|
+
SCHEMA_VERSIONS.eventReceiptCommand,
|
|
182
|
+
timestamp,
|
|
183
|
+
command.action,
|
|
184
|
+
command.tenantId,
|
|
185
|
+
command.appCode,
|
|
186
|
+
command.environmentKey,
|
|
187
|
+
command.subscriptionCode,
|
|
188
|
+
command.eventId,
|
|
189
|
+
command.deliveryId,
|
|
190
|
+
command.claimToken || '',
|
|
191
|
+
].join('\n');
|
|
192
|
+
}
|
|
193
|
+
receiptUrl() {
|
|
194
|
+
return new URL('openxiangda-api/v2/event-receipts', this.options.platformBaseUrl.endsWith('/')
|
|
195
|
+
? this.options.platformBaseUrl
|
|
196
|
+
: `${this.options.platformBaseUrl}/`).toString();
|
|
197
|
+
}
|
|
198
|
+
signingSecrets(subscriptionCode) {
|
|
199
|
+
const configured = this.options.eventSigningSecrets?.[subscriptionCode] ||
|
|
200
|
+
this.options.eventSigningSecret;
|
|
201
|
+
return (Array.isArray(configured) ? configured : [configured])
|
|
202
|
+
.map(secret => String(secret || '').trim())
|
|
203
|
+
.filter(Boolean);
|
|
204
|
+
}
|
|
205
|
+
key(receipt) {
|
|
206
|
+
return `${receipt.tenantId}:${receipt.appCode}:${receipt.environmentKey}:${receipt.subscriptionCode}:${receipt.eventId}`;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
PlatformOpenXiangdaEventReceiptStore = __decorate([
|
|
210
|
+
Injectable(),
|
|
211
|
+
__metadata("design:paramtypes", [Object])
|
|
212
|
+
], PlatformOpenXiangdaEventReceiptStore);
|
|
213
|
+
export { PlatformOpenXiangdaEventReceiptStore };
|
|
214
|
+
let OpenXiangdaEventReceiver = class OpenXiangdaEventReceiver {
|
|
215
|
+
options;
|
|
216
|
+
receipts;
|
|
217
|
+
constructor(options, receipts) {
|
|
218
|
+
this.options = options;
|
|
219
|
+
this.receipts = receipts;
|
|
220
|
+
}
|
|
221
|
+
async accept(headers, rawBody, handler) {
|
|
222
|
+
const body = Buffer.isBuffer(rawBody)
|
|
223
|
+
? rawBody.toString('utf8')
|
|
224
|
+
: String(rawBody || '');
|
|
225
|
+
if (!body)
|
|
226
|
+
throw new BadRequestException('事件 raw body 不能为空');
|
|
227
|
+
const event = this.parseEvent(body);
|
|
228
|
+
const subscriptionCode = this.header(headers, 'x-openxiangda-subscription-code');
|
|
229
|
+
const timestamp = this.header(headers, 'x-openxiangda-timestamp');
|
|
230
|
+
const signature = this.header(headers, 'x-openxiangda-signature');
|
|
231
|
+
const deliveryId = this.header(headers, 'x-openxiangda-delivery-id');
|
|
232
|
+
this.assertTimestamp(timestamp);
|
|
233
|
+
this.assertSignature(subscriptionCode, timestamp, signature, body);
|
|
234
|
+
if (event.appcode !== this.options.appCode) {
|
|
235
|
+
throw new UnauthorizedException('事件 appCode 与当前应用不一致');
|
|
236
|
+
}
|
|
237
|
+
if (event.environment !== this.options.environmentId) {
|
|
238
|
+
throw new UnauthorizedException('事件 environment 与当前环境不一致');
|
|
239
|
+
}
|
|
240
|
+
const receipt = {
|
|
241
|
+
tenantId: event.tenantid,
|
|
242
|
+
appCode: event.appcode,
|
|
243
|
+
environmentKey: event.environment,
|
|
244
|
+
subscriptionCode,
|
|
245
|
+
eventId: event.id,
|
|
246
|
+
deliveryId,
|
|
247
|
+
};
|
|
248
|
+
const claim = await this.receipts.claim(receipt);
|
|
249
|
+
if (claim === 'duplicate') {
|
|
250
|
+
return { accepted: true, duplicate: true, eventId: event.id };
|
|
251
|
+
}
|
|
252
|
+
if (claim === 'busy') {
|
|
253
|
+
throw new ServiceUnavailableException('事件已由另一个实例处理中,请稍后重试');
|
|
254
|
+
}
|
|
255
|
+
let result;
|
|
256
|
+
try {
|
|
257
|
+
result = await handler(event);
|
|
258
|
+
}
|
|
259
|
+
catch (handlerError) {
|
|
260
|
+
try {
|
|
261
|
+
await this.receipts.release(receipt);
|
|
262
|
+
}
|
|
263
|
+
catch (receiptError) {
|
|
264
|
+
const combined = new ServiceUnavailableException({
|
|
265
|
+
status: 'event_receipt_release_failed',
|
|
266
|
+
message: '业务处理失败,且平台事件回执释放失败',
|
|
267
|
+
handlerError: handlerError instanceof Error
|
|
268
|
+
? handlerError.message
|
|
269
|
+
: String(handlerError),
|
|
270
|
+
receiptError: receiptError instanceof Error
|
|
271
|
+
? receiptError.message
|
|
272
|
+
: String(receiptError),
|
|
273
|
+
});
|
|
274
|
+
combined.cause = handlerError;
|
|
275
|
+
throw combined;
|
|
276
|
+
}
|
|
277
|
+
throw handlerError;
|
|
278
|
+
}
|
|
279
|
+
// The handler has already committed its side effects. Completion is
|
|
280
|
+
// idempotent and retried by the receipt store; never release here, or a
|
|
281
|
+
// transient acknowledgement failure would invite immediate re-execution.
|
|
282
|
+
await this.receipts.complete(receipt);
|
|
283
|
+
return {
|
|
284
|
+
accepted: true,
|
|
285
|
+
duplicate: false,
|
|
286
|
+
eventId: event.id,
|
|
287
|
+
...(result === undefined ? {} : { result })
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
parseEvent(body) {
|
|
291
|
+
let value;
|
|
292
|
+
try {
|
|
293
|
+
value = JSON.parse(body);
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
throw new BadRequestException('事件 body 不是有效 JSON');
|
|
297
|
+
}
|
|
298
|
+
const event = value;
|
|
299
|
+
if (!event ||
|
|
300
|
+
event.specversion !== '1.0' ||
|
|
301
|
+
!String(event.id || '').trim() ||
|
|
302
|
+
!String(event.type || '').trim() ||
|
|
303
|
+
!String(event.source || '').trim() ||
|
|
304
|
+
!String(event.tenantid || '').trim() ||
|
|
305
|
+
!String(event.appcode || '').trim() ||
|
|
306
|
+
!String(event.environment || '').trim() ||
|
|
307
|
+
!event.data ||
|
|
308
|
+
typeof event.data !== 'object') {
|
|
309
|
+
throw new BadRequestException('事件不符合 CloudEvents 1.0 协议');
|
|
310
|
+
}
|
|
311
|
+
return event;
|
|
312
|
+
}
|
|
313
|
+
assertTimestamp(value) {
|
|
314
|
+
const timestamp = Number(value);
|
|
315
|
+
const maxAgeSeconds = Math.max(30, this.options.eventMaxAgeSeconds || 300);
|
|
316
|
+
if (!Number.isSafeInteger(timestamp) ||
|
|
317
|
+
Math.abs(Math.floor(Date.now() / 1000) - timestamp) > maxAgeSeconds) {
|
|
318
|
+
throw new UnauthorizedException('事件签名时间戳无效或已过期');
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
assertSignature(subscriptionCode, timestamp, value, body) {
|
|
322
|
+
const configured = this.options.eventSigningSecrets?.[subscriptionCode] ||
|
|
323
|
+
this.options.eventSigningSecret;
|
|
324
|
+
const secrets = (Array.isArray(configured) ? configured : [configured])
|
|
325
|
+
.map(secret => String(secret || '').trim())
|
|
326
|
+
.filter(Boolean);
|
|
327
|
+
if (!secrets.length) {
|
|
328
|
+
throw new UnauthorizedException('事件订阅签名密钥未配置');
|
|
329
|
+
}
|
|
330
|
+
const actual = value.startsWith('v1=') ? value.slice(3) : '';
|
|
331
|
+
const actualBuffer = Buffer.from(actual, 'hex');
|
|
332
|
+
const valid = secrets.some(secret => {
|
|
333
|
+
const expectedBuffer = Buffer.from(createHmac('sha256', secret)
|
|
334
|
+
.update(`${timestamp}.${body}`)
|
|
335
|
+
.digest('hex'), 'hex');
|
|
336
|
+
return (actualBuffer.length === expectedBuffer.length &&
|
|
337
|
+
timingSafeEqual(actualBuffer, expectedBuffer));
|
|
338
|
+
});
|
|
339
|
+
if (!valid) {
|
|
340
|
+
throw new UnauthorizedException('事件签名无效');
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
header(headers, name) {
|
|
344
|
+
const value = headers[name] ?? headers[name.toLowerCase()];
|
|
345
|
+
const normalized = Array.isArray(value) ? value[0] : value;
|
|
346
|
+
if (!String(normalized || '').trim()) {
|
|
347
|
+
throw new UnauthorizedException(`缺少事件头 ${name}`);
|
|
348
|
+
}
|
|
349
|
+
return String(normalized).trim();
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
OpenXiangdaEventReceiver = __decorate([
|
|
353
|
+
Injectable(),
|
|
354
|
+
__param(0, Inject(OPENXIANGDA_MODULE_OPTIONS)),
|
|
355
|
+
__param(1, Inject(OPENXIANGDA_EVENT_RECEIPT_STORE)),
|
|
356
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
357
|
+
], OpenXiangdaEventReceiver);
|
|
358
|
+
export { OpenXiangdaEventReceiver };
|
|
359
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,UAAU,EACV,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,GAIhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAed,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAC9B,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE1E,KAAK,CAAC,KAAK,CACT,OAAuC;QAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,YAAY;YAAE,OAAO,MAAM,CAAC;QAC5C,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO,WAAW,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAuC;QACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAEO,GAAG,CAAC,OAAuC;QACjD,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3H,CAAC;CACF,CAAA;AA1BY,oCAAoC;IADhD,UAAU,EAAE;GACA,oCAAoC,CA0BhD;;AAED;;;;GAIG;AAEI,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAKlB;IAFZ,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzD,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;IAAG,CAAC;IAElE,KAAK,CAAC,KAAK,CACT,OAAuC;QAEvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACrE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,2BAA2B,CACnC,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAuC;QACpD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuC;QACnD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,OAAuC,EACvC,MAA8B;QAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,CAAC,CAAC,CAAC,CACnE,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC,CAC1E,CAAC;QACF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC/D,MAAM,eAAe,GACnB,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;gBACnD,IACE,MAAM,CAAC,OAAO,KAAK,eAAe;oBAClC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC,EACzD,CAAC;oBACD,MAAM,IAAI,2BAA2B,CACnC,UAAU,MAAM,UAAU,CAC3B,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IACE,CAAC,CAAC,KAAK,YAAY,2BAA2B,CAAC;oBAC/C,OAAO,IAAI,WAAW,EACtB,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,YAAoB;QACtC,IAAI,YAAY,IAAI,CAAC;YAAE,OAAO;QAC9B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,OAAuC,EACvC,MAAqC,EACrC,UAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAwB;YACnC,aAAa,EAAE,eAAe,CAAC,mBAAmB;YAClD,MAAM;YACN,GAAG,OAAO;YACV,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtC,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;aAC3C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aACjD,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,CACzD,CAAC;QACF,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;YACvD,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,yBAAyB,EAAE,SAAS;oBACpC,yBAAyB,EAAE,MAAM,SAAS,EAAE;iBAC7C;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,2BAA2B,CACnC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;gBACnD,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,YAAY,CACjB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,QAKH,CAAC;QACF,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YAChC,MAAM,OAAO,GACX,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;gBAC3D,eAAe,QAAQ,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAA+C,CAAC;QACxE,IACE,CAAC,MAAM;YACP,MAAM,CAAC,aAAa,KAAK,eAAe,CAAC,kBAAkB;YAC3D,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;YAClC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;YACxC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAClC,CAAC;YACD,MAAM,IAAI,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAA4B,CAAC;IACtC,CAAC;IAEO,gBAAgB,CAAC,OAA4B,EAAE,SAAiB;QACtE,OAAO;YACL,eAAe,CAAC,mBAAmB;YACnC,SAAS;YACT,OAAO,CAAC,MAAM;YACd,OAAO,CAAC,QAAQ;YAChB,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,cAAc;YACtB,OAAO,CAAC,gBAAgB;YACxB,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,UAAU;YAClB,OAAO,CAAC,UAAU,IAAI,EAAE;SACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,GAAG,CACZ,mCAAmC,EACnC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YAC9B,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CACvC,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;IAEO,cAAc,CAAC,gBAAwB;QAC7C,MAAM,UAAU,GACd,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aAC3D,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAEO,GAAG,CAAC,OAAuC;QACjD,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3H,CAAC;CACF,CAAA;AA3MY,oCAAoC;IADhD,UAAU,EAAE;;GACA,oCAAoC,CA2MhD;;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAGhB;IAEA;IAJnB,YAEmB,OAAiC,EAEjC,QAAsC;QAFtC,YAAO,GAAP,OAAO,CAA0B;QAEjC,aAAQ,GAAR,QAAQ,CAA8B;IACtD,CAAC;IAEJ,KAAK,CAAC,MAAM,CACV,OAAsD,EACtD,OAAwB,EACxB,OAA8C;QAE9C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAClC,OAAO,EACP,iCAAiC,CAClC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAmC;YAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,cAAc,EAAE,KAAK,CAAC,WAAW;YACjC,gBAAgB;YAChB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,UAAU;SACX,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,2BAA2B,CACnC,oBAAoB,CACrB,CAAC;QACJ,CAAC;QACD,IAAI,MAAS,CAAC;QACd,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,IAAI,2BAA2B,CAAC;oBAC/C,MAAM,EAAE,8BAA8B;oBACtC,OAAO,EAAE,oBAAoB;oBAC7B,YAAY,EACV,YAAY,YAAY,KAAK;wBAC3B,CAAC,CAAC,YAAY,CAAC,OAAO;wBACtB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC1B,YAAY,EACV,YAAY,YAAY,KAAK;wBAC3B,CAAC,CAAC,YAAY,CAAC,OAAO;wBACtB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;iBAC3B,CAAsD,CAAC;gBACxD,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC9B,MAAM,QAAQ,CAAC;YACjB,CAAC;YACD,MAAM,YAAY,CAAC;QACrB,CAAC;QACD,oEAAoE;QACpE,wEAAwE;QACxE,yEAAyE;QACzE,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,KAAK,GAAG,KAA4B,CAAC;QAC3C,IACE,CAAC,KAAK;YACN,KAAK,CAAC,WAAW,KAAK,KAAK;YAC3B,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC9B,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAChC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAClC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACpC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACnC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACvC,CAAC,KAAK,CAAC,IAAI;YACX,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,MAAM,IAAI,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAmB,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAC,KAAa;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAAC;QAC3E,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,aAAa,EACnE,CAAC;YACD,MAAM,IAAI,qBAAqB,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,gBAAwB,EACxB,SAAiB,EACjB,KAAa,EACb,IAAY;QAEZ,MAAM,UAAU,GACd,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,gBAAgB,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAClC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACpE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aAC1C,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAClC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;iBACzB,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;iBAC9B,MAAM,CAAC,KAAK,CAAC,EAChB,KAAK,CACN,CAAC;YACF,OAAO,CACL,YAAY,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;gBAC7C,eAAe,CAAC,YAAY,EAAE,cAAc,CAAC,CAC9C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,MAAM,CACZ,OAAsD,EACtD,IAAY;QAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,qBAAqB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;CACF,CAAA;AAvKY,wBAAwB;IADpC,UAAU,EAAE;IAGR,WAAA,MAAM,CAAC,0BAA0B,CAAC,CAAA;IAElC,WAAA,MAAM,CAAC,+BAA+B,CAAC,CAAA;;GAJ/B,wBAAwB,CAuKpC"}
|