ngssm-remote-data 22.1.0 → 22.2.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.
@@ -1,114 +1,70 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, Injectable, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
3
- import { TestBed } from '@angular/core/testing';
4
- import { updateNgssmRemoteCallState, getDefaultRemoteCall, NgssmRemoteCallStateSpecification, NgssmRemoteCallStateInitializer, RemoteCallResultProcessor } from 'ngssm-remote-data';
5
- import { Store, Logger } from 'ngssm-store';
6
- import { StoreMock } from 'ngssm-store/testing';
7
-
8
- /**
9
- * Utility service for setting and updating remote call status and errors in the StoreMock during tests.
10
- * Provides methods to set the status or error of a remote call.
11
- */
12
- class NgssmRemoteCallSetter {
13
- store = inject(Store);
14
- /**
15
- * Initializes the given remote call in the state.
16
- * @param remoteCallId The identifier of the remote call
17
- * @returns The NgssmRemoteCallSetter instance for chaining.
18
- */
19
- initRemoteCall(remoteCallId) {
20
- this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {
21
- remoteCalls: {
22
- [remoteCallId]: {
23
- $set: getDefaultRemoteCall()
24
- }
25
- }
26
- });
27
- return this;
28
- }
29
- /**
30
- * Sets the status of a remote call in the StoreMock.
31
- * @param remoteCallId The identifier of the remote call.
32
- * @param status The new status to set.
33
- * @returns The NgssmRemoteCallSetter instance for chaining.
34
- */
35
- setRemoteCallStatus(remoteCallId, status) {
36
- this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {
37
- remoteCalls: {
38
- [remoteCallId]: {
39
- status: { $set: status }
40
- }
41
- }
42
- });
43
- return this;
44
- }
45
- /**
46
- * Sets the error of a remote call in the StoreMock.
47
- * @param remoteCallId The identifier of the remote call.
48
- * @param error The error to set (optional).
49
- * @returns The NgssmRemoteCallSetter instance for chaining.
50
- */
51
- setRemoteCallError(remoteCallId, error) {
52
- this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {
53
- remoteCalls: {
54
- [remoteCallId]: {
55
- httpErrorResponse: { $set: error }
56
- }
57
- }
58
- });
59
- return this;
60
- }
61
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmRemoteCallSetter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
62
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmRemoteCallSetter });
63
- }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: NgssmRemoteCallSetter, decorators: [{
65
- type: Injectable
66
- }] });
1
+ import * as i0 from "@angular/core";
2
+ import { Injectable, inject, makeEnvironmentProviders, provideAppInitializer } from "@angular/core";
3
+ import { TestBed } from "@angular/core/testing";
4
+ import { NgssmRemoteCallStateInitializer, NgssmRemoteCallStateSpecification, RemoteCallResultProcessor, getDefaultRemoteCall, updateNgssmRemoteCallState } from "ngssm-remote-data";
5
+ import { Logger, Store } from "ngssm-store";
6
+ import { StoreMock } from "ngssm-store/testing";
7
+ var NgssmRemoteCallSetter = class NgssmRemoteCallSetter {
8
+ store = inject(Store);
9
+ initRemoteCall(remoteCallId) {
10
+ this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, { remoteCalls: { [remoteCallId]: { $set: getDefaultRemoteCall() } } });
11
+ return this;
12
+ }
13
+ setRemoteCallStatus(remoteCallId, status) {
14
+ this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, { remoteCalls: { [remoteCallId]: { status: { $set: status } } } });
15
+ return this;
16
+ }
17
+ setRemoteCallError(remoteCallId, error) {
18
+ this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, { remoteCalls: { [remoteCallId]: { httpErrorResponse: { $set: error } } } });
19
+ return this;
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({
22
+ minVersion: "12.0.0",
23
+ version: "22.2.0",
24
+ ngImport: i0,
25
+ type: NgssmRemoteCallSetter,
26
+ deps: [],
27
+ target: i0.ɵɵFactoryTarget.Injectable
28
+ });
29
+ static ɵprov = i0.ɵɵngDeclareInjectable({
30
+ minVersion: "12.0.0",
31
+ version: "22.2.0",
32
+ ngImport: i0,
33
+ type: NgssmRemoteCallSetter
34
+ });
35
+ };
36
+ i0.ɵɵngDeclareClassMetadata({
37
+ minVersion: "12.0.0",
38
+ version: "22.2.0",
39
+ ngImport: i0,
40
+ type: NgssmRemoteCallSetter,
41
+ decorators: [{ type: Injectable }]
42
+ });
67
43
  const ngssmRemoteCallSetter = () => TestBed.inject(NgssmRemoteCallSetter);
