@sveltejs/kit 2.48.5 → 2.48.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/exports/public.d.ts +26 -9
- package/src/exports/vite/index.js +3 -0
- package/src/runtime/app/server/remote/query.js +69 -49
- package/src/runtime/app/server/remote/shared.js +3 -4
- package/src/runtime/client/client.js +2 -1
- package/src/runtime/client/remote-functions/form.svelte.js +3 -0
- package/src/runtime/client/remote-functions/shared.svelte.js +2 -2
- package/src/runtime/client/utils.js +1 -10
- package/src/runtime/server/page/render.js +2 -2
- package/src/runtime/server/respond.js +6 -1
- package/src/runtime/shared.js +1 -1
- package/src/version.js +1 -1
- package/types/index.d.ts +26 -9
- package/types/index.d.ts.map +2 -1
package/package.json
CHANGED
package/src/exports/public.d.ts
CHANGED
|
@@ -25,10 +25,12 @@ import {
|
|
|
25
25
|
LayoutParams as AppLayoutParams,
|
|
26
26
|
ResolvedPathname
|
|
27
27
|
} from '$app/types';
|
|
28
|
-
import { Span } from '@opentelemetry/api';
|
|
29
28
|
|
|
30
29
|
export { PrerenderOption } from '../types/private.js';
|
|
31
30
|
|
|
31
|
+
// @ts-ignore this is an optional peer dependency so could be missing. Written like this so dts-buddy preserves the ts-ignore
|
|
32
|
+
type Span = import('@opentelemetry/api').Span;
|
|
33
|
+
|
|
32
34
|
/**
|
|
33
35
|
* [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing.
|
|
34
36
|
*/
|
|
@@ -1865,13 +1867,28 @@ type InputElementProps<T extends keyof InputTypeMap> = T extends 'checkbox' | 'r
|
|
|
1865
1867
|
get files(): FileList | null;
|
|
1866
1868
|
set files(v: FileList | null);
|
|
1867
1869
|
}
|
|
1868
|
-
:
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1870
|
+
: T extends 'select' | 'select multiple'
|
|
1871
|
+
? {
|
|
1872
|
+
name: string;
|
|
1873
|
+
multiple: T extends 'select' ? false : true;
|
|
1874
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1875
|
+
get value(): string | number;
|
|
1876
|
+
set value(v: string | number);
|
|
1877
|
+
}
|
|
1878
|
+
: T extends 'text'
|
|
1879
|
+
? {
|
|
1880
|
+
name: string;
|
|
1881
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1882
|
+
get value(): string | number;
|
|
1883
|
+
set value(v: string | number);
|
|
1884
|
+
}
|
|
1885
|
+
: {
|
|
1886
|
+
name: string;
|
|
1887
|
+
type: T;
|
|
1888
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1889
|
+
get value(): string | number;
|
|
1890
|
+
set value(v: string | number);
|
|
1891
|
+
};
|
|
1875
1892
|
|
|
1876
1893
|
type RemoteFormFieldMethods<T> = {
|
|
1877
1894
|
/** The values that will be submitted */
|
|
@@ -2058,7 +2075,7 @@ export type RemoteForm<Input extends RemoteFormInput | void, Output> = {
|
|
|
2058
2075
|
/** The number of pending submissions */
|
|
2059
2076
|
get pending(): number;
|
|
2060
2077
|
/** Access form fields using object notation */
|
|
2061
|
-
fields:
|
|
2078
|
+
fields: RemoteFormFields<Input>;
|
|
2062
2079
|
/** Spread this onto a `<button>` or `<input type="submit">` */
|
|
2063
2080
|
buttonProps: {
|
|
2064
2081
|
type: 'submit';
|
|
@@ -598,6 +598,9 @@ async function kit({ svelte_config }) {
|
|
|
598
598
|
if (node.universal) entrypoints.add(node.universal);
|
|
599
599
|
}
|
|
600
600
|
|
|
601
|
+
if (manifest_data.hooks.client) entrypoints.add(manifest_data.hooks.client);
|
|
602
|
+
if (manifest_data.hooks.universal) entrypoints.add(manifest_data.hooks.universal);
|
|
603
|
+
|
|
601
604
|
const normalized = normalize_id(id, normalized_lib, normalized_cwd);
|
|
602
605
|
const chain = [normalized];
|
|
603
606
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/** @import { RemoteInfo, MaybePromise } from 'types' */
|
|
3
3
|
/** @import { StandardSchemaV1 } from '@standard-schema/spec' */
|
|
4
4
|
import { get_request_store } from '@sveltejs/kit/internal/server';
|
|
5
|
-
import {
|
|
5
|
+
import { create_remote_key, stringify_remote_arg } from '../../../shared.js';
|
|
6
6
|
import { prerendering } from '__sveltekit/environment';
|
|
7
7
|
import { create_validator, get_cache, get_response, run_remote_function } from './shared.js';
|
|
8
8
|
|
|
@@ -72,46 +72,21 @@ export function query(validate_or_fn, maybe_fn) {
|
|
|
72
72
|
|
|
73
73
|
const { event, state } = get_request_store();
|
|
74
74
|
|
|
75
|
+
const get_remote_function_result = () =>
|
|
76
|
+
run_remote_function(event, state, false, arg, validate, fn);
|
|
77
|
+
|
|
75
78
|
/** @type {Promise<any> & Partial<RemoteQuery<any>>} */
|
|
76
|
-
const promise = get_response(__, arg, state,
|
|
77
|
-
run_remote_function(event, state, false, arg, validate, fn)
|
|
78
|
-
);
|
|
79
|
+
const promise = get_response(__, arg, state, get_remote_function_result);
|
|
79
80
|
|
|
80
81
|
promise.catch(() => {});
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
promise.set = (value) => {
|
|
84
|
-
const { state } = get_request_store();
|
|
85
|
-
const refreshes = state.refreshes;
|
|
86
|
-
|
|
87
|
-
if (!refreshes) {
|
|
88
|
-
throw new Error(
|
|
89
|
-
`Cannot call set on query '${__.name}' because it is not executed in the context of a command/form remote function`
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (__.id) {
|
|
94
|
-
const cache = get_cache(__, state);
|
|
95
|
-
const key = stringify_remote_arg(arg, state.transport);
|
|
96
|
-
refreshes[create_remote_cache_key(__.id, key)] = cache[key] = Promise.resolve(value);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
83
|
+
promise.set = (value) => update_refresh_value(get_refresh_context(__, 'set', arg), value);
|
|
99
84
|
|
|
100
85
|
promise.refresh = () => {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
throw new Error(
|
|
106
|
-
`Cannot call refresh on query '${__.name}' because it is not executed in the context of a command/form remote function`
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const cache_key = create_remote_cache_key(__.id, stringify_remote_arg(arg, state.transport));
|
|
111
|
-
refreshes[cache_key] = promise;
|
|
112
|
-
|
|
113
|
-
// TODO we could probably just return promise here, but would need to update the types
|
|
114
|
-
return promise.then(() => {});
|
|
86
|
+
const refresh_context = get_refresh_context(__, 'refresh', arg);
|
|
87
|
+
const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
|
|
88
|
+
const value = is_immediate_refresh ? promise : get_remote_function_result();
|
|
89
|
+
return update_refresh_value(refresh_context, value, is_immediate_refresh);
|
|
115
90
|
};
|
|
116
91
|
|
|
117
92
|
promise.withOverride = () => {
|
|
@@ -200,8 +175,7 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
200
175
|
|
|
201
176
|
const { event, state } = get_request_store();
|
|
202
177
|
|
|
203
|
-
|
|
204
|
-
const promise = get_response(__, arg, state, () => {
|
|
178
|
+
const get_remote_function_result = () => {
|
|
205
179
|
// Collect all the calls to the same query in the same macrotask,
|
|
206
180
|
// then execute them as one backend request.
|
|
207
181
|
return new Promise((resolve, reject) => {
|
|
@@ -239,22 +213,20 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
239
213
|
}
|
|
240
214
|
}, 0);
|
|
241
215
|
});
|
|
242
|
-
}
|
|
216
|
+
};
|
|
243
217
|
|
|
244
|
-
|
|
218
|
+
/** @type {Promise<any> & Partial<RemoteQuery<any>>} */
|
|
219
|
+
const promise = get_response(__, arg, state, get_remote_function_result);
|
|
245
220
|
|
|
246
|
-
promise.
|
|
247
|
-
const { state } = get_request_store();
|
|
248
|
-
const refreshes = state.refreshes;
|
|
221
|
+
promise.catch(() => {});
|
|
249
222
|
|
|
250
|
-
|
|
251
|
-
throw new Error(
|
|
252
|
-
`Cannot call refresh on query.batch '${__.name}' because it is not executed in the context of a command/form remote function`
|
|
253
|
-
);
|
|
254
|
-
}
|
|
223
|
+
promise.set = (value) => update_refresh_value(get_refresh_context(__, 'set', arg), value);
|
|
255
224
|
|
|
256
|
-
|
|
257
|
-
|
|
225
|
+
promise.refresh = () => {
|
|
226
|
+
const refresh_context = get_refresh_context(__, 'refresh', arg);
|
|
227
|
+
const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
|
|
228
|
+
const value = is_immediate_refresh ? promise : get_remote_function_result();
|
|
229
|
+
return update_refresh_value(refresh_context, value, is_immediate_refresh);
|
|
258
230
|
};
|
|
259
231
|
|
|
260
232
|
promise.withOverride = () => {
|
|
@@ -271,3 +243,51 @@ function batch(validate_or_fn, maybe_fn) {
|
|
|
271
243
|
|
|
272
244
|
// Add batch as a property to the query function
|
|
273
245
|
Object.defineProperty(query, 'batch', { value: batch, enumerable: true });
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @param {RemoteInfo} __
|
|
249
|
+
* @param {'set' | 'refresh'} action
|
|
250
|
+
* @param {any} [arg]
|
|
251
|
+
* @returns {{ __: RemoteInfo; state: any; refreshes: Record<string, Promise<any>>; cache: Record<string, Promise<any>>; refreshes_key: string; cache_key: string }}
|
|
252
|
+
*/
|
|
253
|
+
function get_refresh_context(__, action, arg) {
|
|
254
|
+
const { state } = get_request_store();
|
|
255
|
+
const { refreshes } = state;
|
|
256
|
+
|
|
257
|
+
if (!refreshes) {
|
|
258
|
+
const name = __.type === 'query_batch' ? `query.batch '${__.name}'` : `query '${__.name}'`;
|
|
259
|
+
throw new Error(
|
|
260
|
+
`Cannot call ${action} on ${name} because it is not executed in the context of a command/form remote function`
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
const cache = get_cache(__, state);
|
|
265
|
+
const cache_key = stringify_remote_arg(arg, state.transport);
|
|
266
|
+
const refreshes_key = create_remote_key(__.id, cache_key);
|
|
267
|
+
|
|
268
|
+
return { __, state, refreshes, refreshes_key, cache, cache_key };
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @param {{ __: RemoteInfo; refreshes: Record<string, Promise<any>>; cache: Record<string, Promise<any>>; refreshes_key: string; cache_key: string }} context
|
|
273
|
+
* @param {any} value
|
|
274
|
+
* @param {boolean} [is_immediate_refresh=false]
|
|
275
|
+
* @returns {Promise<void>}
|
|
276
|
+
*/
|
|
277
|
+
function update_refresh_value(
|
|
278
|
+
{ __, refreshes, refreshes_key, cache, cache_key },
|
|
279
|
+
value,
|
|
280
|
+
is_immediate_refresh = false
|
|
281
|
+
) {
|
|
282
|
+
const promise = Promise.resolve(value);
|
|
283
|
+
|
|
284
|
+
if (!is_immediate_refresh) {
|
|
285
|
+
cache[cache_key] = promise;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (__.id) {
|
|
289
|
+
refreshes[refreshes_key] = promise;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
return promise.then(() => {});
|
|
293
|
+
}
|
|
@@ -30,9 +30,8 @@ export function create_validator(validate_or_fn, maybe_fn) {
|
|
|
30
30
|
return async (arg) => {
|
|
31
31
|
// Get event before async validation to ensure it's available in server environments without AsyncLocalStorage, too
|
|
32
32
|
const { event, state } = get_request_store();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const result = await validate(arg);
|
|
33
|
+
// access property and call method in one go to preserve potential this context
|
|
34
|
+
const result = await validate_or_fn['~standard'].validate(arg);
|
|
36
35
|
|
|
37
36
|
// if the `issues` field exists, the validation failed
|
|
38
37
|
if (result.issues) {
|
|
@@ -69,7 +68,7 @@ export function create_validator(validate_or_fn, maybe_fn) {
|
|
|
69
68
|
* @returns {Promise<T>}
|
|
70
69
|
*/
|
|
71
70
|
export async function get_response(info, arg, state, get_result) {
|
|
72
|
-
// wait a beat, in case `myQuery().set(...)` is immediately called
|
|
71
|
+
// wait a beat, in case `myQuery().set(...)` or `myQuery().refresh()` is immediately called
|
|
73
72
|
// eslint-disable-next-line @typescript-eslint/await-thenable
|
|
74
73
|
await 0;
|
|
75
74
|
|
|
@@ -1690,8 +1690,9 @@ async function navigate({
|
|
|
1690
1690
|
}
|
|
1691
1691
|
}
|
|
1692
1692
|
|
|
1693
|
+
// also compare ids to avoid using wrong fork (e.g. a new one could've been added while navigating)
|
|
1694
|
+
const load_cache_fork = intent && load_cache?.id === intent.id ? load_cache.fork : null;
|
|
1693
1695
|
// reset preload synchronously after the history state has been set to avoid race conditions
|
|
1694
|
-
const load_cache_fork = load_cache?.fork;
|
|
1695
1696
|
load_cache = null;
|
|
1696
1697
|
|
|
1697
1698
|
navigation_result.props.page.state = state;
|
|
@@ -203,6 +203,9 @@ export function form(id) {
|
|
|
203
203
|
|
|
204
204
|
const form_result = /** @type { RemoteFunctionResponse} */ (await response.json());
|
|
205
205
|
|
|
206
|
+
// reset issues in case it's a redirect or error (but issues passed in that case)
|
|
207
|
+
raw_issues = [];
|
|
208
|
+
|
|
206
209
|
if (form_result.type === 'result') {
|
|
207
210
|
({ issues: raw_issues = [], result } = devalue.parse(form_result.result, app.decoders));
|
|
208
211
|
|
|
@@ -5,7 +5,7 @@ import * as devalue from 'devalue';
|
|
|
5
5
|
import { app, goto, query_map, remote_responses } from '../client.js';
|
|
6
6
|
import { HttpError, Redirect } from '@sveltejs/kit/internal';
|
|
7
7
|
import { tick } from 'svelte';
|
|
8
|
-
import {
|
|
8
|
+
import { create_remote_key, stringify_remote_arg } from '../../shared.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
*
|
|
@@ -48,7 +48,7 @@ export async function remote_request(url) {
|
|
|
48
48
|
export function create_remote_function(id, create) {
|
|
49
49
|
return (/** @type {any} */ arg) => {
|
|
50
50
|
const payload = stringify_remote_arg(arg, app.hooks.transport);
|
|
51
|
-
const cache_key =
|
|
51
|
+
const cache_key = create_remote_key(id, payload);
|
|
52
52
|
let entry = query_map.get(cache_key);
|
|
53
53
|
|
|
54
54
|
let tracking = true;
|
|
@@ -317,16 +317,7 @@ export function is_external_url(url, base, hash_routing) {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
if (hash_routing) {
|
|
320
|
-
|
|
321
|
-
return false;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// be lenient if serving from filesystem
|
|
325
|
-
if (url.protocol === 'file:' && url.pathname.replace(/\/[^/]+\.html?$/, '') === base) {
|
|
326
|
-
return false;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
return true;
|
|
320
|
+
return url.pathname !== location.pathname;
|
|
330
321
|
}
|
|
331
322
|
|
|
332
323
|
return false;
|
|
@@ -16,7 +16,7 @@ import { add_resolution_suffix } from '../../pathname.js';
|
|
|
16
16
|
import { try_get_request_store, with_request_store } from '@sveltejs/kit/internal/server';
|
|
17
17
|
import { text_encoder } from '../../utils.js';
|
|
18
18
|
import { get_global_name } from '../utils.js';
|
|
19
|
-
import {
|
|
19
|
+
import { create_remote_key } from '../../shared.js';
|
|
20
20
|
|
|
21
21
|
// TODO rename this function/module
|
|
22
22
|
|
|
@@ -493,7 +493,7 @@ export async function render_response({
|
|
|
493
493
|
if (!info.id) continue;
|
|
494
494
|
|
|
495
495
|
for (const key in cache) {
|
|
496
|
-
remote[
|
|
496
|
+
remote[create_remote_key(info.id, key)] = await cache[key];
|
|
497
497
|
}
|
|
498
498
|
}
|
|
499
499
|
|
|
@@ -183,7 +183,12 @@ export async function internal_respond(request, options, manifest, state) {
|
|
|
183
183
|
'Use `event.cookies.set(name, value, options)` instead of `event.setHeaders` to set cookies'
|
|
184
184
|
);
|
|
185
185
|
} else if (lower in headers) {
|
|
186
|
-
|
|
186
|
+
// appendHeaders-style for Server-Timing https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Server-Timing
|
|
187
|
+
if (lower === 'server-timing') {
|
|
188
|
+
headers[lower] += ', ' + value;
|
|
189
|
+
} else {
|
|
190
|
+
throw new Error(`"${key}" header is already set`);
|
|
191
|
+
}
|
|
187
192
|
} else {
|
|
188
193
|
headers[lower] = value;
|
|
189
194
|
|
package/src/runtime/shared.js
CHANGED
package/src/version.js
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ declare module '@sveltejs/kit' {
|
|
|
5
5
|
import type { SvelteConfig } from '@sveltejs/vite-plugin-svelte';
|
|
6
6
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
7
7
|
import type { RouteId as AppRouteId, LayoutParams as AppLayoutParams, ResolvedPathname } from '$app/types';
|
|
8
|
-
|
|
8
|
+
// @ts-ignore this is an optional peer dependency so could be missing. Written like this so dts-buddy preserves the ts-ignore
|
|
9
|
+
type Span = import('@opentelemetry/api').Span;
|
|
10
|
+
|
|
9
11
|
/**
|
|
10
12
|
* [Adapters](https://svelte.dev/docs/kit/adapters) are responsible for taking the production build and turning it into something that can be deployed to a platform of your choosing.
|
|
11
13
|
*/
|
|
@@ -1841,13 +1843,28 @@ declare module '@sveltejs/kit' {
|
|
|
1841
1843
|
get files(): FileList | null;
|
|
1842
1844
|
set files(v: FileList | null);
|
|
1843
1845
|
}
|
|
1844
|
-
:
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1846
|
+
: T extends 'select' | 'select multiple'
|
|
1847
|
+
? {
|
|
1848
|
+
name: string;
|
|
1849
|
+
multiple: T extends 'select' ? false : true;
|
|
1850
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1851
|
+
get value(): string | number;
|
|
1852
|
+
set value(v: string | number);
|
|
1853
|
+
}
|
|
1854
|
+
: T extends 'text'
|
|
1855
|
+
? {
|
|
1856
|
+
name: string;
|
|
1857
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1858
|
+
get value(): string | number;
|
|
1859
|
+
set value(v: string | number);
|
|
1860
|
+
}
|
|
1861
|
+
: {
|
|
1862
|
+
name: string;
|
|
1863
|
+
type: T;
|
|
1864
|
+
'aria-invalid': boolean | 'false' | 'true' | undefined;
|
|
1865
|
+
get value(): string | number;
|
|
1866
|
+
set value(v: string | number);
|
|
1867
|
+
};
|
|
1851
1868
|
|
|
1852
1869
|
type RemoteFormFieldMethods<T> = {
|
|
1853
1870
|
/** The values that will be submitted */
|
|
@@ -2034,7 +2051,7 @@ declare module '@sveltejs/kit' {
|
|
|
2034
2051
|
/** The number of pending submissions */
|
|
2035
2052
|
get pending(): number;
|
|
2036
2053
|
/** Access form fields using object notation */
|
|
2037
|
-
fields:
|
|
2054
|
+
fields: RemoteFormFields<Input>;
|
|
2038
2055
|
/** Spread this onto a `<button>` or `<input type="submit">` */
|
|
2039
2056
|
buttonProps: {
|
|
2040
2057
|
type: 'submit';
|
package/types/index.d.ts.map
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"file": "index.d.ts",
|
|
4
4
|
"names": [
|
|
5
|
+
"Span",
|
|
5
6
|
"Adapter",
|
|
6
7
|
"LoadProperties",
|
|
7
8
|
"AwaitedActions",
|
|
@@ -212,6 +213,6 @@
|
|
|
212
213
|
null,
|
|
213
214
|
null
|
|
214
215
|
],
|
|
215
|
-
"mappings": "
|
|
216
|
+
"mappings": ";;;;;;;;MA+BKA,IAAIA;;;;;kBAKQC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiCZC,cAAcA;;;;;;aAMdC,cAAcA;;;;;;;;MAQrBC,aAAaA;;;;;OAKJC,YAAYA;;kBAETC,aAAaA;;;;;;MAMzBC,qBAAqBA;;;;;;;;;;;kBAWTC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA8IPC,MAAMA;;;;;;;;;;;kBAWNC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DPC,QAAQA;;;;;;;;kBAQRC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAqkBdC,MAAMA;;;;;;;;;;;aAWNC,iBAAiBA;;;;;;;;;;;;aAYjBC,qBAAqBA;;;;;;;;;aASrBC,iBAAiBA;;;;;;;;;;aAUjBC,WAAWA;;;;;;;;;;aAUXC,UAAUA;;;;;;aAMVC,UAAUA;;;;;;aAMVC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;aA0BPC,SAASA;;;;;kBAKJC,WAAWA;;;;;;;;;;;;aAYhBC,IAAIA;;;;;;;;;;;;kBAYCC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyHTC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0BfC,gBAAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAgCrBC,cAAcA;;kBAETC,cAAcA;;;;;;;;;;;;;;;;;;;;kBAoBdC,eAAeA;;;;;;;;;;;;;;;;;;;;;;kBAsBfC,kBAAkBA;;;;;;;;;;;;;;;;;;;kBAmBlBC,oBAAoBA;;;;;;;;;;;;;;;;;;;;;;;;kBAwBpBC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;kBAsBlBC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;aAwBnBC,UAAUA;;;;;;;;;aASVC,cAAcA;;;;;;;;;;aAUdC,UAAUA;;;;;;;;;;;;;;;;;;aAkBVC,aAAaA;;;;;;;;;;;;;;;;;;;kBAmBRC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CTC,YAAYA;;kBAEPC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA+GjBC,cAAcA;;;;;kBAKTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;kBAuBdC,eAAeA;;;;;;;;;;;;;;;cAenBC,MAAMA;;;;;;kBAMFC,iBAAiBA;;;;;;;kBAOjBC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;aAyBhBC,UAAUA;;;;;;;kBAOLC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAkFpBC,MAAMA;;;;;;;;;;aAUNC,OAAOA;;;;;;;;;;;;;;;;aAgBPC,YAAYA;;;;;;;;;;;;kBCvtDXC,SAASA;;;;;;;;;;kBAqBTC,QAAQA;;;;;;;aD+tDTC,cAAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6BTC,QAAQA;;;;;;MAMpBC,uBAAuBA;;;MAGvBC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA6BLC,mBAAmBA;;;;;MAK1BC,iBAAiBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwCjBC,sBAAsBA;;;;;;;;;aASfC,oBAAoBA;;MAE3BC,MAAMA;;;;;;;;;;;aAWCC,eAAeA;;;;;;;;;;;;;;MActBC,wBAAwBA;;;;;MAKxBC,YAAYA;;;;;;;;;;;;;;;;;;;;;aAqBLC,gBAAgBA;;;;;;;;;;;;;;;;MAgBvBC,mBAAmBA;;;;MAInBC,UAAUA;;kBAEEC,eAAeA;;;;kBAIfC,eAAeA;;;;;;;MAO3BC,SAASA;;;;;;;;;;MAUTC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;aAuBLC,OAAOA;;;;;;aAMPC,UAAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAiFVC,aAAaA;;;;;;;;aAQbC,cAAcA;;;;;;;;;;;;;;;;;;aAkBdC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAqCNC,mBAAmBA;;;;;;;;aAQxBC,uBAAuBA;;;;;aAKvBC,mBAAmBA;WEjoEdC,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkDZC,GAAGA;;;;;;;;;;;;;;;;;;;;;WAqBHC,aAAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmElBC,UAAUA;;WAELC,MAAMA;;;;;;;;;MASXC,YAAYA;;WAEPC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmCXC,yBAAyBA;;;;;;;;;;WAUzBC,yBAAyBA;;;;WAIzBC,sCAAsCA;;;;WAItCC,4BAA4BA;;;;MAIjCC,8BAA8BA;MAC9BC,8BAA8BA;MAC9BC,iCAAiCA;;;;;MAKjCC,2CAA2CA;;;;;;aAM3CC,eAAeA;;WAIVC,cAAcA;;;;;WAKdC,YAAYA;;;;;;MAMjBC,aAAaA;WC9LRC,KAAKA;;;;;;WAeLC,SAASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAuHTC,YAAYA;;;;;;;;;;;;;WAkBZC,QAAQA;;;;;;;;;;;;;;MAgCbC,iBAAiBA;;;;;;;;;WAWZC,UAAUA;;;;;;;;;;;;;WAaVC,SAASA;;;;;;;;;;;;;;;;;;;;;;;WAuHTC,YAAYA;;;;;;;;;;;;;;;;MAgBjBC,kBAAkBA;;WAEbC,aAAaA;;;;;;;;;;;WAWbC,UAAUA;;;;;;;;;;;WAWVC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;MAuBZC,aAAaA;;WA8BRC,eAAeA;;;;;;MAMpBC,uBAAuBA;;MAGvBC,WAAWA;;;;;;;;WAQNC,QAAQA;;;;;;;;;WASRC,cAAcA;;;;;;;;;MA+CnBC,eAAeA;;;;;MAKfC,kBAAkBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC/cdC,WAAWA;;;;;;;;;;;;;;;;;;;iBAsBXC,QAAQA;;;;;iBAiBRC,UAAUA;;;;;;iBASVC,IAAIA;;;;;;iBA4BJC,IAAIA;;;;;;;;;;;;;;;;iBAkDJC,eAAeA;;;;;;;;;;;;;;iBAmBfC,YAAYA;;;;;;;cCrOfC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC4EJC,QAAQA;;;;;;iBC4BFC,UAAUA;;;;;;iBAgDVC,WAAWA;;;;;iBAgFjBC,oBAAoBA;;;;;;;;;;;iBCzNpBC,gBAAgBA;;;;;;;;;iBCqHVC,SAASA;;;;;;;;;cCpIlBC,OAAOA;;;;;cAKPC,GAAGA;;;;;cAKHC,QAAQA;;;;;cAKRC,OAAOA;;;;;;;;;;;;;;;;;;;;;;;;iBCYJC,WAAWA;;;;;;;;;;;;;;;;;;;;;;;;iBAgDXC,OAAOA;;;;;;;iBCiuEDC,WAAWA;;;;;;;;;;;iBAhVjBC,aAAaA;;;;;;;;;;;;iBAiBbC,cAAcA;;;;;;;;;;iBAedC,UAAUA;;;;;iBASVC,qBAAqBA;;;;;;;;;;iBA8BrBC,IAAIA;;;;;;;;;;;;;;;;;;;;;;;;;iBAsCJC,UAAUA;;;;iBA0BVC,aAAaA;;;;;iBAebC,UAAUA;;;;;;;;;;;;;;iBAuBJC,WAAWA;;;;;;;;;;;;;;;;;;iBAoCXC,WAAWA;;;;;iBAsCjBC,SAASA;;;;;iBA+CTC,YAAYA;MV1mEhBlE,YAAYA;;;;;;;;;;;;;;YW/IbmE,IAAIA;;;;;;;;;YASJC,MAAMA;;;;;iBAKDC,YAAYA;;;MCxBhBC,WAAWA;;;;;;;;;;;;;;;;;;;;;iBCqBPC,KAAKA;;;;;;;;;;;;;;;;;;;;;iBA6BLC,OAAOA;;;;;;;;;;;;;;;;;;;;iBCjCPC,IAAIA;;;;;;;;iBCSJC,eAAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MdmcnBC,8BAA8BA;MDpU9B3E,YAAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cgB1GX4E,IAAIA;;;;;cAQJC,UAAUA;;;;;;;;;;;cAMVC,OAAOA;;;;;;;;;iBCrDPC,SAASA;;;;;;;;;;;;;;;cAyBTH,IAAIA;;;;;;;;;;cAiBJC,UAAUA;;;;;;;;cAeVC,OAAOA",
|
|
216
217
|
"ignoreList": []
|
|
217
218
|
}
|