@just-every/ensemble 0.2.226 → 0.2.228

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 (66) hide show
  1. package/README.md +4 -1
  2. package/dist/cjs/data/model_data.cjs +9 -0
  3. package/dist/cjs/data/model_data.d.ts.map +1 -1
  4. package/dist/cjs/data/model_data.js.map +1 -1
  5. package/dist/cjs/model_providers/claude.cjs +4 -6
  6. package/dist/cjs/model_providers/claude.d.ts.map +1 -1
  7. package/dist/cjs/model_providers/claude.js.map +1 -1
  8. package/dist/cjs/model_providers/fal.cjs +75 -22
  9. package/dist/cjs/model_providers/fal.d.ts +3 -0
  10. package/dist/cjs/model_providers/fal.d.ts.map +1 -1
  11. package/dist/cjs/model_providers/fal.js.map +1 -1
  12. package/dist/cjs/model_providers/gemini.cjs +20 -21
  13. package/dist/cjs/model_providers/gemini.d.ts.map +1 -1
  14. package/dist/cjs/model_providers/gemini.js.map +1 -1
  15. package/dist/cjs/model_providers/openai.cjs +21 -53
  16. package/dist/cjs/model_providers/openai.d.ts.map +1 -1
  17. package/dist/cjs/model_providers/openai.js.map +1 -1
  18. package/dist/cjs/model_providers/openai_chat.cjs +21 -52
  19. package/dist/cjs/model_providers/openai_chat.d.ts.map +1 -1
  20. package/dist/cjs/model_providers/openai_chat.js.map +1 -1
  21. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  22. package/dist/cjs/types/api_types.d.ts +1 -1
  23. package/dist/cjs/types/api_types.d.ts.map +1 -1
  24. package/dist/cjs/types/types.d.ts +4 -2
  25. package/dist/cjs/types/types.d.ts.map +1 -1
  26. package/dist/cjs/utils/image_detail.cjs +77 -0
  27. package/dist/cjs/utils/image_detail.d.ts +12 -0
  28. package/dist/cjs/utils/image_detail.d.ts.map +1 -0
  29. package/dist/cjs/utils/image_detail.js.map +1 -0
  30. package/dist/cjs/utils/image_utils.cjs +0 -219
  31. package/dist/cjs/utils/image_utils.d.ts +0 -16
  32. package/dist/cjs/utils/image_utils.d.ts.map +1 -1
  33. package/dist/cjs/utils/image_utils.js.map +1 -1
  34. package/dist/data/model_data.d.ts.map +1 -1
  35. package/dist/data/model_data.js +9 -0
  36. package/dist/data/model_data.js.map +1 -1
  37. package/dist/model_providers/claude.d.ts.map +1 -1
  38. package/dist/model_providers/claude.js +5 -7
  39. package/dist/model_providers/claude.js.map +1 -1
  40. package/dist/model_providers/fal.d.ts +3 -0
  41. package/dist/model_providers/fal.d.ts.map +1 -1
  42. package/dist/model_providers/fal.js +75 -22
  43. package/dist/model_providers/fal.js.map +1 -1
  44. package/dist/model_providers/gemini.d.ts.map +1 -1
  45. package/dist/model_providers/gemini.js +21 -22
  46. package/dist/model_providers/gemini.js.map +1 -1
  47. package/dist/model_providers/openai.d.ts.map +1 -1
  48. package/dist/model_providers/openai.js +22 -54
  49. package/dist/model_providers/openai.js.map +1 -1
  50. package/dist/model_providers/openai_chat.d.ts.map +1 -1
  51. package/dist/model_providers/openai_chat.js +22 -53
  52. package/dist/model_providers/openai_chat.js.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/types/api_types.d.ts +1 -1
  55. package/dist/types/api_types.d.ts.map +1 -1
  56. package/dist/types/types.d.ts +4 -2
  57. package/dist/types/types.d.ts.map +1 -1
  58. package/dist/utils/image_detail.d.ts +12 -0
  59. package/dist/utils/image_detail.d.ts.map +1 -0
  60. package/dist/utils/image_detail.js +69 -0
  61. package/dist/utils/image_detail.js.map +1 -0
  62. package/dist/utils/image_utils.d.ts +0 -16
  63. package/dist/utils/image_utils.d.ts.map +1 -1
  64. package/dist/utils/image_utils.js +0 -181
  65. package/dist/utils/image_utils.js.map +1 -1
  66. package/package.json +2 -3
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.falProvider = exports.FALProvider = void 0;
4
4
  const base_provider_js_1 = require("./base_provider.cjs");