68
-
69
- /**
70
- * App initializer that sets up the NgssmRemoteCall state and sources in the StoreMock for testing purposes.
71
- * Throws an error if StoreMock is not registered.
72
- */
73
44
  const ngssmRemoteCallStateAndRemoteCallsInitializer = () => {
74
- const logger = inject(Logger);
75
- logger.information('[ngssm-remote-call-testing] Initialization of state and sources');
76
- const store = inject(Store);
77
- if (!(store instanceof StoreMock)) {
78
- throw new Error('StoreMock is not registered.');
79
- }
80
- store.stateValue = {
81
- ...store.stateValue,
82
- [NgssmRemoteCallStateSpecification.featureStateKey]: NgssmRemoteCallStateSpecification.initialState
83
- };
84
- const stateInitializer = inject(NgssmRemoteCallStateInitializer);
85
- store.stateValue = stateInitializer.initializeState(store.stateValue);
45
+ inject(Logger).information("[ngssm-remote-call-testing] Initialization of state and sources");
46
+ const store = inject(Store);
47
+ if (!(store instanceof StoreMock)) throw new Error("StoreMock is not registered.");
48
+ store.stateValue = {
49
+ ...store.stateValue,
50
+ [NgssmRemoteCallStateSpecification.featureStateKey]: NgssmRemoteCallStateSpecification.initialState
51
+ };
52
+ store.stateValue = inject(NgssmRemoteCallStateInitializer).initializeState(store.stateValue);
86
53
  };
87
- /**
88
- * Provides environment providers for remote call testing, including the state initializer and helper services.
89
- */
90
54
  const provideNgssmRemoteCallTesting = () => {
91
- return makeEnvironmentProviders([
92
- provideAppInitializer(ngssmRemoteCallStateAndRemoteCallsInitializer),
93
- NgssmRemoteCallStateInitializer,
94
- NgssmRemoteCallSetter,
95
- {
96
- provide: RemoteCallResultProcessor,
97
- useValue: {
98
- processRemoteCallError: () => {
99
- // nothing to do. Used for testing
100
- },
101
- processRemoteCallSuccess: () => {
102
- // nothing to do. Used for testing
103
- }
104
- }
105
- }
106
- ]);
55
+ return makeEnvironmentProviders([
56
+ provideAppInitializer(ngssmRemoteCallStateAndRemoteCallsInitializer),
57
+ NgssmRemoteCallStateInitializer,
58
+ NgssmRemoteCallSetter,
59
+ {
60
+ provide: RemoteCallResultProcessor,
61
+ useValue: {
62
+ processRemoteCallError: () => {},
63
+ processRemoteCallSuccess: () => {}
64
+ }
65
+ }
66
+ ]);
107
67
  };
108
-
109
- /**
110
- * Generated bundle index. Do not edit.
111
- */
112
-
113
68
  export { NgssmRemoteCallSetter, ngssmRemoteCallSetter, ngssmRemoteCallStateAndRemoteCallsInitializer, provideNgssmRemoteCallTesting };
