PageSourceSearch

https://shakeri-lab.github.io/dl-course-site/_next/static/chunks/app/page-b30c11dbf581e1c5.js

js shakeri-lab.github.io collected 2026-10-03 09:56:22 UTC 42,278 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{182:(e,t,a)=>{"use strict";a.d(t,{h:()=>o});let r="/dl-course-site";function o(e){return e?"".concat(r).concat(e.startsWith("/")?e:"/".concat(e)):r}},2862:(e,t,a)=>{"use strict";a.d(t,{ModuleGrid:()=>T});var r=a(5155),o=a(2115),i=a(3209),n=a(7812);let l=(0,a(1847).A)("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var s=a(2619),d=a.n(s),c=a(5016),u=a(5379),g=a(182);let h={1:{moduleNumber:1,metadata:{title:"Module 1 – Introduction to Deep Learning",description:"Lecture video and assignments for Module 1 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 1 – From Linear Regression to Neural Networks",videoId:"-bdoWPWjyTc"},{title:"Lecture 1.2 – Linear Regression via Neural Networks in Python",videoId:"WOFb8EKAy7I"}],resourceDescription:"These Colab notebooks contain the lecture codes demonstrated in class and help you with the homework 1. Read the instructions at the top and run the cells in order.",colabLinks:[{label:"Open Colab Notebook 1",url:"https://colab.research.google.com/drive/1zQoyTDKP37dFEzM8G5aACAcWlnI8Jfre?usp=sharing"},{label:"Open Colab Notebook 2",url:"https://colab.research.google.com/drive/1dXLaMnIOQtcBqCZ9LnPiSEpVYmtviRxB?usp=sharing",variant:"outline"}]},2:{moduleNumber:2,metadata:{title:"Module 2 – Backpropagation",description:"Lecture video and assignments for Module 2 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 2 – Backpropagation",videoId:"JcYMZxoxCBA"},{title:"Lecture 2.2 – Coding in PyTorch & Linear Regression with Autograd",videoId:"MKh0OtgrVHQ"}],resourceDescription:"The Colab notebook contains the lecture code for Module 2 (backpropagation and PyTorch basics). Follow along by running the cells in order.",colabLinks:[{label:"Open Colab Notebook (shared for Modules 2–3)",url:"https://colab.research.google.com/drive/1lNxYvpKIZDtZNdsrG5hq2558DE1voNMu?usp=sharing"}]},3:{moduleNumber:3,metadata:{title:"Module 3 – Optimization Foundations & Ablation Methodology",description:"Lecture video and assignments for Module 3 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 3 – Optimization Foundations & Ablation Methodology",videoId:"V0l6b5R6Vkw",description:"Before diving into deep multilayer perceptrons, we add regularization (weight decay) and data splits (train/validation). We minimize MSE(y, ŷ) + λ‖θ‖\xb2 on the training split and evaluate generalization on the validation split."},{title:"3.2: Training MLP I",videoId:"1H8vhZk8kHo"},{title:"3.3: Training MLP II",videoId:"XdzQ5C5NSBw"}],resourceDescription:"The Colab notebook contains the lecture code for Module 3 (optimization and training MLPs). Run the cells sequentially as demonstrated in the lecture.",colabLinks:[{label:"Open Colab Notebook (shared for Modules 2–3)",url:"https://colab.research.google.com/drive/1lNxYvpKIZDtZNdsrG5hq2558DE1voNMu?usp=sharing"}]}
1,4:{moduleNumber:4,metadata:{title:"Module 4 – Convolutional Neural Networks (CNNs)",description:"Lecture video and assignments for Module 4 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 4 – Convolutional Neural Networks (CNNs)",videoId:"s6xDEvdz3tY"},{title:"DL4.2 – Coding up your first CNN",videoId:"Dprs8jH13GA"}],resourceDescription:"The Colab notebook includes the lecture code for Module 4 (CNNs and a first PyTorch CNN). Use it to reproduce the code demos from lecture.",colabLinks:[{label:"Open Colab Notebook (shared for Modules 4–5)",url:"https://colab.research.google.com/drive/1U487JBOOdJhIV72a9RZl0ASiSnkpX5KJ?usp=sharing"}]},5:{moduleNumber:5,metadata:{title:"Module 5 – Advanced CNN Architectures",description:"Lecture video and resources for Module 5 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 5 – Modern CNN Architectures and Transfer Learning",videoId:"-R64Wg5Sgsc"}],resourceDescription:"The Colab notebook contains the lecture code for Module 5 (advanced CNN architectures and transfer learning). Use it to follow along the in-class demos.",colabLinks:[{label:"Open Colab Notebook (shared for Modules 4–5)",url:"https://colab.research.google.com/drive/1U487JBOOdJhIV72a9RZl0ASiSnkpX5KJ?usp=sharing"}]},6:{moduleNumber:6,metadata:{title:"Module 6 – Encoder Decoder Architectures",description:"Lecture video and resources for Module 6 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 6 – Encoder-Decoder Architectures",videoId:"XxePU8jubto"},{title:"Lecture 6.2 – Encoder-Decoder Architectures (Part 2)",videoId:"RkOjUjdbKbg"},{title:"Lecture 6.3 – Encoder-Decoder Architectures (Part 3)",videoId:"7faFnaelya0"}],resourceDescription:"The Colab notebook contains the lecture code for Module 6 (encoder–decoder architectures). Use it to follow along with the in-class demos.",colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/1Lq3H1VtkT1IFDNfykULpIPel-9cSXsIt?usp=sharing"}]},7:{moduleNumber:7,metadata:{title:"Module 7 – Recurrent Neural Networks",description:"Lecture video and resources for Module 7 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 7 – Recurrent Neural Networks",videoId:"qyU35PKg_NE"},{title:"Lecture 7.2 – Recurrent Neural Networks (Part 2)",videoId:"_2NGDmVNUrM"},{title:"Lecture 7.3 – Recurrent Neural Networks (Part 3)",videoId:"Az0K6fyf-X4"}],colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/1RizCNioTF-6u5F-BopXPBefOReV3rSgu?usp=sharing"},{label:"Useful decorators in PyTorch (Colab)",url:"https://colab.research.google.com/drive/102yn6vsljzZyx8ypgbqH1t-6EJZzKltK?usp=sharing",variant:"outline"}]},8:{moduleNumber:8,metadata:{title:"Module 8 – Attention Mechanism",description:"Lecture resources and live coding notebook for Module 8 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 8 – Attention Mechanism (Part 1)",videoId:"8WBIyiaW7Cc"},{title:"Lecture 8.2 – Attention Mechanism (Part 2)",videoId:"oq92FA-_xa4"},{title:"Lecture 8.3 – Implementing Attention in seq2seq Decoder",videoId:"nDcFkXXFzJs"}],resourceTitle:"\uD83D\uDCDA Resources & Live Coding",researchLensReadings:[{label:"Wang, Shi & Fox, “Test-Time Regression” (2025)",url:"https://arxiv.org/abs/2501.12352"},{label:"Wang, Yang, Vidal et al., “Beyond Test-Time Memory” (ICML 2026) — \xa72 and Fig. 1",url:"https://vita-group.github.io/TTC-Net/"}],homeworkDescription:"Homework 4: Add cross-attention to your prior GRU-based seq2seq model so that the decoder can attend over all encoder hidden states at each decoding step (same translation task). Report and compare accuracy/bleu vs your previous best.",pdfPreview:{title:"Seq2Seq Cross-Attention Diagram",src:(0,g.h)("/seq2seq_cross_attention.pdf")},colabLinks:[{label:"Open Live Coding Colab",url:"https://colab.research.google.com/drive/1K04Xu9lqBF3mClD7O97k36qPNS1AMvgO?usp=sharing"}]},9:{moduleNumber:9,metadata:{title:"Module 9 – Transformer",description:"Lecture videos and resources for Module 9 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"Lecture 9 – Transformer",videoId:"N4ePLi42ADk"},{title:"Lecture 9.2 – Transformer (Part 2)",videoId:"tG8b2eNm6Gg"}],researchLensReadings:[{label:"Wang, Shi & Fox, “Test-Time Regression” (2025)",url:"https://arxiv.org/abs/2501.12352"},{label:"Wang, Yang, Vidal et al., “Beyond Test-Time Memory” (ICML 2026) — \xa72 and Fig. 1",url:"https://vita-group.github.io/TTC-Net/"}],readings:[{label:'Vaswani et al., "Attention Is All You Need" (NeurIPS 2017)',url:"https://papers.nips.cc/paper_files/paper/2017/hash/3f5ee243547dee91fbd053c1c4a845aa-Abstract.html"}],colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/1-fMvYAQc0jNl0_JeYhk52UVH575uuan8?usp=sharing"}]},10:{moduleNumber:10,metadata:{title:"Module 10 – Transformer Models in Vision and Text",description:"Lecture videos, readings, and Colab notebooks for Module 10 of the Deep Learning course by DYNAMO Lab."},lectures:[{title:"10.1 Vision Transformer (ViT)",videoId:"JSjPB1a-eS8"},{title:"10.2 Pretrained Transformer Models",videoId:"SDHOqinS8dg"},{title:"10.3 Scaling of Decoder Transformer Models",videoId:"Q56DkFc05Tg"},{title:"10.4 – Test-time Regression and Test-time Control",description:"A 20-minute research-frontier segment: start with the precise local-constant regression statement, compare three memory contracts, then ask what changes when a layer evaluates possible futures before predicting. The memory-versus-planning split is an architectural bet, not settled science; the System 1/System 2 language in the paper is only a loose metaphor.",outline:[{time:"0–3 min",title:"Precision before the slogan",detail
1:"At a query $q$, softmax attention solves a local-constant kernel fit: minimize $\\frac12\\sum_\\tau \\kappa(q,k_\\tau)\\lVert c-v_\\tau\\rVert^2$ over one constant $c$. An unrestricted function with $w=1$ and no regularizer would not, by itself, produce this weighted average."},{time:"3–7 min",title:"One objective, four dials",detail:"Read $M_t=\\arg\\min_M\\;\\frac12\\sum_{\\tau\\le t}w_{t,\\tau}\\lVert M(k_\\tau)-v_\\tau\\rVert^2+\\Omega(M)$. Track four choices: learned key/value/query views, history weights, regularization, and the solver. The solver is the new rung."},{time:"7–12 min",title:"The corrected memory spectrum",detail:"Exact softmax keeps the prefix’s $K/V$ pairs as the nonparametric regressor’s dataset. A factorized kernel can instead keep the exact sufficient-statistic pair $(S_t,z_t)$. An online linear update keeps a bounded matrix state, as in the Delta-rule view. These are different statistical contracts—no state compression versus fixed-size, lossy compression—not settled equivalences."},{time:"12–15 min",title:"What selection can learn",detail:"Use Mamba-style selectivity only as an interpretive bridge: token-dependent state retention and input injection play roles analogous to a learned forgetting and update schedule. That analogy does not derive Mamba from the regression objective or cover selective-scan implementation details."},{time:"15–17 min",title:"Two minutes of scalar LQR",detail:"Contrast fitting the prefix with evaluating a finite horizon. Step backward through $P\\leftarrow q_c+a^2P-(abP)^2/(r_c+b^2P)$, then inspect the first gain $K_1=-(r_c+b^2P)^{-1}bPa$. Changing the horizon can change the first action before any new token is emitted."},{time:"17–20 min",title:"A rematch, not a referendum",detail:"End with the discussion prompt below: separate parameter matching, generated-token matching, and total inference-compute matching before interpreting a frontier result."}],discussionPrompt:"Read Table 2 and \xa7E.2 of Wang et al. (2026). Which comparisons are approximately parameter-matched, which share the prompting and output-token protocol, and which are not matched for total inference compute? Design a horizon-$T$ rematch that fixes the backbone, data, prompt, sampling, hardware, and output cap; then equalizes measured FLOPs or wall-clock cost per item, including the planner’s internal work. What accuracy-versus-compute curve, uncertainty, and memory-only baseline would you report? Treat this as a rematch, not a referendum."}],resourceTitle:"\uD83D\uDCDA Resources, Readings & Colab",readings:[{label:"Vision Transformer (ViT)",url:"https://arxiv.org/abs/2010.11929"},{label:"DeiT",url:"https://arxiv.org/abs/2012.12877"},{label:"BERT",url:"https://arxiv.org/abs/1810.04805"},{label:"T5",url:"https://arxiv.org/abs/1910.10683"},{label:"GPT-3",url:"https://arxiv.org/abs/2005.14165"},{label:"DeepSeek-V2",url:"https://arxiv.org/abs/2405.07950"},{label:"Kaplan et al. (Scaling Laws)",url:"https://arxiv.org/abs/2001.08361"},{label:"Chinchilla: Training Compute-Optimal LLMs",url:"https://arxiv.org/abs/2203.15556"}],colabLinks:[{label:"DeiT Playground (Colab)",url:"https://colab.research.google.com/drive/1qbTNmh_4_6CUiNCKpgvPndiID8RTxx3J?usp=sharing"},{label:"Hugging Face Transformer Tutorial (Colab)",url:"https://colab.research.google.com/drive/1kVDgeXvQX5HdsuhrnMAgreCxNtyE9M8d?usp=sharing"}]},11:{moduleNumber:11,metadata:{title:"Module 11 – Prompting, PEFT, and Quantization (Gemma)",description:"Slides, required readings, and Gemma fine-tuning resources for Module 11."},lectures:[{title:"11.1 – ICL, Prompt Engineering, and RAG",pdf:(0,g.h)("/11.1-%20ICL-PromptEng-RAG.pdf"),readings:[{label:"Brown et al., GPT-3 Few-Shot Learning",url:"https://arxiv.org/abs/2005.14165"},{label:"Wei et al., Chain-of-Thought Prompting",url:"https://arxiv.org/abs/2201.11903"},{label:"Lewis et al., Retrieval-Augmented Generation",url:"https://arxiv.org/abs/2005.11401"}]},{title:"11.2 – Parameter-Efficient Fine-Tuning (PEFT)",pdf:(0,g.h)("/11.2%20PEFT.pdf"),readings:[{label:"Hu et al., LoRA",url:"https://arxiv.org/abs/2106.09685"},{label:"Li & Liang, Prefix-Tuning",url:"https://arxiv.org/abs/2101.00190"},{label:"Liu et al., P-Tuning v2",url:"https://arxiv.org/abs/2110.07602"}]},{title:"11.3 – Quantization & QLoRA",pdf:(0,g.h)("/11.3-%20Quantization-QLoRA.pdf"),readings:[{label:"Dettmers et al., QLoRA",url:"https://arxiv.org/abs/2305.14314"},{label:"Frantar et al., GPTQ",url:"https://arxiv.org/abs/2210.17323"},{label:"Lin et al., AWQ",url:"https://arxiv.org/abs/2306.00978"}]}],extraSections:[{title:"\uD83E\uDDEA Gemma Fine-Tuning",description:"Gemma model card: ai.google.dev/gemma/docs/core/model_card_3",links:[{label:"Full Model Fine-Tune (Hugging Face Transformers, Colab)",url:"https://colab.research.google.com/github/google/generative-ai-docs/blob/main/site/en/gemma/docs/core/huggingface_text_full_finetune.ipynb"},{label:"Fine-Tune with QLoRA (Hugging Face, Guide)",url:"https://ai.google.dev/gemma/docs/core/huggingface_text_finetune_qlora",variant:"outline"},{label:"Fine-Tuning with Gemma Library (Colab)",url:"https://colab.research.google.com/github/google-deepmind/gemma/blob/main/colabs/finetuning.ipynb",variant:"outline"}]}]},12:{moduleNumber:12,metadata:{title:"Module 12 – Multimodal Learning & GenAI",description:"Slides, previews, and Colab notebooks for multimodal learning and generative AI."},lectures:[{title:"12.1 – Multimodal Learning",description:"Vision-language alignment, contrastive objectives (e.g., CLIP), and fusion strategies for building multimodal systems.",pdf:(0,g.h)("/12.1%20Multimodal%20Leaning.pdf"),colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/10CNVZa0wmGUYatqpVvd0O0cbfk9WyMvB?usp=sharing"}],readings:[{label:"CLIP (Radford et al., 2021)",url:"https://arxiv.org/abs/2103.00020"},{label:"Contrastive Language–Image Pretraining (Jia et al., ALIGN)",url:"https://arxiv.org/abs/2102.05918"},{label:"BLIP-2 (Li et al., 2023)",url:"https://arxiv.org/abs/2301.12597"}]},{title:"12.2 – Diffusion Models",description:"Noise schedules, forward/reverse processes, and sampling recipes that power modern generative diffusion pipelines.",pdf:(0,g.h)("/12.2%20Diffusion.pdf"),colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/111Iux63gpCEKFcTb17aXYo8Y5WEW4Jez?usp=sharing"}],readings:[{label:"Denoising Diffusion Probabilistic Models (Ho et al., 2020)",url:"https://arxiv.org/abs/2006.11239"},{label:"Improved Denoising Diffusion Models (Nichol & Dhariwal, 2021)",url:"https://arxiv.org/abs/2102.09672"},{label:"Latent Diffusion Models (Rombach et al., 2022)",url:"https://arxiv.org/abs/2112.10752"}]},{title:"12.3 – Variational Autoencoders (VAE)",description:"Latent variable modeling with encoder/decoder pairs, ELBO optimization, and practical VAE architectures.",pdf:(0,g.h)("/12.3%20VAE.pdf"),colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/1seQyM-w2kQLm48bdyo2uKRGUZPRP42hr?usp=sharing"}],readings:[{label:"Auto-Encoding Variational Bayes (Kingma & Welling, 2014)",url:"https://arxiv.org/abs/1312.6114"},{label:"Variational Inference with Normalizing Flows (Rezende & Mohamed, 2015)",url:"https://arxiv.org/abs/1505.05770"},{label:"β-VAE (Higgins et al., 2017)",url:"https://openreview.net/forum?id=Sy2fzU9gl"}]},{title:"12.4 – Generative Adversarial Networks (GAN)",description:"Adversarial training, loss variants, and practical tips for stabilizing GANs for image generation.",pdf:(0,g.h)("/12.4%20GAN.pdf"),colabLinks:[{label:"Open Colab Notebook",url:"https://colab.research.google.com/drive/1Gz5laYgBDddXRfaTgZNq-kswXZFREIb5?usp=sharing"}],readings:[{label:"Generative Adversarial Nets (Goodfellow et al., 2014)",url:"https://arxiv.org/abs/1406.2661"},{label:"Wasserstein GAN (Arjovsky et al., 2017)",url:"https://arxiv.org/abs/1701.07875"},{label:"StyleGAN (Karras et al., 2019)",url:"https://arxiv.org/abs/1812.04948"}]}]}},p={label:"Appendix A \xb7 Linear Algebra and the SVD",url:"https://shakeri-lab.github.io/dl-book/chapter
1s/appendices/a1-linear-algebra.html"},b={label:"Appendix B \xb7 Tensors in Practice",url:"https://shakeri-lab.github.io/dl-book/chapters/appendices/a2-tensors.html"},m={label:"Appendix C \xb7 Numerical Precision and Hardware Efficiency",url:"https://shakeri-lab.github.io/dl-book/chapters/appendices/a3-precision-performance.html"},f={label:"Appendix D \xb7 Notation",url:"https://shakeri-lab.github.io/dl-book/chapters/appendices/a4-notation.html"},v={label:"Appendix E \xb7 Statistical Learning Contracts",url:"https://shakeri-lab.github.io/dl-book/chapters/appendices/a5-statistical-learning.html"},x={1:{category:"fundamentals",topics:["Neural Networks Basics","Perceptrons","History of AI"],objectives:["Compute matrix–vector products and visualize linear transforms","Explain XOR nonlinearity and demonstrate failure → fix with ReLU","Implement a minimal MLP with PyTorch tensors/modules and describe SGD updates"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"None — start here",bookChapters:[{label:"Ch. 1 \xb7 Linear Regression, the Mother Model",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/01-linear-regression.html"},{label:"Ch. 2 \xb7 Linear Models that Classify",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/02-logistic-softmax.html"},{label:"Ch. 3 \xb7 Nonlinearity and the MLP",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/03-nonlinearity-mlp.html"},{label:"Ch. 4 \xb7 Training: Loss and SGD",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/04-training-loss-sgd.html"},p,b,f,v]},2:{category:"fundamentals",topics:["Backpropagation","Gradient Descent","Activations"],objectives:["Derive gradients for a 1–2 layer network and draw the computation graph","Implement gradient checking and validate layer derivatives","Use torch.autograd to build a tiny autograd toy and inspect backward"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Module 1",bookChapters:[{label:"Ch. 5 \xb7 Backpropagation",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/05-backpropagation.html"},b,f]}
1,3:{category:"fundamentals",topics:["Optimizers","LR Schedules","Regularization"],objectives:["Run an optimizer sweep (SGD/Momentum/Adam) with LR schedules; compare results","Design a 2–3 factor ablation; log all runs with consistent seeds and configs"],estimatedTime:"≈5 h \xb7 1.5 h video \xb7 1.5 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–2",bookChapters:[{label:"Ch. 4 \xb7 Training: Loss and SGD",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/04-training-loss-sgd.html"},{label:"Ch. 6 \xb7 Generalization and Inductive Bias",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/06-generalization-inductive-bias.html"},{label:"Ch. 7 \xb7 Interlude: Who Trains the Trainer? Learning by Experiment",url:"https://shakeri-lab.github.io/dl-book/chapters/interludes/learning-by-experiment.html"},b,f,v]},4:{category:"cnn",topics:["Convolution","Pooling","Vision Models"],objectives:["Show MLP spatial limits (shifted inputs) vs a simple CNN","Implement convolutional layers and train a small CNN","Apply augmentation and dropout; run a brief augmentation ablation"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–3",bookChapters:[{label:"Ch. 6 \xb7 Generalization and Inductive Bias",url:"https://shakeri-lab.github.io/dl-book/chapters/part1/06-generalization-inductive-bias.html"},{label:"Ch. 8 \xb7 Filters and Convolution",url:"https://shakeri-lab.github.io/dl-book/chapters/part2/07-filters-convolution.html"},{label:"Ch. 9 \xb7 CNNs: Making Filters Learnable",url:"https://shakeri-lab.github.io/dl-book/chapters/part2/08-cnn.html"},b,f,v]},5:{category:"cnn",topics:["ResNet","DenseNet","EfficientNet"],objectives:["Inspect gradient flow; compare networks with/without BatchNorm","Implement a ResNet block; reproduce a mini-ResNet training","Fine-tune a pretrained model; summarize efficiency trade-offs (e.g., MobileNet)"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–4",bookChapters:[{label:"Ch. 10 \xb7 Modern CNNs and Transfer Learning",url:"https://shakeri-lab.github.io/dl-book/chapters/part2/09-modern-cnns-transfer.html"},b,m,f]},6:{category:"bridge",topics:["Autoencoders","PCA","Encoder–Decoder"],objectives:["Implement an autoencoder from scratch; visualize learned representations","Build a CNN encoder-decoder for image tasks"],estimatedTime:"≈5 h \xb7 1.5 h video \xb7 1.5 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–5",bookChapters:[{label:"Ch. 11 \xb7 Interlude: Autoencoders—Making PCA Learnable",url:"https://shakeri-lab.github.io/dl-book/chapters/interludes/making-pca-learnable.html"},p,b,f]},7:{category:"rnn",topics:["RNN Basics","LSTM","GRU"],objectives:["Implement char-RNN and visualize gradient flow over time steps","Build LSTM from scratch; run gate ablation studies","Compare LSTM vs GRU performance and computational efficiency","Apply gradient clipping and truncated BPTT; analyze training stability"],estimatedTime:"≈7 h \xb7 2.5 h video \xb7 2 h reading \xb7 2.5 h coding",prereq:"Builds on Modules 1–6",bookChapters:[{label:"Ch. 12 \xb7 Sequences and Recurrence",url:"https://shakeri-lab.github.io/dl-book/chapters/part3/10-sequences-rnn.html"},{label:"Ch. 13 \xb7 Encoder–Decoder, Teacher Forcing, Beam Search",url:"https://shakeri-lab.github.io/dl-book/chapters/part3/11-encoder-decoder.html"},b,f]},8:{category:"attention",topics:["Attention Basics","Q-K-V","Scaled Dot-Product"],objectives:["Implement QKV attention; visualize attention weights","Build a toy seq2seq (copy/reverse) with attention; interpret alignments","Run a small ablation on attention variants and report findings"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–7",bookChapters:[{label:"Ch. 14 \xb7 Kernel Regression",url:"https://shakeri-lab.github.io/dl-book/chapters/part4/12-kernel-regression.html"},{label:"Ch. 15 \xb7 Attention: Making Similarity Learnable",url:"https://shakeri-lab.github.io/dl-book/chapters/part4/13-attention.html"},p,b,f]},9:{category:"transformer",topics:["Self-Attention","Positional Encoding","Transformer"],objectives:["Implement a transformer block and train a tiny Transformer","Compare positional encodings; pre- vs post-norm; analyze patterns","Use warmup and dropout; document stability/perf. impacts"],estimatedTime:"≈6 h \xb7 2 h video \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–8",bookChapters:[{label:"Ch. 16 \xb7 Self-Attention and the Transformer",url:"https://shakeri-lab.github.io/dl-book/chapter
1s/part4/14-self-attention-transformer.html"},{label:"Ch. 17 \xb7 Interlude: Attention as Test-Time Regression",url:"https://shakeri-lab.github.io/dl-book/chapters/interludes/attention-as-test-time-regression.html"},b,m,f]},10:{category:"transformer",topics:["ViT","BERT/T5/GPT","Scaling","Test-Time Memory & Control"],objectives:["Implement patchify + linear embedding and explain ViT's data-versus-bias trade-off","Contrast BERT, T5, and GPT through their pretraining objectives and attention masks","Explain knowledge distillation and why a CNN teacher can lend useful inductive bias to ViT","Use scaling laws to reason jointly about parameters, training tokens, and compute","Compare KV retention, factorized sufficient statistics, and bounded online state in regression vocabulary; critique test-time planning under a compute-matched rematch"],estimatedTime:"≈6.5 h \xb7 2 h video \xb7 20 min frontier outline \xb7 2 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–9",bookChapters:[{label:"Ch. 18 \xb7 BERT and Pretraining",url:"https://shakeri-lab.github.io/dl-book/chapters/part4/15-bert-pretraining.html"},{label:"Ch. 19 \xb7 Vision Transformers and Scaling",url:"https://shakeri-lab.github.io/dl-book/chapters/part4/16-vit-scaling.html"},b,m,f]},11:{category:"advanced",topics:["Prompting/RAG","PEFT","QLoRA"],objectives:["Choose zero-shot, few-shot, or chain-of-thought prompting for a concrete task","Explain how RAG grounds generation and when retrieval is preferable to changing weights","Compare full fine-tuning with LoRA/QLoRA in trainable parameters and memory use","Distinguish instruction tuning, preference learning, and policy optimization as alignment objectives","Use the course decision framework to choose prompting, RAG, PEFT, or quantization"],estimatedTime:"≈7 h \xb7 2 h video \xb7 3 h reading \xb7 2 h coding",prereq:"Builds on Modules 1–10",bookChapters:[{label:"Ch. 20 \xb7 Prompting, Retrieval, PEFT, and Quantization",url:"https://shakeri-lab.github.io/dl-book/chapters/part5/17-peft-quantization.html"},{label:"Ch. 21 \xb7 Alignment and RL Fine-Tuning",url:"https://shakeri-lab.github.io/dl-book/chapters/part5/18-alignment.html"},b,m,f,v]},12:{category:"advanced",topics:["Multimodal","Diffusion","VAE","GAN"],objectives:["Explain symmetric image–text contrastive learning and audit cross-modal retrieval","Implement a tiny VAE; explore the latent space qualitatively","Train a small GAN; apply simple stability tweaks; assess samples","Explain forward/reverse diffusion and demonstrate sampling","Briefly discuss evaluation metrics and ethical considerations"],estimatedTime:"≈8 h \xb7 2.5 h video \xb7 3 h reading \xb7 2.5 h coding",prereq:"Builds on Modules 1–11",bookChapters:[{label:"Ch. 22 \xb7 Generative Models: From Codes to Samples",url:"https://shakeri-lab.github.io/dl-book/chapters/part5/19-generative.html"},{label:"Ch. 23 \xb7 Multimodal Learning: One Space, Two Views",url:"https://shakeri-lab.github.io/dl-book/chapters/part5/20-multimodal.html"},p,b,m,f,v]}},k={fundamentals:{badgeGradient:"linear-gradient(135deg, #F9C27A 0%, #F09062 100%)",badgeShadow:"0 20px 45px -20px rgba(240, 144, 98, 0.55)",tagBackground:"rgba(255, 241, 226, 0.78)",tagColor:"#8B4B1E",halo:"rgba(240, 144, 98, 0.22)",cardShadow:"0 30px 60px -35px rgba(240, 144, 98, 0.55)",accentText:"#9B4D20",labelBorder:"1px solid rgba(255,255,255,0.4)"},cnn:{badgeGradient:"linear-gradient(135deg, #F09062 0%, #EA6C77 100%)",badgeShadow:"0 20px 45px -22px rgba(234, 108, 119, 0.55)",tagBackground:"rgba(255, 227, 232, 0.78)",tagColor:"#8B3D4B",halo:"rgba(234, 108, 119, 0.22)",cardShadow:"0 30px 60px -35px rgba(234, 108, 119, 0.48)",accentText:"#8E3E4C",labelBorder:"1px solid rgba(255,255,255,0.4)"},bridge:{badgeGradient:"linear-gradient(135deg, #EA6C77 0%, #C26D9F 100%)",badgeShadow:"0 20px 45px -22px rgba(194, 109, 159, 0.52)",tagBackground:"rgba(244, 221, 236, 0.8)",tagColor:"#743B63",halo:"rgba(194, 109, 159, 0.24)",cardShadow:"0 30px 60px -35px rgba(194, 109, 159, 0.45)",accentText:"#7C3E66",labelBorder:"1px solid rgba(255,255,255,0.4)"},rnn:{badgeGradient:"linear-gradient(135deg, #C26D9F 0%, #7F7DD6 100%)",badgeShadow:"0 20px 45px -22px rgba(127, 125, 214, 0.52)",tagBackgroun
1d:"rgba(229, 225, 245, 0.82)",tagColor:"#463A8F",halo:"rgba(127, 125, 214, 0.24)",cardShadow:"0 30px 60px -35px rgba(127, 125, 214, 0.45)",accentText:"#4F3EA0",labelBorder:"1px solid rgba(255,255,255,0.4)"},attention:{badgeGradient:"linear-gradient(135deg, #7F7DD6 0%, #546FE1 100%)",badgeShadow:"0 20px 45px -22px rgba(84, 111, 225, 0.5)",tagBackground:"rgba(223, 231, 255, 0.82)",tagColor:"#2E3FA8",halo:"rgba(84, 111, 225, 0.22)",cardShadow:"0 30px 60px -35px rgba(84, 111, 225, 0.42)",accentText:"#2F3FA8",labelBorder:"1px solid rgba(255,255,255,0.4)"},transformer:{badgeGradient:"linear-gradient(135deg, #546FE1 0%, #2E77D1 100%)",badgeShadow:"0 20px 45px -22px rgba(46, 119, 209, 0.5)",tagBackground:"rgba(215, 232, 255, 0.82)",tagColor:"#1F4D8C",halo:"rgba(46, 119, 209, 0.2)",cardShadow:"0 30px 60px -35px rgba(46, 119, 209, 0.4)",accentText:"#225AA1",labelBorder:"1px solid rgba(255,255,255,0.4)"},advanced:{badgeGradient:"linear-gradient(135deg, #2E77D1 0%, #1B6FA9 100%)",badgeShadow:"0 20px 45px -22px rgba(27, 111, 169, 0.5)",tagBackground:"rgba(212, 243, 243, 0.8)",tagColor:"#0B4E63",halo:"rgba(27, 111, 169, 0.22)",cardShadow:"0 30px 60px -35px rgba(27, 111, 169, 0.38)",accentText:"#0F4D63",labelBorder:"1px solid rgba(255,255,255,0.4)"},default:{badgeGradient:"linear-gradient(135deg, #546FE1 0%, #2E77D1 100%)",badgeShadow:"0 20px 45px -22px rgba(46, 119, 209, 0.5)",tagBackground:"rgba(215, 232, 255, 0.82)",tagColor:"#1F4D8C",halo:"rgba(46, 119, 209, 0.2)",cardShadow:"0 30px 60px -35px rgba(46, 119, 209, 0.4)",accentText:"#225AA1",labelBorder:"1px solid rgba(255,255,255,0.4)"}},y={fundamentals:{badgeGradient:"linear-gradient(135deg, #F9C27A 0%, #F09062 100%)",badgeShadow:"0 20px 45px -20px rgba(240, 144, 98, 0.35)",tagBackground:"rgba(240, 144, 98, 0.12)",tagColor:"#F9C27A",halo:"rgba(240, 144, 98, 0.15)",cardShadow:"0 20px 50px -30px rgba(240, 144, 98, 0.25)",accentText:"#F9C27A",labelBorder:"1px solid rgba(255,255,255,0.12)"},cnn:{badgeGradient:"linear-gradient(135deg, #F09062 0%, #EA6C77 100%)",badgeShadow:"0 20px 45px -22px rgba(234, 108, 119, 0.35)",tagBackground:"rgba(234, 108, 119, 0.12)",tagColor:"#F5A0A9",halo:"rgba(234, 108, 119, 0.15)",cardShadow:"0 20px 50px -30px rgba(234, 108, 119, 0.2)",accentText:"#F5A0A9",labelBorder:"1px solid rgba(255,255,255,0.12)"},bridge:{badgeGradient:"linear-gradient(135deg, #EA6C77 0%, #C26D9F 100%)",badgeShadow:"0 20px 45px -22px rgba(194, 109, 159, 0.35)",tagBackground:"rgba(194, 109, 159, 0.12)",tagColor:"#D9A0C5",halo:"rgba(194, 109, 159, 0.15)",cardShadow:"0 20px 50px -30px rgba(194, 109, 159, 0.2)",accentText:"#D9A0C5",labelBorder:"1px solid rgba(255,255,255,0.12)"},rnn:{badgeGradient:"linear-gradient(135deg, #C26D9F 0%, #7F7DD6 100%)",badgeShadow:"0 20px 45px -22px rgba(127, 125, 214, 0.35)",tagBackground:"rgba(127, 125, 214, 0.12)",tagColor:"#B5B3E8",halo:"rgba(127, 125, 214, 0.15)",cardShadow:"0 20px 50px -30px rgba(127, 125, 214, 0.2)",accentText:"#B5B3E8",labelBorder:"1px solid rgba(255,255,255,0.12)"},attention:{badgeGradient:"linear-gradient(135deg, #7F7DD6 0%, #546FE1 100%)",badgeShadow:"0 20px 45px -22px rgba(84, 111, 225, 0.35)",tagBackground:"rgba(84, 111, 225, 0.12)",tagColor:"#9DADE8",halo:"rgba(84, 111, 225, 0.15)",cardShadow:"0 20px 50px -30px rgba(84, 111, 225, 0.2)",accentText:"#9DADE8",labelBorder:"1px solid rgba(255,255,255,0.12)"},transformer:{badgeGradient:"linear-gradient(135deg, #546FE1 0%, #2E77D1 100%)",badgeShadow:"0 20px 45px -22px rgba(46, 119, 209, 0.35)",tagBackground:"rgba(46, 119, 209, 0.12)",tagColor:"#7EB5F0",halo:"rgba(46, 119, 209, 0.15)",cardShadow:"0 20px 50px -30px rgba(46, 119, 209, 0.2)",accentText:"#7EB5F0",labelBorder:"1px solid rgba(255,255,255,0.12)"},advanced:{badgeGradient:"linear-gradient(135deg, #2E77D1 0%, #1B6FA9 100%)",badgeShadow:"0 20px 45px -22px rgba(27, 111, 169, 0.35)",tagBackground:"rgba(27, 111, 169, 0.12)",tagColor:"#7ECAE0",halo:"rgba(27, 111, 169, 0.15)",cardShadow:"0 20px 50px -30px rgba(27, 111, 169, 0.2)",accentText:"#7ECAE0",labelBorder:"1px solid rgba(255,255,255,0.12)"},default:{badgeGradient:"linear-gradient(135deg, #546FE1 0%, #2E77D1 100%)",badgeShadow:"0 20px 45px -22px rgba(46, 119, 209, 0.35)",tagBackgroun
1d:"rgba(46, 119, 209, 0.12)",tagColor:"#7EB5F0",halo:"rgba(46, 119, 209, 0.15)",cardShadow:"0 20px 50px -30px rgba(46, 119, 209, 0.2)",accentText:"#7EB5F0",labelBorder:"1px solid rgba(255,255,255,0.12)"}},C={fundamentals:"Foundations",cnn:"CNN Architectures",bridge:"Encoder • Decoder",rnn:"Sequence Models",attention:"Attention",transformer:"Transformers",advanced:"Modern LLM Stack"},w=Object.values(h).sort((e,t)=>e.moduleNumber-t.moduleNumber).map(e=>{var t,a;let r=x[e.moduleNumber];return{id:e.moduleNumber,title:e.metadata.title.replace(/^Module \d+ – /,""),topics:null!=(t=null==r?void 0:r.topics)?t:[],category:null!=(a=null==r?void 0:r.category)?a:"default"}});function N(e){var t;let{module:a}=e,s=(0,o.useRef)(null),[g,h]=(0,o.useState)(!1),[p,b]=(0,o.useState)(!1),{resolvedTheme:m}=(0,u.D)();(0,o.useEffect)(()=>{b(!0);let e=s.current;if(!e)return;let t=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&(h(!0),t.unobserve(e.target))})},{rootMargin:"0px 0px 20% 0px",threshold:.05});return t.observe(e),()=>t.disconnect()},[]);let f=p&&"dark"===m?y:k,v=null!=(t=f[a.category])?t:f.default;return(0,r.jsxs)(i.Zp,{ref:s,className:(0,c.cn)("module-card reveal-card group relative h-full min-h-[180px] md:min-h-[200px] overflow-hidden border border-white/30 dark:border-white/10 bg-white/60 dark:bg-gray-900/60 backdrop-blur-2xl",g&&"is-visible"),style:{boxShadow:v.cardShadow},children:[(0,r.jsx)("span",{className:"pointer-events-none absolute -right-20 top-1/3 h-48 w-48 rounded-full opacity-40 blur-3xl transition-opacity duration-500 group-hover:opacity-60",style:{background:v.halo}}),(0,r.jsx)("span",{className:"pointer-events-none absolute inset-x-8 top-5 h-px bg-gradient-to-r from-transparent via-white/60 to-transparent"}),(0,r.jsxs)(i.Wu,{className:"relative flex h-full flex-col p-5 md:p-6",children:[(0,r.jsxs)("div",{className:"flex flex-1 flex-col gap-3",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsxs)("div",{className:"module-badge relative flex h-12 w-12 items-center justify-center rounded-3xl text-lg font-semibold text-white shadow-lg",style:{background:v.badgeGradient,boxShadow:v.badgeShadow},children:[a.id,(0,r.jsx)("span",{className:"absolute inset-0 rounded-3xl border border-white/35"})]}),(0,r.jsx)("div",{className:"flex-1 space-y-2",children:(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)("h3",{className:"text-xl font-semibold text-slate-900 dark:text-white",children:a.title}),(0,r.jsx)("span",{className:"rounded-full bg-white/60 dark:bg-white/10 px-2.5 py-0.5 text-[0.6rem] font-semibold uppercase tracking-[0.26em]",style:{color:v.accentText,border:v.labelBorder},children:"default"!==a.category?C[a.category]:""})]})})]}),a.topics.length>0&&(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:a.topics.slice(0,4).map((e,t)=>(0,r.jsx)(n.E,{className:"rounded-full border border-white/40 dark:border-white/20 px-2.5 py-0.5 text-[0.7rem] font-medium backdrop-blur",style:{background:v.tagBackground,color:v.tagColor},variant:"secondary",children:e},t))})]}),(0,r.jsx)("div",{className:"mt-4 flex items-center justify-end",children:(0,r.jsxs)(d(),{href:"/module/".concat(a.id),className:"group inline-flex items-center gap-2 rounded-full border border-slate-300/60 dark:border-slate-600/60 bg-white/60 dark:bg-white/10 px-3.5 py-1.5 text-xs font-semibold text-slate-700 dark:text-slate-200 transition-all duration-300 hover:border-transparent hover:bg-gradient-to-r hover:from-[#FFBA69]/80 hover:to-[#2E77D1]/80 hover:text-[#123C5A]",children:["Explore Module",(0,r.jsx)(l,{className:"h-4 w-4 transition-transform duration-300 group-hover:translate-x-1"})]})})]})]})}function T(){return(0,r.jsx)("div",{className:"grid auto-rows-fr gap-5 md:grid-cols-2 xl:grid-cols-3",children:w.map(e=>(0,r.jsx)(N,{module:e},e.id))})}},3101:(e,t,a)=>{"use strict";a.d(t,{F:()=>n});var r=a(2821);let o=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=r.$,n=(e,t)=>a=>{var r;if((null==t?void 0:t.variants)==null)return i(e,null==a?void 0:a.class,null==a?void 0:a.className);let{variants:n,defaultVariants:l}=t,s=Object.keys(n).map(e=>{let t=null==a?void 0:a[e],r=null==l?void 0:l[e];
1if(null===t)return null;let i=o(t)||o(r);return n[e][i]}),d=a&&Object.entries(a).reduce((e,t)=>{let[a,r]=t;return void 0===r||(e[a]=r),e},{});return i(e,s,null==t||null==(r=t.compoundVariants)?void 0:r.reduce((e,t)=>{let{class:a,className:r,...o}=t;return Object.entries(o).every(e=>{let[t,a]=e;return Array.isArray(a)?a.includes({...l,...d}[t]):({...l,...d})[t]===a})?[...e,a,r]:e},[]),null==a?void 0:a.class,null==a?void 0:a.className)}},3209:(e,t,a)=>{"use strict";a.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>s,Zp:()=>n,aR:()=>l});var r=a(5155),o=a(2115),i=a(5016);let n=o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",a),...o})});n.displayName="Card";let l=o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("flex flex-col space-y-1.5 p-5 sm:p-6",a),...o})});l.displayName="CardHeader";let s=o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("text-2xl font-semibold leading-none tracking-tight",a),...o})});s.displayName="CardTitle";let d=o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("text-sm text-muted-foreground",a),...o})});d.displayName="CardDescription";let c=o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("p-5 pt-0 sm:p-6 sm:pt-0",a),...o})});c.displayName="CardContent",o.forwardRef((e,t)=>{let{className:a,...o}=e;return(0,r.jsx)("div",{ref:t,className:(0,i.cn)("flex items-center p-5 pt-0 sm:p-6 sm:pt-0",a),...o})}).displayName="CardFooter"},4914:(e,t,a)=>{Promise.resolve().then(a.bind(a,2862)),Promise.resolve().then(a.t.bind(a,2619,23))},5016:(e,t,a)=>{"use strict";a.d(t,{cn:()=>i});var r=a(2821),o=a(5889);function i(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,o.QP)((0,r.$)(t))}},5379:(e,t,a)=>{"use strict";a.d(t,{D:()=>d,N:()=>c});var r=a(2115),o=(e,t,a,r,o,i,n,l)=>{let s=document.documentElement,d=["light","dark"];function c(t){var a;(Array.isArray(e)?e:[e]).forEach(e=>{let a="class"===e,r=a&&i?o.map(e=>i[e]||e):o;a?(s.classList.remove(...r),s.classList.add(i&&i[t]?i[t]:t)):s.setAttribute(e,t)}),a=t,l&&d.includes(a)&&(s.style.colorScheme=a)}if(r)c(r);else try{let e=localStorage.getItem(t)||a,r=n&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(r)}catch(e){}},i=["light","dark"],n="(prefers-color-scheme: dark)",l=r.createContext(void 0),s={setTheme:e=>{},themes:[]},d=()=>{var e;return null!=(e=r.useContext(l))?e:s},c=e=>r.useContext(l)?r.createElement(r.Fragment,null,e.children):r.createElement(g,{...e}),u=["light","dark"],g=e=>{let{forcedTheme:t,disableTransitionOnChange:a=!1,enableSystem:o=!0,enableColorScheme:s=!0,storageKey:d="theme",themes:c=u,defaultTheme:g=o?"system":"light",attribute:f="data-theme",value:v,children:x,nonce:k,scriptProps:y}=e,[C,w]=r.useState(()=>p(d,g)),[N,T]=r.useState(()=>"system"===C?m():C),A=v?Object.values(v):c,L=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=m());let r=v?v[t]:t,n=a?b(k):null,l=document.documentElement,d=e=>{"class"===e?(l.classList.remove(...A),r&&l.classList.add(r)):e.startsWith("data-")&&(r?l.setAttribute(e,r):l.removeAttribute(e))};if(Array.isArray(f)?f.forEach(d):d(f),s){let e=i.includes(g)?g:null,a=i.includes(t)?t:e;l.style.colorScheme=a}null==n||n()},[k]),M=r.useCallback(e=>{let t="function"==typeof e?e(C):e;w(t);try{localStorage.setItem(d,t)}catch(e){}},[C]),D=r.useCallback(e=>{T(m(e)),"system"===C&&o&&!t&&L("system")},[C,t]);r.useEffect(()=>{let e=window.matchMedia(n);return e.addListener(D),D(e),()=>e.removeListener(D)},[D]),r.useEffect(()=>{let e=e=>{e.key===d&&(e.newValue?w(e.newValue):M(g))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[M]),r.useEffect(()=>{L(null!=t?t:C)},[t,C]);let E=r.useMemo(()=>({theme:C,setTheme:M,forcedTheme:t,resolvedTheme:"system"===C?N:C,themes:o?[...c,"system"]:c,systemTheme:o?N:void 0}),[C,M,t,N,o,c]);return r.createElement(l.Provider,{value:E},r.createElement(h,{forcedTheme:t,storageKey:d,attribute:f,enableSystem:o,enableColorScheme:s,defaultTheme:g,value:v,themes:c,nonce:k,scriptProps:y}),x)},h=r.memo(e=>{let{forcedTheme:t,storageKey:a,attribute:i,enableSystem:n,enableColorScheme:l,defaultTheme:s,value:d,themes:c,nonce:u,scriptProps:g}=e,h=JSON.stringify([i,a,s,t,c,d,n,l]).slice(1,-1);return r.createElement("script",{...g,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(h,")")}})}),p=(e,t)=>{let a;try{a=localStorage.getItem(e)||void 0}catch(e){}return a||t},b=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},m=e=>
1(e||(e=window.matchMedia(n)),e.matches?"dark":"light")},7812:(e,t,a)=>{"use strict";a.d(t,{E:()=>l});var r=a(5155);a(2115);var o=a(3101),i=a(5016);let n=(0,o.F)("inline-flex max-w-full items-center rounded-full border px-2.5 py-0.5 text-center text-xs font-semibold leading-snug transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:a,...o}=e;return(0,r.jsx)("div",{className:(0,i.cn)(n({variant:a}),t),...o})}}},e=>{e.O(0,[619,779,441,255,358],()=>e(e.s=4914)),_N_E=e.O()}]);

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.