New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

url-sanitizer

Package Overview
Dependencies
Maintainers
1
Versions
76
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

url-sanitizer - npm Package Compare versions

Comparing version 0.10.7 to 0.10.8

2

dist/url-sanitizer-wo-dompurify.js

@@ -14,3 +14,3 @@ // bundle_wo_dompurify/mjs/dompurify.js

// bundle_wo_dompurify/lib/iana/uri-schemes.json
var uri_schemes_default = ["aaa", "aaas", "about", "acap", "acct", "acd", "acr", "adiumxtra", "adt", "afp", "afs", "aim", "amss", "android", "appdata", "apt", "ar", "ark", "attachment", "aw", "barion", "beshare", "bitcoin", "bitcoincash", "blob", "bolo", "browserext", "cabal", "calculator", "callto", "cap", "cast", "casts", "chrome", "chrome-extension", "cid", "coap", "coaps", "com-eventbrite-attendee", "content", "content-type", "crid", "cstr", "cvs", "dab", "dat", "data", "dav", "dhttp", "diaspora", "dict", "did", "dis", "dlna-playcontainer", "dlna-playsingle", "dns", "dntp", "doi", "dpp", "drm", "dtmi", "dtn", "dvb", "dvx", "dweb", "ed2k", "eid", "elsi", "embedded", "ens", "ethereum", "example", "facetime", "feed", "feedready", "fido", "file", "finger", "first-run-pen-experience", "fish", "fm", "ftp", "fuchsia-pkg", "geo", "gg", "git", "gitoid", "gizmoproject", "go", "gopher", "graph", "gtalk", "h323", "ham", "hcap", "hcp", "http", "https", "hxxp", "hxxps", "hydrazone", "hyper", "iax", "icap", "icon", "im", "imap", "info", "iotdisco", "ipfs", "ipn", "ipns", "ipp", "ipps", "irc", "irc6", "ircs", "iris", "iris.beep", "iris.lwz", "iris.xpc", "iris.xpcs", "isostore", "itms", "jabber", "jar", "jms", "keyparc", "lastfm", "lbry", "ldap", "ldaps", "leaptofrogans", "lorawan", "lpa", "lvlt", "magnet", "mailto", "maps", "market", "matrix", "message", "microsoft.windows.camera", "microsoft.windows.camera.multipicker", "microsoft.windows.camera.picker", "mid", "mms", "mongodb", "moz", "moz-extension", "ms-access", "ms-appinstaller", "ms-browser-extension", "ms-calculator", "ms-drive-to", "ms-enrollment", "ms-excel", "ms-eyecontrolspeech", "ms-gamebarservices", "ms-gamingoverlay", "ms-getoffice", "ms-help", "ms-infopath", "ms-inputapp", "ms-lockscreencomponent-config", "ms-media-stream-id", "ms-meetnow", "ms-mixedrealitycapture", "ms-mobileplans", "ms-newsandinterests", "ms-officeapp", "ms-people", "ms-powerpoint", "ms-project", "ms-publisher", "ms-remotedesktop", "ms-remotedesktop-launch", "ms-restoretabcompanion", "ms-screenclip", "ms-screensketch", "ms-search", "ms-search-repair", "ms-secondary-screen-controller", "ms-secondary-screen-setup", "ms-settings", "ms-settings-airplanemode", "ms-settings-bluetooth", "ms-settings-camera", "ms-settings-cellular", "ms-settings-cloudstorage", "ms-settings-connectabledevices", "ms-settings-displays-topology", "ms-settings-emailandaccounts", "ms-settings-language", "ms-settings-location", "ms-settings-lock", "ms-settings-nfctransactions", "ms-settings-notifications", "ms-settings-power", "ms-settings-privacy", "ms-settings-proximity", "ms-settings-screenrotation", "ms-settings-wifi", "ms-settings-workplace", "ms-spd", "ms-stickers", "ms-sttoverlay", "ms-transit-to", "ms-useractivityset", "ms-virtualtouchpad", "ms-visio", "ms-walk-to", "ms-whiteboard", "ms-whiteboard-cmd", "ms-word", "msnim", "msrp", "msrps", "mss", "mt", "mtqp", "mumble", "mupdate", "mvn", "news", "nfs", "ni", "nih", "nntp", "notes", "num", "ocf", "oid", "onenote", "onenote-cmd", "opaquelocktoken", "openpgp4fpr", "otpauth", "palm", "paparazzi", "payment", "payto", "pkcs11", "platform", "pop", "pres", "proxy", "psyc", "pttp", "pwid", "qb", "query", "quic-transport", "redis", "rediss", "reload", "res", "resource", "rmi", "rsync", "rtmfp", "rtmp", "rtsp", "rtsps", "rtspu", "sarif", "secondlife", "secret-token", "service", "session", "sftp", "sgn", "shc", "sieve", "simpleledger", "simplex", "sip", "sips", "skype", "smb", "smp", "sms", "smtp", "snmp", "soap.beep", "soap.beeps", "soldat", "spiffe", "spotify", "ssb", "ssh", "starknet", "steam", "stun", "stuns", "submit", "svn", "swh", "swid", "swidpath", "tag", "taler", "teamspeak", "tel", "teliaeid", "telnet", "tftp", "things", "thismessage", "tip", "tn3270", "tool", "turn", "turns", "tv", "udp", "unreal", "urn", "ut2004", "uuid-in-package", "v-event", "vemmi", "ventrilo", "ves", "view-source", "vnc", "vscode", "vscode-insiders", "vsls", "w3", "wcr", "web3", "webcal", "wifi", "ws", "wss", "wtai", "wyciwyg", "xcon", "xcon-userid", "xfire", "xmlrpc.beep", "xmlrpc.beeps", "xmpp", "xri", "ymsgr", "z39.50r", "z39.50s"];
var uri_schemes_default = ["aaa", "aaas", "about", "acap", "acct", "acd", "acr", "adiumxtra", "adt", "afp", "afs", "aim", "amss", "android", "appdata", "apt", "ar", "ark", "at", "attachment", "aw", "barion", "beshare", "bitcoin", "bitcoincash", "blob", "bolo", "browserext", "cabal", "calculator", "callto", "cap", "cast", "casts", "chrome", "chrome-extension", "cid", "coap", "coaps", "com-eventbrite-attendee", "content", "content-type", "crid", "cstr", "cvs", "dab", "dat", "data", "dav", "dhttp", "diaspora", "dict", "did", "dis", "dlna-playcontainer", "dlna-playsingle", "dns", "dntp", "doi", "dpp", "drm", "dtmi", "dtn", "dvb", "dvx", "dweb", "ed2k", "eid", "elsi", "embedded", "ens", "ethereum", "example", "facetime", "feed", "feedready", "fido", "file", "finger", "first-run-pen-experience", "fish", "fm", "ftp", "fuchsia-pkg", "geo", "gg", "git", "gitoid", "gizmoproject", "go", "gopher", "graph", "gtalk", "h323", "ham", "hcap", "hcp", "http", "https", "hxxp", "hxxps", "hydrazone", "hyper", "iax", "icap", "icon", "im", "imap", "info", "iotdisco", "ipfs", "ipn", "ipns", "ipp", "ipps", "irc", "irc6", "ircs", "iris", "iris.beep", "iris.lwz", "iris.xpc", "iris.xpcs", "isostore", "itms", "jabber", "jar", "jms", "keyparc", "lastfm", "lbry", "ldap", "ldaps", "leaptofrogans", "lorawan", "lpa", "lvlt", "magnet", "mailto", "maps", "market", "matrix", "message", "microsoft.windows.camera", "microsoft.windows.camera.multipicker", "microsoft.windows.camera.picker", "mid", "mms", "mongodb", "moz", "moz-extension", "ms-access", "ms-appinstaller", "ms-browser-extension", "ms-calculator", "ms-drive-to", "ms-enrollment", "ms-excel", "ms-eyecontrolspeech", "ms-gamebarservices", "ms-gamingoverlay", "ms-getoffice", "ms-help", "ms-infopath", "ms-inputapp", "ms-launchremotedesktop", "ms-lockscreencomponent-config", "ms-media-stream-id", "ms-meetnow", "ms-mixedrealitycapture", "ms-mobileplans", "ms-newsandinterests", "ms-officeapp", "ms-people", "ms-powerpoint", "ms-project", "ms-publisher", "ms-remotedesktop", "ms-remotedesktop-launch", "ms-restoretabcompanion", "ms-screenclip", "ms-screensketch", "ms-search", "ms-search-repair", "ms-secondary-screen-controller", "ms-secondary-screen-setup", "ms-settings", "ms-settings-airplanemode", "ms-settings-bluetooth", "ms-settings-camera", "ms-settings-cellular", "ms-settings-cloudstorage", "ms-settings-connectabledevices", "ms-settings-displays-topology", "ms-settings-emailandaccounts", "ms-settings-language", "ms-settings-location", "ms-settings-lock", "ms-settings-nfctransactions", "ms-settings-notifications", "ms-settings-power", "ms-settings-privacy", "ms-settings-proximity", "ms-settings-screenrotation", "ms-settings-wifi", "ms-settings-workplace", "ms-spd", "ms-stickers", "ms-sttoverlay", "ms-transit-to", "ms-useractivityset", "ms-virtualtouchpad", "ms-visio", "ms-walk-to", "ms-whiteboard", "ms-whiteboard-cmd", "ms-word", "msnim", "msrp", "msrps", "mss", "mt", "mtqp", "mumble", "mupdate", "mvn", "news", "nfs", "ni", "nih", "nntp", "notes", "num", "ocf", "oid", "onenote", "onenote-cmd", "opaquelocktoken", "openpgp4fpr", "otpauth", "palm", "paparazzi", "payment", "payto", "pkcs11", "platform", "pop", "pres", "proxy", "psyc", "pttp", "pwid", "qb", "query", "quic-transport", "redis", "rediss", "reload", "res", "resource", "rmi", "rsync", "rtmfp", "rtmp", "rtsp", "rtsps", "rtspu", "sarif", "secondlife", "secret-token", "service", "session", "sftp", "sgn", "shc", "sieve", "simpleledger", "simplex", "sip", "sips", "skype", "smb", "smp", "sms", "smtp", "snmp", "soap.beep", "soap.beeps", "soldat", "spiffe", "spotify", "ssb", "ssh", "starknet", "steam", "stun", "stuns", "submit", "svn", "swh", "swid", "swidpath", "tag", "taler", "teamspeak", "tel", "teliaeid", "telnet", "tftp", "things", "thismessage", "tip", "tn3270", "tool", "turn", "turns", "tv", "udp", "unreal", "urn", "ut2004", "uuid-in-package", "v-event", "vemmi", "ventrilo", "ves", "view-source", "vnc", "vscode", "vscode-insiders", "vsls", "w3", "wcr", "web3", "webcal", "wifi", "ws", "wss", "wtai", "wyciwyg", "xcon", "xcon-userid", "xfire", "xmlrpc.beep", "xmlrpc.beeps", "xmpp", "xri", "ymsgr", "z39.50r", "z39.50s"];

@@ -17,0 +17,0 @@ // bundle_wo_dompurify/mjs/file-reader.js

@@ -1,2 +0,2 @@

