- Scan ID:
- c6421462-f14b-4ab6-8c70-ed4489ad53c9Finished
- Submitted URL:
- https://programming-22.mooc.fi/
- Report Finished:
Links · 22 found
The outgoing links identified from the page
Link | Text |
---|---|
https://mooc.fi | MOOC.fi |
https://programming-23.mooc.fi/ | https://programming-23.mooc.fi/ |
https://www.helsinki.fi/en/admissions-and-education | admissions website |
https://study.cs.helsinki.fi/discord/join/ohjelmoinnin_mooc | this link |
https://youtu.be/AWkZLibDfg4 | Recording |
https://youtu.be/W1ybi4ZGaLY | Recording |
https://youtu.be/Xqb_SnPETUY | Recording |
https://youtu.be/qmOpBRKzgZc | Recording |
https://youtu.be/X-XTcZuMj_k | Recording |
https://youtu.be/ePghbQDhOKU | Recording |
JavaScript Variables · 30 found
Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope
Name | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
pagePath | string |
___chunkMapping | object |
webpackChunkohjelmoinnin_mooc | object |
2f1acc6c3a606b082e5eef5e54414ffb | number |
asyncRequires | object |
___emitter | object |
___loader | object |
Console log messages · 2 found
Messages logged to the web console
Type | Category | Log |
---|---|---|
warning | other |
|
error | network |
|
HTML
The raw HTML body of the page
<!DOCTYPE html><html lang="fi" class="js-focus-visible" data-js-focus-visible=""><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><style data-href="/styles.915d9e7a893bc9ca399b.css" data-identity="gatsby-global-css">code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-]::selection,code[class*=language-] ::selection,pre[class*=language-]::selection,pre[class*=language-] ::selection{background:#b3d4fc;text-shadow:none}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:hsla(0,0%,100%,.5);color:#9a6e3a}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@font-face{font-display:swap;font-family:Open Sans Condensed;font-style:normal;font-weight:300;src:local("Open Sans Condensed Light "),local("Open Sans Condensed-Light"),url(/static/open-sans-condensed-latin-300-a192808a9079dee3a9e8bf65d84746d8.woff2) format("woff2"),url(/static/open-sans-condensed-latin-300-674d7a73332bab81bb2c265037d23572.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans Condensed;font-style:italic;font-weight:300;src:local("Open Sans Condensed Light italic"),local("Open Sans Condensed-Lightitalic"),url(/static/open-sans-condensed-latin-300italic-615741ed6afae67825bcef556706255e.woff2) format("woff2"),url(/static/open-sans-condensed-latin-300italic-3e98eff94f08f512cb51432001a8f988.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans Condensed;font-style:normal;font-weight:700;src:local("Open Sans Condensed Bold "),local("Open Sans Condensed-Bold"),url(/static/open-sans-condensed-latin-700-b2da74db232df2fe1a0f56ee6079bcca.woff2) format("woff2"),url(/static/open-sans-condensed-latin-700-65bede556d831156e8680290c02d2254.woff) format("woff")}
/*!
* Bootstrap Reboot v4.1.3 (https://getbootstrap.com/)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{color:#212529}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;margin-top:0}p{margin-bottom:1rem;margin-top:0}abbr[data-original-title],abbr[title]{border-bottom:0;cursor:help;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{background-color:transparent;color:#007bff;text-decoration:none}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{-ms-overflow-style:scrollbar;margin-bottom:1rem;margin-top:0;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{caption-side:bottom;color:#6c757d;padding-bottom:.75rem;padding-top:.75rem;text-align:left}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{border:0;margin:0;min-width:0;padding:0}legend{color:inherit;display:block;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;max-width:100%;padding:0;white-space:normal;width:100%}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:none;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}output{display:inline-block}summary{cursor:pointer;display:list-item}template{display:none}[hidden]{display:none!important}:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0);font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%}body{background-color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-weight:400;margin:0;text-align:left}body,p{font-size:18px;line-height:1.5}p{color:#333;font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}table{background-color:transparent;margin-bottom:1rem;width:100%}@media only screen and (max-width:500px){table{table-layout:fixed}}.js-focus-visible :focus:not([data-focus-visible-added]){outline:none}.focus-visible{border:2px solid #3a539b}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:Roboto Slab,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-weight:500;line-height:1.2;margin-bottom:1rem}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p a{box-shadow:inset 0 -3px 0 0 rgba(25,118,210,.5);transition:box-shadow .3s}p a,p a:hover{color:rgba(0,0,0,.84)!important;text-decoration:none}p a:hover{box-shadow:inset 0 -3px 0 0 rgba(25,118,210,.8)}img+p{margin-top:2rem!important}img{height:auto;margin-bottom:2rem;max-width:100%}code{font-family:Roboto Mono,monospace}.gatsby-highlight{margin-bottom:2rem}.gatsby-highlight pre{border-radius:10px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.gatsby-highlight code.language-text{margin-right:.4rem;padding:.2rem .2rem .2rem .4rem!important}.gatsby-highlight code,.gatsby-highlight pre{background-color:#fff!important}:not(pre)>code[class*=language-]{background-color:#f3f3f3!important;color:#141414!important;white-space:pre-wrap}@media only screen and (min-width:550px){.singleline-code>code{white-space:nowrap!important}}@font-face{font-display:swap;font-family:Open Sans;font-style:normal;font-weight:300;src:local("Open Sans Light "),local("Open Sans-Light"),url(/static/open-sans-latin-300-b871ad6e5cbe2a1c8c7362c81a234f93.woff2) format("woff2"),url(/static/open-sans-latin-300-38bcfba2c37aac23453faf21d14511fb.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:italic;font-weight:300;src:local("Open Sans Light italic"),local("Open Sans-Lightitalic"),url(/static/open-sans-latin-300italic-b45d9997b704ab3daad1b5624eec1ad1.woff2) format("woff2"),url(/static/open-sans-latin-300italic-3ab0502d6136886180cdae3e714e30a3.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:normal;font-weight:400;src:local("Open Sans Regular "),local("Open Sans-Regular"),url(/static/open-sans-latin-400-f57a62e9efddf6ace18b15572f81905b.woff2) format("woff2"),url(/static/open-sans-latin-400-347639ec49f4b2884a9657afded83ace.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:italic;font-weight:400;src:local("Open Sans Regular italic"),local("Open Sans-Regularitalic"),url(/static/open-sans-latin-400italic-bb915319f59c02c348a615ad483772e7.woff2) format("woff2"),url(/static/open-sans-latin-400italic-56bdf84751634e8deaff10d1d68df316.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:normal;font-weight:600;src:local("Open Sans SemiBold "),local("Open Sans-SemiBold"),url(/static/open-sans-latin-600-9526470852428b4340ed994462821463.woff2) format("woff2"),url(/static/open-sans-latin-600-7e06644bbdc83069cec8d396149da3ab.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:italic;font-weight:600;src:local("Open Sans SemiBold italic"),local("Open Sans-SemiBolditalic"),url(/static/open-sans-latin-600italic-cc4bf5b2955147801c024b2b118f4a5c.woff2) format("woff2"),url(/static/open-sans-latin-600italic-8d513ad94829ef391cd18d4a83bcfc4b.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:normal;font-weight:700;src:local("Open Sans Bold "),local("Open Sans-Bold"),url(/static/open-sans-latin-700-92425c623934facef057b0cfe2e13f95.woff2) format("woff2"),url(/static/open-sans-latin-700-f24f4bcef8a4a0eb6345d292b85dc7fe.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:italic;font-weight:700;src:local("Open Sans Bold italic"),local("Open Sans-Bolditalic"),url(/static/open-sans-latin-700italic-2a0783bd1c6c1469558bfa573cfa0c0c.woff2) format("woff2"),url(/static/open-sans-latin-700italic-e961bdb476db6860f20ff571a84a55b0.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:normal;font-weight:800;src:local("Open Sans ExtraBold "),local("Open Sans-ExtraBold"),url(/static/open-sans-latin-800-1666787ea3ff3941e7641817eb9edc94.woff2) format("woff2"),url(/static/open-sans-latin-800-8ab0bbdd48f276f4ba5652b27ae59210.woff) format("woff")}@font-face{font-display:swap;font-family:Open Sans;font-style:italic;font-weight:800;src:local("Open Sans ExtraBold italic"),local("Open Sans-ExtraBolditalic"),url(/static/open-sans-latin-800italic-b5bc26612cdf4d47affd6988bcdc8c0f.woff2) format("woff2"),url(/static/open-sans-latin-800italic-3d3bd0835c258f5bd0bce57bb1963a9c.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:100;src:local("Roboto Slab Thin "),local("Roboto Slab-Thin"),url(/static/roboto-slab-latin-100-b1b6c305b59c53aade061f94e7189d06.woff2) format("woff2"),url(/static/roboto-slab-latin-100-3cf5eb593f47cb1d7a2a88c3420b0f05.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:200;src:local("Roboto Slab Extra Light "),local("Roboto Slab-Extra Light"),url(/static/roboto-slab-latin-200-6b6404ab35a50d27b680a0cee7bc7c2d.woff2) format("woff2"),url(/static/roboto-slab-latin-200-c1da53593b0bfb2e5150e12816833ba4.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:300;src:local("Roboto Slab Light "),local("Roboto Slab-Light"),url(/static/roboto-slab-latin-300-6ba8292761b4b0eba1a54bc6d2b59103.woff2) format("woff2"),url(/static/roboto-slab-latin-300-ea5b3f9c3d8b74563b98d45aaffb0cd4.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:400;src:local("Roboto Slab Regular "),local("Roboto Slab-Regular"),url(/static/roboto-slab-latin-400-c3cd9be60ab77224000bc2aa85c3e505.woff2) format("woff2"),url(/static/roboto-slab-latin-400-b46b2661355d7b1e9e9e7b62c5d63c6a.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:500;src:local("Roboto Slab Medium "),local("Roboto Slab-Medium"),url(/static/roboto-slab-latin-500-f4c01f2cd0aafd0e1a0f85bf61c165ab.woff2) format("woff2"),url(/static/roboto-slab-latin-500-e8704da18c8310dd7be5dbfb09ff9a00.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:600;src:local("Roboto Slab SemiBold "),local("Roboto Slab-SemiBold"),url(/static/roboto-slab-latin-600-e30bfc7e3ef6064fbe6177bbe14a26c6.woff2) format("woff2"),url(/static/roboto-slab-latin-600-ea3732705a7cdb3868d69103b866de9d.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:700;src:local("Roboto Slab Bold "),local("Roboto Slab-Bold"),url(/static/roboto-slab-latin-700-934d56e4123b970a7c16abac9f5f92a5.woff2) format("woff2"),url(/static/roboto-slab-latin-700-7cb09bef6990e87c9e2bd8dba463d8e5.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:800;src:local("Roboto Slab ExtraBold "),local("Roboto Slab-ExtraBold"),url(/static/roboto-slab-latin-800-d9e662e984444f440bc1a8bd45833f0e.woff2) format("woff2"),url(/static/roboto-slab-latin-800-e6cc5ef611120ac3296b7a04b9b333ee.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Slab;font-style:normal;font-weight:900;src:local("Roboto Slab Black "),local("Roboto Slab-Black"),url(/static/roboto-slab-latin-900-425b1dcbdafcc8d40da2e1c5393bcf5b.woff2) format("woff2"),url(/static/roboto-slab-latin-900-a31e8d7e190af6f15153f2aa82ca80d4.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:100;src:local("Roboto Mono Thin "),local("Roboto Mono-Thin"),url(/static/roboto-mono-latin-100-7f7e9cd596438fea4b02e3c9b21a92b5.woff2) format("woff2"),url(/static/roboto-mono-latin-100-da65dcd09cdc4863ece2402e959bfe70.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:100;src:local("Roboto Mono Thin italic"),local("Roboto Mono-Thinitalic"),url(/static/roboto-mono-latin-100italic-d97850bb044fb5584361aa00e3c596f6.woff2) format("woff2"),url(/static/roboto-mono-latin-100italic-16b1558858fe1064b5af8cc6c1c4dbf3.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:200;src:local("Roboto Mono Extra Light "),local("Roboto Mono-Extra Light"),url(/static/roboto-mono-latin-200-969a44e1b6fc26105bd6fc5cc0c9a3bd.woff2) format("woff2"),url(/static/roboto-mono-latin-200-640f8692dc49a19f15412c3d3cf7ff2f.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:200;src:local("Roboto Mono Extra Light italic"),local("Roboto Mono-Extra Lightitalic"),url(/static/roboto-mono-latin-200italic-9216be4e13fe7dbe70efe51c7872b1f0.woff2) format("woff2"),url(/static/roboto-mono-latin-200italic-ca100b2be6274105bb160594a4c984e4.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:300;src:local("Roboto Mono Light "),local("Roboto Mono-Light"),url(/static/roboto-mono-latin-300-bfe6eaec56c141a0bd7227262d1e249e.woff2) format("woff2"),url(/static/roboto-mono-latin-300-2900d24e7347deaf65cd76c5294d5bc4.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:300;src:local("Roboto Mono Light italic"),local("Roboto Mono-Lightitalic"),url(/static/roboto-mono-latin-300italic-cc9e42999888377183f88eb10cf2919d.woff2) format("woff2"),url(/static/roboto-mono-latin-300italic-24a9d3bbf9b715214bf5e83e33574b56.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:400;src:local("Roboto Mono Regular "),local("Roboto Mono-Regular"),url(/static/roboto-mono-latin-400-535bc89d4af715503b01afd761501e58.woff2) format("woff2"),url(/static/roboto-mono-latin-400-498042b7fe9cd07b4fd11a0965093e55.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:400;src:local("Roboto Mono Regular italic"),local("Roboto Mono-Regularitalic"),url(/static/roboto-mono-latin-400italic-b39a11f9a6107e57a21f0c399cd3218b.woff2) format("woff2"),url(/static/roboto-mono-latin-400italic-1ce08cfde36c0d81af5b60c1a4ab895e.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:500;src:local("Roboto Mono Medium "),local("Roboto Mono-Medium"),url(/static/roboto-mono-latin-500-c1f17364fee75703a7eefdc41120adcc.woff2) format("woff2"),url(/static/roboto-mono-latin-500-2ed4651232a34d737777674fb9b2dbf7.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:500;src:local("Roboto Mono Medium italic"),local("Roboto Mono-Mediumitalic"),url(/static/roboto-mono-latin-500italic-51aa168dd4ba03bd83f0a799c11a705d.woff2) format("woff2"),url(/static/roboto-mono-latin-500italic-79f21d796f266ce0ea70e74a7fc7b11b.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:600;src:local("Roboto Mono SemiBold "),local("Roboto Mono-SemiBold"),url(/static/roboto-mono-latin-600-ff2c5c919a01e9ddda8532d1a8bbb4c9.woff2) format("woff2"),url(/static/roboto-mono-latin-600-bbbf6951525a78fff340f2c42c3ba853.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:600;src:local("Roboto Mono SemiBold italic"),local("Roboto Mono-SemiBolditalic"),url(/static/roboto-mono-latin-600italic-53b43867955fbecc811a82030cefe8a4.woff2) format("woff2"),url(/static/roboto-mono-latin-600italic-213eedde97d22010287cf492a821e563.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:normal;font-weight:700;src:local("Roboto Mono Bold "),local("Roboto Mono-Bold"),url(/static/roboto-mono-latin-700-c5c3959c04004102ea46462160ada846.woff2) format("woff2"),url(/static/roboto-mono-latin-700-eba647ae67ba7dc20f05d588ba823ded.woff) format("woff")}@font-face{font-display:swap;font-family:Roboto Mono;font-style:italic;font-weight:700;src:local("Roboto Mono Bold italic"),local("Roboto Mono-Bolditalic"),url(/static/roboto-mono-latin-700italic-bc628a95b5026af0df2ce793f7d71106.woff2) format("woff2"),url(/static/roboto-mono-latin-700italic-bf4b4e73015a3066da91b7f394a6ff70.woff) format("woff")}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{box-sizing:content-box;overflow:visible}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.07143em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{top:.25em;width:var(--fa-li-width,2em)}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{transform-origin:center center}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;transform:scale(var(--fa-layers-scale,.25));transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;transform:scale(var(--fa-layers-scale,.25));transform-origin:bottom left}.fa-layers-top-right{right:var(--fa-right,0);top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);line-height:inherit;position:absolute;text-align:center;width:var(--fa-li-width,2em)}.fa-border{border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat,.fa-bounce{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-bounce{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-bounce;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-beat-fade;animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-flip;animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip,.fa-shake{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-shake{animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-shake;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-name:fa-spin;animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0deg)}}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor)}.svg-inline--fa .fa-secondary,.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg{font-size:140%;margin:.2rem;transition:transform .2s}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg:not(.likert-react_src-sentiment-wrapper-___styles__frozen){cursor:pointer}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg:not(.likert-react_src-sentiment-wrapper-___styles__frozen):hover{transform:scale(1.3)}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg.likert-react_src-sentiment-wrapper-___styles__highlighted{margin:.2rem;transform:scale(1.2)}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg.likert-react_src-sentiment-wrapper-___styles__highlighted.likert-react_src-sentiment-wrapper-___styles__focus-gained{margin:.2rem;outline:1rem solid red;transform:scale(1.2)}.likert-react_src-sentiment-wrapper-___styles__sentiment>svg:focus{outline-width:0}.likert-react_src-sentiment-wrapper-___styles__sentiment svg.likert-react_src-sentiment-wrapper-___styles__focus-ring{outline:.1rem solid red}.likert-react_src-review-scale-___styles__scale{margin:0 0 0 .3rem}.likert-react_src-___styles__container-striped{align-content:stretch;align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:.2rem}.likert-react_src-___styles__container-striped:nth-child(2n){background-color:#fff}.likert-react_src-___styles__container-striped:nth-child(odd){background-color:#ebebeb}.likert-react_src-___styles__container{align-content:stretch;align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:.2rem}.likert-react_src-___styles__full-line{background-color:#a9a9c1;border-radius:.2rem;flex-grow:2;height:.11rem}.likert-react_src-___styles__dotted-line{border:none;border-top:.2rem dotted #a9a9c1;flex-grow:2;height:.1rem}.likert-react_src-___styles__question{margin:0 .4rem 0 0;max-width:60%}.Toastify__toast-container{box-sizing:border-box;color:#fff;padding:4px;position:fixed;-webkit-transform:translateZ(9999px);width:320px;z-index:9999}.Toastify__toast-container--top-left{left:1em;top:1em}.Toastify__toast-container--top-center{left:50%;top:1em;transform:translateX(-50%)}.Toastify__toast-container--top-right{right:1em;top:1em}.Toastify__toast-container--bottom-left{bottom:1em;left:1em}.Toastify__toast-container--bottom-center{bottom:1em;left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:1em;right:1em}@media only screen and (max-width:480px){.Toastify__toast-container{left:0;margin:0;padding:0;width:100vw}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:0;transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:0;transform:translateX(0)}.Toastify__toast-container--rtl{left:auto;right:0}}.Toastify__toast{border-radius:4px;box-shadow:0 1px 10px 0 rgba(0,0,0,.1),0 2px 15px 0 rgba(0,0,0,.05);box-sizing:border-box;cursor:pointer;direction:ltr;display:flex;font-family:sans-serif;justify-content:space-between;margin-bottom:1rem;max-height:800px;min-height:64px;overflow:hidden;padding:8px;position:relative}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--dark{background:#121212;color:#fff}.Toastify__toast--default{background:#fff;color:#aaa}.Toastify__toast--info{background:#3498db}.Toastify__toast--success{background:#07bc0c}.Toastify__toast--warning{background:#f1c40f}.Toastify__toast--error{background:#e74c3c}.Toastify__toast-body{flex:1 1 auto;margin:auto 0;padding:6px}.Toastify--animate{animation-duration:.7s;animation-fill-mode:both}@media only screen and (max-width:480px){.Toastify__toast{border-radius:0;margin-bottom:0}}.Toastify__close-button{align-self:flex-start;background:transparent;border:none;color:#fff;cursor:pointer;opacity:.7;outline:none;padding:0;transition:.3s ease}.Toastify__close-button--default{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{background-color:hsla(0,0%,100%,.7);bottom:0;height:5px;left:0;opacity:.7;position:absolute;transform-origin:left;width:100%;z-index:9999}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{left:auto;right:0;transform-origin:right}.Toastify__progress-bar--default{background:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55)}.Toastify__progress-bar--dark{background:#bb86fc}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{opacity:1;transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:perspective(400px)}30%{opacity:1;transform:perspective(400px) rotateX(-20deg)}to{opacity:0;transform:perspective(400px) rotateX(90deg)}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translateZ(0)}}@keyframes Toastify__slideOutRight{0%{transform:translateZ(0)}to{transform:translate3d(110%,0,0);visibility:hidden}}@keyframes Toastify__slideOutLeft{0%{transform:translateZ(0)}to{transform:translate3d(-110%,0,0);visibility:hidden}}@keyframes Toastify__slideOutDown{0%{transform:translateZ(0)}to{transform:translate3d(0,500px,0);visibility:hidden}}@keyframes Toastify__slideOutUp{0%{transform:translateZ(0)}to{transform:translate3d(0,-500px,0);visibility:hidden}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-name:Toastify__slideOutLeft}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-name:Toastify__slideOutRight}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown}.CodeMirror{color:#000;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{animation:blink 1.06s steps(1) infinite;background-color:#7e7;border:0;width:auto}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:-20px;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-30px;margin-right:-30px;outline:none;overflow:scroll!important;padding-bottom:30px;position:relative}.CodeMirror-sizer{border-right:30px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-30px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{overflow:auto;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.rc-slider{border-radius:6px;height:14px;padding:5px 0;position:relative;touch-action:none;width:100%}.rc-slider,.rc-slider *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-rail{background-color:#e9e9e9;width:100%}.rc-slider-rail,.rc-slider-track{border-radius:6px;height:4px;position:absolute}.rc-slider-track{background-color:#abe2fb;left:0}.rc-slider-handle{background-color:#fff;border:2px solid #96dbfa;border-radius:50%;cursor:pointer;cursor:grab;height:14px;margin-top:-5px;position:absolute;touch-action:pan-x;width:14px}.rc-slider-handle:hover{border-color:#57c5f7}.rc-slider-handle:active{border-color:#57c5f7;box-shadow:0 0 5px #57c5f7;cursor:grabbing}.rc-slider-mark{font-size:12px;left:0;position:absolute;top:18px;width:100%}.rc-slider-mark-text{color:#999;cursor:pointer;display:inline-block;position:absolute;text-align:center;vertical-align:middle}.rc-slider-mark-text-active{color:#666}.rc-slider-step{background:transparent;height:4px;position:absolute;width:100%}.rc-slider-dot{background-color:#fff;border:2px solid #e9e9e9;border-radius:50%;bottom:-2px;cursor:pointer;height:8px;position:absolute;vertical-align:middle;width:8px}.rc-slider-dot,.rc-slider-dot:first-child,.rc-slider-dot:last-child{margin-left:-4px}.rc-slider-dot-active{border-color:#96dbfa}.rc-slider-disabled{background-color:#e9e9e9}.rc-slider-disabled .rc-slider-track{background-color:#ccc}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-handle{background-color:#fff;border-color:#ccc;box-shadow:none;cursor:not-allowed}.rc-slider-disabled .rc-slider-dot,.rc-slider-disabled .rc-slider-mark-text{cursor:not-allowed!important}.rc-slider-vertical{height:100%;padding:0 5px;width:14px}.rc-slider-vertical .rc-slider-rail{height:100%;width:4px}.rc-slider-vertical .rc-slider-track{bottom:0;left:5px;width:4px}.rc-slider-vertical .rc-slider-handle{margin-bottom:-7px;margin-left:-5px;touch-action:pan-y}.rc-slider-vertical .rc-slider-mark{height:100%;left:18px;top:0}.rc-slider-vertical .rc-slider-step{height:100%;width:4px}.rc-slider-vertical .rc-slider-dot{left:2px;margin-bottom:-4px}.rc-slider-vertical .rc-slider-dot:first-child,.rc-slider-vertical .rc-slider-dot:last-child{margin-bottom:-4px}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter,.rc-slider-tooltip-zoom-down-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;display:block!important}.rc-slider-tooltip-zoom-down-appear.rc-slider-tooltip-zoom-down-appear-active,.rc-slider-tooltip-zoom-down-enter.rc-slider-tooltip-zoom-down-enter-active{animation-name:rcSliderTooltipZoomDownIn;animation-play-state:running}.rc-slider-tooltip-zoom-down-leave.rc-slider-tooltip-zoom-down-leave-active{animation-name:rcSliderTooltipZoomDownOut;animation-play-state:running}.rc-slider-tooltip-zoom-down-appear,.rc-slider-tooltip-zoom-down-enter{animation-timing-function:cubic-bezier(.23,1,.32,1);transform:scale(0)}.rc-slider-tooltip-zoom-down-leave{animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@keyframes rcSliderTooltipZoomDownIn{0%{opacity:0;transform:scale(0);transform-origin:50% 100%}to{transform:scale(1);transform-origin:50% 100%}}@keyframes rcSliderTooltipZoomDownOut{0%{transform:scale(1);transform-origin:50% 100%}to{opacity:0;transform:scale(0);transform-origin:50% 100%}}.rc-slider-tooltip{left:-9999px;position:absolute;top:-9999px;visibility:visible}.rc-slider-tooltip,.rc-slider-tooltip *{-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box}.rc-slider-tooltip-hidden{display:none}.rc-slider-tooltip-placement-top{padding:4px 0 8px}.rc-slider-tooltip-inner{background-color:#6c6c6c;border-radius:6px;box-shadow:0 0 4px #d9d9d9;color:#fff;font-size:12px;height:24px;line-height:1;min-width:24px;padding:6px 2px;text-align:center;text-decoration:none}.rc-slider-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.rc-slider-tooltip-placement-top .rc-slider-tooltip-arrow{border-top-color:#6c6c6c;border-width:4px 4px 0;bottom:4px;left:50%;margin-left:-4px}.code-states-visualizer-rc-tooltip{display:block;font-size:12px;line-height:1.5;opacity:.9;position:absolute;visibility:visible;z-index:1070}.code-states-visualizer-rc-tooltip-hidden{display:none}.code-states-visualizer-rc-tooltip-placement-top,.code-states-visualizer-rc-tooltip-placement-topLeft,.code-states-visualizer-rc-tooltip-placement-topRight{padding:5px 0 9px}.code-states-visualizer-rc-tooltip-placement-right,.code-states-visualizer-rc-tooltip-placement-rightBottom,.code-states-visualizer-rc-tooltip-placement-rightTop{padding:0 5px 0 9px}.code-states-visualizer-rc-tooltip-placement-bottom,.code-states-visualizer-rc-tooltip-placement-bottomLeft,.code-states-visualizer-rc-tooltip-placement-bottomRight{padding:9px 0 5px}.code-states-visualizer-rc-tooltip-placement-left,.code-states-visualizer-rc-tooltip-placement-leftBottom,.code-states-visualizer-rc-tooltip-placement-leftTop{padding:0 9px 0 5px}.code-states-visualizer-rc-tooltip-inner{background-color:#373737;border-radius:6px;box-shadow:0 0 4px rgba(0,0,0,.17);color:#fff;min-height:34px;padding:8px 10px;text-align:left;text-decoration:none}.code-states-visualizer-rc-tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.code-states-visualizer-rc-tooltip-placement-top .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-topLeft .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-topRight .code-states-visualizer-rc-tooltip-arrow{border-top-color:#373737;border-width:5px 5px 0;bottom:4px;margin-left:-5px}.code-states-visualizer-rc-tooltip-placement-top .code-states-visualizer-rc-tooltip-arrow{left:50%}.code-states-visualizer-rc-tooltip-placement-topLeft .code-states-visualizer-rc-tooltip-arrow{left:15%}.code-states-visualizer-rc-tooltip-placement-topRight .code-states-visualizer-rc-tooltip-arrow{right:15%}.code-states-visualizer-rc-tooltip-placement-right .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-rightBottom .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-rightTop .code-states-visualizer-rc-tooltip-arrow{border-right-color:#373737;border-width:5px 5px 5px 0;left:4px;margin-top:-5px}.code-states-visualizer-rc-tooltip-placement-right .code-states-visualizer-rc-tooltip-arrow{top:50%}.code-states-visualizer-rc-tooltip-placement-rightTop .code-states-visualizer-rc-tooltip-arrow{margin-top:0;top:15%}.code-states-visualizer-rc-tooltip-placement-rightBottom .code-states-visualizer-rc-tooltip-arrow{bottom:15%}.code-states-visualizer-rc-tooltip-placement-left .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-leftBottom .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-leftTop .code-states-visualizer-rc-tooltip-arrow{border-left-color:#373737;border-width:5px 0 5px 5px;margin-top:-5px;right:4px}.code-states-visualizer-rc-tooltip-placement-left .code-states-visualizer-rc-tooltip-arrow{top:50%}.code-states-visualizer-rc-tooltip-placement-leftTop .code-states-visualizer-rc-tooltip-arrow{margin-top:0;top:15%}.code-states-visualizer-rc-tooltip-placement-leftBottom .code-states-visualizer-rc-tooltip-arrow{bottom:15%}.code-states-visualizer-rc-tooltip-placement-bottom .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-bottomLeft .code-states-visualizer-rc-tooltip-arrow,.code-states-visualizer-rc-tooltip-placement-bottomRight .code-states-visualizer-rc-tooltip-arrow{border-bottom-color:#373737;border-width:0 5px 5px;margin-left:-5px;top:4px}.code-states-visualizer-rc-tooltip-placement-bottom .code-states-visualizer-rc-tooltip-arrow{left:50%}.code-states-visualizer-rc-tooltip-placement-bottomLeft .code-states-visualizer-rc-tooltip-arrow{left:15%}.code-states-visualizer-rc-tooltip-placement-bottomRight .code-states-visualizer-rc-tooltip-arrow{right:15%}.code-states-visualizer-rc-tooltip.code-states-visualizer-rc-tooltip-zoom-enter,.code-states-visualizer-rc-tooltip.code-states-visualizer-rc-tooltip-zoom-leave{display:block}.code-states-visualizer-rc-tooltip-zoom-appear,.code-states-visualizer-rc-tooltip-zoom-enter{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.18,.89,.32,1.28);opacity:0}.code-states-visualizer-rc-tooltip-zoom-leave{animation-duration:.3s;animation-fill-mode:both;animation-play-state:paused;animation-timing-function:cubic-bezier(.6,-.3,.74,.05)}.code-states-visualizer-rc-tooltip-zoom-appear.code-states-visualizer-rc-tooltip-zoom-appear-active,.code-states-visualizer-rc-tooltip-zoom-enter.code-states-visualizer-rc-tooltip-zoom-enter-active{animation-name:rcToolTipZoomIn;animation-play-state:running}.code-states-visualizer-rc-tooltip-zoom-leave.code-states-visualizer-rc-tooltip-zoom-leave-active{animation-name:rcToolTipZoomOut;animation-play-state:running}@keyframes rcToolTipZoomIn{0%{opacity:0;transform:scale(0);transform-origin:50% 50%}to{opacity:1;transform:scale(1);transform-origin:50% 50%}}@keyframes rcToolTipZoomOut{0%{opacity:1;transform:scale(1);transform-origin:50% 50%}to{opacity:0;transform:scale(0);transform-origin:50% 50%}}html{font-family:Roboto;font-size:16px;line-height:1.5}:focus:not(.focus-ring){outline:none}.focus-ring{outline:.15rem solid #89c4f4}::-moz-focus-inner{border:none}.code-states-visualizer-container{margin:2rem auto;max-width:53.75rem}.code-states-visualizer-code-container,.code-states-visualizer-code-parts-container{display:flex}.code-states-visualizer-code-container{flex:2.5 1;margin:0 1rem 1rem 0;width:100%}.code-states-visualizer-code{border:.13rem dashed #bdc3c7;border-radius:.2rem;margin:0;padding:1rem .2rem;white-space:pre;width:100%}.CodeMirror-gutter{background-color:#fff}.CodeMirror{height:auto!important}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 10px;text-align:right;white-space:nowrap}.code-states-visualizer-variables-container{display:flex;flex:1 1;margin:0;width:100%}.code-states-visualizer-variables-wrapper{width:100%}.code-states-visualizer-variables-table-wrapper{background-color:#fff;border-radius:.2rem;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);min-height:6rem;width:100%}.code-states-visualizer-table-content-wrapper{padding:1rem;width:100%}.code-states-visualizer-variables{border-collapse:collapse;margin:0 0 1rem;opacity:.5;transition:opacity .3s;width:100%}.code-states-visualizer-variables th{background-color:#95a5a6;color:#fff;padding:0 1rem;transition:background-color .3s}.code-states-visualizer-variables tr td{word-wrap:break-word;border-top:1px solid #eceeef;max-width:98px;padding:.3rem .3rem 0;width:98px}.code-states-visualizer-variables tr:last-of-type td{padding-bottom:.3rem}.code-states-visualizer-variables.code-states-visualizer-active{opacity:1}.code-states-visualizer-variables.code-states-visualizer-active th{background-color:#4873d5}.code-states-visualizer-wrapwhitespace{white-space:pre}.code-states-visualizer-table-header{border-radius:.2rem .2rem 0 0}.code-states-visualizer-output{border-radius:.2rem;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);margin-bottom:1rem;min-height:9rem;white-space:pre;width:100%}.code-states-visualizer-header{background-color:#4873d5;border-radius:.2rem .2rem 0 0;color:#fff;margin:0;padding:.5rem}.code-states-visualizer-output-content{padding:1rem}.code-states-visualizer-exception{background-color:#f6695c;border-radius:.2rem;color:#fff;display:none;margin-bottom:1rem;padding:1rem;width:100%}.code-states-visualizer-exception.code-states-visualizer-active{display:block}.code-states-visualizer-current-line{background:#f1f3f8}.code-states-visualizer-current-line-gutter:before{content:"\25B6";position:absolute}.code-states-visualizer-button-container{display:flex}.rc-slider-tooltip-inner{background-color:#5d83da;font-weight:700}.rc-slider-handle{border-color:#5d83da;border-width:.2rem;height:20px;margin-left:-7px;margin-top:-6px;width:20px}.rc-slider-rail,.rc-slider-track{background-color:#87a3e3;height:8px;margin-top:-2}.code-states-visualizer-change-state-button{background-color:#3363d1;border:0;border-radius:.2rem;color:#fff;font-weight:700;margin:1.5rem 2rem;padding:.5rem 1rem;transition:background-color .2s;width:100%}.code-states-visualizer-change-state-button:hover{background-color:#2c58bf}.code-states-visualizer-change-state-button.code-states-visualizer-disabled{background-color:#95a5a6}.code-states-visualizer-change-state-button.code-states-visualizer-disabled:hover{cursor:not-allowed}.code-states-visualizer-state-counter{border:0;border-radius:.2rem;margin:1.5rem 2rem;padding:.5rem 1rem;width:25%}</style><meta name="generator" content="Gatsby 3.15.0"><title>About this course - Python Programming MOOC 2022</title><link data-react-helmet="true" href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet"><meta data-react-helmet="true" name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no"><meta data-react-helmet="true" name="description" content="Learn the basics of programming with the Python programming language. The focus of the course is on programming, and you will learn how to write programs and understand how they work. For example, the basics of algorithms, control structures, subprograms, object-oriented programming are covered. The course is suitable to anyone who wants to learn programming. No prior programming experience is required."><meta data-react-helmet="true" name="keywords" content="ohjelmointi, python, programming, CS1, MOOC, 2022, ohjelmointikurssi, open, free, university of helsinki"><style data-styled="active" data-styled-version="5.3.11"></style><style type="text/css">
.anchor.before {
position: absolute;
top: 0;
left: 0;
transform: translateX(-100%);
padding-right: 4px;
}
.anchor.after {
display: inline-block;
padding-left: 4px;
}
h1 .anchor svg,
h2 .anchor svg,
h3 .anchor svg,
h4 .anchor svg,
h5 .anchor svg,
h6 .anchor svg {
visibility: hidden;
}
h1:hover .anchor svg,
h2:hover .anchor svg,
h3:hover .anchor svg,
h4:hover .anchor svg,
h5:hover .anchor svg,
h6:hover .anchor svg,
h1 .anchor:focus svg,
h2 .anchor:focus svg,
h3 .anchor:focus svg,
h4 .anchor:focus svg,
h5 .anchor:focus svg,
h6 .anchor:focus svg {
visibility: visible;
}
</style><script>
document.addEventListener("DOMContentLoaded", function(event) {
var hash = window.decodeURI(location.hash.replace('#', ''))
if (hash !== '') {
var element = document.getElementById(hash)
if (element) {
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
var clientTop = document.documentElement.clientTop || document.body.clientTop || 0
var offset = element.getBoundingClientRect().top + scrollTop - clientTop
// Wait for the browser to finish rendering before scrolling.
setTimeout((function() {
window.scrollTo(0, offset - 0)
}), 0)
}
}
})
</script><link rel="sitemap" type="application/xml" href="/sitemap.xml"><link as="script" rel="preload" href="/webpack-runtime-ae78f7f2a9a3820b65b7.js"><link as="script" rel="preload" href="/framework-5376661c4604f30dbcee.js"><link as="script" rel="preload" href="/app-8a35f0f88222fff6e95b.js"><link as="script" rel="preload" href="/c16184b3-807032ea10de60f8903c.js"><link as="script" rel="preload" href="/2cca2479-5d6bd31cf02ef4cb4b20.js"><link as="script" rel="preload" href="/e8647879-2a55d0bd4baeec3fd269.js"><link as="script" rel="preload" href="/commons-2aee925375917fd70421.js"><link as="script" rel="preload" href="/26587bc536050a6bff591a69d19ce90d332e7f8b-553a4651a9968d72bac9.js"><link as="script" rel="preload" href="/8536b526e15da5462f650a580b79ed0a385338f6-a1a82df1f1a40572a835.js"><link as="script" rel="preload" href="/9a5c972249ed528831c9b61ea8b346416e36b4cd-0c0f548dccbb6ffb4e28.js"><link as="script" rel="preload" href="/component---src-templates-info-page-template-js-7cedf74e17cfcd45085d.js"><link as="fetch" rel="preload" href="/page-data/index/page-data.json" crossorigin="anonymous"><link as="fetch" rel="preload" href="/page-data/sq/d/1357757885.json" crossorigin="anonymous"><link as="fetch" rel="preload" href="/page-data/sq/d/994120085.json" crossorigin="anonymous"><link as="fetch" rel="preload" href="/page-data/app-data.json" crossorigin="anonymous"><style data-jss="" data-meta="MuiCssBaseline">
html {
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
*, *::before, *::after {
box-sizing: inherit;
}
strong, b {
font-weight: 700;
}
body {
color: rgba(0, 0, 0, 0.87);
margin: 0;
font-size: 0.875rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.43;
letter-spacing: 0.01071em;
background-color: #fafafa;
}
@media print {
body {
background-color: #fff;
}
}
body::backdrop {
background-color: #fafafa;
}
</style><style data-jss="" data-meta="MuiTouchRipple">
.MuiTouchRipple-root {
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
overflow: hidden;
position: absolute;
border-radius: inherit;
pointer-events: none;
}
.MuiTouchRipple-ripple {
opacity: 0;
position: absolute;
}
.MuiTouchRipple-rippleVisible {
opacity: 0.3;
animation: MuiTouchRipple-keyframes-enter 550ms cubic-bezier(0.4, 0, 0.2, 1);
transform: scale(1);
}
.MuiTouchRipple-ripplePulsate {
animation-duration: 200ms;
}
.MuiTouchRipple-child {
width: 100%;
height: 100%;
display: block;
opacity: 1;
border-radius: 50%;
background-color: currentColor;
}
.MuiTouchRipple-childLeaving {
opacity: 0;
animation: MuiTouchRipple-keyframes-exit 550ms cubic-bezier(0.4, 0, 0.2, 1);
}
.MuiTouchRipple-childPulsate {
top: 0;
left: 0;
position: absolute;
animation: MuiTouchRipple-keyframes-pulsate 2500ms cubic-bezier(0.4, 0, 0.2, 1) 200ms infinite;
}
@-webkit-keyframes MuiTouchRipple-keyframes-enter {
0% {
opacity: 0.1;
transform: scale(0);
}
100% {
opacity: 0.3;
transform: scale(1);
}
}
@-webkit-keyframes MuiTouchRipple-keyframes-exit {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@-webkit-keyframes MuiTouchRipple-keyframes-pulsate {
0% {
transform: scale(1);
}
50% {
transform: scale(0.92);
}
100% {
transform: scale(1);
}
}
</style><style data-jss="" data-meta="MuiButtonBase">
.MuiButtonBase-root {
color: inherit;
border: 0;
cursor: pointer;
margin: 0;
display: inline-flex;
outline: 0;
padding: 0;
position: relative;
align-items: center;
user-select: none;
border-radius: 0;
vertical-align: middle;
-moz-appearance: none;
justify-content: center;
text-decoration: none;
background-color: transparent;
-webkit-appearance: none;
-webkit-tap-highlight-color: transparent;
}
.MuiButtonBase-root::-moz-focus-inner {
border-style: none;
}
.MuiButtonBase-root.Mui-disabled {
cursor: default;
pointer-events: none;
}
@media print {
.MuiButtonBase-root {
-webkit-print-color-adjust: exact;
}
}
</style><style data-jss="" data-meta="MuiButton">
.MuiButton-root {
color: rgba(0, 0, 0, 0.87);
padding: 6px 16px;
font-size: 0.875rem;
min-width: 64px;
box-sizing: border-box;
transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 500;
line-height: 1.75;
border-radius: 4px;
letter-spacing: 0.02857em;
text-transform: none;
}
.MuiButton-root:hover {
text-decoration: none;
background-color: rgba(0, 0, 0, 0.04);
}
.MuiButton-root.Mui-disabled {
color: rgba(0, 0, 0, 0.26);
}
@media (hover: none) {
.MuiButton-root:hover {
background-color: transparent;
}
}
.MuiButton-root:hover.Mui-disabled {
background-color: transparent;
}
.MuiButton-label {
width: 100%;
display: inherit;
align-items: inherit;
text-transform: none;
justify-content: inherit;
}
.MuiButton-text {
padding: 6px 8px;
}
.MuiButton-textPrimary {
color: #2196f3;
}
.MuiButton-textPrimary:hover {
background-color: rgba(33, 150, 243, 0.04);
}
@media (hover: none) {
.MuiButton-textPrimary:hover {
background-color: transparent;
}
}
.MuiButton-textSecondary {
color: #f44336;
}
.MuiButton-textSecondary:hover {
background-color: rgba(244, 67, 54, 0.04);
}
@media (hover: none) {
.MuiButton-textSecondary:hover {
background-color: transparent;
}
}
.MuiButton-outlined {
border: 1px solid rgba(0, 0, 0, 0.23);
padding: 5px 15px;
}
.MuiButton-outlined.Mui-disabled {
border: 1px solid rgba(0, 0, 0, 0.12);
}
.MuiButton-outlinedPrimary {
color: #2196f3;
border: 1px solid rgba(33, 150, 243, 0.5);
}
.MuiButton-outlinedPrimary:hover {
border: 1px solid #2196f3;
background-color: rgba(33, 150, 243, 0.04);
}
@media (hover: none) {
.MuiButton-outlinedPrimary:hover {
background-color: transparent;
}
}
.MuiButton-outlinedSecondary {
color: #f44336;
border: 1px solid rgba(244, 67, 54, 0.5);
}
.MuiButton-outlinedSecondary:hover {
border: 1px solid #f44336;
background-color: rgba(244, 67, 54, 0.04);
}
.MuiButton-outlinedSecondary.Mui-disabled {
border: 1px solid rgba(0, 0, 0, 0.26);
}
@media (hover: none) {
.MuiButton-outlinedSecondary:hover {
background-color: transparent;
}
}
.MuiButton-contained {
color: rgba(0, 0, 0, 0.87);
box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);
background-color: #e0e0e0;
}
.MuiButton-contained:hover {
box-shadow: 0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);
background-color: #d5d5d5;
}
.MuiButton-contained.Mui-focusVisible {
box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);
}
.MuiButton-contained:active {
box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);
}
.MuiButton-contained.Mui-disabled {
color: rgba(0, 0, 0, 0.26);
box-shadow: none;
background-color: rgba(0, 0, 0, 0.12);
}
@media (hover: none) {
.MuiButton-contained:hover {
box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);
background-color: #e0e0e0;
}
}
.MuiButton-contained:hover.Mui-disabled {
background-color: rgba(0, 0, 0, 0.12);
}
.MuiButton-containedPrimary {
color: #fff;
background-color: #2196f3;
}
.MuiButton-containedPrimary:hover {
background-color: #1976d2;
}
@media (hover: none) {
.MuiButton-containedPrimary:hover {
background-color: #2196f3;
}
}
.MuiButton-containedSecondary {
color: #fff;
background-color: #f44336;
}
.MuiButton-containedSecondary:hover {
background-color: #d32f2f;
}
@media (hover: none) {
.MuiButton-containedSecondary:hover {
background-color: #f44336;
}
}
.MuiButton-disableElevation {
box-shadow: none;
}
.MuiButton-disableElevation:hover {
box-shadow: none;
}
.MuiButton-disableElevation.Mui-focusVisible {
box-shadow: none;
}
.MuiButton-disableElevation:active {
box-shadow: none;
}
.MuiButton-disableElevation.Mui-disabled {
box-shadow: none;
}
.MuiButton-colorInherit {
color: inherit;
border-color: currentColor;
}
.MuiButton-textSizeSmall {
padding: 4px 5px;
font-size: 0.8125rem;
}
.MuiButton-textSizeLarge {
padding: 8px 11px;
font-size: 0.9375rem;
}
.MuiButton-outlinedSizeSmall {
padding: 3px 9px;
font-size: 0.8125rem;
}
.MuiButton-outlinedSizeLarge {
padding: 7px 21px;
font-size: 0.9375rem;
}
.MuiButton-containedSizeSmall {
padding: 4px 10px;
font-size: 0.8125rem;
}
.MuiButton-containedSizeLarge {
padding: 8px 22px;
font-size: 0.9375rem;
}
.MuiButton-fullWidth {
width: 100%;
}
.MuiButton-startIcon {
display: inherit;
margin-left: -4px;
margin-right: 8px;
}
.MuiButton-startIcon.MuiButton-iconSizeSmall {
margin-left: -2px;
}
.MuiButton-endIcon {
display: inherit;
margin-left: 8px;
margin-right: -4px;
}
.MuiButton-endIcon.MuiButton-iconSizeSmall {
margin-right: -2px;
}
.MuiButton-iconSizeSmall > *:first-child {
font-size: 18px;
}
.MuiButton-iconSizeMedium > *:first-child {
font-size: 20px;
}
.MuiButton-iconSizeLarge > *:first-child {
font-size: 22px;
}
</style><style data-jss="" data-meta="MuiDivider">
.MuiDivider-root {
border: none;
height: 1px;
margin: 0;
flex-shrink: 0;
background-color: rgba(0, 0, 0, 0.12);
}
.MuiDivider-absolute {
left: 0;
width: 100%;
bottom: 0;
position: absolute;
}
.MuiDivider-inset {
margin-left: 72px;
}
.MuiDivider-light {
background-color: rgba(0, 0, 0, 0.08);
}
.MuiDivider-middle {
margin-left: 16px;
margin-right: 16px;
}
.MuiDivider-vertical {
width: 1px;
height: 100%;
}
.MuiDivider-flexItem {
height: auto;
align-self: stretch;
}
</style><style data-jss="" data-meta="MuiPaper">
.MuiPaper-root {
color: rgba(0, 0, 0, 0.87);
transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
background-color: #fff;
}
.MuiPaper-rounded {
border-radius: 4px;
}
.MuiPaper-outlined {
border: 1px solid rgba(0, 0, 0, 0.12);
}
.MuiPaper-elevation0 {
box-shadow: none;
}
.MuiPaper-elevation1 {
box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation2 {
box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation3 {
box-shadow: 0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation4 {
box-shadow: 0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation5 {
box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation6 {
box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);
}
.MuiPaper-elevation7 {
box-shadow: 0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12);
}
.MuiPaper-elevation8 {
box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);
}
.MuiPaper-elevation9 {
box-shadow: 0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12);
}
.MuiPaper-elevation10 {
box-shadow: 0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12);
}
.MuiPaper-elevation11 {
box-shadow: 0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12);
}
.MuiPaper-elevation12 {
box-shadow: 0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12);
}
.MuiPaper-elevation13 {
box-shadow: 0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12);
}
.MuiPaper-elevation14 {
box-shadow: 0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12);
}
.MuiPaper-elevation15 {
box-shadow: 0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12);
}
.MuiPaper-elevation16 {
box-shadow: 0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12);
}
.MuiPaper-elevation17 {
box-shadow: 0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12);
}
.MuiPaper-elevation18 {
box-shadow: 0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12);
}
.MuiPaper-elevation19 {
box-shadow: 0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12);
}
.MuiPaper-elevation20 {
box-shadow: 0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12);
}
.MuiPaper-elevation21 {
box-shadow: 0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12);
}
.MuiPaper-elevation22 {
box-shadow: 0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12);
}
.MuiPaper-elevation23 {
box-shadow: 0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12);
}
.MuiPaper-elevation24 {
box-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);
}
</style><style data-jss="" data-meta="MuiCard">
.MuiCard-root {
overflow: hidden;
}
</style><style data-jss="" data-meta="MuiCardContent">
.MuiCardContent-root {
padding: 16px;
}
.MuiCardContent-root:last-child {
padding-bottom: 24px;
}
</style><style data-jss="" data-meta="MuiTypography">
.MuiTypography-root {
margin: 0;
}
.MuiTypography-body2 {
font-size: 16px;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.43;
letter-spacing: 0.01071em;
}
.MuiTypography-body1 {
font-size: 1rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.5;
letter-spacing: 0.00938em;
}
.MuiTypography-caption {
font-size: 0.75rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.66;
letter-spacing: 0.03333em;
}
.MuiTypography-button {
font-size: 0.875rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 500;
line-height: 1.75;
letter-spacing: 0.02857em;
text-transform: uppercase;
}
.MuiTypography-h1 {
font-size: 6rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 300;
line-height: 1.167;
letter-spacing: -0.01562em;
}
.MuiTypography-h2 {
font-size: 3.75rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 300;
line-height: 1.2;
letter-spacing: -0.00833em;
}
.MuiTypography-h3 {
font-size: 3rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.167;
letter-spacing: 0em;
}
.MuiTypography-h4 {
font-size: 2.125rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.235;
letter-spacing: 0.00735em;
}
.MuiTypography-h5 {
font-size: 1.5rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.334;
letter-spacing: 0em;
}
.MuiTypography-h6 {
font-size: 1.25rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 500;
line-height: 1.6;
letter-spacing: 0.0075em;
}
.MuiTypography-subtitle1 {
font-size: 1rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.75;
letter-spacing: 0.00938em;
}
.MuiTypography-subtitle2 {
font-size: 0.875rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 500;
line-height: 1.57;
letter-spacing: 0.00714em;
}
.MuiTypography-overline {
font-size: 0.75rem;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 2.66;
letter-spacing: 0.08333em;
text-transform: uppercase;
}
.MuiTypography-srOnly {
width: 1px;
height: 1px;
overflow: hidden;
position: absolute;
}
.MuiTypography-alignLeft {
text-align: left;
}
.MuiTypography-alignCenter {
text-align: center;
}
.MuiTypography-alignRight {
text-align: right;
}
.MuiTypography-alignJustify {
text-align: justify;
}
.MuiTypography-noWrap {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.MuiTypography-gutterBottom {
margin-bottom: 0.35em;
}
.MuiTypography-paragraph {
margin-bottom: 16px;
}
.MuiTypography-colorInherit {
color: inherit;
}
.MuiTypography-colorPrimary {
color: #2196f3;
}
.MuiTypography-colorSecondary {
color: #f44336;
}
.MuiTypography-colorTextPrimary {
color: rgba(0, 0, 0, 0.87);
}
.MuiTypography-colorTextSecondary {
color: rgba(0, 0, 0, 0.54);
}
.MuiTypography-colorError {
color: #f44336;
}
.MuiTypography-displayInline {
display: inline;
}
.MuiTypography-displayBlock {
display: block;
}
</style><style data-jss="" data-meta="MuiTable">
.MuiTable-root {
width: 100%;
display: table;
border-spacing: 0;
border-collapse: collapse;
}
.MuiTable-root caption {
color: rgba(0, 0, 0, 0.54);
padding: 16px;
font-size: 0.875rem;
text-align: left;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.43;
caption-side: bottom;
letter-spacing: 0.01071em;
}
.MuiTable-stickyHeader {
border-collapse: separate;
}
</style><style data-jss="" data-meta="MuiTableBody">
.MuiTableBody-root {
display: table-row-group;
}
</style><style data-jss="" data-meta="MuiTableCell">
.MuiTableCell-root {
display: table-cell;
padding: 16px;
font-size: 0.875rem;
text-align: left;
font-family: "Roboto", "Helvetica", "Arial", sans-serif;
font-weight: 400;
line-height: 1.43;
border-bottom: 1px solid
rgba(224, 224, 224, 1);
letter-spacing: 0.01071em;
vertical-align: inherit;
}
.MuiTableCell-head {
color: rgba(0, 0, 0, 0.87);
font-weight: 500;
line-height: 1.5rem;
}
.MuiTableCell-body {
color: rgba(0, 0, 0, 0.87);
}
.MuiTableCell-footer {
color: rgba(0, 0, 0, 0.54);
font-size: 0.75rem;
line-height: 1.3125rem;
}
.MuiTableCell-sizeSmall {
padding: 6px 24px 6px 16px;
}
.MuiTableCell-sizeSmall:last-child {
padding-right: 16px;
}
.MuiTableCell-sizeSmall.MuiTableCell-paddingCheckbox {
width: 24px;
padding: 0 12px 0 16px;
}
.MuiTableCell-sizeSmall.MuiTableCell-paddingCheckbox:last-child {
padding-left: 12px;
padding-right: 16px;
}
.MuiTableCell-sizeSmall.MuiTableCell-paddingCheckbox > * {
padding: 0;
}
.MuiTableCell-paddingCheckbox {
width: 48px;
padding: 0 0 0 4px;
}
.MuiTableCell-paddingCheckbox:last-child {
padding-left: 0;
padding-right: 4px;
}
.MuiTableCell-paddingNone {
padding: 0;
}
.MuiTableCell-paddingNone:last-child {
padding: 0;
}
.MuiTableCell-alignLeft {
text-align: left;
}
.MuiTableCell-alignCenter {
text-align: center;
}
.MuiTableCell-alignRight {
text-align: right;
flex-direction: row-reverse;
}
.MuiTableCell-alignJustify {
text-align: justify;
}
.MuiTableCell-stickyHeader {
top: 0;
left: 0;
z-index: 2;
position: sticky;
background-color: #fafafa;
}
</style><style data-jss="" data-meta="MuiTableHead">
.MuiTableHead-root {
display: table-header-group;
}
</style><style data-jss="" data-meta="MuiTableRow">
.MuiTableRow-root {
color: inherit;
display: table-row;
outline: 0;
vertical-align: middle;
}
.MuiTableRow-root.MuiTableRow-hover:hover {
background-color: rgba(0, 0, 0, 0.04);
}
.MuiTableRow-root.Mui-selected, .MuiTableRow-root.Mui-selected:hover {
background-color: rgba(244, 67, 54, 0.08);
}
</style><link rel="prefetch" href="/page-data/sign-in/page-data.json" crossorigin="anonymous" as="fetch"><link rel="prefetch" href="/page-data/sign-up/page-data.json" crossorigin="anonymous" as="fetch"><link rel="prefetch" href="/component---src-pages-sign-in-js-d8aa304cf0c9d741f3e5.js"></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"> <div class="Layout__Wrapper-h1dut3-0"><div><div class="Sidebar__MenuExpanderWrapper-ufe7yk-5 ihlCVA"><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined MuiButton-outlinedPrimary" tabindex="0" type="button"><span class="MuiButton-label"><span><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="bars" class="svg-inline--fa fa-bars Sidebar__StyledIcon-ufe7yk-0 YBsmE" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"></path></svg>Avaa valikko</span></span><span class="MuiTouchRipple-root"></span></button></div><div class="Sidebar__SidebarContainer-ufe7yk-1 dtBRfY"><div class="Sidebar__Brand-ufe7yk-4 ihECir">Python Programming MOOC 2022</div><nav class="Sidebar__TreeViewContainer-ufe7yk-3 bEkBoE"><ul class="TreeView__StyledUl-sc-1xcycfy-0 hQUvLH"><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-about-this-course"><a aria-current="page" active="t" class="TreeViewItem__NavigationLink-sc-1jcweii-3 lkkBtq" href="/"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">About this course</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-grading-and-exams"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/grading-and-exams"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Grading and exams</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-all-exercises"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/all-exercises"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">All exercises</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-advanced-course-in-programming-exam-25.02."><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/exam-adv"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Advanced Course in Programming exam 25.02.</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-support-and-assistance"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/support-and-assistance"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Support and assistance</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-frequently-asked-questions"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/faq"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Frequently asked questions</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-common-error-messages"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/error_messages"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Common error messages</div></li></a></div><div class="TreeViewItem__Centered-sc-1jcweii-10 qRVwY"><hr class="MuiDivider-root TreeViewItem__StyledDivider-sc-1jcweii-9 kWwEIh"><b>Introduction to Programming</b></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-1"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-1"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 1</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-2"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-2"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 2</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-3"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-3"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 3</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-4"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-4"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 4</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-5"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-5"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 5</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-6"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-6"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 6</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-7"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-7"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 7</div></li></a></div><div class="TreeViewItem__Centered-sc-1jcweii-10 qRVwY"><hr class="MuiDivider-root TreeViewItem__StyledDivider-sc-1jcweii-9 kWwEIh"><b>Advanced Course in Programming</b></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-8"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-8"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 8</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-9"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-9"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 9</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-10"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-10"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 10</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-11"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-11"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 11</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-12"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-12"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 12</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-13"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-13"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 13</div></li></a></div><div class="TreeViewItem__ItemTitleWrapper-sc-1jcweii-6 eDWNxb nav-item-part-14"><a active="f" class="TreeViewItem__NavigationLink-sc-1jcweii-3 iCdslM" href="/part-14"><li class="TreeViewItem__ListItem-sc-1jcweii-1 Zeqbp"><div class="TreeViewItem__ListItemLabel-sc-1jcweii-2 ekfYBF">Part 14</div></li></a></div></ul></nav><div class="Sidebar__LogoContainer-ufe7yk-2 cLezdY"><a href="https://mooc.fi" class="Logo__StyledLink-ou6uxm-2 gEPZLZ"><img src="data:image/png;base64,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" class="Logo__LogoImg-ou6uxm-0 bTbSTv"><div color="inherit" class="Logo__LogoTypography-ou6uxm-1 kghTTf">MOOC.fi</div></a></div></div></div><div class="Layout__SidebarPush-h1dut3-1 dHWiMu"><div class="TopBar__TopBarContainer-zuyem9-0 liaxpG"><a class="Button__StyledLink-sc-1rnhkgo-0 etuUtS" href="/sign-up"><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined" tabindex="0" type="button"><span class="MuiButton-label">Create a new account</span><span class="MuiTouchRipple-root"></span></button></a><a class="Button__StyledLink-sc-1rnhkgo-0 etuUtS" href="/sign-in"><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined" tabindex="0" type="button"><span class="MuiButton-label">Log in</span><span class="MuiTouchRipple-root"></span></button></a></div><main class="ContentArea__ContentAreaContainer-fn314x-0 hgvLGt content-area"><header class="Banner__BannerWrapper-sc-1ndnsed-0 iOCbpW"><div class="Banner__Heading-sc-1ndnsed-1 iavEDy">Python Programming MOOC 2022</div><div class="Banner__SubHeading-sc-1ndnsed-2 kpEseA">Python Programming MOOC</div></header><div class="Container-sc-1fpq201-0 euEyjv"><article class="InfoPageTemplate__ContentWrapper-sc-16e1c2c-0 dxiimO"><h1>About this course</h1><div><aside style="--color:#528afc" class="TextBox__Wrapper-sc-16p8bmv-0 gcgPmP"><h3 class="TextBox__Header-sc-16p8bmv-2 iYmyMl"><svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="circle-info" class="svg-inline--fa fa-circle-info fa-1x TextBox__StyledIcon-sc-16p8bmv-1 bMZpJh" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"></path></svg>Note</h3><div class="TextBox__Body-sc-16p8bmv-3 biKZua"><div><span class="MuiTypography-root MuiTypography-colorError">This course page is expired.</span></div><br><div><b>The material for 2023 version of this MOOC can be found here: <a href="https://programming-23.mooc.fi/" target="_blank" rel="noopener noreferrer">https://programming-23.mooc.fi/</a></b></div></div></aside><p>This is the course material page for the Introduction to Programming course (BSCS1001, 5 cr) and the Advanced Course in Programming (BSCS1002, 5 cr) from the Department of Computer Science at the University of Helsinki.</p><p>To pass either of the two courses you are expected to complete programming exercises and take part in an exam. Please see the <a href="/grading-and-exams">Grading and exams</a> page for more details.</p><p>The Introduction to Programming course consists of parts 1 through 7 in the material, and the Advanced Course in Programming consists of parts 8 through 14.</p><p><strong>NB:</strong> It is <strong>no longer possible</strong> to directly apply for a right to study at the University of Helsinki through these courses. If you are interested in studying at the University of Helsinki, please have a look at the <a href="https://www.helsinki.fi/en/admissions-and-education" target="_blank" rel="noopener noreferrer">admissions website</a>.</p><h2 class="material-header" id="support-channels-on-the-course">Support channels on the course<a href="#support-channels-on-the-course" aria-label="support channels on the course permalink" class="anchor after"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a></h2><p>The official course support channels are available through Zoom and Discord. The course channels in Discord are available through <a href="https://study.cs.helsinki.fi/discord/join/ohjelmoinnin_mooc" target="_blank" rel="noopener noreferrer">this link</a>.</p><p>Please see the <a href="/support-and-assistance">Support and assistance</a> page for more details.</p><p>Use Discord primarily for communication. You can be in contact with the course teachers by e-mail <a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer">[email protected]</a>.</p><h2 class="material-header" id="timetable">Timetable<a href="#timetable" aria-label="timetable permalink" class="anchor after"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a></h2><p>The course will be open until the end of the year 2022.</p><h2 class="material-header" id="lectures">Lectures<a href="#lectures" aria-label="lectures permalink" class="anchor after"><svg aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a></h2><p>There are no more lectures left this year. The next lectures are given in Fall 2023.</p><p>Note, that there are no lectures for parts 13 and 14.</p><p>Captures of lectures are found below. The captures are from years 2021 and 2022.</p><div class="MuiPaper-root MuiPaper-elevation1 MuiPaper-rounded"><table class="MuiTable-root">
<thead class="MuiTableHead-root">
<tr class="MuiTableRow-root MuiTableRow-head">
<th class="MuiTableCell-root MuiTableCell-head Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq" scope="col">Part</th>
<th class="MuiTableCell-root MuiTableCell-head Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq" scope="col">Recording</th>
</tr>
</thead>
<tbody class="MuiTableBody-root">
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 1 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/AWkZLibDfg4">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 2</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/W1ybi4ZGaLY">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 3 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/Xqb_SnPETUY">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 4 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/qmOpBRKzgZc">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 5 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/X-XTcZuMj_k">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 6</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/ePghbQDhOKU">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 7</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/yftLKzcNhh4">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 8 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/IvaVCaNGNis">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 9 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/r6vV5SXpmWs">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 10 (2022)</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/xD1Sh2vwbOI">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 11</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/vp18ipCMSag">Recording</a></td>
</tr>
<tr class="MuiTableRow-root">
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq">Part 12</td>
<td class="MuiTableCell-root MuiTableCell-body Table__StyledTableCell-sc-1s2xaqw-0 cyEqUq"><a href="https://youtu.be/eTAn4yu1xFQ">Recording</a></td>
</tr>
</tbody>
</table></div></div></article></div></main><footer class="Footer__FooterWrapper-sc-16r343g-5 cRKTHN"><div class="Footer__FooterBackground-sc-16r343g-6 czrnXB"></div><div class="Footer__FooterContent-sc-16r343g-7 jdXdRZ"><div class="MuiPaper-root MuiCard-root Footer__StyledCard-sc-16r343g-8 kwpmGh MuiPaper-elevation1 MuiPaper-rounded"><div class="MuiCardContent-root Footer__StyledCardContent-sc-16r343g-9 efHvdw"><div class="Footer__GithubContainer-sc-16r343g-3 cPxqJA"><a href="https://github.com/rage/programming-22" target="_blank" rel="noopener noreferrer"><svg aria-labelledby="svg-inline--fa-title-3B96dI2URcgr" data-prefix="fab" data-icon="github" class="svg-inline--fa fa-github fa-3x Footer__StyledIcon-sc-16r343g-0 dovSVG" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><title id="svg-inline--fa-title-3B96dI2URcgr">Source code of the material</title><path fill="currentColor" d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg><div>Source code of the material</div></a></div><div class="Footer__ButtonContainer-sc-16r343g-4 cMslxx"><a class="Button__StyledLink-sc-1rnhkgo-0 etuUtS" href="/report-issue"><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined" tabindex="0" type="button"><span class="MuiButton-label">Report issue</span><span class="MuiTouchRipple-root"></span></button></a><a class="Button__StyledLink-sc-1rnhkgo-0 etuUtS" href="/edit-page?path=/data/index.md"><button class="MuiButtonBase-root MuiButton-root MuiButton-outlined" tabindex="0" type="button"><span class="MuiButton-label">Edit page</span><span class="MuiTouchRipple-root"></span></button></a></div><div class="Footer__ContentContainer-sc-16r343g-2 hTuHSk">This course is created by the Agile Education Research group<!-- --> <a href="https://www.helsinki.fi/en/researchgroups/data-driven-education" target="_blank" rel="noopener noreferrer">of the University of Helsinki</a>.</div><div class="Footer__ContentContainer-sc-16r343g-2 hTuHSk"><a href="/credits">About the material and its creators</a>.</div><div class="Footer__SocialContainer-sc-16r343g-1 ftXwNe"><a href="https://twitter.com/moocfi" target="_blank" rel="noopener noreferrer" aria-label="Mooc.fi Twitter profile"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="twitter" class="svg-inline--fa fa-twitter fa-3x Footer__StyledIcon-sc-16r343g-0 dovSVG" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg></a><a href="https://www.facebook.com/Moocfi" target="_blank" rel="noopener noreferrer" aria-label="Mooc.fi Facebook profile"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook" class="svg-inline--fa fa-facebook fa-3x Footer__StyledIcon-sc-16r343g-0 dovSVG" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg></a><a href="https://www.youtube.com/channel/UCkHoQ5p9skFdyjrV3_tnUrA" target="_blank" rel="noopener noreferrer" aria-label="Mooc.fi Facebook profile"><svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="youtube" class="svg-inline--fa fa-youtube fa-3x Footer__StyledIcon-sc-16r343g-0 dovSVG" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg></a></div><div class="Footer__BrandsContainer-sc-16r343g-10 jhYagR"><a href="https://helsinki.fi" target="_blank" rel="noopener noreferrer"><img alt="Helsingin yliopisto" src="data:image/png;base64,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"></a><a href="https://mooc.fi" target="_blank" rel="noopener noreferrer"><img alt="MOOC.fi" src="/static/moocfi-logo-bw-40fb2db8a1b68fff676338919b31ae7c.png"></a></div></div></div></div></footer></div></div><script type="application/ld+json">{"@context":"http://schema.org","@type":"Course","name":"Programming MOOC 2022","description":"","provider":{"@type":"Organization","name":"MOOC.fi","sameAs":"https://mooc.fi"},"publisher":{"@type":"Organization","name":"University of Helsinki","sameAs":"https://www.helsinki.fi/"},"hasCourseInstance":[{"@type":"CourseInstance","name":"Programming MOOC 2022","courseMode":["MOOC","online"],"location":{"@type":"Place","name":"Exactum, Kumpulan kampus","address":"Gustaf Hällströmin katu 2b 00560 Helsinki, Finland"},"startDate":"2022-01-10","audience":{"@type":"EducationalAudience","educationalRole":"student","audienceType":"everyone"},"inLanguage":{"@type":"Language","name":"English","alternateName":"en"},"isAccessibleForFree":true}]}</script></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-916d55a13dc7cd79ae15.js"],"app":["/app-8a35f0f88222fff6e95b.js"],"component---src-pages-404-js":["/component---src-pages-404-js-f7e58038e05b79c0e8e1.js"],"component---src-pages-credits-js":["/component---src-pages-credits-js-b268a088c5ed1520e068.js"],"component---src-pages-edit-page-js":["/component---src-pages-edit-page-js-9ac4ed9fe3c26b7160ac.js"],"component---src-pages-missing-info-js":["/component---src-pages-missing-info-js-3914327631064ad3c3ec.js"],"component---src-pages-profile-js":["/component---src-pages-profile-js-c5eca63a9d56c833cd91.js"],"component---src-pages-report-issue-js":["/component---src-pages-report-issue-js-cdee9882e47acfadd532.js"],"component---src-pages-sign-in-js":["/component---src-pages-sign-in-js-d8aa304cf0c9d741f3e5.js"],"component---src-pages-sign-up-js":["/component---src-pages-sign-up-js-a8d90514fc1b8bda5fc7.js"],"component---src-templates-course-content-template-js":["/component---src-templates-course-content-template-js-66e6153df67d76333a74.js"],"component---src-templates-course-info-template-js":["/component---src-templates-course-info-template-js-31f7fe69b311f9e8edb6.js"],"component---src-templates-course-part-overview-template-js":["/component---src-templates-course-part-overview-template-js-d78eb0e6de63f1644747.js"],"component---src-templates-info-page-template-js":["/component---src-templates-info-page-template-js-7cedf74e17cfcd45085d.js"]};/*]]>*/</script><script src="/polyfill-916d55a13dc7cd79ae15.js" nomodule=""></script><script src="/component---src-templates-info-page-template-js-7cedf74e17cfcd45085d.js" async=""></script><script src="/8536b526e15da5462f650a580b79ed0a385338f6-a1a82df1f1a40572a835.js" async=""></script><script src="/26587bc536050a6bff591a69d19ce90d332e7f8b-553a4651a9968d72bac9.js" async=""></script><script src="/e8647879-2a55d0bd4baeec3fd269.js" async=""></script><script src="/2cca2479-5d6bd31cf02ef4cb4b20.js" async=""></script><script src="/c16184b3-807032ea10de60f8903c.js" async=""></script><script src="/app-8a35f0f88222fff6e95b.js" async=""></script><script src="/framework-5376661c4604f30dbcee.js" async=""></script><script src="/webpack-runtime-ae78f7f2a9a3820b65b7.js" async=""></script></body></html>