﻿:root{--dk-kelly-green: #00E689;--dk-base-white: #fff;--dk-base-black: #000;--dk-base-gray-light: #ccc;--dk-base-gray-medium: #333;--dk-base-gray-medium-light: #444;--dk-base-gray-dark: #757575;--dk-base-gray-darker: #555;--dk-base-gray-darkest: #999;--dk-base-gray-border: #ddd;--dk-base-gray-border-dark: rgba(95, 95, 95, 0.78);--dk-base-gray-shadow: rgba(0, 0, 0, 0.1);--dk-base-gray-shadow-dark: rgba(0, 0, 0, 0.5);--dk-base-bg-dark: #1a1a1a;--dk-base-bg-light: #efefef;--dk-base-bg-light-alt: #E8E6ED;--dk-base-pink: #ff2e88;--dk-base-orange: #ff9800;--dk-base-red: #c62c2a;--dk-base-red-dark: #d64a48;--dk-base-magenta: #ce0068;--dk-base-green: #4caf50;--dk-base-red-error: #f44336;--dk-base-cyan: #00bcd4;--dk-bg-dark: var(--dk-base-black);--dk-bg-light: #ffffff;--dk-bg-primary: #f2f2f2;--dk-bg-note-dark: var(--dk-base-bg-dark);--dk-bg-note-light: var(--dk-base-bg-light);--dk-bg-search: var(--dk-base-white);--dk-bg-search-light: #f9f9f9;--dk-bg-toc-dark: var(--dk-base-bg-dark);--dk-bg-toc-light: var(--dk-base-bg-light);--dk-bg-blockquote-dark: #5E667F;--dk-bg-blockquote-dark-nested: #555c72;--dk-bg-blockquote-light: var(--dk-base-bg-light-alt);--dk-bg-blockquote-light-nested: #dcd9df;--dk-bg-code-dark: rgba(61, 66, 83, 1);--dk-bg-code-light: rgba(208, 207, 213, 1);--dk-bg-pre-light: var(--dk-base-white);--dk-bg-table-thead-dark: #232224;--dk-bg-table-thead-light: var(--dk-base-bg-light-alt);--dk-bg-details-dark: var(--dk-base-bg-dark);--dk-bg-details-light: var(--dk-base-bg-light);--dk-bg-clipboard-light: #f3f3f3;--dk-bg-scrollbar-thumb: #3D444D;--dk-bg-scrollbar-track: #1E222A;--dk-bg-mark: #204e8a;--dk-bg-code-table-light: var(--dk-base-white);--dk-text-dark: var(--dk-base-gray-light);--dk-text-light: var(--dk-base-gray-medium);--dk-text-muted-dark: rgba(255, 255, 255, 0.5);--dk-text-muted-light: rgba(0, 0, 0, 0.7);--dk-text-toc-dark: var(--dk-base-gray-light);--dk-text-toc-light: var(--dk-base-gray-medium-light);--dk-text-toc-title-dark: var(--dk-base-gray-light);--dk-text-toc-title-light: var(--dk-base-gray-medium-light);--dk-text-blockquote-dark: var(--dk-base-bg-light-alt);--dk-text-blockquote-light: #4d5367;--dk-text-pre-light: var(--dk-base-gray-light);--dk-text-table: #778087;--dk-text-table-first-dark: var(--dk-base-white);--dk-text-table-first-light: var(--dk-base-gray-medium);--dk-text-code-light: var(--dk-base-cyan);--dk-text-search: var(--dk-base-black);--dk-text-search-icon: var(--dk-base-gray-dark);--dk-link-base: var(--dk-base-pink);--dk-link-dark: var(--dk-base-orange);--dk-link-light: var(--dk-kelly-green);--dk-link-hover: var(--dk-base-white);--dk-link-light-base: var(--dk-base-black);--dk-link-toc-external: var(--dk-base-orange);--dk-link-note: var(--dk-base-pink);--dk-link-note-hover: var(--dk-base-white);--dk-accent: var(--dk-base-red);--dk-accent-nav-light: #00E689;--dk-accent-nav-dark: #b7005d;--dk-accent-selection: var(--dk-base-magenta);--dk-accent-footnote: var(--dk-base-pink);--dk-accent-blockquote-border: var(--dk-base-pink);--dk-accent-blockquote-strong: var(--dk-base-pink);--dk-accent-blockquote-strong-text: var(--dk-base-white);--dk-accent-blockquote-em: var(--dk-base-red-dark);--dk-accent-hack-heading: var(--dk-base-red-dark);--dk-accent-del: var(--dk-base-red-dark);--dk-accent-details-marker: var(--dk-base-red-dark);--dk-accent-note-arrow: var(--dk-base-red);--dk-accent-search-border: var(--dk-base-pink);--dk-border-base: var(--dk-base-gray-light);--dk-border-pre: var(--dk-base-gray-light);--dk-border-table: var(--dk-base-gray-light);--dk-border-table-dark: var(--dk-base-white);--dk-border-table-light: var(--dk-base-black);--dk-border-toc: var(--dk-base-gray-border);--dk-border-search: var(--dk-base-gray-shadow);--dk-border-clipboard-light: var(--dk-base-gray-shadow-dark);--dk-border-form: var(--dk-base-gray-light);--dk-border-form-focus: var(--dk-base-gray-darker);--dk-border-card: var(--dk-base-gray-light);--dk-border-details: var(--dk-base-gray-border);--dk-border-dark-subtle: var(--dk-base-gray-border-dark);--dk-btn-default-bg: #e0e0e0;--dk-btn-default-text: var(--dk-base-gray-medium);--dk-btn-default-hover: #dcdcdc;--dk-btn-success: var(--dk-base-green);--dk-btn-success-hover: #43a047;--dk-btn-success-ghost-hover: #388e3c;--dk-btn-error: var(--dk-base-red-error);--dk-btn-error-hover: #e53935;--dk-btn-error-ghost-hover: #d32f2f;--dk-btn-warning: var(--dk-base-orange);--dk-btn-warning-hover: #fb8c00;--dk-btn-warning-ghost-hover: #f57c00;--dk-btn-info: var(--dk-base-cyan);--dk-btn-info-hover: #00acc1;--dk-btn-info-ghost-hover: #0097a7;--dk-btn-primary: #2196f3;--dk-btn-primary-hover: #1e88e5;--dk-btn-primary-ghost-hover: #1976d2;--dk-btn-ghost: var(--dk-base-gray-dark);--dk-btn-ghost-hover: #424242;--dk-btn-ghost-dark: #ababab;--dk-btn-ghost-dark-hover: #9c9c9c;--dk-btn-ghost-dark-focus: #e0e0e0;--dk-btn-ghost-primary-hover: #64b5f6;--dk-btn-ghost-success-hover: #81c784;--dk-btn-ghost-info-hover: #4dd0e1;--dk-btn-ghost-error-hover: #e57373;--dk-btn-ghost-warning-hover: #ffb74d;--dk-alert-base: var(--dk-base-gray-light);--dk-alert-success: var(--dk-base-green);--dk-alert-error: var(--dk-base-red-error);--dk-alert-info: var(--dk-base-cyan);--dk-alert-warning: var(--dk-base-orange);--dk-form-label: var(--dk-base-gray-medium);--dk-form-success: var(--dk-base-green);--dk-form-warning: var(--dk-base-orange);--dk-form-error: var(--dk-base-red-error);--dk-form-help: var(--dk-base-gray-darkest);--dk-form-control-focus: var(--dk-base-gray-darker);--dk-form-textarea-after: var(--dk-base-white);--dk-menu-item: #616161;--dk-menu-item-active: var(--dk-base-black);--dk-menu-item-dark: var(--dk-base-gray-light);--dk-menu-item-dark-active: var(--dk-base-white);--dk-menu-item-dark-border: var(--dk-base-gray-border-dark);--dk-menu-item-dark-border-active: var(--dk-base-gray-light);--dk-card-header-bg: var(--dk-base-gray-border);--dk-card-header-text: var(--dk-base-gray-medium);--dk-card-header-dark-bg: transparent;--dk-card-header-dark-text: var(--dk-base-gray-light);--dk-card-header-dark-border: var(--dk-base-gray-border-dark);--dk-avatar-bg: #f0f0f0;--dk-avatar-text: #b9b9b9;--dk-avatar-dark-bg: transparent;--dk-avatar-dark-border: var(--dk-base-gray-medium);--dk-loading-border: #e91e63;--dk-progress-bg: var(--dk-base-gray-light);--dk-progress-filled: gray;--dk-selection-bg: var(--dk-base-magenta);--dk-selection-text: var(--dk-base-white);--dk-nav-active-bg-light: var(--dk-base-magenta);--dk-nav-active-bg-dark: #b7005d;--dk-nav-active-text: var(--dk-base-white);--dk-clipboard-border: #3D444D;--dk-clipboard-icon: #9198A1;--dk-shadow-search: var(--dk-base-gray-shadow);--dk-shadow-blockquote: var(--dk-base-gray-shadow)}html{font-size:clamp(16px,1.2vw + 1px,18px)}*{box-sizing:border-box;text-rendering:geometricPrecision}html,body{overflow-x:hidden}body{font-size:1.2rem;line-height:1.6;margin:0;font-family:"JetBrains Mono",Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;word-wrap:break-word;max-width:100vw}article[itemprop=articleBody] h2,article[itemprop=articleBody] h3,article[itemprop=articleBody] h4,article[itemprop=articleBody] h5,article[itemprop=articleBody] h6{margin-top:3rem !important;font-size:1.2rem !important}fieldset{border:none;padding:0;margin:0}pre{padding:2rem;margin:1.75rem 0;background-color:var(--dk-bg-pre-light);border:1px solid var(--dk-border-pre);overflow:auto}a{cursor:pointer;color:var(--dk-link-base);text-decoration:none}.light a{border-bottom:1.5px solid var(--dk-kelly-green)}.dark a{border-bottom:1.5px solid var(--dk-link-base)}a:has(img),h1 a,h2 a,.readmore a{border-bottom:none !important}a.no-underline{border-bottom:none}a:hover:has(img){border-bottom:none !important}::selection{color:var(--dk-selection-text);background:var(--dk-selection-bg)}::-moz-selection{color:var(--dk-selection-text);background:var(--dk-selection-bg)}a.zola-anchor{border-bottom:0}a.zola-anchor:hover{border-bottom:1.5px solid var(--dk-link-base);background-color:rgba(0,0,0,0) !important;color:inherit !important}.light a{color:var(--dk-link-light-base);font-weight:bold}.light a:hover{background-color:var(--dk-accent-nav-light)}.dark a:hover{background-color:var(--dk-accent-nav-dark);color:var(--dk-link-hover)}.grid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.grid.\-top{-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}.grid.\-middle{-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}.grid.\-bottom{-ms-flex-align:end;-ms-grid-row-align:flex-end;align-items:flex-end}.grid.\-stretch{-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch}.grid.\-baseline{-ms-flex-align:baseline;-ms-grid-row-align:baseline;align-items:baseline}.grid.\-left{-ms-flex-pack:start;justify-content:flex-start}.grid.\-center{-ms-flex-pack:center;justify-content:center}.grid.\-right{-ms-flex-pack:end;justify-content:flex-end}.grid.\-between{-ms-flex-pack:justify;justify-content:space-between}.grid.\-around{-ms-flex-pack:distribute;justify-content:space-around}.cell{-ms-flex:1;flex:1;box-sizing:border-box}@media screen and (min-width: 768px){.cell.\-1of12{-ms-flex:0 0 8.33333%;flex:0 0 8.33333%}.cell.\-2of12{-ms-flex:0 0 16.66667%;flex:0 0 16.66667%}.cell.\-3of12{-ms-flex:0 0 25%;flex:0 0 25%}.cell.\-4of12{-ms-flex:0 0 33.33333%;flex:0 0 33.33333%}.cell.\-5of12{-ms-flex:0 0 41.66667%;flex:0 0 41.66667%}.cell.\-6of12{-ms-flex:0 0 50%;flex:0 0 50%}.cell.\-7of12{-ms-flex:0 0 58.33333%;flex:0 0 58.33333%}.cell.\-8of12{-ms-flex:0 0 66.66667%;flex:0 0 66.66667%}.cell.\-9of12{-ms-flex:0 0 75%;flex:0 0 75%}.cell.\-10of12{-ms-flex:0 0 83.33333%;flex:0 0 83.33333%}.cell.\-11of12{-ms-flex:0 0 91.66667%;flex:0 0 91.66667%}}@media screen and (max-width: 768px){.grid{-ms-flex-direction:column;flex-direction:column}.cell{-ms-flex:0 0 auto;flex:0 0 auto}}.hack,.hack blockquote,.hack code,.hack em,.hack h1,.hack h2,.hack h3,.hack h4,.hack h5,.hack h6,.hack strong{font-size:1rem;font-style:normal}.hack em{font-style:italic}.hack strong em,.hack em strong{font-style:italic;font-weight:bold}.hack blockquote,.hack code,.hack em,.hack strong{line-height:20px}.hack blockquote,.hack code,.hack footer,.hack h1,.hack h2,.hack h3,.hack h4,.hack h5,.hack h6,.hack header,.hack li,.hack ol,.hack p,.hack section,.hack ul{float:none;margin:0;padding:0}.hack header+article{margin-top:20px}.hack blockquote,.hack h1,.hack ol,.hack p,.hack ul{margin-top:20px;margin-bottom:20px}.hack h1{position:relative;display:inline-block;display:table-cell;padding:20px 0 30px;margin:0;overflow:hidden}.hack h1:after{content:"====================================================================================================";position:absolute;bottom:10px;left:0}.hack h1+*{margin-top:0}.hack h2,.hack h3,.hack h4,.hack h5,.hack h6{position:relative;margin-bottom:1.75rem;margin-top:1.75rem}.hack h2:before,.hack h3:before,.hack h4:before,.hack h5:before,.hack h6:before{display:inline;color:var(--dk-accent-hack-heading)}.hack h2:before{content:"## "}.hack h3:before{content:"### "}.hack h4:before{content:"#### "}.hack h5:before{content:"##### "}.hack h6:before{content:"###### "}.hack li{position:relative;display:block;padding-left:20px}.hack li:after{position:absolute;top:0;left:0}.hack ul>li:after{content:"-"}.hack ol{counter-reset:list1;list-style:none;padding-left:1.5em}.hack ol>li{counter-increment:list1;position:relative}.hack ol>li::before{content:counter(list1) ". ";position:absolute;left:0;width:1.5em}.hack ol>li>ol{counter-reset:list2;list-style:none;padding-left:1.5em}.hack ol>li>ol>li{counter-increment:list2;position:relative}.hack ol>li>ol>li::before{content:counter(list2) ". ";position:absolute;left:0;width:1.5em}.hack ol>li>ol>li>ol{counter-reset:list3;list-style:none;padding-left:1.5em}.hack ol>li>ol>li>ol>li{counter-increment:list3;position:relative}.hack ol>li>ol>li>ol>li::before{content:counter(list3) ". ";position:absolute;left:0;width:1.5em}.hack blockquote{border-left:.2em solid var(--dk-accent-blockquote-border);border-top-right-radius:.2em;border-bottom-right-radius:.2em;position:relative;padding-left:17px;padding-left:2ch;padding-right:2ch;overflow:hidden;color:var(--dk-text-blockquote-dark);box-shadow:inset -3px -3px 5px var(--dk-shadow-blockquote)}.hack blockquote strong{background:var(--dk-accent-blockquote-strong);color:var(--dk-accent-blockquote-strong-text);padding:.1em .3em;border-radius:.2em}.hack blockquote em{font-style:italic;font-weight:bold;text-decoration:underline;text-decoration-color:var(--dk-accent-blockquote-em)}.hack blockquote em:before,.hack blockquote em:after{content:none}.hack blockquote a{color:inherit;font-weight:normal}.hack blockquote a:hover{color:var(--dk-accent-blockquote-strong-text)}.hack blockquote code{background:var(--dk-bg-code-dark)}.light .hack code{background:var(--dk-bg-code-light);border-radius:4px;padding:2px 6px}.dark .hack code{border-radius:4px;padding:2px 6px}.dark blockquote{background-color:var(--dk-bg-blockquote-dark)}.dark blockquote blockquote{background-color:var(--dk-bg-blockquote-dark-nested)}.light blockquote{background-color:var(--dk-bg-blockquote-light);color:var(--dk-text-blockquote-light)}.light blockquote a{color:var(--dk-bg-blockquote-dark)}.light blockquote code{background:var(--dk-bg-blockquote-light)}.light blockquote blockquote{background-color:var(--dk-bg-blockquote-light-nested)}.hack blockquote:after{position:absolute;top:0;left:0;line-height:20px}.hack em:after,.hack em:before{content:none;display:inline}.hack pre code:after,.hack pre code:before{content:none}.hack code:before,.hack code:after{content:none}.hack hr{position:relative;height:20px;overflow:hidden;border:0;margin:20px 0}.hack hr:after{content:"----------------------------------------------------------------------------------------------------";position:absolute;top:0;left:0;line-height:20px;width:100%;word-wrap:break-word}@-moz-document url-prefix(){.hack h1{display:block}}.hack-ones ol>li:after{content:"1."}p{margin:0 0 1.75rem}.container{max-width:70rem}.container,.container-fluid{margin:0 auto;padding:0 1rem}.inner{padding:1rem}.inner2x{padding:2rem}.pull-left{float:left}.pull-right{float:right}.progress-bar{height:8px;opacity:.8;background-color:var(--dk-progress-bg);margin-top:12px}.progress-bar.progress-bar-show-percent{margin-top:38px}.progress-bar-filled{background-color:var(--dk-progress-filled);height:100%;transition:width .3s ease;position:relative;width:0}.progress-bar-filled:before{content:"";border:6px solid rgba(0,0,0,0);border-top-color:var(--dk-progress-filled);position:absolute;top:-12px;right:-6px}.progress-bar-filled:after{color:var(--dk-progress-filled);content:attr(data-filled);display:block;font-size:12px;white-space:nowrap;position:absolute;border:6px solid rgba(0,0,0,0);top:-38px;right:0;-ms-transform:translateX(50%);transform:translateX(50%)}table{width:100%;border-collapse:collapse;margin:1.75rem 0;color:var(--dk-text-table)}table td,table th{vertical-align:top;border:1px solid var(--dk-border-table);line-height:15px;padding:10px}table thead{font-style:bold}.light table thead{background-color:var(--dk-bg-table-thead-light)}.dark table thead{background-color:var(--dk-bg-table-thead-dark)}code table{margin:1rem 0 0;border:none}code table td,code table tr{border:none}table tbody td:first-child{font-weight:700;color:var(--dk-text-table-first-light)}del{text-decoration-color:var(--dk-accent-del);text-decoration-thickness:3px}details{margin:1rem 0;padding:1rem;border:1px solid var(--dk-border-details);border-radius:8px}details summary::marker{color:var(--dk-accent-details-marker)}.dark details{background-color:var(--dk-bg-details-dark)}.light details{background-color:var(--dk-bg-details-light)}.form{width:30rem}.form-group{margin-bottom:1.75rem;overflow:auto}.form-group label{border-bottom:2px solid var(--dk-border-form);color:var(--dk-form-label);width:10rem;display:inline-block;height:38px;line-height:38px;padding:0;position:relative}.form-group.form-success label{color:var(--dk-form-success) !important;border-color:var(--dk-form-success) !important}.form-group.form-warning label{color:var(--dk-form-warning) !important;border-color:var(--dk-form-warning) !important}.form-group.form-error label{color:var(--dk-form-error) !important;border-color:var(--dk-form-error) !important}.form-control{outline:none;border:none;border-bottom:2px solid var(--dk-border-form);padding:.5rem 0;width:20rem;height:38px;background-color:rgba(0,0,0,0)}.form-control:focus{border-color:var(--dk-form-control-focus)}.form-group.form-textarea label:after{position:absolute;content:"";width:2px;background-color:var(--dk-form-textarea-after);right:-2px;top:0;bottom:0}textarea.form-control{height:auto;resize:none;padding:1rem 0;border-bottom:2px solid var(--dk-border-form);border-left:2px solid var(--dk-border-form);padding:.5rem}select.form-control{border-radius:0;background-color:rgba(0,0,0,0);appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none}.help-block{color:var(--dk-form-help);margin-top:.5rem}.form-actions{margin-bottom:1.75rem}.btn{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;outline:none;padding:.65rem 2rem;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;z-index:1}.btn:active{box-shadow:inset 0 1px 3px rgba(0,0,0,.12)}.btn.btn-ghost{border-color:var(--dk-btn-ghost);color:var(--dk-btn-ghost);background-color:rgba(0,0,0,0)}.btn.btn-ghost:focus,.btn.btn-ghost:hover{border-color:var(--dk-btn-ghost-hover);color:var(--dk-btn-ghost-hover);z-index:2}.btn.btn-ghost:hover{background-color:rgba(0,0,0,0)}.btn-block{width:100%;display:-ms-flexbox;display:flex}.btn-default{color:var(--dk-btn-default-text);background-color:var(--dk-btn-default-bg);border:1px solid var(--dk-btn-default-bg)}.btn-default:focus:not(.btn-ghost),.btn-default:hover{background-color:var(--dk-btn-default-hover);border-color:var(--dk-btn-default-hover)}.btn-success{color:var(--dk-selection-text);background-color:var(--dk-btn-success);border:1px solid var(--dk-btn-success)}.btn-success:focus:not(.btn-ghost),.btn-success:hover{background-color:var(--dk-btn-success-hover);border-color:var(--dk-btn-success-hover)}.btn-success.btn-ghost{border-color:var(--dk-btn-success);color:var(--dk-btn-success)}.btn-success.btn-ghost:focus,.btn-success.btn-ghost:hover{border-color:var(--dk-btn-success-ghost-hover);color:var(--dk-btn-success-ghost-hover);z-index:2}.btn-error{color:var(--dk-selection-text);background-color:var(--dk-btn-error);border:1px solid var(--dk-btn-error)}.btn-error:focus:not(.btn-ghost),.btn-error:hover{background-color:var(--dk-btn-error-hover);border-color:var(--dk-btn-error-hover)}.btn-error.btn-ghost{border-color:var(--dk-btn-error);color:var(--dk-btn-error)}.btn-error.btn-ghost:focus,.btn-error.btn-ghost:hover{border-color:var(--dk-btn-error-ghost-hover);color:var(--dk-btn-error-ghost-hover);z-index:2}.btn-warning{color:var(--dk-selection-text);background-color:var(--dk-btn-warning);border:1px solid var(--dk-btn-warning)}.btn-warning:focus:not(.btn-ghost),.btn-warning:hover{background-color:var(--dk-btn-warning-hover);border-color:var(--dk-btn-warning-hover)}.btn-warning.btn-ghost{border-color:var(--dk-btn-warning);color:var(--dk-btn-warning)}.btn-warning.btn-ghost:focus,.btn-warning.btn-ghost:hover{border-color:var(--dk-btn-warning-ghost-hover);color:var(--dk-btn-warning-ghost-hover);z-index:2}.btn-info{color:var(--dk-selection-text);background-color:var(--dk-btn-info);border:1px solid var(--dk-btn-info)}.btn-info:focus:not(.btn-ghost),.btn-info:hover{background-color:var(--dk-btn-info-hover);border-color:var(--dk-btn-info-hover)}.btn-info.btn-ghost{border-color:var(--dk-btn-info);color:var(--dk-btn-info)}.btn-info.btn-ghost:focus,.btn-info.btn-ghost:hover{border-color:var(--dk-btn-info-ghost-hover);color:var(--dk-btn-info-ghost-hover);z-index:2}.btn-primary{color:var(--dk-selection-text);background-color:var(--dk-btn-primary);border:1px solid var(--dk-btn-primary)}.btn-primary:focus:not(.btn-ghost),.btn-primary:hover{background-color:var(--dk-btn-primary-hover);border-color:var(--dk-btn-primary-hover)}.btn-primary.btn-ghost{border-color:var(--dk-btn-primary);color:var(--dk-btn-primary)}.btn-primary.btn-ghost:focus,.btn-primary.btn-ghost:hover{border-color:var(--dk-btn-primary-ghost-hover);color:var(--dk-btn-primary-ghost-hover);z-index:2}.btn-group{overflow:auto}.btn-group .btn{float:left}.btn-group .btn-ghost:not(:first-child){margin-left:-1px}.card{border:1px solid var(--dk-border-card)}.card .card-header{color:var(--dk-card-header-text);text-align:center;background-color:var(--dk-card-header-bg);padding:.5rem 0}.alert{color:var(--dk-alert-base);padding:1rem;border:1px solid var(--dk-alert-base);margin-bottom:1.75rem}.alert-success{color:var(--dk-alert-success);border-color:var(--dk-alert-success)}.alert-error{color:var(--dk-alert-error);border-color:var(--dk-alert-error)}.alert-info{color:var(--dk-alert-info);border-color:var(--dk-alert-info)}.alert-warning{color:var(--dk-alert-warning);border-color:var(--dk-alert-warning)}.media:not(:last-child){margin-bottom:1.25rem}.media-left{padding-right:1rem}.media-left,.media-right{display:table-cell;vertical-align:top}.media-right{padding-left:1rem}.media-body{display:table-cell;vertical-align:top}.media-heading{font-size:1.16667rem;font-weight:700}.media-content{margin-top:.3rem}.avatarholder,.placeholder{background-color:var(--dk-avatar-bg);text-align:center;color:var(--dk-avatar-text);font-size:1rem;border:1px solid var(--dk-avatar-bg)}.avatarholder{width:48px;height:48px;line-height:46px;font-size:2rem;background-size:cover;background-position:50%;background-repeat:no-repeat}.avatarholder.rounded{border-radius:33px}.loading{display:inline-block;content:"&nbsp;";height:20px;width:20px;margin:0 .5rem;animation:a .6s infinite linear;border:2px solid var(--dk-loading-border);border-right-color:rgba(0,0,0,0);border-radius:50%}.btn .loading{margin-bottom:0;width:14px;height:14px}.btn div.loading{float:left}.alert .loading{margin-bottom:-5px}@keyframes a{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.menu{width:100%}.menu .menu-item{display:block;color:var(--dk-menu-item);border-color:var(--dk-menu-item)}.menu .menu-item.active,.menu .menu-item:hover{color:var(--dk-menu-item-active);border-color:var(--dk-menu-item-active);background-color:rgba(0,0,0,0)}@media screen and (max-width: 768px){body{font-size:1.4rem}.form-group label{display:block;border-bottom:none;width:100%}.form-group.form-textarea label:after{display:none}.form-control{width:100%}textarea.form-control{border-left:none;padding:.5rem 0}pre::-webkit-scrollbar{height:3px}}@media screen and (max-width: 480px){.form{width:100%}}.dark{color:var(--dk-text-dark)}.light{color:var(--dk-text-light)}.dark,.dark pre{background-color:var(--dk-bg-dark)}.light,.light pre{background-color:var(--dk-bg-light)}.light .dark pre{padding:10px;border:none}.light .dark pre code{color:var(--dk-text-code-light)}.dark h1 a,.dark h2 a,.dark h3 a,.dark h4 a,.dark h5 a{color:var(--dk-text-dark)}.dark code,.dark strong{color:var(--dk-selection-text)}.dark table{color:var(--dk-selection-text)}.light table{color:var(--dk-link-light-base)}.dark table td,.dark table th{border-color:var(--dk-border-table-dark)}.light table td,.light table th{color:var(--dk-link-light-base);border-color:var(--dk-border-table-light)}.dark table tbody td:first-child{color:var(--dk-text-table-first-dark)}.dark .form-group label{color:var(--dk-text-dark);border-color:var(--dk-border-dark-subtle)}.dark .form-group.form-textarea label:after{background-color:var(--dk-bg-dark)}.dark .form-control{color:var(--dk-text-dark);border-color:var(--dk-border-dark-subtle)}.dark .form-control:focus{border-color:var(--dk-text-dark);color:var(--dk-text-dark)}.dark textarea.form-control{color:var(--dk-text-dark)}.dark .card{border-color:var(--dk-border-dark-subtle)}.dark .card .card-header{background-color:var(--dk-card-header-dark-bg);color:var(--dk-card-header-dark-text);border-bottom:1px solid var(--dk-card-header-dark-border)}.dark .btn.btn-ghost.btn-default{border-color:var(--dk-btn-ghost-dark);color:var(--dk-btn-ghost-dark)}.dark .btn.btn-ghost.btn-default:focus,.dark .btn.btn-ghost.btn-default:hover{border-color:var(--dk-btn-ghost-dark-hover);color:var(--dk-btn-ghost-dark-hover);z-index:1}.dark .btn.btn-ghost.btn-default:focus,.dark .btn.btn-ghost.btn-default:hover{border-color:var(--dk-btn-ghost-dark-focus);color:var(--dk-btn-ghost-dark-focus)}.dark .btn.btn-ghost.btn-primary:focus,.dark .btn.btn-ghost.btn-primary:hover{border-color:var(--dk-btn-ghost-primary-hover);color:var(--dk-btn-ghost-primary-hover)}.dark .btn.btn-ghost.btn-success:focus,.dark .btn.btn-ghost.btn-success:hover{border-color:var(--dk-btn-ghost-success-hover);color:var(--dk-btn-ghost-success-hover)}.dark .btn.btn-ghost.btn-info:focus,.dark .btn.btn-ghost.btn-info:hover{border-color:var(--dk-btn-ghost-info-hover);color:var(--dk-btn-ghost-info-hover)}.dark .btn.btn-ghost.btn-error:focus,.dark .btn.btn-ghost.btn-error:hover{border-color:var(--dk-btn-ghost-error-hover);color:var(--dk-btn-ghost-error-hover)}.dark .btn.btn-ghost.btn-warning:focus,.dark .btn.btn-ghost.btn-warning:hover{border-color:var(--dk-btn-ghost-warning-hover);color:var(--dk-btn-ghost-warning-hover)}.dark .avatarholder,.dark .placeholder{background-color:var(--dk-avatar-dark-bg);border-color:var(--dk-avatar-dark-border)}.dark .menu .menu-item{color:var(--dk-menu-item-dark);border-color:var(--dk-menu-item-dark-border)}.dark .menu .menu-item.active,.dark .menu .menu-item:hover{color:var(--dk-menu-item-dark-active);border-color:var(--dk-menu-item-dark-border-active)}:root{--screen-size-small: 30em;font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}@keyframes intro{0%{opacity:0}100%{opacity:1}}.dark .muted{color:var(--dk-text-muted-dark)}.light .muted{color:var(--dk-text-muted-light)}.responsive-iframe{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.responsive-iframe iframe{position:absolute;top:0;left:0;width:100%;height:100%}iframe{border:0}main,footer{animation:intro .3s both;animation-delay:.15s}.nav-header{display:flex;justify-content:space-between;align-items:center}footer time[datetime$=M]:before{content:"– "}@media only screen and (max-width: 30em){footer time[datetime$=M]{display:none}body.main{padding-top:0;font-size:1.6rem}}blockquote cite{display:block}blockquote cite::before{content:"—"}.hack li ul{margin:0}.main{padding:20px 10px}.post-header h1,.post-header h2{margin-bottom:0}.post-date{font-size:.9rem}.dark .post-date{color:var(--dk-base-gray-dark)}.light .post-date{color:var(--dk-base-gray-light)}.ps-expand{cursor:pointer}.ps-container-collapsed .ps-content{display:none}.ps-content{margin-top:20px}.light nav a.active{background-color:var(--dk-nav-active-bg-light);color:var(--dk-nav-active-text)}.dark nav a.active{background-color:var(--dk-nav-active-bg-dark);color:var(--dk-nav-active-text)}.dark a[itemprop=url]{color:var(--dk-link-dark)}.light a[itemprop=url]{color:var(--dk-link-light);font-weight:bold}a[itemprop=url]:hover{color:var(--dk-link-hover)}.feed-icon::after{content:none !important}#sun-icon,#moon-icon,.social-icon{padding:.1em;height:1.5em;width:auto;display:block;margin-bottom:.25em}.invert-icon{filter:invert(1)}#dark-mode-toggle{display:flex;align-items:center}body.dark .social-icon{filter:invert(1)}figure a[href*="://"]::after,figure a[rel*=external]{content:""}html{font-size:13px}.hack pre{font-size:17px}.light pre{color:var(--dk-text-pre-light) !important}.icon{margin-bottom:-3px}article[itemtype="http://schema.org/CreativeWork"]{margin-bottom:3rem}article[itemtype="http://schema.org/CreativeWork"] header h2{margin-bottom:0rem}article[itemtype="http://schema.org/CreativeWork"] nav.readmore{margin-top:.25rem}article [itemprop=description],article [itemprop=summary],article [itemprop=articleBody]{margin-bottom:20px;margin-top:10px}article [itemprop=summary] p{margin:0}@media screen and (min-width: 768px){html{font-size:1em}.container{max-width:50rem}}.user-actions-container{position:relative;max-width:100%;margin-left:15px;margin-right:15px;display:flex;align-items:center;gap:15px}@media only screen and (max-width: 30em){.user-actions-container{margin:15px}}.footnote-reference{margin-left:4px}.footnote-definition{display:block;max-width:100%;margin-bottom:10px;overflow:hidden;overflow-x:auto;margin:20px 0;padding-block-end:5px}.footnote-definition sup{display:inline-block;margin-right:.5em;color:var(--dk-base-gray-darkest);font-size:inherit;font-weight:bold;vertical-align:baseline}.footnote-definition sup::before{content:"["}.footnote-definition sup::after{content:"]"}.footnote-definition p:first-of-type{display:inline}.footnote-definition p:not(:first-of-type){margin-top:.5em}.footnote-return{margin-left:.5em;font-size:1.2em}.revision-history{text-align:center;font-style:italic}.revision-history a{border-bottom:none}.revision-history a::after{content:none}.post-navigation{display:flex;justify-content:space-between;margin:2rem 0;padding:1rem 0;border-top:1px solid var(--border-color, var(--dk-border-base))}.post-navigation .nav-previous,.post-navigation .nav-next{flex:1}.post-navigation .nav-previous a,.post-navigation .nav-next a{text-decoration:none;color:inherit}.post-navigation .nav-previous a:hover,.post-navigation .nav-next a:hover{text-decoration:underline}.post-navigation .nav-previous .nav-label,.post-navigation .nav-next .nav-label{display:block;font-size:.9em;opacity:.7;margin-bottom:.25rem}.post-navigation .nav-previous .nav-title,.post-navigation .nav-next .nav-title{display:block;font-weight:500}.post-navigation .nav-next{text-align:right}hr{position:relative;margin-bottom:2.6rem;width:50%;height:1px;opacity:80%}.dark hr{color:var(--dk-text-muted-dark)}.light hr{color:var(--dk-text-muted-light)}.sep{position:relative;margin-bottom:2.6rem;left:-2.5rem;width:calc(100% + 5rem);border:none;height:1px;background:var(--dk-text-base);opacity:80%}.dark .sep{background:repeating-linear-gradient(90deg, rgba(0,0,0,0), rgba(0,0,0,0) 5px, var(--dk-text-muted-dark) 5px, var(--dk-text-muted-dark) 10px)}.light .sep{background:repeating-linear-gradient(90deg, rgba(0,0,0,0), rgba(0,0,0,0) 5px, var(--dk-text-muted-light) 5px, var(--dk-text-muted-light) 10px)}ul li{margin-bottom:8px}.note-container{overflow:hidden;margin:1em auto;padding:0;font-size:1.1em;min-width:100%;font-family:"JetBrains Mono",Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif}.note-details{width:100%;border-left:.4em solid var(--dk-accent);border-top:none !important;border-right:none !important;border-bottom:none !important;padding:0}.light .note-header{background-color:color-mix(in srgb, var(--dk-bg-note-light) 75%, #000 25%)}.note-header{background-color:color-mix(in srgb, var(--dk-bg-note-dark) 90%, #fff 20%);cursor:pointer;position:relative;font-size:1.2em;transition:background-color .3s ease;padding:0;margin:0;color:inherit;list-style:none;display:flex;align-items:center}.note-header p{margin:10px;font-weight:bold}.note-header::-webkit-details-marker{display:none}.note-header::after{content:"▼";position:absolute;right:20px;top:50%;transform:translateY(-50%);color:var(--dk-accent-note-arrow);transition:transform .3s ease}details[open]>.note-header::after{transform:translateY(-50%) rotate(180deg)}.note-center{text-align:center;padding:0;width:100%}.note-content{padding:10px 25px !important;background-color:inherit;font-size:1em;background-color:color-mix(in srgb, var(--dk-bg-note-dark) 90%, #fff 10%);color:inherit;line-height:1.6em}.note-content a{color:var(--dk-link-note);font-weight:normal}.note-content a:hover{color:var(--dk-link-note-hover)}.note-content .dark strong{color:var(--dk-selection-text)}.light .note-content{background-color:color-mix(in srgb, var(--dk-bg-note-light) 90%, #000 5%)}.code-label.label-js{background:#e9c92c;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-shell{background:#4eaa25;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-json{background:#1e90ff;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-python{background:#3572a5;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-css{background:#264de4;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-go{background:#00add8;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-markdown{background:blue;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-rust{background:#ff4647;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-java{background:#f89820;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-csharp{background:#178600;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-ruby{background:#701516;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-swift{background:#f05138;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-php{background:#777bb4;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-typescript{background:#3178c6;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-scala{background:#c22d40;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-kotlin{background:#f18e33;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-lua{background:navy;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-perl{background:#0298c3;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-haskell{background:#5e5086;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-r{background:#198ce7;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-dart{background:#00d2b8;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-elixir{background:#6e4a7e;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-clojure{background:#5881d8;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-sql{background:#fc0;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-bash{background:#4f8f00;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-text{background:#151b23;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-gd{background:#3c76a2;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-cpp{background:#5d8dbf;color:#000;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-toml{background:#9c4221;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.code-label.label-default{background:#151b23;color:#fff;border-radius:.25rem;font-size:12px;font-weight:bold;padding:.2rem .5rem;text-transform:uppercase;position:absolute;top:5px;left:5px;z-index:10}.clipboard-button{cursor:pointer;position:absolute;top:5px;right:5px;z-index:10;background-color:rgba(0,0,0,0);border:var(--dk-clipboard-border);border-radius:3px}.clipboard-button svg{fill:var(--dk-clipboard-icon);width:16px;height:16px}.light .clipboard-button{border-width:1px;border-color:var(--dk-border-clipboard-light);background-color:var(--dk-bg-clipboard-light)}pre{background-color:var(--dk-bg-primary) !important;border-radius:5px;border:none;line-height:1.4;padding-top:1.8em;padding-bottom:1em;position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch}pre code{background-color:rgba(0,0,0,0) !important;color:inherit;border:none;padding:0 !important}pre code table td{padding:.4em}.light code table td{color:var(--dk-bg-code-table-light) !important}pre code table mark{color:unset;padding:0;background-color:var(--dk-bg-mark) !important;filter:brightness(1.1)}pre::-webkit-scrollbar{height:8px}pre::-webkit-scrollbar-thumb{background-color:var(--dk-bg-scrollbar-thumb);border-radius:4px}pre::-webkit-scrollbar-track{background-color:var(--dk-bg-scrollbar-track)}a code:hover{background-color:rgba(0,0,0,0);background:rgba(0,0,0,0) !important}code{background-color:var(--dk-bg-primary)}code,pre,kbd,samp{font-size:1.05em;line-height:1.6}.search-icon{position:absolute;left:10px;width:24px;height:24px;stroke:var(--dk-text-search-icon);pointer-events:none;padding:2.5px 0px}#search{width:100%;padding:10px 10px 10px 40px;font-size:14px;border:1.5px solid rgba(0,0,0,0);border-radius:4px;background-color:var(--dk-bg-search);color:var(--dk-text-search);outline:none;height:35px;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif}.light #search{border:1.5px solid var(--dk-border-search)}#search:focus{border:1.5px solid var(--dk-accent-search-border)}.search-results{display:none;position:absolute;top:100%;left:0;width:100%;max-height:300px;overflow-y:auto;border:1px solid var(--dk-accent-search-border);border-radius:4px;background-color:var(--dk-bg-search);box-shadow:0 2px 10px var(--dk-shadow-search);z-index:1000}.light .search-results{background-color:var(--dk-bg-search-light)}.search-results__no-results{padding:1rem !important;font-style:italic;justify-content:center;align-content:center}.toc-container{margin:1rem 0;padding:1rem;border:1px solid var(--dk-border-toc);border-radius:8px}.toc-container a[href*="://"]::after,.toc-container a[rel*=external]{content:" → ";color:var(--dk-link-toc-external);font-size:1rem}.light .toc-container{background-color:var(--dk-bg-toc-light)}.dark .toc-container{background-color:var(--dk-bg-toc-dark)}.toc-title{font-size:1.2rem;font-weight:bold;color:var(--dk-text-toc-title-light);margin-bottom:.5rem;cursor:pointer}.dark .toc-title{color:var(--dk-text-toc-title-dark)}.toc-list{margin-left:1.5rem;padding:0;color:var(--dk-text-toc-dark);font-weight:bold}.light .toc-list{color:var(--dk-text-toc-light)}.toc-list ul{margin-left:1.5rem;color:var(--dk-text-toc-dark);font-weight:bold}.light .toc-list ul{color:var(--dk-text-toc-light)}.toc-list ul ul{margin-left:1.5rem;color:var(--dk-text-toc-dark);font-weight:bold}.light .toc-list ul ul{color:var(--dk-text-toc-light)}.toc-list li{margin:.5rem 0}mjx-container{padding-top:10px;padding-bottom:10px;overflow-x:auto;overflow-y:hidden}