@charset "UTF-8";
:root {
    --gray-100: #f8f9fa;
    --gray-200: #e9ecef;
    --gray-500: #adb5bd;
    --color-link: #0055bb;
    --color-visited-link: #8440f1;
    --body-background: white;
    --body-font-color: black;
    --icon-filter: none;
    --hint-color-info: #6bf;
    --hint-color-warning: #fd6;
    --hint-color-danger: #f66
}

/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/
html {
    line-height: 1.15;
    -webkit-text-size-adjust: 100%
}

body {
    margin: 0
}

main {
    display: block
}

h1 {
    font-size: 2em;
    margin: .67em 0
}

hr {
    box-sizing: content-box;
    height: 0;
    overflow: visible
}

pre {
    font-family: monospace, monospace;
    font-size: 1em
}

a {
    background-color: transparent
}

abbr[title] {
    border-bottom: none;
    text-decoration: underline dotted;
}

b, strong {
    font-weight: bolder
}

code, kbd, samp {
    font-family: monospace, monospace;
    font-size: 1em
}

small {
    font-size: 80%
}

sub, sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline
}

sub {
    bottom: -.25em
}

sup {
    top: -.5em
}

img {
    border-style: none
}

button, input, optgroup, select, textarea {
    font-family: inherit;
    font-size: 100%;
    line-height: 1.15;
    margin: 0
}

button, input {
    overflow: visible
}

button, select {
    text-transform: none
}

button, [type=button], [type=reset], [type=submit] {
    -webkit-appearance: button
}

button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner {
    border-style: none;
    padding: 0
}

button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring {
    outline: 1px dotted ButtonText
}

fieldset {
    padding: .35em .75em .625em
}

legend {
    box-sizing: border-box;
    color: inherit;
    display: table;
    max-width: 100%;
    padding: 0;
    white-space: normal
}

progress {
    vertical-align: baseline
}

textarea {
    overflow: auto
}

[type=checkbox], [type=radio] {
    box-sizing: border-box;
    padding: 0
}

[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
    height: auto
}

[type=search] {
    -webkit-appearance: textfield;
    outline-offset: -2px
}

[type=search]::-webkit-search-decoration {
    -webkit-appearance: none
}

::-webkit-file-upload-button {
    -webkit-appearance: button;
    font: inherit
}

details {
    display: block
}

summary {
    display: list-item
}

template {
    display: none
}

[hidden] {
    display: none
}

.flex {
    display: flex
}

.flex-auto {
    flex: auto
}

.flex-even {
    flex: 1 1
}

.flex-wrap {
    flex-wrap: wrap
}

.justify-start {
    justify-content: flex-start
}

.justify-end {
    justify-content: flex-end
}

.justify-center {
    justify-content: center
}

.justify-between {
    justify-content: space-between
}

.align-center {
    align-items: center
}

.mx-auto {
    margin: 0 auto
}

.text-center {
    text-align: center
}

.text-left {
    text-align: left
}

.text-right {
    text-align: right
}

.hidden {
    display: none
}

input.toggle {
    height: 0;
    width: 0;
    overflow: hidden;
    opacity: 0;
    position: absolute
}

.clearfix::after {
    content: "";
    display: table;
    clear: both
}

html {
    font-size: 1.0em;
    scroll-behavior: smooth;
    touch-action: manipulation
}

body {
    min-width: 20rem;
    color: var(--body-font-color);
    background: var(--body-background);
    letter-spacing: .33px;
    font-weight: 400;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    box-sizing: border-box
}

body * {
    box-sizing: inherit
}

h1, h2, h3, h4, h5 {
    font-weight: 400
}

a {
    text-decoration: none;
    color: var(--color-link)
}

img {
    vertical-align: baseline
}

:focus {
    outline-style: auto;
    outline-color: currentColor;
    outline-color: -webkit-focus-ring-color
}

aside nav ul {
    padding: 0;
    margin: 0;
    list-style: none
}

aside nav ul li {
    margin: 1em 0;
    position: relative
}

