This commit is contained in:
Roman Hergenreder committed 2018-12-07 13:52:13 +01:00
1 parent 1b071a46e8
commit aa56104b3f
54 files changed
+684 -1086

No files matched your search

+85
View File
@@ -0,0 +1,85 @@
<!DOCTYPE html>
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Piet'ers Gallery</title>
<link rel="stylesheet" href="Piet'ers%20Gallery_files/bootstrap.css">
<link href="Piet'ers%20Gallery_files/css.css" rel="stylesheet">
<link rel="stylesheet" href="Piet'ers%20Gallery_files/baguetteBox.css">
<link rel="stylesheet" href="Piet'ers%20Gallery_files/styles.css">
</head>
<body>
<div class="container gallery-container">
<h1>Piet'ers Gallery</h1>
<p class="page-description text-center">We currently don't plan on selling any artwork!</p>
<div class="tz-gallery">
<div class="row">
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/house.png">
<img src="Piet'ers%20Gallery_files/house.png" alt="House">
<p style="color:grey;">"House" - 3200$</p>
</a>
</div>
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/trees.png">
<img src="Piet'ers%20Gallery_files/trees.png" alt="Trees">
<p style="color:grey;">"Trees" - 4200$</p>
</a>
</div>
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/lake.png">
<img src="Piet'ers%20Gallery_files/lake.png" alt="lake">
<p style="color:grey;">Lake" - 8500$</p>
</a>
</div>
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/sky.png">
<img src="Piet'ers%20Gallery_files/sky.png" alt="Sky">
<p style="color:grey;">"Sky" - 5000$</p>
</a>
</div>
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/sheep.png">
<img src="Piet'ers%20Gallery_files/sheep.png" alt="Sheep">
<p style="color:grey;">"Sheep" - 4030$</p>
</a>
</div>
<div class="col-sm-6 col-md-4">
<a class="lightbox" href="https://hackvent.hacking-lab.com/Mondrian-Gallery/img/snake.png">
<img src="Piet'ers%20Gallery_files/snake.png" alt="Snake">
<p style="color:grey;">"Snake" - 6030$</p>
</a>
</div>
</div>
</div>
</div>
<script src="Piet'ers%20Gallery_files/baguetteBox.js"></script>
<script>
baguetteBox.run('.tz-gallery');
</script><div role="dialog" id="baguetteBox-overlay" style="background-color: rgba(0, 0, 0, 0.8); display: none;" aria-labelledby="baguetteBox-figure-0 baguetteBox-figure-1 baguetteBox-figure-2 baguetteBox-figure-3 baguetteBox-figure-4 baguetteBox-figure-5" aria-describedby="baguetteBox-figcaption-0 baguetteBox-figcaption-1 baguetteBox-figcaption-2 baguetteBox-figcaption-3 baguetteBox-figcaption-4 baguetteBox-figcaption-5" class=""><div id="baguetteBox-slider" style="transform: translate3d(-300%, 0px, 0px);"><div class="full-image" id="baguette-img-0"></div><div class="full-image" id="baguette-img-1"><figure id="baguetteBox-figure-1"><img src="Piet'ers%20Gallery_files/trees.png" alt="Trees"></figure></div><div class="full-image" id="baguette-img-2"><figure id="baguetteBox-figure-2"><img src="Piet'ers%20Gallery_files/lake.png" alt="lake"></figure></div><div class="full-image" id="baguette-img-3"><figure id="baguetteBox-figure-3"><img src="Piet'ers%20Gallery_files/sky.png" alt="Sky"></figure></div><div class="full-image" id="baguette-img-4"><figure id="baguetteBox-figure-4"><img src="Piet'ers%20Gallery_files/sheep.png" alt="Sheep"></figure></div><div class="full-image" id="baguette-img-5"><figure id="baguetteBox-figure-5"><img src="Piet'ers%20Gallery_files/snake.png" alt="Snake"></figure></div></div><button type="button" id="previous-button" aria-label="Previous" class="baguetteBox-button"><svg width="44" height="60"><polyline points="30 10 10 30 30 50" stroke="rgba(255,255,255,0.5)" stroke-width="4" stroke-linecap="butt" fill="none" stroke-linejoin="round"></polyline></svg></button><button type="button" id="next-button" aria-label="Next" class="baguetteBox-button"><svg width="44" height="60"><polyline points="14 10 34 30 14 50" stroke="rgba(255,255,255,0.5)" stroke-width="4" stroke-linecap="butt" fill="none" stroke-linejoin="round"></polyline></svg></button><button type="button" id="close-button" aria-label="Close" class="baguetteBox-button"><svg width="30" height="30"><g stroke="rgb(160,160,160)" stroke-width="4"><line x1="5" y1="5" x2="25" y2="25"></line><line x1="5" y1="25" x2="25" y2="5"></line></g></svg></button></div>
<script src="Piet'ers%20Gallery_files/script.js"></script>
</body></html>
<!-- Mady with <3 by https://twitter.com/xorkiwi -->
@@ -0,0 +1,6 @@
/*!
* baguetteBox.js
* @author feimosi
* @version 1.8.1
* @url https://github.com/feimosi/baguetteBox.js
*/#baguetteBox-overlay{display:none;opacity:0;position:fixed;overflow:hidden;top:0;left:0;width:100%;height:100%;z-index:1000000;background-color:#222;background-color:rgba(0,0,0,.8);-webkit-transition:opacity .5s ease;transition:opacity .5s ease}#baguetteBox-overlay.visible{opacity:1}#baguetteBox-overlay .full-image{display:inline-block;position:relative;width:100%;height:100%;text-align:center}#baguetteBox-overlay .full-image figure{display:inline;margin:0;height:100%}#baguetteBox-overlay .full-image img{display:inline-block;width:auto;height:auto;max-height:100%;max-width:100%;vertical-align:middle;-moz-box-shadow:0 0 8px rgba(0,0,0,.6);box-shadow:0 0 8px rgba(0,0,0,.6)}#baguetteBox-overlay .full-image figcaption{display:block;position:absolute;bottom:0;width:100%;text-align:center;line-height:1.8;white-space:normal;color:#ccc;background-color:#000;background-color:rgba(0,0,0,.6);font-family:sans-serif}#baguetteBox-overlay .full-image:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}#baguetteBox-slider{position:absolute;left:0;top:0;height:100%;width:100%;white-space:nowrap;-webkit-transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,-webkit-transform .4s ease;transition:left .4s ease,transform .4s ease;transition:left .4s ease,transform .4s ease,-webkit-transform .4s ease,-moz-transform .4s ease}#baguetteBox-slider.bounce-from-right{-webkit-animation:bounceFromRight .4s ease-out;animation:bounceFromRight .4s ease-out}#baguetteBox-slider.bounce-from-left{-webkit-animation:bounceFromLeft .4s ease-out;animation:bounceFromLeft .4s ease-out}@-webkit-keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@keyframes bounceFromRight{0%,100%{margin-left:0}50%{margin-left:-30px}}@-webkit-keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}@keyframes bounceFromLeft{0%,100%{margin-left:0}50%{margin-left:30px}}.baguetteBox-button#next-button,.baguetteBox-button#previous-button{top:50%;top:calc(50% - 30px);width:44px;height:60px}.baguetteBox-button{position:absolute;cursor:pointer;outline:0;padding:0;margin:0;border:0;-moz-border-radius:15%;border-radius:15%;background-color:#323232;background-color:rgba(50,50,50,.5);color:#ddd;font:1.6em sans-serif;-webkit-transition:background-color .4s ease;transition:background-color .4s ease}.baguetteBox-button:focus,.baguetteBox-button:hover{background-color:rgba(50,50,50,.9)}.baguetteBox-button#next-button{right:2%}.baguetteBox-button#previous-button{left:2%}.baguetteBox-button#close-button{top:20px;right:2%;right:calc(2% + 6px);width:30px;height:30px}.baguetteBox-button svg{position:absolute;left:0;top:0}.baguetteBox-spinner{width:40px;height:40px;display:inline-block;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px}.baguetteBox-double-bounce1,.baguetteBox-double-bounce2{width:100%;height:100%;-moz-border-radius:50%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:bounce 2s infinite ease-in-out;animation:bounce 2s infinite ease-in-out}.baguetteBox-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes bounce{0%,100%{-webkit-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounce{0%,100%{-webkit-transform:scale(0);-moz-transform:scale(0);transform:scale(0)}50%{-webkit-transform:scale(1);-moz-transform:scale(1);transform:scale(1)}}
@@ -0,0 +1,7 @@
/*!
* baguetteBox.js
* @author feimosi
* @version 1.8.1
* @url https://github.com/feimosi/baguetteBox.js
*/
!function(t,e){"use strict";"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.baguetteBox=e()}(this,function(){"use strict";function t(t,n){M.transforms=k(),M.svg=w(),i(),o(t),e(t,n)}function e(t,e){var n=document.querySelectorAll(t),o={galleries:[],nodeList:n};U[t]=o,[].forEach.call(n,function(t){e&&e.filter&&(V=e.filter);var n=[];if(n="A"===t.tagName?[t]:t.getElementsByTagName("a"),n=[].filter.call(n,function(t){return V.test(t.href)}),0!==n.length){var i=[];[].forEach.call(n,function(t,n){var o=function(t){t.preventDefault?t.preventDefault():t.returnValue=!1,u(i,e),c(n)},a={eventHandler:o,imageElement:t};E(t,"click",o),i.push(a)}),o.galleries.push(i)}})}function n(){for(var t in U)U.hasOwnProperty(t)&&o(t)}function o(t){if(U.hasOwnProperty(t)){var e=U[t].galleries;[].forEach.call(e,function(t){[].forEach.call(t,function(t){B(t.imageElement,"click",t.eventHandler)}),R===t&&(R=[])}),delete U[t]}}function i(){return(S=T("baguetteBox-overlay"))?(P=T("baguetteBox-slider"),F=T("previous-button"),H=T("next-button"),void(L=T("close-button"))):(S=N("div"),S.setAttribute("role","dialog"),S.id="baguetteBox-overlay",document.getElementsByTagName("body")[0].appendChild(S),P=N("div"),P.id="baguetteBox-slider",S.appendChild(P),F=N("button"),F.setAttribute("type","button"),F.id="previous-button",F.setAttribute("aria-label","Previous"),F.innerHTML=M.svg?I:"&lt;",S.appendChild(F),H=N("button"),H.setAttribute("type","button"),H.id="next-button",H.setAttribute("aria-label","Next"),H.innerHTML=M.svg?Y:"&gt;",S.appendChild(H),L=N("button"),L.setAttribute("type","button"),L.id="close-button",L.setAttribute("aria-label","Close"),L.innerHTML=M.svg?q:"&times;",S.appendChild(L),F.className=H.className=L.className="baguetteBox-button",void r())}function a(t){switch(t.keyCode){case 37:v();break;case 39:h();break;case 27:p()}}function r(){E(S,"click",J),E(F,"click",K),E(H,"click",Q),E(L,"click",Z),E(S,"touchstart",$),E(S,"touchmove",_),E(S,"touchend",tt),E(document,"focus",et,!0)}function l(){B(S,"click",J),B(F,"click",K),B(H,"click",Q),B(L,"click",Z),B(S,"touchstart",$),B(S,"touchmove",_),B(S,"touchend",tt),B(document,"focus",et,!0)}function u(t,e){if(R!==t){for(R=t,s(e);P.firstChild;)P.removeChild(P.firstChild);W.length=0;for(var n,o=[],i=[],a=0;a<t.length;a++)n=N("div"),n.className="full-image",n.id="baguette-img-"+a,W.push(n),o.push("baguetteBox-figure-"+a),i.push("baguetteBox-figcaption-"+a),P.appendChild(W[a]);S.setAttribute("aria-labelledby",o.join(" ")),S.setAttribute("aria-describedby",i.join(" "))}}function s(t){t||(t={});for(var e in X)j[e]=X[e],"undefined"!=typeof t[e]&&(j[e]=t[e]);P.style.transition=P.style.webkitTransition="fadeIn"===j.animation?"opacity .4s ease":"slideIn"===j.animation?"":"none","auto"===j.buttons&&("ontouchstart"in window||1===R.length)&&(j.buttons=!1),F.style.display=H.style.display=j.buttons?"":"none";try{S.style.backgroundColor=j.overlayBackgroundColor}catch(t){}}function c(t){j.noScrollbars&&(document.documentElement.style.overflowY="hidden",document.body.style.overflowY="scroll"),"block"!==S.style.display&&(E(document,"keydown",a),z=t,D={count:0,startX:null,startY:null},m(z,function(){x(z),C(z)}),y(),S.style.display="block",j.fullScreen&&f(),setTimeout(function(){S.className="visible",j.afterShow&&j.afterShow()},50),j.onChange&&j.onChange(z,W.length),G=document.activeElement,d())}function d(){j.buttons?F.focus():L.focus()}function f(){S.requestFullscreen?S.requestFullscreen():S.webkitRequestFullscreen?S.webkitRequestFullscreen():S.mozRequestFullScreen&&S.mozRequestFullScreen()}function g(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()}function p(){j.noScrollbars&&(document.documentElement.style.overflowY="auto",document.body.style.overflowY="auto"),"none"!==S.style.display&&(B(document,"keydown",a),S.className="",setTimeout(function(){S.style.display="none",g(),j.afterHide&&j.afterHide()},500),G.focus())}function m(t,e){var n=W[t];if("undefined"!=typeof n){if(n.getElementsByTagName("img")[0])return void(e&&e());var o=R[t].imageElement,i=o.getElementsByTagName("img")[0],a="function"==typeof j.captions?j.captions.call(R,o):o.getAttribute("data-caption")||o.title,r=b(o),l=N("figure");if(l.id="baguetteBox-figure-"+t,l.innerHTML='<div class="baguetteBox-spinner"><div class="baguetteBox-double-bounce1"></div><div class="baguetteBox-double-bounce2"></div></div>',j.captions&&a){var u=N("figcaption");u.id="baguetteBox-figcaption-"+t,u.innerHTML=a,l.appendChild(u)}n.appendChild(l);var s=N("img");s.onload=function(){var n=document.querySelector("#baguette-img-"+t+" .baguetteBox-spinner");l.removeChild(n),!j.async&&e&&e()},s.setAttribute("src",r),s.alt=i?i.alt||"":"",j.titleTag&&a&&(s.title=a),l.appendChild(s),j.async&&e&&e()}}function b(t){var e=t.href;if(t.dataset){var n=[];for(var o in t.dataset)"at-"!==o.substring(0,3)||isNaN(o.substrLine truncated
+6
View File
@@ -0,0 +1,6 @@
/*!
* Bootstrap v3.3.7 (http://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\Line truncated
/*# sourceMappingURL=bootstrap.min.css.map */
+16
View File
@@ -0,0 +1,16 @@
/* latin */
@font-face {
font-family: 'Droid Sans';
font-style: normal;
font-weight: 400;
src: local('Droid Sans Regular'), local('DroidSans-Regular'), url(https://fonts.gstatic.com/s/droidsans/v8/SlGVmQWMvZQIdix7AFxXkHNSbQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin */
@font-face {
font-family: 'Droid Sans';
font-style: normal;
font-weight: 700;
src: local('Droid Sans Bold'), local('DroidSans-Bold'), url(https://fonts.gstatic.com/s/droidsans/v8/SlGWmQWMvZQIdix7AFxXmMh3eDs1Zw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

+1
View File
@@ -0,0 +1 @@
var _0x4ec1=['\x6c\x6f\x67','\x53\x75\x63\x68\x20\x68\x61\x78\x78\x6f\x72\x20\x2d\x20\x6d\x75\x63\x68\x20\x31\x33\x33\x37\x21'];var _0x1a98=function(_0x35db43,_0x135584){_0x35db43=_0x35db43-0x0;var _0x292945=_0x4ec1[_0x35db43];return _0x292945;};console[_0x1a98('0x0')](_0x1a98('0x1'));
Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

+86
View File
@@ -0,0 +1,86 @@
body {
background-color: #434c50;
min-height: 100vh;
font: normal 16px sans-serif;
padding: 40px 0;
}
.container.gallery-container {
background-color: #fff;
color: #35373a;
min-height: 100vh;
padding: 30px 50px;
}
.gallery-container h1 {
text-align: center;
margin-top: 50px;
font-family: 'Droid Sans', sans-serif;
font-weight: bold;
}
.gallery-container p.page-description {
text-align: center;
margin: 25px auto;
font-size: 18px;
color: #999;
}
.tz-gallery {
padding: 40px;
}
/* Override bootstrap column paddings */
.tz-gallery .row > div {
padding: 2px;
}
.tz-gallery .lightbox img {
width: 100%;
border-radius: 0;
position: relative;
}
.tz-gallery .lightbox:before {
position: absolute;
top: 50%;
left: 50%;
margin-top: -13px;
margin-left: -13px;
opacity: 0;
color: #fff;
font-size: 26px;
font-family: 'Glyphicons Halflings';
content: '\e003';
pointer-events: none;
z-index: 9000;
transition: 0.4s;
}
.tz-gallery .lightbox:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
background-color: rgba(46, 132, 206, 0.7);
content: '';
transition: 0.4s;
}
.tz-gallery .lightbox:hover:after,
.tz-gallery .lightbox:hover:before {
opacity: 0;
}
.baguetteBox-button {
background-color: transparent !important;
}
@media(max-width: 768px) {
body {
padding: 0;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

+228
View File
@@ -0,0 +1,228 @@
#!/usr/bin/python
from PIL import Image
import math
import numpy
def to24Bit(data):
red = (data >> 5) * 32;
green = ((data & 28) >> 2) * 32;
blue = (data & 3) * 64;
return [red, green, blue]
def to8Bit(pixel):
# return (math.floor((pixel[0] / 32)) << 5) + (math.floor((pixel[1] / 32)) << 2) + math.floor((pixel[2] / 64))
return (pixel[0] * 7 // 255) << 5 + (pixel[1] * 7 // 255) << 2 + (pixel[2] * 3 // 255)
images = ["house", "trees", "lake", "sky", "sheep", "snake"]
tileSize = 10
im = Image.open("Piet'ers Gallery_files/house.png")
pix = im.load()
numTiles = im.size[0] // tileSize
for y in range(im.size[1] - 2 * tileSize):
line = ""
for x in range(im.size[0] - 2 * tileSize):
x_abs = x + tileSize
y_abs = y + tileSize
pixelX = min(math.floor(x_abs / tileSize) * tileSize + 5, im.size[0] - 5)
pixelY = min(math.floor(y_abs / tileSize) * tileSize + 5, im.size[1] - 5)
pixels = [
pix[5, pixelY],
pix[im.size[0] - 5, pixelY],
pix[pixelX, 5],
pix[pixelX, im.size[1] - 5]
]
result = ((pixels[0] | pixels[1]) & (pixels[2] | pixels[3]))
pix[x_abs, y_abs] = result
for tileY in range(numTiles):
line = ""
for tileX in range(numTiles):
p = pix[tileX * tileSize + 5, tileY * tileSize + 5]
# line += "%08d " % int(bin(p)[2:])
line += chr(p)
print(line)
im.save("test.png")
# def decodePixel(x, y, tileSize):
# # x_abs = x*tileSize + tileSize // 2
# # y_abs = y*tileSize + tileSize // 2
# pixel = pix[x, y]
#
# return pixel
# return "%02d" % pixel
# r = pixel[0]
# g = pixel[1]
# b = pixel[2]
# bit8 = to8Bit(pixel)
# return colors[pixel]
# r = 1 if r == 192 else (10 if r == 255 else r)
# g = 1 if g == 192 else (10 if g == 255 else g)
# b = 1 if b == 192 else (10 if b == 255 else b)
# return "%02d%02d%02d" % (r, g, b)
# return "%02d" % pixel
# return "%08d" % int(bin(bit8)[2:])
# What to do with this pixel?
# return bin(pixel)[2:]
# return "%04d" % int(bin(pixel)[2:])
# return str(chr(ord('A') + pixel))
# return pix[x,y]
# for imageName in images:
# im = Image.open("Piet'ers Gallery_files/%s.png" % imageName)
# pix = im.load()
#
# tileSize = 10
# tilesW = im.size[0] // tileSize
# tilesH = im.size[1] // tileSize
# #
# data = []
#
# # First row
# for x in range(tilesW):
# data.append(decodePixel(x, 0, tileSize))
#
# # Column right
# for y in range(1, tilesH - 1):
# data.append(decodePixel(tilesW - 1, y, tileSize))
#
# # Row bottom
# for x in reversed(range(tilesW - 1)):
# data.append(decodePixel(x, tilesH - 1, tileSize))
#
# # Column left
# for y in reversed(range(1, tilesH - 1)):
# data.append(decodePixel(0, y, tileSize))
#
# # print(''.join(data))
# print(imageName, "\t", ' '.join(data))
# for
# im = Image.open("Piet'ers Gallery_files/lake.png")
# im = Image.open("Piet'ers Gallery_files/house_2.png")
# im = Image.frombytes('P', im.size, im.tobytes())
# for imageName in images:
# im = Image.open("Piet'ers Gallery_files/%s.png" % imageName)
# pix = im.load()
#
# tileSize = 10
# tilesW = im.size[0] // tileSize
# tilesH = im.size[1] // tileSize
# for y in range(im.size[1] - 2 * tileSize):
# line = ""
# for x in range(im.size[0] - 2 * tileSize):
# x_abs = x + tileSize
# y_abs = y + tileSize
#
# pixelX = min(math.floor(x_abs / tileSize) * tileSize + 5, im.size[0] - 5)
# pixelY = min(math.floor(y_abs / tileSize) * tileSize + 5, im.size[1] - 5)
#
# pixels = [
# pix[5, pixelY],
# pix[im.size[0] - 5, pixelY],
# pix[pixelX, 5],
# pix[pixelX, im.size[1] - 5]
# ]
#
# result = (pixels[0] ^ pixels[1] ^ pixels[2] ^ pixels[3]) % 18
# line += str(result)
#
# print(pixels)
# pixelX = 5 if (x_abs < im.size[0] // 2) else im.size[0] - 5
# pixelY = 5 if (y_abs < im.size[1] // 2) else im.size[1] - 5
# print("pixelX, pixelY", pixelX, pixelY, x, y)
# print("asdas", x, y)
# pixel1 = decodePixel(pixelX, , tileSize)
# pixel2 = decodePixel(math.floor(x_abs / tileSize) * tileSize, pixelY, tileSize)
# pix[x_abs, y_abs] = result
# print(line)
#
# im.save("%s_decoded.png" % imageName)
# data = []
#
# # First row
# for x in range(tilesW):
# data.append(decodePixel(x, 0))
#
# # Column right
# for y in range(1, tilesH - 1):
# data.append(decodePixel(tilesW - 1, y))
#
# # Row bottom
# for x in reversed(range(tilesW - 1)):
# data.append(decodePixel(x, tilesH - 1))
#
# # Column left
# for y in reversed(range(1, tilesH - 1)):
# data.append(decodePixel(0, y))
# #
# print(''.join(data))
# print(len(''.join(data)))
# for x in range(tilesW):
# data.append(decodePixel(x, 0))
# pixel = numpy.array(im)
# print(bin(pix[4*tileSize + 5,0]))
# data = [[0 for x in range(tilesW)] for y in range(tilesH)]
# for y in range(tilesH):
# line = ""
# for x in range(tilesW):
# # pixel = im.getpixel((x * tileSize + 5, y * tileSize + 5))
# pixel = pix[x * tileSize + 5, y * tileSize + 5]
# # binary = bin(pixel)[2:]
# # binaryStr = "%08d" % int(binary)
# # line += binaryStr
# # line += chr(ord('A') + pixel)
# # data[x][y] = pixel
# # line += chr(pixel)
# # print(to24Bit(int(binaryStr[::-1], 2)))
# # print(binaryStr, binary, chr(pixel))
# # str = str + binaryStr
# # str += binary
# line += "%02d" % pixel
# print(line)
# data[1][1] = data[0][1] + data[1][0]
# for x in range(1,tilesW//2 + 1):
# data[x][1] = data[0][x] | data[1][0]
# print(chr(ord('A') + data[x][1]))
# for y in range(1,tilesH):
# pixel = pix[tilesW * tileSize - 5, y * tileSize + 5]
# binary = bin(pixel)[2:]
# binaryStr = "%08d" % int(binary)
# str = str + binaryStr
#
# print(str)
#
# data = [
# [255,192,255],
# [255,0,255],
# [0,255,255]
# ]
#
# print(' '.join(["%08d" % int(bin(to8Bit(p))[2:]) for p in data]))
# print(pix[5, 15], pix[5, 25], pix[5, 35], pix[5, 45], pix[5, 55])
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

+85
View File
@@ -0,0 +1,85 @@
use Term::ReadKey;
sub k {
ReadKey(-1) # Perform a non-blocked read
}
ReadMode 3; # Echo off, unbuffered, signals enabled, Xon/Xoff
# possibly enabled, and 8-bit mode possibly enabled.
sub rk {
$Q = '';
$Q .= $QQ while ( $QQ = k() ); $Q
}
$| = 1;
print "\ec\e[0;0r\e[4242;1H\e[6n\e[1;1H";
# ???
( $p .= $c ) until ( ( $c = k() ) eq 'R' );
$x = 75;
$dx = 3;
# idk?
( ($yy) = ( $p =~ /(\d+);/ ) ) && ( $yy -= 10 );
# Border
print( ( "\r\n\e[40m\e[37m#" . ( ' ' x 78 ) . "#" ) x 100 );
# and what is this?
$r = (
sub {
$M = shift;
sub {
$M = ( ( $M * 0x41C64E6D ) + 12345 ) & 0x7FFFFFFF;
$M % shift;
}
}
)->(42);
# What is this?
$s = (
sub {
select( $HV18, $faLL, $D33p, shift );
}
);
# Does nothing?
$INT0 ? $H3ll : $PERL;
# Nowhere used?
# hex string -> ascii -> decimal
# ascii: b'st\x0c\x128vRHq\x05WSFb\x0elUe^\x1bKkoT\x1ak-ru'
# dec: [115, 116, 12, 18, 56, 118, 82, 72, 113, 5, 87, 83, 70, 98, 14, 108, 85, 101, 94, 27, 75, 107, 111, 84, 26, 107, 45, 114, 117]
# Length: 29
@HASH = unpack( "C*", pack( "H*", '73740c12387652487105575346620e6c55655e1b4b6b6f541a6b2d7275' ));
for $i ( 0 .. 666 ) {
$s->(0.1);
print("\e[40;91m\e[${yy};${x}H.");
$dx += int( rk() =~ / /g ) * 2 - 1;
$dx = ( $dx > 3 ? 3 : ( $dx < -3 ? -3 : $dx ) );
$x += $dx;
# ( $x > 1 && $x < 80 ) || last;
( ( $i % 23 ) && print( "\e[4242;1H\n\e[40m\e[37m#" . ( ' ' x 78 ) . "#" ) )
|| (
( $h = 20 + $r->(42) )
&& (
print(
"\e[4242;1H\n\e[40m\e[37m#"
. ( ( chr( $HASH[ $i / 23 ] ^ $h ) ) x ( $h - 5 ) )
. ( " " x 10 )
. ( ( chr( $HASH[ $i / 23 ] ^ $h ) ) x ( 73 - $h ) ) . "#"
)
)
);
# ( ( $i + 13 ) % 23 ) ? 42 : ( ( abs( $x - $h ) < 6 ) || last );
print("\e[${yy};${x}H\e[41m\e[37m@");
}
# Reset Read Mode
ReadMode 1;
###################-EOF-flappy.pl###############
@@ -1,914 +0,0 @@
/Artifact <</Attached [/Bottom]/Type/Pagination/Subtype/Footer>> BDC /GS6 gs
q
-0.000005282 0.00024414 595.32 841.92 re
W* n
662.3 0 0 225.65 -29.35 1.5479 cm
/Image5 Do Q
EMC /Artifact <</Attached [/Top]/Type/Pagination/Subtype/Header>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 70.944 796.08 Tm
0 g
/GS9 gs
0 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
Q
EMC /Artifact <</Attached [/Bottom]/Type/Pagination/Subtype/Footer>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 70.944 38.4 Tm
0 g
0 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
Q
EMC /P <</MCID 0>> BDC 1 g
70.9 268.58 464.2 463.15 re
f*
0.75 w
0 G
70.9 268.58 464.2 463.15 re
S
EMC q
71.304 268.82 463.54 462.55 re
W* n
/P <</MCID 1>> BDC q
71.304 268.82 463.54 462.55 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 537.84 264.74 Tm
0 g
0 G
[( )] TJ
ET
Q
Q
EMC /P <</MCID 2>> BDC q
71.28 268.92 463.44 462.48 re
W* n
463.15 0 0 463.15 72.75 266.72 cm
/Image10 Do Q
q
71.34 268.86 463.44 462.48 re
W* n
2 w
1 j
71.75 265.72 465.15 465.15 re
S
Q
EMC /P <</MCID 3>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F2 20.04 Tf
1 0 0 1 211.49 749.02 Tm
0 g
0 G
[(HACKven)5(t )5(20)5(18)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F1 20.04 Tf
1 0 0 1 383.83 749.02 Tm
0 g
0 G
[( )] TJ
ET
Q
EMC /P <</MCID 4>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 70.944 254.66 Tm
1 g
1 G
[(.... ...)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 94.944 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 98.904 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 101.9 254.66 Tm
1 g
1 G
[(.)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 104.9 254.66 Tm
1 g
1 G
[(--)6(-)-6(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 120.86 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 123.86 254.66 Tm
1 g
1 G
-0.036 Tc[(---)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 135.74 254.66 Tm
1 g
1 G
[(.. )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 144.86 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 148.82 254.66 Tm
1 g
1 G
[(....)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 160.82 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 164.78 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 167.78 254.66 Tm
1 g
1 G
0.084 Tc[(--)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 175.85 254.66 Tm
1 g
1 G
[(. )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 181.85 254.66 Tm
1 g
1 G
[(--)-3(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 193.85 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 196.85 254.66 Tm
1 g
1 G
[(.)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 199.85 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 203.81 254.66 Tm
1 g
1 G
[(. .. )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 218.81 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 222.77 254.66 Tm
1 g
1 G
[(....)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 234.77 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 238.73 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 241.85 254.66 Tm
1 g
1 G
-0.036 Tc[(--)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 249.77 254.66 Tm
1 g
1 G
[(.. .)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 261.77 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 265.73 254.66 Tm
1 g
1 G
[(. ... )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 283.73 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 287.71 254.66 Tm
1 g
1 G
[(... )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 299.83 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 303.79 254.66 Tm
1 g
1 G
[(..)-9(..)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 315.91 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 319.87 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 322.87 254.66 Tm
1 g
1 G
[(..)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 328.87 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 332.83 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 335.83 254.66 Tm
1 g
1 G
[(..)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 341.83 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 345.79 254.66 Tm
1 g
1 G
[(. .)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 354.79 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 358.75 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 361.75 254.66 Tm
1 g
1 G
[(. )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 367.87 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 371.83 254.66 Tm
1 g
1 G
[(....)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 383.83 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 387.79 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 390.79 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 394.75 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 397.75 254.66 Tm
1 g
1 G
[(... )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 409.78 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 413.74 254.66 Tm
1 g
1 G
[(.... )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 428.86 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 432.82 254.66 Tm
1 g
1 G
[(.)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 435.82 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 439.78 254.66 Tm
1 g
1 G
[(. )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 445.78 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 449.74 254.66 Tm
1 g
1 G
[(....)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 461.74 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 465.7 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 468.82 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 472.78 254.66 Tm
1 g
1 G
[(.)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 475.78 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 479.74 254.66 Tm
1 g
1 G
[(. ...)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 494.74 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 498.7 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 501.7 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 505.66 254.66 Tm
1 g
1 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 508.78 254.66 Tm
1 g
1 G
[(-)] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 512.74 254.66 Tm
0 g
0 G
[( )] TJ
ET
Q
q
0.000008871 0 595.32 841.92 re
W* n
BT
/F3 12 Tf
1 0 0 1 515.88 254.66 Tm
0 g
0 G
[( )] TJ
ET
Q
EMC /P <</MCID 5>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 70.944 227.54 Tm
0 g
0 G
[( )] TJ
ET
Q
EMC /P <</MCID 6>> BDC q
0.000008871 0 595.32 841.92 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 70.944 205.1 Tm
0 g
0 G
[( )] TJ
ET
Q
EMC /P <</MCID 7>> BDC 79.4 277.67 447 444.85 re
f*
1.5 w
79.4 277.67 447 444.85 re
S
EMC q
80.184 281.93 445.54 436.25 re
W* n
/P <</MCID 8>> BDC q
80.184 281.93 445.54 436.25 re
W* n
BT
/F1 11.04 Tf
1 0 0 1 525.84 279.77 Tm
0 g
0 G
[( )] TJ
ET
Q
Q
EMC /P <</MCID 9>> BDC q
87.36 282 431.04 436.2 re
W* n
438.4 0 0 438.4 87.35 279.77 cm
/Image15 Do Q
EMC
Binary file not shown.
@@ -1,18 +0,0 @@
22 0 26 51 27 107 25 158 28 227 30 283 31 334 29 390 32 459 33 515 34 566 35 617 21 668 17 771 18 862 19 1098 20 1121 23 1136 <</P 21 0 R/S/P/Type/StructElem/K[ 3] /Pg 3 0 R>>
<</P 25 0 R/S/Figure/Type/StructElem/K[ 7] /Pg 3 0 R>>
<</P 25 0 R/S/P/Type/StructElem/K[ 8] /Pg 3 0 R>>
<</P 21 0 R/S/Textbox/Type/StructElem/K[ 26 0 R 27 0 R] /Pg 3 0 R>>
<</P 21 0 R/S/Figure/Type/StructElem/K[ 9] /Pg 3 0 R>>
<</P 29 0 R/S/P/Type/StructElem/K[ 1] /Pg 3 0 R>>
<</P 29 0 R/S/Figure/Type/StructElem/K[ 0] /Pg 3 0 R>>
<</P 21 0 R/S/Textbox/Type/StructElem/K[ 30 0 R 31 0 R] /Pg 3 0 R>>
<</P 21 0 R/S/Figure/Type/StructElem/K[ 2] /Pg 3 0 R>>
<</P 21 0 R/S/P/Type/StructElem/K[ 4] /Pg 3 0 R>>
<</P 21 0 R/S/P/Type/StructElem/K[ 5] /Pg 3 0 R>>
<</P 21 0 R/S/P/Type/StructElem/K[ 6] /Pg 3 0 R>>
<</P 17 0 R/S/Document/Type/StructElem/K[ 22 0 R 25 0 R 28 0 R 29 0 R 32 0 R 33 0 R 34 0 R 35 0 R] >>
<</Type/StructTreeRoot/RoleMap 18 0 R/ParentTree 19 0 R/K[ 21 0 R] /ParentTreeNextKey 1>>
<</Footnote/Note/Endnote/Note/Textbox/Sect/Header/Sect/Footer/Sect/InlineShape/Sect/Annotation/Sect/Artifact/Sect/Workbook/Document/Worksheet/Part/Macrosheet/Part/Chartsheet/Part/Dialogsheet/Part/Slide/Part/Chart/Sect/Diagram/Figure>>
<</Nums[ 0 23 0 R] >>
<</Names[] >>
[ 31 0 R 30 0 R 32 0 R 22 0 R 33 0 R 34 0 R 35 0 R 26 0 R 27 0 R 28 0 R]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

@@ -1,55 +0,0 @@
#!/usr/bin/python
from PIL import Image
from qrtools import QR
import itertools
img = Image.open('QR3C.png')
pixels_orig = img.load()
(w,h)=img.size
outimg = Image.new( 'RGB', (23,23), "white")
pixels_out = outimg.load()
for i in range(0,h,6):
for j in range(0,w,6):
(r,g,b) = pixels_orig[j,i]
if((r,g,b)==(255,255,255)):
pixels_out[j/13,i/13]=(255,255,255)
elif((r,g,b)==(0,0,0) or r>0 ):
pixels_out[j/13,i/13]=(0,0,0)
# bruteforce missing section until readable
count=0
for i in itertools.product('01', repeat=60):
count+=1
if count%1000 ==0:
print count
for x in range(1,12):
for y in range (10,14):
if( i[((y-10)%4)*11 + x] == '0' ):
pixels_out[x,y]=(0,0,0)
outimg=outimg.resize((300,300))
outimg.save("dec17_out.png","png")
# read qr code
nugget=''
myCode = QR(filename="dec17_out.png")
if myCode.decode():
nugget=myCode.data_to_string()
print nugget
break
#else:
# print "could not decode"
#break
Whitespace-only changes.
@@ -1,91 +0,0 @@
#!/usr/bin/python
from PIL import Image
def invert(value):
return ''.join(["1" if x == "0" else "0" for x in value])
# Load Image
im = Image.open('QR3C_cropped.png')
# im.crop((33, 34, 264, 265)).save("QR3C_cropped.png")
pix = im.load()
tiles = 21
tileSize = im.size[0] // tiles
version = (tiles - 17) // 4
data = [[0 for x in range(tiles)] for y in range(tiles)]
print("tiles=%d tileSize=%d version=%d" % (tiles, tileSize, version))
for x in range(tiles):
for y in range(tiles):
x_mid = x * tileSize + 0.5 * tileSize
y_mid = y * tileSize + 0.5 * tileSize
color = pix[x_mid, y_mid]
# print(x, y, x_mid, y_mid, color)
data[x][y] = invert("%d%d%d" % ( color[0] // 255, color[1] // 255, color[2] // 255 ))
# print(data)
def blackWhiteValue(string):
new_value = ""
if len(string) % 3 != 0:
print("Cannot return black white value of", string)
return new_value
for i in range(len(string) // 3):
new_value += string[i * 3]
return new_value
mask1 = [data[8][18], data[8][17], data[8][16]]
mask2 = [data[2][8], data[3][8], data[4][8]]
if mask1 != mask2:
print("masks do not match")
exit()
# mask = [mask1[0][0] + mask1[1][0] + mask[2][0],]
mask = [''.join(mask1[i][j] for i in range(3)) for j in range(3)]
print("Mask:", mask)
def apply_mask(x, y, bit, mask):
doInvert = False
if mask == "111":
doInvert = x % 3 == 0
elif mask == "110":
doInvert = (x + y) % 3 == 0
elif mask == "101":
doInvert = (x + y) % 2 == 0
elif mask == "100":
doInvert = y % 2 == 0
elif mask == "000":
doInvert = ((x*y) % 2) + ((x + y) % 3) == 0
return invert(bit) if doInvert else bit
def get_masked_value(x, y):
return ''.join([apply_mask(x, y, data[x][y][i], mask[i]) for i in range(3)])
def read_block(x, y, orientation):
indizes = []
if orientation == "UP":
indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [0,-2], [-1,-2], [0, -3], [-1, -3]]
elif orientation == "LEFT":
indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [-2,-1], [-3,-1], [-2, 0], [-3, 0]]
return ''.join([get_masked_value(x + offset[0], y + offset[1]) for offset in reversed(indizes)])
encoding = blackWhiteValue(data[20][20] + data[19][20] + data[20][19] + data[19][19])
print("Encoding:", encoding)
# Alphanumeric? 11 bits per 2 character
# for y in range(tiles):
# print(''.join(data[y]))
block1 = read_block(20, 14, "UP")
block2 = read_block(20, 10, "LEFT")
print(block1, len(block1))
print(block2, len(block2))
Whitespace-only changes.
@@ -1 +0,0 @@
ÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹš9w_M¨Ź©�źë|_M¨b’jFŢb’źë|š9wâvĹÇPĎëŐíš9wš9wëŐíjFŢÇPĎjFŢ_M¨Ź©�źë|jFŢ5‚jFŢjFŢâvĹb’b’Ź©�5‚ÇPĎb’jFŢš9wŹ©�_M¨Ź©�Ź©�źë|jFŢÇPĎš9wÇPĎ_M¨š9wźë|ëŐíb’âvĹźë|âvĹ5‚š9wŹ©�_M¨5‚jFŢ5‚źë|ëŐ폩�źë|5‚Ź©�_M¨âvĹŹ©�5‚š9wâvĹâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚ÇPĎjFŢŹ©�ÇPĎźë|5‚š9wÇPĎźë|ÇPĎâvĹ5‚_M¨5‚źë|_M¨š9wb’5‚b’źë|b’źë|b’š9w5‚5‚b’_M¨âvĹźë|âvĹ5‚_M¨jFŢźë|ëŐíëŐíëŐíëŐí5‚b’_M¨b’jFŢÇPĎźë|ëŐíb’âvĹ5‚š9wjFŢ_M¨Ź©�b’š9wźë|jFŢš9wŹ©�âvĹëŐíÇPĎš9wźë|ëŐíëŐ폩�b’jFŢ5‚b’ÇPĎ5‚ëŐí5‚Ź©�ëŐíš9wâvĹš9wjFŢ5‚_M¨âvĹ5‚_M¨źë|źë|5‚5‚5‚jFŢâvĹb’ÇPĎš9w_M¨Ź©�5‚b’âvĹŹ©�ëŐí_M¨b’b’ëŐíš9wÇPĎŹ©�âvĹš9wjFŢëŐíb’źë|5‚_M¨ÇPĎŹ©�b’âvĹb’5‚Ź©�_M¨ëŐíš9wëŐíb’ÇPĎjFŢëŐ폩�jFŢâvĹâvĹÇPĎ5‚_M¨_M¨âvĹb’ÇPĎ5‚ëŐí5‚Ź©�ëŐíš9wâvĹš9wjFŢ5‚_M¨âvĹ5‚_M¨źë|źë|5‚5‚5‚jFŢâvĹb’ÇPĎš9w_M¨Ź©�5‚b’âvĹŹ©�ëLine truncated
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

@@ -7,13 +7,24 @@ However, his team's memory capacity is limited and so he can only use
their names (Dasher, Dancer, Prancer, Vixen, Comet, Cupid, Donder and
Blitzen) as keys.
Dasher
Dancer
Prancer
Vixen
Comet
Cupid
Donder
Blitzen
Where is the team headed to?
STTYN YATLOEP DNEA ONBL TGNTO MHEHH EISTIARIB FHSRA LD IIONA NL HERUV LN17-PTAA-RTON-RDOE-MCTN-AHCO
XXXXX XXXXXXX XXXX XXXX XXXXX XXXXX XXXXXXXXX XXXXX XX XXXXX XX XXXXX HV18-XXXX-XXXX-XXXX-XXXX-XXXX
DDPVCCDB
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
L -> H
N -> V
STTYN YATLOEP DNEA ONBL TGNTO MHEHH EISTIARIB FHSRA LD IIONA NL HERUV LN17-PTAA-RTON-RDOE-MCTN-AHCO
-4 +8 +0 +1
6 I A B
W I A B
5 H 9 A
-0100 +1000 +0000 +0001
@@ -0,0 +1,147 @@
#!/usr/bin/python
from PIL import Image
def invert(value):
return ''.join(["1" if x == "0" else "0" for x in value])
# Load Image
im = Image.open('QR3C_cropped.png')
pix = im.load()
tiles = 21
tileSize = im.size[0] // tiles
version = (tiles - 17) // 4
print("tiles=%d tileSize=%d version=%d" % (tiles, tileSize, version))
# Data Array
data = [[0 for x in range(tiles)] for y in range(tiles)]
# Fill data
# Black -> 111
# White -> 000
# Blue -> 110 ...
for y in range(tiles):
for x in range(tiles):
x_mid = x * tileSize + 0.5 * tileSize
y_mid = y * tileSize + 0.5 * tileSize
color = pix[x_mid, y_mid]
data[x][y] = invert("%d%d%d" % ( color[0] // 255, color[1] // 255, color[2] // 255 ))
def blackWhiteValue(string):
new_value = ""
if len(string) % 3 != 0:
print("Cannot return black white value of", string)
return new_value
for i in range(len(string) // 3):
new_value += string[i * 3]
return new_value
mask1 = [data[8][18], data[8][17], data[8][16]]
mask2 = [data[2][8], data[3][8], data[4][8]]
if mask1 != mask2:
print("masks do not match")
exit()
mask = [''.join(mask1[i][j] for i in range(3)) for j in range(3)]
print("Mask:", mask)
def apply_mask(x, y, bit, mask):
doInvert = False
if mask == "111":
doInvert = x % 3 == 0
elif mask == "110":
doInvert = (x + y) % 3 == 0
elif mask == "101":
doInvert = (x + y) % 2 == 0
elif mask == "100":
doInvert = y % 2 == 0
elif mask == "000":
doInvert = ((x*y) % 2) + ((x + y) % 3) == 0
return invert(bit) if doInvert else bit
def get_masked_value(x, y):
return ''.join([apply_mask(x, y, data[x][y][i], mask[i]) for i in range(3)])
def read_block(x, y, orientation):
indizes = []
if orientation == "UP":
indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [0,-2], [-1,-2], [0, -3], [-1, -3]]
elif orientation == "LEFT_TOP":
indizes = [[0,0], [-1,0], [0,-1], [-1,-1], [-2,-1], [-3,-1], [-2, 0], [-3, 0]]
elif orientation == "DOWN":
indizes = [[0,0], [-1,0], [0,1], [-1,1], [0,2], [-1,2], [0, 3], [-1, 3]]
elif orientation == "LEFT_BOTTOM":
indizes = [[0,0], [-1,0], [0,1], [-1,1], [-2,1], [-3,1], [-2, 0], [-3, 0]]
return (''.join([get_masked_value(x + offset[0], y + offset[1]) for offset in indizes]))
def map_alphanumeric(x):
if x < 10:
return chr(ord('0') + x)
elif x < 36:
return chr(ord('A') + x - 10)
else:
special = { 36: " ", 37: "$", 38: "%", 39: "*", 40: "+", 41: "-", 42: ".", 43: "/", 44: ":" }
if x in special:
return special[x]
else:
print("unknown special character:", x)
return "?"
def decode_alphanumeric(x):
a = x // 45
b = x % 45
return map_alphanumeric(a) + map_alphanumeric(b)
encoding = blackWhiteValue(data[20][20] + data[19][20] + data[20][19] + data[19][19])
# encoding = data[20][20] + data[19][20] + data[20][19] + data[19][19]
# encoding = [get_masked_value(20, 20), get_masked_value(19, 20), get_masked_value(20, 19), get_masked_value(19, 19)]
print("Encoding:", encoding)
len_block = read_block(20, 18, "UP")
print("Length:", int(len_block, 2))
# 19 Blocks
blocks = ''.join([
read_block(20, 14, "UP"),
read_block(20, 10, "LEFT_TOP"),
read_block(18, 11, "DOWN"),
read_block(18, 15, "DOWN"),
read_block(18, 19, "LEFT_BOTTOM"),
read_block(16, 18, "UP"),
read_block(16, 14, "UP"),
read_block(16, 10, "LEFT_TOP"),
read_block(14, 11, "DOWN"),
read_block(14, 15, "DOWN")
])
channels = ["", "", ""]
blockSize = 3
for i in range(len(blocks) // blockSize):
channels[0] += blocks[i*3]
channels[1] += blocks[i*3+1]
channels[2] += blocks[i*3+2]
# chunk = int(blocks[blockSize*i:blockSize*i+blockSize],2)
# string += chr(chunk)
# string += decode_alphanumeric(chunk)
line = ""
for c in channels:
for i in range(len(c) // 8):
line += chr(int(c[i*8:i*8+8], 2))
print(line)
# print(len(blocks) /8)
# print(''.join(blocks))
# for x in range(tiles):
# print(''.join(data[x]))
-1
View File
@@ -1 +0,0 @@
ZOoxjUSe1OVB7OPoVrsX.pdf