@sphereon/ssi-sdk.siopv2-oid4vp-op-auth 0.33.1-next.3 → 0.33.1-next.73

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/dist/index.cjs +2451 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +559 -0
  4. package/dist/index.d.ts +555 -8
  5. package/dist/index.js +2420 -31
  6. package/dist/index.js.map +1 -1
  7. package/package.json +41 -30
  8. package/src/agent/DidAuthSiopOpAuthenticator.ts +13 -14
  9. package/src/session/OpSession.ts +13 -13
  10. package/dist/agent/DidAuthSiopOpAuthenticator.d.ts +0 -36
  11. package/dist/agent/DidAuthSiopOpAuthenticator.d.ts.map +0 -1
  12. package/dist/agent/DidAuthSiopOpAuthenticator.js +0 -392
  13. package/dist/agent/DidAuthSiopOpAuthenticator.js.map +0 -1
  14. package/dist/index.d.ts.map +0 -1
  15. package/dist/link-handler/index.d.ts +0 -22
  16. package/dist/link-handler/index.d.ts.map +0 -1
  17. package/dist/link-handler/index.js +0 -57
  18. package/dist/link-handler/index.js.map +0 -1
  19. package/dist/localization/Localization.d.ts +0 -9
  20. package/dist/localization/Localization.d.ts.map +0 -1
  21. package/dist/localization/Localization.js +0 -46
  22. package/dist/localization/Localization.js.map +0 -1
  23. package/dist/localization/translations/en.json +0 -9
  24. package/dist/localization/translations/nl.json +0 -8
  25. package/dist/machine/CallbackStateListener.d.ts +0 -3
  26. package/dist/machine/CallbackStateListener.d.ts.map +0 -1
  27. package/dist/machine/CallbackStateListener.js +0 -48
  28. package/dist/machine/CallbackStateListener.js.map +0 -1
  29. package/dist/machine/Siopv2Machine.d.ts +0 -8
  30. package/dist/machine/Siopv2Machine.d.ts.map +0 -1
  31. package/dist/machine/Siopv2Machine.js +0 -364
  32. package/dist/machine/Siopv2Machine.js.map +0 -1
  33. package/dist/services/IdentifierService.d.ts +0 -3
  34. package/dist/services/IdentifierService.d.ts.map +0 -1
  35. package/dist/services/IdentifierService.js +0 -28
  36. package/dist/services/IdentifierService.js.map +0 -1
  37. package/dist/services/Siopv2MachineService.d.ts +0 -18
  38. package/dist/services/Siopv2MachineService.d.ts.map +0 -1
  39. package/dist/services/Siopv2MachineService.js +0 -299
  40. package/dist/services/Siopv2MachineService.js.map +0 -1
  41. package/dist/session/OID4VP.d.ts +0 -72
  42. package/dist/session/OID4VP.d.ts.map +0 -1
  43. package/dist/session/OID4VP.js +0 -224
  44. package/dist/session/OID4VP.js.map +0 -1
  45. package/dist/session/OpSession.d.ts +0 -39
  46. package/dist/session/OpSession.d.ts.map +0 -1
  47. package/dist/session/OpSession.js +0 -365
  48. package/dist/session/OpSession.js.map +0 -1
  49. package/dist/session/functions.d.ts +0 -37
  50. package/dist/session/functions.d.ts.map +0 -1
  51. package/dist/session/functions.js +0 -163
  52. package/dist/session/functions.js.map +0 -1
  53. package/dist/session/index.d.ts +0 -4
  54. package/dist/session/index.d.ts.map +0 -1
  55. package/dist/session/index.js +0 -20
  56. package/dist/session/index.js.map +0 -1
  57. package/dist/types/IDidAuthSiopOpAuthenticator.d.ts +0 -120
  58. package/dist/types/IDidAuthSiopOpAuthenticator.d.ts.map +0 -1
  59. package/dist/types/IDidAuthSiopOpAuthenticator.js +0 -10
  60. package/dist/types/IDidAuthSiopOpAuthenticator.js.map +0 -1
  61. package/dist/types/error/index.d.ts +0 -8
  62. package/dist/types/error/index.d.ts.map +0 -1
  63. package/dist/types/error/index.js +0 -3
  64. package/dist/types/error/index.js.map +0 -1
  65. package/dist/types/identifier/index.d.ts +0 -53
  66. package/dist/types/identifier/index.d.ts.map +0 -1
  67. package/dist/types/identifier/index.js +0 -5
  68. package/dist/types/identifier/index.js.map +0 -1
  69. package/dist/types/index.d.ts +0 -6
  70. package/dist/types/index.d.ts.map +0 -1
  71. package/dist/types/index.js +0 -22
  72. package/dist/types/index.js.map +0 -1
  73. package/dist/types/machine/index.d.ts +0 -124
  74. package/dist/types/machine/index.d.ts.map +0 -1
  75. package/dist/types/machine/index.js +0 -57
  76. package/dist/types/machine/index.js.map +0 -1
  77. package/dist/types/siop-service/index.d.ts +0 -80
  78. package/dist/types/siop-service/index.d.ts.map +0 -1
  79. package/dist/types/siop-service/index.js +0 -14
  80. package/dist/types/siop-service/index.js.map +0 -1
  81. package/dist/utils/CredentialUtils.d.ts +0 -23
  82. package/dist/utils/CredentialUtils.d.ts.map +0 -1
  83. package/dist/utils/CredentialUtils.js +0 -65
  84. package/dist/utils/CredentialUtils.js.map +0 -1
  85. package/dist/utils/dcql.d.ts +0 -5
  86. package/dist/utils/dcql.d.ts.map +0 -1
  87. package/dist/utils/dcql.js +0 -37
  88. package/dist/utils/dcql.js.map +0 -1