aside nav ul a {
    display: block
}

aside nav ul a:hover {
    opacity: .5
}

aside nav ul ul {
    padding-inline-start: 1rem
}

ul.pagination {
    display: flex;
    justify-content: center;
    list-style-type: none;
    padding-inline-start: 0
}

ul.pagination .page-item a {
    padding: 1rem
}

.container {
    max-width: 80rem;
    margin: 0 auto
}

.book-icon {
    filter: var(--icon-filter)
}

.book-brand {
    margin-top: 0;
    margin-bottom: 1rem
}

.book-brand img {
    height: 1.5em;
    width: 1.5em;
    margin-inline-end: .5rem
}

.book-menu {
    flex: 0 0 16rem;
    font-size: .875rem
}

.book-menu .book-menu-content {
    width: 16rem;
    padding: 1rem;
    background: var(--body-background);
    position: fixed;
    top: 0;
    bottom: 0;
    overflow-x: hidden;
    overflow-y: auto;
    font-size: 15px;
}

.book-menu a, .book-menu label {
    color: inherit;
    cursor: pointer;
    word-wrap: break-word
}

.book-menu a.active {
    color: var(--color-link)
}

.book-menu input.toggle + label + ul {
    display: none
}

.book-menu input.toggle:checked + label + ul {
    display: block
}

.book-menu input.toggle + label::after {
    content: "▸"
}

.book-menu input.toggle:checked + label::after {
    content: "▾"
}

body[dir=rtl] .book-menu input.toggle + label::after {
    content: "◂"
}

body[dir=rtl] .book-menu input.toggle:checked + label::after {
    content: "▾"
}

.book-section-flat {
    margin: 2rem 0
}

.book-section-flat > a, .book-section-flat > span, .book-section-flat > label {
    font-weight: bolder
}

.book-section-flat > ul {
    padding-inline-start: 0
}

.book-page {
    min-width: 20rem;
    flex-grow: 1;
    padding: 1rem
}

.book-post {
    margin-bottom: 3rem
}

.book-header {
    display: none;
    margin-bottom: 1rem
}

.book-header label {
    line-height: 0
}

.book-header img.book-icon {
    height: 1.5em;
    width: 1.5em
}

.book-search {
    position: relative;
    margin: 1rem 0;
    border-bottom: 1px solid transparent
}

.book-search input {
    width: 100%;
    padding: .5rem;
    border: 0;
    border-radius: .25rem;
    background: var(--gray-100);
    color: var(--body-font-color)
}

.book-search input:required + .book-search-spinner {
    display: block
}

.book-search .book-search-spinner {
    position: absolute;
    top: 0;
    margin: .5rem;
    margin-inline-start: calc(100% - 1.5rem);
    width: 1rem;
    height: 1rem;
    border: 1px solid transparent;
    border-top-color: var(--body-font-color);
    border-radius: 50%;
    animation: spin 1s ease infinite
}

@keyframes spin {
    100% {
        transform: rotate(360deg)
    }
}

.book-search small {
    opacity: .5
}

.book-toc {
    flex: 0 0 16rem;
    font-size: .75rem
}

.book-toc .book-toc-content {
    width: 16rem;
    padding: 1rem;
    position: fixed;
    top: 0;
    bottom: 0;
    overflow-x: hidden;
    overflow-y: auto
}

.book-toc img {
    height: 1em;
    width: 1em
}

.book-toc nav > ul > li:first-child {
    margin-top: 0
}

.book-footer {
    padding-top: 1rem;
    font-size: .875rem
}

.book-footer img {
    height: 1em;
    width: 1em;
    margin-inline-end: .5rem
}

.book-comments {
    margin-top: 1rem
}

.book-languages {
    margin-block-end: 2rem
}

.book-languages .book-icon {
    height: 1em;
    width: 1em;
    margin-inline-end: .5em
}

.book-languages ul {
    padding-inline-start: 1.5em
}

.book-menu-content, .book-toc-content, .book-page, .book-header aside, .markdown {
    transition: .2s ease-in-out;
    transition-property: transform, margin, opacity, visibility;
    will-change: transform, margin, opacity
}

