MediaWiki:UpdateTool.js: Difference between revisions

From Heroes of Might and Magic: Olden Era Official Wiki
Created page with "//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update (()=>{var It=Object.create;var Ne=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Rt=Object.prototype.hasOwnProperty;var jt=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Ot=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Nt(t))!Rt.call(e,s)&&s!==n&&Ne(e,s,{get:(..."
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update
//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update
((
((
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i<n.length;){var r=n[i].match(s);if(!r)throw new Error("Invalid patch string: "+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===""?(o.start1--,o.length1=1):r[2]=="0"?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===""?(o.start2--,o.length2=1):r[4]=="0"?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i<n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error("Illegal escape in patch_fromText: "+l)}if(a=="-")o.diffs.push(new h.Diff(M,l));else if(a=="+")o.diffs.push(new h.Diff(E,l));else if(a==" ")o.diffs.push(new h.Diff(b,l));else{if(a=="@")break;if(a!=="")throw new Error('Invalid patch mode "'+a+'" in: '+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+",0":this.length1==1?e=this.start1+1:e=this.start1+1+","+this.length1,this.length2===0?t=this.start2+",0":this.length2==1?t=this.start2+1:t=this.start2+1+","+this.length2;for(var n=["@@ -"+e+" +"+t+` @@
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i<n.length;){var r=n[i].match(s);if(!r)throw new Error("Invalid patch string: "+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===""?(o.start1--,o.length1=1):r[2]=="0"?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===""?(o.start2--,o.length2=1):r[4]=="0"?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i<n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error("Illegal escape in patch_fromText: "+l)}if(a=="-")o.diffs.push(new h.Diff(M,l));else if(a=="+")o.diffs.push(new h.Diff(E,l));else if(a==" ")o.diffs.push(new h.Diff(b,l));else{if(a=="@")break;if(a!=="")throw new Error('Invalid patch mode "'+a+'" in: '+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+",0":this.length1==1?e=this.start1+1:e=this.start1+1+","+this.length1,this.length2===0?t=this.start2+",0":this.length2==1?t=this.start2+1:t=this.start2+1+","+this.length2;for(var n=["@@ -"+e+" +"+t+` @@
`],i,s=0;s<this.diffs.length;s++){switch(this.diffs[s][0]){case E:i="+";break;case M:i="-";break;case b:i=" ";break}n[s+1]=i+encodeURI(this.diffs[s][1])+`
`],i,s=0;s<this.diffs.length;s++){switch(this.diffs[s][0]){case E:i="+";break;case M:i="-";break;case b:i=" ";break}n[s+1]=i+encodeURI(this.diffs[s][1])+`
`
`
     .${F} {
     .${F} {
         overflow-y: scroll;
         overflow-y: scroll;
Line 61: Line 61:
         height: 200px;
         height: 200px;
     }
     }
`;function ln(e,...t){let n=e.endsWith("!")?e.startsWith("!")?"error":"warning":"info";cn(n,e,t)}function rt(e){J=e,J.classList.add(F),J.innerHTML=`
`;function fn(e,...t){let n=e.endsWith("!")?e.startsWith("!")?"error":"warning":"info";un(n,e,t)}function ot(e){J=e,J.classList.add(F),J.innerHTML=`
         <style>${an}</style>
         <style>${cn}</style>
         <table class='wikitable'>
         <table class='wikitable'>
             <tr>
             <tr>
Line 69: Line 69:
                 <th>Message</th>
                 <th>Message</th>
             </tr>
             </tr>
         </table>`,nt=J.querySelector("table")}function cn(e,t,n){let s=new Date().toLocaleTimeString("en-GB",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),r=document.createElement("tr");Pe(r,s),Pe(r,on[e]),Pe(r,fn(t,n)),nt.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:"smooth"})}function Pe(e,t){let n=document.createElement("td");t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function fn(e,t){if(e=e.replace(/^!/,""),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement("div"),i=document.createElement("div");i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!=="none";this.nextElementSibling.style.display=r?"none":"block"},n.appendChild(i);let s=document.createElement("textarea");return s.style.display="none",s.innerHTML=un(t),n.appendChild(s),n}function un(e){let t=[];for(let n of e)typeof n=="object"&&n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`
         </table>`,st=J.querySelector("table")}function un(e,t,n){let s=new Date().toLocaleTimeString("en-GB",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),r=document.createElement("tr");Pe(r,s),Pe(r,ln[e]),Pe(r,hn(t,n)),st.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:"smooth"})}function Pe(e,t){let n=document.createElement("td");t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function hn(e,t){if(e=e.replace(/^!/,""),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement("div"),i=document.createElement("div");i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!=="none";this.nextElementSibling.style.display=r?"none":"block"},n.appendChild(i);let s=document.createElement("textarea");return s.style.display="none",s.innerHTML=pn(t),n.appendChild(s),n}function pn(e){let t=[];for(let n of e)typeof n=="object"&&n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`
`)}var L=ln;function hn(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var x=hn;var it=window.location.host||"localhost",Z="store";async function st(e){if(!(await indexedDB.databases()).find(i=>i.name===it))return;let n=await at();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=>{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=>{i(r.result),n.close()},r.onerror=()=>{s(r.error),n.close()}})}async function ot(e,t){let n=await at();return new Promise((i,s)=>{let r=n.transaction(Z,"readwrite");r.objectStore(Z).put(t,e),r.oncomplete=()=>{i(),n.close()},r.onerror=()=>{s(r.error),n.close()}})}function at(){return new Promise((e,t)=>{let n=indexedDB.open(it);n.onupgradeneeded=i=>i.target.result.createObjectStore(Z),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var Ae="gameDirHandle",ee="diff-list",R="diff-path",he="diff-label",te="diff-new",K="diff-identical",q="diff-changed",B="diff-content",Q="diff-collapsed";var Te=new Proxy(()=>{},{get:()=>Te,apply:()=>Te}),lt=Te;function _n(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var _e=_n;var ct=new Map;async function pn(e,t){let n=await gn(e,t);return ct.set(n,t),n.on("message",dn.bind(null,n)),{run:async()=>await vn(n,"run")}}async function gn(e,t){let n=new lt.Worker(e);return n.on("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{r?.type==="ready"&&(n.off("message",s),i(n))};n.on("message",s)})}async function dn(e,t){let n=ct.get(e),{type:i,payload:s}=t;if(typeof n[i]!="function")return;let[r,o]=await _e(n[i],...s);o||e.postMessage({type:i,payload:r})}async function vn(e,t,n){return new Promise(i=>{let s=r=>{r.type===t&&(e.off("message",s),i(r.payload))};e.on("message",s),e.postMessage({type:t,payload:n})})}var ft=pn;var ut=new Map;async function mn(e,t){let n=await bn(e,t);return ut.set(n,t),n.addEventListener("message",wn.bind(null,n)),{run:async()=>await yn(n,"run")}}async function bn(e,t){let n;return window.mw?n=await kn(e,t):n=new Worker(`data:application/javascript,importScripts('${e}?${Math.random()}');`),n&&n.addEventListener("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{(r.data&&typeof r.data=="object"?r.data:{}).type==="ready"&&(n.removeEventListener("message",s),i(n))};n.addEventListener("message",s)})}async function wn(e,t){let n=ut.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!="function")return;let[r,o]=await _e(n[i],...s);o||e.postMessage({type:i,payload:r})}async function yn(e,t,n){return new Promise(i=>{let s=r=>{let o=r.data&&typeof r.data=="object"?r.data:{};o.type===t&&(e.removeEventListener("message",s),i(o.payload))};e.addEventListener("message",s),e.postMessage({type:t,payload:n})})}async function kn(e,t){let n=mw.util.getUrl(e,{action:"raw",ctype:"text/javascript",v:Date.now()}),i=await fetch(n,{cache:"no-cache"});if(!i.ok){t.log("!Failed to load wiki worker!",i.statusText);return}let s=await i.text(),r=new Blob([s],{type:"application/javascript"}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var ht=mn;async function Dn(e,t){if(typeof e=="string"){let n=e;return typeof process<"u"&&process.versions?.node!==null?await ft(n,t):await ht(n,t)}else return await Sn(e,t)}async function Sn(e,t){return{run:()=>e(t)}}var _t=Dn;var pt=console.log,Mn=!1,En=[];function Pn(...e){if(Mn){let t=[];for(let n of e)t.push(typeof n=="object"?JSON.stringify(n,null,4):n);En.push(t.join(`
`)}var L=fn;function _n(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var x=_n;var at=window.location.host||"localhost",Z="store";async function lt(e){if(!(await indexedDB.databases()).find(i=>i.name===at))return;let n=await ft();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=>{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=>{i(r.result),n.close()},r.onerror=()=>{s(r.error),n.close()}})}async function ct(e,t){let n=await ft();return new Promise((i,s)=>{let r=n.transaction(Z,"readwrite");r.objectStore(Z).put(t,e),r.oncomplete=()=>{i(),n.close()},r.onerror=()=>{s(r.error),n.close()}})}function ft(){return new Promise((e,t)=>{let n=indexedDB.open(at);n.onupgradeneeded=i=>i.target.result.createObjectStore(Z),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var Ae="gameDirHandle",ee="diff-list",R="diff-path",he="diff-label",te="diff-new",K="diff-identical",q="diff-changed",B="diff-content",Q="diff-collapsed";var Te=new Proxy(()=>{},{get:()=>Te,apply:()=>Te}),ut=Te;function gn(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var pe=gn;var ht=new Map;async function dn(e,t){let n=await vn(e,t);return ht.set(n,t),n.on("message",mn.bind(null,n)),{run:async()=>await bn(n,"run")}}async function vn(e,t){let n=new ut.Worker(e);return n.on("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{r?.type==="ready"&&(n.off("message",s),i(n))};n.on("message",s)})}async function mn(e,t){let n=ht.get(e),{type:i,payload:s}=t;if(typeof n[i]!="function")return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function bn(e,t,n){return new Promise(i=>{let s=r=>{r.type===t&&(e.off("message",s),i(r.payload))};e.on("message",s),e.postMessage({type:t,payload:n})})}var pt=dn;var _t=new Map;async function wn(e,t){let n=await yn(e,t);return _t.set(n,t),n.addEventListener("message",kn.bind(null,n)),{run:async()=>await Dn(n,"run")}}async function yn(e,t){let n;return window.mw?n=await Sn(e,t):n=new Worker(`data:application/javascript,importScripts('${e}?${Math.random()}');`),n&&n.addEventListener("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{(r.data&&typeof r.data=="object"?r.data:{}).type==="ready"&&(n.removeEventListener("message",s),i(n))};n.addEventListener("message",s)})}async function kn(e,t){let n=_t.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!="function")return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function Dn(e,t,n){return new Promise(i=>{let s=r=>{let o=r.data&&typeof r.data=="object"?r.data:{};o.type===t&&(e.removeEventListener("message",s),i(o.payload))};e.addEventListener("message",s),e.postMessage({type:t,payload:n})})}async function Sn(e,t){let n=mw.util.getUrl(e,{action:"raw",ctype:"text/javascript",v:Date.now()}),i=await fetch(n,{cache:"no-cache"});if(!i.ok){t.log("!Failed to load wiki worker!",i.statusText);return}let s=await i.text(),r=new Blob([s],{type:"application/javascript"}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var gt=wn;async function Mn(e,t){if(typeof e=="string"){let n=e;return typeof process<"u"&&process.versions?.node!==null?await pt(n,t):await gt(n,t)}else return await En(e,t)}async function En(e,t){return{run:()=>e(t)}}var dt=Mn;var vt=console.log,Pn=!1,An=[];function Tn(...e){if(Pn){let t=[];for(let n of e)t.push(typeof n=="object"?JSON.stringify(n,null,4):n);An.push(t.join(`
`))}pt(...e)}function gt(e){pt=e}var Le=Pn;async function An(e,t){gt(e.log),Le("Beginning to parse...");let n=Date.now(),s=await(await _t(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var dt=An;async function Tn(e,t,n,i){return vt(e,"",t,n,i)}async function vt(e,t,n,i,s){t+=t?"/":"";let r={},o=await Ln(e);for(let[a,l]of o){let c=t+a;if(!(i&&c.match(i))){if(l.kind==="directory"){let u=await vt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Ln(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var mt=Tn;var bt;async function Cn(...e){let[t,n,i]=e;return await mt(bt,t,n,i)}function Fn(...e){L(...e)}function In(e){bt=e}var Hn={find:Cn,log:Fn,setDirHandle:In},Ce=Hn;async function Nn(e){return await e?.queryPermission()==="granted"}var Fe=Nn;var $n=new RegExp("[ :]");function Rn(e){if(e.match($n)){L("Path contains an illegal character!",e);return}if(e.match("/.*?/")){L("Path contains too many slashes!",e);return}let t=e;return t=t.replace(/^Main\//,""),t=t.replace("/",":"),t=t.replaceAll("~","/"),t=t.replaceAll("_"," "),t=t.replaceAll("#",":"),t=t.replace(/\.lua$/,""),t=t.replace(/\.wiki$/,""),t}var pe=Rn;var jn=new Set(["Main","Data","Media","Special","Talk","User","User talk","Project","Project talk","File","File talk","MediaWiki","MediaWiki talk","Template","Template talk","Help","Help talk","Category","Category talk","Module","Module talk"]),On=new Set(["css"]),Un=new RegExp("~");function Wn(e){e.match(Un)&&L("Title contains an illegal character!",e);let{namespace:t,titleWithoutNamespace:n}=Bn(e),i=n;return i=i.replaceAll("/","~"),i=i.replaceAll(" ","_"),i=i.replaceAll(":","#"),i=Gn(i),i=zn(i,t),t.replace(" ","_")+"/"+i}function Bn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,"",e];return jn.has(t)||(t="",n=e),t=t||"Main",{namespace:t,titleWithoutNamespace:n}}function Gn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,""])[1].toLowerCase();return t==="url"?e.replace(/\.url$/,""):On.has(t)?e:e+".wiki"}function zn(e,t){return t!=="Module"||e.endsWith("~doc.wiki")||e.endsWith(".css")?e:e.replace(".wiki",".lua")}var wt=Wn;var Ie;async function ne(e){if(!Ie){console.log("Please call applySettings() prior to asking!");return}let t={method:Vn(e)},n=new URL(Ie.API_URL),i=Jn(e);t.method==="GET"?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L("Failed to fetch!",r);return}let[o,a]=await x(s.json());if(!o){L("Invalid json!",a);return}return o}function yt(e){let{API_URL:t}=e;Ie={API_URL:t}}function Vn(e){return!e.method||e.method==="GET"?"GET":"POST"}function Jn(e){let t={...e,format:"json",formatversion:2},{method:n}=t;if(delete t.method,n==="FORM"){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var kt=50;async function Zn(e){let t=Object.keys(e).map(s=>pe(s)),n=await Kn(t);if(!n)return;let i={};for(let s in n){let r=wt(s);r&&(n[s]===void 0?L("Invalid page content!",s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Kn(e){let t={};for(let n=0;n<e.length;n+=kt){let i=Math.min(n+kt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:"query",prop:"revisions",rvprop:"content",rvslots:"main",titles:s.join("|"),origin:"*"});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Dt=Zn;var qn=ue`
`))}vt(...e)}function mt(e){vt=e}var Le=Tn;async function Ln(e,t){mt(e.log),Le("Beginning to parse...");let n=Date.now(),s=await(await dt(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var bt=Ln;async function Cn(e,t,n,i){return wt(e,"",t,n,i)}async function wt(e,t,n,i,s){t+=t?"/":"";let r={},o=await Fn(e);for(let[a,l]of o){let c=t+a;if(!(i&&c.match(i))){if(l.kind==="directory"){let u=await wt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Fn(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var yt=Cn;var kt;async function In(...e){let[t,n,i]=e;return await yt(kt,t,n,i)}function Nn(...e){L(...e)}function Hn(e){kt=e}var $n={find:In,log:Nn,setDirHandle:Hn},Ce=$n;async function Rn(e){return await e?.queryPermission()==="granted"}var Fe=Rn;var jn=new RegExp("[ :]");function On(e){if(e.match(jn)){L("Path contains an illegal character!",e);return}if(e.match("/.*?/")){L("Path contains too many slashes!",e);return}let t=e;return t=t.replace(/^Main\//,""),t=t.replace("/",":"),t=t.replaceAll("~","/"),t=t.replaceAll("_"," "),t=t.replaceAll("#",":"),t=t.replace(/\.lua$/,""),t=t.replace(/\.wiki$/,""),t}var _e=On;var Un=new Set(["Main","Data","Media","Special","Talk","User","User talk","Project","Project talk","File","File talk","MediaWiki","MediaWiki talk","Template","Template talk","Help","Help talk","Category","Category talk","Module","Module talk"]),Wn=new Set(["css"]),Bn=new RegExp("~");function Gn(e){e.match(Bn)&&L("Title contains an illegal character!",e);let{namespace:t,titleWithoutNamespace:n}=zn(e),i=n;return i=i.replaceAll("/","~"),i=i.replaceAll(" ","_"),i=i.replaceAll(":","#"),i=Vn(i),i=Jn(i,t),t.replace(" ","_")+"/"+i}function zn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,"",e];return Un.has(t)||(t="",n=e),t=t||"Main",{namespace:t,titleWithoutNamespace:n}}function Vn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,""])[1].toLowerCase();return t==="url"?e.replace(/\.url$/,""):Wn.has(t)?e:e+".wiki"}function Jn(e,t){return t!=="Module"||e.endsWith("~doc.wiki")||e.endsWith(".css")?e:e.replace(".wiki",".lua")}var Dt=Gn;var Ie;async function ne(e){if(!Ie){console.log("Please call applySettings() prior to asking!");return}let t={method:Zn(e)},n=new URL(Ie.API_URL),i=Kn(e);t.method==="GET"?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L("Failed to fetch!",r);return}let[o,a]=await x(s.json());if(!o){L("Invalid json!",a);return}return o}function St(e){let{API_URL:t}=e;Ie={API_URL:t}}function Zn(e){return!e.method||e.method==="GET"?"GET":"POST"}function Kn(e){let t={...e,format:"json",formatversion:2},{method:n}=t;if(delete t.method,n==="FORM"){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var Mt=50;async function qn(e){let t=Object.keys(e).map(s=>_e(s)),n=await Qn(t);if(!n)return;let i={};for(let s in n){let r=Dt(s);r&&(n[s]===void 0?L("Invalid page content!",s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Qn(e){let t={};for(let n=0;n<e.length;n+=Mt){let i=Math.min(n+Mt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:"query",prop:"revisions",rvprop:"content",rvslots:"main",titles:s.join("|"),origin:"*"});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Et=qn;var Xn=ue`
     html, body {
     html, body {
         padding: 0;
         padding: 0;
Line 147: Line 147:
         outline: solid 1px #BEE6BE;
         outline: solid 1px #BEE6BE;
     }
     }
`,St=qn;var ge=Ut(Mt(),1),Qn=new ge.default;function Xn(e,t){let n=Et(e),i=Et(t),s=Qn.diff_main(n,i),r=[],o=[];for(let[u,_]of s)switch(u){case ge.default.DIFF_DELETE:r.push("<del>"+_+"</del>"),o.push("<del></del>");break;case ge.default.DIFF_INSERT:r.push("<ins></ins>"),o.push("<ins>"+_+"</ins>");break;default:r.push(_),o.push(_)}let a=r.join("").replaceAll("</del><ins></ins>","</del>"),l=o.join("").replaceAll("<del></del><ins>","<ins>"),c=l.split("<").length-1;return{text1:a,text2:l,differences:c/2}}function Et(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}var Pt=Xn;var Yn={[te]:"new",[K]:"identical",[q]:"changed"};function xn(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Pt(a,o);a=c,o=u}else o=tr(o);let l=er(r,a,o);i.push(...l)}n.innerHTML=i.join(""),Array.from(n.querySelectorAll("."+R)).map(r=>r.addEventListener("click",nr)),rr(n)}function er(e,t,n){let i=t===void 0?te:t===n?K:q,s=`<div class="${he}">${Yn[i]}</div>`,r=i===K?Q:"",o=[];return o.push(`<div class="${R} ${i}">${s}${e}</div>`),o.push(`<div class="${B} ${r}">`),i===q&&o.push(`<pre>${t}</pre>`),o.push(`<pre>${n}</pre>`),o.push("</div>"),o}function tr(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}function nr(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function rr(e){let t=e.querySelectorAll("."+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:"smooth",block:"start"});break}}var At=xn;function ir(e,t){let n=window.open("","Preview");if(!n)return;let i=n.document;i.open(),i.write(`
`,Pt=Xn;var ge=Bt(At(),1),Yn=new ge.default;function xn(e,t){let n=Tt(e),i=Tt(t),s=Yn.diff_main(n,i),r=[],o=[];for(let[u,p]of s)switch(u){case ge.default.DIFF_DELETE:r.push("<del>"+p+"</del>"),o.push("<del></del>");break;case ge.default.DIFF_INSERT:r.push("<ins></ins>"),o.push("<ins>"+p+"</ins>");break;default:r.push(p),o.push(p)}let a=r.join("").replaceAll("</del><ins></ins>","</del>"),l=o.join("").replaceAll("<del></del><ins>","<ins>"),c=l.split("<").length-1;return{text1:a,text2:l,differences:c/2}}function Tt(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}var Lt=xn;var er={[te]:"new",[K]:"identical",[q]:"changed"};function tr(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Lt(a,o);a=c,o=u}else o=rr(o);let l=nr(r,a,o);i.push(...l)}n.innerHTML=i.join(""),Array.from(n.querySelectorAll("."+R)).map(r=>r.addEventListener("click",ir)),sr(n)}function nr(e,t,n){let i=t===void 0?te:t===n?K:q,s=`<div class="${he}">${er[i]}</div>`,r=i===K?Q:"",o=[];return o.push(`<div class="${R} ${i}">${s}${e}</div>`),o.push(`<div class="${B} ${r}">`),i===q&&o.push(`<pre>${t}</pre>`),o.push(`<pre>${n}</pre>`),o.push("</div>"),o}function rr(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}function ir(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function sr(e){let t=e.querySelectorAll("."+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:"smooth",block:"start"});break}}var Ct=tr;function or(e,t){let n=window.open("","Preview");if(!n)return;let i=n.document;i.open(),i.write(`
         <!DOCTYPE html>
         <!DOCTYPE html>
         <html lang="en">
         <html lang="en">
         <head>
         <head>
             <title>Preview</title>
             <title>Preview</title>
             <style>${St}</style>
             <style>${Pt}</style>
         </head>
         </head>
         <body>
         <body>
Line 158: Line 158:
         </body>
         </body>
         </html>
         </html>
     `),i.close(),At(e||{},t,i.querySelector("."+ee))}var Tt=ir;async function sr(e,t){let n=or(e,t);if(!n.length)return L("All pages are already updated."),!0;let i=await ar();if(!i)return L("Cannot get csrf token!"),!1;let s=0;for(let{title:r,content:o}of n)await lr(r,o,i)&&s++;return L(`Successfully saved ${s} pages.`),!0}function or(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=pe(i);n.push({title:o,content:s})}}return n}async function ar(){return(await ne({action:"query",meta:"tokens"}))?.query?.tokens?.csrftoken}async function lr(e,t,n){return L(`Saving content for "${e}"...`),(await ne({method:"POST",action:"edit",title:e,text:t,token:n}))?.edit?.result!=="Success"?(L("Save failed!",e,t),!1):!0}var Lt=sr;var cr=$`
     `),i.close(),Ct(e||{},t,i.querySelector("."+ee))}var Ft=or;async function ar(e,t){let n=lr(e,t);if(!n.length)return L("All pages are already updated."),!0;let i=await cr();if(!i)return L("Cannot get csrf token!"),!1;let s=0;for(let{title:r,content:o}of n)await fr(r,o,i)&&s++;return L(`Successfully saved ${s} pages.`),!0}function lr(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=_e(i);n.push({title:o,content:s})}}return n}async function cr(){return(await ne({action:"query",meta:"tokens"}))?.query?.tokens?.csrftoken}async function fr(e,t,n){return L(`Saving content for "${e}"...`),(await ne({method:"POST",action:"edit",title:e,text:t,token:n}))?.edit?.result!=="Success"?(L("Save failed!",e,t),!1):!0}var It=ar;var ur=$`
     color: #fff;
     color: #fff;
`,de=$`
`,de=$`
Line 176: Line 176:
         content: ' ✅';
         content: ' ✅';
     }
     }
`,fr=$`
`,hr=$`
     &:after {
     &:after {
         content: ' ⚠️';
         content: ' ⚠️';
     }
     }
`,ur="MediaWiki:ParseCore.js",He=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k("div",{class:cr,children:[k("div",{class:de,children:[k("div",{class:ve,children:"1. Select game data directory"}),k("div",{children:"Give read-access to the local install directory of the game so the parser can choose what files it needs."}),k("div",{class:me,children:k("button",{disabled:!!n,class:i?be:fr,onClick:this.onPickDirectoryClick,children:"Pick directory"})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"2. Retrieve wiki data pages"}),k("div",{children:["Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. ",k("br",{}),"This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed."]}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:o&&be,onClick:this.onRetrieveClick,children:["Retrieve ",n===2&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"3. Preview changes"}),k("div",{children:"Open a popup window listing each page that is about to be updated, potentially highlighting differences."}),k("div",{class:me,children:k("button",{disabled:!!n||!i||!o,class:s&&be,onClick:this.onPreviewClick,children:["Preview ",n===3&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"4. Save changes"}),k("div",{children:"Write the changes to each page using the current account, just as if you had done them manually."}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:r&&be,onClick:this.onSaveClick,children:["SAVE ",n===4&&k("progress",{})]})})]}),"Log:",k("div",{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;rt(t.current),L("Initialized.");let n=this.vars.dirHandle=await st(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),yt({API_URL:document.location.href.replace(/[^\/]*$/,"")+"api.php"})}onPickDirectoryClick=async()=>{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:"read"});n=this.vars.dirHandle=s,await ot(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=>{await this.ensureParsedHub(2);let t=await Dt(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=>{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Tt(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=>{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await Lt(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=>{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await dt(Ce,ur)}))}},Ct=He;function hr(){Ft()||window.addEventListener("load",Ft)}function Ft(){let e=document.querySelector("#setup");if(e)return xe(Ct,e),!0}hr();})();
`,pr="MediaWiki:ParseCore.js",Ne=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k("div",{class:ur,children:[k("div",{class:de,children:[k("div",{class:ve,children:"1. Select game data directory"}),k("div",{children:"Give read-access to the local install directory of the game so the parser can choose what files it needs."}),k("div",{class:me,children:k("button",{disabled:!!n,class:i?be:hr,onClick:this.onPickDirectoryClick,children:"Pick directory"})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"2. Retrieve wiki data pages"}),k("div",{children:["Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. ",k("br",{}),"This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed."]}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:o&&be,onClick:this.onRetrieveClick,children:["Retrieve ",n===2&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"3. Preview changes"}),k("div",{children:"Open a popup window listing each page that is about to be updated, potentially highlighting differences."}),k("div",{class:me,children:k("button",{disabled:!!n||!i||!o,class:s&&be,onClick:this.onPreviewClick,children:["Preview ",n===3&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"4. Save changes"}),k("div",{children:"Write the changes to each page using the current account, just as if you had done them manually."}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:r&&be,onClick:this.onSaveClick,children:["SAVE ",n===4&&k("progress",{})]})})]}),"Log:",k("div",{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;ot(t.current),L("Initialized.");let n=this.vars.dirHandle=await lt(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),St({API_URL:document.location.href.replace(/[^\/]*$/,"")+"api.php"})}onPickDirectoryClick=async()=>{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:"read"});n=this.vars.dirHandle=s,await ct(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=>{await this.ensureParsedHub(2);let t=await Et(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=>{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Ft(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=>{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await It(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=>{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await bt(Ce,pr)}))}},Nt=Ne;function _r(){nt(Nt,".update-tool",0)}_r();})();

Latest revision as of 15:39, 13 October 2026

//Source:https://github.com/Aurelain/oe-wiki/tree/main/src/update
(()=>{var Ht=Object.create;var He=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,Ot=Object.prototype.hasOwnProperty;var Ut=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(n){throw t=0,n}};var Wt=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Rt(t))!Ot.call(e,s)&&s!==n&&He(e,s,{get:()=>t[s],enumerable:!(i=$t(t,s))||i.enumerable});return e};var Bt=(e,t,n)=>(n=e!=null?Ht(jt(e)):{},Wt(t||!e||!e.__esModule?He(n,"default",{value:e,enumerable:!0}):n,e));var At=Ut((hi,X)=>{var h=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},M=-1,E=1,b=0;h.Diff=function(e,t){return[e,t]};h.prototype.diff_main=function(e,t,n,i){typeof i>"u"&&(this.Diff_Timeout<=0?i=Number.MAX_VALUE:i=new Date().getTime()+this.Diff_Timeout*1e3);var s=i;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new h.Diff(b,e)]:[];typeof n>"u"&&(n=!0);var r=n,o=this.diff_commonPrefix(e,t),a=e.substring(0,o);e=e.substring(o),t=t.substring(o),o=this.diff_commonSuffix(e,t);var l=e.substring(e.length-o);e=e.substring(0,e.length-o),t=t.substring(0,t.length-o);var c=this.diff_compute_(e,t,r,s);return a&&c.unshift(new h.Diff(b,a)),l&&c.push(new h.Diff(b,l)),this.diff_cleanupMerge(c),c};h.prototype.diff_compute_=function(e,t,n,i){var s;if(!e)return[new h.Diff(E,t)];if(!t)return[new h.Diff(M,e)];var r=e.length>t.length?e:t,o=e.length>t.length?t:e,a=r.indexOf(o);if(a!=-1)return s=[new h.Diff(E,r.substring(0,a)),new h.Diff(b,o),new h.Diff(E,r.substring(a+o.length))],e.length>t.length&&(s[0][0]=s[2][0]=M),s;if(o.length==1)return[new h.Diff(M,e),new h.Diff(E,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],u=l[1],p=l[2],f=l[3],_=l[4],g=this.diff_main(c,p,n,i),m=this.diff_main(u,f,n,i);return g.concat([new h.Diff(b,_)],m)}return n&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,i):this.diff_bisect_(e,t,i)};h.prototype.diff_lineMode_=function(e,t,n){var i=this.diff_linesToChars_(e,t);e=i.chars1,t=i.chars2;var s=i.lineArray,r=this.diff_main(e,t,!1,n);this.diff_charsToLines_(r,s),this.diff_cleanupSemantic(r),r.push(new h.Diff(b,""));for(var o=0,a=0,l=0,c="",u="";o<r.length;){switch(r[o][0]){case E:l++,u+=r[o][1];break;case M:a++,c+=r[o][1];break;case b:if(a>=1&&l>=1){r.splice(o-a-l,a+l),o=o-a-l;for(var p=this.diff_main(c,u,!1,n),f=p.length-1;f>=0;f--)r.splice(o,0,p[f]);o=o+p.length}l=0,a=0,c="",u="";break}o++}return r.pop(),r};h.prototype.diff_bisect_=function(e,t,n){for(var i=e.length,s=t.length,r=Math.ceil((i+s)/2),o=r,a=2*r,l=new Array(a),c=new Array(a),u=0;u<a;u++)l[u]=-1,c[u]=-1;l[o+1]=0,c[o+1]=0;for(var p=i-s,f=p%2!=0,_=0,g=0,m=0,w=0,v=0;v<r&&!(new Date().getTime()>n);v++){for(var d=-v+_;d<=v-g;d+=2){var y=o+d,D;d==-v||d!=v&&l[y-1]<l[y+1]?D=l[y+1]:D=l[y-1]+1;for(var T=D-d;D<i&&T<s&&e.charAt(D)==t.charAt(T);)D++,T++;if(l[y]=D,D>i)g+=2;else if(T>s)_+=2;else if(f){var P=o+p-d;if(P>=0&&P<a&&c[P]!=-1){var A=i-c[P];if(D>=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}for(var C=-v+m;C<=v-w;C+=2){var P=o+C,A;C==-v||C!=v&&c[P-1]<c[P+1]?A=c[P+1]:A=c[P-1]+1;for(var I=A-C;A<i&&I<s&&e.charAt(i-A-1)==t.charAt(s-I-1);)A++,I++;if(c[P]=A,A>i)w+=2;else if(I>s)m+=2;else if(!f){var y=o+p-C;if(y>=0&&y<a&&l[y]!=-1){var D=l[y],T=o+D-y;if(A=i-A,D>=A)return this.diff_bisectSplit_(e,t,D,T,n)}}}}return[new h.Diff(M,e),new h.Diff(E,t)]};h.prototype.diff_bisectSplit_=function(e,t,n,i,s){var r=e.substring(0,n),o=t.substring(0,i),a=e.substring(n),l=t.substring(i),c=this.diff_main(r,o,!1,s),u=this.diff_main(a,l,!1,s);return c.concat(u)};h.prototype.diff_linesToChars_=function(e,t){var n=[],i={};n[0]="";function s(l){for(var c="",u=0,p=-1,f=n.length;p<l.length-1;){p=l.indexOf(`
`,u),p==-1&&(p=l.length-1);var _=l.substring(u,p+1);(i.hasOwnProperty?i.hasOwnProperty(_):i[_]!==void 0)?c+=String.fromCharCode(i[_]):(f==r&&(_=l.substring(u),p=l.length),c+=String.fromCharCode(f),i[_]=f,n[f++]=_),u=p+1}return c}var r=4e4,o=s(e);r=65535;var a=s(t);return{chars1:o,chars2:a,lineArray:n}};h.prototype.diff_charsToLines_=function(e,t){for(var n=0;n<e.length;n++){for(var i=e[n][1],s=[],r=0;r<i.length;r++)s[r]=t[i.charCodeAt(r)];e[n][1]=s.join("")}};h.prototype.diff_commonPrefix=function(e,t){if(!e||!t||e.charAt(0)!=t.charAt(0))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n<s;)e.substring(r,s)==t.substring(r,s)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonSuffix=function(e,t){if(!e||!t||e.charAt(e.length-1)!=t.charAt(t.length-1))return 0;for(var n=0,i=Math.min(e.length,t.length),s=i,r=0;n<s;)e.substring(e.length-s,e.length-r)==t.substring(t.length-s,t.length-r)?(n=s,r=n):i=s,s=Math.floor((i-n)/2+n);return s};h.prototype.diff_commonOverlap_=function(e,t){var n=e.length,i=t.length;if(n==0||i==0)return 0;n>i?e=e.substring(n-i):n<i&&(t=t.substring(0,n));var s=Math.min(n,i);if(e==t)return s;for(var r=0,o=1;;){var a=e.substring(s-o),l=t.indexOf(a);if(l==-1)return r;o+=l,(l==0||e.substring(s-o)==t.substring(0,o))&&(r=o,o++)}};h.prototype.diff_halfMatch_=function(e,t){if(this.Diff_Timeout<=0)return null;var n=e.length>t.length?e:t,i=e.length>t.length?t:e;if(n.length<4||i.length*2<n.length)return null;var s=this;function r(g,m,w){for(var v=g.substring(w,w+Math.floor(g.length/4)),d=-1,y="",D,T,P,A;(d=m.indexOf(v,d+1))!=-1;){var C=s.diff_commonPrefix(g.substring(w),m.substring(d)),I=s.diff_commonSuffix(g.substring(0,w),m.substring(0,d));y.length<I+C&&(y=m.substring(d-I,d)+m.substring(d,d+C),D=g.substring(0,w-I),T=g.substring(w+C),P=m.substring(0,d-I),A=m.substring(d+C))}return y.length*2>=g.length?[D,T,P,A,y]:null}var o=r(n,i,Math.ceil(n.length/4)),a=r(n,i,Math.ceil(n.length/2)),l;if(!o&&!a)return null;a?o?l=o[4].length>a[4].length?o:a:l=a:l=o;var c,u,p,f;e.length>t.length?(c=l[0],u=l[1],p=l[2],f=l[3]):(p=l[0],f=l[1],c=l[2],u=l[3]);var _=l[4];return[c,u,p,f,_]};h.prototype.diff_cleanupSemantic=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=0,a=0,l=0,c=0;r<e.length;)e[r][0]==b?(n[i++]=r,o=l,a=c,l=0,c=0,s=e[r][1]):(e[r][0]==E?l+=e[r][1].length:c+=e[r][1].length,s&&s.length<=Math.max(o,a)&&s.length<=Math.max(l,c)&&(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,i--,r=i>0?n[i-1]:-1,o=0,a=0,l=0,c=0,s=null,t=!0)),r++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),r=1;r<e.length;){if(e[r-1][0]==M&&e[r][0]==E){var u=e[r-1][1],p=e[r][1],f=this.diff_commonOverlap_(u,p),_=this.diff_commonOverlap_(p,u);f>=_?(f>=u.length/2||f>=p.length/2)&&(e.splice(r,0,new h.Diff(b,p.substring(0,f))),e[r-1][1]=u.substring(0,u.length-f),e[r+1][1]=p.substring(f),r++):(_>=u.length/2||_>=p.length/2)&&(e.splice(r,0,new h.Diff(b,u.substring(0,_))),e[r-1][0]=E,e[r-1][1]=p.substring(0,p.length-_),e[r+1][0]=M,e[r+1][1]=u.substring(_),r++),r++}r++}};h.prototype.diff_cleanupSemanticLossless=function(e){function t(_,g){if(!_||!g)return 6;var m=_.charAt(_.length-1),w=g.charAt(0),v=m.match(h.nonAlphaNumericRegex_),d=w.match(h.nonAlphaNumericRegex_),y=v&&m.match(h.whitespaceRegex_),D=d&&w.match(h.whitespaceRegex_),T=y&&m.match(h.linebreakRegex_),P=D&&w.match(h.linebreakRegex_),A=T&&_.match(h.blanklineEndRegex_),C=P&&g.match(h.blanklineStartRegex_);return A||C?5:T||P?4:v&&!y&&D?3:y||D?2:v||d?1:0}for(var n=1;n<e.length-1;){if(e[n-1][0]==b&&e[n+1][0]==b){var i=e[n-1][1],s=e[n][1],r=e[n+1][1],o=this.diff_commonSuffix(i,s);if(o){var a=s.substring(s.length-o);i=i.substring(0,i.length-o),s=a+s.substring(0,s.length-o),r=a+r}for(var l=i,c=s,u=r,p=t(i,s)+t(s,r);s.charAt(0)===r.charAt(0);){i+=s.charAt(0),s=s.substring(1)+r.charAt(0),r=r.substring(1);var f=t(i,s)+t(s,r);f>=p&&(p=f,l=i,c=s,u=r)}e[n-1][1]!=l&&(l?e[n-1][1]=l:(e.splice(n-1,1),n--),e[n][1]=c,u?e[n+1][1]=u:(e.splice(n+1,1),n--))}n++}};h.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;h.whitespaceRegex_=/\s/;h.linebreakRegex_=/[\r\n]/;h.blanklineEndRegex_=/\n\r?\n$/;h.blanklineStartRegex_=/^\r?\n\r?\n/;h.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,n=[],i=0,s=null,r=0,o=!1,a=!1,l=!1,c=!1;r<e.length;)e[r][0]==b?(e[r][1].length<this.Diff_EditCost&&(l||c)?(n[i++]=r,o=l,a=c,s=e[r][1]):(i=0,s=null),l=c=!1):(e[r][0]==M?c=!0:l=!0,s&&(o&&a&&l&&c||s.length<this.Diff_EditCost/2&&o+a+l+c==3)&&(e.splice(n[i-1],0,new h.Diff(M,s)),e[n[i-1]+1][0]=E,i--,s=null,o&&a?(l=c=!0,i=0):(i--,r=i>0?n[i-1]:-1,l=c=!1),t=!0)),r++;t&&this.diff_cleanupMerge(e)};h.prototype.diff_cleanupMerge=function(e){e.push(new h.Diff(b,""));for(var t=0,n=0,i=0,s="",r="",o;t<e.length;)switch(e[t][0]){case E:i++,r+=e[t][1],t++;break;case M:n++,s+=e[t][1],t++;break;case b:n+i>1?(n!==0&&i!==0&&(o=this.diff_commonPrefix(r,s),o!==0&&(t-n-i>0&&e[t-n-i-1][0]==b?e[t-n-i-1][1]+=r.substring(0,o):(e.splice(0,0,new h.Diff(b,r.substring(0,o))),t++),r=r.substring(o),s=s.substring(o)),o=this.diff_commonSuffix(r,s),o!==0&&(e[t][1]=r.substring(r.length-o)+e[t][1],r=r.substring(0,r.length-o),s=s.substring(0,s.length-o))),t-=n+i,e.splice(t,n+i),s.length&&(e.splice(t,0,new h.Diff(M,s)),t++),r.length&&(e.splice(t,0,new h.Diff(E,r)),t++),t++):t!==0&&e[t-1][0]==b?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,i=0,n=0,s="",r="";break}e[e.length-1][1]===""&&e.pop();var a=!1;for(t=1;t<e.length-1;)e[t-1][0]==b&&e[t+1][0]==b&&(e[t][1].substring(e[t][1].length-e[t-1][1].length)==e[t-1][1]?(e[t][1]=e[t-1][1]+e[t][1].substring(0,e[t][1].length-e[t-1][1].length),e[t+1][1]=e[t-1][1]+e[t+1][1],e.splice(t-1,1),a=!0):e[t][1].substring(0,e[t+1][1].length)==e[t+1][1]&&(e[t-1][1]+=e[t+1][1],e[t][1]=e[t][1].substring(e[t+1][1].length)+e[t+1][1],e.splice(t+1,1),a=!0)),t++;a&&this.diff_cleanupMerge(e)};h.prototype.diff_xIndex=function(e,t){var n=0,i=0,s=0,r=0,o;for(o=0;o<e.length&&(e[o][0]!==E&&(n+=e[o][1].length),e[o][0]!==M&&(i+=e[o][1].length),!(n>t));o++)s=n,r=i;return e.length!=o&&e[o][0]===M?r:r+(t-s)};h.prototype.diff_prettyHtml=function(e){for(var t=[],n=/&/g,i=/</g,s=/>/g,r=/\n/g,o=0;o<e.length;o++){var a=e[o][0],l=e[o][1],c=l.replace(n,"&amp;").replace(i,"&lt;").replace(s,"&gt;").replace(r,"&para;<br>");switch(a){case E:t[o]='<ins style="background:#e6ffe6;">'+c+"</ins>";break;case M:t[o]='<del style="background:#ffe6e6;">'+c+"</del>";break;case b:t[o]="<span>"+c+"</span>";break}}return t.join("")};h.prototype.diff_text1=function(e){for(var t=[],n=0;n<e.length;n++)e[n][0]!==E&&(t[n]=e[n][1]);return t.join("")};h.prototype.diff_text2=function(e){for(var t=[],n=0;n<e.length;n++)e[n][0]!==M&&(t[n]=e[n][1]);return t.join("")};h.prototype.diff_levenshtein=function(e){for(var t=0,n=0,i=0,s=0;s<e.length;s++){var r=e[s][0],o=e[s][1];switch(r){case E:n+=o.length;break;case M:i+=o.length;break;case b:t+=Math.max(n,i),n=0,i=0;break}}return t+=Math.max(n,i),t};h.prototype.diff_toDelta=function(e){for(var t=[],n=0;n<e.length;n++)switch(e[n][0]){case E:t[n]="+"+encodeURI(e[n][1]);break;case M:t[n]="-"+e[n][1].length;break;case b:t[n]="="+e[n][1].length;break}return t.join("	").replace(/%20/g," ")};h.prototype.diff_fromDelta=function(e,t){for(var n=[],i=0,s=0,r=t.split(/\t/g),o=0;o<r.length;o++){var a=r[o].substring(1);switch(r[o].charAt(0)){case"+":try{n[i++]=new h.Diff(E,decodeURI(a))}catch{throw new Error("Illegal escape in diff_fromDelta: "+a)}break;case"-":case"=":var l=parseInt(a,10);if(isNaN(l)||l<0)throw new Error("Invalid number in diff_fromDelta: "+a);var c=e.substring(s,s+=l);r[o].charAt(0)=="="?n[i++]=new h.Diff(b,c):n[i++]=new h.Diff(M,c);break;default:if(r[o])throw new Error("Invalid diff operation in diff_fromDelta: "+r[o])}}if(s!=e.length)throw new Error("Delta length ("+s+") does not equal source text length ("+e.length+").");return n};h.prototype.match_main=function(e,t,n){if(e==null||t==null||n==null)throw new Error("Null input. (match_main)");return n=Math.max(0,Math.min(n,e.length)),e==t?0:e.length?e.substring(n,n+t.length)==t?n:this.match_bitap_(e,t,n):-1};h.prototype.match_bitap_=function(e,t,n){if(t.length>this.Match_MaxBits)throw new Error("Pattern too long for this browser.");var i=this.match_alphabet_(t),s=this;function r(D,T){var P=D/t.length,A=Math.abs(n-T);return s.Match_Distance?P+A/s.Match_Distance:A?1:P}var o=this.Match_Threshold,a=e.indexOf(t,n);a!=-1&&(o=Math.min(r(0,a),o),a=e.lastIndexOf(t,n+t.length),a!=-1&&(o=Math.min(r(0,a),o)));var l=1<<t.length-1;a=-1;for(var c,u,p=t.length+e.length,f,_=0;_<t.length;_++){for(c=0,u=p;c<u;)r(_,n+u)<=o?c=u:p=u,u=Math.floor((p-c)/2+c);p=u;var g=Math.max(1,n-u+1),m=Math.min(n+u,e.length)+t.length,w=Array(m+2);w[m+1]=(1<<_)-1;for(var v=m;v>=g;v--){var d=i[e.charAt(v-1)];if(_===0?w[v]=(w[v+1]<<1|1)&d:w[v]=(w[v+1]<<1|1)&d|((f[v+1]|f[v])<<1|1)|f[v+1],w[v]&l){var y=r(_,v-1);if(y<=o)if(o=y,a=v-1,a>n)g=Math.max(1,2*n-a);else break}}if(r(_+1,n)>o)break;f=w}return a};h.prototype.match_alphabet_=function(e){for(var t={},n=0;n<e.length;n++)t[e.charAt(n)]=0;for(var n=0;n<e.length;n++)t[e.charAt(n)]|=1<<e.length-n-1;return t};h.prototype.patch_addContext_=function(e,t){if(t.length!=0){if(e.start2===null)throw Error("patch not initialized");for(var n=t.substring(e.start2,e.start2+e.length1),i=0;t.indexOf(n)!=t.lastIndexOf(n)&&n.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=t.substring(e.start2-i,e.start2+e.length1+i);i+=this.Patch_Margin;var s=t.substring(e.start2-i,e.start2);s&&e.diffs.unshift(new h.Diff(b,s));var r=t.substring(e.start2+e.length1,e.start2+e.length1+i);r&&e.diffs.push(new h.Diff(b,r)),e.start1-=s.length,e.start2-=s.length,e.length1+=s.length+r.length,e.length2+=s.length+r.length}};h.prototype.patch_make=function(e,t,n){var i,s;if(typeof e=="string"&&typeof t=="string"&&typeof n>"u")i=e,s=this.diff_main(i,t,!0),s.length>2&&(this.diff_cleanupSemantic(s),this.diff_cleanupEfficiency(s));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof n>"u")s=e,i=this.diff_text1(s);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof n>"u")i=e,s=t;else if(typeof e=="string"&&typeof t=="string"&&n&&typeof n=="object")i=e,s=n;else throw new Error("Unknown call format to patch_make.");if(s.length===0)return[];for(var r=[],o=new h.patch_obj,a=0,l=0,c=0,u=i,p=i,f=0;f<s.length;f++){var _=s[f][0],g=s[f][1];switch(!a&&_!==b&&(o.start1=l,o.start2=c),_){case E:o.diffs[a++]=s[f],o.length2+=g.length,p=p.substring(0,c)+g+p.substring(c);break;case M:o.length1+=g.length,o.diffs[a++]=s[f],p=p.substring(0,c)+p.substring(c+g.length);break;case b:g.length<=2*this.Patch_Margin&&a&&s.length!=f+1?(o.diffs[a++]=s[f],o.length1+=g.length,o.length2+=g.length):g.length>=2*this.Patch_Margin&&a&&(this.patch_addContext_(o,u),r.push(o),o=new h.patch_obj,a=0,u=p,l=c);break}_!==E&&(l+=g.length),_!==M&&(c+=g.length)}return a&&(this.patch_addContext_(o,u),r.push(o)),r};h.prototype.patch_deepCopy=function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n],s=new h.patch_obj;s.diffs=[];for(var r=0;r<i.diffs.length;r++)s.diffs[r]=new h.Diff(i.diffs[r][0],i.diffs[r][1]);s.start1=i.start1,s.start2=i.start2,s.length1=i.length1,s.length2=i.length2,t[n]=s}return t};h.prototype.patch_apply=function(e,t){if(e.length==0)return[t,[]];e=this.patch_deepCopy(e);var n=this.patch_addPadding(e);t=n+t+n,this.patch_splitMax(e);for(var i=0,s=[],r=0;r<e.length;r++){var o=e[r].start2+i,a=this.diff_text1(e[r].diffs),l,c=-1;if(a.length>this.Match_MaxBits?(l=this.match_main(t,a.substring(0,this.Match_MaxBits),o),l!=-1&&(c=this.match_main(t,a.substring(a.length-this.Match_MaxBits),o+a.length-this.Match_MaxBits),(c==-1||l>=c)&&(l=-1))):l=this.match_main(t,a,o),l==-1)s[r]=!1,i-=e[r].length2-e[r].length1;else{s[r]=!0,i=l-o;var u;if(c==-1?u=t.substring(l,l+a.length):u=t.substring(l,c+this.Match_MaxBits),a==u)t=t.substring(0,l)+this.diff_text2(e[r].diffs)+t.substring(l+a.length);else{var p=this.diff_main(a,u,!1);if(a.length>this.Match_MaxBits&&this.diff_levenshtein(p)/a.length>this.Patch_DeleteThreshold)s[r]=!1;else{this.diff_cleanupSemanticLossless(p);for(var f=0,_,g=0;g<e[r].diffs.length;g++){var m=e[r].diffs[g];m[0]!==b&&(_=this.diff_xIndex(p,f)),m[0]===E?t=t.substring(0,l+_)+m[1]+t.substring(l+_):m[0]===M&&(t=t.substring(0,l+_)+t.substring(l+this.diff_xIndex(p,f+m[1].length))),m[0]!==M&&(f+=m[1].length)}}}}}return t=t.substring(n.length,t.length-n.length),[t,s]};h.prototype.patch_addPadding=function(e){for(var t=this.Patch_Margin,n="",i=1;i<=t;i++)n+=String.fromCharCode(i);for(var i=0;i<e.length;i++)e[i].start1+=t,e[i].start2+=t;var s=e[0],r=s.diffs;if(r.length==0||r[0][0]!=b)r.unshift(new h.Diff(b,n)),s.start1-=t,s.start2-=t,s.length1+=t,s.length2+=t;else if(t>r[0][1].length){var o=t-r[0][1].length;r[0][1]=n.substring(r[0][1].length)+r[0][1],s.start1-=o,s.start2-=o,s.length1+=o,s.length2+=o}if(s=e[e.length-1],r=s.diffs,r.length==0||r[r.length-1][0]!=b)r.push(new h.Diff(b,n)),s.length1+=t,s.length2+=t;else if(t>r[r.length-1][1].length){var o=t-r[r.length-1][1].length;r[r.length-1][1]+=n.substring(0,o),s.length1+=o,s.length2+=o}return n};h.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,n=0;n<e.length;n++)if(!(e[n].length1<=t)){var i=e[n];e.splice(n--,1);for(var s=i.start1,r=i.start2,o="";i.diffs.length!==0;){var a=new h.patch_obj,l=!0;for(a.start1=s-o.length,a.start2=r-o.length,o!==""&&(a.length1=a.length2=o.length,a.diffs.push(new h.Diff(b,o)));i.diffs.length!==0&&a.length1<t-this.Patch_Margin;){var c=i.diffs[0][0],u=i.diffs[0][1];c===E?(a.length2+=u.length,r+=u.length,a.diffs.push(i.diffs.shift()),l=!1):c===M&&a.diffs.length==1&&a.diffs[0][0]==b&&u.length>2*t?(a.length1+=u.length,s+=u.length,l=!1,a.diffs.push(new h.Diff(c,u)),i.diffs.shift()):(u=u.substring(0,t-a.length1-this.Patch_Margin),a.length1+=u.length,s+=u.length,c===b?(a.length2+=u.length,r+=u.length):l=!1,a.diffs.push(new h.Diff(c,u)),u==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(u.length))}o=this.diff_text2(a.diffs),o=o.substring(o.length-this.Patch_Margin);var p=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);p!==""&&(a.length1+=p.length,a.length2+=p.length,a.diffs.length!==0&&a.diffs[a.diffs.length-1][0]===b?a.diffs[a.diffs.length-1][1]+=p:a.diffs.push(new h.Diff(b,p))),l||e.splice(++n,0,a)}}};h.prototype.patch_toText=function(e){for(var t=[],n=0;n<e.length;n++)t[n]=e[n];return t.join("")};h.prototype.patch_fromText=function(e){var t=[];if(!e)return t;for(var n=e.split(`
`),i=0,s=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i<n.length;){var r=n[i].match(s);if(!r)throw new Error("Invalid patch string: "+n[i]);var o=new h.patch_obj;for(t.push(o),o.start1=parseInt(r[1],10),r[2]===""?(o.start1--,o.length1=1):r[2]=="0"?o.length1=0:(o.start1--,o.length1=parseInt(r[2],10)),o.start2=parseInt(r[3],10),r[4]===""?(o.start2--,o.length2=1):r[4]=="0"?o.length2=0:(o.start2--,o.length2=parseInt(r[4],10)),i++;i<n.length;){var a=n[i].charAt(0);try{var l=decodeURI(n[i].substring(1))}catch{throw new Error("Illegal escape in patch_fromText: "+l)}if(a=="-")o.diffs.push(new h.Diff(M,l));else if(a=="+")o.diffs.push(new h.Diff(E,l));else if(a==" ")o.diffs.push(new h.Diff(b,l));else{if(a=="@")break;if(a!=="")throw new Error('Invalid patch mode "'+a+'" in: '+l)}i++}}return t};h.patch_obj=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0};h.patch_obj.prototype.toString=function(){var e,t;this.length1===0?e=this.start1+",0":this.length1==1?e=this.start1+1:e=this.start1+1+","+this.length1,this.length2===0?t=this.start2+",0":this.length2==1?t=this.start2+1:t=this.start2+1+","+this.length2;for(var n=["@@ -"+e+" +"+t+` @@
`],i,s=0;s<this.diffs.length;s++){switch(this.diffs[s][0]){case E:i="+";break;case M:i="-";break;case b:i=" ";break}n[s+1]=i+encodeURI(this.diffs[s][1])+`
`}return n.join("").replace(/%20/g," ")};X.exports=h;X.exports.diff_match_patch=h;X.exports.DIFF_DELETE=M;X.exports.DIFF_INSERT=E;X.exports.DIFF_EQUAL=b});var ce,S,Ue,Gt,j,$e,We,Be,we,ie,Y,Ge,De,ye,ke,zt,oe={},ae=[],Vt=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function H(e,t){for(var n in t)e[n]=t[n];return e}function Se(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Jt(e,t,n){var i,s,r,o={};for(r in t)r=="key"?i=t[r]:r=="ref"?s=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?ce.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return se(e,o,i,s,null)}function se(e,t,n,i,s){var r={type:e,props:t,key:n,ref:i,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:s??++Ue,__i:-1,__u:0};return s==null&&S.vnode!=null&&S.vnode(r),r}function ze(){return{current:null}}function V(e){return e.children}function z(e,t){this.props=e,this.context=t}function U(e,t){if(t==null)return e.__?U(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?U(e):null}function Zt(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,i=[],s=[],r=H({},t);r.__v=t.__v+1,S.vnode&&S.vnode(r),Me(e.__P,r,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,i,n??U(t),!!(32&t.__u),s),r.__v=t.__v,r.__.__k[r.__i]=r,qe(i,r,s),t.__e=t.__=null,r.__e!=n&&Ve(r)}}function Ve(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Ve(e)}function Re(e){(!e.__d&&(e.__d=!0)&&j.push(e)&&!le.__r++||$e!=S.debounceRendering)&&(($e=S.debounceRendering)||We)(le)}function le(){try{for(var e,t=1;j.length;)j.length>t&&j.sort(Be),e=j.shift(),t=j.length,Zt(e)}finally{j.length=le.__r=0}}function Je(e,t,n,i,s,r,o,a,l,c,u){var p,f,_,g,m,w,v=i&&i.__k||ae,d=t.length;for(l=Kt(n,t,v,l,d),p=0;p<d;p++)(_=n.__k[p])!=null&&(f=_.__i!=-1&&v[_.__i]||oe,_.__i=p,w=Me(e,_,f,s,r,o,a,l,c,u),g=_.__e,_.ref&&f.ref!=_.ref&&(f.ref&&Ee(f.ref,null,_),u.push(_.ref,_.__c||g,_)),m==null&&g!=null&&(m=g),4&_.__u?(l=Ze(_,l,e),f.__e&&(f.__e=null)):typeof _.type=="function"&&w!==void 0?l=w:g&&(l=g.nextSibling),_.__u&=-7);return n.__e=m,l}function Kt(e,t,n,i,s){var r,o,a,l,c,u=n.length,p=u,f=0;for(e.__k=new Array(s),r=0;r<s;r++)(o=t[r])!=null&&typeof o!="boolean"&&typeof o!="function"?(typeof o=="string"||typeof o=="number"||typeof o=="bigint"||o.constructor==String?o=e.__k[r]=se(null,o,null,null,null):fe(o)?o=e.__k[r]=se(V,{children:o},null,null,null):o.constructor===void 0&&o.__b>0?o=e.__k[r]=se(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):e.__k[r]=o,l=r+f,o.__=e,o.__b=e.__b+1,a=null,(c=o.__i=qt(o,n,l,p))!=-1&&(p--,(a=n[c])&&(a.__u|=2)),a==null||a.__v==null?(c==-1&&(s>u?f--:s<u&&f++),typeof o.type!="function"&&(o.__u|=4)):c!=l&&(c==l-1?f--:c==l+1?f++:(c>l?f--:f++,o.__u|=4))):e.__k[r]=null;if(p)for(r=0;r<u;r++)(a=n[r])!=null&&(2&a.__u)==0&&(a.__e==i&&(i=U(a)),Xe(a,a));return i}function Ze(e,t,n){var i,s;if(typeof e.type=="function"){for(i=e.__k,s=0;i&&s<i.length;s++)i[s]&&(i[s].__=e,t=Ze(i[s],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=U(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function qt(e,t,n,i){var s,r,o,a=e.key,l=e.type,c=t[n],u=c!=null&&(2&c.__u)==0;if(c===null&&a==null||u&&a==c.key&&l==c.type)return n;if(i>(u?1:0)){for(s=n-1,r=n+1;s>=0||r<t.length;)if((c=t[o=s>=0?s--:r++])!=null&&(2&c.__u)==0&&a==c.key&&l==c.type)return o}return-1}function je(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Vt.test(t)?n:n+"px"}function re(e,t,n,i,s){var r,o;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof i=="string"&&(e.style.cssText=i=""),i)for(t in i)n&&t in n||je(e.style,t,"");if(n)for(t in n)i&&n[t]==i[t]||je(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")r=t!=(t=t.replace(Ge,"$1")),o=t.toLowerCase(),t=o in e||t=="onFocusOut"||t=="onFocusIn"?o.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=n,n?i?n[Y]=i[Y]:(n[Y]=De,e.addEventListener(t,r?ke:ye,r)):e.removeEventListener(t,r?ke:ye,r);else{if(s=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Oe(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[ie]==null)t[ie]=De++;else if(t[ie]<n[Y])return;return n(S.event?S.event(t):t)}}}function Me(e,t,n,i,s,r,o,a,l,c){var u,p,f,_,g,m,w,v,d,y,D,T,P,A,C,I,N=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(l=!!(32&n.__u),r=[a=t.__e=n.__e]),(u=S.__b)&&u(t);e:if(typeof N=="function"){p=o.length;try{if(d=t.props,y=N.prototype&&N.prototype.render,D=(u=N.contextType)&&i[u.__c],T=u?D?D.props.value:u.__:i,n.__c?v=(f=t.__c=n.__c).__=f.__E:(y?t.__c=f=new N(d,T):(t.__c=f=new z(d,T),f.constructor=N,f.render=Xt),D&&D.sub(f),f.state||(f.state={}),f.__n=i,_=f.__d=!0,f.__h=[],f._sb=[]),y&&f.__s==null&&(f.__s=f.state),y&&N.getDerivedStateFromProps!=null&&(f.__s==f.state&&(f.__s=H({},f.__s)),H(f.__s,N.getDerivedStateFromProps(d,f.__s))),g=f.props,m=f.state,f.__v=t,_)y&&N.getDerivedStateFromProps==null&&f.componentWillMount!=null&&f.componentWillMount(),y&&f.componentDidMount!=null&&f.__h.push(f.componentDidMount);else{if(y&&N.getDerivedStateFromProps==null&&d!==g&&f.componentWillReceiveProps!=null&&f.componentWillReceiveProps(d,T),t.__v==n.__v||!f.__e&&f.shouldComponentUpdate!=null&&f.shouldComponentUpdate(d,f.__s,T)===!1){t.__v!=n.__v&&(f.props=d,f.state=f.__s,f.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(G){G&&(G.__=t)}),ae.push.apply(f.__h,f._sb),f._sb=[],f.__h.length&&o.push(f),a=U(n);break e}f.componentWillUpdate!=null&&f.componentWillUpdate(d,f.__s,T),y&&f.componentDidUpdate!=null&&f.__h.push(function(){f.componentDidUpdate(g,m,w)})}if(f.context=T,f.props=d,f.__P=e,f.__e=!1,P=S.__r,A=0,y)f.state=f.__s,f.__d=!1,P&&P(t),u=f.render(f.props,f.state,f.context),ae.push.apply(f.__h,f._sb),f._sb=[];else do f.__d=!1,P&&P(t),u=f.render(f.props,f.state,f.context),f.state=f.__s;while(f.__d&&++A<25);f.state=f.__s,f.getChildContext!=null&&(i=H(H({},i),f.getChildContext())),y&&!_&&f.getSnapshotBeforeUpdate!=null&&(w=f.getSnapshotBeforeUpdate(g,m)),C=u!=null&&u.type===V&&u.key==null?Qe(u.props.children):u,a=Je(e,fe(C)?C:[C],t,n,i,s,r,o,a,l,c),f.base=t.__e,t.__u&=-161,f.__h.length&&o.push(f),v&&(f.__E=f.__=null)}catch(G){if(o.length=p,t.__v=null,l||r!=null){if(G.then){for(t.__u|=l?160:128;a&&a.nodeType==8&&a.nextSibling;)a=a.nextSibling;r!=null&&(r[r.indexOf(a)]=null),t.__e=a}else if(r!=null)for(I=r.length;I--;)Se(r[I])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),G.then||Ke(t),S.__e(G,t,n)}}else r==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):a=t.__e=Qt(n.__e,t,n,i,s,r,o,l,c);return(u=S.diffed)&&u(t),128&t.__u?void 0:a}function Ke(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(Ke))}function qe(e,t,n){for(var i=0;i<n.length;i++)Ee(n[i],n[++i],n[++i]);S.__c&&S.__c(t,e),e.some(function(s){try{e=s.__h,s.__h=[],e.some(function(r){r.call(s)})}catch(r){S.__e(r,s.__v)}})}function Qe(e){return typeof e!="object"||e==null||e.__b>0?e:fe(e)?e.map(Qe):e.constructor!==void 0?null:H({},e)}function Qt(e,t,n,i,s,r,o,a,l){var c,u,p,f,_,g,m,w=n.props||oe,v=t.props,d=t.type;if(d=="svg"?s="http://www.w3.org/2000/svg":d=="math"?s="http://www.w3.org/1998/Math/MathML":s||(s="http://www.w3.org/1999/xhtml"),r!=null){for(c=0;c<r.length;c++)if((_=r[c])&&"setAttribute"in _==!!d&&(d?_.localName==d:_.nodeType==3)){e=_,r[c]=null;break}}if(e==null){if(d==null)return document.createTextNode(v);e=document.createElementNS(s,d,v.is&&v),a&&(S.__m&&S.__m(t,r),a=!1),r=null}if(d==null)w===v||a&&e.data==v||(e.data=v);else{if(r=d=="textarea"&&v.defaultValue!=null?null:r&&ce.call(e.childNodes),!a&&r!=null)for(w={},c=0;c<e.attributes.length;c++)w[(_=e.attributes[c]).name]=_.value;for(c in w)_=w[c],c=="dangerouslySetInnerHTML"?p=_:c=="children"||c in v||c=="value"&&"defaultValue"in v||c=="checked"&&"defaultChecked"in v||re(e,c,null,_,s);for(c in v)_=v[c],c=="children"?f=_:c=="dangerouslySetInnerHTML"?u=_:c=="value"?g=_:c=="checked"?m=_:a&&typeof _!="function"||w[c]===_||re(e,c,_,w[c],s);if(u)a||p&&(u.__html==p.__html||u.__html==e.innerHTML)||(e.innerHTML=u.__html),t.__k=[];else if(p&&(e.innerHTML=""),Je(t.type=="template"?e.content:e,fe(f)?f:[f],t,n,i,d=="foreignObject"?"http://www.w3.org/1999/xhtml":s,r,o,r?r[0]:n.__k&&U(n,0),a,l),r!=null)for(c=r.length;c--;)Se(r[c]);a&&d!="textarea"||(c="value",d=="progress"&&g==null?e.removeAttribute("value"):g!=null&&(g!==e[c]||d=="progress"&&!g||d=="option"&&g!=w[c])&&re(e,c,g,w[c],s),c="checked",m!=null&&m!=e[c]&&re(e,c,m,w[c],s))}return e}function Ee(e,t,n){try{if(typeof e=="function"){var i=typeof e.__u=="function";i&&e.__u(),i&&t==null||(e.__u=e(t))}else e.current=t}catch(s){S.__e(s,n)}}function Xe(e,t,n){var i,s;if(S.unmount&&S.unmount(e),(i=e.ref)&&(i.current&&i.current!=e.__e||Ee(i,null,t)),(i=e.__c)!=null){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(r){S.__e(r,t)}i.base=i.__P=i.__n=null}if(i=e.__k)for(s=0;s<i.length;s++)i[s]&&Xe(i[s],t,n||typeof e.type!="function");n||Se(e.__e),e.__c=e.__=e.__e=void 0}function Xt(e,t,n){return this.constructor(e,n)}function Ye(e,t,n){var i,s,r,o;t==document&&(t=document.documentElement),S.__&&S.__(e,t),s=(i=typeof n=="function")?null:n&&n.__k||t.__k,r=[],o=[],Me(t,e=(!i&&n||t).__k=Jt(V,null,[e]),s||oe,oe,t.namespaceURI,!i&&n?[n]:s?null:t.firstChild?ce.call(t.childNodes):null,r,!i&&n?n:s?s.__e:t.firstChild,i,o),qe(r,e,o),e.props.children=null}ce=ae.slice,S={__e:function(e,t,n,i){for(var s,r,o;t=t.__;)if((s=t.__c)&&!s.__)try{if((r=s.constructor)&&r.getDerivedStateFromError!=null&&(s.setState(r.getDerivedStateFromError(e)),o=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(e,i||{}),o=s.__d),o)return s.__E=s}catch(a){e=a}throw e}},Ue=0,Gt=function(e){return e!=null&&e.constructor===void 0},z.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=H({},this.state),typeof e=="function"&&(e=e(H({},n),this.props)),e&&H(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Re(this))},z.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Re(this))},z.prototype.render=V,j=[],We=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Be=function(e,t){return e.__v.__b-t.__v.__b},le.__r=0,we=Math.random().toString(8),ie="__d"+we,Y="__a"+we,Ge=/(PointerCapture)$|Capture$/i,De=0,ye=Oe(!1),ke=Oe(!0),zt=0;var Yt=0;function k(e,t,n,i,s,r){t||(t={});var o,a,l=t;if("ref"in l)for(a in l={},t)a=="ref"?o=t[a]:l[a]=t[a];var c={type:e,props:l,key:n,ref:o,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Yt,__i:-1,__u:0,__source:s,__self:r};if(typeof e=="function"&&(o=e.defaultProps))for(a in o)l[a]===void 0&&(l[a]=o[a]);return S.vnode&&S.vnode(c),c}var xe;function xt(e,t,n=0,i={}){xe={App:e,selector:t,importance:n,props:i},tt()===!1&&window.addEventListener("load",et)}function et(){window.removeEventListener("load",et),tt()}function tt(){let{App:e,selector:t,importance:n,props:i}=xe,s=document.querySelector(t);if(!s)return!1;let r=s.dataset.importance;if(r&&(Number(r)||0)>=n){console.warn("Refused to mount, not important enough!");return}return s.dataset.importance=n,s.innerHTML="",Ye(k(e,{...i}),s),!0}var nt=xt;var en={data:""},tn=e=>{if(typeof window=="object"){let t=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return t.nonce=window.__nonce__,t.parentNode||(e||document.head).appendChild(t),t.firstChild}return e||en};var nn=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,rn=/\/\*[^]*?\*\/|  +/g,rt=/\n+/g,W=(e,t)=>{let n="",i="",s="";for(let r in e){let o=e[r];r[0]=="@"?r[1]=="i"?n=r+" "+o+";":i+=r[1]=="f"?W(o,r):r+"{"+W(o,r[1]=="k"?"":t)+"}":typeof o=="object"?i+=W(o,t?t.replace(/([^,])+/g,a=>r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,l=>/&/.test(l)?l.replace(/&/g,a):a?a+" "+l:l)):r):o!=null&&(r=r[1]=="-"?r:r.replace(/[A-Z]/g,"-$&").toLowerCase(),s+=W.p?W.p(r,o):r+":"+o+";")}return n+(t&&s?t+"{"+s+"}":s)+i},O={},it=e=>{if(typeof e=="object"){let t="";for(let n in e)t+=n+it(e[n]);return t}return e},sn=(e,t,n,i,s)=>{let r=it(e),o=O[r]||(O[r]=(l=>{let c=0,u=11;for(;c<l.length;)u=101*u+l.charCodeAt(c++)>>>0;return"go"+u})(r));if(!O[o]){let l=r!==e?e:(c=>{let u,p,f=[{}];for(;u=nn.exec(c.replace(rn,""));)u[4]?f.shift():u[3]?(p=u[3].replace(rt," ").trim(),f.unshift(f[0][p]=f[0][p]||{})):f[0][u[1]]=u[2].replace(rt," ").trim();return f[0]})(e);O[o]=W(s?{["@keyframes "+o]:l}:l,n?"":"."+o)}let a=n&&O.g;return n&&(O.g=O[o]),((l,c,u,p)=>{p?c.data=c.data.replace(p,l):c.data.indexOf(l)===-1&&(c.data=u?l+c.data:c.data+l)})(O[o],t,i,a),o},on=(e,t,n)=>e.reduce((i,s,r)=>{let o=t[r];if(o&&o.call){let a=o(n),l=a&&a.props&&a.props.className||/^go/.test(a)&&a;o=l?"."+l:a&&typeof a=="object"?a.props?"":W(a,""):a===!1?"":a}return i+s+(o??"")},"");function $(e){let t=this||{},n=e.call?e(t.p):e;return sn(n.unshift?n.raw?on(n,[].slice.call(arguments,1),t.p):n.reduce((i,s)=>Object.assign(i,s&&s.call?s(t.p):s),{}):n,tn(t.target),t.g,t.o,t.k)}var Dr=$.bind({g:1}),Sr=$.bind({k:1});function an(e,...t){let n=[],{length:i}=e;for(let r=0;r<i;r++)n.push(e[r],t[r]);n.pop();let s=n.join("");return s=s.replaceAll(/\/\*[\s\S]*?\*\//g,""),s=s.replaceAll(/\s\/\/.*/g,""),s}var ue=an;var J,st,ln={info:"\u2139\uFE0F",warning:"\u26A0\uFE0F",error:"\u26D4"},F="tool-log",cn=ue`
    .${F} {
        overflow-y: scroll;
        height: 200px;
        flex-shrink: 0;
    }

    .${F} table {
        width: 100%;
        border-collapse: collapse;
        margin: 0;
    }

    .${F} th {
        text-align: left;
    }

    .${F} th,
    .${F} td {
        border: solid 1px rgba(255, 255, 255, 0.1);
        border-left: none;
        border-right: none;
        vertical-align: top;
        padding: 4px;
    }

    .${F} th {
        border-top: none;
    }

    .${F} table {
        border: solid 1px rgba(255, 255, 255, 0.1);
    }

    .${F} th {
        background: rgba(255, 255, 255, 0.1);
    }

    .${F} td:nth-child(1) {
        width: 90px;
    }

    .${F} td:nth-child(2),
    .${F} th:nth-child(2) {
        width: 20px;
        text-align: center;
    }

    .${F} td > div > div {
        cursor: pointer;
        color: yellow;
    }

    .${F} textarea {
        width: calc(100% - 8px);
        height: 200px;
    }
`;function fn(e,...t){let n=e.endsWith("!")?e.startsWith("!")?"error":"warning":"info";un(n,e,t)}function ot(e){J=e,J.classList.add(F),J.innerHTML=`
        <style>${cn}</style>
        <table class='wikitable'>
            <tr>
                <th>Timestamp</th>
                <th>\u{1F197}</th>
                <th>Message</th>
            </tr>
        </table>`,st=J.querySelector("table")}function un(e,t,n){let s=new Date().toLocaleTimeString("en-GB",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3}),r=document.createElement("tr");Pe(r,s),Pe(r,ln[e]),Pe(r,hn(t,n)),st.appendChild(r),J.scrollTo({top:J.scrollHeight,behavior:"smooth"})}function Pe(e,t){let n=document.createElement("td");t=t instanceof Node?t:document.createTextNode(t),n.appendChild(t),e.appendChild(n)}function hn(e,t){if(e=e.replace(/^!/,""),console.log(e,...t),!t.length)return document.createTextNode(e);let n=document.createElement("div"),i=document.createElement("div");i.innerHTML=e,i.onclick=function(){let r=this.nextElementSibling.style.display!=="none";this.nextElementSibling.style.display=r?"none":"block"},n.appendChild(i);let s=document.createElement("textarea");return s.style.display="none",s.innerHTML=pn(t),n.appendChild(s),n}function pn(e){let t=[];for(let n of e)typeof n=="object"&&n?n instanceof Error?t.push(n.stack):t.push(JSON.stringify(n,null,4)):t.push(n);return t.join(`
`)}var L=fn;function _n(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var x=_n;var at=window.location.host||"localhost",Z="store";async function lt(e){if(!(await indexedDB.databases()).find(i=>i.name===at))return;let n=await ft();if(!n.objectStoreNames.contains(Z)){n.close();return}return new Promise((i,s)=>{let r=n.transaction(Z).objectStore(Z).get(e);r.onsuccess=()=>{i(r.result),n.close()},r.onerror=()=>{s(r.error),n.close()}})}async function ct(e,t){let n=await ft();return new Promise((i,s)=>{let r=n.transaction(Z,"readwrite");r.objectStore(Z).put(t,e),r.oncomplete=()=>{i(),n.close()},r.onerror=()=>{s(r.error),n.close()}})}function ft(){return new Promise((e,t)=>{let n=indexedDB.open(at);n.onupgradeneeded=i=>i.target.result.createObjectStore(Z),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var Ae="gameDirHandle",ee="diff-list",R="diff-path",he="diff-label",te="diff-new",K="diff-identical",q="diff-changed",B="diff-content",Q="diff-collapsed";var Te=new Proxy(()=>{},{get:()=>Te,apply:()=>Te}),ut=Te;function gn(e,...t){if(typeof e=="function")try{let n=e(...t);return n&&typeof n.then=="function"?n.then(i=>[i,null]).catch(i=>[null,i]):[n,null]}catch(n){return[null,n]}return e&&typeof e.then=="function"?e.then(n=>[n,null]).catch(n=>[null,n]):[e,null]}var pe=gn;var ht=new Map;async function dn(e,t){let n=await vn(e,t);return ht.set(n,t),n.on("message",mn.bind(null,n)),{run:async()=>await bn(n,"run")}}async function vn(e,t){let n=new ut.Worker(e);return n.on("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{r?.type==="ready"&&(n.off("message",s),i(n))};n.on("message",s)})}async function mn(e,t){let n=ht.get(e),{type:i,payload:s}=t;if(typeof n[i]!="function")return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function bn(e,t,n){return new Promise(i=>{let s=r=>{r.type===t&&(e.off("message",s),i(r.payload))};e.on("message",s),e.postMessage({type:t,payload:n})})}var pt=dn;var _t=new Map;async function wn(e,t){let n=await yn(e,t);return _t.set(n,t),n.addEventListener("message",kn.bind(null,n)),{run:async()=>await Dn(n,"run")}}async function yn(e,t){let n;return window.mw?n=await Sn(e,t):n=new Worker(`data:application/javascript,importScripts('${e}?${Math.random()}');`),n&&n.addEventListener("error",()=>t.log("!Worker error!")),new Promise(i=>{let s=r=>{(r.data&&typeof r.data=="object"?r.data:{}).type==="ready"&&(n.removeEventListener("message",s),i(n))};n.addEventListener("message",s)})}async function kn(e,t){let n=_t.get(e),{type:i,payload:s}=t.data;if(typeof n[i]!="function")return;let[r,o]=await pe(n[i],...s);o||e.postMessage({type:i,payload:r})}async function Dn(e,t,n){return new Promise(i=>{let s=r=>{let o=r.data&&typeof r.data=="object"?r.data:{};o.type===t&&(e.removeEventListener("message",s),i(o.payload))};e.addEventListener("message",s),e.postMessage({type:t,payload:n})})}async function Sn(e,t){let n=mw.util.getUrl(e,{action:"raw",ctype:"text/javascript",v:Date.now()}),i=await fetch(n,{cache:"no-cache"});if(!i.ok){t.log("!Failed to load wiki worker!",i.statusText);return}let s=await i.text(),r=new Blob([s],{type:"application/javascript"}),o=URL.createObjectURL(r),a=new Worker(o);return URL.revokeObjectURL(o),a}var gt=wn;async function Mn(e,t){if(typeof e=="string"){let n=e;return typeof process<"u"&&process.versions?.node!==null?await pt(n,t):await gt(n,t)}else return await En(e,t)}async function En(e,t){return{run:()=>e(t)}}var dt=Mn;var vt=console.log,Pn=!1,An=[];function Tn(...e){if(Pn){let t=[];for(let n of e)t.push(typeof n=="object"?JSON.stringify(n,null,4):n);An.push(t.join(`
`))}vt(...e)}function mt(e){vt=e}var Le=Tn;async function Ln(e,t){mt(e.log),Le("Beginning to parse...");let n=Date.now(),s=await(await dt(t,e)).run();return Le(`Finished parsing in ${Date.now()-n} ms.`),s}var bt=Ln;async function Cn(e,t,n,i){return wt(e,"",t,n,i)}async function wt(e,t,n,i,s){t+=t?"/":"";let r={},o=await Fn(e);for(let[a,l]of o){let c=t+a;if(!(i&&c.match(i))){if(l.kind==="directory"){let u=await wt(l,c,n,i,s);if(u instanceof File)return u;Object.assign(r,u)}else if(c.match(n)){let u=await l.getFile();if(s)return u;r[c]=u}}}return r}async function Fn(e){let t=[];try{for await(let n of e.entries())t.push(n)}catch{}return t}var yt=Cn;var kt;async function In(...e){let[t,n,i]=e;return await yt(kt,t,n,i)}function Nn(...e){L(...e)}function Hn(e){kt=e}var $n={find:In,log:Nn,setDirHandle:Hn},Ce=$n;async function Rn(e){return await e?.queryPermission()==="granted"}var Fe=Rn;var jn=new RegExp("[ :]");function On(e){if(e.match(jn)){L("Path contains an illegal character!",e);return}if(e.match("/.*?/")){L("Path contains too many slashes!",e);return}let t=e;return t=t.replace(/^Main\//,""),t=t.replace("/",":"),t=t.replaceAll("~","/"),t=t.replaceAll("_"," "),t=t.replaceAll("#",":"),t=t.replace(/\.lua$/,""),t=t.replace(/\.wiki$/,""),t}var _e=On;var Un=new Set(["Main","Data","Media","Special","Talk","User","User talk","Project","Project talk","File","File talk","MediaWiki","MediaWiki talk","Template","Template talk","Help","Help talk","Category","Category talk","Module","Module talk"]),Wn=new Set(["css"]),Bn=new RegExp("~");function Gn(e){e.match(Bn)&&L("Title contains an illegal character!",e);let{namespace:t,titleWithoutNamespace:n}=zn(e),i=n;return i=i.replaceAll("/","~"),i=i.replaceAll(" ","_"),i=i.replaceAll(":","#"),i=Vn(i),i=Jn(i,t),t.replace(" ","_")+"/"+i}function zn(e){let[,t,n]=e.match(/(.*?):(.*)/)||[null,"",e];return Un.has(t)||(t="",n=e),t=t||"Main",{namespace:t,titleWithoutNamespace:n}}function Vn(e){let t=(e.match(/\.([a-zA-Z]+)$/)||[null,""])[1].toLowerCase();return t==="url"?e.replace(/\.url$/,""):Wn.has(t)?e:e+".wiki"}function Jn(e,t){return t!=="Module"||e.endsWith("~doc.wiki")||e.endsWith(".css")?e:e.replace(".wiki",".lua")}var Dt=Gn;var Ie;async function ne(e){if(!Ie){console.log("Please call applySettings() prior to asking!");return}let t={method:Zn(e)},n=new URL(Ie.API_URL),i=Kn(e);t.method==="GET"?n.search=i.toString():t.body=i;let[s,r]=await x(fetch(n,t));if(!s){L("Failed to fetch!",r);return}let[o,a]=await x(s.json());if(!o){L("Invalid json!",a);return}return o}function St(e){let{API_URL:t}=e;Ie={API_URL:t}}function Zn(e){return!e.method||e.method==="GET"?"GET":"POST"}function Kn(e){let t={...e,format:"json",formatversion:2},{method:n}=t;if(delete t.method,n==="FORM"){let i=new FormData;for(let s in t){let r=t[s];Array.isArray(r)?i.append(s,r[0],r[1]):i.append(s,r)}return i}return new URLSearchParams(t)}var Mt=50;async function qn(e){let t=Object.keys(e).map(s=>_e(s)),n=await Qn(t);if(!n)return;let i={};for(let s in n){let r=Dt(s);r&&(n[s]===void 0?L("Invalid page content!",s):i[r]=n[s])}return L(`Retrieved ${Object.keys(i).length} pages.`),i}async function Qn(e){let t={};for(let n=0;n<e.length;n+=Mt){let i=Math.min(n+Mt,e.length),s=e.slice(n,i);L(`Retrieving ${n+1}-${i} of ${e.length} pages (${s[0]})...`);let r=await ne({action:"query",prop:"revisions",rvprop:"content",rvslots:"main",titles:s.join("|"),origin:"*"});if(!r)continue;let o=r.query?.pages||[];for(let a of o)a.missing||(t[a.title]=a.revisions?.[0]?.slots?.main?.content)}return t}var Et=qn;var Xn=ue`
    html, body {
        padding: 0;
        margin: 0;
        height: 100%;
        font-size: 13px;
        font-family: "JetBrains Mono", monospace;
    }

    .${ee} pre {
        font-family: "JetBrains Mono", monospace;
        white-space: pre-wrap;
    }

    .${R} {
        font-weight: bold;
        background: silver;
        padding: 8px;
        cursor: pointer;
    }

    .${he} {
        float: right;
        border: solid 1px rgba(0, 0, 0, 0.5);
        border-radius: 4px;
        padding: 4px;
        margin-right: -5px;
        margin-top: -5px;
    }

    .${R}.${te} {
        background: rgba(0, 0, 255, 0.2);
        border-top: solid 1px rgba(0, 0, 255, 0.4);
    }

    .${R}.${K} {
        background: rgba(0, 255, 0, 0.2);
        border-top: solid 1px rgba(0, 255, 0, 0.4);
    }

    .${R}.${q} {
        background: rgba(255, 100, 0, 0.2);
        border-top: solid 1px rgba(255, 100, 0, 0.4);
    }

    .${B} {
        display: flex;
        flex-direction: row;
    }

    .${B}.${Q} {
        display: none;
    }

    .${B} pre {
        margin: 0;
        flex: 1;
        min-width: 0;
        padding: 8px;
    }

    .${B} pre:nth-child(2) {
        border-left: solid 2px rgba(255, 100, 0, 0.2);
    }

    del {
        background: #f5a7a7;
        text-decoration: none;
        outline: solid 1px #f5a7a7;
    }

    ins {
        background: #BEE6BE;
        text-decoration: none;
        outline: solid 1px #BEE6BE;
    }
`,Pt=Xn;var ge=Bt(At(),1),Yn=new ge.default;function xn(e,t){let n=Tt(e),i=Tt(t),s=Yn.diff_main(n,i),r=[],o=[];for(let[u,p]of s)switch(u){case ge.default.DIFF_DELETE:r.push("<del>"+p+"</del>"),o.push("<del></del>");break;case ge.default.DIFF_INSERT:r.push("<ins></ins>"),o.push("<ins>"+p+"</ins>");break;default:r.push(p),o.push(p)}let a=r.join("").replaceAll("</del><ins></ins>","</del>"),l=o.join("").replaceAll("<del></del><ins>","<ins>"),c=l.split("<").length-1;return{text1:a,text2:l,differences:c/2}}function Tt(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}var Lt=xn;var er={[te]:"new",[K]:"identical",[q]:"changed"};function tr(e,t,n){let i=[];for(let r in t){let o=t[r],a=e[r];if(a!==void 0){let{text1:c,text2:u}=Lt(a,o);a=c,o=u}else o=rr(o);let l=nr(r,a,o);i.push(...l)}n.innerHTML=i.join(""),Array.from(n.querySelectorAll("."+R)).map(r=>r.addEventListener("click",ir)),sr(n)}function nr(e,t,n){let i=t===void 0?te:t===n?K:q,s=`<div class="${he}">${er[i]}</div>`,r=i===K?Q:"",o=[];return o.push(`<div class="${R} ${i}">${s}${e}</div>`),o.push(`<div class="${B} ${r}">`),i===q&&o.push(`<pre>${t}</pre>`),o.push(`<pre>${n}</pre>`),o.push("</div>"),o}function rr(e){return e.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;")}function ir(e){e.currentTarget.nextElementSibling.classList.toggle(Q)}function sr(e){let t=e.querySelectorAll("."+R);for(let n of t)if(!n.nextElementSibling.classList.contains(Q)){n.scrollIntoView({behavior:"smooth",block:"start"});break}}var Ct=tr;function or(e,t){let n=window.open("","Preview");if(!n)return;let i=n.document;i.open(),i.write(`
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <title>Preview</title>
            <style>${Pt}</style>
        </head>
        <body>
            <div class='${ee}'></div>
        </body>
        </html>
    `),i.close(),Ct(e||{},t,i.querySelector("."+ee))}var Ft=or;async function ar(e,t){let n=lr(e,t);if(!n.length)return L("All pages are already updated."),!0;let i=await cr();if(!i)return L("Cannot get csrf token!"),!1;let s=0;for(let{title:r,content:o}of n)await fr(r,o,i)&&s++;return L(`Successfully saved ${s} pages.`),!0}function lr(e,t){let n=[];t=t||{};for(let i in e){let s=e[i],r=t[i];if(s!==r){let o=_e(i);n.push({title:o,content:s})}}return n}async function cr(){return(await ne({action:"query",meta:"tokens"}))?.query?.tokens?.csrftoken}async function fr(e,t,n){return L(`Saving content for "${e}"...`),(await ne({method:"POST",action:"edit",title:e,text:t,token:n}))?.edit?.result!=="Success"?(L("Save failed!",e,t),!1):!0}var It=ar;var ur=$`
    color: #fff;
`,de=$`
    padding: 16px;
    border-top: solid 1px #cbced1;
    &:first-child {
        border: none;
    }
`,ve=$`
    font-size: 150%;
    font-weight: bold;
    color: #c8b36c;
`,me=$`
    margin-top: 8px;
`,be=$`
    &:after {
        content: ' ✅';
    }
`,hr=$`
    &:after {
        content: ' ⚠️';
    }
`,pr="MediaWiki:ParseCore.js",Ne=class extends z{vars={logRef:ze(),dirHandle:null};state={busy:0,hasDirAccess:!1,parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1};render(){let{logRef:t}=this.vars,{busy:n,hasDirAccess:i,isPreviewed:s,isSaved:r,mirrorHub:o}=this.state;return k("div",{class:ur,children:[k("div",{class:de,children:[k("div",{class:ve,children:"1. Select game data directory"}),k("div",{children:"Give read-access to the local install directory of the game so the parser can choose what files it needs."}),k("div",{class:me,children:k("button",{disabled:!!n,class:i?be:hr,onClick:this.onPickDirectoryClick,children:"Pick directory"})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"2. Retrieve wiki data pages"}),k("div",{children:["Temporarily download all relevant data pages from this wiki so they can be used as a comparison base. ",k("br",{}),"This step is optional, but recommended, because it gives awareness in the following steps and reduces the number of updates needed."]}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:o&&be,onClick:this.onRetrieveClick,children:["Retrieve ",n===2&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"3. Preview changes"}),k("div",{children:"Open a popup window listing each page that is about to be updated, potentially highlighting differences."}),k("div",{class:me,children:k("button",{disabled:!!n||!i||!o,class:s&&be,onClick:this.onPreviewClick,children:["Preview ",n===3&&k("progress",{})]})})]}),k("div",{class:de,children:[k("div",{class:ve,children:"4. Save changes"}),k("div",{children:"Write the changes to each page using the current account, just as if you had done them manually."}),k("div",{class:me,children:k("button",{disabled:!!n||!i,class:r&&be,onClick:this.onSaveClick,children:["SAVE ",n===4&&k("progress",{})]})})]}),"Log:",k("div",{ref:t})]})}async componentDidMount(){let{logRef:t}=this.vars;ot(t.current),L("Initialized.");let n=this.vars.dirHandle=await lt(Ae),i=await Fe(n);this.setState({hasDirAccess:i}),St({API_URL:document.location.href.replace(/[^\/]*$/,"")+"api.php"})}onPickDirectoryClick=async()=>{let{hasDirAccess:t}=this.state,{dirHandle:n}=this.vars,i=!1;if(n?t?i=!0:await n.requestPermission():i=!0,i){let[s]=await x(window.showDirectoryPicker,{mode:"read"});n=this.vars.dirHandle=s,await ct(Ae,n)}t=await Fe(n),t||this.setState({parsedHub:null,mirrorHub:null,isPreviewed:!1,isSaved:!1}),this.setState({hasDirAccess:t})};onRetrieveClick=async()=>{await this.ensureParsedHub(2);let t=await Et(this.state.parsedHub);this.setState({mirrorHub:t})};onPreviewClick=async()=>{await this.ensureParsedHub(3);let{mirrorHub:t,parsedHub:n}=this.state;Ft(t,n),this.setState({isPreviewed:!0})};onSaveClick=async()=>{await this.ensureParsedHub(4);let{mirrorHub:t,parsedHub:n}=this.state;this.setState({busy:4});let i=await It(n,t);this.setState({busy:0,isSaved:i})};ensureParsedHub=async t=>{this.state.parsedHub||(this.setState({busy:t}),Ce.setDirHandle(this.vars.dirHandle),this.setState({busy:0,parsedHub:await bt(Ce,pr)}))}},Nt=Ne;function _r(){nt(Nt,".update-tool",0)}_r();})();