package/package.json CHANGED
@@ -1,39 +1,51 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-sdk.siopv2-oid4vp-op-auth",
3
- "version": "0.33.1-next.3+fd1a6fba",
3
+ "version": "0.33.1-next.73+be17b2cb",
4
4
  "source": "src/index.ts",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ "react-native": "./dist/index.js",
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "require": "./dist/index.cjs"
18
+ }
19
+ },
7
20
  "veramo": {
8
21
  "pluginInterfaces": {
9
22
  "IDidAuthSiopOpAuthenticator": "./src/types/IDidAuthSiopOpAuthenticator.ts"
10
23
  }
11
24
  },
12
25
  "scripts": {
13
- "build": "tsc --build",
14
- "build:clean": "tsc --build --clean && tsc --build"
26
+ "build": "tsup --config ../../tsup.config.ts --tsconfig ../../tsconfig.tsup.json"
15
27
  },
16
28
  "dependencies": {
17
- "@sphereon/did-auth-siop": "0.17.0",
18
- "@sphereon/did-auth-siop-adapter": "0.17.0",
19
- "@sphereon/oid4vc-common": "0.17.0",
29
+ "@sphereon/did-auth-siop": "0.17.1-next.39",
30
+ "@sphereon/did-auth-siop-adapter": "0.17.1-next.39",
31
+ "@sphereon/oid4vc-common": "0.17.1-next.39",
20
32
  "@sphereon/pex": "5.0.0-unstable.28",
21
33
  "@sphereon/pex-models": "^2.3.2",
22
- "@sphereon/ssi-sdk-ext.did-utils": "0.28.0",
23
- "@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.0",
24
- "@sphereon/ssi-sdk-ext.jwt-service": "0.28.0",
25
- "@sphereon/ssi-sdk.contact-manager": "0.33.1-next.3+fd1a6fba",
26
- "@sphereon/ssi-sdk.core": "0.33.1-next.3+fd1a6fba",
27
- "@sphereon/ssi-sdk.credential-store": "0.33.1-next.3+fd1a6fba",
28
- "@sphereon/ssi-sdk.credential-validation": "0.33.1-next.3+fd1a6fba",
29
- "@sphereon/ssi-sdk.data-store": "0.33.1-next.3+fd1a6fba",
30
- "@sphereon/ssi-sdk.issuance-branding": "0.33.1-next.3+fd1a6fba",
31
- "@sphereon/ssi-sdk.pd-manager": "0.33.1-next.3+fd1a6fba",
32
- "@sphereon/ssi-sdk.presentation-exchange": "0.33.1-next.3+fd1a6fba",
33
- "@sphereon/ssi-sdk.sd-jwt": "0.33.1-next.3+fd1a6fba",
34
- "@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.33.1-next.3+fd1a6fba",
35
- "@sphereon/ssi-sdk.xstate-machine-persistence": "0.33.1-next.3+fd1a6fba",
36
- "@sphereon/ssi-types": "0.33.1-next.3+fd1a6fba",
34
+ "@sphereon/ssi-sdk-ext.did-utils": "0.28.1-next.53",
35
+ "@sphereon/ssi-sdk-ext.identifier-resolution": "0.28.1-next.53",
36
+ "@sphereon/ssi-sdk-ext.jwt-service": "0.28.1-next.53",
37
+ "@sphereon/ssi-sdk.contact-manager": "0.33.1-next.73+be17b2cb",
38
+ "@sphereon/ssi-sdk.core": "0.33.1-next.73+be17b2cb",
39
+ "@sphereon/ssi-sdk.credential-store": "0.33.1-next.73+be17b2cb",
40
+ "@sphereon/ssi-sdk.credential-validation": "0.33.1-next.73+be17b2cb",
41
+ "@sphereon/ssi-sdk.data-store": "0.33.1-next.73+be17b2cb",
42
+ "@sphereon/ssi-sdk.issuance-branding": "0.33.1-next.73+be17b2cb",
43
+ "@sphereon/ssi-sdk.pd-manager": "0.33.1-next.73+be17b2cb",
44
+ "@sphereon/ssi-sdk.presentation-exchange": "0.33.1-next.73+be17b2cb",
45
+ "@sphereon/ssi-sdk.sd-jwt": "0.33.1-next.73+be17b2cb",
46
+ "@sphereon/ssi-sdk.siopv2-oid4vp-common": "0.33.1-next.73+be17b2cb",
47
+ "@sphereon/ssi-sdk.xstate-machine-persistence": "0.33.1-next.73+be17b2cb",
48
+ "@sphereon/ssi-types": "0.33.1-next.73+be17b2cb",
37
49
  "@sphereon/wellknown-dids-client": "^0.1.3",
38
50
  "@veramo/core": "4.2.0",
39
51
  "@veramo/credential-w3c": "4.2.0",
@@ -47,8 +59,8 @@
47
59
  },
