import{S as br,i as wr,s as Dr,e as a,k as l,w as y,t as f,M as yr,c as s,d as r,m as p,a as i,x as T,h as d,b as o,G as t,g as c,y as $,L as Tr,q as P,o as E,B as k,v as $r}from"../../../chunks/vendor-hf-doc-builder.js";import{D as Gt}from"../../../chunks/Docstring-hf-doc-builder.js";import{C as Pr}from"../../../chunks/CodeBlock-hf-doc-builder.js";import{I as Ee}from"../../../chunks/IconCopyLink-hf-doc-builder.js";function Er(Wt){let u,ke,m,x,oe,G,Ye,ne,Qe,xe,g,S,le,W,Ze,pe,et,Se,H,U,tt,rt,Ae,Z,at,Ie,ee,fe,st,Me,A,it,O,ot,nt,Ne,v,I,de,F,lt,ce,pt,Le,M,he,_,ue,ft,dt,me,ct,ht,te,ut,mt,ge,b,ve,X,gt,vt,_e,be,_t,bt,re,wt,Ce,w,N,we,V,Dt,De,yt,je,B,qe,D,L,ye,K,Tt,Te,$t,Ge,h,R,Pt,z,Et,ae,kt,xt,St,C,J,At,$e,It,Mt,j,Y,Nt,Q,Lt,Pe,Ct,jt,We;return G=new Ee({}),W=new Ee({}),F=new Ee({}),V=new Ee({}),B=new Pr({props:{code:`from diffusers import DiTPipeline, DPMSolverMultistepScheduler
import torch

pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to("cuda")

# pick words from Imagenet class labels
pipe.labels  # to print all available words

# pick words that exist in ImageNet
words = ["white shark", "umbrella"]

class_ids = pipe.get_label_ids(words)

generator = torch.manual_seed(33)
output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

image = output.images[0]  # label 'white shark'`,highlighted:`<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> DiTPipeline, DPMSolverMultistepScheduler
<span class="hljs-keyword">import</span> torch

pipe = DiTPipeline.from_pretrained(<span class="hljs-string">&quot;facebook/DiT-XL-2-256&quot;</span>, torch_dtype=torch.float16)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe = pipe.to(<span class="hljs-string">&quot;cuda&quot;</span>)

<span class="hljs-comment"># pick words from Imagenet class labels</span>
pipe.labels  <span class="hljs-comment"># to print all available words</span>

<span class="hljs-comment"># pick words that exist in ImageNet</span>
words = [<span class="hljs-string">&quot;white shark&quot;</span>, <span class="hljs-string">&quot;umbrella&quot;</span>]

class_ids = pipe.get_label_ids(words)

generator = torch.manual_seed(<span class="hljs-number">33</span>)
output = pipe(class_labels=class_ids, num_inference_steps=<span class="hljs-number">25</span>, generator=generator)

image = output.images[<span class="hljs-number">0</span>]  <span class="hljs-comment"># label &#x27;white shark&#x27;</span>`}}),K=new Ee({}),R=new Gt({props:{name:"class diffusers.DiTPipeline",anchor:"diffusers.DiTPipeline",parameters:[{name:"transformer",val:": Transformer2DModel"},{name:"vae",val:": AutoencoderKL"},{name:"scheduler",val:": KarrasDiffusionSchedulers"},{name:"id2label",val:": typing.Union[typing.Dict[int, str], NoneType] = None"}],parametersDescription:[{anchor:"diffusers.DiTPipeline.transformer",description:`<strong>transformer</strong> (<a href="/docs/diffusers/v0.12.0/en/api/models#diffusers.Transformer2DModel">Transformer2DModel</a>) &#x2014;
Class conditioned Transformer in Diffusion model to denoise the encoded image latents.`,name:"transformer"},{anchor:"diffusers.DiTPipeline.vae",description:`<strong>vae</strong> (<a href="/docs/diffusers/v0.12.0/en/api/models#diffusers.AutoencoderKL">AutoencoderKL</a>) &#x2014;
Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.`,name:"vae"},{anchor:"diffusers.DiTPipeline.scheduler",description:`<strong>scheduler</strong> (<a href="/docs/diffusers/v0.12.0/en/api/schedulers/ddim#diffusers.DDIMScheduler">DDIMScheduler</a>) &#x2014;
A scheduler to be used in combination with <code>dit</code> to denoise the encoded image latents.`,name:"scheduler"}],source:"https://github.com/huggingface/diffusers/blob/v0.12.0/src/diffusers/pipelines/dit/pipeline_dit.py#L31"}}),J=new Gt({props:{name:"__call__",anchor:"diffusers.DiTPipeline.__call__",parameters:[{name:"class_labels",val:": typing.List[int]"},{name:"guidance_scale",val:": float = 4.0"},{name:"generator",val:": typing.Union[torch._C.Generator, typing.List[torch._C.Generator], NoneType] = None"},{name:"num_inference_steps",val:": int = 50"},{name:"output_type",val:": typing.Optional[str] = 'pil'"},{name:"return_dict",val:": bool = True"}],parametersDescription:[{anchor:"diffusers.DiTPipeline.__call__.class_labels",description:`<strong>class_labels</strong> (List[int]) &#x2014;
List of imagenet class labels for the images to be generated.`,name:"class_labels"},{anchor:"diffusers.DiTPipeline.__call__.guidance_scale",description:`<strong>guidance_scale</strong> (<code>float</code>, <em>optional</em>, defaults to 4.0) &#x2014;
Scale of the guidance signal.`,name:"guidance_scale"},{anchor:"diffusers.DiTPipeline.__call__.generator",description:`<strong>generator</strong> (<code>torch.Generator</code>, <em>optional</em>) &#x2014;
A <a href="https://pytorch.org/docs/stable/generated/torch.Generator.html" rel="nofollow">torch generator</a> to make generation
deterministic.`,name:"generator"},{anchor:"diffusers.DiTPipeline.__call__.num_inference_steps",description:`<strong>num_inference_steps</strong> (<code>int</code>, <em>optional</em>, defaults to 250) &#x2014;
The number of denoising steps. More denoising steps usually lead to a higher quality image at the
expense of slower inference.`,name:"num_inference_steps"},{anchor:"diffusers.DiTPipeline.__call__.output_type",description:`<strong>output_type</strong> (<code>str</code>, <em>optional</em>, defaults to <code>&quot;pil&quot;</code>) &#x2014;
The output format of the generate image. Choose between
<a href="https://pillow.readthedocs.io/en/stable/" rel="nofollow">PIL</a>: <code>PIL.Image.Image</code> or <code>np.array</code>.`,name:"output_type"},{anchor:"diffusers.DiTPipeline.__call__.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether or not to return a <a href="/docs/diffusers/v0.12.0/en/api/diffusion_pipeline#diffusers.ImagePipelineOutput">ImagePipelineOutput</a> instead of a plain tuple.`,name:"return_dict"}],source:"https://github.com/huggingface/diffusers/blob/v0.12.0/src/diffusers/pipelines/dit/pipeline_dit.py#L86"}}),Y=new Gt({props:{name:"get_label_ids",anchor:"diffusers.DiTPipeline.get_label_ids",parameters:[{name:"label",val:": typing.Union[str, typing.List[str]]"}],parametersDescription:[{anchor:"diffusers.DiTPipeline.get_label_ids.label",description:"<strong>label</strong> (<code>str</code> or <code>dict</code> of <code>str</code>) &#x2014; label strings to be mapped to class ids.",name:"label"}],source:"https://github.com/huggingface/diffusers/blob/v0.12.0/src/diffusers/pipelines/dit/pipeline_dit.py#L63",returnDescription:`
<p>Class ids to be processed by pipeline.</p>
`,returnType:`
<p><code>list</code> of <code>int</code></p>
`}}),{c(){u=a("meta"),ke=l(),m=a("h1"),x=a("a"),oe=a("span"),y(G.$$.fragment),Ye=l(),ne=a("span"),Qe=f("Scalable Diffusion Models with Transformers (DiT)"),xe=l(),g=a("h2"),S=a("a"),le=a("span"),y(W.$$.fragment),Ze=l(),pe=a("span"),et=f("Overview"),Se=l(),H=a("p"),U=a("a"),tt=f("Scalable Diffusion Models with Transformers"),rt=f(" (DiT) by William Peebles and Saining Xie."),Ae=l(),Z=a("p"),at=f("The abstract of the paper is the following:"),Ie=l(),ee=a("p"),fe=a("em"),st=f("We explore a new class of diffusion models based on the transformer architecture. We train latent diffusion models of images, replacing the commonly-used U-Net backbone with a transformer that operates on latent patches. We analyze the scalability of our Diffusion Transformers (DiTs) through the lens of forward pass complexity as measured by Gflops. We find that DiTs with higher Gflops \u2014 through increased transformer depth/width or increased number of input tokens \u2014 consistently have lower FID. In addition to possessing good scalability properties, our largest DiT-XL/2 models outperform all prior diffusion models on the class-conditional ImageNet 512x512 and 256x256 benchmarks, achieving a state-of-the-art FID of 2.27 on the latter."),Me=l(),A=a("p"),it=f("The original codebase of this paper can be found here: "),O=a("a"),ot=f("facebookresearch/dit"),nt=f("."),Ne=l(),v=a("h2"),I=a("a"),de=a("span"),y(F.$$.fragment),lt=l(),ce=a("span"),pt=f("Available Pipelines:"),Le=l(),M=a("table"),he=a("thead"),_=a("tr"),ue=a("th"),ft=f("Pipeline"),dt=l(),me=a("th"),ct=f("Tasks"),ht=l(),te=a("th"),ut=f("Colab"),mt=l(),ge=a("tbody"),b=a("tr"),ve=a("td"),X=a("a"),gt=f("pipeline_dit.py"),vt=l(),_e=a("td"),be=a("em"),_t=f("Conditional Image Generation"),bt=l(),re=a("td"),wt=f("-"),Ce=l(),w=a("h2"),N=a("a"),we=a("span"),y(V.$$.fragment),Dt=l(),De=a("span"),yt=f("Usage example"),je=l(),y(B.$$.fragment),qe=l(),D=a("h2"),L=a("a"),ye=a("span"),y(K.$$.fragment),Tt=l(),Te=a("span"),$t=f("DiTPipeline"),Ge=l(),h=a("div"),y(R.$$.fragment),Pt=l(),z=a("p"),Et=f("This pipeline inherits from "),ae=a("a"),kt=f("DiffusionPipeline"),xt=f(`. Check the superclass documentation for the generic methods the
library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)`),St=l(),C=a("div"),y(J.$$.fragment),At=l(),$e=a("p"),It=f("Function invoked when calling the pipeline for generation."),Mt=l(),j=a("div"),y(Y.$$.fragment),Nt=l(),Q=a("p"),Lt=f("Map label strings, "),Pe=a("em"),Ct=f("e.g."),jt=f(" from ImageNet, to corresponding class ids."),this.h()},l(e){const n=yr('[data-svelte="svelte-1phssyn"]',document.head);u=s(n,"META",{name:!0,content:!0}),n.forEach(r),ke=p(e),m=s(e,"H1",{class:!0});var He=i(m);x=s(He,"A",{id:!0,class:!0,href:!0});var Ht=i(x);oe=s(Ht,"SPAN",{});var Ut=i(oe);T(G.$$.fragment,Ut),Ut.forEach(r),Ht.forEach(r),Ye=p(He),ne=s(He,"SPAN",{});var Ot=i(ne);Qe=d(Ot,"Scalable Diffusion Models with Transformers (DiT)"),Ot.forEach(r),He.forEach(r),xe=p(e),g=s(e,"H2",{class:!0});var Ue=i(g);S=s(Ue,"A",{id:!0,class:!0,href:!0});var Ft=i(S);le=s(Ft,"SPAN",{});var Xt=i(le);T(W.$$.fragment,Xt),Xt.forEach(r),Ft.forEach(r),Ze=p(Ue),pe=s(Ue,"SPAN",{});var Vt=i(pe);et=d(Vt,"Overview"),Vt.forEach(r),Ue.forEach(r),Se=p(e),H=s(e,"P",{});var qt=i(H);U=s(qt,"A",{href:!0,rel:!0});var Bt=i(U);tt=d(Bt,"Scalable Diffusion Models with Transformers"),Bt.forEach(r),rt=d(qt," (DiT) by William Peebles and Saining Xie."),qt.forEach(r),Ae=p(e),Z=s(e,"P",{});var Kt=i(Z);at=d(Kt,"The abstract of the paper is the following:"),Kt.forEach(r),Ie=p(e),ee=s(e,"P",{});var Rt=i(ee);fe=s(Rt,"EM",{});var zt=i(fe);st=d(zt,"We explore a new class of diffusion models based on the transformer architecture. We train latent diffusion models of images, replacing the commonly-used U-Net backbone with a transformer that operates on latent patches. We analyze the scalability of our Diffusion Transformers (DiTs) through the lens of forward pass complexity as measured by Gflops. We find that DiTs with higher Gflops \u2014 through increased transformer depth/width or increased number of input tokens \u2014 consistently have lower FID. In addition to possessing good scalability properties, our largest DiT-XL/2 models outperform all prior diffusion models on the class-conditional ImageNet 512x512 and 256x256 benchmarks, achieving a state-of-the-art FID of 2.27 on the latter."),zt.forEach(r),Rt.forEach(r),Me=p(e),A=s(e,"P",{});var Oe=i(A);it=d(Oe,"The original codebase of this paper can be found here: "),O=s(Oe,"A",{href:!0,rel:!0});var Jt=i(O);ot=d(Jt,"facebookresearch/dit"),Jt.forEach(r),nt=d(Oe,"."),Oe.forEach(r),Ne=p(e),v=s(e,"H2",{class:!0});var Fe=i(v);I=s(Fe,"A",{id:!0,class:!0,href:!0});var Yt=i(I);de=s(Yt,"SPAN",{});var Qt=i(de);T(F.$$.fragment,Qt),Qt.forEach(r),Yt.forEach(r),lt=p(Fe),ce=s(Fe,"SPAN",{});var Zt=i(ce);pt=d(Zt,"Available Pipelines:"),Zt.forEach(r),Fe.forEach(r),Le=p(e),M=s(e,"TABLE",{});var Xe=i(M);he=s(Xe,"THEAD",{});var er=i(he);_=s(er,"TR",{});var se=i(_);ue=s(se,"TH",{});var tr=i(ue);ft=d(tr,"Pipeline"),tr.forEach(r),dt=p(se),me=s(se,"TH",{});var rr=i(me);ct=d(rr,"Tasks"),rr.forEach(r),ht=p(se),te=s(se,"TH",{align:!0});var ar=i(te);ut=d(ar,"Colab"),ar.forEach(r),se.forEach(r),er.forEach(r),mt=p(Xe),ge=s(Xe,"TBODY",{});var sr=i(ge);b=s(sr,"TR",{});var ie=i(b);ve=s(ie,"TD",{});var ir=i(ve);X=s(ir,"A",{href:!0,rel:!0});var or=i(X);gt=d(or,"pipeline_dit.py"),or.forEach(r),ir.forEach(r),vt=p(ie),_e=s(ie,"TD",{});var nr=i(_e);be=s(nr,"EM",{});var lr=i(be);_t=d(lr,"Conditional Image Generation"),lr.forEach(r),nr.forEach(r),bt=p(ie),re=s(ie,"TD",{align:!0});var pr=i(re);wt=d(pr,"-"),pr.forEach(r),ie.forEach(r),sr.forEach(r),Xe.forEach(r),Ce=p(e),w=s(e,"H2",{class:!0});var Ve=i(w);N=s(Ve,"A",{id:!0,class:!0,href:!0});var fr=i(N);we=s(fr,"SPAN",{});var dr=i(we);T(V.$$.fragment,dr),dr.forEach(r),fr.forEach(r),Dt=p(Ve),De=s(Ve,"SPAN",{});var cr=i(De);yt=d(cr,"Usage example"),cr.forEach(r),Ve.forEach(r),je=p(e),T(B.$$.fragment,e),qe=p(e),D=s(e,"H2",{class:!0});var Be=i(D);L=s(Be,"A",{id:!0,class:!0,href:!0});var hr=i(L);ye=s(hr,"SPAN",{});var ur=i(ye);T(K.$$.fragment,ur),ur.forEach(r),hr.forEach(r),Tt=p(Be),Te=s(Be,"SPAN",{});var mr=i(Te);$t=d(mr,"DiTPipeline"),mr.forEach(r),Be.forEach(r),Ge=p(e),h=s(e,"DIV",{class:!0});var q=i(h);T(R.$$.fragment,q),Pt=p(q),z=s(q,"P",{});var Ke=i(z);Et=d(Ke,"This pipeline inherits from "),ae=s(Ke,"A",{href:!0});var gr=i(ae);kt=d(gr,"DiffusionPipeline"),gr.forEach(r),xt=d(Ke,`. Check the superclass documentation for the generic methods the
library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)`),Ke.forEach(r),St=p(q),C=s(q,"DIV",{class:!0});var Re=i(C);T(J.$$.fragment,Re),At=p(Re),$e=s(Re,"P",{});var vr=i($e);It=d(vr,"Function invoked when calling the pipeline for generation."),vr.forEach(r),Re.forEach(r),Mt=p(q),j=s(q,"DIV",{class:!0});var ze=i(j);T(Y.$$.fragment,ze),Nt=p(ze),Q=s(ze,"P",{});var Je=i(Q);Lt=d(Je,"Map label strings, "),Pe=s(Je,"EM",{});var _r=i(Pe);Ct=d(_r,"e.g."),_r.forEach(r),jt=d(Je," from ImageNet, to corresponding class ids."),Je.forEach(r),ze.forEach(r),q.forEach(r),this.h()},h(){o(u,"name","hf:doc:metadata"),o(u,"content",JSON.stringify(kr)),o(x,"id","scalable-diffusion-models-with-transformers-dit"),o(x,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),o(x,"href","#scalable-diffusion-models-with-transformers-dit"),o(m,"class","relative group"),o(S,"id","overview"),o(S,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),o(S,"href","#overview"),o(g,"class","relative group"),o(U,"href","https://arxiv.org/abs/2212.09748"),o(U,"rel","nofollow"),o(O,"href","https://github.com/facebookresearch/dit"),o(O,"rel","nofollow"),o(I,"id","available-pipelines"),o(I,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),o(I,"href","#available-pipelines"),o(v,"class","relative group"),o(te,"align","center"),o(X,"href","https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/dit/pipeline_dit.py"),o(X,"rel","nofollow"),o(re,"align","center"),o(N,"id","usage-example"),o(N,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),o(N,"href","#usage-example"),o(w,"class","relative group"),o(L,"id","diffusers.DiTPipeline"),o(L,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),o(L,"href","#diffusers.DiTPipeline"),o(D,"class","relative group"),o(ae,"href","/docs/diffusers/v0.12.0/en/api/diffusion_pipeline#diffusers.DiffusionPipeline"),o(C,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),o(j,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),o(h,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,n){t(document.head,u),c(e,ke,n),c(e,m,n),t(m,x),t(x,oe),$(G,oe,null),t(m,Ye),t(m,ne),t(ne,Qe),c(e,xe,n),c(e,g,n),t(g,S),t(S,le),$(W,le,null),t(g,Ze),t(g,pe),t(pe,et),c(e,Se,n),c(e,H,n),t(H,U),t(U,tt),t(H,rt),c(e,Ae,n),c(e,Z,n),t(Z,at),c(e,Ie,n),c(e,ee,n),t(ee,fe),t(fe,st),c(e,Me,n),c(e,A,n),t(A,it),t(A,O),t(O,ot),t(A,nt),c(e,Ne,n),c(e,v,n),t(v,I),t(I,de),$(F,de,null),t(v,lt),t(v,ce),t(ce,pt),c(e,Le,n),c(e,M,n),t(M,he),t(he,_),t(_,ue),t(ue,ft),t(_,dt),t(_,me),t(me,ct),t(_,ht),t(_,te),t(te,ut),t(M,mt),t(M,ge),t(ge,b),t(b,ve),t(ve,X),t(X,gt),t(b,vt),t(b,_e),t(_e,be),t(be,_t),t(b,bt),t(b,re),t(re,wt),c(e,Ce,n),c(e,w,n),t(w,N),t(N,we),$(V,we,null),t(w,Dt),t(w,De),t(De,yt),c(e,je,n),$(B,e,n),c(e,qe,n),c(e,D,n),t(D,L),t(L,ye),$(K,ye,null),t(D,Tt),t(D,Te),t(Te,$t),c(e,Ge,n),c(e,h,n),$(R,h,null),t(h,Pt),t(h,z),t(z,Et),t(z,ae),t(ae,kt),t(z,xt),t(h,St),t(h,C),$(J,C,null),t(C,At),t(C,$e),t($e,It),t(h,Mt),t(h,j),$(Y,j,null),t(j,Nt),t(j,Q),t(Q,Lt),t(Q,Pe),t(Pe,Ct),t(Q,jt),We=!0},p:Tr,i(e){We||(P(G.$$.fragment,e),P(W.$$.fragment,e),P(F.$$.fragment,e),P(V.$$.fragment,e),P(B.$$.fragment,e),P(K.$$.fragment,e),P(R.$$.fragment,e),P(J.$$.fragment,e),P(Y.$$.fragment,e),We=!0)},o(e){E(G.$$.fragment,e),E(W.$$.fragment,e),E(F.$$.fragment,e),E(V.$$.fragment,e),E(B.$$.fragment,e),E(K.$$.fragment,e),E(R.$$.fragment,e),E(J.$$.fragment,e),E(Y.$$.fragment,e),We=!1},d(e){r(u),e&&r(ke),e&&r(m),k(G),e&&r(xe),e&&r(g),k(W),e&&r(Se),e&&r(H),e&&r(Ae),e&&r(Z),e&&r(Ie),e&&r(ee),e&&r(Me),e&&r(A),e&&r(Ne),e&&r(v),k(F),e&&r(Le),e&&r(M),e&&r(Ce),e&&r(w),k(V),e&&r(je),k(B,e),e&&r(qe),e&&r(D),k(K),e&&r(Ge),e&&r(h),k(R),k(J),k(Y)}}}const kr={local:"scalable-diffusion-models-with-transformers-dit",sections:[{local:"overview",title:"Overview"},{local:"available-pipelines",title:"Available Pipelines:"},{local:"usage-example",title:"Usage example"},{local:"diffusers.DiTPipeline",title:"DiTPipeline"}],title:"Scalable Diffusion Models with Transformers (DiT)"};function xr(Wt){return $r(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Nr extends br{constructor(u){super();wr(this,u,xr,Er,Dr,{})}}export{Nr as default,kr as metadata};
