@typed/router 0.32.0 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +111 -2
  2. package/dist/AST.d.ts +96 -0
  3. package/dist/AST.d.ts.map +1 -0
  4. package/dist/AST.js +32 -0
  5. package/dist/CurrentRoute.d.ts +18 -0
  6. package/dist/CurrentRoute.d.ts.map +1 -0
  7. package/dist/CurrentRoute.js +18 -0
  8. package/dist/Matcher.d.ts +191 -0
  9. package/dist/Matcher.d.ts.map +1 -0
  10. package/dist/Matcher.js +597 -0
  11. package/dist/Parser.d.ts +96 -0
  12. package/dist/Parser.d.ts.map +1 -0
  13. package/dist/Parser.js +1 -0
  14. package/dist/Path.d.ts +216 -0
  15. package/dist/Path.d.ts.map +1 -0
  16. package/dist/Path.js +248 -0
  17. package/dist/Route.d.ts +57 -0
  18. package/dist/Route.d.ts.map +1 -0
  19. package/dist/Route.js +151 -0
  20. package/dist/Router.d.ts +9 -0
  21. package/dist/Router.d.ts.map +1 -0
  22. package/dist/Router.js +8 -0
  23. package/dist/Uri.d.ts +115 -0
  24. package/dist/Uri.d.ts.map +1 -0
  25. package/dist/Uri.js +1 -0
  26. package/dist/index.d.ts +5 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/package.json +25 -70
  30. package/src/AST.ts +166 -0
  31. package/src/CurrentRoute.ts +30 -331
  32. package/src/Matcher.test.ts +476 -0
  33. package/src/Matcher.ts +1269 -328
  34. package/src/Parser.ts +282 -0
  35. package/src/Path.test.ts +318 -0
  36. package/src/Path.ts +691 -0
  37. package/src/Route.test.ts +268 -0
  38. package/src/Route.ts +316 -0
  39. package/src/Router.ts +31 -0
  40. package/src/Uri.ts +214 -0
  41. package/src/index.ts +4 -28
  42. package/tsconfig.json +6 -0
  43. package/CurrentRoute/package.json +0 -6
  44. package/LICENSE +0 -21
  45. package/MatchInput/package.json +0 -6
  46. package/Matcher/package.json +0 -6
  47. package/RouteGuard/package.json +0 -6
  48. package/RouteMatch/package.json +0 -6
  49. package/dist/cjs/CurrentRoute.js +0 -170
  50. package/dist/cjs/CurrentRoute.js.map +0 -1
  51. package/dist/cjs/MatchInput.js +0 -96
  52. package/dist/cjs/MatchInput.js.map +0 -1
  53. package/dist/cjs/Matcher.js +0 -138
  54. package/dist/cjs/Matcher.js.map +0 -1
  55. package/dist/cjs/RouteGuard.js +0 -78
  56. package/dist/cjs/RouteGuard.js.map +0 -1
  57. package/dist/cjs/RouteMatch.js +0 -49
  58. package/dist/cjs/RouteMatch.js.map +0 -1
  59. package/dist/cjs/index.js +0 -53
  60. package/dist/cjs/index.js.map +0 -1
  61. package/dist/dts/CurrentRoute.d.ts +0 -94
  62. package/dist/dts/CurrentRoute.d.ts.map +0 -1
  63. package/dist/dts/MatchInput.d.ts +0 -143
  64. package/dist/dts/MatchInput.d.ts.map +0 -1
  65. package/dist/dts/Matcher.d.ts +0 -121
  66. package/dist/dts/Matcher.d.ts.map +0 -1
  67. package/dist/dts/RouteGuard.d.ts +0 -94
  68. package/dist/dts/RouteGuard.d.ts.map +0 -1
  69. package/dist/dts/RouteMatch.d.ts +0 -50
  70. package/dist/dts/RouteMatch.d.ts.map +0 -1
  71. package/dist/dts/index.d.ts +0 -24
  72. package/dist/dts/index.d.ts.map +0 -1
  73. package/dist/esm/CurrentRoute.js +0 -152
  74. package/dist/esm/CurrentRoute.js.map +0 -1
  75. package/dist/esm/MatchInput.js +0 -79
  76. package/dist/esm/MatchInput.js.map +0 -1
  77. package/dist/esm/Matcher.js +0 -130
  78. package/dist/esm/Matcher.js.map +0 -1
  79. package/dist/esm/RouteGuard.js +0 -57
  80. package/dist/esm/RouteGuard.js.map +0 -1
  81. package/dist/esm/RouteMatch.js +0 -29
  82. package/dist/esm/RouteMatch.js.map +0 -1
  83. package/dist/esm/index.js +0 -24
  84. package/dist/esm/index.js.map +0 -1
  85. package/dist/esm/package.json +0 -4
  86. package/src/MatchInput.ts +0 -303
  87. package/src/RouteGuard.ts +0 -217
  88. package/src/RouteMatch.ts +0 -104
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parser.d.ts","sourceRoot":"","sources":["../src/Parser.ts"],"names":[],"mappings":"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"}
package/dist/Parser.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/dist/Path.d.ts ADDED
@@ -0,0 +1,216 @@
1
+ import type { Arg0, TypeLambda1 } from "hkt-core";
2
+ import * as Schema from "effect/Schema";
3
+ import type { PathAst } from "./AST.js";
4
+ import type { Parser } from "./Parser.js";
5
+ type PathStopChar = "/" | ":" | "*" | "?";
6
+ type QueryValueStopChar = "&";
7
+ type TakeWhileNotInternal<Input extends string, Stop extends string, Acc extends string = ""> = Input extends `${infer Head}${infer Tail}` ? Head extends Stop ? readonly [Acc, Input] : TakeWhileNotInternal<Tail, Stop, `${Acc}${Head}`> : readonly [Acc, Input];
8
+ type TakeWhileNot1Internal<Input extends string, Stop extends string> = TakeWhileNotInternal<Input, Stop> extends readonly [
9
+ infer Taken extends string,
10
+ infer Rest extends string
11
+ ] ? Taken extends "" ? never : readonly [Taken, Rest] : never;
12
+ interface TakeWhileNot1<Stop extends string> extends Parser<string> {
13
+ readonly return: Arg0<this> extends infer Input extends string ? TakeWhileNot1Internal<Input, Stop> : never;
14
+ }
15
+ interface Second extends TypeLambda1 {
16
+ readonly return: Arg0<this> extends readonly [infer _A, infer B] ? B : never;
17
+ }
18
+ interface RegexBetweenParens extends TypeLambda1 {
19
+ readonly return: Arg0<this> extends readonly ["(", readonly [infer Regex extends string, ")"]] ? Regex : never;
20
+ }
21
+ type RegexParser = Parser.Map<Parser.Zip<Parser.Char<"(">, Parser.Zip<TakeWhileNot1<")">, Parser.Char<")">>>, RegexBetweenParens>;
22
+ type OptionalRegexParser = Parser.Optional<RegexParser>;
23
+ type OptionalQuestionMarkParser = Parser.Optional<Parser.Char<"?">>;
24
+ type ParameterNameParser = Parser.Zip<Parser.Char<":">, Parser.TakeWhile1<Parser.AlphaNumeric>>;
25
+ type ParameterPartsParser = Parser.Zip<ParameterNameParser, Parser.Zip<OptionalRegexParser, OptionalQuestionMarkParser>>;
26
+ type ParameterAst<Name extends string, Regex extends string | undefined, OptionalMark extends "?" | undefined> = [
27
+ {
28
+ readonly type: "parameter";
29
+ readonly name: Name;
30
+ } & ([Regex] extends [string] ? {
31
+ regex: Regex;
32
+ } : {}) & ([OptionalMark] extends ["?"] ? {
33
+ optional: true;
34
+ } : {})
35
+ ] extends [infer Ast] ? ToReadonlyRecord<Ast> : never;
36
+ interface ToParameterAst extends TypeLambda1 {
37
+ readonly return: Arg0<this> extends readonly [
38
+ readonly [":", infer Name extends string],
39
+ readonly [infer Regex, infer OptionalMark]
40
+ ] ? ParameterAst<Name, Regex extends string ? Regex : undefined, OptionalMark extends "?" ? OptionalMark : undefined> : never;
41
+ }
42
+ type ParameterParser = Parser.Map<ParameterPartsParser, ToParameterAst>;
43
+ interface ToWildcardAst extends TypeLambda1 {
44
+ readonly return: {
45
+ readonly type: "wildcard";
46
+ };
47
+ }
48
+ type WildcardParser = Parser.Map<Parser.Char<"*">, ToWildcardAst>;
49
+ interface ToLiteralAst extends TypeLambda1 {
50
+ readonly return: Arg0<this> extends infer Value extends string ? {
51
+ readonly type: "literal";
52
+ readonly value: Value;
53
+ } : never;
54
+ }
55
+ type PathLiteralParser = Parser.Map<TakeWhileNot1<PathStopChar>, ToLiteralAst>;
56
+ type QueryLiteralParser = Parser.Map<TakeWhileNot1<QueryValueStopChar>, ToLiteralAst>;
57
+ type QueryValueParser = Parser.OrElse<ParameterParser, Parser.OrElse<WildcardParser, QueryLiteralParser>>;
58
+ interface ToQueryParamAst extends TypeLambda1 {
59
+ readonly return: Arg0<this> extends readonly [
60
+ infer Name extends string,
61
+ readonly ["=", infer Value extends PathAst]
62
+ ] ? {
63
+ readonly type: "query-param";
64
+ readonly name: Name;
65
+ readonly value: Value;
66
+ } : never;
67
+ }
68
+ type QueryParamParser = Parser.Map<Parser.Zip<Parser.TakeWhile1<Parser.AlphaNumeric>, Parser.Zip<Parser.Char<"=">, QueryValueParser>>, ToQueryParamAst>;
69
+ type QueryParamTailParser = Parser.Map<Parser.Zip<Parser.Char<"&">, QueryParamParser>, Second>;
70
+ interface PrependToTuple extends TypeLambda1 {
71
+ readonly return: Arg0<this> extends readonly [
72
+ infer Head,
73
+ infer Tail extends ReadonlyArray<unknown>
74
+ ] ? readonly [Head, ...Tail] : never;
75
+ }
76
+ type QueryParamListParser = Parser.Map<Parser.Zip<QueryParamParser, Parser.Many<QueryParamTailParser>>, PrependToTuple>;
77
+ interface ToQueryParamsAst extends TypeLambda1 {
78
+ readonly return: Arg0<this> extends readonly [
79
+ "?",
80
+ infer Params extends ReadonlyArray<PathAst.QueryParam>
81
+ ] ? {
82
+ readonly type: "query-params";
83
+ readonly value: Params;
84
+ } : never;
85
+ }
86
+ type QueryParamsParser = Parser.Map<Parser.Zip<Parser.Char<"?">, QueryParamListParser>, ToQueryParamsAst>;
87
+ type PathAtomParser = Parser.OrElse<QueryParamsParser, Parser.OrElse<ParameterParser, Parser.OrElse<WildcardParser, PathLiteralParser>>>;
88
+ type SkipSlashesParser = Parser.Optional<Parser.Many1<Parser.Char<"/">>>;
89
+ export type PathParser = Parser.Map<Parser.Zip<SkipSlashesParser, PathAtomParser>, Second>;
90
+ type SlashAst = {
91
+ readonly type: "slash";
92
+ };
93
+ type PathChunk = readonly [PathAst] | readonly [SlashAst, PathAst];
94
+ interface ToPathChunk extends TypeLambda1 {
95
+ readonly return: Arg0<this> extends readonly [infer Slashes, infer Ast extends PathAst] ? [Slashes] extends [undefined] ? readonly [Ast] : readonly [SlashAst, Ast] : never;
96
+ }
97
+ type PathChunkParser = Parser.Map<Parser.Zip<SkipSlashesParser, PathAtomParser>, ToPathChunk>;
98
+ type FlattenChunks<Chunks extends ReadonlyArray<PathChunk>, Acc extends ReadonlyArray<PathAst> = readonly []> = Chunks extends readonly [
99
+ infer Head extends PathChunk,
100
+ ...infer Tail extends ReadonlyArray<PathChunk>
101
+ ] ? FlattenChunks<Tail, readonly [...Acc, ...Head]> : Acc;
102
+ type CombineChunks<First, Chunks extends ReadonlyArray<PathChunk>> = [First] extends [PathAst] ? readonly [First, ...FlattenChunks<Chunks>] : FlattenChunks<Chunks>;
103
+ interface ToAsts extends TypeLambda1 {
104
+ readonly return: Arg0<this> extends readonly [
105
+ infer First,
106
+ infer Chunks extends ReadonlyArray<PathChunk>
107
+ ] ? CombineChunks<First, Chunks> : never;
108
+ }
109
+ type ParseAstsResult<Input extends string> = Parser.Run<Parser.Map<Parser.Zip<Parser.Optional<PathParser>, Parser.Many<PathChunkParser>>, ToAsts>, Input>;
110
+ type GetAsts<R> = [R] extends [never] ? never : R extends readonly [infer Asts extends ReadonlyArray<PathAst>, infer _Rest extends string] ? Asts : never;
111
+ export type ParseAsts<Input extends string> = GetAsts<ParseAstsResult<Input>>;
112
+ type ParamsOfAst<T> = T extends {
113
+ type: "parameter";
114
+ name: infer Name extends string;
115
+ optional: true;
116
+ } ? {
117
+ [K in Name]?: string;
118
+ } : T extends {
119
+ readonly type: "parameter";
120
+ readonly name: infer Name extends string;
121
+ } ? {
122
+ [K in Name]: string;
123
+ } : T extends {
124
+ readonly type: "wildcard";
125
+ } ? {
126
+ "*": string;
127
+ } : T extends {
128
+ readonly type: "query-params";
129
+ readonly value: infer Values extends ReadonlyArray<PathAst.QueryParam>;
130
+ } ? ParamsOfQueryParams<Values> : {};
131
+ type ParamsOfQueryParams<T extends ReadonlyArray<PathAst.QueryParam>, Acc = {}> = T extends readonly [infer Head, ...infer Tail extends ReadonlyArray<PathAst.QueryParam>] ? ParamsOfQueryParams<Tail, Acc & ParamsOfQueryParam<Head>> : Acc;
132
+ type ParamsOfQueryParam<T> = T extends {
133
+ readonly type: "query-param";
134
+ readonly value: infer Value extends PathAst;
135
+ } ? ParamsOfAst<Value> : {};
136
+ type GetParams<T extends ReadonlyArray<PathAst>, Acc = {}> = T extends readonly [
137
+ infer Head,
138
+ ...infer Tail extends ReadonlyArray<PathAst>
139
+ ] ? GetParams<Tail, Acc & ParamsOfAst<Head>> : Acc;
140
+ type PathParamsOfAst<T> = T extends {
141
+ type: "parameter";
142
+ name: infer Name extends string;
143
+ optional: true;
144
+ } ? {
145
+ [K in Name]?: string;
146
+ } : T extends {
147
+ readonly type: "parameter";
148
+ readonly name: infer Name extends string;
149
+ } ? {
150
+ [K in Name]: string;
151
+ } : T extends {
152
+ readonly type: "wildcard";
153
+ } ? {
154
+ "*": string;
155
+ } : {};
156
+ type QueryParamsOfAst<T> = T extends {
157
+ readonly type: "query-params";
158
+ readonly value: infer Values extends ReadonlyArray<PathAst.QueryParam>;
159
+ } ? ParamsOfQueryParams<Values> : {};
160
+ type GetPathParams<T extends ReadonlyArray<PathAst>, Acc = {}> = T extends readonly [
161
+ infer Head,
162
+ ...infer Tail extends ReadonlyArray<PathAst>
163
+ ] ? GetPathParams<Tail, Acc & PathParamsOfAst<Head>> : Acc;
164
+ type GetQueryParams<T extends ReadonlyArray<PathAst>, Acc = {}> = T extends readonly [
165
+ infer Head,
166
+ ...infer Tail extends ReadonlyArray<PathAst>
167
+ ] ? GetQueryParams<Tail, Acc & QueryParamsOfAst<Head>> : Acc;
168
+ type ToReadonlyRecord<T> = [T] extends [infer T2] ? {
169
+ readonly [K in keyof T2]: T2[K];
170
+ } : never;
171
+ export type PathParams<P extends string> = ParseAsts<P> extends infer Asts ? [Asts] extends [never] ? never : Asts extends ReadonlyArray<PathAst> ? ToReadonlyRecord<GetPathParams<Asts>> : never : never;
172
+ export type QueryParams<P extends string> = ParseAsts<P> extends infer Asts ? [Asts] extends [never] ? never : Asts extends ReadonlyArray<PathAst> ? ToReadonlyRecord<GetQueryParams<Asts>> : never : never;
173
+ export type Params<P extends string> = ParseAsts<P> extends infer Asts ? [Asts] extends [never] ? never : Asts extends ReadonlyArray<PathAst> ? ToReadonlyRecord<GetParams<Asts>> : never : never;
174
+ export type RuntimeParseResult = readonly [asts: ReadonlyArray<PathAst>, rest: string];
175
+ export declare function parseWithRest(input: string): RuntimeParseResult;
176
+ export declare function parse<const P extends string>(input: P): ParseAsts<P>;
177
+ export type Join<Parts extends ReadonlyArray<PathAst>> = `/${StringJoin<{
178
+ [K in keyof Parts]: FormatAst<Parts[K]>;
179
+ }, "">}`;
180
+ type StringJoin<Input extends ReadonlyArray<string>, R extends string = ""> = Input extends readonly [infer A extends string, ...infer Rest extends ReadonlyArray<string>] ? StringJoin<Rest, `${R}${A}`> : R;
181
+ type FormatAst<T extends PathAst> = [T] extends [PathAst.Literal] ? T["value"] : [T] extends [PathAst.Parameter] ? FormatParameterAst<T> : [T] extends [PathAst.Wildcard] ? `*` : [T] extends [PathAst.Slash] ? `/` : [T] extends [PathAst.QueryParams] ? FormatQueryParamsAst<T["value"]> : never;
182
+ type FormatParameterAst<T extends PathAst.Parameter> = `:${T["name"]}${T["optional"] extends true ? "?" : ""}`;
183
+ type FormatQueryParamsAst<T extends ReadonlyArray<PathAst.QueryParam>, R extends string = "?"> = T extends readonly [
184
+ infer Head extends PathAst.QueryParam,
185
+ ...infer Tail extends ReadonlyArray<PathAst.QueryParam>
186
+ ] ? FormatQueryParamsAst<Tail, `${R}${R extends "?" ? "" : "&"}${FormatQueryParamAst<Head>}`> : R;
187
+ type FormatQueryParamAst<T extends PathAst.QueryParam> = `${T["name"]}=${FormatAst<T["value"]>}`;
188
+ export declare function join<const Parts extends ReadonlyArray<PathAst>>(asts: Parts): Join<Parts>;
189
+ /**
190
+ * @internal
191
+ */
192
+ export declare function getSchemaFields<const Parts extends ReadonlyArray<PathAst>>(parts: Parts): {
193
+ requiredFields: [string, Schema.Top][];
194
+ optionalFields: [Schema.Record.Key, Schema.Top][];
195
+ queryParams: [string, {
196
+ readonly requiredFields: Array<[string, Schema.Top]>;
197
+ readonly optionalFields: Array<[Schema.Record.Key, Schema.Top]>;
198
+ }][];
199
+ };
200
+ export declare function getSchemas<const Parts extends ReadonlyArray<PathAst>>(parts: Parts): {
201
+ readonly pathSchema: Schema.StructWithRest<Schema.Struct<{
202
+ [k: string]: Schema.Top;
203
+ }>, Schema.Record$<Schema.Record.Key, Schema.Top>[]>;
204
+ readonly querySchema: Schema.Struct<{
205
+ [k: string]: Schema.StructWithRest<Schema.Struct<{
206
+ [k: string]: Schema.Top;
207
+ }>, Schema.Record$<Schema.Record.Key, Schema.Top>[]>;
208
+ }>;
209
+ readonly paramsSchema: Schema.StructWithRest<Schema.Struct<{
210
+ readonly [x: string]: Schema.Top | Schema.StructWithRest<Schema.Struct<{
211
+ [k: string]: Schema.Top;
212
+ }>, Schema.Record$<Schema.Record.Key, Schema.Top>[]>;
213
+ }>, Schema.Record$<Schema.Record.Key, Schema.Top>[]>;
214
+ };
215
+ export {};
216
+ //# sourceMappingURL=Path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../src/Path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,YAAY,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC1C,KAAK,kBAAkB,GAAG,GAAG,CAAC;AAE9B,KAAK,oBAAoB,CACvB,KAAK,SAAS,MAAM,EACpB,IAAI,SAAS,MAAM,EACnB,GAAG,SAAS,MAAM,GAAG,EAAE,IACrB,KAAK,SAAS,GAAG,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,GAC1C,IAAI,SAAS,IAAI,GACf,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,GACrB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,GACnD,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAE1B,KAAK,qBAAqB,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,SAAS,MAAM,IAClE,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,SAAS;IACjD,MAAM,KAAK,SAAS,MAAM;IAC1B,MAAM,IAAI,SAAS,MAAM;CAC1B,GACG,KAAK,SAAS,EAAE,GACd,KAAK,GACL,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GACxB,KAAK,CAAC;AAEZ,UAAU,aAAa,CAAC,IAAI,SAAS,MAAM,CAAE,SAAQ,MAAM,CAAC,MAAM,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,KAAK,SAAS,MAAM,GAC1D,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,GAClC,KAAK,CAAC;CACX;AAED,UAAU,MAAO,SAAQ,WAAW;IAClC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC9E;AAED,UAAU,kBAAmB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS,MAAM,EAAE,GAAG,CAAC,CAAC,GAC1F,KAAK,GACL,KAAK,CAAC;CACX;AAED,KAAK,WAAW,GAAG,MAAM,CAAC,GAAG,CAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAC9E,kBAAkB,CACnB,CAAC;AAEF,KAAK,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxD,KAAK,0BAA0B,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEpE,KAAK,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhG,KAAK,oBAAoB,GAAG,MAAM,CAAC,GAAG,CACpC,mBAAmB,EACnB,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAC5D,CAAC;AAEF,KAAK,YAAY,CACf,IAAI,SAAS,MAAM,EACnB,KAAK,SAAS,MAAM,GAAG,SAAS,EAChC,YAAY,SAAS,GAAG,GAAG,SAAS,IAClC;IACF;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAC3E;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAChB,EAAE,CAAC,GACL,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,EAAE,CAAC;CAC3D,SAAS,CAAC,MAAM,GAAG,CAAC,GACjB,gBAAgB,CAAC,GAAG,CAAC,GACrB,KAAK,CAAC;AAEV,UAAU,cAAe,SAAQ,WAAW;IAC1C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS;QAC3C,SAAS,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;QACzC,SAAS,CAAC,MAAM,KAAK,EAAE,MAAM,YAAY,CAAC;KAC3C,GACG,YAAY,CACV,IAAI,EACJ,KAAK,SAAS,MAAM,GAAG,KAAK,GAAG,SAAS,EACxC,YAAY,SAAS,GAAG,GAAG,YAAY,GAAG,SAAS,CACpD,GACD,KAAK,CAAC;CACX;AAED,KAAK,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;AAExE,UAAU,aAAc,SAAQ,WAAW;IACzC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;CAChD;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;AAElE,UAAU,YAAa,SAAQ,WAAW;IACxC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,KAAK,SAAS,MAAM,GAC1D;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GACnD,KAAK,CAAC;CACX;AAED,KAAK,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;AAE/E,KAAK,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC,CAAC;AAEtF,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACnC,eAAe,EACf,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAClD,CAAC;AAEF,UAAU,eAAgB,SAAQ,WAAW;IAC3C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS;QAC3C,MAAM,IAAI,SAAS,MAAM;QACzB,SAAS,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,OAAO,CAAC;KAC5C,GACG;QAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAC5E,KAAK,CAAC;CACX;AAED,KAAK,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAChC,MAAM,CAAC,GAAG,CACR,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EACtC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAC/C,EACD,eAAe,CAChB,CAAC;AAEF,KAAK,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;AAE/F,UAAU,cAAe,SAAQ,WAAW;IAC1C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS;QAC3C,MAAM,IAAI;QACV,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC;KAC1C,GACG,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GACxB,KAAK,CAAC;CACX;AAED,KAAK,oBAAoB,GAAG,MAAM,CAAC,GAAG,CACpC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAC/D,cAAc,CACf,CAAC;AAEF,UAAU,gBAAiB,SAAQ,WAAW;IAC5C,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS;QAC3C,GAAG;QACH,MAAM,MAAM,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;KACvD,GACG;QACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,GACD,KAAK,CAAC;CACX;AAED,KAAK,iBAAiB,GAAG,MAAM,CAAC,GAAG,CACjC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,EAClD,gBAAgB,CACjB,CAAC;AAEF,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,CACjC,iBAAiB,EACjB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CACjF,CAAC;AAEF,KAAK,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3F,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3C,KAAK,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEnE,UAAU,WAAY,SAAQ,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,OAAO,EAAE,MAAM,GAAG,SAAS,OAAO,CAAC,GACnF,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAC3B,SAAS,CAAC,GAAG,CAAC,GACd,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,GAC1B,KAAK,CAAC;CACX;AAED,KAAK,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;AAE9F,KAAK,aAAa,CAChB,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,EACvC,GAAG,SAAS,aAAa,CAAC,OAAO,CAAC,GAAG,SAAS,EAAE,IAC9C,MAAM,SAAS,SAAS;IAC1B,MAAM,IAAI,SAAS,SAAS;IAC5B,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,SAAS,CAAC;CAC/C,GACG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,GAC/C,GAAG,CAAC;AAER,KAAK,aAAa,CAAC,KAAK,EAAE,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAC1F,SAAS,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAC1C,aAAa,CAAC,MAAM,CAAC,CAAC;AAE1B,UAAU,MAAO,SAAQ,WAAW;IAClC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,SAAS;QAC3C,MAAM,KAAK;QACX,MAAM,MAAM,SAAS,aAAa,CAAC,SAAS,CAAC;KAC9C,GACG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,GAC5B,KAAK,CAAC;CACX;AAED,KAAK,eAAe,CAAC,KAAK,SAAS,MAAM,IAAI,MAAM,CAAC,GAAG,CACrD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,EACzF,KAAK,CACN,CAAC;AAEF,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjC,KAAK,GACL,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,SAAS,MAAM,CAAC,GACxF,IAAI,GACJ,KAAK,CAAC;AAEZ,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9E,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC;CAChB,GACG;KAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM;CAAE,GACxB,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAA;CAAE,GAChF;KAAG,CAAC,IAAI,IAAI,GAAG,MAAM;CAAE,GACvB,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf,CAAC,SAAS;IACN,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;CACxE,GACD,mBAAmB,CAAC,MAAM,CAAC,GAC3B,EAAE,CAAC;AAEb,KAAK,mBAAmB,CACtB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3C,GAAG,GAAG,EAAE,IACN,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GACxF,mBAAmB,CAAC,IAAI,EAAE,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GACzD,GAAG,CAAC;AAER,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,OAAO,CAAC;CAC7C,GACG,WAAW,CAAC,KAAK,CAAC,GAClB,EAAE,CAAC;AAEP,KAAK,SAAS,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,SAAS;IAC9E,MAAM,IAAI;IACV,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC;CAC7C,GACG,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GACxC,GAAG,CAAC;AAER,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC;CAChB,GACG;KAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM;CAAE,GACxB,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,MAAM,CAAA;CAAE,GAChF;KAAG,CAAC,IAAI,IAAI,GAAG,MAAM;CAAE,GACvB,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf,EAAE,CAAC;AAEX,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,MAAM,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;CACxE,GACG,mBAAmB,CAAC,MAAM,CAAC,GAC3B,EAAE,CAAC;AAEP,KAAK,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,SAAS;IAClF,MAAM,IAAI;IACV,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC;CAC7C,GACG,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAChD,GAAG,CAAC;AAER,KAAK,cAAc,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,SAAS,SAAS;IACnF,MAAM,IAAI;IACV,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC;CAC7C,GACG,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAClD,GAAG,CAAC;AAER,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAEhG,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IACrC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,GAC3B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GACpB,KAAK,GACL,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,GACjC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GACrC,KAAK,GACT,KAAK,CAAC;AAEZ,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IACtC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,GAC3B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GACpB,KAAK,GACL,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,GACjC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GACtC,KAAK,GACT,KAAK,CAAC;AAEZ,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,IACjC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,GAC3B,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GACpB,KAAK,GACL,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,GACjC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GACjC,KAAK,GACT,KAAK,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEvF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CA0B/D;AAED,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CASpE;AAED,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CACrE;KACG,CAAC,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxC,EACD,EAAE,CACH,EAAE,CAAC;AAEJ,KAAK,UAAU,CACb,KAAK,SAAS,aAAa,CAAC,MAAM,CAAC,EACnC,CAAC,SAAS,MAAM,GAAG,EAAE,IACnB,KAAK,SAAS,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAC5F,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAC5B,CAAC,CAAC;AAEN,KAAK,SAAS,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAC7D,CAAC,CAAC,OAAO,CAAC,GACV,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAC7B,kBAAkB,CAAC,CAAC,CAAC,GACrB,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAC5B,GAAG,GACH,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GACzB,GAAG,GACH,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,GAC/B,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAChC,KAAK,CAAC;AAElB,KAAK,kBAAkB,CAAC,CAAC,SAAS,OAAO,CAAC,SAAS,IACjD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;AAC1D,KAAK,oBAAoB,CACvB,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3C,CAAC,SAAS,MAAM,GAAG,GAAG,IACpB,CAAC,SAAS,SAAS;IACrB,MAAM,IAAI,SAAS,OAAO,CAAC,UAAU;IACrC,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;CACxD,GACG,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,GACzF,CAAC,CAAC;AAEN,KAAK,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAEjG,wBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAEzF;AAsMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK;;;;iCAOvD,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;iCAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;EAiDtE;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK;;;;;;;;;;;;;;EA4BlF"}
package/dist/Path.js ADDED
@@ -0,0 +1,248 @@
1
+ import * as Schema from "effect/Schema";
2
+ import * as AST from "./AST.js";
3
+ export function parseWithRest(input) {
4
+ let index = 0;
5
+ const asts = [];
6
+ while (index < input.length) {
7
+ const start = index;
8
+ let hasSlash = false;
9
+ while (index < input.length && input[index] === "/") {
10
+ hasSlash = true;
11
+ index++;
12
+ }
13
+ const atom = parseAtom(input, index);
14
+ if (atom === undefined) {
15
+ index = start;
16
+ break;
17
+ }
18
+ if (hasSlash && asts.length > 0) {
19
+ asts.push(AST.slash());
20
+ }
21
+ asts.push(atom.ast);
22
+ index = atom.index;
23
+ }
24
+ return [asts, input.slice(index)];
25
+ }
26
+ export function parse(input) {
27
+ const [asts, rest] = parseWithRest(input);
28
+ for (let i = 0; i < rest.length; i++) {
29
+ if (rest[i] !== "/") {
30
+ const index = input.length - rest.length;
31
+ throw new Error(`Failed to parse path at index ${index}`);
32
+ }
33
+ }
34
+ return asts;
35
+ }
36
+ export function join(asts) {
37
+ return `/${asts.map(formatAst).join("")}`;
38
+ }
39
+ function formatAst(ast) {
40
+ switch (ast.type) {
41
+ case "literal":
42
+ return ast.value;
43
+ case "parameter":
44
+ return `:${ast.name}`;
45
+ case "wildcard":
46
+ return "*";
47
+ case "slash":
48
+ return "/";
49
+ case "query-params":
50
+ return `?${ast.value.map(getQueryParamAst).join("&")}`;
51
+ }
52
+ }
53
+ function getQueryParamAst(ast) {
54
+ return `${ast.name}=${formatAst(ast.value)}`;
55
+ }
56
+ function parseAtom(input, index) {
57
+ const char = input[index];
58
+ if (char === undefined) {
59
+ return undefined;
60
+ }
61
+ if (char === "?") {
62
+ return parseQueryParams(input, index);
63
+ }
64
+ if (char === ":") {
65
+ return parseParameter(input, index);
66
+ }
67
+ if (char === "*") {
68
+ return { ast: AST.wildcard(), index: index + 1 };
69
+ }
70
+ return parsePathLiteral(input, index);
71
+ }
72
+ function parseParameter(input, index) {
73
+ if (input[index] !== ":") {
74
+ return undefined;
75
+ }
76
+ let i = index + 1;
77
+ let name = "";
78
+ while (i < input.length && isAlphaNumeric(input[i])) {
79
+ name += input[i];
80
+ i++;
81
+ }
82
+ if (name.length === 0) {
83
+ return undefined;
84
+ }
85
+ let regex = undefined;
86
+ if (input[i] === "(") {
87
+ i++;
88
+ const start = i;
89
+ while (i < input.length && input[i] !== ")") {
90
+ i++;
91
+ }
92
+ if (i >= input.length) {
93
+ return undefined;
94
+ }
95
+ if (i === start) {
96
+ return undefined;
97
+ }
98
+ regex = input.slice(start, i);
99
+ i++;
100
+ }
101
+ let optional = undefined;
102
+ if (input[i] === "?") {
103
+ optional = true;
104
+ i++;
105
+ }
106
+ return { ast: AST.parameter(name, optional, regex), index: i };
107
+ }
108
+ function parsePathLiteral(input, index) {
109
+ const char = input[index];
110
+ if (char === undefined || isPathStopChar(char)) {
111
+ return undefined;
112
+ }
113
+ let i = index;
114
+ while (i < input.length && !isPathStopChar(input[i])) {
115
+ i++;
116
+ }
117
+ return { ast: AST.literal(input.slice(index, i)), index: i };
118
+ }
119
+ function parseQueryParams(input, index) {
120
+ if (input[index] !== "?") {
121
+ return undefined;
122
+ }
123
+ const first = parseQueryParam(input, index + 1);
124
+ if (first === undefined) {
125
+ return undefined;
126
+ }
127
+ let i = first.index;
128
+ const params = [first.ast];
129
+ while (i < input.length && input[i] === "&") {
130
+ const start = i;
131
+ const next = parseQueryParam(input, i + 1);
132
+ if (next === undefined) {
133
+ i = start;
134
+ break;
135
+ }
136
+ params.push(next.ast);
137
+ i = next.index;
138
+ }
139
+ return { ast: AST.queryParams(params), index: i };
140
+ }
141
+ function parseQueryParam(input, index) {
142
+ let i = index;
143
+ let name = "";
144
+ while (i < input.length && isAlphaNumeric(input[i])) {
145
+ name += input[i];
146
+ i++;
147
+ }
148
+ if (name.length === 0) {
149
+ return undefined;
150
+ }
151
+ if (input[i] !== "=") {
152
+ return undefined;
153
+ }
154
+ i++;
155
+ const value = parseQueryValue(input, i);
156
+ if (value === undefined) {
157
+ return undefined;
158
+ }
159
+ return { ast: AST.queryParam(name, value.ast), index: value.index };
160
+ }
161
+ function parseQueryValue(input, index) {
162
+ const char = input[index];
163
+ if (char === undefined) {
164
+ return undefined;
165
+ }
166
+ if (char === ":") {
167
+ return parseParameter(input, index);
168
+ }
169
+ if (char === "*") {
170
+ return { ast: AST.wildcard(), index: index + 1 };
171
+ }
172
+ let i = index;
173
+ while (i < input.length && input[i] !== "&") {
174
+ i++;
175
+ }
176
+ if (i === index) {
177
+ return undefined;
178
+ }
179
+ return { ast: AST.literal(input.slice(index, i)), index: i };
180
+ }
181
+ function isPathStopChar(char) {
182
+ return char === "/" || char === ":" || char === "*" || char === "?";
183
+ }
184
+ function isAlphaNumeric(char) {
185
+ return ((char >= "0" && char <= "9") || (char >= "a" && char <= "z") || (char >= "A" && char <= "Z"));
186
+ }
187
+ /**
188
+ * @internal
189
+ */
190
+ export function getSchemaFields(parts) {
191
+ const requiredFields = [];
192
+ const optionalFields = [];
193
+ const queryParams = [];
194
+ function addParameter(param) {
195
+ const base = param.regex
196
+ ? Schema.String.pipe(Schema.check(Schema.isPattern(new RegExp(param.regex))))
197
+ : Schema.String;
198
+ if (param.optional) {
199
+ optionalFields.push([Schema.optionalKey(Schema.Literal(param.name)), Schema.optional(base)]);
200
+ }
201
+ else {
202
+ requiredFields.push([param.name, base]);
203
+ }
204
+ }
205
+ function addQueryParams(params) {
206
+ for (const param of params) {
207
+ const { optionalFields, queryParams: _queryParams, requiredFields, } = getSchemaFields([param.value]);
208
+ queryParams.push([param.name, { optionalFields, requiredFields }]);
209
+ // eslint-disable-next-line no-restricted-syntax
210
+ queryParams.push(..._queryParams);
211
+ }
212
+ }
213
+ function addParts(parts) {
214
+ for (const part of parts) {
215
+ if (part.type === "parameter") {
216
+ addParameter(part);
217
+ }
218
+ else if (part.type === "wildcard") {
219
+ requiredFields.push(["*", Schema.String]);
220
+ }
221
+ else if (part.type === "query-params") {
222
+ addQueryParams(part.value);
223
+ }
224
+ }
225
+ }
226
+ addParts(parts);
227
+ return {
228
+ requiredFields,
229
+ optionalFields,
230
+ queryParams,
231
+ };
232
+ }
233
+ export function getSchemas(parts) {
234
+ const { optionalFields, queryParams, requiredFields } = getSchemaFields(parts);
235
+ const pathFields = Object.fromEntries(requiredFields);
236
+ const queryFields = Object.fromEntries(queryParams.map(([name, { optionalFields, requiredFields }]) => [
237
+ name,
238
+ Schema.StructWithRest(Schema.Struct(Object.fromEntries(requiredFields)), optionalFields.map(([key, value]) => Schema.Record(key, value))),
239
+ ]));
240
+ const pathSchema = Schema.StructWithRest(Schema.Struct(pathFields), optionalFields.map(([key, value]) => Schema.Record(key, value)));
241
+ const querySchema = Schema.Struct(queryFields);
242
+ const paramsSchema = Schema.StructWithRest(Schema.Struct({ ...pathFields, ...queryFields }), optionalFields.map(([key, value]) => Schema.Record(key, value)));
243
+ return {
244
+ pathSchema,
245
+ querySchema,
246
+ paramsSchema,
247
+ };
248
+ }
@@ -0,0 +1,57 @@
1
+ import { type Pipeable } from "effect/Pipeable";
2
+ import * as Schema from "effect/Schema";
3
+ import type { Simplify } from "effect/Types";
4
+ import * as AST from "./AST.js";
5
+ import * as Path from "./Path.js";
6
+ export interface Route<P extends string, S extends Schema.Codec<any, Path.Params<P>, any, any> = Schema.Codec<Path.Params<P>>> extends Pipeable {
7
+ readonly ast: AST.RouteAst;
8
+ readonly path: P;
9
+ readonly paramsSchema: S;
10
+ readonly pathSchema: Schema.Codec<Path.PathParams<P>>;
11
+ readonly querySchema: Schema.Codec<Path.QueryParams<P>>;
12
+ }
13
+ export declare namespace Route {
14
+ type Any = Route<any, any>;
15
+ type Path<T> = T extends Route<infer P, any> ? P : never;
16
+ type Schema<T> = T extends Route<any, infer S> ? S : never;
17
+ type Type<T> = T extends Route<any, infer S> ? S["Type"] : never;
18
+ type Params<T> = T extends Route<infer P, infer _S> ? Path.Params<P> : never;
19
+ type DecodingServices<T> = T extends Route<any, infer S> ? S["DecodingServices"] : never;
20
+ type EncodingServices<T> = T extends Route<any, infer S> ? S["EncodingServices"] : never;
21
+ type PathType<T extends Any> = T["pathSchema"]["Type"];
22
+ type QueryType<T extends Any> = T["querySchema"]["Type"];
23
+ }
24
+ export declare function make<const P extends string, S extends Schema.Codec<any, Path.Params<P>, any, any> = Schema.Codec<Path.Params<P>>>(ast: AST.RouteAst): Route<P, S>;
25
+ export declare const Parse: <const P extends string>(path: P) => Route<Path.Join<Path.ParseAsts<P>>>;
26
+ export declare const Slash: Route<"/", Schema.Codec<{}, {}, never, never>>;
27
+ export declare const Wildcard: Route<"*", Schema.Codec<{
28
+ readonly "*": string;
29
+ }, {
30
+ readonly "*": string;
31
+ }, never, never>>;
32
+ export declare const Param: <const P extends string>(paramName: P) => Route<`/:${P}`>;
33
+ export declare const ParamWithSchema: <const P extends string, S extends Schema.Codec<any, string, any, any> = Schema.Codec<string>>(paramName: P, schema: S) => Route<`/:${P}`, Schema.Codec<{ readonly [K in P]: S["Type"]; }, Path.Params<`/:${P}`>, S["DecodingServices"], S["EncodingServices"]>>;
34
+ export declare const Number: <const P extends string>(paramName: P) => Route<`/:${P}`, Schema.Codec<{ readonly [K in P]: number; }, Path.Params<`/:${P}`>>>;
35
+ export declare const Int: <const P extends string>(paramName: P) => Route<`/:${P}`, Schema.Codec<{ readonly [K in P]: number; }, Path.Params<`/:${P}`>>>;
36
+ export type Join<Routes extends ReadonlyArray<Route<any, any>>> = [
37
+ Route<RouteJoinPath<Routes>, Schema.Codec<Simplify<UnionToIntersection<Routes[number]["paramsSchema"]["Type"]>>, Path.Params<RouteJoinPath<Routes>>, Routes[number]["paramsSchema"]["DecodingServices"], Routes[number]["paramsSchema"]["EncodingServices"]>>
38
+ ] extends [Route<infer Path, infer Schema>] ? Route<Path, Schema> : never;
39
+ type AnyRoutes = ReadonlyArray<Route<any, any> | ReadonlyArray<Route<any, any>>>;
40
+ type FlattenRoutes<T extends AnyRoutes> = T extends readonly [
41
+ infer Head extends Route<any, any> | ReadonlyArray<Route<any, any>>,
42
+ ...infer Tail extends AnyRoutes
43
+ ] ? readonly [
44
+ ...(Head extends ReadonlyArray<Route<any, any>> ? FlattenRoutes<Head> : [Head]),
45
+ ...FlattenRoutes<Tail>
46
+ ] : [];
47
+ export declare const Join: <const Routes extends AnyRoutes>(...routes: Routes) => Join<FlattenRoutes<Routes>>;
48
+ type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
49
+ type RouteJoinPath<Routes extends ReadonlyArray<Route<any, any>>, R extends string = ""> = Routes extends readonly [
50
+ infer First extends Route<any, any>,
51
+ ...infer Rest extends ReadonlyArray<Route<any, any>>
52
+ ] ? RouteJoinPath<Rest, `${R}/${StripSlashes<First["path"]>}`> : R;
53
+ type StripSlashes<T extends string> = StripTrailingSlash<StripLeadingSlash<T>>;
54
+ type StripLeadingSlash<T extends string> = T extends `/${infer Rest}` ? StripLeadingSlash<Rest> : T;
55
+ type StripTrailingSlash<T extends string> = T extends `/${infer Rest}` ? StripTrailingSlash<Rest> : T;
56
+ export {};
57
+ //# sourceMappingURL=Route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../src/Route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,KAAK,CACpB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACpF,SAAQ,QAAQ;IAChB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAEjB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAY,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAElC,KAAY,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChE,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClE,KAAY,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACxE,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpF,KAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;IAChG,KAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;IAEhG,KAAY,QAAQ,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9D,KAAY,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;CACjE;AAED,wBAAgB,IAAI,CAClB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACpF,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAyBhC;AAsID,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,CAAC,KAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAOzF,CAAC;AAEF,eAAO,MAAM,KAAK,gDAAuC,CAAC;AAE1D,eAAO,MAAM,QAAQ;;;;iBAAsC,CAAC;AAE5D,eAAO,MAAM,KAAK,GAAI,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,CAAC,KAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CACvB,CAAC;AAErD,eAAO,MAAM,eAAe,GAC1B,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAEpE,WAAW,CAAC,EACZ,QAAQ,CAAC,KACR,KAAK,CACN,KAAK,CAAC,EAAE,EACR,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAE,EAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EACrB,CAAC,CAAC,kBAAkB,CAAC,EACrB,CAAC,CAAC,kBAAkB,CAAC,CACtB,CAiBF,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,CAAC,CAAC,SAAS,MAAM,EAC3C,WAAW,CAAC,KACX,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAChC,CAAC;AAEtD,eAAO,MAAM,GAAG,GAAI,KAAK,CAAC,CAAC,SAAS,MAAM,EACxC,WAAW,CAAC,KACX,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CACE,CAAC;AAExF,MAAM,MAAM,IAAI,CAAC,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI;IAChE,KAAK,CACH,aAAa,CAAC,MAAM,CAAC,EACrB,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACrE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,kBAAkB,CAAC,EAClD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,kBAAkB,CAAC,CACnD,CACF;CACF,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,MAAM,MAAM,CAAC,CAAC,GACvC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,GACnB,KAAK,CAAC;AAEV,KAAK,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,SAAS;IAC3D,MAAM,IAAI,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,GAAG,MAAM,IAAI,SAAS,SAAS;CAChC,GACG,SAAS;IACP,GAAG,CAAC,IAAI,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/E,GAAG,aAAa,CAAC,IAAI,CAAC;CACvB,GACD,EAAE,CAAC;AAOP,eAAO,MAAM,IAAI,GAAI,KAAK,CAAC,MAAM,SAAS,SAAS,EACjD,GAAG,QAAQ,MAAM,KAChB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAQ1B,CAAC;AAEJ,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,GAC7F,CAAC,GACD,KAAK,CAAC;AACV,KAAK,aAAa,CAChB,MAAM,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC7C,CAAC,SAAS,MAAM,GAAG,EAAE,IACnB,MAAM,SAAS,SAAS;IAC1B,MAAM,KAAK,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IACnC,GAAG,MAAM,IAAI,SAAS,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACrD,GACG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAC1D,CAAC,CAAC;AACN,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,KAAK,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpG,KAAK,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,EAAE,GAClE,kBAAkB,CAAC,IAAI,CAAC,GACxB,CAAC,CAAC"}