48
60
  "devDependencies": {
49
61
  "@sphereon/did-uni-client": "^0.6.3",
50
- "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.28.0",
51
- "@sphereon/ssi-sdk.agent-config": "0.33.1-next.3+fd1a6fba",
62
+ "@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.28.1-next.53",
63
+ "@sphereon/ssi-sdk.agent-config": "0.33.1-next.73+be17b2cb",
52
64
  "@types/i18n-js": "^3.8.9",
53
65
  "@types/lodash.memoize": "^4.1.9",
54
66
  "@types/sha.js": "^2.4.4",
@@ -61,11 +73,11 @@
61
73
  "@veramo/utils": "4.2.0",
62
74
  "did-resolver": "^4.1.0",
63
75
  "nock": "^13.5.4",
64
- "typeorm": "^0.3.21"
76
+ "typeorm": "0.3.20"
65
77
  },
66
78
  "files": [
67
- "dist/**/*",
68
- "src/**/*",
79
+ "dist",
80
+ "src",
69
81
  "src/localization/translations/*",
70
82
  "README.md",
71
83
  "plugin.schema.json",
@@ -90,6 +102,5 @@
90
102
  "OpenID Connect",
91
103
  "Authenticator"
92
104
  ],
93
- "nx": {},
94
- "gitHead": "fd1a6fba306a83a73ff7c531db87fa207dbf436d"
105
+ "gitHead": "be17b2cb752a6e5368119259e89a1f2a99f56848"
95
106
  }
