1
\$\begingroup\$

Here is continuation of this question, this time lets compress/generate Mario in colors!

enter image description here

Image size is 64x64 (above one is zoomed). The required output is valid <img ...> tag with exact same image in dataURI form, working on chrome, firefox and safari (and IE4 - joke ;). In snippet below you can find example tag in required form and all needed data.

bmpHeader="424d760a00000000000078000000280000004000000040000000010004000000000000000000c40e0000c40e00000000000000000000000000002b81fc00081fcd00085a7200fcfafc005e5e5e001139b90008930b00ababab0000ff000000ff000000fffc00fcffab00abff000000ff000000ff00000000"; 

bmpPixels="5525552555255525552555255525552555255525552555555055555550555555552555255525552555255525552555255525552555255588504888885048888855055505550555055505550555055505550555055505558850488888504888884404440444044404440444044404440444044404440444885048888850488888440444044404440444044404440444044404440444044488504888885048888844044404440444044404440444044404440444044404448850488888504888884404440111111144440444044404440444044404440444445044444450444444011114441444114400000000000000880000000000000000000000000000000000441441144111100000000000000040800000000000005555555055555550550444441111771100000000000000000480000000000000488888504888885048044444447777770000000000000000000880000000000048888850488888504800777744447777700000000000000000048000000000004888885048888850480077777774477777000000000000000000088000000000488888504888885048007177177744777770000000000000000004080000000048888850488888504800117447777477777011140000000000000048000000004444445044444450440444777777744777711111040000000000000088000000000000000000000000004477117774477771111100100000000000004080000055505555555055555500077714477447741111110410000000000000048000008850488888504888880417774447774770011110011000000000000000088000885048888850488888004777777777471140111041100000000000000004800088504888885048888800011777777744111040011100000000000000000008808850488888504888880001447771177441117700000000000000000000000408885048888850488888000444777144774444447700110000000000000000004844504444445044444400007777744477777744477111400000000000000000000000000650000000000000477777777777774447711000000000000000000000000000055000000000000047117777777774447711400000000000000000000000000006500000000000000014477114774447771170004000000000000000000000000550000000000000004447114447447777147747440400000000000000000000065000000000000000000071447744777717771111040000000000000000100005500001000000000000000047774477771741177111400000000000000051100650001010000000000000000000007777111777411110000000000000015111165111101000000000000000000000777771777444111000000000000015111116511111010000000000000000000077777777447710100000000000001511111651111101000000000000000000000777777744700100000000000000151111165111110100000000000000000000071177774400000000000000000015111116511111010000000000000000000001144777000000000000000000001511111651111101000000000000000000000144477000000000000000000000015111155111101000000000000000000000444000000000000000000000000001511006500110100000000000000000000000000000000000000000000000000010000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003002222000000000000000000000000000000000000000000000000000000000333222222200000000000000000000000000000000000000000000000000000003332222222220000000000000000000000000000000000000000000000000001032222222222330000000000000000000000000000000000000000000000001110223221221233000000000000000000000000000000000000000000000000113333332222200300000000000000000000000000000000000000000000000003333333233320030000000000000000000000000000000000000000000000000033333233323000000000000000000000000000000000000000000000000000000000111111130000000000000000000000000000000000000000000000000000003311113333300000000000000000000000000000000000000000000000000000313311131113000000000000000000000000000000000000000000000000000031311131133300000000000000000000000000000000000000000000000000000333113103330000000000000000000000000000000000000000000000000000022222222211000000000000000000000000000000000000000000000000000000222220011100000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" //pixels

dataURI='data:image/bmp,%'+(bmpHeader+bmpPixels).match(/../g).join('%'); 
msg.innerText=`<img alt src=${dataURI}>`
pic.src = dataURI
pre {white-space: pre-line;word-break: break-all}
<img id="pic">
<pre id="msg"></pre>

You can use any dataURI image format supported by chrome, firefox and safari (e.g bmp, png, gif etc...). However my proposition is to use dataURI BMP format without base64 which is very simple and which is presented in snippet above - we have there bmpPixels string - each character in that string represents one pixel (colors from 0 to f) starting from left bottom pixel, line by line. In dataURI we join bmpHeader and bmpPixels and put char % between each two characters (hex num) - and thats all. In snippet below I also include bmp+base64 valid example (img tag to be valid need to have 'alt' attribute)

