:root{--red: rgb(255, 59, 48);--orange: rgb(255, 128, 0);--yellow: rgb(255, 204, 0);--green: rgb(52, 199, 89);--teal: rgb(90, 200, 250);--blue: rgb(0, 122, 255);--indigo: rgb(88, 86, 214);--purple: rgb(175, 82, 222);--pink: rgb(255, 45, 85);--gray: rgb(142, 142, 147);--gray2: rgb(174, 174, 178);--gray3: rgb(199, 199, 204);--gray4: rgb(209, 209, 214);--gray5: rgb(229, 229, 234);--gray6: rgb(242, 242, 247);--text: rgb(0, 0, 0);--secondary-text: rgb(60, 60, 67);--placeholder-text: rgb(60, 60, 67);--code: var(--purple);--link: var(--orange);--separator: rgb(60, 60, 67);--opaque-separator: rgb(198, 198, 200);--fill: rgb(120, 120, 128);--secondary-fill: rgb(120, 120, 128);--background: rgb(242, 242, 247);--secondary-background: rgb(255, 255, 255)}@supports(color: light-dark(#000, #fff)){:root{color-scheme:light dark;--red: light-dark(color(display-p3 1 0.2314 0.1882), color(display-p3 1 0.4118 0.3804));--orange: color(display-p3 1 0.5 0);--yellow: light-dark(color(display-p3 1 0.8 0), color(display-p3 1 0.8314 0.149));--green: light-dark(color(display-p3 0.2039 0.7804 0.349), color(display-p3 0.1882 0.8588 0.3569));--teal: light-dark(color(display-p3 0.3529 0.7843 0.9804), color(display-p3 0.4392 0.8431 1));--blue: light-dark(color(display-p3 0 0.4784 1), color(display-p3 0.251 0.6118 1));--indigo: light-dark(color(display-p3 0.3451 0.3373 0.8392), color(display-p3 0.4902 0.4784 1));--purple: light-dark(color(display-p3 0.6863 0.3216 0.8706), color(display-p3 0.8549 0.5608 1));--pink: light-dark(color(display-p3 1 0.1765 0.3333), color(display-p3 1 0.3922 0.5098));--gray: light-dark(color(display-p3 0.5569 0.5569 0.5765), color(display-p3 0.6824 0.6824 0.698));--gray2: light-dark(color(display-p3 0.6824 0.6824 0.698), color(display-p3 0.4863 0.4863 0.502));--gray3: light-dark(color(display-p3 0.7804 0.7804 0.8), color(display-p3 0.3294 0.3294 0.3373));--gray4: light-dark(color(display-p3 0.8196 0.8196 0.8392), color(display-p3 0.2667 0.2667 0.2745));--gray5: light-dark(color(display-p3 0.898 0.898 0.9176), color(display-p3 0.2118 0.2118 0.2196));--gray6: light-dark(color(display-p3 0.949 0.949 0.9686), color(display-p3 0.1412 0.1412 0.149));--text: light-dark(color(display-p3 0 0 0), color(display-p3 1 1 1));--secondary-text: light-dark(color(display-p3 0.2353 0.2353 0.2627), color(display-p3 0.9216 0.9216 0.9608));--placeholder-text: light-dark(color(display-p3 0.2353 0.2353 0.2627), color(display-p3 0.9216 0.9216 0.9608));--separator: light-dark(color(display-p3 0.2353 0.2353 0.2627), color(display-p3 0.3294 0.3294 0.3451));--opaque-separator: light-dark(color(display-p3 0.7765 0.7765 0.7843), color(display-p3 0.2196 0.2196 0.2275));--fill: color(display-p3 0.4706 0.4706 0.502);--secondary-fill: color(display-p3 0.4706 0.4706 0.502);--background: light-dark(color(display-p3 0.949 0.949 0.9686), color(display-p3 0.0706 0.0706 0.075));--secondary-background: light-dark(color(display-p3 1 1 1), color(display-p3 0.1412 0.1412 0.149))}}html{border-top:3px var(--orange) solid}html body{background-color:var(--background);color:var(--text)}#logo #ns{fill:var(--orange)}@keyframes twirl{0%{transform:scale(1) rotate(0)}10%,20%{transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale(1.1) rotate(3deg)}40%,60%,80%{transform:scale(1.1) rotate(-3deg)}100%{transform:scale(1) rotate(0)}}html,body{font-family:var(--font-merriweather),"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16pt;line-height:21pt;font-weight:300;font-kerning:normal;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";line-height:1.1em;margin:0 0 1rem 0}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{display:block;font-size:small;font-variant:small-caps;text-transform:uppercase;font-weight:normal;line-height:2;letter-spacing:.2ch}h1 em,h2 em,h3 em,h4 em,h5 em,h6 em{font-style:normal}h1{font-size:2.5em}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}p{margin:0 0 1rem 0}a{--link-underline: color-mix(in srgb, currentColor 40%, transparent);transition:color .1s linear,text-decoration-color .1s linear;text-decoration:none;text-decoration-thickness:1px;text-underline-offset:.2em}a,a:visited{color:var(--link)}a:hover{text-decoration-line:underline;text-decoration-color:currentColor;text-decoration-thickness:2px}a:active{background-color:color-mix(in srgb, currentColor 20%, transparent)}a code{white-space:nowrap;text-decoration:underline}:is(p,li,dd,td,th,blockquote,figcaption,.byline) a:not(:where(.title,.title a,.archive a,#status a)){text-decoration-line:underline}:is(p,li,dd,td,th,blockquote,figcaption,.byline) a:not(:where(.title,.title a,.archive a,#status a)):not(:hover){text-decoration-color:var(--link-underline)}p>small{font-size:inherit;font-variant:small-caps;text-transform:lowercase}:not(pre)>code{user-select:all}:is(a,p,li,dd,td) code{padding:.25em;font-size:smaller;border-radius:4px}:is(p,li,dd,td) code{color:var(--code)}ol li,ul li{margin-bottom:.5em}pre{font-family:var(--font-merriweather),"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}code,samp{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace}pre code,samp{font-size:smaller;line-height:1.1em}samp{white-space:pre;overflow:scroll;display:block;padding:.5em 0}section>h1{font-family:var(--font-merriweather),"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:300;font-size:1.5em;text-align:center;margin-bottom:2rem;margin-top:2rem}article.excerpt h1{font-size:1.5em}a.readmore{font-style:italic}kbd{border-radius:4px;border:1px var(--separator) solid;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 2px #fff inset;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-variant:small-caps;margin:0 .1em;padding:.1em .6em;text-transform:lowercase}abbr,.small-caps{font-variant:small-caps;text-transform:lowercase}.placeholder{color:var(--placeholder-text);display:inline-block;padding:.25em;border:1px var(--opaque-separator) solid;border-radius:4px;font-style:normal}.placeholder.optional{opacity:.5}h1:hover .anchor::before,h2:hover .anchor::before,h3:hover .anchor::before,h4:hover .anchor::before,h5:hover .anchor::before,h6:hover .anchor::before{opacity:1}.title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:700}.anchor::before{content:"#";opacity:0;transition:300ms opacity;position:absolute;float:left;margin-left:-1.5em;padding:0 .5em;color:var(--secondary-text) !important;text-decoration:none}.anchor::before :focus{outline:none}.tagline{font-size:1.33em}#latest small{font-style:italic}[role=article] header h1{font-size:3.5em;line-height:1;margin-bottom:.5rem;padding:.5rem 0}article [role=heading]{container-type:inline-size}article [role=heading] h1.title{font-size:clamp(.75rem,10cqi,3.375rem)}article [role=heading] h1.title:last-child{margin-bottom:0}#archive dd{font-size:smaller;display:list-item;list-style:circle}.nowrap{white-space:nowrap}[lang*=-fonipa]{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:normal;font-style:normal}[lang*=-Zsye]{font-style:normal !important}figcaption{font-style:italic;font-size:smaller}table *{font-feature-settings:"tnum"}aside.parenthetical{font-size:smaller;font-style:italic;color:var(--secondary-text);padding-bottom:1em}aside.parenthetical p:before{content:"("}aside.parenthetical p:after{content:")"}aside.parenthetical a,aside.parenthetical code{color:var(--secondary-text) !important;background:rgba(0,0,0,0) !important}aside.parenthetical a{text-decoration:underline}li aside.parenthetical{display:inline-block;padding-bottom:0}li aside.parenthetical p{margin-bottom:0}.bibliography{font-size:smaller}del{opacity:.5}[role=contentinfo] i{font-family:var(--font-creative-commons);font-style:normal}.admonition{--code: var(--link);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";border-left:4px var(--separator) solid;padding:5px 40px;margin:1.5em 0;display:block;clear:both;overflow:visible;font-size:smaller}.admonition a{text-decoration:underline}.admonition p{margin:.5em 0}.admonition dl{padding:.5em 0 !important;margin-bottom:1em !important}.admonition pre code{font-size:small;line-height:1}.admonition th,.admonition td{padding:.5em !important}.admonition blockquote{margin-left:0 !important;margin-top:.25em !important;margin-bottom:.25em !important;border-left-color:var(--separator) !important}.admonition ins{background:rgba(0,0,0,0) !important}.admonition.info{--link: var(--blue);--separator: var(--blue);--background: #edf5fa}.admonition.info:before{content:" ";background-image:url(/assets/info-f73d3a68c0c3bfa0.svg);background-size:24px 24px;width:24px;height:24px;position:absolute;display:block;margin-left:-54px;margin-top:10px;z-index:100}.admonition.warning{--background: #fcfaf6;--separator: var(--yellow);--link: rgb(178, 129, 6)}.admonition.warning:before{content:" ";background-image:url(/assets/warning-47e47a5723ab3bad.svg);background-size:24px 24px;width:24px;height:24px;position:absolute;display:block;margin-left:-54px;margin-top:10px;z-index:100}.admonition.error{--background: #fcf2f6;--link: var(--pink);--separator: var(--pink)}.admonition.error:before{content:" ";background-image:url(/assets/error-0950677a2585decd.svg);background-size:24px 24px;width:24px;height:24px;position:absolute;display:block;margin-left:-54px;margin-top:10px;z-index:100}html,body{margin:0}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);border-top:3px var(--orange) solid}hr{border:none;margin:1em 0;padding:1em 0;display:block}img{margin:0;max-width:100%;height:auto}video{margin:0 auto;max-width:100%;display:block}blockquote{border-left:2px solid var(--separator);color:var(--secondary-text);margin:1.5em 0;padding-left:.75em}cite{color:var(--text);font-style:italic}cite:before{content:"— "}table{border-collapse:collapse;margin:.75em 0;table-layout:fixed;width:100%}thead th{border-bottom:1px solid var(--separator-opaque);font-weight:bold;padding:.75em 0;text-align:left}tbody td{border-bottom:1px solid var(--separator);padding:.75em 0}tbody tr:last-of-type td{border-bottom:none}tr,td,th{vertical-align:middle}ul,ol{margin:0;padding:0;list-style-type:none}dl{margin-bottom:.75em}dl dt{font-weight:bold;margin:1em 0}dl dd{margin:0 0 .25rem 1em}:focus-visible{outline:2px solid var(--text);outline-offset:2px}.skip-link{position:absolute;top:.5em;left:.5em;z-index:1000;padding:.5em 1em;border-radius:4px;background-color:var(--secondary-background);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";text-decoration:underline}.skip-link,.skip-link:visited{color:var(--text)}.skip-link:not(:focus){clip-path:inset(50%);width:1px;height:1px;padding:0;overflow:hidden;white-space:nowrap}.container:after{content:" ";display:block;clear:both}.container{max-width:100%;margin-left:auto;margin-right:auto;max-width:960px;margin:0 auto;padding:2em}.container section:after{content:" ";display:block;clear:both}.container section{display:block;max-width:100%;margin-left:auto;margin-right:auto;margin-bottom:2em;padding-bottom:1em}[role=banner]{display:flex;margin-bottom:1.5em;padding-bottom:1.5em}[role=banner] #logo{display:block;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;font-size:1em;height:6em;margin:.25em 6em 0 0}[role=banner] #logo a{display:block}[role=banner] #logo svg{width:146px;height:84px;overflow:visible;margin-left:-3px}[role=banner] #logo svg #mustache{position:absolute;transform:rotate(0) scale(1);transform-origin:50% 70% 0;transition:transform 1s}[role=banner] #logo svg:hover,[role=banner] #logo svg.animated{position:relative;z-index:2}[role=banner] #logo svg:hover #mustache,[role=banner] #logo svg.animated #mustache{animation:twirl 1s ease-in-out}[role=banner] .tagline{flex:1}#latest h1{margin-bottom:.5rem}#recent ul{display:grid;grid-template-columns:repeat(3, 1fr);gap:1em 2em}#recent ul li{min-height:15em}#recent ul li .title{height:4em;font-size:1.75em;display:table-cell;line-height:1;vertical-align:bottom;padding-bottom:1em}#recent ul li p{font-size:smaller;display:-webkit-box;overflow:hidden;-webkit-line-clamp:8;-webkit-box-orient:vertical;text-overflow:ellipsis}article.author{padding-top:2em}article.author header{display:grid;grid-template:"avatar . title" "avatar . description";grid-template-columns:1fr 1em 3fr;grid-template-rows:1fr 2fr;gap:1em 1em;margin-bottom:1em;padding-bottom:1em}article.author header .avatar{grid-area:avatar}article.author header h1{grid-area:title}article.author header p{grid-area:description}[role=article]{margin-bottom:1em;overflow-x:hidden}[role=article] table{overflow:scroll;margin:2em 0}[role=article] table caption{margin:2em 0 1em 0}[role=article] header{display:block;text-align:center;margin-bottom:3em}[role=article] header .byline{font-family:var(--font-merriweather),"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:italic;font-weight:300;color:var(--secondary-text)}[role=article] header .byline a,[role=article] header .byline span,[role=article] header .byline time{white-space:nowrap}[role=article] header .byline .authors:after{content:" — "}[role=article] .content{margin-bottom:4em}[role=article] .content h1,[role=article] .content h2,[role=article] .content h3,[role=article] .content h4,[role=article] .content h5{margin-top:2.5rem}[role=article] .content object,[role=article] .content embed,[role=article] .content figure,[role=article] .content svg{margin:1em auto;display:block;width:auto}[role=article] .content img{margin:1em auto;display:block}[role=article] .content ul,[role=article] .content ol{margin:1.5em 0;padding:0 3em}[role=article] .content ul ul,[role=article] .content ul ol,[role=article] .content ol ul,[role=article] .content ol ol{margin-top:.5em}[role=article] .content ul li,[role=article] .content ol li{list-style:disc}[role=article] .content figure{text-align:center;margin:1em 0;padding:1em 0}[role=article] .content ins{background-color:rgba(255,128,0,.2);text-decoration:none}[role=article] .content dl{padding:1em 0}[role=article] .content blockquote{margin:2em;margin-right:4em;border-left:3px var(--orange) solid}[role=article] .content blockquote cite{margin-top:1em;display:block}[role=article] .content table thead th{text-align:center}[role=article] .content table td{padding:1em}[role=article] .content table table{margin:0}[role=article] .content table table th,[role=article] .content table table td{border:none;padding:.25em}[role=article] sup{font-size:50%}time [role=article] sup{margin-right:-0.5em}[role=article] footer .contributor{float:left;display:block;margin-right:2.35765%;width:48.82117%;padding:1em 0}[role=article] footer .contributor:last-child,[role=article] footer .contributor:nth-child(2n){margin-right:0}[role=article] footer .contributor:nth-child(2n+1){clear:left}[role=article] footer .contributor:only-child{width:100%}[role=article] footer .contributor:only-child .avatar{padding:0 1em}[role=article] footer .contributor .avatar{float:left;display:block;margin-right:4.82916%;width:30.11389%}[role=article] footer .contributor .avatar:last-child{margin-right:0}[role=article] footer .contributor .details{float:left;display:block;margin-right:4.82916%;width:65.05695%;margin-right:0;margin-top:1em}[role=article] footer .contributor .details:last-child{margin-right:0}[role=article] footer .contributor .details span{font-weight:700}[role=article] footer .contributor .details p{font-size:.75em;margin-top:1em}[role=article] footer small{display:block;font-size:1em;font-weight:700;color:var(--secondary-text);text-transform:lowercase;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-variant:small-caps;margin-bottom:1em}[role=complementary]{border-top:1px #ddd solid;padding-top:2em}[role=contentinfo]{text-align:center;margin-top:2em;padding:1em}[role=contentinfo] section{margin-bottom:0;padding-bottom:0}.avatar{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;max-width:200px;max-height:200px;height:auto;border-radius:50%;pointer-events:none;user-select:none}.archive dl{float:left;display:block;margin-right:2.5%;width:30%}.archive dl:last-child,.archive dl:nth-of-type(3),.archive dl:nth-of-type(4),.archive dl:nth-of-type(6){margin-right:0}.archive ol,.archive ul{list-style:none}.archive ol li,.archive ul li{margin:2em 0}.archive ol span,.archive ol time,.archive ul span,.archive ul time{display:block}.archive ol time,.archive ul time{white-space:nowrap;font-style:italic;font-weight:300;margin-bottom:1em}#publications .books{display:flex}#publications .book{flex:1}#publications .book img{display:block;margin:0 auto;width:200px;border:4px rgba(0,0,0,0) solid;transition:.25s ease-in-out border-color;filter:none !important}#publications .book img:hover{padding:0;border:4px var(--orange) solid}.tagline{clear:both;font-weight:300}.highlight-group{margin-top:1em}[role=tablist]{display:flex;flex-direction:row;justify-content:flex-end;padding-right:3px}[role=tablist] button{cursor:pointer;flex:0;padding-left:.5em;color:var(--fill) !important;text-decoration:none;transition:opacity .5s;background:rgba(0,0,0,0) !important;padding:0;margin:0 0 0 .5em}[role=tablist] button:not([aria-selected=true]){opacity:.25}[role=tablist] button:not([aria-selected=true]):hover{opacity:.5}[role=tablist] button.active{opacity:1}[role=tabpanel]{margin-top:.25em}@media(scripting: none){.highlight-group [role=tablist]{display:none}.highlight-group [role=tabpanel][hidden]{display:block !important}.highlight-group [role=tabpanel][data-lang]::before{content:attr(data-lang);display:block;margin-bottom:.5em;color:var(--fill);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-weight:bold;text-align:right}}table#status{table-layout:fixed;margin-top:2em}table#status caption{padding:1em 0;color:var(--secondary-text)}table#status .version{text-align:center}table#status .version em{color:var(--secondary-text)}table#customplaygrounddisplayconvertible-categories{table-layout:auto}table#customplaygrounddisplayconvertible-categories tbody th{padding-left:10px;text-align:center}table#customplaygrounddisplayconvertible-categories ul{padding:0 0 0 20px}table#customplaygrounddisplayconvertible-categories ul li{margin:0}table#customplaygrounddisplayconvertible-categories td img{margin:0}@media screen and (max-width: 600px){table#customplaygrounddisplayconvertible-categories thead tr th:last-child,table#customplaygrounddisplayconvertible-categories tbody tr td:last-child{display:none}}details summary{cursor:pointer;margin-bottom:1em;-webkit-user-select:none;user-select:none}[hidden]{display:none !important}pre.highlight{background:var(--secondary-background);border:1px var(--separator-opaque) solid;border-radius:4px;overflow:auto;padding:.5em 1em;margin-bottom:1em}pre.highlight code{color:var(--text);background:rgba(0,0,0,0) !important}pre.highlight[data-lang=JWT]{white-space:pre-wrap}.highlight .placeholder{color:var(--text)}.highlight .o{color:var(--text)}.highlight .p{color:var(--gray)}.highlight .err{color:var(--gray)}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{color:var(--orange)}.highlight .se,.highlight .si{color:var(--text)}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:var(--purple)}.highlight .kt{color:var(--text)}.highlight .kd+.kt{color:var(--text)}.highlight .go,.highlight .nc,.highlight .nf,.highlight .nv{color:var(--text)}.highlight .kt+.o+.n,.highlight .nf{color:var(--indigo)}.highlight .cp,.highlight .c1{color:var(--gray)}.highlight .n,.highlight .na,.highlight .nb,.highlight .bp,.highlight .no,.highlight .nd,.highlight .ni,.highlight .py,.highlight .nl,.highlight .nn,.highlight .nx,.highlight .nt,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--text)}.highlight .l,.highlight .ld,.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss,.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mx,.highlight .mb{color:var(--indigo)}@media(prefers-color-scheme: dark){.highlight .p{color:var(--gray2)}.highlight .err{color:var(--gray)}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{color:var(--green)}.highlight .se,.highlight .si{color:var(--text)}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:var(--teal)}.highlight .kt{color:var(--yellow)}.highlight .kd+.kt{color:var(--orange)}.highlight .go,.highlight .nc,.highlight .nf,.highlight .nv{color:var(--text)}.highlight .kt+.o+.n,.highlight .nf{color:var(--purple)}.highlight .cp{color:var(--red)}.highlight .c1{color:var(--gray2)}.highlight .n+.o+.n,.highlight .na,.highlight .nb,.highlight .bp,.highlight .no,.highlight .nd,.highlight .ni,.highlight .py,.highlight .nl,.highlight .nn,.highlight .nx,.highlight .nt,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--pink)}.highlight .l,.highlight .ld,.highlight .s,.highlight .sb,.highlight .sc,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss,.highlight .m,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mx,.highlight .mb{color:var(--orange)}}button,input[type=submit]{-webkit-font-smoothing:antialiased;appearance:none;background-color:var(--orange);border-radius:4px;border:none;color:#fff;cursor:pointer;display:inline-block;font-size:1em;font-weight:bold;line-height:1;padding:.75em 1em;text-decoration:none;transition:background-color .25s;user-select:none;vertical-align:middle;white-space:nowrap}button:hover,input[type=submit]:hover{color:#fff}@media(prefers-reduced-motion: no-preference){@view-transition{navigation:auto}::view-transition-group(root){animation-duration:.2s}}@media screen and (max-width: 768px){[role=article] header .byline .authors:after{content:" ";display:block}.container{padding:1em}#recent ul{display:block}#recent ul li{min-height:auto;margin-bottom:2em}#recent ul li .title{display:block;height:auto;padding-bottom:.5rem}[role=article]{font-size:smaller}[role=article] .content{overflow:hidden}[role=article] .content blockquote{margin:1em 0}[role=article] footer .contributor{width:100%;margin-bottom:1em}[role=article] footer .contributor:not(:first-child){border-top:none}[role=article] footer .contributor .avatar{padding:0}[role=article] footer .contributor .details{margin-top:0}[role=complementary] #continue{width:100%}.archive dl{width:100%;margin:0;float:none}.archive dl dt{margin:2em 0 .5em 0}#archive dd{min-height:30px}}@media screen and (max-width: 960px){[role=banner]{display:block;margin-bottom:0;padding-bottom:0}[role=banner] #logo{margin:0 !important;height:auto}[role=banner] #logo svg{width:25vw;display:block;margin:0 auto 1.5em auto}[role=banner] #logo{padding-bottom:.5em}[role=banner] .tagline{font-size:4.4vw;padding-bottom:2em}#recent ul{grid-template-columns:repeat(2, 1fr)}.anchor{font-size:smaller}article.author header{display:block}article.author header .avatar{margin:0 auto 1em auto;display:block}article.author header h1{text-align:center}}@media(hover: none){#logo #mustache{animation-iteration-count:1}}@media(inverted-colors){*{text-shadow:none !important;box-shadow:none !important}img{filter:invert(100%)}}@media(monochrome),print and not (color){:root{--red: black;--yellow: black;--green: black;--teal: black;--blue: black;--indigo: black;--purple: black;--pink: black;--gray: black;--gray2: black;--gray3: black;--gray4: black;--gray5: black;--gray6: black;--text: black;--secondary-text: black;--placeholder-text: black;--separator: black;--opaque-separator: black;--fill: white;--secondary-fill: white;--background: white;--secondary-background: white}.highlight{color:#000 !important;background:#fff !important;border:2px #000 solid}.highlight .c,.highlight .ch,.highlight .cm,.highlight .cpf,.highlight .c1,.highlight .cs,.highlight .ge,.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{font-style:italic}.highlight .k,.highlight .gh,.highlight .gp,.highlight .gs,.highlight .gu,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kr,.highlight .nc,.highlight .ni,.highlight .ne,.highlight .nn,.highlight .nt,.highlight .ow{font-weight:bold}.highlight .se,.highlight .si{font-weight:bold;font-style:italic}.admonition:before{visibility:hidden}}@media(prefers-color-scheme: dark){body .info{background:#333c44 !important}body .warning{background:#484131 !important}body .error{background:#592e41 !important}article img[src$=".svg"],i img[src$=".svg"]{filter:invert(100%)}kbd{box-shadow:0 1px 0 rgba(255,255,255,.2),0 0 0 2px #222 inset}}@media(prefers-contrast: more)and (prefers-color-scheme: light){@supports(color: color(display-p3 1 1 1)){:root{--red: color(display-p3 0.8431 0 0.08235);--orange: color(display-p3 0.62 0.31 0);--yellow: color(display-p3 0.702 0.3843 0);--green: color(display-p3 0.1412 0.5412 0.2392);--teal: color(display-p3 0 0.4431 0.6431);--blue: color(display-p3 0 0.251 0.8667);--indigo: color(display-p3 0.2118 0.2039 0.6392);--purple: color(display-p3 0.5373 0.2667 0.6706);--pink: color(display-p3 0.8275 0.05882 0.2706);--gray: color(display-p3 0.4235 0.4235 0.4392);--gray2: color(display-p3 0.5569 0.5569 0.5765);--gray3: color(display-p3 0.6824 0.6824 0.698);--gray4: color(display-p3 0.7373 0.7373 0.7529);--gray5: color(display-p3 0.8471 0.8471 0.8627);--gray6: color(display-p3 0.9216 0.9216 0.9412);--text: color(display-p3 0 0 0);--secondary-text: color(display-p3 0.2353 0.2353 0.2627);--placeholder-text: color(display-p3 0.2353 0.2353 0.2627);--separator: color(display-p3 0.2353 0.2353 0.2627);--opaque-separator: color(display-p3 0.7765 0.7765 0.7843);--fill: color(display-p3 0.4706 0.4706 0.502);--secondary-fill: color(display-p3 0.4706 0.4706 0.502);--background: color(display-p3 0.9216 0.9216 0.9412);--secondary-background: color(display-p3 1 1 1)}}}@media(prefers-contrast: more){a{--link-underline: currentColor;text-decoration-line:underline}[role=tablist] button:not([aria-selected=true]){opacity:1}[role=tablist] button[aria-selected=true]{text-decoration:underline}}@media(prefers-reduced-motion: reduce){#logo #mustache{animation:none !important}*,::before,::after{transition-duration:.01ms !important}}@media print{@page{margin:.5in}@page{@bottom-center{content:"Page " counter(page) " of " counter(pages);font-size:small}@footnote{border-top:1pt #000 solid;padding-top:1em;font-size:smaller;padding-left:1.5em}}html{border-top:none}html body{font-size:12pt !important}#logo{height:3em !important}#logo svg{transform:scale(0.5);transform-origin:top left}img,p,blockquote,aside,ul,ol,table,figure,.highlight-group{page-break-inside:avoid}.highlight-group{page-break-before:avoid}h1,h2,h3,h4,h5,h6{page-break-before:avoid;page-break-after:avoid}img{max-width:100% !important}p a{word-wrap:break-word}p a[href^="#"]:after{display:none}p a[href^="http://"]:after,p a[href^="https://"]:after{content:" (" attr(title) ") ";float:footnote;color:var(--secondary-text);font-size:small;text-decoration:none;text-align:left;page-break-inside:avoid;page-break-before:avoid}article [title]::after{content:" (" attr(title) ") ";float:footnote;font-size:small}.highlight-group a{font-size:50%}[role=article] .content{margin-bottom:1em !important}[role=complementary]{display:none}[role=contentinfo]{page-break-inside:avoid;font-size:small}.admonition{padding:0 0 0 1em}.admonition::before{visibility:hidden}[hidden]{display:none !important}}@media print and (color){*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}*{box-sizing:border-box}#type-encodings tr>td:first-child,#method-encodings-table tr>td:first-child{width:12em;padding-left:3em}table.core-data-versus-nskeyedarchiver td{text-align:center}table.core-data-versus-nskeyedarchiver td:first-child{text-align:left;font-weight:bold}table#xcode-key-bindings-modifiers{width:100%}table#xcode-key-bindings-modifiers td,table#xcode-key-bindings-modifiers th{width:20%;text-align:center}