*,::after,::before{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-y:scroll;-webkit-text-size-adjust:100%;text-size-adjust:100%}a,button,body,h1,h2,h3,h4,h5,h6{color:var(--primary)}body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:calc(18px - 1pt);line-height:1.6;word-break:break-word;background:var(--theme)}article,aside,figcaption,figure,header,hgroup,main,nav,section,table{display:block}h1,h2,h3,h4,h5,h6{line-height:1.2}h1,h2,h3,h4,h5,h6,p{margin-top:0;margin-bottom:0}ul{padding:0}a{text-decoration:none}body,figure,ul{margin:0}table{width:100%;border-collapse:collapse;border-spacing:0;overflow-x:auto;word-break:keep-all}button,input,textarea{padding:0;font:inherit;background:0 0;border:0}input,textarea{outline:0}button,input[type=button],input[type=submit]{cursor:pointer}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 50px var(--theme)inset}img{display:block;max-width:100%}:root{--main-width:580px;--main-padding:1.4em;--main-padding-bottom:3rem;--background-rgb:255, 255, 255;--sidebar-backdrop-color:rgba(0, 0, 0, 0.5);--search-result-background:rgba(var(--background-rgb), 0.7);--search-result-border:rgba(58, 58, 58, 0.5);--search-result-border-hover:rgba(58, 58, 58, 0.65);--search-result-highlight:rgba(245, 245, 245, 0.92);--sidebar-width:250px;--sidebar-content-right:calc(var(--sidebar-width) - 20px);--caption-padding:calc(0.25 * var(--main-padding));--header-top-gap:2.8rem;--header-bottom-gap:2rem;--header-menu-side-gap:0.5rem;--header-menu-top-gap:1rem;--h1-margin-top:2rem;--h1-margin-bottom:1.5rem;--h2-margin-top:2rem;--h2-margin-bottom:1.5rem;--hx-margin-top:1.5rem;--hx-margin-bottom:1rem;--p-margin-top:1rem;--p-margin-bottom:1rem;--code-margin-top:2rem;--code-margin-bottom:2rem;--h1-font-size:2em;--h2-font-size:1.8em;--hx-font-size:1.3em;--p-font-size:1.0em;--p-line-height:1.5em;--caption-font-size:0.8em;--li-indent:1.5rem;--ul-margin-top:1rem;--ul-margin-bottom:1rem;--toc-margin-top:2rem;--toc-margin-bottom:3rem;--code-padding:1.5rem;--code-border-radius:10px;--social-icons-bottom-margin:3rem;--footer-height:3rem;--content-height:calc(100vh - var(--footer-height));--table-cell-padding:0.5rem;--table-margin-top:1.5rem;--table-margin-bottom:1.5rem}@media screen and (max-width:1024px){:root{--main-width:580px;--caption-padding:calc(0.25 * var(--main-padding))}}@media screen and (max-width:640px){:root{--main-width:95%;--social-icons-bottom-margin:0rem;--caption-padding:calc(2 * var(--main-padding))}}.flex{display:flex}.bold{font-weight:700}.italic{font-style:italic}.small{font-size:medium}.nounderline-a{text-decoration:none !important}.active-page{font-family:valkyrie b !important;font-size:clamp(1rem,5vw,1.5rem)}.underline-hover{text-decoration:none}.underline-hover:hover{text-decoration:underline}.no-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.non-active-page{font-family:valkyrie b !important;font-size:clamp(1rem,5vw,1.5rem);color:gray;transition:filter .3s ease}.non-active-page:hover{filter:brightness(1.5)}.monospace{font-family:jetbrains}@font-face{font-family:newsreader;src:url(/fonts/Newsreader/Newsreader-VariableFont_opsz,wght.woff2)format("woff2")}@font-face{font-family:newsreader;src:url(/fonts/Newsreader/Newsreader-Italic-VariableFont_opsz,wght.woff2)format("woff2");font-style:italic}@font-face{font-family:equity;src:url(/fonts/Equity/equity_b_regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:equity;src:url(/fonts/Equity/equity_b_italic.woff2)format('woff2');font-weight:400;font-style:italic;font-display:auto}@font-face{font-family:equity;src:url(/fonts/Equity/equity_b_bold.woff2)format('woff2');font-weight:700;font-style:normal;font-display:auto}@font-face{font-family:equity;src:url(/fonts/Equity/equity_b_bold_italic.woff2)format('woff2');font-weight:700;font-style:italic;font-display:auto}@font-face{font-family:equity caps;src:url(/fonts/Equity/equity_b_caps_regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:auto}@font-face{font-family:equity caps;src:url(/fonts/Equity/equity_b_caps_bold.woff2)format('woff2');font-weight:700;font-style:normal;font-display:auto}@font-face{font-family:heliotrope;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Heliotrope/heliotrope_3_regular.woff2)format('woff2')}@font-face{font-family:heliotrope;font-style:italic;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Heliotrope/heliotrope_3_italic.woff2)format('woff2')}@font-face{font-family:heliotrope;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Heliotrope/heliotrope_3_regular.woff2)format('woff2')}@font-face{font-family:heliotrope;font-style:italic;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Heliotrope/heliotrope_3_italic.woff2)format('woff2')}@font-face{font-family:heliotrope caps;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Heliotrope/heliotrope_3_caps_regular.woff2)format('woff2')}@font-face{font-family:valkyrie a;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_regular.woff2)format('woff2')}@font-face{font-family:valkyrie a;font-style:italic;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_italic.woff2)format('woff2')}@font-face{font-family:valkyrie a;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_bold.woff2)format('woff2')}@font-face{font-family:valkyrie a;font-style:italic;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_bold_italic.woff2)format('woff2')}@font-face{font-family:valkyrie a caps;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_caps_regular.woff2)format('woff2')}@font-face{font-family:valkyrie a caps;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Valkyrie/valkyrie_a_caps_bold.woff2)format('woff2')}@font-face{font-family:valkyrie b;font-style:normal;font-weight:400;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_regular.woff2)format('woff2')}@font-face{font-family:valkyrie b;font-style:italic;font-weight:400;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_italic.woff2)format('woff2')}@font-face{font-family:valkyrie b;font-style:normal;font-weight:700;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_bold.woff2)format('woff2')}@font-face{font-family:valkyrie b;font-style:italic;font-weight:700;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_bold_italic.woff2)format('woff2')}@font-face{font-family:valkyrie b caps;font-style:normal;font-weight:400;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_caps_regular.woff2)format('woff2')}@font-face{font-family:valkyrie b caps;font-style:normal;font-weight:700;font-stretch:normal;font-display:optional;src:url(/fonts/Valkyrie/valkyrie_b_caps_bold.woff2)format('woff2')}@font-face{font-family:triplicate a;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_regular.woff2)format('woff2')}@font-face{font-family:triplicate a;font-style:italic;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_italic.woff2)format('woff2')}@font-face{font-family:triplicate a;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_bold.woff2)format('woff2')}@font-face{font-family:triplicate a;font-style:italic;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_bold_italic.woff2)format('woff2')}@font-face{font-family:triplicate a caps;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_caps_regular.woff2)format('woff2')}@font-face{font-family:triplicate a caps;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_a_caps_bold.woff2)format('woff2')}@font-face{font-family:triplicate b;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_regular.woff2)format('woff2')}@font-face{font-family:triplicate b;font-style:italic;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_italic.woff2)format('woff2')}@font-face{font-family:triplicate b;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_bold.woff2)format('woff2')}@font-face{font-family:triplicate b;font-style:italic;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_bold_italic.woff2)format('woff2')}@font-face{font-family:triplicate b caps;font-style:normal;font-weight:400;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_caps_regular.woff2)format('woff2')}@font-face{font-family:triplicate b caps;font-style:normal;font-weight:700;font-stretch:normal;font-display:auto;src:url(/fonts/Triplicate/triplicate_b_caps_bold.woff2)format('woff2')}@font-face{font-family:monaspace;src:url(/fonts/Monaspace/MonaspaceArgon-Regular.woff)format("woff");font-weight:400;font-style:normal}@font-face{font-family:monaspace;src:url(/fonts/Monaspace/MonaspaceArgon-SemiBold.woff)format("woff");font-weight:700;font-style:normal}@font-face{font-family:jetbrains;src:url(/fonts/JetBrainsMono/JetBrainsMonoNerdFontMono-Medium.woff2)format("woff2");font-weight:400;font-style:normal}@font-face{font-family:jetbrains;src:url(/fonts/JetBrainsMono/JetBrainsMonoNerdFontMono-Bold.woff2)format("woff2");font-weight:700;font-style:normal}@font-face{font-family:jetbrains;src:url(/fonts/JetBrainsMono/JetBrainsMonoNerdFontMono-MediumItalic.woff2)format("woff2");font-weight:400;font-style:italic}.header{position:fixed;top:0;left:0;right:0;padding:1.5rem 2rem;z-index:100;display:flex;justify-content:flex-end;background:var(--background,var(--bg));transform:translateY(0);transition:transform .3s ease}.header--hidden{transform:translateY(-100%)}.header-row{display:flex;gap:1.5rem}.header-nav{display:flex;gap:1.5rem}.header-nav a,.header-nav__link{font-family:jetbrains,mono,monospace;font-size:.9rem;text-decoration:none;color:var(--content-secondary,var(--fg-faint));transition:color .2s ease}.header-nav a:hover,.header-nav__link:hover{color:var(--content-primary,var(--fg));opacity:1}.header-nav a.header-nav__link--active,.header-nav__link.header-nav__link--active{color:var(--content-primary,var(--fg))}.lang-dropdown{position:relative;display:inline-flex;align-items:center}.lang-dropdown__toggle{font-family:jetbrains,mono,monospace;font-size:.9rem;color:var(--content-secondary,var(--fg-faint));background:0 0;border:none;cursor:pointer;padding:0;transition:color .2s ease;line-height:1}.lang-dropdown__toggle:hover{color:var(--content-primary,var(--fg))}.lang-dropdown__menu{position:absolute;top:calc(100% + .5rem);left:50%;background:var(--background,var(--bg));min-width:3rem;padding:.4rem 0;opacity:0;visibility:hidden;transform:translateX(-50%)translateY(-4px);transition:opacity .2s ease,transform .2s ease,visibility .2s ease;z-index:200}.lang-dropdown:hover .lang-dropdown__menu,.lang-dropdown.is-open .lang-dropdown__menu{opacity:1;visibility:visible;transform:translateX(-50%)translateY(0)}.lang-dropdown__item{display:block;font-family:jetbrains,mono,monospace;font-size:.9rem;color:var(--content-secondary,var(--fg-faint));text-decoration:none;padding:.3rem .5rem;text-align:center;transition:color .2s ease}.lang-dropdown__item:hover{color:var(--content-primary,var(--fg))}@media(max-width:600px){.header{padding:1rem 1.5rem}.header-nav{gap:1rem}}html{scroll-behavior:smooth}body{font-family:valkyrie b;margin:auto;padding-left:var(--main-padding);padding-right:var(--main-padding);color:var(--content-primary);background:var(--background)}.content{min-height:var(--content-height) !important}h1{margin-top:var(--h1-margin-top);margin-bottom:var(--h1-margin-bottom);font-size:var(--h1-font-size);font-weight:400}h2{margin-top:var(--h2-margin-top);margin-bottom:var(--h2-margin-bottom);font-size:var(--h2-font-size);font-weight:400}h3,h4,h5,h6{font-size:var(--hx-font-size);margin-top:var(--hx-margin-top);margin-bottom:var(--hx-margin-bottom);font-weight:400}p{margin-top:var(--p-margin-top);margin-bottom:var(--p-margin-bottom);font-size:var(--p-font-size);line-height:var(--p-line-height);hyphens:auto}ul{margin-top:var(--ul-margin-top);margin-bottom:var(--ul-margin-bottom)}li{margin-left:var(--li-indent)}a{text-decoration:underline}pre{padding:var(--code-padding);border:1px solid var(--code-border);overflow:scroll;border-radius:var(--code-border-radius);margin-top:var(--code-margin-top);margin-bottom:var(--code-margin-bottom);background-color:var(--code-background) !important;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;line-height:1.3em}pre::-webkit-scrollbar{display:none}code span{display:inline !important}code{-webkit-font-smoothing:antialiased;-moz-font-feature-settings:"liga=1, dlig=1";-ms-font-feature-settings:"liga","dlig";-webkit-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant-ligatures:contextual;font-family:jetbrains;font-size:.9em;line-height:0}.katex{font:1.05em KaTeX_Main,Times New Roman,serif !important}.katex-display{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:none;scrollbar-width:none}.katex-display::-webkit-scrollbar{display:none}.footnotes{margin-top:3rem;border-style:none}hr{border:none;height:1px;background:var(--content-secondary);margin-top:2rem;margin-bottom:2rem}.search-icon{margin-top:2px}.icon-link{display:inline-flex;align-items:center;text-decoration:none;margin-top:10px}.google-link-title{margin-right:5px}footer{padding:3rem 0;margin-top:2rem}.footer-content{display:flex;justify-content:center;align-items:center;gap:.5rem;font-family:jetbrains,monospace;font-size:.75rem;color:var(--content-secondary)}.footer-separator{color:var(--content-secondary)}.footer-link{color:var(--content-secondary);text-decoration:none;transition:color .2s ease}.footer-link:hover{color:var(--content-primary)}.list-container{padding-bottom:3rem;max-width:600px;margin:0 auto}.list-title{font-size:var(--h1-font-size);font-weight:400;color:var(--content-primary);margin-bottom:2rem;margin-top:2rem}.list-description{color:var(--content-secondary);margin-bottom:2rem}.list-description p{margin:0}.post-list{list-style:none;padding:0;margin:0}.post-item{padding:.6rem 0;animation:fadeUp .6s ease-out both}.post-link{display:flex;justify-content:space-between;align-items:baseline;text-decoration:none;color:var(--content-primary);transition:color .2s ease;gap:1rem}.post-link:hover{color:var(--content-secondary)}.post-link:hover .post-date{color:var(--content-primary)}.post-title{font-size:var(--p-font-size);line-height:1.4}.post-star{color:gold;margin-left:.3rem;font-size:.85em}.draft-badge{display:inline-block;font-family:jetbrains,monospace;font-size:.6em;font-weight:400;text-transform:uppercase;letter-spacing:.05em;background:var(--orange1);color:var(--background);padding:.15em .4em;border-radius:3px;margin-left:.5rem;vertical-align:middle}.post-date{font-family:jetbrains,monospace;font-size:.75rem;color:var(--content-secondary);white-space:nowrap;transition:color .2s ease}.post-summary{font-size:.9rem;color:var(--content-secondary);margin:.3rem 0 0;line-height:1.5}.tag-line{margin-bottom:.5rem;display:flex;align-items:baseline}.tag-title{margin:0}.pagination{display:flex;align-items:center;margin-top:2.5rem;margin-bottom:0;justify-content:center;gap:1rem}.pagination-control{font-family:jetbrains,monospace;font-size:.75rem}.pagination-control a{color:var(--content-secondary);text-decoration:none;transition:color .2s ease}.pagination-control a:hover{color:var(--content-primary)}.page-number{font-family:jetbrains,monospace;font-size:.75rem;color:var(--content-secondary)}.page-number p{margin:0}@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.social-icons{display:flex;gap:1rem;padding:.5rem 0;margin-bottom:1rem}.social-icons a{text-decoration:none;color:var(--content-secondary);transition:color .2s ease}.social-icons a:hover{color:var(--content-primary)}.social-icons a svg{height:20px;width:20px;fill:currentColor}.single-intro-container{margin-top:1rem;margin-bottom:2rem}.single-title{margin-bottom:.5rem}.single-readtime{margin-top:.5rem;color:var(--content-secondary)}.single-summary{margin-bottom:0;color:var(--content-secondary)}.single-content{margin-bottom:5rem;width:100%}.single-tags{margin-top:-1rem}.single-tags span{margin-right:.3rem}.article-nav{display:flex;justify-content:space-between;gap:2rem;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--content-secondary)}.article-nav__link{flex:1;display:flex;flex-direction:column;gap:.3rem;text-decoration:none;transition:color .2s ease}.article-nav__link--prev{align-items:flex-start}.article-nav__link--next{align-items:flex-end;text-align:right}.article-nav__label{font-family:jetbrains,monospace;font-size:.75rem;color:var(--content-secondary);transition:color .2s ease}.article-nav__title{font-size:1rem;color:var(--content-primary);transition:color .2s ease}.article-nav__link:hover .article-nav__label{color:var(--content-primary)}.article-nav__link:hover .article-nav__title{color:var(--content-secondary)}@media(max-width:600px){.article-nav{flex-direction:column;gap:1.5rem}.article-nav__link--next{align-items:flex-start;text-align:left}}.toc-progress{position:fixed;left:1.5rem;top:50%;transform:translateY(-50%);z-index:50;display:none}@media(min-width:900px){.toc-progress{display:block}}.toc-progress__track{width:3px;height:120px;background:var(--content-secondary,var(--fg-faint));opacity:.3;border-radius:2px;cursor:pointer;position:relative;transition:opacity .2s ease}.toc-progress__track:hover{opacity:.5}.toc-progress__bar{position:absolute;top:0;left:0;width:100%;background:var(--content-primary,var(--fg));border-radius:2px;height:0%;transition:height .1s ease-out}.toc-progress__nav{position:fixed;inset:0;background:rgba(0,0,0,.3);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility .25s ease;z-index:100}.toc-progress.is-open .toc-progress__nav{opacity:1;visibility:visible;pointer-events:auto}.toc-progress__inner{max-width:400px;max-height:70vh;overflow-y:auto;padding:2rem}.toc-progress__header{margin-bottom:1.5rem}.toc-progress__title{font-family:jetbrains,mono,monospace;font-size:.85rem;text-transform:uppercase;letter-spacing:.15em;color:var(--bg)}.dark .toc-progress__title{color:var(--fg)}.toc-progress__close{display:none}.toc-progress__nav #TableOfContents{font-size:1.1rem;line-height:1.8}.toc-progress__nav #TableOfContents ul{list-style:none;margin:0;padding:0}.toc-progress__nav #TableOfContents>ul>li{margin-bottom:.75rem}.toc-progress__nav #TableOfContents ul ul{padding-left:1.25rem;margin-top:.5rem}.toc-progress__nav #TableOfContents ul ul li{margin-bottom:.4rem}.toc-progress__nav #TableOfContents a{text-decoration:none;color:rgba(255,255,255,.7);transition:color .2s ease;cursor:pointer}.toc-progress__nav #TableOfContents a:hover{color:#fff}.dark .toc-progress__nav #TableOfContents a{color:rgba(255,255,255,.6)}.dark .toc-progress__nav #TableOfContents a:hover{color:#fff}.page-container{position:relative;display:block;width:100%;max-width:var(--main-width);margin-left:auto;margin-right:auto;padding-top:4rem}.autonumber{counter-reset:h2-counter 0}.autonumber h2{counter-increment:h2-counter 1;counter-reset:h3-counter 0}.autonumber h3{counter-increment:h3-counter 1;counter-reset:h4-counter 0}.autonumber h4{counter-increment:h4-counter 1}.autonumber h2:before{content:counter(h2-counter)"\00a0\00a0"}.autonumber h3:before{content:counter(h2-counter)"." counter(h3-counter)"\00a0\00a0"}.autonumber h4:before{content:counter(h2-counter)"." counter(h3-counter)"." counter(h4-counter)"\00a0\00a0"}.dark .img-light{display:none !important}.light .img-dark{display:none !important}.img-small div{display:flex;align-items:center;justify-content:center}.img-small img{scale:80%}.img-full div{display:flex;align-items:center;justify-content:center}.caption-container{display:flex;justify-content:center}figcaption{color:var(--content-secondary);padding-left:var(--caption-padding);padding-right:var(--caption-padding);font-size:var(--caption-font-size);margin-top:0;margin-bottom:0}.not-found{display:flex;align-items:center;justify-content:center}.not-found div{text-align:center}.not-found div h1{font-size:6rem;margin-bottom:3rem}.breadcrumbs{font-size:.8em;margin-bottom:calc(-.5 * var(--h1-margin-top))}.giscus{margin-top:3rem}.back-to-top{text-align:center;font-family:jetbrains;font-size:small;margin-bottom:2rem}p code{background-color:var(--code-background);border-radius:3px;padding:2px}table{border-collapse:collapse;margin-top:var(--table-margin-top);margin-bottom:var(--table-margin-bottom);font-size:var(--p-font-size);line-height:var(--p-line-height);color:var(--content-primary)}th,td{padding:var(--table-cell-padding);border:1px solid var(--code-border);text-align:left}th{font-weight:700}table code{background-color:var(--code-background);border-radius:3px;padding:2px}blockquote{margin:1.5rem;margin-left:0;margin-right:0;border-left:solid 2px;color:var(--content-secondary)}blockquote p{margin-left:1rem;margin-right:1rem}blockquote table{margin-left:1rem;margin-right:1rem;color:var(--content-secondary)}.bookshelf{img, figure img, div img, figure div img { width: 100% !important; height: auto !important; object-fit: contain; margin: 5px; border-radius: 5px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); transition: transform 0.2s ease; background-color: var(--background); } a { text-decoration: none; display: block; text-align: center; } img:hover, figure img:hover, div img:hover, figure div img:hover { transform: scale(1.02); } figure { margin: 0; display: block; }}@media(min-width:768px){.bookshelf img,.bookshelf figure img,.bookshelf div img,.bookshelf figure div img{max-width:300px !important}}.light .bg{color:#3c3836;background-color:var(--code-background)}.light .chroma{color:#3c3836;background-color:var(--code-background)}.light .chroma .x{}.light .chroma .err{}.light .chroma .cl{}.light .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.light .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.light .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.light .chroma .hl{background-color:#e1d8b3}.light .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.light .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.light .chroma .line{display:flex}.light .chroma .k{color:#af3a03}.light .chroma .kc{color:#af3a03}.light .chroma .kd{color:#af3a03}.light .chroma .kn{color:#af3a03}.light .chroma .kp{color:#af3a03}.light .chroma .kr{color:#af3a03}.light .chroma .kt{color:#b57614}.light .chroma .n{}.light .chroma .na{color:#79740e;font-weight:700}.light .chroma .nb{color:#b57614}.light .chroma .bp{}.light .chroma .nc{}.light .chroma .no{color:#d3869b}.light .chroma .nd{}.light .chroma .ni{color:#b57614}.light .chroma .ne{color:#fb4934}.light .chroma .nf{color:#b57614}.light .chroma .fm{}.light .chroma .nl{color:#9d0006}.light .chroma .nn{}.light .chroma .nx{}.light .chroma .py{}.light .chroma .nt{color:#9d0006}.light .chroma .nv{}.light .chroma .vc{}.light .chroma .vg{}.light .chroma .vi{}.light .chroma .vm{}.light .chroma .l{}.light .chroma .ld{}.light .chroma .s{color:#79740e}.light .chroma .sa{color:#79740e}.light .chroma .sb{color:#79740e}.light .chroma .sc{color:#79740e}.light .chroma .dl{color:#79740e}.light .chroma .sd{color:#79740e}.light .chroma .s2{color:#79740e}.light .chroma .se{color:#79740e}.light .chroma .sh{color:#79740e}.light .chroma .si{color:#79740e}.light .chroma .sx{color:#79740e}.light .chroma .sr{color:#79740e}.light .chroma .s1{color:#79740e}.light .chroma .ss{color:#076678}.light .chroma .m{color:#8f3f71}.light .chroma .mb{color:#8f3f71}.light .chroma .mf{color:#8f3f71}.light .chroma .mh{color:#8f3f71}.light .chroma .mi{color:#8f3f71}.light .chroma .il{color:#8f3f71}.light .chroma .mo{color:#8f3f71}.light .chroma .o{color:#af3a03}.light .chroma .ow{color:#af3a03}.light .chroma .p{}.light .chroma .c{color:#928374;font-style:italic}.light .chroma .ch{color:#928374;font-style:italic}.light .chroma .cm{color:#928374;font-style:italic}.light .chroma .c1{color:#928374;font-style:italic}.light .chroma .cs{color:#928374;font-style:italic}.light .chroma .cp{color:#427b58}.light .chroma .cpf{color:#427b58;font-style:italic}.light .chroma .g{}.light .chroma .gd{color:#282828;background-color:#9d0006}.light .chroma .ge{color:#076678;text-decoration:underline}.light .chroma .gr{background-color:#9d0006;font-weight:700}.light .chroma .gh{color:#79740e;font-weight:700}.light .chroma .gi{color:#282828;background-color:#79740e}.light .chroma .go{color:#504945}.light .chroma .gp{}.light .chroma .gs{}.light .chroma .gu{color:#79740e;font-weight:700}.light .chroma .gt{background-color:#3c3836;font-weight:700}.light .chroma .gl{}.light .chroma .w{}.dark .bg{color:#ebdbb2;background-color:#282828}.dark .chroma{color:#ebdbb2;background-color:#282828}.dark .chroma .x{}.dark .chroma .err{}.dark .chroma .cl{}.dark .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.dark .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.dark .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.dark .chroma .hl{background-color:#3d3d3d}.dark .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.dark .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.dark .chroma .line{display:flex}.dark .chroma .k{color:#fe8019}.dark .chroma .kc{color:#fe8019}.dark .chroma .kd{color:#fe8019}.dark .chroma .kn{color:#fe8019}.dark .chroma .kp{color:#fe8019}.dark .chroma .kr{color:#fe8019}.dark .chroma .kt{color:#fabd2f}.dark .chroma .n{}.dark .chroma .na{color:#b8bb26;font-weight:700}.dark .chroma .nb{color:#fabd2f}.dark .chroma .bp{}.dark .chroma .nc{}.dark .chroma .no{color:#d3869b}.dark .chroma .nd{}.dark .chroma .ni{color:#fabd2f}.dark .chroma .ne{color:#fb4934}.dark .chroma .nf{color:#fabd2f}.dark .chroma .fm{}.dark .chroma .nl{color:#fb4934}.dark .chroma .nn{}.dark .chroma .nx{}.dark .chroma .py{}.dark .chroma .nt{color:#fb4934}.dark .chroma .nv{}.dark .chroma .vc{}.dark .chroma .vg{}.dark .chroma .vi{}.dark .chroma .vm{}.dark .chroma .l{}.dark .chroma .ld{}.dark .chroma .s{color:#b8bb26}.dark .chroma .sa{color:#b8bb26}.dark .chroma .sb{color:#b8bb26}.dark .chroma .sc{color:#b8bb26}.dark .chroma .dl{color:#b8bb26}.dark .chroma .sd{color:#b8bb26}.dark .chroma .s2{color:#b8bb26}.dark .chroma .se{color:#b8bb26}.dark .chroma .sh{color:#b8bb26}.dark .chroma .si{color:#b8bb26}.dark .chroma .sx{color:#b8bb26}.dark .chroma .sr{color:#b8bb26}.dark .chroma .s1{color:#b8bb26}.dark .chroma .ss{color:#83a598}.dark .chroma .m{color:#d3869b}.dark .chroma .mb{color:#d3869b}.dark .chroma .mf{color:#d3869b}.dark .chroma .mh{color:#d3869b}.dark .chroma .mi{color:#d3869b}.dark .chroma .il{color:#d3869b}.dark .chroma .mo{color:#d3869b}.dark .chroma .o{color:#fe8019}.dark .chroma .ow{color:#fe8019}.dark .chroma .p{}.dark .chroma .c{color:#928374;font-style:italic}.dark .chroma .ch{color:#928374;font-style:italic}.dark .chroma .cm{color:#928374;font-style:italic}.dark .chroma .c1{color:#928374;font-style:italic}.dark .chroma .cs{color:#928374;font-style:italic}.dark .chroma .cp{color:#8ec07c}.dark .chroma .cpf{color:#8ec07c;font-style:italic}.dark .chroma .g{}.dark .chroma .gd{color:#282828;background-color:#fb4934}.dark .chroma .ge{color:#83a598;text-decoration:underline}.dark .chroma .gr{background-color:#fb4934;font-weight:700}.dark .chroma .gh{color:#b8bb26;font-weight:700}.dark .chroma .gi{color:#282828;background-color:#b8bb26}.dark .chroma .go{color:#504945}.dark .chroma .gp{}.dark .chroma .gs{}.dark .chroma .gu{color:#b8bb26;font-weight:700}.dark .chroma .gt{background-color:#fb4934;font-weight:700}.dark .chroma .gl{}.dark .chroma .w{}:root{--citation-color:#4d7ee1;--citation-tooltip-bg:rgba(var(--background-rgb, 255, 255, 255), 1.0);--citation-tooltip-shadow:0 12px 30px rgba(0, 0, 0, 0.12)}.dark{--citation-color:#8ab4ff;--citation-tooltip-bg:rgba(var(--background-rgb, 20, 20, 20), 1.0);--citation-tooltip-shadow:0 16px 32px rgba(0, 0, 0, 0.45)}.citation-group{display:inline;color:inherit}.citation-group--parenthetical{display:inline;white-space:normal}.citation-group__leading,.citation-group__separator,.citation-group__trailing{display:inline;color:inherit}.citation-group__leading,.citation-group__trailing{white-space:nowrap}.citation-group__separator{white-space:normal}.citation-group__paren{color:inherit}.citation-ref{position:relative;display:inline-flex;gap:.25rem;align-items:baseline;color:var(--citation-color)}.citation-ref__text{color:inherit;text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:.25em;white-space:nowrap;outline:none;cursor:pointer}.citation-ref__text:focus-visible{outline:2px solid currentColor;outline-offset:2px}.citation-tooltip{display:block;position:absolute;left:50%;bottom:calc(100% + .6rem);transform:translate(-50%,-.35rem);opacity:0;visibility:hidden;pointer-events:none;min-width:clamp(18rem,30vw,30rem);max-width:min(34rem,95vw);padding:.85rem 1.1rem;background:var(--citation-tooltip-bg);border:1px solid;border-radius:0;box-shadow:var(--citation-tooltip-shadow);color:var(--content-primary);line-height:1.45;z-index:30;text-align:left;white-space:normal;transition:opacity 180ms ease-out,transform 180ms ease-out,visibility 0s linear 180ms}.citation-ref:hover .citation-tooltip,.citation-ref:focus-within .citation-tooltip{opacity:1;visibility:visible;transform:translate(-50%,0);pointer-events:auto;transition-delay:0s}.citation-tooltip__meta{font-size:.85em;font-weight:600;display:flex;gap:.35em;flex-wrap:wrap;color:var(--content-primary);margin-bottom:.25rem}.citation-tooltip__title{display:block;font-weight:500;margin-bottom:.25rem;color:var(--content-primary);overflow-wrap:anywhere;word-break:break-word}.citation-tooltip__source{display:block;font-size:.85em;color:var(--content-secondary)}@media(prefers-reduced-motion:reduce){.citation-tooltip{transition:none;transform:translate(-50%,0)}}.light .img-light img[src$="perf_dark.svg"],.light .img-light img[src$="broadcast.svg"],.light .img-light img[src$="perf_chunks.svg"],.light .img-light img[src$="vary_chunk_size.svg"],.light .img-light img[src$="multicore_v_chunks.svg"]{background-color:var(--content-primary)}.highlight.wrap,.highlight[data-wrap]{overflow-x:auto}.highlight.wrap pre,.highlight[data-wrap] pre,pre.wrap,pre[data-wrap]{white-space:pre-wrap}.highlight.wrap code,.highlight[data-wrap] code,pre.wrap code,pre[data-wrap] code{white-space:pre-wrap;overflow-wrap:anywhere}.highlight.wrap .line,.highlight[data-wrap] .line{display:block}.highlight.wrap .line .cl,.highlight[data-wrap] .line .cl{display:block}.image-trio{--trio-top-width:calc((100% - var(--trio-col-gap))/2);--trio-col-gap:clamp(1rem, 1vw, 2.5rem);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"top top" "left right" "caption caption";column-gap:1vw;row-gap:1vw;align-items:start;justify-items:stretch;width:100%;margin:0 auto}.image-trio>figure{margin:0}.image-trio__figure--top{grid-area:top;justify-self:center;width:var(--trio-top-width)}.image-trio__figure--bottom-left{grid-area:left}.image-trio__figure--bottom-right{grid-area:right}.image-trio__figure--bottom-left,.image-trio__figure--bottom-right{width:100%}.image-trio__global-caption{grid-area:caption;grid-column:1/-1;width:100%}.image-trio__global-caption-text{color:var(--content-secondary);font-size:var(--caption-font-size);text-align:center;padding-left:var(--caption-padding);padding-right:var(--caption-padding);margin-top:1rem;margin-bottom:1rem}.image-trio__global-caption-text>*{margin-top:0;margin-bottom:0}@media(max-width:720px){.image-trio{grid-template-columns:1fr;grid-template-areas:"top" "left" "right" "caption";column-gap:0;row-gap:1rem}.image-trio__figure--top{width:100%;justify-self:stretch}}.img-full .caption-container{display:block;justify-content:center;text-align:center}.chroma .line.hl-added{background-color:rgba(142,192,124,.25)}.chroma .line.hl-changed{background-color:rgba(250,189,47,.25)}.chroma .line.hl-removed{background-color:rgba(251,73,52,.25)}.light .chroma .line.hl-added{background-color:rgba(121,116,14,.3)}.light .chroma .line.hl-changed{background-color:rgba(181,118,20,.35)}.light .chroma .line.hl-removed{background-color:rgba(157,0,6,.25)}:root{--content-primary:rgb(36, 36, 36);--content-secondary:rgb(117, 117, 117);--background:rgb(255, 255, 255);--background-rgb:255, 255, 255;--code-background:rgb(249, 249, 249);--code-border:rgb(229, 229, 229);--bg:var(--bg0);--bg0:var(--background);--bg0_h:#1d2021;--bg0_s:#32302f;--bg1:#3c3836;--bg2:#504945;--bg3:#665c54;--bg4:#7c6f64;--fg:var(--fg1);--fg0:var(--content-secondary);--fg1:#ebdbb2;--fg2:#d5c4a1;--fg3:#bdae93;--fg4:#a89984;--gray1:var(--fg4);--gray2:#928374;--red1:#cc241d;--red2:#fb4934;--green1:#98971a;--green2:#b8bb26;--yellow1:#d79921;--yellow2:#fabd2f;--blue1:#458588;--blue2:#83a598;--purple1:#b16286;--purple2:#d3869b;--aqua1:#689d6a;--aqua2:#8ec07c;--orange1:#d65d0e;--orange2:#fe8019}.dark{--content-primary:rgb(218, 218, 218);--content-secondary:rgb(140, 140, 140);--background:rgb(20, 20, 20);--background-rgb:20, 20, 20;--code-background:rgb(30, 30, 30);--code-border:rgb(50, 50, 50)}:root{--background:#fcfbfa;--background-rgb:252, 251, 250;--content-secondary:#6b6560;--toc-default:#3d3d3a;--content-primary:#141413;--code-background:#f0eeea;--code-border:#c0bcb2;--sidebar-backdrop-color:rgba(40, 36, 32, 0.3);--search-result-background:rgba(240, 239, 234, 0.65);--search-result-border:rgba(105, 99, 90, 0.35);--search-result-border-hover:rgba(105, 99, 90, 0.5);--search-result-highlight:rgba(231, 225, 212, 0.95);--bg:var(--bg0);--bg0:var(--background);--bg0_h:#1d2021;--bg0_s:#32302f;--bg1:#3c3836;--bg2:#504945;--bg3:#665c54;--bg4:#7c6f64;--fg:var(--fg1);--fg0:var(--content-secondary);--fg1:#ebdbb2;--fg2:#d5c4a1;--fg3:#bdae93;--fg4:#a89984;--gray1:var(--fg4);--gray2:#928374;--red1:#cc241d;--red2:#fb4934;--green1:#98971a;--green2:#b8bb26;--yellow1:#d79921;--yellow2:#fabd2f;--blue1:#458588;--blue2:#83a598;--purple1:#b16286;--purple2:#d3869b;--aqua1:#689d6a;--aqua2:#8ec07c;--orange1:#d65d0e;--orange2:#fe8019}.dark{--content-primary:#f0efea;--content-secondary:rgb(140, 140, 140);--background:#141413;--background-rgb:20, 20, 19;--toc-default:#808080;--code-background:rgb(30, 30, 30);--code-border:rgb(50, 50, 50);--sidebar-backdrop-color:rgba(0, 0, 0, 0.5);--search-result-background:rgba(20, 20, 19, 0.6);--search-result-border:rgba(200, 200, 200, 0.18);--search-result-border-hover:rgba(200, 200, 200, 0.28);--search-result-highlight:rgba(70, 66, 61, 0.85)}