<img alt src=data:image/bmp;base64,Qk12CgAAAAAAAHgAAAAoAAAAQAAAAEAAAAABAAQAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAAAAAACuB/AAIH80ACFpyAPz6/ABeXl4AETm5AAiTCwCrq6sAAP8AAAD/AAAA//wA/P+rAKv/AAAA/wAAAP8AAAAAVSVVJVUlVSVVJVUlVSVVJVUlVSVVJVVVUFVVVVBVVVVVJVUlVSVVJVUlVSVVJVUlVSVVJVUlVYhQSIiIUEiIiFUFVQVVBVUFVQVVBVUFVQVVBVUFVQVViFBIiIhQSIiIRAREBEQERAREBEQERAREBEQERAREBESIUEiIiFBIiIhEBEQERAREBEQERAREBEQERAREBEQERIhQSIiIUEiIiEQERAREBEQERAREBEQERAREBEQERAREiFBIiIhQSIiIRAREAREREUREBEQERAREBEQERAREBEREUERERFBEREQBERREFEQRRAAAAAAAAACIAAAAAAAAAAAAAAAAAAAAAABEFEEUQREQAAAAAAAAAECAAAAAAAAAVVVVUFVVVVBVBEREERF3EQAAAAAAAAAABIAAAAAAAABIiIhQSIiIUEgEREREd3d3AAAAAAAAAAAACIAAAAAAAEiIiFBIiIhQSAB3d0REd3dwAAAAAAAAAAAEgAAAAAAASIiIUEiIiFBIAHd3d3RHd3cAAAAAAAAAAAAIgAAAAABIiIhQSIiIUEgAcXcXd0R3d3AAAAAAAAAAAAQIAAAAAEiIiFBIiIhQSAARdEd3dHd3cBEUAAAAAAAAAEgAAAAAREREUERERFBEBER3d3d0R3dxEREEAAAAAAAAAIgAAAAAAAAAAAAAAAAARHcRd3RHd3EREQAQAAAAAAAAQIAAAFVQVVVVUFVVVQAHdxRHdEd0ERERBBAAAAAAAAAEgAAAiFBIiIhQSIiIBBd3REd3R3ABERABEAAAAAAAAAAIgACIUEiIiFBIiIgAR3d3d3dHEUAREEEQAAAAAAAAAASAAIhQSIiIUEiIiAABF3d3d0QREEABEQAAAAAAAAAAAAiAiFBIiIhQSIiIAAFEd3EXdEERdwAAAAAAAAAAAAAABAiIUEiIiFBIiIgABER3cUR3REREdwARAAAAAAAAAAAASERQREREUERERAAAd3d0RHd3d0RHcRFAAAAAAAAAAAAAAAAABlAAAAAAAABHd3d3d3d3REdxEAAAAAAAAAAAAAAAAAAFUAAAAAAAAEcRd3d3d3REdxFAAAAAAAAAAAAAAAAAAAZQAAAAAAAAABRHcRR3REd3EXAAQAAAAAAAAAAAAAAABVAAAAAAAAAAREcRREdEd3cUd0dEBAAAAAAAAAAAAAAGUAAAAAAAAAAAAHFEd0R3dxd3EREEAAAAAAAAAAAQAAVQAAEAAAAAAAAAAEd3RHd3F0EXcRFAAAAAAAAAAFEQBlAAEBAAAAAAAAAAAAAAd3cRF3dBERAAAAAAAAABUREWUREQEAAAAAAAAAAAAAB3d3F3dEQREAAAAAAAABURERZREREBAAAAAAAAAAAAAHd3d3dEdxAQAAAAAAAAFRERFlEREQEAAAAAAAAAAAAAB3d3d0RwAQAAAAAAAAAVEREWURERAQAAAAAAAAAAAAAHEXd3RAAAAAAAAAAAABURERZREREBAAAAAAAAAAAAAAEUR3cAAAAAAAAAAAAAFRERFlEREQEAAAAAAAAAAAAAAURHcAAAAAAAAAAAAAABUREVUREQEAAAAAAAAAAAAABEQAAAAAAAAAAAAAAAAAFREAZQARAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAIiIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzIiIiIiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDIiIiIiIzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERAiMiEiEjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARMzMzIiIgAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzMjMyADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMjMyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARERETAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMxERMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMxETERMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExETETMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMRMQMzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIhEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIiABEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==>