var{DOMPurify:B}=globalThis;var b=t=>Object.prototype.toString.call(t).slice(8,-1),d=t=>typeof t=="string"||t instanceof String;var z=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var G=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:q}=globalThis;var U=16,te=/^[\w+/\-=]+$/,se=/:$/,re=/^\d+/,ae=/#x?$/,ie=/^#(?:x(?:00)?[2-7]|\d)/,oe=/^x[\dA-F]+/i,ne=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,ce=/^[a-z][\da-z+\-.]*$/,pe=/^(?:ext|web)\+[a-z]+$/,Y=/(?:java|vb)script/,le=/^%[\dA-F]{2}$/i,T=t=>{if(!d(t))throw new TypeError(`Expected String but got ${b(t)}.`);let e=[];for(let s of t)e.push(`%${s.charCodeAt(0).toString(U).toUpperCase()}`);return e.join("")},j=t=>{d(t)&&le.test(t)&&(t=t.toUpperCase());let[e,s,r,a,o,n]=["&","#","<",">",'"',"'"].map(T),i;return t===e?i=`${e}amp;`:t===r?i=`${e}lt;`:t===a?i=`${e}gt;`:t===o?i=`${e}quot;`:t===n?i=`${e}${s}39;`:i=t,i},X=t=>{if(d(t)){if(!te.test(t))throw new Error(`Invalid base64 data: ${t}`)}else throw new TypeError(`Expected String but got ${b(t)}.`);let e=atob(t),s=Uint8Array.from([...e].map(o=>o.charCodeAt(0))),r=new Set(z),a;return s.every(o=>r.has(o))?a=e.replace(/\s/g,T):a=t,a},M=(t,e=0)=>{if(!d(t))throw new TypeError(`Expected String but got ${b(t)}.`);if(Number.isInteger(e)){if(e>U)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${b(e)}.`);let s=decodeURIComponent(t);if(/&#/.test(s)){let r=new Set(z),a=[...s.matchAll(ne)].reverse();for(let o of a){let[n,i]=o,p;if(oe.test(i)?p=parseInt(`0${i}`,U):re.test(i)&&(p=parseInt(i)),Number.isInteger(p)){let{index:u}=o,[l,f]=[s.substring(0,u),s.substring(u+n.length)];r.has(p)?(s=`${l}${String.fromCharCode(p)}${f}`,(ae.test(l)||ie.test(f))&&(s=M(s,++e))):p<U*U&&(s=`${l}${f}`)}}}return s},Q=t=>new Promise((e,s)=>{let r=new q;r.addEventListener("error",()=>s(r.error)),r.addEventListener("abort",()=>e(r.result)),r.addEventListener("load",()=>e(r.result)),r.readAsDataURL(t)}),A=class{#e;constructor(){this.#e=new Set(G)}get(){return[...this.#e]}has(e){return this.#e.has(e)}add(e){if(d(e)){if(Y.test(e)||!ce.test(e))throw new Error(`Invalid scheme: ${e}`)}else throw new TypeError(`Expected String but got ${b(e)}.`);return this.#e.add(e),[...this.#e]}remove(e){return this.#e.delete(e)}verify(e){let s;if(d(e))try{let{protocol:r}=new URL(e),a=r.replace(se,""),o=a.split("+");s=!Y.test(a)&&pe.test(a)||o.every(n=>this.#e.has(n))}catch{s=!1}return!!s}reset(){this.#e.clear();for(let e of G)this.#e.add(e)}};var me=16,O=/data:[\w#&+\-./;=]*,/,J=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,de=/data:[\w#&+\-./;=]*,[^"]+/g,v=/:$/,fe=/(?:#|%23)$/,he=/(?<!(?:#|%23).*)(?:\?|%3F)$/,ue=/[<>"'\s]/g,ge=/%(?:2(?:2|7)|3(?:C|E))/g,ye=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,N=/(?:java|vb)script|blob/,K=/%(?:2(?:2|7)|3(?:C|E))|[<>"']/,be=/%26/g,I=class extends A{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(e){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let s=e;if(O.test(s)){let a=[...s.matchAll(de)].reverse();for(let o of a){let[n]=o;J.test(n)&&([n]=J.exec(n)),this.#e++,this.#t.add(n);let i=this.sanitize(n,{allow:["data"]}),{index:p}=o,[u,l]=[s.substring(0,p),s.substring(p+n.length)];i?s=`${u}${i}${l}`:s=`${u}${l}`}}return s}purify(e){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let s=B.sanitize(decodeURIComponent(e));return s&&O.test(s)&&(s=this.replace(s)),s=s.replace(fe,"").replace(he,""),encodeURI(s)}sanitize(e,s){if(this.#e>me)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:a,only:o,remove:n}=s??{},i=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),p=new Set,u=!1;if(Array.isArray(o)&&o.length){let f=super.get();for(let m of f)i.set(m,!1);let c=Object.values(o);for(let m of c)if(d(m)&&(m=m.trim(),!N.test(m))){if(super.has(m))i.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(i.set(m,!0),p.add(m))}!u&&i.has(m)&&(u=i.get(m))}}else{if(Array.isArray(r)&&r.length){let f=Object.values(r);for(let c of f)if(d(c)&&(c=c.trim(),!N.test(c)))if(super.has(c))i.set(c,!0);else{try{super.add(c)}catch{}super.has(c)&&(i.set(c,!0),p.add(c))}}if(Array.isArray(a)&&a.length){let f=Object.values(a);for(let c of f)d(c)&&(c=c.trim(),c&&i.set(c,!1))}}let l;if(super.verify(e)){let{hash:f,href:c,pathname:m,protocol:E,search:_}=new URL(e),C=E.replace(v,""),k=C.split("+"),L;if(u)L=k.every(y=>i.get(y));else for(let[y,x]of i.entries())if(L=x||C!==y&&k.every(h=>h!==y),!L)break;if(L){let y=k.includes("data"),x,h=c;if(y){let[R,...D]=m.split(","),S=`${D.join(",")}${_}${f}`,$=R.split(";"),P=$[$.length-1]==="base64",g=S;P&&(g=X(S));try{let H=M(g).trim(),{protocol:V}=new URL(H);V.replace(v,"").split("+").some(W=>N.test(W))&&(h="")}catch{}let F=O.test(g);g!==S||F?F?g=this.replace(g):this.#t.has(e)?this.#t.delete(e):x=!0:this.#t.has(e)?this.#t.delete(e):x=!0,(!R||ye.test(R))&&(g=this.purify(g)),h&&g?(P&&g!==S&&$.pop(),h=`${C}:${$.join(";")},${g}`):h=""}else x=!0;if(!y&&n&&K.test(h)){let R=K.exec(h),{index:D}=R;h=h.substring(0,D)}h?(l=h.replace(ue,T).replace(be,j),x&&(y||(l=l.replace(ge,j)),this.#e=0)):this.#e=0}p.size&&p.forEach(y=>{super.remove(y)})}return l||null}parse(e,s){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let r=new Map([["input",e]]),a;if(this.verify(e)){let{protocol:o}=new URL(e);o==="blob:"?a=e:a=this.sanitize(e,s??{allow:["data","file"]})}if(a){let o=new URL(a),{pathname:n,protocol:i}=o,u=i.replace(v,"").split("+").includes("data");if(r.set("valid",!0),u){let l=new Map,[f,...c]=n.split(","),m=`${c.join(",")}`,E=f.split(";"),_=E[E.length-1]==="base64";_&&E.pop(),l.set("mime",E.join(";")),l.set("base64",_),l.set("data",m),r.set("data",Object.fromEntries(l))}else r.set("data",null);for(let l in o){let f=o[l];d(f)&&r.set(l,f)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},w=new I,we=async(t,e={allow:[],deny:[],only:[]})=>{let s;if(t&&d(t)){let r;try{let{protocol:a}=new URL(t);r=a.replace(v,"")}catch{}if(r==="blob"){let{allow:a,deny:o,only:n}=e;if(Array.isArray(a)&&a.includes("blob")&&!(Array.isArray(o)&&o.includes("blob"))||Array.isArray(n)&&n.includes("blob")){let i;try{i=await fetch(t).then(p=>p.blob()).then(Q)}catch{}if(i){if(Array.isArray(n))n.includes("data")||n.push("data");else if(Array.isArray(a)&&(a.includes("data")||a.push("data"),Array.isArray(o)&&o.includes("data"))){let p=o.indexOf("data");o.splice(p,1)}s=w.sanitize(i,e)}}URL.revokeObjectURL(t)}else r&&(s=w.sanitize(t,e))}return s||null},Ee=(t,e)=>{let s;if(t&&d(t)){let r;try{let{protocol:a}=new URL(t);r=a.replace(v,"")}catch{}r==="blob"?URL.revokeObjectURL(t):r&&(s=w.sanitize(t,e))}return s||null},xe=async t=>w.parse(t),Re=t=>w.parse(t),Ue=async t=>w.verify(t),ve=t=>w.verify(t);export{w as default,Ue as isURI,ve as isURISync,xe as parseURL,Re as parseURLSync,we as sanitizeURL,Ee as sanitizeURLSync};
var{DOMPurify:B}=globalThis;var b=t=>Object.prototype.toString.call(t).slice(8,-1),d=t=>typeof t=="string"||t instanceof String;var z=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var G=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-launchremotedesktop","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:q}=globalThis;var U=16,te=/^[\w+/\-=]+$/,se=/:$/,re=/^\d+/,ae=/#x?$/,ie=/^#(?:x(?:00)?[2-7]|\d)/,oe=/^x[\dA-F]+/i,ne=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,ce=/^[a-z][\da-z+\-.]*$/,pe=/^(?:ext|web)\+[a-z]+$/,Y=/(?:java|vb)script/,le=/^%[\dA-F]{2}$/i,T=t=>{if(!d(t))throw new TypeError(`Expected String but got ${b(t)}.`);let e=[];for(let s of t)e.push(`%${s.charCodeAt(0).toString(U).toUpperCase()}`);return e.join("")},j=t=>{d(t)&&le.test(t)&&(t=t.toUpperCase());let[e,s,r,a,o,n]=["&","#","<",">",'"',"'"].map(T),i;return t===e?i=`${e}amp;`:t===r?i=`${e}lt;`:t===a?i=`${e}gt;`:t===o?i=`${e}quot;`:t===n?i=`${e}${s}39;`:i=t,i},X=t=>{if(d(t)){if(!te.test(t))throw new Error(`Invalid base64 data: ${t}`)}else throw new TypeError(`Expected String but got ${b(t)}.`);let e=atob(t),s=Uint8Array.from([...e].map(o=>o.charCodeAt(0))),r=new Set(z),a;return s.every(o=>r.has(o))?a=e.replace(/\s/g,T):a=t,a},M=(t,e=0)=>{if(!d(t))throw new TypeError(`Expected String but got ${b(t)}.`);if(Number.isInteger(e)){if(e>U)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${b(e)}.`);let s=decodeURIComponent(t);if(/&#/.test(s)){let r=new Set(z),a=[...s.matchAll(ne)].reverse();for(let o of a){let[n,i]=o,p;if(oe.test(i)?p=parseInt(`0${i}`,U):re.test(i)&&(p=parseInt(i)),Number.isInteger(p)){let{index:u}=o,[l,f]=[s.substring(0,u),s.substring(u+n.length)];r.has(p)?(s=`${l}${String.fromCharCode(p)}${f}`,(ae.test(l)||ie.test(f))&&(s=M(s,++e))):p<U*U&&(s=`${l}${f}`)}}}return s},Q=t=>new Promise((e,s)=>{let r=new q;r.addEventListener("error",()=>s(r.error)),r.addEventListener("abort",()=>e(r.result)),r.addEventListener("load",()=>e(r.result)),r.readAsDataURL(t)}),A=class{#e;constructor(){this.#e=new Set(G)}get(){return[...this.#e]}has(e){return this.#e.has(e)}add(e){if(d(e)){if(Y.test(e)||!ce.test(e))throw new Error(`Invalid scheme: ${e}`)}else throw new TypeError(`Expected String but got ${b(e)}.`);return this.#e.add(e),[...this.#e]}remove(e){return this.#e.delete(e)}verify(e){let s;if(d(e))try{let{protocol:r}=new URL(e),a=r.replace(se,""),o=a.split("+");s=!Y.test(a)&&pe.test(a)||o.every(n=>this.#e.has(n))}catch{s=!1}return!!s}reset(){this.#e.clear();for(let e of G)this.#e.add(e)}};var me=16,O=/data:[\w#&+\-./;=]*,/,J=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,de=/data:[\w#&+\-./;=]*,[^"]+/g,v=/:$/,fe=/(?:#|%23)$/,he=/(?<!(?:#|%23).*)(?:\?|%3F)$/,ue=/[<>"'\s]/g,ge=/%(?:2(?:2|7)|3(?:C|E))/g,ye=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,N=/(?:java|vb)script|blob/,K=/%(?:2(?:2|7)|3(?:C|E))|[<>"']/,be=/%26/g,I=class extends A{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(e){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let s=e;if(O.test(s)){let a=[...s.matchAll(de)].reverse();for(let o of a){let[n]=o;J.test(n)&&([n]=J.exec(n)),this.#e++,this.#t.add(n);let i=this.sanitize(n,{allow:["data"]}),{index:p}=o,[u,l]=[s.substring(0,p),s.substring(p+n.length)];i?s=`${u}${i}${l}`:s=`${u}${l}`}}return s}purify(e){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let s=B.sanitize(decodeURIComponent(e));return s&&O.test(s)&&(s=this.replace(s)),s=s.replace(fe,"").replace(he,""),encodeURI(s)}sanitize(e,s){if(this.#e>me)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:r,deny:a,only:o,remove:n}=s??{},i=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),p=new Set,u=!1;if(Array.isArray(o)&&o.length){let f=super.get();for(let m of f)i.set(m,!1);let c=Object.values(o);for(let m of c)if(d(m)&&(m=m.trim(),!N.test(m))){if(super.has(m))i.set(m,!0);else{try{super.add(m)}catch{}super.has(m)&&(i.set(m,!0),p.add(m))}!u&&i.has(m)&&(u=i.get(m))}}else{if(Array.isArray(r)&&r.length){let f=Object.values(r);for(let c of f)if(d(c)&&(c=c.trim(),!N.test(c)))if(super.has(c))i.set(c,!0);else{try{super.add(c)}catch{}super.has(c)&&(i.set(c,!0),p.add(c))}}if(Array.isArray(a)&&a.length){let f=Object.values(a);for(let c of f)d(c)&&(c=c.trim(),c&&i.set(c,!1))}}let l;if(super.verify(e)){let{hash:f,href:c,pathname:m,protocol:E,search:_}=new URL(e),C=E.replace(v,""),k=C.split("+"),L;if(u)L=k.every(y=>i.get(y));else for(let[y,x]of i.entries())if(L=x||C!==y&&k.every(h=>h!==y),!L)break;if(L){let y=k.includes("data"),x,h=c;if(y){let[R,...D]=m.split(","),S=`${D.join(",")}${_}${f}`,$=R.split(";"),P=$[$.length-1]==="base64",g=S;P&&(g=X(S));try{let H=M(g).trim(),{protocol:V}=new URL(H);V.replace(v,"").split("+").some(W=>N.test(W))&&(h="")}catch{}let F=O.test(g);g!==S||F?F?g=this.replace(g):this.#t.has(e)?this.#t.delete(e):x=!0:this.#t.has(e)?this.#t.delete(e):x=!0,(!R||ye.test(R))&&(g=this.purify(g)),h&&g?(P&&g!==S&&$.pop(),h=`${C}:${$.join(";")},${g}`):h=""}else x=!0;if(!y&&n&&K.test(h)){let R=K.exec(h),{index:D}=R;h=h.substring(0,D)}h?(l=h.replace(ue,T).replace(be,j),x&&(y||(l=l.replace(ge,j)),this.#e=0)):this.#e=0}p.size&&p.forEach(y=>{super.remove(y)})}return l||null}parse(e,s){if(!d(e))throw new TypeError(`Expected String but got ${b(e)}.`);let r=new Map([["input",e]]),a;if(this.verify(e)){let{protocol:o}=new URL(e);o==="blob:"?a=e:a=this.sanitize(e,s??{allow:["data","file"]})}if(a){let o=new URL(a),{pathname:n,protocol:i}=o,u=i.replace(v,"").split("+").includes("data");if(r.set("valid",!0),u){let l=new Map,[f,...c]=n.split(","),m=`${c.join(",")}`,E=f.split(";"),_=E[E.length-1]==="base64";_&&E.pop(),l.set("mime",E.join(";")),l.set("base64",_),l.set("data",m),r.set("data",Object.fromEntries(l))}else r.set("data",null);for(let l in o){let f=o[l];d(f)&&r.set(l,f)}}else r.set("valid",!1);return Object.fromEntries(r)}reset(){super.reset(),this.#e=0,this.#t.clear()}},w=new I,we=async(t,e={allow:[],deny:[],only:[]})=>{let s;if(t&&d(t)){let r;try{let{protocol:a}=new URL(t);r=a.replace(v,"")}catch{}if(r==="blob"){let{allow:a,deny:o,only:n}=e;if(Array.isArray(a)&&a.includes("blob")&&!(Array.isArray(o)&&o.includes("blob"))||Array.isArray(n)&&n.includes("blob")){let i;try{i=await fetch(t).then(p=>p.blob()).then(Q)}catch{}if(i){if(Array.isArray(n))n.includes("data")||n.push("data");else if(Array.isArray(a)&&(a.includes("data")||a.push("data"),Array.isArray(o)&&o.includes("data"))){let p=o.indexOf("data");o.splice(p,1)}s=w.sanitize(i,e)}}URL.revokeObjectURL(t)}else r&&(s=w.sanitize(t,e))}return s||null},Ee=(t,e)=>{let s;if(t&&d(t)){let r;try{let{protocol:a}=new URL(t);r=a.replace(v,"")}catch{}r==="blob"?URL.revokeObjectURL(t):r&&(s=w.sanitize(t,e))}return s||null},xe=async t=>w.parse(t),Re=t=>w.parse(t),Ue=async t=>w.verify(t),ve=t=>w.verify(t);export{w as default,Ue as isURI,ve as isURISync,xe as parseURL,Re as parseURLSync,we as sanitizeURL,Ee as sanitizeURLSync};
/*!

@@ -3,0 +3,0 @@ * URL Sanitizer

@@ -1,3 +0,3 @@

var Sn=Object.create;var Pt=Object.defineProperty;var wn=Object.getOwnPropertyDescriptor;var Ln=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,xn=Object.prototype.hasOwnProperty;var Nn=(s,n)=>()=>(n||s((n={exports:{}}).exports,n),n.exports);var On=(s,n,o,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of Ln(n))!xn.call(s,p)&&p!==o&&Pt(s,p,{get:()=>n[p],enumerable:!(m=wn(n,p))||m.enumerable});return s};var Cn=(s,n,o)=>(o=s!=null?Sn(Dn(s)):{},On(n||!s||!s.__esModule?Pt(o,"default",{value:s,enumerable:!0}):o,s));var Ft=Nn((Ke,Ze)=>{(function(s,n){typeof Ke=="object"&&typeof Ze<"u"?Ze.exports=n():typeof define=="function"&&define.amd?define(n):(s=typeof globalThis<"u"?globalThis:s||self,s.DOMPurify=n())})(Ke,function(){"use strict";let{entries:s,setPrototypeOf:n,isFrozen:o,getPrototypeOf:m,getOwnPropertyDescriptor:p}=Object,{freeze:l,seal:f,create:u}=Object,{apply:A,construct:I}=typeof Reflect<"u"&&Reflect;A||(A=function(a,_,d){return a.apply(_,d)}),l||(l=function(a){return a}),f||(f=function(a){return a}),I||(I=function(a,_){return new a(..._)});let S=g(Array.prototype.forEach),L=g(Array.prototype.pop),h=g(Array.prototype.push),y=g(String.prototype.toLowerCase),z=g(String.prototype.toString),ee=g(String.prototype.match),M=g(String.prototype.replace),ce=g(String.prototype.indexOf),te=g(String.prototype.trim),b=g(RegExp.prototype.test),P=K(TypeError);function g(E){return function(a){for(var _=arguments.length,d=new Array(_>1?_-1:0),D=1;D<_;D++)d[D-1]=arguments[D];return A(E,a,d)}}function K(E){return function(){for(var a=arguments.length,_=new Array(a),d=0;d<a;d++)_[d]=arguments[d];return I(E,_)}}function c(E,a,_){var d;_=(d=_)!==null&&d!==void 0?d:y,n&&n(E,null);let D=a.length;for(;D--;){let H=a[D];if(typeof H=="string"){let $=_(H);$!==H&&(o(a)||(a[D]=$),H=$)}E[H]=!0}return E}function G(E){let a=u(null);for(let[_,d]of s(E))a[_]=d;return a}function Y(E,a){for(;E!==null;){let d=p(E,a);if(d){if(d.get)return g(d.get);if(typeof d.value=="function")return g(d.value)}E=m(E)}function _(d){return console.warn("fallback value for",d),null}return _}let pe=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),U=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),ne=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Te=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),me=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),rt=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),_e=l(["#text"]),at=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Oe=l(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),lt=l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),ge=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),jt=f(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Yt=f(/<%[\w\W]*|[\w\W]*%>/gm),Xt=f(/\${[\w\W]*}/gm),qt=f(/^data-[\-\w.\u00B7-\uFFFF]/),Vt=f(/^aria-[\-\w]+$/),ct=f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Kt=f(/^(?:\w+script|data):/i),Zt=f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),pt=f(/^html$/i);var mt=Object.freeze({__proto__:null,MUSTACHE_EXPR:jt,ERB_EXPR:Yt,TMPLIT_EXPR:Xt,DATA_ATTR:qt,ARIA_ATTR:Vt,IS_ALLOWED_URI:ct,IS_SCRIPT_OR_DATA:Kt,ATTR_WHITESPACE:Zt,DOCTYPE_NAME:pt});let Qt=()=>typeof window>"u"?null:window,Jt=function(a,_){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let d=null,D="data-tt-policy-suffix";_&&_.hasAttribute(D)&&(d=_.getAttribute(D));let H="dompurify"+(d?"#"+d:"");try{return a.createPolicy(H,{createHTML($){return $},createScriptURL($){return $}})}catch{return console.warn("TrustedTypes policy "+H+" could not be created."),null}};function ft(){let E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Qt(),a=r=>ft(r);if(a.version="3.0.3",a.removed=[],!E||!E.document||E.document.nodeType!==9)return a.isSupported=!1,a;let _=E.document,d=_.currentScript,{document:D}=E,{DocumentFragment:H,HTMLTemplateElement:$,Node:Ce,Element:ut,NodeFilter:ve,NamedNodeMap:tn=E.NamedNodeMap||E.MozNamedAttrMap,HTMLFormElement:nn,DOMParser:sn,trustedTypes:Ae}=E,ye=ut.prototype,on=Y(ye,"cloneNode"),rn=Y(ye,"nextSibling"),an=Y(ye,"childNodes"),Ie=Y(ye,"parentNode");if(typeof $=="function"){let r=D.createElement("template");r.content&&r.content.ownerDocument&&(D=r.content.ownerDocument)}let k,fe="",{implementation:Me,createNodeIterator:ln,createDocumentFragment:cn,getElementsByTagName:pn}=D,{importNode:mn}=_,B={};a.isSupported=typeof s=="function"&&typeof Ie=="function"&&Me&&Me.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Ue,ERB_EXPR:ke,TMPLIT_EXPR:Pe,DATA_ATTR:fn,ARIA_ATTR:un,IS_SCRIPT_OR_DATA:dn,ATTR_WHITESPACE:dt}=mt,{IS_ALLOWED_URI:ht}=mt,x=null,Et=c({},[...pe,...U,...ne,...me,..._e]),N=null,Tt=c({},[...at,...Oe,...lt,...ge]),w=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ue=null,Fe=null,_t=!0,ze=!0,gt=!1,At=!0,se=!1,Z=!1,Ge=!1,He=!1,ie=!1,be=!1,Re=!1,yt=!0,bt=!1,hn="user-content-",$e=!0,de=!1,oe={},re=null,Rt=c({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),St=null,wt=c({},["audio","video","img","source","image","track"]),Be=null,Lt=c({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Se="http://www.w3.org/1998/Math/MathML",we="http://www.w3.org/2000/svg",X="http://www.w3.org/1999/xhtml",ae=X,We=!1,je=null,En=c({},[Se,we,X],z),Q,Tn=["application/xhtml+xml","text/html"],_n="text/html",O,le=null,gn=D.createElement("form"),Dt=function(e){return e instanceof RegExp||e instanceof Function},Ye=function(e){if(!(le&&le===e)){if((!e||typeof e!="object")&&(e={}),e=G(e),Q=Tn.indexOf(e.PARSER_MEDIA_TYPE)===-1?Q=_n:Q=e.PARSER_MEDIA_TYPE,O=Q==="application/xhtml+xml"?z:y,x="ALLOWED_TAGS"in e?c({},e.ALLOWED_TAGS,O):Et,N="ALLOWED_ATTR"in e?c({},e.ALLOWED_ATTR,O):Tt,je="ALLOWED_NAMESPACES"in e?c({},e.ALLOWED_NAMESPACES,z):En,Be="ADD_URI_SAFE_ATTR"in e?c(G(Lt),e.ADD_URI_SAFE_ATTR,O):Lt,St="ADD_DATA_URI_TAGS"in e?c(G(wt),e.ADD_DATA_URI_TAGS,O):wt,re="FORBID_CONTENTS"in e?c({},e.FORBID_CONTENTS,O):Rt,ue="FORBID_TAGS"in e?c({},e.FORBID_TAGS,O):{},Fe="FORBID_ATTR"in e?c({},e.FORBID_ATTR,O):{},oe="USE_PROFILES"in e?e.USE_PROFILES:!1,_t=e.ALLOW_ARIA_ATTR!==!1,ze=e.ALLOW_DATA_ATTR!==!1,gt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,At=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,se=e.SAFE_FOR_TEMPLATES||!1,Z=e.WHOLE_DOCUMENT||!1,ie=e.RETURN_DOM||!1,be=e.RETURN_DOM_FRAGMENT||!1,Re=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,yt=e.SANITIZE_DOM!==!1,bt=e.SANITIZE_NAMED_PROPS||!1,$e=e.KEEP_CONTENT!==!1,de=e.IN_PLACE||!1,ht=e.ALLOWED_URI_REGEXP||ct,ae=e.NAMESPACE||X,w=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(w.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(w.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(w.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),se&&(ze=!1),be&&(ie=!0),oe&&(x=c({},[..._e]),N=[],oe.html===!0&&(c(x,pe),c(N,at)),oe.svg===!0&&(c(x,U),c(N,Oe),c(N,ge)),oe.svgFilters===!0&&(c(x,ne),c(N,Oe),c(N,ge)),oe.mathMl===!0&&(c(x,me),c(N,lt),c(N,ge))),e.ADD_TAGS&&(x===Et&&(x=G(x)),c(x,e.ADD_TAGS,O)),e.ADD_ATTR&&(N===Tt&&(N=G(N)),c(N,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&c(Be,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(re===Rt&&(re=G(re)),c(re,e.FORBID_CONTENTS,O)),$e&&(x["#text"]=!0),Z&&c(x,["html","head","body"]),x.table&&(c(x,["tbody"]),delete ue.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw P('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw P('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=e.TRUSTED_TYPES_POLICY,fe=k.createHTML("")}else k===void 0&&(k=Jt(Ae,d)),k!==null&&typeof fe=="string"&&(fe=k.createHTML(""));l&&l(e),le=e}},xt=c({},["mi","mo","mn","ms","mtext"]),Nt=c({},["foreignobject","desc","title","annotation-xml"]),An=c({},["title","style","font","a","script"]),Le=c({},U);c(Le,ne),c(Le,Te);let Xe=c({},me);c(Xe,rt);let yn=function(e){let t=Ie(e);(!t||!t.tagName)&&(t={namespaceURI:ae,tagName:"template"});let i=y(e.tagName),T=y(t.tagName);return je[e.namespaceURI]?e.namespaceURI===we?t.namespaceURI===X?i==="svg":t.namespaceURI===Se?i==="svg"&&(T==="annotation-xml"||xt[T]):!!Le[i]:e.namespaceURI===Se?t.namespaceURI===X?i==="math":t.namespaceURI===we?i==="math"&&Nt[T]:!!Xe[i]:e.namespaceURI===X?t.namespaceURI===we&&!Nt[T]||t.namespaceURI===Se&&!xt[T]?!1:!Xe[i]&&(An[i]||!Le[i]):!!(Q==="application/xhtml+xml"&&je[e.namespaceURI]):!1},J=function(e){h(a.removed,{element:e});try{e.parentNode.removeChild(e)}catch{e.remove()}},qe=function(e,t){try{h(a.removed,{attribute:t.getAttributeNode(e),from:t})}catch{h(a.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is"&&!N[e])if(ie||be)try{J(t)}catch{}else try{t.setAttribute(e,"")}catch{}},Ot=function(e){let t,i;if(He)e="<remove></remove>"+e;else{let F=ee(e,/^[\r\n\t ]+/);i=F&&F[0]}Q==="application/xhtml+xml"&&ae===X&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let T=k?k.createHTML(e):e;if(ae===X)try{t=new sn().parseFromString(T,Q)}catch{}if(!t||!t.documentElement){t=Me.createDocument(ae,"template",null);try{t.documentElement.innerHTML=We?fe:T}catch{}}let C=t.body||t.documentElement;return e&&i&&C.insertBefore(D.createTextNode(i),C.childNodes[0]||null),ae===X?pn.call(t,Z?"html":"body")[0]:Z?t.documentElement:C},Ct=function(e){return ln.call(e.ownerDocument||e,e,ve.SHOW_ELEMENT|ve.SHOW_COMMENT|ve.SHOW_TEXT,null,!1)},bn=function(e){return e instanceof nn&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof tn)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},De=function(e){return typeof Ce=="object"?e instanceof Ce:e&&typeof e=="object"&&typeof e.nodeType=="number"&&typeof e.nodeName=="string"},q=function(e,t,i){B[e]&&S(B[e],T=>{T.call(a,t,i,le)})},vt=function(e){let t;if(q("beforeSanitizeElements",e,null),bn(e))return J(e),!0;let i=O(e.nodeName);if(q("uponSanitizeElement",e,{tagName:i,allowedTags:x}),e.hasChildNodes()&&!De(e.firstElementChild)&&(!De(e.content)||!De(e.content.firstElementChild))&&b(/<[/\w]/g,e.innerHTML)&&b(/<[/\w]/g,e.textContent))return J(e),!0;if(!x[i]||ue[i]){if(!ue[i]&&Mt(i)&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,i)||w.tagNameCheck instanceof Function&&w.tagNameCheck(i)))return!1;if($e&&!re[i]){let T=Ie(e)||e.parentNode,C=an(e)||e.childNodes;if(C&&T){let F=C.length;for(let R=F-1;R>=0;--R)T.insertBefore(on(C[R],!0),rn(e))}}return J(e),!0}return e instanceof ut&&!yn(e)||(i==="noscript"||i==="noembed")&&b(/<\/no(script|embed)/i,e.innerHTML)?(J(e),!0):(se&&e.nodeType===3&&(t=e.textContent,t=M(t,Ue," "),t=M(t,ke," "),t=M(t,Pe," "),e.textContent!==t&&(h(a.removed,{element:e.cloneNode()}),e.textContent=t)),q("afterSanitizeElements",e,null),!1)},It=function(e,t,i){if(yt&&(t==="id"||t==="name")&&(i in D||i in gn))return!1;if(!(ze&&!Fe[t]&&b(fn,t))){if(!(_t&&b(un,t))){if(!N[t]||Fe[t]){if(!(Mt(e)&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,e)||w.tagNameCheck instanceof Function&&w.tagNameCheck(e))&&(w.attributeNameCheck instanceof RegExp&&b(w.attributeNameCheck,t)||w.attributeNameCheck instanceof Function&&w.attributeNameCheck(t))||t==="is"&&w.allowCustomizedBuiltInElements&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,i)||w.tagNameCheck instanceof Function&&w.tagNameCheck(i))))return!1}else if(!Be[t]){if(!b(ht,M(i,dt,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&ce(i,"data:")===0&&St[e])){if(!(gt&&!b(dn,M(i,dt,"")))){if(i)return!1}}}}}}return!0},Mt=function(e){return e.indexOf("-")>0},Ut=function(e){let t,i,T,C;q("beforeSanitizeAttributes",e,null);let{attributes:F}=e;if(!F)return;let R={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:N};for(C=F.length;C--;){t=F[C];let{name:W,namespaceURI:Ve}=t;if(i=W==="value"?t.value:te(t.value),T=O(W),R.attrName=T,R.attrValue=i,R.keepAttr=!0,R.forceKeepAttr=void 0,q("uponSanitizeAttribute",e,R),i=R.attrValue,R.forceKeepAttr||(qe(W,e),!R.keepAttr))continue;if(!At&&b(/\/>/i,i)){qe(W,e);continue}se&&(i=M(i,Ue," "),i=M(i,ke," "),i=M(i,Pe," "));let kt=O(e.nodeName);if(It(kt,T,i)){if(bt&&(T==="id"||T==="name")&&(qe(W,e),i=hn+i),k&&typeof Ae=="object"&&typeof Ae.getAttributeType=="function"&&!Ve)switch(Ae.getAttributeType(kt,T)){case"TrustedHTML":{i=k.createHTML(i);break}case"TrustedScriptURL":{i=k.createScriptURL(i);break}}try{Ve?e.setAttributeNS(Ve,W,i):e.setAttribute(W,i),L(a.removed)}catch{}}}q("afterSanitizeAttributes",e,null)},Rn=function r(e){let t,i=Ct(e);for(q("beforeSanitizeShadowDOM",e,null);t=i.nextNode();)q("uponSanitizeShadowNode",t,null),!vt(t)&&(t.content instanceof H&&r(t.content),Ut(t));q("afterSanitizeShadowDOM",e,null)};return a.sanitize=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,i,T,C;if(We=!r,We&&(r="<!-->"),typeof r!="string"&&!De(r))if(typeof r.toString=="function"){if(r=r.toString(),typeof r!="string")throw P("dirty is not a string, aborting")}else throw P("toString is not a function");if(!a.isSupported)return r;if(Ge||Ye(e),a.removed=[],typeof r=="string"&&(de=!1),de){if(r.nodeName){let W=O(r.nodeName);if(!x[W]||ue[W])throw P("root node is forbidden and cannot be sanitized in-place")}}else if(r instanceof Ce)t=Ot("<!---->"),i=t.ownerDocument.importNode(r,!0),i.nodeType===1&&i.nodeName==="BODY"||i.nodeName==="HTML"?t=i:t.appendChild(i);else{if(!ie&&!se&&!Z&&r.indexOf("<")===-1)return k&&Re?k.createHTML(r):r;if(t=Ot(r),!t)return ie?null:Re?fe:""}t&&He&&J(t.firstChild);let F=Ct(de?r:t);for(;T=F.nextNode();)vt(T)||(T.content instanceof H&&Rn(T.content),Ut(T));if(de)return r;if(ie){if(be)for(C=cn.call(t.ownerDocument);t.firstChild;)C.appendChild(t.firstChild);else C=t;return(N.shadowroot||N.shadowrootmod)&&(C=mn.call(_,C,!0)),C}let R=Z?t.outerHTML:t.innerHTML;return Z&&x["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&b(pt,t.ownerDocument.doctype.name)&&(R="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
`+R),se&&(R=M(R,Ue," "),R=M(R,ke," "),R=M(R,Pe," ")),k&&Re?k.createHTML(R):R},a.setConfig=function(r){Ye(r),Ge=!0},a.clearConfig=function(){le=null,Ge=!1},a.isValidAttribute=function(r,e,t){le||Ye({});let i=O(r),T=O(e);return It(i,T,t)},a.addHook=function(r,e){typeof e=="function"&&(B[r]=B[r]||[],h(B[r],e))},a.removeHook=function(r){if(B[r])return L(B[r])},a.removeHooks=function(r){B[r]&&(B[r]=[])},a.removeAllHooks=function(){B={}},a}var en=ft();return en})});var Qe=Cn(Ft(),1);var j=s=>Object.prototype.toString.call(s).slice(8,-1),v=s=>typeof s=="string"||s instanceof String;var Je=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var et=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:zt}=globalThis;var he=16,Mn=/^[\w+/\-=]+$/,Un=/:$/,kn=/^\d+/,Pn=/#x?$/,Fn=/^#(?:x(?:00)?[2-7]|\d)/,zn=/^x[\dA-F]+/i,Gn=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Hn=/^[a-z][\da-z+\-.]*$/,$n=/^(?:ext|web)\+[a-z]+$/,Gt=/(?:java|vb)script/,Bn=/^%[\dA-F]{2}$/i,Ne=s=>{if(!v(s))throw new TypeError(`Expected String but got ${j(s)}.`);let n=[];for(let o of s)n.push(`%${o.charCodeAt(0).toString(he).toUpperCase()}`);return n.join("")},tt=s=>{v(s)&&Bn.test(s)&&(s=s.toUpperCase());let[n,o,m,p,l,f]=["&","#","<",">",'"',"'"].map(Ne),u;return s===n?u=`${n}amp;`:s===m?u=`${n}lt;`:s===p?u=`${n}gt;`:s===l?u=`${n}quot;`:s===f?u=`${n}${o}39;`:u=s,u},Ht=s=>{if(v(s)){if(!Mn.test(s))throw new Error(`Invalid base64 data: ${s}`)}else throw new TypeError(`Expected String but got ${j(s)}.`);let n=atob(s),o=Uint8Array.from([...n].map(l=>l.charCodeAt(0))),m=new Set(Je),p;return o.every(l=>m.has(l))?p=n.replace(/\s/g,Ne):p=s,p},nt=(s,n=0)=>{if(!v(s))throw new TypeError(`Expected String but got ${j(s)}.`);if(Number.isInteger(n)){if(n>he)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${j(n)}.`);let o=decodeURIComponent(s);if(/&#/.test(o)){let m=new Set(Je),p=[...o.matchAll(Gn)].reverse();for(let l of p){let[f,u]=l,A;if(zn.test(u)?A=parseInt(`0${u}`,he):kn.test(u)&&(A=parseInt(u)),Number.isInteger(A)){let{index:I}=l,[S,L]=[o.substring(0,I),o.substring(I+f.length)];m.has(A)?(o=`${S}${String.fromCharCode(A)}${L}`,(Pn.test(S)||Fn.test(L))&&(o=nt(o,++n))):A<he*he&&(o=`${S}${L}`)}}}return o},$t=s=>new Promise((n,o)=>{let m=new zt;m.addEventListener("error",()=>o(m.error)),m.addEventListener("abort",()=>n(m.result)),m.addEventListener("load",()=>n(m.result)),m.readAsDataURL(s)}),xe=class{#e;constructor(){this.#e=new Set(et)}get(){return[...this.#e]}has(n){return this.#e.has(n)}add(n){if(v(n)){if(Gt.test(n)||!Hn.test(n))throw new Error(`Invalid scheme: ${n}`)}else throw new TypeError(`Expected String but got ${j(n)}.`);return this.#e.add(n),[...this.#e]}remove(n){return this.#e.delete(n)}verify(n){let o;if(v(n))try{let{protocol:m}=new URL(n),p=m.replace(Un,""),l=p.split("+");o=!Gt.test(p)&&$n.test(p)||l.every(f=>this.#e.has(f))}catch{o=!1}return!!o}reset(){this.#e.clear();for(let n of et)this.#e.add(n)}};var Wn=16,st=/data:[\w#&+\-./;=]*,/,Bt=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,jn=/data:[\w#&+\-./;=]*,[^"]+/g,Ee=/:$/,Yn=/(?:#|%23)$/,Xn=/(?<!(?:#|%23).*)(?:\?|%3F)$/,qn=/[<>"'\s]/g,Vn=/%(?:2(?:2|7)|3(?:C|E))/g,Kn=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,it=/(?:java|vb)script|blob/,Wt=/%(?:2(?:2|7)|3(?:C|E))|[<>"']/,Zn=/%26/g,ot=class extends xe{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(n){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let o=n;if(st.test(o)){let p=[...o.matchAll(jn)].reverse();for(let l of p){let[f]=l;Bt.test(f)&&([f]=Bt.exec(f)),this.#e++,this.#t.add(f);let u=this.sanitize(f,{allow:["data"]}),{index:A}=l,[I,S]=[o.substring(0,A),o.substring(A+f.length)];u?o=`${I}${u}${S}`:o=`${I}${S}`}}return o}purify(n){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let o=Qe.default.sanitize(decodeURIComponent(n));return o&&st.test(o)&&(o=this.replace(o)),o=o.replace(Yn,"").replace(Xn,""),encodeURI(o)}sanitize(n,o){if(this.#e>Wn)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:m,deny:p,only:l,remove:f}=o??{},u=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),A=new Set,I=!1;if(Array.isArray(l)&&l.length){let L=super.get();for(let y of L)u.set(y,!1);let h=Object.values(l);for(let y of h)if(v(y)&&(y=y.trim(),!it.test(y))){if(super.has(y))u.set(y,!0);else{try{super.add(y)}catch{}super.has(y)&&(u.set(y,!0),A.add(y))}!I&&u.has(y)&&(I=u.get(y))}}else{if(Array.isArray(m)&&m.length){let L=Object.values(m);for(let h of L)if(v(h)&&(h=h.trim(),!it.test(h)))if(super.has(h))u.set(h,!0);else{try{super.add(h)}catch{}super.has(h)&&(u.set(h,!0),A.add(h))}}if(Array.isArray(p)&&p.length){let L=Object.values(p);for(let h of L)v(h)&&(h=h.trim(),h&&u.set(h,!1))}}let S;if(super.verify(n)){let{hash:L,href:h,pathname:y,protocol:z,search:ee}=new URL(n),M=z.replace(Ee,""),ce=M.split("+"),te;if(I)te=ce.every(b=>u.get(b));else for(let[b,P]of u.entries())if(te=P||M!==b&&ce.every(g=>g!==b),!te)break;if(te){let b=ce.includes("data"),P,g=h;if(b){let[K,...c]=y.split(","),G=`${c.join(",")}${ee}${L}`,Y=K.split(";"),pe=Y[Y.length-1]==="base64",U=G;pe&&(U=Ht(G));try{let Te=nt(U).trim(),{protocol:me}=new URL(Te);me.replace(Ee,"").split("+").some(_e=>it.test(_e))&&(g="")}catch{}let ne=st.test(U);U!==G||ne?ne?U=this.replace(U):this.#t.has(n)?this.#t.delete(n):P=!0:this.#t.has(n)?this.#t.delete(n):P=!0,(!K||Kn.test(K))&&(U=this.purify(U)),g&&U?(pe&&U!==G&&Y.pop(),g=`${M}:${Y.join(";")},${U}`):g=""}else P=!0;if(!b&&f&&Wt.test(g)){let K=Wt.exec(g),{index:c}=K;g=g.substring(0,c)}g?(S=g.replace(qn,Ne).replace(Zn,tt),P&&(b||(S=S.replace(Vn,tt)),this.#e=0)):this.#e=0}A.size&&A.forEach(b=>{super.remove(b)})}return S||null}parse(n,o){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let m=new Map([["input",n]]),p;if(this.verify(n)){let{protocol:l}=new URL(n);l==="blob:"?p=n:p=this.sanitize(n,o??{allow:["data","file"]})}if(p){let l=new URL(p),{pathname:f,protocol:u}=l,I=u.replace(Ee,"").split("+").includes("data");if(m.set("valid",!0),I){let S=new Map,[L,...h]=f.split(","),y=`${h.join(",")}`,z=L.split(";"),ee=z[z.length-1]==="base64";ee&&z.pop(),S.set("mime",z.join(";")),S.set("base64",ee),S.set("data",y),m.set("data",Object.fromEntries(S))}else m.set("data",null);for(let S in l){let L=l[S];v(L)&&m.set(S,L)}}else m.set("valid",!1);return Object.fromEntries(m)}reset(){super.reset(),this.#e=0,this.#t.clear()}},V=new ot,Qn=async(s,n={allow:[],deny:[],only:[]})=>{let o;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(Ee,"")}catch{}if(m==="blob"){let{allow:p,deny:l,only:f}=n;if(Array.isArray(p)&&p.includes("blob")&&!(Array.isArray(l)&&l.includes("blob"))||Array.isArray(f)&&f.includes("blob")){let u;try{u=await fetch(s).then(A=>A.blob()).then($t)}catch{}if(u){if(Array.isArray(f))f.includes("data")||f.push("data");else if(Array.isArray(p)&&(p.includes("data")||p.push("data"),Array.isArray(l)&&l.includes("data"))){let A=l.indexOf("data");l.splice(A,1)}o=V.sanitize(u,n)}}URL.revokeObjectURL(s)}else m&&(o=V.sanitize(s,n))}return o||null},Jn=(s,n)=>{let o;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(Ee,"")}catch{}m==="blob"?URL.revokeObjectURL(s):m&&(o=V.sanitize(s,n))}return o||null},es=async s=>V.parse(s),ts=s=>V.parse(s),ns=async s=>V.verify(s),ss=s=>V.verify(s);export{V as default,ns as isURI,ss as isURISync,es as parseURL,ts as parseURLSync,Qn as sanitizeURL,Jn as sanitizeURLSync};
var Sn=Object.create;var Pt=Object.defineProperty;var wn=Object.getOwnPropertyDescriptor;var Ln=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,xn=Object.prototype.hasOwnProperty;var Nn=(s,n)=>()=>(n||s((n={exports:{}}).exports,n),n.exports);var On=(s,n,i,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of Ln(n))!xn.call(s,p)&&p!==i&&Pt(s,p,{get:()=>n[p],enumerable:!(m=wn(n,p))||m.enumerable});return s};var Cn=(s,n,i)=>(i=s!=null?Sn(Dn(s)):{},On(n||!s||!s.__esModule?Pt(i,"default",{value:s,enumerable:!0}):i,s));var Ft=Nn((Ke,Ze)=>{(function(s,n){typeof Ke=="object"&&typeof Ze<"u"?Ze.exports=n():typeof define=="function"&&define.amd?define(n):(s=typeof globalThis<"u"?globalThis:s||self,s.DOMPurify=n())})(Ke,function(){"use strict";let{entries:s,setPrototypeOf:n,isFrozen:i,getPrototypeOf:m,getOwnPropertyDescriptor:p}=Object,{freeze:l,seal:f,create:u}=Object,{apply:A,construct:I}=typeof Reflect<"u"&&Reflect;A||(A=function(a,_,d){return a.apply(_,d)}),l||(l=function(a){return a}),f||(f=function(a){return a}),I||(I=function(a,_){return new a(..._)});let S=g(Array.prototype.forEach),L=g(Array.prototype.pop),h=g(Array.prototype.push),y=g(String.prototype.toLowerCase),z=g(String.prototype.toString),ee=g(String.prototype.match),M=g(String.prototype.replace),ce=g(String.prototype.indexOf),te=g(String.prototype.trim),b=g(RegExp.prototype.test),P=K(TypeError);function g(E){return function(a){for(var _=arguments.length,d=new Array(_>1?_-1:0),D=1;D<_;D++)d[D-1]=arguments[D];return A(E,a,d)}}function K(E){return function(){for(var a=arguments.length,_=new Array(a),d=0;d<a;d++)_[d]=arguments[d];return I(E,_)}}function c(E,a,_){var d;_=(d=_)!==null&&d!==void 0?d:y,n&&n(E,null);let D=a.length;for(;D--;){let H=a[D];if(typeof H=="string"){let $=_(H);$!==H&&(i(a)||(a[D]=$),H=$)}E[H]=!0}return E}function G(E){let a=u(null);for(let[_,d]of s(E))a[_]=d;return a}function Y(E,a){for(;E!==null;){let d=p(E,a);if(d){if(d.get)return g(d.get);if(typeof d.value=="function")return g(d.value)}E=m(E)}function _(d){return console.warn("fallback value for",d),null}return _}let pe=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),U=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),ne=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Te=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),me=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),rt=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),_e=l(["#text"]),at=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Oe=l(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),lt=l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),ge=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),jt=f(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Yt=f(/<%[\w\W]*|[\w\W]*%>/gm),Xt=f(/\${[\w\W]*}/gm),qt=f(/^data-[\-\w.\u00B7-\uFFFF]/),Vt=f(/^aria-[\-\w]+$/),ct=f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Kt=f(/^(?:\w+script|data):/i),Zt=f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),pt=f(/^html$/i);var mt=Object.freeze({__proto__:null,MUSTACHE_EXPR:jt,ERB_EXPR:Yt,TMPLIT_EXPR:Xt,DATA_ATTR:qt,ARIA_ATTR:Vt,IS_ALLOWED_URI:ct,IS_SCRIPT_OR_DATA:Kt,ATTR_WHITESPACE:Zt,DOCTYPE_NAME:pt});let Qt=()=>typeof window>"u"?null:window,Jt=function(a,_){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let d=null,D="data-tt-policy-suffix";_&&_.hasAttribute(D)&&(d=_.getAttribute(D));let H="dompurify"+(d?"#"+d:"");try{return a.createPolicy(H,{createHTML($){return $},createScriptURL($){return $}})}catch{return console.warn("TrustedTypes policy "+H+" could not be created."),null}};function ft(){let E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Qt(),a=r=>ft(r);if(a.version="3.0.3",a.removed=[],!E||!E.document||E.document.nodeType!==9)return a.isSupported=!1,a;let _=E.document,d=_.currentScript,{document:D}=E,{DocumentFragment:H,HTMLTemplateElement:$,Node:Ce,Element:ut,NodeFilter:ve,NamedNodeMap:tn=E.NamedNodeMap||E.MozNamedAttrMap,HTMLFormElement:nn,DOMParser:sn,trustedTypes:Ae}=E,ye=ut.prototype,on=Y(ye,"cloneNode"),rn=Y(ye,"nextSibling"),an=Y(ye,"childNodes"),Ie=Y(ye,"parentNode");if(typeof $=="function"){let r=D.createElement("template");r.content&&r.content.ownerDocument&&(D=r.content.ownerDocument)}let k,fe="",{implementation:Me,createNodeIterator:ln,createDocumentFragment:cn,getElementsByTagName:pn}=D,{importNode:mn}=_,B={};a.isSupported=typeof s=="function"&&typeof Ie=="function"&&Me&&Me.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Ue,ERB_EXPR:ke,TMPLIT_EXPR:Pe,DATA_ATTR:fn,ARIA_ATTR:un,IS_SCRIPT_OR_DATA:dn,ATTR_WHITESPACE:dt}=mt,{IS_ALLOWED_URI:ht}=mt,x=null,Et=c({},[...pe,...U,...ne,...me,..._e]),N=null,Tt=c({},[...at,...Oe,...lt,...ge]),w=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ue=null,Fe=null,_t=!0,ze=!0,gt=!1,At=!0,se=!1,Z=!1,Ge=!1,He=!1,oe=!1,be=!1,Re=!1,yt=!0,bt=!1,hn="user-content-",$e=!0,de=!1,ie={},re=null,Rt=c({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),St=null,wt=c({},["audio","video","img","source","image","track"]),Be=null,Lt=c({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Se="http://www.w3.org/1998/Math/MathML",we="http://www.w3.org/2000/svg",X="http://www.w3.org/1999/xhtml",ae=X,We=!1,je=null,En=c({},[Se,we,X],z),Q,Tn=["application/xhtml+xml","text/html"],_n="text/html",O,le=null,gn=D.createElement("form"),Dt=function(e){return e instanceof RegExp||e instanceof Function},Ye=function(e){if(!(le&&le===e)){if((!e||typeof e!="object")&&(e={}),e=G(e),Q=Tn.indexOf(e.PARSER_MEDIA_TYPE)===-1?Q=_n:Q=e.PARSER_MEDIA_TYPE,O=Q==="application/xhtml+xml"?z:y,x="ALLOWED_TAGS"in e?c({},e.ALLOWED_TAGS,O):Et,N="ALLOWED_ATTR"in e?c({},e.ALLOWED_ATTR,O):Tt,je="ALLOWED_NAMESPACES"in e?c({},e.ALLOWED_NAMESPACES,z):En,Be="ADD_URI_SAFE_ATTR"in e?c(G(Lt),e.ADD_URI_SAFE_ATTR,O):Lt,St="ADD_DATA_URI_TAGS"in e?c(G(wt),e.ADD_DATA_URI_TAGS,O):wt,re="FORBID_CONTENTS"in e?c({},e.FORBID_CONTENTS,O):Rt,ue="FORBID_TAGS"in e?c({},e.FORBID_TAGS,O):{},Fe="FORBID_ATTR"in e?c({},e.FORBID_ATTR,O):{},ie="USE_PROFILES"in e?e.USE_PROFILES:!1,_t=e.ALLOW_ARIA_ATTR!==!1,ze=e.ALLOW_DATA_ATTR!==!1,gt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,At=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,se=e.SAFE_FOR_TEMPLATES||!1,Z=e.WHOLE_DOCUMENT||!1,oe=e.RETURN_DOM||!1,be=e.RETURN_DOM_FRAGMENT||!1,Re=e.RETURN_TRUSTED_TYPE||!1,He=e.FORCE_BODY||!1,yt=e.SANITIZE_DOM!==!1,bt=e.SANITIZE_NAMED_PROPS||!1,$e=e.KEEP_CONTENT!==!1,de=e.IN_PLACE||!1,ht=e.ALLOWED_URI_REGEXP||ct,ae=e.NAMESPACE||X,w=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(w.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Dt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(w.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(w.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),se&&(ze=!1),be&&(oe=!0),ie&&(x=c({},[..._e]),N=[],ie.html===!0&&(c(x,pe),c(N,at)),ie.svg===!0&&(c(x,U),c(N,Oe),c(N,ge)),ie.svgFilters===!0&&(c(x,ne),c(N,Oe),c(N,ge)),ie.mathMl===!0&&(c(x,me),c(N,lt),c(N,ge))),e.ADD_TAGS&&(x===Et&&(x=G(x)),c(x,e.ADD_TAGS,O)),e.ADD_ATTR&&(N===Tt&&(N=G(N)),c(N,e.ADD_ATTR,O)),e.ADD_URI_SAFE_ATTR&&c(Be,e.ADD_URI_SAFE_ATTR,O),e.FORBID_CONTENTS&&(re===Rt&&(re=G(re)),c(re,e.FORBID_CONTENTS,O)),$e&&(x["#text"]=!0),Z&&c(x,["html","head","body"]),x.table&&(c(x,["tbody"]),delete ue.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw P('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw P('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=e.TRUSTED_TYPES_POLICY,fe=k.createHTML("")}else k===void 0&&(k=Jt(Ae,d)),k!==null&&typeof fe=="string"&&(fe=k.createHTML(""));l&&l(e),le=e}},xt=c({},["mi","mo","mn","ms","mtext"]),Nt=c({},["foreignobject","desc","title","annotation-xml"]),An=c({},["title","style","font","a","script"]),Le=c({},U);c(Le,ne),c(Le,Te);let Xe=c({},me);c(Xe,rt);let yn=function(e){let t=Ie(e);(!t||!t.tagName)&&(t={namespaceURI:ae,tagName:"template"});let o=y(e.tagName),T=y(t.tagName);return je[e.namespaceURI]?e.namespaceURI===we?t.namespaceURI===X?o==="svg":t.namespaceURI===Se?o==="svg"&&(T==="annotation-xml"||xt[T]):!!Le[o]:e.namespaceURI===Se?t.namespaceURI===X?o==="math":t.namespaceURI===we?o==="math"&&Nt[T]:!!Xe[o]:e.namespaceURI===X?t.namespaceURI===we&&!Nt[T]||t.namespaceURI===Se&&!xt[T]?!1:!Xe[o]&&(An[o]||!Le[o]):!!(Q==="application/xhtml+xml"&&je[e.namespaceURI]):!1},J=function(e){h(a.removed,{element:e});try{e.parentNode.removeChild(e)}catch{e.remove()}},qe=function(e,t){try{h(a.removed,{attribute:t.getAttributeNode(e),from:t})}catch{h(a.removed,{attribute:null,from:t})}if(t.removeAttribute(e),e==="is"&&!N[e])if(oe||be)try{J(t)}catch{}else try{t.setAttribute(e,"")}catch{}},Ot=function(e){let t,o;if(He)e="<remove></remove>"+e;else{let F=ee(e,/^[\r\n\t ]+/);o=F&&F[0]}Q==="application/xhtml+xml"&&ae===X&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");let T=k?k.createHTML(e):e;if(ae===X)try{t=new sn().parseFromString(T,Q)}catch{}if(!t||!t.documentElement){t=Me.createDocument(ae,"template",null);try{t.documentElement.innerHTML=We?fe:T}catch{}}let C=t.body||t.documentElement;return e&&o&&C.insertBefore(D.createTextNode(o),C.childNodes[0]||null),ae===X?pn.call(t,Z?"html":"body")[0]:Z?t.documentElement:C},Ct=function(e){return ln.call(e.ownerDocument||e,e,ve.SHOW_ELEMENT|ve.SHOW_COMMENT|ve.SHOW_TEXT,null,!1)},bn=function(e){return e instanceof nn&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof tn)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},De=function(e){return typeof Ce=="object"?e instanceof Ce:e&&typeof e=="object"&&typeof e.nodeType=="number"&&typeof e.nodeName=="string"},q=function(e,t,o){B[e]&&S(B[e],T=>{T.call(a,t,o,le)})},vt=function(e){let t;if(q("beforeSanitizeElements",e,null),bn(e))return J(e),!0;let o=O(e.nodeName);if(q("uponSanitizeElement",e,{tagName:o,allowedTags:x}),e.hasChildNodes()&&!De(e.firstElementChild)&&(!De(e.content)||!De(e.content.firstElementChild))&&b(/<[/\w]/g,e.innerHTML)&&b(/<[/\w]/g,e.textContent))return J(e),!0;if(!x[o]||ue[o]){if(!ue[o]&&Mt(o)&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,o)||w.tagNameCheck instanceof Function&&w.tagNameCheck(o)))return!1;if($e&&!re[o]){let T=Ie(e)||e.parentNode,C=an(e)||e.childNodes;if(C&&T){let F=C.length;for(let R=F-1;R>=0;--R)T.insertBefore(on(C[R],!0),rn(e))}}return J(e),!0}return e instanceof ut&&!yn(e)||(o==="noscript"||o==="noembed")&&b(/<\/no(script|embed)/i,e.innerHTML)?(J(e),!0):(se&&e.nodeType===3&&(t=e.textContent,t=M(t,Ue," "),t=M(t,ke," "),t=M(t,Pe," "),e.textContent!==t&&(h(a.removed,{element:e.cloneNode()}),e.textContent=t)),q("afterSanitizeElements",e,null),!1)},It=function(e,t,o){if(yt&&(t==="id"||t==="name")&&(o in D||o in gn))return!1;if(!(ze&&!Fe[t]&&b(fn,t))){if(!(_t&&b(un,t))){if(!N[t]||Fe[t]){if(!(Mt(e)&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,e)||w.tagNameCheck instanceof Function&&w.tagNameCheck(e))&&(w.attributeNameCheck instanceof RegExp&&b(w.attributeNameCheck,t)||w.attributeNameCheck instanceof Function&&w.attributeNameCheck(t))||t==="is"&&w.allowCustomizedBuiltInElements&&(w.tagNameCheck instanceof RegExp&&b(w.tagNameCheck,o)||w.tagNameCheck instanceof Function&&w.tagNameCheck(o))))return!1}else if(!Be[t]){if(!b(ht,M(o,dt,""))){if(!((t==="src"||t==="xlink:href"||t==="href")&&e!=="script"&&ce(o,"data:")===0&&St[e])){if(!(gt&&!b(dn,M(o,dt,"")))){if(o)return!1}}}}}}return!0},Mt=function(e){return e.indexOf("-")>0},Ut=function(e){let t,o,T,C;q("beforeSanitizeAttributes",e,null);let{attributes:F}=e;if(!F)return;let R={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:N};for(C=F.length;C--;){t=F[C];let{name:W,namespaceURI:Ve}=t;if(o=W==="value"?t.value:te(t.value),T=O(W),R.attrName=T,R.attrValue=o,R.keepAttr=!0,R.forceKeepAttr=void 0,q("uponSanitizeAttribute",e,R),o=R.attrValue,R.forceKeepAttr||(qe(W,e),!R.keepAttr))continue;if(!At&&b(/\/>/i,o)){qe(W,e);continue}se&&(o=M(o,Ue," "),o=M(o,ke," "),o=M(o,Pe," "));let kt=O(e.nodeName);if(It(kt,T,o)){if(bt&&(T==="id"||T==="name")&&(qe(W,e),o=hn+o),k&&typeof Ae=="object"&&typeof Ae.getAttributeType=="function"&&!Ve)switch(Ae.getAttributeType(kt,T)){case"TrustedHTML":{o=k.createHTML(o);break}case"TrustedScriptURL":{o=k.createScriptURL(o);break}}try{Ve?e.setAttributeNS(Ve,W,o):e.setAttribute(W,o),L(a.removed)}catch{}}}q("afterSanitizeAttributes",e,null)},Rn=function r(e){let t,o=Ct(e);for(q("beforeSanitizeShadowDOM",e,null);t=o.nextNode();)q("uponSanitizeShadowNode",t,null),!vt(t)&&(t.content instanceof H&&r(t.content),Ut(t));q("afterSanitizeShadowDOM",e,null)};return a.sanitize=function(r){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,o,T,C;if(We=!r,We&&(r="<!-->"),typeof r!="string"&&!De(r))if(typeof r.toString=="function"){if(r=r.toString(),typeof r!="string")throw P("dirty is not a string, aborting")}else throw P("toString is not a function");if(!a.isSupported)return r;if(Ge||Ye(e),a.removed=[],typeof r=="string"&&(de=!1),de){if(r.nodeName){let W=O(r.nodeName);if(!x[W]||ue[W])throw P("root node is forbidden and cannot be sanitized in-place")}}else if(r instanceof Ce)t=Ot("<!---->"),o=t.ownerDocument.importNode(r,!0),o.nodeType===1&&o.nodeName==="BODY"||o.nodeName==="HTML"?t=o:t.appendChild(o);else{if(!oe&&!se&&!Z&&r.indexOf("<")===-1)return k&&Re?k.createHTML(r):r;if(t=Ot(r),!t)return oe?null:Re?fe:""}t&&He&&J(t.firstChild);let F=Ct(de?r:t);for(;T=F.nextNode();)vt(T)||(T.content instanceof H&&Rn(T.content),Ut(T));if(de)return r;if(oe){if(be)for(C=cn.call(t.ownerDocument);t.firstChild;)C.appendChild(t.firstChild);else C=t;return(N.shadowroot||N.shadowrootmod)&&(C=mn.call(_,C,!0)),C}let R=Z?t.outerHTML:t.innerHTML;return Z&&x["!doctype"]&&t.ownerDocument&&t.ownerDocument.doctype&&t.ownerDocument.doctype.name&&b(pt,t.ownerDocument.doctype.name)&&(R="<!DOCTYPE "+t.ownerDocument.doctype.name+`>
`+R),se&&(R=M(R,Ue," "),R=M(R,ke," "),R=M(R,Pe," ")),k&&Re?k.createHTML(R):R},a.setConfig=function(r){Ye(r),Ge=!0},a.clearConfig=function(){le=null,Ge=!1},a.isValidAttribute=function(r,e,t){le||Ye({});let o=O(r),T=O(e);return It(o,T,t)},a.addHook=function(r,e){typeof e=="function"&&(B[r]=B[r]||[],h(B[r],e))},a.removeHook=function(r){if(B[r])return L(B[r])},a.removeHooks=function(r){B[r]&&(B[r]=[])},a.removeAllHooks=function(){B={}},a}var en=ft();return en})});var Qe=Cn(Ft(),1);var j=s=>Object.prototype.toString.call(s).slice(8,-1),v=s=>typeof s=="string"||s instanceof String;var Je=[7,8,9,10,11,12,13,27,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255];var et=["aaa","aaas","about","acap","acct","acd","acr","adiumxtra","adt","afp","afs","aim","amss","android","appdata","apt","ar","ark","at","attachment","aw","barion","beshare","bitcoin","bitcoincash","blob","bolo","browserext","cabal","calculator","callto","cap","cast","casts","chrome","chrome-extension","cid","coap","coaps","com-eventbrite-attendee","content","content-type","crid","cstr","cvs","dab","dat","data","dav","dhttp","diaspora","dict","did","dis","dlna-playcontainer","dlna-playsingle","dns","dntp","doi","dpp","drm","dtmi","dtn","dvb","dvx","dweb","ed2k","eid","elsi","embedded","ens","ethereum","example","facetime","feed","feedready","fido","file","finger","first-run-pen-experience","fish","fm","ftp","fuchsia-pkg","geo","gg","git","gitoid","gizmoproject","go","gopher","graph","gtalk","h323","ham","hcap","hcp","http","https","hxxp","hxxps","hydrazone","hyper","iax","icap","icon","im","imap","info","iotdisco","ipfs","ipn","ipns","ipp","ipps","irc","irc6","ircs","iris","iris.beep","iris.lwz","iris.xpc","iris.xpcs","isostore","itms","jabber","jar","jms","keyparc","lastfm","lbry","ldap","ldaps","leaptofrogans","lorawan","lpa","lvlt","magnet","mailto","maps","market","matrix","message","microsoft.windows.camera","microsoft.windows.camera.multipicker","microsoft.windows.camera.picker","mid","mms","mongodb","moz","moz-extension","ms-access","ms-appinstaller","ms-browser-extension","ms-calculator","ms-drive-to","ms-enrollment","ms-excel","ms-eyecontrolspeech","ms-gamebarservices","ms-gamingoverlay","ms-getoffice","ms-help","ms-infopath","ms-inputapp","ms-launchremotedesktop","ms-lockscreencomponent-config","ms-media-stream-id","ms-meetnow","ms-mixedrealitycapture","ms-mobileplans","ms-newsandinterests","ms-officeapp","ms-people","ms-powerpoint","ms-project","ms-publisher","ms-remotedesktop","ms-remotedesktop-launch","ms-restoretabcompanion","ms-screenclip","ms-screensketch","ms-search","ms-search-repair","ms-secondary-screen-controller","ms-secondary-screen-setup","ms-settings","ms-settings-airplanemode","ms-settings-bluetooth","ms-settings-camera","ms-settings-cellular","ms-settings-cloudstorage","ms-settings-connectabledevices","ms-settings-displays-topology","ms-settings-emailandaccounts","ms-settings-language","ms-settings-location","ms-settings-lock","ms-settings-nfctransactions","ms-settings-notifications","ms-settings-power","ms-settings-privacy","ms-settings-proximity","ms-settings-screenrotation","ms-settings-wifi","ms-settings-workplace","ms-spd","ms-stickers","ms-sttoverlay","ms-transit-to","ms-useractivityset","ms-virtualtouchpad","ms-visio","ms-walk-to","ms-whiteboard","ms-whiteboard-cmd","ms-word","msnim","msrp","msrps","mss","mt","mtqp","mumble","mupdate","mvn","news","nfs","ni","nih","nntp","notes","num","ocf","oid","onenote","onenote-cmd","opaquelocktoken","openpgp4fpr","otpauth","palm","paparazzi","payment","payto","pkcs11","platform","pop","pres","proxy","psyc","pttp","pwid","qb","query","quic-transport","redis","rediss","reload","res","resource","rmi","rsync","rtmfp","rtmp","rtsp","rtsps","rtspu","sarif","secondlife","secret-token","service","session","sftp","sgn","shc","sieve","simpleledger","simplex","sip","sips","skype","smb","smp","sms","smtp","snmp","soap.beep","soap.beeps","soldat","spiffe","spotify","ssb","ssh","starknet","steam","stun","stuns","submit","svn","swh","swid","swidpath","tag","taler","teamspeak","tel","teliaeid","telnet","tftp","things","thismessage","tip","tn3270","tool","turn","turns","tv","udp","unreal","urn","ut2004","uuid-in-package","v-event","vemmi","ventrilo","ves","view-source","vnc","vscode","vscode-insiders","vsls","w3","wcr","web3","webcal","wifi","ws","wss","wtai","wyciwyg","xcon","xcon-userid","xfire","xmlrpc.beep","xmlrpc.beeps","xmpp","xri","ymsgr","z39.50r","z39.50s"];var{FileReader:zt}=globalThis;var he=16,Mn=/^[\w+/\-=]+$/,Un=/:$/,kn=/^\d+/,Pn=/#x?$/,Fn=/^#(?:x(?:00)?[2-7]|\d)/,zn=/^x[\dA-F]+/i,Gn=/&#(x(?:00)?[\dA-F]{2}|0?\d{1,3});?/gi,Hn=/^[a-z][\da-z+\-.]*$/,$n=/^(?:ext|web)\+[a-z]+$/,Gt=/(?:java|vb)script/,Bn=/^%[\dA-F]{2}$/i,Ne=s=>{if(!v(s))throw new TypeError(`Expected String but got ${j(s)}.`);let n=[];for(let i of s)n.push(`%${i.charCodeAt(0).toString(he).toUpperCase()}`);return n.join("")},tt=s=>{v(s)&&Bn.test(s)&&(s=s.toUpperCase());let[n,i,m,p,l,f]=["&","#","<",">",'"',"'"].map(Ne),u;return s===n?u=`${n}amp;`:s===m?u=`${n}lt;`:s===p?u=`${n}gt;`:s===l?u=`${n}quot;`:s===f?u=`${n}${i}39;`:u=s,u},Ht=s=>{if(v(s)){if(!Mn.test(s))throw new Error(`Invalid base64 data: ${s}`)}else throw new TypeError(`Expected String but got ${j(s)}.`);let n=atob(s),i=Uint8Array.from([...n].map(l=>l.charCodeAt(0))),m=new Set(Je),p;return i.every(l=>m.has(l))?p=n.replace(/\s/g,Ne):p=s,p},nt=(s,n=0)=>{if(!v(s))throw new TypeError(`Expected String but got ${j(s)}.`);if(Number.isInteger(n)){if(n>he)throw new Error("Character references nested too deeply.")}else throw new TypeError(`Expected Number but got ${j(n)}.`);let i=decodeURIComponent(s);if(/&#/.test(i)){let m=new Set(Je),p=[...i.matchAll(Gn)].reverse();for(let l of p){let[f,u]=l,A;if(zn.test(u)?A=parseInt(`0${u}`,he):kn.test(u)&&(A=parseInt(u)),Number.isInteger(A)){let{index:I}=l,[S,L]=[i.substring(0,I),i.substring(I+f.length)];m.has(A)?(i=`${S}${String.fromCharCode(A)}${L}`,(Pn.test(S)||Fn.test(L))&&(i=nt(i,++n))):A<he*he&&(i=`${S}${L}`)}}}return i},$t=s=>new Promise((n,i)=>{let m=new zt;m.addEventListener("error",()=>i(m.error)),m.addEventListener("abort",()=>n(m.result)),m.addEventListener("load",()=>n(m.result)),m.readAsDataURL(s)}),xe=class{#e;constructor(){this.#e=new Set(et)}get(){return[...this.#e]}has(n){return this.#e.has(n)}add(n){if(v(n)){if(Gt.test(n)||!Hn.test(n))throw new Error(`Invalid scheme: ${n}`)}else throw new TypeError(`Expected String but got ${j(n)}.`);return this.#e.add(n),[...this.#e]}remove(n){return this.#e.delete(n)}verify(n){let i;if(v(n))try{let{protocol:m}=new URL(n),p=m.replace(Un,""),l=p.split("+");i=!Gt.test(p)&&$n.test(p)||l.every(f=>this.#e.has(f))}catch{i=!1}return!!i}reset(){this.#e.clear();for(let n of et)this.#e.add(n)}};var Wn=16,st=/data:[\w#&+\-./;=]*,/,Bt=/data:[\w#&+\-./;=]*base64,[\w+/\-=]+/i,jn=/data:[\w#&+\-./;=]*,[^"]+/g,Ee=/:$/,Yn=/(?:#|%23)$/,Xn=/(?<!(?:#|%23).*)(?:\?|%3F)$/,qn=/[<>"'\s]/g,Vn=/%(?:2(?:2|7)|3(?:C|E))/g,Kn=/^(?:text\/(?:ht|x)ml|application\/(?:[\w#&\-.;]+\+)?xml|image\/svg\+xml)/,ot=/(?:java|vb)script|blob/,Wt=/%(?:2(?:2|7)|3(?:C|E))|[<>"']/,Zn=/%26/g,it=class extends xe{#e;#t;constructor(){super(),this.#e=0,this.#t=new Set}replace(n){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let i=n;if(st.test(i)){let p=[...i.matchAll(jn)].reverse();for(let l of p){let[f]=l;Bt.test(f)&&([f]=Bt.exec(f)),this.#e++,this.#t.add(f);let u=this.sanitize(f,{allow:["data"]}),{index:A}=l,[I,S]=[i.substring(0,A),i.substring(A+f.length)];u?i=`${I}${u}${S}`:i=`${I}${S}`}}return i}purify(n){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let i=Qe.default.sanitize(decodeURIComponent(n));return i&&st.test(i)&&(i=this.replace(i)),i=i.replace(Yn,"").replace(Xn,""),encodeURI(i)}sanitize(n,i){if(this.#e>Wn)throw this.#e=0,new Error("Data URLs nested too deeply.");let{allow:m,deny:p,only:l,remove:f}=i??{},u=new Map([["blob",!1],["data",!1],["file",!1],["javascrpt",!1],["vbscript",!1]]),A=new Set,I=!1;if(Array.isArray(l)&&l.length){let L=super.get();for(let y of L)u.set(y,!1);let h=Object.values(l);for(let y of h)if(v(y)&&(y=y.trim(),!ot.test(y))){if(super.has(y))u.set(y,!0);else{try{super.add(y)}catch{}super.has(y)&&(u.set(y,!0),A.add(y))}!I&&u.has(y)&&(I=u.get(y))}}else{if(Array.isArray(m)&&m.length){let L=Object.values(m);for(let h of L)if(v(h)&&(h=h.trim(),!ot.test(h)))if(super.has(h))u.set(h,!0);else{try{super.add(h)}catch{}super.has(h)&&(u.set(h,!0),A.add(h))}}if(Array.isArray(p)&&p.length){let L=Object.values(p);for(let h of L)v(h)&&(h=h.trim(),h&&u.set(h,!1))}}let S;if(super.verify(n)){let{hash:L,href:h,pathname:y,protocol:z,search:ee}=new URL(n),M=z.replace(Ee,""),ce=M.split("+"),te;if(I)te=ce.every(b=>u.get(b));else for(let[b,P]of u.entries())if(te=P||M!==b&&ce.every(g=>g!==b),!te)break;if(te){let b=ce.includes("data"),P,g=h;if(b){let[K,...c]=y.split(","),G=`${c.join(",")}${ee}${L}`,Y=K.split(";"),pe=Y[Y.length-1]==="base64",U=G;pe&&(U=Ht(G));try{let Te=nt(U).trim(),{protocol:me}=new URL(Te);me.replace(Ee,"").split("+").some(_e=>ot.test(_e))&&(g="")}catch{}let ne=st.test(U);U!==G||ne?ne?U=this.replace(U):this.#t.has(n)?this.#t.delete(n):P=!0:this.#t.has(n)?this.#t.delete(n):P=!0,(!K||Kn.test(K))&&(U=this.purify(U)),g&&U?(pe&&U!==G&&Y.pop(),g=`${M}:${Y.join(";")},${U}`):g=""}else P=!0;if(!b&&f&&Wt.test(g)){let K=Wt.exec(g),{index:c}=K;g=g.substring(0,c)}g?(S=g.replace(qn,Ne).replace(Zn,tt),P&&(b||(S=S.replace(Vn,tt)),this.#e=0)):this.#e=0}A.size&&A.forEach(b=>{super.remove(b)})}return S||null}parse(n,i){if(!v(n))throw new TypeError(`Expected String but got ${j(n)}.`);let m=new Map([["input",n]]),p;if(this.verify(n)){let{protocol:l}=new URL(n);l==="blob:"?p=n:p=this.sanitize(n,i??{allow:["data","file"]})}if(p){let l=new URL(p),{pathname:f,protocol:u}=l,I=u.replace(Ee,"").split("+").includes("data");if(m.set("valid",!0),I){let S=new Map,[L,...h]=f.split(","),y=`${h.join(",")}`,z=L.split(";"),ee=z[z.length-1]==="base64";ee&&z.pop(),S.set("mime",z.join(";")),S.set("base64",ee),S.set("data",y),m.set("data",Object.fromEntries(S))}else m.set("data",null);for(let S in l){let L=l[S];v(L)&&m.set(S,L)}}else m.set("valid",!1);return Object.fromEntries(m)}reset(){super.reset(),this.#e=0,this.#t.clear()}},V=new it,Qn=async(s,n={allow:[],deny:[],only:[]})=>{let i;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(Ee,"")}catch{}if(m==="blob"){let{allow:p,deny:l,only:f}=n;if(Array.isArray(p)&&p.includes("blob")&&!(Array.isArray(l)&&l.includes("blob"))||Array.isArray(f)&&f.includes("blob")){let u;try{u=await fetch(s).then(A=>A.blob()).then($t)}catch{}if(u){if(Array.isArray(f))f.includes("data")||f.push("data");else if(Array.isArray(p)&&(p.includes("data")||p.push("data"),Array.isArray(l)&&l.includes("data"))){let A=l.indexOf("data");l.splice(A,1)}i=V.sanitize(u,n)}}URL.revokeObjectURL(s)}else m&&(i=V.sanitize(s,n))}return i||null},Jn=(s,n)=>{let i;if(s&&v(s)){let m;try{let{protocol:p}=new URL(s);m=p.replace(Ee,"")}catch{}m==="blob"?URL.revokeObjectURL(s):m&&(i=V.sanitize(s,n))}return i||null},es=async s=>V.parse(s),ts=s=>V.parse(s),ns=async s=>V.verify(s),ss=s=>V.verify(s);export{V as default,ns as isURI,ss as isURISync,es as parseURL,ts as parseURLSync,Qn as sanitizeURL,Jn as sanitizeURLSync};
/*!

@@ -4,0 +4,0 @@ * URL Sanitizer

@@ -25,4 +25,2 @@ {

"dependencies": {
"@types/dompurify": "^3.0.2",
"@types/jsdom": "^21.1.1",
"dompurify": "^3.0.3",

@@ -34,12 +32,14 @@ "jsdom": "^22.1.0"

"@babel/plugin-syntax-import-assertions": "^7.22.5",
"c8": "^7.14.0",
"@types/dompurify": "^3.0.2",
"@types/jsdom": "^21.1.1",
"c8": "^8.0.0",
"chai": "^4.3.7",
"commander": "^10.0.1",
"commander": "^11.0.0",
"copyfiles": "^2.4.1",
"csvtojson": "^2.0.10",
"esbuild": "^0.18.0",
"eslint": "^8.42.0",
"esbuild": "^0.18.10",
"eslint": "^8.43.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsdoc": "^46.2.6",
"eslint-plugin-jsdoc": "^46.4.2",
"eslint-plugin-node": "^11.1.0",

@@ -52,4 +52,4 @@ "eslint-plugin-promise": "^6.1.1",

"npm-run-all": "^4.1.5",
"sinon": "^15.1.0",
"typescript": "^5.1.3",
"sinon": "^15.2.0",
"typescript": "^5.1.6",
"undici": "^5.22.1"

@@ -76,3 +76,3 @@ },

},
"version": "0.10.7"
"version": "0.10.8"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc