@fairspec/agent 0.9.0 → 0.9.2

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 (77) hide show
  1. package/build/examples/client.js +16 -0
  2. package/build/main.js +6 -0
  3. package/build/package.json +1 -1
  4. package/build/server.js +2 -1
  5. package/build/tools/data/validate.d.ts +180 -178
  6. package/build/tools/data/validate.js +6 -3
  7. package/build/tools/data/validate.spec.js +22 -22
  8. package/build/tools/dataSchema/infer.d.ts +10 -8
  9. package/build/tools/dataSchema/infer.js +6 -3
  10. package/build/tools/dataSchema/infer.spec.js +12 -10
  11. package/build/tools/dataSchema/validate.d.ts +173 -171
  12. package/build/tools/dataSchema/validate.js +6 -3
  13. package/build/tools/dataSchema/validate.spec.js +15 -15
  14. package/build/tools/dataset/infer.d.ts +804 -802
  15. package/build/tools/dataset/infer.js +6 -3
  16. package/build/tools/dataset/infer.spec.js +18 -18
  17. package/build/tools/dataset/validate.d.ts +180 -178
  18. package/build/tools/dataset/validate.js +6 -3
  19. package/build/tools/dataset/validate.spec.js +16 -16
  20. package/build/tools/dialect/infer.d.ts +98 -96
  21. package/build/tools/dialect/infer.js +6 -3
  22. package/build/tools/dialect/infer.spec.js +16 -14
  23. package/build/tools/table/query.d.ts +10 -8
  24. package/build/tools/table/query.js +6 -3
  25. package/build/tools/table/query.spec.js +31 -31
  26. package/build/tools/table/validate.d.ts +180 -178
  27. package/build/tools/table/validate.js +6 -3
  28. package/build/tools/table/validate.spec.js +11 -11
  29. package/build/tools/tableSchema/infer.d.ts +501 -499
  30. package/build/tools/tableSchema/infer.js +7 -3
  31. package/build/tools/tableSchema/infer.spec.js +35 -33
  32. package/build/tools/tableSchema/validate.d.ts +173 -171
  33. package/build/tools/tableSchema/validate.js +6 -3
  34. package/build/tools/tableSchema/validate.spec.js +13 -13
  35. package/package.json +2 -2
  36. package/build/actions/tableSchema/asHtml.d.ts +0 -4
  37. package/build/actions/tableSchema/asHtml.js +0 -82
  38. package/build/actions/tableSchema/asHtml.spec.js +0 -356
  39. package/build/actions/tableSchema/asMarkdown.d.ts +0 -4
  40. package/build/actions/tableSchema/asMarkdown.js +0 -65
  41. package/build/actions/tableSchema/asMarkdown.spec.js +0 -133
  42. package/build/document/Document.d.ts +0 -2
  43. package/build/document/Document.js +0 -2
  44. package/build/document/index.d.ts +0 -3
  45. package/build/document/index.js +0 -3
  46. package/build/document/types/Base.d.ts +0 -3
  47. package/build/document/types/Base.js +0 -2
  48. package/build/document/types/Json.d.ts +0 -5
  49. package/build/document/types/Json.js +0 -2
  50. package/build/document/validate.d.ts +0 -5
  51. package/build/document/validate.js +0 -23
  52. package/build/document/validate.spec.d.ts +0 -1
  53. package/build/document/validate.spec.js +0 -71
  54. package/build/plugin.d.ts +0 -6
  55. package/build/plugin.js +0 -15
  56. package/build/schema/convert/toHtml.d.ts +0 -4
  57. package/build/schema/convert/toHtml.js +0 -107
  58. package/build/schema/convert/toHtml.spec.d.ts +0 -1
  59. package/build/schema/convert/toHtml.spec.js +0 -432
  60. package/build/schema/convert/toMarkdown.d.ts +0 -4
  61. package/build/schema/convert/toMarkdown.js +0 -75
  62. package/build/schema/convert/toMarkdown.spec.d.ts +0 -1
  63. package/build/schema/convert/toMarkdown.spec.js +0 -137
  64. package/build/schema/index.d.ts +0 -2
  65. package/build/schema/index.js +0 -3
  66. package/build/tableSchema/convert/toHtml.d.ts +0 -4
  67. package/build/tableSchema/convert/toHtml.js +0 -80
  68. package/build/tableSchema/convert/toHtml.spec.d.ts +0 -1
  69. package/build/tableSchema/convert/toHtml.spec.js +0 -375
  70. package/build/tableSchema/convert/toMarkdown.d.ts +0 -4
  71. package/build/tableSchema/convert/toMarkdown.js +0 -57
  72. package/build/tableSchema/convert/toMarkdown.spec.d.ts +0 -1
  73. package/build/tableSchema/convert/toMarkdown.spec.js +0 -141
  74. package/build/tableSchema/index.d.ts +0 -2
  75. package/build/tableSchema/index.js +0 -3
  76. /package/build/{actions/tableSchema/asHtml.spec.d.ts → examples/client.d.ts} +0 -0
  77. /package/build/{actions/tableSchema/asMarkdown.spec.d.ts → main.d.ts} +0 -0
