@query-doctor/core 0.10.0 → 0.10.1
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/optimizer/dump.cjs
CHANGED
|
@@ -46,10 +46,12 @@ function dumpQueriesSql(schema, source = "pg_stat_statements") {
|
|
|
46
46
|
rows,
|
|
47
47
|
toplevel as "topLevel"
|
|
48
48
|
FROM ${quotedSchema}.pg_stat_statements
|
|
49
|
+
JOIN pg_database d ON d.oid = dbid
|
|
49
50
|
WHERE query NOT LIKE '%pg_stat_statements%'
|
|
50
51
|
AND query NOT LIKE '%@qd_introspection%'
|
|
51
52
|
AND query != '<insufficient privilege>'
|
|
52
53
|
AND query NOT ILIKE 'explain%'
|
|
54
|
+
AND d.datname = current_database()
|
|
53
55
|
`;
|
|
54
56
|
}
|
|
55
57
|
function combinedDumpSql(schema, source = "pg_stat_statements") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dump.cjs","names":["z","ExportedStats","PgIdentifier","DUMP_STATS_SQL"],"sources":["../../src/optimizer/dump.ts"],"sourcesContent":["import dedent from \"dedent\";\nimport { z } from \"zod\";\nimport { PgIdentifier } from \"../sql/pg-identifier.js\";\nimport { DUMP_STATS_SQL, ExportedStats } from \"./statistics.js\";\n\nexport const ExportedQuery = z.object({\n username: z.string(),\n query: z.string(),\n meanTime: z.number(),\n calls: z.coerce.string(),\n rows: z.coerce.string(),\n topLevel: z.boolean(),\n});\n\nexport type ExportedQuery = z.infer<typeof ExportedQuery>;\n\nexport const CombinedExport = z.object({\n queries: z\n .array(ExportedQuery)\n .nullable()\n .transform((v) => v ?? []),\n stats: z.array(ExportedStats),\n});\n\nexport type CombinedExport = z.infer<typeof CombinedExport>;\n\nexport type QuerySource = \"pg_stat_statements\" | \"pg_stat_monitor\";\n\nfunction indent(sql: string, spaces: number): string {\n const pad = \" \".repeat(spaces);\n return sql\n .trim()\n .split(\"\\n\")\n .map((line) => pad + line)\n .join(\"\\n\");\n}\n\nexport function dumpQueriesSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const quotedSchema = PgIdentifier.fromString(schema).toString();\n if (source === \"pg_stat_monitor\") {\n return dedent`\n SELECT\n COALESCE(username, 'unknown_user') as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_monitor\n WHERE query NOT LIKE '%pg_stat_monitor%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query NOT ILIKE 'explain%'\n `;\n }\n return dedent`\n SELECT\n 'unknown_user' as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_statements\n WHERE query NOT LIKE '%pg_stat_statements%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query != '<insufficient privilege>'\n AND query NOT ILIKE 'explain%'\n `;\n}\n\nexport function combinedDumpSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const statsSql = indent(DUMP_STATS_SQL, 6);\n const queriesSql = indent(dumpQueriesSql(schema, source), 8);\n return [\n \"SELECT json_build_object(\",\n ` 'queries', (SELECT json_agg(q) FROM (`,\n queriesSql,\n ` ) q),`,\n ` 'stats', (`,\n statsSql,\n ` )`,\n `);`,\n ].join(\"\\n\");\n}\n"],"mappings":";;;;;;;;AAKA,MAAa,gBAAgBA,IAAAA,EAAE,OAAO;CACpC,UAAUA,IAAAA,EAAE,QAAQ;CACpB,OAAOA,IAAAA,EAAE,QAAQ;CACjB,UAAUA,IAAAA,EAAE,QAAQ;CACpB,OAAOA,IAAAA,EAAE,OAAO,QAAQ;CACxB,MAAMA,IAAAA,EAAE,OAAO,QAAQ;CACvB,UAAUA,IAAAA,EAAE,SAAS;CACtB,CAAC;AAIF,MAAa,iBAAiBA,IAAAA,EAAE,OAAO;CACrC,SAASA,IAAAA,EACN,MAAM,cAAc,CACpB,UAAU,CACV,WAAW,MAAM,KAAK,EAAE,CAAC;CAC5B,OAAOA,IAAAA,EAAE,MAAMC,mBAAAA,cAAc;CAC9B,CAAC;AAMF,SAAS,OAAO,KAAa,QAAwB;CACnD,MAAM,MAAM,IAAI,OAAO,OAAO;AAC9B,QAAO,IACJ,MAAM,CACN,MAAM,KAAK,CACX,KAAK,SAAS,MAAM,KAAK,CACzB,KAAK,KAAK;;AAGf,SAAgB,eACd,QACA,SAAsB,sBACd;CACR,MAAM,eAAeC,sBAAAA,aAAa,WAAW,OAAO,CAAC,UAAU;AAC/D,KAAI,WAAW,kBACb,QAAO,OAAA,OAAM;;;;;;;;aAQJ,aAAa;;;;;AAMxB,QAAO,OAAA,OAAM;;;;;;;;WAQJ,aAAa
|
|
1
|
+
{"version":3,"file":"dump.cjs","names":["z","ExportedStats","PgIdentifier","DUMP_STATS_SQL"],"sources":["../../src/optimizer/dump.ts"],"sourcesContent":["import dedent from \"dedent\";\nimport { z } from \"zod\";\nimport { PgIdentifier } from \"../sql/pg-identifier.js\";\nimport { DUMP_STATS_SQL, ExportedStats } from \"./statistics.js\";\n\nexport const ExportedQuery = z.object({\n username: z.string(),\n query: z.string(),\n meanTime: z.number(),\n calls: z.coerce.string(),\n rows: z.coerce.string(),\n topLevel: z.boolean(),\n});\n\nexport type ExportedQuery = z.infer<typeof ExportedQuery>;\n\nexport const CombinedExport = z.object({\n queries: z\n .array(ExportedQuery)\n .nullable()\n .transform((v) => v ?? []),\n stats: z.array(ExportedStats),\n});\n\nexport type CombinedExport = z.infer<typeof CombinedExport>;\n\nexport type QuerySource = \"pg_stat_statements\" | \"pg_stat_monitor\";\n\nfunction indent(sql: string, spaces: number): string {\n const pad = \" \".repeat(spaces);\n return sql\n .trim()\n .split(\"\\n\")\n .map((line) => pad + line)\n .join(\"\\n\");\n}\n\nexport function dumpQueriesSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const quotedSchema = PgIdentifier.fromString(schema).toString();\n if (source === \"pg_stat_monitor\") {\n return dedent`\n SELECT\n COALESCE(username, 'unknown_user') as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_monitor\n WHERE query NOT LIKE '%pg_stat_monitor%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query NOT ILIKE 'explain%'\n `;\n }\n return dedent`\n SELECT\n 'unknown_user' as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_statements\n JOIN pg_database d ON d.oid = dbid\n WHERE query NOT LIKE '%pg_stat_statements%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query != '<insufficient privilege>'\n AND query NOT ILIKE 'explain%'\n AND d.datname = current_database()\n `;\n}\n\nexport function combinedDumpSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const statsSql = indent(DUMP_STATS_SQL, 6);\n const queriesSql = indent(dumpQueriesSql(schema, source), 8);\n return [\n \"SELECT json_build_object(\",\n ` 'queries', (SELECT json_agg(q) FROM (`,\n queriesSql,\n ` ) q),`,\n ` 'stats', (`,\n statsSql,\n ` )`,\n `);`,\n ].join(\"\\n\");\n}\n"],"mappings":";;;;;;;;AAKA,MAAa,gBAAgBA,IAAAA,EAAE,OAAO;CACpC,UAAUA,IAAAA,EAAE,QAAQ;CACpB,OAAOA,IAAAA,EAAE,QAAQ;CACjB,UAAUA,IAAAA,EAAE,QAAQ;CACpB,OAAOA,IAAAA,EAAE,OAAO,QAAQ;CACxB,MAAMA,IAAAA,EAAE,OAAO,QAAQ;CACvB,UAAUA,IAAAA,EAAE,SAAS;CACtB,CAAC;AAIF,MAAa,iBAAiBA,IAAAA,EAAE,OAAO;CACrC,SAASA,IAAAA,EACN,MAAM,cAAc,CACpB,UAAU,CACV,WAAW,MAAM,KAAK,EAAE,CAAC;CAC5B,OAAOA,IAAAA,EAAE,MAAMC,mBAAAA,cAAc;CAC9B,CAAC;AAMF,SAAS,OAAO,KAAa,QAAwB;CACnD,MAAM,MAAM,IAAI,OAAO,OAAO;AAC9B,QAAO,IACJ,MAAM,CACN,MAAM,KAAK,CACX,KAAK,SAAS,MAAM,KAAK,CACzB,KAAK,KAAK;;AAGf,SAAgB,eACd,QACA,SAAsB,sBACd;CACR,MAAM,eAAeC,sBAAAA,aAAa,WAAW,OAAO,CAAC,UAAU;AAC/D,KAAI,WAAW,kBACb,QAAO,OAAA,OAAM;;;;;;;;aAQJ,aAAa;;;;;AAMxB,QAAO,OAAA,OAAM;;;;;;;;WAQJ,aAAa;;;;;;;;;AAUxB,SAAgB,gBACd,QACA,SAAsB,sBACd;CACR,MAAM,WAAW,OAAOC,mBAAAA,gBAAgB,EAAE;AAE1C,QAAO;EACL;EACA;EAHiB,OAAO,eAAe,QAAQ,OAAO,EAAE,EAAE;EAK1D;EACA;EACA;EACA;EACA;EACD,CAAC,KAAK,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dump.d.cts","names":[],"sources":["../../src/optimizer/dump.ts"],"mappings":";;;;;cAKa,aAAA,EAAa,CAAA,CAAA,SAAA;;;;;;;;KASd,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,cAE9B,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQf,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAEhC,WAAA;AAAA,iBAWI,cAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"dump.d.cts","names":[],"sources":["../../src/optimizer/dump.ts"],"mappings":";;;;;cAKa,aAAA,EAAa,CAAA,CAAA,SAAA;;;;;;;;KASd,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,cAE9B,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQf,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAEhC,WAAA;AAAA,iBAWI,cAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA;AAAA,iBAoCM,eAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dump.d.mts","names":[],"sources":["../../src/optimizer/dump.ts"],"mappings":";;;;;cAKa,aAAA,EAAa,CAAA,CAAA,SAAA;;;;;;;;KASd,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,cAE9B,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQf,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAEhC,WAAA;AAAA,iBAWI,cAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"dump.d.mts","names":[],"sources":["../../src/optimizer/dump.ts"],"mappings":";;;;;cAKa,aAAA,EAAa,CAAA,CAAA,SAAA;;;;;;;;KASd,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,cAE9B,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAQf,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAEhC,WAAA;AAAA,iBAWI,cAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA;AAAA,iBAoCM,eAAA,CACd,MAAA,UACA,MAAA,GAAQ,WAAA"}
|
package/dist/optimizer/dump.mjs
CHANGED
|
@@ -44,10 +44,12 @@ function dumpQueriesSql(schema, source = "pg_stat_statements") {
|
|
|
44
44
|
rows,
|
|
45
45
|
toplevel as "topLevel"
|
|
46
46
|
FROM ${quotedSchema}.pg_stat_statements
|
|
47
|
+
JOIN pg_database d ON d.oid = dbid
|
|
47
48
|
WHERE query NOT LIKE '%pg_stat_statements%'
|
|
48
49
|
AND query NOT LIKE '%@qd_introspection%'
|
|
49
50
|
AND query != '<insufficient privilege>'
|
|
50
51
|
AND query NOT ILIKE 'explain%'
|
|
52
|
+
AND d.datname = current_database()
|
|
51
53
|
`;
|
|
52
54
|
}
|
|
53
55
|
function combinedDumpSql(schema, source = "pg_stat_statements") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dump.mjs","names":[],"sources":["../../src/optimizer/dump.ts"],"sourcesContent":["import dedent from \"dedent\";\nimport { z } from \"zod\";\nimport { PgIdentifier } from \"../sql/pg-identifier.js\";\nimport { DUMP_STATS_SQL, ExportedStats } from \"./statistics.js\";\n\nexport const ExportedQuery = z.object({\n username: z.string(),\n query: z.string(),\n meanTime: z.number(),\n calls: z.coerce.string(),\n rows: z.coerce.string(),\n topLevel: z.boolean(),\n});\n\nexport type ExportedQuery = z.infer<typeof ExportedQuery>;\n\nexport const CombinedExport = z.object({\n queries: z\n .array(ExportedQuery)\n .nullable()\n .transform((v) => v ?? []),\n stats: z.array(ExportedStats),\n});\n\nexport type CombinedExport = z.infer<typeof CombinedExport>;\n\nexport type QuerySource = \"pg_stat_statements\" | \"pg_stat_monitor\";\n\nfunction indent(sql: string, spaces: number): string {\n const pad = \" \".repeat(spaces);\n return sql\n .trim()\n .split(\"\\n\")\n .map((line) => pad + line)\n .join(\"\\n\");\n}\n\nexport function dumpQueriesSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const quotedSchema = PgIdentifier.fromString(schema).toString();\n if (source === \"pg_stat_monitor\") {\n return dedent`\n SELECT\n COALESCE(username, 'unknown_user') as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_monitor\n WHERE query NOT LIKE '%pg_stat_monitor%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query NOT ILIKE 'explain%'\n `;\n }\n return dedent`\n SELECT\n 'unknown_user' as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_statements\n WHERE query NOT LIKE '%pg_stat_statements%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query != '<insufficient privilege>'\n AND query NOT ILIKE 'explain%'\n `;\n}\n\nexport function combinedDumpSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const statsSql = indent(DUMP_STATS_SQL, 6);\n const queriesSql = indent(dumpQueriesSql(schema, source), 8);\n return [\n \"SELECT json_build_object(\",\n ` 'queries', (SELECT json_agg(q) FROM (`,\n queriesSql,\n ` ) q),`,\n ` 'stats', (`,\n statsSql,\n ` )`,\n `);`,\n ].join(\"\\n\");\n}\n"],"mappings":";;;;;;AAKA,MAAa,gBAAgB,EAAE,OAAO;CACpC,UAAU,EAAE,QAAQ;CACpB,OAAO,EAAE,QAAQ;CACjB,UAAU,EAAE,QAAQ;CACpB,OAAO,EAAE,OAAO,QAAQ;CACxB,MAAM,EAAE,OAAO,QAAQ;CACvB,UAAU,EAAE,SAAS;CACtB,CAAC;AAIF,MAAa,iBAAiB,EAAE,OAAO;CACrC,SAAS,EACN,MAAM,cAAc,CACpB,UAAU,CACV,WAAW,MAAM,KAAK,EAAE,CAAC;CAC5B,OAAO,EAAE,MAAM,cAAc;CAC9B,CAAC;AAMF,SAAS,OAAO,KAAa,QAAwB;CACnD,MAAM,MAAM,IAAI,OAAO,OAAO;AAC9B,QAAO,IACJ,MAAM,CACN,MAAM,KAAK,CACX,KAAK,SAAS,MAAM,KAAK,CACzB,KAAK,KAAK;;AAGf,SAAgB,eACd,QACA,SAAsB,sBACd;CACR,MAAM,eAAe,aAAa,WAAW,OAAO,CAAC,UAAU;AAC/D,KAAI,WAAW,kBACb,QAAO,MAAM;;;;;;;;aAQJ,aAAa;;;;;AAMxB,QAAO,MAAM;;;;;;;;WAQJ,aAAa
|
|
1
|
+
{"version":3,"file":"dump.mjs","names":[],"sources":["../../src/optimizer/dump.ts"],"sourcesContent":["import dedent from \"dedent\";\nimport { z } from \"zod\";\nimport { PgIdentifier } from \"../sql/pg-identifier.js\";\nimport { DUMP_STATS_SQL, ExportedStats } from \"./statistics.js\";\n\nexport const ExportedQuery = z.object({\n username: z.string(),\n query: z.string(),\n meanTime: z.number(),\n calls: z.coerce.string(),\n rows: z.coerce.string(),\n topLevel: z.boolean(),\n});\n\nexport type ExportedQuery = z.infer<typeof ExportedQuery>;\n\nexport const CombinedExport = z.object({\n queries: z\n .array(ExportedQuery)\n .nullable()\n .transform((v) => v ?? []),\n stats: z.array(ExportedStats),\n});\n\nexport type CombinedExport = z.infer<typeof CombinedExport>;\n\nexport type QuerySource = \"pg_stat_statements\" | \"pg_stat_monitor\";\n\nfunction indent(sql: string, spaces: number): string {\n const pad = \" \".repeat(spaces);\n return sql\n .trim()\n .split(\"\\n\")\n .map((line) => pad + line)\n .join(\"\\n\");\n}\n\nexport function dumpQueriesSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const quotedSchema = PgIdentifier.fromString(schema).toString();\n if (source === \"pg_stat_monitor\") {\n return dedent`\n SELECT\n COALESCE(username, 'unknown_user') as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_monitor\n WHERE query NOT LIKE '%pg_stat_monitor%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query NOT ILIKE 'explain%'\n `;\n }\n return dedent`\n SELECT\n 'unknown_user' as \"username\",\n query,\n mean_exec_time as \"meanTime\",\n calls,\n rows,\n toplevel as \"topLevel\"\n FROM ${quotedSchema}.pg_stat_statements\n JOIN pg_database d ON d.oid = dbid\n WHERE query NOT LIKE '%pg_stat_statements%'\n AND query NOT LIKE '%@qd_introspection%'\n AND query != '<insufficient privilege>'\n AND query NOT ILIKE 'explain%'\n AND d.datname = current_database()\n `;\n}\n\nexport function combinedDumpSql(\n schema: string,\n source: QuerySource = \"pg_stat_statements\",\n): string {\n const statsSql = indent(DUMP_STATS_SQL, 6);\n const queriesSql = indent(dumpQueriesSql(schema, source), 8);\n return [\n \"SELECT json_build_object(\",\n ` 'queries', (SELECT json_agg(q) FROM (`,\n queriesSql,\n ` ) q),`,\n ` 'stats', (`,\n statsSql,\n ` )`,\n `);`,\n ].join(\"\\n\");\n}\n"],"mappings":";;;;;;AAKA,MAAa,gBAAgB,EAAE,OAAO;CACpC,UAAU,EAAE,QAAQ;CACpB,OAAO,EAAE,QAAQ;CACjB,UAAU,EAAE,QAAQ;CACpB,OAAO,EAAE,OAAO,QAAQ;CACxB,MAAM,EAAE,OAAO,QAAQ;CACvB,UAAU,EAAE,SAAS;CACtB,CAAC;AAIF,MAAa,iBAAiB,EAAE,OAAO;CACrC,SAAS,EACN,MAAM,cAAc,CACpB,UAAU,CACV,WAAW,MAAM,KAAK,EAAE,CAAC;CAC5B,OAAO,EAAE,MAAM,cAAc;CAC9B,CAAC;AAMF,SAAS,OAAO,KAAa,QAAwB;CACnD,MAAM,MAAM,IAAI,OAAO,OAAO;AAC9B,QAAO,IACJ,MAAM,CACN,MAAM,KAAK,CACX,KAAK,SAAS,MAAM,KAAK,CACzB,KAAK,KAAK;;AAGf,SAAgB,eACd,QACA,SAAsB,sBACd;CACR,MAAM,eAAe,aAAa,WAAW,OAAO,CAAC,UAAU;AAC/D,KAAI,WAAW,kBACb,QAAO,MAAM;;;;;;;;aAQJ,aAAa;;;;;AAMxB,QAAO,MAAM;;;;;;;;WAQJ,aAAa;;;;;;;;;AAUxB,SAAgB,gBACd,QACA,SAAsB,sBACd;CACR,MAAM,WAAW,OAAO,gBAAgB,EAAE;AAE1C,QAAO;EACL;EACA;EAHiB,OAAO,eAAe,QAAQ,OAAO,EAAE,EAAE;EAK1D;EACA;EACA;EACA;EACA;EACD,CAAC,KAAK,KAAK"}
|