@loglayer/transport-google-cloud-logging 2.2.11 → 2.2.13

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/dist/index.cjs CHANGED
@@ -1,28 +1,4 @@
1
- //#region rolldown:runtime
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
- key = keys[i];
11
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
- get: ((k) => from[k]).bind(null, key),
13
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
- });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
- value: mod,
20
- enumerable: true
21
- }) : target, mod));
22
-
23
- //#endregion
24
1
  let __loglayer_transport = require("@loglayer/transport");
25
- __loglayer_transport = __toESM(__loglayer_transport);
26
2
 
27
3
  //#region src/GoogleCloudLoggingTransport.ts
28
4
  var GoogleCloudLoggingTransport = class extends __loglayer_transport.BaseTransport {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["BaseTransport","LogLevel","metadata: Record<string, unknown>"],"sources":["../src/GoogleCloudLoggingTransport.ts"],"sourcesContent":["import type { Log, LogSync } from \"@google-cloud/logging\";\nimport type { LogEntry } from \"@google-cloud/logging/build/src/entry.js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel, type LogLevelType } from \"@loglayer/transport\";\n\nexport interface GoogleCloudLoggingTransportConfig extends LogLayerTransportConfig<Log | LogSync> {\n /**\n * The root level data to include for all log entries.\n * \"severity\", \"timestamp\" and \"jsonPayload\" are already populated by the transport.\n * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry\n */\n rootLevelData?: Omit<\n LogEntry,\n \"severity\" | \"timestamp\" | \"receiveTimestamp\" | \"jsonPayload\" | \"textPayload\" | \"protoPayload\"\n >;\n\n /**\n * List of LogLayer metadata fields to merge into `rootLevelData` when creating the log entry.\n */\n rootLevelMetadataFields?: Array<string>;\n}\n\nexport class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {\n private rootLevelData: GoogleCloudLoggingTransportConfig[\"rootLevelData\"];\n private rootLevelMetadataFields: Array<string>;\n\n constructor(config: GoogleCloudLoggingTransportConfig) {\n super(config);\n this.rootLevelData = config.rootLevelData || {};\n this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? [];\n }\n\n private mapLogLevel(level: LogLevelType): string {\n switch (level) {\n case LogLevel.fatal:\n return \"CRITICAL\";\n case LogLevel.error:\n return \"ERROR\";\n case LogLevel.warn:\n return \"WARNING\";\n case LogLevel.info:\n return \"INFO\";\n case LogLevel.debug:\n return \"DEBUG\";\n case LogLevel.trace:\n return \"DEBUG\";\n default:\n return \"DEFAULT\";\n }\n }\n\n private extractLogEntryFields(data: Record<string, unknown>) {\n const keys = Object.keys(data);\n const metadata: Record<string, unknown> = {};\n\n for (const key of keys) {\n if (this.rootLevelMetadataFields.includes(key)) {\n metadata[key] = data[key];\n delete data[key];\n }\n }\n\n return metadata;\n }\n\n shipToLogger({ data, hasData, logLevel, messages }: LogLayerTransportParams): any[] {\n const safeData = data && hasData ? data : {};\n const metadata = this.extractLogEntryFields(safeData);\n\n const entry = this.logger.entry(\n {\n ...this.rootLevelData,\n ...metadata,\n severity: this.mapLogLevel(logLevel),\n timestamp: new Date(),\n },\n {\n ...safeData,\n message: messages.join(\" \"),\n },\n );\n\n this.logger.write(entry);\n\n if (data && hasData) {\n return [data, messages];\n }\n\n return [messages];\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAa,8BAAb,cAAiDA,mCAA6B;CAC5E,AAAQ;CACR,AAAQ;CAER,YAAY,QAA2C;AACrD,QAAM,OAAO;AACb,OAAK,gBAAgB,OAAO,iBAAiB,EAAE;AAC/C,OAAK,0BAA0B,OAAO,2BAA2B,EAAE;;CAGrE,AAAQ,YAAY,OAA6B;AAC/C,UAAQ,OAAR;GACE,KAAKC,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,KACZ,QAAO;GACT,KAAKA,8BAAS,KACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,sBAAsB,MAA+B;EAC3D,MAAM,OAAO,OAAO,KAAK,KAAK;EAC9B,MAAMC,WAAoC,EAAE;AAE5C,OAAK,MAAM,OAAO,KAChB,KAAI,KAAK,wBAAwB,SAAS,IAAI,EAAE;AAC9C,YAAS,OAAO,KAAK;AACrB,UAAO,KAAK;;AAIhB,SAAO;;CAGT,aAAa,EAAE,MAAM,SAAS,UAAU,YAA4C;EAClF,MAAM,WAAW,QAAQ,UAAU,OAAO,EAAE;EAC5C,MAAM,WAAW,KAAK,sBAAsB,SAAS;EAErD,MAAM,QAAQ,KAAK,OAAO,MACxB;GACE,GAAG,KAAK;GACR,GAAG;GACH,UAAU,KAAK,YAAY,SAAS;GACpC,2BAAW,IAAI,MAAM;GACtB,EACD;GACE,GAAG;GACH,SAAS,SAAS,KAAK,IAAI;GAC5B,CACF;AAED,OAAK,OAAO,MAAM,MAAM;AAExB,MAAI,QAAQ,QACV,QAAO,CAAC,MAAM,SAAS;AAGzB,SAAO,CAAC,SAAS"}
1
+ {"version":3,"file":"index.cjs","names":["BaseTransport","LogLevel","metadata: Record<string, unknown>"],"sources":["../src/GoogleCloudLoggingTransport.ts"],"sourcesContent":["import type { Log, LogSync } from \"@google-cloud/logging\";\nimport type { LogEntry } from \"@google-cloud/logging/build/src/entry.js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel, type LogLevelType } from \"@loglayer/transport\";\n\nexport interface GoogleCloudLoggingTransportConfig extends LogLayerTransportConfig<Log | LogSync> {\n /**\n * The root level data to include for all log entries.\n * \"severity\", \"timestamp\" and \"jsonPayload\" are already populated by the transport.\n * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry\n */\n rootLevelData?: Omit<\n LogEntry,\n \"severity\" | \"timestamp\" | \"receiveTimestamp\" | \"jsonPayload\" | \"textPayload\" | \"protoPayload\"\n >;\n\n /**\n * List of LogLayer metadata fields to merge into `rootLevelData` when creating the log entry.\n */\n rootLevelMetadataFields?: Array<string>;\n}\n\nexport class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {\n private rootLevelData: GoogleCloudLoggingTransportConfig[\"rootLevelData\"];\n private rootLevelMetadataFields: Array<string>;\n\n constructor(config: GoogleCloudLoggingTransportConfig) {\n super(config);\n this.rootLevelData = config.rootLevelData || {};\n this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? [];\n }\n\n private mapLogLevel(level: LogLevelType): string {\n switch (level) {\n case LogLevel.fatal:\n return \"CRITICAL\";\n case LogLevel.error:\n return \"ERROR\";\n case LogLevel.warn:\n return \"WARNING\";\n case LogLevel.info:\n return \"INFO\";\n case LogLevel.debug:\n return \"DEBUG\";\n case LogLevel.trace:\n return \"DEBUG\";\n default:\n return \"DEFAULT\";\n }\n }\n\n private extractLogEntryFields(data: Record<string, unknown>) {\n const keys = Object.keys(data);\n const metadata: Record<string, unknown> = {};\n\n for (const key of keys) {\n if (this.rootLevelMetadataFields.includes(key)) {\n metadata[key] = data[key];\n delete data[key];\n }\n }\n\n return metadata;\n }\n\n shipToLogger({ data, hasData, logLevel, messages }: LogLayerTransportParams): any[] {\n const safeData = data && hasData ? data : {};\n const metadata = this.extractLogEntryFields(safeData);\n\n const entry = this.logger.entry(\n {\n ...this.rootLevelData,\n ...metadata,\n severity: this.mapLogLevel(logLevel),\n timestamp: new Date(),\n },\n {\n ...safeData,\n message: messages.join(\" \"),\n },\n );\n\n this.logger.write(entry);\n\n if (data && hasData) {\n return [data, messages];\n }\n\n return [messages];\n }\n}\n"],"mappings":";;;AAsBA,IAAa,8BAAb,cAAiDA,mCAA6B;CAC5E,AAAQ;CACR,AAAQ;CAER,YAAY,QAA2C;AACrD,QAAM,OAAO;AACb,OAAK,gBAAgB,OAAO,iBAAiB,EAAE;AAC/C,OAAK,0BAA0B,OAAO,2BAA2B,EAAE;;CAGrE,AAAQ,YAAY,OAA6B;AAC/C,UAAQ,OAAR;GACE,KAAKC,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,KACZ,QAAO;GACT,KAAKA,8BAAS,KACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,KAAKA,8BAAS,MACZ,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,sBAAsB,MAA+B;EAC3D,MAAM,OAAO,OAAO,KAAK,KAAK;EAC9B,MAAMC,WAAoC,EAAE;AAE5C,OAAK,MAAM,OAAO,KAChB,KAAI,KAAK,wBAAwB,SAAS,IAAI,EAAE;AAC9C,YAAS,OAAO,KAAK;AACrB,UAAO,KAAK;;AAIhB,SAAO;;CAGT,aAAa,EAAE,MAAM,SAAS,UAAU,YAA4C;EAClF,MAAM,WAAW,QAAQ,UAAU,OAAO,EAAE;EAC5C,MAAM,WAAW,KAAK,sBAAsB,SAAS;EAErD,MAAM,QAAQ,KAAK,OAAO,MACxB;GACE,GAAG,KAAK;GACR,GAAG;GACH,UAAU,KAAK,YAAY,SAAS;GACpC,2BAAW,IAAI,MAAM;GACtB,EACD;GACE,GAAG;GACH,SAAS,SAAS,KAAK,IAAI;GAC5B,CACF;AAED,OAAK,OAAO,MAAM,MAAM;AAExB,MAAI,QAAQ,QACV,QAAO,CAAC,MAAM,SAAS;AAGzB,SAAO,CAAC,SAAS"}
@@ -30,4 +30,4 @@ declare class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {
30
30
  }
31
31
  //#endregion
32
32
  export { GoogleCloudLoggingTransport, type GoogleCloudLoggingTransportConfig };
33
- //# sourceMappingURL=index.d.ts.map
33
+ //# sourceMappingURL=index.d.mts.map
@@ -49,4 +49,4 @@ var GoogleCloudLoggingTransport = class extends BaseTransport {
49
49
 
50
50
  //#endregion
51
51
  export { GoogleCloudLoggingTransport };
52
- //# sourceMappingURL=index.js.map
52
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["metadata: Record<string, unknown>"],"sources":["../src/GoogleCloudLoggingTransport.ts"],"sourcesContent":["import type { Log, LogSync } from \"@google-cloud/logging\";\nimport type { LogEntry } from \"@google-cloud/logging/build/src/entry.js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel, type LogLevelType } from \"@loglayer/transport\";\n\nexport interface GoogleCloudLoggingTransportConfig extends LogLayerTransportConfig<Log | LogSync> {\n /**\n * The root level data to include for all log entries.\n * \"severity\", \"timestamp\" and \"jsonPayload\" are already populated by the transport.\n * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry\n */\n rootLevelData?: Omit<\n LogEntry,\n \"severity\" | \"timestamp\" | \"receiveTimestamp\" | \"jsonPayload\" | \"textPayload\" | \"protoPayload\"\n >;\n\n /**\n * List of LogLayer metadata fields to merge into `rootLevelData` when creating the log entry.\n */\n rootLevelMetadataFields?: Array<string>;\n}\n\nexport class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {\n private rootLevelData: GoogleCloudLoggingTransportConfig[\"rootLevelData\"];\n private rootLevelMetadataFields: Array<string>;\n\n constructor(config: GoogleCloudLoggingTransportConfig) {\n super(config);\n this.rootLevelData = config.rootLevelData || {};\n this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? [];\n }\n\n private mapLogLevel(level: LogLevelType): string {\n switch (level) {\n case LogLevel.fatal:\n return \"CRITICAL\";\n case LogLevel.error:\n return \"ERROR\";\n case LogLevel.warn:\n return \"WARNING\";\n case LogLevel.info:\n return \"INFO\";\n case LogLevel.debug:\n return \"DEBUG\";\n case LogLevel.trace:\n return \"DEBUG\";\n default:\n return \"DEFAULT\";\n }\n }\n\n private extractLogEntryFields(data: Record<string, unknown>) {\n const keys = Object.keys(data);\n const metadata: Record<string, unknown> = {};\n\n for (const key of keys) {\n if (this.rootLevelMetadataFields.includes(key)) {\n metadata[key] = data[key];\n delete data[key];\n }\n }\n\n return metadata;\n }\n\n shipToLogger({ data, hasData, logLevel, messages }: LogLayerTransportParams): any[] {\n const safeData = data && hasData ? data : {};\n const metadata = this.extractLogEntryFields(safeData);\n\n const entry = this.logger.entry(\n {\n ...this.rootLevelData,\n ...metadata,\n severity: this.mapLogLevel(logLevel),\n timestamp: new Date(),\n },\n {\n ...safeData,\n message: messages.join(\" \"),\n },\n );\n\n this.logger.write(entry);\n\n if (data && hasData) {\n return [data, messages];\n }\n\n return [messages];\n }\n}\n"],"mappings":";;;AAsBA,IAAa,8BAAb,cAAiD,cAA6B;CAC5E,AAAQ;CACR,AAAQ;CAER,YAAY,QAA2C;AACrD,QAAM,OAAO;AACb,OAAK,gBAAgB,OAAO,iBAAiB,EAAE;AAC/C,OAAK,0BAA0B,OAAO,2BAA2B,EAAE;;CAGrE,AAAQ,YAAY,OAA6B;AAC/C,UAAQ,OAAR;GACE,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,KACZ,QAAO;GACT,KAAK,SAAS,KACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,sBAAsB,MAA+B;EAC3D,MAAM,OAAO,OAAO,KAAK,KAAK;EAC9B,MAAMA,WAAoC,EAAE;AAE5C,OAAK,MAAM,OAAO,KAChB,KAAI,KAAK,wBAAwB,SAAS,IAAI,EAAE;AAC9C,YAAS,OAAO,KAAK;AACrB,UAAO,KAAK;;AAIhB,SAAO;;CAGT,aAAa,EAAE,MAAM,SAAS,UAAU,YAA4C;EAClF,MAAM,WAAW,QAAQ,UAAU,OAAO,EAAE;EAC5C,MAAM,WAAW,KAAK,sBAAsB,SAAS;EAErD,MAAM,QAAQ,KAAK,OAAO,MACxB;GACE,GAAG,KAAK;GACR,GAAG;GACH,UAAU,KAAK,YAAY,SAAS;GACpC,2BAAW,IAAI,MAAM;GACtB,EACD;GACE,GAAG;GACH,SAAS,SAAS,KAAK,IAAI;GAC5B,CACF;AAED,OAAK,OAAO,MAAM,MAAM;AAExB,MAAI,QAAQ,QACV,QAAO,CAAC,MAAM,SAAS;AAGzB,SAAO,CAAC,SAAS"}
package/package.json CHANGED
@@ -1,21 +1,22 @@
1
1
  {
2
2
  "name": "@loglayer/transport-google-cloud-logging",
3
3
  "description": "Google Cloud Logging (Stackdriver) transport for the LogLayer logging library.",
4
- "version": "2.2.11",
4
+ "version": "2.2.13",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
8
  "exports": {
9
9
  "import": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
10
+ "types": "./dist/index.d.mts",
11
+ "import": "./dist/index.mjs"
12
12
  },
13
13
  "require": {
14
14
  "types": "./dist/index.d.cts",
15
15
  "require": "./dist/index.cjs"
16
16
  }
17
17
  },
18
- "types": "./dist/index.d.ts",
18
+ "types": "./dist/index.d.mts",
19
+ "sideEffects": false,
19
20
  "license": "MIT",
20
21
  "repository": {
21
22
  "type": "git",
@@ -37,17 +38,17 @@
37
38
  "transport"
38
39
  ],
39
40
  "dependencies": {
40
- "@loglayer/transport": "2.3.10"
41
+ "@loglayer/transport": "2.3.12"
41
42
  },
42
43
  "devDependencies": {
43
- "@types/node": "24.10.1",
44
+ "@types/node": "24.10.2",
44
45
  "serialize-error": "12.0.0",
45
- "tsdown": "0.15.12",
46
- "tsx": "4.20.6",
46
+ "tsdown": "0.17.2",
47
+ "tsx": "4.21.0",
47
48
  "typescript": "5.9.3",
48
- "vitest": "4.0.9",
49
+ "vitest": "4.0.15",
49
50
  "@internal/tsconfig": "2.1.0",
50
- "loglayer": "8.1.0"
51
+ "loglayer": "8.2.0"
51
52
  },
52
53
  "peerDependencies": {
53
54
  "@google-cloud/logging": "*"
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["metadata: Record<string, unknown>"],"sources":["../src/GoogleCloudLoggingTransport.ts"],"sourcesContent":["import type { Log, LogSync } from \"@google-cloud/logging\";\nimport type { LogEntry } from \"@google-cloud/logging/build/src/entry.js\";\nimport type { LogLayerTransportConfig, LogLayerTransportParams } from \"@loglayer/transport\";\nimport { BaseTransport, LogLevel, type LogLevelType } from \"@loglayer/transport\";\n\nexport interface GoogleCloudLoggingTransportConfig extends LogLayerTransportConfig<Log | LogSync> {\n /**\n * The root level data to include for all log entries.\n * \"severity\", \"timestamp\" and \"jsonPayload\" are already populated by the transport.\n * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry\n */\n rootLevelData?: Omit<\n LogEntry,\n \"severity\" | \"timestamp\" | \"receiveTimestamp\" | \"jsonPayload\" | \"textPayload\" | \"protoPayload\"\n >;\n\n /**\n * List of LogLayer metadata fields to merge into `rootLevelData` when creating the log entry.\n */\n rootLevelMetadataFields?: Array<string>;\n}\n\nexport class GoogleCloudLoggingTransport extends BaseTransport<Log | LogSync> {\n private rootLevelData: GoogleCloudLoggingTransportConfig[\"rootLevelData\"];\n private rootLevelMetadataFields: Array<string>;\n\n constructor(config: GoogleCloudLoggingTransportConfig) {\n super(config);\n this.rootLevelData = config.rootLevelData || {};\n this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? [];\n }\n\n private mapLogLevel(level: LogLevelType): string {\n switch (level) {\n case LogLevel.fatal:\n return \"CRITICAL\";\n case LogLevel.error:\n return \"ERROR\";\n case LogLevel.warn:\n return \"WARNING\";\n case LogLevel.info:\n return \"INFO\";\n case LogLevel.debug:\n return \"DEBUG\";\n case LogLevel.trace:\n return \"DEBUG\";\n default:\n return \"DEFAULT\";\n }\n }\n\n private extractLogEntryFields(data: Record<string, unknown>) {\n const keys = Object.keys(data);\n const metadata: Record<string, unknown> = {};\n\n for (const key of keys) {\n if (this.rootLevelMetadataFields.includes(key)) {\n metadata[key] = data[key];\n delete data[key];\n }\n }\n\n return metadata;\n }\n\n shipToLogger({ data, hasData, logLevel, messages }: LogLayerTransportParams): any[] {\n const safeData = data && hasData ? data : {};\n const metadata = this.extractLogEntryFields(safeData);\n\n const entry = this.logger.entry(\n {\n ...this.rootLevelData,\n ...metadata,\n severity: this.mapLogLevel(logLevel),\n timestamp: new Date(),\n },\n {\n ...safeData,\n message: messages.join(\" \"),\n },\n );\n\n this.logger.write(entry);\n\n if (data && hasData) {\n return [data, messages];\n }\n\n return [messages];\n }\n}\n"],"mappings":";;;AAsBA,IAAa,8BAAb,cAAiD,cAA6B;CAC5E,AAAQ;CACR,AAAQ;CAER,YAAY,QAA2C;AACrD,QAAM,OAAO;AACb,OAAK,gBAAgB,OAAO,iBAAiB,EAAE;AAC/C,OAAK,0BAA0B,OAAO,2BAA2B,EAAE;;CAGrE,AAAQ,YAAY,OAA6B;AAC/C,UAAQ,OAAR;GACE,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,KACZ,QAAO;GACT,KAAK,SAAS,KACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,KAAK,SAAS,MACZ,QAAO;GACT,QACE,QAAO;;;CAIb,AAAQ,sBAAsB,MAA+B;EAC3D,MAAM,OAAO,OAAO,KAAK,KAAK;EAC9B,MAAMA,WAAoC,EAAE;AAE5C,OAAK,MAAM,OAAO,KAChB,KAAI,KAAK,wBAAwB,SAAS,IAAI,EAAE;AAC9C,YAAS,OAAO,KAAK;AACrB,UAAO,KAAK;;AAIhB,SAAO;;CAGT,aAAa,EAAE,MAAM,SAAS,UAAU,YAA4C;EAClF,MAAM,WAAW,QAAQ,UAAU,OAAO,EAAE;EAC5C,MAAM,WAAW,KAAK,sBAAsB,SAAS;EAErD,MAAM,QAAQ,KAAK,OAAO,MACxB;GACE,GAAG,KAAK;GACR,GAAG;GACH,UAAU,KAAK,YAAY,SAAS;GACpC,2BAAW,IAAI,MAAM;GACtB,EACD;GACE,GAAG;GACH,SAAS,SAAS,KAAK,IAAI;GAC5B,CACF;AAED,OAAK,OAAO,MAAM,MAAM;AAExB,MAAI,QAAQ,QACV,QAAO,CAAC,MAAM,SAAS;AAGzB,SAAO,CAAC,SAAS"}