1import{t as e}from"./DK3Fl9T5.js";import{C as t,J as n,x as r}from"./D4rxfcNB.js";var i=e({default:()=>u,metadata:()=>a}),a={name:`Austin Seipp`,email:`[email protected]`,title:`Founding Member of Technical Staff`},{name:o,email:s,title:c}=a,l=t(`<p>Austin has worked on open source software for almost 20 years; his first 2version control system was Darcs, and he is now one of the maintainers of 3Jujutsu. Before joining ERSC, he previously worked in software security, 4filesystem backup & recovery, and hardware/RTL design.</p> <p>Before Jujutsu, he was known for his work in the Haskell community on the 5Glasgow Haskell Compiler, and has been a long time contributor to the Nixpkgs 6project.</p>`,1);function u(e){var t=l();n(2),r(e,t)}var d=e({default:()=>ne,metadata:()=>f}),f={name:`Benjamin Brittain`,email:`[email protected]`,title:`CEO & Member of Technical Staff`},{name:p,email:ee,title:te}=f;function ne(e){}var re=e({default:()=>le,metadata:()=>ie}),ie={name:`Brian Schroeder`,email:`[email protected]`,title:`Member of Technical Staff`},{name:ae,email:oe,title:se}=ie,ce=t(`<p>Brian obsesses over the correctness and performance of ERSCâs storage layer. Heâs scaled out knowledge graphs and search infrastructure at Dropbox, designed entity resolution systems behind industry-standard datasets at Gracenote, and built a symbolic execution system to help non-experts prove theorems about their programs.</p> <p>Brian started his twenty-year career by revamping his first teamâs build and version control infrastructure, and is now back where he started.</p>`,1);function le(e){var t=ce();n(2),r(e,t)}var ue=e({default:()=>ge,metadata:()=>de}),de={name:`Conner Petzold`,email:`[email protected]`,title:`Member of Technical Staff`},{name:fe,email:pe,title:me}=de,he=t(`<p>Conner works on products and lives and breathes usability. Throughout his career at mostly early-stage startups, he has built a wide variety of user interfaces, APIs, and successful teams. Heâll use that experience to help shape the next generation of VCS.</p>`);function ge(e){var t=he();r(e,t)}var _e=e({default:()=>Se,metadata:()=>ve}),ve={name:`David Barsky`,email:`[email protected]`,title:`COO & Member of Technical Staff`},{name:ye,email:be,title:xe}=ve;function Se(e){}var Ce=e({default:()=>De,metadata:()=>we}),we={name:`East River Source Control`,email:`[email protected]`},{name:Te,email:Ee}=we;function De(e){}var Oe=e({default:()=>Pe,metadata:()=>ke}),ke={name:`Ilya Grigoriev`,email:`[email protected]`,title:`Member of Technical Staff`},{name:Ae,email:je,title:Me}=ke,Ne=t(`<p>Ilya is a Jujutsu maintainer and has contributed to jj since version 0.5.0 in 2022.</p> <p>Before joining ERSC, Ilya worked at Google for 7 years. Prior to that, he was a mathematician, doing research in algebraic topology and teaching some wonderful students.</p>`,1);function Pe(e){var t=Ne();n(2),r(e,t)}var Fe=e({default:()=>Be,metadata:()=>Ie}),Ie={name:`Keith Frost`,email:`[email protected]`,title:`Member of Technical Staff`},{name:Le,email:Re,title:ze}=Ie;function Be(e){}var Ve=e({default:()=>qe,metadata:()=>He}),He={name:`Martin von Zweigbergk`,email:`[email protected]`,title:`Chief Technical Officer & Member of Technical Staff`},{name:Ue,email:We,title:Ge}=He,Ke=t(`<p>Martin has worked on version control since 2013. He started the Jujutsu (<code>jj</code>) open-source project.</p> <p>Before joining ERSC, he worked at Google for almost 15 years, of which 4 were spent building their Jujutsu-based VCS solution.</p>`,1);function qe(e){var t=Ke();n(2),r(e,t)}var Je=e({default:()=>et,metadata:()=>Ye}),Ye={name:`Nick Gerace`,email:`[email protected]`,title:`Member of Technical Staff`},{name:Xe,email:Ze,title:Qe}=Ye,$e=t(`<p>Nick has worked on infrastructure software for his entire career. From wrangling 7Kubernetes clusters at Rancher Labs and SUSE to replacing Infrastructure-as-Code 8at System Initiative, he has always lived on the bleeding edge of the cloud. 9This passion extends to the next frontier: version control that scales beyond 10git.</p>`);function et(e){var t=$e();r(e,t)}var tt=e({default:()=>st,metadata:()=>nt}),nt={name:`Nick Noble`,email:`[email protected]`,title:`Member of Technical Staff`},{name:rt,email:it,title:at}=nt,ot=t(`<p>The son of a cabinetmaker, Nick Noble has been obsessed with the craft behind creation since he could say the word âtool.â Heâs designed products, processes, and organizations across entertainment (HBO, Netflix), advertising (Thesis, acq. 2022), food (Dinnerlab, Sweetgreen, AG1), tech (Oura, Invision) and design (DJR Type), among others. Across all industries his method remains the same: listen to the constraints, align people around the puzzle, hand them better tools.</p> <p>NN lives in Brooklyn with too many computers and twenty-four tarot decks.</p>`,1);function st(e){var t=ot();n(2),r(e,t)}var ct=e({default:()=>mt,metadata:()=>lt}),lt={name:`Steve Klabnik`,email:`[email protected]`,title:`Chief Product Officer & Member of Technical Staff`},{name:ut,email:dt,title:ft}=lt,pt=t(`<p>Steve Klabnik is Chief Product Officer at East River Source Control. Before joining ERSC, he spent more than a decade helping build the Rust programming language, co-authored the book âThe Rust Programming Language,â and worked at Oxide Computer Company, Cloudflare, and many others over his 10+ years in the field. Steve has spent his career building open-source developer tools and explaining complex technical ideas through writing and speaking engagements.</p>`);function mt(e){var t=pt();r(e,t)}var ht=e({default:()=>Ct,metadata:()=>gt}),gt={title:`An update on ERSC availability`,summary:`humans and machines working together`,category:`product`,publishedAt:`2026-05-04T00:00:00.000Z`,authors:[`ben`]},{title:_t,summary:vt,category:yt,publishedAt:bt,authors:xt}=gt,St=t(`<p>East River Source Control is building a code hosting platform to meet the needs of modern development environments. Our version control model is based on <a href="https://docs.jj-vcs.dev/latest/" rel="nofollow">Jujutsu</a>, with first class conflicts, fine-grained ACLs, and backwards compatibility with git. Taking inspiration from how Google, Meta, and others have done code hosting, weâve built a storage engine that performs at scale.</p> <p>Weâre building for a world where machines and humans are iterating and writing code faster than ever. That means a distributed system that can land thousands of commits per second, instant checkouts, and support for arbitrarily sized files. Our storage engine speaks git and âjjâ<sup id="fnref-1"><a href="#fn-1" class="footnote-ref">1</a></sup>, so you can adopt it <em>today</em>, with new capabilities being available when you need them. Rather than building a better git server, weâve opted to build the substrate that comes next.</p> <p>Weâre currently trialing the product with early partners and are onboarding more teams in the near future. Our focus is on best in class code collaboration for teams, not social features.</p> <p>
10Code review coming soon, and yes, there will be stacked diffs<sup id="fnref-2"><a href="#fn-2" class="footnote-ref">2</a></sup>.</p> <a href="mailto:[email protected]?subject=Early%20access%20to%20Storage" class="block mt-6 underline transition-colors decoration-blue-700 hover:text-blue-700">Request Early Access</a> <div class="footnotes" role="doc-endnotes" aria-labelledby="footnote-label"><h2 id="footnote-label" class="sr-only">Footnotes</h2> <hr/> <ol><li id="fn-1">jj does not have an official native protocol yet, but we intend to work with upstream on something great<a href="#fnref-1" class="footnote-backref">â©</a></li> <li id="fn-2">There is no other reasonable way to review code. Stacked diffs are table stakes.<a href="#fnref-2" class="footnote-backref">â©</a></li></ol></div>`,1);function Ct(e){var t=St();n(10),r(e,t)}var wt=e({default:()=>Mt,metadata:()=>Tt}),Tt={title:`East River Source Control Names Jujutsu Creator Martin von Zweigbergk Chief Technology Officer`,summary:`After 15 years at Google, the creator of JJ joins ERSC as CTO.`,category:`press`,publishedAt:`2026-09-01T00:00:00.000Z`,authors:[`ersc`]},{title:Et,summary:Dt,category:Ot,publishedAt:kt,authors:At}=Tt,jt=t(`<h4>NEW YORK (September 1, 2026), FOR IMMEDIATE RELEASE</h4> <p>East River Source Control has appointed Martin von Zweigbergk, creator of the Jujutsu version control system, as chief technology officer, to lead engineering on the companyâs next generation version control platforms.</p> <p>von Zweigbergk began Jujutsu as a side project in late 2019 and turned it into his full-time work at Google. The project has more than 30,000 stars on GitHub and ships under the Apache 2.0 license.</p> <p>Before Jujutsu, he worked on Fig, the Mercurial client that gave Google engineers a distributed workflow on top of Piper, the monorepo holding most of the companyâs code. He also contributed to Git, which according to the <a href="https://survey.stackoverflow.co/2022/#version-control-version-control-system-prof" rel="nofollow">2022 Stack Overflow developer survey</a>, 96% of developers use professionally.</p> <blockquote><p>The hard problems many engineering teams are just beginning to face are ones heâs already been working on for over a decade. Having Martin lead our engineering affords ERSC a wholly different level of technical capability as an organization.</p></blockquote> <p><strong>â Benjamin Brittain</strong><br/> \xA0\xA0\xA0\xA0 co-founder and chief executive officer of East River Source Control.</p> <p>The company is building tools to help organizations manage the exponentially increasing needs of their source code management and collaboration tools brought about by the way AI is re-shaping the software industry. ERSC Storage will be entering private beta later this month.</p> <p>von Zweigbergk will continue to be a core maintainer of JJ as an open source project under the Apache 2.0 license.</p> <blockquote><p>Jujutsu improves the part of version control that sits on your laptop. But the remote server is still Git, which has a ceiling that comes fast for products at scale. We think the storage layer has to change to match the model, and that work can be better supported by a company than an open source project.</p></blockquote> <p><strong>â Martin von Zweigbergk</strong><br/> \xA0\xA0\xA0\xA0 chief technology officer of East River Source Control.</p> <hr/> <h3>About East River Source Control</h3> <p>East River Source Control is building the next generation of version control platforms for humans and machines. The company launched in 2025, backed by <a href="https://www.amplifypartners.com/" rel="nofollow">Amplify Partners</a>. For more information, visit <a href="https://ersc.io/" rel="nofollow">ersc.io</a>.</p>`,1);function Mt(e){var t=jt();n(24),r(e,t)}var Nt=e({default:()=>Vt,metadata:()=>Pt}),Pt={title:`What comes after git`,summary:`Our thoughts about the future of version control`,category:`product`,publishedAt:`2026-09-10T00:00:00.000Z`,authors:[`steve`]},{title:Ft,summary:It,category:Lt,publishedAt:Rt,authors:zt}=Pt,Bt=t(`<p>East River Source Control has been around for over a year now, but we havenât 11been talking much publicly about what weâve been working on. We arenât 12announcing anything just yet, and we will soon, but we wanted to share some of 13our thinking around version control and where things are going.</p> <h2>Making software is different now</h2> <p>Building software is fundamentally a collaborative task. Projects start with humble 14beginnings, and end up growing into incredibly large and complex systems. But what <code>cargo new</code> generates is the same thing as what a multi-billion line monorepo 15contains: source code. Storing this code safely and securely, managing how it 16changes over time, and ensuring its availability to developers are some of the 17most critical functions of any technology organization.</p> <p>In the old days, you might have had a shared server where your co
17de lived. 18Academia and then industry developed what are now called Source Control 19Management (SCM) and Version Control Systems (VCS). And even within the VCS 20space, we have seen many, many tools over the years: CVS, SVN, and Git are the 21tools that have dominated the open source space, but <a href="https://en.wikipedia.org/wiki/List_of_version-control_software" rel="nofollow">there have been others as 22well</a>: Perforce, ClearCase, Fossil, Mercurial, SCSS, Monotone, 23BitKeeper, and many more. These tools became the standard way to store your code 24and have your team collaborate on changes to it.</p> <p>The rise of agentic development has changed many things about how we develop 25software, but it places particular strain on your version control system. Teams 26are producing more code more quickly than ever before, ballooning repository 27sizes, increasing the number of active branches, and producing significant 28contention on merging in new work. Agents work well with monorepos, because 29they can get more access to more context more easily, exacerbating these issues 30as well. Theyâre moving development environments to the cloud, with isolated 31environments, which means that they need fast clone times. All of these problems 32used to be the domain of larger organizations, but agents are bringing big company 33problems to the rest of us.</p> <p>We believe that as organizations continue to scale up their ambitions, they will 34need a next generation VCS tool. But they are rightfully a bit conservative with 35adopting new tooling in this space. As I said above, source code is one of the 36most precious commodities an organization has, and change has risks as well as 37rewards. We deeply appreciate these concerns, and so are building a bridge from 38the present to the future.</p> <h2>Storage is the foundation</h2> <p>Lots of Git servers exist though. What makes us special?</p> <p>At a high level, the way most places that host Git repositories for you looks 39something like this:</p> <figure class="diagram"><svg role="img" aria-label="How most Git hosts are built" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 209.402 349" width="209.402" height="349" style="--bg:var(--color-white);--fg:var(--color-neutral-900);--line:var(--color-neutral-900);--muted:var(--color-neutral-700);--surface:var(--color-white);--border:var(--color-neutral-900)"><defs><marker id="arrowhead" markerWidth="8" markerHeight="5" refX="7" refY="2.5" orient="auto"><polygon points="0 0, 8 2.5, 0 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker><marker id="arrowhead-start" markerWidth="8" markerHeight="5" refX="1" refY="2.5" orient="auto-start-reverse"><polygon points="8 0, 0 2.5, 8 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker></defs><g class="subgraph" data-id="Server" data-label="Server"><rect x="4" y="163.2" width="201.402" height="181.8" rx="0" ry="0" fill="var(--_group-fill)" stroke="var(--_node-stroke)" stroke-width="1"></rect><rect x="4" y="163.2" width="201.402" height="28" rx="0" ry="0" fill="var(--_group-hdr)" stroke="var(--_node-stroke)" stroke-width="1"></rect><text x="16" y="177.2" font-size="12" font-weight="600" fill="var(--_text-sec)" dy="4.199999999999999">Server</text></g><polyline class="edge" data-from="Client" data-to="Serving" data-style="solid" data-arrow-start="true" data-arrow-end="true" data-label="Git protocol" points="104.701,40.900000000000006 104.701,207.2" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="Serving" data-to="Storage" data-style="solid" data-arrow-start="true" data-arrow-end="true" points="104.701,244.1 104.701,292.1" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><g class="edge-label" data-from="Client" data-to="Serving" data-label="Git protocol"><rect x="69.201" y="83.9" width="70.516" height="30.3" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="1"></rect><text x="104.459" y="99.05000000000001" text-anchor="middle" font-size="11" font-weight="400" fill="var(--_text-sec)" dy="3.8499999999999996">Git protocol</text></g><g class="node" data-id="Client" data-label="Git client" data-shape="rectangle"><rect x="59.64349999999999" y="4" width="90.11500000000001" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="104.701" y="22.450000000000003" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git client</text></g><g class="node" data-id="Serving" data-label="Git serving layer" data-shape="rectangle"><rect x="35.56099999999998" y="207.2" width="138.28000000000003" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="104.701" y="225.64999999999998" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git serving layer</text></g><g class="node" data-id="Storage" data-label="Git repository storage" data-shape="rectangle"><rect x="20" y="292.1" width="169.402" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="104.701" y="310.55" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git repository storage</text></g></svg><figcaption>How most Git hosts are built</figcaption></figure> <p>Your <code>git</code> client connects to their service via the Git protocol. Inside the 40service, they store your repositories on disk, and have a service layer 41that connects the two.</p> <p>Now, this is a bit reductive: it is going to be many servers, with a complex 42layer of services in front of the repositories. The storage will be replicated, 43and thereâs all sorts of stuff going on. Weâre focusing on the overall 44architecture here, but donât mistake the simplicity of the diagram for the 45simplicity of the system. There is a lot going on here, but those details 46arenât germane at this exact moment.</p> <p>In that spirit, here is the diagram for what weâre doing:</p> <figure class="diagram"><svg role="img" aria-label="How ERSC is built" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 214.58900000000003 363" width="214.58900000000003" height="363" style="--bg:var(--color-white);--fg:var(--color-neutral-900);--line:var(--color-neutral-900);--muted:var(--color-neutral-700);--surface:var(--color-white);--border:var(--color-neutral-900)"><defs><marker id="arrowhead" markerWidth="8" markerHeight="5" refX="7" refY="2.5" orient="auto"><polygon points="0 0, 8 2.5, 0 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker><marker id="arrowhead-start" markerWidth="8" markerHeight="5" refX="1" refY="2.5" orient="auto-start-reverse"><polygon points="8 0, 0 2.5, 8 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker></defs><g class="subgraph" data-id="Server" data-label="Server"><rect x="4" y="163.2" width="206.58900000000003" height="195.8" rx="0" ry="0" fill="var(--_group-fill)" stroke="var(--_node-stroke)" stroke-width="1"></rect><rect x="4" y="163.2" width="206.58900000000003" height="28" rx="0" ry="0" fill="var(--_group-hdr)" stroke="var(--_node-stroke)" stroke-width="1"></rect><text x="16" y="177.2" font-size="12" font-weight="600" fill="var(--_text-sec)" dy="4.199999999999999">Server</text></g>
46<polyline class="edge" data-from="Client" data-to="Bridge" data-style="solid" data-arrow-start="true" data-arrow-end="true" data-label="Git protocol" points="107.29450000000001,40.900000000000006 107.29450000000001,207.2" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="Bridge" data-to="Engine" data-style="solid" data-arrow-start="true" data-arrow-end="true" points="107.29450000000001,244.1 107.29450000000001,292.1" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><g class="edge-label" data-from="Client" data-to="Bridge" data-label="Git protocol"><rect x="71.7945" y="83.9" width="70.516" height="30.3" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="1"></rect><text x="107.05250000000001" y="99.05000000000001" text-anchor="middle" font-size="11" font-weight="400" fill="var(--_text-sec)" dy="3.8499999999999996">Git protocol</text></g><g class="node" data-id="Client" data-label="Git client" data-shape="rectangle"><rect x="62.23700000000001" y="4" width="90.11500000000001" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="107.29450000000001" y="22.450000000000003" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git client</text></g><g class="node" data-id="Bridge" data-label="Git bridge" data-shape="rectangle"><rect x="58.53200000000001" y="207.2" width="97.525" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="107.29450000000001" y="225.64999999999998" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git bridge</text></g><g class="node" data-id="Engine" data-label="Non-Git storage engine" data-shape="cylinder"><rect x="20" y="299.1" width="174.58900000000003" height="36.900000000000006" fill="var(--_node-fill)" stroke="none"></rect><line x1="20" y1="299.1" x2="20" y2="336" stroke="var(--_node-stroke)" stroke-width="0.75"></line><line x1="194.58900000000003" y1="299.1" x2="194.58900000000003" y2="336" stroke="var(--_node-stroke)" stroke-width="0.75"></line><ellipse cx="107.29450000000001" cy="336" rx="87.29450000000001" ry="7" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></ellipse><ellipse cx="107.29450000000001" cy="299.1" rx="87.29450000000001" ry="7" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></ellipse><text x="107.29450000000001" y="317.55" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Non-Git storage engine</text></g></svg><figcaption>How ERSC is built</figcaption></figure> <p>It looks pretty similar! It is also simplified, for example, there is a GraphQL API 47interface not shown in this diagram at all. But the difference is important: 48while you still connect to our storage with your regular <code>git</code> client and it 49uses the <code>git</code> protocol, we donât store <code>git</code> repositories on our servers. 50Instead, we have a custom storage engine.</p> <h1>Git is not built for the future</h1> <p>Put plainly, we do not believe that Git is the future of source control. Git has 51served developers well for many years, but it was designed around the 52constraints of 2005, not 2025, let alone 2035. For example, it was built 53for the Linux kernel: an open source project. Open Source is incredibly 54important to our industry, but this means itâs missing key features that are 55useful for organizations that arenât sharing their code with everyone. Also, 56while the Linux kernel is not a small repository, with 7.2 clocking in at 57about 43 million lines of code, major companies in the industry already had 58monorepos that were measured in billions of lines of code years ago. The choices 59you make really matter at this scale.</p> <p>At the same time, itâs difficult to consider using a different version control 60system. Git is baked into so much of our tooling: itâs not SvnOps, itâs GitOps! 61So many things speak Git, and this makes it difficult to consider alternatives. 62When Git was created, several other projects started around the same time, 63notably Mercurial and Bazaar. But network effects led to Git being used by 64virtually everyone.</p> <p>So what to do? Speak the Git protocol, while changing how the storage layer 65works. While this doesnât solve all of the problems that we foresee in the 66future, it does help out. Our system is horizontally scalable in a way that 67systems that use a Git repository as the source of truth are not. And because 68this isnât a global, unified platform, other companiesâ usage does not affect 69yours, as theyâre separate deployments. This gives you reliability and control,
70two things that are critical when talking about infrastructure.</p> <h2>Engineering for adoption</h2> <p>So what about those future possibilities? What if you need to scale beyond what 71the Git protocol offers, or you need features that arenât provided by Git? This 72strategy of speaking the protocol has an advantage: you can speak multiple 73protocols.</p> <p>This is where <a href="https://www.jj-vcs.dev/latest/" rel="nofollow">Jujutsu</a> comes in. Weâre big 74fans of <code>jj</code> here at ERSC, and part of that is that we really love how itâs an 75example of a technology thatâs easy to incrementally adopt. While <code>jj</code> is its 76own version control system, it has the ability to speak to multiple different 77backends. Most developers use <code>jj</code> with the Git backend to work directly with 78a local Git repository, but Google also has a backend to their Piper version 79control system. This is what lets individual developers choose to use <code>jj</code> at work, even if their co-workers still use the regular Git client: to the 80server, itâs just another user of the Git protocol. Weâll be mirroring this 81strategy, but on the server:</p> <figure class="diagram"><svg role="img" aria-label="Two protocols over one storage engine" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 359.68741666666665 394.20000000000005" width="359.68741666666665" height="394.20000000000005" style="--bg:var(--color-white);--fg:var(--color-neutral-900);--line:var(--color-neutral-900);--muted:var(--color-neutral-700);--surface:var(--color-white);--border:var(--color-neutral-900)"><defs><marker id="arrowhead" markerWidth="8" markerHeight="5" refX="7" refY="2.5" orient="auto"><polygon points="0 0, 8 2.5, 0 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker><marker id="arrowhead-start" markerWidth="8" markerHeight="5" refX="1" refY="2.5" orient="auto-start-reverse"><polygon points="8 0, 0 2.5, 8 5" fill="var(--_arrow)" stroke="var(--_arrow)" stroke-width="0.75" stroke-linejoin="round"></polygon></marker></defs><g class="subgraph" data-id="Server" data-label="Server"><rect x="23.278416666666658" y="177.5" width="332.409" height="212.70000000000002" rx="0" ry="0" fill="var(--_group-fill)" stroke="var(--_node-stroke)" stroke-width="1"></rect><rect x="23.278416666666658" y="177.5" width="332.409" height="28" rx="0" ry="0" fill="var(--_group-hdr)" stroke="var(--_node-stroke)" stroke-width="1"></rect><text x="35.27841666666666" y="191.5" font-size="12" font-weight="600" fill="var(--_text-sec)" dy="4.199999999999999">Server</text></g><polyline class="edge" data-from="GitClient" data-to="GitBridge" data-style="solid" data-arrow-start="true" data-arrow-end="true" data-label="Git protocol" points="49.057500000000005,48.050000000000004 49.057500000000005,159.5 71.78674999999998,159.5 71.78675,224.31666666666666" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="JJClient" data-to="GitBridge" data-style="solid" data-arrow-start="true" data-arrow-end="true" data-label="Git protocol" points="174.19316666666666,48.050000000000004 174.19316666666666,91.2 138.38141666666667,91.2 138.38141666666667,159.5 104.29508333333334,159.5 104.29508333333334,224.31666666666666" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="JJClient" data-to="NativeBridge" data-style="solid" data-arrow-start="true" data-arrow-end="true" data-label="Native protocol 82(future)" points="201.2675,48.050000000000004 201.2675,76.9 255.11458333333334,76.9 255.11458333333334,159.5 254.24541666666667,159.5 254.24541666666664,224.31666666666666" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="GitBridge" data-to="Engine" data-style="solid" data-arrow-start="true" data-arrow-end="true" points="88.04091666666666,261.2166666666667 88.04091666666666,300.70833333333337 171.14316666666667,300.70833333333337 171.14316666666667,323.3" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><polyline class="edge" data-from="NativeBridge" data-to="Engine" data-style="solid" data-arrow-start="true" data-arrow-end="true" points="254.24541666666664,278.1166666666667 254.24541666666664,300.70833333333337 171.14316666666667,300.70833333333337 171.14316666666667,323.3" fill="none" stroke="var(--_line)" stroke-width="1" marker-end="url(#arrowhead)" marker-start="url(#arrowhead-start)"></polyline><g class="edge-label" data-from="GitClient" data-to="GitBridge" data-label="Git protocol"><rect x="13.557500000000005" y="98.2" width="70.516" height="30.3" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="1"></rect><text x="48.81550000000001" y="113.35000000000001" text-anchor="middle" font-size="11" font-weight="400" fill="var(--_text-sec)" dy="3.8499999999999996">Git protocol</text></g><g class="edge-label" data-from="JJClient" data-to="GitBridge" data-label="Git protocol"><rect x="102.88141666666667" y="98.2" width="70.516" height="30.3" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="1"></rect><text x="138.13941666666668" y="113.35000000000001" text-anchor="middle" font-size="11" font-weight="400" fill="var(--_text-sec)" dy="3.8499999999999996">Git protocol</text></g><g class="edge-label" data-from="JJClient" data-to="NativeBridge" data-label="Native protocol 83(future)"><rect x="210.61458333333334" y="83.9" width="88.33600000000001" height="44.6" rx="2" ry="2" fill="var(--bg)" stroke="var(--_inner-stroke)" stroke-width="1"></rect><text x="254.78258333333335" y="106.2" text-anchor="middle" font-size="11" font-weight="400" fill="var(--_text-sec)"><tspan x="254.78258333333335" dy="-3.3000000000000007">Native protocol</tspan><tspan x="254.78258333333335" dy="14.3">(future)</tspan></text></g><g class="node" data-id="GitClient" data-label="Git client" data-shape="rectangle"><rect x="4" y="11.149999999999999" width="90.11500000000001" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="49.057500000000005" y="29.6" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git client</text></g><g class="node" data-id="JJClient" data-label="jj client" data-shape="rectangle"><rect x="147.11883333333333" y="11.149999999999999" width="81.22300000000001" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="187.73033333333333" y="29.6" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">jj client</text></g><g class="node" data-id="GitBridge" data-label="Git bridge" data-shape="rectangle"><rect x="39.27841666666666" y="224.31666666666666" width="97.525" height="36.900000000000006" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="88.04091666666666" y="242.76666666666665" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Git bridge</text></g><g class="node" data-id="NativeBridge" data-label="Native protocol bridge 84(future)" data-shape="rectangle"><rect x="168.80341666666666" y="224.31666666666666" width="170.884" height="53.800000000000004" rx="0" ry="0" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></rect><text x="254.24541666666664" y="251.21666666666667" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)"><tspan x="254.24541666666664" dy="-3.9000000000000012">Native protocol bridge</tspan><tspan x="254.24541666666664" dy="16.900000000000002">(future)</tspan></text></g><g class="node" data-id="Engine" data-label="Non-Git storage engine" data-shape="cylinder"><rect x="83.84866666666665" y="330.3" width="174.58900000000003" height="36.900000000000006" fill="var(--_node-fill)" stroke="none"></rect><line x1="83.84866666666665" y1="330.3" x2="83.84866666666665" y2="367.20000000000005" stroke="var(--_node-stroke)" stroke-width="0.75"></line><line x1="258.4376666666667" y1="330.3" x2="258.4376666666667" y2="367.20000000000005" stroke="var(--_node-stroke)" stroke-width="0.75"></line><ellipse cx="171.14316666666667" cy="367.20000000000005" rx="87.29450000000001" ry="7" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></ellipse><ellipse cx="171.14316666666667" cy="330.3" rx="87.29450000000001" ry="7" fill="var(--_node-fill)" stroke="var(--_node-stroke)" stroke-width="0.75"></ellipse><text x="171.14316666666667" y="348.75" text-anchor="middle" font-size="13" font-weight="500" fill="var(--_text)" dy="4.55">Non-Git storage engine</text></g></svg><figcaption>Two protocols over one storage engine</figcaption></figure> <p>This leads to a smooth path to the future of version control: you can start off 85by using regular old <code>git</code>, and enjoy reliable and scalable source control 86management. Individual developers can choose to adopt <code>jj</code> at their own pace, 87and when youâre ready to step forward, <code>jj</code> can speak a different protocol 88to the same underlying engine.</p> <p>An important note about this: this is future work, not available yet. 89Upstream has no â<code>jj</code> nativeâ protocol today, and we donât claim this is what 90weâre building. If this is useful as an upstream thing that upstream desires to 91support, weâll work with the community on this. And the protocol will be well 92documented, and any client modifications to support it will be open source. We 93do not assume that just because we build such a thing that upstream will want to 94use it, as the Git protocol works to serve the needs of most of their users 95already today. We are committed to being good players in the <code>jj</code> ecosystem, 96whatever that ends up looking like.</p> <h2>The first of many pieces</h2> <p>A storage solution is only part of what your team needs to collaborate around 97code. Code Review, CI, issue tracking, the list goes on and on. While 98traditional software forges have offered everything in one unified package, 99we believe that weâre entering an age of more customizability with software. 100As such, our product offerings are more like building blocks than one single 101forge. Storage is the foundation, and therefore, is coming first. But you can 102expect that we want to make our storage solution work with the rest of your 103software stack, not against it. While weâll be offering multiple products in the 104VCS space, if you want to bring your own software for the rest of the stack, you 105can do that. Or if you want to adopt some pieces of our first-party things, and 106bring some of your own, thatâs great too.</p> <p>While none of this is available just yet, weâll be opening things up soon. 107In the meantime, weâll see you at <a href="https://git-merge.com/" rel="nofollow">JJ Con</a> next week!</p>`,1);function Vt(e){var t=Bt();n(54),r(e,t)}var Ht=e({default:()=>qt,metadata:()=>Ut}),Ut={title:`Privacy Policy`,updatedAt:`2026-09-01T00:00:00.000Z`},{title:Wt,updatedAt:Gt}=Ut,Kt=t(`<p>East River Source Control Inc. (â<strong>East River</strong>,â â<strong>we</strong>â, â<strong>us</strong>â or â<strong>our</strong>â) provides a collaboration platform and version control system for businesses to manage their code. This Privacy Policy describes how East River processes personal information that we collect through our digital and online properties or services that link to this Privacy Policy (including as applicable, our website, electronic communications, and social media pages) as well as our marketing activities and other activities described
107in this Privacy Policy (collectively, the â<strong>Service</strong>â).</p> <p>This Privacy Policy does not apply to information that we process on behalf of our business customers while providing services to them. Our use of information that we process on behalf of our business customers is governed by our agreements with such customers. If you have concerns regarding your personal information that we process on behalf of our business customer, please direct your concerns to the business customer with which you have a relationship.</p> <nav aria-labelledby="table-of-contents"><h2 id="table-of-contents">Table of Contents</h2> <ol><li><a href="#personal-information-we-collect">Personal information we collect</a></li> <li><a href="#tracking-technologies">Tracking technologies</a></li> <li><a href="#how-we-use-your-personal-information">How we use your personal information</a></li> <li><a href="#how-we-share-your-personal-information">How we share your personal information</a></li> <li><a href="#your-choices">Your choices</a></li> <li><a href="#other-sites-and-services">Other sites and services</a></li> <li><a href="#security">Security</a></li> <li><a href="#international-data-transfer">International data transfers</a></li> <li><a href="#children-and-teens">Children and teens</a></li> <li><a href="#changes-to-this-privacy-policy">Changes to this Privacy Policy</a></li> <li><a href="#how-to-contact-us">How to contact us</a></li></ol></nav> <section aria-labelledby="personal-information-we-collect"><h2 id="personal-information-we-collect">Personal information we collect</h2> <section aria-labelledby="information-you-provide-to-us"><h3 id="information-you-provide-to-us">Information you provide to us</h3> <p>Personal information you may provide to us includes:</p> <ul><li><strong>Contact data</strong>, such as your first and last name, email address, billing and mailing addresses, and phone number.</li> <li><strong>Demographic data</strong>, such as your city, state, country of residence, postal code, and gender.</li> <li><strong>Communications data</strong> based on our exchanges with you, including when you contact us through the Service, communicate with us via email, phone, chat features, social media, or otherwise.</li> <li><strong>Marketing data</strong>, such as your preferences for receiving our marketing communications and details about your engagement with them.</li> <li><strong>Call/video recordings</strong>, such as recordings of customer support calls.</li> <li><strong>Other data</strong> not specifically listed here, which we will use as described in this Privacy Policy or as otherwise disclosed at the time of collection.</li></ul> <p><strong>No sensitive personal information.</strong> We ask that you not provide us with any sensitive personal information (e.g., information related to racial or ethnic origin, political opinions, religion or other beliefs, health, biometrics or genetic characteristics, information related to sex life or sexual orientation, trade union membership, or information pertaining to criminal convictions) on or through the services, or otherwise to us. If you provide us with any sensitive personal information to us when you use the services, you must consent to our processing and use of such sensitive personal information in accordance with this Privacy Policy. If you do not consent to our processing and use of such sensitive personal information, you must not submit such sensitive personal information through our services.</p></section> <section aria-labelledby="third-party-sources"><h3 id="third-party-sources">Third-party sources</h3> <p>We may combine personal information we receive from you with personal information of the kinds identified above that we obtain from other sources, such as:</p> <ul><li><strong>Data providers</strong>, such as information services, data licensors/brokers, lead generators, and cooperative databases.</li> <li>Service providers that provide services on our behalf or help us operate the Service or our business.</li> <li><strong>Partners</strong>, such as joint marketing partners and event co-sponsors.</li> <li><strong>Ad networks</strong>.</li> <li><strong>Data analytics providers</strong>.</li> <li><strong>Social media platforms</strong>.</li></ul></section> <section aria-labelledby="automatic-data-collection"><h3 id="automatic-data-collection">Automatic data collection</h3> <p>We and our service providers may automatically log information about you, your computer or mobile device, and your interaction over time with the Service, our communications and other online services, such as:</p> <ul><li><strong>Device data</strong>, such as your computer or mobile deviceâs operating system type and version, manufacturer and model, browser type, screen resolution, RAM and disk size, CPU usage, device type (e.g., phone, tablet), IP address, unique identifiers, language settings, mobile device carrier, radio/network information (e.g., Wi-Fi, LTE, 3G), and general location information such as city, state or geographic area.</li> <li><strong>Location data</strong>, which may be approximate (for example, as inferred from network data or device settings) or precise (if and when you authorize the Service to access your deviceâs location).</li> <li><strong>Communication interaction data</strong>, such as your interactions with our email, text, chat or other communications (e.g., whether you open and/or forward emails) â we may do this through use of pixel tags (which are also known as clear GIFs), which may be embedded invisibly in our emails enabling us to detect if you have opened or forwarded a message.</li> <li><strong>Online activity data</strong>, such as pages or screens you viewed, search history, how long you spent on a page or screen, the website you visited before browsing to the Service, navigation paths between pages or screens, information about your activity on a page or screen, access times and duration of access, and whether you have opened our emails or clicked links within them.</li></ul></section> <section aria-labelledby="tracking-technologies"><h3 id="tracking-technologies">Tracking technologies</h3> <p>Some of the automatic collection described above is facilitated by the following technologies:</p> <ul><li><strong>Cookies</strong>, which are small text files that websites store on user devices and that allow web servers to record usersâ web browsing activities and remember their submissions, preferences, credentials, and login status as they navigate a site. Cookies used on our sites include both âsession cookiesâ that are deleted when a web browser session ends, âpersistent cookiesâ that remain longer, âfirst partyâ cookies that we place and âthird partyâ cookies that our service providers and other third parties place.</li> <li><strong>Local storage technologies</strong>, like HTML5, that provide cookie-equivalent functionality but can store larger amounts of data on your device outside of your browser in connection with specific applications.</li> <li><strong>Web beacons</strong>, also known as pixel tags or clear GIFs, which are used to demonstrate that a webpage or email was accessed or opened, or that certain content was viewed, clicked or forwarded.</li> <li><strong>Chat technologies</strong>, such as those provided by third parties that employ cookies and software code to operate the chat features that you can use to communicate with us through the Service. The
107se third parties may access and use information about webpages visited on our website, your IP address, your general geographic information (e.g., city, state), and other personal information you share through online chats to respond to your questions and for the purposes described in this Privacy Policy.</li> <li><strong>Session-replay technologies</strong>, such as those provided by third parties that employ software code to record usersâ interactions with the Services in a manner that allows us to watch video replays of those user sessions. The replays include usersâ clicks, mobile app touches, mouse movements and scrolls during those sessions. These replays help us diagnose usability problems and identify areas for improvement.</li></ul></section></section> <section aria-labelledby="how-we-use-your-personal-information"><h2 id="how-we-use-your-personal-information">How we use your personal information</h2> <p>We may use your personal information for the following purposes or as otherwise described at the time of collection:</p> <section aria-labelledby="service-delivery-and-operations"><h3 id="service-delivery-and-operations">Service delivery and operations</h3> <p>We may use your personal information to:</p> <ul><li>provide and operate the Service;</li> <li>enable security features of the Service;</li> <li>communicate with you about the Service, including by sending Service-related announcements, updates, security alerts, user-to-user communications, and support and administrative messages;</li> <li>communicate with you about events for which you register;</li> <li>understand your needs and interests, and personalize your experience with the Service and our communications;</li> <li>provide support for the Service, and respond to your requests, questions and feedback;</li> <li>to collect and share user testimonials; and</li> <li>fraud prevention and security.</li></ul></section> <section aria-labelledby="research-and-development"><h3 id="research-and-development">Research and development</h3> <p>We may use your personal information for research and development purposes, including to develop, analyze, and improve our products and services. As part of these activities, we may create aggregated, de-identified or other anonymous data from personal information. We may use this anonymous or de-identified data and share it with third parties for any lawful business purposes. We do not attempt to reidentify deidentified information derived from personal information, except for the purpose of testing whether our deidentification processes comply with applicable law.</p></section> <section aria-labelledby="marketing"><h3 id="marketing">Marketing</h3> <p>We may collect and use your personal information for marketing purposes:</p> <ul><li>Direct marketing. We may send you direct marketing communications and may personalize these messages based on your needs and interests. You may opt-out of our marketing communications as described in the <a href="#opt-out-of-communications">Opt-out of marketing</a> section.</li> <li>Events, promotions and contests. We may use your personal information to administer promotions and contests, communicate with you about events in which you participate, or contact or market to you after collecting your personal information at an event.</li></ul></section> <section aria-labelledby="compliance-and-protection"><h3 id="compliance-and-protection">Compliance and protection</h3> <p>We may use your personal information to:</p> <ul><li>comply with applicable laws, lawful requests, and legal process, such as to respond to subpoenas, court orders, investigations or requests from government authorities;</li> <li>protect our, your or othersâ rights, privacy, safety or property (including by making and defending legal claims);</li> <li>audit our internal processes for compliance with legal and contractual requirements or our internal policies;</li> <li>enforce the terms and conditions that govern the Service; and</li> <li>prevent, identify, investigate and deter fraudulent, harmful, unauthorized, unethical or illegal activity, including cyberattacks and identity theft.</li></ul></section> <section aria-labelledby="with-your-consent"><h3 id="with-your-consent">
107With your consent</h3> <p>In some cases, we may specifically ask for your consent to collect, use, or share your personal information for further purposes, if those purposes are not compatible with the initial purpose for which that personal information was collected.</p> <p><strong>Cookies and similar technologies</strong>. In addition to the other uses included in this section, we may use the <a href="#tracking-technologies">Cookies and similar technologies</a> described above for the following purposes:</p> <ul><li><strong>Technical operation</strong>. To allow the technical operation of the Service, such as remembering selections as you navigate the site and remembering whether you are logged in.</li> <li><strong>Functionality</strong>. To enhance the performance and functionality of our services.</li> <li><strong>Analytics</strong>. To help us understand user activity on the Service, including the volume and demographics of users, which pages are most and least visited and how users move around the Service or interact with our emails. For example, we use Google Analytics for this purpose. You can learn more about Google Analytics and how to prevent the use of Google Analytics relating to your use of our sites here: <a href="https://tools.google.com/dlpage/gaoptout">https://tools.google.com/dlpage/gaoptout</a>.</li></ul></section> <section aria-labelledby="data-sharing-in-the-context-of-corporate-transactions"><h3 id="data-sharing-in-the-context-of-corporate-transactions">Data sharing in the context of corporate transactions</h3> <p>We may share certain personal information in the context of actual or prospective corporate transactions â for more information, see <a href="#how-we-share-your-personal-information">How we share your personal information</a>, below.</p></section></section> <section aria-labelledby="how-we-share-your-personal-information"><h2 id="how-we-share-your-personal-information">How we share your personal information</h2> <p>We may share your personal information with the following parties and as otherwise described in this Privacy Policy, in other applicable notices, or at the time of collection.</p> <ul><li><strong>Affiliates.</strong> In some cases, our corporate parent, subsidiaries, and affiliates might have access to personal information.</li> <li><strong>Service providers.</strong> Third parties that provide services on our behalf or help us operate the Service or our business (such as hosting, internet service providers, information technology, order fulfillment, customer support, online chat functionality providers, email delivery, marketing, consumer research and website/data analytics).</li> <li><strong>Artificial intelligence platforms.</strong> We use third-party artificial intelligence (AI) providers to power certain aspects of the Services. To learn more about how those providers process your information, please refer to their privacy policies.</li> <li><strong>Social networks.</strong> We use their ad services to display ads to our customers, or other people like them, on social media.</li> <li><strong>Third parties designated by you.</strong> We may share your personal information with third parties where you have instructed us or provided your consent to do so.</li> <li><strong>Sponsor Partners.</strong> Third parties with whom we partner, including parties with whom we co-sponsor events or promotions, with whom we jointly offer products or services, or whose products or services may be of interest to you.</li> <li><strong>Professional advisors.</strong> Professional advisors, such as lawyers, auditors, bankers and insurers, where necessary in the course of the professional services that they render to us.</li> <li><strong>Authorities and others.</strong> Law enforcement, government authorities, and private parties in litigation, as we believe in good faith to be necessary or appropriate for the <a href="#compliance-and-protection">Compliance and protection purposes</a> described above.</li> <li><strong>Corporate transactions</strong>. We may disclose personal information in the context of actual or prospective business transactions (<em>e.g.,</em> investments in East River, financing of East River, public stock offerings, the sale, transfer or merger of all or part of our business, assets or shares, liquidation or reorganization). For example, we may
107need to share certain personal information with prospective counterparties and their advisers. We may disclose your personal information to an acquirer, successor, or assignee of East River or a portion of our business assets as part of any merger, acquisition, sale of assets, or similar transaction, and/or in the event of an insolvency, bankruptcy, or receivership in which personal information is transferred to one or more third parties as one of our business assets.</li></ul></section> <section aria-labelledby="your-choices"><h2 id="your-choices">Your choices</h2> <p>In this section, we describe the choices available to you.</p> <section aria-labelledby="access-or-update-your-information"><h3 id="access-or-update-your-information">Access or update your information</h3> <p>If you have registered for an account with us through the Service, you may review and update certain account information by logging into the account and navigating to your account profile and settings.</p></section> <section aria-labelledby="opt-out-of-communications"><h3 id="opt-out-of-communications">Opt-out of communications</h3> <p>You may opt-out of marketing-related emails by following the opt-out or unsubscribe instructions at the bottom of the email, or by <a href="#how-to-contact-us">contacting us</a>. It may take time for your opt-out to be effective. Please note that if you choose to opt-out of marketing-related emails, you may continue to receive service-related and other non-marketing emails.</p></section> <section aria-labelledby="cookies"><h3 id="cookies">Cookies</h3> <p>Most browsers let you remove or reject cookies. To do this, follow the instructions in your browser settings. Many browsers accept cookies by default until you change your settings. Please note that if you set your browser to disable cookies, the Service may not work properly. For more information about cookies, including how to see what cookies have been set on your browser and how to manage and delete them, visit <a href="http://www.allaboutcookies.org">http://www.allaboutcookies.org</a>.</p></section> <section aria-labelledby="blocking-imagesclear-gifs"><h3 id="blocking-imagesclear-gifs">Blocking images/clear gifs</h3> <p>Most browsers and devices allow you to configure your device to prevent images from loading, so the business hosting the image will not detect that you have viewed a page. To do this, follow the instructions in your particular browser or device settings.</p></section> <section aria-labelledby="do-not-track"><h3 id="do-not-track">Do Not Track</h3> <p>Some Internet browsers may be configured to send âDo Not Trackâ signals to the online services that you visit. We currently do not respond to âDo Not Trackâ signals. To find out more about âDo Not Track,â please visit <a href="http://www.allaboutdnt.com">http://www.allaboutdnt.com</a>.</p></section> <section aria-labelledby="declining-to-provide-information"><h3 id="declining-to-provide-information">Declining to provide information</h3> <p>We need to collect personal information to provide certain services. If you do not provide the information we identify as required or mandatory, we may not be able to provide those services.</p></section></section> <section aria-labelledby="other-sites-and-services"><h2 id="other-sites-and-services">Other sites and services</h2> <p>The Service may contain links to websites, mobile applications, and other online services operated by third parties. In addition, our content may be integrated into web pages or other online services that are not associated with us. These links and integrations are not an endorsement of, or representation that we are affiliated with, any third party. We do not control websites, mobile applications or online services operated by third parties, and we are not responsible for their actions. We encourage you to read the privacy policies of the other websites, mobile applications and online services you use.</p></section> <section aria-labelledby="security"><h2 id="security">Security</h2> <p>We employ technical, organizational and physical safeguards that are designed to protect the personal information we collect. However, security risk is inherent in all Internet and information technologies, and we cannot guarantee the security of your personal information.</p></section> <section aria-labelledby="international-data-transfer"><h2 id="international-data-transfer">International data transfer</h2> <p>We are headquartered in the United States and may use service providers that operate in other countries. Your personal information may be transferred to the United States or other locations where privacy laws may not be as protective as those in your state, province, or country. Users in Europe should read the information provided below about the transfer of personal information outside of Europe.</p></section> <section aria-labelledby="children-and-teens"><h2 id="children-and-teens">Children and Teens</h2> <p>The Service is not intended for use by anyone under 18 years of age. If you are a parent or guardian of a minor from whom you believe we have collected personal information in a manner prohibited by law, or if information was provided on your behalf when you were under 18, please <a href="#how-to-contact-us">contact us</a>. If we learn that we have collected personal information through the Service from a child without the consent of the childâs parent or guardian as required by law, we will c
107omply with applicable legal requirements to delete the information.</p></section> <section aria-labelledby="changes-to-this-privacy-policy"><h2 id="changes-to-this-privacy-policy">Changes to this Privacy Policy</h2> <p>The âLast Updatedâ legend at the top of this Privacy Policy indicates when this Privacy Policy was last revised. We reserve the right to modify this Privacy Policy at any time. We will notify you by updating the âLast Updatedâ date. Depending on the kind of change we make, we may also notify you directly or ask for your consent to the change. Any modifications to this Privacy Policy will be effective upon our posting the modified version or as otherwise indicated at the time of posting.</p></section> <section aria-labelledby="how-to-contact-us"><h2 id="how-to-contact-us">How to contact us</h2> <address>Email: <a href="mailto:[email protected]">[email protected]</a></address></section>`,1);function qt(e){var t=Kt();n(24),r(e,t)}var Jt=e({default:()=>$t,metadata:()=>Yt}),Yt={title:`Terms of Service`,updatedAt:`2026-08-18T00:00:00.000Z`},{title:Xt,updatedAt:Zt}=Yt,Qt=t(`<p>This page is a placeholder. Our terms of service have not been published yet.</p> <p>Questions in the meantime? Write to <a href="mailto:[email protected]">[email protected]</a>.</p>`,1);function $t(e){var t=Qt();n(2),r(e,t)}function en(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function tn(e,t=`|`){return e.map(e=>mn(e)).join(t)}function nn(e,t){return typeof t==`bigint`?t.toString():t}function rn(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function an(e){return e==null}function on(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function m(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function h(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function sn(e){return JSON.stringify(e)}function cn(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var ln=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function un(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var dn=rn(()=>{if(k.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function g(e){if(un(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return un(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function fn(e){return g(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var pn=new Set([`string`,`number`,`symbol`]);function _(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function v(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function y(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function mn(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function hn(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}function gn(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return v(e,h(e._zod.def,{get shape(){let e={};for(let r of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,r))throw Error(`Unrecognized key: "${String(r)}"`);t[r]&&m(e,r,n.shape[r])}return m(this,`shape`,e),e},checks:[]}))}function _n(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return v(e,h(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,e))throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&delete r[e]}return m(this,`shape`,r),r},checks:[]}))}function vn(e,t){if(!g(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot over
107write keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return v(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return m(this,`shape`,n),n}}))}function yn(e,t){if(!g(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return v(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return m(this,`shape`,n),n}}))}function bn(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return v(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return m(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function xn(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);return v(t,h(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(r,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t of Reflect.ownKeys(r))i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return m(this,`shape`,i),i},checks:[]}))}function Sn(e,t,n){return v(t,h(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(i,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t of Reflect.ownKeys(r))i[t]=new e({type:`nonoptional`,innerType:r[t]});return m(this,`shape`,i),i}}))}function b(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Cn(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function wn(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function x(e){return typeof e==`string`?e:e?.message}function Tn(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function S(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:x(e.inst?._zod.def?.error?.(e))??x(a?.(e))??x(t?.error?.(e))??x(n.customError?.(e))??x(n.localeError?.(e))??`Invalid input`,{inst:s,schema:c,continue:l,input:u,...d}=e;return d.path??=[],d.message=o,t?.reportInput&&(d.input=u),d}var En=/[\uD800-\uDBFF]/;function Dn(e){let t=e.length;if(!En.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function On(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function kn(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function C(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function An(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):Mn(e,n,r.value)}}function w(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function jn(e,t,n){return w(e,t,n,!1)}function Mn(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:w(this,t,n.bind(this))},set(e){w(this,t,e)}})}function Nn(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}var Pn,T=!1,Fn={configurable:!0,get(){T=!0}};function E(e,t,n){let r=Object.getPrototypeOf(e._zod);if(t in r&&Pn!==e._zod){Pn=void 0;return}Pn=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Fn);let e=T;T=!1;try{let r=n(this);return T?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),T||=e,r}catch(n){throw delete this[t],T||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})}function In(e,t,n,r){let i=Nn(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};
vendor: 67,170 bytes, lines 107-157
107return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}var Ln=`~constantCatch`;function Rn(e){let t=()=>e;return t[Ln]=!0,t}var zn,Bn={value:void 0,enumerable:!1},Vn=`captureStackTrace`in Error?Error:null;function Hn(e){let t=Vn;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Vn=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function D(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Bn.value=new a(r);try{Object.defineProperty(n,"_zod",Bn)}finally{Bn.value=void 0}}if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),An(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Hn(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var O=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Un=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(zn=globalThis).__zod_globalConfig??(zn.__zod_globalConfig={});var k=globalThis.__zod_globalConfig;function A(e){return e&&Object.assign(k,e),k}function Wn(){let e=this._zod;return e.message??=JSON.stringify(e.def,nn,2),e.message}function Gn(e){this._zod.message=e}var Kn={get:Wn,set:Gn,enumerable:!0,configurable:!0},qn={value:void 0,enumerable:!1},Jn={value:void 0,enumerable:!1},Yn=new WeakSet([Object.prototype,Error.prototype]),Xn=(e,t)=>{e.name=`$ZodError`,qn.value=e._zod,Object.defineProperty(e,"_zod",qn),Jn.value=t,Object.defineProperty(e,"issues",Jn),qn.value=void 0,Jn.value=void 0,Object.defineProperty(e,"message",Kn);let n=Object.getPrototypeOf(e);Yn.has(n)||(Yn.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Zn=D(`$ZodError`,Xn),Qn=D(`$ZodError`,Xn,void 0,{Parent:Error});function $n(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function er(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?$n(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function tr(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function nr(e){let t=[],n=e.map(e=>typeof e==`object`?e.key:e);for(let e of n)typeof e==`number`?t.push(`[${e}]`):typeof e==`symbol`?t.push(`[${JSON.stringify(String(e))}]`):/[^\w$]/.test(e)?t.push(`[${JSON.stringify(e)}]`):(t.length&&t.push(`.`),t.push(e));return t.join(``)}function rr(e){let t=[],n=[...e.issues].sort((e,t)=>(e.path??[]).length-(t.path??[]).length);for(let e of n)t.push(`â ${e.message}`),e.path?.length&&t.push(` â at ${nr(e.path)}`);return t.join(` 108`)}function ir(e,t){return{callee:t?.callee??e,Err:t?.Err}}var ar=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new O;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>S(e,o,A())));throw ln(n,a?.callee??t),n}return s.value};return t},or=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>S(e,o,A())));throw ln(n,a?.callee??t),n}return s.value};return t},sr=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new O;return a.issues.length?{success:!1,error:new(e??Zn)(a.issues.map(e=>S(e,i,A())))}:{success:!0,data:a.value}},cr=sr(Qn),j=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>S(e,i,A())))}:{success:!0,data:a.value}},lr=j(Qn),ur=e=>{let t=ar(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,ir(n,a))};return n},dr=e=>{let t=ar(e),n=(e,r,i,a)=>t(e,r,i,ir(n,a));return n},fr=e=>{let t=or(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,ir(n,a))};return n},pr=e=>{let t=or(e),n=async(e,r,i,a)=>await t(e,r,i,ir(n,a));return n},mr=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sr(e)(t,n,i)},hr=e=>(t,n,r)=>sr(e)(t,n,r),gr=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return j(e)(t,n,i)},_r=e=>async(t,n,r)=>j(e)(t,n,r),vr=/^[cC][0-9a-z]{6,}$/,yr=/^[0-9a-z]+$/,br=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,xr=/^[0-9a-vA-V]{20}$/,Sr=/^[A-Za-z0-9]{27}$/,Cr=/^[a-zA-Z0-9_-]{21}$/;function wr(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var Tr=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Er=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Dr=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Or=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,kr=`^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function Ar(){return new RegExp(kr,`u`)}var jr=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Mr=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Nr=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Pr=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Fr=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Ir=/^[A-Za-z0-9_-]*$/,Lr=/^https?$/,Rr=/^\+[1-9]\d{6,14}$/,zr=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`;function Br(e){return RegExp(`^${e}$`)}var Vr=Br(zr);function Hr(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Ur(e){return RegExp(`^${Hr(e)}$`)}function Wr(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Hr({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Hr({precision:e.precision})}`:n;return RegExp(`^${zr}T(?:${r})$`)}var Gr=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},Kr=/^(?:true|false)$/i,qr=/^[^A-Z]*$/,Jr=/^[^a-z]*$/,M=D(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Yr=e=>{let t=e.value;return!an(t)&&t.length!==void 0},N={number:`number`,bigint:`bigint`,object:`date`},Xr=D(`$ZodCheckLessThan`,(e,t)=>{M.init(e,t);let n=N[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:N[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Zr=D(`$ZodCheckGreaterThan`,(e,t)=>{M.init(e,t);let n=N[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:N[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Qr=D(`$ZodCheckMaxLength`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=Yr),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?Dn(r):i)<=t.maximum)return;let a=On(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),$r=D(`$ZodCheckMinLength`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=Yr),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?Dn(r):i)>=t.minimum)return;let a=On(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ei=D(`$ZodCheckLengthEquals`,(e,t)=>{var n;M.init(e,t),(n=e._zod.def).when??(n.when=Yr),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?Dn(r):i;if(a===t.length)return;let o=On(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),P=D(`$ZodCheckStringFormat`,(e,t)=>{var n,r;M.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),ti=D(`$ZodCheckRegex`,(e,t)=>{P.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),ni=D(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=qr,P.init(e,t)}),ri=D(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Jr,P.init(e,t)}),ii=D(`$ZodCheckIncludes`,(e,t)=>{M.init(e,t);let n=_(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ai=D(`$ZodCheckStartsWith`,(e,t)=>{M.init(e,t);let n=RegExp(`^${_(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),oi=D(`$ZodCheckEndsWith`,(e,t)=>{M.init(e,t);let n=RegExp(`.*${_(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),si=D(`$ZodCheckOverwrite`,(e,t)=>{M.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),ci=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` 109`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` 110`)}\n};`)(...Object.values(this.closed))}},li={major:4,minor:5,patch:4},F=D(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=li;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=b(t),a;for(let o of n){if(o._zod.def.when){if(Cn(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new O;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(Tn(t.issues,n,e),i||=b(t,n))});else{if(t.issues.length===n)continue;Tn(t.issues,n,e),i||=b(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(b(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new O;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new O;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return jn(this,`~standard`,di(this))},set"~standard"(e){w(this,`~standard`,e)}}),ui=e=>e.success?{value:e.data}:{issues:e.error?.issues};function di(e){return{validate:t=>{try{return ui(cr(e,t))}catch{return lr(e,t).then(ui)}},vendor:`zod`,version:1}}var fi=D(`$ZodString`,(e,t)=>{F.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Gr(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),I=D(`$ZodStringFormat`,(e,t)=>{P.init(e,t),fi.init(e,t)}),pi=D(`$ZodGUID`,(e,t)=>{t.pattern??=Er,I.init(e,t)}),mi=D(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Dr(e)}else t.pattern??=Dr();I.init(e,t)}),hi=D(`$ZodEmail`,(e,t)=>{t.pattern??=Or,I.init(e,t)});function gi(e,t){if(!t.normalize&&t.protocol?.source===Lr.source&&!/^https?:\/\//i.test(e))return 1;try{return new URL(e)}catch{return 2}}var _i=/[\t\n\r]/g;function vi(e){return e.replace(_i,``)}function yi(e,t){return t.lastIndex=0,t.test(e.hostname)}function bi(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var xi=D(`$ZodURL`,(e,t)=>{I.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=gi(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}t.hostname&&!yi(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!bi(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:vi(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Si=D(`$ZodEmoji`,(e,t)=>{t.pattern??=Ar(),I.init(e,t)}),Ci=D(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Cr:wr(t.length),I.init(e,t)}),wi=D(`$ZodCUID`,(e,t)=>{t.pattern??=vr,I.init(e,t)}),Ti=D(`$ZodCUID2`,(e,t)=>{t.pattern??=yr,I.init(e,t)}),Ei=D(`$ZodULID`,(e,t)=>{t.pattern??=br,I.init(e,t)}),Di=D(`$ZodXID`,(e,t)=>{t.pattern??=xr,I.init(e,t)}),Oi=D(`$ZodKSUID`,(e,t)=>{t.pattern??=Sr,I.init(e,t)}),ki=D(`$ZodISODateTime`,(e,t)=>{t.pattern??=Wr(t),I.init(e,t),(t.local||t.precision===-1)&&(e._zod.bag.laxFormat=!0,e._zod.onattach.push(e=>{e._zod.bag.laxFormat=!0}))}),Ai=D(`$ZodISODate`,(e,t)=>{t.pattern??=Vr,I.init(e,t)}),ji=D(`$ZodISOTime`,(e,t)=>{t.pattern??=Ur(t),I.init(e,t)}),Mi=D(`$ZodISODuration`,(e,t)=>{t.pattern??=Tr,I.init(e,t)}),Ni=D(`$ZodIPv4`,(e,t)=>{t.pattern??=jr,I.init(e,t),e._zod.bag.format=`ipv4`}),Pi=/^[0-9a-fA-F:.]+$/;function Fi(e){if(!Pi.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var Ii=D(`$ZodIPv6`,(e,t)=>{t.pattern??=Mr,I.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{Fi(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Li=D(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Nr,I.init(e,t)});function Ri(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Fi(n)}var zi=D(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Pr,I.init(e,t),e._zod.check=n=>{Ri(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function Bi(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Vi=D(`$ZodBase64`,(e,t)=>{t.pattern??=Fr,I.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Bi(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Hi(e){if(!Ir.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Bi(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Ui=D(`$ZodBase64URL`,(e,t)=>{t.pattern??=Ir,I.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Hi(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Wi=D(`$ZodE164`,(e,t)=>{t.pattern??=Rr,I.init(e,t)});function Gi(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Ki=D(`$ZodJWT`,(e,t)=>{I.init(e,t),e._zod.check=n=>{Gi(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),qi=D(`$ZodBoolean`,(e,t)=>{F.init(e,t),e._zod.pattern=Kr,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ji=D(`$ZodUnknown`,(e,t)=>{F.init(e,t),e._zod.parse=e=>e}),Yi=D(`$ZodNever`,(e,t)=>{F.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)}),Xi=D(`$ZodDate`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function Zi(e,t,n){e.issues.length&&t.issues.push(...wn(n,e.issues)),t.value[n]=e.value}var Qi=D(`$ZodArray`,(e,t)=>{F.init(e,t);let n=k.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[];for(let e=0;e<a.length;e++){let n=a[e],s=t.element._zod.run({value:n,issues:[]},i);s instanceof Promise?o.push(s.then(t=>Zi(t,r,e))):Zi(s,r,e)}return o.length?Promise.all(o).then(()=>r):r}});function L(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(!(!o&&s&&i===`optional`)){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...wn(n,e.issues))}if(!o&&i===void 0){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}}var $i=[];function ea(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:$i,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=hn(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function ta(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin,d=c.optout;for(let i in t){if(s.has(i))continue;if(i===`__proto__`){l===`never`&&o.push(i);continue}if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>L(e,n,i,t,u,d))):L(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var na=new WeakMap,ra=D(`$ZodObject`,(e,t)=>{if(F.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;na.set(t,e),Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),na.set(t,n),n}})}let n=rn(()=>ea(t));E(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||m(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let r=un,i=t.catchall,a,o=k.memoizer;o?.attach(e),e._zod.parse=(t,s)=>{a??=n.value;let c=t.value;if(!r(c))return t.issues.push({expected:`object`,code:`invalid_type`,input:c,inst:e}),t;t.value=o?o.alloc(e,t,{},s):{};let l=[],u=a.shape;for(let e of a.allKeys){if(e===`__proto__`)continue;let n=u[e],r=n._zod.optin,i=n._zod.optout,a=n._zod.run({value:c[e],issues:[]},s);a instanceof Promise?l.push(a.then(n=>L(n,t,e,c,r,i))):L(a,t,e,c,r,i)}return i?ta(l,c,t,s,n.value,e):l.length?Promise.all(l).then(()=>t):t}}),ia=D(`$ZodObjectJIT`,(e,t)=>{ra.init(e,t);let n=e._zod.parse,r=rn(()=>ea(t)),i=k.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new ci([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` 111 for (let i = 0; i < ${e}.issues.length; i++) { 112 const iss = ${e}.issues[i]; 113 iss.path = iss.path ? [${t}, ...iss.path] : [${t}]; 114 payload.issues.push(iss); 115 }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:sn(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` 116 const ${n}_present = ${i}; 117 if (!${n}.issues.length || ${n}_present) { 118 if (${n}.issues.length) {${c(n,r)} 119 } 120 121 if (${e}) { 122 newResult[${r}] = ${n}.value; 123 } 124 } 125 126 `)}else f?o.write(` 127 if (${n}.issues.length) {${c(n,r)} 128 } 129 130 if (${n}.value === undefined) { 131 if (${i}) { 132 newResult[${r}] = undefined; 133 } 134 } else { 135 newResult[${r}] = ${n}.value; 136 } 137 138 `):o.write(` 139 const ${n}_present = ${i}; 140 if (${n}.issues.length) {${c(n,r)} 141 } 142 if (!${n}_present && !${n}.issues.length) { 143 payload.issues.push({ 144 code: "invalid_type", 145 expected: "nonoptional", 146 input: undefined, 147 path: [${r}] 148 }); 149 } 150 151 if (${n}_present) { 152 newResult[${r}] = ${n}.value; 153 } 154 155 `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=un,c=!k.jitless,l=c&&dn.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?ta([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function aa(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!b(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>S(e,r,A())))}),t)}var oa=D(`$ZodUnion`,(e,t)=>{F.init(e,t),E(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),E(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),E(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),E(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>on(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>aa(t,r,e,i)):aa(o,r,e,i)}}),sa=D(`$ZodIntersection`,(e,t)=>{F.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>la(e,t,n)):la(e,i,a)}});function ca(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(g(e)&&g(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=ca(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=ca(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function la(e,t,n){let r=new Map,i,a=new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=ca(t.value,n.value);if(!c.valid){if(b(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var ua=D(`$ZodEnum`,(e,t)=>{F.init(e,t);let n=en(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>pn.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>_(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),da=D(`$ZodTransform`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,k.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Un(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new O;return n.value=i,n}});function fa(e,t){return e.value=t.issues.length?void 0:t.value,e}var pa=D(`$ZodOptional`,(e,t)=>{F.init(e,t),E(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,E(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),E(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${on(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>fa(e,t)):fa(e,r)}return t.innerType._zod.run(e,n)}}),ma=D(`$ZodExactOptional`,(e,t)=>{pa.init(e,t),E(e,`values`,e=>e.def.innerType._zod.values),E(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),ha=D(`$ZodNullable`,(e,t)=>{F.init(e,t),E(e,`optin`,e=>e.def.innerType._zod.optin),E(e,`optout`,e=>e.def.innerType._zod.optout),E(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${on(t.source)}|null)$`):void 0}),E(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),ga=D(`$ZodDefault`,(e,t)=>{F.init(e,t),e._zod.optin=`defaulted`,E(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>_a(e,t)):_a(r,t)}});function _a(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var va=D(`$ZodPrefault`,(e,t)=>{F.init(e,t),e._zod.optin=`defaulted`,E(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),ya=D(`$ZodNonOptional`,(e,t)=>{F.init(e,t),E(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>ba(t,e)):ba(i,e)}});function ba(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function xa(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>S(e,r,A()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Sa=D(`$ZodCatch`,(e,t)=>{F.init(e,t),E(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),E(e,`optout`,e=>e.def.innerType._zod.optout),E(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>xa(e,r,t,n)):xa(e,r,t,n)}}),Ca=D(`$ZodPipe`,(e,t)=>{F.init(e,t),E(e,`values`,e=>e.def.in._zod.values),E(e,`optin`,e=>e.def.in._zod.optin),E(e,`optout`,e=>e.def.out._zod.optout),E(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>R(e,t.in,n)):R(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>R(e,t.out,n)):R(r,t.out,n)}});function R(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var wa=D(`$ZodReadonly`,(e,t)=>{F.init(e,t),E(e,`propValues`,e=>e.def.innerType._zod.propValues),E(e,`values`,e=>e.def.innerType._zod.values),E(e,`optin`,e=>e.def.innerType?._zod?.optin),E(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ta):Ta(r)}});function Ta(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Ea=D(`$ZodCustom`,(e,t)=>{M.init(e,t),F.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Da(t,n,r,e));Da(i,n,r,e)}});function Da(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(C(e))}}var Oa=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},ka=`~memo`,Aa=[];function ja(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Ma=new WeakMap;function Na(e,t){let n=Ma.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&Na(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(!(!n||typeof n!=`object`)){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),Ma.set(e,r),r}function Pa(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var z,B=[],Fa={alloc(e,t,n){let r=z;if(!r)return n;z=void 0;let i={value:n,issues:null};return r.set(t.value,i),B.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&La(n,e.value))throw new Oa;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=Na(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[ka];l||(l={buckets:new Map,backEdges:void 0},s[ka]=l);let u;r===s?u=i:(u=Pa(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...ja(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;z=u;let f=B.length,p=t(o,s);z=void 0;let ee=B.length>f?B.pop():void 0;return p instanceof Promise?p.then(e=>(ee&&(ee.issues=e.issues.length?ja(e.issues):Aa),e)):(ee&&(ee.issues=p.issues.length?ja(p.issues):Aa),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function Ia(){return Fa}function La(e,t){let n=e[ka]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var Ra=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(kn(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${mn(e.values[0])}`:`Invalid option: expected one of ${tn(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${tn(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function za(){return{localeError:Ra()}}var Ba,Va=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Ha(){return new Va}(Ba=globalThis).__zod_globalRegistry??(Ba.__zod_globalRegistry=Ha());var V=globalThis.__zod_globalRegistry;function Ua(e,t){return new e({type:`string`,...y(t)})}function Wa(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...y(t)})}function Ga(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...y(t)})}function Ka(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...y(t)})}function qa(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...y(t)})}function Ja(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...y(t)})}function Ya(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...y(t)})}function Xa(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...y(t)})}function Za(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...y(t)})}function Qa(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...y(t)})}function $a(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...y(t)})}function eo(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...y(t)})}function to(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...y(t)})}function no(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...y(t)})}function ro(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...y(t)})}function io(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...y(t)})}function ao(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...y(t)})}function oo(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...y(t)})}function so(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...y(t)})}function co(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...y(t)})}function lo(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...y(t)})}function uo(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...y(t)})}function fo(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...y(t)})}function po(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...y(t)})}function mo(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...y(t)})}function ho(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...y(t)})}function go(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...y(t)})}function _o(e,t){return new e({type:`boolean`,...y(t)})}function vo(e){return new e({type:`unknown`})}function yo(e,t){return new e({type:`never`,...y(t)})}function bo(e,t){return new e({type:`date`,coerce:!0,...y(t)})}function xo(e,t){return new Xr({check:`less_than`,...y(t),value:e,inclusive:!0})}function So(e,t){return new Zr({check:`greater_than`,...y(t),value:e,inclusive:!0})}function Co(e,t){return new Qr({check:`max_length`,...y(t),maximum:e})}function H(e,t){return new $r({check:`min_length`,...y(t),minimum:e})}function wo(e,t){return new ei({check:`length_equals`,...y(t),length:e})}function To(e,t){return new ti({check:`string_format`,format:`regex`,...y(t),pattern:e})}function Eo(e){return new ni({check:`string_format`,format:`lowercase`,...y(e)})}function Do(e){return new ri({check:`string_format`,format:`uppercase`,...y(e)})}function Oo(e,t){return new ii({check:`string_format`,format:`includes`,...y(t),includes:e})}function ko(e,t){return new ai({check:`string_format`,format:`starts_with`,...y(t),prefix:e})}function Ao(e,t){return new oi({check:`string_format`,format:`ends_with`,...y(t),suffix:e})}function U(e){return new si({check:`overwrite`,tx:e})}function jo(e){return U(t=>t.normalize(e))}function Mo(){return U(e=>e.trim())}function No(){return U(e=>e.toLowerCase())}function Po(){return U(e=>e.toUpperCase())}function Fo(){return U(e=>cn(e))}function Io(e,t,n){return new e({type:`array`,element:t,...y(n)})}function Lo(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...y(n)})}function Ro(e,t){let n=zo(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(C(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(C(r))}},e(t.value,t)),t);return n}function zo(e,t){let n=new M({check:`custom`,...y(t)});return n._zod.check=e,n}function W(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&m(e,t,n[t]);return e}function Bo(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??V,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function G(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function K(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,K(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&W(o.schema,c),t.io===`input`&&q(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Vo(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function Ho(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${Vo(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+Vo(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root> 156 157Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}e.external&&(e.sharedDefsExtractedFor=e.external)}function Uo(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;Uo(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var Wo=new Set([`type`,`properties`,`required`,`additionalProperties`]),Go=[`oneOf`,`anyOf`];function Ko(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function qo(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!Wo.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??Ko(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}m(n,r,e.length===1?e[0]:qo(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=Ko(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function Jo(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of Wo)if(t in e)return;let n=t.filter(e=>Go.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=qo(t);else{let e=n[0],i=Go.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>qo([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,W(e,r))}function Yo(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):W(i,s),W(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())Uo(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])Jo(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}W(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,m(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:Zo(t,`input`,e.processors),output:Zo(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function q(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return q(r.element,n);if(r.type===`set`)return q(r.valueType,n);if(r.type===`lazy`)return q(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return q(r.innerType,n);if(r.type===`intersection`)return q(r.left,n)||q(r.right,n);if(r.type===`record`||r.type===`map`)return q(r.keyType,n)||q(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:q(r.in,n)||q(r.out,n);if(r.type===`object`){for(let e in r.shape)if(q(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(q(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(q(e,n))return!0;return!!(r.rest&&q(r.rest,n))}return!1}var Xo=(e,t={})=>n=>{let r=Bo({...n,processors:t});return K(e,r),Ho(r,e),Yo(r,e)},Zo=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Bo({...i??{},target:a,io:t,processors:n});return K(e,o),Ho(o,e),Yo(o,e)},Qo={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},$o=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Qo[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},es=(e,t,n,r)=>{n.type=`boolean`},ts=(e,t,n,r)=>{n.not={}},ns=(e,t,n,r)=>{G(e,t,n,r,`Date cannot be represented in JSON Schema`)},rs=(e,t,n,r)=>{let i=e._zod.def,a=en(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},is=(e,t,n,r)=>{G(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},as=(e,t,n,r)=>{G(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},os=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=K(a.element,t,{...r,path:[...r.path,`items`]})};function ss(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?ss(t.out):t.type===`catch`?ss(t.innerType):e._zod.optin}var cs=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&G(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)m(i.properties,e,K(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e];return t.io===`input`?ss(n)===void 0:n._zod.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=K(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},ls=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>K(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},us=(e,t,n,r)=>{let i=e._zod.def,a=K(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=K(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},ds=(e,t,n,r)=>{let i=e._zod.def,a=K(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},fs=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ps=Symbol();function ms(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(G(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),ps):JSON.parse(o)}var hs=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=ms(i.defaultValue,e,t,n,r);o!==ps&&(n.default=o)},gs=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=ms(i.defaultValue,e,t,n,r);o!==ps&&(n._prefault=o)},_s=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{G(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},vs=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;K(o,t,r);let s=t.seen.get(e);s.ref=o},ys=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},bs=(e,t,n,r)=>{let i=e._zod.def;K(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},xs=new WeakSet([Object.prototype,Error.prototype]);function J(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var Y=D(`ZodError`,(e,t)=>{Zn.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);xs.has(n)||(xs.add(n),J(n,`format`,e=>t=>tr(e,t)),J(n,`flatten`,e=>t=>er(e,t)),J(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,nn,2)}),J(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,nn,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),Ss=ar(Y),Cs=or(Y),ws=sr(Y),Ts=j(Y),Es=ur(Y),Ds=dr(Y),Os=fr(Y),ks=pr(Y),As=mr(Y),js=hr(Y),Ms=gr(Y),Ns=_r(Y);function Ps(){k.localeError||A(za())}function Fs(){k.memoizer||A({memoizer:Ia()})}var X=D(`ZodType`,(e,t)=>(Ps(),F.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(h(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return v(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Kc(e,t))},superRefine(e,t){return this.check(qc(e,t))},overwrite(e){return this.check(U(e))},optional(){return Oc(this)},exactOptional(){return Ac(this)},nullable(){return Mc(this)},nullish(){return Oc(Mc(this))},nonoptional(e){return Rc(this,e)},array(){return _c(this)},or(e){return bc([this,e])},and(e){return Sc(this,e)},transform(e){return Hc(this,Ec(e))},default(e){return Pc(this,e)},prefault(e){return Ic(this,e)},catch(e){return Bc(this,e)},pipe(e){return Hc(this,e)},readonly(){return Wc(this)},describe(e){let t=this.clone();return V.add(t,{description:e}),t},meta(...e){if(e.length===0)return V.get(this);let t=this.clone();return V.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return jn(this,`~standard`,{...di(this),jsonSchema:{input:Zo(this,`input`),output:Zo(this,`output`)}})},set"~standard"(e){w(this,`~standard`,e)},parse:function e(t,n){return Ss(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await Cs(this,t,n,{callee:e})},safeParse(e,t){return ws(this,e,t)},async safeParseAsync(e,t){return Ts(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){w(this,`spa`,e)},encode:function e(t,n){return Es(this,t,n,{callee:e})},decode:function e(t,n){return Ds(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Os(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await ks(this,t,n,{callee:e})},safeEncode(e,t){return As(this,e,t)},safeDecode(e,t){return js(this,e,t)},async safeEncodeAsync(e,t){return Ms(this,e,t)},async safeDecodeAsync(e,t){return Ns(this,e,t)},toJSONSchema(e){return Xo(this,{})(e)},get description(){return V.get(this)?.description},get _def(){return this._zod.def}}),Is=D(`_ZodString`,(e,t)=>{fi.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$o(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(To(...e))},includes(...e){return this.check(Oo(...e))},startsWith(...e){return this.check(ko(...e))},endsWith(...e){return this.check(Ao(...e))},min(...e){return this.check(H(...e))},max(...e){return this.check(Co(...e))},length(...e){return this.check(wo(...e))},nonempty(...e){return this.check(H(1,...e))},lowercase(e){return this.check(Eo(e))},uppercase(e){return this.check(Do(e))},trim(){return this.check(Mo())},normalize(...e){return this.check(jo(...e))},toLowerCase(){return this.check(No())},toUpperCase(){return this.check(Po())},slugify(){return this.check(Fo())}}),Ls=D(`ZodString`,(e,t)=>{fi.init(e,t),Is.init(e,t)},{email(e){return this.check(Wa(Hs,e))},url(e){return this.check(Xa(Ks,e))},jwt(e){return this.check(fo(cc,e))},emoji(e){return this.check(Za(Js,e))},guid(e){return this.check(Ga(Ws,e))},uuid(e){return this.check(Ka(Gs,e))},uuidv4(e){return this.check(qa(Gs,e))},uuidv6(e){return this.check(Ja(Gs,e))},uuidv7(e){return this.check(Ya(Gs,e))},nanoid(e){return this.check(Qa(Ys,e))},cuid(e){return this.check($a(Xs,e))},cuid2(e){return this.check(eo(Zs,e))},ulid(e){return this.check(to(Qs,e))},base64(e){return this.check(co(ac,e))},base64url(e){return this.check(lo(oc,e))},xid(e){return this.check(no($s,e))},ksuid(e){return this.check(ro(ec,e))},ipv4(e){return this.check(io(tc,e))},ipv6(e){return this.check(ao(nc,e))},cidrv4(e){return this.check(oo(rc,e))},cidrv6(e){return this.check(so(ic,e))},e164(e){return this.check(uo(sc,e))},datetime(e){return this.check(po(Rs,e))},date(e){return this.check(mo(zs,e))},time(e){return this.check(ho(Bs,e))},duration(e){return this.check(go(Vs,e))}});function Z(e){return Ua(Ls,e)}var Q=D(`ZodStringFormat`,(e,t)=>{I.init(e,t),Is.init(e,t)}),Rs=D(`ZodISODateTime`,(e,t)=>{ki.init(e,t),Q.init(e,t)}),zs=D(`ZodISODate`,(e,t)=>{Ai.init(e,t),Q.init(e,t)}),Bs=D(`ZodISOTime`,(e,t)=>{ji.init(e,t),Q.init(e,t)}),Vs=D(`ZodISODuration`,(e,t)=>{Mi.init(e,t),Q.init(e,t)}),Hs=D(`ZodEmail`,(e,t)=>{hi.init(e,t),Q.init(e,t)});function Us(e){return Wa(Hs,e)}var Ws=D(`ZodGUID`,(e,t)=>{pi.init(e,t),Q.init(e,t)}),Gs=D(`ZodUUID`,(e,t)=>{mi.init(e,t),Q.init(e,t)}),Ks=D(`ZodURL`,(e,t)=>{xi.init(e,t),Q.init(e,t)});function qs(e){return Xa(Ks,e)}var Js=D(`ZodEmoji`,(e,t)=>{Si.init(e,t),Q.init(e,t)}),Ys=D(`ZodNanoID`,(e,t)=>{Ci.init(e,t),Q.init(e,t)}),Xs=D(`ZodCUID`,(e,t)=>{wi.init(e,t),Q.init(e,t)}),Zs=D(`ZodCUID2`,(e,t)=>{Ti.init(e,t),Q.init(e,t)}),Qs=D(`ZodULID`,(e,t)=>{Ei.init(e,t),Q.init(e,t)}),$s=D(`ZodXID`,(e,t)=>{Di.init(e,t),Q.init(e,t)}),ec=D(`ZodKSUID`,(e,t)=>{Oi.init(e,t),Q.init(e,t)}),tc=D(`ZodIPv4`,(e,t)=>{Ni.init(e,t),Q.init(e,t)}),nc=D(`ZodIPv6`,(e,t)=>{Ii.init(e,t),Q.init(e,t)}),rc=D(`ZodCIDRv4`,(e,t)=>{Li.init(e,t),Q.init(e,t)}),ic=D(`ZodCIDRv6`,(e,t)=>{zi.init(e,t),Q.init(e,t)}),ac=D(`ZodBase64`,(e,t)=>{Vi.init(e,t),Q.init(e,t)}),oc=D(`ZodBase64URL`,(e,t)=>{Ui.init(e,t),Q.init(e,t)}),sc=D(`ZodE164`,(e,t)=>{Wi.init(e,t),Q.init(e,t)}),cc=D(`ZodJWT`,(e,t)=>{Ki.init(e,t),Q.init(e,t)}),lc=D(`ZodBoolean`,(e,t)=>{qi.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>es(e,t,n,r)});function uc(e){return _o(lc,e)}var dc=D(`ZodUnknown`,(e,t)=>{Ji.init(e,t),X.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function fc(){return vo(dc)}var pc=D(`ZodNever`,(e,t)=>{Yi.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ts(e,t,n,r)});function mc(e){return yo(pc,e)}var hc=D(`ZodDate`,(e,t)=>{Xi.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ns(e,t,n,r),e.min=(t,n)=>e.check(So(t,n)),e.max=(t,n)=>e.check(xo(t,n));let n=e._zod.bag;e.minDate=n.minimum?new Date(n.minimum):null,e.maxDate=n.maximum?new Date(n.maximum):null}),gc=D(`ZodArray`,(e,t)=>{Fs(),Qi.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>os(e,t,n,r),e.element=t.element},{min(e,t){return this.check(H(e,t))},nonempty(e){return this.check(H(1,e))},max(e,t){return this.check(Co(e,t))},length(e,t){return this.check(wo(e,t))},unwrap(){return this.element}});function _c(e,t){return Io(gc,e,t)}var vc=D(`ZodObject`,(e,t)=>{Fs(),ia.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>cs(e,t,n,r),In(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return wc(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:fc()})},loose(){return this.clone({...this._zod.def,catchall:fc()})},strict(){return this.clone({...this._zod.def,catchall:mc()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return vn(this,e)},safeExtend(e){return yn(this,e)},merge(e){return bn(this,e)},pick(e){return gn(this,e)},omit(e){return _n(this,e)},partial(...e){return xn(Dc,this,e[0])},exactPartial(...e){return xn(kc,this,e[0],`exactPartial`)},required(...e){return Sn(Lc,this,e[0])}});function $(e,t){return new vc({type:`object`,shape:e??{},...y(t)})}var yc=D(`ZodUnion`,(e,t)=>{oa.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ls(e,t,n,r),e.options=t.options});function bc(e,t){return new yc({type:`union`,options:e,...y(t)})}var xc=D(`ZodIntersection`,(e,t)=>{sa.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>us(e,t,n,r)});function Sc(e,t){return new xc({type:`intersection`,left:e,right:t})}var Cc=D(`ZodEnum`,(e,t)=>{ua.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>rs(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Cc({...t,checks:[],...y(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Cc({...t,checks:[],...y(r),entries:i})}});function wc(e,t){return new Cc({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...y(t)})}var Tc=D(`ZodTransform`,(e,t)=>{Fs(),da.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>as(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Un(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(C(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(C(t))}};
157let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function Ec(e){return new Tc({type:`transform`,transform:e})}var Dc=D(`ZodOptional`,(e,t)=>{pa.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Oc(e){return new Dc({type:`optional`,innerType:e})}var kc=D(`ZodExactOptional`,(e,t)=>{ma.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ac(e){return new kc({type:`optional`,innerType:e})}var jc=D(`ZodNullable`,(e,t)=>{ha.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ds(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Mc(e){return new jc({type:`nullable`,innerType:e})}var Nc=D(`ZodDefault`,(e,t)=>{ga.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Pc(e,t){return new Nc({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():fn(t)}})}var Fc=D(`ZodPrefault`,(e,t)=>{va.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ic(e,t){return new Fc({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():fn(t)}})}var Lc=D(`ZodNonOptional`,(e,t)=>{ya.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Rc(e,t){return new Lc({type:`nonoptional`,innerType:e,...y(t)})}var zc=D(`ZodCatch`,(e,t)=>{Sa.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_s(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Bc(e,t){return new zc({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Rn(t)})}var Vc=D(`ZodPipe`,(e,t)=>{Ca.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vs(e,t,n,r),e.in=t.in,e.out=t.out});function Hc(e,t){return new Vc({type:`pipe`,in:e,out:t})}var Uc=D(`ZodReadonly`,(e,t)=>{wa.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ys(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Wc(e){return new Uc({type:`readonly`,innerType:e})}var Gc=D(`ZodCustom`,(e,t)=>{Ea.init(e,t),X.init(e,t),e._zod.processJSONSchema=(t,n,r)=>is(e,t,n,r)});function Kc(e,t={}){return Lo(Gc,e,t)}function qc(e,t){return Ro(e,t)}function Jc(e){return bo(hc,e)}var Yc=$({draft:uc().default(!1)});function Xc(e,t,n){let r=e.safeParse(t??{});if(!r.success)throw Error(`Invalid frontmatter in ${n}\n${rr(r.error)}`);return r.data}function Zc(e,t,n){let r=new Map;for(let[i,a]of Object.entries(n)){let n=i.split(`/${e}/`).pop().replace(/\.md$/,``),o=`${e}/${n}.md`,s=Xc(t,a.metadata,o),{draft:c}=Xc(Yc,a.metadata,o);r.set(n,{...s,slug:n,draft:c,Body:a.default})}return r}var Qc=$({name:Z(),email:Us(),title:Z().optional(),links:_c($({platform:Z(),url:qs()})).optional()}),$c=$({title:Z(),summary:Z(),category:wc([`product`,`technical`,`press`]),authors:_c(Z()),publishedAt:Jc(),updatedAt:Jc().optional()}),el=$({title:Z(),updatedAt:Jc().optional()}),tl=Zc(`authors`,Qc,{"../../content/authors/austin.md":i,"../../content/authors/ben.md":d,"../../content/authors/brian.md":re,"../../content/authors/conner.md":ue,"../../content/authors/david.md":_e,"../../content/authors/ersc.md":Ce,"../../content/authors/ilya.md":Oe,"../../content/authors/keith.md":Fe,"../../content/authors/martin.md":Ve,"../../content/authors/nick.md":Je,"../../content/authors/noble.md":tt,"../../content/authors/steve.md":ct}),nl=Zc(`posts`,$c,{"../../content/posts/ersc-availability.md":ht,"../../content/posts/martin-joins-ersc.md":wt,"../../content/posts/what-comes-after-git.md":Nt}),rl=Zc(`legal`,el,{"../../content/legal/privacy.md":Ht,"../../content/legal/terms.md":Jt});function il(e){return e.map(e=>{let t=tl.get(e);if(!t){let t=[...tl.keys()].join(`, `);throw Error(`Unknown author "${e}". Known authors: ${t}`)}return t})}function al(){return[...nl.values()].map(({slug:e,title:t,summary:n,category:r,publishedAt:i,updatedAt:a,draft:o,authors:s})=>({slug:e,title:t,summary:n,category:r,publishedAt:i,updatedAt:a,draft:o,authors:il(s)})).sort((e,t)=>
157t.publishedAt.valueOf()-e.publishedAt.valueOf())}function ol(){return[...nl.keys()]}function sl(){return[...rl.keys()]}function cl(e){let t=nl.get(e);return t?{...t,authors:il(t.authors)}:null}function ll(e){return rl.get(e)??null}export{ol as a,al as i,cl as n,sl as r,ll as t};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.