@nymphjs/tilmeld 1.0.0-alpha.27 → 1.0.0-alpha.30

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/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.0.0-alpha.30](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.29...v1.0.0-alpha.30) (2022-01-07)
7
+
8
+ ### Features
9
+
10
+ - await for callbacks on registration ([d1e2f03](https://github.com/sciactive/nymphjs/commit/d1e2f03f3c8e03e6fd7cef892eda61e9d222e1fc))
11
+
12
+ # [1.0.0-alpha.29](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.28...v1.0.0-alpha.29) (2022-01-07)
13
+
14
+ ### Features
15
+
16
+ - add additionalData in register and login data ([b906cd6](https://github.com/sciactive/nymphjs/commit/b906cd66715098019ca55c3562de72cbf7669ca7))
17
+
18
+ # [1.0.0-alpha.28](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.27...v1.0.0-alpha.28) (2022-01-07)
19
+
20
+ ### Features
21
+
22
+ - add callbacks for user registration, login, and logout ([0dd621e](https://github.com/sciactive/nymphjs/commit/0dd621e85d082b9a753cafae16a120620b41164e))
23
+
6
24
  # [1.0.0-alpha.27](https://github.com/sciactive/nymphjs/compare/v1.0.0-alpha.26...v1.0.0-alpha.27) (2022-01-05)
7
25
 
8
26
  ### Features
package/dist/User.d.ts CHANGED
@@ -2,6 +2,27 @@ import { EntityData, EntityJson, EntityPatch, SerializedEntityData } from '@nymp
2
2
  import type Tilmeld from './Tilmeld';
3
3
  import AbleObject from './AbleObject';
4
4
  import Group, { GroupData } from './Group';
5
+ export declare type EventType = 'beforeRegister' | 'afterRegister' | 'beforeLogin' | 'afterLogin' | 'beforeLogout' | 'afterLogout';
6
+ export declare type TilmeldBeforeRegisterCallback = (user: User & UserData, data: {
7
+ password: string;
8
+ additionalData?: {
9
+ [k: string]: any;
10
+ };
11
+ }) => Promise<void> | void;
12
+ export declare type TilmeldAfterRegisterCallback = (user: User & UserData, result: {
13
+ loggedin: boolean;
14
+ message: string;
15
+ }) => Promise<void> | void;
16
+ export declare type TilmeldBeforeLoginCallback = (user: User & UserData, data: {
17
+ username: string;
18
+ password: string;
19
+ additionalData?: {
20
+ [k: string]: any;
21
+ };
22
+ }) => void;
23
+ export declare type TilmeldAfterLoginCallback = (user: User & UserData) => void;
24
+ export declare type TilmeldBeforeLogoutCallback = (user: User & UserData) => void;
25
+ export declare type TilmeldAfterLogoutCallback = (user: User & UserData) => void;
5
26
  export declare type UserData = {
6
27
  abilities?: string[];
7
28
  username?: string;
@@ -32,6 +53,12 @@ export default class User extends AbleObject<UserData> {
32
53
  static tilmeld: Tilmeld;
33
54
  static ETYPE: string;
34
55
  static class: string;
56
+ private static beforeRegisterCallbacks;
57
+ private static afterRegisterCallbacks;
58
+ private static beforeLoginCallbacks;
59
+ private static afterLoginCallbacks;
60
+ private static beforeLogoutCallbacks;
61
+ private static afterLogoutCallbacks;
35
62
  private static DEFAULT_CLIENT_ENABLED_METHODS;
36
63
  private static DEFAULT_PRIVATE_DATA;
37
64
  private static DEFAULT_ALLOWLIST_DATA;
@@ -79,6 +106,9 @@ export default class User extends AbleObject<UserData> {
79
106
  static loginUser(data: {
80
107
  username: string;
81
108
  password: string;
109
+ additionalData?: {
110
+ [k: string]: any;
111
+ };
82
112
  }): Promise<{
83
113
  result: boolean;
84
114
  message: string;
@@ -87,13 +117,16 @@ export default class User extends AbleObject<UserData> {
87
117
  $login(data: {
88
118
  username: string;
89
119
  password: string;
120
+ additionalData?: {
121
+ [k: string]: any;
122
+ };
90
123
  }): {
91
124
  result: boolean;
92
- message: string;
125
+ message: any;
93
126
  };
94
127
  $logout(): {
95
128
  result: boolean;
96
- message: string;
129
+ message: any;
97
130
  };
98
131
  $getAvatar(): string;
99
132
  $getDescendantGroups(): Promise<(Group & GroupData)[]>;
@@ -132,6 +165,9 @@ export default class User extends AbleObject<UserData> {
132
165
  }>;
133
166
  $register(data: {
134
167
  password: string;
168
+ additionalData?: {
169
+ [k: string]: any;
170
+ };
135
171
  }): Promise<{
136
172
  result: boolean;
137
173
  loggedin: boolean;
@@ -141,4 +177,6 @@ export default class User extends AbleObject<UserData> {
141
177
  $saveSkipAC(): Promise<boolean>;
142
178
  $tilmeldSaveSkipAC(): boolean;
143
179
  $delete(): Promise<boolean>;
180
+ static on<T extends EventType>(event: T, callback: T extends 'beforeRegister' ? TilmeldBeforeRegisterCallback : T extends 'afterRegister' ? TilmeldAfterRegisterCallback : T extends 'beforeLogin' ? TilmeldBeforeLoginCallback : T extends 'afterLogin' ? TilmeldAfterLoginCallback : T extends 'beforeLogout' ? TilmeldBeforeLogoutCallback : T extends 'afterLogout' ? TilmeldAfterLogoutCallback : never): () => boolean;
181
+ static off<T extends EventType>(event: T, callback: T extends 'beforeRegister' ? TilmeldBeforeRegisterCallback : T extends 'afterRegister' ? TilmeldAfterRegisterCallback : T extends 'beforeLogin' ? TilmeldBeforeLoginCallback : T extends 'afterLogin' ? TilmeldAfterLoginCallback : T extends 'beforeLogout' ? TilmeldBeforeLogoutCallback : T extends 'afterLogout' ? TilmeldAfterLogoutCallback : never): boolean;
144
182
  }
package/dist/User.js CHANGED
@@ -223,14 +223,54 @@ class User extends AbleObject_1.default {
223
223
  if (!this.$checkPassword(data.password)) {
224
224
  return { result: false, message: 'Incorrect login/password.' };
225
225
  }
226
+ try {
227
+ for (let callback of this.constructor
228
+ .beforeLoginCallbacks) {
229
+ if (callback) {
230
+ callback(this, data);
231
+ }
232
+ }
233
+ }
234
+ catch (e) {
235
+ return {
236
+ result: false,
237
+ message: e.message,
238
+ };
239
+ }
226
240
  if (!tilmeld.login(this, true)) {
227
241
  return { result: false, message: 'Incorrect login/password.' };
228
242
  }
243
+ for (let callback of this.constructor
244
+ .afterLoginCallbacks) {
245
+ if (callback) {
246
+ callback(this);
247
+ }
248
+ }
229
249
  return { result: true, message: 'You are logged in.' };
230
250
  }
231
251
  $logout() {
232
252
  const tilmeld = this.$nymph.tilmeld;
253
+ try {
254
+ for (let callback of this.constructor
255
+ .beforeLogoutCallbacks) {
256
+ if (callback) {
257
+ callback(this);
258
+ }
259
+ }
260
+ }
261
+ catch (e) {
262
+ return {
263
+ result: false,
264
+ message: e.message,
265
+ };
266
+ }
233
267
  tilmeld.logout();
268
+ for (let callback of this.constructor
269
+ .afterLogoutCallbacks) {
270
+ if (callback) {
271
+ callback(this);
272
+ }
273
+ }
234
274
  return { result: true, message: 'You have been logged out.' };
235
275
  }
236
276
  $getAvatar() {
@@ -707,6 +747,21 @@ class User extends AbleObject_1.default {
707
747
  message: 'This is already a registered user.',
708
748
  };
709
749
  }
750
+ try {
751
+ for (let callback of this.constructor
752
+ .beforeRegisterCallbacks) {
753
+ if (callback) {
754
+ yield callback(this, data);
755
+ }
756
+ }
757
+ }
758
+ catch (e) {
759
+ return {
760
+ result: false,
761
+ loggedin: false,
762
+ message: e.message,
763
+ };
764
+ }
710
765
  if (!('password' in data) || !data.password.length) {
711
766
  return {
712
767
  result: false,
@@ -857,6 +912,15 @@ class User extends AbleObject_1.default {
857
912
  message += "You're now registered and logged in!";
858
913
  loggedin = true;
859
914
  }
915
+ for (let callback of this.constructor
916
+ .afterRegisterCallbacks) {
917
+ if (callback) {
918
+ yield callback(this, {
919
+ loggedin,
920
+ message,
921
+ });
922
+ }
923
+ }
860
924
  yield tnymph.commit(transaction);
861
925
  this.$nymph = nymph;
862
926
  return {
@@ -1127,10 +1191,35 @@ class User extends AbleObject_1.default {
1127
1191
  return yield _super.$delete.call(this);
1128
1192
  });
1129
1193
  }
1194
+ static on(event, callback) {
1195
+ const prop = (event + 'Callbacks');
1196
+ if (!(prop in this)) {
1197
+ throw new Error('Invalid event type.');
1198
+ }
1199
+ this[prop].push(callback);
1200
+ return () => this.off(event, callback);
1201
+ }
1202
+ static off(event, callback) {
1203
+ const prop = (event + 'Callbacks');
1204
+ if (!(prop in this)) {
1205
+ return false;
1206
+ }
1207
+ const i = this[prop].indexOf(callback);
1208
+ if (i > -1) {
1209
+ this[prop].splice(i, 1);
1210
+ }
1211
+ return true;
1212
+ }
1130
1213
  }
1131
1214
  exports.default = User;
1132
1215
  User.ETYPE = 'tilmeld_user';
1133
1216
  User.class = 'User';
1217
+ User.beforeRegisterCallbacks = [];
1218
+ User.afterRegisterCallbacks = [];
1219
+ User.beforeLoginCallbacks = [];
1220
+ User.afterLoginCallbacks = [];
1221
+ User.beforeLogoutCallbacks = [];
1222
+ User.afterLogoutCallbacks = [];
1134
1223
  User.DEFAULT_CLIENT_ENABLED_METHODS = [
1135
1224
  '$checkUsername',
1136
1225
  '$checkEmail',
package/dist/User.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"User.js","sourceRoot":"","sources":["../src/User.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAQA,+EAAuD;AACvD,mCAAgD;AAChD,yDAAqD;AACrD,sEAA0C;AAC1C,8DAAsC;AACtC,wDAAgC;AAChC,mCAAoC;AAGpC,8DAAsC;AAEtC,qCAKkB;AAiHlB,MAAqB,IAAK,SAAQ,oBAAoB;IAoGpD,YAAY,IAAa;QACvB,KAAK,CAAC,IAAI,CAAC,CAAC;QAjEJ,0BAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAQjE,iBAAY,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAE9C,mBAAc,GAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnD,mBAAc,GAAc,EAAE,CAAC;QAYjC,sBAAiB,GAAG,KAAK,CAAC;QA4ChC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAErB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;IACH,CAAC;IAtCD,MAAM,CAAO,OAAO,CAAC,IAAa;;;;;YAChC,OAAO,CAAC,MAAM,OAAM,OAAO,YAAC,IAAI,CAAC,CAAoB,CAAC;QACxD,CAAC;KAAA;IAED,MAAM,CAAO,eAAe,CAAC,QAAiB;;YAC5C,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACvC;oBACE,KAAK,EAAE,IAAI;iBACZ,EACD;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACpE,CACF,CAAC;gBACF,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,OAAO,MAAM,CAAC;iBACf;aACF;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAED,MAAM,CAAC,WAAW,CAAC,IAAa;QAC9B,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAoB,CAAC;IACpD,CAAC;IAmBM,MAAM,CAAC,OAAO,CACnB,sBAAgC;QAEhC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE;YACpC,OAAO,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAQM,MAAM,CAAO,YAAY,CAAC,IAGhC;;;YACC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;gBACnC,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,kCAAkC;iBAC5C,CAAC;aACH;YAED,IAAI,IAAqB,CAAC;YAC1B,MAAM,OAAO,GAAiB,EAAE,CAAC;YAEjC,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc;gBACnC,IAAI,CAAC,YAAY,KAAK,UAAU,EAChC;gBAGA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CACxC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAC1C;oBACE,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACrE,CACF,CAAC;gBAEF,IAAI,OAAO,IAAI,IAAI,EAAE;oBACnB,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,sCAAsC;qBAChD,CAAC;iBACH;gBAGD,IAAI,GAAG,OAAO,CAAC;gBACf,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;gBACrC,OAAO,CAAC,OAAO,GAAG;oBAChB,EAAE,EAAE;wBACF,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE;wBACrB,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;qBAC1B;iBACF,CAAC;gBACF,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;aACrB;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE;gBAG3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEtE,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;oBACxB,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,sCAAsC;qBAChD,CAAC;iBACH;gBAGD,OAAO,CAAC,aAAa,GAAG,IAAA,uBAAc,EAAC,oCAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE;oBAClC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;iBACrE;gBAGD,IAAI,GAAG,OAAO,CAAC;gBACf,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;gBACrC,OAAO,CAAC,OAAO,GAAG;oBAChB,EAAE,EAAE;wBACF,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE;wBACrB,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE;qBAC1B;iBACF,CAAC;gBACF,OAAO,CAAC,MAAM,GAAG;oBACf,WAAW,EAAE,OAAO,CAAC,aAAa;oBAClC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB;iBACnD,CAAC;aACH;iBAAM;gBACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;aAC7D;YAGD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;gBACpE,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,OAAO,EACL,yDAAyD;wBACzD,qDAAqD;iBACxD,CAAC;aACH;iBAAM;gBACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;aACpE;;KACF;IAQM,MAAM,CAAO,OAAO,CAAC,IAI3B;;;YACC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE;gBACnC,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,kCAAkC;iBAC5C,CAAC;aACH;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpE,IACE,IAAI,CAAC,IAAI,IAAI,IAAI;gBACjB,IAAI,CAAC,aAAa,IAAI,IAAI;gBAC1B,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa;gBAClC,IAAA,mBAAS,EACP,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAC7C,IAAI,CAAC,KAAK,CAAC,CAAC,MAAA,IAAI,CAAC,iBAAiB,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CACjD;oBACC,IAAI;oBACJ,IAAI,CAAC,GAAG,EAAE,EACZ;gBACA,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,iCAAiC;iBAC3C,CAAC;aACH;YAED,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAClD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;aAChE;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,aAAa,CAAC;YAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC9B,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC5B,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,OAAO,EACL,2EAA2E;iBAC9E,CAAC;aACH;iBAAM;gBACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;aACjE;;KACF;IAEM,MAAM,CAAC,eAAe;QAC3B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS;YACxC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;YAC1C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc;YAClD,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB;YACxD,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB;YAC5D,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;YAC1C,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;YAC5C,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;SACvD,CAAC;IACJ,CAAC;IAEM,MAAM,CAAO,SAAS,CAAC,IAA4C;;YACxE,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAClD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;aAChE;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;aACpB;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;IAEM,MAAM,CAAC,IAA4C;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;SAChE;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACvB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;SAC7D;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;SAChE;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;SAChE;QAGD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;YAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;SAChE;QAGD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IACzD,CAAC;IAMM,OAAO;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IAChE,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;YACzD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;YACvD,OAAO,+CAA+C,CAAC;SACxD;QACD,OAAO,CACL,qCAAqC;YACrC,IAAA,aAAG,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE;YACrD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAKY,oBAAoB;;;YAC/B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;gBAClC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;oBAC5B,IAAI,CAAC,iBAAiB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;iBACnE;gBACD,KAAK,IAAI,QAAQ,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE;oBAC5C,IAAI,CAAC,iBAAiB,GAAG,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,CACrD,MAAM,QAAQ,CAAC,eAAe,EAAE,CACjC,CAAC;iBACH;aACF;YACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;;KAC/B;IAKM,wBAAwB;;QAC7B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;aACjE;YACD,KAAK,IAAI,QAAQ,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE;gBAC5C,IAAI,CAAC,iBAAiB,GAAG,MAAA,IAAI,CAAC,iBAAiB,0CAAE,MAAM,CACrD,QAAQ,CAAC,mBAAmB,EAAE,CAC/B,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEM,eAAe,CAAC,KAAiB,EAAE,aAAa,GAAG,KAAK;;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IACE,CAAA,MAAA,KAAK,CAAC,IAAI,CAAC,SAAS,0CAAE,OAAO,CAAC,cAAc,CAAC,MAAK,CAAC,CAAC;YACpD,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,cAAc,CAAC,MAAK,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACnC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EACnC;YACA,MAAM,IAAI,qBAAY,CACpB,gEAAgE,CACjE,CAAC;SACH;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAEM,gBAAgB,CAAC,KAAkB,EAAE,aAAa,GAAG,KAAK;;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IACE,CAAA,MAAA,KAAK,CAAC,GAAG,CAAC,SAAS,0CAAE,OAAO,CAAC,cAAc,CAAC,MAAK,CAAC,CAAC;YACnD,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,cAAc,CAAC,MAAK,CAAC,CAAC;YACpD,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;YACnC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,EACnC;YACA,MAAM,IAAI,qBAAY,CACpB,gEAAgE,CACjE,CAAC;SACH;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ,CAAC,IAAgB,EAAE,KAA4B;QAC5D,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAOM,qBAAqB,CAAC,SAA2B;;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,IAAI,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/C,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEvD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;QAED,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAGrD,MAAM,SAAS,GACb,MAAA,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI;YAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;YACtB,CAAC,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC,mCAAI,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAEpC,IAAI,aAAa,EAAE;YAEjB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;SAC3D;QAED,IACE,IAAI,IAAI,IAAI;YACZ,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACxC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAC3C;YAEA,IAAI,CAAC,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;SACjC;aAAM,IAAI,aAAa,IAAI,SAAS,EAAE;YAErC,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,IAAI,SAAS,EAAE;gBACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClC;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnC;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACnC;YACD,IAAI,CAAC,YAAY,GAAG;gBAClB,QAAQ;gBACR,gBAAgB;gBAChB,oBAAoB;gBACpB,mBAAmB;gBACnB,iBAAiB;gBACjB,eAAe;gBACf,mBAAmB;gBACnB,UAAU;gBACV,MAAM;aACP,CAAC;SACH;IACH,CAAC;IAgBM,WAAW,CAAC,OAAgB;;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,MAAA,MAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,0CAAE,GAAG,CAAC,IAAI,CAAC,mCAAI,KAAK,CAAC;SACnD;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YACjC,IAAI,SAAS,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC/B,KAAK,IAAI,QAAQ,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE;oBAC5C,IAAI,QAAQ,CAAC,OAAO,EAAE;wBACpB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAA,QAAQ,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC;qBACxD;iBACF;gBACD,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;oBACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;oBAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EACxB;oBACA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC;iBAChE;aACF;YACD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACxC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAC5C,CAAC;SACH;QACD,OAAO,CACL,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CACxC,CAAC;IACJ,CAAC;IAEM,WAAW;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IAOY,sBAAsB;;;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,OAAO,KAAK,CAAC;aACd;YACD,IAAI,OAAO,GAAG,IAAI,CAAC;YAEnB,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GACjE,OAAO,CAAC,MAAM,CAAC,SACjB,SAAS,CAAC;YAEV,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC7B,MAAM,IAAI,GAAG,GAAG,SAAS,qBAAqB,kBAAkB,CAC9D,IAAI,CAAC,IAAI,CACV,WAAW,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,OAAO;oBACL,OAAO;wBACP,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAC7B,OAAO,EACP;4BACE,QAAQ,EAAE,aAAa;4BACvB,OAAO,EAAE;gCACP,EAAE,EAAE;oCACF,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE;oCAC3B,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE;iCAChC;6BACF;4BACD,MAAM,EAAE;gCACN,UAAU,EAAE,IAAI;6BACjB;yBACF,EACD,IAAI,CACL,CAAC,CAAC;aACN;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE;gBACrC,MAAM,IAAI,GAAG,GAAG,SAAS,2BAA2B,kBAAkB,CACpE,IAAI,CAAC,IAAI,CACV,WAAW,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5D,OAAO;oBACL,OAAO;wBACP,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAC7B,OAAO,EACP;4BACE,QAAQ,EAAE,mBAAmB;4BAC7B,OAAO,EAAE;gCACP,EAAE,EAAE;oCACF,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE;oCAC3B,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,EAAE;iCAC1C;6BACF;4BACD,MAAM,EAAE;gCACN,UAAU,EAAE,IAAI;gCAChB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;gCACvC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;6BACrC;yBACF,EACD,IAAI,CACL,CAAC,CAAC;aACN;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE;gBACxC,MAAM,IAAI,GAAG,GAAG,SAAS,2BAA2B,kBAAkB,CACpE,IAAI,CAAC,IAAI,CACV,WAAW,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC/D,OAAO;oBACL,OAAO;wBACP,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAC7B,OAAO,EACP;4BACE,QAAQ,EAAE,mBAAmB;4BAC7B,OAAO,EAAE;gCACP,EAAE,EAAE;oCACF,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,IAAI,mCAAI,EAAE;oCAC3B,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,mCAAI,EAAE;iCAC7C;6BACF;4BACD,MAAM,EAAE;gCACN,UAAU,EAAE,IAAI;gCAChB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;gCACvC,QAAQ,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,IAAI,CAAC,KAAK,CAAC,KAAK;6BACzD;yBACF,EACD,IAAI,CACL,CAAC,CAAC;aACN;YAED,OAAO,OAAO,CAAC;;KAChB;IAQM,SAAS,CAAC,KAAwB;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;SACxB;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQM,cAAc,CAAC,QAAgB;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC/B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;YAC1C,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,oBAAM,CAAC,CAAC;YACnE,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,QAAQ;oBACnB,IAAA,gBAAM,EAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oBAAM,CAAC,CACpD,CAAC;SACL;IACH,CAAC;IAQM,SAAS,CAAC,KAAwB;QACvC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAClE,MAAM,SAAS,GAA0B,EAAE,CAAC;YAC5C,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACxB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC1B;aACF;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAQM,QAAQ,CAAC,KAAmC;;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,IAAI,MAAK,KAAK,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;YACD,KAAK,IAAI,QAAQ,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE;gBAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE;oBAC3B,OAAO,IAAI,CAAC;iBACb;aACF;YACD,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CACL,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC;IAQM,aAAa,CAAC,KAAmC;;QAEtD,IACE,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,KAAK,KAAI,IAAI;YAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EACrC;YACA,OAAO,IAAI,CAAC;SACb;QACD,KAAK,IAAI,QAAQ,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,EAAE;YAC5C,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAQY,eAAe,CAAC,IAG5B;;;YACC,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;aACjE;YACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAA,IAAI,CAAC,eAAe,mCAAI,EAAE,CAAC,EAAE;gBACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;aAC1D;YACD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3C,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;gBACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;aACrE;iBAAM;gBACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;aAClE;;KACF;IAQM,SAAS,CAAC,QAAgB;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;QAC/C,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC/B,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC/B,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,oBAAM,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,MAAM,CAAC;YACZ;gBACE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAA,eAAM,GAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAA,gBAAM,EAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAC/D,oBAAM,CACP,CAAC;gBACF,MAAM;SACT;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAOY,cAAc;;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBAClC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC9D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;iBACjE;gBACD,IACE,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAC7D;oBACA,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EACL,4BAA4B;4BAC5B,OAAO,CAAC,MAAM,CAAC,iBAAiB;4BAChC,cAAc;qBACjB,CAAC;iBACH;gBAED,IACE,IAAA,mBAAU,EACR,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAC7B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC,CAAC,MAAM,EACR;oBACA,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;qBACzC,CAAC;iBACH;gBACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACxD,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB;qBACzC,CAAC;iBACH;gBAED,MAAM,QAAQ,GAAa;oBACzB,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE;wBACL,UAAU;wBACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;qBAC1D;iBACF,CAAC;gBACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;oBACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;iBAC/B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EACrC,QAAQ,CACT,CAAC;gBACF,IAAI,IAAI,IAAI,IAAI,EAAE;oBAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;iBAC9D;gBAED,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,OAAO,EACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,wBAAwB;iBACtE,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACvC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAC9D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;iBAC/D;gBACD,IACE,OAAO,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAC7D;oBACA,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,OAAO,EACL,yBAAyB;4BACzB,OAAO,CAAC,MAAM,CAAC,iBAAiB;4BAChC,cAAc;qBACjB,CAAC;iBACH;gBAED,OAAO,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aACjC;QACH,CAAC;KAAA;IAOY,WAAW;;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;gBACxD,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;iBAC/D;qBAAM;oBACL,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;iBACtC;aACF;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC1D,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB;iBAC9C,CAAC;aACH;YACD,MAAM,QAAQ,GAAa;gBACzB,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACzE,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;aAC/B;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EACrC,QAAQ,CACT,CAAC;YACF,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,2CAA2C;iBACrD,CAAC;aACH;YAED,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,yBAAyB;aACpE,CAAC;QACJ,CAAC;KAAA;IAOY,WAAW;;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;gBACxD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;aACrE;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACjC,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,OAAO,EACL,wEAAwE;iBAC3E,CAAC;aACH;YACD,MAAM,QAAQ,GAAa;gBACzB,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;aAChC,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;aAC/B;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EACrC,QAAQ,CACT,CAAC;YACF,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;aAC9D;YAED,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EACL,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB;aAC1E,CAAC;QACJ,CAAC;KAAA;IAEY,SAAS,CAAC,IAEtB;;YACC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACrC,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,8BAA8B;iBACxC,CAAC;aACH;YACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrB,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,oCAAoC;iBAC9C,CAAC;aACH;YACD,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAClD,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,+BAA+B;iBACzC,CAAC;aACH;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,uCAAY,OAAO,KAAE,QAAQ,EAAE,KAAK,IAAG;aACxC;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBACnD,IAAI,CAAC,KAAK,CAAC,IAAI;oBACb,IAAI,CAAC,KAAK,CAAC,SAAS;wBACpB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;wBAClE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACjE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACvC;aACF;YACD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aACxC;YAGD,MAAM,WAAW,GAAG,mBAAmB,GAAG,IAAA,eAAM,GAAE,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,IAAI;gBAEF,IAAI,qBAAqB,GAA+B,IAAI,CAAC;gBAC7D,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE;oBAElC,qBAAqB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACtD,qBAAqB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACtD,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBACjD,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC7C,qBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CACnC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC;qBAChC,CACF,CAAC;oBACF,IAAI,MAAM,IAAI,IAAI,EAAE;wBAClB,qBAAqB,CAAC,MAAM,GAAG,MAAM,CAAC;qBACvC;oBACD,IAAI,CAAC,CAAC,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE;wBAChD,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;wBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,OAAO;4BACL,MAAM,EAAE,KAAK;4BACb,QAAQ,EAAE,KAAK;4BACf,OAAO,EAAE,wCAAwC;yBAClD,CAAC;qBACH;oBACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,qBAAqB,CAAC;iBAC1C;qBAAM;oBAEL,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAClC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC;qBAChC,CACF,CAAC;oBACF,IAAI,KAAK,IAAI,IAAI,EAAE;wBACjB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;qBAC1B;iBACF;gBAGD,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;oBAEjE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAC1C,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC;qBACrC,CACF,CAAC;iBACH;qBAAM;oBAEL,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAC1C,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EACxB;wBACE,IAAI,EAAE,GAAG;wBACT,KAAK,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC;qBAClC,CACF,CAAC;iBACH;gBAED,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;oBAE9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;wBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;qBAC5B;iBACF;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;iBAC3B;gBAID,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC9B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;wBAC1C,KAAK,EAAE,OAAO,CAAC,IAAI;wBACnB,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,MAAM;qBACf,CAAC,CAAC;oBAEH,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;wBACtB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;wBAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;wBAC1B,SAAS,GAAG,IAAI,CAAC;qBAClB;iBACF;gBAED,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE;oBAE5B,IAAI,OAAO,CAAC,MAAM,CAAC,uBAAuB,IAAI,IAAI,EAAE;wBAClD,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAC5B,OAAO,EACP;4BACE,QAAQ,EAAE,gBAAgB;4BAC1B,OAAO,EAAE;gCACP,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB;6BAC3C;4BACD,MAAM,EAAE;gCACN,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gCACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gCACzB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gCACnC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gCACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gCAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;6BAC5B;yBACF,EACD,IAAI,CACL,CAAC;qBACH;oBAED,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;oBAGrB,IAAI,qBAAqB,IAAI,IAAI,EAAE;wBACjC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC;wBAClC,IAAI,CAAC,CAAC,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE;4BAChD,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;4BACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;4BACpB,OAAO;gCACL,MAAM,EAAE,KAAK;gCACb,QAAQ,EAAE,KAAK;gCACf,OAAO,EACL,mEAAmE;6BACtE,CAAC;yBACH;qBACF;oBAGD,IACE,OAAO,CAAC,MAAM,CAAC,WAAW;wBAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;wBAChC,CAAC,SAAS,EACV;wBACA,OAAO;4BACL,2CAA2C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;gCAC9D,0DAA0D,CAAC;qBAC9D;yBAAM,IACL,OAAO,CAAC,MAAM,CAAC,WAAW;wBAC1B,OAAO,CAAC,MAAM,CAAC,gBAAgB;wBAC/B,CAAC,SAAS,EACV;wBACA,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC1B,OAAO;4BACL,kDAAkD;gCAClD,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,8CAA8C;gCACjE,eAAe,CAAC;wBAClB,QAAQ,GAAG,IAAI,CAAC;qBACjB;yBAAM;wBACL,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBAC1B,OAAO,IAAI,sCAAsC,CAAC;wBAClD,QAAQ,GAAG,IAAI,CAAC;qBACjB;oBACD,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,OAAO;wBACL,MAAM,EAAE,IAAI;wBACZ,QAAQ;wBACR,OAAO;qBACR,CAAC;iBACH;qBAAM;oBACL,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,OAAO;wBACL,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,yBAAyB;qBACnC,CAAC;iBACH;aACF;YAAC,OAAO,CAAM,EAAE;gBACf,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM,CAAC,CAAC;aACT;QACH,CAAC;KAAA;IAEY,KAAK;;;;;;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;gBACrE,OAAO,KAAK,CAAC;aACd;YAED,IACE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC;gBACnC,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAChC;gBACA,MAAM,IAAI,qBAAY,CACpB,uDAAuD,CACxD,CAAC;aACH;YAED,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAG7B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aACxC;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,IAAI;gBACb,IAAI,CAAC,KAAK,CAAC,SAAS;oBACpB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1D,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAG1C,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE,EAAE;gBAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;aAC7B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,EAAE;gBAChC,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;aAC9B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,EAAE,EAAE;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC5B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,EAAE;gBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;gBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;aACzB;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC1B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;gBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;aACzB;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC1B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;aACnC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,EAAE;gBACpC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;aAClC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,EAAE,EAAE;gBACrC,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;aACnC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,EAAE,EAAE;gBACvC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACrC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,EAAE,EAAE;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;aACtC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,EAAE,EAAE;gBACnC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;aACjC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBACtC,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACrC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,EAAE,EAAE;gBAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC5B;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,EAAE,EAAE;gBAClC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;aAChC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACzC,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;aACpC;YAGD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,MAAM,IAAI,yBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC7C;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gBAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACnB,MAAM,IAAI,sBAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAC1C;aACF;YAGD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;gBAGxC,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;oBAE9B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;wBAGrB,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,OAAO,CAAC,cAAc,CAAC,mCAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;4BAChE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAA,eAAM,GAAE,CAAC;4BAC7B,gBAAgB,GAAG,IAAI,CAAC;yBACzB;qBACF;yBAAM,IACL,IAAI,CAAC,cAAc,IAAI,IAAI;wBAC3B,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EACxC;wBAEA,IACE,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,EAAE;4BACpC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI;4BAClC,IAAI,CAAC,KAAK,CAAC,eAAe;gCACxB,IAAA,mBAAS,EAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,EACvD;4BACA,MAAM,IAAI,0CAAiC,CACzC,qEAAqE;gCACnE,IAAI,IAAI,CACN,IAAA,mBAAS,EACP,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAC9C,GAAG,IAAI,CACT,CAAC,QAAQ,EAAE;gCACZ,sCAAsC,CACzC,CAAC;yBACH;6BAAM;4BACL,IACE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI;gCACjC,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,EAAE;gCAGpC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI;oCACjC,IAAI,CAAC,KAAK,CAAC,eAAe;wCACxB,IAAA,mBAAS,EAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,EAC1D;gCAEA,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;gCACpD,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAA,eAAM,GAAE,CAAC;gCACxC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;6BACzC;4BAGD,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;4BAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;4BACvC,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;gCACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;6BACxC;4BACD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAA,eAAM,GAAE,CAAC;4BACrC,gBAAgB,GAAG,IAAI,CAAC;yBACzB;qBACF;iBACF;qBAAM,IACL,IAAI,CAAC,IAAI,IAAI,IAAI;oBACjB,IAAI,CAAC,cAAc,IAAI,IAAI;oBAC3B,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;oBAGxC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI;wBACjC,IAAI,CAAC,KAAK,CAAC,eAAe;4BACxB,IAAA,mBAAS,EAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,EAC1D;oBAGA,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAA,eAAM,GAAE,CAAC;oBACxC,gBAAgB,GAAG,IAAI,CAAC;iBACzB;aACF;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;gBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;aACzC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YAE/B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;gBAC/B,MAAM,IAAI,qBAAY,CAAC,yBAAyB,CAAC,CAAC;aACnD;YAED,IAAI;gBACF,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aACpC;YAAC,OAAO,CAAM,EAAE;gBACf,MAAM,IAAI,qBAAY,CAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,CAAC,CAAC;aACpC;YAGD,MAAM,WAAW,GAAG,eAAe,GAAG,IAAA,eAAM,GAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YAErB,IACE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;gBACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI;gBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAC/B;gBACA,IAAI;oBAEF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC1C,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;iBACtC;gBAAC,OAAO,CAAM,EAAE;oBACf,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;oBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;oBACpB,MAAM,CAAC,CAAC;iBACT;aACF;YAED,IAAI,GAAY,CAAC;YACjB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAE1B,IAAI;gBACF,GAAG,GAAG,MAAM,OAAM,KAAK,WAAE,CAAC;aAC3B;YAAC,OAAO,CAAM,EAAE;gBACf,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM,CAAC,CAAC;aACT;YACD,IAAI,GAAG,EAAE;gBACP,IAAI,gBAAgB,EAAE;oBAEpB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE;wBAC1C,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;wBACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;wBACpB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;wBACtB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;wBACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;qBACtD;iBACF;gBAED,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAExC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAC3B;gBAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBACnC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;gBAClC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aAClC;iBAAM;gBACL,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,GAAG,CAAC;;KACZ;IAKY,WAAW;;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEM,kBAAkB;QACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEY,OAAO;;;;;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAkB,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;gBACxC,MAAM,IAAI,qBAAY,CAAC,+CAA+C,CAAC,CAAC;aACzE;YACD,IACE,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAChC;gBACA,MAAM,IAAI,qBAAY,CACpB,uDAAuD,CACxD,CAAC;aACH;YACD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACxC,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;YACD,OAAO,MAAM,OAAM,OAAO,WAAE,CAAC;QAC/B,CAAC;KAAA;;AAt+CH,uBAu+CC;AAl+CQ,UAAK,GAAG,cAAc,CAAC;AACvB,UAAK,GAAG,MAAM,CAAC;AAEP,mCAA8B,GAAG;IAC9C,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,YAAY;IACZ,WAAW;CACZ,CAAC;AACa,yBAAoB,GAAG;IACpC,OAAO;IACP,eAAe;IACf,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,MAAM;IACN,QAAQ;IACR,iBAAiB;IACjB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;CAClB,CAAC;AACa,2BAAsB,GAAa,EAAE,CAAC;AAGvC,+BAA0B,GAAG;IACzC,SAAS;IACT,WAAW;IACX,cAAc;IACd,SAAS;IACT,iBAAiB;CAClB,CAAC;AAEY,yBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"User.js","sourceRoot":"","sources":["../src/User.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/tilmeld",
3
- "version": "1.0.0-alpha.27",
3
+ "version": "1.0.0-alpha.30",
4
4
  "description": "NymphJS - Tilmeld User and Group System",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "license": "Apache-2.0",
33
33
  "dependencies": {
34
- "@nymphjs/nymph": "^1.0.0-alpha.27",
34
+ "@nymphjs/nymph": "^1.0.0-alpha.30",
35
35
  "crypto-js": "^4.1.1",
36
36
  "email-templates": "^8.0.8",
37
37
  "express": "^4.17.2",
@@ -44,9 +44,9 @@
44
44
  "pug": "^3.0.2"
45
45
  },
46
46
  "devDependencies": {
47
- "@nymphjs/client": "^1.0.0-alpha.27",
48
- "@nymphjs/client-node": "^1.0.0-alpha.27",
49
- "@nymphjs/driver-sqlite3": "^1.0.0-alpha.27",
47
+ "@nymphjs/client": "^1.0.0-alpha.30",
48
+ "@nymphjs/client-node": "^1.0.0-alpha.30",
49
+ "@nymphjs/driver-sqlite3": "^1.0.0-alpha.30",
50
50
  "@tsconfig/recommended": "^1.0.1",
51
51
  "@types/crypto-js": "^4.1.0",
52
52
  "@types/email-templates": "^8.0.4",
@@ -60,5 +60,5 @@
60
60
  "ts-jest": "^27.1.2",
61
61
  "typescript": "^4.5.4"
62
62
  },
63
- "gitHead": "124335edb7c748ab1906f6bb8bc4c53976ed6a80"
63
+ "gitHead": "422fc6f9ffb11b4becb9fe6ded1871a1ab7383c0"
64
64
  }
package/src/User.ts CHANGED
@@ -24,6 +24,44 @@ import {
24
24
  EmailChangeRateLimitExceededError,
25
25
  } from './errors';
26
26
 
27
+ export type EventType =
28
+ | 'beforeRegister'
29
+ | 'afterRegister'
30
+ | 'beforeLogin'
31
+ | 'afterLogin'
32
+ | 'beforeLogout'
33
+ | 'afterLogout';
34
+ /**
35
+ * Theses are run before the user data checks, so the only checks before are
36
+ * whether registration is allowed and whether the user is already registered.
37
+ */
38
+ export type TilmeldBeforeRegisterCallback = (
39
+ user: User & UserData,
40
+ data: { password: string; additionalData?: { [k: string]: any } }
41
+ ) => Promise<void> | void;
42
+ export type TilmeldAfterRegisterCallback = (
43
+ user: User & UserData,
44
+ result: { loggedin: boolean; message: string }
45
+ ) => Promise<void> | void;
46
+ /**
47
+ * These are run after the authentication checks, but before the login action.
48
+ */
49
+ export type TilmeldBeforeLoginCallback = (
50
+ user: User & UserData,
51
+ data: {
52
+ username: string;
53
+ password: string;
54
+ additionalData?: { [k: string]: any };
55
+ }
56
+ ) => void;
57
+ /**
58
+ * This is run before the transaction is committed, and you can perform
59
+ * additional functions on the transaction, which is available in `user.$nymph`.
60
+ */
61
+ export type TilmeldAfterLoginCallback = (user: User & UserData) => void;
62
+ export type TilmeldBeforeLogoutCallback = (user: User & UserData) => void;
63
+ export type TilmeldAfterLogoutCallback = (user: User & UserData) => void;
64
+
27
65
  export type UserData = {
28
66
  /**
29
67
  * The abilities granted to the user.
@@ -142,6 +180,12 @@ export default class User extends AbleObject<UserData> {
142
180
  static tilmeld: Tilmeld;
143
181
  static ETYPE = 'tilmeld_user';
144
182
  static class = 'User';
183
+ private static beforeRegisterCallbacks: TilmeldBeforeRegisterCallback[] = [];
184
+ private static afterRegisterCallbacks: TilmeldAfterRegisterCallback[] = [];
185
+ private static beforeLoginCallbacks: TilmeldBeforeLoginCallback[] = [];
186
+ private static afterLoginCallbacks: TilmeldAfterLoginCallback[] = [];
187
+ private static beforeLogoutCallbacks: TilmeldBeforeLogoutCallback[] = [];
188
+ private static afterLogoutCallbacks: TilmeldAfterLogoutCallback[] = [];
145
189
 
146
190
  private static DEFAULT_CLIENT_ENABLED_METHODS = [
147
191
  '$checkUsername',
@@ -429,7 +473,11 @@ export default class User extends AbleObject<UserData> {
429
473
  };
430
474
  }
431
475
 
432
- public static async loginUser(data: { username: string; password: string }) {
476
+ public static async loginUser(data: {
477
+ username: string;
478
+ password: string;
479
+ additionalData?: { [k: string]: any };
480
+ }) {
433
481
  if (!('username' in data) || !data.username.length) {
434
482
  return { result: false, message: 'Incorrect login/password.' };
435
483
  }
@@ -443,7 +491,11 @@ export default class User extends AbleObject<UserData> {
443
491
  return result;
444
492
  }
445
493
 
446
- public $login(data: { username: string; password: string }) {
494
+ public $login(data: {
495
+ username: string;
496
+ password: string;
497
+ additionalData?: { [k: string]: any };
498
+ }) {
447
499
  const tilmeld = this.$nymph.tilmeld as Tilmeld;
448
500
  if (this.guid == null) {
449
501
  return { result: false, message: 'Incorrect login/password.' };
@@ -458,11 +510,32 @@ export default class User extends AbleObject<UserData> {
458
510
  return { result: false, message: 'Incorrect login/password.' };
459
511
  }
460
512
 
513
+ try {
514
+ for (let callback of (this.constructor as typeof User)
515
+ .beforeLoginCallbacks) {
516
+ if (callback) {
517
+ callback(this, data);
518
+ }
519
+ }
520
+ } catch (e: any) {
521
+ return {
522
+ result: false,
523
+ message: e.message,
524
+ };
525
+ }
526
+
461
527
  // Authentication was successful, attempt to login.
462
528
  if (!tilmeld.login(this, true)) {
463
529
  return { result: false, message: 'Incorrect login/password.' };
464
530
  }
465
531
 
532
+ for (let callback of (this.constructor as typeof User)
533
+ .afterLoginCallbacks) {
534
+ if (callback) {
535
+ callback(this);
536
+ }
537
+ }
538
+
466
539
  // Login was successful.
467
540
  return { result: true, message: 'You are logged in.' };
468
541
  }
@@ -473,7 +546,30 @@ export default class User extends AbleObject<UserData> {
473
546
  */
474
547
  public $logout() {
475
548
  const tilmeld = this.$nymph.tilmeld as Tilmeld;
549
+
550
+ try {
551
+ for (let callback of (this.constructor as typeof User)
552
+ .beforeLogoutCallbacks) {
553
+ if (callback) {
554
+ callback(this);
555
+ }
556
+ }
557
+ } catch (e: any) {
558
+ return {
559
+ result: false,
560
+ message: e.message,
561
+ };
562
+ }
563
+
476
564
  tilmeld.logout();
565
+
566
+ for (let callback of (this.constructor as typeof User)
567
+ .afterLogoutCallbacks) {
568
+ if (callback) {
569
+ callback(this);
570
+ }
571
+ }
572
+
477
573
  return { result: true, message: 'You have been logged out.' };
478
574
  }
479
575
 
@@ -1123,6 +1219,7 @@ export default class User extends AbleObject<UserData> {
1123
1219
 
1124
1220
  public async $register(data: {
1125
1221
  password: string;
1222
+ additionalData?: { [k: string]: any };
1126
1223
  }): Promise<{ result: boolean; loggedin: boolean; message: string }> {
1127
1224
  const tilmeld = this.$nymph.tilmeld as Tilmeld;
1128
1225
  if (!tilmeld.config.allowRegistration) {
@@ -1139,6 +1236,22 @@ export default class User extends AbleObject<UserData> {
1139
1236
  message: 'This is already a registered user.',
1140
1237
  };
1141
1238
  }
1239
+
1240
+ try {
1241
+ for (let callback of (this.constructor as typeof User)
1242
+ .beforeRegisterCallbacks) {
1243
+ if (callback) {
1244
+ await callback(this, data);
1245
+ }
1246
+ }
1247
+ } catch (e: any) {
1248
+ return {
1249
+ result: false,
1250
+ loggedin: false,
1251
+ message: e.message,
1252
+ };
1253
+ }
1254
+
1142
1255
  if (!('password' in data) || !data.password.length) {
1143
1256
  return {
1144
1257
  result: false,
@@ -1329,8 +1442,20 @@ export default class User extends AbleObject<UserData> {
1329
1442
  message += "You're now registered and logged in!";
1330
1443
  loggedin = true;
1331
1444
  }
1445
+
1446
+ for (let callback of (this.constructor as typeof User)
1447
+ .afterRegisterCallbacks) {
1448
+ if (callback) {
1449
+ await callback(this, {
1450
+ loggedin,
1451
+ message,
1452
+ });
1453
+ }
1454
+ }
1455
+
1332
1456
  await tnymph.commit(transaction);
1333
1457
  this.$nymph = nymph;
1458
+
1334
1459
  return {
1335
1460
  result: true,
1336
1461
  loggedin,
@@ -1646,4 +1771,82 @@ export default class User extends AbleObject<UserData> {
1646
1771
  }
1647
1772
  return await super.$delete();
1648
1773
  }
1774
+
1775
+ public static on<T extends EventType>(
1776
+ event: T,
1777
+ callback: T extends 'beforeRegister'
1778
+ ? TilmeldBeforeRegisterCallback
1779
+ : T extends 'afterRegister'
1780
+ ? TilmeldAfterRegisterCallback
1781
+ : T extends 'beforeLogin'
1782
+ ? TilmeldBeforeLoginCallback
1783
+ : T extends 'afterLogin'
1784
+ ? TilmeldAfterLoginCallback
1785
+ : T extends 'beforeLogout'
1786
+ ? TilmeldBeforeLogoutCallback
1787
+ : T extends 'afterLogout'
1788
+ ? TilmeldAfterLogoutCallback
1789
+ : never
1790
+ ) {
1791
+ const prop = (event + 'Callbacks') as T extends 'beforeRegister'
1792
+ ? 'beforeRegisterCallbacks'
1793
+ : T extends 'afterRegister'
1794
+ ? 'afterRegisterCallbacks'
1795
+ : T extends 'beforeLogin'
1796
+ ? 'beforeLoginCallbacks'
1797
+ : T extends 'afterLogin'
1798
+ ? 'afterLoginCallbacks'
1799
+ : T extends 'beforeLogout'
1800
+ ? 'beforeLogoutCallbacks'
1801
+ : T extends 'afterLogout'
1802
+ ? 'afterLogoutCallbacks'
1803
+ : never;
1804
+ if (!(prop in this)) {
1805
+ throw new Error('Invalid event type.');
1806
+ }
1807
+ // @ts-ignore: The callback should always be the right type here.
1808
+ this[prop].push(callback);
1809
+ return () => this.off(event, callback);
1810
+ }
1811
+
1812
+ public static off<T extends EventType>(
1813
+ event: T,
1814
+ callback: T extends 'beforeRegister'
1815
+ ? TilmeldBeforeRegisterCallback
1816
+ : T extends 'afterRegister'
1817
+ ? TilmeldAfterRegisterCallback
1818
+ : T extends 'beforeLogin'
1819
+ ? TilmeldBeforeLoginCallback
1820
+ : T extends 'afterLogin'
1821
+ ? TilmeldAfterLoginCallback
1822
+ : T extends 'beforeLogout'
1823
+ ? TilmeldBeforeLogoutCallback
1824
+ : T extends 'afterLogout'
1825
+ ? TilmeldAfterLogoutCallback
1826
+ : never
1827
+ ) {
1828
+ const prop = (event + 'Callbacks') as T extends 'beforeRegister'
1829
+ ? 'beforeRegisterCallbacks'
1830
+ : T extends 'afterRegister'
1831
+ ? 'afterRegisterCallbacks'
1832
+ : T extends 'beforeLogin'
1833
+ ? 'beforeLoginCallbacks'
1834
+ : T extends 'afterLogin'
1835
+ ? 'afterLoginCallbacks'
1836
+ : T extends 'beforeLogout'
1837
+ ? 'beforeLogoutCallbacks'
1838
+ : T extends 'afterLogout'
1839
+ ? 'afterLogoutCallbacks'
1840
+ : never;
1841
+ if (!(prop in this)) {
1842
+ return false;
1843
+ }
1844
+ // @ts-ignore: The callback should always be the right type here.
1845
+ const i = this[prop].indexOf(callback);
1846
+ if (i > -1) {
1847
+ // @ts-ignore: The callback should always be the right type here.
1848
+ this[prop].splice(i, 1);
1849
+ }
1850
+ return true;
1851
+ }
1649
1852
  }