5
5
  const cost_tracker_js_1 = require("../utils/cost_tracker.cjs");
6
+ const image_utils_js_1 = require("../utils/image_utils.cjs");
6
7
  const llm_logger_js_1 = require("../utils/llm_logger.cjs");
7
8
  function mapImageSize(size) {
8
9
  if (!size)
@@ -27,6 +28,9 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
27
28
  }
28
29
  endpointFor(model) {
29
30
  const m = model.toLowerCase();
31
+ if (m === 'fal-ai/ideogram/remove-background' || m === 'ideogram-remove-background') {
32
+ return { path: 'fal-ai/ideogram/remove-background', bodyMode: 'remove-background' };
33
+ }
30
34
  if (m.startsWith('recraft'))
31
35
  return { path: 'fal-ai/recraft/v3/text-to-image', bodyMode: 'top' };
32
36
  if (m.includes('runway') || m.includes('gen4'))
@@ -39,6 +43,69 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
39
43
  return { path: 'fal-ai/flux-pro/kontext', bodyMode: 'top' };
40
44
  return { path: 'fal-ai/flux/schnell', bodyMode: 'top' };
41
45
  }
46
+ imageUrlForRemoveBackground(opts) {
47
+ const sourceImages = opts.source_images;
48
+ if (!sourceImages) {
49
+ throw new Error('fal-ai/ideogram/remove-background requires exactly one source image.');
50
+ }
51
+ const rawImages = Array.isArray(sourceImages) ? sourceImages : [sourceImages];
52
+ if (rawImages.length !== 1) {
53
+ throw new Error('fal-ai/ideogram/remove-background supports exactly one source image per request.');
54
+ }
55
+ const rawImage = rawImages[0];
56
+ const normalized = typeof rawImage === 'string'
57
+ ? (0, image_utils_js_1.normalizeImageDataUrl)({ data: rawImage })
58
+ : (0, image_utils_js_1.normalizeImageDataUrl)({ data: rawImage.data });
59
+ const imageUrl = normalized.url || normalized.dataUrl;
60
+ if (!imageUrl ||
61
+ (!imageUrl.startsWith('http://') && !imageUrl.startsWith('https://') && !imageUrl.startsWith('data:image/'))) {
62
+ throw new Error('fal-ai/ideogram/remove-background expects the source image to be a public URL or a data:image/... base64 URI.');
63
+ }
64
+ return imageUrl;
65
+ }
66
+ buildBody(prompt, bodyMode, opts) {
67
+ if (bodyMode === 'remove-background') {
68
+ const body = {
69
+ image_url: this.imageUrlForRemoveBackground(opts),
70
+ };
71
+ if (opts?.response_format === 'b64_json') {
72
+ body.sync_mode = true;
73
+ }
74
+ return body;
75
+ }
76
+ const size = mapImageSize(opts.size);
77
+ const bodyInput = bodyMode === 'top' ? { prompt } : { input: { prompt } };
78
+ if (size) {
79
+ if (bodyMode === 'top')
80
+ bodyInput.image_size = size;
81
+ else
82
+ bodyInput.input.image_size = size;
83
+ }
84
+ if (opts?.response_format === 'b64_json') {
85
+ if (bodyMode === 'top')
86
+ bodyInput.sync_mode = true;
87
+ else
88
+ bodyInput.input.sync_mode = true;
89
+ }
90
+ return bodyInput;
91
+ }
92
+ extractImages(data) {
93
+ const images = [];
94
+ const addImage = (candidate) => {
95
+ if (typeof candidate === 'string' && candidate.length > 0) {
96
+ images.push(candidate);
97
+ }
98
+ else if (candidate?.url) {
99
+ images.push(candidate.url);
100
+ }
101
+ };
102
+ const arr = data?.images || data?.output?.images || [];
103
+ for (const im of arr)
104
+ addImage(im);
105
+ addImage(data?.image);
106
+ addImage(data?.url);
107
+ return images;
108
+ }
42
109
  async createImage(prompt, model, agent, opts = {}) {
43
110
  const falKey = process.env.FAL_KEY;
44
111
  const requestId = (0, llm_logger_js_1.log_llm_request)(agent.agent_id || 'default', 'fal', model, { prompt, opts }, new Date());
@@ -46,20 +113,7 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
46
113
  if (!falKey)
47
114
  throw new Error('FAL_KEY is not set');
48
115
  const { path, bodyMode } = this.endpointFor(model);
49
- const size = mapImageSize(opts.size);
50
- const bodyInput = bodyMode === 'top' ? { prompt } : { input: { prompt } };
51
- if (size) {
52
- if (bodyMode === 'top')
53
- bodyInput.image_size = size;
54
- else
55
- bodyInput.input.image_size = size;
56
- }
57
- if (opts?.response_format === 'b64_json') {
58
- if (bodyMode === 'top')
59
- bodyInput.sync_mode = true;
60
- else
61
- bodyInput.input.sync_mode = true;
62
- }
116
+ const bodyInput = this.buildBody(prompt, bodyMode, opts);
63
117
  const res = await fetch(`https://fal.run/${path}`, {
64
118
  method: 'POST',
65
119
  headers: {
@@ -71,16 +125,15 @@ class FALProvider extends base_provider_js_1.BaseModelProvider {
71
125
  if (!res.ok)
72
126
  throw new Error(`FAL request failed: ${res.status} ${await res.text()}`);
73
127
  const data = await res.json();
74
- const images = [];
75
- const arr = data?.images || data?.output?.images || [];
76
- for (const im of arr)
77
- if (im?.url)
78
- images.push(im.url);
79
- if (!images.length && data?.url)
80
- images.push(data.url);
128
+ const images = this.extractImages(data);
81
129
  if (!images.length)
82
130
  throw new Error('FAL: no image url in response');
83
- cost_tracker_js_1.costTracker.addUsage({ model, image_count: images.length, request_id: opts?.request_id, metadata: { source: 'fal' } });
131
+ cost_tracker_js_1.costTracker.addUsage({
132
+ model,
133
+ image_count: images.length,
134
+ request_id: opts?.request_id,
135
+ metadata: { source: 'fal' },
136
+ });
84
137
  return images;
85
138
  }
86
139
  catch (err) {
@@ -4,6 +4,9 @@ export declare class FALProvider extends BaseModelProvider {
4
4
  constructor();
5
5
  createResponseStream(): AsyncGenerator<ProviderStreamEvent>;
6
6
  private endpointFor;
7
+ private imageUrlForRemoveBackground;
8
+ private buildBody;
9
+ private extractImages;
7
10
  createImage(prompt: string, model: string, agent: AgentDefinition, opts?: ImageGenerationOpts): Promise<string[]>;
8
11
  }
9
12
  export declare const falProvider: FALProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAiBnG,qBAAa,WAAY,SAAQ,iBAAiB;;IAKvC,oBAAoB,IAAI,cAAc,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,WAAW;IAWb,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAyC9H;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
1
+ {"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmBnG,qBAAa,WAAY,SAAQ,iBAAiB;;IAMvC,oBAAoB,IAAI,cAAc,CAAC,mBAAmB,CAAC;IAIlE,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,2BAA2B;IA8BnC,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,aAAa;IAiBf,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,GAAE,mBAAwB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;CAkCvB;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fal.js","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fal.js","sourceRoot":"","sources":["../../../model_providers/fal.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ const cost_tracker_js_1 = require("../utils/cost_tracker.cjs");
43
43
  const llm_logger_js_1 = require("../utils/llm_logger.cjs");
44
44
  const pause_controller_js_1 = require("../utils/pause_controller.cjs");
45
45
  const image_utils_js_1 = require("../utils/image_utils.cjs");
46
+ const image_detail_js_1 = require("../utils/image_detail.cjs");
46
47
  const event_controller_js_1 = require("../utils/event_controller.cjs");
47
48
  const truncate_utils_js_1 = require("../utils/truncate_utils.cjs");
48
49
  function convertParameterToGeminiFormat(param) {
@@ -315,9 +316,8 @@ function mergeImageMetadata(target, source) {
315
316
  }
316
317
  async function addImagesToInput(input, images, source) {
317
318
  for (const [image_id, imageData] of Object.entries(images)) {
318
- const processedImageData = await (0, image_utils_js_1.resizeAndTruncateForGemini)(imageData);
319
- const mimeType = getImageMimeType(processedImageData);
320
- const cleanedImageData = cleanBase64Data(processedImageData);
319
+ const mimeType = getImageMimeType(imageData);
320
+ const cleanedImageData = cleanBase64Data(imageData);
321
321
  input.push({
322
322
  role: 'user',
323
323
  parts: [
@@ -481,24 +481,12 @@ async function convertToGeminiContents(model, messages) {
481
481
  if (match) {
482
482
  const mimeType = match[1];
483
483
  const base64Data = match[2];
484
- const processedData = await (0, image_utils_js_1.resizeAndTruncateForGemini)(imageUrl);
485
- const processedMatch = processedData.match(/^data:([^;]+);base64,(.+)$/);
486
- if (processedMatch) {
487
- parts.push({
488
- inlineData: {
489
- mimeType: processedMatch[1],
490
- data: processedMatch[2],
491
- },
492
- });
493
- }
494
- else {
495
- parts.push({
496
- inlineData: {
497
- mimeType: mimeType,
498
- data: base64Data,
499
- },
500
- });
501
- }
484
+ parts.push({
485
+ inlineData: {
486
+ mimeType: mimeType,
487
+ data: base64Data,
488
+ },
489
+ });
502
490
  }
503
491
  }
504
492
  else if (imageUrl.startsWith('http://') || imageUrl.startsWith('https://')) {
@@ -597,6 +585,10 @@ const GEMINI_3_PRO_IMAGE_DIMENSION_PRESETS = {
597
585
  '5504x3072': { ar: '16:9', imageSize: '4K' },
598
586
  '6336x2688': { ar: '21:9', imageSize: '4K' },
599
587
  };
588
+ function toGeminiMediaResolution(detail) {
589
+ const mapped = (0, image_detail_js_1.mapGeminiMediaResolution)(detail);
590
+ return mapped ? genai_1.MediaResolution[mapped] : undefined;
591
+ }
600
592
  class GeminiProvider extends base_provider_js_1.BaseModelProvider {
601
593
  _client;
602
594
  apiKey;
@@ -750,6 +742,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
750
742
  };
751
743
  const chunks = [];
752
744
  try {
745
+ const requestedImageDetail = (0, image_detail_js_1.chooseImageDetailFromInput)(messages);
753
746
  const contents = await convertToGeminiContents(model, messages);
754
747
  if (contents.length === 0) {
755
748
  console.warn('Gemini API Warning: No valid content found in messages after conversion. Adding default message.');
@@ -834,6 +827,10 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
834
827
  if (agent.abortSignal) {
835
828
  config.abortSignal = agent.abortSignal;
836
829
  }
830
+ const mediaResolution = toGeminiMediaResolution(requestedImageDetail);
831
+ if (mediaResolution) {
832
+ config.mediaResolution = mediaResolution;
833
+ }
837
834
  let hasGoogleWebSearch = false;
838
835
  let hasCodeExecutionTool = false;
839
836
  let functionDeclarations = [];
@@ -1258,6 +1255,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
1258
1255
  }
1259
1256
  : undefined;
1260
1257
  const perImageCost = this.getImageCost(model, imageSize);
1258
+ const sourceImageMediaResolution = toGeminiMediaResolution(opts?.detail);
1261
1259
  const makeOne = async () => {
1262
1260
  const requestParams = {
1263
1261
  model,
@@ -1317,6 +1315,7 @@ class GeminiProvider extends base_provider_js_1.BaseModelProvider {
1317
1315
  config: {
1318
1316
  responseModalities: [genai_1.Modality.IMAGE],
1319
1317
  ...(Object.keys(imageConfig).length ? { imageConfig } : {}),
1318
+ ...(sourceImageMediaResolution ? { mediaResolution: sourceImageMediaResolution } : {}),
1320
1319
  ...(googleSearchTool ? { tools: [googleSearchTool] } : {}),
1321
1320
  ...(Object.keys(thinkingConfig).length ? { thinkingConfig: thinkingConfig } : {}),
1322
1321
  },
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAmaD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAejB;IASK,eAAe,CACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YAmKlB,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,SAAS,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAigBhC,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IAkhBpB,OAAO,CAAC,YAAY;IAmCd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAgMpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA6S/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AAyfD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EAInB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6NvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAmCD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAyZD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAejB;IASK,eAAe,CACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YAmKlB,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,SAAS,CAAC,EAAE,MAAM,GACnB,cAAc,CAAC,mBAAmB,CAAC;IAsgBhC,WAAW,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IAohBpB,OAAO,CAAC,YAAY;IAmCd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,EACtB,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAgMpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA6S/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AAyfD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}