@media screen and (max-width: 56rem) {
    #menu-control, #toc-control {
        display: inline
    }

    .book-menu {
        visibility: hidden;
        margin-inline-start: -16rem;
        font-size: 1.0em;
        z-index: 1
    }

    .book-toc {
        display: none
    }

    .book-header {
        display: block
    }

    #menu-control:focus ~ main label[for=menu-control] {
        outline-style: auto;
        outline-color: currentColor;
        outline-color: -webkit-focus-ring-color
    }

    #menu-control:checked ~ main .book-menu {
        visibility: initial
    }

    #menu-control:checked ~ main .book-menu .book-menu-content {
        transform: translateX(16rem);
        box-shadow: 0 0 .5rem rgba(0, 0, 0, .1)
    }

    #menu-control:checked ~ main .book-page {
        opacity: .25
    }

    #menu-control:checked ~ main .book-menu-overlay {
        display: block;
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0
    }

    #toc-control:focus ~ main label[for=toc-control] {
        outline-style: auto;
        outline-color: currentColor;
        outline-color: -webkit-focus-ring-color
    }

    #toc-control:checked ~ main .book-header aside {
        display: block
    }

    body[dir=rtl] #menu-control:checked ~ main .book-menu .book-menu-content {
        transform: translateX(-16rem)
    }
}

@media screen and (min-width: 80rem) {
    .book-page, .book-menu .book-menu-content, .book-toc .book-toc-content {
        padding: 2rem 1rem
    }
}

body {
    font-family: roboto, sans-serif
}

code {
    font-family: roboto mono, monospace
}

@media print {
    .book-menu, .book-footer, .book-toc {
        display: none
    }

    .book-header, .book-header aside {
        display: block
    }

    main {
        display: block !important
    }
}

.markdown {
    line-height: 1.6
}

.markdown > :first-child {
    margin-top: 0
}

.markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 {
    font-weight: 400;
    line-height: 1;
    margin-top: 1.5em;
    margin-bottom: 1rem
}

.markdown h1 a.anchor, .markdown h2 a.anchor, .markdown h3 a.anchor, .markdown h4 a.anchor, .markdown h5 a.anchor, .markdown h6 a.anchor {
    opacity: 0;
    font-size: .75em;
    vertical-align: middle;
    text-decoration: none
}

.markdown h1:hover a.anchor, .markdown h1 a.anchor:focus, .markdown h2:hover a.anchor, .markdown h2 a.anchor:focus, .markdown h3:hover a.anchor, .markdown h3 a.anchor:focus, .markdown h4:hover a.anchor, .markdown h4 a.anchor:focus, .markdown h5:hover a.anchor, .markdown h5 a.anchor:focus, .markdown h6:hover a.anchor, .markdown h6 a.anchor:focus {
    opacity: initial
}

.markdown h4, .markdown h5, .markdown h6 {
    font-weight: bolder
}

.markdown h5 {
    font-size: .875em
}

.markdown h6 {
    font-size: .75em
}

.markdown b, .markdown optgroup, .markdown strong {
    font-weight: bolder
}

.markdown a {
    text-decoration: none
}

.markdown a:hover {
    text-decoration: underline
}

.markdown a:visited {
    color: var(--color-visited-link)
}

.markdown img {
    max-width: 100%;
    height: auto
}

.markdown code {
    padding: 0 .25rem;
    background: var(--gray-200);
    border-radius: .25rem;
    font-size: .875em
}

.markdown pre {
    padding: 1rem;
    background: var(--gray-100);
    border-radius: .25rem;
    overflow-x: auto
}

.markdown pre code {
    padding: 0;
    background: 0 0
}

.markdown p {
    word-wrap: break-word
}

.markdown blockquote {
    margin: 1rem 0;
    padding: .5rem 1rem .5rem .75rem;
    border-inline-start: .25rem solid var(--gray-200);
    border-radius: .25rem
}

.markdown blockquote :first-child {
    margin-top: 0
}