@@ -302,7 +302,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
302
302
  title?: string | undefined;
303
303
  description?: string | undefined;
304
304
  rdfType?: string | undefined;
305
- format?: undefined;
305
+ format?: "" | undefined;
306
306
  enum?: boolean[] | undefined;
307
307
  const?: boolean | undefined;
308
308
  default?: boolean[] | undefined;
@@ -333,7 +333,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
333
333
  multipleOf?: number | undefined;
334
334
  groupChar?: string | undefined;
335
335
  withText?: boolean | undefined;
336
- format?: undefined;
336
+ format?: "" | undefined;
337
337
  } | {
338
338
  type: "integer";
339
339
  format: "categorical";
@@ -381,7 +381,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
381
381
  decimalChar?: string | undefined;
382
382
  groupChar?: string | undefined;
383
383
  withText?: boolean | undefined;
384
- format?: undefined;
384
+ format?: "" | undefined;
385
385
  } | {
386
386
  type: "string";
387
387
  format: "list";
@@ -592,7 +592,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
592
592
  minLength?: number | undefined;
593
593
  maxLength?: number | undefined;
594
594
  pattern?: string | undefined;
595
- format?: undefined;
595
+ format?: "" | undefined;
596
596
  } | {
597
597
  type: "string";
598
598
  format: "categorical";
@@ -645,7 +645,7 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
645
645
  title?: string | undefined;
646
646
  description?: string | undefined;
647
647
  rdfType?: string | undefined;
648
- format?: undefined;
648
+ format?: "" | undefined;
649
649
  enum?: unknown[] | undefined;
650
650
  const?: unknown[] | undefined;
651
651
  default?: unknown[][] | undefined;
@@ -762,13 +762,13 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
762
762
  dependentRequired?: unknown;
763
763
  dependentSchemas?: unknown;
764
764
  required?: unknown;
765
- format?: undefined;
765
+ format?: "" | undefined;
766
766
  } | {
767
767
  title?: string | undefined;
768
768
  description?: string | undefined;
769
769
  rdfType?: string | undefined;
770
770
  type?: "null" | undefined;
771
- format?: undefined;
771
+ format?: "" | undefined;
772
772
  enum?: unknown[][] | undefined;
773
773
  const?: unknown[] | undefined;
774
774
  default?: unknown[] | undefined;
@@ -795,4 +795,6 @@ export declare const queryTableTool: import("@mastra/core/tools").Tool<{
795
795
  unstable_customMetadata?: Record<string, unknown> | undefined;
796
796
  };
797
797
  query: string;
798
- }, Record<string, unknown>[], unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "query-table", unknown>;
798
+ }, {
799
+ records: Record<string, unknown>[];
800
+ }, unknown, unknown, import("@mastra/core/tools").ToolExecutionContext<unknown, unknown, unknown>, "query-table", unknown>;
@@ -10,7 +10,9 @@ export const queryTableTool = createTool({
10
10
  .string()
11
11
  .describe("SQL query to execute (use 'self' as table name)"),
12
12
  }),