You can presents you results in answer using codegolf snippets and include this CSS rule: img {image-rendering: pixelated;width:256px;height:256px} to zoom image.

UPDATE

I see that unconsciously I made 2 separate competitions in this question: first for programs (codes written in some programming language which produce result img tag), and second for img tags which contains results from compression tools. Both are interesting but main competition is for programs. Although I hope that someone shows that hand written program can achieve better results than 'compressed img tags' - but may be it is impossible?

\$\endgroup\$
5
  • 12
    \$\begingroup\$ Requiring a very specific output format seems arbitrary and limiting... what if I wanted to draw the image on screen using SQL geometry objects? Or what if I wanted to make a Minecraft command block program that reproduced the image using colored wool blocks? \$\endgroup\$
    – BradC
    Sep 20, 2019 at 14:12
  • \$\begingroup\$ SQL can also produce strings as result. In the other hand, Minecraft result can be hard to compare with desired result (I would like to avoid situations like here ). This question-task is not for everything - sorry - but still a you can use a lot of tools to accomplish task \$\endgroup\$ Sep 20, 2019 at 14:22
  • 4
    \$\begingroup\$ You could rely on the defaults for graphical I/O. Those are fairly permissive without allowing anything stupid (in particular, they don't allow outputting anything that kinda looks like the original image, which is what killed the HEX challenge). \$\endgroup\$
    – Grimmy
    Sep 20, 2019 at 14:34
  • \$\begingroup\$ bmpPixels seems to be missing 2 pixels in the first code snippet. 64x64 size image should have 4096 pixels, but len(bmpPixels) is only 4094. \$\endgroup\$
    – RootTwo
    Sep 20, 2019 at 20:26
  • \$\begingroup\$ @RootTwo you are right - fixed \$\endgroup\$ Sep 20, 2019 at 20:29

3 Answers 3

2
\$\begingroup\$

800 791 bytes (for the img tag)

img {image-rendering: pixelated;width:256px;height:256px}
<img alt src=data:;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAG1BMVEUAAAD8gSvNHwhyWgj8+vxeXl65ORELkwirq6tQs3kTAAAB3UlEQVRIx92VwW6jMBCGTUO6PfrfuOWaZbX3Jn6BII3kHsmB9wAJaa455rF3bGEwaeI97KFSx7IQ9sdvzz+WUeqrokButq73WeCplsgBG4vDxmaAwwGHXRaw2GGXASxg7XsuCyAvYI/2+J7Lwdrfdr95rC+AOJUBdH38Vf98nGax8UbWGR/s0QO5Tcr0PlcJlfv824UOtqYjdFo5ftbPbaF1OkSuTwG8nrEGjOPl7RV4OwPpGj/ATFmABeiLxwB7gOOqd4GBR0IOQMVNBCSLtzQLJ+pcNdWA6Ib3Qc3AQAFgoFyc3LbRSXIgJ4BhR+WypihMYdxgmByjV6nd2wg4+AxHYqyqsSg4DkFu0CtgVghfB2AtERVKYp8EEavlYvqgVkZ892XmoRobJKVU5cu1/biGLkDl9aFPydX3ckmAsEeHE3QTN1le1AKUlbfA9QV0oWeBBJBzYNzoRrmYSj0LpIAYxKPjAVATcBKga7sudJ8lT0Csw/XmzpHZkbmHiR6EAtLkhJRayiwq/eJBoK7TLsJZFA1OPPgE0ErgotZA6avwSWANAIwbgXQJMo2ZD3PwwMfkQtvJ78uQIdB9D3zCJRViM8kzbct5uJmIbanF/wPd9m5LgD932z+B+Tz8BfZ10E4lHGFMAAAAAElFTkSuQmCC>

Simply ran the image through OptiPNG.

Thanks to Night2 and Jonathan Frech for helping save 9 bytes.

\$\endgroup\$
3
  • 3
    \$\begingroup\$ You can replace data:image/png; with data; (only Chrome) or data:; (Chrome and FireFox). Modern browsers can detect the image type themselves. \$\endgroup\$
    – Night2
    Sep 21, 2019 at 16:29
  • \$\begingroup\$ @Night2 True, but I want to keep cross-compatibility and I can't test in Safari. \$\endgroup\$
    – Lewis
    Sep 21, 2019 at 16:43
  • 2
    \$\begingroup\$ I can verify that data:; does work on Safari (Version 13.0). \$\endgroup\$ Sep 22, 2019 at 0:45
2
\$\begingroup\$

755 bytes (img tag)

img {image-rendering: pixelated;width:256px;height:256px}
<img alt src=data:;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAG1BMVEUAAAD8gSvNHwhyWgj8+vxeXl65ORELkwirq6tQs3kTAAABwklEQVR4AcRPRwHFIBRjGPj5GKCpAODFv7YOAeTaXLPTZ8hwLNmtoPCBE1RhVRnBWljNCoSGZgQCpOleAD5AoZjug3Sq132+JNIJfoyD//3NXPlCZmS8AjeSZE9GkJz91rADAL7IYLV1GAqiV6C+dqkBtf6dGAZul84i/2GDYbZZ5rOfKmJLojQH7ionk/g41azWwctQ/Jr+LSElawT62gv4vGIUsstOPoGvKxCs8Q6JLwVJXMPfggpUSi+ETTvxSsCkGel8iq/+KVyUpnnacNT46WCnsLEKAmIr+bYcJemgU8pyRjspC0+yb1l0YbU+99shOFTYKbSPhwVXhb618sNC/XYVholzIVIbRVIGO/jmQtYzC0WY9hmyRvx4LN+PekWYJBHpEtrAx70TXAXHBWlOx8DdmhAn0eVrQArpHOgEe1f23XcAMZ0DvUBBu2sD7ClcinBbbrd6FilVob2ohw1gd+3Sinw0sAL5LGG2aRKL0BpU6/H8F2aqv6CuwS+Bw8DdRiGS1DDwWwCEYWAQjHnOM5KdDSq1ws9ZQGYm2DUYYWQAwP8D0sgQkR7AXEyIiAvKFYSyYoVIClSxQcIK4OkBAPZ10E6zEPFIAAAAAElFTkSuQmCC>

Ran Lewis's image through 200 iterations of zopflipng with all possible filter combinations enabled.

\$\endgroup\$
3
  • \$\begingroup\$ You could save two "bytes" by removing the two white spaces from the img style \$\endgroup\$ Oct 8, 2019 at 12:33
  • 1
    \$\begingroup\$ the CSS isn't included in the byte count just the HTML img tag, but yes that could be done if we needed to optimize the CSS \$\endgroup\$
    – TiKevin83
    Oct 9, 2019 at 17:58
  • \$\begingroup\$ Okay my misunderstanding then, as you were \$\endgroup\$ Oct 10, 2019 at 8:44
1
\$\begingroup\$

Bash, 1447 1565 bytes

Too much time on this one already. :)

