@payloadcms/plugin-import-export 3.77.0-canary.0 → 3.77.0-canary.2
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/dist/export/createExport.d.ts.map +1 -1
- package/dist/export/createExport.js +2 -9
- package/dist/export/createExport.js.map +1 -1
- package/dist/export/handlePreview.d.ts.map +1 -1
- package/dist/export/handlePreview.js +34 -17
- package/dist/export/handlePreview.js.map +1 -1
- package/dist/utilities/filterToSelectedFields.spec.js +204 -0
- package/dist/utilities/filterToSelectedFields.spec.js.map +1 -0
- package/dist/utilities/flattenObject.d.ts +1 -7
- package/dist/utilities/flattenObject.d.ts.map +1 -1
- package/dist/utilities/flattenObject.js +14 -25
- package/dist/utilities/flattenObject.js.map +1 -1
- package/dist/utilities/getSchemaColumns.d.ts +11 -7
- package/dist/utilities/getSchemaColumns.d.ts.map +1 -1
- package/dist/utilities/getSchemaColumns.js +26 -21
- package/dist/utilities/getSchemaColumns.js.map +1 -1
- package/package.json +8 -8
- package/dist/utilities/collectTimezoneCompanionFields.d.ts +0 -24
- package/dist/utilities/collectTimezoneCompanionFields.d.ts.map +0 -1
- package/dist/utilities/collectTimezoneCompanionFields.js +0 -89
- package/dist/utilities/collectTimezoneCompanionFields.js.map +0 -1
- package/dist/utilities/collectTimezoneCompanionFields.spec.js +0 -319
- package/dist/utilities/collectTimezoneCompanionFields.spec.js.map +0 -1
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { collectTimezoneCompanionFields } from './collectTimezoneCompanionFields.js';
|
|
3
|
-
describe('collectTimezoneCompanionFields', ()=>{
|
|
4
|
-
it('should return empty set for fields without date timezone', ()=>{
|
|
5
|
-
const fields = [
|
|
6
|
-
{
|
|
7
|
-
name: 'title',
|
|
8
|
-
type: 'text'
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
name: 'description',
|
|
12
|
-
type: 'textarea'
|
|
13
|
-
}
|
|
14
|
-
];
|
|
15
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
16
|
-
expect(result.size).toBe(0);
|
|
17
|
-
});
|
|
18
|
-
it('should return empty set for date fields without timezone enabled', ()=>{
|
|
19
|
-
const fields = [
|
|
20
|
-
{
|
|
21
|
-
name: 'publishedAt',
|
|
22
|
-
type: 'date'
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: 'createdAt',
|
|
26
|
-
type: 'date'
|
|
27
|
-
}
|
|
28
|
-
];
|
|
29
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
30
|
-
expect(result.size).toBe(0);
|
|
31
|
-
});
|
|
32
|
-
it('should collect timezone companion from the next select field after date with timezone', ()=>{
|
|
33
|
-
// Simulates sanitized fields where Payload inserts the companion right after the date
|
|
34
|
-
const fields = [
|
|
35
|
-
{
|
|
36
|
-
name: 'publishedAt',
|
|
37
|
-
type: 'date',
|
|
38
|
-
timezone: true
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'publishedAt_tz',
|
|
42
|
-
type: 'select',
|
|
43
|
-
options: []
|
|
44
|
-
}
|
|
45
|
-
];
|
|
46
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
47
|
-
expect(result.size).toBe(1);
|
|
48
|
-
expect(result.has('publishedAt_tz')).toBe(true);
|
|
49
|
-
});
|
|
50
|
-
it('should handle overridden timezone field names', ()=>{
|
|
51
|
-
// User overrode the timezone field name via timezone.override
|
|
52
|
-
const fields = [
|
|
53
|
-
{
|
|
54
|
-
name: 'publishedAt',
|
|
55
|
-
type: 'date',
|
|
56
|
-
timezone: true
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: 'pub_timezone',
|
|
60
|
-
type: 'select',
|
|
61
|
-
options: []
|
|
62
|
-
}
|
|
63
|
-
];
|
|
64
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
65
|
-
expect(result.size).toBe(1);
|
|
66
|
-
expect(result.has('pub_timezone')).toBe(true);
|
|
67
|
-
expect(result.has('publishedAt_tz')).toBe(false);
|
|
68
|
-
});
|
|
69
|
-
it('should collect multiple timezone companions', ()=>{
|
|
70
|
-
const fields = [
|
|
71
|
-
{
|
|
72
|
-
name: 'publishedAt',
|
|
73
|
-
type: 'date',
|
|
74
|
-
timezone: true
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
name: 'publishedAt_tz',
|
|
78
|
-
type: 'select',
|
|
79
|
-
options: []
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: 'title',
|
|
83
|
-
type: 'text'
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
name: 'scheduledAt',
|
|
87
|
-
type: 'date',
|
|
88
|
-
timezone: true
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
name: 'scheduledAt_tz',
|
|
92
|
-
type: 'select',
|
|
93
|
-
options: []
|
|
94
|
-
}
|
|
95
|
-
];
|
|
96
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
97
|
-
expect(result.size).toBe(2);
|
|
98
|
-
expect(result.has('publishedAt_tz')).toBe(true);
|
|
99
|
-
expect(result.has('scheduledAt_tz')).toBe(true);
|
|
100
|
-
});
|
|
101
|
-
it('should handle date fields in groups', ()=>{
|
|
102
|
-
const fields = [
|
|
103
|
-
{
|
|
104
|
-
name: 'meta',
|
|
105
|
-
type: 'group',
|
|
106
|
-
fields: [
|
|
107
|
-
{
|
|
108
|
-
name: 'publishedAt',
|
|
109
|
-
type: 'date',
|
|
110
|
-
timezone: true
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: 'publishedAt_tz',
|
|
114
|
-
type: 'select',
|
|
115
|
-
options: []
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
];
|
|
120
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
121
|
-
expect(result.size).toBe(1);
|
|
122
|
-
expect(result.has('meta_publishedAt_tz')).toBe(true);
|
|
123
|
-
});
|
|
124
|
-
it('should handle date fields in arrays', ()=>{
|
|
125
|
-
const fields = [
|
|
126
|
-
{
|
|
127
|
-
name: 'events',
|
|
128
|
-
type: 'array',
|
|
129
|
-
fields: [
|
|
130
|
-
{
|
|
131
|
-
name: 'startTime',
|
|
132
|
-
type: 'date',
|
|
133
|
-
timezone: true
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
name: 'startTime_tz',
|
|
137
|
-
type: 'select',
|
|
138
|
-
options: []
|
|
139
|
-
}
|
|
140
|
-
]
|
|
141
|
-
}
|
|
142
|
-
];
|
|
143
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
144
|
-
expect(result.size).toBe(1);
|
|
145
|
-
expect(result.has('events_startTime_tz')).toBe(true);
|
|
146
|
-
});
|
|
147
|
-
it('should handle date fields in blocks', ()=>{
|
|
148
|
-
const fields = [
|
|
149
|
-
{
|
|
150
|
-
name: 'layout',
|
|
151
|
-
type: 'blocks',
|
|
152
|
-
blocks: [
|
|
153
|
-
{
|
|
154
|
-
slug: 'event',
|
|
155
|
-
fields: [
|
|
156
|
-
{
|
|
157
|
-
name: 'eventDate',
|
|
158
|
-
type: 'date',
|
|
159
|
-
timezone: true
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: 'eventDate_tz',
|
|
163
|
-
type: 'select',
|
|
164
|
-
options: []
|
|
165
|
-
}
|
|
166
|
-
]
|
|
167
|
-
}
|
|
168
|
-
]
|
|
169
|
-
}
|
|
170
|
-
];
|
|
171
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
172
|
-
expect(result.size).toBe(1);
|
|
173
|
-
expect(result.has('layout_event_eventDate_tz')).toBe(true);
|
|
174
|
-
});
|
|
175
|
-
it('should handle deeply nested date fields', ()=>{
|
|
176
|
-
const fields = [
|
|
177
|
-
{
|
|
178
|
-
name: 'content',
|
|
179
|
-
type: 'group',
|
|
180
|
-
fields: [
|
|
181
|
-
{
|
|
182
|
-
name: 'schedule',
|
|
183
|
-
type: 'array',
|
|
184
|
-
fields: [
|
|
185
|
-
{
|
|
186
|
-
name: 'time',
|
|
187
|
-
type: 'date',
|
|
188
|
-
timezone: true
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
name: 'time_tz',
|
|
192
|
-
type: 'select',
|
|
193
|
-
options: []
|
|
194
|
-
}
|
|
195
|
-
]
|
|
196
|
-
}
|
|
197
|
-
]
|
|
198
|
-
}
|
|
199
|
-
];
|
|
200
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
201
|
-
expect(result.size).toBe(1);
|
|
202
|
-
expect(result.has('content_schedule_time_tz')).toBe(true);
|
|
203
|
-
});
|
|
204
|
-
it('should handle tabs', ()=>{
|
|
205
|
-
const fields = [
|
|
206
|
-
{
|
|
207
|
-
type: 'tabs',
|
|
208
|
-
tabs: [
|
|
209
|
-
{
|
|
210
|
-
name: 'scheduling',
|
|
211
|
-
fields: [
|
|
212
|
-
{
|
|
213
|
-
name: 'publishAt',
|
|
214
|
-
type: 'date',
|
|
215
|
-
timezone: true
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
name: 'publishAt_tz',
|
|
219
|
-
type: 'select',
|
|
220
|
-
options: []
|
|
221
|
-
}
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
]
|
|
225
|
-
}
|
|
226
|
-
];
|
|
227
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
228
|
-
expect(result.size).toBe(1);
|
|
229
|
-
expect(result.has('scheduling_publishAt_tz')).toBe(true);
|
|
230
|
-
});
|
|
231
|
-
it('should handle unnamed tabs (no prefix added)', ()=>{
|
|
232
|
-
const fields = [
|
|
233
|
-
{
|
|
234
|
-
type: 'tabs',
|
|
235
|
-
tabs: [
|
|
236
|
-
{
|
|
237
|
-
fields: [
|
|
238
|
-
{
|
|
239
|
-
name: 'publishAt',
|
|
240
|
-
type: 'date',
|
|
241
|
-
timezone: true
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
name: 'publishAt_tz',
|
|
245
|
-
type: 'select',
|
|
246
|
-
options: []
|
|
247
|
-
}
|
|
248
|
-
]
|
|
249
|
-
}
|
|
250
|
-
]
|
|
251
|
-
}
|
|
252
|
-
];
|
|
253
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
254
|
-
expect(result.size).toBe(1);
|
|
255
|
-
expect(result.has('publishAt_tz')).toBe(true);
|
|
256
|
-
});
|
|
257
|
-
it('should not include user-defined fields ending with _tz', ()=>{
|
|
258
|
-
const fields = [
|
|
259
|
-
{
|
|
260
|
-
name: 'my_tz',
|
|
261
|
-
type: 'text'
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
name: 'timezone_tz',
|
|
265
|
-
type: 'select',
|
|
266
|
-
options: []
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
name: 'publishedAt',
|
|
270
|
-
type: 'date',
|
|
271
|
-
timezone: true
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
name: 'publishedAt_tz',
|
|
275
|
-
type: 'select',
|
|
276
|
-
options: []
|
|
277
|
-
}
|
|
278
|
-
];
|
|
279
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
280
|
-
// Only the auto-generated timezone companion should be included
|
|
281
|
-
expect(result.size).toBe(1);
|
|
282
|
-
expect(result.has('publishedAt_tz')).toBe(true);
|
|
283
|
-
expect(result.has('my_tz')).toBe(false);
|
|
284
|
-
expect(result.has('timezone_tz')).toBe(false);
|
|
285
|
-
});
|
|
286
|
-
it('should not collect companion if next field is not a select', ()=>{
|
|
287
|
-
// Edge case: date with timezone but next field is not a select
|
|
288
|
-
const fields = [
|
|
289
|
-
{
|
|
290
|
-
name: 'publishedAt',
|
|
291
|
-
type: 'date',
|
|
292
|
-
timezone: true
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
name: 'title',
|
|
296
|
-
type: 'text'
|
|
297
|
-
}
|
|
298
|
-
];
|
|
299
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
300
|
-
expect(result.size).toBe(0);
|
|
301
|
-
});
|
|
302
|
-
it('should not collect companion if date is last field', ()=>{
|
|
303
|
-
const fields = [
|
|
304
|
-
{
|
|
305
|
-
name: 'title',
|
|
306
|
-
type: 'text'
|
|
307
|
-
},
|
|
308
|
-
{
|
|
309
|
-
name: 'publishedAt',
|
|
310
|
-
type: 'date',
|
|
311
|
-
timezone: true
|
|
312
|
-
}
|
|
313
|
-
];
|
|
314
|
-
const result = collectTimezoneCompanionFields(fields);
|
|
315
|
-
expect(result.size).toBe(0);
|
|
316
|
-
});
|
|
317
|
-
});
|
|
318
|
-
|
|
319
|
-
//# sourceMappingURL=collectTimezoneCompanionFields.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/collectTimezoneCompanionFields.spec.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { collectTimezoneCompanionFields } from './collectTimezoneCompanionFields.js'\n\ndescribe('collectTimezoneCompanionFields', () => {\n it('should return empty set for fields without date timezone', () => {\n const fields: FlattenedField[] = [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'textarea' },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(0)\n })\n\n it('should return empty set for date fields without timezone enabled', () => {\n const fields: FlattenedField[] = [\n { name: 'publishedAt', type: 'date' },\n { name: 'createdAt', type: 'date' },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(0)\n })\n\n it('should collect timezone companion from the next select field after date with timezone', () => {\n // Simulates sanitized fields where Payload inserts the companion right after the date\n const fields: FlattenedField[] = [\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'publishedAt_tz', type: 'select', options: [] }, // auto-generated companion\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('publishedAt_tz')).toBe(true)\n })\n\n it('should handle overridden timezone field names', () => {\n // User overrode the timezone field name via timezone.override\n const fields: FlattenedField[] = [\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'pub_timezone', type: 'select', options: [] }, // overridden name\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('pub_timezone')).toBe(true)\n expect(result.has('publishedAt_tz')).toBe(false)\n })\n\n it('should collect multiple timezone companions', () => {\n const fields: FlattenedField[] = [\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'publishedAt_tz', type: 'select', options: [] },\n { name: 'title', type: 'text' },\n { name: 'scheduledAt', type: 'date', timezone: true },\n { name: 'scheduledAt_tz', type: 'select', options: [] },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(2)\n expect(result.has('publishedAt_tz')).toBe(true)\n expect(result.has('scheduledAt_tz')).toBe(true)\n })\n\n it('should handle date fields in groups', () => {\n const fields: FlattenedField[] = [\n {\n name: 'meta',\n type: 'group',\n fields: [\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'publishedAt_tz', type: 'select', options: [] },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('meta_publishedAt_tz')).toBe(true)\n })\n\n it('should handle date fields in arrays', () => {\n const fields: FlattenedField[] = [\n {\n name: 'events',\n type: 'array',\n fields: [\n { name: 'startTime', type: 'date', timezone: true },\n { name: 'startTime_tz', type: 'select', options: [] },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('events_startTime_tz')).toBe(true)\n })\n\n it('should handle date fields in blocks', () => {\n const fields: FlattenedField[] = [\n {\n name: 'layout',\n type: 'blocks',\n blocks: [\n {\n slug: 'event',\n fields: [\n { name: 'eventDate', type: 'date', timezone: true },\n { name: 'eventDate_tz', type: 'select', options: [] },\n ],\n },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('layout_event_eventDate_tz')).toBe(true)\n })\n\n it('should handle deeply nested date fields', () => {\n const fields: FlattenedField[] = [\n {\n name: 'content',\n type: 'group',\n fields: [\n {\n name: 'schedule',\n type: 'array',\n fields: [\n { name: 'time', type: 'date', timezone: true },\n { name: 'time_tz', type: 'select', options: [] },\n ],\n },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('content_schedule_time_tz')).toBe(true)\n })\n\n it('should handle tabs', () => {\n const fields: FlattenedField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n name: 'scheduling',\n fields: [\n { name: 'publishAt', type: 'date', timezone: true },\n { name: 'publishAt_tz', type: 'select', options: [] },\n ],\n },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('scheduling_publishAt_tz')).toBe(true)\n })\n\n it('should handle unnamed tabs (no prefix added)', () => {\n const fields: FlattenedField[] = [\n {\n type: 'tabs',\n tabs: [\n {\n fields: [\n { name: 'publishAt', type: 'date', timezone: true },\n { name: 'publishAt_tz', type: 'select', options: [] },\n ],\n },\n ],\n },\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(1)\n expect(result.has('publishAt_tz')).toBe(true)\n })\n\n it('should not include user-defined fields ending with _tz', () => {\n const fields: FlattenedField[] = [\n { name: 'my_tz', type: 'text' },\n { name: 'timezone_tz', type: 'select', options: [] },\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'publishedAt_tz', type: 'select', options: [] }, // actual companion\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n // Only the auto-generated timezone companion should be included\n expect(result.size).toBe(1)\n expect(result.has('publishedAt_tz')).toBe(true)\n expect(result.has('my_tz')).toBe(false)\n expect(result.has('timezone_tz')).toBe(false)\n })\n\n it('should not collect companion if next field is not a select', () => {\n // Edge case: date with timezone but next field is not a select\n const fields: FlattenedField[] = [\n { name: 'publishedAt', type: 'date', timezone: true },\n { name: 'title', type: 'text' }, // not a select, so not a companion\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(0)\n })\n\n it('should not collect companion if date is last field', () => {\n const fields: FlattenedField[] = [\n { name: 'title', type: 'text' },\n { name: 'publishedAt', type: 'date', timezone: true },\n // no next field\n ]\n\n const result = collectTimezoneCompanionFields(fields)\n\n expect(result.size).toBe(0)\n })\n})\n"],"names":["describe","expect","it","collectTimezoneCompanionFields","fields","name","type","result","size","toBe","timezone","options","has","blocks","slug","tabs"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,8BAA8B,QAAQ,sCAAqC;AAEpFH,SAAS,kCAAkC;IACzCE,GAAG,4DAA4D;QAC7D,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAASC,MAAM;YAAO;YAC9B;gBAAED,MAAM;gBAAeC,MAAM;YAAW;SACzC;QAED,MAAMC,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;IAC3B;IAEAP,GAAG,oEAAoE;QACrE,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAAeC,MAAM;YAAO;YACpC;gBAAED,MAAM;gBAAaC,MAAM;YAAO;SACnC;QAED,MAAMC,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;IAC3B;IAEAP,GAAG,yFAAyF;QAC1F,sFAAsF;QACtF,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAAkBC,MAAM;gBAAUK,SAAS,EAAE;YAAC;SACvD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,mBAAmBH,IAAI,CAAC;IAC5C;IAEAP,GAAG,iDAAiD;QAClD,8DAA8D;QAC9D,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAAgBC,MAAM;gBAAUK,SAAS,EAAE;YAAC;SACrD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,iBAAiBH,IAAI,CAAC;QACxCR,OAAOM,OAAOK,GAAG,CAAC,mBAAmBH,IAAI,CAAC;IAC5C;IAEAP,GAAG,+CAA+C;QAChD,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAAkBC,MAAM;gBAAUK,SAAS,EAAE;YAAC;YACtD;gBAAEN,MAAM;gBAASC,MAAM;YAAO;YAC9B;gBAAED,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAAkBC,MAAM;gBAAUK,SAAS,EAAE;YAAC;SACvD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,mBAAmBH,IAAI,CAAC;QAC1CR,OAAOM,OAAOK,GAAG,CAAC,mBAAmBH,IAAI,CAAC;IAC5C;IAEAP,GAAG,uCAAuC;QACxC,MAAME,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBAAEC,MAAM;wBAAeC,MAAM;wBAAQI,UAAU;oBAAK;oBACpD;wBAAEL,MAAM;wBAAkBC,MAAM;wBAAUK,SAAS,EAAE;oBAAC;iBACvD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,wBAAwBH,IAAI,CAAC;IACjD;IAEAP,GAAG,uCAAuC;QACxC,MAAME,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBAAEC,MAAM;wBAAaC,MAAM;wBAAQI,UAAU;oBAAK;oBAClD;wBAAEL,MAAM;wBAAgBC,MAAM;wBAAUK,SAAS,EAAE;oBAAC;iBACrD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,wBAAwBH,IAAI,CAAC;IACjD;IAEAP,GAAG,uCAAuC;QACxC,MAAME,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNO,QAAQ;oBACN;wBACEC,MAAM;wBACNV,QAAQ;4BACN;gCAAEC,MAAM;gCAAaC,MAAM;gCAAQI,UAAU;4BAAK;4BAClD;gCAAEL,MAAM;gCAAgBC,MAAM;gCAAUK,SAAS,EAAE;4BAAC;yBACrD;oBACH;iBACD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,8BAA8BH,IAAI,CAAC;IACvD;IAEAP,GAAG,2CAA2C;QAC5C,MAAME,SAA2B;YAC/B;gBACEC,MAAM;gBACNC,MAAM;gBACNF,QAAQ;oBACN;wBACEC,MAAM;wBACNC,MAAM;wBACNF,QAAQ;4BACN;gCAAEC,MAAM;gCAAQC,MAAM;gCAAQI,UAAU;4BAAK;4BAC7C;gCAAEL,MAAM;gCAAWC,MAAM;gCAAUK,SAAS,EAAE;4BAAC;yBAChD;oBACH;iBACD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,6BAA6BH,IAAI,CAAC;IACtD;IAEAP,GAAG,sBAAsB;QACvB,MAAME,SAA2B;YAC/B;gBACEE,MAAM;gBACNS,MAAM;oBACJ;wBACEV,MAAM;wBACND,QAAQ;4BACN;gCAAEC,MAAM;gCAAaC,MAAM;gCAAQI,UAAU;4BAAK;4BAClD;gCAAEL,MAAM;gCAAgBC,MAAM;gCAAUK,SAAS,EAAE;4BAAC;yBACrD;oBACH;iBACD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,4BAA4BH,IAAI,CAAC;IACrD;IAEAP,GAAG,gDAAgD;QACjD,MAAME,SAA2B;YAC/B;gBACEE,MAAM;gBACNS,MAAM;oBACJ;wBACEX,QAAQ;4BACN;gCAAEC,MAAM;gCAAaC,MAAM;gCAAQI,UAAU;4BAAK;4BAClD;gCAAEL,MAAM;gCAAgBC,MAAM;gCAAUK,SAAS,EAAE;4BAAC;yBACrD;oBACH;iBACD;YACH;SACD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,iBAAiBH,IAAI,CAAC;IAC1C;IAEAP,GAAG,0DAA0D;QAC3D,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAASC,MAAM;YAAO;YAC9B;gBAAED,MAAM;gBAAeC,MAAM;gBAAUK,SAAS,EAAE;YAAC;YACnD;gBAAEN,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAAkBC,MAAM;gBAAUK,SAAS,EAAE;YAAC;SACvD;QAED,MAAMJ,SAASJ,+BAA+BC;QAE9C,gEAAgE;QAChEH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;QACzBR,OAAOM,OAAOK,GAAG,CAAC,mBAAmBH,IAAI,CAAC;QAC1CR,OAAOM,OAAOK,GAAG,CAAC,UAAUH,IAAI,CAAC;QACjCR,OAAOM,OAAOK,GAAG,CAAC,gBAAgBH,IAAI,CAAC;IACzC;IAEAP,GAAG,8DAA8D;QAC/D,+DAA+D;QAC/D,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;YACpD;gBAAEL,MAAM;gBAASC,MAAM;YAAO;SAC/B;QAED,MAAMC,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;IAC3B;IAEAP,GAAG,sDAAsD;QACvD,MAAME,SAA2B;YAC/B;gBAAEC,MAAM;gBAASC,MAAM;YAAO;YAC9B;gBAAED,MAAM;gBAAeC,MAAM;gBAAQI,UAAU;YAAK;SAErD;QAED,MAAMH,SAASJ,+BAA+BC;QAE9CH,OAAOM,OAAOC,IAAI,EAAEC,IAAI,CAAC;IAC3B;AACF"}
|