import{S as nr,i as sr,s as hr,e as a,k as l,w as p,t as g,M as lr,c as i,d as t,m as u,a as n,x as c,h as w,b as s,G as r,g as h,y as f,L as ur,q as m,o as d,B as y,v as pr}from"../../chunks/vendor-hf-doc-builder.js";import{I as q}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as cr}from"../../chunks/CodeBlock-hf-doc-builder.js";import{C as fr}from"../../chunks/CourseFloatingBanner-hf-doc-builder.js";import{Q as H}from"../../chunks/Question-hf-doc-builder.js";function mr(St){let v,Ae,$,S,le,j,nt,ue,st,Te,D,qe,se,ht,Se,b,C,pe,L,lt,ce,ut,Ce,O,Ge,x,G,fe,R,pt,me,ct,Ie,B,Ne,_,I,de,M,ft,ye,mt,We,J,Ue,he,dt,Fe,Q,ze,k,N,ge,Y,yt,K,gt,we,wt,vt,He,V,je,E,W,ve,X,$t,$e,bt,De,Z,Le,P,U,be,ee,xt,xe,_t,Oe,te,Re,A,F,_e,re,kt,ke,Et,Be,oe,Me,T,z,Ee,ae,Pt,ie,At,Pe,Tt,qt,Je,ne,Qe;return j=new q({}),D=new fr({props:{chapter:8,classNames:"absolute z-10 right-0 top-0"}}),L=new q({}),O=new H({props:{choices:[{text:"From top to bottom",explain:"Try again -- although most other programming languages print the exception at the top, Python is special in this regard."},{text:"From bottom to top",explain:"Correct! One advantage of Python's tracebacks showing the exception at the bottom is that it's easier to debug when you're working in the terminal and this is the last line you see.",correct:!0}]}}),R=new q({}),B=new H({props:{choices:[{text:"A simple implementation of a Transformer architecture from a research article",explain:"Although it is very educational to implement your own Transformer models from scratch, this is not what we're talking about here."},{text:"A compact and self-contained block of code that can be run without any external dependencies on private files or data",explain:"Correct! Minimal reproducible examples help the library's maintainers reproduce the problem you are having, so they can find solutions faster.",correct:!0},{text:"A screenshot of the Python traceback",explain:"Try again -- although it is tempting to include a screenshot of the error you are facing when filing an issue, this makes it very difficult for others to reproduce the error."},{text:"A notebook that contains your whole analysis, including parts unrelated to the error",explain:"Not quite -- although it can be helpful to share a Google Colab notebook that shows the error, make sure it is short and only contains the relevant code."}]}}),M=new q({}),J=new cr({props:{code:`from transformers import GPT3ForSequenceClassification

# ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)
# ---------------------------------------------------------------------------
# ImportError                               Traceback (most recent call last)
# /var/folders/28/k4cy5q7s2hs92xq7_h89_vgm0000gn/T/ipykernel_30848/333858878.py in <module>
# ----> 1 from transformers import GPT3ForSequenceClassification

# ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> GPT3ForSequenceClassification

<span class="hljs-comment"># ImportError: cannot import name &#x27;GPT3ForSequenceClassification&#x27; from &#x27;transformers&#x27; (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)</span>
<span class="hljs-comment"># ---------------------------------------------------------------------------</span>
<span class="hljs-comment"># ImportError                               Traceback (most recent call last)</span>
<span class="hljs-comment"># /var/folders/28/k4cy5q7s2hs92xq7_h89_vgm0000gn/T/ipykernel_30848/333858878.py in &lt;module&gt;</span>
<span class="hljs-comment"># ----&gt; 1 from transformers import GPT3ForSequenceClassification</span>

<span class="hljs-comment"># ImportError: cannot import name &#x27;GPT3ForSequenceClassification&#x27; from &#x27;transformers&#x27; (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)</span>`}}),Q=new H({props:{choices:[{text:"<code>ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)</code>",explain:"Including the last line of the traceback can be descriptive, but this is better reserved for the main body of the topic. Try again!"},{text:"Problem with <code>from transformers import GPT3ForSequenceClassification</code>",explain:"Try again -- although this provides useful information, it's probably best reserved for the main body of the text."},{text:"Why can't I import <code>GPT3ForSequenceClassification</code>?",explain:"Good choice! This title is concise and gives the reader a clue about what might be wrong (i.e., that GPT-3 is not supported in \u{1F917} Transformers).",correct:!0},{text:"Is GPT-3 supported in \u{1F917} Transformers?",explain:"Good one! Using questions as topic titles is a great way to communicate the problem to the community.",correct:!0}]}}),Y=new q({}),V=new H({props:{choices:[{text:"The optimization step where we compute gradients and perform backpropagation",explain:"Although there may be bugs in your optimizer, this is usually several steps into the training pipeline, so there are other things to check first. Try again!"},{text:"The evaluation step where we compute metrics",explain:"Evaluation is usually what you do after training for a full epoch, so you should first check somewhere earlier in the training pipeline."},{text:"The datasets",explain:"Correct! Looking at your data is almost always the first thing you should do, to make sure the text is encoded appropriately, has the expected features, and so on.",correct:!0},{text:"The dataloaders",explain:"Try again -- this is very close to the first thing you should check. Do you remember what object we pass to the dataloaders?"}]}}),X=new q({}),Z=new H({props:{choices:[{text:"Post the error message on the forums or GitHub.",explain:"That won't help anyone as CUDA error messages are usually very uninformative."},{text:"Execute the same code on the CPU.",explain:"Exactly, that should give you a better error message!",correct:!0},{text:"Read the traceback to find out what caused the error.",explain:"That's what you would do for any other error, but CUDA errors are usually not raised where they happened because most CUDA operations are asynchronous."},{text:"Reduce the batch size.",explain:"Reducing the batch size is usually a good strategy for handling CUDA out-of-memory errors, but not for this particular problem. Try again!"},{text:"Restart the Jupyter kernel.",explain:"Try again -- restarting the kernel won't make the error magically go away!"}]}}),ee=new q({}),te=new H({props:{choices:[{text:"Post a full reproducible example of the bug.",explain:"Yes, that's the best way to help the maintainers find your bug. What else should you do?",correct:!0},{text:"Ask every day for an update.",explain:"That's unlikely to get you any help; people will probably ignore you more."},{text:"Inspect the source code around the bug and try to find the reason why it happens. Post the results in the issue.",explain:"That will definitely help the maintainers! And if you do find the source of the bug and a fix, you can even open a pull request. What else should you do?",correct:!0}]}}),re=new q({}),oe=new H({props:{choices:[{text:"It isn't; overfitting is always bad and should be avoided.",explain:"When training over the whole dataset, overfitting can indeed be a sign that your model won't generalize well to new examples. For debugging, though, we don't usually train over the whole dataset. Try again!"},{text:"It allows us to verify that the model is able to reduce the loss to zero.",explain:"Correct! With a small batch with as little as two examples, we can quickly verify whether the model is capable of learning.",correct:!0},{text:"It allows us to verify that the tensor shapes of our inputs and labels are correct.",explain:"Try again -- if your tensor shapes are misaligned, then you certainly won't be able to train, even on a single batch."}]}}),ae=new q({}),ne=new H({props:{choices:[{text:"It allows the maintainers to understand which version of the library you're using.",explain:"Correct! Since each major version of the library may have changes in the API, knowing which specific version you are using can help narrow down the problem. What are the other benefits?",correct:!0},{text:"It allows the maintainers to know whether you're running code on Windows, macOS, or Linux.",explain:"Correct! Errors can sometimes be caused by the specific operating system you are using, and knowing this helps the maintainers reproduce them locally. That's not the only reason, though.",correct:!0},{text:"It allows the maintainers to know whether you're running code on a GPU or CPU.",explain:"Correct! As we've seen in this chapter, code ran on GPUs or CPUs may produce diffferent results or errors, and knowing which hardware you're using can help focus the maintainers' attention. But this isn't the only benefit...",correct:!0}]}}),{c(){v=a("meta"),Ae=l(),$=a("h1"),S=a("a"),le=a("span"),p(j.$$.fragment),nt=l(),ue=a("span"),st=g("End-of-chapter quiz"),Te=l(),p(D.$$.fragment),qe=l(),se=a("p"),ht=g("Let\u2019s test what you learned in this chapter!"),Se=l(),b=a("h3"),C=a("a"),pe=a("span"),p(L.$$.fragment),lt=l(),ce=a("span"),ut=g("1. In which order should you read a Python traceback?"),Ce=l(),p(O.$$.fragment),Ge=l(),x=a("h3"),G=a("a"),fe=a("span"),p(R.$$.fragment),pt=l(),me=a("span"),ct=g("2. What is a minimal reproducible example?"),Ie=l(),p(B.$$.fragment),Ne=l(),_=a("h3"),I=a("a"),de=a("span"),p(M.$$.fragment),ft=l(),ye=a("span"),mt=g("3. Suppose you try to run the following code, which throws an error:"),We=l(),p(J.$$.fragment),Ue=l(),he=a("p"),dt=g("Which of the following might be a good choice for the title of a forum topic to ask for help?"),Fe=l(),p(Q.$$.fragment),ze=l(),k=a("h3"),N=a("a"),ge=a("span"),p(Y.$$.fragment),yt=l(),K=a("span"),gt=g("4. Suppose you\u2019ve tried to run "),we=a("code"),wt=g("trainer.train()"),vt=g(" and are faced with a cryptic error that doesn\u2019t tell you exactly where the error is coming from. Which of the following is the first place you should look for errors in your training pipeline?"),He=l(),p(V.$$.fragment),je=l(),E=a("h3"),W=a("a"),ve=a("span"),p(X.$$.fragment),$t=l(),$e=a("span"),bt=g("5. What is the best way to debug a CUDA error?"),De=l(),p(Z.$$.fragment),Le=l(),P=a("h3"),U=a("a"),be=a("span"),p(ee.$$.fragment),xt=l(),xe=a("span"),_t=g("6. What is the best way to get an issue on GitHub fixed?"),Oe=l(),p(te.$$.fragment),Re=l(),A=a("h3"),F=a("a"),_e=a("span"),p(re.$$.fragment),kt=l(),ke=a("span"),Et=g("7. Why is overfitting to one batch usually a good debugging technique?"),Be=l(),p(oe.$$.fragment),Me=l(),T=a("h3"),z=a("a"),Ee=a("span"),p(ae.$$.fragment),Pt=l(),ie=a("span"),At=g("8. Why is it a good idea to include details on your compute environment with "),Pe=a("code"),Tt=g("transformers-cli env"),qt=g(" when creating a new issue in the \u{1F917} Transformers repo?"),Je=l(),p(ne.$$.fragment),this.h()},l(e){const o=lr('[data-svelte="svelte-1phssyn"]',document.head);v=i(o,"META",{name:!0,content:!0}),o.forEach(t),Ae=u(e),$=i(e,"H1",{class:!0});var Ye=n($);S=i(Ye,"A",{id:!0,class:!0,href:!0});var Ct=n(S);le=i(Ct,"SPAN",{});var Gt=n(le);c(j.$$.fragment,Gt),Gt.forEach(t),Ct.forEach(t),nt=u(Ye),ue=i(Ye,"SPAN",{});var It=n(ue);st=w(It,"End-of-chapter quiz"),It.forEach(t),Ye.forEach(t),Te=u(e),c(D.$$.fragment,e),qe=u(e),se=i(e,"P",{});var Nt=n(se);ht=w(Nt,"Let\u2019s test what you learned in this chapter!"),Nt.forEach(t),Se=u(e),b=i(e,"H3",{class:!0});var Ke=n(b);C=i(Ke,"A",{id:!0,class:!0,href:!0});var Wt=n(C);pe=i(Wt,"SPAN",{});var Ut=n(pe);c(L.$$.fragment,Ut),Ut.forEach(t),Wt.forEach(t),lt=u(Ke),ce=i(Ke,"SPAN",{});var Ft=n(ce);ut=w(Ft,"1. In which order should you read a Python traceback?"),Ft.forEach(t),Ke.forEach(t),Ce=u(e),c(O.$$.fragment,e),Ge=u(e),x=i(e,"H3",{class:!0});var Ve=n(x);G=i(Ve,"A",{id:!0,class:!0,href:!0});var zt=n(G);fe=i(zt,"SPAN",{});var Ht=n(fe);c(R.$$.fragment,Ht),Ht.forEach(t),zt.forEach(t),pt=u(Ve),me=i(Ve,"SPAN",{});var jt=n(me);ct=w(jt,"2. What is a minimal reproducible example?"),jt.forEach(t),Ve.forEach(t),Ie=u(e),c(B.$$.fragment,e),Ne=u(e),_=i(e,"H3",{class:!0});var Xe=n(_);I=i(Xe,"A",{id:!0,class:!0,href:!0});var Dt=n(I);de=i(Dt,"SPAN",{});var Lt=n(de);c(M.$$.fragment,Lt),Lt.forEach(t),Dt.forEach(t),ft=u(Xe),ye=i(Xe,"SPAN",{});var Ot=n(ye);mt=w(Ot,"3. Suppose you try to run the following code, which throws an error:"),Ot.forEach(t),Xe.forEach(t),We=u(e),c(J.$$.fragment,e),Ue=u(e),he=i(e,"P",{});var Rt=n(he);dt=w(Rt,"Which of the following might be a good choice for the title of a forum topic to ask for help?"),Rt.forEach(t),Fe=u(e),c(Q.$$.fragment,e),ze=u(e),k=i(e,"H3",{class:!0});var Ze=n(k);N=i(Ze,"A",{id:!0,class:!0,href:!0});var Bt=n(N);ge=i(Bt,"SPAN",{});var Mt=n(ge);c(Y.$$.fragment,Mt),Mt.forEach(t),Bt.forEach(t),yt=u(Ze),K=i(Ze,"SPAN",{});var et=n(K);gt=w(et,"4. Suppose you\u2019ve tried to run "),we=i(et,"CODE",{});var Jt=n(we);wt=w(Jt,"trainer.train()"),Jt.forEach(t),vt=w(et," and are faced with a cryptic error that doesn\u2019t tell you exactly where the error is coming from. Which of the following is the first place you should look for errors in your training pipeline?"),et.forEach(t),Ze.forEach(t),He=u(e),c(V.$$.fragment,e),je=u(e),E=i(e,"H3",{class:!0});var tt=n(E);W=i(tt,"A",{id:!0,class:!0,href:!0});var Qt=n(W);ve=i(Qt,"SPAN",{});var Yt=n(ve);c(X.$$.fragment,Yt),Yt.forEach(t),Qt.forEach(t),$t=u(tt),$e=i(tt,"SPAN",{});var Kt=n($e);bt=w(Kt,"5. What is the best way to debug a CUDA error?"),Kt.forEach(t),tt.forEach(t),De=u(e),c(Z.$$.fragment,e),Le=u(e),P=i(e,"H3",{class:!0});var rt=n(P);U=i(rt,"A",{id:!0,class:!0,href:!0});var Vt=n(U);be=i(Vt,"SPAN",{});var Xt=n(be);c(ee.$$.fragment,Xt),Xt.forEach(t),Vt.forEach(t),xt=u(rt),xe=i(rt,"SPAN",{});var Zt=n(xe);_t=w(Zt,"6. What is the best way to get an issue on GitHub fixed?"),Zt.forEach(t),rt.forEach(t),Oe=u(e),c(te.$$.fragment,e),Re=u(e),A=i(e,"H3",{class:!0});var ot=n(A);F=i(ot,"A",{id:!0,class:!0,href:!0});var er=n(F);_e=i(er,"SPAN",{});var tr=n(_e);c(re.$$.fragment,tr),tr.forEach(t),er.forEach(t),kt=u(ot),ke=i(ot,"SPAN",{});var rr=n(ke);Et=w(rr,"7. Why is overfitting to one batch usually a good debugging technique?"),rr.forEach(t),ot.forEach(t),Be=u(e),c(oe.$$.fragment,e),Me=u(e),T=i(e,"H3",{class:!0});var at=n(T);z=i(at,"A",{id:!0,class:!0,href:!0});var or=n(z);Ee=i(or,"SPAN",{});var ar=n(Ee);c(ae.$$.fragment,ar),ar.forEach(t),or.forEach(t),Pt=u(at),ie=i(at,"SPAN",{});var it=n(ie);At=w(it,"8. Why is it a good idea to include details on your compute environment with "),Pe=i(it,"CODE",{});var ir=n(Pe);Tt=w(ir,"transformers-cli env"),ir.forEach(t),qt=w(it," when creating a new issue in the \u{1F917} Transformers repo?"),it.forEach(t),at.forEach(t),Je=u(e),c(ne.$$.fragment,e),this.h()},h(){s(v,"name","hf:doc:metadata"),s(v,"content",JSON.stringify(dr)),s(S,"id","end-of-chapter-quiz"),s(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"),s(S,"href","#end-of-chapter-quiz"),s($,"class","relative group"),s(C,"id","1.-in-which-order-should-you-read-a-python-traceback?"),s(C,"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"),s(C,"href","#1.-in-which-order-should-you-read-a-python-traceback?"),s(b,"class","relative group"),s(G,"id","2.-what-is-a-minimal-reproducible-example?"),s(G,"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"),s(G,"href","#2.-what-is-a-minimal-reproducible-example?"),s(x,"class","relative group"),s(I,"id","3.-suppose-you-try-to-run-the-following-code,-which-throws-an-error:"),s(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"),s(I,"href","#3.-suppose-you-try-to-run-the-following-code,-which-throws-an-error:"),s(_,"class","relative group"),s(N,"id","4.-suppose-you\u2019ve-tried-to-run-<code>trainer.train()</code>-and-are-faced-with-a-cryptic-error-that-doesn\u2019t-tell-you-exactly-where-the-error-is-coming-from.-which-of-the-following-is-the-first-place-you-should-look-for-errors-in-your-training-pipeline?"),s(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"),s(N,"href","#4.-suppose-you\u2019ve-tried-to-run-<code>trainer.train()</code>-and-are-faced-with-a-cryptic-error-that-doesn\u2019t-tell-you-exactly-where-the-error-is-coming-from.-which-of-the-following-is-the-first-place-you-should-look-for-errors-in-your-training-pipeline?"),s(k,"class","relative group"),s(W,"id","5.-what-is-the-best-way-to-debug-a-cuda-error?"),s(W,"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"),s(W,"href","#5.-what-is-the-best-way-to-debug-a-cuda-error?"),s(E,"class","relative group"),s(U,"id","6.-what-is-the-best-way-to-get-an-issue-on-github-fixed?"),s(U,"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"),s(U,"href","#6.-what-is-the-best-way-to-get-an-issue-on-github-fixed?"),s(P,"class","relative group"),s(F,"id","7.-why-is-overfitting-to-one-batch-usually-a-good-debugging-technique?"),s(F,"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"),s(F,"href","#7.-why-is-overfitting-to-one-batch-usually-a-good-debugging-technique?"),s(A,"class","relative group"),s(z,"id","8.-why-is-it-a-good-idea-to-include-details-on-your-compute-environment-with-<code>transformers-cli-env</code>-when-creating-a-new-issue-in-the-\u{1F917}-transformers-repo?"),s(z,"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"),s(z,"href","#8.-why-is-it-a-good-idea-to-include-details-on-your-compute-environment-with-<code>transformers-cli-env</code>-when-creating-a-new-issue-in-the-\u{1F917}-transformers-repo?"),s(T,"class","relative group")},m(e,o){r(document.head,v),h(e,Ae,o),h(e,$,o),r($,S),r(S,le),f(j,le,null),r($,nt),r($,ue),r(ue,st),h(e,Te,o),f(D,e,o),h(e,qe,o),h(e,se,o),r(se,ht),h(e,Se,o),h(e,b,o),r(b,C),r(C,pe),f(L,pe,null),r(b,lt),r(b,ce),r(ce,ut),h(e,Ce,o),f(O,e,o),h(e,Ge,o),h(e,x,o),r(x,G),r(G,fe),f(R,fe,null),r(x,pt),r(x,me),r(me,ct),h(e,Ie,o),f(B,e,o),h(e,Ne,o),h(e,_,o),r(_,I),r(I,de),f(M,de,null),r(_,ft),r(_,ye),r(ye,mt),h(e,We,o),f(J,e,o),h(e,Ue,o),h(e,he,o),r(he,dt),h(e,Fe,o),f(Q,e,o),h(e,ze,o),h(e,k,o),r(k,N),r(N,ge),f(Y,ge,null),r(k,yt),r(k,K),r(K,gt),r(K,we),r(we,wt),r(K,vt),h(e,He,o),f(V,e,o),h(e,je,o),h(e,E,o),r(E,W),r(W,ve),f(X,ve,null),r(E,$t),r(E,$e),r($e,bt),h(e,De,o),f(Z,e,o),h(e,Le,o),h(e,P,o),r(P,U),r(U,be),f(ee,be,null),r(P,xt),r(P,xe),r(xe,_t),h(e,Oe,o),f(te,e,o),h(e,Re,o),h(e,A,o),r(A,F),r(F,_e),f(re,_e,null),r(A,kt),r(A,ke),r(ke,Et),h(e,Be,o),f(oe,e,o),h(e,Me,o),h(e,T,o),r(T,z),r(z,Ee),f(ae,Ee,null),r(T,Pt),r(T,ie),r(ie,At),r(ie,Pe),r(Pe,Tt),r(ie,qt),h(e,Je,o),f(ne,e,o),Qe=!0},p:ur,i(e){Qe||(m(j.$$.fragment,e),m(D.$$.fragment,e),m(L.$$.fragment,e),m(O.$$.fragment,e),m(R.$$.fragment,e),m(B.$$.fragment,e),m(M.$$.fragment,e),m(J.$$.fragment,e),m(Q.$$.fragment,e),m(Y.$$.fragment,e),m(V.$$.fragment,e),m(X.$$.fragment,e),m(Z.$$.fragment,e),m(ee.$$.fragment,e),m(te.$$.fragment,e),m(re.$$.fragment,e),m(oe.$$.fragment,e),m(ae.$$.fragment,e),m(ne.$$.fragment,e),Qe=!0)},o(e){d(j.$$.fragment,e),d(D.$$.fragment,e),d(L.$$.fragment,e),d(O.$$.fragment,e),d(R.$$.fragment,e),d(B.$$.fragment,e),d(M.$$.fragment,e),d(J.$$.fragment,e),d(Q.$$.fragment,e),d(Y.$$.fragment,e),d(V.$$.fragment,e),d(X.$$.fragment,e),d(Z.$$.fragment,e),d(ee.$$.fragment,e),d(te.$$.fragment,e),d(re.$$.fragment,e),d(oe.$$.fragment,e),d(ae.$$.fragment,e),d(ne.$$.fragment,e),Qe=!1},d(e){t(v),e&&t(Ae),e&&t($),y(j),e&&t(Te),y(D,e),e&&t(qe),e&&t(se),e&&t(Se),e&&t(b),y(L),e&&t(Ce),y(O,e),e&&t(Ge),e&&t(x),y(R),e&&t(Ie),y(B,e),e&&t(Ne),e&&t(_),y(M),e&&t(We),y(J,e),e&&t(Ue),e&&t(he),e&&t(Fe),y(Q,e),e&&t(ze),e&&t(k),y(Y),e&&t(He),y(V,e),e&&t(je),e&&t(E),y(X),e&&t(De),y(Z,e),e&&t(Le),e&&t(P),y(ee),e&&t(Oe),y(te,e),e&&t(Re),e&&t(A),y(re),e&&t(Be),y(oe,e),e&&t(Me),e&&t(T),y(ae),e&&t(Je),y(ne,e)}}}const dr={local:"end-of-chapter-quiz",title:"End-of-chapter quiz"};function yr(St){return pr(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class xr extends nr{constructor(v){super();sr(this,v,yr,mr,hr,{})}}export{xr as default,dr as metadata};