N="1q/4xt/5E3S9n/3YWDwhfwblbew5x/4P/5Cw
1/va
1/oEw.Q/16p7/2X4
1s/2Z.Wc.Wc.Wc8.Z2/1bfhM.QLb/108dQ.Qc/2Kw
1/2V.W/b5/10/10
1/dO/10/10/10/40
1/ap/88w
1@4g/5S.Qx/2y.Qx
23
1/1k
3D4
2/5_/45wu2u2s/24/2cx41id1iv1/2d1r41q/5p
1/1e/3K11r5wt12/2r8w1p61u11vu2u4tAwT8wqE1xs4a3j9.R.R.Yde.R.Ys3/6kw/1z11u1w2uwzww
1/qK
1/sK_2v
1/5q2u2/36/1p/4w3B/3_
1/hLwwwwz
1/hiwwwww
1/8r/2u.Qz/3Cw2v
8_
1/pd/21w/3_
1/qI
1/oG1v11v111s1111s3v1/3@111t1
1/rI
2/1V.Wc.W
3e
3W
5/se.Q
1/tGw12w
1/pG.Q/1w2
1/p9wCwq11u112s12@31tAs4
6/1f
7i4/5N/44/1lx/1A_y/1y/3W
1/5X2/5CY/45y
10
2/3o.W2a.W2a.W2a251.Z221.T.T422qw1v11w1.QO11.T22w/12/13sw3.Te.T.T64wwvr326o2w/16vwwZv
3/7Z@zwu2u2r5/24o8oy5r36V/35w
1/2N4.S/1W44o44o44o44o44j/1D4.Sp
51
3/[email protected]/40
1/gMw3wwwwwt3t
4/1U.W21.T.T1.W2a.W2/3111.T2/3U.T.T
5/13
4/1a11
i/7v.Qw/1_/45/3y/1u
1/8p/17w/2swDwW/10FZ
1/14
2/7Y@3www2/1_@/14/35
22
1/6tv11r.R1.R221t21r113r23rw3t111u11u6q34o.Y1r11111s1113t3v12r212r21v13s12t1112s11v1w
1a
8/68wxwx/22wxwx
1/X
7/2L3.U.U.YM/19.R.R.R.R.YS/143.U.U.Y
b/1j
o/1m11g2
e/1g
bC4
9/10
J/17
2Ya2s2
3/1r444444"
R=(/11 .Yr .X.X 211 .V.V .Yo3 .Z.Z 4s4s 131 22222)
for x in {Q..Z};{ N=${N//.$x/${R[i]}};i=$[i+1]; }
U=($N)
for((j=0;$j<62;j++)){
for((i=0;$i<${#U[j]};i++)){ c=${U[j]:i:1};[ "$c" = '/' ]&&c=${U[j]:i+1:2}&&i=$[i+2];T[$j]+=" $[64#$c]"; }
read p x t<<<${T[j]}
P=$[P+p]
S[$x]=$P
for n in $t;{ x=$[x+n];S[$x]=$P; }
}
echo "<img alt src=data:image,`for((j=0;$j<4096;j++)){ printf %%%02x ${S[j]}; }`>"

Try it online!

img {width:256px;height:256px}
<img alt src=data:image,%42%4d%76%0a%00%00%00%00%00%00%78%00%00%00%28%00%00%00%40%00%00%00%40%00%00%00%01%00%04%00%00%00%00%00%00%00%00%00%c4%0e%00%00%c4%0e%00%00%00%00%00%00%00%00%00%00%00%00%00%00%2b%81%fc%00%08%1f%cd%00%08%5a%72%00%fc%fa%fc%00%5e%5e%5e%00%11%39%b9%00%08%93%0b%00%ab%ab%ab%00%00%ff%00%00%00%ff%00%00%00%ff%fc%00%fc%ff%ab%00%ab%ff%00%00%00%ff%00%00%00%ff%00%00%00%00%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%55%50%55%55%55%50%55%55%55%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%25%55%88%00%48%88%88%50%48%88%88%55%48%55%05%55%05%55%05%55%05%55%05%55%05%55%05%55%05%55%05%55%05%55%88%00%00%88%88%50%48%88%88%50%48%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%88%00%00%88%88%50%48%88%88%50%48%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%88%00%00%88%88%50%48%88%88%50%48%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%88%00%00%88%88%50%48%88%88%50%04%44%01%11%11%11%44%44%04%44%04%44%04%44%04%44%04%44%04%44%04%44%44%00%44%44%44%50%44%44%44%01%11%14%44%14%44%11%44%00%00%00%00%00%00%00%88%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%44%14%41%14%41%11%10%00%00%00%00%00%00%00%40%80%00%00%00%00%00%00%55%55%55%50%55%55%55%50%55%04%44%50%11%11%77%11%00%00%00%00%00%00%00%00%04%80%00%00%00%00%00%00%48%88%88%00%48%88%88%50%48%04%44%50%44%77%77%77%00%00%00%00%00%00%00%00%00%08%80%00%00%00%00%00%48%88%88%00%48%88%88%50%48%00%77%77%44%44%77%77%70%00%00%00%00%00%00%00%00%04%80%00%00%00%00%00%48%88%88%00%48%88%88%50%48%00%77%77%77%74%47%77%77%00%00%00%00%00%00%00%00%00%08%80%00%00%00%00%48%88%88%00%48%88%88%50%48%00%71%77%17%77%44%77%77%70%00%00%00%00%00%00%00%00%04%08%00%00%00%00%48%88%88%00%48%88%88%50%48%00%11%74%47%77%74%77%77%70%11%14%00%00%00%00%00%00%00%48%00%00%00%00%44%44%44%00%44%44%44%50%44%04%44%77%77%77%74%47%77%71%11%11%04%00%00%00%00%00%00%00%88%00%00%00%00%00%00%00%00%00%00%00%00%00%44%77%11%77%74%47%77%71%11%11%00%10%00%00%00%00%00%00%40%80%00%00%55%50%55%55%55%50%55%55%55%50%07%77%14%47%74%47%74%11%11%11%04%10%00%00%00%00%00%00%04%80%00%00%88%00%48%88%88%50%48%88%88%50%48%77%44%47%77%47%70%01%11%10%01%10%00%00%00%00%00%00%00%08%80%00%88%00%00%88%88%50%48%88%88%50%48%77%77%77%77%47%11%40%11%10%41%10%00%00%00%00%00%00%00%04%80%00%88%00%00%88%88%50%48%88%88%50%48%17%77%77%77%44%11%10%40%01%11%00%00%00%00%00%00%00%00%00%08%80%88%00%00%88%88%50%48%88%88%50%48%44%77%71%17%74%41%11%77%00%00%00%00%00%00%00%00%00%00%00%04%08%88%00%00%88%88%50%48%88%88%50%04%44%77%71%44%77%44%44%44%77%00%11%00%00%00%00%00%00%00%00%00%48%44%00%44%44%44%50%44%44%44%00%00%77%77%74%44%77%77%77%44%47%71%11%40%00%00%00%00%00%00%00%00%00%00%00%00%06%50%00%00%00%00%00%00%47%77%77%77%77%77%77%44%47%71%10%00%00%00%00%00%00%00%00%00%00%00%00%00%05%50%00%00%00%00%00%00%47%11%77%77%77%77%74%44%77%11%40%00%00%00%00%00%00%00%00%00%00%00%00%00%06%50%00%00%00%00%00%00%00%14%47%71%14%77%44%47%77%11%70%00%40%00%00%00%00%00%00%00%00%00%00%00%05%50%00%00%00%00%00%00%00%44%47%11%44%47%44%77%77%14%77%47%44%04%00%00%00%00%00%00%00%00%00%00%06%50%00%00%00%00%00%00%00%00%00%71%44%77%44%77%77%17%77%11%11%04%00%00%00%00%00%00%00%00%10%00%05%50%00%01%00%00%00%00%00%00%00%00%47%77%44%77%77%17%41%17%71%11%40%00%00%00%00%00%00%00%51%10%06%50%00%10%10%00%00%00%00%00%00%00%00%00%00%77%77%11%17%77%41%11%10%00%00%00%00%00%00%01%51%11%16%51%11%10%10%00%00%00%00%00%00%00%00%00%00%77%77%71%77%74%44%11%10%00%00%00%00%00%00%15%11%11%16%51%11%11%01%00%00%00%00%00%00%00%00%00%00%77%77%77%77%44%77%10%10%00%00%00%00%00%00%15%11%11%16%51%11%11%01%00%00%00%00%00%00%00%00%00%00%07%77%77%77%44%70%01%00%00%00%00%00%00%00%15%11%11%16%51%11%11%01%00%00%00%00%00%00%00%00%00%00%07%11%77%77%44%00%00%00%00%00%00%00%00%00%15%11%11%16%51%11%11%01%00%00%00%00%00%00%00%00%00%00%01%14%47%77%00%00%00%00%00%00%00%00%00%00%15%11%11%16%51%11%11%01%00%00%00%00%00%00%00%00%00%00%01%44%47%70%00%00%00%00%00%00%00%00%00%00%01%51%11%15%51%11%10%10%00%00%00%00%00%00%00%00%00%00%44%40%00%00%00%00%00%00%00%00%00%00%00%00%01%51%10%06%50%01%10%10%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%10%00%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%03%00%22%22%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%03%33%22%22%22%20%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%33%32%22%22%22%22%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%03%22%22%22%22%22%33%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%11%10%22%32%21%22%12%33%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%11%33%33%33%22%22%20%03%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%03%33%33%33%23%33%20%03%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%33%33%32%33%32%30%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%11%11%11%13%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%33%11%11%33%33%30%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%31%33%11%13%11%13%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%31%31%11%31%13%33%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%03%33%11%31%03%33%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%02%22%22%22%22%11%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%22%22%20%01%11%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%01%11%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00>

\$\endgroup\$
1
  • \$\begingroup\$ Yes I know, it is not trivial task to achieve small result, many Ideas can be used - thanks for contribution :) - can you give some explanation? \$\endgroup\$ Oct 4, 2019 at 18:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.