13
- outputSchema: z.array(z.record(z.string(), z.unknown())),
13
+ outputSchema: z.object({
14
+ records: z.array(z.record(z.string(), z.unknown())),
15
+ }),
14
16
  execute: async (input) => {
15
17
  const table = await loadTable(input.resource, {});
16
18
  if (!table) {
@@ -18,7 +20,8 @@ export const queryTableTool = createTool({
18
20
  }
19
21
  const lazyFrame = queryTable(table, input.query);
20
22
  const frame = await lazyFrame.collect();
21
- return frame.toRecords();
23
+ const records = frame.toRecords();
24
+ return { records };
22
25
  },
23
26
  });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy90YWJsZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0lBQ3ZDLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLFdBQVcsRUFDVCxtSEFBbUg7SUFDckgsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUM7UUFDMUQsS0FBSyxFQUFFLENBQUM7YUFDTCxNQUFNLEVBQUU7YUFDUixRQUFRLENBQUMsaURBQWlELENBQUM7S0FDL0QsQ0FBQztJQUNGLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUMsS0FBSyxFQUFDLEVBQUU7UUFDckIsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDekMsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hELE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzFCLENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkVGFibGUsIHF1ZXJ5VGFibGUsIFJlc291cmNlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5VGFibGVUb29sID0gY3JlYXRlVG9vbCh7XG4gIGlkOiBcInF1ZXJ5LXRhYmxlXCIsXG4gIGRlc2NyaXB0aW9uOlxuICAgIFwiUXVlcnkgYSB0YWJsZSB1c2luZyBTUUwuIExvYWRzIHRoZSB0YWJsZSwgZXhlY3V0ZXMgdGhlIFNRTCBxdWVyeSwgYW5kIHJldHVybnMgdGhlIHJlc3VsdHMgYXMgYW4gYXJyYXkgb2YgcmVjb3Jkcy5cIixcbiAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZTogUmVzb3VyY2UuZGVzY3JpYmUoXCJUaGUgdGFibGUgcmVzb3VyY2UgdG8gcXVlcnlcIiksXG4gICAgcXVlcnk6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmRlc2NyaWJlKFwiU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUgKHVzZSAnc2VsZicgYXMgdGFibGUgbmFtZSlcIiksXG4gIH0pLFxuICBvdXRwdXRTY2hlbWE6IHouYXJyYXkoei5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpKSxcbiAgZXhlY3V0ZTogYXN5bmMgaW5wdXQgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgbG9hZFRhYmxlKGlucHV0LnJlc291cmNlLCB7fSlcbiAgICBpZiAoIXRhYmxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgbG9hZCB0YWJsZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IGxhenlGcmFtZSA9IHF1ZXJ5VGFibGUodGFibGUsIGlucHV0LnF1ZXJ5KVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgbGF6eUZyYW1lLmNvbGxlY3QoKVxuICAgIHJldHVybiBmcmFtZS50b1JlY29yZHMoKVxuICB9LFxufSlcbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90b29scy90YWJsZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0lBQ3ZDLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLFdBQVcsRUFDVCxtSEFBbUg7SUFDckgsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDcEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUM7UUFDMUQsS0FBSyxFQUFFLENBQUM7YUFDTCxNQUFNLEVBQUU7YUFDUixRQUFRLENBQUMsaURBQWlELENBQUM7S0FDL0QsQ0FBQztJQUNGLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3BELENBQUM7SUFDRixPQUFPLEVBQUUsS0FBSyxFQUFDLEtBQUssRUFBQyxFQUFFO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3BCLENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkVGFibGUsIHF1ZXJ5VGFibGUsIFJlc291cmNlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGNyZWF0ZVRvb2wgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3Rvb2xzXCJcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCJcblxuZXhwb3J0IGNvbnN0IHF1ZXJ5VGFibGVUb29sID0gY3JlYXRlVG9vbCh7XG4gIGlkOiBcInF1ZXJ5LXRhYmxlXCIsXG4gIGRlc2NyaXB0aW9uOlxuICAgIFwiUXVlcnkgYSB0YWJsZSB1c2luZyBTUUwuIExvYWRzIHRoZSB0YWJsZSwgZXhlY3V0ZXMgdGhlIFNRTCBxdWVyeSwgYW5kIHJldHVybnMgdGhlIHJlc3VsdHMgYXMgYW4gYXJyYXkgb2YgcmVjb3Jkcy5cIixcbiAgaW5wdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICByZXNvdXJjZTogUmVzb3VyY2UuZGVzY3JpYmUoXCJUaGUgdGFibGUgcmVzb3VyY2UgdG8gcXVlcnlcIiksXG4gICAgcXVlcnk6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmRlc2NyaWJlKFwiU1FMIHF1ZXJ5IHRvIGV4ZWN1dGUgKHVzZSAnc2VsZicgYXMgdGFibGUgbmFtZSlcIiksXG4gIH0pLFxuICBvdXRwdXRTY2hlbWE6IHoub2JqZWN0KHtcbiAgICByZWNvcmRzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSksXG4gIH0pLFxuICBleGVjdXRlOiBhc3luYyBpbnB1dCA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBhd2FpdCBsb2FkVGFibGUoaW5wdXQucmVzb3VyY2UsIHt9KVxuICAgIGlmICghdGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsb2FkIHRhYmxlXCIpXG4gICAgfVxuXG4gICAgY29uc3QgbGF6eUZyYW1lID0gcXVlcnlUYWJsZSh0YWJsZSwgaW5wdXQucXVlcnkpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCBsYXp5RnJhbWUuY29sbGVjdCgpXG4gICAgY29uc3QgcmVjb3JkcyA9IGZyYW1lLnRvUmVjb3JkcygpXG4gICAgcmV0dXJuIHsgcmVjb3JkcyB9XG4gIH0sXG59KVxuIl19
@@ -19,10 +19,10 @@ describe("queryTableTool", () => {
19
19
  }, {});
20
20
  expect.assert(result);
21
21
  expect.assert(!("error" in result));
22
- expect(Array.isArray(result)).toBe(true);
23
- expect(result.length).toBe(2);
24
- expect(result).toContainEqual({ id: 2, name: "bob", age: 30 });
25
- expect(result).toContainEqual({ id: 3, name: "carol", age: 28 });
22
+ expect(Array.isArray(result.records)).toBe(true);
23
+ expect(result.records.length).toBe(2);
24
+ expect(result.records).toContainEqual({ id: 2, name: "bob", age: 30 });
25
+ expect(result.records).toContainEqual({ id: 3, name: "carol", age: 28 });
26
26
  });
