ComfyPilotComfyPilot
工作流 / 图像 / Ming 图像 0.1 Design:图像编辑
Ming 图像 0.1 Design:图像编辑

Ming 图像 0.1 Design:图像编辑

Ming Image 0.1 Design: Image Edit

使用 Ming Image 0.1 Design 编辑现有图像,这是一个针对 UI、信息图和海报调优的 6B 模型。它接收一张输入图像以及你在其上绘制的框——位置、描述和调色板——并将它们重建为逐层说明,返回一张重新渲染的图像。非常适合重新布置布局、海报风格重渲染,以及将照片转化为设计构图。

图像 19 个节点 1 个输入 34 次使用 ComfyUI ≥ 0.38.0 ComfyUI 212 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

需要的权重

这个工作流引用了 3 个权重文件,其中 3 个能在本站模型库里找到。

ming_image_0.1_design_int8_convrot.safetensors 在模型库查看
ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors 在模型库查看
ming_image_vae_bf16.safetensors 在模型库查看

节点构成

MarkdownNote × 4
PreviewAny × 3
PreviewImage × 2
ImageStitch × 2
LoadImage × 1
4522b5d6-7f71-4b60-8fab-1e6ffbd5f1c1 × 1
GetImageSize × 1
ResizeImageMaskNode × 1
CreateBoundingBoxes × 1
BuildJsonPromptIdeogram × 1
ae951efd-07f6-49cb-bfdb-0b8e3eee4cda × 1
SaveImageAdvanced × 1

官方标注的模型