114
- //# sourceMappingURL=ngssm-remote-data-testing.mjs.map
69
+
70
+ //# sourceMappingURL=ngssm-remote-data-testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngssm-remote-data-testing.mjs","sources":["../../../projects/ngssm-remote-data/testing/src/ngssm-remote-call-setter.ts","../../../projects/ngssm-remote-data/testing/src/provide-ngssm-remote-call-testing.ts","../../../projects/ngssm-remote-data/testing/ngssm-remote-data-testing.ts"],"sourcesContent":["import { HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { getDefaultRemoteCall, RemoteCallStatus, updateNgssmRemoteCallState } from 'ngssm-remote-data';\nimport { Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\n\n/**\n * Utility service for setting and updating remote call status and errors in the StoreMock during tests.\n * Provides methods to set the status or error of a remote call.\n */\n@Injectable()\nexport class NgssmRemoteCallSetter {\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Initializes the given remote call in the state.\n * @param remoteCallId The identifier of the remote call\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public initRemoteCall(remoteCallId: string): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n $set: getDefaultRemoteCall()\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the status of a remote call in the StoreMock.\n * @param remoteCallId The identifier of the remote call.\n * @param status The new status to set.\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public setRemoteCallStatus(remoteCallId: string, status: RemoteCallStatus): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n status: { $set: status }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the error of a remote call in the StoreMock.\n * @param remoteCallId The identifier of the remote call.\n * @param error The error to set (optional).\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public setRemoteCallError(remoteCallId: string, error?: HttpErrorResponse): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n httpErrorResponse: { $set: error }\n }\n }\n });\n\n return this;\n }\n}\n\nexport const ngssmRemoteCallSetter = () => TestBed.inject(NgssmRemoteCallSetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\n\nimport { NgssmRemoteCallStateSpecification, NgssmRemoteCallStateInitializer, RemoteCallResultProcessor } from 'ngssm-remote-data';\nimport { NgssmRemoteCallSetter } from './ngssm-remote-call-setter';\n\n/**\n * App initializer that sets up the NgssmRemoteCall state and sources in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmRemoteCallStateAndRemoteCallsInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-remote-call-testing] Initialization of state and sources');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmRemoteCallStateSpecification.featureStateKey]: NgssmRemoteCallStateSpecification.initialState\n };\n\n const stateInitializer = inject(NgssmRemoteCallStateInitializer);\n store.stateValue = stateInitializer.initializeState(store.stateValue);\n};\n\n/**\n * Provides environment providers for remote call testing, including the state initializer and helper services.\n */\nexport const provideNgssmRemoteCallTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n provideAppInitializer(ngssmRemoteCallStateAndRemoteCallsInitializer),\n NgssmRemoteCallStateInitializer,\n NgssmRemoteCallSetter,\n {\n provide: RemoteCallResultProcessor,\n useValue: {\n processRemoteCallError: () => {\n // nothing to do. Used for testing\n },\n processRemoteCallSuccess: () => {\n // nothing to do. Used for testing\n }\n }\n }\n ]);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AAQA;;;AAGG;MAEU,qBAAqB,CAAA;AAChB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAyB;AAE7D;;;;AAIG;AACI,IAAA,cAAc,CAAC,YAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACxE,YAAA,WAAW,EAAE;gBACX,CAAC,YAAY,GAAG;oBACd,IAAI,EAAE,oBAAoB;AAC3B;AACF;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;IACI,mBAAmB,CAAC,YAAoB,EAAE,MAAwB,EAAA;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACxE,YAAA,WAAW,EAAE;gBACX,CAAC,YAAY,GAAG;AACd,oBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;AACvB;AACF;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;IACI,kBAAkB,CAAC,YAAoB,EAAE,KAAyB,EAAA;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACxE,YAAA,WAAW,EAAE;gBACX,CAAC,YAAY,GAAG;AACd,oBAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK;AACjC;AACF;AACF,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;IACb;uGAtDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAArB,qBAAqB,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;AA0DM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,qBAAqB;;AC9D/E;;;AAGG;AACI,MAAM,6CAA6C,GAAG,MAAK;AAChE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,CAAC,WAAW,CAAC,iEAAiE,CAAC;AACrF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,IAAA,IAAI,EAAE,KAAK,YAAY,SAAS,CAAC,EAAE;AACjC,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;IACjD;IAEA,KAAK,CAAC,UAAU,GAAG;QACjB,GAAG,KAAK,CAAC,UAAU;AACnB,QAAA,CAAC,iCAAiC,CAAC,eAAe,GAAG,iCAAiC,CAAC;KACxF;AAED,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,+BAA+B,CAAC;IAChE,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;AACvE;AAEA;;AAEG;AACI,MAAM,6BAA6B,GAAG,MAA2B;AACtE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,qBAAqB,CAAC,6CAA6C,CAAC;QACpE,+BAA+B;QAC/B,qBAAqB;AACrB,QAAA;AACE,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,QAAQ,EAAE;gBACR,sBAAsB,EAAE,MAAK;;gBAE7B,CAAC;gBACD,wBAAwB,EAAE,MAAK;;gBAE/B;AACD;AACF;AACF,KAAA,CAAC;AACJ;;ACjDA;;AAEG;;;;"}
1
+ {"version":3,"file":"ngssm-remote-data-testing.mjs","names":[],"sources":["../../../projects/ngssm-remote-data/testing/src/ngssm-remote-call-setter.ts","../../../projects/ngssm-remote-data/testing/src/provide-ngssm-remote-call-testing.ts"],"sourcesContent":["import { HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\n\nimport { getDefaultRemoteCall, RemoteCallStatus, updateNgssmRemoteCallState } from 'ngssm-remote-data';\nimport { Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\n\n/**\n * Utility service for setting and updating remote call status and errors in the StoreMock during tests.\n * Provides methods to set the status or error of a remote call.\n */\n@Injectable()\nexport class NgssmRemoteCallSetter {\n public readonly store = inject(Store) as unknown as StoreMock;\n\n /**\n * Initializes the given remote call in the state.\n * @param remoteCallId The identifier of the remote call\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public initRemoteCall(remoteCallId: string): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n $set: getDefaultRemoteCall()\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the status of a remote call in the StoreMock.\n * @param remoteCallId The identifier of the remote call.\n * @param status The new status to set.\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public setRemoteCallStatus(remoteCallId: string, status: RemoteCallStatus): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n status: { $set: status }\n }\n }\n });\n\n return this;\n }\n\n /**\n * Sets the error of a remote call in the StoreMock.\n * @param remoteCallId The identifier of the remote call.\n * @param error The error to set (optional).\n * @returns The NgssmRemoteCallSetter instance for chaining.\n */\n public setRemoteCallError(remoteCallId: string, error?: HttpErrorResponse): NgssmRemoteCallSetter {\n this.store.stateValue = updateNgssmRemoteCallState(this.store.stateValue, {\n remoteCalls: {\n [remoteCallId]: {\n httpErrorResponse: { $set: error }\n }\n }\n });\n\n return this;\n }\n}\n\nexport const ngssmRemoteCallSetter = () => TestBed.inject(NgssmRemoteCallSetter);\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\nimport { Logger, Store } from 'ngssm-store';\nimport { StoreMock } from 'ngssm-store/testing';\n\nimport { NgssmRemoteCallStateSpecification, NgssmRemoteCallStateInitializer, RemoteCallResultProcessor } from 'ngssm-remote-data';\nimport { NgssmRemoteCallSetter } from './ngssm-remote-call-setter';\n\n/**\n * App initializer that sets up the NgssmRemoteCall state and sources in the StoreMock for testing purposes.\n * Throws an error if StoreMock is not registered.\n */\nexport const ngssmRemoteCallStateAndRemoteCallsInitializer = () => {\n const logger = inject(Logger);\n logger.information('[ngssm-remote-call-testing] Initialization of state and sources');\n const store = inject(Store);\n if (!(store instanceof StoreMock)) {\n throw new Error('StoreMock is not registered.');\n }\n\n store.stateValue = {\n ...store.stateValue,\n [NgssmRemoteCallStateSpecification.featureStateKey]: NgssmRemoteCallStateSpecification.initialState\n };\n\n const stateInitializer = inject(NgssmRemoteCallStateInitializer);\n store.stateValue = stateInitializer.initializeState(store.stateValue);\n};\n\n/**\n * Provides environment providers for remote call testing, including the state initializer and helper services.\n */\nexport const provideNgssmRemoteCallTesting = (): EnvironmentProviders => {\n return makeEnvironmentProviders([\n provideAppInitializer(ngssmRemoteCallStateAndRemoteCallsInitializer),\n NgssmRemoteCallStateInitializer,\n NgssmRemoteCallSetter,\n {\n provide: RemoteCallResultProcessor,\n useValue: {\n processRemoteCallError: () => {\n // nothing to do. Used for testing\n },\n processRemoteCallSuccess: () => {\n // nothing to do. Used for testing\n }\n }\n }\n ]);\n};\n"],"mappings":";;;;;;AAaA,IAAa,wBAAb,MAAa,sBAAqB;CAChB,QAAQ,OAAO,KAAK;CAO7B,eAAe,cAAoB;EACxC,KAAK,MAAM,aAAa,2BAA2B,KAAK,MAAM,YAAY,EACxE,aAAa,GACV,eAAe,EACd,MAAM,qBAAoB,EAC3B,EACF,EACF,CAAA;EAED,OAAO;CACT;CAQO,oBAAoB,cAAsB,QAAwB;EACvE,KAAK,MAAM,aAAa,2BAA2B,KAAK,MAAM,YAAY,EACxE,aAAa,GACV,eAAe,EACd,QAAQ,EAAE,MAAM,OAAM,EACvB,EACF,EACF,CAAA;EAED,OAAO;CACT;CAQO,mBAAmB,cAAsB,OAAyB;EACvE,KAAK,MAAM,aAAa,2BAA2B,KAAK,MAAM,YAAY,EACxE,aAAa,GACV,eAAe,EACd,mBAAmB,EAAE,MAAM,MAAK,EACjC,EACF,EACF,CAAA;EAED,OAAO;CACT;CAtDW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAqB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAArB,OAAA,QAAA,GAAA,sBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;CAAqB,CAAA;;AAArB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAqB,YAAA,CAAA,EADjC,MAAA,WAAA,CAAA;;AA0DD,MAAa,8BAA8B,QAAQ,OAAO,qBAAqB;AC1D/E,MAAa,sDAAqD;CAEhE,AADe,OAAO,MACtB,CAAA,CAAO,YAAY,iEAAiE;CACpF,MAAM,QAAQ,OAAO,KAAK;CAC1B,IAAI,EAAE,iBAAiB,YACrB,MAAM,IAAI,MAAM,8BAA8B;CAGhD,MAAM,aAAa;EACjB,GAAG,MAAM;GACR,kCAAkC,kBAAkB,kCAAkC;CACxF;CAGD,MAAM,aADmB,OAAO,+BACb,CAAA,CAAiB,gBAAgB,MAAM,UAAU;AACtE;AAKA,MAAa,sCAA2D;CACtE,OAAO,yBAAyB;EAC9B,sBAAsB,6CAA6C;EACnE;EACA;EACA;GACE,SAAS;GACT,UAAU;IACR,8BAA6B,CAE7B;IACA,gCAA+B,CAE/B;GACD;EACF;CACF,CAAA;AACH"}