27
27
  it("queries table with column selection", async () => {
28
28
  const csvContent = "id,name,age,city\n1,alice,25,NYC\n2,bob,30,LA\n3,carol,28,SF";
@@ -34,12 +34,12 @@ describe("queryTableTool", () => {
34
34
  }, {});
35
35
  expect.assert(result);
36
36
  expect.assert(!("error" in result));
37
- expect(Array.isArray(result)).toBe(true);
38
- expect(result.length).toBe(3);
39
- expect(result[0]).toHaveProperty("name");
40
- expect(result[0]).toHaveProperty("city");
41
- expect(result[0]).not.toHaveProperty("id");
42
- expect(result[0]).not.toHaveProperty("age");
37
+ expect(Array.isArray(result.records)).toBe(true);
38
+ expect(result.records.length).toBe(3);
39
+ expect(result.records[0]).toHaveProperty("name");
40
+ expect(result.records[0]).toHaveProperty("city");
41
+ expect(result.records[0]).not.toHaveProperty("id");
42
+ expect(result.records[0]).not.toHaveProperty("age");
43
43
  });
44
44
  it("queries table with ORDER BY clause", async () => {
45
45
  const csvContent = "id,name,score\n1,alice,85\n2,bob,90\n3,carol,88";
@@ -51,11 +51,11 @@ describe("queryTableTool", () => {
51
51
  }, {});
52
52
  expect.assert(result);
53
53
  expect.assert(!("error" in result));
54
- expect(Array.isArray(result)).toBe(true);
55
- expect(result.length).toBe(3);
56
- expect(result[0]).toMatchObject({ name: "bob", score: 90 });
57
- expect(result[1]).toMatchObject({ name: "carol", score: 88 });
58
- expect(result[2]).toMatchObject({ name: "alice", score: 85 });
54
+ expect(Array.isArray(result.records)).toBe(true);
55
+ expect(result.records.length).toBe(3);
56
+ expect(result.records[0]).toMatchObject({ name: "bob", score: 90 });
57
+ expect(result.records[1]).toMatchObject({ name: "carol", score: 88 });
58
+ expect(result.records[2]).toMatchObject({ name: "alice", score: 85 });
59
59
  });
60
60
  it("queries table with aggregation", async () => {
61
61
  const csvContent = "id,name,score\n1,alice,85\n2,bob,90\n3,carol,88";
@@ -67,10 +67,10 @@ describe("queryTableTool", () => {
67
67
  }, {});
68
68
  expect.assert(result);
69
69
  expect.assert(!("error" in result));
70
- expect(Array.isArray(result)).toBe(true);
71
- expect(result.length).toBe(1);
72
- expect(result[0]).toHaveProperty("count");
73
- expect(result[0]).toHaveProperty("avg_score");
70
+ expect(Array.isArray(result.records)).toBe(true);
71
+ expect(result.records.length).toBe(1);
72
+ expect(result.records[0]).toHaveProperty("count");
73
+ expect(result.records[0]).toHaveProperty("avg_score");
74
74
  });
75
75
  it("queries table with WHERE and LIMIT", async () => {
76
76
  const csvContent = "id,name,age\n1,alice,25\n2,bob,30\n3,carol,28\n4,dave,35\n5,eve,22";
@@ -82,8 +82,8 @@ describe("queryTableTool", () => {
82
82
  }, {});
83
83
  expect.assert(result);
84
84
  expect.assert(!("error" in result));
85
- expect(Array.isArray(result)).toBe(true);
86
- expect(result.length).toBe(2);
85
+ expect(Array.isArray(result.records)).toBe(true);
86
+ expect(result.records.length).toBe(2);
87
87
  });