@@ -13,32 +13,28 @@ import {
13
13
  import { HasherSync, Loggers, SdJwtDecodedVerifiableCredential } from '@sphereon/ssi-types'
14
14
  import { IAgentPlugin } from '@veramo/core'
15
15
  import { v4 as uuidv4 } from 'uuid'
16
- import {
17
- DidAuthSiopOpAuthenticatorOptions,
18
- GetSelectableCredentialsArgs,
19
- IOpSessionArgs,
20
- Json,
21
- LOGGER_NAMESPACE,
22
- RequiredContext,
23
- schema,
24
- SelectableCredentialsMap,
25
- Siopv2AuthorizationResponseData,
26
- VerifiableCredentialsWithDefinition,
27
- } from '../index'
28
- import { Siopv2Machine } from '../machine/Siopv2Machine'
29
- import { getSelectableCredentials, siopSendAuthorizationResponse, translateCorrelationIdToName } from '../services/Siopv2MachineService'
16
+
30
17
  import { OpSession } from '../session'
31
18
  import { PEX, Status } from '@sphereon/pex'
32
19
  import { computeEntryHash } from '@veramo/utils'
33
20
  import { UniqueDigitalCredential } from '@sphereon/ssi-sdk.credential-store'
34
21
  import { EventEmitter } from 'events'
35
22
  import {
23
+ DidAuthSiopOpAuthenticatorOptions,
24
+ GetSelectableCredentialsArgs,
36
25
  IDidAuthSiopOpAuthenticator,
37
26
  IGetSiopSessionArgs,
27
+ IOpSessionArgs,
38
28
  IRegisterCustomApprovalForSiopArgs,
39
29
  IRemoveCustomApprovalForSiopArgs,
40
30
  IRemoveSiopSessionArgs,
41
31
  IRequiredContext,
32
+ Json,
33
+ LOGGER_NAMESPACE,
34
+ RequiredContext,
35
+ SelectableCredentialsMap,
36
+ Siopv2AuthorizationResponseData,
37
+ VerifiableCredentialsWithDefinition,
42
38
  } from '../types'
43
39
 
44
40
  import {
@@ -56,6 +52,9 @@ import {
56
52
  Siopv2MachineInstanceOpts,
57
53
  } from '../types'
58
54
  import { DcqlCredential, DcqlPresentation, DcqlQuery, DcqlSdJwtVcCredential } from 'dcql'
55
+ import { Siopv2Machine } from '../machine/Siopv2Machine'
56
+ import { getSelectableCredentials, siopSendAuthorizationResponse, translateCorrelationIdToName } from '../services/Siopv2MachineService'
57
+ import { schema } from '..'
59
58
 
60
59
  const logger = Loggers.DEFAULT.options(LOGGER_NAMESPACE, {}).get(LOGGER_NAMESPACE)
61
60
 
@@ -27,14 +27,14 @@ import {
27
27
  W3CVerifiablePresentation,
28
28
  } from '@sphereon/ssi-types'
29
29
  import { IIdentifier, IVerifyResult, TKeyType } from '@veramo/core'
30
- import Debug from 'debug'
31
30
  import { v4 } from 'uuid'
32
31
  import { IOPOptions, IOpSessionArgs, IOpSessionGetOID4VPArgs, IOpsSendSiopAuthorizationResponseArgs, IRequiredContext } from '../types'
33
32
  import { createOP } from './functions'
34
33
  import { OID4VP } from './OID4VP'
35
34
  import { PEX } from '@sphereon/pex'
35
+ import { Loggers } from '@sphereon/ssi-types'
36
36
 
37
- const debug = Debug(`sphereon:sdk:siop:op-session`)
37
+ const logger = Loggers.DEFAULT.get('sphereon:oid4vp:OpSession')
38
38
 
39
39
  export class OpSession {
40
40
  public readonly ts = new Date().getDate()
@@ -100,9 +100,9 @@ export class OpSession {
100
100
  public async getSupportedDIDMethods(didPrefix?: boolean): Promise<string[]> {
101
101
  const agentMethods = this.getAgentDIDMethodsSupported({ didPrefix })
102
102
  let rpMethods = await this.getRPDIDMethodsSupported({ didPrefix, agentMethods })
103
- debug(`RP supports subject syntax types: ${JSON.stringify(this.getSubjectSyntaxTypesSupported())}`)
103
+ logger.debug(`RP supports subject syntax types: ${JSON.stringify(this.getSubjectSyntaxTypesSupported())}`)
104
104
  if (rpMethods.dids.length === 0) {
105
- debug(`RP does not support DIDs. Supported: ${JSON.stringify(this.getSubjectSyntaxTypesSupported())}`)
105
+ logger.debug(`RP does not support DIDs. Supported: ${JSON.stringify(this.getSubjectSyntaxTypesSupported())}`)
106
106
  return []
107
107
  }
108
108
 
@@ -125,7 +125,7 @@ export class OpSession {
125
125
 
126
126
  private getAgentDIDMethodsSupported(opts: { didPrefix?: boolean }) {
127
127
  const agentMethods = this.options.supportedDIDMethods?.map((method) => convertDidMethod(method, opts.didPrefix))
128
- debug(`agent methods: ${JSON.stringify(agentMethods)}`)
128
+ logger.debug(`agent methods: ${JSON.stringify(agentMethods)}`)
129
129
  return agentMethods
130
130
  }
131
131
 
@@ -139,17 +139,17 @@ export class OpSession {
139
139
  let keyType: TKeyType | undefined
140
140
  const agentMethods =
141
141
  (opts.agentMethods ?? this.getAgentDIDMethodsSupported(opts))?.map((method) => convertDidMethod(method, opts.didPrefix)) ?? []
142
- debug(`agent methods supported: ${JSON.stringify(agentMethods)}`)
142
+ logger.debug(`agent methods supported: ${JSON.stringify(agentMethods)}`)
143
143
  const authReq = await this.getAuthorizationRequest()
144
144
  const subjectSyntaxTypesSupported = authReq.registrationMetadataPayload?.subject_syntax_types_supported
145
145
  ?.map((method) => convertDidMethod(method, opts.didPrefix))
146
146
  .filter((val) => !val.startsWith('did'))
147
- debug(`subject syntax types supported in rp method supported: ${JSON.stringify(subjectSyntaxTypesSupported)}`)
147
+ logger.debug(`subject syntax types supported in rp method supported: ${JSON.stringify(subjectSyntaxTypesSupported)}`)
148
148
  const aud = await authReq.authorizationRequest.getMergedProperty<string>('aud')
149
149
  let rpMethods: string[] = []
150
150
  if (aud && aud.startsWith('did:')) {
151
151
  const didMethod = convertDidMethod(parseDid(aud).method, opts.didPrefix)
152
- debug(`aud did method: ${didMethod}`)
152
+ logger.debug(`aud did method: ${didMethod}`)
153
153
 
154
154
  // The RP knows our DID, so we can use it to determine the supported DID methods
155
155
  // If the aud did:method is not in the supported types, there still is something wrong, unless the RP signals to support all did methods
@@ -172,7 +172,7 @@ export class OpSession {
172
172
  (authReq.issuer?.includes('.ebsi.eu') || (await authReq.authorizationRequest.getMergedProperty<string>('client_id'))?.includes('.ebsi.eu'))
173
173
  let codecName: string | undefined = undefined
174
174
  if (isEBSI && (!aud || !aud.startsWith('http'))) {
175
- debug(`EBSI detected, adding did:key to supported DID methods for RP`)
175
+ logger.debug(`EBSI detected, adding did:key to supported DID methods for RP`)
176
176
  const didKeyMethod = convertDidMethod('did:key', opts.didPrefix)
177
177
  if (!agentMethods?.includes(didKeyMethod)) {
178
178
  throw Error(`EBSI detected, but agent did not support did:key. Please reconfigure agent`)
@@ -187,7 +187,7 @@ export class OpSession {
187
187
  public async getSupportedIdentifiers(opts?: { createInCaseNoDIDFound?: boolean }): Promise<IIdentifier[]> {
188
188
  // todo: we also need to check signature algo
189
189
  const methods = await this.getSupportedDIDMethods(true)
190
- debug(`supported DID methods (did: prefix = true): ${JSON.stringify(methods)}`)
190
+ logger.debug(`supported DID methods (did: prefix = true): ${JSON.stringify(methods)}`)
191
191
  if (methods.length === 0) {
192
192
  throw Error(`No DID methods are supported`)
193
193
  }
@@ -195,7 +195,7 @@ export class OpSession {
195
195
  .didManagerFind()
196
196
  .then((ids: IIdentifier[]) => ids.filter((id) => methods.includes(id.provider)))
197
197
  if (identifiers.length === 0) {
198
- debug(`No identifiers available in agent supporting methods ${JSON.stringify(methods)}`)
198
+ logger.debug(`No identifiers available in agent supporting methods ${JSON.stringify(methods)}`)
199
199
  if (opts?.createInCaseNoDIDFound !== false) {
200
200
  const { codecName, keyType } = await this.getRPDIDMethodsSupported({
201
201
  didPrefix: true,
@@ -205,11 +205,11 @@ export class OpSession {
205
205
  provider: methods[0],
206
206
  options: { codecName, keyType, type: keyType }, // both keyType and type, because not every did provider has the same param
207
207
  })
208
- debug(`Created a new identifier for the SIOP interaction: ${identifier.did}`)
208
+ logger.debug(`Created a new identifier for the SIOP interaction: ${identifier.did}`)
209
209
  identifiers.push(identifier)
210
210
  }
211
211
  }
212
- debug(`supported identifiers: ${JSON.stringify(identifiers.map((id) => id.did))}`)
212
+ logger.debug(`supported identifiers: ${JSON.stringify(identifiers.map((id) => id.did))}`)
213
213
  return identifiers
214
214
  }
215
215
 
@@ -1,36 +0,0 @@
1
- import { IAgentPlugin } from '@veramo/core';
2
- import { DidAuthSiopOpAuthenticatorOptions, RequiredContext } from '../index';
3
- import { IDidAuthSiopOpAuthenticator } from '../types';
4
- export declare const didAuthSiopOpAuthenticatorMethods: Array<string>;
5
- export declare class DidAuthSiopOpAuthenticator implements IAgentPlugin {
6
- readonly schema: any;
7
- readonly methods: IDidAuthSiopOpAuthenticator;
8
- private readonly sessions;
9
- private readonly customApprovals;
10
- private readonly presentationSignCallback?;
11
- private readonly onContactIdentityCreated?;
12
- private readonly onIdentifierCreated?;
13
- private readonly eventEmitter?;
14
- private readonly hasher?;
15
- constructor(options?: DidAuthSiopOpAuthenticatorOptions);
16
- onEvent(event: any, context: RequiredContext): Promise<void>;
17
- private siopGetOPSession;
18
- private siopRegisterOPSession;
19
- private siopRemoveOPSession;
20
- private siopRegisterOPCustomApproval;
21
- private siopRemoveOPCustomApproval;
22
- private siopGetMachineInterpreter;
23
- private siopCreateConfig;
24
- private siopGetSiopRequest;
25
- private determineCorrelationId;
26
- private siopRetrieveContact;
27
- private siopAddContactIdentity;
28
- private siopSendResponse;
29
- private hasMDocCredentials;
30
- private isMDocCredential;
31
- private hasSdJwtCredentials;
32
- private isSdJwtCredential;
33
- private retrieveEncodedCredential;
34
- private siopGetSelectableCredentials;
35
- }
36
- //# sourceMappingURL=DidAuthSiopOpAuthenticator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DidAuthSiopOpAuthenticator.d.ts","sourceRoot":"","sources":["../../src/agent/DidAuthSiopOpAuthenticator.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EACL,iCAAiC,EAKjC,eAAe,EAKhB,MAAM,UAAU,CAAA;AAQjB,OAAO,EACL,2BAA2B,EAM5B,MAAM,UAAU,CAAA;AAqBjB,eAAO,MAAM,iCAAiC,EAAE,KAAK,CAAC,MAAM,CAW3D,CAAA;AAED,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,QAAQ,CAAC,MAAM,MAAqC;IACpD,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAc5C;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkH;IAClJ,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAA0B;IACpE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAuD;IACjG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAkD;IACvF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;gBAExB,OAAO,CAAC,EAAE,iCAAiC;IAW1C,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAa3D,gBAAgB;YAShB,qBAAqB;YAcrB,mBAAmB;YAInB,4BAA4B;YAQ5B,0BAA0B;YAI1B,yBAAyB;YAyBzB,gBAAgB;YAehB,kBAAkB;YAqDlB,sBAAsB;YAsBtB,mBAAmB;YAuBnB,sBAAsB;YAuCtB,gBAAgB;IA+G9B,OAAO,CAAC,kBAAkB,CAEzB;IAED,OAAO,CAAC,gBAAgB,CAKvB;IAED,OAAO,CAAC,mBAAmB,CAE1B;IAED,OAAO,CAAC,iBAAiB,CAIxB;IAED,OAAO,CAAC,yBAAyB,CAOhC;YAEa,4BAA4B;CAgB3C"}