.markdown blockquote :last-child {
    margin-bottom: 0
}

.markdown table {
    overflow: auto;
    display: block;
    border-spacing: 0;
    border-collapse: collapse;
    margin-top: 1rem;
    margin-bottom: 1rem
}

.markdown table tr th, .markdown table tr td {
    padding: .5rem 1rem;
    border: 1px solid var(--gray-200)
}

.markdown table tr:nth-child(2n) {
    background: var(--gray-100)
}

.markdown hr {
    height: 1px;
    border: none;
    background: var(--gray-200)
}

.markdown ul, .markdown ol {
    padding-inline-start: 2rem;
    word-wrap: break-word
}

.markdown dl dt {
    font-weight: bolder;
    margin-top: 1rem
}

.markdown dl dd {
    margin-inline-start: 0;
    margin-bottom: 1rem
}

.markdown .highlight table tr td:nth-child(1) pre {
    margin: 0;
    padding-inline-end: 0
}

.markdown .highlight table tr td:nth-child(2) pre {
    margin: 0;
    padding-inline-start: 0
}

.markdown details {
    padding: 1rem;
    border: 1px solid var(--gray-200);
    border-radius: .25rem
}

.markdown details summary {
    line-height: 1;
    padding: 1rem;
    margin: -1rem;
    cursor: pointer
}

.markdown details[open] summary {
    margin-bottom: 0
}

.markdown figure {
    margin: 1rem 0
}

.markdown figure figcaption p {
    margin-top: 0
}

.markdown-inner > :first-child {
    margin-top: 0
}

.markdown-inner > :last-child {
    margin-bottom: 0
}

.markdown .book-expand {
    margin-top: 1rem;
    margin-bottom: 1rem;
    border: 1px solid var(--gray-200);
    border-radius: .25rem;
    overflow: hidden
}

.markdown .book-expand .book-expand-head {
    background: var(--gray-100);
    padding: .5rem 1rem;
    cursor: pointer
}

.markdown .book-expand .book-expand-content {
    display: none;
    padding: 1rem
}

.markdown .book-expand input[type=checkbox]:checked + .book-expand-content {
    display: block
}

.markdown .book-tabs {
    margin-top: 1rem;
    margin-bottom: 1rem;
    border: 1px solid var(--gray-200);
    border-radius: .25rem;
    overflow: hidden;
    display: flex;
    flex-wrap: wrap
}

.markdown .book-tabs label {
    display: inline-block;
    padding: .5rem 1rem;
    border-bottom: 1px transparent;
    cursor: pointer
}

.markdown .book-tabs .book-tabs-content {
    order: 999;
    width: 100%;
    border-top: 1px solid var(--gray-100);
    padding: 1rem;
    display: none
}

.markdown .book-tabs input[type=radio]:checked + label {
    border-bottom: 1px solid var(--color-link)
}

.markdown .book-tabs input[type=radio]:checked + label + .book-tabs-content {
    display: block
}

.markdown .book-tabs input[type=radio]:focus + label {
    outline-style: auto;
    outline-color: currentColor;
    outline-color: -webkit-focus-ring-color
}

.markdown .book-columns {
    margin-left: -1rem;
    margin-right: -1rem
}

.markdown .book-columns > div {
    margin: 1rem 0;
    min-width: 10rem;
    padding: 0 1rem
}

.markdown a.book-btn {
    display: inline-block;
    font-size: .875rem;
    color: var(--color-link);
    line-height: 2rem;
    padding: 0 1rem;
    border: 1px solid var(--color-link);
    border-radius: .25rem;
    cursor: pointer
}

.markdown a.book-btn:hover {
    text-decoration: none
}

.markdown .book-hint.info {
    border-color: #6bf;
    background-color: rgba(102, 187, 255, .1)
}

.markdown .book-hint.warning {
    border-color: #fd6;
    background-color: rgba(255, 221, 102, .1)
}

.markdown .book-hint.danger {
    border-color: #f66;
    background-color: rgba(255, 102, 102, .1)
}