Hackerspace Istanbul'un web sitesi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hackerspace.ist/public/404.html

103 lines
109 KiB

6 years ago
<head>
5 years ago
<meta name="generator" content="Hugo 0.51" />
6 years ago
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="robots" content="noindex">
<title>404 Error | hackerspace istanbul</title>
5 years ago
<link rel="icon" sizes="any" href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2Zzg5MSIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgNDYuNTY2NjY5IDQ2LjgzMTI0OSIKICAgaGVpZ2h0PSI0Ni44MzEyNDltbSIKICAgd2lkdGg9IjQ2LjU2NjY2OW1tIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODg1IiAvPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg4OCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjIuMzc4NTcsLTE2Ny43NTEwNCkiCiAgICAgaWQ9ImxheWVyMSI+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg4NjAiCiAgICAgICBkPSJtIC0xNDYuMjM4OTksMTY3Ljc1MTA0IHYgMTQuMjg3NSBoIDE0LjAyMjkyIHYgLTE0LjI4NzUgaCAtMTQuMDIyOTIiCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoNi0zIgogICAgICAgZD0ibSAtMTMwLjA5OTQsMTgzLjg5MDYzIHYgMTQuMjg3NSBoIDE0LjI4NzUgdiAtMTQuMjg3NSB6IgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIgLz4KICAgIDxwYXRoCiAgICAgICBpZD0icGF0aDg3MCIKICAgICAgIGQ9Im0gLTE2Mi4zNzg1NywyMDAuMjk0NzkgdiAxNC4yODc1IGggMTQuMDIyOTIgdiAtMTQuMjg3NSBoIC0xNC4wMjI5MiIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7c3Ryb2tlOm5vbmU7c3Ryb2tlLXdpZHRoOjAuMjY0NTgzMzIiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9InBhdGg4NjgiCiAgICAgICBkPSJtIC0xNDYuMjM4OTksMjAwLjI5NDc5IHYgMTQuMjg3NSBoIDE0LjAyMjkyIHYgLTE0LjI4NzUgaCAtMTQuMDIyOTIiCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDowLjI2NDU4MzMyIiAvPgogICAgPHBhdGgKICAgICAgIGlkPSJwYXRoODY2IgogICAgICAgZD0ibSAtMTMwLjA5OTQsMjAwLjI5NDc5IHYgMTQuMjg3NSBoIDE0LjI4NzUgdiAtMTQuMjg3NSBoIC0xNC4yODc1IgogICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yNjQ1ODMzMiIgLz4KICA8L2c+Cjwvc3ZnPgo=">
6 years ago
<meta name="theme-color" content="#000">
<style media="screen">
@keyframes intro {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@font-face {
font-family: 'Londrina Outline';
src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAH/AABIAAAABIQQAAH9XAAEAQgAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4b3GocIAZgAINiCAQRCAqDwHSC31cBNgIkA4ckC4NUAAQgBYpsB4VbDAc/d2ViZgYbWu0H0FvbA9wOoG78P2lHBvI4JLANR0X95KRCzv7/PyaocdiHq2DMcMGLsMiaWYKtslVWtlPStp1Z9ZGK3HCCYZehVz/3NVwXF1xwadluHEkYIDqkn3KQiW0vl5s0Q7dseO3zxiDZ/wlMOZL0eVY4vwVOEKAREvqPUPLpwVboG+7U5DU7RZ7///2e/Vz7XFSTaHMPxapbpTPIjK4heieKVfHRHzRL8P8Znl+b7/26hKuGu+PuOOgjWrjkjr47ODKOLlEQRGywpg3GVHSbUVNnThe6TWcs3Zwu0hm1lGhyKUSWPCgkcCQtiGgtax1wxyDUCR1huhfCKGxtZNbOBOgBQLEGDMifcNNiAhGIKRElreMl1SjtS42kwvi/9Te7nbnD9l7FqpMtk67+f//7WV+781c1z0uuAZFrQOIkpEX8CJJpkmZl+OC5VM1n1bw/uFzwOGYhBAlxqTrV8p5/zmaunM2iLckOIBwAFp/9NwCmdFW2bJZsFhxCleODzNFBamhYuNtHqNxR92dW29ygkQYWBIMLNAt49ESS+t+OXOaB597ffeOPPRpjHA80goBiKZBAsrGG3LTue+fhdXrff6yIxQXiiB1nAiEF8O//vy4raTqTPBOppJ4pE4SzYFgKDUHywXYNEEfvrrP7djPpq8CA3e4BwnjPKdjlbOdfp7neca5AE2+Ew3hMU7t3o/EkGSXHqeSQ5Vzu2Xdpz3bJdnKXsCR/yRCFbOmAsES2c4QuUzoh0car0injZbtuXcaOwCONvHbfuiyE61b/y/btUw4wqIc6mAQZHsVUbvO6ervqcrcZxLoas2Gwh8/qkxWPEM0tSCB8+NvFBvMpIvmiSRAx77SfXUPdQy1hkN8JnGjyZ1tWwkzLapjXYyVlNcwlzMdvi1CX9DMSZsK8flYPtgKJA+F4CIlUQOZcD+Lk0v6jJjipNmmVZGDPWqCEMidvojvfeqscyLR7ehjSO4Ssa7zCCFcIIYTxHO/4CzMvc/YXC7g6vPl7dXRZZSRAGBmLEBL13vthIQBvl1VPAt5cD5sMnxIKu2knA+YCquihnwPDQFYSeiIvgeCVk10tgLyr5STk5bMdWw2YdLD8zoU6xRPdZH3eITvhQ7/72+8hw+CUx52+LMjN3MvPRb3eoSqmEstcmVVXHTVcj8mP0lEvNBA1osvQD9HP0R/Rh5g/ZsPmYRPYN9jvuBFvwmcJjOATCUQPcYT4kPichJDIJD5JSyokNZHGSedIl8mAzCdryT3kd8l/U4QUJcVGyaVUUzoofZRxyjLKRsppygXKQ6oXVUsNpg5Tf6Sl0wZow7RxymnaVdqXtJe0/x8dEqLTKeN0Nl1FD+Mhs0FTLCKyVrmS80nPccTUSJKjQKiyjIFRfHXbtQsGrXSl4LMe33XjWjJIUaaqAaDbGIt2vYhifVZisA2wM6twg4w77JaHXmRowuGtxZfE9fcx8EWRng90H86Dl+EqWqO7o1Wj1QrbR4uQ7QB5UH+VhLi3cywZooCpxhlBIVvUa/3ISttCvohGKqxgQ6R+5pdqm5WTpXANPZfQh+B1Ks6eomsUs68D8ViP874x5m108gows8Bqwi9OJWyu8FDZGSiiVC4BMIahYiNijAnIA/oyFFuhDxrP2w8XRcvrC69M+JPeaT//7+Lnvzc7/+99Olg63JGMU0xRTTuqjpdPV86a8/2LQwtiTmVsJd4qAlQAE2Ih8RL2iG8kyVIkqTLMoFispHVyJz4CApfBYYRTpkCno442btrh4iq60ueverzXVnenkbQQjm3TcjcPE33yHRSjyDn2ilgiSez2ZmVdsO5sbUVfjx+/00QSET+5QpQTzMv2UvUeU+gr+lQkxAY3VkF7smipqPhIEaJy0korbE7MqHUBW4hRTOGmsgEZq2AIDWxCE4ZRFNKNsl0tyihiCt20GSWkyd88CAfs6MDCC0ooVS6tdPlT+XnWthEPBYuqFROgyjOOorOEAQQ4K5LChwNdMJoSBi5WWGELY0x/lb5Viz1hjXngo7q0OSOkjhA6a1TtYpGXA2in1DlKm8a464FCCkODgoAAMmxJugiaOlfnbU0AyApOfbl/EsiCJ+GQxFhFg1iUif/u7a0d9iQdihGqVUejjo8Pzybng4uRidLRkhGKAdc62i44bv3tM/80G1eDHnbC8kNc4MzHo6Xhlu7MsE3ijAz0JJwrunLDD3u+0+2BG1QjmXgFEpqKpnTANFHIWpnzeS+oz6i4eEzNI353eCI3HU2VdC2zTqndJDkIAUjoKE4d40ABiUPJDMVWNedi/qe+0CVTzISzQYJQpKgqD8jP0UgrFrvQNrMSIkCcHu+k2vroY2XydVp0SXtcdEaUNG4UDDze1gWskBD7TIzJUXkqoWPGQML3kQEz5sI+JsT5s6HbE0AAnaFHmFffoUe3mKG5uU5w4E7wQMI7HlGdVQjaovRo4paNGmHYNgOBPPDRonA/KQWDB5FO6mmj2HaiaxZE05gX4OYzpDmNFoxk0BSb0BpBMKWFEaXfBDtzLURm8Mrizdpa0+kggsvMttogExsbgEL4SosemqgFFa5qR8e88s5RRsB1/UpwoIGctR5+1k/v7KERNm00FDO9+bSxN7/IZmFqg7WJAVkMJZs42S4IcCegB/JyAtw8XETKrh4QFbW+PDutB0I7nDSunQ4OXdnQMzYzGSSkznvfnS0MOD+scdGv031MosyFHLaAQXMRm4XrhsxK6sjpKh6nZB5iQd6mOEHWT73NEadzgCtpjyBhJllmKLt6cCQAMAY0CZHFiqsbNSuvo6KriBPm323BoE1ZgjE/VWhGXSm5EXUr3OPBPiIrAEEZEZQxDhoACIwji7KHB2oooAYEoyijhgK8Hh7wwFse55RdYH1PSysJ8zKyt8dAxFPPoqeEeux4CSMv0AbCDzVAwBMSISMl1LEnOiPlAcdzoX7sdMCrFBG3IsNKryBaM/XWwEJJjKzHobIxemtgmcZkvQQeImqwWkZkuQ9FlVyycvp/zNETGJnZOTiBXNw8ILCAoIiYhJSsnLyikrKKKlTNgEFDho0YNWYcBkcgUWiMCaxZcxpa2ro4tTJlccqWwyVXngKFihQrUapMuSo12rTrM2yrbabtMetNbzngoEOOOeui2z7zuS986Sv33PejnyGLbgIMmF9ez8UgFqhhx6loUyqaXp/2t1eaNyf71XgQ5DSDi8thVJSLx7gVSBfMFLQG2979+zMrUJyd1e28F/A/Id4MZ6L/yx2zCiax5zUuesm05vJD96dUrZFgtaZc3UWLVj7X2XPvhm6lRbHl33yCPVUWZdCkxLMcQPzXDQt/ZH/0o5A+UY7mxfVaFBuky46u5oXVlrjjlSpPpUB5aNeIFC5uJrv5/VENVm6JXeLCuQxgXnYSEScFB6OtJtK4fGU2s0W4JZWRNFKtMQvdvDNcHlP198cFjnyi5y/etyLV4uO6iJri/MxztewL0XDL2qNoAdo3g7Wi4m9REBXl/V6+Go1Hn2cZtwq2uyjrQCky/RCDRGzFzaZIfEeb3s+/kU5efm6lU0zCk2f6p8JIMe++9MHsoCe4VIBSEBj170LgVCWMwKnDC7vahbt/ViGMrk81hzyXOE71owy5TWbVU0Ay3aO0dzfBtucVQtsm5iMhx4Eh30+BypRba7868SiIywqdGCsay0Qz9rKODJ4meU8FCrS6MXF7/Fl2voYgejFqOgFKHxCJUQZ/erg3p9HG8uEKfP/iYRXJoeqsH8z3hnLXmt+LKWY1FgiZDeRmNBxXNT22dhnFusPQofBipZu7qx4F3mFpYwQNkEFDs7WHoMJWNOtxEBlHJWo1DeEKL4smNSGNLUozTmgDK8cmXg9bz0B2L2P/67eDk9FuhKcvuVJ0jFX659c2P2y8zfh
url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAJswABIAAAABIQgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABlAAAABwAAAAcdIAs6UdERUYAAAGwAAAAHQAAAB4AJwDvR1BPUwAAAdAAAA5CAAAuavxV0KVHU1VCAAAQFAAAACAAAAAgbJF0j09TLzIAABA0AAAAWAAAAGCEnRx+Y21hcAAAEIwAAAGMAAAB4tB8vVhjdnQgAAASGAAAAAQAAAAEACECeWdhc3AAABIcAAAACAAAAAgAAAAQZ2x5ZgAAEiQAAIBIAADgeFcSdedoZWFkAACSbAAAADYAAAA2AuHYKmhoZWEAAJKkAAAAHwAAACQHAgOtaG10eAAAksQAAAJkAAADpIlODThsb2NhAACVKAAAAccAAAHUlPfNDG1heHAAAJbwAAAAIAAAACABNgEMbmFtZQAAlxAAAAIhAAAFbG/huMlwb3N0AACZNAAAAesAAALbi5l7jXByZXAAAJsgAAAABwAAAAdoBoyFd2ViZgAAmygAAAAGAAAABoumWLMAAAABAAAAANQkmLoAAAAAy4JYCQAAAADU2TwleNpjYGRgYOABYjEgZmJgBMIXQMwC5jEAAA2WARcAAAB42tWaa3BU1R3A/7ub12YTHpsQILxCEiEGEgGBEAgGKSqCYB9WClKk09qxU9ui07FM2+nQfiCdjl9sP9T2Q9uZOkNVUh6tWkcRRMSKVrQEEh4GmpB3Nu/dDYnT09859+5mEzZPSGa6Z87Nvef8z//9ursRh4gkylxZLI6nvvHD70uCxLAiSonecXz3iWf0mlhP7Dn565TE5EniSFpnYHfLGWmWHml2JDjyHbsd33bsdfzCUeaoctQ7Ex1VzlXOe5wbnFudTzqfce5zdriSXHNdi13rXc+5zrgqXLWutpjcmI0xP4v5ZUxlTHPs+tinYl+Oi4lLiyuKezbu73Fn4irinfEJ8WnxOfE74p+K3x9/Iv50giSkJeQkPJtwKqHHPcOd6d7oftT9Lfcz7r3u/e7n3L93v+U+6W5LnJuYk5ifuC+x1vOQ58eefZ797rc8H3kuebo9//V8lJTk3p/kTcpOWoZ8eapNCpRPClW7PKi6ZJvqkO2qVXYwS9hzSancIYckUw5LNk8FqgxYv5SrKnHLdNXIqTZOdXKqnVPtsktd5cwSzuRyJl+SoPEvKZA42aQC8gjzMYkHd6M8z94B1Q30ZKBXA71MymUK2k5XtWh4i2yXnapF3maeYDolFU7TVbWkildtlhR4na4+k5nwMwu8eeqsLOf+AVUBV83QK4NemS2TD+588hj3JeoT6J6H7lLopkB3JZJ5OVGMHOvA5OCpC+3oayozHawF7BVzr/ef5vl5pPBIHKuT4HYKfHjVm/BzVTLgNVuVw88/ZY3Eyl5VA83zYN0iXzLSdRhZqiWd3TgwB9BpQNag82L2DqGDw2jXyd0s7iYZK6zgaSlPd8tscQGZDJRXHYdiJZReQeqjSHwQiQ/KozxvUw1IfQGpy5H6Ahy8LS+qa0j+Z3lJHZNX1Ck5qD4G80owrwfzF+Qocv1NvSevqtPymgrK6+pTOabOwWOhugF/7fDnB1MPJ9I4kYSVClUvOKbaXE81vGbzNI+nLOTzoo0STpXyZK1mihfbdcF5LRrwSBY6zFNN2K4JKa4hRTNSNCHBdSSoRIJK2YO/HYCjUnnQxrJJjqCryZYukCdV/RuMbZKpLqPRV+HrlKwGSzF729QHYKoAUwWYfFjkvFSrk4bXeeBLB9+88JPW+VyjfUtG9A8erzoBl4dtS9WDtwVuA3DbALcNtlf5ODWDUx6468JDCtBbIT6+hiftXSXcH4Lrw3hXMnj98Ow3fpCHHJaWe4EMgLsL3H5w+zkxmxOTwdlt+JrP0zSGCx6S8RQvdpyObHn4wwPIvYn5CHMbWtuO/S0fuGRkL8GeLwJ7QL2PvPeAbQ3Y1mJ7HzZvNVpIYzXbWCpEIxEaZ6HRDo1yLBWEThV0KqFTCZ0e6AShE4ROD3QC0KmGhs4FW8G2CmwPwf8NaPgMNh+YusHiB0snWLRufJzosn39Tk6sQGaLZhs0u4DWUd0GdCs0W6HZDM1mI5eVSTZy8g6bVhA5krFBCidS8ZVpWCkNbNOJhpmcSmdvFnloNqezkPJFLPgSMXsQzktlM5juBtPX0EwzUXEOzhuIiBoiog6/13yVAnFI7jKZS2fDevKO5qw9nEN3oZ1Sdq1suBRfSmE31eiyDS60XO14yYfY/hL+2mh8SmevbUTCdiJkB7Mc356MzgJ4t4Y+AbQPaO1XTVLEqbVIW4xVt6Hh7ci6g/kYGivBm6qhEsupkybLr2ZFe2MR2LStM2yPn4dVXFghmej0Gl/6gKydiHckg6UWyA1AbgDyfpPJngzXhixTG3S+3sVKJisZrGQQOQvgJg9Otb8UqCvGv4uNHWuwYz12rMdubdiqBi794NiLPKXY3vK/HJMdT3GuxZa2Hb47kLYHTSZzIhNNFZDZCsG0Gsw6hxYBvdZEkc793eijBX20GH1Us6+5/46J6k5JQndeNJ8HbIHO19i+COnXIrGO8HWGy89lN1yWYP8D3Gtdvg/Fzghdat71+UI4K0ZiLU2KiZ0k+PWSyfKALyCfagjLatVQ0TWlFSpt6KQTnbQa395tLNdi66YFbN1RsZUNwNY1YmzJJjLy8AELS6/JTlY0WjnnALY6wpqGrsMO9cx4m+7HNt066FZBt93ErtO2VdDEQhte3In+/WF/3AUvlscswraLjf/MtvPlLJ6SyBbriJfdJgttkZ3sTTOZzmGyu+4+moy0JVB0mAh02fX5mjzMegIQF+GgBst0ms5kC35kVcJGeGjkVDI1ygMtndGvcLLLVHbd06zhuZj1dcDtNjI1GOk9dhbXeT+IxN1AtduR1gXWLjzrhl3/4tDCFvkJvNMnmudUPGMWPpNFLGURE0tMhBXzdx354D7ibjM6eYi5Bb/fSvw8LAvkcZlDf5ktf2L9KBy8zsnj5P1qzs4EY7auGOh5AVjz2FsB1ns5mw3mOWBeDuYFYF4E5hwwLwJzDpiXgDkbzCvAvEiOAHccqhfgsJx5kXmJWU03pqlkQiUXKulQyYXKSqgUsZoElUKorIRKNlRyoZILlXyoLIRKPlQyobIcKrlQyYfKQqhMhcpUqEyBylSorEKybHyvwNS+LjuedAT7TIzrSNqOvncwdV1xsFJvrnWcTzaxoHNio43lGFgawKJt2QCWejsvltnWCuWBDuwbMLlA++AqbDfH1MB4U5G9xHEW+3tM19K3q/PGmn4nisxaMZrSvXIpMXoIWXXXq6Fy7Vp0ZzhTzjeZ0oFmXGjWjVY9aHQSuX2K7omoV9PR9Wy6jwzg7sCCOZzOxVKLsXI+lWYJPrOMqrMcC64kP6/CDqvhqgj+7oGT+8jOD9AjbcIiW7DGw/Jl+Yo8Il+VR2Ub/fQOuu+d8nUy9eNw8U15QvbI07JX9skf5I9Y6y/ysvwVTg9jtaPyGnZ7F7uVSwVWuySXpQqr1ZILnBkv6HegOc65p/G7Qt6bWtDAhH7wF1GdjIAq59qmOlRQXSDDjh/F1ujYVY26oj5TtYwuxnnqx+2iWMUEL9cKspq19oL6TRTIetWuLqGLi+ghAMwtW4OqOFGW/Czqql81qgauAfN0hQo3ECKI1t9UVaqEv1fJ3uNCkVo/KEX8roJsMjy96qirZyPuA6P1/WFhagZZ7yabhu6bLO6prvraYq82q3fxpl+r68pHfyX0GwO4HQWnV8fVcxpHABO4rRTb+9Mf/6w30Xk1gvLFCaLTaWfyVnWW7NWEVjuJw3DMaB+071puj27oK3TFatGeTy9hrdVZfh6O9G7Vy2joo25gDEW6jf74bpjqECR3XFefkos7I3HZMP3O0M2Mv1774ryXSA6OAcONsUUH2SOo9TuSPNXvfMuA+Kof6ANg7tA1vy+vovHrUTD19GmcmhzQmcK2XYtds3t1xu+zDd1gVD8ZsHJZvROV8/fUUa6nrWqhDqkjA2toKJrUG6H6iu9V
font-weight: normal;
font-style: normal;
}
html, body {
overflow: hidden;
animation: intro 3s both;
animation-delay: 0.15s;
}
body {
background-color: black;
margin: 0;
}
canvas {
position: absolute;
overflow: hidden;
top: 0;
left: 0;
z-index: -1;
}
body {
display: flex;
height: 100vh;
align-items: center;
}
header {
font-family: 'Londrina Outline', sans-serif;
text-align: center;
margin: 0 auto;
font-size: 10vw;
}
h1 {
position: relative;
font-weight: 900;
color: white;
opacity: 0.75;
}
header h1 {
text-align: center;
width: 100%;
}
header h1:before {
content: attr(data-letters);
position: absolute;
left: 0;
overflow: hidden;
width: 100%;
height: 50%;
color: black;
text-shadow: 3px -2px 5px black, -3px 3px 4px black;
text-align: center;
}
header h1:after {
content: attr(data-letters);
position: absolute;
left: -10px;
overflow: hidden;
width: 100%;
height: 49%;
color: white;
}
a {
color: rgba(255,255,255,0.75);
text-decoration: none;
}
</style>
</head>
<body>
<canvas id="c"></canvas>
<header>
<a title="Page Not Found" href="http://hackerspace.ist/">
<h1 data-letters="404"><span>404</span></h1>
</a>
</header>
<script>
class Dots{constructor(width,height,spacing){this.spacing=spacing;this.dots=[];this.alphaStep=1/10;this.cols=Math.floor(width/spacing);this.rows=Math.floor(height/spacing);const canvas=document.createElement('canvas'),ctx=canvas.getContext('2d');canvas.width=width;canvas.height=height;this.canvas=canvas;this.ctx=ctx;this.draw()}draw(){const ctx=this.ctx,spacing=this.spacing;ctx.fillStyle='rgba(24, 129, 141, .1)';this.dots=Array.apply(null,Array(this.cols)).map((n,x)=>{return Array.apply(null,Array(this.rows)).map((p,y)=>{let dot={opacity:0.1,x:x*spacing,y:y*spacing};ctx.fillRect(dot.x,dot.y,1,1);return dot})})}ghost(){const ghostDots=document.createElement('canvas');ghostDots.width=this.canvas.width;ghostDots.height=this.canvas.height;const dotsCtx=ghostDots.getContext('2d');dotsCtx.fillStyle='rgb(24, 129, 141)';this.dots.forEach(col=>{col.forEach(dot=>{dotsCtx.fillRect(dot.x,dot.y,1,1)})});return ghostDots}}class Circuits{constructor(width,height,size,minLength,maxLength){this.size=size;this.width=width;this.height=height;this.cols= ~~(width/size);this.rows= ~~(height/size);this.scene=Array.apply(null,Array(this.cols)).map(()=>new Col(this.rows));this.collection=[];this.minLength=minLength;this.maxLength=maxLength;this.populate();this.draw()}draw(){const canvas=document.createElement('canvas'),ctx=canvas.getContext('2d'),size=this.size;canvas.width=this.width;canvas.height=this.height;ctx.strokeStyle='rgba(59, 177, 188, 1)';ctx.lineWidth=Math.round(size/10);this.collection.forEach(circuit=>{let point=[circuit.start[0],circuit.start[1]],path=circuit.path;ctx.beginPath();ctx.moveTo(point[0]*size+size/2+path[0][0]*size/4,point[1]*size+size/2+path[0][1]*size/4);path.forEach((dir,index)=>{point[0]+=dir[0];point[1]+=dir[1];if(index===path.length-1){ctx.lineTo(point[0]*size+size/2-dir[0]*size/4,point[1]*size+size/2-dir[1]*size/4)}else{ctx.lineTo(point[0]*size+size/2,point[1]*size+size/2)}});ctx.stroke()});ctx.lineWidth= ~~(this.size/5);ctx.strokeStyle='rgba(59, 177, 188, .6)';this.collection.forEach(circuit=>{ctx.beginPath();ctx.arc(circuit.start[0]*size+size/2,circuit.start[1]*size+size/2,size/4,0,2*Math.PI,false);ctx.stroke();ctx.beginPath();ctx.arc(circuit.end[0]*size+size/2,circuit.end[1]*size+size/2,size/4,0,2*Math.PI,false);ctx.stroke()});this.canvas=canvas}populate(){const size=this.size;let start=null,n=1000,maxLength=this.maxLength,minLength=this.minLength,length=0,dir=null;while((start=this.getStart())&&n--){length=minLength+ ~~(Math.random()*(maxLength-minLength));dir=this.getDir(start);this.setUsed(start[0],start[1]);if(dir[0]!==0||dir[1]!==0){let circuit=new Circuit(start,size),moving=true,path=[start[0],start[1]],coords=[start[0],start[1]];length-=1;while(moving&&length){circuit.path.push(dir);circuit.coords.push([path[0],path[1]]);path[0]+=dir[0];path[1]+=dir[1];this.setUsed(path[0],path[1]);dir=this.getDir(path,dir);if(dir[0]===0&&dir[1]===0){moving=false}length-=1}if(circuit.path.length>=minLength){circuit.end=path;circuit.coords.push([path[0],path[1]]);let speed=Math.random()*0.5+0.5;circuit.things.push(things.create(circuit,speed*1));if(circuit.path.length>maxLength/3){speed=Math.random()*0.5+0.5;circuit.things.push(things.create(circuit,-speed,circuit.path.length*size))}if(circuit.path.length>maxLength/1.5){speed=Math.random()*0.5+0.5*(Math.random()>=0.5?-1:1);circuit.things.push(things.create(circuit,speed,Math.random()*circuit.path.length*size))}circuit.length=circuit.path.length*size;this.collection.push(circuit)}}}}getStart(){let found=false,col=null,row=null,free=[],result=false;const scene=this.scene;scene.forEach((col,index)=>{if(col.free){free.push(index)}});if(free.length){col=this.pickOne(free);free.length=0;scene[col].rows.forEach((row,index)=>{if(row===0){free.push(index)}});row=this.pickOne(free);result=[col,row]}return result}pickOne(array){return array[~~(Math.random()*array.length)]}setUsed(x,y){this.scene[x].rows[y]=1;this.scene[x].free-=1}isAvailable(x,y){const scene=this.scene;let result=false;if(typeof scene[x]!=='undefined'){if(typeof scene[x].rows[y]!=='undefined'){if(scene[x].row
</script>
</body>