typefile
{
"cfg": 8,
"controlnet_strength": 1,
"denoise": 0.4,
"force_uniform_tiles": true,
"image": "https://replicate.delivery/pbxt/KKOaCNy9baG5cUZfK3YvvePBqZeTxyvytifSo7pFOKLySQN2/ComfyUI_00004_.png",
"mask_blur": 8,
"mode_type": "Linear",
"negative_prompt": "ugly, broken, weird",
"positive_prompt": "a portrait photo of a cat in a green hoodie",
"sampler_name": "euler",
"scheduler": "karras",
"seam_fix_denoise": 1,
"seam_fix_mask_blur": 8,
"seam_fix_mode": "None",
"seam_fix_padding": 16,
"seam_fix_width": 64,
"steps": 20,
"tile_height": 512,
"tile_padding": 32,
"tile_width": 512,
"upscale_by": 2,
"upscaler": "4x-UltraSharp",
"use_controlnet_tile": true
}npm install replicate
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_X9X**********************************
This is your API token. Keep it to yourself.
import Replicate from "replicate";
import fs from "node:fs";
const replicate = new Replicate({
auth: process.env.REPLICATE_API_TOKEN,
});
Run fewjative/ultimate-sd-upscale using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
const output = await replicate.run(
"fewjative/ultimate-sd-upscale:5daf1012d946160622cd1bd45ed8f12d9675d24659276ccfe24804035f3b3ad7",
{
input: {
cfg: 8,
controlnet_strength: 1,
denoise: 0.4,
force_uniform_tiles: true,
image: "https://replicate.delivery/pbxt/KKOaCNy9baG5cUZfK3YvvePBqZeTxyvytifSo7pFOKLySQN2/ComfyUI_00004_.png",
mask_blur: 8,
mode_type: "Linear",
negative_prompt: "ugly, broken, weird",
positive_prompt: "a portrait photo of a cat in a green hoodie",
sampler_name: "euler",
scheduler: "karras",
seam_fix_denoise: 1,
seam_fix_mask_blur: 8,
seam_fix_mode: "None",
seam_fix_padding: 16,
seam_fix_width: 64,
steps: 20,
tile_height: 512,
tile_padding: 32,
tile_width: 512,
upscale_by: 2,
upscaler: "4x-UltraSharp",
use_controlnet_tile: true
}
}
);
// To access the file URL:
console.log(output.url()); //=> "http://example.com"
// To write the file to disk:
fs.writeFile("my-image.png", output);
To learn more, take a look at the guide on getting started with Node.js.
pip install replicate
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_X9X**********************************
This is your API token. Keep it to yourself.
import replicate
Run fewjative/ultimate-sd-upscale using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
output = replicate.run(
"fewjative/ultimate-sd-upscale:5daf1012d946160622cd1bd45ed8f12d9675d24659276ccfe24804035f3b3ad7",
input={
"cfg": 8,
"controlnet_strength": 1,
"denoise": 0.4,
"force_uniform_tiles": True,
"image": "https://replicate.delivery/pbxt/KKOaCNy9baG5cUZfK3YvvePBqZeTxyvytifSo7pFOKLySQN2/ComfyUI_00004_.png",
"mask_blur": 8,
"mode_type": "Linear",
"negative_prompt": "ugly, broken, weird",
"positive_prompt": "a portrait photo of a cat in a green hoodie",
"sampler_name": "euler",
"scheduler": "karras",
"seam_fix_denoise": 1,
"seam_fix_mask_blur": 8,
"seam_fix_mode": "None",
"seam_fix_padding": 16,
"seam_fix_width": 64,
"steps": 20,
"tile_height": 512,
"tile_padding": 32,
"tile_width": 512,
"upscale_by": 2,
"upscaler": "4x-UltraSharp",
"use_controlnet_tile": True
}
)
# To access the file URL:
print(output.url())
#=> "http://example.com"
# To write the file to disk:
with open("my-image.png", "wb") as file:
file.write(output.read())
To learn more, take a look at the guide on getting started with Python.
REPLICATE_API_TOKEN environment variable:export REPLICATE_API_TOKEN=r8_X9X**********************************
This is your API token. Keep it to yourself.
Run fewjative/ultimate-sd-upscale using Replicate’s API. Check out the model's schema for an overview of inputs and outputs.
curl -s -X POST \
-H "Authorization: Bearer $REPLICATE_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Prefer: wait" \
-d $'{
"version": "fewjative/ultimate-sd-upscale:5daf1012d946160622cd1bd45ed8f12d9675d24659276ccfe24804035f3b3ad7",
"input": {
"cfg": 8,
"controlnet_strength": 1,
"denoise": 0.4,
"force_uniform_tiles": true,
"image": "https://replicate.delivery/pbxt/KKOaCNy9baG5cUZfK3YvvePBqZeTxyvytifSo7pFOKLySQN2/ComfyUI_00004_.png",
"mask_blur": 8,
"mode_type": "Linear",
"negative_prompt": "ugly, broken, weird",
"positive_prompt": "a portrait photo of a cat in a green hoodie",
"sampler_name": "euler",
"scheduler": "karras",
"seam_fix_denoise": 1,
"seam_fix_mask_blur": 8,
"seam_fix_mode": "None",
"seam_fix_padding": 16,
"seam_fix_width": 64,
"steps": 20,
"tile_height": 512,
"tile_padding": 32,
"tile_width": 512,
"upscale_by": 2,
"upscaler": "4x-UltraSharp",
"use_controlnet_tile": true
}
}' \
https://api.replicate.com/v1/predictions
To learn more, take a look at Replicate’s HTTP API reference docs.
Loading...
{
"id": "b6cyhgbby63wrboy5xe4t3ufii",
"model": "fewjative/ultimate-sd-upscale",
"version": "5daf1012d946160622cd1bd45ed8f12d9675d24659276ccfe24804035f3b3ad7",
"input": {
"cfg": 8,
"controlnet_strength": 1,
"denoise": 0.4,
"force_uniform_tiles": true,
"image": "https://replicate.delivery/pbxt/KKOaCNy9baG5cUZfK3YvvePBqZeTxyvytifSo7pFOKLySQN2/ComfyUI_00004_.png",
"mask_blur": 8,
"mode_type": "Linear",
"negative_prompt": "ugly, broken, weird",
"positive_prompt": "a portrait photo of a cat in a green hoodie",
"sampler_name": "euler",
"scheduler": "karras",
"seam_fix_denoise": 1,
"seam_fix_mask_blur": 8,
"seam_fix_mode": "None",
"seam_fix_padding": 16,
"seam_fix_width": 64,
"steps": 20,
"tile_height": 512,
"tile_padding": 32,
"tile_width": 512,
"upscale_by": 2,
"upscaler": "4x-UltraSharp",
"use_controlnet_tile": true
},
"logs": "Using seed: 1071452\nUsing ControlNet tile with Ultimate SD Upscale\ngot prompt\nmodel_type EPS\nadm 0\nUsing pytorch attention in VAE\nWorking with z of shape (1, 4, 32, 32) = 4096 dimensions.\nUsing pytorch attention in VAE\nmissing {'cond_stage_model.clip_l.text_projection', 'cond_stage_model.clip_l.logit_scale'}\nleft over keys: dict_keys(['cond_stage_model.clip_l.transformer.text_model.embeddings.position_ids'])\nRequested to load SD1ClipModel\nLoading 1 new model\n/root/.pyenv/versions/3.10.6/lib/python3.10/site-packages/torch/_utils.py:831: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly. To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()\nreturn self.fget.__get__(instance, owner)()\n[] []\nCanva size: 2048x2048\nImage size: 1024x1024\nScale factor: 2\nUpscaling iteration 1 with scale factor 2\nTile size: 512x512\nTiles amount: 16\nGrid: 4x4\nRedraw enabled: True\nSeams fix mode: NONE\nRequested to load BaseModel\nRequested to load ControlNet\nLoading 2 new models\n 0%| | 0/20 [00:00<?, ?it/s]\n 5%|▌ | 1/20 [00:00<00:07, 2.47it/s]\n 15%|█▌ | 3/20 [00:00<00:02, 6.50it/s]\n 25%|██▌ | 5/20 [00:00<00:01, 9.17it/s]\n 35%|███▌ | 7/20 [00:00<00:01, 11.13it/s]\n 45%|████▌ | 9/20 [00:00<00:00, 12.52it/s]\n 55%|█████▌ | 11/20 [00:01<00:00, 13.49it/s]\n 65%|██████▌ | 13/20 [00:01<00:00, 14.14it/s]\n 75%|███████▌ | 15/20 [00:01<00:00, 14.67it/s]\n 85%|████████▌ | 17/20 [00:01<00:00, 14.00it/s]\n 95%|█████████▌| 19/20 [00:01<00:00, 14.57it/s]\n100%|██████████| 20/20 [00:01<00:00, 12.12it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 14.81it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.14it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.28it/s]\n 40%|████ | 8/20 [00:00<00:00, 15.43it/s]\n 50%|█████ | 10/20 [00:00<00:00, 15.47it/s]\n 60%|██████ | 12/20 [00:00<00:00, 15.42it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.24it/s]\n 80%|████████ | 16/20 [00:01<00:00, 14.65it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 14.97it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.12it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.05it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.26it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.27it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.20it/s]\n 40%|████ | 8/20 [00:00<00:00, 15.34it/s]\n 50%|█████ | 10/20 [00:00<00:00, 15.46it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.23it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.65it/s]\n 80%|████████ | 16/20 [00:01<00:00, 14.92it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.13it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.12it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.03it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.14it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.41it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.46it/s]\n 40%|████ | 8/20 [00:00<00:00, 15.54it/s]\n 50%|█████ | 10/20 [00:00<00:00, 15.60it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.39it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.75it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.01it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.17it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.24it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.15it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 14.99it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.25it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.38it/s]\n 40%|████ | 8/20 [00:00<00:00, 15.40it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.27it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.67it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.93it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.14it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.27it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.36it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.12it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.10it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.27it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.35it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.09it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.54it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.83it/s]\n 70%|███████ | 14/20 [00:00<00:00, 15.00it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.13it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.25it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.29it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.04it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.06it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.29it/s]\n 30%|███ | 6/20 [00:00<00:01, 13.90it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.44it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.74it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.87it/s]\n 70%|███████ | 14/20 [00:00<00:00, 15.06it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.22it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.23it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.30it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.00it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.52it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.62it/s]\n 30%|███ | 6/20 [00:00<00:00, 14.42it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.76it/s]\n 50%|█████ | 10/20 [00:00<00:00, 15.01it/s]\n 60%|██████ | 12/20 [00:00<00:00, 15.17it/s]\n 70%|███████ | 14/20 [00:00<00:00, 15.33it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.42it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.28it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.38it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.22it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 14.45it/s]\n 20%|██ | 4/20 [00:00<00:01, 13.82it/s]\n 30%|███ | 6/20 [00:00<00:00, 14.35it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.72it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.85it/s]\n 60%|██████ | 12/20 [00:00<00:00, 15.03it/s]\n 70%|███████ | 14/20 [00:00<00:00, 15.09it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.18it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.26it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.45it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.71it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 11.69it/s]\n 20%|██ | 4/20 [00:00<00:01, 13.43it/s]\n 30%|███ | 6/20 [00:00<00:00, 14.07it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.45it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.66it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.81it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.81it/s]\n 80%|████████ | 16/20 [00:01<00:00, 14.96it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 14.00it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.37it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.32it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 15.14it/s]\n 20%|██ | 4/20 [00:00<00:01, 12.66it/s]\n 30%|███ | 6/20 [00:00<00:01, 13.21it/s]\n 40%|████ | 8/20 [00:00<00:00, 13.36it/s]\n 50%|█████ | 10/20 [00:00<00:00, 13.47it/s]\n 60%|██████ | 12/20 [00:00<00:00, 12.91it/s]\n 70%|███████ | 14/20 [00:01<00:00, 12.11it/s]\n 80%|████████ | 16/20 [00:01<00:00, 12.68it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 12.93it/s]\n100%|██████████| 20/20 [00:01<00:00, 12.68it/s]\n100%|██████████| 20/20 [00:01<00:00, 12.87it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 11.95it/s]\n 20%|██ | 4/20 [00:00<00:01, 11.59it/s]\n 30%|███ | 6/20 [00:00<00:01, 10.92it/s]\n 40%|████ | 8/20 [00:00<00:01, 11.70it/s]\n 50%|█████ | 10/20 [00:00<00:00, 11.70it/s]\n 60%|██████ | 12/20 [00:01<00:00, 11.51it/s]\n 70%|███████ | 14/20 [00:01<00:00, 11.38it/s]\n 80%|████████ | 16/20 [00:01<00:00, 10.89it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 10.80it/s]\n100%|██████████| 20/20 [00:01<00:00, 11.36it/s]\n100%|██████████| 20/20 [00:01<00:00, 11.32it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 11.34it/s]\n 20%|██ | 4/20 [00:00<00:01, 11.65it/s]\n 30%|███ | 6/20 [00:00<00:01, 12.36it/s]\n 40%|████ | 8/20 [00:00<00:00, 12.26it/s]\n 50%|█████ | 10/20 [00:00<00:00, 11.43it/s]\n 60%|██████ | 12/20 [00:01<00:00, 11.60it/s]\n 70%|███████ | 14/20 [00:01<00:00, 11.69it/s]\n 80%|████████ | 16/20 [00:01<00:00, 11.29it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 11.15it/s]\n100%|██████████| 20/20 [00:01<00:00, 11.23it/s]\n100%|██████████| 20/20 [00:01<00:00, 11.48it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 12.00it/s]\n 20%|██ | 4/20 [00:00<00:01, 12.18it/s]\n 30%|███ | 6/20 [00:00<00:01, 12.88it/s]\n 40%|████ | 8/20 [00:00<00:00, 12.58it/s]\n 50%|█████ | 10/20 [00:00<00:00, 12.79it/s]\n 60%|██████ | 12/20 [00:00<00:00, 13.53it/s]\n 70%|███████ | 14/20 [00:01<00:00, 14.07it/s]\n 80%|████████ | 16/20 [00:01<00:00, 14.39it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 14.52it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.78it/s]\n100%|██████████| 20/20 [00:01<00:00, 13.80it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 14.60it/s]\n 20%|██ | 4/20 [00:00<00:01, 15.01it/s]\n 30%|███ | 6/20 [00:00<00:00, 15.15it/s]\n 40%|████ | 8/20 [00:00<00:00, 15.13it/s]\n 50%|█████ | 10/20 [00:00<00:00, 15.21it/s]\n 60%|██████ | 12/20 [00:00<00:00, 15.29it/s]\n 70%|███████ | 14/20 [00:00<00:00, 15.23it/s]\n 80%|████████ | 16/20 [00:01<00:00, 15.10it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 15.27it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.23it/s]\n100%|██████████| 20/20 [00:01<00:00, 15.18it/s]\nRequested to load ControlNet\nLoading 1 new model\nunload clone 1\n 0%| | 0/20 [00:00<?, ?it/s]\n 10%|█ | 2/20 [00:00<00:01, 14.20it/s]\n 20%|██ | 4/20 [00:00<00:01, 14.32it/s]\n 30%|███ | 6/20 [00:00<00:00, 14.59it/s]\n 40%|████ | 8/20 [00:00<00:00, 14.68it/s]\n 50%|█████ | 10/20 [00:00<00:00, 14.75it/s]\n 60%|██████ | 12/20 [00:00<00:00, 14.77it/s]\n 70%|███████ | 14/20 [00:00<00:00, 14.85it/s]\n 80%|████████ | 16/20 [00:01<00:00, 14.73it/s]\n 90%|█████████ | 18/20 [00:01<00:00, 14.67it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.52it/s]\n100%|██████████| 20/20 [00:01<00:00, 14.62it/s]\nPrompt executed in 45.32 seconds\nnode output: {'images': [{'filename': 'ComfyUI_00007_.png', 'subfolder': '', 'type': 'output'}]}\noutput",
"output": "https://replicate.delivery/pbxt/exJgejTPB2o58UJd7WNxWrLeenaoQSJXidu8uC2ySx0wDTJJB/out-1071452.png",
"data_removed": false,
"error": null,
"source": "web",
"status": "succeeded",
"created_at": "2024-02-01T13:16:46.354677Z",
"started_at": "2024-02-01T13:18:03.485105Z",
"completed_at": "2024-02-01T13:18:53.221646Z",
"urls": {
"cancel": "https://api.replicate.com/v1/predictions/b6cyhgbby63wrboy5xe4t3ufii/cancel",
"get": "https://api.replicate.com/v1/predictions/b6cyhgbby63wrboy5xe4t3ufii"
},
"metrics": {
"predict_time": 49.736541,
"total_time": 126.866969
}
}