Ming Image

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "aa0ea3e2-5729-4d50-956e-26fc02b13d9e",
3 "revision": 0,
4 "last_node_id": 344,
5 "last_link_id": 21011,
6 "nodes": [
7 {
8 "id": 49,
9 "type": "LoadImage",
10 "pos": [
11 -1090,
12 4430
13 ],
14 "size": [
15 390,
16 640
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "IMAGE",
25 "type": "IMAGE",
26 "links": [
27 228,
28 229,
29 231,
30 21004
31 ]
32 },
33 {
34 "name": "MASK",
35 "type": "MASK",
36 "links": null
37 }
38 ],
39 "properties": {
40 "Node name for S&R": "LoadImage"
41 },
42 "widgets_values": [
43 "yellow_arch_daisy_field.png",
44 "image"
45 ],
46 "widgets_values_named": {
47 "image": "yellow_arch_daisy_field.png",
48 "upload": "image"
49 }
50 },
51 {
52 "id": 80,
53 "type": "4522b5d6-7f71-4b60-8fab-1e6ffbd5f1c1",
54 "pos": [
55 650,
56 4420
57 ],
58 "size": [
59 500,
60 580
61 ],
62 "flags": [],
63 "order": 15,
64 "mode": 0,
65 "inputs": [
66 {
67 "name": "images.image_1",
68 "shape": 7,
69 "type": "IMAGE",
70 "link": 229
71 },
72 {
73 "label": "image_2",
74 "name": "images.image_2",
75 "shape": 7,
76 "type": "IMAGE",
77 "link": null
78 },
79 {
80 "label": "image_3",
81 "name": "images.image_3",
82 "shape": 7,
83 "type": "IMAGE",
84 "link": null
85 },
86 {
87 "label": "image_4",
88 "name": "images.image_4",
89 "shape": 7,
90 "type": "IMAGE",
91 "link": null
92 },
93 {
94 "label": "image_5",
95 "name": "images.image_5",
96 "shape": 7,
97 "type": "IMAGE",
98 "link": null
99 },
100 {
101 "label": "image_6",
102 "name": "images.image_6",
103 "shape": 7,
104 "type": "IMAGE",
105 "link": null
106 },
107 {
108 "label": "image_7",
109 "name": "images.image_7",
110 "shape": 7,
111 "type": "IMAGE",
112 "link": null
113 },
114 {
115 "label": "image_8",
116 "name": "images.image_8",
117 "shape": 7,
118 "type": "IMAGE",
119 "link": null
120 },
121 {
122 "name": "prompt",
123 "type": "STRING",
124 "widget": {
125 "name": "prompt"
126 },
127 "link": 21003
128 },
129 {
130 "label": "width",
131 "name": "value",
132 "type": "INT",
133 "widget": {
134 "name": "value"
135 },
136 "link": 205
137 },
138 {
139 "label": "height",
140 "name": "value_1",
141 "type": "INT",
142 "widget": {
143 "name": "value_1"
144 },
145 "link": 206
146 },
147 {
148 "label": "model_attention_backend",
149 "name": "attention_1",
150 "type": "COMBO",
151 "widget": {
152 "name": "attention_1"
153 },
154 "link": null
155 }
156 ],
157 "outputs": [
158 {
159 "name": "IMAGE",
160 "type": "IMAGE",
161 "links": [
162 21010
163 ]
164 }
165 ],
166 "properties": {
167 "previewExposures": []
168 },
169 "widgets_values": [
170 "",
171 1024,
172 1024,
173 247081603831298,
174 "simple",
175 12,
176 "ming_image_0.1_design_int8_convrot.safetensors",
177 "ming_image_vae_bf16.safetensors",
178 "qwen_image",
179 "comfy kitchen attention"
180 ],
181 "widgets_values_named": {
182 "prompt": "",
183 "value": 1024,
184 "value_1": 1024,
185 "noise_seed": 247081603831298,
186 "scheduler": "simple",
187 "steps": 12,
188 "unet_name": "ming_image_0.1_design_int8_convrot.safetensors",
189 "vae_name": "ming_image_vae_bf16.safetensors",
190 "type": "qwen_image",
191 "attention_1": "comfy kitchen attention"
192 }
193 },
194 {
195 "id": 81,
196 "type": "GetImageSize",
197 "pos": [
198 290,
199 4900
200 ],
201 "size": [
202 230,
203 140
204 ],
205 "flags": [],
206 "order": 10,
207 "mode": 0,
208 "inputs": [
209 {
210 "name": "image",
211 "type": "IMAGE",
212 "link": 210
213 }
214 ],
215 "outputs": [
216 {
217 "name": "width",
218 "type": "INT",
219 "links": [
220 205,
221 1054
222 ]
223 },
224 {
225 "name": "height",
226 "type": "INT",
227 "links": [
228 206,
229 1055
230 ]
231 },
232 {
233 "name": "batch_size",
234 "type": "INT",
235 "links": null
236 }
237 ],
238 "properties": {
239 "Node name for S&R": "GetImageSize"
240 }
241 },
242 {
243 "id": 83,
244 "type": "ResizeImageMaskNode",
245 "pos": [
246 260,
247 4720
248 ],
249 "size": [
250 270,
251 110
252 ],
253 "flags": [],
254 "order": 6,
255 "mode": 4,
256 "inputs": [
257 {
258 "name": "input",
259 "type": "IMAGE,MASK",
260 "link": 231
261 }
262 ],
263 "outputs": [
264 {
265 "name": "resized",
266 "type": "IMAGE",
267 "links": [
268 210
269 ]
270 }
271 ],
272 "properties": {
273 "Node name for S&R": "ResizeImageMaskNode"
274 },
275 "widgets_values": [
276 "scale total pixels",
277 1,
278 "area"
279 ],
280 "widgets_values_named": {
281 "resize_type": "scale total pixels",
282 "resize_type.megapixels": 1,
283 "scale_method": "area"
284 }
285 },
286 {
287 "id": 85,
288 "type": "MarkdownNote",
289 "pos": [
290 280,
291 4590
292 ],
293 "size": [
294 210,
295 90
296 ],
297 "flags": [],
298 "order": 1,
299 "mode": 0,
300 "inputs": [],
301 "outputs": [],
302 "title": "Note: Resize Input",
303 "properties": [],
304 "widgets_values": [
305 "Select and press Ctrl-B to enable `Resize Image/Mask` node if your input image is too large (over 2048*2048).\n"
306 ],
307 "widgets_values_named": {
308 "text": "Select and press Ctrl-B to enable `Resize Image/Mask` node if your input image is too large (over 2048*2048).\n"
309 },
310 "color": "#222",
311 "bgcolor": "#000"
312 },
313 {
314 "id": 86,
315 "type": "MarkdownNote",
316 "pos": [
317 -2280,
318 4430
319 ],
320 "size": [
321 540,
322 630
323 ],
324 "flags": [],
325 "order": 2,
326 "mode": 0,
327 "inputs": [],
328 "outputs": [],
329 "title": "Note: Model Links",
330 "properties": [],
331 "widgets_values": [
332 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [yellow_arch_daisy_field.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/yellow_arch_daisy_field.png)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Ming-Image](https://huggingface.co/Comfy-Org/Ming-Image)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/Ming-Image](https://modelscope.cn/models/Comfy-Org/Ming-Image)\n\n**diffusion_models**\n\n- [ming_image_0.1_design_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/diffusion_models/ming_image_0.1_design_int8_convrot.safetensors) (5.75 GB)\n\n**vae**\n\n- [ming_image_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/vae/ming_image_vae_bf16.safetensors) (242.1 MB)\n\n**text_encoders**\n\n- [ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/text_encoders/ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors) (18.17 GB)\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── ming_image_0.1_design_int8_convrot.safetensors\n│ ├── 📂 vae/\n│ │ └── ming_image_vae_bf16.safetensors\n│ └── 📂 text_encoders/\n│ └── ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
333 ],
334 "widgets_values_named": {
335 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Input Asset\n\n- [yellow_arch_daisy_field.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/yellow_arch_daisy_field.png)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/Ming-Image](https://huggingface.co/Comfy-Org/Ming-Image)\n\n**ModelScope mirrors** (alternative repo location)\n\n- [ModelScope:Comfy-Org/Ming-Image](https://modelscope.cn/models/Comfy-Org/Ming-Image)\n\n**diffusion_models**\n\n- [ming_image_0.1_design_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/diffusion_models/ming_image_0.1_design_int8_convrot.safetensors) (5.75 GB)\n\n**vae**\n\n- [ming_image_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/vae/ming_image_vae_bf16.safetensors) (242.1 MB)\n\n**text_encoders**\n\n- [ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/text_encoders/ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors) (18.17 GB)\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── ming_image_0.1_design_int8_convrot.safetensors\n│ ├── 📂 vae/\n│ │ └── ming_image_vae_bf16.safetensors\n│ └── 📂 text_encoders/\n│ └── ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
336 },
337 "color": "#222",
338 "bgcolor": "#000"
339 },
340 {
341 "id": 87,
342 "type": "MarkdownNote",
343 "pos": [
344 -1710,
345 4430
346 ],
347 "size": [
348 560,
349 940
350 ],
351 "flags": [],
352 "order": 3,
353 "mode": 0,
354 "inputs": [],
355 "outputs": [],
356 "title": "Note: Ming Image 0.1 Design — Edit (subgraph + prompt)",
357 "properties": [],
358 "widgets_values": [
359 "# Ming Image 0.1 Design — Edit (ComfyUI)\n\nMing Image 0.1 **Design** (inclusionAI / Ant Ling): text-to-image and image editing with one checkpoint.\nFiles — see *Note: Model Links*.\n\nLinks — [Ming-Image repo](https://github.com/inclusionAI/Ming-Image) · [model card](https://huggingface.co/inclusionAI/Ming-Image-0.1-Design) · [Design skill](https://github.com/inclusionAI/ling-cookbook/tree/main/resources/recommended-skills/ling-ui-design) · [PPT skill](https://github.com/inclusionAI/ling-cookbook/tree/main/resources/recommended-skills/image-to-editable-ppt)\n\n## Three subgraphs — double-click any of them to open\n\n| subgraph | what it does |\n|---|---|\n| **Image Edit (Ming Image 0.1 Design)** | the model: reference image(s) + `prompt` → sample → decode |\n| **Ideogram JSON → Ming Caption** | rewrites the Ideogram JSON + the bounding boxes into Ming's Figma-style caption and feeds `prompt` |\n| **Aspect Ratio (gcd-reduced)** | nested inside the one above: `width` / `height` → `7:9, 896 × 1152 px` for `canvas_settings.aspect_ratio` |\n\n## Image Edit subgraph parameters\n\n| parameter | what it does |\n|---|---|\n| `image_1` … `image_8` | reference image(s) to edit; only `image_1` is required |\n| `prompt` | the instruction (see below) |\n| `width` / `height` | output size, wired from `Get Image Size` |\n| `noise_seed` / `scheduler` / `steps` | sampling; default `simple`, 12 steps |\n| `unet_name` / `vae_name` / `type` | weights, and text-encoder family (`qwen_image`) |\n| `model_attention_backend` | `comfy kitchen attention` (INT8, fastest) is only listed on GPUs that support it — NVIDIA cc 7.5+ or AMD/ROCm; otherwise pick `pytorch attention`: same result, slower |\n\nNo negative prompt, no CFG — positive conditioning only.\n\n## Prompt: \n\n**1 · Natural language**: you can disconnect the `Ideogram JSON to Ming Caption` output, then use your own prompt to edit the image\n\n**2 · Ming's own Figma-style caption**: Currently this workflow builds a prompt that matches Ming's Figma-style caption, you can use it for precise control (same shape as the official [rewriter system prompt](https://github.com/inclusionAI/Ming-Image/blob/main/assets/t2i_rewriter_system_prompt.txt) emits):\n\n```json\n{\n \"canvas_settings\": {\"aspect_ratio\": \"…\", \"ambient_lighting\": \"…\", \"image_style\": \"…\"},\n \"layers\": [{\"description\": \"…\", \"coordinates\": \"cx: 0.500, cy: 0.500, w: 1.000, h: 1.000\",\n \"hierarchy_and_relation\": \"…\", \"color_specs\": [\"#RRGGBB\"]}]\n}\n```\n\nTwo keys only; `layers` runs background → topmost; `coordinates` is one string (centre + size, normalised); rendered text is quoted and owned once. `aspect_ratio` and the pixel size are computed from the boxes' canvas, so adding boxes or swapping the input image needs no edits. Example: [t2i_four_seasons_cabin_prompt.json](https://github.com/inclusionAI/Ming-Image/blob/main/assets/t2i_four_seasons_cabin_prompt.json)\n"
360 ],
361 "widgets_values_named": {
362 "text": "# Ming Image 0.1 Design — Edit (ComfyUI)\n\nMing Image 0.1 **Design** (inclusionAI / Ant Ling): text-to-image and image editing with one checkpoint.\nFiles — see *Note: Model Links*.\n\nLinks — [Ming-Image repo](https://github.com/inclusionAI/Ming-Image) · [model card](https://huggingface.co/inclusionAI/Ming-Image-0.1-Design) · [Design skill](https://github.com/inclusionAI/ling-cookbook/tree/main/resources/recommended-skills/ling-ui-design) · [PPT skill](https://github.com/inclusionAI/ling-cookbook/tree/main/resources/recommended-skills/image-to-editable-ppt)\n\n## Three subgraphs — double-click any of them to open\n\n| subgraph | what it does |\n|---|---|\n| **Image Edit (Ming Image 0.1 Design)** | the model: reference image(s) + `prompt` → sample → decode |\n| **Ideogram JSON → Ming Caption** | rewrites the Ideogram JSON + the bounding boxes into Ming's Figma-style caption and feeds `prompt` |\n| **Aspect Ratio (gcd-reduced)** | nested inside the one above: `width` / `height` → `7:9, 896 × 1152 px` for `canvas_settings.aspect_ratio` |\n\n## Image Edit subgraph parameters\n\n| parameter | what it does |\n|---|---|\n| `image_1` … `image_8` | reference image(s) to edit; only `image_1` is required |\n| `prompt` | the instruction (see below) |\n| `width` / `height` | output size, wired from `Get Image Size` |\n| `noise_seed` / `scheduler` / `steps` | sampling; default `simple`, 12 steps |\n| `unet_name` / `vae_name` / `type` | weights, and text-encoder family (`qwen_image`) |\n| `model_attention_backend` | `comfy kitchen attention` (INT8, fastest) is only listed on GPUs that support it — NVIDIA cc 7.5+ or AMD/ROCm; otherwise pick `pytorch attention`: same result, slower |\n\nNo negative prompt, no CFG — positive conditioning only.\n\n## Prompt: \n\n**1 · Natural language**: you can disconnect the `Ideogram JSON to Ming Caption` output, then use your own prompt to edit the image\n\n**2 · Ming's own Figma-style caption**: Currently this workflow builds a prompt that matches Ming's Figma-style caption, you can use it for precise control (same shape as the official [rewriter system prompt](https://github.com/inclusionAI/Ming-Image/blob/main/assets/t2i_rewriter_system_prompt.txt) emits):\n\n```json\n{\n \"canvas_settings\": {\"aspect_ratio\": \"…\", \"ambient_lighting\": \"…\", \"image_style\": \"…\"},\n \"layers\": [{\"description\": \"…\", \"coordinates\": \"cx: 0.500, cy: 0.500, w: 1.000, h: 1.000\",\n \"hierarchy_and_relation\": \"…\", \"color_specs\": [\"#RRGGBB\"]}]\n}\n```\n\nTwo keys only; `layers` runs background → topmost; `coordinates` is one string (centre + size, normalised); rendered text is quoted and owned once. `aspect_ratio` and the pixel size are computed from the boxes' canvas, so adding boxes or swapping the input image needs no edits. Example: [t2i_four_seasons_cabin_prompt.json](https://github.com/inclusionAI/Ming-Image/blob/main/assets/t2i_four_seasons_cabin_prompt.json)\n"
363 },
364 "color": "#222",
365 "bgcolor": "#000"
366 },
367 {
368 "id": 91,
369 "type": "CreateBoundingBoxes",
370 "pos": [
371 -1070,
372 5190
373 ],
374 "size": [
375 420,
376 560
377 ],
378 "flags": [],
379 "order": 5,
380 "mode": 0,
381 "inputs": [
382 {
383 "name": "background",
384 "shape": 7,
385 "type": "IMAGE",
386 "link": 228
387 },
388 {
389 "name": "bboxes",
390 "shape": 7,
391 "type": "BOUNDING_BOX,ARRAY,STRING",
392 "link": null
393 }
394 ],
395 "outputs": [
396 {
397 "name": "preview",
398 "type": "IMAGE",
399 "links": [
400 225
401 ]
402 },
403 {
404 "name": "bboxes",
405 "type": "BOUNDING_BOX",
406 "links": [
407 214
408 ]
409 },
410 {
411 "name": "elements",
412 "type": "ARRAY",
413 "links": [
414 215,
415 1063
416 ]
417 }
418 ],
419 "properties": {
420 "Node name for S&R": "CreateBoundingBoxes"
421 },
422 "widgets_values": [
423 896,
424 1152,
425 [
426 {
427 "x": 0,
428 "y": 0,
429 "width": 896,
430 "height": 1152,
431 "metadata": {
432 "type": "obj",
433 "text": "",
434 "desc": "the whole picture reprinted as a mid-century screen-print poster sheet: flat unmodulated colour planes, hand-cut stencil edges, warm off-white paper stock with fine print grain, one faint ink misregistration, a thin dark-ink rule inset a few millimetres from the trimmed edge, no photographic depth of field",
435 "palette": [
436 "#F5F0E3",
437 "#E4B23C",
438 "#2F5FA8",
439 "#1E2A38"
440 ]
441 }
442 },
443 {
444 "x": 0,
445 "y": 0,
446 "width": 896,
447 "height": 555,
448 "metadata": {
449 "type": "obj",
450 "text": "",
451 "desc": "the sunlit tiled facade redrawn as two flat ochre plates, one in full sun and one in shade, split by one crisp diagonal shadow that runs from the top edge near the centre down to the left edge about a fifth of the way down; the tile grout becomes a sparse regular grid of thin lighter lines",
452 "palette": [
453 "#E4B23C",
454 "#C6952F",
455 "#F0C85A"
456 ]
457 }
458 },
459 {
460 "x": 57,
461 "y": 205,
462 "width": 193,
463 "height": 350,
464 "metadata": {
465 "type": "obj",
466 "text": "",
467 "desc": "the left round-headed arch opening cut cleanly through the facade: inside it a flat pale-blue sky with one simplified cream cloud bank, edges stencil-cut, no gradients",
468 "palette": [
469 "#4E86C8",
470 "#A9C9E8",
471 "#F5F0E3"
472 ]
473 }
474 },
475 {
476 "x": 357,
477 "y": 192,
478 "width": 196,
479 "height": 363,
480 "metadata": {
481 "type": "obj",
482 "text": "",
483 "desc": "the centre arch opening, the tallest of the three: flat pale-blue sky, one low cream cloud shape near its base, and the daisy horizon showing as a thin band of small white dots across the bottom of the opening",
484 "palette": [
485 "#4E86C8",
486 "#A9C9E8",
487 "#F5F0E3"
488 ]
489 }
490 },
491 {
492 "x": 652,
493 "y": 200,
494 "width": 203,
495 "height": 355,
496 "metadata": {
497 "type": "obj",
498 "text": "",
499 "desc": "the right arch opening holding a single tree: trunk and crown reduced to a two-tone silhouette of dark olive green and deep umber against the pale blue sky, branches simplified to a few decisive lines, foliage as clustered flat shapes, no leaf texture",
500 "palette": [
501 "#4E86C8",
502 "#6E8B4A",
503 "#3B4A2E"
504 ]
505 }
506 },
507 {
508 "x": 0,
509 "y": 500,
510 "width": 896,
511 "height": 652,
512 "metadata": {
513 "type": "obj",
514 "text": "",
515 "desc": "the daisy meadow drawn as poster shapes: the field as broad olive-green swathes rising to a soft ridge line, every daisy a simple white petal rosette with a flat ochre centre, evenly staggered and overlapping in loose rows, the nearest flowers large and crisp, the distant ones small pale dots",
516 "palette": [
517 "#8FA05A",
518 "#B7C68A",
519 "#F5F0E3",
520 "#E4A62C"
521 ]
522 }
523 },
524 {
525 "x": 348,
526 "y": 486,
527 "width": 170,
528 "height": 88,
529 "metadata": {
530 "type": "obj",
531 "text": "",
532 "desc": "an open parasol held high above her, seen from behind: the canopy a flat disc of deep rust-red silk with a black scalloped lace edge printed as a row of small half-circles and straight thin dark ribs radiating from the centre, a slim dark-wood shaft falling to her raised hand; the canopy tilted slightly to the left, one paler rust tone on its sunlit right half",
533 "palette": [
534 "#9E3B2E",
535 "#6E2A22",
536 "#1E2A38"
537 ]
538 }
539 },
540 {
541 "x": 372,
542 "y": 566,
543 "width": 112,
544 "height": 280,
545 "metadata": {
546 "type": "obj",
547 "text": "",
548 "desc": "a graceful woman standing with her back to the camera, full length, drawn in the same flat screen-print language: a classical floor-length gown of deep rust-red silk, high waisted with one soft vertical fold falling from her shoulder blades to the hem, printed as two flat planes of rust separated by a single crisp fold line; her long hair gathered in a low classical chignon with a thin printed ribbon and two loose strands; bare shoulders and arms as flat warm-skin planes with one darker shadow tone along her right side; slim, tall and perfectly still, her weight on her left foot, one arm raised holding the parasol and the other relaxed at her side; her hem and feet disappearing into the daisies, the pressed grass in front of her printed as a few flat dark strokes",
549 "palette": [
550 "#9E3B2E",
551 "#E8B893",
552 "#1E2A38"
553 ]
554 }
555 },
556 {
557 "x": 0,
558 "y": 956,
559 "width": 896,
560 "height": 196,
561 "metadata": {
562 "type": "obj",
563 "text": "",
564 "desc": "a full-width band of warm cream paper across the foot of the poster, printed flat with a single thin ochre rule along its top edge and no texture, holding the typography with generous air between the lines",
565 "palette": [
566 "#F3EADA",
567 "#C6952F"
568 ]
569 }
570 },
571 {
572 "x": 81,
573 "y": 984,
574 "width": 734,
575 "height": 38,
576 "metadata": {
577 "type": "text",
578 "text": "WHERE THE LIGHT LINGERS",
579 "desc": "the title set in an elegant thin-stroke classical serif, all capitals with very wide letterspacing, ink navy, one line, centred in the band with generous air above and below; spelled exactly as written",
580 "palette": [
581 "#1E2A38"
582 ]
583 }
584 },
585 {
586 "x": 134,
587 "y": 1042,
588 "width": 628,
589 "height": 24,
590 "metadata": {
591 "type": "text",
592 "text": "a meadow, a parasol, an unhurried summer",
593 "desc": "a single lower-case line in a small italic serif, ochre ink, wide letterspacing, centred, the commas kept; spelled exactly as written",
594 "palette": [
595 "#C6952F"
596 ]
597 }
598 },
599 {
600 "x": 197,
601 "y": 1104,
602 "width": 502,
603 "height": 16,
604 "metadata": {
605 "type": "text",
606 "text": "COMFY ORG",
607 "desc": "a very small line of wide-tracked capitals in ink navy at the very foot of the band, centred; spelled exactly C O M F Y space O R G",
608 "palette": [
609 "#1E2A38"
610 ]
611 }
612 }
613 ],
614 []
615 ],
616 "widgets_values_named": {
617 "width": 896,
618 "height": 1152,
619 "editor_state": [
620 {
621 "x": 0,
622 "y": 0,
623 "width": 896,
624 "height": 1152,
625 "metadata": {
626 "type": "obj",
627 "text": "",
628 "desc": "the whole picture reprinted as a mid-century screen-print poster sheet: flat unmodulated colour planes, hand-cut stencil edges, warm off-white paper stock with fine print grain, one faint ink misregistration, a thin dark-ink rule inset a few millimetres from the trimmed edge, no photographic depth of field",
629 "palette": [
630 "#F5F0E3",
631 "#E4B23C",
632 "#2F5FA8",
633 "#1E2A38"
634 ]
635 }
636 },
637 {
638 "x": 0,
639 "y": 0,
640 "width": 896,
641 "height": 555,
642 "metadata": {
643 "type": "obj",
644 "text": "",
645 "desc": "the sunlit tiled facade redrawn as two flat ochre plates, one in full sun and one in shade, split by one crisp diagonal shadow that runs from the top edge near the centre down to the left edge about a fifth of the way down; the tile grout becomes a sparse regular grid of thin lighter lines",
646 "palette": [
647 "#E4B23C",
648 "#C6952F",
649 "#F0C85A"
650 ]
651 }
652 },
653 {
654 "x": 57,
655 "y": 205,
656 "width": 193,
657 "height": 350,
658 "metadata": {
659 "type": "obj",
660 "text": "",
661 "desc": "the left round-headed arch opening cut cleanly through the facade: inside it a flat pale-blue sky with one simplified cream cloud bank, edges stencil-cut, no gradients",
662 "palette": [
663 "#4E86C8",
664 "#A9C9E8",
665 "#F5F0E3"
666 ]
667 }
668 },
669 {
670 "x": 357,
671 "y": 192,
672 "width": 196,
673 "height": 363,
674 "metadata": {
675 "type": "obj",
676 "text": "",
677 "desc": "the centre arch opening, the tallest of the three: flat pale-blue sky, one low cream cloud shape near its base, and the daisy horizon showing as a thin band of small white dots across the bottom of the opening",
678 "palette": [
679 "#4E86C8",
680 "#A9C9E8",
681 "#F5F0E3"
682 ]
683 }
684 },
685 {
686 "x": 652,
687 "y": 200,
688 "width": 203,
689 "height": 355,
690 "metadata": {
691 "type": "obj",
692 "text": "",
693 "desc": "the right arch opening holding a single tree: trunk and crown reduced to a two-tone silhouette of dark olive green and deep umber against the pale blue sky, branches simplified to a few decisive lines, foliage as clustered flat shapes, no leaf texture",
694 "palette": [
695 "#4E86C8",
696 "#6E8B4A",
697 "#3B4A2E"
698 ]
699 }
700 },
701 {
702 "x": 0,
703 "y": 500,
704 "width": 896,
705 "height": 652,
706 "metadata": {
707 "type": "obj",
708 "text": "",
709 "desc": "the daisy meadow drawn as poster shapes: the field as broad olive-green swathes rising to a soft ridge line, every daisy a simple white petal rosette with a flat ochre centre, evenly staggered and overlapping in loose rows, the nearest flowers large and crisp, the distant ones small pale dots",
710 "palette": [
711 "#8FA05A",
712 "#B7C68A",
713 "#F5F0E3",
714 "#E4A62C"
715 ]
716 }
717 },
718 {
719 "x": 348,
720 "y": 486,
721 "width": 170,
722 "height": 88,
723 "metadata": {
724 "type": "obj",
725 "text": "",
726 "desc": "an open parasol held high above her, seen from behind: the canopy a flat disc of deep rust-red silk with a black scalloped lace edge printed as a row of small half-circles and straight thin dark ribs radiating from the centre, a slim dark-wood shaft falling to her raised hand; the canopy tilted slightly to the left, one paler rust tone on its sunlit right half",
727 "palette": [
728 "#9E3B2E",
729 "#6E2A22",
730 "#1E2A38"
731 ]
732 }
733 },
734 {
735 "x": 372,
736 "y": 566,
737 "width": 112,
738 "height": 280,
739 "metadata": {
740 "type": "obj",
741 "text": "",
742 "desc": "a graceful woman standing with her back to the camera, full length, drawn in the same flat screen-print language: a classical floor-length gown of deep rust-red silk, high waisted with one soft vertical fold falling from her shoulder blades to the hem, printed as two flat planes of rust separated by a single crisp fold line; her long hair gathered in a low classical chignon with a thin printed ribbon and two loose strands; bare shoulders and arms as flat warm-skin planes with one darker shadow tone along her right side; slim, tall and perfectly still, her weight on her left foot, one arm raised holding the parasol and the other relaxed at her side; her hem and feet disappearing into the daisies, the pressed grass in front of her printed as a few flat dark strokes",
743 "palette": [
744 "#9E3B2E",
745 "#E8B893",
746 "#1E2A38"
747 ]
748 }
749 },
750 {
751 "x": 0,
752 "y": 956,
753 "width": 896,
754 "height": 196,
755 "metadata": {
756 "type": "obj",
757 "text": "",
758 "desc": "a full-width band of warm cream paper across the foot of the poster, printed flat with a single thin ochre rule along its top edge and no texture, holding the typography with generous air between the lines",
759 "palette": [
760 "#F3EADA",
761 "#C6952F"
762 ]
763 }
764 },
765 {
766 "x": 81,
767 "y": 984,
768 "width": 734,
769 "height": 38,
770 "metadata": {
771 "type": "text",
772 "text": "WHERE THE LIGHT LINGERS",
773 "desc": "the title set in an elegant thin-stroke classical serif, all capitals with very wide letterspacing, ink navy, one line, centred in the band with generous air above and below; spelled exactly as written",
774 "palette": [
775 "#1E2A38"
776 ]
777 }
778 },
779 {
780 "x": 134,
781 "y": 1042,
782 "width": 628,
783 "height": 24,
784 "metadata": {
785 "type": "text",
786 "text": "a meadow, a parasol, an unhurried summer",
787 "desc": "a single lower-case line in a small italic serif, ochre ink, wide letterspacing, centred, the commas kept; spelled exactly as written",
788 "palette": [
789 "#C6952F"
790 ]
791 }
792 },
793 {
794 "x": 197,
795 "y": 1104,
796 "width": 502,
797 "height": 16,
798 "metadata": {
799 "type": "text",
800 "text": "COMFY ORG",
801 "desc": "a very small line of wide-tracked capitals in ink navy at the very foot of the band, centred; spelled exactly C O M F Y space O R G",
802 "palette": [
803 "#1E2A38"
804 ]
805 }
806 }
807 ],
808 "last_incoming": []
809 }
810 },
811 {
812 "id": 92,
813 "type": "PreviewAny",
814 "pos": [
815 -530,
816 5650
817 ],
818 "size": [
819 400,
820 290
821 ],
822 "flags": [],
823 "order": 8,
824 "mode": 0,
825 "inputs": [
826 {
827 "name": "source",
828 "type": "*",
829 "link": 214
830 }
831 ],
832 "outputs": [
833 {
834 "name": "STRING",
835 "type": "STRING",
836 "links": null
837 }
838 ],
839 "properties": {
840 "Node name for S&R": "PreviewAny"
841 },
842 "widgets_values": [],
843 "widgets_values_named": []
844 },
845 {
846 "id": 93,
847 "type": "BuildJsonPromptIdeogram",
848 "pos": [
849 -530,
850 5200
851 ],
852 "size": [
853 400,
854 290
855 ],
856 "flags": [],
857 "order": 9,
858 "mode": 0,
859 "inputs": [
860 {
861 "name": "element",
862 "type": "ARRAY",
863 "link": 215
864 }
865 ],
866 "outputs": [
867 {
868 "name": "prompt",
869 "type": "DICT",
870 "links": [
871 216,
872 1062
873 ]
874 }
875 ],
876 "properties": {
877 "Node name for S&R": "BuildJsonPromptIdeogram"
878 },
879 "widgets_values": [
880 "A mid-century screen-print travel poster: a graceful classical woman in a long gown stands with her back to the camera under an open parasol in a meadow of white daisies, before a sunlit ochre facade pierced by three round-headed arches, the poster typography set in a cream band across the foot.",
881 "the poster environment: a tiled ochre facade pierced by three round-headed arches that open onto a flat pale-blue sky with one cream cloud bank; through the right arch a single tree; a daisy meadow filling the lower half of the frame",
882 "art_style",
883 "mid-century screen-print travel-poster illustration, flat unmodulated colour planes, hand-cut stencil edges, posterised simplification, slight ink misregistration, warm off-white paper stock with fine print grain; the figure printed in the same flat language with only two or three tones per form",
884 "mid-century modern, vintage travel poster, classical grace and stillness, elegant romantic figure, nostalgic, print-era, artful",
885 "hard late-afternoon sun from the upper right throwing one crisp diagonal shadow across the facade; bright even light over the meadow; the woman and her parasol reading as one clean silhouette against the pale blue sky; no gradients, no lens effects",
886 "graphic_design",
887 [
888 "#E4B23C",
889 "#2F5FA8",
890 "#9E3B2E",
891 "#8FA05A",
892 "#F5F0E3",
893 "#1E2A38"
894 ]
895 ],
896 "widgets_values_named": {
897 "high_level_description": "A mid-century screen-print travel poster: a graceful classical woman in a long gown stands with her back to the camera under an open parasol in a meadow of white daisies, before a sunlit ochre facade pierced by three round-headed arches, the poster typography set in a cream band across the foot.",
898 "background": "the poster environment: a tiled ochre facade pierced by three round-headed arches that open onto a flat pale-blue sky with one cream cloud bank; through the right arch a single tree; a daisy meadow filling the lower half of the frame",
899 "style": "art_style",
900 "style.art_style": "mid-century screen-print travel-poster illustration, flat unmodulated colour planes, hand-cut stencil edges, posterised simplification, slight ink misregistration, warm off-white paper stock with fine print grain; the figure printed in the same flat language with only two or three tones per form",
901 "aesthetics": "mid-century modern, vintage travel poster, classical grace and stillness, elegant romantic figure, nostalgic, print-era, artful",
902 "lighting": "hard late-afternoon sun from the upper right throwing one crisp diagonal shadow across the facade; bright even light over the meadow; the woman and her parasol reading as one clean silhouette against the pale blue sky; no gradients, no lens effects",
903 "medium": "graphic_design",
904 "color_palette": [
905 "#E4B23C",
906 "#2F5FA8",
907 "#9E3B2E",
908 "#8FA05A",
909 "#F5F0E3",
910 "#1E2A38"
911 ]
912 }
913 },
914 {
915 "id": 94,
916 "type": "PreviewAny",
917 "pos": [
918 10,
919 5210
920 ],
921 "size": [
922 490,
923 330
924 ],
925 "flags": [],
926 "order": 12,
927 "mode": 0,
928 "inputs": [
929 {
930 "name": "source",
931 "type": "*",
932 "link": 216
933 }
934 ],
935 "outputs": [
936 {
937 "name": "STRING",
938 "type": "STRING",
939 "links": []
940 }
941 ],
942 "properties": {
943 "Node name for S&R": "PreviewAny"
944 },
945 "widgets_values": [],
946 "widgets_values_named": []
947 },
948 {
949 "id": 98,
950 "type": "PreviewImage",
951 "pos": [
952 20,
953 5600
954 ],
955 "size": [
956 490,
957 370
958 ],
959 "flags": [],
960 "order": 7,
961 "mode": 0,
962 "inputs": [
963 {
964 "name": "images",
965 "type": "IMAGE",
966 "link": 225
967 }
968 ],
969 "outputs": [
970 {
971 "name": "images",
972 "type": "IMAGE",
973 "links": [
974 21005
975 ]
976 }
977 ],
978 "properties": {
979 "Node name for S&R": "PreviewImage"
980 }
981 },
982 {
983 "id": 101,
984 "type": "MarkdownNote",
985 "pos": [
986 -1070,
987 6170
988 ],
989 "size": [
990 380,
991 160
992 ],
993 "flags": [],
994 "order": 4,
995 "mode": 0,
996 "inputs": [],
997 "outputs": [],
998 "properties": [],
999 "widgets_values": [
1000 "If you can't find the editor on the node canvas, please make sure you have enabled Nodes 2.0 to see the editor\n"
1001 ],
1002 "widgets_values_named": {
1003 "text": "If you can't find the editor on the node canvas, please make sure you have enabled Nodes 2.0 to see the editor\n"
1004 },
1005 "color": "#222",
1006 "bgcolor": "#000"
1007 },
1008 {
1009 "id": 250,
1010 "type": "PreviewAny",
1011 "pos": [
1012 1020,
1013 5180
1014 ],
1015 "size": [
1016 750,
1017 810
1018 ],
1019 "flags": [],
1020 "order": 14,
1021 "mode": 0,
1022 "inputs": [
1023 {
1024 "name": "source",
1025 "type": "*",
1026 "link": 1065
1027 }
1028 ],
1029 "outputs": [
1030 {
1031 "name": "STRING",
1032 "type": "STRING",
1033 "slot_index": 0,
1034 "links": []
1035 }
1036 ],
1037 "title": "PreviewAny (Ming caption)",
1038 "properties": {
1039 "Node name for S&R": "PreviewAny"
1040 },
1041 "widgets_values": [],
1042 "widgets_values_named": []
1043 },
1044 {
1045 "id": 339,
1046 "type": "ae951efd-07f6-49cb-bfdb-0b8e3eee4cda",
1047 "pos": [
1048 630,
1049 5180
1050 ],
1051 "size": [
1052 340,
1053 120
1054 ],
1055 "flags": [],
1056 "order": 13,
1057 "mode": 0,
1058 "inputs": [
1059 {
1060 "name": "ideogram",
1061 "type": "DICT",
1062 "link": 1062
1063 },
1064 {
1065 "name": "elements",
1066 "type": "ARRAY",
1067 "link": 1063
1068 },
1069 {
1070 "name": "width",
1071 "type": "INT",
1072 "link": 1054
1073 },
1074 {
1075 "name": "height",
1076 "type": "INT",
1077 "link": 1055
1078 }
1079 ],
1080 "outputs": [
1081 {
1082 "name": "caption",
1083 "type": "STRING",
1084 "links": [
1085 1065,
1086 21003
1087 ]
1088 }
1089 ],
1090 "properties": {
1091 "previewExposures": []
1092 }
1093 },
1094 {
1095 "id": 340,
1096 "type": "ImageStitch",
1097 "pos": [
1098 1890,
1099 5090
1100 ],
1101 "size": [
1102 270,
1103 150
1104 ],
1105 "flags": [],
1106 "order": 11,
1107 "mode": 0,
1108 "showAdvanced": false,
1109 "inputs": [
1110 {
1111 "name": "image1",
1112 "type": "IMAGE",
1113 "link": 21004
1114 },
1115 {
1116 "name": "image2",
1117 "shape": 7,
1118 "type": "IMAGE",
1119 "link": 21005
1120 }
1121 ],
1122 "outputs": [
1123 {
1124 "name": "IMAGE",
1125 "type": "IMAGE",
1126 "links": [
1127 21008
1128 ]
1129 }
1130 ],
1131 "properties": {
1132 "Node name for S&R": "ImageStitch"
1133 },
1134 "widgets_values": [
1135 "right",
1136 true,
1137 0,
1138 "white"
1139 ],
1140 "widgets_values_named": {
1141 "direction": "right",
1142 "match_image_size": true,
1143 "spacing_width": 0,
1144 "spacing_color": "white"
1145 }
1146 },
1147 {
1148 "id": 341,
1149 "type": "ImageStitch",
1150 "pos": [
1151 1900,
1152 5290
1153 ],
1154 "size": [
1155 270,
1156 150
1157 ],
1158 "flags": [],
1159 "order": 17,
1160 "mode": 0,
1161 "inputs": [
1162 {
1163 "name": "image1",
1164 "type": "IMAGE",
1165 "link": 21008
1166 },
1167 {
1168 "name": "image2",
1169 "shape": 7,
1170 "type": "IMAGE",
1171 "link": 21011
1172 }
1173 ],
1174 "outputs": [
1175 {
1176 "name": "IMAGE",
1177 "type": "IMAGE",
1178 "links": [
1179 21009
1180 ]
1181 }
1182 ],
1183 "properties": {
1184 "Node name for S&R": "ImageStitch"
1185 },
1186 "widgets_values": [
1187 "right",
1188 true,
1189 0,
1190 "white"
1191 ],
1192 "widgets_values_named": {
1193 "direction": "right",
1194 "match_image_size": true,
1195 "spacing_width": 0,
1196 "spacing_color": "white"
1197 }
1198 },
1199 {
1200 "id": 342,
1201 "type": "PreviewImage",
1202 "pos": [
1203 2070,
1204 4430
1205 ],
1206 "size": [
1207 720,
1208 600
1209 ],
1210 "flags": [],
1211 "order": 18,
1212 "mode": 0,
1213 "inputs": [
1214 {
1215 "name": "images",
1216 "type": "IMAGE",
1217 "link": 21009
1218 }
1219 ],
1220 "outputs": [
1221 {
1222 "name": "images",
1223 "type": "IMAGE",
1224 "links": []
1225 }
1226 ],
1227 "properties": {
1228 "Node name for S&R": "PreviewImage"
1229 }
1230 },
1231 {
1232 "id": 344,
1233 "type": "SaveImageAdvanced",
1234 "pos": [
1235 1210,
1236 4420
1237 ],
1238 "size": [
1239 630,
1240 121.99998497604233
1241 ],
1242 "flags": [],
1243 "order": 16,
1244 "mode": 0,
1245 "inputs": [
1246 {
1247 "name": "images",
1248 "type": "IMAGE",
1249 "link": 21010
1250 }
1251 ],
1252 "outputs": [
1253 {
1254 "name": "images",
1255 "type": "IMAGE",
1256 "links": [
1257 21011
1258 ]
1259 }
1260 ],
1261 "properties": [],
1262 "widgets_values": [
1263 "Ming_Image",
1264 "png",
1265 "8-bit",
1266 "sRGB"
1267 ],
1268 "widgets_values_named": {
1269 "filename_prefix": "Ming_Image",
1270 "format": "png",
1271 "format.bit_depth": "8-bit",
1272 "format.input_color_space": "sRGB"
1273 }
1274 }
1275 ],
1276 "links": [
1277 [
1278 210,
1279 83,
1280 0,
1281 81,
1282 0,
1283 "IMAGE"
1284 ],
1285 [
1286 205,
1287 81,
1288 0,
1289 80,
1290 9,
1291 "INT"
1292 ],
1293 [
1294 206,
1295 81,
1296 1,
1297 80,
1298 10,
1299 "INT"
1300 ],
1301 [
1302 214,
1303 91,
1304 1,
1305 92,
1306 0,
1307 "BOUNDING_BOX"
1308 ],
1309 [
1310 216,
1311 93,
1312 0,
1313 94,
1314 0,
1315 "DICT"
1316 ],
1317 [
1318 225,
1319 91,
1320 0,
1321 98,
1322 0,
1323 "IMAGE"
1324 ],
1325 [
1326 228,
1327 49,
1328 0,
1329 91,
1330 0,
1331 "IMAGE"
1332 ],
1333 [
1334 229,
1335 49,
1336 0,
1337 80,
1338 0,
1339 "IMAGE"
1340 ],
1341 [
1342 1062,
1343 93,
1344 0,
1345 339,
1346 0,
1347 "DICT"
1348 ],
1349 [
1350 1063,
1351 91,
1352 2,
1353 339,
1354 1,
1355 "ARRAY"
1356 ],
1357 [
1358 1065,
1359 339,
1360 0,
1361 250,
1362 0,
1363 "STRING"
1364 ],
1365 [
1366 1054,
1367 81,
1368 0,
1369 339,
1370 2,
1371 "INT"
1372 ],
1373 [
1374 1055,
1375 81,
1376 1,
1377 339,
1378 3,
1379 "INT"
1380 ],
1381 [
1382 21003,
1383 339,
1384 0,
1385 80,
1386 8,
1387 "STRING"
1388 ],
1389 [
1390 21004,
1391 49,
1392 0,
1393 340,
1394 0,
1395 "IMAGE"
1396 ],
1397 [
1398 21005,
1399 98,
1400 0,
1401 340,
1402 1,
1403 "IMAGE"
1404 ],
1405 [
1406 21008,
1407 340,
1408 0,
1409 341,
1410 0,
1411 "IMAGE"
1412 ],
1413 [
1414 21009,
1415 341,
1416 0,
1417 342,
1418 0,
1419 "IMAGE"
1420 ],
1421 [
1422 231,
1423 49,
1424 0,
1425 83,
1426 0,
1427 "IMAGE"
1428 ],
1429 [
1430 215,
1431 91,
1432 2,
1433 93,
1434 0,
1435 "ARRAY"
1436 ],
1437 [
1438 21010,
1439 80,
1440 0,
1441 344,
1442 0,
1443 "IMAGE"
1444 ],
1445 [
1446 21011,
1447 344,
1448 0,
1449 341,
1450 1,
1451 "IMAGE"
1452 ]
1453 ],
1454 "groups": [
1455 {
1456 "id": 5,
1457 "title": "Match Input size",
1458 "bounding": [
1459 220,
1460 4510,
1461 340,
1462 550
1463 ],
1464 "color": "#3f789e",
1465 "flags": []
1466 },
1467 {
1468 "id": 6,
1469 "title": "Build JSON Prompt",
1470 "bounding": [
1471 -1090,
1472 5100,
1473 1670,
1474 1010
1475 ],
1476 "color": "#444",
1477 "flags": []
1478 },
1479 {
1480 "id": 14,
1481 "title": "Convert Ideogram JSON to Ming Caption",
1482 "bounding": [
1483 610,
1484 5100,
1485 1210,
1486 1010
1487 ],
1488 "color": "#444",
1489 "flags": []
1490 }
1491 ],
1492 "definitions": {
1493 "subgraphs": [
1494 {
1495 "id": "4522b5d6-7f71-4b60-8fab-1e6ffbd5f1c1",
1496 "version": 1,
1497 "state": {
1498 "lastGroupId": 16,
1499 "lastNodeId": 344,
1500 "lastLinkId": 21011,
1501 "lastRerouteId": 0
1502 },
1503 "revision": 0,
1504 "config": [],
1505 "name": "Image Edit (Ming Image 0.1 Design)",
1506 "inputNode": {
1507 "id": -10,
1508 "bounding": [
1509 -1870,
1510 4270,
1511 192.791015625,
1512 408
1513 ]
1514 },
1515 "outputNode": {
1516 "id": -20,
1517 "bounding": [
1518 1080,
1519 4391,
1520 128,
1521 68
1522 ]
1523 },
1524 "inputs": [
1525 {
1526 "id": "408f2cc7-5712-48b0-9eed-68f5c06e439b",
1527 "name": "images.image_1",
1528 "type": "IMAGE",
1529 "linkIds": [
1530 176
1531 ],
1532 "localized_name": "image_1",
1533 "shape": 7,
1534 "pos": [
1535 -1701.208984375,
1536 4294
1537 ]
1538 },
1539 {
1540 "id": "22d50a21-209b-4643-9888-7d2e88c766b9",
1541 "name": "images.image_2",
1542 "type": "IMAGE",
1543 "linkIds": [
1544 179
1545 ],
1546 "label": "image_2",
1547 "pos": [
1548 -1701.208984375,
1549 4314
1550 ]
1551 },
1552 {
1553 "id": "4257d9d7-c2d5-43ed-9185-ee024155098f",
1554 "name": "images.image_3",
1555 "type": "IMAGE",
1556 "linkIds": [
1557 180
1558 ],
1559 "label": "image_3",
1560 "pos": [
1561 -1701.208984375,
1562 4334
1563 ]
1564 },
1565 {
1566 "id": "21a06ccc-d949-46e3-8cf7-961d5de4893e",
1567 "name": "images.image_4",
1568 "type": "IMAGE",
1569 "linkIds": [
1570 181
1571 ],
1572 "label": "image_4",
1573 "pos": [
1574 -1701.208984375,
1575 4354
1576 ]
1577 },
1578 {
1579 "id": "8264a1ad-b10b-4ed4-ae4d-f1de1d400433",
1580 "name": "images.image_5",
1581 "type": "IMAGE",
1582 "linkIds": [
1583 182
1584 ],
1585 "label": "image_5",
1586 "pos": [
1587 -1701.208984375,
1588 4374
1589 ]
1590 },
1591 {
1592 "id": "9d06ea6b-b7c0-4f0d-8030-65eb98738bdb",
1593 "name": "images.image_6",
1594 "type": "IMAGE",
1595 "linkIds": [
1596 183
1597 ],
1598 "label": "image_6",
1599 "pos": [
1600 -1701.208984375,
1601 4394
1602 ]
1603 },
1604 {
1605 "id": "5c9dced9-5396-4a9d-aab1-698b074cd9e8",
1606 "name": "images.image_7",
1607 "type": "IMAGE",
1608 "linkIds": [
1609 186
1610 ],
1611 "label": "image_7",
1612 "pos": [
1613 -1701.208984375,
1614 4414
1615 ]
1616 },
1617 {
1618 "id": "1cbc3df5-2d4d-4d4a-a38c-f5203c149432",
1619 "name": "images.image_8",
1620 "type": "IMAGE",
1621 "linkIds": [
1622 187
1623 ],
1624 "label": "image_8",
1625 "pos": [
1626 -1701.208984375,
1627 4434
1628 ]
1629 },
1630 {
1631 "id": "961d7784-231c-4883-a139-f29aae4d7456",
1632 "name": "prompt",
1633 "type": "STRING",
1634 "linkIds": [
1635 189
1636 ],
1637 "pos": [
1638 -1701.208984375,
1639 4454
1640 ]
1641 },
1642 {
1643 "id": "34314f99-6aca-4220-a8b5-3183de312e9a",
1644 "name": "value",
1645 "type": "INT",
1646 "linkIds": [
1647 191
1648 ],
1649 "label": "width",
1650 "pos": [
1651 -1701.208984375,
1652 4474
1653 ]
1654 },
1655 {
1656 "id": "25c60db8-8800-47cc-8cef-0854bdcb17a4",
1657 "name": "value_1",
1658 "type": "INT",
1659 "linkIds": [
1660 192
1661 ],
1662 "label": "height",
1663 "pos": [
1664 -1701.208984375,
1665 4494
1666 ]
1667 },
1668 {
1669 "id": "36ce6d7a-d857-46c3-b64f-185400f24608",
1670 "name": "noise_seed",
1671 "type": "INT",
1672 "linkIds": [
1673 193
1674 ],
1675 "pos": [
1676 -1701.208984375,
1677 4514
1678 ]
1679 },
1680 {
1681 "id": "5c0cb8df-1ba1-4a71-b902-6e58e199a88a",
1682 "name": "scheduler",
1683 "type": "COMBO",
1684 "linkIds": [
1685 195
1686 ],
1687 "pos": [
1688 -1701.208984375,
1689 4534
1690 ]
1691 },
1692 {
1693 "id": "79fe53b1-fd35-4588-b2b6-f2cad2871cd6",
1694 "name": "steps",
1695 "type": "INT",
1696 "linkIds": [
1697 196
1698 ],
1699 "pos": [
1700 -1701.208984375,
1701 4554
1702 ]
1703 },
1704 {
1705 "id": "a0b71631-41f8-46e0-b99d-9b09d8377077",
1706 "name": "unet_name",
1707 "type": "COMBO",
1708 "linkIds": [
1709 200
1710 ],
1711 "pos": [
1712 -1701.208984375,
1713 4574
1714 ]
1715 },
1716 {
1717 "id": "a053ff7b-b9e0-4f8b-b360-a1def0a8be56",
1718 "name": "vae_name",
1719 "type": "COMBO",
1720 "linkIds": [
1721 201
1722 ],
1723 "pos": [
1724 -1701.208984375,
1725 4594
1726 ]
1727 },
1728 {
1729 "id": "98a8b756-ad95-438c-8642-b3d3954b8062",
1730 "name": "type",
1731 "type": "COMBO",
1732 "linkIds": [
1733 202
1734 ],
1735 "pos": [
1736 -1701.208984375,
1737 4614
1738 ]
1739 },
1740 {
1741 "id": "aa159b85-8fdb-4529-b846-a3831305f77f",
1742 "name": "attention_1",
1743 "type": "COMBO",
1744 "linkIds": [
1745 203
1746 ],
1747 "label": "model_attention_backend",
1748 "pos": [
1749 -1701.208984375,
1750 4634
1751 ]
1752 }
1753 ],
1754 "outputs": [
1755 {
1756 "id": "4ed7b8dc-e4c2-403f-9f02-efe7ea678388",
1757 "name": "IMAGE",
1758 "type": "IMAGE",
1759 "linkIds": [
1760 127
1761 ],
1762 "localized_name": "IMAGE",
1763 "pos": [
1764 1104,
1765 4415
1766 ]
1767 }
1768 ],
1769 "widgets": [],
1770 "nodes": [
1771 {
1772 "id": 1,
1773 "type": "UNETLoader",
1774 "pos": [
1775 -1410,
1776 4080
1777 ],
1778 "size": [
1779 470,
1780 90
1781 ],
1782 "flags": [],
1783 "order": 1,
1784 "mode": 0,
1785 "inputs": [
1786 {
1787 "localized_name": "unet_name",
1788 "name": "unet_name",
1789 "type": "COMBO",
1790 "widget": {
1791 "name": "unet_name"
1792 },
1793 "link": 200
1794 }
1795 ],
1796 "outputs": [
1797 {
1798 "localized_name": "MODEL",
1799 "name": "MODEL",
1800 "type": "MODEL",
1801 "links": [
1802 142
1803 ]
1804 }
1805 ],
1806 "properties": {
1807 "Node name for S&R": "UNETLoader",
1808 "models": [
1809 {
1810 "name": "ming_image_0.1_design_int8_convrot.safetensors",
1811 "url": "https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/diffusion_models/ming_image_0.1_design_int8_convrot.safetensors",
1812 "directory": "diffusion_models"
1813 }
1814 ]
1815 },
1816 "widgets_values": [
1817 "ming_image_0.1_design_int8_convrot.safetensors",
1818 "default"
1819 ],
1820 "widgets_values_named": {
1821 "unet_name": "ming_image_0.1_design_int8_convrot.safetensors",
1822 "weight_dtype": "default"
1823 },
1824 "color": "#223",
1825 "bgcolor": "#335"
1826 },
1827 {
1828 "id": 14,
1829 "type": "VAELoader",
1830 "pos": [
1831 -1410,
1832 4240
1833 ],
1834 "size": [
1835 470,
1836 70
1837 ],
1838 "flags": [],
1839 "order": 3,
1840 "mode": 0,
1841 "inputs": [
1842 {
1843 "localized_name": "vae_name",
1844 "name": "vae_name",
1845 "type": "COMBO",
1846 "widget": {
1847 "name": "vae_name"
1848 },
1849 "link": 201
1850 }
1851 ],
1852 "outputs": [
1853 {
1854 "localized_name": "VAE",
1855 "name": "VAE",
1856 "type": "VAE",
1857 "links": [
1858 21,
1859 185
1860 ]
1861 }
1862 ],
1863 "properties": {
1864 "Node name for S&R": "VAELoader",
1865 "models": [
1866 {
1867 "name": "ming_image_vae_bf16.safetensors",
1868 "url": "https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/vae/ming_image_vae_bf16.safetensors",
1869 "directory": "vae"
1870 }
1871 ]
1872 },
1873 "widgets_values": [
1874 "ming_image_vae_bf16.safetensors"
1875 ],
1876 "widgets_values_named": {
1877 "vae_name": "ming_image_vae_bf16.safetensors"
1878 },
1879 "color": "#322",
1880 "bgcolor": "#533"
1881 },
1882 {
1883 "id": 57,
1884 "type": "TextEncodeMingImageEdit",
1885 "pos": [
1886 -820,
1887 4090
1888 ],
1889 "size": [
1890 380,
1891 430
1892 ],
1893 "flags": [],
1894 "order": 10,
1895 "mode": 0,
1896 "inputs": [
1897 {
1898 "localized_name": "clip",
1899 "name": "clip",
1900 "type": "CLIP",
1901 "link": 123
1902 },
1903 {
1904 "localized_name": "image_1",
1905 "name": "images.image_1",
1906 "shape": 7,
1907 "type": "IMAGE",
1908 "link": 176
1909 },
1910 {
1911 "localized_name": "image_2",
1912 "name": "images.image_2",
1913 "shape": 7,
1914 "type": "IMAGE",
1915 "link": 179
1916 },
1917 {
1918 "localized_name": "image_3",
1919 "name": "images.image_3",
1920 "shape": 7,
1921 "type": "IMAGE",
1922 "link": 180
1923 },
1924 {
1925 "localized_name": "image_4",
1926 "name": "images.image_4",
1927 "shape": 7,
1928 "type": "IMAGE",
1929 "link": 181
1930 },
1931 {
1932 "localized_name": "image_5",
1933 "name": "images.image_5",
1934 "shape": 7,
1935 "type": "IMAGE",
1936 "link": 182
1937 },
1938 {
1939 "localized_name": "image_6",
1940 "name": "images.image_6",
1941 "shape": 7,
1942 "type": "IMAGE",
1943 "link": 183
1944 },
1945 {
1946 "localized_name": "image_7",
1947 "name": "images.image_7",
1948 "shape": 7,
1949 "type": "IMAGE",
1950 "link": 186
1951 },
1952 {
1953 "localized_name": "image_8",
1954 "name": "images.image_8",
1955 "shape": 7,
1956 "type": "IMAGE",
1957 "link": 187
1958 },
1959 {
1960 "localized_name": "vae",
1961 "name": "vae",
1962 "shape": 7,
1963 "type": "VAE",
1964 "link": 185
1965 },
1966 {
1967 "localized_name": "prompt",
1968 "name": "prompt",
1969 "type": "STRING",
1970 "widget": {
1971 "name": "prompt"
1972 },
1973 "link": 189
1974 }
1975 ],
1976 "outputs": [
1977 {
1978 "localized_name": "CONDITIONING",
1979 "name": "CONDITIONING",
1980 "type": "CONDITIONING",
1981 "links": [
1982 164
1983 ]
1984 }
1985 ],
1986 "properties": {
1987 "Node name for S&R": "TextEncodeMingImageEdit"
1988 },
1989 "widgets_values": [
1990 ""
1991 ],
1992 "widgets_values_named": {
1993 "prompt": ""
1994 }
1995 },
1996 {
1997 "id": 23,
1998 "type": "CLIPLoader",
1999 "pos": [
2000 -1410,
2001 4380
2002 ],
2003 "size": [
2004 470,
2005 120
2006 ],
2007 "flags": [],
2008 "order": 6,
2009 "mode": 0,
2010 "inputs": [
2011 {
2012 "localized_name": "type",
2013 "name": "type",
2014 "type": "COMBO",
2015 "widget": {
2016 "name": "type"
2017 },
2018 "link": 202
2019 }
2020 ],
2021 "outputs": [
2022 {
2023 "localized_name": "CLIP",
2024 "name": "CLIP",
2025 "type": "CLIP",
2026 "links": [
2027 123
2028 ]
2029 }
2030 ],
2031 "properties": {
2032 "Node name for S&R": "CLIPLoader",
2033 "models": [
2034 {
2035 "name": "ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors",
2036 "url": "https://huggingface.co/Comfy-Org/Ming-Image/resolve/main/text_encoders/ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors",
2037 "directory": "text_encoders"
2038 }
2039 ]
2040 },
2041 "widgets_values": [
2042 "ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors",
2043 "qwen_image",
2044 "default"
2045 ],
2046 "widgets_values_named": {
2047 "clip_name": "ming_image_0.1_ling_mini_2.0_int8_convrot.safetensors",
2048 "type": "qwen_image",
2049 "device": "default"
2050 },
2051 "color": "#432",
2052 "bgcolor": "#653"
2053 },
2054 {
2055 "id": 42,
2056 "type": "ModelSamplingFlux",
2057 "pos": [
2058 -320,
2059 4320
2060 ],
2061 "size": [
2062 270,
2063 130
2064 ],
2065 "flags": {
2066 "collapsed": false
2067 },
2068 "order": 9,
2069 "mode": 0,
2070 "inputs": [
2071 {
2072 "localized_name": "model",
2073 "name": "model",
2074 "type": "MODEL",
2075 "link": 143
2076 },
2077 {
2078 "localized_name": "width",
2079 "name": "width",
2080 "type": "INT",
2081 "widget": {
2082 "name": "width"
2083 },
2084 "link": 173
2085 },
2086 {
2087 "localized_name": "height",
2088 "name": "height",
2089 "type": "INT",
2090 "widget": {
2091 "name": "height"
2092 },
2093 "link": 175
2094 }
2095 ],
2096 "outputs": [
2097 {
2098 "localized_name": "MODEL",
2099 "name": "MODEL",
2100 "type": "MODEL",
2101 "links": [
2102 81,
2103 163
2104 ]
2105 }
2106 ],
2107 "properties": {
2108 "Node name for S&R": "ModelSamplingFlux"
2109 },
2110 "widgets_values": [
2111 1.15,
2112 0.5,
2113 1536,
2114 1536
2115 ],
2116 "widgets_values_named": {
2117 "max_shift": 1.15,
2118 "base_shift": 0.5,
2119 "width": 1536,
2120 "height": 1536
2121 }
2122 },
2123 {
2124 "id": 68,
2125 "type": "ModelAttentionBackend",
2126 "pos": [
2127 -330,
2128 4180
2129 ],
2130 "size": [
2131 270,
2132 60
2133 ],
2134 "flags": [],
2135 "order": 11,
2136 "mode": 0,
2137 "inputs": [
2138 {
2139 "localized_name": "model",
2140 "name": "model",
2141 "type": "MODEL",
2142 "link": 142
2143 },
2144 {
2145 "localized_name": "backend",
2146 "name": "attention",
2147 "type": "COMBO",
2148 "widget": {
2149 "name": "attention"
2150 },
2151 "link": 203
2152 }
2153 ],
2154 "outputs": [
2155 {
2156 "localized_name": "model",
2157 "name": "model",
2158 "type": "MODEL",
2159 "links": [
2160 143
2161 ]
2162 }
2163 ],
2164 "properties": {
2165 "Node name for S&R": "ModelAttentionBackend"
2166 },
2167 "widgets_values": [
2168 "comfy kitchen attention"
2169 ],
2170 "widgets_values_named": {
2171 "attention": "comfy kitchen attention"
2172 }
2173 },
2174 {
2175 "id": 21,
2176 "type": "BasicScheduler",
2177 "pos": [
2178 30,
2179 4470
2180 ],
2181 "size": [
2182 270,
2183 120
2184 ],
2185 "flags": [],
2186 "order": 5,
2187 "mode": 0,
2188 "inputs": [
2189 {
2190 "localized_name": "model",
2191 "name": "model",
2192 "type": "MODEL",
2193 "link": 81
2194 },
2195 {
2196 "localized_name": "scheduler",
2197 "name": "scheduler",
2198 "type": "COMBO",
2199 "widget": {
2200 "name": "scheduler"
2201 },
2202 "link": 195
2203 },
2204 {
2205 "localized_name": "steps",
2206 "name": "steps",
2207 "type": "INT",
2208 "widget": {
2209 "name": "steps"
2210 },
2211 "link": 196
2212 }
2213 ],
2214 "outputs": [
2215 {
2216 "localized_name": "SIGMAS",
2217 "name": "SIGMAS",
2218 "type": "SIGMAS",
2219 "links": [
2220 67
2221 ]
2222 }
2223 ],
2224 "properties": {
2225 "Node name for S&R": "BasicScheduler"
2226 },
2227 "widgets_values": [
2228 "simple",
2229 12,
2230 1
2231 ],
2232 "widgets_values_named": {
2233 "scheduler": "simple",
2234 "steps": 12,
2235 "denoise": 1
2236 }
2237 },
2238 {
2239 "id": 26,
2240 "type": "RandomNoise",
2241 "pos": [
2242 30,
2243 3990
2244 ],
2245 "size": [
2246 270,
2247 90
2248 ],
2249 "flags": [],
2250 "order": 7,
2251 "mode": 0,
2252 "inputs": [
2253 {
2254 "localized_name": "noise_seed",
2255 "name": "noise_seed",
2256 "type": "INT",
2257 "widget": {
2258 "name": "noise_seed"
2259 },
2260 "link": 193
2261 }
2262 ],
2263 "outputs": [
2264 {
2265 "localized_name": "NOISE",
2266 "name": "NOISE",
2267 "type": "NOISE",
2268 "links": [
2269 38
2270 ]
2271 }
2272 ],
2273 "properties": {
2274 "Node name for S&R": "RandomNoise"
2275 },
2276 "widgets_values": [
2277 56,
2278 "randomize"
2279 ],
2280 "widgets_values_named": {
2281 "noise_seed": 56,
2282 "control_after_generate": "randomize"
2283 }
2284 },
2285 {
2286 "id": 41,
2287 "type": "EmptyLatentImage",
2288 "pos": [
2289 -830,
2290 4740
2291 ],
2292 "size": [
2293 270,
2294 110
2295 ],
2296 "flags": {
2297 "collapsed": false
2298 },
2299 "order": 8,
2300 "mode": 0,
2301 "inputs": [
2302 {
2303 "localized_name": "width",
2304 "name": "width",
2305 "type": "INT",
2306 "widget": {
2307 "name": "width"
2308 },
2309 "link": 172
2310 },
2311 {
2312 "localized_name": "height",
2313 "name": "height",
2314 "type": "INT",
2315 "widget": {
2316 "name": "height"
2317 },
2318 "link": 174
2319 }
2320 ],
2321 "outputs": [
2322 {
2323 "localized_name": "LATENT",
2324 "name": "LATENT",
2325 "type": "LATENT",
2326 "links": [
2327 158
2328 ]
2329 }
2330 ],
2331 "properties": {
2332 "Node name for S&R": "EmptyLatentImage"
2333 },
2334 "widgets_values": [
2335 1024,
2336 2048,
2337 1
2338 ],
2339 "widgets_values_named": {
2340 "width": 1024,
2341 "height": 2048,
2342 "batch_size": 1
2343 },
2344 "color": "#323",
2345 "bgcolor": "#535"
2346 },
2347 {
2348 "id": 75,
2349 "type": "SamplerLCM",
2350 "pos": [
2351 30,
2352 4280
2353 ],
2354 "size": [
2355 270,
2356 110
2357 ],
2358 "flags": [],
2359 "order": 0,
2360 "mode": 0,
2361 "inputs": [],
2362 "outputs": [
2363 {
2364 "localized_name": "SAMPLER",
2365 "name": "SAMPLER",
2366 "type": "SAMPLER",
2367 "links": [
2368 162
2369 ]
2370 }
2371 ],
2372 "properties": {
2373 "Node name for S&R": "SamplerLCM"
2374 },
2375 "widgets_values": [
2376 1.02,
2377 1,
2378 0
2379 ],
2380 "widgets_values_named": {
2381 "s_noise": 1.02,
2382 "s_noise_end": 1,
2383 "noise_clip_std": 0
2384 }
2385 },
2386 {
2387 "id": 76,
2388 "type": "BasicGuider",
2389 "pos": [
2390 30,
2391 4150
2392 ],
2393 "size": [
2394 270,
2395 50
2396 ],
2397 "flags": [],
2398 "order": 12,
2399 "mode": 0,
2400 "inputs": [
2401 {
2402 "localized_name": "model",
2403 "name": "model",
2404 "type": "MODEL",
2405 "link": 163
2406 },
2407 {
2408 "localized_name": "conditioning",
2409 "name": "conditioning",
2410 "type": "CONDITIONING",
2411 "link": 164
2412 }
2413 ],
2414 "outputs": [
2415 {
2416 "localized_name": "GUIDER",
2417 "name": "GUIDER",
2418 "type": "GUIDER",
2419 "links": [
2420 165
2421 ]
2422 }
2423 ],
2424 "properties": {
2425 "Node name for S&R": "BasicGuider"
2426 }
2427 },
2428 {
2429 "id": 78,
2430 "type": "PrimitiveInt",
2431 "pos": [
2432 -1410,
2433 4700
2434 ],
2435 "size": [
2436 270,
2437 90
2438 ],
2439 "flags": [],
2440 "order": 13,
2441 "mode": 0,
2442 "inputs": [
2443 {
2444 "localized_name": "value",
2445 "name": "value",
2446 "type": "INT",
2447 "widget": {
2448 "name": "value"
2449 },
2450 "link": 191
2451 }
2452 ],
2453 "outputs": [
2454 {
2455 "localized_name": "INT",
2456 "name": "INT",
2457 "type": "INT",
2458 "links": [
2459 172,
2460 173
2461 ]
2462 }
2463 ],
2464 "title": "Int (Width)",
2465 "properties": {
2466 "Node name for S&R": "PrimitiveInt"
2467 },
2468 "widgets_values": [
2469 1024,
2470 "fixed"
2471 ],
2472 "widgets_values_named": {
2473 "value": 1024,
2474 "fixed": "fixed"
2475 }
2476 },
2477 {
2478 "id": 79,
2479 "type": "PrimitiveInt",
2480 "pos": [
2481 -1410,
2482 4830
2483 ],
2484 "size": [
2485 270,
2486 90
2487 ],
2488 "flags": [],
2489 "order": 14,
2490 "mode": 0,
2491 "inputs": [
2492 {
2493 "localized_name": "value",
2494 "name": "value",
2495 "type": "INT",
2496 "widget": {
2497 "name": "value"
2498 },
2499 "link": 192
2500 }
2501 ],
2502 "outputs": [
2503 {
2504 "localized_name": "INT",
2505 "name": "INT",
2506 "type": "INT",
2507 "links": [
2508 174,
2509 175
2510 ]
2511 }
2512 ],
2513 "properties": {
2514 "Node name for S&R": "PrimitiveInt"
2515 },
2516 "widgets_values": [
2517 1024,
2518 "fixed"
2519 ],
2520 "widgets_values_named": {
2521 "value": 1024,
2522 "fixed": "fixed"
2523 }
2524 },
2525 {
2526 "id": 3,
2527 "type": "SamplerCustomAdvanced",
2528 "pos": [
2529 390,
2530 3990
2531 ],
2532 "size": [
2533 310,
2534 420
2535 ],
2536 "flags": [],
2537 "order": 2,
2538 "mode": 0,
2539 "inputs": [
2540 {
2541 "localized_name": "noise",
2542 "name": "noise",
2543 "type": "NOISE",
2544 "link": 38
2545 },
2546 {
2547 "localized_name": "guider",
2548 "name": "guider",
2549 "type": "GUIDER",
2550 "link": 165
2551 },
2552 {
2553 "localized_name": "sampler",
2554 "name": "sampler",
2555 "type": "SAMPLER",
2556 "link": 162
2557 },
2558 {
2559 "localized_name": "sigmas",
2560 "name": "sigmas",
2561 "type": "SIGMAS",
2562 "link": 67
2563 },
2564 {
2565 "localized_name": "latent_image",
2566 "name": "latent_image",
2567 "type": "LATENT",
2568 "link": 158
2569 }
2570 ],
2571 "outputs": [
2572 {
2573 "localized_name": "output",
2574 "name": "output",
2575 "type": "LATENT",
2576 "links": [
2577 159
2578 ]
2579 },
2580 {
2581 "localized_name": "denoised_output",
2582 "name": "denoised_output",
2583 "type": "LATENT",
2584 "links": null
2585 }
2586 ],
2587 "properties": {
2588 "Node name for S&R": "SamplerCustomAdvanced"
2589 }
2590 },
2591 {
2592 "id": 15,
2593 "type": "VAEDecode",
2594 "pos": [
2595 790,
2596 3990
2597 ],
2598 "size": [
2599 230,
2600 60
2601 ],
2602 "flags": [],
2603 "order": 4,
2604 "mode": 0,
2605 "inputs": [
2606 {
2607 "localized_name": "samples",
2608 "name": "samples",
2609 "type": "LATENT",
2610 "link": 159
2611 },
2612 {
2613 "localized_name": "vae",
2614 "name": "vae",
2615 "type": "VAE",
2616 "link": 21
2617 }
2618 ],
2619 "outputs": [
2620 {
2621 "localized_name": "IMAGE",
2622 "name": "IMAGE",
2623 "type": "IMAGE",
2624 "links": [
2625 127
2626 ]
2627 }
2628 ],
2629 "properties": {
2630 "Node name for S&R": "VAEDecode"
2631 },
2632 "color": "#322",
2633 "bgcolor": "#533"
2634 }
2635 ],
2636 "groups": [
2637 {
2638 "id": 2,
2639 "title": "Conditioning",
2640 "bounding": [
2641 -900,
2642 3920,
2643 530,
2644 680
2645 ],
2646 "color": "#3f789e",
2647 "flags": []
2648 },
2649 {
2650 "id": 3,
2651 "title": "Models",
2652 "bounding": [
2653 -1420,
2654 3920,
2655 490,
2656 680
2657 ],
2658 "color": "#3f789e",
2659 "flags": []
2660 },
2661 {
2662 "id": 4,
2663 "title": "Size",
2664 "bounding": [
2665 -1420,
2666 4630,
2667 1050,
2668 300
2669 ],
2670 "color": "#3f789e",
2671 "flags": []
2672 },
2673 {
2674 "id": 1,
2675 "title": "Sampling",
2676 "bounding": [
2677 -340,
2678 3920,
2679 1070,
2680 680
2681 ],
2682 "color": "#3f789e",
2683 "flags": []
2684 }
2685 ],
2686 "links": [
2687 {
2688 "id": 143,
2689 "origin_id": 68,
2690 "origin_slot": 0,
2691 "target_id": 42,
2692 "target_slot": 0,
2693 "type": "MODEL"
2694 },
2695 {
2696 "id": 142,
2697 "origin_id": 1,
2698 "origin_slot": 0,
2699 "target_id": 68,
2700 "target_slot": 0,
2701 "type": "MODEL"
2702 },
2703 {
2704 "id": 81,
2705 "origin_id": 42,
2706 "origin_slot": 0,
2707 "target_id": 21,
2708 "target_slot": 0,
2709 "type": "MODEL"
2710 },
2711 {
2712 "id": 172,
2713 "origin_id": 78,
2714 "origin_slot": 0,
2715 "target_id": 41,
2716 "target_slot": 0,
2717 "type": "INT"
2718 },
2719 {
2720 "id": 174,
2721 "origin_id": 79,
2722 "origin_slot": 0,
2723 "target_id": 41,
2724 "target_slot": 1,
2725 "type": "INT"
2726 },
2727 {
2728 "id": 163,
2729 "origin_id": 42,
2730 "origin_slot": 0,
2731 "target_id": 76,
2732 "target_slot": 0,
2733 "type": "MODEL"
2734 },
2735 {
2736 "id": 164,
2737 "origin_id": 57,
2738 "origin_slot": 0,
2739 "target_id": 76,
2740 "target_slot": 1,
2741 "type": "CONDITIONING"
2742 },
2743 {
2744 "id": 38,
2745 "origin_id": 26,
2746 "origin_slot": 0,
2747 "target_id": 3,
2748 "target_slot": 0,
2749 "type": "NOISE"
2750 },
2751 {
2752 "id": 165,
2753 "origin_id": 76,
2754 "origin_slot": 0,
2755 "target_id": 3,
2756 "target_slot": 1,
2757 "type": "GUIDER"
2758 },
2759 {
2760 "id": 162,
2761 "origin_id": 75,
2762 "origin_slot": 0,
2763 "target_id": 3,
2764 "target_slot": 2,
2765 "type": "SAMPLER"
2766 },
2767 {
2768 "id": 67,
2769 "origin_id": 21,
2770 "origin_slot": 0,
2771 "target_id": 3,
2772 "target_slot": 3,
2773 "type": "SIGMAS"
2774 },
2775 {
2776 "id": 158,
2777 "origin_id": 41,
2778 "origin_slot": 0,
2779 "target_id": 3,
2780 "target_slot": 4,
2781 "type": "LATENT"
2782 },
2783 {
2784 "id": 159,
2785 "origin_id": 3,
2786 "origin_slot": 0,
2787 "target_id": 15,
2788 "target_slot": 0,
2789 "type": "LATENT"
2790 },
2791 {
2792 "id": 21,
2793 "origin_id": 14,
2794 "origin_slot": 0,
2795 "target_id": 15,
2796 "target_slot": 1,
2797 "type": "VAE"
2798 },
2799 {
2800 "id": 127,
2801 "origin_id": 15,
2802 "origin_slot": 0,
2803 "target_id": -20,
2804 "target_slot": 0,
2805 "type": "IMAGE"
2806 },
2807 {
2808 "id": 191,
2809 "origin_id": -10,
2810 "origin_slot": 9,
2811 "target_id": 78,
2812 "target_slot": 0,
2813 "type": "INT"
2814 },
2815 {
2816 "id": 192,
2817 "origin_id": -10,
2818 "origin_slot": 10,
2819 "target_id": 79,
2820 "target_slot": 0,
2821 "type": "INT"
2822 },
2823 {
2824 "id": 193,
2825 "origin_id": -10,
2826 "origin_slot": 11,
2827 "target_id": 26,
2828 "target_slot": 0,
2829 "type": "INT"
2830 },
2831 {
2832 "id": 195,
2833 "origin_id": -10,
2834 "origin_slot": 12,
2835 "target_id": 21,
2836 "target_slot": 1,
2837 "type": "COMBO"
2838 },
2839 {
2840 "id": 196,
2841 "origin_id": -10,
2842 "origin_slot": 13,
2843 "target_id": 21,
2844 "target_slot": 2,
2845 "type": "INT"
2846 },
2847 {
2848 "id": 200,
2849 "origin_id": -10,
2850 "origin_slot": 14,
2851 "target_id": 1,
2852 "target_slot": 0,
2853 "type": "COMBO"
2854 },
2855 {
2856 "id": 201,
2857 "origin_id": -10,
2858 "origin_slot": 15,
2859 "target_id": 14,
2860 "target_slot": 0,
2861 "type": "COMBO"
2862 },
2863 {
2864 "id": 203,
2865 "origin_id": -10,
2866 "origin_slot": 17,
2867 "target_id": 68,
2868 "target_slot": 1,
2869 "type": "COMBO"
2870 },
2871 {
2872 "id": 123,
2873 "origin_id": 23,
2874 "origin_slot": 0,
2875 "target_id": 57,
2876 "target_slot": 0,
2877 "type": "CLIP"
2878 },
2879 {
2880 "id": 176,
2881 "origin_id": -10,
2882 "origin_slot": 0,
2883 "target_id": 57,
2884 "target_slot": 1,
2885 "type": "IMAGE"
2886 },
2887 {
2888 "id": 179,
2889 "origin_id": -10,
2890 "origin_slot": 1,
2891 "target_id": 57,
2892 "target_slot": 2,
2893 "type": "IMAGE"
2894 },
2895 {
2896 "id": 180,
2897 "origin_id": -10,
2898 "origin_slot": 2,
2899 "target_id": 57,
2900 "target_slot": 3,
2901 "type": "IMAGE"
2902 },
2903 {
2904 "id": 181,
2905 "origin_id": -10,
2906 "origin_slot": 3,
2907 "target_id": 57,
2908 "target_slot": 4,
2909 "type": "IMAGE"
2910 },
2911 {
2912 "id": 182,
2913 "origin_id": -10,
2914 "origin_slot": 4,
2915 "target_id": 57,
2916 "target_slot": 5,
2917 "type": "IMAGE"
2918 },
2919 {
2920 "id": 183,
2921 "origin_id": -10,
2922 "origin_slot": 5,
2923 "target_id": 57,
2924 "target_slot": 6,
2925 "type": "IMAGE"
2926 },
2927 {
2928 "id": 186,
2929 "origin_id": -10,
2930 "origin_slot": 6,
2931 "target_id": 57,
2932 "target_slot": 7,
2933 "type": "IMAGE"
2934 },
2935 {
2936 "id": 187,
2937 "origin_id": -10,
2938 "origin_slot": 7,
2939 "target_id": 57,
2940 "target_slot": 8,
2941 "type": "IMAGE"
2942 },
2943 {
2944 "id": 185,
2945 "origin_id": 14,
2946 "origin_slot": 0,
2947 "target_id": 57,
2948 "target_slot": 9,
2949 "type": "VAE"
2950 },
2951 {
2952 "id": 189,
2953 "origin_id": -10,
2954 "origin_slot": 8,
2955 "target_id": 57,
2956 "target_slot": 10,
2957 "type": "STRING"
2958 },
2959 {
2960 "id": 202,
2961 "origin_id": -10,
2962 "origin_slot": 16,
2963 "target_id": 23,
2964 "target_slot": 0,
2965 "type": "COMBO"
2966 },
2967 {
2968 "id": 173,
2969 "origin_id": 78,
2970 "origin_slot": 0,
2971 "target_id": 42,
2972 "target_slot": 1,
2973 "type": "INT"
2974 },
2975 {
2976 "id": 175,
2977 "origin_id": 79,
2978 "origin_slot": 0,
2979 "target_id": 42,
2980 "target_slot": 2,
2981 "type": "INT"
2982 }
2983 ],
2984 "extra": []
2985 },
2986 {
2987 "id": "ffddfd05-3899-4ab3-ab2f-fdc661b4f3ed",
2988 "version": 1,
2989 "state": {
2990 "lastGroupId": 16,
2991 "lastNodeId": 344,
2992 "lastLinkId": 21011,
2993 "lastRerouteId": 0
2994 },
2995 "revision": 0,
2996 "config": [],
2997 "name": "Aspect Ratio (gcd-reduced)",
2998 "inputNode": {
2999 "id": -10,
3000 "bounding": [
3001 -620,
3002 60,
3003 200,
3004 190
3005 ]
3006 },
3007 "outputNode": {
3008 "id": -20,
3009 "bounding": [
3010 3520,
3011 120,
3012 130,
3013 70
3014 ]
3015 },
3016 "inputs": [
3017 {
3018 "id": "6e024067-cb1a-4b79-b9e4-1d503ee0346e",
3019 "name": "width",
3020 "type": "INT",
3021 "linkIds": [
3022 9000,
3023 9002,
3024 9018,
3025 9023
3026 ],
3027 "pos": [
3028 -580,
3029 110
3030 ]
3031 },
3032 {
3033 "id": "7a5849d1-54ea-4c58-bada-faa7bd6d9fab",
3034 "name": "height",
3035 "type": "INT",
3036 "linkIds": [
3037 9001,
3038 9003,
3039 9019,
3040 9024
3041 ],
3042 "pos": [
3043 -580,
3044 180
3045 ]
3046 }
3047 ],
3048 "outputs": [
3049 {
3050 "id": "74f7d7f2-136d-435c-8dda-7ed4a1e03b9f",
3051 "name": "STRING",
3052 "type": "STRING",
3053 "linkIds": [
3054 9025
3055 ],
3056 "localized_name": "STRING",
3057 "pos": [
3058 3540,
3059 155
3060 ]
3061 }
3062 ],
3063 "widgets": [],
3064 "nodes": [
3065 {
3066 "id": 324,
3067 "type": "CreateList",
3068 "pos": [
3069 0,
3070 0
3071 ],
3072 "size": [
3073 310,
3074 160
3075 ],
3076 "flags": [],
3077 "order": 1,
3078 "mode": 0,
3079 "inputs": [
3080 {
3081 "localized_name": "input0",
3082 "name": "inputs.input0",
3083 "type": "*",
3084 "link": 9000
3085 },
3086 {
3087 "localized_name": "input1",
3088 "name": "inputs.input1",
3089 "shape": 7,
3090 "type": "*",
3091 "link": 9001
3092 },
3093 {
3094 "localized_name": "input2",
3095 "name": "inputs.input2",
3096 "shape": 7,
3097 "type": "*",
3098 "link": null
3099 }
3100 ],
3101 "outputs": [
3102 {
3103 "localized_name": "list",
3104 "name": "list",
3105 "shape": 6,
3106 "type": "*",
3107 "slot_index": 0,
3108 "links": [
3109 9004
3110 ]
3111 }
3112 ],
3113 "title": "Create List (aspect ratio: width + height)",
3114 "properties": {
3115 "Node name for S&R": "CreateList"
3116 },
3117 "color": "#233",
3118 "bgcolor": "#355"
3119 },
3120 {
3121 "id": 337,
3122 "type": "ComfyMathExpression",
3123 "pos": [
3124 0,
3125 220
3126 ],
3127 "size": [
3128 470,
3129 150
3130 ],
3131 "flags": [],
3132 "order": 13,
3133 "mode": 0,
3134 "inputs": [
3135 {
3136 "localized_name": "a",
3137 "name": "values.a",
3138 "type": "FLOAT,INT,BOOLEAN",
3139 "link": 9002
3140 },
3141 {
3142 "localized_name": "b",
3143 "name": "values.b",
3144 "shape": 7,
3145 "type": "FLOAT,INT,BOOLEAN",
3146 "link": 9003
3147 },
3148 {
3149 "localized_name": "c",
3150 "name": "values.c",
3151 "shape": 7,
3152 "type": "FLOAT,INT,BOOLEAN",
3153 "link": null
3154 }
3155 ],
3156 "outputs": [
3157 {
3158 "localized_name": "FLOAT",
3159 "name": "FLOAT",
3160 "type": "FLOAT",
3161 "slot_index": 0,
3162 "links": []
3163 },
3164 {
3165 "localized_name": "INT",
3166 "name": "INT",
3167 "type": "INT",
3168 "slot_index": 1,
3169 "links": [
3170 9005
3171 ]
3172 },
3173 {
3174 "localized_name": "BOOL",
3175 "name": "BOOL",
3176 "type": "BOOLEAN",
3177 "slot_index": 2,
3178 "links": []
3179 }
3180 ],
3181 "title": "Math Expression (loop iterations: ceil(1.5 × log2(max(w, h))) + 2)",
3182 "properties": {
3183 "Node name for S&R": "ComfyMathExpression"
3184 },
3185 "widgets_values": [
3186 "ceil(1.5 * log2(max(a, b))) + 2"
3187 ],
3188 "widgets_values_named": {
3189 "expression": "ceil(1.5 * log2(max(a, b))) + 2"
3190 },
3191 "color": "#332",
3192 "bgcolor": "#553"
3193 },
3194 {
3195 "id": 325,
3196 "type": "StartLoop",
3197 "pos": [
3198 420,
3199 0
3200 ],
3201 "size": [
3202 430,
3203 240
3204 ],
3205 "flags": [],
3206 "order": 2,
3207 "mode": 0,
3208 "inputs": [
3209 {
3210 "localized_name": "parent_iteration",
3211 "name": "parent_iteration",
3212 "shape": 7,
3213 "type": "INT",
3214 "link": null
3215 },
3216 {
3217 "localized_name": "initial_iteration_value",
3218 "name": "initial_iteration_value",
3219 "shape": 7,
3220 "type": "*",
3221 "link": 9004
3222 },
3223 {
3224 "localized_name": "num_iterations",
3225 "name": "mode.num_iterations",
3226 "type": "INT",
3227 "widget": {
3228 "name": "mode.num_iterations"
3229 },
3230 "link": 9005
3231 }
3232 ],
3233 "outputs": [
3234 {
3235 "localized_name": "iteration_index",
3236 "name": "iteration_index",
3237 "type": "INT",
3238 "slot_index": 0,
3239 "links": []
3240 },
3241 {
3242 "localized_name": "is_first",
3243 "name": "is_first",
3244 "type": "BOOLEAN",
3245 "slot_index": 1,
3246 "links": []
3247 },
3248 {
3249 "localized_name": "is_last",
3250 "name": "is_last",
3251 "type": "BOOLEAN",
3252 "slot_index": 2,
3253 "links": []
3254 },
3255 {
3256 "localized_name": "list_item",
3257 "name": "list_item",
3258 "type": "*",
3259 "slot_index": 3,
3260 "links": []
3261 },
3262 {
3263 "localized_name": "current_iteration_value",
3264 "name": "current_iteration_value",
3265 "type": "*",
3266 "slot_index": 4,
3267 "links": [
3268 9006,
3269 9007
3270 ]
3271 }
3272 ],
3273 "title": "Start Loop (Euclid gcd; iterations come from width/height)",
3274 "properties": {
3275 "Node name for S&R": "StartLoop"
3276 },
3277 "widgets_values": [
3278 "simple",
3279 24,
3280 false
3281 ],
3282 "widgets_values_named": {
3283 "mode": "simple",
3284 "mode.num_iterations": 24,
3285 "cache_iterations": false
3286 },
3287 "color": "#323",
3288 "bgcolor": "#535"
3289 },
3290 {
3291 "id": 326,
3292 "type": "GetItemFromList",
3293 "pos": [
3294 840,
3295 0
3296 ],
3297 "size": [
3298 220,
3299 90
3300 ],
3301 "flags": [],
3302 "order": 3,
3303 "mode": 0,
3304 "inputs": [
3305 {
3306 "localized_name": "list",
3307 "name": "list",
3308 "type": "*",
3309 "link": 9006
3310 }
3311 ],
3312 "outputs": [
3313 {
3314 "localized_name": "*",
3315 "name": "*",
3316 "type": "*",
3317 "slot_index": 0,
3318 "links": [
3319 9008,
3320 9010
3321 ]
3322 }
3323 ],
3324 "title": "Get Item From List (a)",
3325 "properties": {
3326 "Node name for S&R": "GetItemFromList"
3327 },
3328 "widgets_values": [
3329 0
3330 ],
3331 "widgets_values_named": {
3332 "index": 0
3333 },
3334 "color": "#233",
3335 "bgcolor": "#355"
3336 },
3337 {
3338 "id": 327,
3339 "type": "GetItemFromList",
3340 "pos": [
3341 840,
3342 150
3343 ],
3344 "size": [
3345 220,
3346 90
3347 ],
3348 "flags": [],
3349 "order": 4,
3350 "mode": 0,
3351 "inputs": [
3352 {
3353 "localized_name": "list",
3354 "name": "list",
3355 "type": "*",
3356 "link": 9007
3357 }
3358 ],
3359 "outputs": [
3360 {
3361 "localized_name": "*",
3362 "name": "*",
3363 "type": "*",
3364 "slot_index": 0,
3365 "links": [
3366 9009,
3367 9011
3368 ]
3369 }
3370 ],
3371 "title": "Get Item From List (b)",
3372 "properties": {
3373 "Node name for S&R": "GetItemFromList"
3374 },
3375 "widgets_values": [
3376 1
3377 ],
3378 "widgets_values_named": {
3379 "index": 1
3380 },
3381 "color": "#233",
3382 "bgcolor": "#355"
3383 },
3384 {
3385 "id": 328,
3386 "type": "ComfyMathExpression",
3387 "pos": [
3388 1180,
3389 0
3390 ],
3391 "size": [
3392 340,
3393 150
3394 ],
3395 "flags": [],
3396 "order": 5,
3397 "mode": 0,
3398 "inputs": [
3399 {
3400 "localized_name": "a",
3401 "name": "values.a",
3402 "type": "FLOAT,INT,BOOLEAN",
3403 "link": 9008
3404 },
3405 {
3406 "localized_name": "b",
3407 "name": "values.b",
3408 "shape": 7,
3409 "type": "FLOAT,INT,BOOLEAN",
3410 "link": 9009
3411 },
3412 {
3413 "localized_name": "c",
3414 "name": "values.c",
3415 "shape": 7,
3416 "type": "FLOAT,INT,BOOLEAN",
3417 "link": null
3418 }
3419 ],
3420 "outputs": [
3421 {
3422 "localized_name": "FLOAT",
3423 "name": "FLOAT",
3424 "type": "FLOAT",
3425 "slot_index": 0,
3426 "links": []
3427 },
3428 {
3429 "localized_name": "INT",
3430 "name": "INT",
3431 "type": "INT",
3432 "slot_index": 1,
3433 "links": [
3434 9013
3435 ]
3436 },
3437 {
3438 "localized_name": "BOOL",
3439 "name": "BOOL",
3440 "type": "BOOLEAN",
3441 "slot_index": 2,
3442 "links": []
3443 }
3444 ],
3445 "title": "Math Expression (r = a mod b)",
3446 "properties": {
3447 "Node name for S&R": "ComfyMathExpression"
3448 },
3449 "widgets_values": [
3450 "a % b if b > 0 else 0"
3451 ],
3452 "widgets_values_named": {
3453 "expression": "a % b if b > 0 else 0"
3454 },
3455 "color": "#332",
3456 "bgcolor": "#553"
3457 },
3458 {
3459 "id": 329,
3460 "type": "ComfyMathExpression",
3461 "pos": [
3462 1180,
3463 220
3464 ],
3465 "size": [
3466 340,
3467 150
3468 ],
3469 "flags": [],
3470 "order": 6,
3471 "mode": 0,
3472 "inputs": [
3473 {
3474 "localized_name": "a",
3475 "name": "values.a",
3476 "type": "FLOAT,INT,BOOLEAN",
3477 "link": 9010
3478 },
3479 {
3480 "localized_name": "b",
3481 "name": "values.b",
3482 "shape": 7,
3483 "type": "FLOAT,INT,BOOLEAN",
3484 "link": 9011
3485 },
3486 {
3487 "localized_name": "c",
3488 "name": "values.c",
3489 "shape": 7,
3490 "type": "FLOAT,INT,BOOLEAN",
3491 "link": null
3492 }
3493 ],
3494 "outputs": [
3495 {
3496 "localized_name": "FLOAT",
3497 "name": "FLOAT",
3498 "type": "FLOAT",
3499 "slot_index": 0,
3500 "links": []
3501 },
3502 {
3503 "localized_name": "INT",
3504 "name": "INT",
3505 "type": "INT",
3506 "slot_index": 1,
3507 "links": [
3508 9012
3509 ]
3510 },
3511 {
3512 "localized_name": "BOOL",
3513 "name": "BOOL",
3514 "type": "BOOLEAN",
3515 "slot_index": 2,
3516 "links": []
3517 }
3518 ],
3519 "title": "Math Expression (next a = b if b > 0 else a)",
3520 "properties": {
3521 "Node name for S&R": "ComfyMathExpression"
3522 },
3523 "widgets_values": [
3524 "b if b > 0 else a"
3525 ],
3526 "widgets_values_named": {
3527 "expression": "b if b > 0 else a"
3528 },
3529 "color": "#332",
3530 "bgcolor": "#553"
3531 },
3532 {
3533 "id": 330,
3534 "type": "CreateList",
3535 "pos": [
3536 1580,
3537 110
3538 ],
3539 "size": [
3540 240,
3541 160
3542 ],
3543 "flags": [],
3544 "order": 7,
3545 "mode": 0,
3546 "inputs": [
3547 {
3548 "localized_name": "input0",
3549 "name": "inputs.input0",
3550 "type": "*",
3551 "link": 9012
3552 },
3553 {
3554 "localized_name": "input1",
3555 "name": "inputs.input1",
3556 "shape": 7,
3557 "type": "*",
3558 "link": 9013
3559 },
3560 {
3561 "localized_name": "input2",
3562 "name": "inputs.input2",
3563 "shape": 7,
3564 "type": "*",
3565 "link": null
3566 }
3567 ],
3568 "outputs": [
3569 {
3570 "localized_name": "list",
3571 "name": "list",
3572 "shape": 6,
3573 "type": "*",
3574 "slot_index": 0,
3575 "links": [
3576 9014,
3577 9015
3578 ]
3579 }
3580 ],
3581 "title": "Create List (next pair)",
3582 "properties": {
3583 "Node name for S&R": "CreateList"
3584 },
3585 "color": "#233",
3586 "bgcolor": "#355"
3587 },
3588 {
3589 "id": 331,
3590 "type": "EndLoop",
3591 "pos": [
3592 1960,
3593 120
3594 ],
3595 "size": [
3596 260,
3597 120
3598 ],
3599 "flags": [],
3600 "order": 8,
3601 "mode": 0,
3602 "inputs": [
3603 {
3604 "localized_name": "output_value",
3605 "name": "output_value",
3606 "shape": 7,
3607 "type": "*",
3608 "link": 9014
3609 },
3610 {
3611 "localized_name": "next_iteration_value",
3612 "name": "next_iteration_value",
3613 "shape": 7,
3614 "type": "*",
3615 "link": 9015
3616 },
3617 {
3618 "localized_name": "termination0",
3619 "name": "terminations.termination0",
3620 "shape": 7,
3621 "type": "*",
3622 "link": null
3623 }
3624 ],
3625 "outputs": [
3626 {
3627 "localized_name": "outputs",
3628 "name": "outputs",
3629 "shape": 6,
3630 "type": "*",
3631 "slot_index": 0,
3632 "links": [
3633 9016
3634 ]
3635 }
3636 ],
3637 "properties": {
3638 "Node name for S&R": "EndLoop"
3639 },
3640 "widgets_values": [
3641 false
3642 ],
3643 "widgets_values_named": {
3644 "accumulate": false
3645 },
3646 "color": "#323",
3647 "bgcolor": "#535"
3648 },
3649 {
3650 "id": 332,
3651 "type": "GetItemFromList",
3652 "pos": [
3653 2300,
3654 120
3655 ],
3656 "size": [
3657 220,
3658 90
3659 ],
3660 "flags": [],
3661 "order": 9,
3662 "mode": 0,
3663 "inputs": [
3664 {
3665 "localized_name": "list",
3666 "name": "list",
3667 "type": "*",
3668 "link": 9016
3669 }
3670 ],
3671 "outputs": [
3672 {
3673 "localized_name": "*",
3674 "name": "*",
3675 "type": "*",
3676 "slot_index": 0,
3677 "links": [
3678 9017,
3679 9020
3680 ]
3681 }
3682 ],
3683 "title": "Get Item From List (gcd)",
3684 "properties": {
3685 "Node name for S&R": "GetItemFromList"
3686 },
3687 "widgets_values": [
3688 0
3689 ],
3690 "widgets_values_named": {
3691 "index": 0
3692 },
3693 "color": "#233",
3694 "bgcolor": "#355"
3695 },
3696 {
3697 "id": 333,
3698 "type": "ComfyMathExpression",
3699 "pos": [
3700 2640,
3701 0
3702 ],
3703 "size": [
3704 340,
3705 150
3706 ],
3707 "flags": [],
3708 "order": 10,
3709 "mode": 0,
3710 "inputs": [
3711 {
3712 "localized_name": "a",
3713 "name": "values.a",
3714 "type": "FLOAT,INT,BOOLEAN",
3715 "link": 9018
3716 },
3717 {
3718 "localized_name": "b",
3719 "name": "values.b",
3720 "shape": 7,
3721 "type": "FLOAT,INT,BOOLEAN",
3722 "link": 9017
3723 },
3724 {
3725 "localized_name": "c",
3726 "name": "values.c",
3727 "shape": 7,
3728 "type": "FLOAT,INT,BOOLEAN",
3729 "link": null
3730 }
3731 ],
3732 "outputs": [
3733 {
3734 "localized_name": "FLOAT",
3735 "name": "FLOAT",
3736 "type": "FLOAT",
3737 "slot_index": 0,
3738 "links": []
3739 },
3740 {
3741 "localized_name": "INT",
3742 "name": "INT",
3743 "type": "INT",
3744 "slot_index": 1,
3745 "links": [
3746 9021
3747 ]
3748 },
3749 {
3750 "localized_name": "BOOL",
3751 "name": "BOOL",
3752 "type": "BOOLEAN",
3753 "slot_index": 2,
3754 "links": []
3755 }
3756 ],
3757 "title": "Math Expression (width / gcd)",
3758 "properties": {
3759 "Node name for S&R": "ComfyMathExpression"
3760 },
3761 "widgets_values": [
3762 "a / b"
3763 ],
3764 "widgets_values_named": {
3765 "expression": "a / b"
3766 },
3767 "color": "#332",
3768 "bgcolor": "#553"
3769 },
3770 {
3771 "id": 334,
3772 "type": "ComfyMathExpression",
3773 "pos": [
3774 2640,
3775 220
3776 ],
3777 "size": [
3778 340,
3779 150
3780 ],
3781 "flags": [],
3782 "order": 11,
3783 "mode": 0,
3784 "inputs": [
3785 {
3786 "localized_name": "a",
3787 "name": "values.a",
3788 "type": "FLOAT,INT,BOOLEAN",
3789 "link": 9019
3790 },
3791 {
3792 "localized_name": "b",
3793 "name": "values.b",
3794 "shape": 7,
3795 "type": "FLOAT,INT,BOOLEAN",
3796 "link": 9020
3797 },
3798 {
3799 "localized_name": "c",
3800 "name": "values.c",
3801 "shape": 7,
3802 "type": "FLOAT,INT,BOOLEAN",
3803 "link": null
3804 }
3805 ],
3806 "outputs": [
3807 {
3808 "localized_name": "FLOAT",
3809 "name": "FLOAT",
3810 "type": "FLOAT",
3811 "slot_index": 0,
3812 "links": []
3813 },
3814 {
3815 "localized_name": "INT",
3816 "name": "INT",
3817 "type": "INT",
3818 "slot_index": 1,
3819 "links": [
3820 9022
3821 ]
3822 },
3823 {
3824 "localized_name": "BOOL",
3825 "name": "BOOL",
3826 "type": "BOOLEAN",
3827 "slot_index": 2,
3828 "links": []
3829 }
3830 ],
3831 "title": "Math Expression (height / gcd)",
3832 "properties": {
3833 "Node name for S&R": "ComfyMathExpression"
3834 },
3835 "widgets_values": [
3836 "a / b"
3837 ],
3838 "widgets_values_named": {
3839 "expression": "a / b"
3840 },
3841 "color": "#332",
3842 "bgcolor": "#553"
3843 },
3844 {
3845 "id": 335,
3846 "type": "StringFormat",
3847 "pos": [
3848 3060,
3849 90
3850 ],
3851 "size": [
3852 360,
3853 190
3854 ],
3855 "flags": [],
3856 "order": 12,
3857 "mode": 0,
3858 "inputs": [
3859 {
3860 "localized_name": "a",
3861 "name": "values.a",
3862 "shape": 7,
3863 "type": "*",
3864 "link": 9021
3865 },
3866 {
3867 "localized_name": "b",
3868 "name": "values.b",
3869 "shape": 7,
3870 "type": "*",
3871 "link": 9022
3872 },
3873 {
3874 "localized_name": "c",
3875 "name": "values.c",
3876 "shape": 7,
3877 "type": "*",
3878 "link": 9023
3879 },
3880 {
3881 "localized_name": "d",
3882 "name": "values.d",
3883 "shape": 7,
3884 "type": "*",
3885 "link": 9024
3886 },
3887 {
3888 "localized_name": "e",
3889 "name": "values.e",
3890 "shape": 7,
3891 "type": "*",
3892 "link": null
3893 }
3894 ],
3895 "outputs": [
3896 {
3897 "localized_name": "STRING",
3898 "name": "STRING",
3899 "type": "STRING",
3900 "slot_index": 0,
3901 "links": [
3902 9025
3903 ]
3904 }
3905 ],
3906 "title": "Format Text (canvas aspect ratio + pixels)",
3907 "properties": {
3908 "Node name for S&R": "StringFormat"
3909 },
3910 "widgets_values": [
3911 "{a}:{b}, {c} × {d} px"
3912 ],
3913 "widgets_values_named": {
3914 "f_string": "{a}:{b}, {c} × {d} px"
3915 }
3916 },
3917 {
3918 "id": 336,
3919 "type": "MarkdownNote",
3920 "pos": [
3921 3060,
3922 340
3923 ],
3924 "size": [
3925 600,
3926 340
3927 ],
3928 "flags": [],
3929 "order": 0,
3930 "mode": 0,
3931 "inputs": [],
3932 "outputs": [],
3933 "title": "Note: Aspect ratio (gcd-reduced)",
3934 "properties": [],
3935 "widgets_values": [
3936 "**Aspect ratio is computed, not typed**\n\n`canvas_settings.aspect_ratio` must read like `7:9, 896 × 1152 px`. This nested subgraph derives it from the `width` / `height` its parent receives from `Get Image Size`:\n\n* the loop count is computed as well — `ceil(1.5 * log2(max(width, height))) + 2` is an upper bound on the Euclidean steps (18 for 896 x 1152, 23 at the 16384 px maximum), so nothing here is hand-typed;\n* inside the loop `r = a mod b`, then `a = b`; once `b` reaches 0 the first value freezes at `gcd(width, height)`;\n* `width / gcd` and `height / gcd` become `ratio, width × height px` in `Format Text (canvas aspect ratio + pixels)`.\n\nSwap the input image or resize the canvas and the ratio follows automatically.\n"
3937 ],
3938 "widgets_values_named": {
3939 "text": "**Aspect ratio is computed, not typed**\n\n`canvas_settings.aspect_ratio` must read like `7:9, 896 × 1152 px`. This nested subgraph derives it from the `width` / `height` its parent receives from `Get Image Size`:\n\n* the loop count is computed as well — `ceil(1.5 * log2(max(width, height))) + 2` is an upper bound on the Euclidean steps (18 for 896 x 1152, 23 at the 16384 px maximum), so nothing here is hand-typed;\n* inside the loop `r = a mod b`, then `a = b`; once `b` reaches 0 the first value freezes at `gcd(width, height)`;\n* `width / gcd` and `height / gcd` become `ratio, width × height px` in `Format Text (canvas aspect ratio + pixels)`.\n\nSwap the input image or resize the canvas and the ratio follows automatically.\n"
3940 },
3941 "color": "#432",
3942 "bgcolor": "#653"
3943 }
3944 ],
3945 "groups": [],
3946 "links": [
3947 {
3948 "id": 9006,
3949 "origin_id": 325,
3950 "origin_slot": 4,
3951 "target_id": 326,
3952 "target_slot": 0,
3953 "type": "*"
3954 },
3955 {
3956 "id": 9007,
3957 "origin_id": 325,
3958 "origin_slot": 4,
3959 "target_id": 327,
3960 "target_slot": 0,
3961 "type": "*"
3962 },
3963 {
3964 "id": 9014,
3965 "origin_id": 330,
3966 "origin_slot": 0,
3967 "target_id": 331,
3968 "target_slot": 0,
3969 "type": "*"
3970 },
3971 {
3972 "id": 9015,
3973 "origin_id": 330,
3974 "origin_slot": 0,
3975 "target_id": 331,
3976 "target_slot": 1,
3977 "type": "*"
3978 },
3979 {
3980 "id": 9016,
3981 "origin_id": 331,
3982 "origin_slot": 0,
3983 "target_id": 332,
3984 "target_slot": 0,
3985 "type": "*"
3986 },
3987 {
3988 "id": 9025,
3989 "origin_id": 335,
3990 "origin_slot": 0,
3991 "target_id": -20,
3992 "target_slot": 0,
3993 "type": "STRING"
3994 },
3995 {
3996 "id": 9000,
3997 "origin_id": -10,
3998 "origin_slot": 0,
3999 "target_id": 324,
4000 "target_slot": 0,
4001 "type": "*"
4002 },
4003 {
4004 "id": 9001,
4005 "origin_id": -10,
4006 "origin_slot": 1,
4007 "target_id": 324,
4008 "target_slot": 1,
4009 "type": "*"
4010 },
4011 {
4012 "id": 9002,
4013 "origin_id": -10,
4014 "origin_slot": 0,
4015 "target_id": 337,
4016 "target_slot": 0,
4017 "type": "FLOAT,INT,BOOLEAN"
4018 },
4019 {
4020 "id": 9003,
4021 "origin_id": -10,
4022 "origin_slot": 1,
4023 "target_id": 337,
4024 "target_slot": 1,
4025 "type": "FLOAT,INT,BOOLEAN"
4026 },
4027 {
4028 "id": 9004,
4029 "origin_id": 324,
4030 "origin_slot": 0,
4031 "target_id": 325,
4032 "target_slot": 1,
4033 "type": "*"
4034 },
4035 {
4036 "id": 9005,
4037 "origin_id": 337,
4038 "origin_slot": 1,
4039 "target_id": 325,
4040 "target_slot": 2,
4041 "type": "INT"
4042 },
4043 {
4044 "id": 9008,
4045 "origin_id": 326,
4046 "origin_slot": 0,
4047 "target_id": 328,
4048 "target_slot": 0,
4049 "type": "FLOAT,INT,BOOLEAN"
4050 },
4051 {
4052 "id": 9009,
4053 "origin_id": 327,
4054 "origin_slot": 0,
4055 "target_id": 328,
4056 "target_slot": 1,
4057 "type": "FLOAT,INT,BOOLEAN"
4058 },
4059 {
4060 "id": 9010,
4061 "origin_id": 326,
4062 "origin_slot": 0,
4063 "target_id": 329,
4064 "target_slot": 0,
4065 "type": "FLOAT,INT,BOOLEAN"
4066 },
4067 {
4068 "id": 9011,
4069 "origin_id": 327,
4070 "origin_slot": 0,
4071 "target_id": 329,
4072 "target_slot": 1,
4073 "type": "FLOAT,INT,BOOLEAN"
4074 },
4075 {
4076 "id": 9012,
4077 "origin_id": 329,
4078 "origin_slot": 1,
4079 "target_id": 330,
4080 "target_slot": 0,
4081 "type": "*"
4082 },
4083 {
4084 "id": 9013,
4085 "origin_id": 328,
4086 "origin_slot": 1,
4087 "target_id": 330,
4088 "target_slot": 1,
4089 "type": "*"
4090 },
4091 {
4092 "id": 9018,
4093 "origin_id": -10,
4094 "origin_slot": 0,
4095 "target_id": 333,
4096 "target_slot": 0,
4097 "type": "FLOAT,INT,BOOLEAN"
4098 },
4099 {
4100 "id": 9017,
4101 "origin_id": 332,
4102 "origin_slot": 0,
4103 "target_id": 333,
4104 "target_slot": 1,
4105 "type": "FLOAT,INT,BOOLEAN"
4106 },
4107 {
4108 "id": 9019,
4109 "origin_id": -10,
4110 "origin_slot": 1,
4111 "target_id": 334,
4112 "target_slot": 0,
4113 "type": "FLOAT,INT,BOOLEAN"
4114 },
4115 {
4116 "id": 9020,
4117 "origin_id": 332,
4118 "origin_slot": 0,
4119 "target_id": 334,
4120 "target_slot": 1,
4121 "type": "FLOAT,INT,BOOLEAN"
4122 },
4123 {
4124 "id": 9021,
4125 "origin_id": 333,
4126 "origin_slot": 1,
4127 "target_id": 335,
4128 "target_slot": 0,
4129 "type": "*"
4130 },
4131 {
4132 "id": 9022,
4133 "origin_id": 334,
4134 "origin_slot": 1,
4135 "target_id": 335,
4136 "target_slot": 1,
4137 "type": "*"
4138 },
4139 {
4140 "id": 9023,
4141 "origin_id": -10,
4142 "origin_slot": 0,
4143 "target_id": 335,
4144 "target_slot": 2,
4145 "type": "*"
4146 },
4147 {
4148 "id": 9024,
4149 "origin_id": -10,
4150 "origin_slot": 1,
4151 "target_id": 335,
4152 "target_slot": 3,
4153 "type": "*"
4154 }
4155 ],
4156 "extra": []
4157 },
4158 {
4159 "id": "ae951efd-07f6-49cb-bfdb-0b8e3eee4cda",
4160 "version": 1,
4161 "state": {
4162 "lastGroupId": 16,
4163 "lastNodeId": 344,
4164 "lastLinkId": 21011,
4165 "lastRerouteId": 0
4166 },
4167 "revision": 0,
4168 "config": [],
4169 "name": "Ideogram JSON to Ming Caption",
4170 "inputNode": {
4171 "id": -10,
4172 "bounding": [
4173 -1610,
4174 690,
4175 128,
4176 128
4177 ]
4178 },
4179 "outputNode": {
4180 "id": -20,
4181 "bounding": [
4182 8980,
4183 1160,
4184 128,
4185 68
4186 ]
4187 },
4188 "inputs": [
4189 {
4190 "id": "5846d0df-9bcb-4813-86b8-d1f16acbf3c7",
4191 "name": "ideogram",
4192 "type": "DICT",
4193 "linkIds": [
4194 20000
4195 ],
4196 "pos": [
4197 -1506,
4198 714
4199 ]
4200 },
4201 {
4202 "id": "e3b1e1c5-dd21-4d63-b767-053fef26b38c",
4203 "name": "elements",
4204 "type": "ARRAY",
4205 "linkIds": [
4206 20001
4207 ],
4208 "pos": [
4209 -1506,
4210 734
4211 ]
4212 },
4213 {
4214 "id": "861ca4fb-24f0-44e7-a81e-30d4b892ba85",
4215 "name": "width",
4216 "type": "INT",
4217 "linkIds": [
4218 21000
4219 ],
4220 "pos": [
4221 -1506,
4222 754
4223 ]
4224 },
4225 {
4226 "id": "237e973c-1a04-4f73-b90a-c4cf5412af42",
4227 "name": "height",
4228 "type": "INT",
4229 "linkIds": [
4230 21001
4231 ],
4232 "pos": [
4233 -1506,
4234 774
4235 ]
4236 }
4237 ],
4238 "outputs": [
4239 {
4240 "id": "bba2d2bf-400f-40c9-92d4-b23b5ce5620c",
4241 "name": "caption",
4242 "type": "STRING",
4243 "linkIds": [
4244 20034
4245 ],
4246 "localized_name": "STRING",
4247 "pos": [
4248 9004,
4249 1184
4250 ]
4251 }
4252 ],
4253 "widgets": [],
4254 "nodes": [
4255 {
4256 "id": 200,
4257 "type": "ConvertDictionaryToString",
4258 "pos": [
4259 -750,
4260 1550
4261 ],
4262 "size": [
4263 400,
4264 90
4265 ],
4266 "flags": [],
4267 "order": 1,
4268 "mode": 0,
4269 "inputs": [
4270 {
4271 "localized_name": "dictionary",
4272 "name": "dictionary",
4273 "type": "DICT",
4274 "link": 20000
4275 }
4276 ],
4277 "outputs": [
4278 {
4279 "localized_name": "STRING",
4280 "name": "STRING",
4281 "type": "STRING",
4282 "slot_index": 0,
4283 "links": [
4284 20004,
4285 20005,
4286 20006,
4287 20007,
4288 20008,
4289 20009,
4290 20011
4291 ]
4292 }
4293 ],
4294 "title": "Convert Dictionary to String (Ideogram prompt → text)",
4295 "properties": {
4296 "Node name for S&R": "ConvertDictionaryToString"
4297 },
4298 "widgets_values": [
4299 0
4300 ],
4301 "widgets_values_named": {
4302 "indent": 0
4303 }
4304 },
4305 {
4306 "id": 201,
4307 "type": "ConvertArrayToString",
4308 "pos": [
4309 340,
4310 3450
4311 ],
4312 "size": [
4313 370,
4314 90
4315 ],
4316 "flags": [],
4317 "order": 2,
4318 "mode": 0,
4319 "inputs": [
4320 {
4321 "localized_name": "array",
4322 "name": "array",
4323 "type": "ARRAY",
4324 "link": 20001
4325 }
4326 ],
4327 "outputs": [
4328 {
4329 "localized_name": "STRING",
4330 "name": "STRING",
4331 "type": "STRING",
4332 "slot_index": 0,
4333 "links": [
4334 20002,
4335 20037
4336 ]
4337 }
4338 ],
4339 "title": "Convert Array to String (boxes → text, the queue)",
4340 "properties": {
4341 "Node name for S&R": "ConvertArrayToString"
4342 },
4343 "widgets_values": [
4344 0
4345 ],
4346 "widgets_values_named": {
4347 "indent": 0
4348 }
4349 },
4350 {
4351 "id": 202,
4352 "type": "RegexReplace",
4353 "pos": [
4354 800,
4355 3400
4356 ],
4357 "size": [
4358 330,
4359 300
4360 ],
4361 "flags": [],
4362 "order": 3,
4363 "mode": 0,
4364 "inputs": [
4365 {
4366 "localized_name": "string",
4367 "name": "string",
4368 "type": "STRING",
4369 "widget": {
4370 "name": "string"
4371 },
4372 "link": 20002
4373 }
4374 ],
4375 "outputs": [
4376 {
4377 "localized_name": "STRING",
4378 "name": "STRING",
4379 "type": "STRING",
4380 "slot_index": 0,
4381 "links": [
4382 20003
4383 ]
4384 }
4385 ],
4386 "title": "Replace Text (Regex) (count the boxes)",
4387 "properties": {
4388 "Node name for S&R": "RegexReplace"
4389 },
4390 "widgets_values": [
4391 "",
4392 "[^{]",
4393 "",
4394 true,
4395 false,
4396 false,
4397 0
4398 ],
4399 "widgets_values_named": {
4400 "string": "",
4401 "regex_pattern": "[^{]",
4402 "replace": "",
4403 "case_insensitive": true,
4404 "multiline": false,
4405 "dotall": false,
4406 "count": 0
4407 }
4408 },
4409 {
4410 "id": 203,
4411 "type": "StringLength",
4412 "pos": [
4413 1260,
4414 3420
4415 ],
4416 "size": [
4417 210,
4418 90
4419 ],
4420 "flags": [],
4421 "order": 4,
4422 "mode": 0,
4423 "inputs": [
4424 {
4425 "localized_name": "string",
4426 "name": "string",
4427 "type": "STRING",
4428 "widget": {
4429 "name": "string"
4430 },
4431 "link": 20003
4432 }
4433 ],
4434 "outputs": [
4435 {
4436 "localized_name": "length",
4437 "name": "length",
4438 "type": "INT",
4439 "slot_index": 0,
4440 "links": []
4441 }
4442 ],
4443 "properties": {
4444 "Node name for S&R": "StringLength"
4445 },
4446 "widgets_values": [
4447 ""
4448 ],
4449 "widgets_values_named": {
4450 "string": ""
4451 }
4452 },
4453 {
4454 "id": 204,
4455 "type": "RegexExtract",
4456 "pos": [
4457 -310,
4458 950
4459 ],
4460 "size": [
4461 330,
4462 270
4463 ],
4464 "flags": [],
4465 "order": 5,
4466 "mode": 0,
4467 "inputs": [
4468 {
4469 "localized_name": "string",
4470 "name": "string",
4471 "type": "STRING",
4472 "widget": {
4473 "name": "string"
4474 },
4475 "link": 20004
4476 }
4477 ],
4478 "outputs": [
4479 {
4480 "localized_name": "STRING",
4481 "name": "STRING",
4482 "type": "STRING",
4483 "slot_index": 0,
4484 "links": [
4485 20068
4486 ]
4487 }
4488 ],
4489 "properties": {
4490 "Node name for S&R": "RegexExtract"
4491 },
4492 "widgets_values": [
4493 "",
4494 "\"lighting\":\\s*\"([^\"]*)\"",
4495 "First Group",
4496 false,
4497 false,
4498 false,
4499 1
4500 ],
4501 "widgets_values_named": {
4502 "string": "",
4503 "regex_pattern": "\"lighting\":\\s*\"([^\"]*)\"",
4504 "mode": "First Group",
4505 "case_insensitive": false,
4506 "multiline": false,
4507 "dotall": false,
4508 "group_index": 1
4509 }
4510 },
4511 {
4512 "id": 205,
4513 "type": "RegexExtract",
4514 "pos": [
4515 -310,
4516 1290
4517 ],
4518 "size": [
4519 330,
4520 270
4521 ],
4522 "flags": [],
4523 "order": 6,
4524 "mode": 0,
4525 "inputs": [
4526 {
4527 "localized_name": "string",
4528 "name": "string",
4529 "type": "STRING",
4530 "widget": {
4531 "name": "string"
4532 },
4533 "link": 20005
4534 }
4535 ],
4536 "outputs": [
4537 {
4538 "localized_name": "STRING",
4539 "name": "STRING",
4540 "type": "STRING",
4541 "slot_index": 0,
4542 "links": [
4543 20051
4544 ]
4545 }
4546 ],
4547 "properties": {
4548 "Node name for S&R": "RegexExtract"
4549 },
4550 "widgets_values": [
4551 "",
4552 "\"medium\":\\s*\"([^\"]*)\"",
4553 "First Group",
4554 false,
4555 false,
4556 false,
4557 1
4558 ],
4559 "widgets_values_named": {
4560 "string": "",
4561 "regex_pattern": "\"medium\":\\s*\"([^\"]*)\"",
4562 "mode": "First Group",
4563 "case_insensitive": false,
4564 "multiline": false,
4565 "dotall": false,
4566 "group_index": 1
4567 }
4568 },
4569 {
4570 "id": 206,
4571 "type": "RegexExtract",
4572 "pos": [
4573 -310,
4574 1630
4575 ],
4576 "size": [
4577 330,
4578 270
4579 ],
4580 "flags": [],
4581 "order": 7,
4582 "mode": 0,
4583 "inputs": [
4584 {
4585 "localized_name": "string",
4586 "name": "string",
4587 "type": "STRING",
4588 "widget": {
4589 "name": "string"
4590 },
4591 "link": 20006
4592 }
4593 ],
4594 "outputs": [
4595 {
4596 "localized_name": "STRING",
4597 "name": "STRING",
4598 "type": "STRING",
4599 "slot_index": 0,
4600 "links": [
4601 20052
4602 ]
4603 }
4604 ],
4605 "properties": {
4606 "Node name for S&R": "RegexExtract"
4607 },
4608 "widgets_values": [
4609 "",
4610 "\"(?:art_style|photo)\":\\s*\"([^\"]*)\"",
4611 "First Group",
4612 false,
4613 false,
4614 false,
4615 1
4616 ],
4617 "widgets_values_named": {
4618 "string": "",
4619 "regex_pattern": "\"(?:art_style|photo)\":\\s*\"([^\"]*)\"",
4620 "mode": "First Group",
4621 "case_insensitive": false,
4622 "multiline": false,
4623 "dotall": false,
4624 "group_index": 1
4625 }
4626 },
4627 {
4628 "id": 207,
4629 "type": "RegexExtract",
4630 "pos": [
4631 -310,
4632 1980
4633 ],
4634 "size": [
4635 330,
4636 270
4637 ],
4638 "flags": [],
4639 "order": 8,
4640 "mode": 0,
4641 "inputs": [
4642 {
4643 "localized_name": "string",
4644 "name": "string",
4645 "type": "STRING",
4646 "widget": {
4647 "name": "string"
4648 },
4649 "link": 20007
4650 }
4651 ],
4652 "outputs": [
4653 {
4654 "localized_name": "STRING",
4655 "name": "STRING",
4656 "type": "STRING",
4657 "slot_index": 0,
4658 "links": [
4659 20053
4660 ]
4661 }
4662 ],
4663 "properties": {
4664 "Node name for S&R": "RegexExtract"
4665 },
4666 "widgets_values": [
4667 "",
4668 "\"aesthetics\":\\s*\"([^\"]*)\"",
4669 "First Group",
4670 false,
4671 false,
4672 false,
4673 1
4674 ],
4675 "widgets_values_named": {
4676 "string": "",
4677 "regex_pattern": "\"aesthetics\":\\s*\"([^\"]*)\"",
4678 "mode": "First Group",
4679 "case_insensitive": false,
4680 "multiline": false,
4681 "dotall": false,
4682 "group_index": 1
4683 }
4684 },
4685 {
4686 "id": 208,
4687 "type": "RegexExtract",
4688 "pos": [
4689 -310,
4690 2660
4691 ],
4692 "size": [
4693 330,
4694 270
4695 ],
4696 "flags": [],
4697 "order": 9,
4698 "mode": 0,
4699 "inputs": [
4700 {
4701 "localized_name": "string",
4702 "name": "string",
4703 "type": "STRING",
4704 "widget": {
4705 "name": "string"
4706 },
4707 "link": 20008
4708 }
4709 ],
4710 "outputs": [
4711 {
4712 "localized_name": "STRING",
4713 "name": "STRING",
4714 "type": "STRING",
4715 "slot_index": 0,
4716 "links": [
4717 20055
4718 ]
4719 }
4720 ],
4721 "properties": {
4722 "Node name for S&R": "RegexExtract"
4723 },
4724 "widgets_values": [
4725 "",
4726 "\"background\":\\s*\"([^\"]*)\"",
4727 "First Group",
4728 false,
4729 false,
4730 false,
4731 1
4732 ],
4733 "widgets_values_named": {
4734 "string": "",
4735 "regex_pattern": "\"background\":\\s*\"([^\"]*)\"",
4736 "mode": "First Group",
4737 "case_insensitive": false,
4738 "multiline": false,
4739 "dotall": false,
4740 "group_index": 1
4741 }
4742 },
4743 {
4744 "id": 209,
4745 "type": "RegexExtract",
4746 "pos": [
4747 -310,
4748 3000
4749 ],
4750 "size": [
4751 330,
4752 270
4753 ],
4754 "flags": [],
4755 "order": 10,
4756 "mode": 0,
4757 "inputs": [
4758 {
4759 "localized_name": "string",
4760 "name": "string",
4761 "type": "STRING",
4762 "widget": {
4763 "name": "string"
4764 },
4765 "link": 20009
4766 }
4767 ],
4768 "outputs": [
4769 {
4770 "localized_name": "STRING",
4771 "name": "STRING",
4772 "type": "STRING",
4773 "slot_index": 0,
4774 "links": [
4775 20010
4776 ]
4777 }
4778 ],
4779 "properties": {
4780 "Node name for S&R": "RegexExtract"
4781 },
4782 "widgets_values": [
4783 "",
4784 "\"color_palette\":\\s*(\\[[^\\]]*\\])",
4785 "First Group",
4786 false,
4787 false,
4788 false,
4789 1
4790 ],
4791 "widgets_values_named": {
4792 "string": "",
4793 "regex_pattern": "\"color_palette\":\\s*(\\[[^\\]]*\\])",
4794 "mode": "First Group",
4795 "case_insensitive": false,
4796 "multiline": false,
4797 "dotall": false,
4798 "group_index": 1
4799 }
4800 },
4801 {
4802 "id": 210,
4803 "type": "RegexReplace",
4804 "pos": [
4805 190,
4806 2950
4807 ],
4808 "size": [
4809 330,
4810 300
4811 ],
4812 "flags": [],
4813 "order": 11,
4814 "mode": 0,
4815 "inputs": [
4816 {
4817 "localized_name": "string",
4818 "name": "string",
4819 "type": "STRING",
4820 "widget": {
4821 "name": "string"
4822 },
4823 "link": 20010
4824 }
4825 ],
4826 "outputs": [
4827 {
4828 "localized_name": "STRING",
4829 "name": "STRING",
4830 "type": "STRING",
4831 "slot_index": 0,
4832 "links": [
4833 20057
4834 ]
4835 }
4836 ],
4837 "properties": {
4838 "Node name for S&R": "RegexReplace"
4839 },
4840 "widgets_values": [
4841 "",
4842 "^$",
4843 "[]",
4844 true,
4845 false,
4846 false,
4847 0
4848 ],
4849 "widgets_values_named": {
4850 "string": "",
4851 "regex_pattern": "^$",
4852 "replace": "[]",
4853 "case_insensitive": true,
4854 "multiline": false,
4855 "dotall": false,
4856 "count": 0
4857 }
4858 },
4859 {
4860 "id": 211,
4861 "type": "StringFormat",
4862 "pos": [
4863 180,
4864 1630
4865 ],
4866 "size": [
4867 360,
4868 170
4869 ],
4870 "flags": [],
4871 "order": 12,
4872 "mode": 0,
4873 "inputs": [
4874 {
4875 "localized_name": "a",
4876 "name": "values.a",
4877 "shape": 7,
4878 "type": "*",
4879 "link": 20051
4880 },
4881 {
4882 "localized_name": "b",
4883 "name": "values.b",
4884 "shape": 7,
4885 "type": "*",
4886 "link": 20052
4887 },
4888 {
4889 "localized_name": "c",
4890 "name": "values.c",
4891 "shape": 7,
4892 "type": "*",
4893 "link": 20053
4894 },
4895 {
4896 "localized_name": "d",
4897 "name": "values.d",
4898 "shape": 7,
4899 "type": "*",
4900 "link": null
4901 }
4902 ],
4903 "outputs": [
4904 {
4905 "localized_name": "STRING",
4906 "name": "STRING",
4907 "type": "STRING",
4908 "slot_index": 0,
4909 "links": [
4910 20069
4911 ]
4912 }
4913 ],
4914 "properties": {
4915 "Node name for S&R": "StringFormat"
4916 },
4917 "widgets_values": [
4918 "{a}; {b}; aesthetics: {c}"
4919 ],
4920 "widgets_values_named": {
4921 "f_string": "{a}; {b}; aesthetics: {c}"
4922 }
4923 },
4924 {
4925 "id": 212,
4926 "type": "RegexExtract",
4927 "pos": [
4928 -310,
4929 2320
4930 ],
4931 "size": [
4932 330,
4933 270
4934 ],
4935 "flags": [],
4936 "order": 13,
4937 "mode": 0,
4938 "inputs": [
4939 {
4940 "localized_name": "string",
4941 "name": "string",
4942 "type": "STRING",
4943 "widget": {
4944 "name": "string"
4945 },
4946 "link": 20011
4947 }
4948 ],
4949 "outputs": [
4950 {
4951 "localized_name": "STRING",
4952 "name": "STRING",
4953 "type": "STRING",
4954 "slot_index": 0,
4955 "links": [
4956 20054
4957 ]
4958 }
4959 ],
4960 "properties": {
4961 "Node name for S&R": "RegexExtract"
4962 },
4963 "widgets_values": [
4964 "",
4965 "\"high_level_description\":\\s*\"([^\"]*)\"",
4966 "First Group",
4967 false,
4968 false,
4969 false,
4970 1
4971 ],
4972 "widgets_values_named": {
4973 "string": "",
4974 "regex_pattern": "\"high_level_description\":\\s*\"([^\"]*)\"",
4975 "mode": "First Group",
4976 "case_insensitive": false,
4977 "multiline": false,
4978 "dotall": false,
4979 "group_index": 1
4980 }
4981 },
4982 {
4983 "id": 213,
4984 "type": "StringFormat",
4985 "pos": [
4986 190,
4987 2350
4988 ],
4989 "size": [
4990 360,
4991 170
4992 ],
4993 "flags": [],
4994 "order": 14,
4995 "mode": 0,
4996 "inputs": [
4997 {
4998 "localized_name": "a",
4999 "name": "values.a",
5000 "shape": 7,
5001 "type": "*",
5002 "link": 20054
5003 },
5004 {
5005 "localized_name": "b",
5006 "name": "values.b",
5007 "shape": 7,
5008 "type": "*",
5009 "link": 20055
5010 },
5011 {
5012 "localized_name": "c",
5013 "name": "values.c",
5014 "shape": 7,
5015 "type": "*",
5016 "link": null
5017 }
5018 ],
5019 "outputs": [
5020 {
5021 "localized_name": "STRING",
5022 "name": "STRING",
5023 "type": "STRING",
5024 "slot_index": 0,
5025 "links": [
5026 20012
5027 ]
5028 }
5029 ],
5030 "properties": {
5031 "Node name for S&R": "StringFormat"
5032 },
5033 "widgets_values": [
5034 "{a} {b}"
5035 ],
5036 "widgets_values_named": {
5037 "f_string": "{a} {b}"
5038 }
5039 },
5040 {
5041 "id": 214,
5042 "type": "RegexReplace",
5043 "pos": [
5044 650,
5045 2350
5046 ],
5047 "size": [
5048 330,
5049 300
5050 ],
5051 "flags": [],
5052 "order": 15,
5053 "mode": 0,
5054 "inputs": [
5055 {
5056 "localized_name": "string",
5057 "name": "string",
5058 "type": "STRING",
5059 "widget": {
5060 "name": "string"
5061 },
5062 "link": 20012
5063 }
5064 ],
5065 "outputs": [
5066 {
5067 "localized_name": "STRING",
5068 "name": "STRING",
5069 "type": "STRING",
5070 "slot_index": 0,
5071 "links": [
5072 20056
5073 ]
5074 }
5075 ],
5076 "properties": {
5077 "Node name for S&R": "RegexReplace"
5078 },
5079 "widgets_values": [
5080 "",
5081 "\"",
5082 "\\\"",
5083 true,
5084 false,
5085 false,
5086 0
5087 ],
5088 "widgets_values_named": {
5089 "string": "",
5090 "regex_pattern": "\"",
5091 "replace": "\\\"",
5092 "case_insensitive": true,
5093 "multiline": false,
5094 "dotall": false,
5095 "count": 0
5096 }
5097 },
5098 {
5099 "id": 215,
5100 "type": "StringFormat",
5101 "pos": [
5102 1090,
5103 2550
5104 ],
5105 "size": [
5106 330,
5107 200
5108 ],
5109 "flags": [],
5110 "order": 16,
5111 "mode": 0,
5112 "inputs": [
5113 {
5114 "localized_name": "a",
5115 "name": "values.a",
5116 "shape": 7,
5117 "type": "*",
5118 "link": 20056
5119 },
5120 {
5121 "localized_name": "b",
5122 "name": "values.b",
5123 "shape": 7,
5124 "type": "*",
5125 "link": 20057
5126 },
5127 {
5128 "localized_name": "c",
5129 "name": "values.c",
5130 "shape": 7,
5131 "type": "*",
5132 "link": null
5133 }
5134 ],
5135 "outputs": [
5136 {
5137 "localized_name": "STRING",
5138 "name": "STRING",
5139 "type": "STRING",
5140 "slot_index": 0,
5141 "links": [
5142 20036
5143 ]
5144 }
5145 ],
5146 "title": "Format Text (base layer, whole canvas)",
5147 "properties": {
5148 "Node name for S&R": "StringFormat"
5149 },
5150 "widgets_values": [
5151 " {{\"description\": \"{a}\", \"coordinates\": \"cx: 0.500, cy: 0.500, w: 1.000, h: 1.000\", \"hierarchy_and_relation\": \"Base layer: fills the whole canvas, behind every other layer.\", \"color_specs\": {b}}}"
5152 ],
5153 "widgets_values_named": {
5154 "f_string": " {{\"description\": \"{a}\", \"coordinates\": \"cx: 0.500, cy: 0.500, w: 1.000, h: 1.000\", \"hierarchy_and_relation\": \"Base layer: fills the whole canvas, behind every other layer.\", \"color_specs\": {b}}}"
5155 }
5156 },
5157 {
5158 "id": 216,
5159 "type": "CreateList",
5160 "pos": [
5161 1700,
5162 2600
5163 ],
5164 "size": [
5165 310,
5166 160
5167 ],
5168 "flags": [],
5169 "order": 17,
5170 "mode": 0,
5171 "inputs": [
5172 {
5173 "localized_name": "input0",
5174 "name": "inputs.input0",
5175 "type": "*",
5176 "link": 20036
5177 },
5178 {
5179 "localized_name": "input1",
5180 "name": "inputs.input1",
5181 "shape": 7,
5182 "type": "*",
5183 "link": 20037
5184 },
5185 {
5186 "localized_name": "input2",
5187 "name": "inputs.input2",
5188 "shape": 7,
5189 "type": "*",
5190 "link": null
5191 }
5192 ],
5193 "outputs": [
5194 {
5195 "localized_name": "list",
5196 "name": "list",
5197 "shape": 6,
5198 "type": "*",
5199 "slot_index": 0,
5200 "links": [
5201 20038
5202 ]
5203 }
5204 ],
5205 "title": "Create List (seed = base layer + queue)",
5206 "properties": {
5207 "Node name for S&R": "CreateList"
5208 },
5209 "color": "#233",
5210 "bgcolor": "#355"
5211 },
5212 {
5213 "id": 217,
5214 "type": "StartLoop",
5215 "pos": [
5216 2110,
5217 2590
5218 ],
5219 "size": [
5220 320,
5221 240
5222 ],
5223 "flags": [],
5224 "order": 18,
5225 "mode": 0,
5226 "inputs": [
5227 {
5228 "localized_name": "parent_iteration",
5229 "name": "parent_iteration",
5230 "shape": 7,
5231 "type": "INT",
5232 "link": null
5233 },
5234 {
5235 "localized_name": "initial_iteration_value",
5236 "name": "initial_iteration_value",
5237 "shape": 7,
5238 "type": "*",
5239 "link": 20038
5240 }
5241 ],
5242 "outputs": [
5243 {
5244 "localized_name": "iteration_index",
5245 "name": "iteration_index",
5246 "type": "INT",
5247 "slot_index": 0,
5248 "links": []
5249 },
5250 {
5251 "localized_name": "is_first",
5252 "name": "is_first",
5253 "type": "BOOLEAN",
5254 "slot_index": 1,
5255 "links": []
5256 },
5257 {
5258 "localized_name": "is_last",
5259 "name": "is_last",
5260 "type": "BOOLEAN",
5261 "slot_index": 2,
5262 "links": []
5263 },
5264 {
5265 "localized_name": "list_item",
5266 "name": "list_item",
5267 "type": "*",
5268 "slot_index": 3,
5269 "links": []
5270 },
5271 {
5272 "localized_name": "current_iteration_value",
5273 "name": "current_iteration_value",
5274 "type": "*",
5275 "slot_index": 4,
5276 "links": [
5277 20013,
5278 20014
5279 ]
5280 }
5281 ],
5282 "title": "Start Loop (one iteration per box)",
5283 "properties": {
5284 "Node name for S&R": "StartLoop"
5285 },
5286 "widgets_values": [
5287 "For",
5288 0,
5289 12,
5290 1,
5291 false
5292 ],
5293 "widgets_values_named": {
5294 "mode": "For",
5295 "mode.start_iteration_index": 0,
5296 "mode.max_iteration": 12,
5297 "mode.step": 1,
5298 "cache_iterations": false
5299 },
5300 "color": "#323",
5301 "bgcolor": "#535"
5302 },
5303 {
5304 "id": 218,
5305 "type": "GetItemFromList",
5306 "pos": [
5307 2610,
5308 2670
5309 ],
5310 "size": [
5311 260,
5312 90
5313 ],
5314 "flags": [],
5315 "order": 19,
5316 "mode": 0,
5317 "inputs": [
5318 {
5319 "localized_name": "list",
5320 "name": "list",
5321 "type": "*",
5322 "link": 20013
5323 }
5324 ],
5325 "outputs": [
5326 {
5327 "localized_name": "*",
5328 "name": "*",
5329 "type": "*",
5330 "slot_index": 0,
5331 "links": [
5332 20066
5333 ]
5334 }
5335 ],
5336 "title": "Get Item From List (layers so far)",
5337 "properties": {
5338 "Node name for S&R": "GetItemFromList"
5339 },
5340 "widgets_values": [
5341 0
5342 ],
5343 "widgets_values_named": {
5344 "index": 0
5345 },
5346 "color": "#233",
5347 "bgcolor": "#355"
5348 },
5349 {
5350 "id": 219,
5351 "type": "GetItemFromList",
5352 "pos": [
5353 2600,
5354 3450
5355 ],
5356 "size": [
5357 290,
5358 90
5359 ],
5360 "flags": [],
5361 "order": 20,
5362 "mode": 0,
5363 "inputs": [
5364 {
5365 "localized_name": "list",
5366 "name": "list",
5367 "type": "*",
5368 "link": 20014
5369 }
5370 ],
5371 "outputs": [
5372 {
5373 "localized_name": "*",
5374 "name": "*",
5375 "type": "*",
5376 "slot_index": 0,
5377 "links": [
5378 20015,
5379 20031
5380 ]
5381 }
5382 ],
5383 "title": "Get Item From List (remaining boxes)",
5384 "properties": {
5385 "Node name for S&R": "GetItemFromList"
5386 },
5387 "widgets_values": [
5388 1
5389 ],
5390 "widgets_values_named": {
5391 "index": 1
5392 },
5393 "color": "#233",
5394 "bgcolor": "#355"
5395 },
5396 {
5397 "id": 220,
5398 "type": "RegexExtract",
5399 "pos": [
5400 3050,
5401 3450
5402 ],
5403 "size": [
5404 330,
5405 270
5406 ],
5407 "flags": [],
5408 "order": 21,
5409 "mode": 0,
5410 "inputs": [
5411 {
5412 "localized_name": "string",
5413 "name": "string",
5414 "type": "STRING",
5415 "widget": {
5416 "name": "string"
5417 },
5418 "link": 20015
5419 }
5420 ],
5421 "outputs": [
5422 {
5423 "localized_name": "STRING",
5424 "name": "STRING",
5425 "type": "STRING",
5426 "slot_index": 0,
5427 "links": [
5428 20016,
5429 20017,
5430 20018,
5431 20019,
5432 20024,
5433 20026,
5434 20029
5435 ]
5436 }
5437 ],
5438 "title": "Extract Text (next box)",
5439 "properties": {
5440 "Node name for S&R": "RegexExtract"
5441 },
5442 "widgets_values": [
5443 "",
5444 "\\{[^{}]*\\}",
5445 "First Match",
5446 false,
5447 false,
5448 false,
5449 0
5450 ],
5451 "widgets_values_named": {
5452 "string": "",
5453 "regex_pattern": "\\{[^{}]*\\}",
5454 "mode": "First Match",
5455 "case_insensitive": false,
5456 "multiline": false,
5457 "dotall": false,
5458 "group_index": 0
5459 }
5460 },
5461 {
5462 "id": 221,
5463 "type": "RegexExtract",
5464 "pos": [
5465 3710,
5466 4310
5467 ],
5468 "size": [
5469 330,
5470 270
5471 ],
5472 "flags": [],
5473 "order": 22,
5474 "mode": 0,
5475 "inputs": [
5476 {
5477 "localized_name": "string",
5478 "name": "string",
5479 "type": "STRING",
5480 "widget": {
5481 "name": "string"
5482 },
5483 "link": 20016
5484 }
5485 ],
5486 "outputs": [
5487 {
5488 "localized_name": "STRING",
5489 "name": "STRING",
5490 "type": "STRING",
5491 "slot_index": 0,
5492 "links": [
5493 20020
5494 ]
5495 }
5496 ],
5497 "properties": {
5498 "Node name for S&R": "RegexExtract"
5499 },
5500 "widgets_values": [
5501 "",
5502 "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5503 "First Group",
5504 false,
5505 false,
5506 false,
5507 1
5508 ],
5509 "widgets_values_named": {
5510 "string": "",
5511 "regex_pattern": "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5512 "mode": "First Group",
5513 "case_insensitive": false,
5514 "multiline": false,
5515 "dotall": false,
5516 "group_index": 1
5517 }
5518 },
5519 {
5520 "id": 222,
5521 "type": "RegexExtract",
5522 "pos": [
5523 3710,
5524 4610
5525 ],
5526 "size": [
5527 330,
5528 270
5529 ],
5530 "flags": [],
5531 "order": 23,
5532 "mode": 0,
5533 "inputs": [
5534 {
5535 "localized_name": "string",
5536 "name": "string",
5537 "type": "STRING",
5538 "widget": {
5539 "name": "string"
5540 },
5541 "link": 20017
5542 }
5543 ],
5544 "outputs": [
5545 {
5546 "localized_name": "STRING",
5547 "name": "STRING",
5548 "type": "STRING",
5549 "slot_index": 0,
5550 "links": [
5551 20021
5552 ]
5553 }
5554 ],
5555 "properties": {
5556 "Node name for S&R": "RegexExtract"
5557 },
5558 "widgets_values": [
5559 "",
5560 "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5561 "First Group",
5562 false,
5563 false,
5564 false,
5565 2
5566 ],
5567 "widgets_values_named": {
5568 "string": "",
5569 "regex_pattern": "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5570 "mode": "First Group",
5571 "case_insensitive": false,
5572 "multiline": false,
5573 "dotall": false,
5574 "group_index": 2
5575 }
5576 },
5577 {
5578 "id": 223,
5579 "type": "RegexExtract",
5580 "pos": [
5581 3710,
5582 4910
5583 ],
5584 "size": [
5585 330,
5586 270
5587 ],
5588 "flags": [],
5589 "order": 24,
5590 "mode": 0,
5591 "inputs": [
5592 {
5593 "localized_name": "string",
5594 "name": "string",
5595 "type": "STRING",
5596 "widget": {
5597 "name": "string"
5598 },
5599 "link": 20018
5600 }
5601 ],
5602 "outputs": [
5603 {
5604 "localized_name": "STRING",
5605 "name": "STRING",
5606 "type": "STRING",
5607 "slot_index": 0,
5608 "links": [
5609 20022
5610 ]
5611 }
5612 ],
5613 "properties": {
5614 "Node name for S&R": "RegexExtract"
5615 },
5616 "widgets_values": [
5617 "",
5618 "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5619 "First Group",
5620 false,
5621 false,
5622 false,
5623 3
5624 ],
5625 "widgets_values_named": {
5626 "string": "",
5627 "regex_pattern": "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5628 "mode": "First Group",
5629 "case_insensitive": false,
5630 "multiline": false,
5631 "dotall": false,
5632 "group_index": 3
5633 }
5634 },
5635 {
5636 "id": 224,
5637 "type": "RegexExtract",
5638 "pos": [
5639 3710,
5640 5210
5641 ],
5642 "size": [
5643 330,
5644 270
5645 ],
5646 "flags": [],
5647 "order": 25,
5648 "mode": 0,
5649 "inputs": [
5650 {
5651 "localized_name": "string",
5652 "name": "string",
5653 "type": "STRING",
5654 "widget": {
5655 "name": "string"
5656 },
5657 "link": 20019
5658 }
5659 ],
5660 "outputs": [
5661 {
5662 "localized_name": "STRING",
5663 "name": "STRING",
5664 "type": "STRING",
5665 "slot_index": 0,
5666 "links": [
5667 20023
5668 ]
5669 }
5670 ],
5671 "properties": {
5672 "Node name for S&R": "RegexExtract"
5673 },
5674 "widgets_values": [
5675 "",
5676 "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5677 "First Group",
5678 false,
5679 false,
5680 false,
5681 4
5682 ],
5683 "widgets_values_named": {
5684 "string": "",
5685 "regex_pattern": "\"bbox\":\\s*\\[\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\]",
5686 "mode": "First Group",
5687 "case_insensitive": false,
5688 "multiline": false,
5689 "dotall": false,
5690 "group_index": 4
5691 }
5692 },
5693 {
5694 "id": 225,
5695 "type": "ComfyNumberConvert",
5696 "pos": [
5697 4160,
5698 4310
5699 ],
5700 "size": [
5701 230,
5702 80
5703 ],
5704 "flags": [],
5705 "order": 26,
5706 "mode": 0,
5707 "inputs": [
5708 {
5709 "localized_name": "value",
5710 "name": "value",
5711 "type": "INT,FLOAT,STRING,BOOLEAN",
5712 "link": 20020
5713 }
5714 ],
5715 "outputs": [
5716 {
5717 "localized_name": "FLOAT",
5718 "name": "FLOAT",
5719 "type": "FLOAT",
5720 "slot_index": 0,
5721 "links": [
5722 20039,
5723 20045
5724 ]
5725 },
5726 {
5727 "localized_name": "INT",
5728 "name": "INT",
5729 "type": "INT",
5730 "slot_index": 1,
5731 "links": []
5732 }
5733 ],
5734 "properties": {
5735 "Node name for S&R": "ComfyNumberConvert"
5736 },
5737 "color": "#332",
5738 "bgcolor": "#553"
5739 },
5740 {
5741 "id": 226,
5742 "type": "ComfyNumberConvert",
5743 "pos": [
5744 4160,
5745 4610
5746 ],
5747 "size": [
5748 230,
5749 80
5750 ],
5751 "flags": [],
5752 "order": 27,
5753 "mode": 0,
5754 "inputs": [
5755 {
5756 "localized_name": "value",
5757 "name": "value",
5758 "type": "INT,FLOAT,STRING,BOOLEAN",
5759 "link": 20021
5760 }
5761 ],
5762 "outputs": [
5763 {
5764 "localized_name": "FLOAT",
5765 "name": "FLOAT",
5766 "type": "FLOAT",
5767 "slot_index": 0,
5768 "links": [
5769 20041,
5770 20043
5771 ]
5772 },
5773 {
5774 "localized_name": "INT",
5775 "name": "INT",
5776 "type": "INT",
5777 "slot_index": 1,
5778 "links": []
5779 }
5780 ],
5781 "properties": {
5782 "Node name for S&R": "ComfyNumberConvert"
5783 },
5784 "color": "#332",
5785 "bgcolor": "#553"
5786 },
5787 {
5788 "id": 227,
5789 "type": "ComfyNumberConvert",
5790 "pos": [
5791 4160,
5792 4910
5793 ],
5794 "size": [
5795 230,
5796 80
5797 ],
5798 "flags": [],
5799 "order": 28,
5800 "mode": 0,
5801 "inputs": [
5802 {
5803 "localized_name": "value",
5804 "name": "value",
5805 "type": "INT,FLOAT,STRING,BOOLEAN",
5806 "link": 20022
5807 }
5808 ],
5809 "outputs": [
5810 {
5811 "localized_name": "FLOAT",
5812 "name": "FLOAT",
5813 "type": "FLOAT",
5814 "slot_index": 0,
5815 "links": [
5816 20040,
5817 20046
5818 ]
5819 },
5820 {
5821 "localized_name": "INT",
5822 "name": "INT",
5823 "type": "INT",
5824 "slot_index": 1,
5825 "links": []
5826 }
5827 ],
5828 "properties": {
5829 "Node name for S&R": "ComfyNumberConvert"
5830 },
5831 "color": "#332",
5832 "bgcolor": "#553"
5833 },
5834 {
5835 "id": 228,
5836 "type": "ComfyNumberConvert",
5837 "pos": [
5838 4160,
5839 5210
5840 ],
5841 "size": [
5842 230,
5843 80
5844 ],
5845 "flags": [],
5846 "order": 29,
5847 "mode": 0,
5848 "inputs": [
5849 {
5850 "localized_name": "value",
5851 "name": "value",
5852 "type": "INT,FLOAT,STRING,BOOLEAN",
5853 "link": 20023
5854 }
5855 ],
5856 "outputs": [
5857 {
5858 "localized_name": "FLOAT",
5859 "name": "FLOAT",
5860 "type": "FLOAT",
5861 "slot_index": 0,
5862 "links": [
5863 20042,
5864 20044
5865 ]
5866 },
5867 {
5868 "localized_name": "INT",
5869 "name": "INT",
5870 "type": "INT",
5871 "slot_index": 1,
5872 "links": []
5873 }
5874 ],
5875 "properties": {
5876 "Node name for S&R": "ComfyNumberConvert"
5877 },
5878 "color": "#332",
5879 "bgcolor": "#553"
5880 },
5881 {
5882 "id": 229,
5883 "type": "ComfyMathExpression",
5884 "pos": [
5885 4610,
5886 4310
5887 ],
5888 "size": [
5889 300,
5890 150
5891 ],
5892 "flags": [],
5893 "order": 30,
5894 "mode": 0,
5895 "inputs": [
5896 {
5897 "localized_name": "a",
5898 "name": "values.a",
5899 "type": "FLOAT,INT,BOOLEAN",
5900 "link": 20039
5901 },
5902 {
5903 "localized_name": "b",
5904 "name": "values.b",
5905 "shape": 7,
5906 "type": "FLOAT,INT,BOOLEAN",
5907 "link": 20040
5908 },
5909 {
5910 "localized_name": "c",
5911 "name": "values.c",
5912 "shape": 7,
5913 "type": "FLOAT,INT,BOOLEAN",
5914 "link": null
5915 }
5916 ],
5917 "outputs": [
5918 {
5919 "localized_name": "FLOAT",
5920 "name": "FLOAT",
5921 "type": "FLOAT",
5922 "slot_index": 0,
5923 "links": [
5924 20059
5925 ]
5926 },
5927 {
5928 "localized_name": "INT",
5929 "name": "INT",
5930 "type": "INT",
5931 "slot_index": 1,
5932 "links": []
5933 },
5934 {
5935 "localized_name": "BOOL",
5936 "name": "BOOL",
5937 "type": "BOOLEAN",
5938 "slot_index": 2,
5939 "links": []
5940 }
5941 ],
5942 "properties": {
5943 "Node name for S&R": "ComfyMathExpression"
5944 },
5945 "widgets_values": [
5946 "(a + b) / 2000"
5947 ],
5948 "widgets_values_named": {
5949 "expression": "(a + b) / 2000"
5950 },
5951 "color": "#332",
5952 "bgcolor": "#553"
5953 },
5954 {
5955 "id": 230,
5956 "type": "ComfyMathExpression",
5957 "pos": [
5958 4610,
5959 4610
5960 ],
5961 "size": [
5962 300,
5963 150
5964 ],
5965 "flags": [],
5966 "order": 31,
5967 "mode": 0,
5968 "inputs": [
5969 {
5970 "localized_name": "a",
5971 "name": "values.a",
5972 "type": "FLOAT,INT,BOOLEAN",
5973 "link": 20041
5974 },
5975 {
5976 "localized_name": "b",
5977 "name": "values.b",
5978 "shape": 7,
5979 "type": "FLOAT,INT,BOOLEAN",
5980 "link": 20042
5981 },
5982 {
5983 "localized_name": "c",
5984 "name": "values.c",
5985 "shape": 7,
5986 "type": "FLOAT,INT,BOOLEAN",
5987 "link": null
5988 }
5989 ],
5990 "outputs": [
5991 {
5992 "localized_name": "FLOAT",
5993 "name": "FLOAT",
5994 "type": "FLOAT",
5995 "slot_index": 0,
5996 "links": [
5997 20058
5998 ]
5999 },
6000 {
6001 "localized_name": "INT",
6002 "name": "INT",
6003 "type": "INT",
6004 "slot_index": 1,
6005 "links": []
6006 },
6007 {
6008 "localized_name": "BOOL",
6009 "name": "BOOL",
6010 "type": "BOOLEAN",
6011 "slot_index": 2,
6012 "links": []
6013 }
6014 ],
6015 "properties": {
6016 "Node name for S&R": "ComfyMathExpression"
6017 },
6018 "widgets_values": [
6019 "(a + b) / 2000"
6020 ],
6021 "widgets_values_named": {
6022 "expression": "(a + b) / 2000"
6023 },
6024 "color": "#332",
6025 "bgcolor": "#553"
6026 },
6027 {
6028 "id": 231,
6029 "type": "ComfyMathExpression",
6030 "pos": [
6031 4610,
6032 4910
6033 ],
6034 "size": [
6035 300,
6036 150
6037 ],
6038 "flags": [],
6039 "order": 32,
6040 "mode": 0,
6041 "inputs": [
6042 {
6043 "localized_name": "a",
6044 "name": "values.a",
6045 "type": "FLOAT,INT,BOOLEAN",
6046 "link": 20043
6047 },
6048 {
6049 "localized_name": "b",
6050 "name": "values.b",
6051 "shape": 7,
6052 "type": "FLOAT,INT,BOOLEAN",
6053 "link": 20044
6054 },
6055 {
6056 "localized_name": "c",
6057 "name": "values.c",
6058 "shape": 7,
6059 "type": "FLOAT,INT,BOOLEAN",
6060 "link": null
6061 }
6062 ],
6063 "outputs": [
6064 {
6065 "localized_name": "FLOAT",
6066 "name": "FLOAT",
6067 "type": "FLOAT",
6068 "slot_index": 0,
6069 "links": [
6070 20060
6071 ]
6072 },
6073 {
6074 "localized_name": "INT",
6075 "name": "INT",
6076 "type": "INT",
6077 "slot_index": 1,
6078 "links": []
6079 },
6080 {
6081 "localized_name": "BOOL",
6082 "name": "BOOL",
6083 "type": "BOOLEAN",
6084 "slot_index": 2,
6085 "links": []
6086 }
6087 ],
6088 "properties": {
6089 "Node name for S&R": "ComfyMathExpression"
6090 },
6091 "widgets_values": [
6092 "(b - a) / 1000"
6093 ],
6094 "widgets_values_named": {
6095 "expression": "(b - a) / 1000"
6096 },
6097 "color": "#332",
6098 "bgcolor": "#553"
6099 },
6100 {
6101 "id": 232,
6102 "type": "ComfyMathExpression",
6103 "pos": [
6104 4610,
6105 5210
6106 ],
6107 "size": [
6108 300,
6109 150
6110 ],
6111 "flags": [],
6112 "order": 33,
6113 "mode": 0,
6114 "inputs": [
6115 {
6116 "localized_name": "a",
6117 "name": "values.a",
6118 "type": "FLOAT,INT,BOOLEAN",
6119 "link": 20045
6120 },
6121 {
6122 "localized_name": "b",
6123 "name": "values.b",
6124 "shape": 7,
6125 "type": "FLOAT,INT,BOOLEAN",
6126 "link": 20046
6127 },
6128 {
6129 "localized_name": "c",
6130 "name": "values.c",
6131 "shape": 7,
6132 "type": "FLOAT,INT,BOOLEAN",
6133 "link": null
6134 }
6135 ],
6136 "outputs": [
6137 {
6138 "localized_name": "FLOAT",
6139 "name": "FLOAT",
6140 "type": "FLOAT",
6141 "slot_index": 0,
6142 "links": [
6143 20061
6144 ]
6145 },
6146 {
6147 "localized_name": "INT",
6148 "name": "INT",
6149 "type": "INT",
6150 "slot_index": 1,
6151 "links": []
6152 },
6153 {
6154 "localized_name": "BOOL",
6155 "name": "BOOL",
6156 "type": "BOOLEAN",
6157 "slot_index": 2,
6158 "links": []
6159 }
6160 ],
6161 "properties": {
6162 "Node name for S&R": "ComfyMathExpression"
6163 },
6164 "widgets_values": [
6165 "(b - a) / 1000"
6166 ],
6167 "widgets_values_named": {
6168 "expression": "(b - a) / 1000"
6169 },
6170 "color": "#332",
6171 "bgcolor": "#553"
6172 },
6173 {
6174 "id": 233,
6175 "type": "StringFormat",
6176 "pos": [
6177 5060,
6178 4760
6179 ],
6180 "size": [
6181 360,
6182 190
6183 ],
6184 "flags": [],
6185 "order": 34,
6186 "mode": 0,
6187 "inputs": [
6188 {
6189 "localized_name": "a",
6190 "name": "values.a",
6191 "shape": 7,
6192 "type": "*",
6193 "link": 20058
6194 },
6195 {
6196 "localized_name": "b",
6197 "name": "values.b",
6198 "shape": 7,
6199 "type": "*",
6200 "link": 20059
6201 },
6202 {
6203 "localized_name": "c",
6204 "name": "values.c",
6205 "shape": 7,
6206 "type": "*",
6207 "link": 20060
6208 },
6209 {
6210 "localized_name": "d",
6211 "name": "values.d",
6212 "shape": 7,
6213 "type": "*",
6214 "link": 20061
6215 },
6216 {
6217 "localized_name": "e",
6218 "name": "values.e",
6219 "shape": 7,
6220 "type": "*",
6221 "link": null
6222 }
6223 ],
6224 "outputs": [
6225 {
6226 "localized_name": "STRING",
6227 "name": "STRING",
6228 "type": "STRING",
6229 "slot_index": 0,
6230 "links": [
6231 20064
6232 ]
6233 }
6234 ],
6235 "title": "Format Text (Ming coordinates)",
6236 "properties": {
6237 "Node name for S&R": "StringFormat"
6238 },
6239 "widgets_values": [
6240 "cx: {a:.3f}, cy: {b:.3f}, w: {c:.3f}, h: {d:.3f}"
6241 ],
6242 "widgets_values_named": {
6243 "f_string": "cx: {a:.3f}, cy: {b:.3f}, w: {c:.3f}, h: {d:.3f}"
6244 }
6245 },
6246 {
6247 "id": 234,
6248 "type": "RegexExtract",
6249 "pos": [
6250 3710,
6251 3980
6252 ],
6253 "size": [
6254 330,
6255 270
6256 ],
6257 "flags": [],
6258 "order": 35,
6259 "mode": 0,
6260 "inputs": [
6261 {
6262 "localized_name": "string",
6263 "name": "string",
6264 "type": "STRING",
6265 "widget": {
6266 "name": "string"
6267 },
6268 "link": 20024
6269 }
6270 ],
6271 "outputs": [
6272 {
6273 "localized_name": "STRING",
6274 "name": "STRING",
6275 "type": "STRING",
6276 "slot_index": 0,
6277 "links": [
6278 20025
6279 ]
6280 }
6281 ],
6282 "properties": {
6283 "Node name for S&R": "RegexExtract"
6284 },
6285 "widgets_values": [
6286 "",
6287 "\"desc\":\\s*\"([^\"]*)\"",
6288 "First Group",
6289 false,
6290 false,
6291 false,
6292 1
6293 ],
6294 "widgets_values_named": {
6295 "string": "",
6296 "regex_pattern": "\"desc\":\\s*\"([^\"]*)\"",
6297 "mode": "First Group",
6298 "case_insensitive": false,
6299 "multiline": false,
6300 "dotall": false,
6301 "group_index": 1
6302 }
6303 },
6304 {
6305 "id": 235,
6306 "type": "RegexReplace",
6307 "pos": [
6308 4160,
6309 3980
6310 ],
6311 "size": [
6312 330,
6313 300
6314 ],
6315 "flags": [],
6316 "order": 36,
6317 "mode": 0,
6318 "inputs": [
6319 {
6320 "localized_name": "string",
6321 "name": "string",
6322 "type": "STRING",
6323 "widget": {
6324 "name": "string"
6325 },
6326 "link": 20025
6327 }
6328 ],
6329 "outputs": [
6330 {
6331 "localized_name": "STRING",
6332 "name": "STRING",
6333 "type": "STRING",
6334 "slot_index": 0,
6335 "links": [
6336 20063
6337 ]
6338 }
6339 ],
6340 "properties": {
6341 "Node name for S&R": "RegexReplace"
6342 },
6343 "widgets_values": [
6344 "",
6345 "\"",
6346 "\\\"",
6347 true,
6348 false,
6349 false,
6350 0
6351 ],
6352 "widgets_values_named": {
6353 "string": "",
6354 "regex_pattern": "\"",
6355 "replace": "\\\"",
6356 "case_insensitive": true,
6357 "multiline": false,
6358 "dotall": false,
6359 "count": 0
6360 }
6361 },
6362 {
6363 "id": 236,
6364 "type": "RegexExtract",
6365 "pos": [
6366 3710,
6367 3660
6368 ],
6369 "size": [
6370 330,
6371 270
6372 ],
6373 "flags": [],
6374 "order": 37,
6375 "mode": 0,
6376 "inputs": [
6377 {
6378 "localized_name": "string",
6379 "name": "string",
6380 "type": "STRING",
6381 "widget": {
6382 "name": "string"
6383 },
6384 "link": 20026
6385 }
6386 ],
6387 "outputs": [
6388 {
6389 "localized_name": "STRING",
6390 "name": "STRING",
6391 "type": "STRING",
6392 "slot_index": 0,
6393 "links": [
6394 20047
6395 ]
6396 }
6397 ],
6398 "properties": {
6399 "Node name for S&R": "RegexExtract"
6400 },
6401 "widgets_values": [
6402 "",
6403 "\"text\":\\s*\"([^\"]*)\"",
6404 "First Group",
6405 false,
6406 false,
6407 false,
6408 1
6409 ],
6410 "widgets_values_named": {
6411 "string": "",
6412 "regex_pattern": "\"text\":\\s*\"([^\"]*)\"",
6413 "mode": "First Group",
6414 "case_insensitive": false,
6415 "multiline": false,
6416 "dotall": false,
6417 "group_index": 1
6418 }
6419 },
6420 {
6421 "id": 237,
6422 "type": "StringFormat",
6423 "pos": [
6424 4160,
6425 3660
6426 ],
6427 "size": [
6428 360,
6429 170
6430 ],
6431 "flags": [],
6432 "order": 38,
6433 "mode": 0,
6434 "inputs": [
6435 {
6436 "localized_name": "a",
6437 "name": "values.a",
6438 "shape": 7,
6439 "type": "*",
6440 "link": 20047
6441 },
6442 {
6443 "localized_name": "b",
6444 "name": "values.b",
6445 "shape": 7,
6446 "type": "*",
6447 "link": null
6448 }
6449 ],
6450 "outputs": [
6451 {
6452 "localized_name": "STRING",
6453 "name": "STRING",
6454 "type": "STRING",
6455 "slot_index": 0,
6456 "links": [
6457 20027
6458 ]
6459 }
6460 ],
6461 "properties": {
6462 "Node name for S&R": "StringFormat"
6463 },
6464 "widgets_values": [
6465 "Text layer reading \"{a}\". "
6466 ],
6467 "widgets_values_named": {
6468 "f_string": "Text layer reading \"{a}\". "
6469 }
6470 },
6471 {
6472 "id": 238,
6473 "type": "RegexReplace",
6474 "pos": [
6475 4610,
6476 3660
6477 ],
6478 "size": [
6479 330,
6480 300
6481 ],
6482 "flags": [],
6483 "order": 39,
6484 "mode": 0,
6485 "inputs": [
6486 {
6487 "localized_name": "string",
6488 "name": "string",
6489 "type": "STRING",
6490 "widget": {
6491 "name": "string"
6492 },
6493 "link": 20027
6494 }
6495 ],
6496 "outputs": [
6497 {
6498 "localized_name": "STRING",
6499 "name": "STRING",
6500 "type": "STRING",
6501 "slot_index": 0,
6502 "links": [
6503 20028
6504 ]
6505 }
6506 ],
6507 "properties": {
6508 "Node name for S&R": "RegexReplace"
6509 },
6510 "widgets_values": [
6511 "",
6512 "Text layer reading \"\"\\.\\s*",
6513 "",
6514 true,
6515 false,
6516 false,
6517 0
6518 ],
6519 "widgets_values_named": {
6520 "string": "",
6521 "regex_pattern": "Text layer reading \"\"\\.\\s*",
6522 "replace": "",
6523 "case_insensitive": true,
6524 "multiline": false,
6525 "dotall": false,
6526 "count": 0
6527 }
6528 },
6529 {
6530 "id": 239,
6531 "type": "RegexExtract",
6532 "pos": [
6533 3710,
6534 3360
6535 ],
6536 "size": [
6537 330,
6538 270
6539 ],
6540 "flags": [],
6541 "order": 40,
6542 "mode": 0,
6543 "inputs": [
6544 {
6545 "localized_name": "string",
6546 "name": "string",
6547 "type": "STRING",
6548 "widget": {
6549 "name": "string"
6550 },
6551 "link": 20029
6552 }
6553 ],
6554 "outputs": [
6555 {
6556 "localized_name": "STRING",
6557 "name": "STRING",
6558 "type": "STRING",
6559 "slot_index": 0,
6560 "links": [
6561 20030
6562 ]
6563 }
6564 ],
6565 "properties": {
6566 "Node name for S&R": "RegexExtract"
6567 },
6568 "widgets_values": [
6569 "",
6570 "\"color_palette\":\\s*(\\[[^\\]]*\\])",
6571 "First Group",
6572 false,
6573 false,
6574 false,
6575 1
6576 ],
6577 "widgets_values_named": {
6578 "string": "",
6579 "regex_pattern": "\"color_palette\":\\s*(\\[[^\\]]*\\])",
6580 "mode": "First Group",
6581 "case_insensitive": false,
6582 "multiline": false,
6583 "dotall": false,
6584 "group_index": 1
6585 }
6586 },
6587 {
6588 "id": 240,
6589 "type": "RegexReplace",
6590 "pos": [
6591 4160,
6592 3360
6593 ],
6594 "size": [
6595 330,
6596 300
6597 ],
6598 "flags": [],
6599 "order": 41,
6600 "mode": 0,
6601 "inputs": [
6602 {
6603 "localized_name": "string",
6604 "name": "string",
6605 "type": "STRING",
6606 "widget": {
6607 "name": "string"
6608 },
6609 "link": 20030
6610 }
6611 ],
6612 "outputs": [
6613 {
6614 "localized_name": "STRING",
6615 "name": "STRING",
6616 "type": "STRING",
6617 "slot_index": 0,
6618 "links": [
6619 20065
6620 ]
6621 }
6622 ],
6623 "properties": {
6624 "Node name for S&R": "RegexReplace"
6625 },
6626 "widgets_values": [
6627 "",
6628 "^$",
6629 "[]",
6630 true,
6631 false,
6632 false,
6633 0
6634 ],
6635 "widgets_values_named": {
6636 "string": "",
6637 "regex_pattern": "^$",
6638 "replace": "[]",
6639 "case_insensitive": true,
6640 "multiline": false,
6641 "dotall": false,
6642 "count": 0
6643 }
6644 },
6645 {
6646 "id": 241,
6647 "type": "RegexReplace",
6648 "pos": [
6649 5060,
6650 3660
6651 ],
6652 "size": [
6653 330,
6654 300
6655 ],
6656 "flags": [],
6657 "order": 42,
6658 "mode": 0,
6659 "inputs": [
6660 {
6661 "localized_name": "string",
6662 "name": "string",
6663 "type": "STRING",
6664 "widget": {
6665 "name": "string"
6666 },
6667 "link": 20028
6668 }
6669 ],
6670 "outputs": [
6671 {
6672 "localized_name": "STRING",
6673 "name": "STRING",
6674 "type": "STRING",
6675 "slot_index": 0,
6676 "links": [
6677 20062
6678 ]
6679 }
6680 ],
6681 "properties": {
6682 "Node name for S&R": "RegexReplace"
6683 },
6684 "widgets_values": [
6685 "",
6686 "\"",
6687 "\\\"",
6688 true,
6689 false,
6690 false,
6691 0
6692 ],
6693 "widgets_values_named": {
6694 "string": "",
6695 "regex_pattern": "\"",
6696 "replace": "\\\"",
6697 "case_insensitive": true,
6698 "multiline": false,
6699 "dotall": false,
6700 "count": 0
6701 }
6702 },
6703 {
6704 "id": 242,
6705 "type": "StringFormat",
6706 "pos": [
6707 5630,
6708 4160
6709 ],
6710 "size": [
6711 360,
6712 190
6713 ],
6714 "flags": [],
6715 "order": 43,
6716 "mode": 0,
6717 "inputs": [
6718 {
6719 "localized_name": "a",
6720 "name": "values.a",
6721 "shape": 7,
6722 "type": "*",
6723 "link": 20062
6724 },
6725 {
6726 "localized_name": "b",
6727 "name": "values.b",
6728 "shape": 7,
6729 "type": "*",
6730 "link": 20063
6731 },
6732 {
6733 "localized_name": "c",
6734 "name": "values.c",
6735 "shape": 7,
6736 "type": "*",
6737 "link": 20064
6738 },
6739 {
6740 "localized_name": "d",
6741 "name": "values.d",
6742 "shape": 7,
6743 "type": "*",
6744 "link": 20065
6745 },
6746 {
6747 "localized_name": "e",
6748 "name": "values.e",
6749 "shape": 7,
6750 "type": "*",
6751 "link": null
6752 }
6753 ],
6754 "outputs": [
6755 {
6756 "localized_name": "STRING",
6757 "name": "STRING",
6758 "type": "STRING",
6759 "slot_index": 0,
6760 "links": [
6761 20067
6762 ]
6763 }
6764 ],
6765 "title": "Format Text (this box as a Ming layer)",
6766 "properties": {
6767 "Node name for S&R": "StringFormat"
6768 },
6769 "widgets_values": [
6770 " {{\"description\": \"{a}{b}\", \"coordinates\": \"{c}\", \"hierarchy_and_relation\": \"Sits above the layers listed before it.\", \"color_specs\": {d}}}"
6771 ],
6772 "widgets_values_named": {
6773 "f_string": " {{\"description\": \"{a}{b}\", \"coordinates\": \"{c}\", \"hierarchy_and_relation\": \"Sits above the layers listed before it.\", \"color_specs\": {d}}}"
6774 }
6775 },
6776 {
6777 "id": 243,
6778 "type": "StringFormat",
6779 "pos": [
6780 6320,
6781 2550
6782 ],
6783 "size": [
6784 360,
6785 170
6786 ],
6787 "flags": [],
6788 "order": 44,
6789 "mode": 0,
6790 "inputs": [
6791 {
6792 "localized_name": "a",
6793 "name": "values.a",
6794 "shape": 7,
6795 "type": "*",
6796 "link": 20066
6797 },
6798 {
6799 "localized_name": "b",
6800 "name": "values.b",
6801 "shape": 7,
6802 "type": "*",
6803 "link": 20067
6804 },
6805 {
6806 "localized_name": "c",
6807 "name": "values.c",
6808 "shape": 7,
6809 "type": "*",
6810 "link": null
6811 }
6812 ],
6813 "outputs": [
6814 {
6815 "localized_name": "STRING",
6816 "name": "STRING",
6817 "type": "STRING",
6818 "slot_index": 0,
6819 "links": [
6820 20048,
6821 20050
6822 ]
6823 }
6824 ],
6825 "title": "Format Text (layers + this layer)",
6826 "properties": {
6827 "Node name for S&R": "StringFormat"
6828 },
6829 "widgets_values": [
6830 "{a},\n{b}"
6831 ],
6832 "widgets_values_named": {
6833 "f_string": "{a},\n{b}"
6834 }
6835 },
6836 {
6837 "id": 244,
6838 "type": "RegexReplace",
6839 "pos": [
6840 3040,
6841 3060
6842 ],
6843 "size": [
6844 340,
6845 300
6846 ],
6847 "flags": [],
6848 "order": 45,
6849 "mode": 0,
6850 "inputs": [
6851 {
6852 "localized_name": "string",
6853 "name": "string",
6854 "type": "STRING",
6855 "widget": {
6856 "name": "string"
6857 },
6858 "link": 20031
6859 }
6860 ],
6861 "outputs": [
6862 {
6863 "localized_name": "STRING",
6864 "name": "STRING",
6865 "type": "STRING",
6866 "slot_index": 0,
6867 "links": [
6868 20049
6869 ]
6870 }
6871 ],
6872 "title": "Replace Text (Regex) (queue minus this box)",
6873 "properties": {
6874 "Node name for S&R": "RegexReplace"
6875 },
6876 "widgets_values": [
6877 "",
6878 "^\\s*\\[?\\s*\\{[^{}]*\\}\\s*,?",
6879 "",
6880 true,
6881 false,
6882 false,
6883 0
6884 ],
6885 "widgets_values_named": {
6886 "string": "",
6887 "regex_pattern": "^\\s*\\[?\\s*\\{[^{}]*\\}\\s*,?",
6888 "replace": "",
6889 "case_insensitive": true,
6890 "multiline": false,
6891 "dotall": false,
6892 "count": 0
6893 }
6894 },
6895 {
6896 "id": 245,
6897 "type": "CreateList",
6898 "pos": [
6899 6800,
6900 3350
6901 ],
6902 "size": [
6903 240,
6904 160
6905 ],
6906 "flags": [],
6907 "order": 46,
6908 "mode": 0,
6909 "inputs": [
6910 {
6911 "localized_name": "input0",
6912 "name": "inputs.input0",
6913 "type": "*",
6914 "link": 20048
6915 },
6916 {
6917 "localized_name": "input1",
6918 "name": "inputs.input1",
6919 "shape": 7,
6920 "type": "*",
6921 "link": 20049
6922 },
6923 {
6924 "localized_name": "input2",
6925 "name": "inputs.input2",
6926 "shape": 7,
6927 "type": "*",
6928 "link": null
6929 }
6930 ],
6931 "outputs": [
6932 {
6933 "localized_name": "list",
6934 "name": "list",
6935 "shape": 6,
6936 "type": "*",
6937 "slot_index": 0,
6938 "links": [
6939 20033
6940 ]
6941 }
6942 ],
6943 "properties": {
6944 "Node name for S&R": "CreateList"
6945 },
6946 "color": "#233",
6947 "bgcolor": "#355"
6948 },
6949 {
6950 "id": 246,
6951 "type": "CreateList",
6952 "pos": [
6953 6800,
6954 2550
6955 ],
6956 "size": [
6957 240,
6958 160
6959 ],
6960 "flags": [],
6961 "order": 47,
6962 "mode": 0,
6963 "inputs": [
6964 {
6965 "localized_name": "input0",
6966 "name": "inputs.input0",
6967 "type": "*",
6968 "link": 20050
6969 },
6970 {
6971 "localized_name": "input1",
6972 "name": "inputs.input1",
6973 "shape": 7,
6974 "type": "*",
6975 "link": null
6976 }
6977 ],
6978 "outputs": [
6979 {
6980 "localized_name": "list",
6981 "name": "list",
6982 "shape": 6,
6983 "type": "*",
6984 "slot_index": 0,
6985 "links": [
6986 20032
6987 ]
6988 }
6989 ],
6990 "properties": {
6991 "Node name for S&R": "CreateList"
6992 },
6993 "color": "#233",
6994 "bgcolor": "#355"
6995 },
6996 {
6997 "id": 247,
6998 "type": "EndLoop",
6999 "pos": [
7000 7250,
7001 2950
7002 ],
7003 "size": [
7004 260,
7005 120
7006 ],
7007 "flags": [],
7008 "order": 48,
7009 "mode": 0,
7010 "inputs": [
7011 {
7012 "localized_name": "output_value",
7013 "name": "output_value",
7014 "shape": 7,
7015 "type": "*",
7016 "link": 20032
7017 },
7018 {
7019 "localized_name": "next_iteration_value",
7020 "name": "next_iteration_value",
7021 "shape": 7,
7022 "type": "*",
7023 "link": 20033
7024 },
7025 {
7026 "localized_name": "termination0",
7027 "name": "terminations.termination0",
7028 "shape": 7,
7029 "type": "*",
7030 "link": null
7031 }
7032 ],
7033 "outputs": [
7034 {
7035 "localized_name": "outputs",
7036 "name": "outputs",
7037 "shape": 6,
7038 "type": "*",
7039 "slot_index": 0,
7040 "links": [
7041 20070
7042 ]
7043 }
7044 ],
7045 "properties": {
7046 "Node name for S&R": "EndLoop"
7047 },
7048 "widgets_values": [
7049 false
7050 ],
7051 "widgets_values_named": {
7052 "accumulate": false
7053 },
7054 "color": "#323",
7055 "bgcolor": "#535"
7056 },
7057 {
7058 "id": 249,
7059 "type": "StringFormat",
7060 "pos": [
7061 8450,
7062 1170
7063 ],
7064 "size": [
7065 410,
7066 220
7067 ],
7068 "flags": [],
7069 "order": 49,
7070 "mode": 0,
7071 "inputs": [
7072 {
7073 "localized_name": "a",
7074 "name": "values.a",
7075 "shape": 7,
7076 "type": "*",
7077 "link": 20071
7078 },
7079 {
7080 "localized_name": "b",
7081 "name": "values.b",
7082 "shape": 7,
7083 "type": "*",
7084 "link": 20068
7085 },
7086 {
7087 "localized_name": "c",
7088 "name": "values.c",
7089 "shape": 7,
7090 "type": "*",
7091 "link": 20069
7092 },
7093 {
7094 "localized_name": "d",
7095 "name": "values.d",
7096 "shape": 7,
7097 "type": "*",
7098 "link": 20070
7099 },
7100 {
7101 "localized_name": "e",
7102 "name": "values.e",
7103 "shape": 7,
7104 "type": "*",
7105 "link": null
7106 }
7107 ],
7108 "outputs": [
7109 {
7110 "localized_name": "STRING",
7111 "name": "STRING",
7112 "type": "STRING",
7113 "slot_index": 0,
7114 "links": [
7115 20034
7116 ]
7117 }
7118 ],
7119 "title": "Format Text (Ming caption, Figma style)",
7120 "properties": {
7121 "Node name for S&R": "StringFormat"
7122 },
7123 "widgets_values": [
7124 "{{\"canvas_settings\": {{\"aspect_ratio\": \"{a}\", \"ambient_lighting\": \"{b}\", \"image_style\": \"{c}\"}}, \"layers\": [\n{d}\n]}}"
7125 ],
7126 "widgets_values_named": {
7127 "f_string": "{{\"canvas_settings\": {{\"aspect_ratio\": \"{a}\", \"ambient_lighting\": \"{b}\", \"image_style\": \"{c}\"}}, \"layers\": [\n{d}\n]}}"
7128 }
7129 },
7130 {
7131 "id": 300,
7132 "type": "MarkdownNote",
7133 "pos": [
7134 -710,
7135 140
7136 ],
7137 "size": [
7138 1200,
7139 620
7140 ],
7141 "flags": [],
7142 "order": 0,
7143 "mode": 0,
7144 "inputs": [],
7145 "outputs": [],
7146 "title": "Note: Ideogram JSON → Ming caption (built-in nodes only)",
7147 "properties": [],
7148 "widgets_values": [
7149 "**What this subgraph does**\n\nTurns the Ideogram JSON + the bounding boxes into Ming's own Figma-style caption (`canvas_settings` + `layers`) and sends it to the `prompt` of **Image Edit (Ming Image 0.1 Design)**.\n\n| input | comes from | carries |\n|---|---|---|\n| `ideogram` | `Build JSON Prompt (Ideogram)` | the Ideogram JSON (style / lighting / background / palette …) |\n| `elements` | `Create Bounding Boxes` → `elements` | the boxes, turned into the text queue the loop eats one item per iteration |\n| `width` / `height` | `Get Image Size` | output size; the nested **Aspect Ratio (gcd-reduced)** subgraph turns them into `7:9, 896 × 1152 px` |\n\nOutput: `caption` → `prompt` of the Image Edit subgraph, plus the preview in `Preview as Text`.\n\n**How the loop works**\n\nOne iteration per box. `Start Loop` runs `count` times, where `count` is the number of boxes — counted on the left by `Replace Text (Regex)` + `Text Length` (that count is wired into the loop's `max_iteration`, so adding or removing boxes needs no rewiring). Each iteration:\n\n* pulls the next box JSON out of the queue,\n* maps `bbox [ymin, xmin, ymax, xmax]` → `cx: …, cy: …, w: …, h: …` (normalised centre + size),\n* `desc` → `description`, `color_palette` → `color_specs`, a text box becomes `Text layer reading \"…\"`,\n* appends the layer and drops that box from the queue.\n\nThe base layer (\"the whole canvas\") is the loop's seed; layers accumulate background → topmost.\n\n**To skip this subgraph**\n\nBypass it (`Ctrl+B`) and either type English into `prompt`, or wire `Build JSON Prompt (Ideogram)` straight into `prompt` to send the Ideogram JSON instead of the Ming caption.\n"
7150 ],
7151 "widgets_values_named": {
7152 "text": "**What this subgraph does**\n\nTurns the Ideogram JSON + the bounding boxes into Ming's own Figma-style caption (`canvas_settings` + `layers`) and sends it to the `prompt` of **Image Edit (Ming Image 0.1 Design)**.\n\n| input | comes from | carries |\n|---|---|---|\n| `ideogram` | `Build JSON Prompt (Ideogram)` | the Ideogram JSON (style / lighting / background / palette …) |\n| `elements` | `Create Bounding Boxes` → `elements` | the boxes, turned into the text queue the loop eats one item per iteration |\n| `width` / `height` | `Get Image Size` | output size; the nested **Aspect Ratio (gcd-reduced)** subgraph turns them into `7:9, 896 × 1152 px` |\n\nOutput: `caption` → `prompt` of the Image Edit subgraph, plus the preview in `Preview as Text`.\n\n**How the loop works**\n\nOne iteration per box. `Start Loop` runs `count` times, where `count` is the number of boxes — counted on the left by `Replace Text (Regex)` + `Text Length` (that count is wired into the loop's `max_iteration`, so adding or removing boxes needs no rewiring). Each iteration:\n\n* pulls the next box JSON out of the queue,\n* maps `bbox [ymin, xmin, ymax, xmax]` → `cx: …, cy: …, w: …, h: …` (normalised centre + size),\n* `desc` → `description`, `color_palette` → `color_specs`, a text box becomes `Text layer reading \"…\"`,\n* appends the layer and drops that box from the queue.\n\nThe base layer (\"the whole canvas\") is the loop's seed; layers accumulate background → topmost.\n\n**To skip this subgraph**\n\nBypass it (`Ctrl+B`) and either type English into `prompt`, or wire `Build JSON Prompt (Ideogram)` straight into `prompt` to send the Ideogram JSON instead of the Ming caption.\n"
7153 },
7154 "color": "#222",
7155 "bgcolor": "#000"
7156 },
7157 {
7158 "id": 338,
7159 "type": "ffddfd05-3899-4ab3-ab2f-fdc661b4f3ed",
7160 "pos": [
7161 8380,
7162 800
7163 ],
7164 "size": [
7165 420,
7166 220
7167 ],
7168 "flags": [],
7169 "order": 50,
7170 "mode": 0,
7171 "inputs": [
7172 {
7173 "name": "width",
7174 "type": "INT",
7175 "link": 21000
7176 },
7177 {
7178 "name": "height",
7179 "type": "INT",
7180 "link": 21001
7181 }
7182 ],
7183 "outputs": [
7184 {
7185 "localized_name": "STRING",
7186 "name": "STRING",
7187 "type": "STRING",
7188 "links": [
7189 20071
7190 ]
7191 }
7192 ],
7193 "properties": {
7194 "previewExposures": []
7195 }
7196 }
7197 ],
7198 "groups": [
7199 {
7200 "id": 11,
7201 "title": "① Parse the Ideogram JSON -> canvas_settings + base layer",
7202 "bounding": [
7203 -760,
7204 840,
7205 2290,
7206 2420
7207 ],
7208 "color": "#3f789e",
7209 "flags": []
7210 },
7211 {
7212 "id": 12,
7213 "title": "② Every box -> queue string + count",
7214 "bounding": [
7215 290,
7216 3340,
7217 1230,
7218 420
7219 ],
7220 "color": "#8888aa",
7221 "flags": []
7222 },
7223 {
7224 "id": 13,
7225 "title": "③ Assemble + Start Loop",
7226 "bounding": [
7227 1640,
7228 2490,
7229 1800,
7230 1290
7231 ],
7232 "color": "#A88",
7233 "flags": []
7234 },
7235 {
7236 "id": 15,
7237 "title": "③b Loop body: one box -> one layer",
7238 "bounding": [
7239 3650,
7240 3300,
7241 2400,
7242 2240
7243 ],
7244 "color": "#7f9bb5",
7245 "flags": []
7246 },
7247 {
7248 "id": 16,
7249 "title": "③c Carry + End Loop",
7250 "bounding": [
7251 6260,
7252 2490,
7253 1310,
7254 1080
7255 ],
7256 "color": "#a07f9b",
7257 "flags": []
7258 }
7259 ],
7260 "links": [
7261 {
7262 "id": 20000,
7263 "origin_id": -10,
7264 "origin_slot": 0,
7265 "target_id": 200,
7266 "target_slot": 0,
7267 "type": "DICT"
7268 },
7269 {
7270 "id": 20001,
7271 "origin_id": -10,
7272 "origin_slot": 1,
7273 "target_id": 201,
7274 "target_slot": 0,
7275 "type": "ARRAY"
7276 },
7277 {
7278 "id": 20002,
7279 "origin_id": 201,
7280 "origin_slot": 0,
7281 "target_id": 202,
7282 "target_slot": 0,
7283 "type": "STRING"
7284 },
7285 {
7286 "id": 20003,
7287 "origin_id": 202,
7288 "origin_slot": 0,
7289 "target_id": 203,
7290 "target_slot": 0,
7291 "type": "STRING"
7292 },
7293 {
7294 "id": 20004,
7295 "origin_id": 200,
7296 "origin_slot": 0,
7297 "target_id": 204,
7298 "target_slot": 0,
7299 "type": "STRING"
7300 },
7301 {
7302 "id": 20005,
7303 "origin_id": 200,
7304 "origin_slot": 0,
7305 "target_id": 205,
7306 "target_slot": 0,
7307 "type": "STRING"
7308 },
7309 {
7310 "id": 20006,
7311 "origin_id": 200,
7312 "origin_slot": 0,
7313 "target_id": 206,
7314 "target_slot": 0,
7315 "type": "STRING"
7316 },
7317 {
7318 "id": 20007,
7319 "origin_id": 200,
7320 "origin_slot": 0,
7321 "target_id": 207,
7322 "target_slot": 0,
7323 "type": "STRING"
7324 },
7325 {
7326 "id": 20008,
7327 "origin_id": 200,
7328 "origin_slot": 0,
7329 "target_id": 208,
7330 "target_slot": 0,
7331 "type": "STRING"
7332 },
7333 {
7334 "id": 20009,
7335 "origin_id": 200,
7336 "origin_slot": 0,
7337 "target_id": 209,
7338 "target_slot": 0,
7339 "type": "STRING"
7340 },
7341 {
7342 "id": 20010,
7343 "origin_id": 209,
7344 "origin_slot": 0,
7345 "target_id": 210,
7346 "target_slot": 0,
7347 "type": "STRING"
7348 },
7349 {
7350 "id": 20011,
7351 "origin_id": 200,
7352 "origin_slot": 0,
7353 "target_id": 212,
7354 "target_slot": 0,
7355 "type": "STRING"
7356 },
7357 {
7358 "id": 20012,
7359 "origin_id": 213,
7360 "origin_slot": 0,
7361 "target_id": 214,
7362 "target_slot": 0,
7363 "type": "STRING"
7364 },
7365 {
7366 "id": 20013,
7367 "origin_id": 217,
7368 "origin_slot": 4,
7369 "target_id": 218,
7370 "target_slot": 0,
7371 "type": "COMFY_MATCHTYPE_V3"
7372 },
7373 {
7374 "id": 20014,
7375 "origin_id": 217,
7376 "origin_slot": 4,
7377 "target_id": 219,
7378 "target_slot": 0,
7379 "type": "COMFY_MATCHTYPE_V3"
7380 },
7381 {
7382 "id": 20015,
7383 "origin_id": 219,
7384 "origin_slot": 0,
7385 "target_id": 220,
7386 "target_slot": 0,
7387 "type": "*"
7388 },
7389 {
7390 "id": 20016,
7391 "origin_id": 220,
7392 "origin_slot": 0,
7393 "target_id": 221,
7394 "target_slot": 0,
7395 "type": "STRING"
7396 },
7397 {
7398 "id": 20017,
7399 "origin_id": 220,
7400 "origin_slot": 0,
7401 "target_id": 222,
7402 "target_slot": 0,
7403 "type": "STRING"
7404 },
7405 {
7406 "id": 20018,
7407 "origin_id": 220,
7408 "origin_slot": 0,
7409 "target_id": 223,
7410 "target_slot": 0,
7411 "type": "STRING"
7412 },
7413 {
7414 "id": 20019,
7415 "origin_id": 220,
7416 "origin_slot": 0,
7417 "target_id": 224,
7418 "target_slot": 0,
7419 "type": "STRING"
7420 },
7421 {
7422 "id": 20020,
7423 "origin_id": 221,
7424 "origin_slot": 0,
7425 "target_id": 225,
7426 "target_slot": 0,
7427 "type": "STRING"
7428 },
7429 {
7430 "id": 20021,
7431 "origin_id": 222,
7432 "origin_slot": 0,
7433 "target_id": 226,
7434 "target_slot": 0,
7435 "type": "STRING"
7436 },
7437 {
7438 "id": 20022,
7439 "origin_id": 223,
7440 "origin_slot": 0,
7441 "target_id": 227,
7442 "target_slot": 0,
7443 "type": "STRING"
7444 },
7445 {
7446 "id": 20023,
7447 "origin_id": 224,
7448 "origin_slot": 0,
7449 "target_id": 228,
7450 "target_slot": 0,
7451 "type": "STRING"
7452 },
7453 {
7454 "id": 20024,
7455 "origin_id": 220,
7456 "origin_slot": 0,
7457 "target_id": 234,
7458 "target_slot": 0,
7459 "type": "STRING"
7460 },
7461 {
7462 "id": 20025,
7463 "origin_id": 234,
7464 "origin_slot": 0,
7465 "target_id": 235,
7466 "target_slot": 0,
7467 "type": "STRING"
7468 },
7469 {
7470 "id": 20026,
7471 "origin_id": 220,
7472 "origin_slot": 0,
7473 "target_id": 236,
7474 "target_slot": 0,
7475 "type": "STRING"
7476 },
7477 {
7478 "id": 20027,
7479 "origin_id": 237,
7480 "origin_slot": 0,
7481 "target_id": 238,
7482 "target_slot": 0,
7483 "type": "STRING"
7484 },
7485 {
7486 "id": 20028,
7487 "origin_id": 238,
7488 "origin_slot": 0,
7489 "target_id": 241,
7490 "target_slot": 0,
7491 "type": "STRING"
7492 },
7493 {
7494 "id": 20029,
7495 "origin_id": 220,
7496 "origin_slot": 0,
7497 "target_id": 239,
7498 "target_slot": 0,
7499 "type": "STRING"
7500 },
7501 {
7502 "id": 20030,
7503 "origin_id": 239,
7504 "origin_slot": 0,
7505 "target_id": 240,
7506 "target_slot": 0,
7507 "type": "STRING"
7508 },
7509 {
7510 "id": 20031,
7511 "origin_id": 219,
7512 "origin_slot": 0,
7513 "target_id": 244,
7514 "target_slot": 0,
7515 "type": "*"
7516 },
7517 {
7518 "id": 20032,
7519 "origin_id": 246,
7520 "origin_slot": 0,
7521 "target_id": 247,
7522 "target_slot": 0,
7523 "type": "*"
7524 },
7525 {
7526 "id": 20033,
7527 "origin_id": 245,
7528 "origin_slot": 0,
7529 "target_id": 247,
7530 "target_slot": 1,
7531 "type": "*"
7532 },
7533 {
7534 "id": 20034,
7535 "origin_id": 249,
7536 "origin_slot": 0,
7537 "target_id": -20,
7538 "target_slot": 0,
7539 "type": "STRING"
7540 },
7541 {
7542 "id": 21000,
7543 "origin_id": -10,
7544 "origin_slot": 2,
7545 "target_id": 338,
7546 "target_slot": 0,
7547 "type": "INT"
7548 },
7549 {
7550 "id": 21001,
7551 "origin_id": -10,
7552 "origin_slot": 3,
7553 "target_id": 338,
7554 "target_slot": 1,
7555 "type": "INT"
7556 },
7557 {
7558 "id": 20036,
7559 "origin_id": 215,
7560 "origin_slot": 0,
7561 "target_id": 216,
7562 "target_slot": 0,
7563 "type": "STRING"
7564 },
7565 {
7566 "id": 20037,
7567 "origin_id": 201,
7568 "origin_slot": 0,
7569 "target_id": 216,
7570 "target_slot": 1,
7571 "type": "STRING"
7572 },
7573 {
7574 "id": 20038,
7575 "origin_id": 216,
7576 "origin_slot": 0,
7577 "target_id": 217,
7578 "target_slot": 1,
7579 "type": "*"
7580 },
7581 {
7582 "id": 20039,
7583 "origin_id": 225,
7584 "origin_slot": 0,
7585 "target_id": 229,
7586 "target_slot": 0,
7587 "type": "FLOAT"
7588 },
7589 {
7590 "id": 20040,
7591 "origin_id": 227,
7592 "origin_slot": 0,
7593 "target_id": 229,
7594 "target_slot": 1,
7595 "type": "FLOAT"
7596 },
7597 {
7598 "id": 20041,
7599 "origin_id": 226,
7600 "origin_slot": 0,
7601 "target_id": 230,
7602 "target_slot": 0,
7603 "type": "FLOAT"
7604 },
7605 {
7606 "id": 20042,
7607 "origin_id": 228,
7608 "origin_slot": 0,
7609 "target_id": 230,
7610 "target_slot": 1,
7611 "type": "FLOAT"
7612 },
7613 {
7614 "id": 20043,
7615 "origin_id": 226,
7616 "origin_slot": 0,
7617 "target_id": 231,
7618 "target_slot": 0,
7619 "type": "FLOAT"
7620 },
7621 {
7622 "id": 20044,
7623 "origin_id": 228,
7624 "origin_slot": 0,
7625 "target_id": 231,
7626 "target_slot": 1,
7627 "type": "FLOAT"
7628 },
7629 {
7630 "id": 20045,
7631 "origin_id": 225,
7632 "origin_slot": 0,
7633 "target_id": 232,
7634 "target_slot": 0,
7635 "type": "FLOAT"
7636 },
7637 {
7638 "id": 20046,
7639 "origin_id": 227,
7640 "origin_slot": 0,
7641 "target_id": 232,
7642 "target_slot": 1,
7643 "type": "FLOAT"
7644 },
7645 {
7646 "id": 20047,
7647 "origin_id": 236,
7648 "origin_slot": 0,
7649 "target_id": 237,
7650 "target_slot": 0,
7651 "type": "STRING"
7652 },
7653 {
7654 "id": 20048,
7655 "origin_id": 243,
7656 "origin_slot": 0,
7657 "target_id": 245,
7658 "target_slot": 0,
7659 "type": "STRING"
7660 },
7661 {
7662 "id": 20049,
7663 "origin_id": 244,
7664 "origin_slot": 0,
7665 "target_id": 245,
7666 "target_slot": 1,
7667 "type": "STRING"
7668 },
7669 {
7670 "id": 20050,
7671 "origin_id": 243,
7672 "origin_slot": 0,
7673 "target_id": 246,
7674 "target_slot": 0,
7675 "type": "STRING"
7676 },
7677 {
7678 "id": 20051,
7679 "origin_id": 205,
7680 "origin_slot": 0,
7681 "target_id": 211,
7682 "target_slot": 0,
7683 "type": "STRING"
7684 },
7685 {
7686 "id": 20052,
7687 "origin_id": 206,
7688 "origin_slot": 0,
7689 "target_id": 211,
7690 "target_slot": 1,
7691 "type": "STRING"
7692 },
7693 {
7694 "id": 20053,
7695 "origin_id": 207,
7696 "origin_slot": 0,
7697 "target_id": 211,
7698 "target_slot": 2,
7699 "type": "STRING"
7700 },
7701 {
7702 "id": 20054,
7703 "origin_id": 212,
7704 "origin_slot": 0,
7705 "target_id": 213,
7706 "target_slot": 0,
7707 "type": "STRING"
7708 },
7709 {
7710 "id": 20055,
7711 "origin_id": 208,
7712 "origin_slot": 0,
7713 "target_id": 213,
7714 "target_slot": 1,
7715 "type": "STRING"
7716 },
7717 {
7718 "id": 20056,
7719 "origin_id": 214,
7720 "origin_slot": 0,
7721 "target_id": 215,
7722 "target_slot": 0,
7723 "type": "STRING"
7724 },
7725 {
7726 "id": 20057,
7727 "origin_id": 210,
7728 "origin_slot": 0,
7729 "target_id": 215,
7730 "target_slot": 1,
7731 "type": "STRING"
7732 },
7733 {
7734 "id": 20058,
7735 "origin_id": 230,
7736 "origin_slot": 0,
7737 "target_id": 233,
7738 "target_slot": 0,
7739 "type": "FLOAT"
7740 },
7741 {
7742 "id": 20059,
7743 "origin_id": 229,
7744 "origin_slot": 0,
7745 "target_id": 233,
7746 "target_slot": 1,
7747 "type": "FLOAT"
7748 },
7749 {
7750 "id": 20060,
7751 "origin_id": 231,
7752 "origin_slot": 0,
7753 "target_id": 233,
7754 "target_slot": 2,
7755 "type": "FLOAT"
7756 },
7757 {
7758 "id": 20061,
7759 "origin_id": 232,
7760 "origin_slot": 0,
7761 "target_id": 233,
7762 "target_slot": 3,
7763 "type": "FLOAT"
7764 },
7765 {
7766 "id": 20062,
7767 "origin_id": 241,
7768 "origin_slot": 0,
7769 "target_id": 242,
7770 "target_slot": 0,
7771 "type": "STRING"
7772 },
7773 {
7774 "id": 20063,
7775 "origin_id": 235,
7776 "origin_slot": 0,
7777 "target_id": 242,
7778 "target_slot": 1,
7779 "type": "STRING"
7780 },
7781 {
7782 "id": 20064,
7783 "origin_id": 233,
7784 "origin_slot": 0,
7785 "target_id": 242,
7786 "target_slot": 2,
7787 "type": "STRING"
7788 },
7789 {
7790 "id": 20065,
7791 "origin_id": 240,
7792 "origin_slot": 0,
7793 "target_id": 242,
7794 "target_slot": 3,
7795 "type": "STRING"
7796 },
7797 {
7798 "id": 20066,
7799 "origin_id": 218,
7800 "origin_slot": 0,
7801 "target_id": 243,
7802 "target_slot": 0,
7803 "type": "*"
7804 },
7805 {
7806 "id": 20067,
7807 "origin_id": 242,
7808 "origin_slot": 0,
7809 "target_id": 243,
7810 "target_slot": 1,
7811 "type": "STRING"
7812 },
7813 {
7814 "id": 20071,
7815 "origin_id": 338,
7816 "origin_slot": 0,
7817 "target_id": 249,
7818 "target_slot": 0,
7819 "type": "STRING"
7820 },
7821 {
7822 "id": 20068,
7823 "origin_id": 204,
7824 "origin_slot": 0,
7825 "target_id": 249,
7826 "target_slot": 1,
7827 "type": "STRING"
7828 },
7829 {
7830 "id": 20069,
7831 "origin_id": 211,
7832 "origin_slot": 0,
7833 "target_id": 249,
7834 "target_slot": 2,
7835 "type": "STRING"
7836 },
7837 {
7838 "id": 20070,
7839 "origin_id": 247,
7840 "origin_slot": 0,
7841 "target_id": 249,
7842 "target_slot": 3,
7843 "type": "COMFY_MATCHTYPE_V3"
7844 }
7845 ],
7846 "extra": []
7847 }
7848 ]
7849 },
7850 "config": [],
7851 "extra": {
7852 "ds": {
7853 "scale": 0.2302494658834717,
7854 "offset": [
7855 3036.0547577171665,
7856 -2925.128555295259
7857 ]
7858 },
7859 "frontendVersion": "1.53.6",
7860 "VHS_latentpreview": false,
7861 "VHS_latentpreviewrate": 0,
7862 "VHS_MetadataImage": true,
7863 "VHS_KeepIntermediate": true
7864 },
7865 "version": 0.4
7866}