<!DOCTYPE html>
<html lang="en"><!--
 __  __                __                                     __
/\ \/\ \              /\ \             __                    /\ \
\ \ \_\ \   __  __    \_\ \      __   /\_\      __       ___ \ \ \/'\
 \ \  _  \ /\ \/\ \   /'_` \   /'__`\ \/\ \   /'__`\    /'___\\ \ , <
  \ \ \ \ \\ \ \_\ \ /\ \L\ \ /\  __/  \ \ \ /\ \L\.\_ /\ \__/ \ \ \\`\
   \ \_\ \_\\/`____ \\ \___,_\\ \____\ _\ \ \\ \__/.\_\\ \____\ \ \_\ \_\
    \/_/\/_/ `/___/> \\/__,_ / \/____//\ \_\ \\/__/\/_/ \/____/  \/_/\/_/
                /\___/                \ \____/
                \/__/                  \/___/

Powered by Hydejack v9.2.1 <https://hydejack.com/>
--><head> <title>Action is character manifested</title> <meta name="description" content="Taking inquisitive and augmenting it with python to learn about the world. "> <link rel="canonical" href="https://agustincody.com/assets/css/hydejack-9.2.1.css"> <meta name="color-scheme" content="dark"> <meta name="theme-color" content="rgb(25,55,71)"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-title" content="Action is character manifested"> <meta name="apple-mobile-web-app-status-bar-style" content="default"> <meta name="application-name" content="Action is character manifested"> <meta name="generator" content="Hydejack v9.2.1" /> <link rel="alternate" href="https://agustincody.com/assets/css/hydejack-9.2.1.css" hreflang="en"> <link rel="shortcut icon" href="/assets/icons/favicon.ico"> <link rel="apple-touch-icon" href="/assets/icons/icon-192x192.png"> <link rel="manifest" href="/assets/site.webmanifest"> <link rel="preload" href="/assets/img/swipe.svg" as="image" id="_hrefSwipeSVG"> <script>((r,a)=>{function d(e,t,n,o){e.addEventListener?e.addEventListener(t,n,o):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n}r.loadJS=function(e,t){var n=a.createElement("script"),e=(n.src=e,t&&d(n,"load",t,{once:!0}),a.scripts[0]);return e.parentNode.insertBefore(n,e),n},r._loaded=!1,r.loadJSDeferred=function(e,t){var n=a.createElement("script");function o(){r._loaded=!0,t&&d(n,"load",t,{once:!0});var e=a.scripts[0];e.parentNode.insertBefore(n,e)}return n.src=e,r._loaded?o():d(r,"load",o,{once:!0}),n},r.setRel=r.setRelStylesheet=function(e){d(a.getElementById(e),"load",function(){this.rel="stylesheet"},{once:!0})}})(window,document); !function(a){"use strict";var b=function(b,c,d){function e(a){return h.body?a():void setTimeout(function(){e(a)})}function f(){i.addEventListener&&i.removeEventListener("load",f),i.media=d||"all"}var g,h=a.document,i=h.createElement("link");if(c)g=c;else{var j=(h.body||h.getElementsByTagName("head")[0]).childNodes;g=j[j.length-1]}var k=h.styleSheets;i.rel="stylesheet",i.href=b,i.media="only x",e(function(){g.parentNode.insertBefore(i,c?g:g.nextSibling)});var l=function(a){for(var b=i.href,c=k.length;c--;)if(k[c].href===b)return a();setTimeout(function(){l(a)})};return i.addEventListener&&i.addEventListener("load",f),i.onloadcssdefined=l,l(f),i};"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b}("undefined"!=typeof global?global:this); !function(a){if(a.loadCSS){var b=loadCSS.relpreload={};if(b.support=function(){try{return a.document.createElement("link").relList.supports("preload")}catch(b){return!1}},b.poly=function(){for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)}},!b.support()){b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){b.poly(),a.clearInterval(c)}),a.attachEvent&&a.attachEvent("onload",function(){a.clearInterval(c)})}}}(this); !function(w) { w._baseURL = '/'; w._publicPath = '/assets/js/'; w._noPushState = false; w._noDrawer = false; w._noNavbar = false; w._noToc = false; w._noSearch = false; w._search = { DATA_URL: '/assets/sitedata.json?no-cache', STORAGE_KEY: 'mini-search/', INDEX_KEY: 'index--2026-04-19T22:05:41-07:00', }; w._clapButton = false; }(window);</script> <!--[if gt IE 8]><!----> <style id="_styleInline"> .clearfix, .sidebar-social::after { content: ""; display: table; clear: both; } .color-transition, .content .avatar, .nav-btn, .nav-btn-bar, .navbar, .message, .note-sm, #markdown-toc, .note, .hr-bottom, .hr-after::after, hr, .hr, p, body { transition: none; } #_dark-mode { font-size: 1.25rem; } @media screen { body, body.light-mode { --body-color: #333; --body-bg: #fff; --border-color: #ebebeb; --gray: #777; --gray-bg: rgba(0, 0, 0, 0.025); --gray-text: #666; --menu-text: #bbb; --inv-body-color: #ccc; --inv-body-bg: var(--dark-mode-body-bg); } body .content, body.light-mode .content { -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } body.dark-mode { --body-color: #ccc; --body-bg: var(--dark-mode-body-bg); --border-color: var(--dark-mode-border-color); --gray: rgba(255,255,255,.5); --gray-bg: rgba(255,255,255,.033); --gray-text: rgba(255,255,255,.625); --menu-text: rgba(255,255,255,.25); --inv-body-color: #333; --inv-body-bg: #fff; } body.dark-mode .content { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } html { --font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; --font-family-heading: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; --code-font-family: ui-monospace, Menlo, Monaco, Cascadia Mono, Segoe UI Mono, Roboto Mono, Oxygen Mono, Ubuntu Mono, Source Code Pro, Fira Mono, Droid Sans Mono, Consolas, Courier New, monospace; --root-font-size: 15px; --root-font-size-medium: 16px; --root-font-size-large: 17px; --root-font-size-print: 8pt; --root-line-height: 1.75; --font-weight: 400; --font-weight-bold: 700; --font-weight-heading: 900; --content-width-5: 54rem; --content-margin-5: 4rem; --sidebar-width: 21rem; --half-content: 31rem; --break-point-3: 64em; --break-point-5: 86em; --break-point-dynamic: 104rem; } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; } html { font-family: var(--font-family); font-size: var(--root-font-size); line-height: var(--root-line-height); } body { color: var(--body-color); background-color: var(--body-bg); font-weight: var(--font-weight); overflow-y: scroll; } .content img, .img, .content video, .video { max-width: 100%; height: auto; } .lead { margin-left: -1rem; margin-right: -1rem; margin-bottom: 1.5rem; } img.lead, video.lead { display: block; max-width: calc(100% + 2rem); width: calc(100% + 2rem); height: auto; } .heading, .f6, h6, .h6, .f5, h5, .h5, .f4, .sidebar-nav-item, h4, .h4, .post-date, .f3, h3, .h3, .f2, h2, .h2, .f1, h1, .h1 { font-family: var(--font-family-heading); font-weight: var(--font-weight-heading); } .f1, h1, .h1 { font-size: 2rem; line-height: 1.3; } .f2, h2, .h2 { font-size: 1.5rem; line-height: 1.4; } .f3, h3, .h3 { font-size: 1.2em; line-height: 1.5; } .f4, .sidebar-nav-item, h4, .h4, .post-date { font-size: 1.08rem; line-height: 1.6; } .f5, h5, .h5 { font-size: 1.04rem; line-height: 1.7; } .f6, h6, .h6 { font-size: 1rem; } .content h1 > a, .content .h1 > a { text-decoration: none; border-bottom: none; } @media screen and (max-width: 42em) { .content h1, .content .h1 { font-size: 1.7rem; line-height: 1.35; } } @media screen and (min-width: 86em) { .content h1, .content .h1 { font-size: 2.4rem; line-height: 1.25; } } @media screen and (min-width: 104rem) { body:not(.no-large-headings) .content h1, body:not(.no-large-headings) .content .h1 { width: calc(100% + 50vw - 32rem); font-size: 3rem; line-height: 1.2; } } @media screen and (min-width: 124em) { body:not(.no-large-headings) .content h1, body:not(.no-large-headings) .content .h1 { font-size: 4rem; line-height: 1.1; } } h1, h2, h3, .h1, .h2, .h3 { margin: 4rem 0 1rem; } h4, h5, h6, .h4, .post-date, .h5, .h6 { margin: 3rem 0 0.5rem; } p { margin-top: 0; margin-bottom: 1rem; } p.lead { font-size: 1.2em; margin-top: 1.5rem; margin-bottom: 1.5rem; padding: 0 1rem; } ul, ol, dl { margin-top: 0; margin-bottom: 1rem; } ul, ol { padding-left: 1.25rem; } hr, .hr { border: 0; margin: 1rem 0; border-top: 1px solid var(--border-color); } .hr-after::after { content: ""; display: block; margin: 1rem 0; border-top: 1px solid var(--border-color); } .hr-bottom { border-bottom: 1px solid var(--border-color); padding-bottom: 0.75rem; margin-bottom: 1rem; } .page { margin-bottom: 3em; } .page li + li { margin-top: 0.25rem; } .page > header { position: relative; margin-bottom: 2rem; } @media screen and (min-width: 104rem) { body:not(.no-third-column) .page > header > .lead + .note-sm, body:not(.no-third-column) .page > header > .lead + #markdown-toc, body:not(.no-third-column) .page > header > .lead + .note, body:not(.no-third-column) .page > header > a.no-hover + .note-sm, body:not(.no-third-column) .page > header > a.no-hover + #markdown-toc, body:not(.no-third-column) .page > header > a.no-hover + .note { position: absolute; right: -25rem; width: 21rem; bottom: 0; margin-bottom: 0; } } .page-title, .post-title { margin-top: 0; } .post-date { display: flex; justify-content: space-between; margin-top: -0.6rem; height: 2rem; margin-bottom: 0.85rem; color: var(--gray); } .post-date > .ellipsis, .post-date#breadcrumbs > ul { cursor: pointer; } .post-date [class^=icon-] { display: inline-block; font-size: smaller; margin-right: 0.25rem; } .related-posts { padding-left: 0; list-style: none; margin-bottom: 2rem; } .related-posts > li, .related-posts > li + li { margin-top: 1rem; } .message, .note-sm, #markdown-toc, .note { margin-bottom: 1rem; padding: 1rem; color: var(--gray-text); background-color: var(--gray-bg); margin-left: -1rem; margin-right: -1rem; } .note-sm, #markdown-toc, .note { background: transparent; color: var(--body-color); font-size: smaller; border-left: 1px solid var(--border-color); padding: 1.2rem 1rem 0 1rem; margin: 1rem -1rem; position: relative; } .note-sm:before, #markdown-toc:before, .note:before { font-size: 0.667rem; font-weight: bold; font-style: normal; letter-spacing: 0.025rem; text-transform: uppercase; color: var(--menu-text); position: absolute; top: 0; } .note-sm[title]:before, [title]#markdown-toc:before, [title].note:before { content: attr(title) !important; } .note { font-size: 1rem; } @media screen { body::before { content: ""; width: 0.5rem; background: var(--gray-bg); position: fixed; left: 0; top: 0; bottom: 0; } } @media (min-width: 64em) { body::before { width: 21rem; } } @media (min-width: 104rem) { body::before { width: calc(50% - 31rem); } } @media screen and (min-width: 42em) { html { font-size: var(--root-font-size-medium); } } @media screen and (min-width: 124em) { html { font-size: var(--root-font-size-large); } } #breadcrumbs > ul { height: 1rem; margin: -1.5rem 0 0.5rem; padding: 0; font-size: 0.667rem; color: var(--menu-text); text-transform: uppercase; width: 100%; list-style: none; } #breadcrumbs > ul > li { display: inline; } #breadcrumbs > ul > li a { color: var(--gray); text-decoration: none; border-bottom: none; } .fl { float: left; } .fr { float: right; } .mb4 { margin-bottom: 4rem; } .mb6 { margin-bottom: 6rem; } .mt0 { margin-top: 0; } .mt1 { margin-top: 1rem; } .mt2 { margin-top: 2rem; } .mt3 { margin-top: 3rem; } .mt4 { margin-top: 4rem; } .pb0 { padding-bottom: 0; } .ml1 { margin-left: 1rem; } .mr1 { margin-right: 1rem; } .sixteen-nine { position: relative; } .sixteen-nine::before { display: block; content: ""; width: 100%; padding-top: 56.25%; } .sixteen-nine > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .sixteen-ten { position: relative; } .sixteen-ten::before { display: block; content: ""; width: 100%; padding-top: 62.5%; } .sixteen-ten > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .four-three { position: relative; } .four-three::before { display: block; content: ""; width: 100%; padding-top: 75%; } .four-three > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .sr-only { display: none; } .larger { font-size: larger; } .smaller { font-size: smaller; } .clearfix, .sidebar-social::after { content: ""; display: table; clear: both; } .ellipsis, #breadcrumbs > ul { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .border { border: 1px solid var(--border-color); } @media (min-width: 42em) { .border-radius, .lead, .page .aspect-ratio.sixteen-nine.lead { border-radius: 0.5rem; } } .fallback-img { background-position: center; background-repeat: no-repeat; background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjkwIiB2aWV3Qm94PSIwIDAgMTYwIDkwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDQ4ODI4LCAwLCAwLCAwLjA0Nzk5MSwgNTQuOTk5OTczLCAyMC40MjgxNDgpIj4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOnJnYmEoMTI4LDEyOCwxMjgsLjMzKSIgZD0iTTk1OS44ODQgMTI4YzAuMDQwIDAuMDM0IDAuMDgyIDAuMDc2IDAuMTE2IDAuMTE2djc2Ny43N2MtMC4wMzQgMC4wNDAtMC4wNzYgMC4wODItMC4xMTYgMC4xMTZoLTg5NS43N2MtMC4wNDAtMC4wMzQtMC4wODItMC4wNzYtMC4xMTQtMC4xMTZ2LTc2Ny43NzJjMC4wMzQtMC4wNDAgMC4wNzYtMC4wODIgMC4xMTQtMC4xMTRoODk1Ljc3ek05NjAgNjRoLTg5NmMtMzUuMiAwLTY0IDI4LjgtNjQgNjR2NzY4YzAgMzUuMiAyOC44IDY0IDY0IDY0aDg5NmMzNS4yIDAgNjQtMjguOCA2NC02NHYtNzY4YzAtMzUuMi0yOC44LTY0LTY0LTY0djB6Ii8+CiAgICA8cGF0aCBzdHlsZT0iZmlsbDpyZ2JhKDEyOCwxMjgsMTI4LC4zMykiIGQ9Ik04MzIgMjg4YzAgNTMuMDIwLTQyLjk4IDk2LTk2IDk2cy05Ni00Mi45OC05Ni05NiA0Mi45OC05NiA5Ni05NiA5NiA0Mi45OCA5NiA5NnoiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOnJnYmEoMTI4LDEyOCwxMjgsLjMzKSIgZD0iTTg5NiA4MzJoLTc2OHYtMTI4bDIyNC0zODQgMjU2IDMyMGg2NGwyMjQtMTkyeiIvPgogIDwvZz4KPC9zdmc+"); } hy-push-state a { color: var(--body-color); } @supports not ((text-decoration-thickness: initial) and (text-underline-offset: initial)) { hy-push-state a { text-decoration: none; border-bottom: 2px solid; } } @supports (text-decoration-thickness: initial) and (text-underline-offset: initial) { hy-push-state a { text-decoration-style: solid; text-underline-offset: 0.35rem; text-decoration-thickness: 2px; } } hy-push-state a.no-hover { border-bottom: none; text-decoration-thickness: unset; text-underline-offset: unset; } @supports (text-decoration-thickness: initial) and (text-underline-offset: initial) { .content a:not(.btn):not(.no-hover) { text-decoration-color: var(--accent-color-faded); } } .content a:not(.btn):not(.no-hover) { border-color: var(--accent-color-faded); } .content .aspect-ratio { overflow: hidden; } .content .aspect-ratio img { margin: 0; width: 100%; height: 100%; background-color: var(--gray-bg); } hy-drawer { width: 100%; position: relative; overflow: hidden; display: block; z-index: 4; } @media screen and (min-width: 64em) { hy-drawer { position: fixed; width: 21rem; top: 0; left: 0; bottom: 0; margin-left: 0; } hy-drawer.cover { position: relative; width: 100%; } } @media screen and (min-width: 104rem) { hy-drawer { width: calc(50% - 31rem); } } .sidebar { position: relative; display: flex; justify-content: center; align-items: center; color: rgba(255, 255, 255, 0.75); text-align: center; min-height: 100vh; } .sidebar.invert { color: rgba(32, 32, 32, 0.75); } .sidebar a { color: #fff; border-bottom-color: rgba(255, 255, 255, 0.2); text-decoration-color: rgba(255, 255, 255, 0.2); } .sidebar.invert a { color: #222; border-bottom-color: rgba(32, 32, 32, 0.2); text-decoration-color: rgba(32, 32, 32, 0.2); } .sidebar-bg { position: absolute; top: 0; left: calc(50% - 50vw); width: 100vw; height: 100%; background: #202020 center/cover; } .sidebar-bg::after { content: ""; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: rgba(0, 0, 0, 0.05); } .sidebar-bg.sidebar-overlay::after { background: linear-gradient(to bottom, rgba(32, 32, 32, 0) 0%, rgba(32, 32, 32, 0.5) 50%, rgba(32, 32, 32, 0) 100%); } .sidebar-sticky { position: relative; z-index: 3; max-width: 21rem; padding: 1.5rem; contain: content; } .sidebar-about .avatar { margin-bottom: 1.5rem; } .sidebar-about > a.sidebar-title { text-decoration: none; } .sidebar-about > a.sidebar-title > h2 { margin: 0; padding-bottom: 0.5rem; } .sidebar-about > a.sidebar-title::after { content: ""; display: block; border-bottom: 2px solid; margin: 0 auto 0.5rem; width: 4rem; border-color: rgba(255, 255, 255, 0.2); transition: border-color 250ms; } .sidebar-about > a.sidebar-title:hover::after { border-color: rgb(255, 255, 255); transition: border-color 50ms; } .sidebar.invert .sidebar-about > a.sidebar-title::after { border-color: rgba(32, 32, 32, 0.2); } .sidebar.invert .sidebar-about > a.sidebar-title:hover::after { border-color: #222; } .sidebar-nav > ul { list-style: none; padding-left: 0; } .sidebar-nav-item { display: inline-block; margin-bottom: 0.5rem; } @media (min-width: 64em) { #_main.no-drawer #_menu { display: none; } #_main.no-drawer .nav-btn-bar > :nth-child(2) { border: none; } } .sidebar-social > ul { display: inline-block; list-style: none; padding-left: 0; margin-bottom: 0; } .sidebar-social > ul > li { float: left; } .sidebar-social > ul > li > a { display: inline-block; text-align: center; font-size: 1.4rem; width: 3rem; height: 4rem; padding: 0.5rem 0; line-height: 3rem; text-decoration: none; border-bottom-width: 2px; border-bottom-style: solid; } .sidebar-social > ul li + li { margin-top: 0; } .fixed-common, .fixed-bottom, .fixed-top { position: fixed; left: 0; width: 100%; z-index: 2; } .fixed-top { top: 0; } .fixed-bottom { bottom: 0; } .navbar > .content { position: relative; padding-top: 0; padding-bottom: 0; min-height: 0; max-height: 5rem; } .nav-btn-bar { margin: 0 -1rem; background-color: white; background-color: var(--body-bg); height: 5rem; display: flex; align-items: center; position: relative; } .nav-btn-bar > :first-child, .nav-btn-bar > :last-child { border: none; } .nav-btn { background: none; border: none; text-decoration: none; display: flex; align-items: center; justify-content: center; width: 3.25rem; height: 5rem; color: var(--menu-text); border-right: 1px solid var(--border-color); border-left: 1px solid var(--border-color); margin-left: -1px; } #markdown-toc { margin: 2rem -1rem 2rem calc(-1rem + 1px); padding-left: 2.5rem; padding-bottom: 0.5rem; } #markdown-toc:before { left: 1rem; } @media screen and (min-width: 104rem) { body:not(.no-toc) #markdown-toc { position: absolute; z-index: 4; width: 20.5rem; right: 0; margin: auto; overflow: auto; } } @media screen and (min-width: 104rem) { body.no-break-layout:not(.no-toc) #markdown-toc { width: calc(50% - 31rem); } } .content { margin-left: auto; margin-right: auto; padding: 8rem 1rem 12rem; } @media screen { .content { padding-left: 1.5rem; min-height: 100vh; } } @media screen and (min-width: 42em) { .content { max-width: 42rem; } } @media screen and (min-width: 54em) { .content { max-width: 48rem; } } @media screen and (min-width: 64em) { .content { padding-left: 1rem; margin-left: 24rem; margin-right: 3rem; } } @media screen and (min-width: 86em) { .content { padding-top: 9rem; margin-left: 25rem; margin-right: 4rem; max-width: 54rem; } } @media screen and (min-width: 104rem) { .content { margin: auto; } } .large-only { display: none; } @media screen and (min-width: 104rem) { .large-only { display: block; } } .avatar { width: 7rem; height: 7rem; border-radius: 100%; overflow: hidden; display: inline-block; } .avatar img { width: 100%; } .content .avatar { float: right; box-sizing: content-box; border: 1rem solid var(--body-bg); transition: border-color 1s ease; margin-top: -1.5rem; margin-right: -1rem; } .note:before { content: "Note"; } .page > header > .note-sm:before, .page > header > .note:before, .page > header > #markdown-toc:before { content: "Description"; } #markdown-toc:before { content: "Table of Contents"; } .layout-resume .note-sm:before, .layout-resume .note:before, .layout-resume #markdown-toc:before { content: "Summary"; } </style> <link rel="preload" as="style" href="/assets/css/hydejack-9.2.1.css" id="_stylePreload"> <link rel="preload" as="style" href="/assets/icomoon/style.css" id="_iconsPreload"> <script> setRel('_stylePreload'); setRel('_iconsPreload'); /**/ </script> <noscript> <link rel="stylesheet" href="/assets/css/hydejack-9.2.1.css"> <link rel="stylesheet" href="/assets/icomoon/style.css"> </noscript> <style id="_pageStyle"> html { --accent-color: rgb(79,177,186); --accent-color-faded: rgba(79, 177, 186, 0.5); --accent-color-highlight: rgba(79, 177, 186, 0.1); --accent-color-darkened: rgb(63.8602040816, 154.5602040816, 162.8897959184); --theme-color: rgb(25,55,71); --dark-mode-body-bg: hsl(200.8695652174, 5.9895833333%, 17.5%); --dark-mode-border-color: hsl(200.8695652174, 5.9895833333%, 22.5%); } </style> <!--<![endif]--> </head> <body class="dark-mode no-break-layout"> <hy-push-state id="_pushState" replace-selector="#_main" link-selector="a[href]:not([href^='/assets/']):not(.external):not(.no-push-state)" script-selector="script" duration="500" hashchange > <div id="_navbar" class="navbar fixed-top"> <div class="content"> <span class="sr-only">Jump to:</span> <div class="nav-btn-bar"> <a id="_menu" class="nav-btn no-hover" href="#_drawer--opened"> <span class="sr-only">Navigation</span> <span class="icon-menu"></span> </a> <div class="nav-span"></div> </div> </div> </div> <hr class="sr-only" hidden /> <main id="_main" class="content layout-page" role="main" > <nav id="breadcrumbs" class="screen-only"><ul> <li><a href="/">home</a></li> <li> <span>/</span> <a href="/assets/">assets</a> </li> <li> <span>/</span> <a href="/assets/css/">css</a> </li> <li> <span>/</span> <span>hydejack-9.2.1.css</span> </li> </ul></nav> <article class="page mb6" role="article"> <header> <h1 class="page-title"></h1> <div class="hr pb0"></div> </header> /*! * __ __ __ __ * /\ \/\ \ /\ \ __ /\ \ * \ \ \_\ \ __ __ \_\ \ __ /\_\ __ ___ \ \ \/'\ * \ \ _ \ /\ \/\ \ /'_` \ /'__`\ \/\ \ /'__`\ /'___\\ \ , < * \ \ \ \ \\ \ \_\ \ /\ \L\ \ /\ __/ \ \ \ /\ \L\.\_ /\ \__/ \ \ \\`\ * \ \_\ \_\\/`____ \\ \___,_\\ \____\ _\ \ \\ \__/.\_\\ \____\ \ \_\ \_\ * \/_/\/_/ `/___/> \\/__,_ / \/____//\ \_\ \\/__/\/_/ \/____/ \/_/\/_/ * /\___/ \ \____/ * \/__/ \/___/ * * Powered by Hydejack v9.2.1 <https://hydejack.com/> */ .clearfix { content: ""; display: table; clear: both; } .color-transition, .pagination, .pre-header-common, div.highlight > button, div.highlight > .pre-header, .figure-base, .pre-base, article .katex-display, article mjx-container[jax][display=true], pre, table:not(.rouge-table), code, .footnotes::before, table:not(.rouge-table) tbody tr:nth-child(odd) td, table:not(.rouge-table) tbody tr:nth-child(odd) th, table:not(.rouge-table) tbody tr:nth-child(even) td, table:not(.rouge-table) tbody tr:nth-child(even) th, table:not(.rouge-table) thead + tbody, table:not(.rouge-table) tbody + tbody, table:not(.rouge-table) tfoot, table:not(.rouge-table) thead, table:not(.rouge-table) td, table:not(.rouge-table) th, .faded, .figcaption, figure, .figure, .read-more, blockquote { transition: none; } #_dark-mode { font-size: 1.25rem; } @media screen { body, body.light-mode { --body-color: #333; --body-bg: #fff; --border-color: #ebebeb; --gray: #777; --gray-bg: rgba(0, 0, 0, 0.025); --gray-text: #666; --menu-text: #bbb; --inv-body-color: #ccc; --inv-body-bg: var(--dark-mode-body-bg); } body .content, body.light-mode .content { -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } body.dark-mode { --body-color: #ccc; --body-bg: var(--dark-mode-body-bg); --border-color: var(--dark-mode-border-color); --gray: rgba(255,255,255,.5); --gray-bg: rgba(255,255,255,.033); --gray-text: rgba(255,255,255,.625); --menu-text: rgba(255,255,255,.25); --inv-body-color: #333; --inv-body-bg: #fff; } body.dark-mode .content { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } } *, *::before, *::after { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -ms-overflow-style: scrollbar; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } @-ms-viewport { width: device-width; } article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section { display: block; } [tabindex="-1"]:focus { outline: none !important; } abbr[title], abbr[data-original-title] { text-decoration: underline; text-decoration: underline dotted; cursor: help; border-bottom: 0; } address { margin-bottom: 1rem; font-style: normal; line-height: inherit; } img { vertical-align: middle; border-style: none; } svg:not(:root) { overflow: hidden; } a, area, button, [role=button], input:not([type=range]), label, select, summary, textarea { touch-action: manipulation; } figure { margin: 0 0 1rem; } label { display: inline-block; margin-bottom: 0.25rem; } button:focus { outline: 1px dotted; outline: 5px auto -webkit-focus-ring-color; } input, button, select, optgroup, textarea { margin: 0; font-family: inherit; font-size: inherit; line-height: inherit; } button, input { overflow: visible; } button, select { text-transform: none; } button, html [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 { padding: 0; border-style: none; } input[type=radio], input[type=checkbox] { box-sizing: border-box; padding: 0; } input[type=date], input[type=time], input[type=datetime-local], input[type=month] { -webkit-appearance: listbox; } textarea { overflow: auto; resize: vertical; } fieldset { min-width: 0; padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; max-width: 100%; padding: 0; margin-bottom: 0.5rem; font-size: 1.5rem; line-height: inherit; color: inherit; white-space: normal; } progress { vertical-align: baseline; } [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { height: auto; } [type=search] { outline-offset: -2px; -webkit-appearance: none; } [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration { -webkit-appearance: none; } ::-webkit-file-upload-button { font: inherit; -webkit-appearance: button; } output { display: inline-block; } summary { display: list-item; } template { display: none; } [hidden] { display: none !important; } @media (display-mode: standalone) { body { overscroll-behavior-y: contain; } } :focus { outline-color: var(--accent-color) !important; } ::selection { background: var(--accent-color-faded); } .heading, .tippy-content a, .f6, .f5, .f4, .f3, .f2, .f1 { font-family: var(--font-family-heading); font-weight: var(--font-weight-heading); } .f1 { font-size: 2rem; line-height: 1.3; } .f2 { font-size: 1.5rem; line-height: 1.4; } .f3 { font-size: 1.2em; line-height: 1.5; } .f4 { font-size: 1.08rem; line-height: 1.6; } .f5 { font-size: 1.04rem; line-height: 1.7; } .f6 { font-size: 1rem; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .heading, .tippy-content a, .f1, .f2, .f3, .f4, .f5, .f6 { text-rendering: optimizeLegibility; } h1 + h2, .h1 + .h2, h1 + .h2, .h1 + h2, h2 + h3, .h2 + .h3, h2 + .h3, .h2 + h3, h3 + h4, .h3 + .h4, h3 + .h4, .h3 + h4, h4 + h5, .h4 + .h5, h4 + .h5, .h4 + h5, h5 + h6, .h5 + .h6, h5 + .h6, .h5 + h6 { margin-top: 0; } dt, strong { font-weight: var(--font-weight-bold); } dt:after { content: " :"; color: var(--menu-text); } dd { margin-bottom: 0.5rem; } abbr { font-size: 85%; font-weight: var(--font-weight-bold); text-transform: uppercase; } abbr[title] { cursor: help; border-bottom: 1px dotted var(--border-color); } blockquote { padding: 0.5rem 1rem; margin: 0.8rem 0; color: var(--gray); border-left: 0.25rem solid var(--border-color); } blockquote.lead { font-size: 1.2em; margin-top: 1.5rem; margin-bottom: 1.5rem; border-left-width: 0.4rem; } blockquote > p:last-child { margin-bottom: 0; } .heading, .tippy-content a, .f1, .f2, .f3, .f4, .f5, .f6 { font-weight: var(--font-weight-heading); } .fine, .figcaption, figure, .figure, .smaller { font-size: smaller; } .faded, .figcaption, figure, .figure, .read-more { color: var(--gray); } .centered, .figcaption, figure, .figure { text-align: center; } h1[id], h2[id], h3[id], h4[id], h5[id], h6[id] { position: relative; } h1[id] > .permalink, h2[id] > .permalink, h3[id] > .permalink, h4[id] > .permalink, h5[id] > .permalink, h6[id] > .permalink { text-decoration: none; border: none; opacity: 0; transition: opacity 400ms; } @media print { h1[id] > .permalink, h2[id] > .permalink, h3[id] > .permalink, h4[id] > .permalink, h5[id] > .permalink, h6[id] > .permalink { display: none; } } h1[id]:hover > .permalink, h2[id]:hover > .permalink, h3[id]:hover > .permalink, h4[id]:hover > .permalink, h5[id]:hover > .permalink, h6[id]:hover > .permalink { opacity: 0.5; } h1[id] > .permalink:hover, h1[id] > .permalink:focus, h2[id] > .permalink:hover, h2[id] > .permalink:focus, h3[id] > .permalink:hover, h3[id] > .permalink:focus, h4[id] > .permalink:hover, h4[id] > .permalink:focus, h5[id] > .permalink:hover, h5[id] > .permalink:focus, h6[id] > .permalink:hover, h6[id] > .permalink:focus { opacity: 1; transition: opacity 200ms; } .content-hash::before { content: "#"; } .content-json::before { content: "{}"; } @media print { h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, dt { page-break-inside: avoid; break-inside: avoid-page; page-break-after: avoid; break-after: avoid-page; } } table:not(.rouge-table) { border-collapse: collapse; border-radius: 0 !important; display: block; margin-bottom: 1.5rem; } table:not(.rouge-table) td, table:not(.rouge-table) th { padding: 0.5em 0.75em; } table:not(.rouge-table) td:first-child, table:not(.rouge-table) th:first-child { padding-left: 1rem; border-left: 1px solid var(--border-color); } table:not(.rouge-table) td:last-child, table:not(.rouge-table) th:last-child { padding-right: 1rem; border-right: 1px solid var(--border-color); } table:not(.rouge-table) > *:first-child { border-top: 1px solid var(--border-color); } table:not(.rouge-table) > *:last-child { border-bottom: 1px solid var(--border-color); } table:not(.rouge-table) thead { background-color: var(--body-bg); } table:not(.rouge-table) thead + tbody, table:not(.rouge-table) tbody + tbody, table:not(.rouge-table) tfoot { border-top: 1px solid var(--border-color); } table:not(.rouge-table) tbody tr:nth-child(even) td, table:not(.rouge-table) tbody tr:nth-child(even) th { background-color: var(--body-bg); } table:not(.rouge-table) tbody tr:nth-child(odd) td, table:not(.rouge-table) tbody tr:nth-child(odd) th { background-color: var(--gray-bg); } table.stretch-table { display: table; width: 100% !important; width: calc(100% + 2em) !important; } table.scroll-table { white-space: nowrap; } table.flip-table { display: flex; overflow: hidden; } table.flip-table thead, table.flip-table tbody { display: flex; } table.flip-table thead { flex-shrink: 0; min-width: min-content; border-left: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); } table.flip-table thead th { padding-left: 1em; } table.flip-table tbody { position: relative; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; } table.flip-table tr { display: flex; flex-direction: column; min-width: min-content; flex-shrink: 0; } table.flip-table tr:last-child { border-right: 1px solid var(--border-color); } table.flip-table tr:last-child td { padding-right: 1em; } table.flip-table td, table.flip-table th { display: block; } table.flip-table td:first-child, table.flip-table th:first-child { padding-left: 0.5em; border-left: none; } table.flip-table td:last-child, table.flip-table th:last-child { padding-right: 0.5em; border-right: none; } @media screen and (max-width: 72em) { table.scroll-table-small { white-space: nowrap; } table.flip-table-small { display: flex; overflow: hidden; } table.flip-table-small thead, table.flip-table-small tbody { display: flex; } table.flip-table-small thead { flex-shrink: 0; min-width: min-content; border-left: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); } table.flip-table-small thead th { padding-left: 1em; } table.flip-table-small tbody { position: relative; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; } table.flip-table-small tr { display: flex; flex-direction: column; min-width: min-content; flex-shrink: 0; } table.flip-table-small tr:last-child { border-right: 1px solid var(--border-color); } table.flip-table-small tr:last-child td { padding-right: 1em; } table.flip-table-small td, table.flip-table-small th { display: block; } table.flip-table-small td:first-child, table.flip-table-small th:first-child { padding-left: 0.5em; border-left: none; } table.flip-table-small td:last-child, table.flip-table-small th:last-child { padding-right: 0.5em; border-right: none; } } @media print { table:not(.rouge-table) { width: 100% !important; } } footer { margin-bottom: 2rem; } a[href^="#fn:"], a[href^="#fnref:"] { margin-left: 0.1rem; font-weight: var(--font-weight-bold); } @media screen and (max-width: 72em) { a[href^="#fn:"], a[href^="#fnref:"] { font-weight: normal; } a[href^="#fn:"]::before, a[href^="#fnref:"]::before { content: "["; } a[href^="#fn:"]::after, a[href^="#fnref:"]::after { content: "]"; } } sup { line-height: 1; } @media screen and (max-width: 72em) { sup[id^=fnref] { vertical-align: baseline; font-size: inherit; } } .footnotes { margin-top: 5rem; margin-bottom: 5rem; } .footnotes > ol { color: var(--gray); } .footnotes > ol > li { padding: 0.5rem; margin-left: 0.5rem; } .footnotes > ol > li > p { margin: 0; } .footnotes > ol > li:focus { outline: none; color: var(--gray-text); background: var(--gray-bg); } .footnotes::before { content: ""; display: block; margin: 1rem 0; border: 0; border-top: 1px solid var(--border-color); } code, pre { font-family: var(--code-font-family); } code { padding: 0.25em 0.5em; background-color: var(--gray-bg); font-size: smaller; } .figure-base, div.highlight > .pre-header, .pre-base, article .katex-display, article mjx-container[jax][display=true], pre, table:not(.rouge-table) { margin-left: -1rem; margin-right: -1rem; overflow-x: auto; -webkit-overflow-scrolling: touch; } @media (min-width: 42em) { .figure-base, div.highlight > .pre-header, .pre-base, article .katex-display, article mjx-container[jax][display=true], pre, table:not(.rouge-table) { border-radius: 0.5rem; } } .pre-base, article .katex-display, article mjx-container[jax][display=true], pre { padding: 1rem; margin-bottom: 1.5rem; background-color: var(--gray-bg); backface-visibility: hidden; } @media print { .pre-base, article .katex-display, article mjx-container[jax][display=true], pre { width: 100% !important; page-break-inside: avoid; break-inside: avoid-page; } } pre { margin-top: 0; display: block; font-size: 0.83em; line-height: 1.5em; position: relative; } pre > code { display: inline-block; position: relative; min-width: 100%; padding: 0; color: inherit; background-color: transparent; font-size: 1em; } .pre-header-common, div.highlight > button, div.highlight > .pre-header { height: 2rem; border: none; border-bottom: 1px solid var(--border-color); border-bottom-left-radius: 0; border-bottom-right-radius: 0; } div.highlight { position: relative; } div.highlight > .pre-header { display: block; color: var(--gray) !important; background-color: var(--gray-bg); overflow: clip; } div.highlight > .pre-header > span { font-size: smaller; } div.highlight > .pre-header > * { display: inline-block; padding: 0.3rem 1rem 0.2rem; } div.highlight > button { position: absolute; top: 0; right: -1rem; color: var(--menu-text); background: none; border-left: 1px solid var(--border-color); border-right: 1px solid var(--border-color); border-top-left-radius: 0; padding-left: 1rem; padding-right: 1rem; overflow: hidden; cursor: pointer; opacity: 0; transition: opacity 300ms; } div.highlight > button:hover { background: var(--gray-bg); } div.highlight > button.copy-success > .icon-copy { animation-name: icon-copy; animation-duration: 1.5s; animation-timing-function: ease; } div.highlight > button.copy-success > .icon-checkmark { animation-name: icon-checkmark; animation-duration: 1.5s; animation-timing-function: ease; } div.highlight > button > .icon-copy { display: inline-block; } div.highlight > button > .icon-checkmark { position: absolute; top: 50%; margin-top: -3em; left: 0; right: 0; text-align: center; } div.highlight:hover > button { opacity: 1; transition: opacity 100ms; } div.highlight > .pre-header ~ pre.highlight { border-top-left-radius: 0; border-top-right-radius: 0; padding-top: 0.65rem; } div.highlight > .pre-header ~ button { opacity: 1; } body.no-break-layout div.highlight > button { border-right: none; } @keyframes icon-checkmark { 0% { transform: translateY(0); } 15%, 85% { transform: translateY(2.5em); } 100% { transform: translateY(5em); } } @keyframes icon-copy { 0% { transform: translateY(0); } 15% { transform: translateY(2.5em); } 15.01%, 85% { transform: translateY(-2.5em); } 100% { transform: translateY(0); } } clap-button { margin-left: auto; margin-right: auto; --clap-button-color: var(--accent-color); } clap-button + p.message { margin: -2rem auto 0; max-width: 32rem; font-size: smaller; } hr.dingbat { border: 0; } hr.dingbat:after { content: "❖"; display: block; text-align: center; font-size: 1.5rem; color: var(--menu-text); } @media print { .page { margin-bottom: 0; } } @media print { .comments { display: none; } } .read-more { margin-top: 1.5rem; margin-bottom: 3rem; text-align: right; } .read-more::after { content: " →"; font-family: "icomoon" !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; font-size: smaller; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .pagination { width: calc(100% + 2rem); margin: 0 -1rem 1rem; color: var(--gray); text-align: center; } .pagination > ul { list-style: none; padding: 0; } .pagination-item > * { display: block; padding: 0.25rem 1rem; border: solid var(--border-color); border-width: 1px 0; transition: border-color 1s ease; } .pagination-item > a, .pagination-item > a:hover, .pagination-item > a:focus { border-color: var(--border-color) !important; text-decoration: none; } .pagination-item:first-child > * { margin-bottom: -1px; } .pagination-item > a:hover, .pagination-item > a:focus { background-color: var(--gray-bg); border-bottom: 1px solid var(--border-color); } @media (min-width: 23.5em) { .pagination { width: 100%; margin: 3rem 0; } .pagination-item > * { float: left; width: 50%; border-width: 1px; } .pagination-item:first-child > * { margin-bottom: 0; border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } .pagination-item:last-child > * { margin-left: -1px; border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem; } } body { /* Prevent side-scrolling on mobile */ display: block; position: relative; overflow-x: hidden; } hy-push-state, hy-drawer { display: block; overflow: hidden; } @media print { html { font-size: var(--root-font-size-print); } } @page { margin: 16mm; } .fl { float: left; } .fr { float: right; } .mb4 { margin-bottom: 4rem; } .mb6 { margin-bottom: 6rem; } .mt0 { margin-top: 0; } .mt1 { margin-top: 1rem; } .mt2 { margin-top: 2rem; } .mt3 { margin-top: 3rem; } .mt4 { margin-top: 4rem; } .pb0 { padding-bottom: 0; } .ml1 { margin-left: 1rem; } .mr1 { margin-right: 1rem; } .sixteen-nine { position: relative; } .sixteen-nine::before { display: block; content: ""; width: 100%; padding-top: 56.25%; } .sixteen-nine > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .sixteen-ten { position: relative; } .sixteen-ten::before { display: block; content: ""; width: 100%; padding-top: 62.5%; } .sixteen-ten > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .four-three { position: relative; } .four-three::before { display: block; content: ""; width: 100%; padding-top: 75%; } .four-three > * { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } .sr-only { display: unset; position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } .larger { font-size: larger; } .smaller { font-size: smaller; } .clearfix { content: ""; display: table; clear: both; } .ellipsis { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .border { transition: border-color 1s ease; } @media (min-width: 42em) { .border-radius { border-radius: 0.5rem; } } .fallback-img { background-position: center; background-repeat: no-repeat; background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjkwIiB2aWV3Qm94PSIwIDAgMTYwIDkwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMDQ4ODI4LCAwLCAwLCAwLjA0Nzk5MSwgNTQuOTk5OTczLCAyMC40MjgxNDgpIj4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOnJnYmEoMTI4LDEyOCwxMjgsLjMzKSIgZD0iTTk1OS44ODQgMTI4YzAuMDQwIDAuMDM0IDAuMDgyIDAuMDc2IDAuMTE2IDAuMTE2djc2Ny43N2MtMC4wMzQgMC4wNDAtMC4wNzYgMC4wODItMC4xMTYgMC4xMTZoLTg5NS43N2MtMC4wNDAtMC4wMzQtMC4wODItMC4wNzYtMC4xMTQtMC4xMTZ2LTc2Ny43NzJjMC4wMzQtMC4wNDAgMC4wNzYtMC4wODIgMC4xMTQtMC4xMTRoODk1Ljc3ek05NjAgNjRoLTg5NmMtMzUuMiAwLTY0IDI4LjgtNjQgNjR2NzY4YzAgMzUuMiAyOC44IDY0IDY0IDY0aDg5NmMzNS4yIDAgNjQtMjguOCA2NC02NHYtNzY4YzAtMzUuMi0yOC44LTY0LTY0LTY0djB6Ii8+CiAgICA8cGF0aCBzdHlsZT0iZmlsbDpyZ2JhKDEyOCwxMjgsMTI4LC4zMykiIGQ9Ik04MzIgMjg4YzAgNTMuMDIwLTQyLjk4IDk2LTk2IDk2cy05Ni00Mi45OC05Ni05NiA0Mi45OC05NiA5Ni05NiA5NiA0Mi45OCA5NiA5NnoiLz4KICAgIDxwYXRoIHN0eWxlPSJmaWxsOnJnYmEoMTI4LDEyOCwxMjgsLjMzKSIgZD0iTTg5NiA4MzJoLTc2OHYtMTI4bDIyNC0zODQgMjU2IDMyMGg2NGwyMjQtMTkyeiIvPgogIDwvZz4KPC9zdmc+"); } hy-push-state a { transition: color 250ms, text-decoration-color 250ms, border-color 250ms; } hy-push-state a:hover { transition: color 50ms, text-decoration-color 50ms, border-color 50ms; } @supports (text-decoration-thickness: initial) and (text-underline-offset: initial) { .content a:not(.btn):not(.no-hover):hover { text-decoration-color: var(--accent-color); } } .content a:not(.btn):not(.no-hover):hover { border-color: var(--accent-color); } a.btn { text-decoration: none; } @media print { a:not(.no-print-link)::after { content: " (" attr(href) ") "; color: var(--gray); font-size: 62%; } } .content .aspect-ratio img { object-fit: cover; object-position: center; } figure, .figure { margin-bottom: 2rem; } figure > *:first-child, .figure > *:first-child { margin-bottom: 1rem; } .highlighter-rouge + .figure { margin-top: -1.5rem; } .figcaption { margin-top: -0.5rem; margin-bottom: 2rem; } @media screen { hy-drawer { --hy-drawer-width: 100%; --hy-drawer-peek-width: .5rem; --hy-drawer-box-shadow: 0 0 1rem rgba(0, 0, 0, 0.25); } } @media screen and (min-width: 64em) { hy-drawer { --hy-drawer-peek-width: 21rem; } } @media screen and (min-width: 104rem) { hy-drawer { width: calc(50% - 31rem); --hy-drawer-peek-width: calc(50% - 31rem); } } @media screen { hy-drawer.loaded { position: static; } } .sidebar a:hover { border-bottom-color: #fff; text-decoration-color: #fff; } .sidebar.invert a:hover { border-bottom-color: #222; text-decoration-color: #222; } hy-drawer.loaded .sidebar { min-height: 100%; } .sidebar-bg.sidebar-overlay::after { background: -moz-linear-gradient(top, rgba(32, 32, 32, 0) 0%, rgba(32, 32, 32, 0.5) 50%, rgba(32, 32, 32, 0) 100%); background: -webkit-linear-gradient(top, rgba(32, 32, 32, 0) 0%, rgba(32, 32, 32, 0.5) 50%, rgba(32, 32, 32, 0) 100%); } @media print { .sidebar { display: none; } } #_swipe { position: absolute; z-index: 4; opacity: 0.33; top: 5vw; right: 5vw; transform: scale(0.67); } @media screen and (min-width: 42em) { #_swipe { top: calc(50% - 48px); right: 10vw; transform: scale(1); } } @media print { .sidebar-social { display: none; } } .navbar > .content::before { content: ""; position: absolute; display: block; width: calc(100% - 6rem); height: 5rem; left: 3rem; margin: auto; box-shadow: 0 0 2rem rgba(0, 0, 0, 0.25); z-index: -1; } .navbar.fixed-top > .content::before { bottom: 1px; } .navbar.fixed-bottom > .content::before { top: 1px; } a.nav-btn, button.nav-btn { cursor: pointer; } a.nav-btn:hover, a.nav-btn:focus, button.nav-btn:hover, button.nav-btn:focus { background-image: linear-gradient(90deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05)); } .nav-span { flex: 1; } .animation-main { opacity: 0; pointer-events: none; } #_navbar { z-index: 3; background-color: var(--body-bg); } .navbar .loading { display: none; } @media print { .navbar { display: none; } } #markdown-toc { transition: opacity 300ms ease, transform 300ms ease, border-color 1s ease; } #markdown-toc:before { left: 1rem; } @media screen and (min-width: 104rem) { body:not(.no-toc) #markdown-toc { overscroll-behavior: contain; } body:not(.no-toc) #markdown-toc.toc-hide { opacity: 0; transform: translateX(-2rem); } body:not(.no-toc) #markdown-toc.toc-show { opacity: 1; transform: translateX(0); } body:not(.no-toc) #markdown-toc.affix { position: fixed; top: 1rem; max-height: calc(100vh - 1rem); } } @media print { .content { padding: 1rem; } } .large-only { display: none; } @media screen and (min-width: 104rem) { .large-only { display: block; } } .avatar { position: relative; z-index: 1; } article .katex-display, article mjx-container[jax][display=true] { padding: 2rem; } main > footer.content { position: absolute; bottom: 0; left: 0; right: 0; color: var(--gray); text-align: center; min-height: 0; padding-top: 0; padding-bottom: 2rem; } main > footer.content > p { margin-bottom: 0; } @media print { main > footer.content { display: none; } } @media screen { a.external::after, a[href*="://"]:not(.no-mark-external):not(.no-mark)::after, a.no-push-state:not(.no-mark-external):not(.no-mark)::after { content: " \ea7e"; font-family: "icomoon" !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; font-size: smaller; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: var(--menu-text); } } .loading > [class*=icon-] { display: inline-block; -webkit-animation: rotate 2s infinite linear both; animation: rotate 2s infinite linear both; -webkit-transform-origin: 50% 50%; -ms-transform-origin: 50% 50%; transform-origin: 50% 50%; } @-webkit-keyframes rotate { 0% { -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { -webkit-transform: rotateZ(360deg); transform: rotateZ(360deg); } } @keyframes rotate { 0% { -webkit-transform: rotateZ(0); transform: rotateZ(0); } 100% { -webkit-transform: rotateZ(360deg); transform: rotateZ(360deg); } } .tippy-box[data-animation=fade][data-state=hidden] { opacity: 0; } [data-tippy-root] { max-width: calc(100vw - 10px); } .tippy-box { position: relative; background-color: #333; color: white; border-radius: 4px; font-size: 14px; line-height: 1.4; outline: 0; transition-property: transform, visibility, opacity; } .tippy-box[data-placement^=top] > .tippy-arrow { bottom: 0; } .tippy-box[data-placement^=top] > .tippy-arrow::before { bottom: -7px; left: 0; border-width: 8px 8px 0; border-top-color: initial; transform-origin: center top; } .tippy-box[data-placement^=bottom] > .tippy-arrow { top: 0; } .tippy-box[data-placement^=bottom] > .tippy-arrow::before { top: -7px; left: 0; border-width: 0 8px 8px; border-bottom-color: initial; transform-origin: center bottom; } .tippy-box[data-placement^=left] > .tippy-arrow { right: 0; } .tippy-box[data-placement^=left] > .tippy-arrow::before { border-width: 8px 0 8px 8px; border-left-color: initial; right: -7px; transform-origin: center left; } .tippy-box[data-placement^=right] > .tippy-arrow { left: 0; } .tippy-box[data-placement^=right] > .tippy-arrow::before { left: -7px; border-width: 8px 8px 8px 0; border-right-color: initial; transform-origin: center right; } .tippy-box[data-inertia][data-state=visible] { transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11); } .tippy-arrow { width: 16px; height: 16px; color: #333; } .tippy-arrow::before { content: ""; position: absolute; border-color: transparent; border-style: solid; } .tippy-content { position: relative; padding: 5px 9px; z-index: 1; } [data-tippy-root] { --body-color: var(--inv-body-color); --body-bg: var(--inv-body-bg); } .tippy-box { color: var(--body-color) !important; background-color: var(--body-bg) !important; } .tippy-content { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif !important; font-weight: normal !important; } .tippy-content a { text-decoration: none; border: none; } .tippy-content a:after { color: var(--body-color) !important; } .tippy-arrow { color: var(--body-bg) !important; } .dark-mode .tippy-content { -webkit-font-smoothing: initial; -moz-osx-font-smoothing: initial; } .light-mode .tippy-content { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body .highlight, body pre.highlight { color: #383a42; } body .highlight .ge { font-style: italic; } body .highlight .gs { font-weight: 700; } body .highlight .ow { font-weight: 700; } body .highlight .n, body .highlight .nf, body .highlight .nn, body .highlight .o, body .highlight .p { color: #383a42; } body .highlight .c, body .highlight .c1, body .highlight .cm, body .highlight .cp, body .highlight .cs { color: #a0a1a7; font-style: italic; } body .highlight .sr, body .highlight .ss { color: #0184bc; } body .highlight .k, body .highlight .kc, body .highlight .kd, body .highlight .kn, body .highlight .kp, body .highlight .kr, body .highlight .kt { color: #a626a4; } body .highlight .l, body .highlight .ld, body .highlight .s, body .highlight .s1, body .highlight .s2, body .highlight .sb, body .highlight .sc, body .highlight .sd, body .highlight .se, body .highlight .sh, body .highlight .si, body .highlight .sx { color: #50a14f; } body .highlight .nt, body .highlight .nx, body .highlight .vi { color: #e45649; } body .highlight .il, body .highlight .m, body .highlight .mf, body .highlight .mh, body .highlight .mi, body .highlight .mo, body .highlight .na { color: #986801; } body .highlight .bp, body .highlight .nb, body .highlight .nc, body .highlight .nd, body .highlight .ne, body .highlight .ni, body .highlight .nl, body .highlight .no, body .highlight .nv, body .highlight .py, body .highlight .vc, body .highlight .vg { color: #c18401; } body .highlight .gd { color: #ff1414; } body .highlight .gi { color: #2db448; } body .highlight .w { color: #f8f8f2; } body .highlight .cpf { color: navy; } body .highlight .gu { color: #75715e; } body .highlight .lineno { color: #9d9d9f; user-select: none; } body .highlight .ln { color: #9d9d9f; user-select: none; } body .highlight .ln:after { content: " "; } body .highlight .hll { color: #383a42; background-color: #e5e5e6; } body .highlight .hl { color: #383a42; background-color: #e5e5e6; } body .highlight .language-json .w + .s2 { color: #e45649; } body .highlight .language-json .kc { color: #0184bc; } @media screen { body.light-mode .highlight, body.light-mode pre.highlight { color: #383a42; } body.light-mode .highlight .ge { font-style: italic; } body.light-mode .highlight .gs { font-weight: 700; } body.light-mode .highlight .ow { font-weight: 700; } body.light-mode .highlight .n, body.light-mode .highlight .nf, body.light-mode .highlight .nn, body.light-mode .highlight .o, body.light-mode .highlight .p { color: #383a42; } body.light-mode .highlight .c, body.light-mode .highlight .c1, body.light-mode .highlight .cm, body.light-mode .highlight .cp, body.light-mode .highlight .cs { color: #a0a1a7; font-style: italic; } body.light-mode .highlight .sr, body.light-mode .highlight .ss { color: #0184bc; } body.light-mode .highlight .k, body.light-mode .highlight .kc, body.light-mode .highlight .kd, body.light-mode .highlight .kn, body.light-mode .highlight .kp, body.light-mode .highlight .kr, body.light-mode .highlight .kt { color: #a626a4; } body.light-mode .highlight .l, body.light-mode .highlight .ld, body.light-mode .highlight .s, body.light-mode .highlight .s1, body.light-mode .highlight .s2, body.light-mode .highlight .sb, body.light-mode .highlight .sc, body.light-mode .highlight .sd, body.light-mode .highlight .se, body.light-mode .highlight .sh, body.light-mode .highlight .si, body.light-mode .highlight .sx { color: #50a14f; } body.light-mode .highlight .nt, body.light-mode .highlight .nx, body.light-mode .highlight .vi { color: #e45649; } body.light-mode .highlight .il, body.light-mode .highlight .m, body.light-mode .highlight .mf, body.light-mode .highlight .mh, body.light-mode .highlight .mi, body.light-mode .highlight .mo, body.light-mode .highlight .na { color: #986801; } body.light-mode .highlight .bp, body.light-mode .highlight .nb, body.light-mode .highlight .nc, body.light-mode .highlight .nd, body.light-mode .highlight .ne, body.light-mode .highlight .ni, body.light-mode .highlight .nl, body.light-mode .highlight .no, body.light-mode .highlight .nv, body.light-mode .highlight .py, body.light-mode .highlight .vc, body.light-mode .highlight .vg { color: #c18401; } body.light-mode .highlight .gd { color: #ff1414; } body.light-mode .highlight .gi { color: #2db448; } body.light-mode .highlight .w { color: #f8f8f2; } body.light-mode .highlight .cpf { color: navy; } body.light-mode .highlight .gu { color: #75715e; } body.light-mode .highlight .lineno { color: #9d9d9f; user-select: none; } body.light-mode .highlight .ln { color: #9d9d9f; user-select: none; } body.light-mode .highlight .ln:after { content: " "; } body.light-mode .highlight .hll { color: #383a42; background-color: #e5e5e6; } body.light-mode .highlight .hl { color: #383a42; background-color: #e5e5e6; } body.light-mode .highlight .language-json .w + .s2 { color: #e45649; } body.light-mode .highlight .language-json .kc { color: #0184bc; } } @media screen { body.dark-mode .highlight, body.dark-mode pre.highlight { color: #abb2bf; } body.dark-mode .highlight .ge { font-style: italic; } body.dark-mode .highlight .gs { font-weight: 700; } body.dark-mode .highlight .ow { font-weight: 700; } body.dark-mode .highlight .n, body.dark-mode .highlight .nf, body.dark-mode .highlight .nn, body.dark-mode .highlight .o, body.dark-mode .highlight .p { color: #abb2bf; } body.dark-mode .highlight .c, body.dark-mode .highlight .c1, body.dark-mode .highlight .cm, body.dark-mode .highlight .cp, body.dark-mode .highlight .cs { color: #5c6370; font-style: italic; } body.dark-mode .highlight .sr, body.dark-mode .highlight .ss { color: #56b6c2; } body.dark-mode .highlight .k, body.dark-mode .highlight .kc, body.dark-mode .highlight .kd, body.dark-mode .highlight .kn, body.dark-mode .highlight .kp, body.dark-mode .highlight .kr, body.dark-mode .highlight .kt { color: #c678dd; } body.dark-mode .highlight .l, body.dark-mode .highlight .ld, body.dark-mode .highlight .s, body.dark-mode .highlight .s1, body.dark-mode .highlight .s2, body.dark-mode .highlight .sb, body.dark-mode .highlight .sc, body.dark-mode .highlight .sd, body.dark-mode .highlight .se, body.dark-mode .highlight .sh, body.dark-mode .highlight .si, body.dark-mode .highlight .sx { color: #98c379; } body.dark-mode .highlight .nt, body.dark-mode .highlight .nx, body.dark-mode .highlight .vi { color: #e06c75; } body.dark-mode .highlight .il, body.dark-mode .highlight .m, body.dark-mode .highlight .mf, body.dark-mode .highlight .mh, body.dark-mode .highlight .mi, body.dark-mode .highlight .mo, body.dark-mode .highlight .na { color: #d19a66; } body.dark-mode .highlight .bp, body.dark-mode .highlight .nb, body.dark-mode .highlight .nc, body.dark-mode .highlight .nd, body.dark-mode .highlight .ne, body.dark-mode .highlight .ni, body.dark-mode .highlight .nl, body.dark-mode .highlight .no, body.dark-mode .highlight .nv, body.dark-mode .highlight .py, body.dark-mode .highlight .vc, body.dark-mode .highlight .vg { color: #e5c07b; } body.dark-mode .highlight .gd { color: #e05252; } body.dark-mode .highlight .gi { color: #43d08a; } body.dark-mode .highlight .w { color: #f8f8f2; } body.dark-mode .highlight .cpf { color: navy; } body.dark-mode .highlight .gu { color: #75715e; } body.dark-mode .highlight .lineno { color: #636d83; user-select: none; } body.dark-mode .highlight .ln { color: #636d83; user-select: none; } body.dark-mode .highlight .ln:after { content: " "; } body.dark-mode .highlight .hll { color: #abb2bf; background-color: #3a3f4b; } body.dark-mode .highlight .hl { color: #abb2bf; background-color: #3a3f4b; } body.dark-mode .highlight .language-json .w + .s2 { color: #e06c75; } body.dark-mode .highlight .language-json .kc { color: #56b6c2; } } </article> <hr class="dingbat related mb6" /> </main> <hy-drawer id="_drawer" class="" side="left" threshold="10" noscroll > <header id="_sidebar" class="sidebar" role="banner"> <div class="sidebar-bg sidebar-overlay" style="background-color:rgb(25,55,71);background-image:url(/img/path.jpg)"></div> <div class="sidebar-sticky"> <div class="sidebar-about"> <a class="sidebar-title" href="/"><h2 class="h1">Action is character manifested</h2></a> <p class=""> Taking inquisitive and augmenting it with python to learn about the world. </p> </div> <nav class="sidebar-nav heading" role="navigation"> <span class="sr-only">Navigation:</span> <ul> <li> <a id="_drawer--opened" href="/" class="sidebar-nav-item " > Blog </a> </li> <li> <a href="/archive/" class="sidebar-nav-item " > Archive </a> </li> <li> <a href="/aboutme/" class="sidebar-nav-item " > About </a> </li> </ul> </nav> <div class="sidebar-social"> <span class="sr-only">Social</span> <ul> <li> <a href="mailto:AgustinVargas@ProtonMail.com" title="Email" class="no-mark-external"> <span class="icon-mail"></span> <span class="sr-only">Email</span> </a> </li> </ul> </div> </div> </header> </hy-drawer> <hr class="sr-only" hidden /> </hy-push-state> <!--[if gt IE 10]><!----> <script nomodule>(()=>{var t,n=document.createElement("script");!("noModule"in n)&&"onbeforeload"in n&&(t=!1,document.addEventListener("beforeload",function(e){if(e.target===n)t=!0;else if(!e.target.hasAttribute("nomodule")||!t)return;e.preventDefault()},!0),n.type="module",n.src=".",document.head.appendChild(n),n.remove())})(); </script> <script src="/assets/js/hydejack-9.2.1.js" type="module"></script> <script src="/assets/js/LEGACY-hydejack-9.2.1.js" nomodule defer></script> <!--<![endif]--> <div hidden> <h2 class="sr-only">Templates:</h2> <template id="_animation-template"> <div class="animation-main fixed-top"> <nav id="breadcrumbs" class="screen-only"><ul> </ul></nav> <div class="content"> <div class="page"></div> </div> </div> </template> <template id="_loading-template"> <div class="loading nav-btn fr"> <span class="sr-only">Loading…</span> <span class="icon-cog"></span> </div> </template> <template id="_error-template"> <div class="page"> <h1 class="page-title">Error</h1> <p class="lead"> Sorry, an error occurred while loading: <a class="this-link" href=""></a>. </p> </div> </template> <template id="_permalink-template"> <a href="#" class="permalink"> <span class="sr-only">Permalink</span> <span class="content-hash"></span> </a> </template> </div> </body></html>
