@enslo/sd-metadata 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
- "use strict";var sdMetadata=(()=>{var we=Object.defineProperty;var fn=Object.getOwnPropertyDescriptor;var dn=Object.getOwnPropertyNames;var ln=Object.prototype.hasOwnProperty;var gn=(e,t)=>{for(var n in t)we(e,n,{get:t[n],enumerable:!0})},yn=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of dn(t))!ln.call(e,o)&&o!==n&&we(e,o,{get:()=>t[o],enumerable:!(r=fn(t,o))||r.enumerable});return e};var hn=e=>yn(we({},"__esModule",{value:!0}),e);var No={};gn(No,{embed:()=>Re,formatAsWebUI:()=>H,formatRaw:()=>Ie,read:()=>Gt,softwareLabels:()=>un,stringify:()=>He,write:()=>an,writeAsWebUI:()=>Re});var M=(e,t)=>t!==void 0?[{type:"tEXt",keyword:e,text:t}]:[],oe=(e,t)=>t!==void 0?[{type:"iTXt",keyword:e,compressionFlag:0,compressionMethod:0,languageTag:"",translatedKeyword:"",text:t}]:[],b=(e,t)=>e.find(n=>n.source.type===t),w=e=>{if(e!==void 0)return typeof e=="string"?e:JSON.stringify(e)};function xn(e){return e.replace(/[\u0100-\uffff]/g,t=>`\\u${t.charCodeAt(0).toString(16).padStart(4,"0")}`)}function j(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(t,n)=>String.fromCharCode(Number.parseInt(n,16)))}function Sn(e){return/[^\x00-\xFF]/.test(e)}function k(e,t,n){if(t===void 0)return[];switch(n){case"dynamic":return(Sn(t)?"iTXt":"tEXt")==="iTXt"?oe(e,t):M(e,t);case"text-unicode-escape":{let r=xn(t);return M(e,r)}case"text-utf8-raw":return M(e,t)}}function se(e,t){return e.flatMap(([n,r])=>{let o=t[n]??t.default;return k(n,r,o)})}var a={ok:e=>({ok:!0,value:e}),error:e=>({ok:!1,error:e})};function W(e){return e instanceof ArrayBuffer?new Uint8Array(e):e}function V(e){return e.length<8?!1:e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10}function B(e){return e.length<2?!1:e[0]===255&&e[1]===216}function $(e){return e.length<12?!1:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80}function L(e){return V(e)?"png":B(e)?"jpeg":$(e)?"webp":null}function A(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function I(e,t,n){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t,n)}function ie(e,t){return(e[t]??0)|(e[t+1]??0)<<8|(e[t+2]??0)<<16}function _(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function N(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t,!0)}function K(e,t,n){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t,n)}function E(e,t){return String.fromCharCode(e[t]??0,e[t+1]??0,e[t+2]??0,e[t+3]??0)}function ae(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t,n)}function X(e,t,n,r){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t,n,r)}function ve(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n)}function ue(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n,!0)}function O(e,t,n,r){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n,r)}var bn="XML:com.adobe.xmp",U=new TextEncoder().encode("http://ns.adobe.com/xap/1.0/\0");function ce(e,t){if(t+U.length>e.length)return!1;for(let n=0;n<U.length;n++)if(e[t+n]!==U[n])return!1;return!0}function pe(e){return e===bn}var kn=65535;function Te(e){if(e.length>kn)return null;let n=[["CreatorTool",Cn(e,"xmp","CreatorTool")],["UserComment",Ge(e,"exif","UserComment")],["parameters",Ge(e,"dc","description")]].filter(r=>r[1]!==void 0);return n.length>0?Object.fromEntries(n):null}function Cn(e,t,n){let r=new RegExp(`<${t}:${n}>([^<]*)</${t}:${n}>`),o=e.match(r);return o?.[1]?Je(o[1]):void 0}function Ge(e,t,n){let r=new RegExp(`<${t}:${n}>[\\s\\S]*?<rdf:li[^>]*(?<!/)>([\\s\\S]*?)</rdf:li>[\\s\\S]*?</${t}:${n}>`),o=e.match(r);return o?.[1]?Je(o[1]):void 0}function Je(e){return e.replace(/&#x([0-9a-fA-F]+);/g,(t,n)=>{try{return String.fromCodePoint(parseInt(n,16))}catch{return t}}).replace(/&#(\d+);/g,(t,n)=>{try{return String.fromCodePoint(parseInt(n,10))}catch{return t}}).replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}function fe(e){let t=e.filter(l=>l.source.type==="exifImageDescription"||l.source.type==="exifMake"),n=e.filter(l=>l.source.type==="exifUserComment");if(t.length===0&&n.length===0)return new Uint8Array(0);let r=!0,o=[],s=[];for(let l of t)if(l.source.type==="exifImageDescription"){let C=We(l.data,l.source.prefix);o.push({tag:270,type:2,data:C})}else if(l.source.type==="exifMake"){let C=We(l.data,l.source.prefix);o.push({tag:271,type:2,data:C})}for(let l of n)if(l.source.type==="exifUserComment"){let C=vn(l.data);s.push({tag:37510,type:7,data:C})}let i=s.length>0;i&&o.push({tag:34665,type:4,data:new Uint8Array(4)}),o.sort((l,C)=>l.tag-C.tag),s.sort((l,C)=>l.tag-C.tag);let u=8,c=o.length,m=2+12*c+4,y=s.length,x=i?2+12*y+4:0,h=u,S=h+m,f=S+x;if(i){let l=o.find(C=>C.tag===34665);l&&O(l.data,0,S,r)}let d=new Map;for(let l of[...o,...s])l.data.length>4&&(d.set(l,f),f+=l.data.length,l.data.length%2!==0&&(f+=1));let Ce=f,v=new Uint8Array(Ce);v[0]=73,v[1]=73,X(v,2,42,r),O(v,4,h,r);let T=h;X(v,T,c,r),T+=2;for(let l of o)je(v,T,l,d.get(l),r),T+=12;if(O(v,T,0,r),T+=4,i){X(v,T,y,r),T+=2;for(let l of s)je(v,T,l,d.get(l),r),T+=12;O(v,T,0,r)}for(let[l,C]of d)v.set(l.data,C);return v}function je(e,t,n,r,o){X(e,t,n.tag,o),X(e,t+2,n.type,o),O(e,t+4,n.data.length,o),n.data.length<=4?e.set(n.data,t+8):O(e,t+8,r??0,o)}var wn=new Uint8Array([85,78,73,67,79,68,69,0]);function vn(e){let t=new Uint8Array(8+e.length*2),n=new DataView(t.buffer);t.set(wn);for(let r=0;r<e.length;r++)n.setUint16(8+r*2,e.charCodeAt(r),!0);return t}function We(e,t){let n=t?`${t}: ${e}`:e,r=new TextEncoder().encode(n),o=new Uint8Array(r.length+1);return o.set(r,0),o[r.length]=0,o}var de=225,Le=254,Tn=218,En=217,Ue=new Uint8Array([69,120,105,102,0,0]);function Y(e,t){if(!B(e))return a.error({type:"invalidSignature"});let n=t.filter(d=>d.source.type==="jpegCom"),r=t.filter(d=>d.source.type==="xmpPacket"),o=t.filter(d=>d.source.type==="exifUserComment"||d.source.type==="exifImageDescription"||d.source.type==="exifMake"),s=Pn(e);if(!s.ok)return s;let{beforeSos:i,scanData:u}=s.value,c=o.length>0?Mn(o):null,m=r[0],y=m?Un(m.data):null,x=n.map(d=>An(d.data)).filter(d=>d!==null),h=2;c&&(h+=c.length),y&&(h+=y.length);for(let d of i)h+=d.length;for(let d of x)h+=d.length;h+=u.length;let S=new Uint8Array(h),f=0;S[f++]=255,S[f++]=216,c&&(S.set(c,f),f+=c.length),y&&(S.set(y,f),f+=y.length);for(let d of i)S.set(d,f),f+=d.length;for(let d of x)S.set(d,f),f+=d.length;return S.set(u,f),a.ok(S)}function Pn(e){let t=[],n=2;for(;n<e.length-1;){if(e[n]!==255)return a.error({type:"corruptedStructure",message:`Expected marker at offset ${n}`});for(;e[n]===255&&n<e.length-1;)n++;let r=e[n];if(n++,r===Tn){let y=e.slice(n-2);return a.ok({beforeSos:t,scanData:y})}if(r===En)return a.ok({beforeSos:t,scanData:new Uint8Array([255,217])});if(n+2>e.length)return a.error({type:"corruptedStructure",message:"Unexpected end of file"});let o=A(e,n),s=n-2,i=n+o;if(i>e.length)return a.error({type:"corruptedStructure",message:"Segment extends beyond file"});let u=r===de&&n+2+6<=e.length&&e[n+2]===69&&e[n+3]===120&&e[n+4]===105&&e[n+5]===102&&e[n+6]===0&&e[n+7]===0,c=r===de&&!u&&ce(e,n+2);!u&&!c&&!(r===Le)&&t.push(e.slice(s,i)),n=i}return a.error({type:"corruptedStructure",message:"No SOS marker found"})}function Mn(e){let t=fe(e);if(t.length===0)return new Uint8Array(0);let n=2+Ue.length+t.length,r=new Uint8Array(2+n);return r[0]=255,r[1]=de,ae(r,2,n),r.set(Ue,4),r.set(t,4+Ue.length),r}function Un(e){let t=new TextEncoder().encode(e),n=2+U.length+t.length;if(n>65535)return null;let r=new Uint8Array(2+n);return r[0]=255,r[1]=de,ae(r,2,n),r.set(U,4),r.set(t,4+U.length),r}function An(e){let t=new TextEncoder().encode(e),n=2+t.length;if(n>65535)return null;let r=new Uint8Array(2+n);return r[0]=255,r[1]=Le,ae(r,2,n),r.set(t,4),r}var q=new Uint8Array([137,80,78,71,13,10,26,10]);function Q(e,t){if(!V(e))return a.error({type:"invalidSignature"});if(In(e)===-1)return a.error({type:"noIhdrChunk"});let r=Rn(e),o=t.map(c=>c.type==="tEXt"?_n(c):Nn(c)),s=q.length+r.ihdr.length+o.reduce((c,m)=>c+m.length,0)+r.others.reduce((c,m)=>c+m.length,0),i=new Uint8Array(s),u=0;i.set(q,u),u+=q.length,i.set(r.ihdr,u),u+=r.ihdr.length;for(let c of o)i.set(c,u),u+=c.length;for(let c of r.others)i.set(c,u),u+=c.length;return a.ok(i)}function In(e){let t=q.length;if(t+8>e.length)return-1;let n=_(e,t);return E(e,t+4)!=="IHDR"?-1:t+4+4+n+4}function Rn(e){let t=[],n=q.length,r=new Uint8Array(0);for(;n<e.length;){let o=n;if(n+4>e.length)break;let s=_(e,n);if(n+=4,n+4>e.length)break;let i=E(e,n);if(n+=4,n+s+4>e.length)break;n+=s,n+=4;let u=n,c=e.slice(o,u);if(i==="IHDR"?r=c:i!=="tEXt"&&i!=="iTXt"&&t.push(c),i==="IEND")break}return{ihdr:r,others:t}}function _n(e){let t=On(e.keyword),n=Z(e.text),r=new Uint8Array(t.length+1+n.length);return r.set(t,0),r[t.length]=0,r.set(n,t.length+1),Xe("tEXt",r)}function Nn(e){let t=Z(e.keyword),n=Z(e.languageTag),r=Z(e.translatedKeyword),o=Z(e.text),s=t.length+1+1+1+n.length+1+r.length+1+o.length,i=new Uint8Array(s),u=0;return i.set(t,u),u+=t.length,i[u++]=0,i[u++]=e.compressionFlag,i[u++]=e.compressionMethod,i.set(n,u),u+=n.length,i[u++]=0,i.set(r,u),u+=r.length,i[u++]=0,i.set(o,u),Xe("iTXt",i)}function Xe(e,t){let n=new Uint8Array(8+t.length+4);ve(n,0,t.length),n.set(new TextEncoder().encode(e),4),n.set(t,8);let r=n.slice(4,8+t.length),o=Gn(r);return ve(n,8+t.length,o),n}function On(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function Z(e){return new TextEncoder().encode(e)}var Fn=Dn();function Dn(){let e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let r=0;r<8;r++)n&1?n=3988292384^n>>>1:n=n>>>1;e[t]=n>>>0}return e}function Gn(e){let t=4294967295;for(let n=0;n<e.length;n++)t=(Fn[(t^(e[n]??0))&255]??0)^t>>>8;return(t^4294967295)>>>0}var Jn=new Uint8Array([82,73,70,70]),jn=new Uint8Array([87,69,66,80]);function ee(e,t){if(!$(e))return a.error({type:"invalidSignature"});let n=t.filter(f=>f.source.type==="xmpPacket"),r=t.filter(f=>f.source.type!=="xmpPacket"),o=Ln(e);if(!o.ok)return o;let{chunks:s}=o.value,i=Xn(r),u=n[0],c=u?Hn(u.data):null,m=[];i&&m.push(i),c&&m.push(c);let y=4;for(let f of s)y+=f.length;for(let f of m)y+=f.length;let x=new Uint8Array(8+y),h=0;x.set(Jn,h),h+=4,ue(x,h,y),h+=4,x.set(jn,h),h+=4;let S=!1;for(let f of s)if(x.set(f,h),h+=f.length,!S&&m.length>0&&Wn(f)){for(let d of m)x.set(d,h),h+=d.length;S=!0}if(!S)for(let f of m)x.set(f,h),h+=f.length;return a.ok(x)}function Wn(e){if(e.length<4)return!1;let t=E(e,0);return t==="VP8 "||t==="VP8L"||t==="VP8X"}function Ln(e){let t=[],n="",r=12;for(;r<e.length-8;){let o=E(e,r),s=N(e,r+4);if(n||(n=o),r+8+s>e.length)return a.error({type:"invalidRiffStructure",message:`Chunk extends beyond file at offset ${r}`});if(o!=="EXIF"&&o!=="XMP "){let u=s+s%2,c=e.slice(r,r+8+u);t.push(c)}let i=s+s%2;r+=8+i}return a.ok({chunks:t,firstChunkType:n})}function Xn(e){if(e.length===0)return null;let t=fe(e);if(t.length===0)return null;let n=t.length,r=n+n%2,o=new Uint8Array(8+r);return o.set(new TextEncoder().encode("EXIF")),ue(o,4,n),o.set(t,8),o}function Hn(e){let t=new TextEncoder().encode(e),n=t.length,r=n+n%2,o=new Uint8Array(8+r);return o.set(new TextEncoder().encode("XMP ")),ue(o,4,n),o.set(t,8),o}function Ae(e){return e.replace(/\r\n/g,`
1
+ var sdMetadata=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t=(e,t)=>t===void 0?[]:[{type:`tEXt`,keyword:e,text:t}],n=(e,t)=>t===void 0?[]:[{type:`iTXt`,keyword:e,compressionFlag:0,compressionMethod:0,languageTag:``,translatedKeyword:``,text:t}],r=(e,t)=>e.find(e=>e.source.type===t),i=e=>{if(e!==void 0)return typeof e==`string`?e:JSON.stringify(e)};function a(e){return e.replace(/[\u0100-\uffff]/g,e=>`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`)}function o(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,(e,t)=>String.fromCharCode(Number.parseInt(t,16)))}function s(e){return/[^\x00-\xFF]/.test(e)}function c(e,r,i){if(r===void 0)return[];switch(i){case`dynamic`:return(s(r)?`iTXt`:`tEXt`)==`iTXt`?n(e,r):t(e,r);case`text-unicode-escape`:return t(e,a(r));case`text-utf8-raw`:return t(e,r)}}function l(e,t){return e.flatMap(([e,n])=>c(e,n,t[e]??t.default))}let u={ok:e=>({ok:!0,value:e}),error:e=>({ok:!1,error:e})};function d(e){return e instanceof ArrayBuffer?new Uint8Array(e):e}function f(e){return e.length<8?!1:e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71&&e[4]===13&&e[5]===10&&e[6]===26&&e[7]===10}function p(e){return e.length<2?!1:e[0]===255&&e[1]===216}function m(e){return e.length<12?!1:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80}function h(e){return f(e)?`png`:p(e)?`jpeg`:m(e)?`webp`:null}function g(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t)}function _(e,t,n){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(t,n)}function v(e,t){return(e[t]??0)|(e[t+1]??0)<<8|(e[t+2]??0)<<16}function y(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t)}function b(e,t){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t,!0)}function x(e,t,n){return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(t,n)}function S(e,t){return String.fromCharCode(e[t]??0,e[t+1]??0,e[t+2]??0,e[t+3]??0)}function C(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t,n)}function w(e,t,n,r){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint16(t,n,r)}function ee(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n)}function te(e,t,n){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n,!0)}function T(e,t,n,r){new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(t,n,r)}let E=new TextEncoder().encode(`http://ns.adobe.com/xap/1.0/\0`);function ne(e,t){if(t+E.length>e.length)return!1;for(let n=0;n<E.length;n++)if(e[t+n]!==E[n])return!1;return!0}function re(e){return e===`XML:com.adobe.xmp`}function ie(e){if(e.length>65535)return null;let t=[[`CreatorTool`,ae(e,`xmp`,`CreatorTool`)],[`UserComment`,oe(e,`exif`,`UserComment`)],[`parameters`,oe(e,`dc`,`description`)]].filter(e=>e[1]!==void 0);return t.length>0?Object.fromEntries(t):null}function ae(e,t,n){let r=RegExp(`<${t}:${n}>([^<]*)</${t}:${n}>`),i=e.match(r);return i?.[1]?se(i[1]):void 0}function oe(e,t,n){let r=RegExp(`<${t}:${n}>[\\s\\S]*?<rdf:li[^>]*(?<!/)>([\\s\\S]*?)</rdf:li>[\\s\\S]*?</${t}:${n}>`),i=e.match(r);return i?.[1]?se(i[1]):void 0}function se(e){return e.replace(/&#x([0-9a-fA-F]+);/g,(e,t)=>{try{return String.fromCodePoint(parseInt(t,16))}catch{return e}}).replace(/&#(\d+);/g,(e,t)=>{try{return String.fromCodePoint(parseInt(t,10))}catch{return e}}).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&apos;/g,`'`).replace(/&amp;/g,`&`)}let ce=34665;function le(e){let t=e.filter(e=>e.source.type===`exifImageDescription`||e.source.type===`exifMake`),n=e.filter(e=>e.source.type===`exifUserComment`);if(t.length===0&&n.length===0)return new Uint8Array;let r=[],i=[];for(let e of t)if(e.source.type===`exifImageDescription`){let t=pe(e.data,e.source.prefix);r.push({tag:270,type:2,data:t})}else if(e.source.type===`exifMake`){let t=pe(e.data,e.source.prefix);r.push({tag:271,type:2,data:t})}for(let e of n)if(e.source.type===`exifUserComment`){let t=fe(e.data);i.push({tag:37510,type:7,data:t})}let a=i.length>0;a&&r.push({tag:ce,type:4,data:new Uint8Array(4)}),r.sort((e,t)=>e.tag-t.tag),i.sort((e,t)=>e.tag-t.tag);let o=r.length,s=2+12*o+4,c=i.length,l=a?2+12*c+4:0,u=8+s,d=u+l;if(a){let e=r.find(e=>e.tag===ce);e&&T(e.data,0,u,!0)}let f=new Map;for(let e of[...r,...i])e.data.length>4&&(f.set(e,d),d+=e.data.length,e.data.length%2!=0&&(d+=1));let p=new Uint8Array(d);p[0]=73,p[1]=73,w(p,2,42,!0),T(p,4,8,!0);let m=8;w(p,m,o,!0),m+=2;for(let e of r)ue(p,m,e,f.get(e),!0),m+=12;if(T(p,m,0,!0),m+=4,a){w(p,m,c,!0),m+=2;for(let e of i)ue(p,m,e,f.get(e),!0),m+=12;T(p,m,0,!0)}for(let[e,t]of f)p.set(e.data,t);return p}function ue(e,t,n,r,i){w(e,t,n.tag,i),w(e,t+2,n.type,i),T(e,t+4,n.data.length,i),n.data.length<=4?e.set(n.data,t+8):T(e,t+8,r??0,i)}let de=new Uint8Array([85,78,73,67,79,68,69,0]);function fe(e){let t=new Uint8Array(8+e.length*2),n=new DataView(t.buffer);t.set(de);for(let t=0;t<e.length;t++)n.setUint16(8+t*2,e.charCodeAt(t),!0);return t}function pe(e,t){let n=t?`${t}: ${e}`:e,r=new TextEncoder().encode(n),i=new Uint8Array(r.length+1);return i.set(r,0),i[r.length]=0,i}let D=new Uint8Array([69,120,105,102,0,0]);function O(e,t){if(!p(e))return u.error({type:`invalidSignature`});let n=t.filter(e=>e.source.type===`jpegCom`),r=t.filter(e=>e.source.type===`xmpPacket`),i=t.filter(e=>e.source.type===`exifUserComment`||e.source.type===`exifImageDescription`||e.source.type===`exifMake`),a=me(e);if(!a.ok)return a;let{beforeSos:o,scanData:s}=a.value,c=i.length>0?he(i):null,l=r[0],d=l?ge(l.data):null,f=n.map(e=>_e(e.data)).filter(e=>e!==null),m=2;c&&(m+=c.length),d&&(m+=d.length);for(let e of o)m+=e.length;for(let e of f)m+=e.length;m+=s.length;let h=new Uint8Array(m),g=0;h[g++]=255,h[g++]=216,c&&(h.set(c,g),g+=c.length),d&&(h.set(d,g),g+=d.length);for(let e of o)h.set(e,g),g+=e.length;for(let e of f)h.set(e,g),g+=e.length;return h.set(s,g),u.ok(h)}function me(e){let t=[],n=2;for(;n<e.length-1;){if(e[n]!==255)return u.error({type:`corruptedStructure`,message:`Expected marker at offset ${n}`});for(;e[n]===255&&n<e.length-1;)n++;let r=e[n];if(n++,r===218){let r=e.slice(n-2);return u.ok({beforeSos:t,scanData:r})}if(r===217)return u.ok({beforeSos:t,scanData:new Uint8Array([255,217])});if(n+2>e.length)return u.error({type:`corruptedStructure`,message:`Unexpected end of file`});let i=g(e,n),a=n-2,o=n+i;if(o>e.length)return u.error({type:`corruptedStructure`,message:`Segment extends beyond file`});let s=r===225&&n+2+6<=e.length&&e[n+2]===69&&e[n+3]===120&&e[n+4]===105&&e[n+5]===102&&e[n+6]===0&&e[n+7]===0,c=r===225&&!s&&ne(e,n+2);!s&&!c&&r!==254&&t.push(e.slice(a,o)),n=o}return u.error({type:`corruptedStructure`,message:`No SOS marker found`})}function he(e){let t=le(e);if(t.length===0)return new Uint8Array;let n=2+D.length+t.length,r=new Uint8Array(2+n);return r[0]=255,r[1]=225,C(r,2,n),r.set(D,4),r.set(t,4+D.length),r}function ge(e){let t=new TextEncoder().encode(e),n=2+E.length+t.length;if(n>65535)return null;let r=new Uint8Array(2+n);return r[0]=255,r[1]=225,C(r,2,n),r.set(E,4),r.set(t,4+E.length),r}function _e(e){let t=new TextEncoder().encode(e),n=2+t.length;if(n>65535)return null;let r=new Uint8Array(2+n);return r[0]=255,r[1]=254,C(r,2,n),r.set(t,4),r}let k=new Uint8Array([137,80,78,71,13,10,26,10]);function A(e,t){if(!f(e))return u.error({type:`invalidSignature`});if(ve(e)===-1)return u.error({type:`noIhdrChunk`});let n=ye(e),r=t.map(e=>e.type===`tEXt`?be(e):xe(e)),i=k.length+n.ihdr.length+r.reduce((e,t)=>e+t.length,0)+n.others.reduce((e,t)=>e+t.length,0),a=new Uint8Array(i),o=0;a.set(k,o),o+=k.length,a.set(n.ihdr,o),o+=n.ihdr.length;for(let e of r)a.set(e,o),o+=e.length;for(let e of n.others)a.set(e,o),o+=e.length;return u.ok(a)}function ve(e){let t=k.length;if(t+8>e.length)return-1;let n=y(e,t);return S(e,t+4)===`IHDR`?t+4+4+n+4:-1}function ye(e){let t=[],n=k.length,r=new Uint8Array;for(;n<e.length;){let i=n;if(n+4>e.length)break;let a=y(e,n);if(n+=4,n+4>e.length)break;let o=S(e,n);if(n+=4,n+a+4>e.length)break;n+=a,n+=4;let s=n,c=e.slice(i,s);if(o===`IHDR`?r=c:o!==`tEXt`&&o!==`iTXt`&&t.push(c),o===`IEND`)break}return{ihdr:r,others:t}}function be(e){let t=Ce(e.keyword),n=j(e.text),r=new Uint8Array(t.length+1+n.length);return r.set(t,0),r[t.length]=0,r.set(n,t.length+1),Se(`tEXt`,r)}function xe(e){let t=j(e.keyword),n=j(e.languageTag),r=j(e.translatedKeyword),i=j(e.text),a=t.length+1+1+1+n.length+1+r.length+1+i.length,o=new Uint8Array(a),s=0;return o.set(t,s),s+=t.length,o[s++]=0,o[s++]=e.compressionFlag,o[s++]=e.compressionMethod,o.set(n,s),s+=n.length,o[s++]=0,o.set(r,s),s+=r.length,o[s++]=0,o.set(i,s),Se(`iTXt`,o)}function Se(e,t){let n=new Uint8Array(8+t.length+4);ee(n,0,t.length),n.set(new TextEncoder().encode(e),4),n.set(t,8);let r=Ee(n.slice(4,8+t.length));return ee(n,8+t.length,r),n}function Ce(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function j(e){return new TextEncoder().encode(e)}let we=Te();function Te(){let e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)n&1?n=3988292384^n>>>1:n>>>=1;e[t]=n>>>0}return e}function Ee(e){let t=4294967295;for(let n=0;n<e.length;n++)t=(we[(t^(e[n]??0))&255]??0)^t>>>8;return(t^4294967295)>>>0}let De=new Uint8Array([82,73,70,70]),Oe=new Uint8Array([87,69,66,80]);function ke(e,t){if(!m(e))return u.error({type:`invalidSignature`});let n=t.filter(e=>e.source.type===`xmpPacket`),r=t.filter(e=>e.source.type!==`xmpPacket`),i=je(e);if(!i.ok)return i;let{chunks:a}=i.value,o=Me(r),s=n[0],c=s?Ne(s.data):null,l=[];o&&l.push(o),c&&l.push(c);let d=4;for(let e of a)d+=e.length;for(let e of l)d+=e.length;let f=new Uint8Array(8+d),p=0;f.set(De,p),p+=4,te(f,p,d),p+=4,f.set(Oe,p),p+=4;let h=!1;for(let e of a)if(f.set(e,p),p+=e.length,!h&&l.length>0&&Ae(e)){for(let e of l)f.set(e,p),p+=e.length;h=!0}if(!h)for(let e of l)f.set(e,p),p+=e.length;return u.ok(f)}function Ae(e){if(e.length<4)return!1;let t=S(e,0);return t===`VP8 `||t===`VP8L`||t===`VP8X`}function je(e){let t=[],n=``,r=12;for(;r<e.length-8;){let i=S(e,r),a=b(e,r+4);if(n||=i,r+8+a>e.length)return u.error({type:`invalidRiffStructure`,message:`Chunk extends beyond file at offset ${r}`});if(i!==`EXIF`&&i!==`XMP `){let n=a+a%2,i=e.slice(r,r+8+n);t.push(i)}let o=a+a%2;r+=8+o}return u.ok({chunks:t,firstChunkType:n})}function Me(e){if(e.length===0)return null;let t=le(e);if(t.length===0)return null;let n=t.length,r=n+n%2,i=new Uint8Array(8+r);return i.set(new TextEncoder().encode(`EXIF`)),te(i,4,n),i.set(t,8),i}function Ne(e){let t=new TextEncoder().encode(e),n=t.length,r=n+n%2,i=new Uint8Array(8+r);return i.set(new TextEncoder().encode(`XMP `)),te(i,4,n),i.set(t,8),i}function M(e){return e.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
- `)}function zn(e){return e.flatMap((t,n)=>{let r=t.center?` [${t.center.x}, ${t.center.y}]`:"";return[`# Character ${n+1}${r}:`,Ae(t.prompt)]})}function Vn(e,t){let n=e.hires??e.upscale,r={Steps:e.sampling?.steps,Sampler:e.sampling?.sampler,"Schedule type":e.sampling?.scheduler,"CFG scale":e.sampling?.cfg,Seed:e.sampling?.seed,Size:e.width>0&&e.height>0?`${e.width}x${e.height}`:void 0,"Model hash":e.model?.hash,Model:e.model?.name,"Clip skip":e.sampling?.clipSkip,"Denoising strength":n?.denoise,"Hires upscale":n?.scale,"Hires steps":n?.steps,"Hires upscaler":n?.upscaler};return Object.entries({...r,...t}).filter(([,o])=>o!==void 0).map(([o,s])=>`${o}: ${s}`).join(", ")}function H(e){return[Ae(e.prompt),e.characterPrompts?.length?zn(e.characterPrompts).join(`
4
- `):void 0,e.negativePrompt?`Negative prompt: ${Ae(e.negativePrompt)}`:void 0,Vn(e,e.extras)||void 0].filter(t=>t!==void 0).join(`
5
- `)}function Ie(e){switch(e.format){case"png":return e.chunks.map(t=>t.text).join(`
3
+ `)}function Pe(e){return e.flatMap((e,t)=>{let n=e.center?` [${e.center.x}, ${e.center.y}]`:``;return[`# Character ${t+1}${n}:`,M(e.prompt)]})}function Fe(e,t){let n=e.hires??e.upscale,r={Steps:e.sampling?.steps,Sampler:e.sampling?.sampler,"Schedule type":e.sampling?.scheduler,"CFG scale":e.sampling?.cfg,Seed:e.sampling?.seed,Size:e.width>0&&e.height>0?`${e.width}x${e.height}`:void 0,"Model hash":e.model?.hash,Model:e.model?.name,"Clip skip":e.sampling?.clipSkip,"Denoising strength":n?.denoise,"Hires upscale":n?.scale,"Hires steps":n?.steps,"Hires upscaler":n?.upscaler};return Object.entries({...r,...t}).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}: ${t}`).join(`, `)}function N(e){return[M(e.prompt),e.characterPrompts?.length?Pe(e.characterPrompts).join(`
4
+ `):void 0,e.negativePrompt?`Negative prompt: ${M(e.negativePrompt)}`:void 0,Fe(e,e.extras)||void 0].filter(e=>e!==void 0).join(`
5
+ `)}function Ie(e){switch(e.format){case`png`:return e.chunks.map(e=>e.text).join(`
6
6
 
7
- `);case"jpeg":case"webp":return e.segments.map(t=>t.data).join(`
7
+ `);case`jpeg`:case`webp`:return e.segments.map(e=>e.data).join(`
8
8
 
9
- `)}}function He(e){if("status"in e)switch(e.status){case"success":return H(e.metadata);case"unrecognized":return Ie(e.raw);case"empty":case"invalid":return""}return H(e)}function Re(e,t){let n=W(e),r=L(n);if(!r)return a.error({type:"unsupportedFormat"});let o=H(t),s=Bn(r,n,o);return s.ok?a.ok(s.value):a.error({type:"writeFailed",message:s.error.type})}function Bn(e,t,n){switch(e){case"png":return Q(t,k("parameters",n,"dynamic"));case"jpeg":return Y(t,[{source:{type:"exifUserComment"},data:n}]);case"webp":return ee(t,[{source:{type:"exifUserComment"},data:n}])}}function g(e){let t=Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0));return Object.keys(t).length===0?void 0:t}function te(e,t){let n=e.parameters??e.UserComment;if(!n)return a.error({type:"unsupportedFormat"});let{prompt:r,negativePrompt:o,settings:s}=$n(n),i=Kn(s),u=i.get("Size")??"0x0",[c,m]=ze(u),y=i.get("Model"),x=i.get("Model hash"),h=i.get("Sampler"),S=i.get("Schedule type"),f=F(i.get("Steps")),d=F(i.get("CFG scale")??i.get("CFG Scale")),Ce=F(i.get("Seed")),v=F(i.get("Clip skip")),T=F(i.get("Hires upscale")),l=i.get("Hires upscaler"),C=F(i.get("Hires steps")),cn=F(i.get("Denoising strength")),pn=i.get("Hires size"),[De]=ze(pn??""),mn=T??(De>0?De/c:void 0);return a.ok({software:t,prompt:r,negativePrompt:o,width:c,height:m,model:g({name:y,hash:x}),sampling:g({sampler:h,scheduler:S,steps:f,cfg:d,seed:Ce,clipSkip:v}),hires:g({scale:mn,upscaler:l,steps:C,denoise:cn})})}function $n(e){let t=e.indexOf("Negative prompt:"),n=e.indexOf("Steps:");if(t===-1&&n===-1)return{prompt:e.trim(),negativePrompt:"",settings:""};if(t===-1){let o=e.lastIndexOf(`
10
- `,n);return{prompt:e.slice(0,o).trim(),negativePrompt:"",settings:e.slice(o).trim()}}if(n===-1)return{prompt:e.slice(0,t).trim(),negativePrompt:e.slice(t+16).trim(),settings:""};let r=e.lastIndexOf(`
11
- `,n);return{prompt:e.slice(0,t).trim(),negativePrompt:e.slice(t+16,r).trim(),settings:e.slice(r).trim()}}function Kn(e){let t=new Map;if(!e||e.length>1e4)return t;let n=/([A-Za-z][A-Za-z0-9 ]*?):\s*([^,]+?)(?=,\s*[A-Za-z][A-Za-z0-9 ]*?:|$)/g;for(let r of e.matchAll(n)){let o=(r[1]??"").trim(),s=(r[2]??"").trim();t.set(o,s)}return t}function ze(e){let t=e.match(/(\d+)x(\d+)/);return t?[Number.parseInt(t[1]??"0",10),Number.parseInt(t[2]??"0",10)]:[0,0]}function F(e){if(e===void 0)return;let t=Number.parseFloat(e);return Number.isNaN(t)?void 0:t}function p(e){try{let t=JSON.parse(e);return Yn(t)}catch{return{ok:!1,error:{type:"parseError",message:"Invalid JSON"}}}}function Yn(e){if(e===null)return{ok:!0,type:"null",value:null};if(Array.isArray(e))return{ok:!0,type:"array",value:e};switch(typeof e){case"object":return{ok:!0,type:"object",value:e};case"string":return{ok:!0,type:"string",value:e};case"number":return{ok:!0,type:"number",value:e};case"boolean":return{ok:!0,type:"boolean",value:e};default:return{ok:!1,error:{type:"parseError",message:"Unexpected JSON type"}}}}var Ve=["KSampler","KSamplerAdvanced","SamplerCustomAdvanced","SamplerCustom","DetailerForEach"],Zn=["EmptyLatentImage"],qn=["SDXL Empty Latent Image (rgthree)"],Qn=["CheckpointLoaderSimple","CheckpointLoader"],er=["UNETLoader"],tr=["CLIPSetLastLayer"],nr=["UpscaleModelLoader"],Be=["ImageScale","ImageScaleBy"],$e=["LatentUpscale","LatentUpscaleBy"],Ke=["VAEEncode","VAEEncodeTiled"];function Ye(e){let t={};for(let n of Object.values(e)){let r=n.class_type;!t.sampler&&Ve.includes(r)?t.sampler=n:!t.latentImage&&Zn.includes(r)?t.latentImage=n:!t.latentImageRgthree&&qn.includes(r)?t.latentImageRgthree=n:!t.checkpoint&&Qn.includes(r)?t.checkpoint=n:!t.unetLoader&&er.includes(r)?t.unetLoader=n:!t.clipSetLastLayer&&tr.includes(r)?t.clipSetLastLayer=n:!t.hiresModelUpscale&&nr.includes(r)?t.hiresModelUpscale=n:!t.hiresImageScale&&Be.includes(r)?t.hiresImageScale=n:!t.latentUpscale&&$e.includes(r)?t.latentUpscale=n:!t.vaeEncode&&Ke.includes(r)&&(t.vaeEncode=n)}return t}function D(e,t){if(R(t))return e[String(t[0])]}function R(e){return Array.isArray(e)&&e.length===2&&(typeof e[0]=="string"||typeof e[0]=="number")&&typeof e[1]=="number"}function Ze(e,t,n=10){if(n<=0)return"";let r=e[t];if(!r)return"";let o=r.inputs.text??r.inputs.prompt??r.inputs.Text;return typeof o=="string"?o:R(o)?Ze(e,String(o[0]),n-1):""}function rr(e,t){let n=D(e,t.inputs.guider);return n||t}function qe(e,t){if(!t)return{promptText:"",negativeText:""};let n=rr(e,t);return{promptText:_e(e,n.inputs.positive,"positive"),negativeText:_e(e,n.inputs.negative,"negative")}}function _e(e,t,n,r=10){if(r<=0||!R(t))return"";let o=String(t[0]),s=Ze(e,o);if(s)return s;let i=e[o];if(!i)return"";let u=i.inputs[n];return _e(e,u,n,r-1)}function Qe(e,t){if(e){let n=Number(e.inputs.width)||0,r=Number(e.inputs.height)||0;if(n>0&&r>0)return{width:n,height:r}}if(t&&typeof t.inputs.dimensions=="string"){let n=t.inputs.dimensions.match(/^(\d+)\s*x\s*(\d+)/);if(n?.[1]&&n[2])return{width:Number.parseInt(n[1],10),height:Number.parseInt(n[2],10)}}return{width:0,height:0}}function Ne(e,t){if(!t)return;if(t.class_type==="SamplerCustomAdvanced")return or(e,t);if(t.class_type==="SamplerCustom")return sr(e,t);let n=t.inputs.seed;return R(n)&&(n=e[String(n[0])]?.inputs.seed),{seed:n,steps:t.inputs.steps,cfg:t.inputs.cfg,sampler:t.inputs.sampler_name,scheduler:t.inputs.scheduler,denoise:t.inputs.denoise}}function or(e,t){let n=D(e,t.inputs.noise),r=D(e,t.inputs.guider),o=D(e,t.inputs.sampler),s=D(e,t.inputs.sigmas);return{seed:n?.inputs.noise_seed,steps:s?.inputs.steps,cfg:r?.inputs.cfg,sampler:o?.inputs.sampler_name,scheduler:s?.inputs.scheduler,denoise:s?.inputs.denoise}}function sr(e,t){let n=D(e,t.inputs.sampler),r=D(e,t.inputs.sigmas),o=t.inputs.noise_seed;return R(o)&&(o=e[String(o[0])]?.inputs.seed),{seed:o,steps:r?.inputs.steps,cfg:t.inputs.cfg,sampler:n?.inputs.sampler_name,scheduler:r?.inputs.scheduler,denoise:r?.inputs.denoise}}function et(e,t){if(e?.inputs?.ckpt_name)return{name:String(e.inputs.ckpt_name)};if(t?.inputs?.unet_name)return{name:String(t.inputs.unet_name)}}function tt(e){if(!e)return;let t=e.inputs.stop_at_clip_layer;if(typeof t=="number")return-t}function le(e,t){if(!(t<=0||e<=0))return Math.round(e/t*100)/100}function ir(e,t){let n=t.inputs.latent_image;if(!R(n))return!1;let r=e[String(n[0])];if(!r)return!1;if($e.includes(r.class_type))return!0;if(!Ke.includes(r.class_type))return!1;let o=r.inputs.pixels;if(!R(o))return!1;let s=e[String(o[0])];return s?Be.includes(s.class_type):!1}function nt(e){return Object.values(e).find(t=>Ve.includes(t.class_type)&&ir(e,t))}function rt(e,t){let n=e.extraMetadata;if(typeof n=="string"){let r=p(n);if(r.ok&&r.type==="object")return r.value}if(t?.extraMetadata){let r=p(t.extraMetadata);if(r.ok&&r.type==="object")return r.value}}function ot(e){if(!e)return;let t=ar(e),n=ur(e);return g({prompt:e.prompt,negativePrompt:e.negativePrompt,width:e.width,height:e.height,model:e.baseModel?{name:e.baseModel}:void 0,...n,...t})}function ar(e){if(!e.transformations)return{};let t=e.transformations.find(r=>r.type==="upscale");if(!t?.upscaleWidth)return{};let n=le(t.upscaleWidth,e.width??0);return n===void 0?{}:{upscale:{scale:n}}}function ur(e){return e.seed===void 0&&e.steps===void 0&&e.cfgScale===void 0&&e.sampler===void 0?{}:{sampling:{seed:e.seed,steps:e.steps,cfg:e.cfgScale,sampler:e.sampler}}}var cr=["extra","extraMetadata","resource-stack"];function ne(e){let t=pr(e);if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in prompt entry"});let r=n.value,o=Oe(r),s=ot(rt(r,e)),i=dr(s,o);return a.ok({software:"comfyui",nodes:Object.fromEntries(Object.entries(r).filter(([u])=>!cr.includes(u))),...i})}function st(e){if(!e||typeof e.denoise!="number")return e;if(e.denoise>=1){let{denoise:t,...n}=e;return n}return e}function it(e){return e.replace(/\0+$/,"").replace(/:\s*NaN\b/g,": null")}function pr(e){if(e.prompt)return it(e.prompt);let t=[e.UserComment,e.ImageDescription,e.Make,e.Prompt,e.Workflow];for(let n of t)if(n&&n.startsWith("{")){let r=it(n),o=p(r);if(!o.ok||o.type!=="object")continue;if(o.value.prompt&&typeof o.value.prompt=="object")return JSON.stringify(o.value.prompt);if(Object.values(o.value).some(i=>i&&typeof i=="object"&&"class_type"in i))return r}}function Oe(e){let t=Ye(e),{promptText:n,negativeText:r}=qe(e,t.sampler),{width:o,height:s}=Qe(t.latentImage,t.latentImageRgthree),i=nt(e),u=st(i?Ne(e,i):void 0),c=mr(e,t,o),m=t.hiresModelUpscale?.inputs.model_name,y=st(Ne(e,t.sampler)),x=tt(t.clipSetLastLayer);return g({prompt:n||void 0,negativePrompt:r||void 0,width:o>0?o:void 0,height:s>0?s:void 0,model:et(t.checkpoint,t.unetLoader),sampling:g({...y,clipSkip:x}),...fr(m,c,u)})}function mr(e,t,n){let r=t.latentUpscale?.inputs;if(r?.scale_by!==void 0)return r.scale_by;let o=t.hiresImageScale?.inputs.width;if(o!==void 0){if(R(o)){let s=e[String(o[0])];return typeof s?.inputs.clip_scale=="number"?s.inputs.clip_scale:void 0}if(typeof o=="number")return le(o,n)}}function fr(e,t,n){return!e&&t===void 0&&!n?{}:n?{hires:{upscaler:e,scale:t,steps:n.steps,denoise:n.denoise}}:e?{upscale:{upscaler:e,scale:t}}:{}}function at(e,t){if(!e&&!t)return;let n={};for(let r of[e,t])if(r)for(let[o,s]of Object.entries(r))s!==void 0&&(n[o]=s);return Object.keys(n).length>0?n:void 0}function dr(e,t){let n=at(e?.upscale,t?.upscale),r=at(e?.hires,t?.hires);return{prompt:t?.prompt??e?.prompt??"",negativePrompt:t?.negativePrompt??e?.negativePrompt??"",width:t?.width??e?.width??0,height:t?.height??e?.height??0,...g({model:t?.model??e?.model,sampling:t?.sampling??e?.sampling,hires:r,upscale:n})}}var lr="invokeai_metadata",gr="generation_data",yr="smproj",Fe="extraMetadata",z="sui_image_params",mt="swarm_version",hr="class_type",ut="noise_schedule",ct="v4_prompt",xr="uncond_scale",Sr="civitai:",br="Civitai resources:",pt="RuinedFooocus",kr="use_stable_diffusion_model",Cr='"Model"',wr='"resolution"',vr='"base_model"';function ft(e){let t=Tr(e);if(t)return t;let n=Pr(e);if(n)return n;let r=e.parameters??e.UserComment??e.Comment;return r?Mr(r):null}function dt(e){return lr in e?"invokeai":gr in e?"tensorart":yr in e?"stability-matrix":Fe in e?"civitai":null}function Tr(e){if(e.Software?.startsWith("NovelAI"))return"novelai";if(e.CreatorTool?.startsWith("Draw Things"))return"draw-things";let t=dt(e);if(t)return t;if("fooocus_scheme"in e)return"fooocus";if("use_stable_diffusion_model"in e)return"easydiffusion";if(e.parameters?.includes(z))return"swarmui";let r=e.UserComment??e.Comment;return r?.startsWith("{")?Er(r):null}function Er(e){let t=p(e);if(!t.ok||t.type!=="object")return null;let n=t.value,r=dt(n);if(r)return r;if("prompt"in n&&"workflow"in n){let o=n.workflow,s=n.prompt,i=typeof o=="object"||typeof s=="object",u=typeof o=="string"&&o.startsWith("{")||typeof s=="string"&&s.startsWith("{");if(i||u)return"comfyui"}if(z in n)return"swarmui";if("prompt"in n&&"parameters"in n){let o=String(n.parameters||"");if(o.includes(z)||o.includes(mt))return"swarmui"}return null}function Pr(e){if("prompt"in e&&"workflow"in e||"Prompt"in e&&"Workflow"in e||"workflow"in e||"Workflow"in e)return"comfyui";let t=e.prompt??e.Prompt;if(t?.startsWith("{")){if(t.includes(z))return"swarmui";if(t.includes(`"${Fe}"`))return"civitai";if(t.includes(hr))return"comfyui"}return null}function Mr(e){return e.startsWith("{")?Ur(e):Ar(e)}function Ur(e){return e.includes(z)?"swarmui":e.includes(`"software":"${pt}"`)||e.includes(`"software": "${pt}"`)?"ruined-fooocus":e.includes(`"${kr}"`)?"easydiffusion":e.includes(Sr)||e.includes(`"${Fe}"`)?"civitai":e.includes(`"${ct}"`)||e.includes(`"${ut}"`)||e.includes(`"${xr}"`)||e.includes('"Software":"NovelAI"')||e.includes(`\\"${ut}\\"`)||e.includes(`\\"${ct}\\"`)?"novelai":e.includes(Cr)&&e.includes(wr)?"hf-space":e.includes('"prompt"')&&e.includes(vr)?"fooocus":e.includes('"prompt"')||e.includes('"nodes"')?"comfyui":null}function Ar(e){if(e.includes(z)||e.includes(mt))return"swarmui";let t=e.match(/Version:\s*([^\s,]+)/);if(t){let n=t[1];if(n&&/^v\d/.test(n))return"sd-webui";if(n==="classic")return"forge-classic";if(n==="neo"||n?.startsWith("neo"))return"forge-neo";if(n?.startsWith("f")&&/^f\d/.test(n))return/^f\d+\.\d+(\.\d+)?-v/.test(n)?"easy-reforge":/^f\d+\.\d+(\.\d+)?v\d+-v/.test(n)?"reforge":"forge";if(n?.startsWith("Fooocus"))return"fooocus";if(n==="ComfyUI")return"comfyui"}return e.includes("App: SD.Next")||e.includes("App:SD.Next")?"sd-next":e.includes(br)?"civitai":e.includes("Steps:")||e.includes("Sampler:")||e.includes("Negative prompt:")?"sd-webui":null}function lt(e){let t=e.UserComment?.startsWith("{")?e.UserComment:e.Comment?.startsWith("{")?e.Comment:void 0;if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);return!n.ok||n.type!=="object"?a.error({type:"parseError",message:"Invalid JSON in Draw Things metadata"}):Rr(n.value)}function Ir(e){if(typeof e!="string")return{width:0,height:0};let t=e.match(/^(\d+)x(\d+)$/);return t?{width:Number(t[1]),height:Number(t[2])}:{width:0,height:0}}function Rr(e){let t=c=>{let m=e[c];return typeof m=="string"?m:void 0},n=c=>{let m=e[c];if(typeof m=="number"&&m!==0)return m},r=(t("c")??"").trim(),o=(t("uc")??"").trim(),{width:s,height:i}=Ir(e.size),u={software:"draw-things",prompt:r,negativePrompt:o,width:s,height:i,model:g({name:t("model")}),sampling:g({sampler:t("sampler"),steps:n("steps"),cfg:n("scale"),seed:n("seed"),denoise:n("strength")})};return a.ok(u)}function _r(e){if(!e)return;let t=e.replace(/\\/g,"/").split("/");return t[t.length-1]}function yt(e){if("use_stable_diffusion_model"in e)return gt(e);let t=e.UserComment?.startsWith("{")?e.UserComment:e.parameters?.startsWith("{")?e.parameters:void 0;if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);return!n.ok||n.type!=="object"?a.error({type:"parseError",message:"Invalid JSON in Easy Diffusion metadata"}):gt(n.value)}function gt(e){let t=c=>{let m=e[c];return typeof m=="string"?m:void 0},n=c=>Number(e[c])||void 0,r=(t("prompt")??"").trim(),o=(t("negative_prompt")??"").trim(),s=t("use_stable_diffusion_model"),i=g({upscaler:t("use_upscale"),scale:n("upscale_amount")}),u={software:"easydiffusion",prompt:r,negativePrompt:o,width:n("width")??0,height:n("height")??0,model:g({name:_r(s),vae:t("use_vae_model")}),sampling:g({sampler:t("sampler_name"),steps:n("num_inference_steps"),cfg:n("guidance_scale"),seed:n("seed"),clipSkip:n("clip_skip"),denoise:n("prompt_strength")}),...i?{upscale:i}:{}};return a.ok(u)}function Nr(e){if(!e)return{width:0,height:0};let t=e.match(/\(\s*(\d+)\s*,\s*(\d+)\s*\)/);return!t?.[1]||!t[2]?{width:0,height:0}:{width:Number(t[1]),height:Number(t[2])}}function ht(e){let t=e.parameters??e.UserComment;if(!t||!t.startsWith("{"))return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in Fooocus metadata"});let r=n.value,{width:o,height:s}=Nr(r.resolution),i={software:"fooocus",prompt:r.prompt?.trim()??"",negativePrompt:r.negative_prompt?.trim()??"",width:o,height:s,model:g({name:r.base_model,hash:r.base_model_hash,vae:r.vae}),sampling:g({sampler:r.sampler,scheduler:r.scheduler,steps:r.steps,cfg:r.guidance_scale,seed:r.seed,clipSkip:r.clip_skip})};return a.ok(i)}function xt(e){let t=e.parameters??e.UserComment;if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in parameters entry"});let r=n.value,o=c=>{let m=c?.match(/(\d+)\s*x\s*(\d+)/);return m?.[1]&&m?.[2]?{width:Number.parseInt(m[1],10),height:Number.parseInt(m[2],10)}:{width:0,height:0}},{width:s,height:i}=o(r.resolution),u={software:"hf-space",prompt:r.prompt??"",negativePrompt:r.negative_prompt??"",width:s,height:i,model:g({name:r.Model,hash:r["Model hash"]}),sampling:g({sampler:r.sampler,steps:r.num_inference_steps,cfg:r.guidance_scale,seed:r.seed}),hires:r.use_upscaler?g({upscaler:r.use_upscaler.upscale_method,denoise:r.use_upscaler.upscaler_strength,scale:r.use_upscaler.upscale_by,steps:r.use_upscaler.upscale_steps}):void 0};return a.ok(u)}function G(e,t){if(!e.UserComment?.startsWith("{"))return;let n=p(e.UserComment);if(!n.ok||n.type!=="object")return;let r=n.value[t];if(typeof r=="string")return r;if(typeof r=="object"&&r!==null)return JSON.stringify(r)}function Or(e){return e.invokeai_metadata??G(e,"invokeai_metadata")}function St(e){let t=Or(e);if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in invokeai_metadata entry"});let r=n.value,o=r.width??0,s=r.height??0,i=Fr(r);return a.ok({software:"invokeai",prompt:r.positive_prompt??"",negativePrompt:r.negative_prompt??"",width:o,height:s,model:g({name:r.model?.name,hash:r.model?.hash}),sampling:g({seed:r.seed,steps:r.steps,cfg:r.cfg_scale,sampler:r.scheduler}),...i})}function Fr(e){if(!e.upscale_model?.name&&e.upscale_scale===void 0)return{};let t=g({upscaler:e.upscale_model?.name,scale:e.upscale_scale});return t?{upscale:t}:{}}function bt(e){let t=e.UserComment??e.Comment;if(!t)return a.error({type:"parseError",message:"Missing Comment/UserComment entry"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in Comment entry"});let r=n.value,o=r.width??0,s=r.height??0,i=r.v4_prompt?.caption?.base_caption??r.prompt??"",u=r.v4_negative_prompt?.caption?.base_caption??r.uc??"",c=r.v4_prompt?.caption?.char_captions,m=c&&c.length>0?c.map(y=>y.char_caption?{prompt:y.char_caption,center:y.centers?.[0]}:null).filter(y=>y!==null):void 0;return a.ok({software:"novelai",prompt:i,negativePrompt:u,width:o,height:s,sampling:g({steps:r.steps,cfg:r.scale,seed:r.seed,sampler:r.sampler,scheduler:r.noise_schedule}),characterPrompts:m,useCoords:m?r.v4_prompt?.use_coords:void 0,useOrder:m?r.v4_prompt?.use_order:void 0})}function kt(e){let t=e.parameters??e.UserComment;if(!t||!t.startsWith("{"))return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in Ruined Fooocus metadata"});let r=n.value,o={software:"ruined-fooocus",prompt:r.Prompt?.trim()??"",negativePrompt:r.Negative?.trim()??"",width:r.width??0,height:r.height??0,model:{name:r.base_model_name,hash:r.base_model_hash},sampling:{sampler:r.sampler_name,scheduler:r.scheduler,steps:r.steps,cfg:r.cfg,seed:r.seed,clipSkip:r.clip_skip}};return a.ok(o)}function Ct(e){let t=ne(e);if(!t.ok||t.value.software!=="comfyui")return a.error({type:"unsupportedFormat"});let n=e["parameters-json"]??G(e,"parameters-json"),r=n?p(n):void 0,o=r?.ok&&r.type==="object"?r.value:void 0;return a.ok({...t.value,software:"stability-matrix",prompt:o?.PositivePrompt??t.value.prompt,negativePrompt:o?.NegativePrompt??t.value.negativePrompt,model:o?.ModelName!==void 0||o?.ModelHash!==void 0?{name:o?.ModelName,hash:o?.ModelHash}:t.value.model})}function Dr(e){if(e.parameters)return e.parameters;if(!e.UserComment)return;let t=p(e.UserComment);if(!(!t.ok||t.type!=="object")&&"sui_image_params"in t.value)return e.UserComment}function wt(e){let t=Dr(e);if(!t)return a.error({type:"unsupportedFormat"});let n=p(t);if(!n.ok||n.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in parameters entry"});let r=n.value.sui_image_params;if(!r)return a.error({type:"unsupportedFormat"});let o=r.width??0,s=r.height??0,i=e.prompt||e.Make,u=i?p(i):void 0,c=u?.ok&&u.type==="object"?u.value:void 0;return a.ok({software:"swarmui",prompt:r.prompt??"",negativePrompt:r.negativeprompt??"",width:o,height:s,nodes:c,model:g({name:r.model}),sampling:g({seed:r.seed,steps:r.steps,cfg:r.cfgscale,sampler:r.sampler,scheduler:r.scheduler}),hires:g({scale:r.refinerupscale,upscaler:r.refinerupscalemethod,denoise:r.refinercontrolpercentage})})}function vt(e){let t=e.generation_data??G(e,"generation_data"),n=e.prompt??G(e,"prompt");if(!t)return a.error({type:"unsupportedFormat"});let r=t.replace(/\0+$/,""),o=p(r);if(!o.ok||o.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in generation_data entry"});let s=o.value;if(!n)return a.error({type:"unsupportedFormat"});let i=p(n);if(!i.ok||i.type!=="object")return a.error({type:"parseError",message:"Invalid JSON in prompt chunk"});let u=i.value,c=Oe(u),m=g({name:s.baseModel?.modelFileName,hash:s.baseModel?.hash});return a.ok({software:"tensorart",nodes:u,prompt:s.prompt??c?.prompt??"",negativePrompt:s.negativePrompt??c?.negativePrompt??"",width:c?.width??0,height:c?.height??0,model:m??c?.model,sampling:c?.sampling,hires:c?.hires,upscale:c?.upscale})}function Tt(e){let t=ft(e);switch(t){case"novelai":return bt(e);case"sd-webui":case"forge":case"forge-classic":case"forge-neo":case"reforge":case"easy-reforge":case"sd-next":return te(e,t);case"hf-space":return xt(e);case"civitai":{let n=ne(e);return n.ok?a.ok({...n.value,software:"civitai"}):te(e,"civitai")}case"comfyui":{let n=ne(e);return n.ok?n:te(e,"sd-webui")}case"invokeai":return St(e);case"swarmui":return wt(e);case"tensorart":return vt(e);case"stability-matrix":return Ct(e);case"easydiffusion":return yt(e);case"fooocus":{let n=e.fooocus_scheme,r=e.parameters??e.UserComment;return n==="a1111"||r&&!r.startsWith("{")?te(e,"fooocus"):ht(e)}case"ruined-fooocus":return kt(e);case"draw-things":return lt(e);default:return a.error({type:"unsupportedFormat"})}}function Et(e,t){return t==="png"?Gr(e):t==="jpeg"?Jr(e):jr(e)}function Gr(e){return e.length<24?null:{width:_(e,16),height:_(e,20)}}function Jr(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1]??0;if(n===255){t++;continue}let r=A(e,t+2);if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204){let o=A(e,t+5);return{width:A(e,t+7),height:o}}if(t+=2+r,n===218)break}return null}function jr(e){let t=12;for(;t<e.length&&!(t+8>e.length);){let n=E(e,t),r=N(e,t+4),o=r+r%2;if(n==="VP8X"){let s=ie(e,t+12),i=ie(e,t+15);return{width:s+1,height:i+1}}if(n==="VP8 "){let s=t+8;if(!(ie(e,s)&1)&&e[s+3]===157&&e[s+4]===1&&e[s+5]===42){let c=I(e,s+6,!0),m=I(e,s+8,!0);return{width:c&16383,height:m&16383}}}if(n==="VP8L"&&e[t+8]===47){let s=N(e,t+9),i=(s&16383)+1,u=(s>>14&16383)+1;return{width:i,height:u}}t+=8+o}return null}function ge(e){if(e.length<8)return[];let t=e[0]===73&&e[1]===73,n=e[0]===77&&e[1]===77;if(!t&&!n)return[];if(I(e,2,t)!==42)return[];let o=K(e,4,t),s=Pt(e,o,t),i=Lr(e,o,t),u=i!==null?Pt(e,i,t):[];return[...s,...u]}function Pt(e,t,n){let r=[];if(t+2>e.length)return r;let o=I(e,t,n),s=t+2;for(let i=0;i<o;i++){if(s+12>e.length)return r;let u=I(e,s,n),c=I(e,s+2,n),m=K(e,s+4,n),y=Wr(c),x=m*y;if(x>e.length){s+=12;continue}let h;if(x<=4?h=s+8:h=K(e,s+8,n),h+x>e.length){s+=12;continue}let S=e.slice(h,h+x);if(u===270){let f=Ut(S);if(f){let d=Mt(f);r.push({source:{type:"exifImageDescription",prefix:d??void 0},data:d?f.slice(d.length+2):f})}}else if(u===271){let f=Ut(S);if(f){let d=Mt(f);r.push({source:{type:"exifMake",prefix:d??void 0},data:d?f.slice(d.length+2):f})}}else if(u===37510){let f=Xr(S);f&&r.push({source:{type:"exifUserComment"},data:f})}s+=12}return r}function Mt(e){return e.match(/^([A-Za-z]+):\s/)?.[1]??null}function Wr(e){switch(e){case 1:return 1;case 2:return 1;case 3:return 2;case 4:return 4;case 5:return 8;case 7:return 1;default:return 1}}function Ut(e){try{let n=new TextDecoder("utf-8",{fatal:!1}).decode(e);return n.endsWith("\0")&&(n=n.slice(0,-1)),n.trim()||null}catch{return null}}function Lr(e,t,n){if(t+2>e.length)return null;let r=I(e,t,n),o=t+2;for(let s=0;s<r;s++){if(o+12>e.length)return null;if(I(e,o,n)===34665)return K(e,o+8,n);o+=12}return null}function Xr(e){if(e.length<8)return null;if(e[0]===85&&e[1]===78&&e[2]===73&&e[3]===67&&e[4]===79&&e[5]===68&&e[6]===69&&e[7]===0){let t=e.slice(8);return t.length>=2&&t[0]!==0&&t[1]===0?Hr(t):At(t)}if(e[0]===65&&e[1]===83&&e[2]===67&&e[3]===73&&e[4]===73&&e[5]===0&&e[6]===0&&e[7]===0)return zr(e.slice(8));try{let n=new TextDecoder("utf-8",{fatal:!0}).decode(e);return n.endsWith("\0")&&(n=n.slice(0,-1)),n}catch{return null}}function At(e){let t=new TextDecoder("utf-16be").decode(e),n=t.indexOf("\0");return n>=0?t.slice(0,n):t}function Hr(e){let t=new TextDecoder("utf-16le").decode(e),n=t.indexOf("\0");return n>=0?t.slice(0,n):t}function zr(e){let t=e.indexOf(0),n=t>=0?e.subarray(0,t):e;return new TextDecoder("ascii").decode(n)}var It=225,Vr=254;function Br(e,t){return e[t]===69&&e[t+1]===120&&e[t+2]===105&&e[t+3]===102&&e[t+4]===0&&e[t+5]===0}function Rt(e){if(!B(e))return a.error({type:"invalidSignature"});let t=[],n=$r(e);if(n){let s=e.slice(n.offset,n.offset+n.length),i=ge(s);t.push(...i)}let r=Kr(e);if(r){let s=e.slice(r.offset,r.offset+r.length),i=new TextDecoder("utf-8").decode(s);t.push({source:{type:"xmpPacket"},data:i})}let o=Yr(e);if(o){let s=e.slice(o.offset,o.offset+o.length),i=Zr(s);i!==null&&t.push({source:{type:"jpegCom"},data:i})}return a.ok(t)}function $r(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=A(e,t+2);if(n===It&&r>=8){let o=t+4;if(o+6<=e.length&&Br(e,o))return{offset:o+6,length:r-8}}if(t+=2+r,n===218||n===217)break}return null}function Kr(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=A(e,t+2);if(n===It&&r>=U.length+2){let o=t+4;if(ce(e,o))return{offset:o+U.length,length:r-2-U.length}}if(t+=2+r,n===218||n===217)break}return null}function Yr(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=A(e,t+2);if(n===Vr&&r>=2)return{offset:t+4,length:r-2};if(t+=2+r,n===218||n===217)break}return null}function Zr(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{return null}}function Nt(e){if(!V(e))return a.error({type:"invalidSignature"});let t=Qr(e);return t.ok?a.ok(t.value):t}var qr=8;function Qr(e){let t=[],n=qr;for(;n<e.length;){if(n+4>e.length)return a.error({type:"corruptedChunk",message:"Unexpected end of file while reading chunk length"});let r=_(e,n);if(n+=4,n+4>e.length)return a.error({type:"corruptedChunk",message:"Unexpected end of file while reading chunk type"});let o=E(e,n);if(n+=4,n+r>e.length)return a.error({type:"corruptedChunk",message:`Unexpected end of file while reading chunk data (${o})`});let s=e.slice(n,n+r);if(n+=r,n+=4,o==="tEXt"){let i=eo(s);i&&t.push(i)}else if(o==="iTXt"){let i=no(s);i&&t.push(i)}if(o==="IEND")break}return a.ok(t)}function eo(e){let t=e.indexOf(0);if(t===-1)return null;let n=_t(e.slice(0,t)),r=e.slice(t+1),o=to(r)??_t(r);return{type:"tEXt",keyword:n,text:o}}function to(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{return null}}function no(e){let t=0,n=e.indexOf(0,t);if(n===-1)return null;let r=re(e.slice(t,n));if(t=n+1,t>=e.length)return null;let o=e[t]??0;if(t+=1,t>=e.length)return null;let s=e[t]??0;t+=1;let i=e.indexOf(0,t);if(i===-1)return null;let u=re(e.slice(t,i));t=i+1;let c=e.indexOf(0,t);if(c===-1)return null;let m=re(e.slice(t,c));t=c+1;let y;if(o===1){let x=ro(e.slice(t));if(!x)return null;y=re(x)}else y=re(e.slice(t));return{type:"iTXt",keyword:r,compressionFlag:o,compressionMethod:s,languageTag:u,translatedKeyword:m,text:y}}function _t(e){return new TextDecoder("iso-8859-1").decode(e)}function re(e){return new TextDecoder("utf-8").decode(e)}function ro(e){return null}function Ot(e){if(!$(e))return a.error({type:"invalidSignature"});let t=[],n=oo(e);if(n){let o=e.slice(n.offset,n.offset+n.length);t.push(...ge(o))}let r=so(e);if(r){let o=e.slice(r.offset,r.offset+r.length),s=new TextDecoder("utf-8").decode(o);t.push({source:{type:"xmpPacket"},data:s})}return a.ok(t)}function oo(e){let t=12;for(;t+8<=e.length;){let n=N(e,t+4);if(E(e,t)==="EXIF")return t+8+n>e.length?null:{offset:t+8,length:n};let r=n+n%2;t+=8+r}return null}function so(e){let t=12;for(;t+8<=e.length;){let n=N(e,t+4);if(E(e,t)==="XMP ")return t+8+n>e.length?null:{offset:t+8,length:n};let r=n+n%2;t+=8+r}return null}function Ft(e){return Object.fromEntries(e.flatMap(t=>{if(pe(t.keyword)){let n=Te(t.text);if(n)return Object.entries(n)}return[[t.keyword,t.text]]}))}function Dt(e){let t={};for(let n of e){let r=ao(n.source),o=n.data;if(n.source.type==="xmpPacket"){let s=Te(o);if(s){Object.assign(t,s);continue}}if(n.source.type==="exifUserComment"&&o.startsWith("{")){let s=io(o);if(s){Object.assign(t,s);continue}}t[r]=o}return t}function io(e){let t=p(e);if(!t.ok||t.type!=="object")return null;let n=t.value;if(typeof n.Software=="string"&&!n.Software.startsWith("NovelAI")||typeof n.Comment!="string")return null;let r=p(n.Comment);return{Software:typeof n.Software=="string"?n.Software:"NovelAI",Comment:r.ok?JSON.stringify(r.value):n.Comment}}function ao(e){switch(e.type){case"jpegCom":return"Comment";case"exifUserComment":return"UserComment";case"exifImageDescription":return e.prefix??"ImageDescription";case"exifMake":return e.prefix??"Make";case"xmpPacket":return"XML:com.adobe.xmp"}}function Gt(e,t){let n=W(e),r=L(n);if(!r)return{status:"invalid",message:"Unknown image format"};let o=uo(n,r);if(o.status!=="success")return o;let s=o.raw,i=s.format==="png"?Ft(s.chunks):Dt(s.segments),u=Tt(i);if(!u.ok)return{status:"unrecognized",raw:s};let c=u.value;if(!t?.strict&&(c.width===0||c.height===0)){let m=Et(n,r);m&&(c.width=c.width||m.width,c.height=c.height||m.height)}return{status:"success",metadata:c,raw:s}}function uo(e,t){let n=t==="png"?Nt(e):t==="jpeg"?Rt(e):Ot(e);return n.ok?n.value.length===0?{status:"empty"}:t==="png"?{status:"success",raw:{format:"png",chunks:n.value}}:{status:"success",raw:{format:t,segments:n.value}}:{status:"invalid",message:n.error.type==="invalidSignature"?`Invalid ${t.toUpperCase()} signature`:n.error.message}}function ye(e){let t=e.find(n=>n.keyword==="parameters");return t?[{source:{type:"exifUserComment"},data:t.text}]:[]}function he(e){let t=e.find(n=>n.source.type==="exifUserComment");return t?k("parameters",t.data,"dynamic"):[]}function Jt(e){let t=e.find(r=>r.keyword==="parameters");if(t&&!t.text.trimStart().startsWith("{"))return ye(e);let n={};for(let r of e)if(r.keyword==="prompt"){let o=p(r.text);o.ok&&o.type==="object"&&Object.assign(n,o.value)}else if(r.keyword==="extraMetadata")n[r.keyword]=r.text;else{let o=p(r.text);n[r.keyword]=o.ok?o.value:r.text}return[{source:{type:"exifUserComment"},data:JSON.stringify(n)}]}function jt(e){let t=b(e,"exifUserComment");return t?t.data.trimStart().startsWith("{")?k("prompt",t.data,"text-unicode-escape"):he(e):[]}function xe(e){let t={};for(let n of e){let r=p(n.text);r.ok?t[n.keyword]=r.value:t[n.keyword]=n.text}return[{source:{type:"exifUserComment"},data:JSON.stringify(t)}]}function Se(e,t){let n=b(e,"exifUserComment");if(!n)return[];let r=p(n.data);return!r.ok||r.type!=="object"?[]:Object.entries(r.value).flatMap(([o,s])=>{let i=w(s);return k(o,i!==void 0?j(i):void 0,t)})}function Wt(e){return xe(e)}var co=e=>{let t=b(e,"exifImageDescription"),n=b(e,"exifMake");return!t&&!n?null:[...k("prompt",n?.data,"text-unicode-escape"),...k("workflow",t?.data,"text-unicode-escape")]},po=e=>{let t=Se(e,"text-unicode-escape");return t.length>0?t:null};function Lt(e){return co(e)??po(e)??[]}var mo="XML:com.adobe.xmp";function Xt(e){let t=e.find(n=>pe(n.keyword));return t?[{source:{type:"xmpPacket"},data:t.text}]:[]}function Ht(e){let t=b(e,"xmpPacket");return t?oe(mo,t.data):[]}function zt(e){let t=Object.fromEntries(e.map(n=>[n.keyword,n.text]));return[{source:{type:"exifUserComment"},data:JSON.stringify(t)}]}function Vt(e){let t=b(e,"exifUserComment");if(!t)return[];let n=p(t.data);return!n.ok||n.type!=="object"?[]:Object.entries(n.value).flatMap(([r,o])=>k(r,w(o),"dynamic"))}function Bt(e){return xe(e)}function $t(e){return Se(e,"dynamic")}var fo="NovelAI generated image",lo="NovelAI";function Kt(e){let t=e.find(s=>s.keyword==="Description"),n=t&&{source:{type:"exifImageDescription"},data:`\0\0\0\0${t.text}`},r=go(e),o={source:{type:"exifUserComment"},data:JSON.stringify(r)};return[n,o].filter(s=>s!==void 0)}function go(e){return Object.fromEntries(yo.flatMap(t=>{let n=e.find(r=>r.keyword===t);return n?[[t,n.text]]:[]}))}var yo=["Comment","Description","Generation time","Software","Source","Title"];function Yt(e){let t=b(e,"exifUserComment"),n=b(e,"exifImageDescription");return ho(t,n)}function ho(e,t){if(!e||!t)return[];let n=p(e.data);if(!n.ok||n.type!=="object")return M("Comment",e.data);let r=n.value,o=xo(t,w(r.Description));return[M("Title",w(r.Title)??fo),k("Description",o,"dynamic"),M("Software",w(r.Software)??lo),M("Source",w(r.Source)),M("Generation time",w(r["Generation time"])),M("Comment",w(r.Comment))].flat()}function xo(e,t){if(e?.data){let n=e.data;return n.startsWith("\0\0\0\0")?n.slice(4):n}if(t)return t.startsWith("\0\0\0\0")?t.slice(4):t}function be(e){return t=>{let n=t.find(r=>r.keyword===e);return n?[{source:{type:"exifUserComment"},data:n.text}]:[]}}function ke(e,t){return n=>{let r=n.find(o=>o.source.type==="exifUserComment");return r?k(e,r.data,t):[]}}var So={parameters:"text-utf8-raw",default:"text-unicode-escape"};function Zt(e){let t={};for(let n of e){let r=p(n.text);t[n.keyword]=r.ok?r.value:n.text}return[{source:{type:"exifUserComment"},data:JSON.stringify(t)}]}function qt(e){let t=b(e,"exifUserComment");if(!t)return[];let n=p(t.data);if(!n.ok||n.type!=="object")return[];let r=n.value,o=Object.entries(r).map(([s,i])=>{let u=w(i);return[s,u!==void 0?j(u):void 0]});return se(o,So)}function Qt(e){let t=e.find(s=>s.keyword==="parameters");if(!t)return[];let n=p(t.text),r=[{source:{type:"exifUserComment"},data:n.ok?JSON.stringify(n.value):t.text}],o=e.find(s=>s.keyword==="prompt");return o&&r.push({source:{type:"exifMake"},data:o.text}),r}function en(e){let t=b(e,"exifUserComment"),n=b(e,"exifMake");return[k("prompt",n?.data,"text-unicode-escape"),k("parameters",t?.data,"text-unicode-escape")].flat()}var bo={generation_data:"text-utf8-raw",default:"text-unicode-escape"};function tn(e){let t={};for(let n of e){let r=p(n.text);t[n.keyword]=r.ok?r.value:n.text}return[{source:{type:"exifUserComment"},data:JSON.stringify(t)}]}function nn(e){let t=b(e,"exifUserComment");if(!t)return[];let n=p(t.data);if(!n.ok||n.type!=="object")return[];let r=n.value,o=Object.entries(r).map(([s,i])=>{let u=w(i);return[s,u!==void 0?j(u):void 0]});return se(o,bo)}function rn(e,t){if(e.status==="empty")return a.error({type:"missingRawData"});if(e.status==="invalid")return a.error({type:"invalidParseResult",status:e.status});if(e.status==="unrecognized")return a.error({type:"unsupportedSoftware",software:"unknown"});let n=e.raw;if(n.format===t)return a.ok(n);let r=e.metadata.software,o=_o[r];return o?o(n,t):a.error({type:"unsupportedSoftware",software:r})}function P(e,t){return(n,r)=>{if(n.format==="png"){if(r==="png")return a.ok(n);let s=e(n.chunks);return a.ok({format:r,segments:s})}if(r==="jpeg"||r==="webp")return a.ok({format:r,segments:n.segments});let o=t(n.segments);return a.ok({format:"png",chunks:o})}}var ko=P(Kt,Yt),J=P(ye,he),Co=P(Wt,Lt),wo=P(zt,Vt),vo=P(be("parameters"),ke("parameters","text-unicode-escape")),To=P(be("parameters"),ke("parameters","text-unicode-escape")),Eo=P(Qt,en),Po=P(Bt,$t),Mo=P(be("parameters"),ke("parameters","text-unicode-escape")),Uo=P(Xt,Ht),Ao=P(Jt,jt),Io=P(Zt,qt),Ro=P(tn,nn),_o={novelai:ko,"sd-webui":J,"sd-next":J,forge:J,"forge-classic":J,"forge-neo":J,reforge:J,"easy-reforge":J,civitai:Ao,comfyui:Co,tensorart:Ro,"stability-matrix":Io,easydiffusion:wo,fooocus:vo,"ruined-fooocus":To,swarmui:Eo,invokeai:Po,"hf-space":Mo,"draw-things":Uo};function an(e,t){let n=W(e),r=L(n);if(!r)return{ok:!1,error:{type:"unsupportedFormat"}};if(t.status==="empty"){let s=sn[r].writeEmpty(n,[]);return s.ok?{ok:!0,value:s.value}:{ok:!1,error:{type:"writeFailed",message:s.error.type}}}if(t.status==="invalid")return{ok:!1,error:{type:"writeFailed",message:"Cannot write invalid metadata"}};if(t.status==="unrecognized"){if(t.raw.format===r)return on(n,r,t.raw);let i=sn[r].writeEmpty(n,[]);return i.ok?{ok:!0,value:i.value,warning:{type:"metadataDropped",reason:"unrecognizedCrossFormat"}}:{ok:!1,error:{type:"writeFailed",message:i.error.type}}}let o=rn(t,r);return o.ok?on(n,r,o.value):{ok:!1,error:{type:"conversionFailed",message:`Failed to convert metadata: ${o.error.type}`}}}function on(e,t,n){if(t==="png"&&n.format==="png"){let r=Q(e,n.chunks);return r.ok?{ok:!0,value:r.value}:{ok:!1,error:{type:"writeFailed",message:r.error.type}}}if(t==="jpeg"&&n.format==="jpeg"){let r=Y(e,n.segments);return r.ok?{ok:!0,value:r.value}:{ok:!1,error:{type:"writeFailed",message:r.error.type}}}if(t==="webp"&&n.format==="webp"){let r=ee(e,n.segments);return r.ok?{ok:!0,value:r.value}:{ok:!1,error:{type:"writeFailed",message:r.error.type}}}return{ok:!1,error:{type:"writeFailed",message:"Internal error: format mismatch after conversion"}}}var sn={png:{writeEmpty:Q},jpeg:{writeEmpty:Y},webp:{writeEmpty:ee}};var un=Object.freeze({novelai:"NovelAI",comfyui:"ComfyUI",swarmui:"SwarmUI",tensorart:"TensorArt","stability-matrix":"Stability Matrix",invokeai:"InvokeAI","sd-webui":"Stable Diffusion WebUI",forge:"Forge","forge-classic":"Forge - Classic","forge-neo":"Forge - Neo",reforge:"reForge","easy-reforge":"EasyReforge","sd-next":"SD.Next",civitai:"Civitai","hf-space":"Hugging Face Space",easydiffusion:"Easy Diffusion",fooocus:"Fooocus","ruined-fooocus":"Ruined Fooocus","draw-things":"Draw Things"});return hn(No);})();
9
+ `)}}function Le(e){if(`status`in e)switch(e.status){case`success`:return N(e.metadata);case`unrecognized`:return Ie(e.raw);case`empty`:case`invalid`:return``}return N(e)}function Re(e,t){let n=d(e),r=h(n);if(!r)return u.error({type:`unsupportedFormat`});let i=ze(r,n,N(t));return i.ok?u.ok(i.value):u.error({type:`writeFailed`,message:i.error.type})}function ze(e,t,n){switch(e){case`png`:return A(t,c(`parameters`,n,`dynamic`));case`jpeg`:return O(t,[{source:{type:`exifUserComment`},data:n}]);case`webp`:return ke(t,[{source:{type:`exifUserComment`},data:n}])}}function P(e){let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return Object.keys(t).length===0?void 0:t}function F(e,t){let n=e.parameters??e.UserComment;if(!n)return u.error({type:`unsupportedFormat`});let{prompt:r,negativePrompt:i,settings:a}=Be(n),o=Ve(a),[s,c]=He(o.get(`Size`)??`0x0`),l=o.get(`Model`),d=o.get(`Model hash`),f=o.get(`Sampler`),p=o.get(`Schedule type`),m=I(o.get(`Steps`)),h=I(o.get(`CFG scale`)??o.get(`CFG Scale`)),g=I(o.get(`Seed`)),_=I(o.get(`Clip skip`)),v=I(o.get(`Hires upscale`)),y=o.get(`Hires upscaler`),b=I(o.get(`Hires steps`)),x=I(o.get(`Denoising strength`)),[S]=He(o.get(`Hires size`)??``),C=v??(S>0?S/s:void 0);return u.ok({software:t,prompt:r,negativePrompt:i,width:s,height:c,model:P({name:l,hash:d}),sampling:P({sampler:f,scheduler:p,steps:m,cfg:h,seed:g,clipSkip:_}),hires:P({scale:C,upscaler:y,steps:b,denoise:x})})}function Be(e){let t=e.indexOf(`Negative prompt:`),n=e.indexOf(`Steps:`);if(t===-1&&n===-1)return{prompt:e.trim(),negativePrompt:``,settings:``};if(t===-1){let t=e.lastIndexOf(`
10
+ `,n);return{prompt:e.slice(0,t).trim(),negativePrompt:``,settings:e.slice(t).trim()}}if(n===-1)return{prompt:e.slice(0,t).trim(),negativePrompt:e.slice(t+16).trim(),settings:``};let r=e.lastIndexOf(`
11
+ `,n);return{prompt:e.slice(0,t).trim(),negativePrompt:e.slice(t+16,r).trim(),settings:e.slice(r).trim()}}function Ve(e){let t=new Map;if(!e||e.length>1e4)return t;for(let n of e.matchAll(/([A-Za-z][A-Za-z0-9 ]*?):\s*([^,]+?)(?=,\s*[A-Za-z][A-Za-z0-9 ]*?:|$)/g)){let e=(n[1]??``).trim(),r=(n[2]??``).trim();t.set(e,r)}return t}function He(e){let t=e.match(/(\d+)x(\d+)/);return t?[Number.parseInt(t[1]??`0`,10),Number.parseInt(t[2]??`0`,10)]:[0,0]}function I(e){if(e===void 0)return;let t=Number.parseFloat(e);return Number.isNaN(t)?void 0:t}function L(e){try{return Ue(JSON.parse(e))}catch{return{ok:!1,error:{type:`parseError`,message:`Invalid JSON`}}}}function Ue(e){if(e===null)return{ok:!0,type:`null`,value:null};if(Array.isArray(e))return{ok:!0,type:`array`,value:e};switch(typeof e){case`object`:return{ok:!0,type:`object`,value:e};case`string`:return{ok:!0,type:`string`,value:e};case`number`:return{ok:!0,type:`number`,value:e};case`boolean`:return{ok:!0,type:`boolean`,value:e};default:return{ok:!1,error:{type:`parseError`,message:`Unexpected JSON type`}}}}let We=[`KSampler`,`KSamplerAdvanced`,`SamplerCustomAdvanced`,`SamplerCustom`,`DetailerForEach`],Ge=[`EmptyLatentImage`],Ke=[`SDXL Empty Latent Image (rgthree)`],qe=[`CheckpointLoaderSimple`,`CheckpointLoader`],Je=[`UNETLoader`],Ye=[`CLIPSetLastLayer`],Xe=[`UpscaleModelLoader`],Ze=[`ImageScale`,`ImageScaleBy`],Qe=[`LatentUpscale`,`LatentUpscaleBy`],$e=[`VAEEncode`,`VAEEncodeTiled`];function et(e){let t={};for(let n of Object.values(e)){let e=n.class_type;!t.sampler&&We.includes(e)?t.sampler=n:!t.latentImage&&Ge.includes(e)?t.latentImage=n:!t.latentImageRgthree&&Ke.includes(e)?t.latentImageRgthree=n:!t.checkpoint&&qe.includes(e)?t.checkpoint=n:!t.unetLoader&&Je.includes(e)?t.unetLoader=n:!t.clipSetLastLayer&&Ye.includes(e)?t.clipSetLastLayer=n:!t.hiresModelUpscale&&Xe.includes(e)?t.hiresModelUpscale=n:!t.hiresImageScale&&Ze.includes(e)?t.hiresImageScale=n:!t.latentUpscale&&Qe.includes(e)?t.latentUpscale=n:!t.vaeEncode&&$e.includes(e)&&(t.vaeEncode=n)}return t}function R(e,t){if(z(t))return e[String(t[0])]}function z(e){return Array.isArray(e)&&e.length===2&&(typeof e[0]==`string`||typeof e[0]==`number`)&&typeof e[1]==`number`}function tt(e,t,n=10){if(n<=0)return``;let r=e[t];if(!r)return``;let i=r.inputs.text??r.inputs.prompt??r.inputs.Text??r.inputs.prompt_text;if(typeof i==`string`)return i;if(z(i)){let t=tt(e,String(i[0]),n-1);if(t)return t}return typeof r.inputs.text_0==`string`?r.inputs.text_0:``}function nt(e,t){return R(e,t.inputs.guider)||t}function rt(e,t){if(!t)return{promptText:``,negativeText:``};let n=nt(e,t);return{promptText:B(e,n.inputs.positive,`positive`),negativeText:B(e,n.inputs.negative,`negative`)}}function B(e,t,n,r=10){if(r<=0||!z(t))return``;let i=String(t[0]),a=tt(e,i);if(a)return a;let o=e[i];if(!o)return``;let s=o.inputs[n];return B(e,s,n,r-1)}function it(e,t){if(e){let t=Number(e.inputs.width)||0,n=Number(e.inputs.height)||0;if(t>0&&n>0)return{width:t,height:n}}if(t&&typeof t.inputs.dimensions==`string`){let e=t.inputs.dimensions.match(/^(\d+)\s*x\s*(\d+)/);if(e?.[1]&&e[2])return{width:Number.parseInt(e[1],10),height:Number.parseInt(e[2],10)}}return{width:0,height:0}}function at(e,t){if(!t)return;if(t.class_type===`SamplerCustomAdvanced`)return ot(e,t);if(t.class_type===`SamplerCustom`)return st(e,t);let n=t.inputs.seed;return z(n)&&(n=e[String(n[0])]?.inputs.seed),{seed:n,steps:t.inputs.steps,cfg:t.inputs.cfg,sampler:t.inputs.sampler_name,scheduler:t.inputs.scheduler,denoise:t.inputs.denoise}}function ot(e,t){let n=R(e,t.inputs.noise),r=R(e,t.inputs.guider),i=R(e,t.inputs.sampler),a=R(e,t.inputs.sigmas);return{seed:n?.inputs.noise_seed,steps:a?.inputs.steps,cfg:r?.inputs.cfg,sampler:i?.inputs.sampler_name,scheduler:a?.inputs.scheduler,denoise:a?.inputs.denoise}}function st(e,t){let n=R(e,t.inputs.sampler),r=R(e,t.inputs.sigmas),i=t.inputs.noise_seed;return z(i)&&(i=e[String(i[0])]?.inputs.seed),{seed:i,steps:r?.inputs.steps,cfg:t.inputs.cfg,sampler:n?.inputs.sampler_name,scheduler:r?.inputs.scheduler,denoise:r?.inputs.denoise}}function ct(e,t){let n=e?.inputs?.ckpt_name;if(typeof n==`string`&&n)return{name:n};let r=t?.inputs?.unet_name;if(typeof r==`string`&&r)return{name:r}}function lt(e){if(!e)return;let t=e.inputs.stop_at_clip_layer;if(typeof t==`number`)return-t}function ut(e,t){if(!(t<=0||e<=0))return Math.round(e/t*100)/100}function dt(e,t){let n=t.inputs.latent_image;if(!z(n))return!1;let r=e[String(n[0])];if(!r)return!1;if(Qe.includes(r.class_type))return!0;if(!$e.includes(r.class_type))return!1;let i=r.inputs.pixels;if(!z(i))return!1;let a=e[String(i[0])];return a?Ze.includes(a.class_type):!1}function ft(e){return Object.values(e).find(t=>We.includes(t.class_type)&&dt(e,t))}function pt(e,t){let n=e.extraMetadata;if(typeof n==`string`){let e=L(n);if(e.ok&&e.type===`object`)return e.value}if(t?.extraMetadata){let e=L(t.extraMetadata);if(e.ok&&e.type===`object`)return e.value}}function mt(e){if(!e)return;let t=ht(e),n=gt(e);return P({prompt:e.prompt,negativePrompt:e.negativePrompt,width:e.width,height:e.height,model:e.baseModel?{name:e.baseModel}:void 0,...n,...t})}function ht(e){if(!e.transformations)return{};let t=e.transformations.find(e=>e.type===`upscale`);if(!t?.upscaleWidth)return{};let n=ut(t.upscaleWidth,e.width??0);return n===void 0?{}:{upscale:{scale:n}}}function gt(e){return e.seed===void 0&&e.steps===void 0&&e.cfgScale===void 0&&e.sampler===void 0?{}:{sampling:{seed:e.seed,steps:e.steps,cfg:e.cfgScale,sampler:e.sampler}}}let _t=/Text(Encode|.?Box)|ShowText|PromptStash/,vt=/neg/i;function V(e){return typeof e==`string`?e:``}function H(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e==`string`){let t=Number(e);return Number.isFinite(t)?t:void 0}}function yt(e){let t,n,r,i,a,o,s,c,l,u;for(let d of Object.values(e)){if(!d||typeof d!=`object`)continue;let e=d.class_type,f=d.inputs;if(!(!e||!f)){if(_t.test(e)){let r=V(f.text)||V(f.prompt)||V(f.Text)||V(f.prompt_text)||V(f.text_0);r&&(vt.test(e)||t?n||=r:t=r)}e.includes(`Sampler`)&&(r===void 0&&(r=H(f.seed)??H(f.noise_seed)),i===void 0&&(i=H(f.steps)),a===void 0&&(a=H(f.cfg)),o||=V(f.sampler_name),s||=V(f.scheduler)),c||=V(f.ckpt_name)||V(f.unet_name),l===void 0&&(l=H(f.width)),u===void 0&&(u=H(f.height))}}let d={};r!==void 0&&(d.seed=r),i!==void 0&&(d.steps=i),a!==void 0&&(d.cfg=a),o&&(d.sampler=o),s&&(d.scheduler=s);let f={};return t&&(f.prompt=t),n&&(f.negativePrompt=n),l!==void 0&&l>0&&(f.width=l),u!==void 0&&u>0&&(f.height=u),c&&(f.model={name:c}),Object.keys(d).length>0&&(f.sampling=d),f}let bt=[`extra`,`extraMetadata`,`resource-stack`];function U(e){let t=St(e);if(!t)return Ct(e)?u.ok({software:`comfyui`,nodes:{},prompt:``,negativePrompt:``,width:0,height:0}):u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in prompt entry`});let r=n.value,i=Dt(yt(r),mt(pt(r,e)),wt(r));return u.ok({software:`comfyui`,nodes:Object.fromEntries(Object.entries(r).filter(([e])=>!bt.includes(e))),...i})}function xt(e){if(!e||typeof e.denoise!=`number`)return e;if(e.denoise>=1){let{denoise:t,...n}=e;return n}return e}function W(e){return e.replace(/\0+$/,``).replace(/([:,[])\s*NaN\b/g,`$1null`)}function St(e){if(e.prompt)return W(e.prompt);let t=[e.UserComment,e.ImageDescription,e.Make,e.Prompt,e.Workflow];for(let e of t)if(e&&e.startsWith(`{`)){let t=W(e),n=L(t);if(!n.ok||n.type!==`object`)continue;if(n.value.prompt&&typeof n.value.prompt==`object`)return JSON.stringify(n.value.prompt);if(Object.values(n.value).some(e=>e&&typeof e==`object`&&`class_type`in e))return t}}function Ct(e){for(let t of[e.workflow,e.Workflow]){if(!t?.startsWith(`{`))continue;let e=L(W(t));if(e.ok&&e.type===`object`&&Array.isArray(e.value.nodes))return!0}return!1}function wt(e){let t=et(e),{promptText:n,negativeText:r}=rt(e,t.sampler),{width:i,height:a}=it(t.latentImage,t.latentImageRgthree),o=ft(e),s=xt(o?at(e,o):void 0),c=Tt(e,t,i),l=t.hiresModelUpscale?.inputs.model_name,u=xt(at(e,t.sampler)),d=lt(t.clipSetLastLayer);return P({prompt:n||void 0,negativePrompt:r||void 0,width:i>0?i:void 0,height:a>0?a:void 0,model:ct(t.checkpoint,t.unetLoader),sampling:P({...u,clipSkip:d}),...Et(l,c,s)})}function Tt(e,t,n){let r=t.latentUpscale?.inputs;if(r?.scale_by!==void 0)return r.scale_by;let i=t.hiresImageScale?.inputs.width;if(i!==void 0){if(z(i)){let t=e[String(i[0])];return typeof t?.inputs.clip_scale==`number`?t.inputs.clip_scale:void 0}if(typeof i==`number`)return ut(i,n)}}function Et(e,t,n){return!e&&t===void 0&&!n?{}:n?{hires:{upscaler:e,scale:t,steps:n.steps,denoise:n.denoise}}:e?{upscale:{upscaler:e,scale:t}}:{}}function G(...e){let t={};for(let n of e)if(n)for(let[e,r]of Object.entries(n))r!==void 0&&(t[e]=r);return Object.keys(t).length>0?t:void 0}function Dt(...e){let t=[...e].reverse(),n=e=>t.find(t=>t?.[e])?.[e];return{prompt:n(`prompt`)??``,negativePrompt:n(`negativePrompt`)??``,width:n(`width`)??0,height:n(`height`)??0,...P({model:G(...e.map(e=>e?.model)),sampling:G(...e.map(e=>e?.sampling)),hires:G(...e.map(e=>e?.hires)),upscale:G(...e.map(e=>e?.upscale))})}}let K=`extraMetadata`,q=`sui_image_params`,Ot=`swarm_version`,kt=`noise_schedule`,At=`v4_prompt`,jt=`RuinedFooocus`;function Mt(e){let t=Pt(e);if(t)return t;let n=It(e);if(n)return n;let r=e.parameters??e.UserComment??e.Comment;return r?Lt(r):null}function Nt(e){return`invokeai_metadata`in e?`invokeai`:`generation_data`in e?`tensorart`:`smproj`in e?`stability-matrix`:K in e?`civitai`:null}function Pt(e){if(e.Software?.startsWith(`NovelAI`))return`novelai`;if(e.CreatorTool?.startsWith(`Draw Things`))return`draw-things`;let t=Nt(e);if(t)return t;if(`fooocus_scheme`in e)return`fooocus`;if(`use_stable_diffusion_model`in e)return`easydiffusion`;if(e.parameters?.includes(q))return`swarmui`;let n=e.UserComment??e.Comment;return n?.startsWith(`{`)?Ft(n):null}function Ft(e){let t=L(e);if(!t.ok||t.type!==`object`)return null;let n=t.value,r=Nt(n);if(r)return r;if(`prompt`in n&&`workflow`in n){let e=n.workflow,t=n.prompt,r=typeof e==`object`||typeof t==`object`,i=typeof e==`string`&&e.startsWith(`{`)||typeof t==`string`&&t.startsWith(`{`);if(r||i)return`comfyui`}if(q in n)return`swarmui`;if(`prompt`in n&&`parameters`in n){let e=String(n.parameters||``);if(e.includes(q)||e.includes(Ot))return`swarmui`}return null}function It(e){if(`prompt`in e&&`workflow`in e||`Prompt`in e&&`Workflow`in e||`workflow`in e||`Workflow`in e)return`comfyui`;let t=e.prompt??e.Prompt;if(t?.startsWith(`{`)){if(t.includes(q))return`swarmui`;if(t.includes(`"${K}"`))return`civitai`;if(t.includes(`class_type`))return`comfyui`}return null}function Lt(e){return e.startsWith(`{`)?Rt(e):zt(e)}function Rt(e){return e.includes(q)?`swarmui`:e.includes(`"software":"${jt}"`)||e.includes(`"software": "${jt}"`)?`ruined-fooocus`:e.includes(`"use_stable_diffusion_model"`)?`easydiffusion`:e.includes(`civitai:`)||e.includes(`"${K}"`)?`civitai`:e.includes(`"${At}"`)||e.includes(`"${kt}"`)||e.includes(`"uncond_scale"`)||e.includes(`"Software":"NovelAI"`)||e.includes(`\\"${kt}\\"`)||e.includes(`\\"${At}\\"`)?`novelai`:e.includes(`"Model"`)&&e.includes(`"resolution"`)?`hf-space`:e.includes(`"prompt"`)&&e.includes(`"base_model"`)?`fooocus`:e.includes(`"prompt"`)||e.includes(`"nodes"`)?`comfyui`:null}function zt(e){if(e.includes(q)||e.includes(Ot))return`swarmui`;let t=e.match(/Version:\s*([^\s,]+)/);if(t){let e=t[1];if(e&&/^v\d/.test(e))return`sd-webui`;if(e===`classic`)return`forge-classic`;if(e===`neo`||e?.startsWith(`neo`))return`forge-neo`;if(e?.startsWith(`f`)&&/^f\d/.test(e))return/^f\d+\.\d+(\.\d+)?-v/.test(e)?`easy-reforge`:/^f\d+\.\d+(\.\d+)?v\d+-v/.test(e)?`reforge`:`forge`;if(e?.startsWith(`Fooocus`))return`fooocus`;if(e===`ComfyUI`)return`comfyui`}return e.includes(`App: SD.Next`)||e.includes(`App:SD.Next`)?`sd-next`:e.includes(`Civitai resources:`)?`civitai`:e.includes(`Steps:`)||e.includes(`Sampler:`)||e.includes(`Negative prompt:`)?`sd-webui`:null}function Bt(e){let t=e.UserComment?.startsWith(`{`)?e.UserComment:e.Comment?.startsWith(`{`)?e.Comment:void 0;if(!t)return u.error({type:`unsupportedFormat`});let n=L(t);return!n.ok||n.type!==`object`?u.error({type:`parseError`,message:`Invalid JSON in Draw Things metadata`}):Ht(n.value)}function Vt(e){if(typeof e!=`string`)return{width:0,height:0};let t=e.match(/^(\d+)x(\d+)$/);return t?{width:Number(t[1]),height:Number(t[2])}:{width:0,height:0}}function Ht(e){let t=t=>{let n=e[t];return typeof n==`string`?n:void 0},n=t=>{let n=e[t];if(typeof n==`number`&&n!==0)return n},r=(t(`c`)??``).trim(),i=(t(`uc`)??``).trim(),{width:a,height:o}=Vt(e.size),s={software:`draw-things`,prompt:r,negativePrompt:i,width:a,height:o,model:P({name:t(`model`)}),sampling:P({sampler:t(`sampler`),steps:n(`steps`),cfg:n(`scale`),seed:n(`seed`),denoise:n(`strength`)})};return u.ok(s)}function Ut(e){if(!e)return;let t=e.replace(/\\/g,`/`).split(`/`);return t[t.length-1]}function Wt(e){if(`use_stable_diffusion_model`in e)return Gt(e);let t=e.UserComment?.startsWith(`{`)?e.UserComment:e.parameters?.startsWith(`{`)?e.parameters:void 0;if(!t)return u.error({type:`unsupportedFormat`});let n=L(t);return!n.ok||n.type!==`object`?u.error({type:`parseError`,message:`Invalid JSON in Easy Diffusion metadata`}):Gt(n.value)}function Gt(e){let t=t=>{let n=e[t];return typeof n==`string`?n:void 0},n=t=>Number(e[t])||void 0,r=(t(`prompt`)??``).trim(),i=(t(`negative_prompt`)??``).trim(),a=t(`use_stable_diffusion_model`),o=P({upscaler:t(`use_upscale`),scale:n(`upscale_amount`)}),s={software:`easydiffusion`,prompt:r,negativePrompt:i,width:n(`width`)??0,height:n(`height`)??0,model:P({name:Ut(a),vae:t(`use_vae_model`)}),sampling:P({sampler:t(`sampler_name`),steps:n(`num_inference_steps`),cfg:n(`guidance_scale`),seed:n(`seed`),clipSkip:n(`clip_skip`),denoise:n(`prompt_strength`)}),...o?{upscale:o}:{}};return u.ok(s)}function Kt(e){if(!e)return{width:0,height:0};let t=e.match(/\(\s*(\d+)\s*,\s*(\d+)\s*\)/);return!t?.[1]||!t[2]?{width:0,height:0}:{width:Number(t[1]),height:Number(t[2])}}function qt(e){let t=e.parameters??e.UserComment;if(!t||!t.startsWith(`{`))return u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in Fooocus metadata`});let r=n.value,{width:i,height:a}=Kt(r.resolution),o={software:`fooocus`,prompt:r.prompt?.trim()??``,negativePrompt:r.negative_prompt?.trim()??``,width:i,height:a,model:P({name:r.base_model,hash:r.base_model_hash,vae:r.vae}),sampling:P({sampler:r.sampler,scheduler:r.scheduler,steps:r.steps,cfg:r.guidance_scale,seed:r.seed,clipSkip:r.clip_skip})};return u.ok(o)}function Jt(e){let t=e.parameters??e.UserComment;if(!t)return u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in parameters entry`});let r=n.value,{width:i,height:a}=(e=>{let t=e?.match(/(\d+)\s*x\s*(\d+)/);return t?.[1]&&t?.[2]?{width:Number.parseInt(t[1],10),height:Number.parseInt(t[2],10)}:{width:0,height:0}})(r.resolution),o={software:`hf-space`,prompt:r.prompt??``,negativePrompt:r.negative_prompt??``,width:i,height:a,model:P({name:r.Model,hash:r[`Model hash`]}),sampling:P({sampler:r.sampler,steps:r.num_inference_steps,cfg:r.guidance_scale,seed:r.seed}),hires:r.use_upscaler?P({upscaler:r.use_upscaler.upscale_method,denoise:r.use_upscaler.upscaler_strength,scale:r.use_upscaler.upscale_by,steps:r.use_upscaler.upscale_steps}):void 0};return u.ok(o)}function J(e,t){if(!e.UserComment?.startsWith(`{`))return;let n=L(e.UserComment);if(!n.ok||n.type!==`object`)return;let r=n.value[t];if(typeof r==`string`)return r;if(typeof r==`object`&&r)return JSON.stringify(r)}function Yt(e){return e.invokeai_metadata??J(e,`invokeai_metadata`)}function Xt(e){let t=Yt(e);if(!t)return u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in invokeai_metadata entry`});let r=n.value,i=r.width??0,a=r.height??0,o=Zt(r);return u.ok({software:`invokeai`,prompt:r.positive_prompt??``,negativePrompt:r.negative_prompt??``,width:i,height:a,model:P({name:r.model?.name,hash:r.model?.hash}),sampling:P({seed:r.seed,steps:r.steps,cfg:r.cfg_scale,sampler:r.scheduler}),...o})}function Zt(e){if(!e.upscale_model?.name&&e.upscale_scale===void 0)return{};let t=P({upscaler:e.upscale_model?.name,scale:e.upscale_scale});return t?{upscale:t}:{}}function Qt(e){let t=e.UserComment??e.Comment;if(!t)return u.error({type:`parseError`,message:`Missing Comment/UserComment entry`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in Comment entry`});let r=n.value,i=r.width??0,a=r.height??0,o=r.v4_prompt?.caption?.base_caption??r.prompt??``,s=r.v4_negative_prompt?.caption?.base_caption??r.uc??``,c=r.v4_prompt?.caption?.char_captions,l=c&&c.length>0?c.map(e=>e.char_caption?{prompt:e.char_caption,center:e.centers?.[0]}:null).filter(e=>e!==null):void 0;return u.ok({software:`novelai`,prompt:o,negativePrompt:s,width:i,height:a,sampling:P({steps:r.steps,cfg:r.scale,seed:r.seed,sampler:r.sampler,scheduler:r.noise_schedule}),characterPrompts:l,useCoords:l?r.v4_prompt?.use_coords:void 0,useOrder:l?r.v4_prompt?.use_order:void 0})}function $t(e){let t=e.parameters??e.UserComment;if(!t||!t.startsWith(`{`))return u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in Ruined Fooocus metadata`});let r=n.value,i={software:`ruined-fooocus`,prompt:r.Prompt?.trim()??``,negativePrompt:r.Negative?.trim()??``,width:r.width??0,height:r.height??0,model:{name:r.base_model_name,hash:r.base_model_hash},sampling:{sampler:r.sampler_name,scheduler:r.scheduler,steps:r.steps,cfg:r.cfg,seed:r.seed,clipSkip:r.clip_skip}};return u.ok(i)}function en(e){let t=U(e);if(!t.ok||t.value.software!==`comfyui`)return u.error({type:`unsupportedFormat`});let n=e[`parameters-json`]??J(e,`parameters-json`),r=n?L(n):void 0,i=r?.ok&&r.type===`object`?r.value:void 0;return u.ok({...t.value,software:`stability-matrix`,prompt:i?.PositivePrompt??t.value.prompt,negativePrompt:i?.NegativePrompt??t.value.negativePrompt,model:i?.ModelName!==void 0||i?.ModelHash!==void 0?{name:i?.ModelName,hash:i?.ModelHash}:t.value.model})}function tn(e){if(e.parameters)return e.parameters;if(!e.UserComment)return;let t=L(e.UserComment);if(!(!t.ok||t.type!==`object`)&&`sui_image_params`in t.value)return e.UserComment}function nn(e){let t=tn(e);if(!t)return u.error({type:`unsupportedFormat`});let n=L(t);if(!n.ok||n.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in parameters entry`});let r=n.value.sui_image_params;if(!r)return u.error({type:`unsupportedFormat`});let i=r.width??0,a=r.height??0,o=e.prompt||e.Make,s=o?L(o):void 0,c=s?.ok&&s.type===`object`?s.value:void 0;return u.ok({software:`swarmui`,prompt:r.prompt??``,negativePrompt:r.negativeprompt??``,width:i,height:a,nodes:c,model:P({name:r.model}),sampling:P({seed:r.seed,steps:r.steps,cfg:r.cfgscale,sampler:r.sampler,scheduler:r.scheduler}),hires:P({scale:r.refinerupscale,upscaler:r.refinerupscalemethod,denoise:r.refinercontrolpercentage})})}function rn(e){let t=e.generation_data??J(e,`generation_data`),n=e.prompt??J(e,`prompt`);if(!t)return u.error({type:`unsupportedFormat`});let r=L(t.replace(/\0+$/,``));if(!r.ok||r.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in generation_data entry`});let i=r.value;if(!n)return u.error({type:`unsupportedFormat`});let a=L(n);if(!a.ok||a.type!==`object`)return u.error({type:`parseError`,message:`Invalid JSON in prompt chunk`});let o=a.value,s=wt(o),c=P({name:i.baseModel?.modelFileName,hash:i.baseModel?.hash});return u.ok({software:`tensorart`,nodes:o,prompt:i.prompt??s?.prompt??``,negativePrompt:i.negativePrompt??s?.negativePrompt??``,width:s?.width??0,height:s?.height??0,model:c??s?.model,sampling:s?.sampling,hires:s?.hires,upscale:s?.upscale})}function an(e){let t=Mt(e);switch(t){case`novelai`:return Qt(e);case`sd-webui`:case`forge`:case`forge-classic`:case`forge-neo`:case`reforge`:case`easy-reforge`:case`sd-next`:return F(e,t);case`hf-space`:return Jt(e);case`civitai`:{let t=U(e);return t.ok?u.ok({...t.value,software:`civitai`}):F(e,`civitai`)}case`comfyui`:{let t=U(e);return t.ok?t:F(e,`sd-webui`)}case`invokeai`:return Xt(e);case`swarmui`:return nn(e);case`tensorart`:return rn(e);case`stability-matrix`:return en(e);case`easydiffusion`:return Wt(e);case`fooocus`:{let t=e.fooocus_scheme,n=e.parameters??e.UserComment;return t===`a1111`||n&&!n.startsWith(`{`)?F(e,`fooocus`):qt(e)}case`ruined-fooocus`:return $t(e);case`draw-things`:return Bt(e);default:return u.error({type:`unsupportedFormat`})}}function on(e,t){return t===`png`?sn(e):t===`jpeg`?cn(e):ln(e)}function sn(e){return e.length<24?null:{width:y(e,16),height:y(e,20)}}function cn(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1]??0;if(n===255){t++;continue}let r=g(e,t+2);if(n>=192&&n<=207&&n!==196&&n!==200&&n!==204){let n=g(e,t+5);return{width:g(e,t+7),height:n}}if(t+=2+r,n===218)break}return null}function ln(e){let t=12;for(;t<e.length&&!(t+8>e.length);){let n=S(e,t),r=b(e,t+4),i=r+r%2;if(n===`VP8X`){let n=v(e,t+12),r=v(e,t+15);return{width:n+1,height:r+1}}if(n===`VP8 `){let n=t+8;if(!(v(e,n)&1)&&e[n+3]===157&&e[n+4]===1&&e[n+5]===42){let t=_(e,n+6,!0),r=_(e,n+8,!0);return{width:t&16383,height:r&16383}}}if(n===`VP8L`&&e[t+8]===47){let n=b(e,t+9);return{width:(n&16383)+1,height:(n>>14&16383)+1}}t+=8+i}return null}function un(e){if(e.length<8)return[];let t=e[0]===73&&e[1]===73,n=e[0]===77&&e[1]===77;if(!t&&!n||_(e,2,t)!==42)return[];let r=x(e,4,t),i=dn(e,r,t),a=hn(e,r,t),o=a===null?[]:dn(e,a,t);return[...i,...o]}function dn(e,t,n){let r=[];if(t+2>e.length)return r;let i=_(e,t,n),a=t+2;for(let t=0;t<i;t++){if(a+12>e.length)return r;let t=_(e,a,n),i=_(e,a+2,n),o=x(e,a+4,n)*pn(i);if(o>e.length){a+=12;continue}let s;if(s=o<=4?a+8:x(e,a+8,n),s+o>e.length){a+=12;continue}let c=e.slice(s,s+o);if(t===270){let e=mn(c);if(e){let t=fn(e);r.push({source:{type:`exifImageDescription`,prefix:t??void 0},data:t?e.slice(t.length+2):e})}}else if(t===271){let e=mn(c);if(e){let t=fn(e);r.push({source:{type:`exifMake`,prefix:t??void 0},data:t?e.slice(t.length+2):e})}}else if(t===37510){let e=gn(c);e&&r.push({source:{type:`exifUserComment`},data:e})}a+=12}return r}function fn(e){return e.match(/^([A-Za-z]+):\s/)?.[1]??null}function pn(e){switch(e){case 1:return 1;case 2:return 1;case 3:return 2;case 4:return 4;case 5:return 8;case 7:return 1;default:return 1}}function mn(e){try{let t=new TextDecoder(`utf-8`,{fatal:!1}).decode(e);return t.endsWith(`\0`)&&(t=t.slice(0,-1)),t.trim()||null}catch{return null}}function hn(e,t,n){if(t+2>e.length)return null;let r=_(e,t,n),i=t+2;for(let t=0;t<r;t++){if(i+12>e.length)return null;if(_(e,i,n)===34665)return x(e,i+8,n);i+=12}return null}function gn(e){if(e.length<8)return null;if(e[0]===85&&e[1]===78&&e[2]===73&&e[3]===67&&e[4]===79&&e[5]===68&&e[6]===69&&e[7]===0){let t=e.slice(8);return t.length>=2&&t[0]!==0&&t[1]===0?vn(t):_n(t)}if(e[0]===65&&e[1]===83&&e[2]===67&&e[3]===73&&e[4]===73&&e[5]===0&&e[6]===0&&e[7]===0)return yn(e.slice(8));try{let t=new TextDecoder(`utf-8`,{fatal:!0}).decode(e);return t.endsWith(`\0`)&&(t=t.slice(0,-1)),t}catch{return null}}function _n(e){let t=new TextDecoder(`utf-16be`).decode(e),n=t.indexOf(`\0`);return n>=0?t.slice(0,n):t}function vn(e){let t=new TextDecoder(`utf-16le`).decode(e),n=t.indexOf(`\0`);return n>=0?t.slice(0,n):t}function yn(e){let t=e.indexOf(0),n=t>=0?e.subarray(0,t):e;return new TextDecoder(`ascii`).decode(n)}function bn(e,t){return e[t]===69&&e[t+1]===120&&e[t+2]===105&&e[t+3]===102&&e[t+4]===0&&e[t+5]===0}function xn(e){if(!p(e))return u.error({type:`invalidSignature`});let t=[],n=Sn(e);if(n){let r=un(e.slice(n.offset,n.offset+n.length));t.push(...r)}let r=Cn(e);if(r){let n=e.slice(r.offset,r.offset+r.length),i=new TextDecoder(`utf-8`).decode(n);t.push({source:{type:`xmpPacket`},data:i})}let i=wn(e);if(i){let n=Tn(e.slice(i.offset,i.offset+i.length));n!==null&&t.push({source:{type:`jpegCom`},data:n})}return u.ok(t)}function Sn(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=g(e,t+2);if(n===225&&r>=8){let n=t+4;if(n+6<=e.length&&bn(e,n))return{offset:n+6,length:r-8}}if(t+=2+r,n===218||n===217)break}return null}function Cn(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=g(e,t+2);if(n===225&&r>=E.length+2){let n=t+4;if(ne(e,n))return{offset:n+E.length,length:r-2-E.length}}if(t+=2+r,n===218||n===217)break}return null}function wn(e){let t=2;for(;t<e.length-4;){if(e[t]!==255){t++;continue}let n=e[t+1];if(n===255){t++;continue}let r=g(e,t+2);if(n===254&&r>=2)return{offset:t+4,length:r-2};if(t+=2+r,n===218||n===217)break}return null}function Tn(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}function En(e){if(!f(e))return u.error({type:`invalidSignature`});let t=Dn(e);return t.ok?u.ok(t.value):t}function Dn(e){let t=[],n=8;for(;n<e.length;){if(n+4>e.length)return u.error({type:`corruptedChunk`,message:`Unexpected end of file while reading chunk length`});let r=y(e,n);if(n+=4,n+4>e.length)return u.error({type:`corruptedChunk`,message:`Unexpected end of file while reading chunk type`});let i=S(e,n);if(n+=4,n+r>e.length)return u.error({type:`corruptedChunk`,message:`Unexpected end of file while reading chunk data (${i})`});let a=e.slice(n,n+r);if(n+=r,n+=4,i===`tEXt`){let e=On(a);e&&t.push(e)}else if(i===`iTXt`){let e=An(a);e&&t.push(e)}if(i===`IEND`)break}return u.ok(t)}function On(e){let t=e.indexOf(0);if(t===-1)return null;let n=jn(e.slice(0,t)),r=e.slice(t+1);return{type:`tEXt`,keyword:n,text:kn(r)??jn(r)}}function kn(e){try{return new TextDecoder(`utf-8`,{fatal:!0}).decode(e)}catch{return null}}function An(e){let t=0,n=e.indexOf(0,t);if(n===-1)return null;let r=Y(e.slice(t,n));if(t=n+1,t>=e.length)return null;let i=e[t]??0;if(t+=1,t>=e.length)return null;let a=e[t]??0;t+=1;let o=e.indexOf(0,t);if(o===-1)return null;let s=Y(e.slice(t,o));t=o+1;let c=e.indexOf(0,t);if(c===-1)return null;let l=Y(e.slice(t,c));t=c+1;let u;if(i===1){let n=Mn(e.slice(t));if(!n)return null;u=Y(n)}else u=Y(e.slice(t));return{type:`iTXt`,keyword:r,compressionFlag:i,compressionMethod:a,languageTag:s,translatedKeyword:l,text:u}}function jn(e){return new TextDecoder(`iso-8859-1`).decode(e)}function Y(e){return new TextDecoder(`utf-8`).decode(e)}function Mn(e){return null}function Nn(e){if(!m(e))return u.error({type:`invalidSignature`});let t=[],n=Pn(e);if(n){let r=e.slice(n.offset,n.offset+n.length);t.push(...un(r))}let r=Fn(e);if(r){let n=e.slice(r.offset,r.offset+r.length),i=new TextDecoder(`utf-8`).decode(n);t.push({source:{type:`xmpPacket`},data:i})}return u.ok(t)}function Pn(e){let t=12;for(;t+8<=e.length;){let n=b(e,t+4);if(S(e,t)===`EXIF`)return t+8+n>e.length?null:{offset:t+8,length:n};let r=n+n%2;t+=8+r}return null}function Fn(e){let t=12;for(;t+8<=e.length;){let n=b(e,t+4);if(S(e,t)===`XMP `)return t+8+n>e.length?null:{offset:t+8,length:n};let r=n+n%2;t+=8+r}return null}function In(e){return Object.fromEntries(e.flatMap(e=>{if(re(e.keyword)){let t=ie(e.text);if(t)return Object.entries(t)}return[[e.keyword,e.text]]}))}function Ln(e){let t={};for(let n of e){let e=zn(n.source),r=n.data;if(n.source.type===`xmpPacket`){let e=ie(r);if(e){Object.assign(t,e);continue}}if(n.source.type===`exifUserComment`&&r.startsWith(`{`)){let e=Rn(r);if(e){Object.assign(t,e);continue}}t[e]=r}return t}function Rn(e){let t=L(e);if(!t.ok||t.type!==`object`)return null;let n=t.value;if(typeof n.Software==`string`&&!n.Software.startsWith(`NovelAI`)||typeof n.Comment!=`string`)return null;let r=L(n.Comment);return{Software:typeof n.Software==`string`?n.Software:`NovelAI`,Comment:r.ok?JSON.stringify(r.value):n.Comment}}function zn(e){switch(e.type){case`jpegCom`:return`Comment`;case`exifUserComment`:return`UserComment`;case`exifImageDescription`:return e.prefix??`ImageDescription`;case`exifMake`:return e.prefix??`Make`;case`xmpPacket`:return`XML:com.adobe.xmp`}}function Bn(e,t){let n=d(e),r=h(n);if(!r)return{status:`invalid`,message:`Unknown image format`};let i=Vn(n,r);if(i.status!==`success`)return i;let a=i.raw,o=an(a.format===`png`?In(a.chunks):Ln(a.segments));if(!o.ok)return{status:`unrecognized`,raw:a};let s=o.value;if(!t?.strict&&(s.width===0||s.height===0)){let e=on(n,r);e&&(s.width=s.width||e.width,s.height=s.height||e.height)}return{status:`success`,metadata:s,raw:a}}function Vn(e,t){let n=t===`png`?En(e):t===`jpeg`?xn(e):Nn(e);return n.ok?n.value.length===0?{status:`empty`}:t===`png`?{status:`success`,raw:{format:`png`,chunks:n.value}}:{status:`success`,raw:{format:t,segments:n.value}}:{status:`invalid`,message:n.error.type===`invalidSignature`?`Invalid ${t.toUpperCase()} signature`:n.error.message}}function Hn(e){let t=e.find(e=>e.keyword===`parameters`);return t?[{source:{type:`exifUserComment`},data:t.text}]:[]}function Un(e){let t=e.find(e=>e.source.type===`exifUserComment`);return t?c(`parameters`,t.data,`dynamic`):[]}function Wn(e){let t=e.find(e=>e.keyword===`parameters`);if(t&&!t.text.trimStart().startsWith(`{`))return Hn(e);let n={};for(let t of e)if(t.keyword===`prompt`){let e=L(t.text);e.ok&&e.type===`object`&&Object.assign(n,e.value)}else if(t.keyword===`extraMetadata`)n[t.keyword]=t.text;else{let e=L(t.text);n[t.keyword]=e.ok?e.value:t.text}return[{source:{type:`exifUserComment`},data:JSON.stringify(n)}]}function Gn(e){let t=r(e,`exifUserComment`);return t?t.data.trimStart().startsWith(`{`)?c(`prompt`,t.data,`text-unicode-escape`):Un(e):[]}function Kn(e){let t={};for(let n of e){let e=L(n.text);e.ok?t[n.keyword]=e.value:t[n.keyword]=n.text}return[{source:{type:`exifUserComment`},data:JSON.stringify(t)}]}function qn(e,t){let n=r(e,`exifUserComment`);if(!n)return[];let a=L(n.data);return!a.ok||a.type!==`object`?[]:Object.entries(a.value).flatMap(([e,n])=>{let r=i(n);return c(e,r===void 0?void 0:o(r),t)})}function Jn(e){return Kn(e)}let Yn=e=>{let t=r(e,`exifImageDescription`),n=r(e,`exifMake`);return!t&&!n?null:[...c(`prompt`,n?.data,`text-unicode-escape`),...c(`workflow`,t?.data,`text-unicode-escape`)]},Xn=e=>{let t=qn(e,`text-unicode-escape`);return t.length>0?t:null};function Zn(e){return Yn(e)??Xn(e)??[]}function Qn(e){let t=e.find(e=>re(e.keyword));return t?[{source:{type:`xmpPacket`},data:t.text}]:[]}function $n(e){let t=r(e,`xmpPacket`);return t?n(`XML:com.adobe.xmp`,t.data):[]}function er(e){let t=Object.fromEntries(e.map(e=>[e.keyword,e.text]));return[{source:{type:`exifUserComment`},data:JSON.stringify(t)}]}function tr(e){let t=r(e,`exifUserComment`);if(!t)return[];let n=L(t.data);return!n.ok||n.type!==`object`?[]:Object.entries(n.value).flatMap(([e,t])=>c(e,i(t),`dynamic`))}function nr(e){return Kn(e)}function rr(e){return qn(e,`dynamic`)}function ir(e){let t=e.find(e=>e.keyword===`Description`),n=t&&{source:{type:`exifImageDescription`},data:`\0\0\0\0${t.text}`},r=ar(e);return[n,{source:{type:`exifUserComment`},data:JSON.stringify(r)}].filter(e=>e!==void 0)}function ar(e){return Object.fromEntries(or.flatMap(t=>{let n=e.find(e=>e.keyword===t);return n?[[t,n.text]]:[]}))}let or=[`Comment`,`Description`,`Generation time`,`Software`,`Source`,`Title`];function sr(e){return cr(r(e,`exifUserComment`),r(e,`exifImageDescription`))}function cr(e,n){if(!e||!n)return[];let r=L(e.data);if(!r.ok||r.type!==`object`)return t(`Comment`,e.data);let a=r.value,o=lr(n,i(a.Description));return[t(`Title`,i(a.Title)??`NovelAI generated image`),c(`Description`,o,`dynamic`),t(`Software`,i(a.Software)??`NovelAI`),t(`Source`,i(a.Source)),t(`Generation time`,i(a[`Generation time`])),t(`Comment`,i(a.Comment))].flat()}function lr(e,t){if(e?.data){let t=e.data;return t.startsWith(`\0\0\0\0`)?t.slice(4):t}if(t)return t.startsWith(`\0\0\0\0`)?t.slice(4):t}function X(e){return t=>{let n=t.find(t=>t.keyword===e);return n?[{source:{type:`exifUserComment`},data:n.text}]:[]}}function Z(e,t){return n=>{let r=n.find(e=>e.source.type===`exifUserComment`);return r?c(e,r.data,t):[]}}let ur={parameters:`text-utf8-raw`,default:`text-unicode-escape`};function dr(e){let t={};for(let n of e){let e=L(n.text);t[n.keyword]=e.ok?e.value:n.text}return[{source:{type:`exifUserComment`},data:JSON.stringify(t)}]}function fr(e){let t=r(e,`exifUserComment`);if(!t)return[];let n=L(t.data);if(!n.ok||n.type!==`object`)return[];let a=n.value;return l(Object.entries(a).map(([e,t])=>{let n=i(t);return[e,n===void 0?void 0:o(n)]}),ur)}function pr(e){let t=e.find(e=>e.keyword===`parameters`);if(!t)return[];let n=L(t.text),r=[{source:{type:`exifUserComment`},data:n.ok?JSON.stringify(n.value):t.text}],i=e.find(e=>e.keyword===`prompt`);return i&&r.push({source:{type:`exifMake`},data:i.text}),r}function mr(e){let t=r(e,`exifUserComment`);return[c(`prompt`,r(e,`exifMake`)?.data,`text-unicode-escape`),c(`parameters`,t?.data,`text-unicode-escape`)].flat()}let hr={generation_data:`text-utf8-raw`,default:`text-unicode-escape`};function gr(e){let t={};for(let n of e){let e=L(n.text);t[n.keyword]=e.ok?e.value:n.text}return[{source:{type:`exifUserComment`},data:JSON.stringify(t)}]}function _r(e){let t=r(e,`exifUserComment`);if(!t)return[];let n=L(t.data);if(!n.ok||n.type!==`object`)return[];let a=n.value;return l(Object.entries(a).map(([e,t])=>{let n=i(t);return[e,n===void 0?void 0:o(n)]}),hr)}function vr(e,t){if(e.status===`empty`)return u.error({type:`missingRawData`});if(e.status===`invalid`)return u.error({type:`invalidParseResult`,status:e.status});if(e.status===`unrecognized`)return u.error({type:`unsupportedSoftware`,software:`unknown`});let n=e.raw;if(n.format===t)return u.ok(n);let r=e.metadata.software,i=Ar[r];return i?i(n,t):u.error({type:`unsupportedSoftware`,software:r})}function Q(e,t){return(n,r)=>{if(n.format===`png`){if(r===`png`)return u.ok(n);let t=e(n.chunks);return u.ok({format:r,segments:t})}if(r===`jpeg`||r===`webp`)return u.ok({format:r,segments:n.segments});let i=t(n.segments);return u.ok({format:`png`,chunks:i})}}let yr=Q(ir,sr),$=Q(Hn,Un),br=Q(Jn,Zn),xr=Q(er,tr),Sr=Q(X(`parameters`),Z(`parameters`,`text-unicode-escape`)),Cr=Q(X(`parameters`),Z(`parameters`,`text-unicode-escape`)),wr=Q(pr,mr),Tr=Q(nr,rr),Er=Q(X(`parameters`),Z(`parameters`,`text-unicode-escape`)),Dr=Q(Qn,$n),Or=Q(Wn,Gn),kr=Q(dr,fr),Ar={novelai:yr,"sd-webui":$,"sd-next":$,forge:$,"forge-classic":$,"forge-neo":$,reforge:$,"easy-reforge":$,civitai:Or,comfyui:br,tensorart:Q(gr,_r),"stability-matrix":kr,easydiffusion:xr,fooocus:Sr,"ruined-fooocus":Cr,swarmui:wr,invokeai:Tr,"hf-space":Er,"draw-things":Dr};function jr(e,t){let n=d(e),r=h(n);if(!r)return{ok:!1,error:{type:`unsupportedFormat`}};if(t.status===`empty`){let e=Nr[r].writeEmpty(n,[]);return e.ok?{ok:!0,value:e.value}:{ok:!1,error:{type:`writeFailed`,message:e.error.type}}}if(t.status===`invalid`)return{ok:!1,error:{type:`writeFailed`,message:`Cannot write invalid metadata`}};if(t.status===`unrecognized`){if(t.raw.format===r)return Mr(n,r,t.raw);let e=Nr[r].writeEmpty(n,[]);return e.ok?{ok:!0,value:e.value,warning:{type:`metadataDropped`,reason:`unrecognizedCrossFormat`}}:{ok:!1,error:{type:`writeFailed`,message:e.error.type}}}let i=vr(t,r);return i.ok?Mr(n,r,i.value):{ok:!1,error:{type:`conversionFailed`,message:`Failed to convert metadata: ${i.error.type}`}}}function Mr(e,t,n){if(t===`png`&&n.format===`png`){let t=A(e,n.chunks);return t.ok?{ok:!0,value:t.value}:{ok:!1,error:{type:`writeFailed`,message:t.error.type}}}if(t===`jpeg`&&n.format===`jpeg`){let t=O(e,n.segments);return t.ok?{ok:!0,value:t.value}:{ok:!1,error:{type:`writeFailed`,message:t.error.type}}}if(t===`webp`&&n.format===`webp`){let t=ke(e,n.segments);return t.ok?{ok:!0,value:t.value}:{ok:!1,error:{type:`writeFailed`,message:t.error.type}}}return{ok:!1,error:{type:`writeFailed`,message:`Internal error: format mismatch after conversion`}}}let Nr={png:{writeEmpty:A},jpeg:{writeEmpty:O},webp:{writeEmpty:ke}},Pr=Object.freeze({novelai:`NovelAI`,comfyui:`ComfyUI`,swarmui:`SwarmUI`,tensorart:`TensorArt`,"stability-matrix":`Stability Matrix`,invokeai:`InvokeAI`,"sd-webui":`Stable Diffusion WebUI`,forge:`Forge`,"forge-classic":`Forge - Classic`,"forge-neo":`Forge - Neo`,reforge:`reForge`,"easy-reforge":`EasyReforge`,"sd-next":`SD.Next`,civitai:`Civitai`,"hf-space":`Hugging Face Space`,easydiffusion:`Easy Diffusion`,fooocus:`Fooocus`,"ruined-fooocus":`Ruined Fooocus`,"draw-things":`Draw Things`});return e.embed=Re,e.writeAsWebUI=Re,e.formatAsWebUI=N,e.formatRaw=Ie,e.read=Bn,e.softwareLabels=Pr,e.stringify=Le,e.write=jr,e})({});