88
88
  it("queries inline data", async () => {
89
89
  const resource = {
@@ -99,10 +99,10 @@ describe("queryTableTool", () => {
99
99
  }, {});
100
100
  expect.assert(result);
101
101
  expect.assert(!("error" in result));
102
- expect(Array.isArray(result)).toBe(true);
103
- expect(result.length).toBe(2);
104
- expect(result).toContainEqual({ name: "bob", score: 90 });
105
- expect(result).toContainEqual({ name: "carol", score: 88 });
102
+ expect(Array.isArray(result.records)).toBe(true);
103
+ expect(result.records.length).toBe(2);
104
+ expect(result.records).toContainEqual({ name: "bob", score: 90 });
105
+ expect(result.records).toContainEqual({ name: "carol", score: 88 });
106
106
  });
107
107
  it("queries with JOIN operations", async () => {
108
108
  const resource = {
@@ -117,9 +117,9 @@ describe("queryTableTool", () => {
117
117
  }, {});
118
118
  expect.assert(result);
119
119
  expect.assert(!("error" in result));
120
- expect(Array.isArray(result)).toBe(true);
121
- expect(result.length).toBe(1);
122
- expect(result[0]).toMatchObject({ name: "alice", dept_id: 10 });
120
+ expect(Array.isArray(result.records)).toBe(true);
121
+ expect(result.records.length).toBe(1);
122
+ expect(result.records[0]).toMatchObject({ name: "alice", dept_id: 10 });
123
123
  });
124
124
  it("returns all records when querying without filters", async () => {
125
125
  const csvContent = "id,name\n1,alice\n2,bob\n3,carol";
@@ -131,8 +131,8 @@ describe("queryTableTool", () => {
131
131
  }, {});
132
132
  expect.assert(result);
133
133
  expect.assert(!("error" in result));
134
- expect(Array.isArray(result)).toBe(true);
135
- expect(result.length).toBe(3);
134
+ expect(Array.isArray(result.records)).toBe(true);
135
+ expect(result.records.length).toBe(3);
136
136
  });
137
137
  });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlL3F1ZXJ5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQTtRQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFB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LENBQUMsQ0FBQyxDQUFBO1FBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLGtDQUFrQyxDQUFBO1FBQ3JELE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sUUFBUSxHQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtRQUV4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FDM0M7WUFDRSxRQUFRO1lBQ1IsS0FBSyxFQUFFLG9CQUFvQjtTQUM1QixFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBxdWVyeVRhYmxlVG9vbCB9IGZyb20gXCIuL3F1ZXJ5LnRzXCJcblxuZGVzY3JpYmUoXCJxdWVyeVRhYmxlVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuaWQpLnRvQmUoXCJxdWVyeS10YWJsZVwiKVxuICAgIGV4cGVjdChxdWVyeVRhYmxlVG9vbC5kZXNjcmlwdGlvbikudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KHF1ZXJ5VGFibGVUb29sLmlucHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuZXhlY3V0ZSkudG9CZVR5cGVPZihcImZ1bmN0aW9uXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggU0VMRUNUIHN0YXRlbWVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgV0hFUkUgYWdlID4gMjVcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5sZW5ndGgpLnRvQmUoMilcbiAgICBleHBlY3QocmVzdWx0KS50b0NvbnRhaW5FcXVhbCh7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBhZ2U6IDMwIH0pXG4gICAgZXhwZWN0KHJlc3VsdCkudG9Db250YWluRXF1YWwoeyBpZDogMywgbmFtZTogXCJjYXJvbFwiLCBhZ2U6IDI4IH0pXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggY29sdW1uIHNlbGVjdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9XG4gICAgICBcImlkLG5hbWUsYWdlLGNpdHlcXG4xLGFsaWNlLDI1LE5ZQ1xcbjIsYm9iLDMwLExBXFxuMyxjYXJvbCwyOCxTRlwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUIG5hbWUsIGNpdHkgRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0KSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQubGVuZ3RoKS50b0JlKDMpXG4gICAgZXhwZWN0KHJlc3VsdFswXSkudG9IYXZlUHJvcGVydHkoXCJuYW1lXCIpXG4gICAgZXhwZWN0KHJlc3VsdFswXSkudG9IYXZlUHJvcGVydHkoXCJjaXR5XCIpXG4gICAgZXhwZWN0KHJlc3VsdFswXSkubm90LnRvSGF2ZVByb3BlcnR5KFwiaWRcIilcbiAgICBleHBlY3QocmVzdWx0WzBdKS5ub3QudG9IYXZlUHJvcGVydHkoXCJhZ2VcIilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBPUkRFUiBCWSBjbGF1c2VcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNzdkNvbnRlbnQgPSBcImlkLG5hbWUsc2NvcmVcXG4xLGFsaWNlLDg1XFxuMixib2IsOTBcXG4zLGNhcm9sLDg4XCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgT1JERVIgQlkgc2NvcmUgREVTQ1wiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdCkpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0Lmxlbmd0aCkudG9CZSgzKVxuICAgIGV4cGVjdChyZXN1bHRbMF0pLnRvTWF0Y2hPYmplY3QoeyBuYW1lOiBcImJvYlwiLCBzY29yZTogOTAgfSlcbiAgICBleHBlY3QocmVzdWx0WzFdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJjYXJvbFwiLCBzY29yZTogODggfSlcbiAgICBleHBlY3QocmVzdWx0WzJdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBhZ2dyZWdhdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCwgQVZHKHNjb3JlKSBhcyBhdmdfc2NvcmUgRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0KSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQubGVuZ3RoKS50b0JlKDEpXG4gICAgZXhwZWN0KHJlc3VsdFswXSkudG9IYXZlUHJvcGVydHkoXCJjb3VudFwiKVxuICAgIGV4cGVjdChyZXN1bHRbMF0pLnRvSGF2ZVByb3BlcnR5KFwiYXZnX3Njb3JlXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggV0hFUkUgYW5kIExJTUlUXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID1cbiAgICAgIFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XFxuNCxkYXZlLDM1XFxuNSxldmUsMjJcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZiBXSEVSRSBhZ2UgPj0gMjUgT1JERVIgQlkgYWdlIExJTUlUIDJcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5sZW5ndGgpLnRvQmUoMilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgaW5saW5lIGRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0sXG4gICAgICAgIHsgaWQ6IDMsIG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBuYW1lLCBzY29yZSBGUk9NIHNlbGYgV0hFUkUgc2NvcmUgPiA4NVwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdCkpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0Lmxlbmd0aCkudG9CZSgyKVxuICAgIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbkVxdWFsKHsgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0pXG4gICAgZXhwZWN0KHJlc3VsdCkudG9Db250YWluRXF1YWwoeyBuYW1lOiBcImNhcm9sXCIsIHNjb3JlOiA4OCB9KVxuICB9KVxuXG4gIGl0KFwicXVlcmllcyB3aXRoIEpPSU4gb3BlcmF0aW9uc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0ge1xuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImFsaWNlXCIsIGRlcHRfaWQ6IDEwIH0sXG4gICAgICAgIHsgaWQ6IDIsIG5hbWU6IFwiYm9iXCIsIGRlcHRfaWQ6IDIwIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZiBXSEVSRSBkZXB0X2lkID0gMTBcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5sZW5ndGgpLnRvQmUoMSlcbiAgICBleHBlY3QocmVzdWx0WzBdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJhbGljZVwiLCBkZXB0X2lkOiAxMCB9KVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBhbGwgcmVjb3JkcyB3aGVuIHF1ZXJ5aW5nIHdpdGhvdXQgZmlsdGVyc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZVxcbjEsYWxpY2VcXG4yLGJvYlxcbjMsY2Fyb2xcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZlwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdCkpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0Lmxlbmd0aCkudG9CZSgzKVxuICB9KVxufSlcbiJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rvb2xzL3RhYmxlL3F1ZXJ5LnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM3QyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQy9DLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDL0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNoRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFVBQVUsR0FBRywrQ0FBK0MsQ0FBQTtRQUNsRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7UUFFeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQzNDO1lBQ0UsUUFBUTtZQUNSLEtBQUssRUFBRSxtQ0FBbUM7U0FDM0MsRUFDRCxFQUFFLENBQ0gsQ0FBQTtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN0RSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUMxRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNuRCxNQUFNLFVBQVUsR0FDZCw4REFBOEQsQ0FBQTtRQUNoRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7UUFFeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQzNDO1lBQ0UsUUFBUTtZQUNSLEtBQUssRUFBRSw2QkFBNkI7U0FDckMsRUFDRCxFQUFFLENBQ0gsQ0FBQTtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2xELE1BQU0sVUFBVSxHQUFHLGlEQUFpRCxDQUFBO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sUUFBUSxHQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtRQUV4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FDM0M7WUFDRSxRQUFRO1lBQ1IsS0FBSyxFQUFFLHdDQUF3QztTQUNoRCxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNuRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDckUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZFLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlDLE1BQU0sVUFBVSxHQUFHLGlEQUFpRCxDQUFBO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sUUFBUSxHQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtRQUV4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FDM0M7WUFDRSxRQUFRO1lBQ1IsS0FBSyxFQUFFLDZEQUE2RDtTQUNyRSxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3ZELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2xELE1BQU0sVUFBVSxHQUNkLG9FQUFvRSxDQUFBO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sUUFBUSxHQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQTtRQUV4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FDM0M7WUFDRSxRQUFRO1lBQ1IsS0FBSyxFQUFFLHlEQUF5RDtTQUNqRSxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25DLE1BQU0sUUFBUSxHQUFhO1lBQ3pCLElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNuQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNqQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO2FBQ3BDO1NBQ0YsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUMzQztZQUNFLFFBQVE7WUFDUixLQUFLLEVBQUUsK0NBQStDO1NBQ3ZELEVBQ0QsRUFBRSxDQUNILENBQUE7UUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRW5DLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNyRSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1QyxNQUFNLFFBQVEsR0FBYTtZQUN6QixJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtnQkFDckMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTthQUNwQztTQUNGLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FDM0M7WUFDRSxRQUFRO1lBQ1IsS0FBSyxFQUFFLHVDQUF1QztTQUMvQyxFQUNELEVBQUUsQ0FDSCxDQUFBO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN6RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNqRSxNQUFNLFVBQVUsR0FBRyxrQ0FBa0MsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUE7UUFFeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxFQUFFLENBQzNDO1lBQ0UsUUFBUTtZQUNSLEtBQUssRUFBRSxvQkFBb0I7U0FDNUIsRUFDRCxFQUFFLENBQ0gsQ0FBQTtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFFbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZmFpcnNwZWMvbGlicmFyeVwiXG5pbXBvcnQgeyB3cml0ZVRlbXBGaWxlIH0gZnJvbSBcIkBmYWlyc3BlYy9saWJyYXJ5XCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBxdWVyeVRhYmxlVG9vbCB9IGZyb20gXCIuL3F1ZXJ5LnRzXCJcblxuZGVzY3JpYmUoXCJxdWVyeVRhYmxlVG9vbFwiLCAoKSA9PiB7XG4gIGl0KFwidmFsaWRhdGVzIHRvb2wgc3RydWN0dXJlXCIsICgpID0+IHtcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuaWQpLnRvQmUoXCJxdWVyeS10YWJsZVwiKVxuICAgIGV4cGVjdChxdWVyeVRhYmxlVG9vbC5kZXNjcmlwdGlvbikudG9CZVRydXRoeSgpXG4gICAgZXhwZWN0KHF1ZXJ5VGFibGVUb29sLmlucHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wub3V0cHV0U2NoZW1hKS50b0JlVHJ1dGh5KClcbiAgICBleHBlY3QocXVlcnlUYWJsZVRvb2wuZXhlY3V0ZSkudG9CZVR5cGVPZihcImZ1bmN0aW9uXCIpXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHRhYmxlIHdpdGggU0VMRUNUIHN0YXRlbWVudFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxhZ2VcXG4xLGFsaWNlLDI1XFxuMixib2IsMzBcXG4zLGNhcm9sLDI4XCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgKiBGUk9NIHNlbGYgV0hFUkUgYWdlID4gMjVcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQucmVjb3JkcykpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDIpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IGlkOiAyLCBuYW1lOiBcImJvYlwiLCBhZ2U6IDMwIH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IGlkOiAzLCBuYW1lOiBcImNhcm9sXCIsIGFnZTogMjggfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBjb2x1bW4gc2VsZWN0aW9uXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID1cbiAgICAgIFwiaWQsbmFtZSxhZ2UsY2l0eVxcbjEsYWxpY2UsMjUsTllDXFxuMixib2IsMzAsTEFcXG4zLGNhcm9sLDI4LFNGXCJcbiAgICBjb25zdCBjc3ZQYXRoID0gYXdhaXQgd3JpdGVUZW1wRmlsZShjc3ZDb250ZW50LCB7IGZvcm1hdDogXCJjc3ZcIiB9KVxuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHsgZGF0YTogY3N2UGF0aCwgZGlhbGVjdDogeyBmb3JtYXQ6IFwiY3N2XCIgfSB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeVRhYmxlVG9vbC5leGVjdXRlPy4oXG4gICAgICB7XG4gICAgICAgIHJlc291cmNlLFxuICAgICAgICBxdWVyeTogXCJTRUxFQ1QgbmFtZSwgY2l0eSBGUk9NIHNlbGZcIixcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApXG5cbiAgICBleHBlY3QuYXNzZXJ0KHJlc3VsdClcbiAgICBleHBlY3QuYXNzZXJ0KCEoXCJlcnJvclwiIGluIHJlc3VsdCkpXG5cbiAgICBleHBlY3QoQXJyYXkuaXNBcnJheShyZXN1bHQucmVjb3JkcykpLnRvQmUodHJ1ZSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMubGVuZ3RoKS50b0JlKDMpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzBdKS50b0hhdmVQcm9wZXJ0eShcIm5hbWVcIilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvSGF2ZVByb3BlcnR5KFwiY2l0eVwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkubm90LnRvSGF2ZVByb3BlcnR5KFwiaWRcIilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLm5vdC50b0hhdmVQcm9wZXJ0eShcImFnZVwiKVxuICB9KVxuXG4gIGl0KFwicXVlcmllcyB0YWJsZSB3aXRoIE9SREVSIEJZIGNsYXVzZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCAqIEZST00gc2VsZiBPUkRFUiBCWSBzY29yZSBERVNDXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiYm9iXCIsIHNjb3JlOiA5MCB9KVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1sxXSkudG9NYXRjaE9iamVjdCh7IG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzWzJdKS50b01hdGNoT2JqZWN0KHsgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSlcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBhZ2dyZWdhdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY3N2Q29udGVudCA9IFwiaWQsbmFtZSxzY29yZVxcbjEsYWxpY2UsODVcXG4yLGJvYiw5MFxcbjMsY2Fyb2wsODhcIlxuICAgIGNvbnN0IGNzdlBhdGggPSBhd2FpdCB3cml0ZVRlbXBGaWxlKGNzdkNvbnRlbnQsIHsgZm9ybWF0OiBcImNzdlwiIH0pXG4gICAgY29uc3QgcmVzb3VyY2U6IFJlc291cmNlID0geyBkYXRhOiBjc3ZQYXRoLCBkaWFsZWN0OiB7IGZvcm1hdDogXCJjc3ZcIiB9IH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCwgQVZHKHNjb3JlKSBhcyBhdmdfc2NvcmUgRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgxKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9IYXZlUHJvcGVydHkoXCJjb3VudFwiKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkc1swXSkudG9IYXZlUHJvcGVydHkoXCJhdmdfc2NvcmVcIilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgdGFibGUgd2l0aCBXSEVSRSBhbmQgTElNSVRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNzdkNvbnRlbnQgPVxuICAgICAgXCJpZCxuYW1lLGFnZVxcbjEsYWxpY2UsMjVcXG4yLGJvYiwzMFxcbjMsY2Fyb2wsMjhcXG40LGRhdmUsMzVcXG41LGV2ZSwyMlwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmIFdIRVJFIGFnZSA+PSAyNSBPUkRFUiBCWSBhZ2UgTElNSVQgMlwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMilcbiAgfSlcblxuICBpdChcInF1ZXJpZXMgaW5saW5lIGRhdGFcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJhbGljZVwiLCBzY29yZTogODUgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0sXG4gICAgICAgIHsgaWQ6IDMsIG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5VGFibGVUb29sLmV4ZWN1dGU/LihcbiAgICAgIHtcbiAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgIHF1ZXJ5OiBcIlNFTEVDVCBuYW1lLCBzY29yZSBGUk9NIHNlbGYgV0hFUkUgc2NvcmUgPiA4NVwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMilcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHMpLnRvQ29udGFpbkVxdWFsKHsgbmFtZTogXCJib2JcIiwgc2NvcmU6IDkwIH0pXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzKS50b0NvbnRhaW5FcXVhbCh7IG5hbWU6IFwiY2Fyb2xcIiwgc2NvcmU6IDg4IH0pXG4gIH0pXG5cbiAgaXQoXCJxdWVyaWVzIHdpdGggSk9JTiBvcGVyYXRpb25zXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7XG4gICAgICBkYXRhOiBbXG4gICAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiYWxpY2VcIiwgZGVwdF9pZDogMTAgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCJib2JcIiwgZGVwdF9pZDogMjAgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmIFdIRVJFIGRlcHRfaWQgPSAxMFwiLFxuICAgICAgfSxcbiAgICAgIHt9LFxuICAgIClcblxuICAgIGV4cGVjdC5hc3NlcnQocmVzdWx0KVxuICAgIGV4cGVjdC5hc3NlcnQoIShcImVycm9yXCIgaW4gcmVzdWx0KSlcblxuICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHJlc3VsdC5yZWNvcmRzKSkudG9CZSh0cnVlKVxuICAgIGV4cGVjdChyZXN1bHQucmVjb3Jkcy5sZW5ndGgpLnRvQmUoMSlcbiAgICBleHBlY3QocmVzdWx0LnJlY29yZHNbMF0pLnRvTWF0Y2hPYmplY3QoeyBuYW1lOiBcImFsaWNlXCIsIGRlcHRfaWQ6IDEwIH0pXG4gIH0pXG5cbiAgaXQoXCJyZXR1cm5zIGFsbCByZWNvcmRzIHdoZW4gcXVlcnlpbmcgd2l0aG91dCBmaWx0ZXJzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjc3ZDb250ZW50ID0gXCJpZCxuYW1lXFxuMSxhbGljZVxcbjIsYm9iXFxuMyxjYXJvbFwiXG4gICAgY29uc3QgY3N2UGF0aCA9IGF3YWl0IHdyaXRlVGVtcEZpbGUoY3N2Q29udGVudCwgeyBmb3JtYXQ6IFwiY3N2XCIgfSlcbiAgICBjb25zdCByZXNvdXJjZTogUmVzb3VyY2UgPSB7IGRhdGE6IGNzdlBhdGgsIGRpYWxlY3Q6IHsgZm9ybWF0OiBcImNzdlwiIH0gfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcXVlcnlUYWJsZVRvb2wuZXhlY3V0ZT8uKFxuICAgICAge1xuICAgICAgICByZXNvdXJjZSxcbiAgICAgICAgcXVlcnk6IFwiU0VMRUNUICogRlJPTSBzZWxmXCIsXG4gICAgICB9LFxuICAgICAge30sXG4gICAgKVxuXG4gICAgZXhwZWN0LmFzc2VydChyZXN1bHQpXG4gICAgZXhwZWN0LmFzc2VydCghKFwiZXJyb3JcIiBpbiByZXN1bHQpKVxuXG4gICAgZXhwZWN0KEFycmF5LmlzQXJyYXkocmVzdWx0LnJlY29yZHMpKS50b0JlKHRydWUpXG4gICAgZXhwZWN0KHJlc3VsdC5yZWNvcmRzLmxlbmd0aCkudG9CZSgzKVxuICB9KVxufSlcbiJdfQ==