@futdevpro/nts-dynamo 1.14.65 → 1.14.67
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/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts +2 -0
- package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts.map +1 -0
- package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js +294 -0
- package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js.map +1 -0
- package/build/_services/base/data.service.d.ts +1 -1
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +7 -1
- package/build/_services/base/data.service.js.map +1 -1
- package/package.json +1 -1
- package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +393 -0
- package/src/_services/base/data.service.ts +12 -3
package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lvs-vector-pool.control-service.spec.d.ts","sourceRoot":"","sources":["../../../../src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const lvs_search_mode_enum_1 = require("../_enums/lvs-search-mode.enum");
|
|
4
|
+
const lvs_vector_pool_control_service_1 = require("./lvs-vector-pool.control-service");
|
|
5
|
+
describe('| LVS_VectorPool_ControlService', () => {
|
|
6
|
+
let vectorPool;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
vectorPool = new lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService();
|
|
9
|
+
});
|
|
10
|
+
describe('| Constructor/Initialization', () => {
|
|
11
|
+
it('| should initialize with empty pools', () => {
|
|
12
|
+
const all = vectorPool.getAll();
|
|
13
|
+
expect(all.size).toBe(0);
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe('| addVector', () => {
|
|
17
|
+
it('| should add a valid vector to the pool', () => {
|
|
18
|
+
const id = 'vector1';
|
|
19
|
+
const vector = [1, 2, 3];
|
|
20
|
+
vectorPool.addVector(id, vector);
|
|
21
|
+
const all = vectorPool.getAll();
|
|
22
|
+
expect(all.size).toBe(1);
|
|
23
|
+
expect(all.has(id)).toBeTrue();
|
|
24
|
+
expect(all.get(id)).toEqual(vector);
|
|
25
|
+
});
|
|
26
|
+
it('| should add multiple vectors to the pool', () => {
|
|
27
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
28
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
29
|
+
vectorPool.addVector('vector3', [7, 8, 9]);
|
|
30
|
+
const all = vectorPool.getAll();
|
|
31
|
+
expect(all.size).toBe(3);
|
|
32
|
+
});
|
|
33
|
+
it('| should throw error when ID is empty string', () => {
|
|
34
|
+
expect(() => {
|
|
35
|
+
vectorPool.addVector('', [1, 2, 3]);
|
|
36
|
+
}).toThrowError('Vector ID is required');
|
|
37
|
+
});
|
|
38
|
+
it('| should throw error when vector is empty array', () => {
|
|
39
|
+
expect(() => {
|
|
40
|
+
vectorPool.addVector('vector1', []);
|
|
41
|
+
}).toThrowError('Vector must be a non-empty array');
|
|
42
|
+
});
|
|
43
|
+
it('| should throw error when vector is not an array', () => {
|
|
44
|
+
expect(() => {
|
|
45
|
+
vectorPool.addVector('vector1', null);
|
|
46
|
+
}).toThrowError('Vector must be a non-empty array');
|
|
47
|
+
});
|
|
48
|
+
it('| should throw error when vector contains non-finite number', () => {
|
|
49
|
+
expect(() => {
|
|
50
|
+
vectorPool.addVector('vector1', [1, 2, Infinity]);
|
|
51
|
+
}).toThrowError('Vector must contain only finite numbers at index 2');
|
|
52
|
+
});
|
|
53
|
+
it('| should throw error when vector contains NaN', () => {
|
|
54
|
+
expect(() => {
|
|
55
|
+
vectorPool.addVector('vector1', [1, 2, NaN]);
|
|
56
|
+
}).toThrowError('Vector must contain only finite numbers at index 2');
|
|
57
|
+
});
|
|
58
|
+
it('| should store normalized vector internally', () => {
|
|
59
|
+
const id = 'vector1';
|
|
60
|
+
const vector = [3, 4]; // Magnitude = 5, normalized = [0.6, 0.8]
|
|
61
|
+
vectorPool.addVector(id, vector);
|
|
62
|
+
// Verify original vector is stored
|
|
63
|
+
const all = vectorPool.getAll();
|
|
64
|
+
expect(all.get(id)).toEqual(vector);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('| removeVector', () => {
|
|
68
|
+
it('| should remove an existing vector from the pool', () => {
|
|
69
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
70
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
71
|
+
vectorPool.removeVector('vector1');
|
|
72
|
+
const all = vectorPool.getAll();
|
|
73
|
+
expect(all.size).toBe(1);
|
|
74
|
+
expect(all.has('vector1')).toBeFalse();
|
|
75
|
+
expect(all.has('vector2')).toBeTrue();
|
|
76
|
+
});
|
|
77
|
+
it('| should not throw when removing non-existent vector', () => {
|
|
78
|
+
expect(() => {
|
|
79
|
+
vectorPool.removeVector('non-existent');
|
|
80
|
+
}).not.toThrow();
|
|
81
|
+
});
|
|
82
|
+
it('| should remove vector from both pools', () => {
|
|
83
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
84
|
+
vectorPool.removeVector('vector1');
|
|
85
|
+
const all = vectorPool.getAll();
|
|
86
|
+
expect(all.size).toBe(0);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe('| updateVector', () => {
|
|
90
|
+
it('| should update an existing vector', () => {
|
|
91
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
92
|
+
const newVector = [4, 5, 6];
|
|
93
|
+
vectorPool.updateVector('vector1', newVector);
|
|
94
|
+
const all = vectorPool.getAll();
|
|
95
|
+
expect(all.get('vector1')).toEqual(newVector);
|
|
96
|
+
});
|
|
97
|
+
it('| should throw error when updating non-existent vector', () => {
|
|
98
|
+
expect(() => {
|
|
99
|
+
vectorPool.updateVector('non-existent', [1, 2, 3]);
|
|
100
|
+
}).toThrowError('Vector with ID "non-existent" does not exist');
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe('| clearPool', () => {
|
|
104
|
+
it('| should clear a populated pool', () => {
|
|
105
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
106
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
107
|
+
vectorPool.addVector('vector3', [7, 8, 9]);
|
|
108
|
+
vectorPool.clearPool();
|
|
109
|
+
const all = vectorPool.getAll();
|
|
110
|
+
expect(all.size).toBe(0);
|
|
111
|
+
});
|
|
112
|
+
it('| should not throw when clearing empty pool', () => {
|
|
113
|
+
expect(() => {
|
|
114
|
+
vectorPool.clearPool();
|
|
115
|
+
}).not.toThrow();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('| getAll', () => {
|
|
119
|
+
it('| should return a copy of the pool, not a reference', () => {
|
|
120
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
121
|
+
const all1 = vectorPool.getAll();
|
|
122
|
+
const all2 = vectorPool.getAll();
|
|
123
|
+
expect(all1).not.toBe(all2);
|
|
124
|
+
expect(all1.size).toBe(all2.size);
|
|
125
|
+
});
|
|
126
|
+
it('| should return empty map when pool is empty', () => {
|
|
127
|
+
const all = vectorPool.getAll();
|
|
128
|
+
expect(all.size).toBe(0);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe('| cosineSimilarity (static)', () => {
|
|
132
|
+
it('| should return 1 for identical vectors', () => {
|
|
133
|
+
const vector = [1, 2, 3];
|
|
134
|
+
const similarity = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.cosineSimilarity(vector, vector);
|
|
135
|
+
expect(similarity).toBeCloseTo(1, 10);
|
|
136
|
+
});
|
|
137
|
+
it('| should return approximately 0 for orthogonal vectors', () => {
|
|
138
|
+
const vector1 = [1, 0, 0];
|
|
139
|
+
const vector2 = [0, 1, 0];
|
|
140
|
+
const similarity = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
141
|
+
expect(similarity).toBeCloseTo(0, 10);
|
|
142
|
+
});
|
|
143
|
+
it('| should throw error for vectors with different dimensions', () => {
|
|
144
|
+
const vector1 = [1, 2, 3];
|
|
145
|
+
const vector2 = [1, 2];
|
|
146
|
+
expect(() => {
|
|
147
|
+
lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
148
|
+
}).toThrowError('Vectors must have the same dimension. Got 3 and 2');
|
|
149
|
+
});
|
|
150
|
+
it('| should calculate correct cosine similarity for known vectors', () => {
|
|
151
|
+
// Two vectors pointing in similar direction
|
|
152
|
+
const vector1 = [1, 1, 0];
|
|
153
|
+
const vector2 = [1, 0, 0];
|
|
154
|
+
// Normalized: [1/√2, 1/√2, 0] and [1, 0, 0]
|
|
155
|
+
// Dot product: 1/√2 ≈ 0.707
|
|
156
|
+
const similarity = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
157
|
+
expect(similarity).toBeCloseTo(1 / Math.sqrt(2), 10);
|
|
158
|
+
});
|
|
159
|
+
it('| should handle zero vector', () => {
|
|
160
|
+
const vector1 = [0, 0, 0];
|
|
161
|
+
const vector2 = [1, 2, 3];
|
|
162
|
+
const similarity = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
163
|
+
expect(similarity).toBeCloseTo(0, 10);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
describe('| l2Distance (static)', () => {
|
|
167
|
+
it('| should return 0 for identical vectors', () => {
|
|
168
|
+
const vector = [1, 2, 3];
|
|
169
|
+
const distance = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.l2Distance(vector, vector);
|
|
170
|
+
expect(distance).toBe(0);
|
|
171
|
+
});
|
|
172
|
+
it('| should throw error for vectors with different dimensions', () => {
|
|
173
|
+
const vector1 = [1, 2, 3];
|
|
174
|
+
const vector2 = [1, 2];
|
|
175
|
+
expect(() => {
|
|
176
|
+
lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
177
|
+
}).toThrowError('Vectors must have the same dimension. Got 3 and 2');
|
|
178
|
+
});
|
|
179
|
+
it('| should calculate correct L2 distance for known vectors', () => {
|
|
180
|
+
const vector1 = [0, 0, 0];
|
|
181
|
+
const vector2 = [3, 4, 0];
|
|
182
|
+
// Distance = √(3² + 4² + 0²) = √25 = 5
|
|
183
|
+
const distance = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
184
|
+
expect(distance).toBe(5);
|
|
185
|
+
});
|
|
186
|
+
it('| should calculate correct L2 distance for 1D vectors', () => {
|
|
187
|
+
const vector1 = [5];
|
|
188
|
+
const vector2 = [2];
|
|
189
|
+
const distance = lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
190
|
+
expect(distance).toBe(3);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('| search', () => {
|
|
194
|
+
beforeEach(() => {
|
|
195
|
+
// Add test vectors
|
|
196
|
+
vectorPool.addVector('vec1', [1, 0, 0]);
|
|
197
|
+
vectorPool.addVector('vec2', [0, 1, 0]);
|
|
198
|
+
vectorPool.addVector('vec3', [0, 0, 1]);
|
|
199
|
+
vectorPool.addVector('vec4', [1, 1, 0]);
|
|
200
|
+
});
|
|
201
|
+
it('| should return empty array for empty pool', () => {
|
|
202
|
+
const emptyPool = new lvs_vector_pool_control_service_1.LVS_VectorPool_ControlService();
|
|
203
|
+
const results = emptyPool.search([1, 0, 0], 3, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
204
|
+
expect(results.length).toBe(0);
|
|
205
|
+
});
|
|
206
|
+
it('| should return results in descending order for cosine similarity', () => {
|
|
207
|
+
const query = [1, 0, 0];
|
|
208
|
+
const results = vectorPool.search(query, 4, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
209
|
+
expect(results.length).toBe(4);
|
|
210
|
+
// vec1 should be most similar (identical)
|
|
211
|
+
expect(results[0].id).toBe('vec1');
|
|
212
|
+
expect(results[0].score).toBeCloseTo(1, 10);
|
|
213
|
+
// Results should be in descending order
|
|
214
|
+
for (let i = 0; i < results.length - 1; i++) {
|
|
215
|
+
expect(results[i].score).toBeGreaterThanOrEqual(results[i + 1].score);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
it('| should return results in ascending order for L2 distance', () => {
|
|
219
|
+
const query = [1, 0, 0];
|
|
220
|
+
const results = vectorPool.search(query, 4, lvs_search_mode_enum_1.LVS_Search_Mode.l2Distance);
|
|
221
|
+
expect(results.length).toBe(4);
|
|
222
|
+
// vec1 should be closest (distance = 0)
|
|
223
|
+
expect(results[0].id).toBe('vec1');
|
|
224
|
+
expect(results[0].score).toBe(0);
|
|
225
|
+
// Results should be in ascending order
|
|
226
|
+
for (let i = 0; i < results.length - 1; i++) {
|
|
227
|
+
expect(results[i].score).toBeLessThanOrEqual(results[i + 1].score);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
it('| should limit results to top-K when k < pool size', () => {
|
|
231
|
+
const query = [1, 0, 0];
|
|
232
|
+
const results = vectorPool.search(query, 2, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
233
|
+
expect(results.length).toBe(2);
|
|
234
|
+
});
|
|
235
|
+
it('| should return all results when k > pool size', () => {
|
|
236
|
+
const query = [1, 0, 0];
|
|
237
|
+
const results = vectorPool.search(query, 10, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
238
|
+
expect(results.length).toBe(4);
|
|
239
|
+
});
|
|
240
|
+
it('| should return all results when k = pool size', () => {
|
|
241
|
+
const query = [1, 0, 0];
|
|
242
|
+
const results = vectorPool.search(query, 4, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
243
|
+
expect(results.length).toBe(4);
|
|
244
|
+
});
|
|
245
|
+
it('| should throw error for dimension mismatch', () => {
|
|
246
|
+
const query = [1, 0]; // 2D query, pool has 3D vectors
|
|
247
|
+
expect(() => {
|
|
248
|
+
vectorPool.search(query, 3, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
249
|
+
}).toThrowError('Query vector dimension (2) does not match pool vector dimension (3)');
|
|
250
|
+
});
|
|
251
|
+
it('| should throw error for empty query vector', () => {
|
|
252
|
+
expect(() => {
|
|
253
|
+
vectorPool.search([], 3, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
254
|
+
}).toThrowError('Query vector must be a non-empty array');
|
|
255
|
+
});
|
|
256
|
+
it('| should throw error for non-array query', () => {
|
|
257
|
+
expect(() => {
|
|
258
|
+
vectorPool.search(null, 3, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
259
|
+
}).toThrowError('Query vector must be a non-empty array');
|
|
260
|
+
});
|
|
261
|
+
it('| should throw error for k = 0', () => {
|
|
262
|
+
expect(() => {
|
|
263
|
+
vectorPool.search([1, 0, 0], 0, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
264
|
+
}).toThrowError('k must be a positive number');
|
|
265
|
+
});
|
|
266
|
+
it('| should throw error for negative k', () => {
|
|
267
|
+
expect(() => {
|
|
268
|
+
vectorPool.search([1, 0, 0], -1, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
269
|
+
}).toThrowError('k must be a positive number');
|
|
270
|
+
});
|
|
271
|
+
it('| should throw error for unknown search mode', () => {
|
|
272
|
+
expect(() => {
|
|
273
|
+
vectorPool.search([1, 0, 0], 3, 'unknown-mode');
|
|
274
|
+
}).toThrowError('Unknown search mode: unknown-mode');
|
|
275
|
+
});
|
|
276
|
+
it('| should return correct scores for cosine similarity', () => {
|
|
277
|
+
const query = [1, 0, 0];
|
|
278
|
+
const results = vectorPool.search(query, 4, lvs_search_mode_enum_1.LVS_Search_Mode.cosineSimilarity);
|
|
279
|
+
// vec1 should have score = 1 (identical)
|
|
280
|
+
const vec1Result = results.find((r) => r.id === 'vec1');
|
|
281
|
+
expect(vec1Result).toBeDefined();
|
|
282
|
+
expect(vec1Result.score).toBeCloseTo(1, 10);
|
|
283
|
+
});
|
|
284
|
+
it('| should return correct scores for L2 distance', () => {
|
|
285
|
+
const query = [1, 0, 0];
|
|
286
|
+
const results = vectorPool.search(query, 4, lvs_search_mode_enum_1.LVS_Search_Mode.l2Distance);
|
|
287
|
+
// vec1 should have score = 0 (identical)
|
|
288
|
+
const vec1Result = results.find((r) => r.id === 'vec1');
|
|
289
|
+
expect(vec1Result).toBeDefined();
|
|
290
|
+
expect(vec1Result.score).toBe(0);
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
//# sourceMappingURL=lvs-vector-pool.control-service.spec.js.map
|
package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lvs-vector-pool.control-service.spec.js","sourceRoot":"","sources":["../../../../src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -234,7 +234,7 @@ export declare class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
234
234
|
update: DyNTS_DBUpdate<T>;
|
|
235
235
|
}, dontUpdateModified?: boolean): Promise<void>;
|
|
236
236
|
protected ensureData(data?: T): T;
|
|
237
|
-
patchData(data?: T): Promise<T>;
|
|
237
|
+
patchData(data?: Partial<T>): Promise<T>;
|
|
238
238
|
/**
|
|
239
239
|
* modifies data if the data have ID and already exists in the DB,
|
|
240
240
|
* creates new if the ID is not present or cant find in DB,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.service.d.ts","sourceRoot":"","sources":["../../../src/_services/base/data.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"data.service.d.ts","sourceRoot":"","sources":["../../../src/_services/base/data.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -611,7 +611,6 @@ class DyNTS_DataService {
|
|
|
611
611
|
}
|
|
612
612
|
async patchData(data) {
|
|
613
613
|
try {
|
|
614
|
-
data = this.ensureData(data);
|
|
615
614
|
if (!data._id) {
|
|
616
615
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
617
616
|
...this._getDefaultErrorSettings('patchData', new Error(`no ID to patch data! (${this.dataParams.dataName})`)),
|
|
@@ -623,6 +622,13 @@ class DyNTS_DataService {
|
|
|
623
622
|
...this._getDefaultErrorSettings('patchData', new Error(`data not found! (${this.dataParams.dataName})`)),
|
|
624
623
|
});
|
|
625
624
|
}
|
|
625
|
+
for (const key in this.depSettings) {
|
|
626
|
+
if (data[key] && data[key] !== dataExists[key]) {
|
|
627
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
628
|
+
...this._getDefaultErrorSettings('patchData', new Error(`Cannot patch data: dependency data mismatch! (${this.dataParams.dataName})`)),
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
}
|
|
626
632
|
fsm_dynamo_1.DyFM_Object.cleanAssign(dataExists, data);
|
|
627
633
|
await this.validateForSave(dataExists);
|
|
628
634
|
return await this.dataDBService.modifyData(dataExists, this.issuer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../../../src/_services/base/data.service.ts"],"names":[],"mappings":";;;AACA,sDAuB+B;AAE/B,kEAA0E;AAC1E,oFAAiF;AAEjF,2DAA6D;AAI7D,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,iBAAiB;IAoCnB;IAKA;IAIA;IA3CT,WAAW,CAAS;IAEpB,aAAa,CAAqB;IAClC,sBAAsB,CAAU;IAEhC,cAAc;IACd,QAAQ,GAAQ,EAAE,CAAC;IACnB,qBAAqB;IAEZ,WAAW,GAKd,EAAE,CAAC;IACT;;;wCAGoC;IAC5B,gBAAgB,CAAuB;IAE/C,2CAA2C;IAElC,mBAAmB,GAC1B,kDAAkD;QAClD,oDAAoD,CAAC;IAC9C,6BAA6B,GACpC,gDAAgD;QAChD,oDAAoD,CAAC;IAEvD;IACE;;OAEG;IACI,IAAO;IACd;;OAEG;IACH,wCAAwC;IACjC,UAAoC;IAC3C;;OAEG;IACI,MAAc;QATd,SAAI,GAAJ,IAAI,CAAG;QAKP,eAAU,GAAV,UAAU,CAA0B;QAIpC,WAAM,GAAN,MAAM,CAAQ;QAErB,IAAI,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,oCAAmB,CAAC,YAAY,CAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,uBAAuB;YACvB,mCAAmC;YACnC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACzD,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,2BAA2B;YAC3B,+CAA+C;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,KAAK,CAAC;gBAEtD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBACvE,OAAO,EACL,4CAA4C,IAAI,CAAC,UAAU,EAAE,QAAQ,KAAK;oBAC1E,OAAO,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG;oBACrD,+DAA+D;oBAC/D,gFAAgF;gBAClF,KAAK,EAAE,4BAAe,CAAC,QAAQ;aAChC,CAAC,CAAC;YACH;;;;;;;iBAOK;QACP,CAAC;IACH,CAAC;IAED,qBAAqB;QACnB,MAAM,IAAI,uBAAU,CAAC;YACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CAAC,2CAA2C,CAAC,CACvD;YAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;SACzE,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,gBAA0B;QACrC,IAAI,CAAC;YACH,MAAM,cAAc,GAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAO,EAAE;gBACjF,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,qBAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,QAAQ,qBAAqB,CAAC,CAAC;oBAExE,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;YACjC,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAEjD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,WAAW,CACf,EAAW,EACX,gBAA0B,EAC1B,eAAyB;QAEzB,IAAI,CAAC;YACH,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;YAE1B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,aAAa,EACb,IAAI,KAAK,CACP,qCAAqC;wBACrC,+DAA+D;wBAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,UAAU,GAAM,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAE7D,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnE,MAAM,kBAAkB,GAAgC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAErF,UAAU,GAAG,MAAM,kBAAkB,CAAC,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,IAAI,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB,EAAE,CAAC;gBACrF,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,KAAK,CAAC;oBACtD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,gBAA0B;QAC1D,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,cAAc,EACd,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAChF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAE3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3B,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC;gBAEvD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAa,EAAE,gBAA0B;QAC9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAErE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3B,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBAE3D,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,sBAAsB,CAC5B,aAAkD;QAElD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC7B,qBAAQ,CAAC,IAAI,CACX,yEAAyE;gBACzE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;gBAC/B,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAC1C,CAAC;YAEF,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,uEAAuE;oBACvE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC;YAC/D,CAAC;iBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,mEAAmE;wBACnE,kDAAkD;wBAClD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1B,aAAa,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IACE,CAAC,aAAa;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EACtE,CAAC;YACD,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,yDAAyD;oBACzD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,aAA0C,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CACzB,aAAkD,EAClD,gBAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,mBAAmB,GACvB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,UAAU,GACd,MAAM,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CACvE,CAAC,KAAK,EAAQ,EAAE;gBACd,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,qBAAQ,CAAC,IAAI,CACX,kCAAkC,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI;wBAC9D,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,qBAAqB,CACvD,CAAC;oBAEF,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CACF,CAAC;YAEJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI;gBACF,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBAC5D,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aAC7D,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,KAAK,CAAC;oBAEhE,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,aAAuB,EACvB,gBAA0B,EAC1B,aAAsB;QAEtB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,4BAA4B,EAC5B,IAAI,KAAK,CACP,4EAA4E;wBAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAChC,4BAA4B,EAC5B,IAAI,KAAK,CACP,+DAA+D;4BAC/D,oEAAoE;4BACpE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;wBAEC,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;qBACzE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,4BAA4B,EAC5B,IAAI,KAAK,CACP,+DAA+D;wBAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CACvE,aAAa,EAAE,aAAa,CAC7B,CAAC;YAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3B,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI;gBACF,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;gBAC7D,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aAC9D,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,4BAA4B,EAAE,KAAK,CAAC;oBAErE,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,yBAAyB,CAC7B,aAAkD,EAClD,gBAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,mBAAmB,GACvB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,cAAc,GAClB,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAC3E,CAAC,KAAK,EAAO,EAAE;gBACb,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3C,qBAAQ,CAAC,IAAI,CACX,8BAA8B,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI;wBAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,qBAAqB,CAC7D,CAAC;oBAEF,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CACF,CAAC;YAEJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;YACjC,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI;gBACF,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;gBAC7D,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aAC9D,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,KAAK,CAAC;oBAEpE,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBAEzE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,KAAK,CAAC,QAAQ,CAAC,QAA0B,EAAE,gBAA0B;QACnE,IAAI,CAAC;YACH,MAAM,UAAU,GAAM,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAQ,EAAE;gBACrF,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,qBAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,QAAQ,qBAAqB,CAAC,CAAC;oBAE1E,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;YACzB,CAAC;YAED,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC;gBAEnD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,cAAc,GAAyB,IAAI,CAAC,QAAQ,CAAC;IAErD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,KAAK,CAAC,YAAY,CAAC,QAA0B,EAAE,gBAA0B;QACvE,IAAI,CAAC;YACH,MAAM,cAAc,GAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAO,EAAE;gBACvF,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzC,qBAAQ,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,CAAC,QAAQ,qBAAqB,CAAC,CAAC;oBAE9E,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;YACjC,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC;gBAEvD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDG;IACH,KAAK,CAAC,UAAU,CACd,GAA+D,EAC/D,kBAA4B;QAE5B,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAChC,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,MAAM,EACX,kBAAkB,CACnB,CAAC;YAEJ,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAChC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAsB,EAC1C,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,MAAM,EACX,kBAAkB,CACnB,CAAC;YAEJ,CAAC;iBAAM,IACL,IAAI,CAAC,WAAW,CAAC,MAAM;gBACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAChE,CAAC;gBACD,MAAM,mBAAmB,GAA8B,EAAE,CAAC;gBAE1D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;oBACtC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9B,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAChC,mBAAuC,EACvC,GAAG,CAAC,MAAM,EACV,IAAI,CAAC,MAAM,EACX,kBAAkB,CACnB,CAAC;YAEJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,YAAY,EACZ,IAAI,KAAK,CACP,mFAAmF;wBACnF,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;oBACvE,iBAAiB,EAAE;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;qBACvB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC;oBAErD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAES,UAAU,CAAC,IAAQ;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,YAAY,EACZ,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAC5D;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAQ;QACtB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,WAAW,EACX,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAChE;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAE1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,WAAW,EACX,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAC3D;iBACF,CAAC,CAAC;YACL,CAAC;YAED,wBAAW,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE1C,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAEvC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC;gBAEpD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAQ,EAAE,gBAA0B,EAAE,kBAA4B;QAC/E,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE7B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,IACE,IAAI,CAAC,WAAW,CAAC,MAAM;oBACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAC5D,CAAC;oBACD,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,kEAAkE;4BAClE,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;4BAC5E,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAC/B,CACF;wBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,yEAAyE;gBACzE,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE9D,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,UAAa,CAAC;YAElB,oDAAoD;YACpD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAEpD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,oDAAoD;4BACpD,SAAS,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CACnD,CACF;wBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBAElF,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACjE,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,kEAAkE;4BAClE,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;4BAC5E,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAC/B,CACF;wBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBACpE,MAAM,uBAAU,CAAC,YAAY,CAC3B,IAAI,CAAC,WAAW,EAChB,KAAK,EAAE,UAAU,EAAE,EAAE;wBACnB,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;4BAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCAC1B,MAAM,IAAI,uBAAU,CAAC;oCACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,kEAAkE;wCAClE,SAAS,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CACxD,CACF;oCAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iCACxE,CAAC,CAAC;4BACL,CAAC;4BAED,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,YAAY,CAAC;iCACtF,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iCACjC,KAAK,EAAE,CAAC;4BAET,IAAI,CAAC,gBAAgB,EAAE,CAAC;gCACtB,MAAM,IAAI,uBAAU,CAAC;oCACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,wDAAwD;wCACxD,SAAS,UAAU,CAAC,GAAG,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK;wCAC1D,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAC/B,CACF;oCAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iCACxE,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC,CACF,CAAC;gBACJ,CAAC;gBAED;;;;;;;;;;;;;;;oBAeI;YACN,CAAC;YAED,qCAAqC;YACrC,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9D,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,UAAU,EACV,IAAI,KAAK,CACP,kDAAkD;wBAClD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;oBACvE,iBAAiB,EAAE;wBACjB,IAAI,EAAE,IAAI;qBACX;iBACF,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;YAED,OAAO,IAAI,CAAC;QAEd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI;gBACF,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBAC5D,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBAC5D,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBAC5D,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBAC5D,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aAC7D,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC;YAEd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC;oBAEnD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,EAAW,EAAE,QAAkB;QAC9C,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,YAAY,EACZ,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAC7E;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,YAAY,EACZ,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAC9E;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAyB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAEtE,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAEhD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAErB,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAEhD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC;oBAErD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAkB;QACpC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAyB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAEtE,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;gBAE7C,MAAM,uBAAU,CAAC,qBAAqB,CACpC,IAAI,CAAC,QAAQ,EACb,KAAK,EAAE,IAAO,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC;oBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC,GAAG,CAAC;oBAEhB,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxC,CAAC,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;gBAE7C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAO,EAAE,EAAE;oBAChC,OAAO,IAAI,CAAC,GAAG,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,uBAAU,CAAC,qBAAqB,CACpC,IAAI,CAAC,QAAQ,EACb,KAAK,EAAE,IAAO,EAAE,EAAE;oBAChB,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAClE,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;gBAExD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,EAAW;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,oBAAoB,EACpB,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CACrF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,UAAU,CAAC;YAEf,IAAI,CAAC;gBACH,UAAU,GAAG,oCAAmB,CAAC,iBAAiB,CAChD,IAAA,sCAAuB,EAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAClD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;YAElB,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,oBAAoB,EACpB,IAAI,KAAK,CACP,2DAA2D;wBAC3D,4CAA4C;wBAC5C,mDAAmD,CACpD,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,KAAK,CAAC;oBAE7D,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,IAAQ;QAC5B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBACxG,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;YAED,MAAM,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClG,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,KAAK,CAAC;oBAE1D,MAAM,EAAE,GAAG;oBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;iBACxE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,4BAA4B,CAClC,IAAO,EACP,UAAkC,EAClC,aAAgD;QAEhD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,aAAa,EAAE,QAAQ,EAAE,CAAC;oBAC5B,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,8BAA8B,EAC9B,IAAI,KAAK,CACP,yCAAyC;4BACvC,IAAI,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BACrF,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACnF,CACF;wBACC,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;qBACzE,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO;gBACT,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,EAAE,SAAS,EAAE,CAAC;gBACpC,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,8BAA8B,EAC9B,IAAI,KAAK,CACP,0CAA0C;wBACxC,IAAI,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;wBACrF,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;oBACD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;oBACxE,iBAAiB,EAAE;wBACjB,IAAI,EAAE,IAAI;qBACX;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAiB,EAAE,CAAC;YAEhC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAC/B,CAAC,cAAgD,EAAE,EAAE;gBACnD,IAAI,CAAC;oBACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;gBACvF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CACF,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,0BAA0B,EAC1B,IAAI,KAAK,CACP,iDAAiD;4BACjD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAiB,EAAE,EAAE,CAAC,OAAO,uBAAU,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CACrF,CACF;wBACD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;wBACxE,MAAM,EAAE,MAAM;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;gBAClD,MAAM,KAAK,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,0BAA0B,EAAE,KAAK,CAAC;oBAEnE,MAAM,EAAE,GAAG;oBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CACpB,cAAgD,EAChD,aAAgD;QAEhD,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,GAAG,aAAa,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IACtE,CAAC;IAEO,gBAAgB,CACtB,IAAO,EACP,aAAkB,EAClB,cAAgD,EAChD,aAAgD;QAEhD,6BAA6B;QAC7B,IACE,CACE,cAAc,CAAC,QAAQ;YACvB,cAAc,CAAC,KAAK,CACrB,IAAI,CACH,aAAa,KAAK,IAAI;YACtB,aAAa,KAAK,SAAS,CAC5B,EACD,CAAC;YACD,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,gBAAgB;oBAC/F,0BAA0B,IAAI,CAAC,UAAU,CAAC,QAAQ,gBAAgB;oBAClE,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;gBAED,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;gBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;gBAC3C,iBAAiB,EAAE;oBACjB,IAAI,EAAE,IAAI;iBACX;aACF,CAAC,CAAC;QACL,CAAC;aAAM,IACL,cAAc,CAAC,SAAS;YACxB,aAAa,KAAK,SAAS,EAC3B,CAAC;YACD,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,kBAAkB;oBACjG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI;oBAChC,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;gBAED,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;gBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;gBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;gBAC3C,iBAAiB,EAAE;oBACjB,IAAI,EAAE,IAAI;iBACX;aACF,CAAC,CAAC;QACL,CAAC;QAED,2BAA2B;QAC3B,QAAQ,cAAc,CAAC,IAAI,EAAE,CAAC;YAC5B,KAAK,oCAAuB,CAAC,IAAI;gBAC/B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,IACE,cAAc,CAAC,QAAQ,IAAI,CACzB,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC;oBACvB,IAAI,CAAC,QAAQ,EAAE,KAAK,cAAc;oBAClC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC3C,EACD,CAAC;oBACD,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,yBAAyB;4BACxG,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;wBAC3C,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,MAAM;gBACjC,IAAI,cAAc,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,2BAA2B;4BAC1G,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;wBAC3C,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,MAAM;gBACjC,IAAI,cAAc,CAAC,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;oBACjE,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,2BAA2B;4BAC1G,UAAU,OAAO,aAAa,aAAa,aAAa,KAAK;4BAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;wBAC3C,iBAAiB,EAAE;4BACjB,IAAI,EAAE,IAAI;yBACX;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,OAAO;gBAClC,IAAI,cAAc,CAAC,QAAQ,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE,CAAC;oBAClE,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,4BAA4B;4BAC3G,UAAU,OAAO,aAAa,aAAa,aAAa,KAAK;4BAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;qBAC5C,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,MAAM;gBACjC,IAAI,cAAc,CAAC,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;oBACjE,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,2BAA2B;4BAC1G,UAAU,OAAO,aAAa,aAAa,aAAa,KAAK;4BAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC9B,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAiC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;qBAC5C,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;oBACnC,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,cAAc,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;gBACnG,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,KAAK;gBAChC,IAAI,cAAc,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxF,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,0BAA0B;4BACzG,UAAU,OAAO,aAAa,aAAa,aAAa,KAAK;4BAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;4BAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;wBAED,MAAM,EAAE,GAAG;wBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;wBACvE,WAAW,EAAE,IAAI,CAAC,6BAA6B;wBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;qBAC5C,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;oBACnC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAS,EAAQ,EAAE;wBACxC,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,cAAc,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;oBAC1F,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,oCAAuB,CAAC,QAAQ;gBACnC,qBAAQ,CAAC,IAAI,CACX,wDAAwD;oBACtD,wEAAwE,CAC3E,CAAC;gBACA;;;;;;;;;;;;;;;;kBAgBE;gBACJ,MAAM;YAER;gBACE,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,kBAAkB,EAClB,IAAI,KAAK,CACP,6BAA6B,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,kCAAkC;wBACjH,UAAU,cAAc,CAAC,IAAI,mBAAmB,cAAc,CAAC,YAAY,IAAI;wBAC/E,gBAAgB,OAAO,aAAa,aAAa,aAAa,KAAK;wBACnE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;wBAC/B,CAAE,IAAY,EAAE,IAAI,CAAC,CAAC,CAAC,+BAAgC,IAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CACF;oBAED,MAAM,EAAE,GAAG;oBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;oBACxE,WAAW,EAAE,IAAI,CAAC,6BAA6B;oBAC/C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;iBAC5C,CAAC,CAAC;QACP,CAAC;QAED,6BAA6B;QAC7B,IAAI,cAAc,CAAC,oBAAoB,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpE,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACpC,aAAa,EACb,IAAI,CACL,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA2B,EAAE,QAAc;QAC1D,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEvE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC1C,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAEnC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC;gBAErD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,KAA0B,EAC1B,QAAc;QAEd,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YACtB,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACjB,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpB,qBAAQ,CAAC,IAAI,CACX,iDAAiD,6CAAqB,CAAC,eAAe,GAAG,CAC1F,CAAC;gBACF,KAAK,CAAC,QAAQ,GAAG,6CAAqB,CAAC,eAAe,CAAC;YACzD,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEvB,IAAI,SAAS,GAAqB,EAAE,CAAC;YAErC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;gBAClD,IACE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ;oBACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9C,CAAC;oBACA,SAAiB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAyC,CAAC;oBACtF,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClC,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;oBAClC,qBAAQ,CAAC,MAAM,CACb,sFAAsF;wBACpF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;wBACpE,GAAG,CACJ,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,oBAAoB,GAAiD,EAAE,CAAC;YAE9E,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;YAEtC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAW,EAAQ,EAAE;gBACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAErC,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;oBACjC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,UAAwC,EAAQ,EAAE;wBACzF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9C,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAC1D,OAAO,EACP,UAAU,CAAC,MAAM,EACjB,UAAU,CAAC,SAAS,CACrB,CAAC;wBACF,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;wBACrC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;oBACH,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,OAAO,CAAC,CAAC,GAAW,EAAQ,EAAE;gBAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAW,EAAQ,EAAE;gBAC7C,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAiB,EAAQ,EAAE;gBAC/C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,GAAW,EAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACjE,MAAM,YAAY,GAAwC,EAAE,CAAC;gBAE7D,UAAU,CAAC,OAAO,CAAC,CAAC,GAAW,EAAQ,EAAE;oBACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;4BAClC,MAAM,IAAI,uBAAU,CAAC;gCACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,YAAY,EACZ,IAAI,KAAK,CACP,iEAAiE;oCACjE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gCAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;6BACxE,CAAC,CAAC;wBACL,CAAC;wBAED,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACxE,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAO,EAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACvF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,IAAO,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CACpC,CAAC,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC;wBACjE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1B,CAAC,YAAiB,EAAW,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CACxE,CAAC,CAAC;wBACH,oBAAoB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CACrD,CACF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,IAAO,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CACpC,CAAC,GAAW,EAAW,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7E,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,IAAO,EAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CACpC,CAAC,GAAW,EAAW,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC/D,CACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,QAAQ,CAAC,MAAM;aAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,KAAK,CAAC;gBAErD,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,gBAAgB;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAES,uBAAuB,CAC/B,GAAW,EACX,WAAiE,EACjE,YAAsC;QAEtC,IAAI,CAAC;YACH,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,oEAAoE,GAAG,IAAI;wBAC3E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;YACL,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,qEAAqE,GAAG,IAAI;4BAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;wBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;qBACzE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,uBAAU,CAAC;wBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,iEAAiE,GAAG,IAAI;4BACxE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;wBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;qBACzE,CAAC,CAAC;gBACL,CAAC;gBAED,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACtD,CAAC;YAED,QAAQ,YAAY,EAAE,CAAC;gBACrB,KAAK,oCAAuB,CAAC,MAAM;oBACjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;wBACpC,MAAM,IAAI,uBAAU,CAAC;4BACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,+DAA+D;gCAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;4BAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;yBACzE,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,MAAM,yBAAyB,GAAc,WAAwB,CAAC,MAAM,CAC1E,CAAC,YAAoB,EAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CACzD,CAAC,GAAG,CACH,CAAC,YAAoB,EAAU,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAC7D,CAAC;wBAEF,OAAO,CAAC,YAAoB,EAAW,EAAE,CAAC,yBAAyB,CAAC,IAAI,CACtE,CAAC,YAAoB,EAAW,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CACtF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,oBAAoB,GAAY,WAAsB,EAAE,WAAW,EAAE,CAAC;wBAE5E,IAAI,CAAC,oBAAoB,EAAE,CAAC;4BAC1B,OAAO,CAAC,YAAoB,EAAW,EAAE,CAAC,CAAC,YAAY,CAAC;wBAC1D,CAAC;wBAED,OAAO,CAAC,YAAoB,EAAW,EAAE,CACvC,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;oBAC/D,CAAC;gBAEH,KAAK,oCAAuB,CAAC,IAAI;oBAC/B,IAAK,WAA+B,CAAC,OAAO,EAAE,CAAC;wBAC7C,IACG,WAA+B,CAAC,IAAI,KAAK,SAAS;4BAClD,WAA+B,CAAC,IAAI,KAAK,IAAI,EAC9C,CAAC;4BACD,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,CAAE,WAA+B,CAAC,EAAE,CAAC,CAAC;4BAElE,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC;wBAC1E,CAAC;6BAAM,IACJ,WAA+B,CAAC,EAAE,KAAK,SAAS;4BAChD,WAA+B,CAAC,EAAE,KAAK,IAAI,EAC5C,CAAC;4BACD,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,CAAE,WAA+B,CAAC,IAAI,CAAC,CAAC;4BAEtE,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC;wBAC5E,CAAC;wBAED,MAAM,aAAa,GAAG,IAAI,4BAAe,CACvC,CAAC,IAAI,IAAI,CAAE,WAA+B,CAAC,IAAI,CAAC,EAChD,CAAC,IAAI,IAAI,CAAE,WAA+B,CAAC,EAAE,CAAC,CAC/C,CAAC;wBAEF,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,4BAAe,CAAC,SAAS,CACzD,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,aAAa,CACvC,CAAC;oBACJ,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,MAAM,wBAAwB,GAAc,WAAsB,CAAC,GAAG,CACpE,CAAC,IAAU,EAAU,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CACxC,CAAC;wBAEF,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;oBAC/F,CAAC;oBAED,MAAM,mBAAmB,GAAW,CAAC,IAAI,IAAI,CAAC,WAAmB,CAAC,CAAC;oBAEnE,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,mBAAmB,CAAC;gBAEpF,KAAK,oCAAuB,CAAC,MAAM;oBACjC,IAAK,WAA+B,CAAC,OAAO,EAAE,CAAC;wBAC7C,IACG,WAA+B,CAAC,IAAI,KAAK,SAAS;4BAClD,WAA+B,CAAC,IAAI,KAAK,IAAI,EAC9C,CAAC;4BACD,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,YAAY,IAAK,WAA+B,CAAC,EAAE,CAAC;wBACxF,CAAC;6BAAM,IACJ,WAA+B,CAAC,EAAE,KAAK,SAAS;4BAChD,WAA+B,CAAC,EAAE,KAAK,IAAI,EAC5C,CAAC;4BACD,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,YAAY,IAAK,WAA+B,CAAC,IAAI,CAAC;wBAC1F,CAAC;wBAED,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,4BAAe,CAAC,SAAS,CACzD,YAAY,EAAE,WAAsC,CACrD,CAAC;oBACJ,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,YAAY,EAAW,EAAE,CAAE,WAAwB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACrF,CAAC;oBAED,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,YAAY,KAAK,WAAW,CAAC;gBAEjE,KAAK,oCAAuB,CAAC,OAAO;oBAClC,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,YAAY,KAAK,WAAW,CAAC;gBAEjE,KAAK,oCAAuB,CAAC,MAAM;oBACjC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,MAAM,IAAI,uBAAU,CAAC;4BACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,6EAA6E;gCAC7E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;4BAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;yBACzE,CAAC,CAAC;oBACL,CAAC;oBAED,OAAO,CAAC,YAAY,EAAW,EAAE;wBAC/B,MAAM,eAAe,GAAa,MAAM,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAC;wBACrE,MAAM,sBAAsB,GAAG,EAAE,CAAC;wBAElC,IAAI,CAAC;4BACH,eAAe,CAAC,OAAO,CACrB,CAAC,GAAW,EAAQ,EAAE;gCACpB,sBAAsB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;4BACjE,CAAC,CACF,CAAC;wBACJ,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,IAAI,uBAAU,CAAC;gCACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,wDAAwD;oCACxD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gCAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;gCACxE,iBAAiB,EAAE;oCACjB,WAAW,EAAE,WAAW;iCACzB;6BACF,CAAC,CAAC;wBACL,CAAC;wBAED,OAAO,eAAe,CAAC,KAAK,CAC1B,CAAC,GAAW,EAAW,EAAE;4BACvB,IAAI,CAAC;gCACH,OAAO,sBAAsB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;4BAC3E,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,OAAO,CAAC,KAAK,CACX,+CAA+C,EAC/C,cAAc,EAAE,WAAW,EAC3B,eAAe,EAAE,YAAY,EAC7B,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,KAAK,CAChB,CAAC;gCACF,OAAO,KAAK,CAAC;4BACf,CAAC;wBACH,CAAC,CACF,CAAC;oBACJ,CAAC,CAAA;gBAEH;oBACE,IAAK,WAA+B,CAAC,OAAO,EAAE,CAAC;wBAC7C,MAAM,IAAI,uBAAU,CAAC;4BACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,IAAI,KAAK,CACP,6EAA6E;gCAC7E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;4BAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;yBACzE,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,OAAO,CAAC,YAAY,EAAW,EAAE,CAAE,WAAwB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACrF,CAAC;oBAED,OAAO,CAAC,YAAY,EAAW,EAAE,CAAC,YAAY,KAAK,WAAW,CAAC;YACnE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,yBAAyB,EACzB,KAAK,CACN;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;gBACxE,iBAAiB,EAAE;oBACjB,GAAG,EAAE,GAAG;oBACR,WAAW,EAAE,WAAW;oBACxB,YAAY,EAAE,YAAY;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,QAAkB;QACvC,OAAO,CAAC,IAAO,EAAO,EAAE;YACtB,IAAI,KAAK,GAAQ,IAAI,CAAC;YAEtB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAe,EAAQ,EAAE;gBACzC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;oBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;wBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wBAC7E,CAAC;6BAAM,CAAC;4BACN,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;wBACtE,CAAC;oBACH,CAAC;yBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAChE,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxC,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrB,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAY,EAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAES,qBAAqB,CAAI,YAAyB;QAC1D,IAAI,WAA+B,CAAC;QACpC,IAAI,SAAkC,CAAC;QAEvC,IACE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAE,YAAoC,CAAC,GAAG,CAAC;YACtE,CAAE,YAA0C,CAAC,oBAAoB,EACjE,CAAC;YACD,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,4DAA4D;oBAC5D,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;QAED,IAAK,YAA0C,CAAC,oBAAoB,EAAE,CAAC;YACrE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAE,YAA0C,CAAC,QAAQ,CAAC,CAAC;YACxF,SAAS,GAAI,YAA0C,CAAC,SAAS,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,CAAC,IAAO,EAAO,EAAE,CAAC,IAAI,CAAE,YAAoC,CAAC,GAAG,CAAC,CAAC;YAChF,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAE,YAAoC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACzF,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,sDAAsD;oBACtD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAW,CACxB,YAAY,CAAC,KAAK,KAAK,CAAC;YACxB,YAAY,CAAC,KAAK,KAAK,KAAK;YAC5B,YAAY,CAAC,KAAK,KAAK,WAAW,CACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEX,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,oCAAuB,CAAC,MAAM;gBACjC,OAAO,CAAC,CAAI,EAAE,CAAI,EAAU,EAAE;oBAC5B,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAEnB,OAAQ,CAAY,CAAC,aAAa,CAAC,CAAW,CAAC,GAAG,SAAS,CAAC;gBAC9D,CAAC,CAAA;YAEH,KAAK,oCAAuB,CAAC,IAAI;gBAC/B,OAAO,CAAC,CAAI,EAAE,CAAI,EAAU,EAAE;oBAC5B,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEvC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;wBAChB,OAAO,CAAC,SAAS,CAAC;oBACpB,CAAC;yBAAM,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;wBACvB,OAAO,SAAS,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,CAAC;oBACX,CAAC;gBACH,CAAC,CAAC;YAEJ,KAAK,oCAAuB,CAAC,MAAM;gBACjC,OAAO,CAAC,CAAI,EAAE,CAAI,EAAU,EAAE;oBAC5B,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAEnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBACV,OAAO,CAAC,SAAS,CAAC;oBACpB,CAAC;yBAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBACjB,OAAO,SAAS,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,CAAC;oBACX,CAAC;gBACH,CAAC,CAAC;YAEJ,KAAK,oCAAuB,CAAC,OAAO;gBAClC,OAAO,CAAC,CAAI,EAAE,CAAI,EAAU,EAAE;oBAC5B,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACnB,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBAEnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBACZ,OAAO,CAAC,CAAC;oBACX,CAAC;oBAED,IAAI,CAAC,EAAE,CAAC;wBACN,OAAO,SAAS,CAAC;oBACnB,CAAC;oBAED,OAAO,CAAC,SAAS,CAAC;gBACpB,CAAC,CAAC;YAEJ;gBACE,MAAM,IAAI,uBAAU,CAAC;oBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,uBAAuB,EACvB,IAAI,KAAK,CACP,sEAAsE;wBACtE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,GAAG,CAC9C,CACF;oBAED,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,iBAAiB;iBACzE,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6EI;IAGJ;;OAEG;IACK,6BAA6B;QACnC,MAAM,gBAAgB,GACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAC9C,CAAC,WAA6C,EAAW,EAAE,CACzD,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAC1C,CAAC;QAEJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACnE,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,YAAY,EAAE,gBAAgB,CAAC,kBAAkB;YACjD,WAAW,EAAE,gBAAgB,CAAC,MAAM;YACpC,aAAa,EAAE,gBAAgB,CAAC,QAAQ;SACzC,CAAC,CAAC,CAAC,CAAC;QAEL,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,GAAG,oCAAmB,CAAC,iBAAiB,CAC3D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CACjC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,0BAA0B,CAAC,YAAqB;QAC9C,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,wBAAwB,CAC9B,4BAA4B,EAC5B,IAAI,KAAK,CACP,0EAA0E;oBAC1E,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAChC,CACF;gBAED,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,GAAG,6CAAqB,CAAC,mBAAmB,kBAAkB;aAC1E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,GAAG,oCAAmB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAE5E,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,wBAAwB,CAC9B,MAAc,EACd,KAAoB;QAEpB,OAAO;YACL,MAAM,EAAG,KAAoB,EAAE,SAAS,IAAI,GAAG;YAC/C,OAAO,EAAG,KAAe,EAAE,OAAO;gBAC/B,KAAoB,EAAE,QAAQ;gBAC/B,GAAG,MAAM,2BAA2B,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG;YACjE,cAAc,EAAE,CAAE,KAAoB,EAAE,aAAa;YACrD,WAAW,EAAG,KAAoB,EAAE,aAAa,IAAI,IAAI,CAAC,mBAAmB;YAC7E,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,EAAE,WAAW,EAAE,IAAI,qBAAqB;YACnF,aAAa,EAAE,6CAAqB,CAAC,aAAa;YAClD,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAES,uBAAuB,CAC/B,MAAc,EACd,KAAoB;QAEpB,OAAO;YACL,MAAM,EAAG,KAAoB,EAAE,SAAS,IAAI,GAAG;YAC/C,OAAO,EAAG,KAAe,EAAE,OAAO;gBAC/B,KAAoB,EAAE,QAAQ;gBAC/B,GAAG,MAAM,sBAAsB,6CAAqB,CAAC,mBAAmB,GAAG;YAC7E,cAAc,EAAE,CAAE,KAAoB,EAAE,aAAa;YACrD,WAAW,EAAG,KAAoB,EAAE,aAAa,IAAI,IAAI,CAAC,mBAAmB;YAC7E,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI;YACrC,aAAa,EAAE,6CAAqB,CAAC,aAAa;YAClD,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CACF;AA1vED,8CA0vEC"}
|
|
1
|
+
{"version":3,"file":"data.service.js","sourceRoot":"","sources":["../../../src/_services/base/data.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
import { LVS_Search_Mode } from '../_enums/lvs-search-mode.enum';
|
|
2
|
+
import { LVS_SearchResult } from '../_models/lvs-search-result.interface';
|
|
3
|
+
import { LVS_VectorPool_ControlService } from './lvs-vector-pool.control-service';
|
|
4
|
+
|
|
5
|
+
describe('| LVS_VectorPool_ControlService', () => {
|
|
6
|
+
let vectorPool: LVS_VectorPool_ControlService;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
vectorPool = new LVS_VectorPool_ControlService();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
describe('| Constructor/Initialization', () => {
|
|
13
|
+
it('| should initialize with empty pools', () => {
|
|
14
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
15
|
+
expect(all.size).toBe(0);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('| addVector', () => {
|
|
20
|
+
it('| should add a valid vector to the pool', () => {
|
|
21
|
+
const id: string = 'vector1';
|
|
22
|
+
const vector: number[] = [1, 2, 3];
|
|
23
|
+
|
|
24
|
+
vectorPool.addVector(id, vector);
|
|
25
|
+
|
|
26
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
27
|
+
expect(all.size).toBe(1);
|
|
28
|
+
expect(all.has(id)).toBeTrue();
|
|
29
|
+
expect(all.get(id)).toEqual(vector);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('| should add multiple vectors to the pool', () => {
|
|
33
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
34
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
35
|
+
vectorPool.addVector('vector3', [7, 8, 9]);
|
|
36
|
+
|
|
37
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
38
|
+
expect(all.size).toBe(3);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('| should throw error when ID is empty string', () => {
|
|
42
|
+
expect(() => {
|
|
43
|
+
vectorPool.addVector('', [1, 2, 3]);
|
|
44
|
+
}).toThrowError('Vector ID is required');
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('| should throw error when vector is empty array', () => {
|
|
48
|
+
expect(() => {
|
|
49
|
+
vectorPool.addVector('vector1', []);
|
|
50
|
+
}).toThrowError('Vector must be a non-empty array');
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('| should throw error when vector is not an array', () => {
|
|
54
|
+
expect(() => {
|
|
55
|
+
vectorPool.addVector('vector1', null as any);
|
|
56
|
+
}).toThrowError('Vector must be a non-empty array');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('| should throw error when vector contains non-finite number', () => {
|
|
60
|
+
expect(() => {
|
|
61
|
+
vectorPool.addVector('vector1', [1, 2, Infinity]);
|
|
62
|
+
}).toThrowError('Vector must contain only finite numbers at index 2');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('| should throw error when vector contains NaN', () => {
|
|
66
|
+
expect(() => {
|
|
67
|
+
vectorPool.addVector('vector1', [1, 2, NaN]);
|
|
68
|
+
}).toThrowError('Vector must contain only finite numbers at index 2');
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('| should store normalized vector internally', () => {
|
|
72
|
+
const id: string = 'vector1';
|
|
73
|
+
const vector: number[] = [3, 4]; // Magnitude = 5, normalized = [0.6, 0.8]
|
|
74
|
+
|
|
75
|
+
vectorPool.addVector(id, vector);
|
|
76
|
+
|
|
77
|
+
// Verify original vector is stored
|
|
78
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
79
|
+
expect(all.get(id)).toEqual(vector);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('| removeVector', () => {
|
|
84
|
+
it('| should remove an existing vector from the pool', () => {
|
|
85
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
86
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
87
|
+
|
|
88
|
+
vectorPool.removeVector('vector1');
|
|
89
|
+
|
|
90
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
91
|
+
expect(all.size).toBe(1);
|
|
92
|
+
expect(all.has('vector1')).toBeFalse();
|
|
93
|
+
expect(all.has('vector2')).toBeTrue();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('| should not throw when removing non-existent vector', () => {
|
|
97
|
+
expect(() => {
|
|
98
|
+
vectorPool.removeVector('non-existent');
|
|
99
|
+
}).not.toThrow();
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('| should remove vector from both pools', () => {
|
|
103
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
104
|
+
vectorPool.removeVector('vector1');
|
|
105
|
+
|
|
106
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
107
|
+
expect(all.size).toBe(0);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
describe('| updateVector', () => {
|
|
112
|
+
it('| should update an existing vector', () => {
|
|
113
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
114
|
+
const newVector: number[] = [4, 5, 6];
|
|
115
|
+
|
|
116
|
+
vectorPool.updateVector('vector1', newVector);
|
|
117
|
+
|
|
118
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
119
|
+
expect(all.get('vector1')).toEqual(newVector);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('| should throw error when updating non-existent vector', () => {
|
|
123
|
+
expect(() => {
|
|
124
|
+
vectorPool.updateVector('non-existent', [1, 2, 3]);
|
|
125
|
+
}).toThrowError('Vector with ID "non-existent" does not exist');
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
describe('| clearPool', () => {
|
|
130
|
+
it('| should clear a populated pool', () => {
|
|
131
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
132
|
+
vectorPool.addVector('vector2', [4, 5, 6]);
|
|
133
|
+
vectorPool.addVector('vector3', [7, 8, 9]);
|
|
134
|
+
|
|
135
|
+
vectorPool.clearPool();
|
|
136
|
+
|
|
137
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
138
|
+
expect(all.size).toBe(0);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('| should not throw when clearing empty pool', () => {
|
|
142
|
+
expect(() => {
|
|
143
|
+
vectorPool.clearPool();
|
|
144
|
+
}).not.toThrow();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
describe('| getAll', () => {
|
|
149
|
+
it('| should return a copy of the pool, not a reference', () => {
|
|
150
|
+
vectorPool.addVector('vector1', [1, 2, 3]);
|
|
151
|
+
const all1: Map<string, number[]> = vectorPool.getAll();
|
|
152
|
+
const all2: Map<string, number[]> = vectorPool.getAll();
|
|
153
|
+
|
|
154
|
+
expect(all1).not.toBe(all2);
|
|
155
|
+
expect(all1.size).toBe(all2.size);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
it('| should return empty map when pool is empty', () => {
|
|
159
|
+
const all: Map<string, number[]> = vectorPool.getAll();
|
|
160
|
+
expect(all.size).toBe(0);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
describe('| cosineSimilarity (static)', () => {
|
|
165
|
+
it('| should return 1 for identical vectors', () => {
|
|
166
|
+
const vector: number[] = [1, 2, 3];
|
|
167
|
+
const similarity: number = LVS_VectorPool_ControlService.cosineSimilarity(vector, vector);
|
|
168
|
+
expect(similarity).toBeCloseTo(1, 10);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it('| should return approximately 0 for orthogonal vectors', () => {
|
|
172
|
+
const vector1: number[] = [1, 0, 0];
|
|
173
|
+
const vector2: number[] = [0, 1, 0];
|
|
174
|
+
const similarity: number =
|
|
175
|
+
LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
176
|
+
expect(similarity).toBeCloseTo(0, 10);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('| should throw error for vectors with different dimensions', () => {
|
|
180
|
+
const vector1: number[] = [1, 2, 3];
|
|
181
|
+
const vector2: number[] = [1, 2];
|
|
182
|
+
|
|
183
|
+
expect(() => {
|
|
184
|
+
LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
185
|
+
}).toThrowError('Vectors must have the same dimension. Got 3 and 2');
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it('| should calculate correct cosine similarity for known vectors', () => {
|
|
189
|
+
// Two vectors pointing in similar direction
|
|
190
|
+
const vector1: number[] = [1, 1, 0];
|
|
191
|
+
const vector2: number[] = [1, 0, 0];
|
|
192
|
+
// Normalized: [1/√2, 1/√2, 0] and [1, 0, 0]
|
|
193
|
+
// Dot product: 1/√2 ≈ 0.707
|
|
194
|
+
const similarity: number =
|
|
195
|
+
LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
196
|
+
expect(similarity).toBeCloseTo(1 / Math.sqrt(2), 10);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
it('| should handle zero vector', () => {
|
|
200
|
+
const vector1: number[] = [0, 0, 0];
|
|
201
|
+
const vector2: number[] = [1, 2, 3];
|
|
202
|
+
const similarity: number =
|
|
203
|
+
LVS_VectorPool_ControlService.cosineSimilarity(vector1, vector2);
|
|
204
|
+
expect(similarity).toBeCloseTo(0, 10);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
describe('| l2Distance (static)', () => {
|
|
209
|
+
it('| should return 0 for identical vectors', () => {
|
|
210
|
+
const vector: number[] = [1, 2, 3];
|
|
211
|
+
const distance: number = LVS_VectorPool_ControlService.l2Distance(vector, vector);
|
|
212
|
+
expect(distance).toBe(0);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
it('| should throw error for vectors with different dimensions', () => {
|
|
216
|
+
const vector1: number[] = [1, 2, 3];
|
|
217
|
+
const vector2: number[] = [1, 2];
|
|
218
|
+
|
|
219
|
+
expect(() => {
|
|
220
|
+
LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
221
|
+
}).toThrowError('Vectors must have the same dimension. Got 3 and 2');
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it('| should calculate correct L2 distance for known vectors', () => {
|
|
225
|
+
const vector1: number[] = [0, 0, 0];
|
|
226
|
+
const vector2: number[] = [3, 4, 0];
|
|
227
|
+
// Distance = √(3² + 4² + 0²) = √25 = 5
|
|
228
|
+
const distance: number = LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
229
|
+
expect(distance).toBe(5);
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
it('| should calculate correct L2 distance for 1D vectors', () => {
|
|
233
|
+
const vector1: number[] = [5];
|
|
234
|
+
const vector2: number[] = [2];
|
|
235
|
+
const distance: number = LVS_VectorPool_ControlService.l2Distance(vector1, vector2);
|
|
236
|
+
expect(distance).toBe(3);
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
describe('| search', () => {
|
|
241
|
+
beforeEach(() => {
|
|
242
|
+
// Add test vectors
|
|
243
|
+
vectorPool.addVector('vec1', [1, 0, 0]);
|
|
244
|
+
vectorPool.addVector('vec2', [0, 1, 0]);
|
|
245
|
+
vectorPool.addVector('vec3', [0, 0, 1]);
|
|
246
|
+
vectorPool.addVector('vec4', [1, 1, 0]);
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
it('| should return empty array for empty pool', () => {
|
|
250
|
+
const emptyPool: LVS_VectorPool_ControlService = new LVS_VectorPool_ControlService();
|
|
251
|
+
const results: LVS_SearchResult[] = emptyPool.search([1, 0, 0], 3, LVS_Search_Mode.cosineSimilarity);
|
|
252
|
+
expect(results.length).toBe(0);
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it('| should return results in descending order for cosine similarity', () => {
|
|
256
|
+
const query: number[] = [1, 0, 0];
|
|
257
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
258
|
+
query,
|
|
259
|
+
4,
|
|
260
|
+
LVS_Search_Mode.cosineSimilarity
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
expect(results.length).toBe(4);
|
|
264
|
+
// vec1 should be most similar (identical)
|
|
265
|
+
expect(results[0].id).toBe('vec1');
|
|
266
|
+
expect(results[0].score).toBeCloseTo(1, 10);
|
|
267
|
+
// Results should be in descending order
|
|
268
|
+
for (let i: number = 0; i < results.length - 1; i++) {
|
|
269
|
+
expect(results[i].score).toBeGreaterThanOrEqual(results[i + 1].score);
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('| should return results in ascending order for L2 distance', () => {
|
|
274
|
+
const query: number[] = [1, 0, 0];
|
|
275
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
276
|
+
query,
|
|
277
|
+
4,
|
|
278
|
+
LVS_Search_Mode.l2Distance
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
expect(results.length).toBe(4);
|
|
282
|
+
// vec1 should be closest (distance = 0)
|
|
283
|
+
expect(results[0].id).toBe('vec1');
|
|
284
|
+
expect(results[0].score).toBe(0);
|
|
285
|
+
// Results should be in ascending order
|
|
286
|
+
for (let i: number = 0; i < results.length - 1; i++) {
|
|
287
|
+
expect(results[i].score).toBeLessThanOrEqual(results[i + 1].score);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('| should limit results to top-K when k < pool size', () => {
|
|
292
|
+
const query: number[] = [1, 0, 0];
|
|
293
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
294
|
+
query,
|
|
295
|
+
2,
|
|
296
|
+
LVS_Search_Mode.cosineSimilarity
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
expect(results.length).toBe(2);
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it('| should return all results when k > pool size', () => {
|
|
303
|
+
const query: number[] = [1, 0, 0];
|
|
304
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
305
|
+
query,
|
|
306
|
+
10,
|
|
307
|
+
LVS_Search_Mode.cosineSimilarity
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
expect(results.length).toBe(4);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it('| should return all results when k = pool size', () => {
|
|
314
|
+
const query: number[] = [1, 0, 0];
|
|
315
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
316
|
+
query,
|
|
317
|
+
4,
|
|
318
|
+
LVS_Search_Mode.cosineSimilarity
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
expect(results.length).toBe(4);
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
it('| should throw error for dimension mismatch', () => {
|
|
325
|
+
const query: number[] = [1, 0]; // 2D query, pool has 3D vectors
|
|
326
|
+
|
|
327
|
+
expect(() => {
|
|
328
|
+
vectorPool.search(query, 3, LVS_Search_Mode.cosineSimilarity);
|
|
329
|
+
}).toThrowError('Query vector dimension (2) does not match pool vector dimension (3)');
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
it('| should throw error for empty query vector', () => {
|
|
333
|
+
expect(() => {
|
|
334
|
+
vectorPool.search([], 3, LVS_Search_Mode.cosineSimilarity);
|
|
335
|
+
}).toThrowError('Query vector must be a non-empty array');
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it('| should throw error for non-array query', () => {
|
|
339
|
+
expect(() => {
|
|
340
|
+
vectorPool.search(null as any, 3, LVS_Search_Mode.cosineSimilarity);
|
|
341
|
+
}).toThrowError('Query vector must be a non-empty array');
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
it('| should throw error for k = 0', () => {
|
|
345
|
+
expect(() => {
|
|
346
|
+
vectorPool.search([1, 0, 0], 0, LVS_Search_Mode.cosineSimilarity);
|
|
347
|
+
}).toThrowError('k must be a positive number');
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
it('| should throw error for negative k', () => {
|
|
351
|
+
expect(() => {
|
|
352
|
+
vectorPool.search([1, 0, 0], -1, LVS_Search_Mode.cosineSimilarity);
|
|
353
|
+
}).toThrowError('k must be a positive number');
|
|
354
|
+
});
|
|
355
|
+
|
|
356
|
+
it('| should throw error for unknown search mode', () => {
|
|
357
|
+
expect(() => {
|
|
358
|
+
vectorPool.search([1, 0, 0], 3, 'unknown-mode' as LVS_Search_Mode);
|
|
359
|
+
}).toThrowError('Unknown search mode: unknown-mode');
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
it('| should return correct scores for cosine similarity', () => {
|
|
363
|
+
const query: number[] = [1, 0, 0];
|
|
364
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
365
|
+
query,
|
|
366
|
+
4,
|
|
367
|
+
LVS_Search_Mode.cosineSimilarity
|
|
368
|
+
);
|
|
369
|
+
|
|
370
|
+
// vec1 should have score = 1 (identical)
|
|
371
|
+
const vec1Result: LVS_SearchResult | undefined =
|
|
372
|
+
results.find((r: LVS_SearchResult) => r.id === 'vec1');
|
|
373
|
+
expect(vec1Result).toBeDefined();
|
|
374
|
+
expect(vec1Result!.score).toBeCloseTo(1, 10);
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
it('| should return correct scores for L2 distance', () => {
|
|
378
|
+
const query: number[] = [1, 0, 0];
|
|
379
|
+
const results: LVS_SearchResult[] = vectorPool.search(
|
|
380
|
+
query,
|
|
381
|
+
4,
|
|
382
|
+
LVS_Search_Mode.l2Distance
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
// vec1 should have score = 0 (identical)
|
|
386
|
+
const vec1Result: LVS_SearchResult | undefined =
|
|
387
|
+
results.find((r: LVS_SearchResult) => r.id === 'vec1');
|
|
388
|
+
expect(vec1Result).toBeDefined();
|
|
389
|
+
expect(vec1Result!.score).toBe(0);
|
|
390
|
+
});
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
|
|
@@ -804,10 +804,8 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
804
804
|
return data;
|
|
805
805
|
}
|
|
806
806
|
|
|
807
|
-
async patchData(data?: T): Promise<T> {
|
|
807
|
+
async patchData(data?: Partial<T>): Promise<T> {
|
|
808
808
|
try {
|
|
809
|
-
data = this.ensureData(data);
|
|
810
|
-
|
|
811
809
|
if (!data._id) {
|
|
812
810
|
throw new DyFM_Error({
|
|
813
811
|
...this._getDefaultErrorSettings(
|
|
@@ -828,6 +826,17 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
|
|
|
828
826
|
});
|
|
829
827
|
}
|
|
830
828
|
|
|
829
|
+
for (const key in this.depSettings) {
|
|
830
|
+
if (data[key] && data[key] !== dataExists[key]) {
|
|
831
|
+
throw new DyFM_Error({
|
|
832
|
+
...this._getDefaultErrorSettings(
|
|
833
|
+
'patchData',
|
|
834
|
+
new Error(`Cannot patch data: dependency data mismatch! (${this.dataParams.dataName})`)
|
|
835
|
+
),
|
|
836
|
+
});
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
|
|
831
840
|
DyFM_Object.cleanAssign(dataExists, data);
|
|
832
841
|
|
|
833
842
|
await this.validateForSave(dataExists);
|