just-git 1.5.5 → 1.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -776,7 +776,7 @@ ${u}`,exitCode:0}}oe();ae();Pr();ge();os();function Pd(e,t){e.command("tag",{des
776
776
  `)}if(n.list)return Cd(s,n.name||void 0);if(n.name){if(!Sc(n.name))return I(`'${n.name}' is not a valid tag name`);let i=n.commit,a;if(i){let d=await wt(s,i,`Failed to resolve '${i}' as a valid ref.`);if(M(d))return d;a=d}else if(a=await Y(s),!a)return I("Failed to resolve 'HEAD' as a valid ref.");let c=`refs/tags/${n.name}`;if(await B(s,c)&&!n.force)return I(`tag '${n.name}' already exists`);if(n.annotate||n.message){if(!n.message)return I("no tag message specified (use -m)");let d=await nt(s,r.env);if(M(d))return d;let u=Mt(n.message),m=Pc({type:"tag",object:a,objectType:"commit",name:n.name,tagger:d,message:u}),h=await He(s,"tag",m);await Z(s,c,h)}else await Z(s,c,a);return{stdout:"",stderr:"",exitCode:0}}return Cd(s)}})}async function Cd(e,t){let n=await pe(e,"refs/tags");if(n.length===0)return{stdout:"",stderr:"",exitCode:0};let r=n.map(o=>o.name.replace("refs/tags/",""));return t&&(r=r.filter(o=>on(t,o,0)===0)),r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${r.join(`
777
777
  `)}
778
778
  `,stderr:"",exitCode:0}}var $d=new Set(["am","annotate","apply","archive","bugreport","bundle","cat-file","check-ignore","check-mailmap","check-ref-format","checkout-index","cherry","commit-tree","count-objects","credential","daemon","diff-files","diff-index","diff-tree","difftool","fast-export","fast-import","filter-branch","for-each-ref","format-patch","fsck","hash-object","instaweb","interpret-trailers","log--hierarchical","ls-remote","ls-tree","maintenance","merge-base","merge-tree","mergetool","multi-pack-index","name-rev","notes","pack-objects","pack-refs","patch-id","prune","range-diff","read-tree","receive-pack","replace","request-pull","rerere","rev-list","send-email","send-pack","shortlog","show-branch","show-ref","sparse-checkout","stash--helper","stripspace","submodule","symbolic-ref","unpack-objects","update-index","update-ref","upload-pack","var","verify-commit","verify-pack","verify-tag","whatchanged","worktree","write-tree"]),Sw={init:(e,t)=>jl(e,t),clone:(e,t)=>fl(e,t),describe:(e,t)=>dl(e,t),fetch:(e,t)=>Ol(e,t),pull:(e,t)=>td(e,t),push:(e,t)=>nd(e,t),add:(e,t)=>Yc(e,t),blame:(e,t)=>Tf(e,t),commit:(e,t)=>ul(e,t),status:(e,t)=>Ed(e,t),log:(e,t)=>zl(e,t),branch:(e,t)=>Af(e,t),tag:(e,t)=>Pd(e,t),checkout:(e,t)=>Df(e,t),diff:(e,t)=>Rl(e,t),reset:(e,t)=>id(e,t),merge:(e,t)=>Yl(e,t),"cherry-pick":(e,t)=>Vf(e,t),revert:(e,t)=>ld(e,t),rebase:(e,t)=>ed(e,t),mv:(e,t)=>Xl(e,t),rm:(e,t)=>dd(e,t),remote:(e,t)=>sd(e,t),config:(e,t)=>gl(e,t),show:(e,t)=>ud(e,t),stash:(e,t)=>yd(e,t),"rev-parse":(e,t)=>fd(e,t),"ls-files":(e,t)=>Vl(e,t),clean:(e,t)=>Yf(e,t),switch:(e,t)=>Rd(e,t),restore:(e,t)=>cd(e,t),reflog:(e,t)=>rd(e,t),repack:(e,t)=>Tl(e,t),gc:(e,t)=>vl(e,t),bisect:(e,t)=>gf(e,t),grep:(e,t)=>Ml(e,t)};function Od(e){let t=Xo("git",{description:"Git command"});for(let n of Object.values(Sw))n(t,e);return t.command("help",{description:"Display help information",args:[q.string().name("command").describe("Command to get help for").optional()],handler:async n=>{let r=n.command;if(!r)return{stdout:yr(t),stderr:"",exitCode:0};let o=t.children.get(r);return o?{stdout:yr(o),stderr:"",exitCode:0}:{stdout:"",stderr:`git: no help available for '${r}'
779
- `,exitCode:1}}}),t}var Tw="1.5.5";function vw(e,t){if(!e)return t;let n=e.locked?"locked":"defaults",r={"user.name":e.name,"user.email":e.email};return t?{...t,[n]:{...r,...t[n]}}:{[n]:r}}var qo=class{name="git";defaultFs;defaultCwd;blocked;hooks;inner;locks=new WeakMap;async withLock(t,n){let r=this.locks.get(t)??Promise.resolve(),o,s=new Promise(i=>{o=i});this.locks.set(t,s),await r;try{return await n()}finally{o()}}constructor(t){this.defaultFs=t?.fs,this.defaultCwd=t?.cwd??"/",this.hooks=t?.hooks,this.blocked=t?.disabled?.length?new Set(t.disabled):null;let n=t?.network,r=vw(t?.identity,t?.config),o={hooks:t?.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n,resolveRemote:t?.resolveRemote,credentialCache:new Map,...t?.objectStore?{objectStore:t.objectStore}:{},...t?.refStore?{refStore:t.refStore}:{},...t?.gitDir?{gitDir:t.gitDir,workTree:this.defaultCwd}:{},...r?{configOverrides:r}:{}};this.inner=Od(o).toCommand()}exec=async(t,n)=>{let r=n?.fs??this.defaultFs;if(!r)throw new Error("No filesystem: pass `fs` in exec() options or in createGit()");let o=n?.cwd??this.defaultCwd,s=Aw(t),i=new Map;if(n?.env)for(let[a,c]of Object.entries(n.env))i.set(a,c);return this.execute(s,{fs:r,cwd:o,env:i,stdin:n?.stdin??""})};execute=(t,n)=>this.withLock(n.fs,async()=>{let r=t[0]??"";if(r==="--version"||r==="version")return{stdout:`just-git version ${Tw} (virtual git implementation)
779
+ `,exitCode:1}}}),t}var Tw="1.5.6";function vw(e,t){if(!e)return t;let n=e.locked?"locked":"defaults",r={"user.name":e.name,"user.email":e.email};return t?{...t,[n]:{...r,...t[n]}}:{[n]:r}}var qo=class{name="git";defaultFs;defaultCwd;blocked;hooks;inner;locks=new WeakMap;async withLock(t,n){let r=this.locks.get(t)??Promise.resolve(),o,s=new Promise(i=>{o=i});this.locks.set(t,s),await r;try{return await n()}finally{o()}}constructor(t){this.defaultFs=t?.fs,this.defaultCwd=t?.cwd??"/",this.hooks=t?.hooks,this.blocked=t?.disabled?.length?new Set(t.disabled):null;let n=t?.network,r=vw(t?.identity,t?.config),o={hooks:t?.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n,resolveRemote:t?.resolveRemote,credentialCache:new Map,...t?.objectStore?{objectStore:t.objectStore}:{},...t?.refStore?{refStore:t.refStore}:{},...t?.gitDir?{gitDir:t.gitDir,workTree:this.defaultCwd}:{},...r?{configOverrides:r}:{}};this.inner=Od(o).toCommand()}exec=async(t,n)=>{let r=n?.fs??this.defaultFs;if(!r)throw new Error("No filesystem: pass `fs` in exec() options or in createGit()");let o=n?.cwd??this.defaultCwd,s=Aw(t),i=new Map;if(n?.env)for(let[a,c]of Object.entries(n.env))i.set(a,c);return this.execute(s,{fs:r,cwd:o,env:i,stdin:n?.stdin??""})};execute=(t,n)=>this.withLock(n.fs,async()=>{let r=t[0]??"";if(r==="--version"||r==="version")return{stdout:`just-git version ${Tw} (virtual git implementation)
780
780
  `,stderr:"",exitCode:0};if(this.blocked?.has(r))return{stdout:"",stderr:`git: '${r}' is not available in this environment
781
781
  `,exitCode:1};if(r&&$d.has(r))return{stdout:"",stderr:`git: '${r}' is not implemented. Run 'git help' for available commands.
782
782
  `,exitCode:1};if(this.hooks?.beforeCommand){let s=await this.hooks.beforeCommand({command:r,args:t.slice(1),fs:n.fs,cwd:n.cwd,env:n.env});if(le(s))return{stdout:"",stderr:s.message??"",exitCode:1}}let o=await this.inner.execute(t,n);return this.hooks?.afterCommand&&await this.hooks.afterCommand({command:r,args:t.slice(1),result:o}),o})};function Aw(e){let t=[],n="",r=0;for(;r<e.length;){let o=e[r];if(o==='"'){for(r++;r<e.length&&e[r]!=='"';){if(e[r]==="\\"&&r+1<e.length){let s=e[r+1];if(s==='"'||s==="\\"){n+=s,r+=2;continue}}n+=e[r],r++}r++}else if(o==="'"){for(r++;r<e.length&&e[r]!=="'";)n+=e[r],r++;r++}else o===" "||o===" "?(n.length>0&&(t.push(n),n=""),r++):(n+=o,r++)}return n.length>0&&t.push(n),t.length>0&&t[0]==="git"&&t.shift(),t}function Hw(e){return new qo(e)}var Id=new TextEncoder,Dw=new TextDecoder;function hn(e){let t=[];for(let n of e.split("/"))n==="."||n===""||(n===".."?t.pop():t.push(n));return"/"+t.join("/")}function zo(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}var xa=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:16877,mtime:new Date}),t)for(let[n,r]of Object.entries(t)){let o=hn(n);this.ensureParents(o),this.data.set(o,{type:"file",content:typeof r=="string"?Id.encode(r):r,mode:33188,mtime:new Date})}}ensureParents(t){let n=zo(t);n!=="/"&&(this.data.has(n)||(this.ensureParents(n),this.data.set(n,{type:"directory",mode:16877,mtime:new Date})))}resolve(t){let n="",r=new Set;for(let o of hn(t).slice(1).split("/")){n=`${n}/${o}`;let s=0,i=this.data.get(n);for(;i?.type==="symlink"&&s<40;){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`);r.add(n);let a=i.target;n=a.startsWith("/")?hn(a):hn(zo(n)+"/"+a),i=this.data.get(n),s++}if(s>=40)throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`)}return n}resolveParent(t){let n=hn(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let o="",s=new Set;for(let i=0;i<r.length-1;i++){o=`${o}/${r[i]}`;let a=this.data.get(o),c=0;for(;a?.type==="symlink"&&c<40;){if(s.has(o))throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`);s.add(o);let f=a.target;o=f.startsWith("/")?hn(f):hn(zo(o)+"/"+f),a=this.data.get(o),c++}}return`${o}/${r[r.length-1]}`}async readFile(t){return Dw.decode(await this.readFileBuffer(t))}async readFileBuffer(t){let n=this.data.get(this.resolve(t));if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}async writeFile(t,n){let r=this.resolve(t);this.ensureParents(r),this.data.set(r,{type:"file",content:typeof n=="string"?Id.encode(n):n,mode:33188,mtime:new Date})}async exists(t){try{return this.data.has(this.resolve(t))}catch{return!1}}async stat(t){let n=this.data.get(this.resolve(t));if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);return{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:n.type==="file"?n.content.byteLength:0,mtime:n.mtime}}async lstat(t){let n=this.resolveParent(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime}}async mkdir(t,n){let r=hn(t);if(this.data.has(r)){if(this.data.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let o=zo(r);if(o!=="/"&&!this.data.has(o))if(n?.recursive)await this.mkdir(o,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:16877,mtime:new Date})}async readdir(t){let n=this.resolve(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let o=n==="/"?"/":`${n}/`,s=new Set;for(let i of this.data.keys())if(i!==n&&i.startsWith(o)){let c=i.slice(o.length).split("/")[0];c&&s.add(c)}return[...s].sort()}async rm(t,n){let r=hn(t),o=this.data.get(r);if(!o){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(o.type==="directory"){if(!n?.recursive&&(await this.readdir(r)).length>0)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);let s=r==="/"?"/":`${r}/`;for(let i of[...this.data.keys()])i.startsWith(s)&&this.data.delete(i)}this.data.delete(r)}async readlink(t){let n=this.resolveParent(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async symlink(t,n){let r=hn(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParents(r),this.data.set(r,{type:"symlink",target:t,mode:40960,mtime:new Date})}};Gn();export{qo as Git,xa as MemoryFileSystem,vh as composeGitHooks,Hw as createGit,tr as findRepo,le as isRejection};
@@ -200,6 +200,15 @@ interface FileDiff {
200
200
  similarity?: number;
201
201
  hunks: DiffHunk[];
202
202
  }
203
+ /** Shared options for {@link diffCommits} and {@link formatDiff}. */
204
+ interface DiffOptions {
205
+ /** Only include files matching these paths (exact prefix match). */
206
+ paths?: string[];
207
+ /** Number of context lines around each change (default 3). */
208
+ contextLines?: number;
209
+ /** Enable rename detection (default true). */
210
+ renames?: boolean;
211
+ }
203
212
  /**
204
213
  * Produce structured, line-level diffs between two commits.
205
214
  *
@@ -217,14 +226,19 @@ interface FileDiff {
217
226
  * }
218
227
  * ```
219
228
  */
220
- declare function diffCommits(repo: GitRepo, base: string, head: string, options?: {
221
- /** Only include files matching these paths (exact prefix match). */
222
- paths?: string[];
223
- /** Number of context lines around each change (default 3). */
224
- contextLines?: number;
225
- /** Enable rename detection (default true). */
226
- renames?: boolean;
227
- }): Promise<FileDiff[]>;
229
+ declare function diffCommits(repo: GitRepo, base: string, head: string, options?: DiffOptions): Promise<FileDiff[]>;
230
+ /**
231
+ * Produce a unified diff (patch) string between two commits.
232
+ *
233
+ * Uses `formatUnifiedDiff` directly — the same formatter behind
234
+ * `git diff` so the output is byte-identical to CLI output
235
+ * and natively consumable by any unified-diff parser.
236
+ *
237
+ * ```ts
238
+ * const diff = await formatDiff(repo, "main~1", "main");
239
+ * ```
240
+ */
241
+ declare function formatDiff(repo: GitRepo, base: string, head: string, options?: DiffOptions): Promise<string>;
228
242
  /**
229
243
  * Walk the commit graph starting from one or more hashes, yielding
230
244
  * commits in reverse chronological order. Supports excluding commits
@@ -425,4 +439,4 @@ declare function readonlyRepo(repo: GitRepo): GitRepo;
425
439
  */
426
440
  declare function overlayRepo(repo: GitRepo): GitRepo;
427
441
 
428
- export { type BlameEntry, Commit, type CommitInfo, type CreateWorktreeOptions, type DiffHunk, type ExtractTreeResult, type FileDiff, type FlatTreeEntry, GitRepo, type GrepFileMatch, type GrepMatch, type GrepOptions, type HeadInfo, Identity, type MergeConflict, type MergeTreesResult, RefEntry, TreeDiffEntry, TreeEntry, type WorktreeResult, blame, branchNameFromRef, countAheadBehind, createSandboxWorktree, createWorktree, diffCommits, diffTrees, extractTree, findMergeBases, flattenTree, getChangedFiles, getNewCommits, grep, isAncestor, listBranches, listTags, mergeTrees, mergeTreesFromTreeHashes, overlayRepo, readBlob, readBlobText, readCommit, readFileAtCommit, readHead, readTree, readonlyRepo, resolveRef, tagNameFromRef, walkCommitHistory };
442
+ export { type BlameEntry, Commit, type CommitInfo, type CreateWorktreeOptions, type DiffHunk, type DiffOptions, type ExtractTreeResult, type FileDiff, type FlatTreeEntry, GitRepo, type GrepFileMatch, type GrepMatch, type GrepOptions, type HeadInfo, Identity, type MergeConflict, type MergeTreesResult, RefEntry, TreeDiffEntry, TreeEntry, type WorktreeResult, blame, branchNameFromRef, countAheadBehind, createSandboxWorktree, createWorktree, diffCommits, diffTrees, extractTree, findMergeBases, flattenTree, formatDiff, getChangedFiles, getNewCommits, grep, isAncestor, listBranches, listTags, mergeTrees, mergeTreesFromTreeHashes, overlayRepo, readBlob, readBlobText, readCommit, readFileAtCommit, readHead, readTree, readonlyRepo, resolveRef, tagNameFromRef, walkCommitHistory };
@@ -1,20 +1,28 @@
1
- var Ne=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var jt=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function Te(t){let e="";for(let n=0;n<20;n++)e+=jt[t[n]];return e}function Qe(t,e){let n="";for(let r=0;r<20;r++)n+=jt[t[e+r]];return n}function ye(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}var tr=new TextEncoder;function et(t){return typeof t=="string"?tr.encode(t):t}function nr(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(et(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=Ne(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(et(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(et(n)),e},async hex(){let n=0;for(let o of t)n+=o.byteLength;let r=new Uint8Array(n),s=0;for(let o of t)r.set(o,s),s+=o.byteLength;let i=await crypto.subtle.digest("SHA-1",r);return Te(new Uint8Array(i))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var vt=nr(),tt=vt;async function Be(t){return vt().update(t).hex()}var Z=Uint8Array,be=Uint16Array,rr=Int32Array,At=new Z([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),$t=new Z([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),sr=new Z([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Lt=(t,e)=>{let n=new be(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new rr(n[30]);for(let s=1;s<30;++s)for(let i=n[s];i<n[s+1];++i)r[i]=i-n[s]<<5|s;return{b:n,r}},{b:Mt}=Lt(At,2);Mt[28]=258;var{b:ir}=Lt($t,0),st=new be(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,st[t]=((e&65280)>>8|(e&255)<<8)>>1}var Se=(t,e,n)=>{let r=t.length,s=0,i=new be(e);for(;s<r;++s)t[s]&&++i[t[s]-1];let o=new be(e);for(s=1;s<e;++s)o[s]=o[s-1]+i[s-1]<<1;let a;if(n){a=new be(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let l=s<<4|t[s],f=e-t[s],u=o[t[s]-1]++<<f;for(let d=u|(1<<f)-1;u<=d;++u)a[st[u]>>c]=l}}else for(a=new be(r),s=0;s<r;++s)t[s]&&(a[s]=st[o[t[s]-1]++]>>15-t[s]);return a},Ce=new Z(288);for(let t=0;t<144;++t)Ce[t]=8;for(let t=144;t<256;++t)Ce[t]=9;for(let t=256;t<280;++t)Ce[t]=7;for(let t=280;t<288;++t)Ce[t]=8;var Dt=new Z(32);for(let t=0;t<32;++t)Dt[t]=5;var or=Se(Ce,9,1),ar=Se(Dt,5,1),nt=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},X=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},rt=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},Ht=t=>(t+7)/8|0,cr=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new Z(t.subarray(e,n))),ee=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},Ut=(t,e,n,r)=>{let s=t.length,i=r?r.length:0;if(!s||e.f&&!e.l)return n||new Z(0);let o=!n,a=o||e.i!=2,c=e.i;o&&(n=new Z(s*3));let l=R=>{let j=n.length;if(R>j){let A=new Z(Math.max(j*2,R));A.set(n),n=A}},f=e.f||0,u=e.p||0,d=e.b||0,h=e.l,m=e.d,g=e.m,p=e.n,b=s*8;do{if(!h){f=X(t,u,1);let O=X(t,u+1,3);if(u+=3,O)if(O==1)h=or,m=ar,g=9,p=5;else if(O==2){let w=X(t,u,31)+257,x=X(t,u+10,15)+4,S=w+X(t,u+5,31)+1;u+=14;let E=new Z(S),P=new Z(19);for(let y=0;y<x;++y)P[sr[y]]=X(t,u+y*3,7);u+=x*3;let T=nt(P),$=(1<<T)-1,D=Se(P,T,1);for(let y=0;y<S;){let k=D[X(t,u,$)];u+=k&15;let M=k>>4;if(M<16)E[y++]=M;else{let L=0,C=0;for(M==16?(C=3+X(t,u,3),u+=2,L=E[y-1]):M==17?(C=3+X(t,u,7),u+=3):M==18&&(C=11+X(t,u,127),u+=7);C--;)E[y++]=L}}let ae=E.subarray(0,w),I=E.subarray(w);g=nt(ae),p=nt(I),h=Se(ae,g,1),m=Se(I,p,1)}else ee(1);else{let w=Ht(u)+4,x=t[w-4]|t[w-3]<<8,S=w+x;if(S>s){c&&ee(0);break}a&&l(d+x),n.set(t.subarray(w,S),d),e.b=d+=x,e.p=u=S*8,e.f=f;continue}if(u>b){c&&ee(0);break}}a&&l(d+131072);let R=(1<<g)-1,j=(1<<p)-1,A=u;for(;;A=u){let O=h[rt(t,u)&R],w=O>>4;if(u+=O&15,u>b){c&&ee(0);break}if(O||ee(2),w<256)n[d++]=w;else if(w==256){A=u,h=null;break}else{let x=w-254;if(w>264){let $=w-257,D=At[$];x=X(t,u,(1<<D)-1)+Mt[$],u+=D}let S=m[rt(t,u)&j],E=S>>4;S||ee(3),u+=S&15;let P=ir[E];if(E>3){let $=$t[E];P+=rt(t,u)&(1<<$)-1,u+=$}if(u>b){c&&ee(0);break}a&&l(d+131072);let T=d+x;if(d<P){let $=i-P,D=Math.min(P,T);for($+d<0&&ee(3);d<D;++d)n[d]=r[$+d]}for(;d<T;++d)n[d]=n[d-P]}}e.l=h,e.p=A,e.b=d,e.f=f,h&&(f=1,e.m=g,e.d=m,e.n=p)}while(!f);return d!=n.length&&o?cr(n,0,d):n.subarray(0,d)},Nt=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&ee(0,"invalid zlib data"),t[1]&32&&ee(0,"zlib dictionaries are not supported"),2);function Bt(t){let e=Nt(t);return Ut(t.subarray(e,-4),{i:2})}function it(t){let e=Nt(t),n={i:2},r=Ut(t.subarray(e),n),s=Ht(n.p);return{result:r,bytesConsumed:e+s+4}}async function lr(){let t;if(!(typeof document<"u"))try{t=Ne(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=i=>{let o=t.inflateSync(i,{info:!0});return{result:new Uint8Array(o.buffer),bytesConsumed:o.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??it}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),i=s.writable.getWriter();return i.write(r),i.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Bt,inflateWithConsumed:it}}var fr=null;function ur(){return fr??=lr()}async function Gt(t,e){let n=await ur(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var Ft=1346454347,hr=2,dr=1,mr=2,pr=3,gr=4,Ge=6,at=7,yr={[dr]:"commit",[mr]:"tree",[pr]:"blob",[gr]:"tag"};async function Vt(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==Ft)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Ft.toString(16)})`);let s=n.getUint32(4);if(s!==hr)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let l=Qe(t,t.byteLength-20),f=tt();f.update(t.subarray(0,t.byteLength-20));let u=await f.hex();if(u!==l)throw new Error(`pack checksum mismatch: expected ${l}, computed ${u}`)}let i=n.getUint32(8),o=[],a=12;for(let l=0;l<i;l++){let f=await br(t,a);o.push(f),a=f.nextOffset}return(await wr(o,e)).map((l,f)=>({...l,offset:o[f].headerOffset,nextOffset:o[f].nextOffset}))}async function br(t,e){let n=e,r=t[e++],s=r>>4&7,i=r&15,o=4;for(;r&128;)r=t[e++],i|=(r&127)<<o,o+=7;let a,c;if(s===Ge){let u=t[e++];for(a=u&127;u&128;)a+=1,u=t[e++],a=(a<<7)+(u&127);a=n-a}else s===at&&(c=Qe(t,e),e+=20);let{result:l,bytesConsumed:f}=await Gt(t.subarray(e),i);return{headerOffset:n,typeNum:s,inflated:l,baseOffset:a,baseHash:c,nextOffset:e+f}}var _t=50;async function wr(t,e){let n=new Map;for(let i=0;i<t.length;i++)n.set(t[i].headerOffset,i);let r=new Array(t.length).fill(null);async function s(i,o=0){if(o>_t)throw new Error(`delta chain depth ${o} exceeds limit of ${_t}`);let a=r[i];if(a)return a;let c=t[i];if(c.typeNum!==Ge&&c.typeNum!==at){let h=yr[c.typeNum];if(!h)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:h,content:c.inflated,hash:await ot(h,c.inflated)};return r[i]=m,m}if(c.typeNum===Ge){let h=n.get(c.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(h,o+1),g=Wt(m.content,c.inflated),p={type:m.type,content:g,hash:await ot(m.type,g)};return r[i]=p,p}let l=await Ir(t,r,c.baseHash,s),f;if(l!==void 0)f=await s(l,o+1);else if(e){let h=await e(c.baseHash);h&&(f=h)}if(!f)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let u=Wt(f.content,c.inflated),d={type:f.type,content:u,hash:await ot(f.type,u)};return r[i]=d,d}for(let i=0;i<t.length;i++)await s(i);return r}async function Ir(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let i=t[s];if(i.typeNum!==Ge&&i.typeNum!==at&&(await r(s)).hash===n)return s}}function Wt(t,e){let n=0,{value:r,newPos:s}=zt(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:i,newPos:o}=zt(e,n);n=o;let a=new Uint8Array(i),c=0;for(;n<e.byteLength;){let l=e[n++];if(l&128){let f=0,u=0;l&1&&(f=e[n++]),l&2&&(f|=e[n++]<<8),l&4&&(f|=e[n++]<<16),l&8&&(f|=e[n++]<<24),l&16&&(u=e[n++]),l&32&&(u|=e[n++]<<8),l&64&&(u|=e[n++]<<16),u===0&&(u=65536),a.set(t.subarray(f,f+u),c),c+=u}else if(l>0)a.set(e.subarray(n,n+l),c),c+=l,n+=l;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==i)throw new Error(`Delta produced ${c} bytes, expected ${i}`);return a}function zt(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var Er=new TextEncoder;async function ot(t,e){let n=Er.encode(`${t} ${e.byteLength}\0`),r=tt();return r.update(n),r.update(e),r.hex()}function xr(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let o of r)o===""||o==="."||(o===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(o));let i=s.join("/");return e&&(i=`/${i}`),n&&i.length>1&&!i.endsWith("/")&&(i+="/"),i||(e?"/":n?"./":".")}function we(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":xr(e)}function Kt(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var Or=new TextEncoder,Hi=new TextDecoder;function Yt(t,e){let n=Or.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function je(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),i=t.slice(n+2),[o="0",a="+0000"]=i.split(" "),c=parseInt(o,10);return{name:r,email:s,timestamp:c,timezone:a}}function ve(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var Rr=new TextEncoder,Pr=new TextDecoder;function qt(t){let e=Pr.decode(t),n=e.indexOf(`
1
+ var Ne=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var At=(()=>{let t=new Array(256);for(let e=0;e<256;e++)t[e]=(e>>4).toString(16)+(e&15).toString(16);return t})();function Te(t){let e="";for(let n=0;n<20;n++)e+=At[t[n]];return e}function et(t,e){let n="";for(let r=0;r<20;r++)n+=At[t[e+r]];return n}function be(t){let e=new Uint8Array(20);for(let n=0;n<20;n++)e[n]=parseInt(t.slice(n*2,n*2+2),16);return e}var ir=new TextEncoder;function tt(t){return typeof t=="string"?ir.encode(t):t}function or(){if(typeof globalThis.Bun<"u")return()=>{let t=new Bun.CryptoHasher("sha1"),e={update(n){return t.update(tt(n)),e},hex:()=>Promise.resolve(t.digest("hex"))};return e};try{let t=Ne(["node","crypto"].join(":"));if(typeof t.createHash=="function")return()=>{let e=t.createHash("sha1"),n={update(r){return e.update(tt(r)),n},hex:()=>Promise.resolve(e.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let t=[],e={update(n){return t.push(tt(n)),e},async hex(){let n=0;for(let i of t)n+=i.byteLength;let r=new Uint8Array(n),s=0;for(let i of t)r.set(i,s),s+=i.byteLength;let o=await crypto.subtle.digest("SHA-1",r);return Te(new Uint8Array(o))}};return e};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}var $t=or(),nt=$t;async function Be(t){return $t().update(t).hex()}var ee=Uint8Array,we=Uint16Array,ar=Int32Array,Lt=new ee([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mt=new ee([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),cr=new ee([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ht=(t,e)=>{let n=new we(31);for(let s=0;s<31;++s)n[s]=e+=1<<t[s-1];let r=new ar(n[30]);for(let s=1;s<30;++s)for(let o=n[s];o<n[s+1];++o)r[o]=o-n[s]<<5|s;return{b:n,r}},{b:Dt}=Ht(Lt,2);Dt[28]=258;var{b:lr}=Ht(Mt,0),it=new we(32768);for(let t=0;t<32768;++t){let e=(t&43690)>>1|(t&21845)<<1;e=(e&52428)>>2|(e&13107)<<2,e=(e&61680)>>4|(e&3855)<<4,it[t]=((e&65280)>>8|(e&255)<<8)>>1}var Ce=(t,e,n)=>{let r=t.length,s=0,o=new we(e);for(;s<r;++s)t[s]&&++o[t[s]-1];let i=new we(e);for(s=1;s<e;++s)i[s]=i[s-1]+o[s-1]<<1;let a;if(n){a=new we(1<<e);let c=15-e;for(s=0;s<r;++s)if(t[s]){let l=s<<4|t[s],f=e-t[s],u=i[t[s]-1]++<<f;for(let d=u|(1<<f)-1;u<=d;++u)a[it[u]>>c]=l}}else for(a=new we(r),s=0;s<r;++s)t[s]&&(a[s]=it[i[t[s]-1]++]>>15-t[s]);return a},Se=new ee(288);for(let t=0;t<144;++t)Se[t]=8;for(let t=144;t<256;++t)Se[t]=9;for(let t=256;t<280;++t)Se[t]=7;for(let t=280;t<288;++t)Se[t]=8;var Ut=new ee(32);for(let t=0;t<32;++t)Ut[t]=5;var fr=Ce(Se,9,1),ur=Ce(Ut,5,1),rt=t=>{let e=t[0];for(let n=1;n<t.length;++n)t[n]>e&&(e=t[n]);return e},Q=(t,e,n)=>{let r=e/8|0;return(t[r]|t[r+1]<<8)>>(e&7)&n},st=(t,e)=>{let n=e/8|0;return(t[n]|t[n+1]<<8|t[n+2]<<16)>>(e&7)},Nt=t=>(t+7)/8|0,hr=(t,e,n)=>((e==null||e<0)&&(e=0),(n==null||n>t.length)&&(n=t.length),new ee(t.subarray(e,n))),re=(t,e)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(e||n[t]||"unknown inflate error")},Bt=(t,e,n,r)=>{let s=t.length,o=r?r.length:0;if(!s||e.f&&!e.l)return n||new ee(0);let i=!n,a=i||e.i!=2,c=e.i;i&&(n=new ee(s*3));let l=k=>{let v=n.length;if(k>v){let j=new ee(Math.max(v*2,k));j.set(n),n=j}},f=e.f||0,u=e.p||0,d=e.b||0,h=e.l,m=e.d,g=e.m,p=e.n,b=s*8;do{if(!h){f=Q(t,u,1);let R=Q(t,u+1,3);if(u+=3,R)if(R==1)h=fr,m=ur,g=9,p=5;else if(R==2){let I=Q(t,u,31)+257,w=Q(t,u+10,15)+4,C=I+Q(t,u+5,31)+1;u+=14;let x=new ee(C),P=new ee(19);for(let y=0;y<w;++y)P[cr[y]]=Q(t,u+y*3,7);u+=w*3;let O=rt(P),$=(1<<O)-1,H=Ce(P,O,1);for(let y=0;y<C;){let T=H[Q(t,u,$)];u+=T&15;let L=T>>4;if(L<16)x[y++]=L;else{let M=0,S=0;for(L==16?(S=3+Q(t,u,3),u+=2,M=x[y-1]):L==17?(S=3+Q(t,u,7),u+=3):L==18&&(S=11+Q(t,u,127),u+=7);S--;)x[y++]=M}}let J=x.subarray(0,I),E=x.subarray(I);g=rt(J),p=rt(E),h=Ce(J,g,1),m=Ce(E,p,1)}else re(1);else{let I=Nt(u)+4,w=t[I-4]|t[I-3]<<8,C=I+w;if(C>s){c&&re(0);break}a&&l(d+w),n.set(t.subarray(I,C),d),e.b=d+=w,e.p=u=C*8,e.f=f;continue}if(u>b){c&&re(0);break}}a&&l(d+131072);let k=(1<<g)-1,v=(1<<p)-1,j=u;for(;;j=u){let R=h[st(t,u)&k],I=R>>4;if(u+=R&15,u>b){c&&re(0);break}if(R||re(2),I<256)n[d++]=I;else if(I==256){j=u,h=null;break}else{let w=I-254;if(I>264){let $=I-257,H=Lt[$];w=Q(t,u,(1<<H)-1)+Dt[$],u+=H}let C=m[st(t,u)&v],x=C>>4;C||re(3),u+=C&15;let P=lr[x];if(x>3){let $=Mt[x];P+=st(t,u)&(1<<$)-1,u+=$}if(u>b){c&&re(0);break}a&&l(d+131072);let O=d+w;if(d<P){let $=o-P,H=Math.min(P,O);for($+d<0&&re(3);d<H;++d)n[d]=r[$+d]}for(;d<O;++d)n[d]=n[d-P]}}e.l=h,e.p=j,e.b=d,e.f=f,h&&(f=1,e.m=g,e.d=m,e.n=p)}while(!f);return d!=n.length&&i?hr(n,0,d):n.subarray(0,d)},Gt=t=>(((t[0]&15)!=8||t[0]>>4>7||(t[0]<<8|t[1])%31)&&re(0,"invalid zlib data"),t[1]&32&&re(0,"zlib dictionaries are not supported"),2);function Ft(t){let e=Gt(t);return Bt(t.subarray(e,-4),{i:2})}function ot(t){let e=Gt(t),n={i:2},r=Bt(t.subarray(e),n),s=Nt(n.p);return{result:r,bytesConsumed:e+s+4}}async function dr(){let t;if(!(typeof document<"u"))try{t=Ne(["node","zlib"].join(":"))}catch{try{t=await import(["node","zlib"].join(":"))}catch{}}if(t&&typeof t.deflateSync=="function"&&typeof t.inflateSync=="function"){let r=null;try{let s=t.inflateSync(t.deflateSync(Buffer.from("x")),{info:!0});s?.engine&&typeof s.engine.bytesWritten=="number"&&(r=o=>{let i=t.inflateSync(o,{info:!0});return{result:new Uint8Array(i.buffer),bytesConsumed:i.engine.bytesWritten}})}catch{}return{deflateSync:s=>new Uint8Array(t.deflateSync(s)),inflateSync:s=>new Uint8Array(t.inflateSync(s)),inflateWithConsumed:r??ot}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let s=new CompressionStream("deflate"),o=s.writable.getWriter();return o.write(r),o.close(),new Uint8Array(await new Response(s.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Ft,inflateWithConsumed:ot}}var mr=null;function pr(){return mr??=dr()}async function _t(t,e){let n=await pr(),{result:r,bytesConsumed:s}=n.inflateWithConsumed(t);if(r.byteLength!==e)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${e}`);return{result:r,bytesConsumed:s}}var Wt=1346454347,gr=2,yr=1,br=2,wr=3,Ir=4,Ge=6,ct=7,Er={[yr]:"commit",[br]:"tree",[wr]:"blob",[Ir]:"tag"};async function Yt(t,e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==Wt)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Wt.toString(16)})`);let s=n.getUint32(4);if(s!==gr)throw new Error(`Unsupported pack version: ${s}`);if(t.byteLength>=32){let l=et(t,t.byteLength-20),f=nt();f.update(t.subarray(0,t.byteLength-20));let u=await f.hex();if(u!==l)throw new Error(`pack checksum mismatch: expected ${l}, computed ${u}`)}let o=n.getUint32(8),i=[],a=12;for(let l=0;l<o;l++){let f=await xr(t,a);i.push(f),a=f.nextOffset}return(await Or(i,e)).map((l,f)=>({...l,offset:i[f].headerOffset,nextOffset:i[f].nextOffset}))}async function xr(t,e){let n=e,r=t[e++],s=r>>4&7,o=r&15,i=4;for(;r&128;)r=t[e++],o|=(r&127)<<i,i+=7;let a,c;if(s===Ge){let u=t[e++];for(a=u&127;u&128;)a+=1,u=t[e++],a=(a<<7)+(u&127);a=n-a}else s===ct&&(c=et(t,e),e+=20);let{result:l,bytesConsumed:f}=await _t(t.subarray(e),o);return{headerOffset:n,typeNum:s,inflated:l,baseOffset:a,baseHash:c,nextOffset:e+f}}var zt=50;async function Or(t,e){let n=new Map;for(let o=0;o<t.length;o++)n.set(t[o].headerOffset,o);let r=new Array(t.length).fill(null);async function s(o,i=0){if(i>zt)throw new Error(`delta chain depth ${i} exceeds limit of ${zt}`);let a=r[o];if(a)return a;let c=t[o];if(c.typeNum!==Ge&&c.typeNum!==ct){let h=Er[c.typeNum];if(!h)throw new Error(`Unknown object type: ${c.typeNum}`);let m={type:h,content:c.inflated,hash:await at(h,c.inflated)};return r[o]=m,m}if(c.typeNum===Ge){let h=n.get(c.baseOffset);if(h===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let m=await s(h,i+1),g=Vt(m.content,c.inflated),p={type:m.type,content:g,hash:await at(m.type,g)};return r[o]=p,p}let l=await Rr(t,r,c.baseHash,s),f;if(l!==void 0)f=await s(l,i+1);else if(e){let h=await e(c.baseHash);h&&(f=h)}if(!f)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let u=Vt(f.content,c.inflated),d={type:f.type,content:u,hash:await at(f.type,u)};return r[o]=d,d}for(let o=0;o<t.length;o++)await s(o);return r}async function Rr(t,e,n,r){for(let s=0;s<e.length;s++)if(e[s]?.hash===n)return s;for(let s=0;s<t.length;s++){let o=t[s];if(o.typeNum!==Ge&&o.typeNum!==ct&&(await r(s)).hash===n)return s}}function Vt(t,e){let n=0,{value:r,newPos:s}=Kt(e,n);if(n=s,r!==t.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${t.byteLength}`);let{value:o,newPos:i}=Kt(e,n);n=i;let a=new Uint8Array(o),c=0;for(;n<e.byteLength;){let l=e[n++];if(l&128){let f=0,u=0;l&1&&(f=e[n++]),l&2&&(f|=e[n++]<<8),l&4&&(f|=e[n++]<<16),l&8&&(f|=e[n++]<<24),l&16&&(u=e[n++]),l&32&&(u|=e[n++]<<8),l&64&&(u|=e[n++]<<16),u===0&&(u=65536),a.set(t.subarray(f,f+u),c),c+=u}else if(l>0)a.set(e.subarray(n,n+l),c),c+=l,n+=l;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==o)throw new Error(`Delta produced ${c} bytes, expected ${o}`);return a}function Kt(t,e){let n=0,r=0,s;do s=t[e++],n|=(s&127)<<r,r+=7;while(s&128);return{value:n,newPos:e}}var Pr=new TextEncoder;async function at(t,e){let n=Pr.encode(`${t} ${e.byteLength}\0`),r=nt();return r.update(n),r.update(e),r.hex()}function kr(t){if(t==="")return".";if(t==="/")return"/";let e=t.charCodeAt(0)===47,n=t.charCodeAt(t.length-1)===47,r=t.split("/"),s=[];for(let i of r)i===""||i==="."||(i===".."?e||s.length>0&&s[s.length-1]!==".."?s.pop():s.push(".."):s.push(i));let o=s.join("/");return e&&(o=`/${o}`),n&&o.length>1&&!o.endsWith("/")&&(o+="/"),o||(e?"/":n?"./":".")}function Ie(...t){if(t.length===0)return".";let e=t.filter(n=>n!=="").join("/");return e===""?".":kr(e)}function qt(t){if(t==="")return".";if(t==="/")return"/";let e=t.length;for(;e>1&&t.charCodeAt(e-1)===47;)e--;let n=t.slice(0,e),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}var Tr=new TextEncoder,Wi=new TextDecoder;function Xt(t,e){let n=Tr.encode(`${t} ${e.byteLength}\0`),r=new Uint8Array(n.byteLength+e.byteLength);return r.set(n),r.set(e,n.byteLength),r}function ve(t){let e=t.indexOf("<"),n=t.indexOf(">");if(e===-1||n===-1)throw new Error(`Malformed identity line: "${t}"`);let r=t.slice(0,e).trimEnd(),s=t.slice(e+1,n),o=t.slice(n+2),[i="0",a="+0000"]=o.split(" "),c=parseInt(i,10);return{name:r,email:s,timestamp:c,timezone:a}}function je(t){return`${t.name} <${t.email}> ${t.timestamp} ${t.timezone}`}var Cr=new TextEncoder,Sr=new TextDecoder;function Zt(t){let e=Sr.decode(t),n=e.indexOf(`
2
2
 
3
- `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o=[],a,c;for(let l of r.split(`
4
- `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"tree":i=d;break;case"parent":o.push(d);break;case"author":a=je(d);break;case"committer":c=je(d);break}}if(!i)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:i,parents:o,author:a,committer:c,message:s}}function Ae(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${ve(t.author)}`),e.push(`committer ${ve(t.committer)}`),e.push(""),e.push(t.message),Rr.encode(e.join(`
5
- `))}var kr=new TextEncoder,Tr=new TextDecoder;function Xt(t){let e=Tr.decode(t),n=e.indexOf(`
3
+ `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),o="",i=[],a,c;for(let l of r.split(`
4
+ `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"tree":o=d;break;case"parent":i.push(d);break;case"author":a=ve(d);break;case"committer":c=ve(d);break}}if(!o)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:o,parents:i,author:a,committer:c,message:s}}function Ae(t){let e=[];e.push(`tree ${t.tree}`);for(let n of t.parents)e.push(`parent ${n}`);return e.push(`author ${je(t.author)}`),e.push(`committer ${je(t.committer)}`),e.push(""),e.push(t.message),Cr.encode(e.join(`
5
+ `))}var vr=new TextEncoder,jr=new TextDecoder;function Jt(t){let e=jr.decode(t),n=e.indexOf(`
6
6
 
7
- `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),i="",o="commit",a="",c;for(let l of r.split(`
8
- `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"object":i=d;break;case"type":o=d;break;case"tag":a=d;break;case"tagger":c=je(d);break}}if(!i)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:i,objectType:o,name:a,tagger:c,message:s}}function Zt(t){let e=[];return e.push(`object ${t.object}`),e.push(`type ${t.objectType}`),e.push(`tag ${t.name}`),e.push(`tagger ${ve(t.tagger)}`),e.push(""),e.push(t.message),kr.encode(e.join(`
9
- `))}async function B(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function F(t,e){return t.objectStore.read(e)}async function Jt(t,e){return t.objectStore.exists(e)}async function Qt(t,e){return t.objectStore.findByPrefix(e)}function ne(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var Sr=new TextDecoder;async function H(t,e){let n=await F(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return Sr.decode(n.content)}async function re(t,e){let n=await F(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function v(t,e){let n=await F(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return qt(n.content)}async function $e(t,e){let n=e;for(let r=0;r<100;r++){let s=await F(t,n);if(s.type==="commit")return n;if(s.type==="tag"){n=Xt(s.content).object;continue}throw new Error(`Cannot peel ${s.type} object ${e} to commit`)}throw new Error(`Tag chain too deep for ${e}`)}var Cr=new TextEncoder,en=new TextDecoder,jr=new Set(["100644","100755","040000","120000","160000"]);function vr(t){return t.length===4&&t.toLowerCase()===".git"}function Ar(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(vr(t))throw new Error(`invalid tree entry: '${t}'`);if(!jr.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function se(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=en.decode(t.subarray(n,r)),i=t.indexOf(0,r+1);if(i===-1)break;let o=en.decode(t.subarray(r+1,i)),a=t.subarray(i+1,i+21),c=Te(a),l=s.padStart(6,"0");Ar(o,l),e.push({mode:l,name:o,hash:c}),n=i+21}return{type:"tree",entries:e}}function Le(t){let e=[];for(let i of t.entries){let o=i.mode.replace(/^0+/,""),a=Cr.encode(`${o} ${i.name}\0`),c=ye(i.hash);e.push(a),e.push(c)}let n=e.reduce((i,o)=>i+o.byteLength,0),r=new Uint8Array(n),s=0;for(let i of e)r.set(i,s),s+=i.byteLength;return r}var _={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function tn(t){return typeof t=="string"?{type:"direct",hash:t}:t}var $r=10;async function Lr(t,e){return t.refStore.readRef(e)}async function J(t,e){let n=e;for(let r=0;r<$r;r++){let s=await Lr(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function ct(t,e="refs"){return t.refStore.listRefs(e)}function lt(t){return t.replace("refs/heads/","")}function nn(t){return t.replace("refs/tags/","")}function rn(t){return t.length===4&&t.toLowerCase()===".git"}function sn(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||rn(n))return!1;return!0}function on(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function an(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||rn(n))return!1;return!0}var Mr=1145655875,Dr=2;async function Fe(t,e){let n=we(t.gitDir,"index"),r=await Hr(e);await t.fs.writeFile(n,r)}function cn(t){let e=[...t].sort(ln);return{version:Dr,entries:e}}function ce(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function Hr(t){let e=new TextEncoder,n=[...t.entries].sort(ln),r=[],s=12;for(let d of n){let h=e.encode(d.path);r.push(h);let m=62+h.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let i=new ArrayBuffer(s),o=new Uint8Array(i),a=new DataView(i),c=0;a.setUint32(c,Mr),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let h=n[d],m=r[d],g=c;a.setUint32(c,h.stat.ctimeSeconds),a.setUint32(c+4,h.stat.ctimeNanoseconds),a.setUint32(c+8,h.stat.mtimeSeconds),a.setUint32(c+12,h.stat.mtimeNanoseconds),a.setUint32(c+16,h.stat.dev),a.setUint32(c+20,h.stat.ino),a.setUint32(c+24,h.mode),a.setUint32(c+28,h.stat.uid),a.setUint32(c+32,h.stat.gid),a.setUint32(c+36,h.stat.size),c+=40;let p=ye(h.hash);o.set(p,c),c+=20;let b=Math.min(m.byteLength,4095),R=(h.stage&3)<<12|b;a.setUint16(c,R),c+=2,o.set(m,c),c+=m.byteLength,o[c]=0,c+=1;let j=62+m.byteLength+1,A=Math.ceil(j/8)*8;c=g+A}let l=o.subarray(0,c),f=await Be(l),u=ye(f);return o.set(u,c),o}function ln(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}function Ur(t){let e=[],n=t.length;for(;n>0;){let i=t.slice(0,n).match(/^(.+?)~(\d*)$/);if(i&&i[1]!==void 0&&i[2]!==void 0){let c=i[2]===""?1:parseInt(i[2],10);e.unshift({type:"tilde",n:c}),n=i[1].length;continue}let o=t.slice(0,n).match(/^(.+?)\^{([^}]*)}$/);if(o&&o[1]!==void 0&&o[2]!==void 0){e.unshift({type:"peel",target:o[2]}),n=o[1].length;continue}let a=t.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let c=a[2]===""?1:parseInt(a[2],10);e.unshift({type:"caret",n:c}),n=a[1].length;continue}break}let r=t.slice(0,n),s=r.match(/^(.+?)@\{(\d+)\}$/);return s&&s[1]!==void 0&&s[2]!==void 0?{base:s[1],reflogIndex:parseInt(s[2],10),suffixes:e}:{base:r,suffixes:e}}var Nr=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Br(t,e){let n=await Qt(t,e);if(n.length===0)return null;if(n.length>1)throw new ft(e);return n[0]}var ft=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function Gr(t,e){if(e==="HEAD"||e==="@")return J(t,"HEAD");if(Nr.includes(e))return J(t,e);if(/^[0-9a-f]{40}$/.test(e))return await Jt(t,e)?e:null;if(/^[0-9a-f]{4,39}$/.test(e)){let i=await Br(t,e);if(i)return i}if(e.startsWith("refs/")){let i=await J(t,e);if(i)return i}let n=await J(t,`refs/heads/${e}`);if(n)return n;let r=await J(t,`refs/tags/${e}`);if(r)return r;let s=await J(t,`refs/remotes/${e}`);return s||null}async function Fr(t,e,n){if(n===""||n==="commit")try{return await $e(t,e)}catch{return null}if(n==="tree"){let s;try{s=await $e(t,e)}catch{return null}return(await v(t,s)).tree}return(await F(t,e)).type!==n?null:e}async function _r(t,e,n){let r=e;n.some(i=>i.type==="tilde"||i.type==="caret")&&(r=await $e(t,r));for(let i of n)if(i.type==="peel"){if(!r)return null;r=await Fr(t,r,i.target)}else if(i.type==="tilde")for(let o=0;o<i.n;o++){if(!r)return null;let a=await v(t,r);if(a.parents.length===0||(r=a.parents[0]??null,!r))return null}else{if(i.n===0)continue;if(!r)return null;let o=await v(t,r);if(i.n>o.parents.length||(r=o.parents[i.n-1]??null,!r))return null}return r}async function _e(t,e){let{base:n,reflogIndex:r,suffixes:s}=Ur(e);if(r!==void 0)return null;let i=await Gr(t,n);return i?_r(t,i,s):null}var io=new TextEncoder;function ie(t){return typeof t=="string"?t==="120000":t===40960}function fn(t){return{stdout:"",stderr:`fatal: ${t}
10
- `,exitCode:128}}var ao=fn("not a git repository (or any of the parent directories): .git"),co=fn("this operation must be run in a work tree");function Me(t,e){return t<e?-1:t>e?1:0}async function ut(t,e){return un(t,e,"")}async function un(t,e,n){let r=[],s=new Map;for(let o of e){let a=n?o.path.slice(n.length+1):o.path,c=a.indexOf("/");if(c===-1)r.push({mode:Wr(o.mode),name:a,hash:o.hash});else{let l=a.slice(0,c),f=s.get(l);f||(f=[],s.set(l,f)),f.push(o)}}for(let[o,a]of s){let c=n?`${n}/${o}`:o,l=await un(t,a,c);r.push({mode:_.DIRECTORY,name:o,hash:l})}r.sort((o,a)=>{let c=o.mode===_.DIRECTORY?`${o.name}/`:o.name,l=a.mode===_.DIRECTORY?`${a.name}/`:a.name;return c<l?-1:c>l?1:0});let i=Le({type:"tree",entries:r});return B(t,"tree",i)}async function Q(t,e,n=""){let r=await F(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=se(r.content),i=[];for(let o of s.entries){let a=n?`${n}/${o.name}`:o.name;if(o.mode===_.DIRECTORY){let c=await Q(t,o.hash,a);i.push(...c)}else i.push({path:a,mode:o.mode,hash:o.hash})}return i}async function le(t,e){if(!e)return new Map;let n=await Q(t,e);return new Map(n.map(r=>[r.path,r]))}async function oe(t,e,n){let r=await le(t,e),s=await le(t,n),i=[];for(let[o,a]of r){let c=s.get(o);c?(a.hash!==c.hash||a.mode!==c.mode)&&i.push({path:o,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):i.push({path:o,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[o,a]of s)r.has(o)||i.push({path:o,status:"added",newHash:a.hash,newMode:a.mode});return i.sort((o,a)=>Me(o.path,a.path))}function Wr(t){return t.toString(8).padStart(6,"0")}function zr(t){let e=Math.min(t.length,8e3),n=0;for(let r=0;r<e;r++)t.charCodeAt(r)===0&&n++;return n>e*.01}function hn(t,e,n,r){if(zr(t)){let o=e.some(a=>a.test(t));return{matches:[],binary:o}}let s=t.split(`
11
- `);if(s.length>0&&s[s.length-1]===""&&s.pop(),n&&e.length>1&&!e.every(a=>s.some(c=>a.test(c))))return{matches:[],binary:!1};let i=[];for(let o=0;o<s.length;o++){let a=s[o],c=e.some(l=>l.test(a));(r?!c:c)&&i.push({lineNo:o+1,line:a})}return{matches:i,binary:!1}}function Vr(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function dn(t,e){let n=e?.fixed?Vr(t):t;e?.wordRegexp&&(n=`\\b${n}\\b`);let r=e?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}async function Kr(t,e){return J(t,e)}async function Yr(t){return ct(t,"refs/heads")}async function qr(t){return ct(t,"refs/tags")}async function Xr(t){let e=await t.refStore.readRef("HEAD");if(!e)return{branch:null,ref:null,hash:null};if(e.type==="symbolic"){let n=await t.refStore.readRef(e.target),r=n?.type==="direct"?n.hash:null;return{branch:e.target.startsWith("refs/heads/")?lt(e.target):null,ref:e.target,hash:r}}return{branch:null,ref:null,hash:e.hash}}async function Zr(t,e){return v(t,e)}async function Jr(t,e){return re(t,e)}async function Qr(t,e){return H(t,e)}async function es(t,e){let n=await F(t,e);if(n.type!=="tree")throw new Error(`Expected tree object, got ${n.type}`);return se(n.content).entries}async function ts(t,e,n){let r=await v(t,e),i=(await Q(t,r.tree)).find(o=>o.path===n);return i?H(t,i.hash):null}function ns(t){let e=0;for(let n=0;n<t.length;n++)t[n]==="/"&&e++;return e}function rs(t,e){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\0").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\0/g,".*");return new RegExp(`^${n}$`).test(e)}async function ss(t,e,n,r){let s=[];for(let m of n)if(m instanceof RegExp)s.push(m);else{let g=dn(m,{fixed:r?.fixed,ignoreCase:r?.ignoreCase,wordRegexp:r?.wordRegexp});if(!g)throw new Error(`Invalid pattern: ${m}`);s.push(g)}let i=await v(t,e),a=(await Q(t,i.tree)).filter(m=>!m.mode.startsWith("120")).sort((m,g)=>m.path<g.path?-1:m.path>g.path?1:0),c=r?.allMatch??!1,l=r?.invert??!1,f=r?.maxCount,u=r?.maxDepth,d=r?.paths,h=[];for(let m of a){if(u!==void 0&&ns(m.path)>u||d&&!d.some(R=>rs(R,m.path)))continue;let g=await H(t,m.hash),p=hn(g,s,c,l);if(p.binary){h.push({path:m.path,matches:[],binary:!0});continue}if(p.matches.length===0)continue;let b=f!==void 0?p.matches.slice(0,f):p.matches;h.push({path:m.path,matches:b,binary:!1})}return h}function te(t){if(t.length===0)return[];let e=t.split(`
12
- `);return e[e.length-1]===""&&e.pop(),e}var is=4,mn=1024,We=100,Ke=0,ze=1,Ie=2;function dt(t){let e=1;for(;e*e<t;)e++;return e}function os(t,e){let n=new Map,r=[],s=new Array(t.length),i=new Array(e.length);for(let o=0;o<t.length;o++){let a=t[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[o]=c}for(let o=0;o<e.length;o++){let a=e[o],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,i[o]=c}return{classes1:s,classes2:i,classInfo:r}}function as(t,e,n,r){let s=0,i=Math.min(e,r);for(;s<i&&t[s]===n[s];)s++;let o=s,a=0,c=i-o;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:o,dend1:e-a-1,dend2:r-a-1}}function pn(t,e,n,r){e-n>We&&(n=e-We),r-e>We&&(r=e+We);let s=0,i=1;for(let c=1;e-c>=n;c++){let l=t[e-c];if(l===Ke)s++;else if(l===Ie)i++;else break}if(s===0)return!1;let o=0,a=1;for(let c=1;e+c<=r;c++){let l=t[e+c];if(l===Ke)o++;else if(l===Ie)a++;else break}return o===0?!1:(o+=s,a+=i,a*is<a+o)}function cs(t,e,n,r,s,i,o,a,c,l){let f=new Uint8Array(e),u=new Uint8Array(r),d=Math.min(dt(e),mn);for(let p=i;p<=o;p++){let b=s[t[p]].len2;b===0?f[p]=Ke:b>=d?f[p]=Ie:f[p]=ze}let h=Math.min(dt(r),mn);for(let p=i;p<=a;p++){let b=s[n[p]].len1;b===0?u[p]=Ke:b>=h?u[p]=Ie:u[p]=ze}let m=[];for(let p=i;p<=o;p++)f[p]===ze||f[p]===Ie&&!pn(f,p,i,o)?m.push(p):c[p]=1;let g=[];for(let p=i;p<=a;p++)u[p]===ze||u[p]===Ie&&!pn(u,p,i,a)?g.push(p):l[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:g,nreff2:g.length}}var fe=20,gn=4,ls=256,fs=256,Ve=2147483647;function z(t,e){return t[e]??0}function us(t,e,n,r,s,i,o,a,c,l){let f=e-i,u=n-s,d=e-s,h=n-i,m=d-h&1,g=d,p=d,b=h,R=h;o[d]=e,a[h]=n;for(let j=1;;j++){let A=!1;g>f?o[--g-1]=-1:++g,p<u?o[++p+1]=-1:--p;for(let O=p;O>=g;O-=2){let w;z(o,O-1)>=z(o,O+1)?w=z(o,O-1)+1:w=z(o,O+1);let x=w,S=w-O;for(;w<n&&S<i&&t[w]===r[S];)w++,S++;if(w-x>fe&&(A=!0),o[O]=w,m&&b<=O&&O<=R&&z(a,O)<=w)return{i1:w,i2:S,minLo:!0,minHi:!0}}b>f?a[--b-1]=Ve:++b,R<u?a[++R+1]=Ve:--R;for(let O=R;O>=b;O-=2){let w;z(a,O-1)<z(a,O+1)?w=z(a,O-1):w=z(a,O+1)-1;let x=w,S=w-O;for(;w>e&&S>s&&t[w-1]===r[S-1];)w--,S--;if(x-w>fe&&(A=!0),a[O]=w,!m&&g<=O&&O<=p&&w<=z(o,O))return{i1:w,i2:S,minLo:!0,minHi:!0}}if(!c){if(A&&j>ls){let O=0,w=null;for(let x=p;x>=g;x-=2){let S=x>d?x-d:d-x,E=z(o,x),P=E-x,T=E-e+(P-s)-S;if(T>gn*j&&T>O&&e+fe<=E&&E<n&&s+fe<=P&&P<i){let $=!0;for(let D=1;D<=fe;D++)if(t[E-D]!==r[P-D]){$=!1;break}$&&(O=T,w={i1:E,i2:P,minLo:!0,minHi:!1})}}if(w)return w;O=0,w=null;for(let x=R;x>=b;x-=2){let S=x>h?x-h:h-x,E=z(a,x),P=E-x,T=n-E+(i-P)-S;if(T>gn*j&&T>O&&e<E&&E<=n-fe&&s<P&&P<=i-fe){let $=!0;for(let D=0;D<fe;D++)if(t[E+D]!==r[P+D]){$=!1;break}$&&(O=T,w={i1:E,i2:P,minLo:!1,minHi:!0})}}if(w)return w}if(j>=l){let O=-1,w=-1;for(let E=p;E>=g;E-=2){let P=Math.min(z(o,E),n),T=P-E;i<T&&(P=i+E,T=i),O<P+T&&(O=P+T,w=P)}let x=Ve,S=Ve;for(let E=R;E>=b;E-=2){let P=Math.max(e,z(a,E)),T=P-E;T<s&&(P=s+E,T=s),P+T<x&&(x=P+T,S=P)}return n+i-x<O-(e+s)?{i1:w,i2:O-w,minLo:!0,minHi:!1}:{i1:S,i2:x-S,minLo:!1,minHi:!0}}}}}function mt(t,e,n,r,s,i,o,a,c,l,f,u,d,h){for(;e<n&&s<i&&t[e]===r[s];)e++,s++;for(;e<n&&s<i&&t[n-1]===r[i-1];)n--,i--;if(e===n)for(let m=s;m<i;m++)a[l[m]]=1;else if(s===i)for(let m=e;m<n;m++)o[c[m]]=1;else{let m=us(t,e,n,r,s,i,f,u,d,h);mt(t,e,m.i1,r,s,m.i2,o,a,c,l,f,u,m.minLo,h),mt(t,m.i1,n,r,m.i2,i,o,a,c,l,f,u,m.minHi,h)}}function hs(t,e,n,r){let s=[],i=0,o=0,a=1,c=1;for(;i<t.length||o<e.length;){if(i<t.length&&o<e.length&&!n[i]&&!r[o]){s.push({type:"keep",line:t[i]??"",oldLineNo:a++,newLineNo:c++}),i++,o++;continue}for(;i<t.length&&n[i];)s.push({type:"delete",line:t[i]??"",oldLineNo:a++,newLineNo:0}),i++;for(;o<e.length&&r[o];)s.push({type:"insert",line:e[o]??"",oldLineNo:0,newLineNo:c++}),o++}return s}var yn=200,bn=20,wn=100,ds=1,ms=21,ps=-30,gs=6,ys=-4,bs=10,ws=24,Is=17,Es=23,xs=17,Os=60;function ht(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=yn)return yn}return-1}function In(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=ht(t[n]));for(let s=n-1;s>=0&&(r.preIndent=ht(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===bn){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=ht(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===bn){r.postIndent=0;break}return r}function En(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=ds),t.endOfFile&&(e.penalty+=ms);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=ps*r,e.penalty+=gs*n;let s=t.indent!==-1?t.indent:t.postIndent,i=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=i?bs:ys:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=i?Is:ws:e.penalty+=i?xs:Es))}function Rs(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return Os*n+(t.penalty-e.penalty)}function xn(t,e,n,r,s,i){let o=0,a=0;for(;t[a];)a++;let c=0,l=0;for(;s[l];)l++;let f=(u,d)=>e[u]===e[d];for(;;){if(a!==o){let u,d,h;do{for(u=a-o,d=-1;o>0&&f(o-1,a-1);){for(t[--o]=1,t[--a]=0;t[o-1];)o--;if(c===0)break;for(l=c-1,c=l;s[c-1];c--);}for(h=a,l>c&&(d=a);!(a>=r||!f(o,a));){for(t[o++]=0,t[a++]=1;t[a];)a++;if(l>=i)break;for(c=l+1,l=c;s[l];l++);l>c&&(d=a)}}while(u!==a-o);if(a!==h)if(d!==-1)for(;l===c;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(l=c-1,c=l;s[c-1];c--);}else{let m=-1,g={effectiveIndent:0,penalty:0},p=h;for(a-u-1>p&&(p=a-u-1),a-wn>p&&(p=a-wn);p<=a;p++){let b={effectiveIndent:0,penalty:0},R=In(n,r,p);En(R,b);let j=In(n,r,p-u);En(j,b),(m===-1||Rs(b,g)<=0)&&(g={effectiveIndent:b.effectiveIndent,penalty:b.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--o]=1;t[o-1];)o--;for(l=c-1,c=l;s[c-1];c--);}}}if(a>=r)break;for(o=a+1,a=o;t[a];a++);if(l>=i)break;for(c=l+1,l=c;s[l];l++);}}function pt(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),i=new Uint8Array(r);if(n>0&&r>0){let{classes1:o,classes2:a,classInfo:c}=os(t,e),{dstart:l,dend1:f,dend2:u}=as(o,n,a,r);if(l>f)for(let d=l;d<r-(n-1-f);d++)i[d]=1;else if(l>u)for(let d=l;d<n-(r-1-u);d++)s[d]=1;else{let{refIndex1:d,nreff1:h,refIndex2:m,nreff2:g}=cs(o,n,a,r,c,l,f,u,s,i);if(h>0&&g>0){let p=new Array(h);for(let w=0;w<h;w++)p[w]=o[d[w]];let b=new Array(g);for(let w=0;w<g;w++)b[w]=a[m[w]];let R={},j={},A=h+g+3,O=Math.max(fs,dt(A));mt(p,0,h,b,0,g,s,i,d,m,R,j,!1,O)}else if(h===0)for(let p=0;p<g;p++)i[m[p]]=1;else for(let p=0;p<h;p++)s[d[p]]=1;xn(s,o,t,n,i,r),xn(i,a,e,r,s,n)}}else n===0?i.fill(1):s.fill(1);return{changedOld:s,changedNew:i}}function Ee(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((o,a)=>({type:"insert",line:o,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((o,a)=>({type:"delete",line:o,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:i}=pt(t,e);return hs(t,e,s,i)}var Ps=3;function On(t,e=Ps){if(e=Math.max(0,e),t.length===0)return[];let n=[];for(let a=0;a<t.length;a++){let c=t[a];c&&c.type!=="keep"&&n.push(a)}if(n.length===0)return[];let r=n[0]??0,s=[],i=Math.max(0,r-e),o=Math.min(t.length-1,r+e);for(let a=1;a<n.length;a++){let c=n[a]??0,l=Math.max(0,c-e),f=Math.min(t.length-1,c+e);l<=o+1||(s.push({start:i,end:o}),i=l),o=f}return s.push({start:i,end:o}),s.map(a=>ks(t,a.start,a.end))}function ks(t,e,n){let r=0,s=0,i=0,o=0,a=[],c=!1,l=!1;for(let f=e;f<=n;f++){let u=t[f];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),l||(i=u.newLineNo,l=!0),s++,o++,a.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),s++,a.push({type:"delete",content:u.line});break;case"insert":l||(i=u.newLineNo,l=!0),o++,a.push({type:"insert",content:u.line});break}}if(c||(r=i>0?i:1),l||(i=r>0?r:1),s===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(o===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="delete"){i=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:s,newStart:i,newCount:o,lines:a}}function xe(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function Ts(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=xe(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];if(i&&xe(i.path)===n){r=s;break}}return t.splice(r,1)[0]}var Ss=50;async function me(t,e,n=Ss){let r=new Map,s=[],i=[],o=[];for(let f of e)if(f.status==="deleted"&&f.oldHash){let u=r.get(f.oldHash)??[];u.push(f),r.set(f.oldHash,u),s.push(f)}else f.status==="added"&&f.newHash?i.push(f):o.push(f);let a=[],c=[];for(let f of i){let u=f.newHash;if(!u){c.push(f);continue}let d=r.get(u);if(d&&d.length>0){let h=Ts(d,f.path);h&&a.push({oldPath:h.path,newPath:f.path,oldHash:h.oldHash??u,newHash:u,similarity:100,oldMode:h.oldMode,newMode:f.newMode})}else c.push(f)}let l=[...r.values()].flat();if(l.length>0&&c.length>0){let f=await Cs(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}if(l.length>0&&c.length>0){let f=await As(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}return{remaining:[...o,...l,...c],renames:a}}async function Cs(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let l=xe(c.path);s.has(l)?s.set(l,-1):s.set(l,a)}let i=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let l=xe(c.path);i.has(l)?i.set(l,-1):i.set(l,a)}let o=[];for(let[a,c]of s){if(c===-1)continue;let l=i.get(a);if(l===void 0||l===-1)continue;let f=e[c],u=n[l];if(!f?.oldHash||!u?.newHash||f.oldHash===u.newHash)continue;let d=await re(t,f.oldHash),h=await re(t,u.newHash),m=vs(d,h);m<r||o.push({oldPath:f.path,newPath:u.path,oldHash:f.oldHash,newHash:u.newHash,similarity:m,oldMode:f.oldMode,newMode:u.newMode})}return o}var Rn=107927;function Ye(t){let e=new Map,n=0,r=0,s=0;for(let o=0;o<t.length;o++){let a=t[o],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let l=(r+Math.imul(s,97))%Rn;e.set(l,(e.get(l)??0)+n),n=0,r=0,s=0}if(n>0){let o=(r+Math.imul(s,97))%Rn;e.set(o,(e.get(o)??0)+n)}let i=[];for(let[o,a]of e)i.push({hash:o,count:a});return i.sort((o,a)=>o.hash-a.hash),i}function js(t,e){let n=0,r=0,s=0,i=0;for(;s<t.length;){let o=t[s];if(!o)break;for(;i<e.length;){let l=e[i];if(!l||l.hash>=o.hash)break;r+=l.count,i++}let a=o.count,c=0;if(i<e.length){let l=e[i];l&&l.hash===o.hash&&(c=l.count,i++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;i<e.length;){let o=e[i];o&&(r+=o.count),i++}return{srcCopied:n,literalAdded:r}}function vs(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:Pn(t.length,Ye(t),e.length,Ye(e))}function Pn(t,e,n,r){let s=Math.max(t,n),i=Math.min(t,n);if(i<s-i)return 0;let{srcCopied:o}=js(e,r);return Math.floor(o*100/s)}async function As(t,e,n,r){let s=[];for(let f of e)if(f.oldHash){let u=await re(t,f.oldHash);s.push({size:u.length,chunks:Ye(u)})}else s.push(null);let i=[];for(let f of n)if(f.newHash){let u=await re(t,f.newHash);i.push({size:u.length,chunks:Ye(u)})}else i.push(null);let o=[];for(let f=0;f<e.length;f++){let u=e[f],d=s[f];if(!(!u||!d))for(let h=0;h<n.length;h++){let m=n[h],g=i[h];if(!m||!g)continue;let p=Pn(d.size,d.chunks,g.size,g.chunks);if(p>=r){let b=xe(u.path)===xe(m.path)?1:0;o.push({similarity:p,nameScore:b,delIdx:f,addIdx:h})}}}o.sort((f,u)=>u.similarity-f.similarity||u.nameScore-f.nameScore);let a=new Set,c=new Set,l=[];for(let{similarity:f,delIdx:u,addIdx:d}of o){if(a.has(u)||c.has(d))continue;a.add(u),c.add(d);let h=e[u],m=n[d];!h||!m||l.push({oldPath:h.path,newPath:m.path,oldHash:h.oldHash??"",newHash:m.newHash??"",similarity:f,oldMode:h.oldMode,newMode:m.newMode})}return l}async function ue(t,e,n){return(await le(t,e)).get(n)?.hash??null}async function kn(t,e,n,r){let s=await oe(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:o}=await me(t,s);return o.find(c=>c.newPath===r)?.oldPath??null}async function $s(t,e,n,r,s,i){let o=await ue(t,(await v(t,e)).tree,n);if(!o){let g=new Map,p=await v(t,e);for(let b of r)g.set(b.finalIdx,he(e,n,b.currentLine,i+b.finalIdx,s[b.finalIdx],p,!1,void 0));return g}let a=await H(t,o),c=te(a),l=new Array(s.length),f=[...r],u=e,d=n,h=c;for(;f.length>0;){let g=await v(t,u);if(g.parents.length===0){for(let E of f)l[E.finalIdx]=he(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],g,!0,void 0);break}let p=await ue(t,g.tree,d),b=null,R=[];for(let E of g.parents){let P=await v(t,E),T=d,$=await ue(t,P.tree,T);if(!$){let D=await kn(t,P.tree,g.tree,d);D&&(T=D,$=await ue(t,P.tree,T))}if($&&(R.push({hash:E,path:T,blobHash:$}),$===p)){b={hash:E,path:T};break}}if(b){u=b.hash,d=b.path;continue}if(R.length===0){for(let E of f)l[E.finalIdx]=he(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],g,!1,void 0);break}let j=R[0],A=await H(t,j.blobHash),O=te(A),w=Ee(O,h),x=new Map;for(let E of w)E.type==="keep"&&x.set(E.newLineNo,E.oldLineNo);let S=[];for(let E of f){let P=x.get(E.currentLine);P!==void 0?S.push({finalIdx:E.finalIdx,currentLine:P}):l[E.finalIdx]=he(u,d,E.currentLine,i+E.finalIdx,s[E.finalIdx],g,!1,{hash:j.hash,path:j.path})}f=S,u=j.hash,d=j.path,h=O}let m=new Map;for(let g of r)l[g.finalIdx]&&m.set(g.finalIdx,l[g.finalIdx]);return m}async function Tn(t,e,n,r){let s=await v(t,e),i=await ue(t,s.tree,n);if(!i)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let o=await H(t,i),a=te(o),c=r?.startLine??1,l=r?.endLine??a.length,f=a.slice(c-1,l),u=new Array(f.length),d=f.map((p,b)=>({finalIdx:b,currentLine:c+b})),h=e,m=n,g=a;for(;d.length>0;){let p=await v(t,h);if(p.parents.length===0){for(let x of d)u[x.finalIdx]=he(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!0,void 0);break}let b=await ue(t,p.tree,m),R=[],j=null;for(let x of p.parents){let S=await v(t,x),E=m,P=await ue(t,S.tree,E);if(!P){let T=await kn(t,S.tree,p.tree,m);T&&(E=T,P=await ue(t,S.tree,E))}if(P){let T={hash:x,path:E,blobHash:P};if(R.push(T),P===b){j=T;break}}}if(j){h=j.hash,m=j.path;continue}if(R.length===0){for(let x of d)u[x.finalIdx]=he(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!1,void 0);break}if(R.length===1){let x=R[0],S=await H(t,x.blobHash),E=te(S),P=Ee(E,g),T=new Map;for(let D of P)D.type==="keep"&&T.set(D.newLineNo,D.oldLineNo);let $=[];for(let D of d){let ae=T.get(D.currentLine);ae!==void 0?$.push({finalIdx:D.finalIdx,currentLine:ae}):u[D.finalIdx]=he(h,m,D.currentLine,c+D.finalIdx,f[D.finalIdx],p,!1,{hash:x.hash,path:x.path})}d=$,h=x.hash,m=x.path,g=E;continue}let A=[];for(let x of R){let S=await H(t,x.blobHash),E=te(S),P=Ee(E,g),T=new Map;for(let $ of P)$.type==="keep"&&T.set($.newLineNo,$.oldLineNo);A.push({info:x,newToOld:T})}let O=new Map;for(let x of d){let S=!1;for(let E=0;E<A.length;E++){let P=A[E],T=P.newToOld.get(x.currentLine);if(T!==void 0){let $=O.get(E);$||($={info:P.info,lines:[]},O.set(E,$)),$.lines.push({finalIdx:x.finalIdx,currentLine:T}),S=!0;break}}S||(u[x.finalIdx]=he(h,m,x.currentLine,c+x.finalIdx,f[x.finalIdx],p,!1,{hash:R[0].hash,path:R[0].path}))}let w=O.get(0);for(let[x,S]of O){if(x===0)continue;let E=await $s(t,S.info.hash,S.info.path,S.lines,f,c);for(let[P,T]of E)u[P]=T}if(w&&w.lines.length>0){d=w.lines,h=w.info.hash,m=w.info.path;let x=await H(t,w.info.blobHash);g=te(x)}else break}return u}function he(t,e,n,r,s,i,o,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:i.author,committer:i.committer,summary:i.message.split(`
13
- `)[0],boundary:o,previous:a}}var Oe=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,i=2*e+1,o=2*e+2;if(i<r&&this.higher(n[i],n[s])&&(s=i),o<r&&this.higher(n[o],n[s])&&(s=o),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*pe(t,e,n){if(n?.topoOrder){yield*Ls(t,e,n);return}let r=await Cn(t,n?.exclude),s=new Set(r),i=new Oe,o=n?.shallowBoundary,a=n?.limit,c=0,l=Array.isArray(e)?e:[e];for(let f of l)s.has(f)||i.push(await qe(t,f));for(;i.size>0;){let f=i.pop();if(s.has(f.hash))continue;if(s.add(f.hash),yield f,a!==void 0&&++c>=a)return;if(o?.has(f.hash))continue;let u=n?.firstParent?f.commit.parents.slice(0,1):f.commit.parents;for(let d of u)if(!s.has(d))try{i.push(await qe(t,d))}catch{}}}async function*Ls(t,e,n){let r=await Cn(t,n?.exclude),s=new Set(r),i=new Oe,o=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let h of a)s.has(h)||i.push(await qe(t,h));let c=[],l=new Map;for(;i.size>0;){let h=i.pop();if(s.has(h.hash)||(s.add(h.hash),l.set(h.hash,c.length),c.push(h),o?.has(h.hash)))continue;let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let g of m)if(!s.has(g))try{i.push(await qe(t,g))}catch{}}let f=c.length;if(f===0)return;let u=new Int32Array(f);for(let h of c){let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let g of m){let p=l.get(g);p!==void 0&&(u[p]=(u[p]??0)+1)}}let d=[];for(let h=f-1;h>=0;h--)u[h]===0&&d.push(h);for(;d.length>0;){let h=d.pop();yield c[h];let m=n?.firstParent?c[h].commit.parents.slice(0,1):c[h].commit.parents;for(let g of m){let p=l.get(g);if(p!==void 0){let b=(u[p]??0)-1;u[p]=b,b===0&&d.push(p)}}}}async function Sn(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of pe(t,e))r.add(a.hash);let s=new Set;for await(let a of pe(t,n))s.add(a.hash);let i=0;for(let a of r)s.has(a)||i++;let o=0;for(let a of s)r.has(a)||o++;return{ahead:i,behind:o}}async function Cn(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of pe(t,e))n.add(r.hash);return n}async function qe(t,e){return{hash:e,commit:await v(t,e)}}async function Ms(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let i=r[s++];if(n.has(i))continue;n.add(i);let o;try{o=await v(t,i)}catch{continue}for(let a of o.parents)n.has(a)||r.push(a)}return n}async function gt(t,e,n){if(e===n)return!0;let r=new Set,s=[n],i=0;for(;i<s.length;){let o=s[i++];if(o===e)return!0;if(r.has(o))continue;r.add(o);let a;try{a=await v(t,o)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function De(t,e,n){if(e===n)return[e];let r=await Ms(t,e),s=[],i=new Set,o=[n],a=0;for(;a<o.length;){let l=o[a++];if(i.has(l))continue;if(i.add(l),r.has(l)){s.push(l);continue}let f;try{f=await v(t,l)}catch{continue}for(let u of f.parents)i.has(u)||o.push(u)}if(s.length<=1)return s;let c=[];for(let l of s){let f=!1;for(let u of s)if(u!==l&&await gt(t,l,u)){f=!0;break}f||c.push(l)}return c.length<=1?c:Ds(t,e,n,c)}async function Ds(t,e,n,r){let s=new Set(r),i=new Set,o=[],a=new Map,c=new Map,l=0,f=[{hash:e,mask:1,seq:l++},{hash:n,mask:2,seq:l++}];async function u(d){let h=c.get(d);if(h!==void 0)return h;let m=(await v(t,d)).committer.timestamp;return c.set(d,m),m}for(;f.length>0;){let d=0,h=await u(f[0].hash);for(let R=1;R<f.length;R++){let j=f[R],A=await u(j.hash),O=f[d];(A>h||A===h&&j.seq<O.seq)&&(d=R,h=A)}let m=f.splice(d,1)[0],g=a.get(m.hash)??0,p=g|m.mask;if(p===g)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!i.has(m.hash)&&(o.push(m.hash),i.add(m.hash),i.size===s.size))break;let b=await v(t,m.hash);for(let R of b.parents)f.push({hash:R,mask:p,seq:l++})}for(let d of r)i.has(d)||o.push(d);return o}async function Hs(t,e){return Q(t,e)}async function Us(t,e,n){return oe(t,e,n)}async function Ns(t,e,n){let r=await v(t,n),s=null;return e&&(s=(await v(t,e)).tree),oe(t,s,r.tree)}async function*Bs(t,e,n){let r=e?[e]:[];for await(let s of pe(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function Gs(t,e,n){return gt(t,e,n)}async function Fs(t,e,n){return De(t,e,n)}async function _s(t,e,n){return Sn(t,e,n)}async function Ws(t,e,n,r){return Tn(t,e,n,r)}function zs(t){return t==="insert"?"+":t==="delete"?"-":" "}function Vs(t){return{oldStart:t.oldStart,oldCount:t.oldCount,newStart:t.newStart,newCount:t.newCount,lines:t.lines.map(e=>zs(e.type)+e.content)}}function jn(t,e,n){let r=te(t),s=te(e),i=Ee(r,s);return On(i,n).map(Vs)}async function vn(t,e){let n=await _e(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function Ks(t,e,n,r){let s=await vn(t,e),i=await vn(t,n),o=await v(t,s),a=await v(t,i),c=await oe(t,o.tree,a.tree),l=r?.renames!==!1,f=r?.contextLines,u=r?.paths,d=[];if(l){let m=await me(t,c);c=m.remaining,d=m.renames}let h=[];for(let m of c){if(u&&!u.some(R=>m.path.startsWith(R)))continue;let g=m.oldHash?await H(t,m.oldHash):"",p=m.newHash?await H(t,m.newHash):"",b=jn(g,p,f);h.push({path:m.path,status:m.status,hunks:b})}for(let m of d){if(u&&!u.some(R=>m.newPath.startsWith(R)||m.oldPath.startsWith(R)))continue;let g=await H(t,m.oldHash),p=await H(t,m.newHash),b=jn(g,p,f);h.push({path:m.newPath,status:"renamed",oldPath:m.oldPath,similarity:m.similarity,hunks:b})}return h.sort((m,g)=>m.path.localeCompare(g.path)),h}async function*Ys(t,e,n){if(n?.paths&&n.paths.length>0){let r=n?.limit,s=0;for await(let i of qs(t,e,n.paths,n))if(yield i,r!==void 0&&++s>=r)return;return}for await(let r of pe(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}function yt(t,e){return e.some(n=>t===n||t.startsWith(n.endsWith("/")?n:n+"/"))}async function*qs(t,e,n,r){let s=new Set;if(r?.exclude)for await(let l of pe(t,r.exclude))s.add(l.hash);let i=new Set(s),o=new Oe,a=async l=>{if(!i.has(l))try{let f=await v(t,l);o.push({hash:l,commit:f})}catch{}},c=Array.isArray(e)?e:[e];for(let l of c)await a(l);for(;o.size>0;){let l=o.pop();if(i.has(l.hash))continue;i.add(l.hash);let{commit:f}=l,u=r?.firstParent?f.parents.slice(0,1):f.parents,d=()=>({hash:l.hash,message:f.message,tree:f.tree,parents:f.parents,author:f.author,committer:f.committer});if(u.length===0){(await oe(t,null,f.tree)).some(g=>yt(g.path,n))&&(yield d());continue}if(u.length===1){let m=u[0];try{let g=await v(t,m);(await oe(t,g.tree,f.tree)).some(b=>yt(b.path,n))&&(yield d())}catch{yield d()}await a(m);continue}let h=[];for(let m of u)try{let g=await v(t,m);(await oe(t,g.tree,f.tree)).some(b=>yt(b.path,n))||h.push(m)}catch{}if(h.length>0)await a(h[0]);else{yield d();for(let m of u)await a(m)}}}function Xs(t){let e=Math.abs(t),n=t<=0?"+":"-",r=String(Math.floor(e/60)).padStart(2,"0"),s=String(e%60).padStart(2,"0");return`${n}${r}${s}`}function He(t){if("timestamp"in t)return t;let e=t.date??new Date;return{name:t.name,email:t.email,timestamp:Math.floor(e.getTime()/1e3),timezone:Xs(e.getTimezoneOffset())}}async function Zs(t,e){let n=He(e.author),r=e.committer?He(e.committer):n,s=Ae({type:"commit",tree:e.tree,parents:e.parents,author:n,committer:r,message:e.message}),i=await B(t,"commit",s);return e.branch&&await Ln(t,e.branch,i),i}async function Js(t,e){let n=He(e.tagger),r=Zt({type:"tag",object:e.target,objectType:e.targetType??"commit",name:e.name,tagger:n,message:e.message}),s=await B(t,"tag",r);return await t.refStore.writeRef(`refs/tags/${e.name}`,{type:"direct",hash:s}),s}async function $n(t,e){let n=e.branch?`refs/heads/${e.branch}`:null,r=n?await J(t,n):null,s=null;r&&(s=(await v(t,r)).tree);let i=[];for(let[d,h]of Object.entries(e.files))if(h===null)i.push({path:d,hash:null});else{let m=typeof h=="string"?new TextEncoder().encode(h):h,g=await B(t,"blob",m);i.push({path:d,hash:g})}let o;s?o=await Mn(t,s,i):o=await wt(t,null,bt(i));let a=He(e.author),c=e.committer?He(e.committer):a,f=Ae({type:"commit",tree:o,parents:r?[r]:[],author:a,committer:c,message:e.message});return{hash:await B(t,"commit",f),parentHash:r}}async function Qs(t,e){let{hash:n}=await $n(t,e);return await Ln(t,e.branch,n),n}async function Ln(t,e,n){let r=`refs/heads/${e}`;await t.refStore.writeRef(r,{type:"direct",hash:n}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:r})}async function ei(t,e){let n=[...e].sort((i,o)=>i.name.localeCompare(o.name)),r=await Promise.all(n.map(async i=>{let o=i.mode;return o||(o=(await t.objectStore.read(i.hash)).type==="tree"?"040000":"100644"),{mode:o,name:i.name,hash:i.hash}})),s=Le({type:"tree",entries:r});return B(t,"tree",s)}async function ti(t,e){return B(t,"blob",new TextEncoder().encode(e))}async function Mn(t,e,n){return wt(t,e,bt(n))}function bt(t){let e=new Map,n=new Map;for(let r of t){let s=r.path.indexOf("/");if(s===-1)e.set(r.path,{hash:r.hash,mode:r.mode??"100644"});else{let i=r.path.slice(0,s),o=r.path.slice(s+1),a=n.get(i);a||(a=[],n.set(i,a)),a.push({...r,path:o})}}return{files:e,dirs:n}}async function An(t,e){let n=await F(t,e);if(n.type!=="tree")throw new Error(`Expected tree object, got ${n.type}`);return se(n.content).entries}async function wt(t,e,n){let r=new Map;if(e)for(let o of await An(t,e))r.set(o.name,o);for(let[o,{hash:a,mode:c}]of n.files)a===null?r.delete(o):r.set(o,{name:o,hash:a,mode:c});for(let[o,a]of n.dirs){let c=r.get(o),l=c?.mode==="040000"?c.hash:null,f=bt(a),u=await wt(t,l,f);(await An(t,u)).length===0?r.delete(o):r.set(o,{name:o,hash:u,mode:"040000"})}let s=[...r.values()].sort((o,a)=>{let c=o.mode==="040000"?`${o.name}/`:o.name,l=a.mode==="040000"?`${a.name}/`:a.name;return c<l?-1:c>l?1:0}),i=Le({type:"tree",entries:s});return B(t,"tree",i)}function It(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:i}=pt(t,e);return ni(s,n,i,r)}function ni(t,e,n,r){let s=[],i=0,o=0;for(;i<e||o<r;){for(;i<e&&o<r&&!t[i]&&!n[o];)i++,o++;if(i>=e&&o>=r)break;let a=i,c=o;for(;i<e&&t[i];)i++;for(;o<r&&n[o];)o++;(i>a||o>c)&&s.push({buffer1:[a,i-a],buffer2:[c,o-c]})}return s}function ri(t,e,n){let r=[];for(let c of It(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of It(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,l)=>c.oStart-l.oStart);let s=[],i=0;function o(c){c>i&&(s.push({stable:!0,buffer:"o",bufferStart:i,bufferLength:c-i,content:e.slice(i,c)}),i=c)}let a=0;for(;a<r.length;){let c=r[a++],l=c.oStart,f=c.oStart+c.oLength,u=[c];for(o(l);a<r.length;){let d=r[a];if(d.oStart>f)break;f=Math.max(f,d.oStart+d.oLength),u.push(d),a++}if(u.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let b of u){let R=b.oStart,j=R+b.oLength,A=b.abStart,O=A+b.abLength,w=d[b.ab];w.abMin=Math.min(A,w.abMin),w.abMax=Math.max(O,w.abMax),w.oMin=Math.min(R,w.oMin),w.oMax=Math.max(j,w.oMax)}let h=d.a.abMin+(l-d.a.oMin),m=d.a.abMax+(f-d.a.oMax),g=d.b.abMin+(l-d.b.oMin),p=d.b.abMax+(f-d.b.oMax);s.push({stable:!1,a:t.slice(h,m),o:e.slice(l,f),b:n.slice(g,p)})}i=f}return o(e.length),s}function si(t,e,n,r){let s=r?.excludeFalseConflicts??!0,i=ri(t,e,n),o=[],a=[];function c(){a.length&&(o.push({type:"ok",lines:a}),a=[])}for(let l of i)l.stable?a.push(...l.content):s&&Hn(l.a,l.b)?a.push(...l.a):(c(),o.push({type:"conflict",a:l.a,o:l.o,b:l.b}));return c(),r?.conflictStyle==="diff3"?Dn(o):Dn(ii(o))}function Ue(t,e,n,r){let s=r?.markerSize??7,i=r?.conflictStyle??"merge",o=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),l=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,f=si(t,e,n,{conflictStyle:i}),u=!1,d=[];for(let h of f)h.type==="ok"?d.push(...h.lines):(u=!0,i==="diff3"?d.push(o,...h.a,a,...h.o,c,...h.b,l):d.push(o,...h.a,c,...h.b,l));return{conflict:u,result:d}}function ii(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...oi(n));return e}function oi(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(Hn(e,n))return[t];let r=It(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],i=0;for(let a of r){let c=a.buffer1[0];c-i>0&&s.push({type:"ok",lines:e.slice(i,c)});let f=c+a.buffer1[1],u=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,f),o:[],b:n.slice(a.buffer2[0],u)}),i=f}return e.length-i>0&&s.push({type:"ok",lines:e.slice(i)}),s.length===1&&s[0].type==="conflict"?[t]:s}function Dn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],i=t[r];s.type==="ok"&&i.type==="ok"?s.lines=[...s.lines,...i.lines]:e.push(i)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],i=e[r];if(s.type==="conflict"&&i.type==="ok"&&i.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let o=e[r+1],a=s;a.a=[...s.a,...i.lines,...o.a],a.b=[...s.b,...i.lines,...o.b],a.o=[...s.o,...i.lines,...o.o],r++}else n.push(i)}return n}function ge(t,e,n,r){let s=Ue(Y(t),Y(e),Y(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),o=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(Et);return(a[a.length-1]??"").startsWith(">>>>>>>")||!o?`${a.join(`
7
+ `),r=n===-1?e:e.slice(0,n),s=n===-1?"":e.slice(n+2),o="",i="commit",a="",c;for(let l of r.split(`
8
+ `)){let f=l.indexOf(" ");if(f===-1)continue;let u=l.slice(0,f),d=l.slice(f+1);switch(u){case"object":o=d;break;case"type":i=d;break;case"tag":a=d;break;case"tagger":c=ve(d);break}}if(!o)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:o,objectType:i,name:a,tagger:c,message:s}}function Qt(t){let e=[];return e.push(`object ${t.object}`),e.push(`type ${t.objectType}`),e.push(`tag ${t.name}`),e.push(`tagger ${je(t.tagger)}`),e.push(""),e.push(t.message),vr.encode(e.join(`
9
+ `))}async function B(t,e,n){let r=await t.objectStore.write(e,n);return t.hooks?.onObjectWrite?.({repo:t,type:e,hash:r}),r}async function F(t,e){return t.objectStore.read(e)}async function en(t,e){return t.objectStore.exists(e)}async function tn(t,e){return t.objectStore.findByPrefix(e)}function X(t){let e=Math.min(t.length,8e3);for(let n=0;n<e;n++)if(t.charCodeAt(n)===0)return!0;return!1}var Ar=new TextDecoder;async function D(t,e){let n=await F(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return Ar.decode(n.content)}async function se(t,e){let n=await F(t,e);if(n.type!=="blob")throw new Error(`Expected blob for ${e}, got ${n.type}`);return n.content}async function A(t,e){let n=await F(t,e);if(n.type!=="commit")throw new Error(`Expected commit object for ${e}, got ${n.type}`);return Zt(n.content)}async function $e(t,e){let n=e;for(let r=0;r<100;r++){let s=await F(t,n);if(s.type==="commit")return n;if(s.type==="tag"){n=Jt(s.content).object;continue}throw new Error(`Cannot peel ${s.type} object ${e} to commit`)}throw new Error(`Tag chain too deep for ${e}`)}var $r=new TextEncoder,nn=new TextDecoder,Lr=new Set(["100644","100755","040000","120000","160000"]);function Mr(t){return t.length===4&&t.toLowerCase()===".git"}function Hr(t,e){if(t.length===0)throw new Error("invalid tree entry: empty name");if(t.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${t}'`);if(t.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(t==="."||t==="..")throw new Error(`invalid tree entry: '${t}'`);if(Mr(t))throw new Error(`invalid tree entry: '${t}'`);if(!Lr.has(e))throw new Error(`invalid tree entry mode: '${e}' for '${t}'`)}function ie(t){let e=[],n=0;for(;n<t.byteLength;){let r=t.indexOf(32,n);if(r===-1)break;let s=nn.decode(t.subarray(n,r)),o=t.indexOf(0,r+1);if(o===-1)break;let i=nn.decode(t.subarray(r+1,o)),a=t.subarray(o+1,o+21),c=Te(a),l=s.padStart(6,"0");Hr(i,l),e.push({mode:l,name:i,hash:c}),n=o+21}return{type:"tree",entries:e}}function Le(t){let e=[];for(let o of t.entries){let i=o.mode.replace(/^0+/,""),a=$r.encode(`${i} ${o.name}\0`),c=be(o.hash);e.push(a),e.push(c)}let n=e.reduce((o,i)=>o+i.byteLength,0),r=new Uint8Array(n),s=0;for(let o of e)r.set(o,s),s+=o.byteLength;return r}var _={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"};function rn(t){return typeof t=="string"?{type:"direct",hash:t}:t}var Dr=10;async function Ur(t,e){return t.refStore.readRef(e)}async function te(t,e){let n=e;for(let r=0;r<Dr;r++){let s=await Ur(t,n);if(!s)return null;if(s.type==="direct")return s.hash;n=s.target}throw new Error(`Symbolic ref loop detected resolving "${e}"`)}async function lt(t,e="refs"){return t.refStore.listRefs(e)}function ft(t){return t.replace("refs/heads/","")}function sn(t){return t.replace("refs/tags/","")}function on(t){return t.length===4&&t.toLowerCase()===".git"}function an(t){if(t.length===0||t.includes("\0")||t.charCodeAt(0)===47||t.charCodeAt(t.length-1)===47)return!1;let e=t.split("/");for(let n of e)if(n.length===0||n==="."||n===".."||on(n))return!1;return!0}function cn(t,e){return e===t?!1:t==="/"?e.startsWith("/")&&e.length>1:e.startsWith(t+"/")}function ln(t){if(t.length===0||t.charCodeAt(0)===47)return!1;let e=t.split("/");for(let n of e)if(n===".."||on(n))return!1;return!0}var Nr=1145655875,Br=2;async function Fe(t,e){let n=Ie(t.gitDir,"index"),r=await Gr(e);await t.fs.writeFile(n,r)}function fn(t){let e=[...t].sort(un);return{version:Br,entries:e}}function ce(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}async function Gr(t){let e=new TextEncoder,n=[...t.entries].sort(un),r=[],s=12;for(let d of n){let h=e.encode(d.path);r.push(h);let m=62+h.byteLength+1;s+=Math.ceil(m/8)*8}s+=20;let o=new ArrayBuffer(s),i=new Uint8Array(o),a=new DataView(o),c=0;a.setUint32(c,Nr),c+=4,a.setUint32(c,t.version),c+=4,a.setUint32(c,n.length),c+=4;for(let d=0;d<n.length;d++){let h=n[d],m=r[d],g=c;a.setUint32(c,h.stat.ctimeSeconds),a.setUint32(c+4,h.stat.ctimeNanoseconds),a.setUint32(c+8,h.stat.mtimeSeconds),a.setUint32(c+12,h.stat.mtimeNanoseconds),a.setUint32(c+16,h.stat.dev),a.setUint32(c+20,h.stat.ino),a.setUint32(c+24,h.mode),a.setUint32(c+28,h.stat.uid),a.setUint32(c+32,h.stat.gid),a.setUint32(c+36,h.stat.size),c+=40;let p=be(h.hash);i.set(p,c),c+=20;let b=Math.min(m.byteLength,4095),k=(h.stage&3)<<12|b;a.setUint16(c,k),c+=2,i.set(m,c),c+=m.byteLength,i[c]=0,c+=1;let v=62+m.byteLength+1,j=Math.ceil(v/8)*8;c=g+j}let l=i.subarray(0,c),f=await Be(l),u=be(f);return i.set(u,c),i}function un(t,e){return t.path<e.path?-1:t.path>e.path?1:t.stage-e.stage}function Fr(t){let e=[],n=t.length;for(;n>0;){let o=t.slice(0,n).match(/^(.+?)~(\d*)$/);if(o&&o[1]!==void 0&&o[2]!==void 0){let c=o[2]===""?1:parseInt(o[2],10);e.unshift({type:"tilde",n:c}),n=o[1].length;continue}let i=t.slice(0,n).match(/^(.+?)\^{([^}]*)}$/);if(i&&i[1]!==void 0&&i[2]!==void 0){e.unshift({type:"peel",target:i[2]}),n=i[1].length;continue}let a=t.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let c=a[2]===""?1:parseInt(a[2],10);e.unshift({type:"caret",n:c}),n=a[1].length;continue}break}let r=t.slice(0,n),s=r.match(/^(.+?)@\{(\d+)\}$/);return s&&s[1]!==void 0&&s[2]!==void 0?{base:s[1],reflogIndex:parseInt(s[2],10),suffixes:e}:{base:r,suffixes:e}}var _r=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];async function Wr(t,e){let n=await tn(t,e);if(n.length===0)return null;if(n.length>1)throw new ut(e);return n[0]}var ut=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}};async function zr(t,e){if(e==="HEAD"||e==="@")return te(t,"HEAD");if(_r.includes(e))return te(t,e);if(/^[0-9a-f]{40}$/.test(e))return await en(t,e)?e:null;if(/^[0-9a-f]{4,39}$/.test(e)){let o=await Wr(t,e);if(o)return o}if(e.startsWith("refs/")){let o=await te(t,e);if(o)return o}let n=await te(t,`refs/heads/${e}`);if(n)return n;let r=await te(t,`refs/tags/${e}`);if(r)return r;let s=await te(t,`refs/remotes/${e}`);return s||null}async function Vr(t,e,n){if(n===""||n==="commit")try{return await $e(t,e)}catch{return null}if(n==="tree"){let s;try{s=await $e(t,e)}catch{return null}return(await A(t,s)).tree}return(await F(t,e)).type!==n?null:e}async function Kr(t,e,n){let r=e;n.some(o=>o.type==="tilde"||o.type==="caret")&&(r=await $e(t,r));for(let o of n)if(o.type==="peel"){if(!r)return null;r=await Vr(t,r,o.target)}else if(o.type==="tilde")for(let i=0;i<o.n;i++){if(!r)return null;let a=await A(t,r);if(a.parents.length===0||(r=a.parents[0]??null,!r))return null}else{if(o.n===0)continue;if(!r)return null;let i=await A(t,r);if(o.n>i.parents.length||(r=i.parents[o.n-1]??null,!r))return null}return r}async function _e(t,e){let{base:n,reflogIndex:r,suffixes:s}=Fr(e);if(r!==void 0)return null;let o=await zr(t,n);return o?Kr(t,o,s):null}var ho=new TextEncoder;function oe(t){return typeof t=="string"?t==="120000":t===40960}function hn(t){return{stdout:"",stderr:`fatal: ${t}
10
+ `,exitCode:128}}var po=hn("not a git repository (or any of the parent directories): .git"),go=hn("this operation must be run in a work tree");function Me(t,e){return t<e?-1:t>e?1:0}function dn(t){return t.slice(0,7)}async function ht(t,e){return mn(t,e,"")}async function mn(t,e,n){let r=[],s=new Map;for(let i of e){let a=n?i.path.slice(n.length+1):i.path,c=a.indexOf("/");if(c===-1)r.push({mode:Yr(i.mode),name:a,hash:i.hash});else{let l=a.slice(0,c),f=s.get(l);f||(f=[],s.set(l,f)),f.push(i)}}for(let[i,a]of s){let c=n?`${n}/${i}`:i,l=await mn(t,a,c);r.push({mode:_.DIRECTORY,name:i,hash:l})}r.sort((i,a)=>{let c=i.mode===_.DIRECTORY?`${i.name}/`:i.name,l=a.mode===_.DIRECTORY?`${a.name}/`:a.name;return c<l?-1:c>l?1:0});let o=Le({type:"tree",entries:r});return B(t,"tree",o)}async function ne(t,e,n=""){let r=await F(t,e);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let s=ie(r.content),o=[];for(let i of s.entries){let a=n?`${n}/${i.name}`:i.name;if(i.mode===_.DIRECTORY){let c=await ne(t,i.hash,a);o.push(...c)}else o.push({path:a,mode:i.mode,hash:i.hash})}return o}async function le(t,e){if(!e)return new Map;let n=await ne(t,e);return new Map(n.map(r=>[r.path,r]))}async function ae(t,e,n){let r=await le(t,e),s=await le(t,n),o=[];for(let[i,a]of r){let c=s.get(i);c?(a.hash!==c.hash||a.mode!==c.mode)&&o.push({path:i,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):o.push({path:i,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[i,a]of s)r.has(i)||o.push({path:i,status:"added",newHash:a.hash,newMode:a.mode});return o.sort((i,a)=>Me(i.path,a.path))}function Yr(t){return t.toString(8).padStart(6,"0")}function qr(t){let e=Math.min(t.length,8e3),n=0;for(let r=0;r<e;r++)t.charCodeAt(r)===0&&n++;return n>e*.01}function pn(t,e,n,r){if(qr(t)){let i=e.some(a=>a.test(t));return{matches:[],binary:i}}let s=t.split(`
11
+ `);if(s.length>0&&s[s.length-1]===""&&s.pop(),n&&e.length>1&&!e.every(a=>s.some(c=>a.test(c))))return{matches:[],binary:!1};let o=[];for(let i=0;i<s.length;i++){let a=s[i],c=e.some(l=>l.test(a));(r?!c:c)&&o.push({lineNo:i+1,line:a})}return{matches:o,binary:!1}}function Xr(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function gn(t,e){let n=e?.fixed?Xr(t):t;e?.wordRegexp&&(n=`\\b${n}\\b`);let r=e?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}async function Zr(t,e){return te(t,e)}async function Jr(t){return lt(t,"refs/heads")}async function Qr(t){return lt(t,"refs/tags")}async function es(t){let e=await t.refStore.readRef("HEAD");if(!e)return{branch:null,ref:null,hash:null};if(e.type==="symbolic"){let n=await t.refStore.readRef(e.target),r=n?.type==="direct"?n.hash:null;return{branch:e.target.startsWith("refs/heads/")?ft(e.target):null,ref:e.target,hash:r}}return{branch:null,ref:null,hash:e.hash}}async function ts(t,e){return A(t,e)}async function ns(t,e){return se(t,e)}async function rs(t,e){return D(t,e)}async function ss(t,e){let n=await F(t,e);if(n.type!=="tree")throw new Error(`Expected tree object, got ${n.type}`);return ie(n.content).entries}async function is(t,e,n){let r=await A(t,e),o=(await ne(t,r.tree)).find(i=>i.path===n);return o?D(t,o.hash):null}function os(t){let e=0;for(let n=0;n<t.length;n++)t[n]==="/"&&e++;return e}function as(t,e){let n=t.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"\0").replace(/\*/g,"[^/]*").replace(/\?/g,"[^/]").replace(/\0/g,".*");return new RegExp(`^${n}$`).test(e)}async function cs(t,e,n,r){let s=[];for(let m of n)if(m instanceof RegExp)s.push(m);else{let g=gn(m,{fixed:r?.fixed,ignoreCase:r?.ignoreCase,wordRegexp:r?.wordRegexp});if(!g)throw new Error(`Invalid pattern: ${m}`);s.push(g)}let o=await A(t,e),a=(await ne(t,o.tree)).filter(m=>!m.mode.startsWith("120")).sort((m,g)=>m.path<g.path?-1:m.path>g.path?1:0),c=r?.allMatch??!1,l=r?.invert??!1,f=r?.maxCount,u=r?.maxDepth,d=r?.paths,h=[];for(let m of a){if(u!==void 0&&os(m.path)>u||d&&!d.some(k=>as(k,m.path)))continue;let g=await D(t,m.hash),p=pn(g,s,c,l);if(p.binary){h.push({path:m.path,matches:[],binary:!0});continue}if(p.matches.length===0)continue;let b=f!==void 0?p.matches.slice(0,f):p.matches;h.push({path:m.path,matches:b,binary:!1})}return h}function Z(t){if(t.length===0)return[];let e=t.split(`
12
+ `);return e[e.length-1]===""&&e.pop(),e}var ls=4,yn=1024,We=100,Ke=0,ze=1,Ee=2;function mt(t){let e=1;for(;e*e<t;)e++;return e}function fs(t,e){let n=new Map,r=[],s=new Array(t.length),o=new Array(e.length);for(let i=0;i<t.length;i++){let a=t[i],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,s[i]=c}for(let i=0;i<e.length;i++){let a=e[i],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,o[i]=c}return{classes1:s,classes2:o,classInfo:r}}function us(t,e,n,r){let s=0,o=Math.min(e,r);for(;s<o&&t[s]===n[s];)s++;let i=s,a=0,c=o-i;for(;a<c&&t[e-1-a]===n[r-1-a];)a++;return{dstart:i,dend1:e-a-1,dend2:r-a-1}}function bn(t,e,n,r){e-n>We&&(n=e-We),r-e>We&&(r=e+We);let s=0,o=1;for(let c=1;e-c>=n;c++){let l=t[e-c];if(l===Ke)s++;else if(l===Ee)o++;else break}if(s===0)return!1;let i=0,a=1;for(let c=1;e+c<=r;c++){let l=t[e+c];if(l===Ke)i++;else if(l===Ee)a++;else break}return i===0?!1:(i+=s,a+=o,a*ls<a+i)}function hs(t,e,n,r,s,o,i,a,c,l){let f=new Uint8Array(e),u=new Uint8Array(r),d=Math.min(mt(e),yn);for(let p=o;p<=i;p++){let b=s[t[p]].len2;b===0?f[p]=Ke:b>=d?f[p]=Ee:f[p]=ze}let h=Math.min(mt(r),yn);for(let p=o;p<=a;p++){let b=s[n[p]].len1;b===0?u[p]=Ke:b>=h?u[p]=Ee:u[p]=ze}let m=[];for(let p=o;p<=i;p++)f[p]===ze||f[p]===Ee&&!bn(f,p,o,i)?m.push(p):c[p]=1;let g=[];for(let p=o;p<=a;p++)u[p]===ze||u[p]===Ee&&!bn(u,p,o,a)?g.push(p):l[p]=1;return{refIndex1:m,nreff1:m.length,refIndex2:g,nreff2:g.length}}var fe=20,wn=4,ds=256,ms=256,Ve=2147483647;function z(t,e){return t[e]??0}function ps(t,e,n,r,s,o,i,a,c,l){let f=e-o,u=n-s,d=e-s,h=n-o,m=d-h&1,g=d,p=d,b=h,k=h;i[d]=e,a[h]=n;for(let v=1;;v++){let j=!1;g>f?i[--g-1]=-1:++g,p<u?i[++p+1]=-1:--p;for(let R=p;R>=g;R-=2){let I;z(i,R-1)>=z(i,R+1)?I=z(i,R-1)+1:I=z(i,R+1);let w=I,C=I-R;for(;I<n&&C<o&&t[I]===r[C];)I++,C++;if(I-w>fe&&(j=!0),i[R]=I,m&&b<=R&&R<=k&&z(a,R)<=I)return{i1:I,i2:C,minLo:!0,minHi:!0}}b>f?a[--b-1]=Ve:++b,k<u?a[++k+1]=Ve:--k;for(let R=k;R>=b;R-=2){let I;z(a,R-1)<z(a,R+1)?I=z(a,R-1):I=z(a,R+1)-1;let w=I,C=I-R;for(;I>e&&C>s&&t[I-1]===r[C-1];)I--,C--;if(w-I>fe&&(j=!0),a[R]=I,!m&&g<=R&&R<=p&&I<=z(i,R))return{i1:I,i2:C,minLo:!0,minHi:!0}}if(!c){if(j&&v>ds){let R=0,I=null;for(let w=p;w>=g;w-=2){let C=w>d?w-d:d-w,x=z(i,w),P=x-w,O=x-e+(P-s)-C;if(O>wn*v&&O>R&&e+fe<=x&&x<n&&s+fe<=P&&P<o){let $=!0;for(let H=1;H<=fe;H++)if(t[x-H]!==r[P-H]){$=!1;break}$&&(R=O,I={i1:x,i2:P,minLo:!0,minHi:!1})}}if(I)return I;R=0,I=null;for(let w=k;w>=b;w-=2){let C=w>h?w-h:h-w,x=z(a,w),P=x-w,O=n-x+(o-P)-C;if(O>wn*v&&O>R&&e<x&&x<=n-fe&&s<P&&P<=o-fe){let $=!0;for(let H=0;H<fe;H++)if(t[x+H]!==r[P+H]){$=!1;break}$&&(R=O,I={i1:x,i2:P,minLo:!1,minHi:!0})}}if(I)return I}if(v>=l){let R=-1,I=-1;for(let x=p;x>=g;x-=2){let P=Math.min(z(i,x),n),O=P-x;o<O&&(P=o+x,O=o),R<P+O&&(R=P+O,I=P)}let w=Ve,C=Ve;for(let x=k;x>=b;x-=2){let P=Math.max(e,z(a,x)),O=P-x;O<s&&(P=s+x,O=s),P+O<w&&(w=P+O,C=P)}return n+o-w<R-(e+s)?{i1:I,i2:R-I,minLo:!0,minHi:!1}:{i1:C,i2:w-C,minLo:!1,minHi:!0}}}}}function pt(t,e,n,r,s,o,i,a,c,l,f,u,d,h){for(;e<n&&s<o&&t[e]===r[s];)e++,s++;for(;e<n&&s<o&&t[n-1]===r[o-1];)n--,o--;if(e===n)for(let m=s;m<o;m++)a[l[m]]=1;else if(s===o)for(let m=e;m<n;m++)i[c[m]]=1;else{let m=ps(t,e,n,r,s,o,f,u,d,h);pt(t,e,m.i1,r,s,m.i2,i,a,c,l,f,u,m.minLo,h),pt(t,m.i1,n,r,m.i2,o,i,a,c,l,f,u,m.minHi,h)}}function gs(t,e,n,r){let s=[],o=0,i=0,a=1,c=1;for(;o<t.length||i<e.length;){if(o<t.length&&i<e.length&&!n[o]&&!r[i]){s.push({type:"keep",line:t[o]??"",oldLineNo:a++,newLineNo:c++}),o++,i++;continue}for(;o<t.length&&n[o];)s.push({type:"delete",line:t[o]??"",oldLineNo:a++,newLineNo:0}),o++;for(;i<e.length&&r[i];)s.push({type:"insert",line:e[i]??"",oldLineNo:0,newLineNo:c++}),i++}return s}var In=200,En=20,xn=100,ys=1,bs=21,ws=-30,Is=6,Es=-4,xs=10,Os=24,Rs=17,Ps=23,ks=17,Ts=60;function dt(t){let e=0;for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r===32)e+=1;else if(r===9)e+=8-e%8;else if(!(r===10||r===13||r===11||r===12))return e;if(e>=In)return In}return-1}function On(t,e,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=e?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=dt(t[n]));for(let s=n-1;s>=0&&(r.preIndent=dt(t[s]),r.preIndent===-1);s--)if(r.preBlank+=1,r.preBlank===En){r.preIndent=0;break}for(let s=n+1;s<e&&(r.postIndent=dt(t[s]),r.postIndent===-1);s++)if(r.postBlank+=1,r.postBlank===En){r.postIndent=0;break}return r}function Rn(t,e){t.preIndent===-1&&t.preBlank===0&&(e.penalty+=ys),t.endOfFile&&(e.penalty+=bs);let n=t.indent===-1?1+t.postBlank:0,r=t.preBlank+n;e.penalty+=ws*r,e.penalty+=Is*n;let s=t.indent!==-1?t.indent:t.postIndent,o=r!==0;e.effectiveIndent+=s,s===-1||t.preIndent===-1||(s>t.preIndent?e.penalty+=o?xs:Es:s===t.preIndent||(t.postIndent!==-1&&t.postIndent>s?e.penalty+=o?Rs:Os:e.penalty+=o?ks:Ps))}function Cs(t,e){let n=(t.effectiveIndent>e.effectiveIndent?1:0)-(t.effectiveIndent<e.effectiveIndent?1:0);return Ts*n+(t.penalty-e.penalty)}function Pn(t,e,n,r,s,o){let i=0,a=0;for(;t[a];)a++;let c=0,l=0;for(;s[l];)l++;let f=(u,d)=>e[u]===e[d];for(;;){if(a!==i){let u,d,h;do{for(u=a-i,d=-1;i>0&&f(i-1,a-1);){for(t[--i]=1,t[--a]=0;t[i-1];)i--;if(c===0)break;for(l=c-1,c=l;s[c-1];c--);}for(h=a,l>c&&(d=a);!(a>=r||!f(i,a));){for(t[i++]=0,t[a++]=1;t[a];)a++;if(l>=o)break;for(c=l+1,l=c;s[l];l++);l>c&&(d=a)}}while(u!==a-i);if(a!==h)if(d!==-1)for(;l===c;){for(t[--a]=0,t[--i]=1;t[i-1];)i--;for(l=c-1,c=l;s[c-1];c--);}else{let m=-1,g={effectiveIndent:0,penalty:0},p=h;for(a-u-1>p&&(p=a-u-1),a-xn>p&&(p=a-xn);p<=a;p++){let b={effectiveIndent:0,penalty:0},k=On(n,r,p);Rn(k,b);let v=On(n,r,p-u);Rn(v,b),(m===-1||Cs(b,g)<=0)&&(g={effectiveIndent:b.effectiveIndent,penalty:b.penalty},m=p)}for(;a>m;){for(t[--a]=0,t[--i]=1;t[i-1];)i--;for(l=c-1,c=l;s[c-1];c--);}}}if(a>=r)break;for(i=a+1,a=i;t[a];a++);if(l>=o)break;for(c=l+1,l=c;s[l];l++);}}function gt(t,e){let n=t.length,r=e.length,s=new Uint8Array(n),o=new Uint8Array(r);if(n>0&&r>0){let{classes1:i,classes2:a,classInfo:c}=fs(t,e),{dstart:l,dend1:f,dend2:u}=us(i,n,a,r);if(l>f)for(let d=l;d<r-(n-1-f);d++)o[d]=1;else if(l>u)for(let d=l;d<n-(r-1-u);d++)s[d]=1;else{let{refIndex1:d,nreff1:h,refIndex2:m,nreff2:g}=hs(i,n,a,r,c,l,f,u,s,o);if(h>0&&g>0){let p=new Array(h);for(let I=0;I<h;I++)p[I]=i[d[I]];let b=new Array(g);for(let I=0;I<g;I++)b[I]=a[m[I]];let k={},v={},j=h+g+3,R=Math.max(ms,mt(j));pt(p,0,h,b,0,g,s,o,d,m,k,v,!1,R)}else if(h===0)for(let p=0;p<g;p++)o[m[p]]=1;else for(let p=0;p<h;p++)s[d[p]]=1;Pn(s,i,t,n,o,r),Pn(o,a,e,r,s,n)}}else n===0?o.fill(1):s.fill(1);return{changedOld:s,changedNew:o}}function me(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return e.map((i,a)=>({type:"insert",line:i,oldLineNo:0,newLineNo:a+1}));if(r===0)return t.map((i,a)=>({type:"delete",line:i,oldLineNo:a+1,newLineNo:0}));let{changedOld:s,changedNew:o}=gt(t,e);return gs(t,e,s,o)}var Ss=3;function yt(t,e=Ss){if(e=Math.max(0,e),t.length===0)return[];let n=[];for(let a=0;a<t.length;a++){let c=t[a];c&&c.type!=="keep"&&n.push(a)}if(n.length===0)return[];let r=n[0]??0,s=[],o=Math.max(0,r-e),i=Math.min(t.length-1,r+e);for(let a=1;a<n.length;a++){let c=n[a]??0,l=Math.max(0,c-e),f=Math.min(t.length-1,c+e);l<=i+1||(s.push({start:o,end:i}),o=l),i=f}return s.push({start:o,end:i}),s.map(a=>vs(t,a.start,a.end))}function vs(t,e,n){let r=0,s=0,o=0,i=0,a=[],c=!1,l=!1;for(let f=e;f<=n;f++){let u=t[f];if(u)switch(u.type){case"keep":c||(r=u.oldLineNo,c=!0),l||(o=u.newLineNo,l=!0),s++,i++,a.push({type:"context",content:u.line});break;case"delete":c||(r=u.oldLineNo,c=!0),s++,a.push({type:"delete",content:u.line});break;case"insert":l||(o=u.newLineNo,l=!0),i++,a.push({type:"insert",content:u.line});break}}if(c||(r=o>0?o:1),l||(o=r>0?r:1),s===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="insert"){r=u.newLineNo>1?u.newLineNo-1:0;break}}if(i===0)for(let f=e;f<=n;f++){let u=t[f];if(u&&u.type==="delete"){o=u.oldLineNo>1?u.oldLineNo-1:0;break}}return{oldStart:r,oldCount:s,newStart:o,newCount:i,lines:a}}function Ye(t){return t?t.length<40?t:dn(t):"0000000"}function kn(t,e,n,r,s,o){let{path:i,oldMode:a,newMode:c}=e;t.push(`diff --git a/${i} b/${n}`),o?(t.push(`similarity index ${e.similarity??100}%`),t.push(`rename from ${i}`),t.push(`rename to ${n}`)):r?t.push(`new file mode ${c||"100644"}`):s?t.push(`deleted file mode ${a||"100644"}`):a&&c&&a!==c&&(t.push(`old mode ${a}`),t.push(`new mode ${c}`))}function js(t,e,n){let{path:r,oldContent:s,newContent:o,oldMode:i,oldHash:a,newHash:c}=t,l=t.renameTo!==void 0,f=t.renameTo??r,u=t.isNew??s==="",d=t.isDeleted??o==="";if(s===o&&!l)return"";let h=[];if(kn(h,t,f,u,d,l),s!==o){if(a||c){let m=Ye(a),g=Ye(c);u||d||l?h.push(`index ${m}..${g}`):h.push(`index ${m}..${g} ${i||"100644"}`)}e&&n?h.push(`Binary files a/${r} and b/${f} differ`):u?h.push(`Binary files /dev/null and b/${f} differ`):d?h.push(`Binary files a/${r} and /dev/null differ`):h.push(`Binary files a/${r} and b/${f} differ`)}return`${h.join(`
13
+ `)}
14
+ `}function Tn(t){let{path:e,oldContent:n,newContent:r,oldMode:s,newMode:o,oldHash:i,newHash:a}=t,c=t.renameTo!==void 0,l=t.renameTo??e,f=X(n),u=X(r);if(f||u)return js(t,f,u);let d=Z(n),h=Z(r),m=n.length>0&&n.endsWith(`
15
+ `),g=r.length>0&&r.endsWith(`
16
+ `),p="\0NOEOL",b=d;!m&&d.length>0&&(b=d.slice(),b[b.length-1]+=p);let k=h;!g&&h.length>0&&(k=h.slice(),k[k.length-1]+=p);let v=me(b,k);if(!m||!g)for(let O of v)O.line.includes(p)&&(O.line=O.line.replace(p,""));let j=yt(v,t.contextLines);if(j.length===0&&!c)return"";let R=t.isNew??n==="",I=t.isDeleted??r==="",w=[];if(kn(w,t,l,R,I,c),j.length===0)return`${w.join(`
17
+ `)}
18
+ `;if(i||a){let O=Ye(i),$=Ye(a);R||I?w.push(`index ${O}..${$}`):c?w.push(`index ${O}..${$} ${s||"100644"}`):s&&o&&s!==o?w.push(`index ${O}..${$}`):w.push(`index ${O}..${$} ${s||"100644"}`)}let C=O=>O.includes(" ")?" ":"";R?(w.push("--- /dev/null"),w.push(`+++ b/${l}${C(l)}`)):I?(w.push(`--- a/${e}${C(e)}`),w.push("+++ /dev/null")):(w.push(`--- a/${e}${C(e)}`),w.push(`+++ b/${l}${C(l)}`));let x=d.length,P=h.length;for(let O of j){let $=O.oldCount===1?`${O.oldStart}`:`${O.oldStart},${O.oldCount}`,H=O.newCount===1?`${O.newStart}`:`${O.newStart},${O.newCount}`,J="",E=O.oldCount===0?O.oldStart-1:O.oldStart-2;for(let L=E;L>=0;L--){let M=d[L];if(M&&/^[a-zA-Z$_]/.test(M)){J=` ${M.trimEnd().slice(0,79)}`;break}}w.push(`@@ -${$} +${H} @@${J}`);let y=O.oldStart,T=O.newStart;for(let L of O.lines)switch(L.type){case"context":w.push(` ${L.content}`),(!m&&y===x||!g&&T===P)&&w.push("\"),y++,T++;break;case"delete":w.push(`-${L.content}`),!m&&y===x&&w.push("\"),y++;break;case"insert":w.push(`+${L.content}`),!g&&T===P&&w.push("\"),T++;break}}return`${w.join(`
19
+ `)}
20
+ `}function xe(t){let e=t.lastIndexOf("/");return e>=0?t.slice(e+1):t}function As(t,e){if(t.length===0)return;if(t.length===1)return t.shift();let n=xe(e),r=0;for(let s=0;s<t.length;s++){let o=t[s];if(o&&xe(o.path)===n){r=s;break}}return t.splice(r,1)[0]}var $s=50;async function pe(t,e,n=$s){let r=new Map,s=[],o=[],i=[];for(let f of e)if(f.status==="deleted"&&f.oldHash){let u=r.get(f.oldHash)??[];u.push(f),r.set(f.oldHash,u),s.push(f)}else f.status==="added"&&f.newHash?o.push(f):i.push(f);let a=[],c=[];for(let f of o){let u=f.newHash;if(!u){c.push(f);continue}let d=r.get(u);if(d&&d.length>0){let h=As(d,f.path);h&&a.push({oldPath:h.path,newPath:f.path,oldHash:h.oldHash??u,newHash:u,similarity:100,oldMode:h.oldMode,newMode:f.newMode})}else c.push(f)}let l=[...r.values()].flat();if(l.length>0&&c.length>0){let f=await Ls(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}if(l.length>0&&c.length>0){let f=await Ds(t,l,c,n);if(f.length>0){let u=new Set(f.map(h=>h.oldPath)),d=new Set(f.map(h=>h.newPath));l=l.filter(h=>!u.has(h.path)),c=c.filter(h=>!d.has(h.path)),a.push(...f)}}return{remaining:[...i,...l,...c],renames:a}}async function Ls(t,e,n,r){let s=new Map;for(let a=0;a<e.length;a++){let c=e[a];if(!c)continue;let l=xe(c.path);s.has(l)?s.set(l,-1):s.set(l,a)}let o=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let l=xe(c.path);o.has(l)?o.set(l,-1):o.set(l,a)}let i=[];for(let[a,c]of s){if(c===-1)continue;let l=o.get(a);if(l===void 0||l===-1)continue;let f=e[c],u=n[l];if(!f?.oldHash||!u?.newHash||f.oldHash===u.newHash)continue;let d=await se(t,f.oldHash),h=await se(t,u.newHash),m=Hs(d,h);m<r||i.push({oldPath:f.path,newPath:u.path,oldHash:f.oldHash,newHash:u.newHash,similarity:m,oldMode:f.oldMode,newMode:u.newMode})}return i}var Cn=107927;function qe(t){let e=new Map,n=0,r=0,s=0;for(let i=0;i<t.length;i++){let a=t[i],c=r;if(r=(r<<7^s>>>25)>>>0,s=(s<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let l=(r+Math.imul(s,97))%Cn;e.set(l,(e.get(l)??0)+n),n=0,r=0,s=0}if(n>0){let i=(r+Math.imul(s,97))%Cn;e.set(i,(e.get(i)??0)+n)}let o=[];for(let[i,a]of e)o.push({hash:i,count:a});return o.sort((i,a)=>i.hash-a.hash),o}function Ms(t,e){let n=0,r=0,s=0,o=0;for(;s<t.length;){let i=t[s];if(!i)break;for(;o<e.length;){let l=e[o];if(!l||l.hash>=i.hash)break;r+=l.count,o++}let a=i.count,c=0;if(o<e.length){let l=e[o];l&&l.hash===i.hash&&(c=l.count,o++)}a<c?(r+=c-a,n+=a):n+=c,s++}for(;o<e.length;){let i=e[o];i&&(r+=i.count),o++}return{srcCopied:n,literalAdded:r}}function Hs(t,e){return t.length===0&&e.length===0?100:t.length===0||e.length===0?0:Sn(t.length,qe(t),e.length,qe(e))}function Sn(t,e,n,r){let s=Math.max(t,n),o=Math.min(t,n);if(o<s-o)return 0;let{srcCopied:i}=Ms(e,r);return Math.floor(i*100/s)}async function Ds(t,e,n,r){let s=[];for(let f of e)if(f.oldHash){let u=await se(t,f.oldHash);s.push({size:u.length,chunks:qe(u)})}else s.push(null);let o=[];for(let f of n)if(f.newHash){let u=await se(t,f.newHash);o.push({size:u.length,chunks:qe(u)})}else o.push(null);let i=[];for(let f=0;f<e.length;f++){let u=e[f],d=s[f];if(!(!u||!d))for(let h=0;h<n.length;h++){let m=n[h],g=o[h];if(!m||!g)continue;let p=Sn(d.size,d.chunks,g.size,g.chunks);if(p>=r){let b=xe(u.path)===xe(m.path)?1:0;i.push({similarity:p,nameScore:b,delIdx:f,addIdx:h})}}}i.sort((f,u)=>u.similarity-f.similarity||u.nameScore-f.nameScore);let a=new Set,c=new Set,l=[];for(let{similarity:f,delIdx:u,addIdx:d}of i){if(a.has(u)||c.has(d))continue;a.add(u),c.add(d);let h=e[u],m=n[d];!h||!m||l.push({oldPath:h.path,newPath:m.path,oldHash:h.oldHash??"",newHash:m.newHash??"",similarity:f,oldMode:h.oldMode,newMode:m.newMode})}return l}async function ue(t,e,n){return(await le(t,e)).get(n)?.hash??null}async function vn(t,e,n,r){let s=await ae(t,e,n);if(!s.find(c=>c.status==="added"&&c.path===r))return null;let{renames:i}=await pe(t,s);return i.find(c=>c.newPath===r)?.oldPath??null}async function Us(t,e,n,r,s,o){let i=await ue(t,(await A(t,e)).tree,n);if(!i){let g=new Map,p=await A(t,e);for(let b of r)g.set(b.finalIdx,he(e,n,b.currentLine,o+b.finalIdx,s[b.finalIdx],p,!1,void 0));return g}let a=await D(t,i),c=Z(a),l=new Array(s.length),f=[...r],u=e,d=n,h=c;for(;f.length>0;){let g=await A(t,u);if(g.parents.length===0){for(let x of f)l[x.finalIdx]=he(u,d,x.currentLine,o+x.finalIdx,s[x.finalIdx],g,!0,void 0);break}let p=await ue(t,g.tree,d),b=null,k=[];for(let x of g.parents){let P=await A(t,x),O=d,$=await ue(t,P.tree,O);if(!$){let H=await vn(t,P.tree,g.tree,d);H&&(O=H,$=await ue(t,P.tree,O))}if($&&(k.push({hash:x,path:O,blobHash:$}),$===p)){b={hash:x,path:O};break}}if(b){u=b.hash,d=b.path;continue}if(k.length===0){for(let x of f)l[x.finalIdx]=he(u,d,x.currentLine,o+x.finalIdx,s[x.finalIdx],g,!1,void 0);break}let v=k[0],j=await D(t,v.blobHash),R=Z(j),I=me(R,h),w=new Map;for(let x of I)x.type==="keep"&&w.set(x.newLineNo,x.oldLineNo);let C=[];for(let x of f){let P=w.get(x.currentLine);P!==void 0?C.push({finalIdx:x.finalIdx,currentLine:P}):l[x.finalIdx]=he(u,d,x.currentLine,o+x.finalIdx,s[x.finalIdx],g,!1,{hash:v.hash,path:v.path})}f=C,u=v.hash,d=v.path,h=R}let m=new Map;for(let g of r)l[g.finalIdx]&&m.set(g.finalIdx,l[g.finalIdx]);return m}async function jn(t,e,n,r){let s=await A(t,e),o=await ue(t,s.tree,n);if(!o)throw new Error(`no such path '${n}' in ${e.slice(0,7)}`);let i=await D(t,o),a=Z(i),c=r?.startLine??1,l=r?.endLine??a.length,f=a.slice(c-1,l),u=new Array(f.length),d=f.map((p,b)=>({finalIdx:b,currentLine:c+b})),h=e,m=n,g=a;for(;d.length>0;){let p=await A(t,h);if(p.parents.length===0){for(let w of d)u[w.finalIdx]=he(h,m,w.currentLine,c+w.finalIdx,f[w.finalIdx],p,!0,void 0);break}let b=await ue(t,p.tree,m),k=[],v=null;for(let w of p.parents){let C=await A(t,w),x=m,P=await ue(t,C.tree,x);if(!P){let O=await vn(t,C.tree,p.tree,m);O&&(x=O,P=await ue(t,C.tree,x))}if(P){let O={hash:w,path:x,blobHash:P};if(k.push(O),P===b){v=O;break}}}if(v){h=v.hash,m=v.path;continue}if(k.length===0){for(let w of d)u[w.finalIdx]=he(h,m,w.currentLine,c+w.finalIdx,f[w.finalIdx],p,!1,void 0);break}if(k.length===1){let w=k[0],C=await D(t,w.blobHash),x=Z(C),P=me(x,g),O=new Map;for(let H of P)H.type==="keep"&&O.set(H.newLineNo,H.oldLineNo);let $=[];for(let H of d){let J=O.get(H.currentLine);J!==void 0?$.push({finalIdx:H.finalIdx,currentLine:J}):u[H.finalIdx]=he(h,m,H.currentLine,c+H.finalIdx,f[H.finalIdx],p,!1,{hash:w.hash,path:w.path})}d=$,h=w.hash,m=w.path,g=x;continue}let j=[];for(let w of k){let C=await D(t,w.blobHash),x=Z(C),P=me(x,g),O=new Map;for(let $ of P)$.type==="keep"&&O.set($.newLineNo,$.oldLineNo);j.push({info:w,newToOld:O})}let R=new Map;for(let w of d){let C=!1;for(let x=0;x<j.length;x++){let P=j[x],O=P.newToOld.get(w.currentLine);if(O!==void 0){let $=R.get(x);$||($={info:P.info,lines:[]},R.set(x,$)),$.lines.push({finalIdx:w.finalIdx,currentLine:O}),C=!0;break}}C||(u[w.finalIdx]=he(h,m,w.currentLine,c+w.finalIdx,f[w.finalIdx],p,!1,{hash:k[0].hash,path:k[0].path}))}let I=R.get(0);for(let[w,C]of R){if(w===0)continue;let x=await Us(t,C.info.hash,C.info.path,C.lines,f,c);for(let[P,O]of x)u[P]=O}if(I&&I.lines.length>0){d=I.lines,h=I.info.hash,m=I.info.path;let w=await D(t,I.info.blobHash);g=Z(w)}else break}return u}function he(t,e,n,r,s,o,i,a){return{hash:t,origPath:e,origLine:n,finalLine:r,content:s,author:o.author,committer:o.committer,summary:o.message.split(`
21
+ `)[0],boundary:i,previous:a}}var Oe=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(e){this.heap.push({entry:e,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:e}=this;if(e.length===0)return;let n=e[0],r=e.pop();return e.length>0&&(e[0]=r,this.siftDown(0)),n.entry}higher(e,n){let r=e.entry.commit.committer.timestamp,s=n.entry.commit.committer.timestamp;return r>s||r===s&&e.epoch<n.epoch}siftUp(e){let{heap:n}=this;for(;e>0;){let r=e-1>>1;if(!this.higher(n[e],n[r]))break;[n[r],n[e]]=[n[e],n[r]],e=r}}siftDown(e){let{heap:n}=this,r=n.length;for(;;){let s=e,o=2*e+1,i=2*e+2;if(o<r&&this.higher(n[o],n[s])&&(s=o),i<r&&this.higher(n[i],n[s])&&(s=i),s===e)break;[n[e],n[s]]=[n[s],n[e]],e=s}}};async function*ge(t,e,n){if(n?.topoOrder){yield*Ns(t,e,n);return}let r=await $n(t,n?.exclude),s=new Set(r),o=new Oe,i=n?.shallowBoundary,a=n?.limit,c=0,l=Array.isArray(e)?e:[e];for(let f of l)s.has(f)||o.push(await Xe(t,f));for(;o.size>0;){let f=o.pop();if(s.has(f.hash))continue;if(s.add(f.hash),yield f,a!==void 0&&++c>=a)return;if(i?.has(f.hash))continue;let u=n?.firstParent?f.commit.parents.slice(0,1):f.commit.parents;for(let d of u)if(!s.has(d))try{o.push(await Xe(t,d))}catch{}}}async function*Ns(t,e,n){let r=await $n(t,n?.exclude),s=new Set(r),o=new Oe,i=n?.shallowBoundary,a=Array.isArray(e)?e:[e];for(let h of a)s.has(h)||o.push(await Xe(t,h));let c=[],l=new Map;for(;o.size>0;){let h=o.pop();if(s.has(h.hash)||(s.add(h.hash),l.set(h.hash,c.length),c.push(h),i?.has(h.hash)))continue;let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let g of m)if(!s.has(g))try{o.push(await Xe(t,g))}catch{}}let f=c.length;if(f===0)return;let u=new Int32Array(f);for(let h of c){let m=n?.firstParent?h.commit.parents.slice(0,1):h.commit.parents;for(let g of m){let p=l.get(g);p!==void 0&&(u[p]=(u[p]??0)+1)}}let d=[];for(let h=f-1;h>=0;h--)u[h]===0&&d.push(h);for(;d.length>0;){let h=d.pop();yield c[h];let m=n?.firstParent?c[h].commit.parents.slice(0,1):c[h].commit.parents;for(let g of m){let p=l.get(g);if(p!==void 0){let b=(u[p]??0)-1;u[p]=b,b===0&&d.push(p)}}}}async function An(t,e,n){if(e===n)return{ahead:0,behind:0};let r=new Set;for await(let a of ge(t,e))r.add(a.hash);let s=new Set;for await(let a of ge(t,n))s.add(a.hash);let o=0;for(let a of r)s.has(a)||o++;let i=0;for(let a of s)r.has(a)||i++;return{ahead:o,behind:i}}async function $n(t,e){if(!e||e.length===0)return new Set;let n=new Set;for await(let r of ge(t,e))n.add(r.hash);return n}async function Xe(t,e){return{hash:e,commit:await A(t,e)}}async function Bs(t,e){let n=new Set,r=[e],s=0;for(;s<r.length;){let o=r[s++];if(n.has(o))continue;n.add(o);let i;try{i=await A(t,o)}catch{continue}for(let a of i.parents)n.has(a)||r.push(a)}return n}async function bt(t,e,n){if(e===n)return!0;let r=new Set,s=[n],o=0;for(;o<s.length;){let i=s[o++];if(i===e)return!0;if(r.has(i))continue;r.add(i);let a;try{a=await A(t,i)}catch{continue}for(let c of a.parents)r.has(c)||s.push(c)}return!1}async function He(t,e,n){if(e===n)return[e];let r=await Bs(t,e),s=[],o=new Set,i=[n],a=0;for(;a<i.length;){let l=i[a++];if(o.has(l))continue;if(o.add(l),r.has(l)){s.push(l);continue}let f;try{f=await A(t,l)}catch{continue}for(let u of f.parents)o.has(u)||i.push(u)}if(s.length<=1)return s;let c=[];for(let l of s){let f=!1;for(let u of s)if(u!==l&&await bt(t,l,u)){f=!0;break}f||c.push(l)}return c.length<=1?c:Gs(t,e,n,c)}async function Gs(t,e,n,r){let s=new Set(r),o=new Set,i=[],a=new Map,c=new Map,l=0,f=[{hash:e,mask:1,seq:l++},{hash:n,mask:2,seq:l++}];async function u(d){let h=c.get(d);if(h!==void 0)return h;let m=(await A(t,d)).committer.timestamp;return c.set(d,m),m}for(;f.length>0;){let d=0,h=await u(f[0].hash);for(let k=1;k<f.length;k++){let v=f[k],j=await u(v.hash),R=f[d];(j>h||j===h&&v.seq<R.seq)&&(d=k,h=j)}let m=f.splice(d,1)[0],g=a.get(m.hash)??0,p=g|m.mask;if(p===g)continue;if(a.set(m.hash,p),p===3&&s.has(m.hash)&&!o.has(m.hash)&&(i.push(m.hash),o.add(m.hash),o.size===s.size))break;let b=await A(t,m.hash);for(let k of b.parents)f.push({hash:k,mask:p,seq:l++})}for(let d of r)o.has(d)||i.push(d);return i}async function Fs(t,e){return ne(t,e)}async function _s(t,e,n){return ae(t,e,n)}async function Ws(t,e,n){let r=await A(t,n),s=null;return e&&(s=(await A(t,e)).tree),ae(t,s,r.tree)}async function*zs(t,e,n){let r=e?[e]:[];for await(let s of ge(t,n,{exclude:r}))yield{hash:s.hash,message:s.commit.message,tree:s.commit.tree,parents:s.commit.parents,author:s.commit.author,committer:s.commit.committer}}async function Vs(t,e,n){return bt(t,e,n)}async function Ks(t,e,n){return He(t,e,n)}async function Ys(t,e,n){return An(t,e,n)}async function qs(t,e,n,r){return jn(t,e,n,r)}function Xs(t){return t==="insert"?"+":t==="delete"?"-":" "}function Zs(t){return{oldStart:t.oldStart,oldCount:t.oldCount,newStart:t.newStart,newCount:t.newCount,lines:t.lines.map(e=>Xs(e.type)+e.content)}}function Js(t,e,n){let r=Z(t),s=Z(e),o=me(r,s);return yt(o,n).map(Zs)}async function Ln(t,e){let n=await _e(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function Mn(t,e,n,r){let s=await Ln(t,e),o=await Ln(t,n),i=await A(t,s),a=await A(t,o),c=await ae(t,i.tree,a.tree),l=r?.renames!==!1,f=r?.paths,u=[];if(l){let h=await pe(t,c);c=h.remaining,u=h.renames}let d=[];for(let h of c)f&&!f.some(m=>h.path.startsWith(m))||d.push({path:h.path,status:h.status,oldContent:h.oldHash?await D(t,h.oldHash):"",newContent:h.newHash?await D(t,h.newHash):"",oldHash:h.oldHash??void 0,newHash:h.newHash??void 0,oldMode:h.oldMode,newMode:h.newMode});for(let h of u)f&&!f.some(m=>h.newPath.startsWith(m)||h.oldPath.startsWith(m))||d.push({path:h.newPath,oldPath:h.oldPath,status:"renamed",oldContent:await D(t,h.oldHash),newContent:await D(t,h.newHash),oldHash:h.oldHash,newHash:h.newHash,oldMode:h.oldMode,newMode:h.newMode,similarity:h.similarity});return d.sort((h,m)=>h.path.localeCompare(m.path)),d}async function Qs(t,e,n,r){let s=await Mn(t,e,n,r),o=r?.contextLines;return s.map(i=>({path:i.path,status:i.status,oldPath:i.oldPath,similarity:i.similarity,hunks:Js(i.oldContent,i.newContent,o)}))}async function ei(t,e,n,r){let s=await Mn(t,e,n,r),o=r?.contextLines,i="";for(let a of s)i+=Tn({path:a.oldPath??a.path,oldContent:a.oldContent,newContent:a.newContent,oldHash:a.oldHash,newHash:a.newHash,oldMode:a.oldMode,newMode:a.newMode,isNew:a.status==="added",isDeleted:a.status==="deleted",renameTo:a.status==="renamed"?a.path:void 0,similarity:a.similarity,contextLines:o});return i}async function*ti(t,e,n){if(n?.paths&&n.paths.length>0){let r=n?.limit,s=0;for await(let o of ni(t,e,n.paths,n))if(yield o,r!==void 0&&++s>=r)return;return}for await(let r of ge(t,e,n))yield{hash:r.hash,message:r.commit.message,tree:r.commit.tree,parents:r.commit.parents,author:r.commit.author,committer:r.commit.committer}}function wt(t,e){return e.some(n=>t===n||t.startsWith(n.endsWith("/")?n:n+"/"))}async function*ni(t,e,n,r){let s=new Set;if(r?.exclude)for await(let l of ge(t,r.exclude))s.add(l.hash);let o=new Set(s),i=new Oe,a=async l=>{if(!o.has(l))try{let f=await A(t,l);i.push({hash:l,commit:f})}catch{}},c=Array.isArray(e)?e:[e];for(let l of c)await a(l);for(;i.size>0;){let l=i.pop();if(o.has(l.hash))continue;o.add(l.hash);let{commit:f}=l,u=r?.firstParent?f.parents.slice(0,1):f.parents,d=()=>({hash:l.hash,message:f.message,tree:f.tree,parents:f.parents,author:f.author,committer:f.committer});if(u.length===0){(await ae(t,null,f.tree)).some(g=>wt(g.path,n))&&(yield d());continue}if(u.length===1){let m=u[0];try{let g=await A(t,m);(await ae(t,g.tree,f.tree)).some(b=>wt(b.path,n))&&(yield d())}catch{yield d()}await a(m);continue}let h=[];for(let m of u)try{let g=await A(t,m);(await ae(t,g.tree,f.tree)).some(b=>wt(b.path,n))||h.push(m)}catch{}if(h.length>0)await a(h[0]);else{yield d();for(let m of u)await a(m)}}}function ri(t){let e=Math.abs(t),n=t<=0?"+":"-",r=String(Math.floor(e/60)).padStart(2,"0"),s=String(e%60).padStart(2,"0");return`${n}${r}${s}`}function De(t){if("timestamp"in t)return t;let e=t.date??new Date;return{name:t.name,email:t.email,timestamp:Math.floor(e.getTime()/1e3),timezone:ri(e.getTimezoneOffset())}}async function si(t,e){let n=De(e.author),r=e.committer?De(e.committer):n,s=Ae({type:"commit",tree:e.tree,parents:e.parents,author:n,committer:r,message:e.message}),o=await B(t,"commit",s);return e.branch&&await Un(t,e.branch,o),o}async function ii(t,e){let n=De(e.tagger),r=Qt({type:"tag",object:e.target,objectType:e.targetType??"commit",name:e.name,tagger:n,message:e.message}),s=await B(t,"tag",r);return await t.refStore.writeRef(`refs/tags/${e.name}`,{type:"direct",hash:s}),s}async function Dn(t,e){let n=e.branch?`refs/heads/${e.branch}`:null,r=n?await te(t,n):null,s=null;r&&(s=(await A(t,r)).tree);let o=[];for(let[d,h]of Object.entries(e.files))if(h===null)o.push({path:d,hash:null});else{let m=typeof h=="string"?new TextEncoder().encode(h):h,g=await B(t,"blob",m);o.push({path:d,hash:g})}let i;s?i=await Nn(t,s,o):i=await Et(t,null,It(o));let a=De(e.author),c=e.committer?De(e.committer):a,f=Ae({type:"commit",tree:i,parents:r?[r]:[],author:a,committer:c,message:e.message});return{hash:await B(t,"commit",f),parentHash:r}}async function oi(t,e){let{hash:n}=await Dn(t,e);return await Un(t,e.branch,n),n}async function Un(t,e,n){let r=`refs/heads/${e}`;await t.refStore.writeRef(r,{type:"direct",hash:n}),await t.refStore.readRef("HEAD")||await t.refStore.writeRef("HEAD",{type:"symbolic",target:r})}async function ai(t,e){let n=[...e].sort((o,i)=>o.name.localeCompare(i.name)),r=await Promise.all(n.map(async o=>{let i=o.mode;return i||(i=(await t.objectStore.read(o.hash)).type==="tree"?"040000":"100644"),{mode:i,name:o.name,hash:o.hash}})),s=Le({type:"tree",entries:r});return B(t,"tree",s)}async function ci(t,e){return B(t,"blob",new TextEncoder().encode(e))}async function Nn(t,e,n){return Et(t,e,It(n))}function It(t){let e=new Map,n=new Map;for(let r of t){let s=r.path.indexOf("/");if(s===-1)e.set(r.path,{hash:r.hash,mode:r.mode??"100644"});else{let o=r.path.slice(0,s),i=r.path.slice(s+1),a=n.get(o);a||(a=[],n.set(o,a)),a.push({...r,path:i})}}return{files:e,dirs:n}}async function Hn(t,e){let n=await F(t,e);if(n.type!=="tree")throw new Error(`Expected tree object, got ${n.type}`);return ie(n.content).entries}async function Et(t,e,n){let r=new Map;if(e)for(let i of await Hn(t,e))r.set(i.name,i);for(let[i,{hash:a,mode:c}]of n.files)a===null?r.delete(i):r.set(i,{name:i,hash:a,mode:c});for(let[i,a]of n.dirs){let c=r.get(i),l=c?.mode==="040000"?c.hash:null,f=It(a),u=await Et(t,l,f);(await Hn(t,u)).length===0?r.delete(i):r.set(i,{name:i,hash:u,mode:"040000"})}let s=[...r.values()].sort((i,a)=>{let c=i.mode==="040000"?`${i.name}/`:i.name,l=a.mode==="040000"?`${a.name}/`:a.name;return c<l?-1:c>l?1:0}),o=Le({type:"tree",entries:s});return B(t,"tree",o)}function xt(t,e){let n=t.length,r=e.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:s,changedNew:o}=gt(t,e);return li(s,n,o,r)}function li(t,e,n,r){let s=[],o=0,i=0;for(;o<e||i<r;){for(;o<e&&i<r&&!t[o]&&!n[i];)o++,i++;if(o>=e&&i>=r)break;let a=o,c=i;for(;o<e&&t[o];)o++;for(;i<r&&n[i];)i++;(o>a||i>c)&&s.push({buffer1:[a,o-a],buffer2:[c,i-c]})}return s}function fi(t,e,n){let r=[];for(let c of xt(e,t))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of xt(e,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,l)=>c.oStart-l.oStart);let s=[],o=0;function i(c){c>o&&(s.push({stable:!0,buffer:"o",bufferStart:o,bufferLength:c-o,content:e.slice(o,c)}),o=c)}let a=0;for(;a<r.length;){let c=r[a++],l=c.oStart,f=c.oStart+c.oLength,u=[c];for(i(l);a<r.length;){let d=r[a];if(d.oStart>f)break;f=Math.max(f,d.oStart+d.oLength),u.push(d),a++}if(u.length===1){if(c.abLength>0){let d=c.ab==="a"?t:n;s.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:d.slice(c.abStart,c.abStart+c.abLength)})}}else{let d={a:{abMin:t.length,abMax:-1,oMin:e.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:e.length,oMax:-1}};for(let b of u){let k=b.oStart,v=k+b.oLength,j=b.abStart,R=j+b.abLength,I=d[b.ab];I.abMin=Math.min(j,I.abMin),I.abMax=Math.max(R,I.abMax),I.oMin=Math.min(k,I.oMin),I.oMax=Math.max(v,I.oMax)}let h=d.a.abMin+(l-d.a.oMin),m=d.a.abMax+(f-d.a.oMax),g=d.b.abMin+(l-d.b.oMin),p=d.b.abMax+(f-d.b.oMax);s.push({stable:!1,a:t.slice(h,m),o:e.slice(l,f),b:n.slice(g,p)})}o=f}return i(e.length),s}function ui(t,e,n,r){let s=r?.excludeFalseConflicts??!0,o=fi(t,e,n),i=[],a=[];function c(){a.length&&(i.push({type:"ok",lines:a}),a=[])}for(let l of o)l.stable?a.push(...l.content):s&&Gn(l.a,l.b)?a.push(...l.a):(c(),i.push({type:"conflict",a:l.a,o:l.o,b:l.b}));return c(),r?.conflictStyle==="diff3"?Bn(i):Bn(hi(i))}function Ue(t,e,n,r){let s=r?.markerSize??7,o=r?.conflictStyle??"merge",i=`${"<".repeat(s)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(s)}${r?.o?` ${r.o}`:""}`,c="=".repeat(s),l=`${">".repeat(s)}${r?.b?` ${r.b}`:""}`,f=ui(t,e,n,{conflictStyle:o}),u=!1,d=[];for(let h of f)h.type==="ok"?d.push(...h.lines):(u=!0,o==="diff3"?d.push(i,...h.a,a,...h.o,c,...h.b,l):d.push(i,...h.a,c,...h.b,l));return{conflict:u,result:d}}function hi(t){let e=[];for(let n of t)n.type==="ok"?e.push(n):e.push(...di(n));return e}function di(t){let{a:e,b:n}=t;if(e.length===0||n.length===0)return[t];if(Gn(e,n))return[t];let r=xt(e,n);if(r.length===0)return[{type:"ok",lines:e}];let s=[],o=0;for(let a of r){let c=a.buffer1[0];c-o>0&&s.push({type:"ok",lines:e.slice(o,c)});let f=c+a.buffer1[1],u=a.buffer2[0]+a.buffer2[1];s.push({type:"conflict",a:e.slice(c,f),o:[],b:n.slice(a.buffer2[0],u)}),o=f}return e.length-o>0&&s.push({type:"ok",lines:e.slice(o)}),s.length===1&&s[0].type==="conflict"?[t]:s}function Bn(t){if(t.length<3)return t;let e=[t[0]];for(let r=1;r<t.length;r++){let s=e[e.length-1],o=t[r];s.type==="ok"&&o.type==="ok"?s.lines=[...s.lines,...o.lines]:e.push(o)}if(e.length<3)return e;let n=[e[0]];for(let r=1;r<e.length;r++){let s=n[n.length-1],o=e[r];if(s.type==="conflict"&&o.type==="ok"&&o.lines.length<=3&&r+1<e.length&&e[r+1].type==="conflict"){let i=e[r+1],a=s;a.a=[...s.a,...o.lines,...i.a],a.b=[...s.b,...o.lines,...i.b],a.o=[...s.o,...o.lines,...i.o],r++}else n.push(o)}return n}function ye(t,e,n,r){let s=Ue(Y(t),Y(e),Y(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),i=(s.result[s.result.length-1]??"").endsWith("\0"),a=s.result.map(Ot);return(a[a.length-1]??"").startsWith(">>>>>>>")||!i?`${a.join(`
14
22
  `)}
15
23
  `:a.join(`
16
24
  `)}function Y(t){if(t==="")return[];let e=t.split(`
17
- `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function Et(t){return t.endsWith("\0")?t.slice(0,-1):t}function Hn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Re=new TextDecoder,de=new TextEncoder,Un={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Pe(t,e,n,r,s){let{paths:i,baseMap:o,oursMap:a,theirsMap:c}=await ai(t,e,n,r),l=await li(t,i,o,a,c,s);return fi(t,i,s,l)}async function zn(t,e,n,r){let s=await De(t,e,n),i=await v(t,e),o=await v(t,n);if(s.length===0)return{...await Pe(t,null,i.tree,o.tree,r),baseTree:null};if(s.length===1){let l=await v(t,s[0]);return{...await Pe(t,l.tree,i.tree,o.tree,r),baseTree:l.tree}}let a=await Kn(t,e,n,s,1);return{...await Pe(t,a,i.tree,o.tree,r),baseTree:a}}async function ai(t,e,n,r){let s=await le(t,e),i=await le(t,n),o=await le(t,r),a=new Set;for(let l of s.keys())a.add(l);for(let l of i.keys())a.add(l);for(let l of o.keys())a.add(l);let c=new Map;for(let l of a){let f=s.get(l)??null,u=i.get(l)??null,d=o.get(l)??null,h=f?{hash:f.hash,mode:f.mode}:null,m=u?{hash:u.hash,mode:u.mode}:null,g=d?{hash:d.hash,mode:d.mode}:null,p=(f?1:0)|(u?2:0)|(d?4:0),b=f?.hash??null,R=u?.hash??null,j=d?.hash??null,A=0;b!==null&&b===R&&(A|=3),b!==null&&b===j&&(A|=5),R!==null&&R===j&&(A|=6);let O={path:l,stages:[h,m,g],pathnames:[l,l,l],filemask:p,matchMask:A,merged:{result:null,clean:!1},pathConflict:!1};if(ci(O)){c.set(l,O);continue}c.set(l,O)}return{paths:c,baseMap:s,oursMap:i,theirsMap:o}}function ci(t){let[e,n,r]=t.stages,s=e?.hash??null,i=n?.hash??null,o=r?.hash??null;return i===s&&o===s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===o&&i!==null?(t.merged={result:{hash:i,mode:n.mode},clean:!0},!0):i===null&&o===null?(t.merged={result:null,clean:!0},!0):o===s&&i!==s?(n?t.merged={result:{hash:i,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):i===s&&o!==s?(r?t.merged={result:{hash:o,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function li(t,e,n,r,s,i){let o={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[I,y]of n)r.has(I)||a.push({path:I,status:"deleted",oldHash:y.hash,oldMode:y.mode}),s.has(I)||c.push({path:I,status:"deleted",oldHash:y.hash,oldMode:y.mode});for(let[I,y]of r)n.has(I)||a.push({path:I,status:"added",newHash:y.hash,newMode:y.mode});for(let[I,y]of s)n.has(I)||c.push({path:I,status:"added",newHash:y.hash,newMode:y.mode});let l=await me(t,a),f=await me(t,c);if(l.renames.length===0&&f.renames.length===0)return o;let u=new Map,d=new Map;for(let I of l.renames)u.set(I.oldPath,I);for(let I of f.renames)d.set(I.oldPath,I);let h=new Set;for(let[I]of r)!n.has(I)&&s.has(I)&&h.add(I);let m=new Set,g=i?.a??"HEAD",p=i?.b??"theirs";function b(I,y,k=0){o.msgBuf.push({sortKey:I,subOrder:k,text:y})}for(let I of[...n.keys()].sort()){let y=u.get(I),k=d.get(I);if(!y&&!k)continue;let M=n.get(I);if(m.add(I),y&&k)if(m.add(y.newPath),m.add(k.newPath),y.newPath===k.newPath){let L=r.get(y.newPath),C=s.get(k.newPath);if(L.hash===C.hash)o.entries.push(V(y.newPath,L));else{let N=xt(e,y.newPath);N.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],N.pathnames=[I,y.newPath,k.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let L=r.get(y.newPath),C=s.get(k.newPath),N=await Vn(t,M,L,C,i);N.conflict&&b(I,`Auto-merging ${I}`,-1),o.conflicts.push({path:I,reason:"rename-rename",oursPath:y.newPath,theirsPath:k.newPath}),b(I,`CONFLICT (rename/rename): ${I} renamed to ${y.newPath} in ${g} and to ${k.newPath} in ${p}.`),o.entries.push(V(I,M,1)),o.entries.push(W(y.newPath,L.mode,N.hash,2)),o.entries.push(W(k.newPath,C.mode,N.hash,3)),o.worktreeBlobs.set(y.newPath,{hash:N.hash,mode:L.mode}),o.worktreeBlobs.set(k.newPath,{hash:N.hash,mode:C.mode})}else if(y){m.add(y.newPath);let L=s.get(I),C=r.get(y.newPath),N=h.has(y.newPath);if(L)if(N)await Wn(t,o,y.newPath,I,M,C,L,r,s,!1,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(V(y.newPath,C));else if(L.hash===M.hash)o.entries.push(V(y.newPath,C));else if(C.hash===M.hash)o.entries.push(W(y.newPath,C.mode,L.hash));else{let G=xt(e,y.newPath);G.stages=[{hash:M.hash,mode:M.mode},{hash:C.hash,mode:C.mode},{hash:L.hash,mode:L.mode}],G.pathnames=[I,y.newPath,I],G.filemask=7,G.merged={result:null,clean:!1}}else{let G=s.get(y.newPath);if(o.conflicts.push({path:y.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:I}),b(y.newPath,`CONFLICT (rename/delete): ${I} renamed to ${y.newPath} in ${g}, but deleted in ${p}.`),G){o.conflicts.push({path:y.newPath,reason:"add-add"}),b(y.newPath,`Auto-merging ${y.newPath}`,0),b(y.newPath,`CONFLICT (add/add): Merge conflict in ${y.newPath}`,1),o.entries.push(V(y.newPath,C,2)),o.entries.push(V(y.newPath,G,3));let Je=await Xe(t,C.hash,G.hash,C.mode,i);o.worktreeBlobs.set(y.newPath,{hash:Je,mode:C.mode})}else o.entries.push(W(y.newPath,M.mode,M.hash,1)),o.entries.push(V(y.newPath,C,2)),o.worktreeBlobs.set(y.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&b(y.newPath,`CONFLICT (modify/delete): ${y.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${y.newPath} left in tree.`,1)}}else if(k){m.add(k.newPath);let L=r.get(I),C=s.get(k.newPath),N=h.has(k.newPath);if(L)if(N)await Wn(t,o,k.newPath,I,M,L,C,r,s,!0,i);else if(L.hash===M.hash&&C.hash===M.hash)o.entries.push(V(k.newPath,C));else if(L.hash===M.hash)o.entries.push(V(k.newPath,C));else if(C.hash===M.hash)o.entries.push(W(k.newPath,C.mode,L.hash));else{let G=xt(e,k.newPath);G.stages=[{hash:M.hash,mode:M.mode},{hash:L.hash,mode:L.mode},{hash:C.hash,mode:C.mode}],G.pathnames=[I,I,k.newPath],G.filemask=7,G.merged={result:null,clean:!1}}else{let G=r.get(k.newPath);if(o.conflicts.push({path:k.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:I}),b(k.newPath,`CONFLICT (rename/delete): ${I} renamed to ${k.newPath} in ${p}, but deleted in ${g}.`),G){o.conflicts.push({path:k.newPath,reason:"add-add"}),b(k.newPath,`Auto-merging ${k.newPath}`,0),b(k.newPath,`CONFLICT (add/add): Merge conflict in ${k.newPath}`,1),o.entries.push(V(k.newPath,G,2)),o.entries.push(V(k.newPath,C,3));let Je=await Xe(t,G.hash,C.hash,G.mode,i);o.worktreeBlobs.set(k.newPath,{hash:Je,mode:G.mode})}else o.entries.push(W(k.newPath,M.mode,M.hash,1)),o.entries.push(V(k.newPath,C,3)),o.worktreeBlobs.set(k.newPath,{hash:C.hash,mode:C.mode}),C.hash!==M.hash&&b(k.newPath,`CONFLICT (modify/delete): ${k.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${k.newPath} left in tree.`,1)}}}let R=new Set(l.renames.map(I=>I.newPath)),j=new Set(f.renames.map(I=>I.newPath)),A=Nn(n,r),O=Nn(n,s),w=Bn(A,s,n),x=Bn(O,r,n),S=Gn(l.renames,w),E=Gn(f.renames,x),P=Fn(S),T=Fn(E);for(let I of[...P.keys()])T.has(I)&&(P.delete(I),T.delete(I));let $=new Set(P.keys()),D=new Set(T.keys());if(T.size>0)for(let I of a){if(I.status!=="added"||R.has(I.path))continue;let y=_n(I.path,T,$);if(!y)continue;if(e.has(y)||n.has(y)||r.has(y)||s.has(y)){if(r.has(y)){b(y,`CONFLICT (implicit dir rename): Existing file/dir at ${y} in the way of implicit directory rename(s) putting the following path(s) there: ${I.path}.`,1);continue}let L=r.get(I.path),C=s.get(y)??n.get(y);o.entries.push(W(y,L.mode,L.hash,2)),C&&o.entries.push(W(y,C.mode,C.hash,3)),o.worktreeBlobs.set(y,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:y,reason:"add-add"}),b(y,`CONFLICT (file location): ${I.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${y}.`,1);let N=e.get(I.path);N&&(N.merged={result:null,clean:!0}),m.add(I.path);continue}let k=r.get(I.path);o.entries.push(W(y,k.mode,k.hash,2)),o.worktreeBlobs.set(y,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:y,reason:"directory-rename"}),b(y,`CONFLICT (file location): ${I.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${y}.`,1);let M=e.get(I.path);M&&(M.merged={result:null,clean:!0}),m.add(I.path)}if(P.size>0)for(let I of c){if(I.status!=="added"||j.has(I.path))continue;let y=_n(I.path,P,D);if(!y)continue;if(e.has(y)||n.has(y)||r.has(y)||s.has(y)){if(s.has(y)){b(y,`CONFLICT (implicit dir rename): Existing file/dir at ${y} in the way of implicit directory rename(s) putting the following path(s) there: ${I.path}.`,1);continue}let L=s.get(I.path),C=r.get(y)??n.get(y);C&&o.entries.push(W(y,C.mode,C.hash,2)),o.entries.push(W(y,L.mode,L.hash,3)),o.worktreeBlobs.set(y,{hash:L.hash,mode:L.mode}),o.conflicts.push({path:y,reason:"add-add"}),b(y,`CONFLICT (file location): ${I.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${y}.`,1);let N=e.get(I.path);N&&(N.merged={result:null,clean:!0}),m.add(I.path);continue}let k=s.get(I.path);o.entries.push(W(y,k.mode,k.hash,3)),o.worktreeBlobs.set(y,{hash:k.hash,mode:k.mode}),o.conflicts.push({path:y,reason:"directory-rename"}),b(y,`CONFLICT (file location): ${I.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${y}.`,1);let M=e.get(I.path);M&&(M.merged={result:null,clean:!0}),m.add(I.path)}let ae=new Set(o.entries.map(I=>I.path));for(let I of ae){let y=e.get(I);y&&(y.merged={result:null,clean:!0})}for(let I of m){if(ae.has(I))continue;let y=e.get(I);if(!y||y.merged.clean)continue;y.filemask===7&&!y.pathConflict||(y.merged={result:null,clean:!0})}return o}function Nn(t,e){let n=new Set;for(let i of t.keys()){let o=q(i);for(;o;)n.add(o),o=q(o)}let r=new Set;for(let i of e.keys()){let o=q(i);for(;o;)r.add(o),o=q(o)}let s=new Set;for(let i of n)r.has(i)||s.add(i);return s}function Bn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let i=q(s)??"";t.has(i)&&r.add(i)}for(let s of[...r]){let i=q(s);for(;i;)t.has(i)&&!r.has(i)&&r.add(i),i=q(i)}return r}function Gn(t,e){let n=new Map;for(let r of t){let s=q(r.oldPath),i=q(r.newPath),o=!0;for(;;){if(!o){let a=s.length+(s?1:0),c=i.length+(i?1:0),l=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),f=r.newPath.slice(c,r.newPath.indexOf("/",c));if(l!==f)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(i,(a.get(i)??0)+1)}if(o=!1,!s||!i)break;s=q(s),i=q(i)}}return n}function Fn(t){let e=new Map;for(let[n,r]of t){let s=0,i=0,o=null;for(let[a,c]of r)c===s?i=s:c>s&&(s=c,o=a);s>0&&i!==s&&o!==null&&e.set(n,o)}return e}function _n(t,e,n){let r=q(t);for(;r;){let i=e.get(r);if(i!==void 0){if(n.has(i))return null;let o=t.slice(r.length+1);return i?`${i}/${o}`:o}r=q(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function q(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function Wn(t,e,n,r,s,i,o,a,c,l=!1,f){let u=l?a.get(n):c.get(n),d=l?o:i;if(u.hash===d.hash){e.entries.push(W(n,u.mode,u.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await Vn(t,s,i,o,f,l?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===m.hash)e.entries.push(W(n,u.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),l){e.entries.push(V(n,u,2)),e.entries.push(W(n,o.mode,m.hash,3));let g=await Xe(t,u.hash,m.hash,u.mode,f);e.worktreeBlobs.set(n,{hash:g,mode:u.mode})}else{e.entries.push(W(n,i.mode,m.hash,2)),e.entries.push(V(n,u,3));let g=await Xe(t,m.hash,u.hash,i.mode,f);e.worktreeBlobs.set(n,{hash:g,mode:i.mode})}}async function Vn(t,e,n,r,s,i,o){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(ie(e.mode)||ie(n.mode)||ie(r.mode))return{hash:n.hash,conflict:!0};let a=await H(t,e.hash),c=await H(t,n.hash),l=await H(t,r.hash);if(ne(c)||ne(l)||ne(a))return{hash:n.hash,conflict:!0};let f=Y(a),u=Y(c),d=Y(l),h=s?.conflictStyle,m=Ue(u,f,d,{conflictStyle:h});if(!m.conflict)return{hash:await Ot(t,m.result),conflict:!1};let g=s?.a??"HEAD",p=s?.b??"theirs",b=i?.oursPath?`${g}:${i.oursPath}`:g,R=i?.theirsPath?`${p}:${i.theirsPath}`:p,j=ge(c,a,l,{a:b,b:R,markerSize:o??7,conflictStyle:h});return{hash:await B(t,"blob",de.encode(j)),conflict:!0}}async function Xe(t,e,n,r,s){let i=await H(t,e),o=await H(t,n),a=ge(i,"",o,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return B(t,"blob",de.encode(a))}function V(t,e,n=0){return W(t,e.mode,e.hash,n)}function W(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:ce()}}async function fi(t,e,n,r){let s=[...r.entries],i=[...r.conflicts],o=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(h,m,g=0){o.push({sortKey:h,subOrder:g,text:m})}for(let h of[...e.keys()].sort()){let m=e.get(h);if(m.merged.clean){m.merged.result?.hash&&s.push(U(h,m.merged.result.hash,m.merged.result.mode));continue}await ui(t,m,n,s,i,c,a)}o.sort((h,m)=>(h.sortKey<m.sortKey?-1:h.sortKey>m.sortKey?1:0)||h.subOrder-m.subOrder);let l=o.map(h=>h.text),f=[],u=new Set;for(let h of s)h.stage===0&&(f.push(h),u.add(h.path));for(let[h,m]of a)u.has(h)||f.push(U(h,m.hash,m.mode));f.sort((h,m)=>Me(h.path,m.path));let d=await ut(t,f);return{entries:s,conflicts:i,messages:l,resultTree:d}}async function ui(t,e,n,r,s,i,o){let a=e.path,[c,l,f]=e.stages,u=c?.hash??null,d=l?.hash??null,h=f?.hash??null;if(d===null&&h!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",g=n?.b??"theirs";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:h,mode:f.mode});return}if(h===null&&d!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",g=n?.a??"HEAD";i(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),o.set(a,{hash:d,mode:l.mode});return}if(u===null&&d!==null&&h!==null){if(d===h){r.push(U(a,d,l.mode));return}i(a,`Auto-merging ${a}`,0);let m=await H(t,d),g=await H(t,h);if(ne(m)||ne(g)){s.push({path:a,reason:"add-add"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let p=Y(""),b=Y(m),R=Y(g),j=Ue(b,p,R,{conflictStyle:n?.conflictStyle});if(!j.conflict){let w=await Ot(t,j.result);r.push(U(a,w,l.mode));return}s.push({path:a,reason:"add-add"}),i(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let A=ge(m,"",g,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),O=await B(t,"blob",de.encode(A));o.set(a,{hash:O,mode:l.mode});return}if(u!==null&&d!==null&&h!==null){if(d===u){r.push(U(a,h,f.mode));return}if(h===u){r.push(U(a,d,l.mode));return}if(d===h){r.push(U(a,d,l.mode));return}if(i(a,`Auto-merging ${a}`,0),ie(c.mode)||ie(l.mode)||ie(f.mode)){s.push({path:a,reason:"content"}),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let m=await H(t,u),g=await H(t,d),p=await H(t,h);if(ne(g)||ne(p)||ne(m)){s.push({path:a,reason:"content"}),i(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),o.set(a,{hash:d,mode:l.mode});return}let b=Y(m),R=Y(g),j=Y(p),A=Ue(R,b,j,{conflictStyle:n?.conflictStyle});if(A.conflict){let O=e.pathnames[1],w=e.pathnames[2],x=O!==a||w!==a,S={path:a,reason:"content"};x&&(O!==a&&(S.oursOrigPath=O),w!==a&&(S.theirsOrigPath=w)),s.push(S),i(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let E=x?`${n?.a??"HEAD"}:${O}`:n?.a??"HEAD",P=x?`${n?.b??"theirs"}:${w}`:n?.b??"theirs",T=ge(g,m,p,{a:E,b:P,conflictStyle:n?.conflictStyle}),$=await B(t,"blob",de.encode(T));o.set(a,{hash:$,mode:l.mode})}else{let O=await Ot(t,A.result);r.push(U(a,O,l.mode))}return}}var hi=200;async function Kn(t,e,n,r,s){let i=await Promise.all(r.map(async f=>({hash:f,timestamp:(await v(t,f)).committer.timestamp})));i.sort((f,u)=>f.timestamp-u.timestamp);let o=i.map(f=>f.hash),a=o[0],c=a,l=(await v(t,a)).tree;for(let f=1;f<o.length;f++){let u=o[f],d=(await v(t,u)).tree,h=null;if(s>=hi)h=l;else{let p=await De(t,c,u);p.length===0?h=null:p.length===1?h=(await v(t,p[0])).tree:h=await Kn(t,c,u,p,s+1)}let m=await Pe(t,h,l,d);l=await di(t,m,s);let g=Ae({type:"commit",tree:l,parents:[c,u],author:Un,committer:Un,message:"merged common ancestors"});c=await B(t,"commit",g)}return l}async function di(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let i=(a,c)=>s.get(`${a}\0${c}`),o={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let f=i(a.path,1);if(f){r.push({...f,stage:0});continue}}if(a.reason==="rename-rename"){let f=a.oursPath??a.path,u=a.theirsPath??a.path,d=i(a.path,1),h=i(f,2),m=i(u,3);if(h&&m){let g=Re.decode((await F(t,h.hash)).content),p=Re.decode((await F(t,m.hash)).content),b=d?Re.decode((await F(t,d.hash)).content):"",R=8+n*2,j=o.a??"Temporary merge branch 1",A=o.b??"Temporary merge branch 2",O=ge(g,b,p,{a:`${j}:${f}`,o:o.o,b:`${A}:${u}`,markerSize:R}),w=await B(t,"blob",de.encode(O));r.push({path:f,mode:h.mode,hash:w,stage:0,stat:ce()}),r.push({path:u,mode:m.mode,hash:w,stage:0,stat:ce()});continue}else if(h){r.push({...h,stage:0});continue}}let c=i(a.path,2),l=i(a.path,3);if(c&&l&&(a.reason==="content"||a.reason==="add-add")){let f=Re.decode((await F(t,c.hash)).content),u=Re.decode((await F(t,l.hash)).content),d=a.reason==="content"?i(a.path,1):null,h=d?Re.decode((await F(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,g=o.a??"Temporary merge branch 1",p=o.b??"Temporary merge branch 2",b=m?`${g}:${a.oursOrigPath??a.path}`:g,R=m?`${p}:${a.theirsOrigPath??a.path}`:p,j=ge(f,h,u,{a:b,o:o.o,b:R,markerSize:o.markerSize}),A=await B(t,"blob",de.encode(j));r.push({path:a.path,mode:c.mode,hash:A,stage:0,stat:ce()})}else c?r.push({...c,stage:0}):l&&r.push({...l,stage:0})}return r.sort((a,c)=>Me(a.path,c.path)),ut(t,r)}async function Ot(t,e){let n=e.map(Et);if(n.length===0)return B(t,"blob",de.encode(""));let i=(e[e.length-1]??"").endsWith("\0")?n.join(`
25
+ `);if(e[e.length-1]==="")e.pop();else{let n=e[e.length-1]??"";e[e.length-1]=`${n}\0`}return e}function Ot(t){return t.endsWith("\0")?t.slice(0,-1):t}function Gn(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}var Re=new TextDecoder,de=new TextEncoder,Fn={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Pe(t,e,n,r,s){let{paths:o,baseMap:i,oursMap:a,theirsMap:c}=await mi(t,e,n,r),l=await gi(t,o,i,a,c,s);return yi(t,o,s,l)}async function qn(t,e,n,r){let s=await He(t,e,n),o=await A(t,e),i=await A(t,n);if(s.length===0)return{...await Pe(t,null,o.tree,i.tree,r),baseTree:null};if(s.length===1){let l=await A(t,s[0]);return{...await Pe(t,l.tree,o.tree,i.tree,r),baseTree:l.tree}}let a=await Zn(t,e,n,s,1);return{...await Pe(t,a,o.tree,i.tree,r),baseTree:a}}async function mi(t,e,n,r){let s=await le(t,e),o=await le(t,n),i=await le(t,r),a=new Set;for(let l of s.keys())a.add(l);for(let l of o.keys())a.add(l);for(let l of i.keys())a.add(l);let c=new Map;for(let l of a){let f=s.get(l)??null,u=o.get(l)??null,d=i.get(l)??null,h=f?{hash:f.hash,mode:f.mode}:null,m=u?{hash:u.hash,mode:u.mode}:null,g=d?{hash:d.hash,mode:d.mode}:null,p=(f?1:0)|(u?2:0)|(d?4:0),b=f?.hash??null,k=u?.hash??null,v=d?.hash??null,j=0;b!==null&&b===k&&(j|=3),b!==null&&b===v&&(j|=5),k!==null&&k===v&&(j|=6);let R={path:l,stages:[h,m,g],pathnames:[l,l,l],filemask:p,matchMask:j,merged:{result:null,clean:!1},pathConflict:!1};if(pi(R)){c.set(l,R);continue}c.set(l,R)}return{paths:c,baseMap:s,oursMap:o,theirsMap:i}}function pi(t){let[e,n,r]=t.stages,s=e?.hash??null,o=n?.hash??null,i=r?.hash??null;return o===s&&i===s?(n?t.merged={result:{hash:o,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):o===i&&o!==null?(t.merged={result:{hash:o,mode:n.mode},clean:!0},!0):o===null&&i===null?(t.merged={result:null,clean:!0},!0):i===s&&o!==s?(n?t.merged={result:{hash:o,mode:n.mode},clean:!0}:t.merged={result:null,clean:!0},!0):o===s&&i!==s?(r?t.merged={result:{hash:i,mode:r.mode},clean:!0}:t.merged={result:null,clean:!0},!0):!1}async function gi(t,e,n,r,s,o){let i={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[E,y]of n)r.has(E)||a.push({path:E,status:"deleted",oldHash:y.hash,oldMode:y.mode}),s.has(E)||c.push({path:E,status:"deleted",oldHash:y.hash,oldMode:y.mode});for(let[E,y]of r)n.has(E)||a.push({path:E,status:"added",newHash:y.hash,newMode:y.mode});for(let[E,y]of s)n.has(E)||c.push({path:E,status:"added",newHash:y.hash,newMode:y.mode});let l=await pe(t,a),f=await pe(t,c);if(l.renames.length===0&&f.renames.length===0)return i;let u=new Map,d=new Map;for(let E of l.renames)u.set(E.oldPath,E);for(let E of f.renames)d.set(E.oldPath,E);let h=new Set;for(let[E]of r)!n.has(E)&&s.has(E)&&h.add(E);let m=new Set,g=o?.a??"HEAD",p=o?.b??"theirs";function b(E,y,T=0){i.msgBuf.push({sortKey:E,subOrder:T,text:y})}for(let E of[...n.keys()].sort()){let y=u.get(E),T=d.get(E);if(!y&&!T)continue;let L=n.get(E);if(m.add(E),y&&T)if(m.add(y.newPath),m.add(T.newPath),y.newPath===T.newPath){let M=r.get(y.newPath),S=s.get(T.newPath);if(M.hash===S.hash)i.entries.push(V(y.newPath,M));else{let N=Rt(e,y.newPath);N.stages=[{hash:L.hash,mode:L.mode},{hash:M.hash,mode:M.mode},{hash:S.hash,mode:S.mode}],N.pathnames=[E,y.newPath,T.newPath],N.filemask=7,N.merged={result:null,clean:!1}}}else{let M=r.get(y.newPath),S=s.get(T.newPath),N=await Xn(t,L,M,S,o);N.conflict&&b(E,`Auto-merging ${E}`,-1),i.conflicts.push({path:E,reason:"rename-rename",oursPath:y.newPath,theirsPath:T.newPath}),b(E,`CONFLICT (rename/rename): ${E} renamed to ${y.newPath} in ${g} and to ${T.newPath} in ${p}.`),i.entries.push(V(E,L,1)),i.entries.push(W(y.newPath,M.mode,N.hash,2)),i.entries.push(W(T.newPath,S.mode,N.hash,3)),i.worktreeBlobs.set(y.newPath,{hash:N.hash,mode:M.mode}),i.worktreeBlobs.set(T.newPath,{hash:N.hash,mode:S.mode})}else if(y){m.add(y.newPath);let M=s.get(E),S=r.get(y.newPath),N=h.has(y.newPath);if(M)if(N)await Yn(t,i,y.newPath,E,L,S,M,r,s,!1,o);else if(M.hash===L.hash&&S.hash===L.hash)i.entries.push(V(y.newPath,S));else if(M.hash===L.hash)i.entries.push(V(y.newPath,S));else if(S.hash===L.hash)i.entries.push(W(y.newPath,S.mode,M.hash));else{let G=Rt(e,y.newPath);G.stages=[{hash:L.hash,mode:L.mode},{hash:S.hash,mode:S.mode},{hash:M.hash,mode:M.mode}],G.pathnames=[E,y.newPath,E],G.filemask=7,G.merged={result:null,clean:!1}}else{let G=s.get(y.newPath);if(i.conflicts.push({path:y.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:E}),b(y.newPath,`CONFLICT (rename/delete): ${E} renamed to ${y.newPath} in ${g}, but deleted in ${p}.`),G){i.conflicts.push({path:y.newPath,reason:"add-add"}),b(y.newPath,`Auto-merging ${y.newPath}`,0),b(y.newPath,`CONFLICT (add/add): Merge conflict in ${y.newPath}`,1),i.entries.push(V(y.newPath,S,2)),i.entries.push(V(y.newPath,G,3));let Qe=await Ze(t,S.hash,G.hash,S.mode,o);i.worktreeBlobs.set(y.newPath,{hash:Qe,mode:S.mode})}else i.entries.push(W(y.newPath,L.mode,L.hash,1)),i.entries.push(V(y.newPath,S,2)),i.worktreeBlobs.set(y.newPath,{hash:S.hash,mode:S.mode}),S.hash!==L.hash&&b(y.newPath,`CONFLICT (modify/delete): ${y.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${y.newPath} left in tree.`,1)}}else if(T){m.add(T.newPath);let M=r.get(E),S=s.get(T.newPath),N=h.has(T.newPath);if(M)if(N)await Yn(t,i,T.newPath,E,L,M,S,r,s,!0,o);else if(M.hash===L.hash&&S.hash===L.hash)i.entries.push(V(T.newPath,S));else if(M.hash===L.hash)i.entries.push(V(T.newPath,S));else if(S.hash===L.hash)i.entries.push(W(T.newPath,S.mode,M.hash));else{let G=Rt(e,T.newPath);G.stages=[{hash:L.hash,mode:L.mode},{hash:M.hash,mode:M.mode},{hash:S.hash,mode:S.mode}],G.pathnames=[E,E,T.newPath],G.filemask=7,G.merged={result:null,clean:!1}}else{let G=r.get(T.newPath);if(i.conflicts.push({path:T.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:E}),b(T.newPath,`CONFLICT (rename/delete): ${E} renamed to ${T.newPath} in ${p}, but deleted in ${g}.`),G){i.conflicts.push({path:T.newPath,reason:"add-add"}),b(T.newPath,`Auto-merging ${T.newPath}`,0),b(T.newPath,`CONFLICT (add/add): Merge conflict in ${T.newPath}`,1),i.entries.push(V(T.newPath,G,2)),i.entries.push(V(T.newPath,S,3));let Qe=await Ze(t,G.hash,S.hash,G.mode,o);i.worktreeBlobs.set(T.newPath,{hash:Qe,mode:G.mode})}else i.entries.push(W(T.newPath,L.mode,L.hash,1)),i.entries.push(V(T.newPath,S,3)),i.worktreeBlobs.set(T.newPath,{hash:S.hash,mode:S.mode}),S.hash!==L.hash&&b(T.newPath,`CONFLICT (modify/delete): ${T.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${T.newPath} left in tree.`,1)}}}let k=new Set(l.renames.map(E=>E.newPath)),v=new Set(f.renames.map(E=>E.newPath)),j=_n(n,r),R=_n(n,s),I=Wn(j,s,n),w=Wn(R,r,n),C=zn(l.renames,I),x=zn(f.renames,w),P=Vn(C),O=Vn(x);for(let E of[...P.keys()])O.has(E)&&(P.delete(E),O.delete(E));let $=new Set(P.keys()),H=new Set(O.keys());if(O.size>0)for(let E of a){if(E.status!=="added"||k.has(E.path))continue;let y=Kn(E.path,O,$);if(!y)continue;if(e.has(y)||n.has(y)||r.has(y)||s.has(y)){if(r.has(y)){b(y,`CONFLICT (implicit dir rename): Existing file/dir at ${y} in the way of implicit directory rename(s) putting the following path(s) there: ${E.path}.`,1);continue}let M=r.get(E.path),S=s.get(y)??n.get(y);i.entries.push(W(y,M.mode,M.hash,2)),S&&i.entries.push(W(y,S.mode,S.hash,3)),i.worktreeBlobs.set(y,{hash:M.hash,mode:M.mode}),i.conflicts.push({path:y,reason:"add-add"}),b(y,`CONFLICT (file location): ${E.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${y}.`,1);let N=e.get(E.path);N&&(N.merged={result:null,clean:!0}),m.add(E.path);continue}let T=r.get(E.path);i.entries.push(W(y,T.mode,T.hash,2)),i.worktreeBlobs.set(y,{hash:T.hash,mode:T.mode}),i.conflicts.push({path:y,reason:"directory-rename"}),b(y,`CONFLICT (file location): ${E.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${y}.`,1);let L=e.get(E.path);L&&(L.merged={result:null,clean:!0}),m.add(E.path)}if(P.size>0)for(let E of c){if(E.status!=="added"||v.has(E.path))continue;let y=Kn(E.path,P,H);if(!y)continue;if(e.has(y)||n.has(y)||r.has(y)||s.has(y)){if(s.has(y)){b(y,`CONFLICT (implicit dir rename): Existing file/dir at ${y} in the way of implicit directory rename(s) putting the following path(s) there: ${E.path}.`,1);continue}let M=s.get(E.path),S=r.get(y)??n.get(y);S&&i.entries.push(W(y,S.mode,S.hash,2)),i.entries.push(W(y,M.mode,M.hash,3)),i.worktreeBlobs.set(y,{hash:M.hash,mode:M.mode}),i.conflicts.push({path:y,reason:"add-add"}),b(y,`CONFLICT (file location): ${E.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${y}.`,1);let N=e.get(E.path);N&&(N.merged={result:null,clean:!0}),m.add(E.path);continue}let T=s.get(E.path);i.entries.push(W(y,T.mode,T.hash,3)),i.worktreeBlobs.set(y,{hash:T.hash,mode:T.mode}),i.conflicts.push({path:y,reason:"directory-rename"}),b(y,`CONFLICT (file location): ${E.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${y}.`,1);let L=e.get(E.path);L&&(L.merged={result:null,clean:!0}),m.add(E.path)}let J=new Set(i.entries.map(E=>E.path));for(let E of J){let y=e.get(E);y&&(y.merged={result:null,clean:!0})}for(let E of m){if(J.has(E))continue;let y=e.get(E);if(!y||y.merged.clean)continue;y.filemask===7&&!y.pathConflict||(y.merged={result:null,clean:!0})}return i}function _n(t,e){let n=new Set;for(let o of t.keys()){let i=q(o);for(;i;)n.add(i),i=q(i)}let r=new Set;for(let o of e.keys()){let i=q(o);for(;i;)r.add(i),i=q(i)}let s=new Set;for(let o of n)r.has(o)||s.add(o);return s}function Wn(t,e,n){if(t.size===0)return t;let r=new Set;for(let s of e.keys()){if(n.has(s))continue;let o=q(s)??"";t.has(o)&&r.add(o)}for(let s of[...r]){let o=q(s);for(;o;)t.has(o)&&!r.has(o)&&r.add(o),o=q(o)}return r}function zn(t,e){let n=new Map;for(let r of t){let s=q(r.oldPath),o=q(r.newPath),i=!0;for(;;){if(!i){let a=s.length+(s?1:0),c=o.length+(o?1:0),l=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),f=r.newPath.slice(c,r.newPath.indexOf("/",c));if(l!==f)break}if(e.has(s)){let a=n.get(s);a||(a=new Map,n.set(s,a)),a.set(o,(a.get(o)??0)+1)}if(i=!1,!s||!o)break;s=q(s),o=q(o)}}return n}function Vn(t){let e=new Map;for(let[n,r]of t){let s=0,o=0,i=null;for(let[a,c]of r)c===s?o=s:c>s&&(s=c,i=a);s>0&&o!==s&&i!==null&&e.set(n,i)}return e}function Kn(t,e,n){let r=q(t);for(;r;){let o=e.get(r);if(o!==void 0){if(n.has(o))return null;let i=t.slice(r.length+1);return o?`${o}/${i}`:i}r=q(r)}let s=e.get("");return s!==void 0&&!n.has(s)?`${s}/${t}`:null}function q(t){let e=t.lastIndexOf("/");return e===-1?"":t.slice(0,e)}async function Yn(t,e,n,r,s,o,i,a,c,l=!1,f){let u=l?a.get(n):c.get(n),d=l?i:o;if(u.hash===d.hash){e.entries.push(W(n,u.mode,u.hash)),e.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let m=await Xn(t,s,o,i,f,l?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(u.hash===m.hash)e.entries.push(W(n,u.mode,m.hash));else if(e.conflicts.push({path:n,reason:"add-add"}),e.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),e.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),l){e.entries.push(V(n,u,2)),e.entries.push(W(n,i.mode,m.hash,3));let g=await Ze(t,u.hash,m.hash,u.mode,f);e.worktreeBlobs.set(n,{hash:g,mode:u.mode})}else{e.entries.push(W(n,o.mode,m.hash,2)),e.entries.push(V(n,u,3));let g=await Ze(t,m.hash,u.hash,o.mode,f);e.worktreeBlobs.set(n,{hash:g,mode:o.mode})}}async function Xn(t,e,n,r,s,o,i){if(n.hash===e.hash)return{hash:r.hash,conflict:!1};if(r.hash===e.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(oe(e.mode)||oe(n.mode)||oe(r.mode))return{hash:n.hash,conflict:!0};let a=await D(t,e.hash),c=await D(t,n.hash),l=await D(t,r.hash);if(X(c)||X(l)||X(a))return{hash:n.hash,conflict:!0};let f=Y(a),u=Y(c),d=Y(l),h=s?.conflictStyle,m=Ue(u,f,d,{conflictStyle:h});if(!m.conflict)return{hash:await Pt(t,m.result),conflict:!1};let g=s?.a??"HEAD",p=s?.b??"theirs",b=o?.oursPath?`${g}:${o.oursPath}`:g,k=o?.theirsPath?`${p}:${o.theirsPath}`:p,v=ye(c,a,l,{a:b,b:k,markerSize:i??7,conflictStyle:h});return{hash:await B(t,"blob",de.encode(v)),conflict:!0}}async function Ze(t,e,n,r,s){let o=await D(t,e),i=await D(t,n),a=ye(o,"",i,{a:s?.a??"HEAD",b:s?.b??"theirs",conflictStyle:s?.conflictStyle});return B(t,"blob",de.encode(a))}function V(t,e,n=0){return W(t,e.mode,e.hash,n)}function W(t,e,n,r=0){return{path:t,mode:parseInt(e,8),hash:n,stage:r,stat:ce()}}async function yi(t,e,n,r){let s=[...r.entries],o=[...r.conflicts],i=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(h,m,g=0){i.push({sortKey:h,subOrder:g,text:m})}for(let h of[...e.keys()].sort()){let m=e.get(h);if(m.merged.clean){m.merged.result?.hash&&s.push(U(h,m.merged.result.hash,m.merged.result.mode));continue}await bi(t,m,n,s,o,c,a)}i.sort((h,m)=>(h.sortKey<m.sortKey?-1:h.sortKey>m.sortKey?1:0)||h.subOrder-m.subOrder);let l=i.map(h=>h.text),f=[],u=new Set;for(let h of s)h.stage===0&&(f.push(h),u.add(h.path));for(let[h,m]of a)u.has(h)||f.push(U(h,m.hash,m.mode));f.sort((h,m)=>Me(h.path,m.path));let d=await ht(t,f);return{entries:s,conflicts:o,messages:l,resultTree:d}}async function bi(t,e,n,r,s,o,i){let a=e.path,[c,l,f]=e.stages,u=c?.hash??null,d=l?.hash??null,h=f?.hash??null;if(d===null&&h!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"ours"});let m=n?.a??"HEAD",g=n?.b??"theirs";o(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,h,f.mode,3)),i.set(a,{hash:h,mode:f.mode});return}if(h===null&&d!==null&&u!==null){s.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let m=n?.b??"theirs",g=n?.a??"HEAD";o(a,`CONFLICT (modify/delete): ${a} deleted in ${m} and modified in ${g}. Version ${g} of ${a} left in tree.`),c&&r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),i.set(a,{hash:d,mode:l.mode});return}if(u===null&&d!==null&&h!==null){if(d===h){r.push(U(a,d,l.mode));return}o(a,`Auto-merging ${a}`,0);let m=await D(t,d),g=await D(t,h);if(X(m)||X(g)){s.push({path:a,reason:"add-add"}),o(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),o(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),i.set(a,{hash:d,mode:l.mode});return}let p=Y(""),b=Y(m),k=Y(g),v=Ue(b,p,k,{conflictStyle:n?.conflictStyle});if(!v.conflict){let I=await Pt(t,v.result);r.push(U(a,I,l.mode));return}s.push({path:a,reason:"add-add"}),o(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let j=ye(m,"",g,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),R=await B(t,"blob",de.encode(j));i.set(a,{hash:R,mode:l.mode});return}if(u!==null&&d!==null&&h!==null){if(d===u){r.push(U(a,h,f.mode));return}if(h===u){r.push(U(a,d,l.mode));return}if(d===h){r.push(U(a,d,l.mode));return}if(o(a,`Auto-merging ${a}`,0),oe(c.mode)||oe(l.mode)||oe(f.mode)){s.push({path:a,reason:"content"}),o(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),i.set(a,{hash:d,mode:l.mode});return}let m=await D(t,u),g=await D(t,d),p=await D(t,h);if(X(g)||X(p)||X(m)){s.push({path:a,reason:"content"}),o(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),o(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3)),i.set(a,{hash:d,mode:l.mode});return}let b=Y(m),k=Y(g),v=Y(p),j=Ue(k,b,v,{conflictStyle:n?.conflictStyle});if(j.conflict){let R=e.pathnames[1],I=e.pathnames[2],w=R!==a||I!==a,C={path:a,reason:"content"};w&&(R!==a&&(C.oursOrigPath=R),I!==a&&(C.theirsOrigPath=I)),s.push(C),o(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(U(a,u,c.mode,1)),r.push(U(a,d,l.mode,2)),r.push(U(a,h,f.mode,3));let x=w?`${n?.a??"HEAD"}:${R}`:n?.a??"HEAD",P=w?`${n?.b??"theirs"}:${I}`:n?.b??"theirs",O=ye(g,m,p,{a:x,b:P,conflictStyle:n?.conflictStyle}),$=await B(t,"blob",de.encode(O));i.set(a,{hash:$,mode:l.mode})}else{let R=await Pt(t,j.result);r.push(U(a,R,l.mode))}return}}var wi=200;async function Zn(t,e,n,r,s){let o=await Promise.all(r.map(async f=>({hash:f,timestamp:(await A(t,f)).committer.timestamp})));o.sort((f,u)=>f.timestamp-u.timestamp);let i=o.map(f=>f.hash),a=i[0],c=a,l=(await A(t,a)).tree;for(let f=1;f<i.length;f++){let u=i[f],d=(await A(t,u)).tree,h=null;if(s>=wi)h=l;else{let p=await He(t,c,u);p.length===0?h=null:p.length===1?h=(await A(t,p[0])).tree:h=await Zn(t,c,u,p,s+1)}let m=await Pe(t,h,l,d);l=await Ii(t,m,s);let g=Ae({type:"commit",tree:l,parents:[c,u],author:Fn,committer:Fn,message:"merged common ancestors"});c=await B(t,"commit",g)}return l}async function Ii(t,e,n){let r=e.entries.filter(a=>a.stage===0),s=new Map;for(let a of e.entries)a.stage>0&&s.set(`${a.path}\0${a.stage}`,a);let o=(a,c)=>s.get(`${a}\0${c}`),i={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of e.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let f=o(a.path,1);if(f){r.push({...f,stage:0});continue}}if(a.reason==="rename-rename"){let f=a.oursPath??a.path,u=a.theirsPath??a.path,d=o(a.path,1),h=o(f,2),m=o(u,3);if(h&&m){let g=Re.decode((await F(t,h.hash)).content),p=Re.decode((await F(t,m.hash)).content),b=d?Re.decode((await F(t,d.hash)).content):"",k=8+n*2,v=i.a??"Temporary merge branch 1",j=i.b??"Temporary merge branch 2",R=ye(g,b,p,{a:`${v}:${f}`,o:i.o,b:`${j}:${u}`,markerSize:k}),I=await B(t,"blob",de.encode(R));r.push({path:f,mode:h.mode,hash:I,stage:0,stat:ce()}),r.push({path:u,mode:m.mode,hash:I,stage:0,stat:ce()});continue}else if(h){r.push({...h,stage:0});continue}}let c=o(a.path,2),l=o(a.path,3);if(c&&l&&(a.reason==="content"||a.reason==="add-add")){let f=Re.decode((await F(t,c.hash)).content),u=Re.decode((await F(t,l.hash)).content),d=a.reason==="content"?o(a.path,1):null,h=d?Re.decode((await F(t,d.hash)).content):"",m=a.oursOrigPath||a.theirsOrigPath,g=i.a??"Temporary merge branch 1",p=i.b??"Temporary merge branch 2",b=m?`${g}:${a.oursOrigPath??a.path}`:g,k=m?`${p}:${a.theirsOrigPath??a.path}`:p,v=ye(f,h,u,{a:b,o:i.o,b:k,markerSize:i.markerSize}),j=await B(t,"blob",de.encode(v));r.push({path:a.path,mode:c.mode,hash:j,stage:0,stat:ce()})}else c?r.push({...c,stage:0}):l&&r.push({...l,stage:0})}return r.sort((a,c)=>Me(a.path,c.path)),ht(t,r)}async function Pt(t,e){let n=e.map(Ot);if(n.length===0)return B(t,"blob",de.encode(""));let o=(e[e.length-1]??"").endsWith("\0")?n.join(`
18
26
  `):`${n.join(`
19
27
  `)}
20
- `;return B(t,"blob",de.encode(i))}function U(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:ce()}}function xt(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}async function mi(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,i=await zn(t,e,n,s);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}async function pi(t,e,n,r,s){let i=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,o=await Pe(t,e,n,r,i);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}var gi=new TextEncoder,Yn=new TextDecoder,ke=16877,Zn=33188,yi=33261,Jn=40960;function K(t){let e=[];for(let n of t.split("/"))n==="."||n===""||(n===".."?e.pop():e.push(n));return"/"+e.join("/")}function qn(t){let e=t.lastIndexOf("/");return e<=0?"/":t.slice(0,e)}function Xn(t){switch(t){case _.EXECUTABLE:return yi;case _.SYMLINK:return Jn;case _.DIRECTORY:return ke;default:return Zn}}var Ze=class{constructor(e,n,r="/"){this.objectStore=e;this.rootTreeHash=n;this.rootPath=r;let s=K(r);this.overlay.set(s,{type:"directory",mode:ke,mtime:this.epoch})}treeCache=new Map;overlay=new Map;removals=new Set;epoch=new Date(0);toRelative(e){let n=K(e),r=K(this.rootPath);if(n===r)return"";let s=r==="/"?"/":`${r}/`;return n.startsWith(s)?n.slice(s.length):null}async loadTreeDir(e){let n=this.treeCache.get(e);if(n)return n;if(e===""){let o=await this.objectStore.read(this.rootTreeHash);if(o.type!=="tree")return null;let a=se(o.content);return this.treeCache.set("",a.entries),a.entries}let r=e.split("/"),s=await this.loadTreeDir("");if(!s)return null;let i="";for(let o of r){let a=s.find(u=>u.name===o);if(!a||a.mode!==_.DIRECTORY)return null;i=i?`${i}/${o}`:o;let c=this.treeCache.get(i);if(c){s=c;continue}let l=await this.objectStore.read(a.hash);if(l.type!=="tree")return null;let f=se(l.content);this.treeCache.set(i,f.entries),s=f.entries}return s}async lookupTreeEntry(e){if(e==="")return null;let n=e.lastIndexOf("/"),r=n===-1?"":e.slice(0,n),s=n===-1?e:e.slice(n+1),i=await this.loadTreeDir(r);if(!i)return null;let o=i.find(a=>a.name===s);return o?{entry:o,dirEntries:i}:null}async isTreeDirectory(e){return e===""?!0:(await this.lookupTreeEntry(e))?.entry.mode===_.DIRECTORY}ensureOverlayParents(e){let n=qn(e);n===K(this.rootPath)||n==="/"||this.overlay.has(n)||(this.ensureOverlayParents(n),this.overlay.set(n,{type:"directory",mode:ke,mtime:new Date}))}async readFile(e){return Yn.decode(await this.readFileBuffer(e))}async readFileBuffer(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, open '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);return r.content}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`ENOENT: no such file or directory, open '${e}'`);let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, open '${e}'`);if(i.entry.mode===_.DIRECTORY)throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);let o=await this.objectStore.read(i.entry.hash);if(o.type!=="blob")throw new Error(`ENOENT: no such file or directory, open '${e}'`);return o.content}async writeFile(e,n){let r=K(e);this.removals.delete(r),this.ensureOverlayParents(r),this.overlay.set(r,{type:"file",content:typeof n=="string"?gi.encode(n):new Uint8Array(n),mode:Zn,mtime:new Date})}async exists(e){let n=K(e);if(this.removals.has(n))return!1;if(this.overlay.has(n))return!0;let r=this.toRelative(n);return r===null?!1:r===""||await this.isTreeDirectory(r)?!0:await this.lookupTreeEntry(r)!==null}async stat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:r.type==="file"?r.content.byteLength:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ke,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let{entry:o}=i,a=o.mode===_.DIRECTORY,c=o.mode===_.SYMLINK,l=0;return a||(l=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:!1,mode:Xn(o.mode),size:l,mtime:this.epoch}}async lstat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ke,size:0,mtime:this.epoch};let i=await this.lookupTreeEntry(s);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let{entry:o}=i,a=o.mode===_.DIRECTORY,c=o.mode===_.SYMLINK,l=0;return a||(l=(await this.objectStore.read(o.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:c,mode:Xn(o.mode),size:l,mtime:this.epoch}}async mkdir(e,n){let r=K(e);if(this.overlay.has(r)){if(this.overlay.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${e}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let s=this.toRelative(r);if(s!==null&&!this.removals.has(r)&&(s===""||await this.isTreeDirectory(s))){if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let i=qn(r);if(!(this.overlay.has(i)||await this.exists(i)))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${e}'`);this.removals.delete(r),this.overlay.set(r,{type:"directory",mode:ke,mtime:new Date})}async readdir(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);let r=new Set,s=this.toRelative(n);if(s!==null){let o=await this.loadTreeDir(s);if(o)for(let a of o){let c=n==="/"?`/${a.name}`:`${n}/${a.name}`;this.removals.has(c)||r.add(a.name)}}let i=n==="/"?"/":`${n}/`;for(let o of this.overlay.keys())if(o!==n&&o.startsWith(i)){let c=o.slice(i.length).split("/")[0];c&&!this.removals.has(n==="/"?`/${c}`:`${n}/${c}`)&&r.add(c)}if(r.size===0){if(this.overlay.get(n)?.type==="directory")return[];if(s!==null&&(s===""||await this.isTreeDirectory(s)))return[];throw new Error(`ENOENT: no such file or directory, scandir '${e}'`)}return[...r].sort()}async rm(e,n){let r=K(e);if(!await this.exists(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${e}'`)}let i=r==="/"?"/":`${r}/`;if(n?.recursive)for(let o of[...this.overlay.keys()])o.startsWith(i)&&(this.overlay.delete(o),this.removals.add(o));if(this.overlay.delete(r),this.removals.add(r),n?.recursive){let o=this.toRelative(r);o!==null&&await this.markTreeChildrenRemoved(o,r)}}async markTreeChildrenRemoved(e,n){let r=await this.loadTreeDir(e);if(r)for(let s of r){let i=n==="/"?`/${s.name}`:`${n}/${s.name}`;if(this.removals.add(i),s.mode===_.DIRECTORY){let o=e?`${e}/${s.name}`:s.name;await this.markTreeChildrenRemoved(o,i)}}}async readlink(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, readlink '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);return r.target}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let i=await this.lookupTreeEntry(s);if(!i||i.entry.mode!==_.SYMLINK)throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let o=await this.objectStore.read(i.entry.hash);return Yn.decode(o.content)}async symlink(e,n){let r=K(n);if(await this.exists(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureOverlayParents(r),this.removals.delete(r),this.overlay.set(r,{type:"symlink",target:e,mode:Jn,mtime:new Date})}};var Rt=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}ingestPackStream(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Pt=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function bi(t){return{objectStore:new Rt(t.objectStore),refStore:new Pt(t.refStore),hooks:t.hooks}}var kt=class{constructor(e){this.inner=e}overlay=new Map;async read(e){let n=this.overlay.get(e);return n?{type:n.type,content:new Uint8Array(n.content)}:this.inner.read(e)}async write(e,n){let r=await Be(Yt(e,n));return this.overlay.has(r)||await this.inner.exists(r).catch(()=>!1)||this.overlay.set(r,{type:e,content:new Uint8Array(n)}),r}async exists(e){return this.overlay.has(e)?!0:this.inner.exists(e)}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);if(n.getUint32(8)===0)return 0;let o=this.overlay,a=this.inner,c=await Vt(e,async l=>{let f=o.get(l);if(f)return{type:f.type,content:new Uint8Array(f.content)};try{return await a.read(l)}catch{return null}});for(let l of c)o.has(l.hash)||o.set(l.hash,{type:l.type,content:l.content});return c.length}async ingestPackStream(e){let n=this.overlay,r=0;for await(let s of e)n.has(s.hash)||n.set(s.hash,{type:s.type,content:s.content}),r++;return r}async findByPrefix(e){let n=await this.inner.findByPrefix(e),r=[];for(let i of this.overlay.keys())i.startsWith(e)&&r.push(i);return[...new Set([...n,...r])]}},Tt=class{constructor(e){this.inner=e}overlay=new Map;deleted=new Set;async readRef(e){if(this.deleted.has(e))return null;let n=this.overlay.get(e);return n||this.inner.readRef(e)}async writeRef(e,n){this.deleted.delete(e),this.overlay.set(e,tn(n))}async deleteRef(e){this.overlay.delete(e),this.deleted.add(e)}async listRefs(e){let n=await this.inner.listRefs(e),r=new Map;for(let s of n)this.deleted.has(s.name)||r.set(s.name,s);for(let[s,i]of this.overlay)if(!(e&&!s.startsWith(e))){if(i.type==="direct")r.set(s,{name:s,hash:i.hash});else if(i.type==="symbolic"){let o=await this.resolveSymbolic(i.target);o&&r.set(s,{name:s,hash:o})}}return[...r.values()]}async compareAndSwapRef(e,n,r){let s=await this.readRef(e),i=null;if(s&&(s.type==="direct"?i=s.hash:s.type==="symbolic"&&(i=await this.resolveSymbolic(s.target))),n===null){if(s!==null)return!1}else if(i!==n)return!1;return r===null?(this.overlay.delete(e),this.deleted.add(e)):(this.deleted.delete(e),this.overlay.set(e,r)),!0}async resolveSymbolic(e,n=0){if(n>10)return null;let r=await this.readRef(e);return r?r.type==="direct"?r.hash:r.type==="symbolic"?this.resolveSymbolic(r.target,n+1):null:null}};function St(t){return{objectStore:new kt(t.objectStore),refStore:new Tt(t.refStore),hooks:t.hooks}}async function Ct(t,e){let n=await _e(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function Qn(t,e,n,r){let s=new Set,i=0;for(let o of e){if(!sn(o.path))throw new Error(`refusing to check out unsafe path '${o.path}'`);let a=we(r,o.path);if(!on(r,a))throw new Error(`refusing to check out path outside target directory: '${o.path}'`);let c=Kt(a);if(c!==r&&!s.has(c)&&(await n.mkdir(c,{recursive:!0}),s.add(c)),ie(o.mode)){let l=await H(t,o.hash);if(!an(l))throw new Error(`refusing to create symlink with unsafe target '${l}'`);n.symlink?await n.symlink(l,a):await n.writeFile(a,l)}else{let l=await re(t,o.hash);await n.writeFile(a,l)}i++}return i}function er(t){return cn(t.map(e=>({path:e.path,mode:parseInt(e.mode,8),hash:e.hash,stage:0,stat:ce()})))}async function wi(t,e,n,r="/"){let s=await Ct(t,e),i=await v(t,s),o=await Q(t,i.tree),a=await Qn(t,o,n,r);return{commitHash:s,treeHash:i.tree,filesWritten:a}}async function Ii(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??we(r,".git"),i=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let o=await Ct(t,i),a=await v(t,o),c=await Q(t,a.tree),l={...t,fs:e,gitDir:s,workTree:r},f=await Qn(t,c,e,r);return await Fe(l,er(c)),{ctx:l,commitHash:o,treeHash:a.tree,filesWritten:f}}async function Ei(t,e){let n=St(t),r=e?.workTree??"/",s=e?.gitDir??we(r,".git"),i=e?.ref??"HEAD",o=await Ct(n,i),a=await v(n,o),c=new Ze(n.objectStore,a.tree,r),l="refs/heads/main";await n.refStore.writeRef("HEAD",{type:"symbolic",target:l}),await n.refStore.writeRef(l,{type:"direct",hash:o});let f={...n,fs:c,gitDir:s,workTree:r},u=await Q(n,a.tree);return await Fe(f,er(u)),{ctx:f,commitHash:o,treeHash:a.tree,filesWritten:0}}export{Ws as blame,lt as branchNameFromRef,$n as buildCommit,Qs as commit,_s as countAheadBehind,Js as createAnnotatedTag,Zs as createCommit,Ei as createSandboxWorktree,Ii as createWorktree,Ks as diffCommits,Us as diffTrees,wi as extractTree,Fs as findMergeBases,Hs as flattenTree,Ns as getChangedFiles,Bs as getNewCommits,ss as grep,Gs as isAncestor,Yr as listBranches,qr as listTags,mi as mergeTrees,pi as mergeTreesFromTreeHashes,St as overlayRepo,Jr as readBlob,Qr as readBlobText,Zr as readCommit,ts as readFileAtCommit,Xr as readHead,es as readTree,bi as readonlyRepo,Kr as resolveRef,nn as tagNameFromRef,Mn as updateTree,Ys as walkCommitHistory,ti as writeBlob,ei as writeTree};
28
+ `;return B(t,"blob",de.encode(o))}function U(t,e,n,r=0){let s=typeof n=="string"?parseInt(n,8):n;return{path:t,mode:s,hash:e,stage:r,stat:ce()}}function Rt(t,e){let n=t.get(e);return n||(n={path:e,stages:[null,null,null],pathnames:[e,e,e],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},t.set(e,n)),n}async function Ei(t,e,n,r){let s=r?{a:r.ours??"ours",b:r.theirs??"theirs"}:void 0,o=await qn(t,e,n,s);return{treeHash:o.resultTree,clean:o.conflicts.length===0,conflicts:o.conflicts,messages:o.messages}}async function xi(t,e,n,r,s){let o=s?{a:s.ours??"ours",b:s.theirs??"theirs"}:void 0,i=await Pe(t,e,n,r,o);return{treeHash:i.resultTree,clean:i.conflicts.length===0,conflicts:i.conflicts,messages:i.messages}}var Oi=new TextEncoder,Jn=new TextDecoder,ke=16877,tr=33188,Ri=33261,nr=40960;function K(t){let e=[];for(let n of t.split("/"))n==="."||n===""||(n===".."?e.pop():e.push(n));return"/"+e.join("/")}function Qn(t){let e=t.lastIndexOf("/");return e<=0?"/":t.slice(0,e)}function er(t){switch(t){case _.EXECUTABLE:return Ri;case _.SYMLINK:return nr;case _.DIRECTORY:return ke;default:return tr}}var Je=class{constructor(e,n,r="/"){this.objectStore=e;this.rootTreeHash=n;this.rootPath=r;let s=K(r);this.overlay.set(s,{type:"directory",mode:ke,mtime:this.epoch})}treeCache=new Map;overlay=new Map;removals=new Set;epoch=new Date(0);toRelative(e){let n=K(e),r=K(this.rootPath);if(n===r)return"";let s=r==="/"?"/":`${r}/`;return n.startsWith(s)?n.slice(s.length):null}async loadTreeDir(e){let n=this.treeCache.get(e);if(n)return n;if(e===""){let i=await this.objectStore.read(this.rootTreeHash);if(i.type!=="tree")return null;let a=ie(i.content);return this.treeCache.set("",a.entries),a.entries}let r=e.split("/"),s=await this.loadTreeDir("");if(!s)return null;let o="";for(let i of r){let a=s.find(u=>u.name===i);if(!a||a.mode!==_.DIRECTORY)return null;o=o?`${o}/${i}`:i;let c=this.treeCache.get(o);if(c){s=c;continue}let l=await this.objectStore.read(a.hash);if(l.type!=="tree")return null;let f=ie(l.content);this.treeCache.set(o,f.entries),s=f.entries}return s}async lookupTreeEntry(e){if(e==="")return null;let n=e.lastIndexOf("/"),r=n===-1?"":e.slice(0,n),s=n===-1?e:e.slice(n+1),o=await this.loadTreeDir(r);if(!o)return null;let i=o.find(a=>a.name===s);return i?{entry:i,dirEntries:o}:null}async isTreeDirectory(e){return e===""?!0:(await this.lookupTreeEntry(e))?.entry.mode===_.DIRECTORY}ensureOverlayParents(e){let n=Qn(e);n===K(this.rootPath)||n==="/"||this.overlay.has(n)||(this.ensureOverlayParents(n),this.overlay.set(n,{type:"directory",mode:ke,mtime:new Date}))}async readFile(e){return Jn.decode(await this.readFileBuffer(e))}async readFileBuffer(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, open '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);return r.content}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`ENOENT: no such file or directory, open '${e}'`);let o=await this.lookupTreeEntry(s);if(!o)throw new Error(`ENOENT: no such file or directory, open '${e}'`);if(o.entry.mode===_.DIRECTORY)throw new Error(`EISDIR: illegal operation on a directory, read '${e}'`);let i=await this.objectStore.read(o.entry.hash);if(i.type!=="blob")throw new Error(`ENOENT: no such file or directory, open '${e}'`);return i.content}async writeFile(e,n){let r=K(e);this.removals.delete(r),this.ensureOverlayParents(r),this.overlay.set(r,{type:"file",content:typeof n=="string"?Oi.encode(n):new Uint8Array(n),mode:tr,mtime:new Date})}async exists(e){let n=K(e);if(this.removals.has(n))return!1;if(this.overlay.has(n))return!0;let r=this.toRelative(n);return r===null?!1:r===""||await this.isTreeDirectory(r)?!0:await this.lookupTreeEntry(r)!==null}async stat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:r.type==="file"?r.content.byteLength:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ke,size:0,mtime:this.epoch};let o=await this.lookupTreeEntry(s);if(!o)throw new Error(`ENOENT: no such file or directory, stat '${e}'`);let{entry:i}=o,a=i.mode===_.DIRECTORY,c=i.mode===_.SYMLINK,l=0;return a||(l=(await this.objectStore.read(i.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:!1,mode:er(i.mode),size:l,mtime:this.epoch}}async lstat(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let r=this.overlay.get(n);if(r)return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime};let s=this.toRelative(n);if(s===null)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);if(s==="")return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:ke,size:0,mtime:this.epoch};let o=await this.lookupTreeEntry(s);if(!o)throw new Error(`ENOENT: no such file or directory, lstat '${e}'`);let{entry:i}=o,a=i.mode===_.DIRECTORY,c=i.mode===_.SYMLINK,l=0;return a||(l=(await this.objectStore.read(i.hash)).content.byteLength),{isFile:!a&&!c,isDirectory:a,isSymbolicLink:c,mode:er(i.mode),size:l,mtime:this.epoch}}async mkdir(e,n){let r=K(e);if(this.overlay.has(r)){if(this.overlay.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${e}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let s=this.toRelative(r);if(s!==null&&!this.removals.has(r)&&(s===""||await this.isTreeDirectory(s))){if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${e}'`);return}let o=Qn(r);if(!(this.overlay.has(o)||await this.exists(o)))if(n?.recursive)await this.mkdir(o,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${e}'`);this.removals.delete(r),this.overlay.set(r,{type:"directory",mode:ke,mtime:new Date})}async readdir(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, scandir '${e}'`);let r=new Set,s=this.toRelative(n);if(s!==null){let i=await this.loadTreeDir(s);if(i)for(let a of i){let c=n==="/"?`/${a.name}`:`${n}/${a.name}`;this.removals.has(c)||r.add(a.name)}}let o=n==="/"?"/":`${n}/`;for(let i of this.overlay.keys())if(i!==n&&i.startsWith(o)){let c=i.slice(o.length).split("/")[0];c&&!this.removals.has(n==="/"?`/${c}`:`${n}/${c}`)&&r.add(c)}if(r.size===0){if(this.overlay.get(n)?.type==="directory")return[];if(s!==null&&(s===""||await this.isTreeDirectory(s)))return[];throw new Error(`ENOENT: no such file or directory, scandir '${e}'`)}return[...r].sort()}async rm(e,n){let r=K(e);if(!await this.exists(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${e}'`)}let o=r==="/"?"/":`${r}/`;if(n?.recursive)for(let i of[...this.overlay.keys()])i.startsWith(o)&&(this.overlay.delete(i),this.removals.add(i));if(this.overlay.delete(r),this.removals.add(r),n?.recursive){let i=this.toRelative(r);i!==null&&await this.markTreeChildrenRemoved(i,r)}}async markTreeChildrenRemoved(e,n){let r=await this.loadTreeDir(e);if(r)for(let s of r){let o=n==="/"?`/${s.name}`:`${n}/${s.name}`;if(this.removals.add(o),s.mode===_.DIRECTORY){let i=e?`${e}/${s.name}`:s.name;await this.markTreeChildrenRemoved(i,o)}}}async readlink(e){let n=K(e);if(this.removals.has(n))throw new Error(`ENOENT: no such file or directory, readlink '${e}'`);let r=this.overlay.get(n);if(r){if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);return r.target}let s=this.toRelative(n);if(s===null||s==="")throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let o=await this.lookupTreeEntry(s);if(!o||o.entry.mode!==_.SYMLINK)throw new Error(`EINVAL: invalid argument, readlink '${e}'`);let i=await this.objectStore.read(o.entry.hash);return Jn.decode(i.content)}async symlink(e,n){let r=K(n);if(await this.exists(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureOverlayParents(r),this.removals.delete(r),this.overlay.set(r,{type:"symlink",target:e,mode:nr,mtime:new Date})}};var kt=class{constructor(e){this.inner=e}read(e){return this.inner.read(e)}write(e,n){throw new Error("cannot write: object store is read-only")}exists(e){return this.inner.exists(e)}ingestPack(e){throw new Error("cannot ingest pack: object store is read-only")}ingestPackStream(e){throw new Error("cannot ingest pack: object store is read-only")}findByPrefix(e){return this.inner.findByPrefix(e)}},Tt=class{constructor(e){this.inner=e}readRef(e){return this.inner.readRef(e)}writeRef(e,n){throw new Error("cannot write ref: ref store is read-only")}deleteRef(e){throw new Error("cannot delete ref: ref store is read-only")}listRefs(e){return this.inner.listRefs(e)}compareAndSwapRef(e,n,r){throw new Error("cannot update ref: ref store is read-only")}};function Pi(t){return{objectStore:new kt(t.objectStore),refStore:new Tt(t.refStore),hooks:t.hooks}}var Ct=class{constructor(e){this.inner=e}overlay=new Map;async read(e){let n=this.overlay.get(e);return n?{type:n.type,content:new Uint8Array(n.content)}:this.inner.read(e)}async write(e,n){let r=await Be(Xt(e,n));return this.overlay.has(r)||await this.inner.exists(r).catch(()=>!1)||this.overlay.set(r,{type:e,content:new Uint8Array(n)}),r}async exists(e){return this.overlay.has(e)?!0:this.inner.exists(e)}async ingestPack(e){if(e.byteLength<32)return 0;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let s=n.getUint32(4);if(s!==2)throw new Error(`unsupported pack version: ${s}`);if(n.getUint32(8)===0)return 0;let i=this.overlay,a=this.inner,c=await Yt(e,async l=>{let f=i.get(l);if(f)return{type:f.type,content:new Uint8Array(f.content)};try{return await a.read(l)}catch{return null}});for(let l of c)i.has(l.hash)||i.set(l.hash,{type:l.type,content:l.content});return c.length}async ingestPackStream(e){let n=this.overlay,r=0;for await(let s of e)n.has(s.hash)||n.set(s.hash,{type:s.type,content:s.content}),r++;return r}async findByPrefix(e){let n=await this.inner.findByPrefix(e),r=[];for(let o of this.overlay.keys())o.startsWith(e)&&r.push(o);return[...new Set([...n,...r])]}},St=class{constructor(e){this.inner=e}overlay=new Map;deleted=new Set;async readRef(e){if(this.deleted.has(e))return null;let n=this.overlay.get(e);return n||this.inner.readRef(e)}async writeRef(e,n){this.deleted.delete(e),this.overlay.set(e,rn(n))}async deleteRef(e){this.overlay.delete(e),this.deleted.add(e)}async listRefs(e){let n=await this.inner.listRefs(e),r=new Map;for(let s of n)this.deleted.has(s.name)||r.set(s.name,s);for(let[s,o]of this.overlay)if(!(e&&!s.startsWith(e))){if(o.type==="direct")r.set(s,{name:s,hash:o.hash});else if(o.type==="symbolic"){let i=await this.resolveSymbolic(o.target);i&&r.set(s,{name:s,hash:i})}}return[...r.values()]}async compareAndSwapRef(e,n,r){let s=await this.readRef(e),o=null;if(s&&(s.type==="direct"?o=s.hash:s.type==="symbolic"&&(o=await this.resolveSymbolic(s.target))),n===null){if(s!==null)return!1}else if(o!==n)return!1;return r===null?(this.overlay.delete(e),this.deleted.add(e)):(this.deleted.delete(e),this.overlay.set(e,r)),!0}async resolveSymbolic(e,n=0){if(n>10)return null;let r=await this.readRef(e);return r?r.type==="direct"?r.hash:r.type==="symbolic"?this.resolveSymbolic(r.target,n+1):null:null}};function vt(t){return{objectStore:new Ct(t.objectStore),refStore:new St(t.refStore),hooks:t.hooks}}async function jt(t,e){let n=await _e(t,e);if(n)return n;throw new Error(`ref or commit '${e}' not found`)}async function rr(t,e,n,r){let s=new Set,o=0;for(let i of e){if(!an(i.path))throw new Error(`refusing to check out unsafe path '${i.path}'`);let a=Ie(r,i.path);if(!cn(r,a))throw new Error(`refusing to check out path outside target directory: '${i.path}'`);let c=qt(a);if(c!==r&&!s.has(c)&&(await n.mkdir(c,{recursive:!0}),s.add(c)),oe(i.mode)){let l=await D(t,i.hash);if(!ln(l))throw new Error(`refusing to create symlink with unsafe target '${l}'`);n.symlink?await n.symlink(l,a):await n.writeFile(a,l)}else{let l=await se(t,i.hash);await n.writeFile(a,l)}o++}return o}function sr(t){return fn(t.map(e=>({path:e.path,mode:parseInt(e.mode,8),hash:e.hash,stage:0,stat:ce()})))}async function ki(t,e,n,r="/"){let s=await jt(t,e),o=await A(t,s),i=await ne(t,o.tree),a=await rr(t,i,n,r);return{commitHash:s,treeHash:o.tree,filesWritten:a}}async function Ti(t,e,n){let r=n?.workTree??"/",s=n?.gitDir??Ie(r,".git"),o=n?.ref??"HEAD";await e.mkdir(s,{recursive:!0});let i=await jt(t,o),a=await A(t,i),c=await ne(t,a.tree),l={...t,fs:e,gitDir:s,workTree:r},f=await rr(t,c,e,r);return await Fe(l,sr(c)),{ctx:l,commitHash:i,treeHash:a.tree,filesWritten:f}}async function Ci(t,e){let n=vt(t),r=e?.workTree??"/",s=e?.gitDir??Ie(r,".git"),o=e?.ref??"HEAD",i=await jt(n,o),a=await A(n,i),c=new Je(n.objectStore,a.tree,r),l="refs/heads/main";await n.refStore.writeRef("HEAD",{type:"symbolic",target:l}),await n.refStore.writeRef(l,{type:"direct",hash:i});let f={...n,fs:c,gitDir:s,workTree:r},u=await ne(n,a.tree);return await Fe(f,sr(u)),{ctx:f,commitHash:i,treeHash:a.tree,filesWritten:0}}export{qs as blame,ft as branchNameFromRef,Dn as buildCommit,oi as commit,Ys as countAheadBehind,ii as createAnnotatedTag,si as createCommit,Ci as createSandboxWorktree,Ti as createWorktree,Qs as diffCommits,_s as diffTrees,ki as extractTree,Ks as findMergeBases,Fs as flattenTree,ei as formatDiff,Ws as getChangedFiles,zs as getNewCommits,cs as grep,Vs as isAncestor,Jr as listBranches,Qr as listTags,Ei as mergeTrees,xi as mergeTreesFromTreeHashes,vt as overlayRepo,ns as readBlob,rs as readBlobText,ts as readCommit,is as readFileAtCommit,es as readHead,ss as readTree,Pi as readonlyRepo,Zr as resolveRef,sn as tagNameFromRef,Nn as updateTree,ti as walkCommitHistory,ci as writeBlob,ai as writeTree};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "just-git",
3
- "version": "1.5.5",
3
+ "version": "1.5.6",
4
4
  "description": "Pure TypeScript git implementation: virtual filesystem client and embeddable server.",
5
5
  "keywords": [
6
6
  "agent",