Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Daedalus – Though the Maze of Code

Daedalus – Though the Maze of Code

In Greek mythology, Daedalus (Greek: Δαίδαλος "to work artfully") was a skillful craftsman and artist who created the first Labyrinth. People like him still exist and are known as creative coders and code golfers. They push the limits of what is possible with JavaScript and open new doors for others.

Follow Martin on his journey through a maze of JavaScript, CSS, and HTML where the boundaries between art and code are blurred. This entertaining talk will show off invisible code, tweet-sized games, Asian programs, symmetric JavaScript, polyglot inceptions, self-modifying functions, exotic symbols and much more mind-blowing examples.

Martin Kleppe

March 01, 2018
Tweet

More Decks by Martin Kleppe

Other Decks in Technology

Transcript

  1. Ubilabs, Hamburg JSConf.is 2018 aem1k.com @aemkei Martin Kleppe In Greek

    mythology, Daedalus 
 (Greek: Δαίδαλος "to work artfully") 
 was a skillful craftsman and artist 
 who created the first Labyrinth. Daedalus +-------------+ | +---------+ | | | +-----+ | | | | | +-+ | | | | | + | + | | | | +---+---+ | | +---+ | +---+ | +-------+
  2. Ubilabs, Hamburg JSConf.is 2018 aem1k.com @aemkei Martin Kleppe In Greek

    mythology, Daedalus 
 (Greek: Δαίδαλος "to work artfully") 
 was a skillful craftsman and artist 
 who created the first Labyrinth. Daedalus +-------------+ | +---------+ | | | +-----+ | | | | | +-+ | | | | | + | + | | | | +---+---+ | | +---+ | +---+ | +-------+
  3. Ubilabs, Hamburg JSConf.is 2018 aem1k.com @aemkei Martin Kleppe In Greek

    mythology, Daedalus 
 (Greek: Δαίδαλος "to work artfully") 
 was a skillful craftsman and artist 
 who created the first Labyrinth. Daedalus +-------------+ | +---------+ | | | +-----+ | | | | | +-+ | | | | | + | + | | | | +---+---+ | | +---+ | +---+ | +-------+
  4. +-------------+ | +---------+ | | | +-----+ | | |

    | | +-+ | | | | | + | + | | | | +---+---+ | | +---+ | +---+ | +-------+ Δαίδαλος
  5. __ .__ ___________ ____ _____ _/ |_|__|__ __ ____ _/

    ___\_ __ \_/ __ \\__ \\ __\ \ \/ // __ \ \ \___| | \/\ ___/ / __ \| | | |\ /\ ___/ \___ >__| \___ >____ /__| |__| \_/ \___ > \/ \/ \/ .___.__ \/ ____ ____ __| _/|__| ____ ____ _/ ___\/ _ \ / __ | | |/ \ / ___\ \ \__( <_> ) /_/ | | | | \/ /_/ > \___ >____/\____ | |__|___| /\___ / \/ \/ \//_____/
  6. .<script> eval(z='p="<"+"pre>"/* ,.oq#+ ,._, */;for(y in n="zw24l6k\ 4e3t4jnt4qj24xh2 x/* =<,m#F^

    A W###q. */42kty24wrt413n243n\ 9h243pdxt41csb yz/* #K q##H######Am */43iyb6k43pk7243nm\ r24".split(4)){/* dP cpq#q##########b, */for(a in t=pars\ eInt(n[y],36)+/* p##@###YG=[#######y */(e=x=r=[]))for\ (r=!r,i=0;t[a/* d#qg `*PWo##q#######D */]>i;i+=.05)wi\ th(Math)x-= /* aem1k.com Q###KWR#### W[ */.05,0>cos(o=\ new Date/1e3/* .Q#########Md#.###OP A@ , */+x/PI)&&(e[~\ ~(32*sin(o)*/* , (W#####Xx######.P^ T % */sin(.5+y/7))\ +60] =-~ r);/* #y `^TqW####P###BP */for(x=0;122>\ x;)p+=" *#"/* b. OQ####x#K */[e[x++]+e[x++\ ]]||(S=("eval"/* l `X#####D , */+"(z=\'"+z.spl\ it(B = "\\\\")./* G####B" # */join(B+B).split\ (Q="\'").join(B+Q/* VQBP` */)+Q+")//m1k")[x/2\ +61*y-1]).fontcolor/* TP */(/\\w/.test(S)&&"#\ 03B");document.body.innerHTML=p+=B+"\\n"}setTimeout(z)')// </script>
  7. dP""b8 dP"Yb 8888b. 888888 dP""b8 dP"Yb 88 888888 dP `"

    dP Yb 8I Yb 88__ dP `" dP Yb 88 88__ Yb Yb dP 8I dY 88"" Yb "88 Yb dP 88 .o 88"" YboodP YbodP 8888Y" 888888 YboodP YbodP 88ood8 88
  8. x .

  9. dP""b8 dP"Yb 8888b. 888888 dP""b8 dP"Yb 88 888888 dP `"

    dP Yb 8I Yb 88__ dP `" dP Yb 88 88__ Yb Yb dP 8I dY 88"" Yb "88 Yb dP 88 .o 88"" YboodP YbodP 8888Y" 888888 YboodP YbodP 88ood8 88 88""Yb 888888 Yb dP 888888 88""Yb .dP"Y8 888888 88__dP 88__ Yb dP 88__ 88__dP `Ybo." 88__ 88"Yb 88"" YbdP 88"" 88"Yb o.`Y8b 88"" 88 Yb 888888 YP 888888 88 Yb 8bodP' 888888
  10. [][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[] +[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]][( [(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+! []]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+![+[]]]]]+ [+[[!+[]+!+[]+!+[]]]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+! []]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]] []+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]]+([][[]]+[])[+[[+!+[]] (![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[+!+[]]]]+([][[]]+[ [[+[]]]]+([][(![]+[])[[[[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[]) [[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!

    []]]]]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+[]]]]+([][[] [])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+( +[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]+ []]]]+(!![]+[])[+[[+!+[]]]]]((![]+[])[+[[+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+ [+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]+(!![]+[])[+[[+[]]]]+([][(![]+[])[+[[+ []]]]+([][[]]+[])[+[[!+[]+!+[]+!+[]+!+[]+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[ +[]]]]+(!![]+[])[+[[!+[]+!+[]+!+[]]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[ []+!+[]+!+[]+!+[]]]]+[+!+[]]+([][(![]+[])[+[[+[]]]]+([][[]]+[])[+[[!+[]+!+[]+!+[] []+!+[]]]]+(![]+[])[+[[!+[]+!+[]]]]+(!![]+[])[+[[+[]]]]+(!![]+[])[+[[!+[]+!+[]+!+ []]]]+(!![]+[])[+[[+!+[]]]]]+[])[+[[+!+[]]]+[[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]]])()
  11. f a l s e f a l s e

    t r u e t r u e t r u e
  12. f a l s e f a l s e

    t r u e t r u e t r u e
  13. f a l s e o b j e c

    t t r u e f a l s e o b j e c t o b j e c t f a l s e t r u e
  14. o b j e c t o b j e

    c t u n d e f i n e d f a l s e t r u e t r u e t r u e o b j e c t t r u e o b j e c t t r u e
  15. {(.0-{}-0.)} xXXx =wYYw= ([]+!!+[]) [0.**.0] +[([])]+ (''+!!+'') [0-~+!!+~-0] +([]+[]+[])+ (8+{}+8)

    [0|8.**.8|0] +([]||[])+ (""+(0==0)+"") [0.**.0] +[]+''+[]+ (0+{}+0) [8-!!-8] +(''||'')+ ("("+[]+")") [0+~~+0] +""+''+""+ (["xXXx"]) [0+~~+0] +([""])+ (')YY(') [""+~~+""] //-!!-\\
  16. { } "false" "false" "object" "true" "object" "()" ["xXXx"] ")("

    =wYYw= +""+ +""+ +""+ +""+ +""+ +""+ +""+ //-!!-\\ xXXx [1] [2] [3] [1] [5] [0] [0] [0]
  17. ᚦ='',ᚢ=!ᚦ+ᚦ,ᚠ=!ᚢ+ᚦ,ᚻ=ᚦ+ {},ᛉ=ᚢ[ᚦ++],ᛊ=ᚢ[ᛇ=ᚦ],ᛟ=+ +ᛇ+ᚦ,ᛞ=ᚻ[ᛇ+ᛟ],ᚢ[ᛞ+=ᚻ[ᚦ ] + ( ᚢ . ᚠ +

    ᚻ ) [ ᚦ ] + ᚠ [ ᛟ ] +ᛉ+ᛊ+ᚢ[ᛇ]+ᛞ+ᛉ+ᚻ[ᚦ]+ᛊ] [ ᛞ ] ( ᚠ [ ᚦ ] + ᚠ [ ᛇ ] + ᚢ [ ᛟ ] +ᛊ+ᛉ+"(ᚦ)")()
  18. ='', =! + , =! + , = + {},

    = [ ++], = [ = ], =+ + + ,బ= [ + ], [బ+= [ ]+ ( . + )[ ]+ [ ]+ + + [ ] +బ+ + [ ]+ ][బ]( [ ]+ [ ] + [ ]+ + +"( )")()
  19. ᐳ='',ᐸ=!ᐳ+ᐳ,Ƙ=!ᐸ+ᐳ,ᐳᐳ=ᐳ+ { } , ᐳ ᐸ = ᐸ [ ᐳ

    + + ] , ᐳ Ƙ =ᐸ[ᐸᐳ=ᐳ],ᐸᐸ=++ᐸᐳ+ᐳ,ᐸƘ =ᐳᐳ[ᐸᐳ+ᐸᐸ],ᐸ[ᐸƘ+=ᐳᐳ[ᐳ]+(ᐸ. Ƙ + ᐳ ᐳ ) [ ᐳ ] + Ƙ [ ᐸ ᐸ ] + ᐳ ᐸ + ᐳ Ƙ +ᐸ[ᐸᐳ]+ᐸƘ+ᐳᐸ+ᐳᐳ[ᐳ]+ᐳƘ][ᐸ Ƙ](Ƙ[ᐳ]+Ƙ[ᐸᐳ]+ᐸ[ᐸᐸ]+ᐳƘ +ᐳᐸ+"(ᐳ)")()
  20. ò́̂ ='',o̖̔̕=!ò́̂ +ò́̂ ,o̞̟̠ =!o̖̔̕+ò́̂ ,ò́̂̃ =ò́̂ +{},o̖̗̔̕=o̖̔̕[ò́̂ + +],o̡̞̟̠

    =o̖̔̕[o̡̢̞̟̠̣ =ò́̂ ],o̖̗̘̙̔̕ =++o̡̢̞̟̠̣ +ò́̂ ,ò́̂̃̄ =ò́̂̃ [o̡̢̞̟̠̣ +o̖̗̘̙̔̕ ],o̖̔̕[ò́̂̃̄ +=ò́̂̃ [ò́̂ ]+(o̖̔̕.o̞̟̠ +ò́̂̃ )[ò́̂ ]+o̞̟̠ [o̖̗̘̙̔̕ ] +o̖̗̔̕+o̡̞̟̠ +o̖̔̕[o̡̢̞̟̠̣ ]+ò́̂̃̄ +o̖̗̔̕+ò́̂̃ [ò́̂ ]+o̡̞̟̠ ][ò́̂̃̄ ](o̞̟̠ [ò́̂ ] +o̞̟̠ [o̡̢̞̟̠̣ ]+o̖̔̕[o̖̗̘̙̔̕ ]+o̡̞̟̠ +o̖̗̔̕+"(ò́̂ )")``
  21. A = '' // empty string B = !A +

    A // "true" C = !B + A // "false" D = A + {} // "[object Object]" E = B[A++] // "t" = "true"[0] F = B[G = A] // "r" = "true"[1] H = ++G + A // 2, 3 I = D[G + H] // "c"
  22. I + // "c" D[A] + // "o" = "object"[0]

    (B.C+D)[A] + // "n" = "undefined"[1] C[H] + // "s" = "false"[2] E + // "t" F + // "r" B[G] + // "u" = "true"[2] I + // "c" = "[object]"[5] E + // "t" D[A] + // "o" = "[object]"[1] F // "r"
  23. C[A] + // "a" C[G] + // "l" B[H] +

    // "e" F + // "r" E + // "t" "(A)" // "(1)"
  24. =[]

  25. +++

  26. ==>

  27. //

  28. /x/

  29. / /[ =""], ='"', = == , = == ,

    = + , = + , =+ , =+ ={}, = + , = + , = + , = + , = . + , = [ ], = [ ], = [ ], = [ ], = [ ], = [ ], = [ ], = [ ], = [ ], ="\\)(", = [ ], = [ ], = [ ], = + + + + + +" ", = + + + + + + + + + + , = [ ][ ], ( ( + + ( + ( + + + + + + + +( = + +( + )+ )+ + + + + + + + + +"''"+ +"."+ + + + + + +( + )+ + + + +"/"+ +".{"+( + )+"}/"+ + +( + )+( + ) +",''"+ + + )())()+ )())() /// aem1k
  30. 00 | Null 01 | Start of Heading 02 |

    Start of Text 03 | End of Text 04 | End of Transmission 05 | Enquiry 06 | Acknowledge 07 | Bell \b | 08 | Backspace \t | 09 | Horizontal Tabulation \n | 0A | Line Feed \v | 0B | Vertical Tab \f | 0C | Form Feed \r | 0D | Carriage Return 0E | Shift Out 0F | Shift In
  31. 10 | Data Link Escape 11 | Device Control 1

    12 | Device Control 2 13 | Device Control 3 14 | Device Control 4 15 | Negative Acknowledge 16 | Synchronous Idle 17 | End of Transmission Block 18 | Cancel 19 | End of Medium 1A | Substitute 1B | Escape 1C | File Separator 1D | Group Separator 1E | Record Separator 1F | Unit Separator
  32. 00 00 00 00 00 00 00 00 00 00

    00 00 00 00 00 00 16 11 16 1C 16 15 17 12 17 14 12 18 13 11 12 19 " "
  33. 6 1 6 C 6 5 7 2 7 4

    2 8 3 1 2 9
  34. 1. Browser opens index.html HTML 2. HTML contains tag <script

    src="#"> JS 3. Script writes <link href="#"> CSS 4. Stylesheet renders background: url() JPEG
  35. HTML = JS = CSS = JPEG ÿØÿá = {

    inception: "<tt>" } inception * { background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  36. HTML (Content-Type: text/html) ÿØÿá = { inception: "<tt>" } inception

    * { background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  37. HTML (Content-Type: text/html) ÿØÿá = { inception: "<tt>" } inception

    * { background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  38. HTML ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  39. HTML ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  40. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  41. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  42. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  43. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  44. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  45. JS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  46. CSS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  47. CSS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  48. CSS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  49. CSS ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ */
  50. JPEG ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  51. JPEG ÿØÿá = { inception: "<tt>" } inception * {

    background: url() } var inception; function url(){}; document.write('<'+'link href="#" rel="stylesheet">'); // <script charset="ISO-8859-1" src="#"></script> /** </tt> <inception><pre>...</pre></inception> Image Data: ÿÛC/ #)#/)&)52/ ... */
  52. FFD8FFE1 0D3D207B 20696E63 65707469 6F6E3A20 223C7474 3E22207D 0A696E63 65707469 6F6E202A

    207B2062 61636B67 726F756E 643A2075 726C2829 207D0A76 61722069 6E636570 74696F6E 3B206675 6E637469 6F6E2075 726C2829 7B7D3B0A 646F6375 6D656E74 2E777269 74652827 3C272B27 6C696E6B 20687265 663D2223 22207265 6C3D2273 74796C65 73686565 74223E27 293B0A2F 2F203C73 63726970 74206368 61727365 743D2249 534F2D38 3835392D 31222073 72633D22 23223E3C 2F736372 6970743E 0A2F2A2A 203C2F74 743E0A0A 3C212D2D 2048544D 4C202D2D 3E0A0A3C 68313E50 6F6C7967 6C6F7420 496E6365 7074696F 6E3C7375 703E343C 2F737570 3E3C2F68 313E0A3C 68323E4A 50454720 3D204353 53203D20 4A53203D 2048544D 4C3C2F68 323E0A0A 3C703E0A 20204120 666F7572 2D666F6C 6420696E 63657074 696F6E20 616E6420 223C6120 68726566 3D226874 7470733A 2F2F656E 2E77696B 69706564 69612E6F 72672F77 696B692F 506F6C79 676C6F74 5F28636F 6D707574 696E6729 223E706F 6C79676C 6F743C2F 613E222E 20497420 69732061 6E20696D 6167652C 20737479 6C652073 68656574 2C207363 72697074 20616E64 20646F63 756D656E 7420616C 6C206174 20746865 2073616D 65207469 6D65210A 3C2F703E 0A0A3C21 2D2D2049 6E6A6563 74656420 496D6167 65202D2D 3E0A0A3C 696E6365 7074696F 6E3E3C70 72653E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 2E0A2E0A 3C2F7072 653E3C2F 696E6365 7074696F 6E3E0A0A 3C68333E 4C657665 6C73206F 6620496E 63657074 696F6E3C 2F68333E 0A0A3C6F 6C3E0A20 203C6C69 3E42726F 77736572 206C6F61 64732070 61676520 6173203C 74743E69 6E646578 2E68746D 6C3C2F74 743E3C2F 6C693E0A 20203C6C 693E4854 4D4C2063 6F6E7461 696E7320 3C74743E 266C743B 73637269 70742073 72633D22 23222667 743B3C2F 74743E20 7461673C 2F6C693E 0A20203C 6C693E53 63726970 74207772 69746573 203C7474 3E266C74 3B6C696E 6B206872 65663D22 23222667 743B3C2F 74743E3C 2F6C693E 0A20203C 6C693E53 74796C65 73686565 74207265 6E646572 73203C74 743E6261 636B6772 6F756E64 3A207572 6C28293C 2F74743E 3C2F6C69 3E0A3C2F 6F6C3E0A 0A3C703E 43726561 74656420 6279204D 61727469 6E204B6C 65707065 2C20616B 61203C61 20687265 663D2268 7474703A 2F2F7477 69747465 722E636F 6D2F6165 6D6B6569 223E4061 656D6B65 693C2F61 3E2E2053 68617265 20697420 6F6E203C 61206872 65663D22 68747470 733A2F2F 74776974 7465722E 636F6D2F 61656D6B 65692F73 74617475 732F3832 34363932 30313637 34373532 30303032 223E5477 69747465 723C2F61 3E206966 20796F75 206C696B 65206974 2E20466F 72206F74 68657220 63726561 74697665 20686163 6B732C20 76697369 74203C61 20687265 663D2268 7474703A 2F2F6165 6D316B2E 636F6D2F 223E6165 6D316B2E 636F6D3C 2F613E2E 3C2F703E 0A0A3C68 333E486F 7720446F 65732069 7420576F 726B3F3C 2F68333E 0A0A3C75 6C3E0A20 203C6C69 3E566965 77207468 65207061 67652073 6F757263 6520616E 64207761 74636820 74686520 6E657477 6F726B20 70616E65 6C20746F 20736565 20776861 74206973 20676F69 6E67206F 6E2E3C2F 6C693E0A 20203C6C 693E5468 6520646F 63756D65 6E742073 74617274 73207769 74682074 68652048 45582073 69676E61 74757265 20224646 20443820 46462045 31222074 68617420 6964656E 74696669 65732074 68652066 696C6520 61732061 204A5045 472E3C2F 6C693E0A 20203C6C 693E5468 6520666F 6C6C6F77 696E6720 74776F20 62797465 73206465 66696E65 20746865 20455849 46206865 61646572 2073697A 652E2048 65726520 22304420 33442220 6C656176 65732073 70616365 20666F72 20333338 39206279 7465732E 203C2F6C 693E0A20 203C6C69 3E426563 61757365 20746865 20656E63 6F64696E 67207761 73207365 7420746F 20224953 4F2D3838 35392D31 222C2074 68652066 69727374 20617373 69676E65 6D6E7420 3C74743E 3F3F3F3F 203D207B 7D3C2F74 743E2069 73206120 76616C69 64204A61 76615363 72697074 20657870 72657373 696F6E2E 3C2F6C69 3E0A2020 3C6C693E 54686520 65717561 6C207369 676E2069 73206E6F 74206120 616C6C6F 77656420 696E2043 53532073 656C6563 746F7273 20627574 20697420 776F6E27 74206361 75736520 74686520 696E7465 72707265 746F7220 746F2073 746F702E 203C2F6C 693E0A20 203C6C69 3E546865 2072756C 65203C74 743E696E 63657074 696F6E20 2A207B20 6261636B 67726F75 6E643A20 75726C28 29207D3C 2F74743E 20697320 76616C69 64204353 5320616E 64204A53 20617420 74686520 73616D65 2074696D 652E3C2F 6C693E0A 20203C6C 693E546F 2061766F 69642065 72726F72 7320696E 204A6176 61536372 6970742C 20776520 6E656564 20746F20 686F6973 74207468 65207661 72696162 6C652022 696E6365 7074696F 6E222061 6E642074 68652066 756E6374 696F6E20 2275726C 222E3C2F 6C693E0A 20203C6C 693E5768 656E2075 73696E67 203C7474 3E687265 663D2223 223C2F74 743E2C20 3C74743E 7372633D 2223223C 2F74743E 206F7220 3C74743E 75726C28 293C2F74 743E2069 7420706F 696E7473 20746F20 74686520 73616D65 20726573 736F7572 63652E20 3C2F6C69 3E0A2020 3C6C693E 4C696E65 20616E64 20626C6F 636B2063 6F6D6D65 6E747320 6D616B65 20697420 706F7373 69626C65 20746F20 6170706C 79207468 65204854 4D4C2073 74727563 74757265 20616E64 206C6F61 64206F75 72207363 72697074 2E3C2F6C 693E0A20 203C6C69 3E546F20 72656E64 65722048 544D4C20 6F6E2074 68652066 69727374 2072756E 2C207468 65202243 6F6E7465 6E742D54 79706522 20686561 64657220 6D757374 20626520 22746578 742F6874 6D6C222E 3C2F6C69 3E0A2020 3C6C693E 54686520 74797065 2077696C 6C206265 2069676E 6F726564 206C6174 65722C20 7768656E 20776520 72656665 7220746F 20697420 61732061 204A532C 20435353 20616E64 204A5045 472E3C2F 6C693E0A 20203C6C 693E5468 656E2077 6520696E 636C7564 65207468 65204A50 45472069 6D616765 20646174 6120616E 6420636C 6F736520 74686520 626C6F63 6B20636F 6D6D656E 74206174 20746865 20656E64 206F6620 74686520 66696C65 2E3C2F6C 693E0A3C 2F756C3E 0A0A3C68 333E5265 6C617465 64205072 6F6A6563 74733C2F 68333E0A 0A3C756C 3E0A2020 3C6C693E 3C612068 7265663D 22687474 703A2F2F 626C6F67 2E706F72 74737769 67676572 2E6E6574 2F323031 362F3132 2F627970 61737369 6E672D63 73702D75 73696E67 2D706F6C 79676C6F 742D6A70 6567732E 68746D6C 223E506F 72745377 69676765 723A204A 5045472B 4A533C2F 613E3C2F 6C693E0A 20203C6C 693E3C61 20687265 663D2268 7474703A 2F2F7777 772E7468 696E6B66 752E636F 6D2F626C 6F672F67 69666A61 76617363 72697074 2D706F6C 79676C6F 7473223E 5468696E 6B66753A 20474946 2B4A533C 2F613E3C 2F6C693E 0A20203C 6C693E3C 61206872 65663D22 68747470 3A2F2F6C 63616D74 75662E63 6F726564 756D702E 63782F73 71756972 72656C2F 223E5371 75697272 656C3A20 48544D4C 2B4A5045 473C2F61 3E3C2F6C 693E0A3C 2F756C3E 20200A0A 3C212D2D 204D6574 61204461 7461202D 2D3E0A0A 3C746974 6C653E50 6F6C7967 6C6F7420 496E6365 7074696F 6E3A204A 50454720 3D204353 53203D20 4A53203D 2048544D 4C3C2F74 69746C65 3E0A0A3C 6D657461 206E616D 653D2276 69657770 6F727422 20636F6E 74656E74 3D227769 6474683D 64657669 63652D77 69647468 2C20696E 69746961 6C2D7363 616C653D 31222F3E 0A3C6D65 7461206E 616D653D 22747769 74746572 3A736974 65222063 6F6E7465 6E743D22 4061656D 6B656922 2F3E0A3C 6D657461 206E616D 653D2274 77697474 65723A63 61726422 20636F6E 74656E74 3D227375 6D6D6172 795F6C61 7267655F 696D6167 65222F3E 0A3C6D65 74612070 726F7065 7274793D 226F673A 696D6167 65222063 6F6E7465 6E743D22 68747470 3A2F2F69 6E636570 7431306E 2E636F6D 3F33222F 3E0A3C6D 65746120 70726F70 65727479 3D227477 69747465 723A696D 61676522 20636F6E 74656E74 3D226874 74703A2F 2F696E63 65707431 306E2E63 6F6D3F33 222F3E0A 3C6D6574 61207072 6F706572 74793D22 6F673A74 69746C65 2220636F 6E74656E 743D2250 6F6C7967 6C6F7420 496E6365 7074696F 6E3A204A 50454720 3D204353 53203D20 4A53203D 2048544D 4C222F3E 0A3C6D65 74612070 726F7065 7274793D 226F673A 64657363 72697074 696F6E22 20636F6E 74656E74 3D224120 70616765 20777269 7474656E 20696E20 666F7572 20666F72 6D617473 2E204974 20697320 616E2069 6D616765 2C207374 796C6520 73686565 742C2073 63726970 7420616E 6420646F 63756D65 6E74202D 20616C6C 20617420 74686520 73616D65 2074696D 65212042 79204061 656D6B65 69222F3E 0A0A3C68 333E496D 61676520 44617461 3A3C2F68 333E0A3C 7375623E 0A0A3C21 2D2D2049 6D616765 20446174 61202D2D 3E0A2020 20FFDB00 43002F20 2329231D 2F292629 35322F38 47764C47 41414790 676D5576 AB96B3B0 A896A5A2 BCD4FFE5 BCC8FFCB A2A5EBFF EEFFFFFF FFFFFFB6 E2FFFFFF FFFFFFFF FFFFFFDB 00430132 3535473E 478A4C4C 8AFFC2A5 C2FFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF C0001108 00E20190 03011100 02110103 1101FFC4 001F0000 01050101 01010101 00000000 00000000 01020304 05060708 090A0BFF C400B510 00020103 03020403 05050404 0000017D 01020300 04110512 21314106 13516107 22711432 8191A108 2342B1C1 1552D1F0 24336272 82090A16 1718191A 25262728 292A3435 36373839 3A434445 46474849 4A535455 56575859 5A636465 66676869 6A737475 76777879 7A838485 86878889 8A929394 95969798 999AA2A3 A4A5A6A7 A8A9AAB2 B3B4B5B6 B7B8B9BA C2C3C4C5 C6C7C8C9 CAD2D3D4 D5D6D7D8 D9DAE1E2 E3E4E5E6 E7E8E9EA F1F2F3F4 F5F6F7F8 F9FAFFC4 001F0100 03010101 01010101 01010000 00000000 01020304 05060708 090A0BFF C400B511 00020102 04040304 07050404 00010277 00010203 11040521 31061241 51076171 13223281 08144291 A1B1C109 233352F0 156272D1 0A162434 E125F117 18191A26 2728292A 35363738 393A4344 45464748 494A5354 55565758 595A6364 65666768 696A7374 75767778 797A8283 84858687 88898A92 93949596 9798999A A2A3A4A5 A6A7A8A9 AAB2B3B4 B5B6B7B8 B9BAC2C3 C4C5C6C7 C8C9CAD2 D3D4D5D6 D7D8D9DA E2E3E4E5 E6E7E8E9 EAF2F3F4 F5F6F7F8 F9FAFFDA 000C0301 00021103 11003F00 CF18C0E0 5218B91E 83F2A003 23D05001 91E82801 723D0500 191E83F2 A000E3D0 7E540113 6280117A D004981E 94017B4D 456DFB94 1FA8A431 DA8C6AA8 1955473D 853119F9 23D3F2A4 0267E940 0647B530 1723DA90 0A08F6A3 50172BED 4F501415 3E946A01 951D87E5 40C5CAE3 B500195F F66800DC 9FECD006 85ABC062 01FCB047 AE28113E 6D8827F7 58F5E280 208BC833 B7FAB23B 74A5A8C6 5E841228 0AA38EC2 80455CA0 EBB68D40 4DC9FECD 0004A0EB B47E1406 803691C0 07F0A005 F97D07E5 400DDC9F ECD1A8F4 10B2FA0C 7D295D86 826F53D9 69EA1A08 464F007E 54AE1615 5171C8CD 170B0855 45176164 34814C42 003DA988 771E8280 0E3D0500 274EC280 1EAEBDD4 7E5400F1 B48E83F2 A062E17D 07E54009 85F41F95 00185F41 F95001B5 7D050023 8011B81D 28110678 A0033400 66800CD0 019A0050 6800278A 0061A001 7AD00494 017B4C3F 338A432C DF2EEB76 A00C7A04 2AA93D05 171D8D0D 2A356698 48809017 1919F5A6 84C9ADA0 8FEDB740 C6A402B8 0474C8CD 3102411F F6AB8F2D 76F979C6 38EA2801 52389B53 913CB4DA B18E3031 9A006EA2 2DD2D9D5 444B2718 0319EA28 029D880F 79106008 39C83CF6 3490D976 6811752B 7C22EC60 415C7190 0FF8D310 8F147FDA C89E5AED F2F38C0C 77A0096E D6DA3824 05625728 703001FC 28012C62 88D9233C 684E0E49 03D4D004 4442FA84 42211B46 47217046 70D40168 C56DBC46 628F7119 C6D1D280 33AEE310 DC145FBB B4103D3A F1FA54B1 A2D580B7 78155844 D264E41C 13D4D310 EBD16D1D BC836C4A FB4E0600 3F853016 048ACED4 48E39201 66EA79A0 08752815 42CC8A01 CE1B1DFD E93D868A D6F109AE 1236FBA7 93F4A486 CD4FDCEF FB36D1F7 776DC718 CE2A8933 7EC8BFDA 3F67E7CB FBDF87A5 2B0EE69F EE77FD9B 60FBBBB6 E38C6698 8C8B84FB 35D344BF 77AAE7B0 A8922E2C 85A5249E D4B94772 266E7354 4884FA53 01734083 3400B9A0 03340099 A005572B 4012AB83 4863B340 099A005C D00239F9 1BE94C45 6A003340 066800CD 0019A005 CD0004D0 036980AB D6901250 05CD38E2 46FA5219 7AE5D044 C1980E3D 69058CC8 A2898FCF 2007D293 6C691792 DA250186 0E3B8352 312CF0B7 CE141194 EFF51FE3 570D8522 DC2B89EE 1BB971FF 00A08AB2 0147FA64 87FE99AF F36A00AF 01CEAF71 FEE8FE94 0106A56A FBDEE32B B30063BF A52190E9 FF00F1FD 17E3FC8D 0819B124 7BE48DBF B8C4FE84 531155FF 00E4331F FD73FF00 1A0066A5 6CF21F39 4AED4439 07AFAD00 4D643769 CA075208 FD4D0043 1878EEA0 86454057 9CAF7183 FE14809E 4FF908C3 FEE37F4A 6054D4BF E3EC7FD7 31FCCD4B 1A1B61FF 001FA9F4 342061AB 7FC7C0FF 00AE7FD4 D3608B7A 87FC839F E8BFCC53 10BA90CD AFFC087F 3A4F61AD CABA7FFC 7E7BEC3F CC54C0A9 125D4AF0 6A01D216 97F75821 7B727FC2 AC81B6D2 B4FA9EF7 8CC67CBC 60FD6802 C7FCC5BF ED87FECD 4019FABF 17808FEE 0FEB4868 A2C72734 0C6D3105 001400B9 A0033400 66800CD0 019A005C E2900F57 C75E940C 9339A401 4008DF71 BE942110 5300A602 50014005 002E6801 2800A005 5EB4809A 38DA460A BD693761 A573460B 6589739F 98F5350E 45244138 1CE181FC 29265149 811DEB44 430491D0 FCAC453B 215DA2EE 992EEBD1 9EA548FE BFD29256 06EE69CE 7C982693 D467F4C5 51248171 2337A803 F9FF008D 0067581C EA7747DC FF003A00 66A97720 91EDF0BB 300E71CF AD0043A7 1CDEC47E BFC8D21B 3695C191 D3BA807F 3FFF0055 3114DFFE 4331FF00 D73FF1A0 06EA5732 46DE4AED DAE9CE47 3E94809A C8EDD395 875009FD 4D30228C 3B5CC134 8CA59B8C 28E83693 FD690134 9FF21187 FDC6FE94 C0A9A97F C7D8FF00 707F3352 C686587F C7EA7D0D 086C7EA6 B99CFB45 FD4D0FA0 44B3A87F C839FF00 E03FCC55 122EA79F B21C75DC 3F9D2635 B94F4C27 ED783D76 1FE62944 722F0931 A83478FB D1039FA1 3FE35449 1FFCC63F ED97F5A0 077FCC5B FED87FEC D4019DAC 1FF4C1FE E0FEB40D 14BB5218 DA620A00 2800A002 800A0028 00A00280 141A0072 360D2026 A4311BEE 9FA51D44 57AA00A0 02800A00 2800A002 800A0072 0CB52606 95A40506 5BA9ACDB B9A25644 B31DA787 C7B63350 34529998 74638FAD 5C419599 D8F539AD 1221B1B4 C459D30E 2FE2FC7F 91A046AE A6716127 BE07EA28 1162270F 0A3FF794 1FD28033 34B6DD7D 3B7A827F 5A00B77D 6F0BC32C AC80C810 E0FE1401 97A5FF00 C7FC7F8F F2340CD4 126DD54A 6786887E 60D0218F 8FED88FF 00EB9FF8 D00589ED E19BE691 03103839 A008F4EC 1D3E307B 83FCCD00 46D0C70D F5B08976 83BB3CFB 5005B288 64121FBC 01028032 EFA5596E 8946042A 85C8E99E 7FC6A58D 069E7FD3 53E86888 325D4306 E7FED9FF 00534A5D 0A896232 97B6410B 6380180E A08FFF00 5559043A ACEA1162 07E6CE4F B0A4C6B7 2ADACC22 BA491CE1 4F04FD6A 63D8A91A 8EB1A4E2 766C12A2 31EF9356 414EE661 0EAD1BB1 C2EC009F 4EB4017B CB4F3BED 1BB9D9B7 AF18CE68 030F5098 4F76CCA7 2A3807D6 81957340 05001400 50014005 00140050 01400500 14005004 D1B6454B 18E6FBA7 E94202BD 5082800A 002800A0 02800A00 2802F584 2AD976E7 9ACE6FA1 7145C791 40C6F5FA 0351A945 29AE4740 01F7AA51 139154B9 CD5D89B8 D3544894 00500140 0A052000 2818EDB9 A570B085 48A61615 7AE0D021 FB47A521 86D1E828 B80BB57D 0517034A CE189EDC 663527BF 1D68110D CC512160 2351E9C5 171D8ADD 3A520108 07A8CD00 4D16D527 082A1B65 A2399707 728233DC 538B6269 11550870 E5697519 1B7A73C7 BD55C9B0 DC629806 4E31938F 4CD01612 80129882 800A0028 00A00280 0A002800 A002800A 00280154 90690131 FB87E94B A8C86A84 25001400 50014005 00140050 06A42238 ADBE720E 474AC5EA CD3A14E4 93070381 54909B12 28C48D96 3814DBB0 5AE324C1 738E94D0 9EE33069 88314058 31405830 680140A4 03F14862 D0317AD0 046460D3 24901CD2 01680145 0068E9CD FBB65F43 9A10105F 1C4A4503 2AD020A0 09A3C107 3DAA248B 8B1AEC7A 67228436 5775E6AD 32068245 301C3934 008464D0 021E3EB4 086934C0 4A620A00 2800A002 8105030A 04140050 01400503 0A005E84 5004C398 DBD854F5 190D3105 3012800A 002800A0 02801C9F 7C67D693 1A2EC654 06321040 E82B377E 86856981 DD9208F6 3548960A ADE59EC2 86D5C15E C0A9DE86 C490118A 43108A60 26280168 016800A0 02801690 030CF34D 03117BD0 48EA0070 A405BD3D B1291EA2 980CD43F D7FE1401 5A800A00 7236D606 931A6127 071528A6 444D5886 F4A620DC 05003724 D3109400 94C41408 28185001 4005020A 002800A0 02800A00 28181A00 5A00783F 7BE94863 28105002 5300A002 800A0028 01578606 90D16E0E 64EDC773 D07BD43D 8B1B3E44 87A93EA6 85B09860 88F26975 1F4114F1 4C043408 69A60250 01400B40 05200A00 51400EE0 D00331B5 FEB55D04 C78A910B 40C92DDF 64EA7DE8 01D78C1E 6CFB5311 05001400 50029E47 348A446C 08A60308 A620C0A0 05C28EB4 00C26988 4A620A00 28105001 40050014 00500140 05001400 5030A000 5003BD69 0C281094 00500253 00A00280 0A0055EA 290CB313 63AF4EF5 0CB41248 ACD91CD2 4985C697 247A0FE7 4EC2B880 D0C00D03 129884A0 02801680 0A400298 0BD29006 E14EC038 90541F4A 0402900B 40050021 249E6988 2800A005 A00075A0 64B2C454 03D6A0B2 065AA4C9 688C8C55 0861A648 94C02800 A0028105 00250014 005002D0 01400500 14005030 A002801D DA900B8E 28013140 062800C5 00262800 C5002629 805004A3 E6207615 2512AA00 B93F9D43 65588F19 CE3A5508 071400B4 804A6018 A002800A 4018A005 E94C630B 1278A762 6E010D17 0B1246BC 107BD218 FC629085 C5002E29 0119EB54 20A00280 16801C83 2E287B0D 6E5D9705 00F6A865 A2A491F1 91D284C1 A20200F4 AA2484F5 AB244A62 0A041400 50014009 40050014 005002D0 01400503 0A002800 A0051D0D 003C0E29 0062800C 50018A00 36D001B6 80108A00 69A009A1 E47D2A64 5C473B93 C7E9E949 21B634B0 C6D5E00A 76108052 01681831 0284219B EAAC2B89 BFDA8B05 C706CD26 863BA9A4 311BDE9A 131A0FA0 A621C0B1 F6A5A0C7 AD2197D2 CC3A2B6E 3C8CF4A7 6258EFB0 8FEF1FCA 8B05C3EC 5FED7E94 580ACF6A EB295EBE F4089458 311F7FF4 A601F606 FEFF00E9 4007D81B FBFF00A5 0028B165 39DD9FC2 93434C49 0955C375 15068883 76722901 5DC633C6 6AD10C88 8F4AB246 D3105020 A002800A 004A0028 00A00280 16800A00 2800A061 40050014 0120E829 00B40050 01400B9A 004CD002 13400C34 0135A02D 2E01038E A694B62A 3B84CA01 F9734A2C 6C600463 34D88931 525084E2 80232093 5448B851 D68D47A0 848EC28B 08406981 20A92808 DC281001 8A0070A4 028A066B 5AB836E9 F4C5344B DC9B2299 21914010 B95F3A91 4898118A 64864500 191EB400 64500417 50895723 01877F5A 4D5CA4EC 66B2B236 18115258 EC0614B6 0DCAF2A6 C3C55A77 21AB111A B244A005 C521D808 C5313425 0212800A 002800A0 02801680 0A002818 5020A061 400F078A 4019A003 34006680 13340066 80133400 94C07C47 0E3DE932 A2ECC9B9 C76FC6A0 D6485015 9413C9A4 DB44D84C 500348A6 21A45310 9B69DC00 8A004028 B80FA918 A280148A 0420A063 85005981 C88F193D 69A1324F 31BD4FE7 4C03CC6F 53400DDE 68017CD3 EA681079 C7D4D001 E7B7A9A0 00CEDEA6 8013ED07 D4D00018 4DC1E4D4 C8A89111 B4E2A0A2 2979AA89 2CAC6B43 3620A604 A8BC8FAD 4365A094 77A22124 45564094 082800A0 02800A00 5A002818 50014082 8185002E 69006680 0CD0019A 004A6014 00500140 05004FBB 7C40F71D 6A2D666A 9DD0F808 0DCFA54C 8AE84D2C 78391D2A 5311115C 0A771586 114C434D 3010D310 0A0070A4 30A0053D 28001400 B4013427 834D0992 64530109 14084C8A 004C8A00 42680133 40084D02 13340135 B2FDE6F4 A9932A24 72B0DC6A 516C8DB9 5A7D492B 3706B421 8AB43044 A9505A09 7814D0E4 406ACC98 94082800 A002800A 005A0028 00A06140 05001400 50014005 00140050 01400500 14085DA7 D2818F8C 843C9EB5 2F52A2EC 4CA9952C 3A543668 4E8DBE11 EA38352F 463430F2 2840444D 51232988 314C0434 00B9C0A0 04073408 52680B8A 08A00766 90C648C4 01824538 92C6899C 75E6AAC4 DC709B3E D4AC3B8B E69EC734 00DF34D3 B0079A68 B0079A68 B083CDA2 C0279B40 16AD65CA 32F7EB51 34691239 0E5A921B 1BBB8A76 110B0E6A D12C400E 68122406 A4A44930 F914D245 3D8AC6B4 32614005 0212800A 002800A0 02801680 0A061400 50014005 0038231E 8295D059 8BE59EE4 0A2E3B0B B14756A5 70B20F90 7BD1A809 B97FBB46 A1A0190F 60053B05 C6139A62 0A04491C A5063F84 D26AE546 562785FE 638E9DEB 392344EE 4A461AA0 A2071826 AD12C653 10B40094 0084D310 0A602D20 B09C7AD0 0381E290 0C94F005 5445223A A242800A 005CD200 04771400 EC03D280 1302800C 0A009206 D920F43C 1A52D515 17664920 E6A116C6 62992211 4C436800 A6049236 625A95B9 77D082AC CC0D0025 31050212 800A0028 016800C5 030A0028 10503258 63DF963F 7454B761 A571C0AE D270339A 4EE3D061 929D82E3 4B134EC2 B8DA620A 00281050 01400500 140C7AB1 0A40EF49 8D3345D3 E443EAA2 B07A3354 5571C9AA 4032A891 28010D31 0DCD3017 93400609 A0070005 20014011 31C9AA44 31298050 20A06140 05001400 EDC7BF34 804FC680 0E698132 49B860F5 A86AC5A7 71F8E2A0 A18C3154 89632988 434C0327 18A004A6 02E29008 569DC2C2 1140AC26 29882810 6281D85A 43240B81 EF40111E B4C41408 2802CBFE EADD57BB 726A3765 EC8AD9AB 242800A0 41400500 14005001 40050014 0C28034D 5B740A3D 07159495 CD53217E 79EF490D 909AA244 A6210D00 14005002 66980EA4 0359B029 A1323AA2 42800A04 14005001 4005030A 002800A0 051F5A00 B69F3461 AB1968CD 56A86BAD 34C1A223 5440DA60 25301280 1C2900B4 00940094 00629806 2801E8BD CD20090E 07D69A13 22A64850 014013DD 36597FDD 1528A641 54485001 40050014 00500140 0500140C 2800A00B B03FC805 49684901 0722A6C3 B91120FB 1A621B40 050019A0 04269805 20026988 631C9A68 9625300A 04140050 01400500 14005001 40C2800A 009E0971 853D0D44 A37D4B8B E84CC38A CD16577E 0D688819 54212800 A0051480 75001400 94005002 A2EE3EDD E8025A04 4121CB1A 621B4C02 800A0449 31CB0FA0 A48A6474 C90A0028 00A00280 0A002800 A0028185 0014013C 2D8152CA 44E79148 642E98E4 50046698 84A004CD 300CD000 09A00565 603278A0 43298828 00A00281 05001400 50014005 00140050 30A005ED 401747FA B56EB915 83DCD96C 5797835A 44864554 20A00280 16900B40 0B480298 08064D00 4E176AE3 BF7A006B 9DAA4D31 15E98828 00A00281 01E68185 020A0028 00A00280 0A002800 A0614005 00028024 8F8352CA 2C29E290 C0D0031A 30DD3834 C0898153 82314084 1C9C019A 00B11C40 72402680 1FB40EC2 A80AF39C BE290886 9882800A 00281050 01400500 14005001 4005030A 003B5005 A8DCF958 3DAB392D 6E5C65A1 03B64D52 56136369 882800CD 01714521 8E140052 00A00922 5FE23F85 301DD698 88A63D05 00454C41 8A0053D2 801B4085 A002800A 002800A0 02800A00 2800A002 81850028 EB4810F5 A4CA2653 48076681 8B40114D 20FBA39F 5AA25B1D 09523818 34864A29 808C76A9 3E94C423 69F76493 E57FE3C2 90AE5696 19216DB2 A153EF4C 09FF00B3 6EFF00E7 97FE3C28 10C4B39D DDD1532C 9F786471 4004B657 10C65E44 C28EF914 00FF00EC DBBFF9E5 FF008F0A 0085ADE5 59962642 1DB800F7 A009BFB3 2EFF00E7 97FE3C28 02386CE7 9D4B4699 00E0F207 34004B67 3C2BBA48 C85F5EB4 01050014 0C2800A0 09E3FB95 2C63B03D 28013BD0 042FF78D 310DA620 07140C90 735250B4 80555DC4 0A009B1D BB53010D 3115DCE5 8D021B8A 005C5002 35301281 05001400 50014005 00140050 01400500 140C2801 57AD2044 8B525122 D003A818 8EFB17DE 9A132B9E 79A621C8 4AB64500 5A560CB9 140C6CBF EADBE94C 46CDCCA6 1883819F 980FCCD0 49535A00 DAA36390 FD7F0340 16AEA7FB 3C065DBB B18E338A 00A9A5CB E7CF7326 31B8A9C6 7EB4011E A9780F99 6BB3918F 9B3F4340 17EE6630 5B9900CE 31C7E228 021BF51E 7DA37712 62801F7B 77F64456 29BB71C7 5C50043A 39CDAB9F 590FF214 013C6FF6 9B67DC00 CEE53FCA 8039DA06 14082818 5004F1FD CA918E14 0087AD00 40DD4D52 10940805 002838A4 324520D2 65227893 099F5A48 63F15421 9270A4D0 22A9A040 0500382D 218C6FBD 54843917 2AC7D052 6C16C329 882800A0 02800A00 2800A002 800A0028 185002AF 26930448 B9A96512 80695C62 E08A2E82 CC85C166 E7A55268 96331838 34C428A0 07C526D7 F6340C96 63FBB3F4 A606B6A1 FF001EDF F035FE74 1245ACFF 00C798FF 007C7F5A 00B73449 34663906 54F519C5 0052D351 63B9BB44 18556000 FCE8019A B5BC4223 305FDE16 009CD005 F9A259E1 31B67071 9C7D6802 ADF3AFDA 6D533F37 980E2802 CCF6F15C 2812AE40 E9CE2802 AE8BFF00 1E6DFEF9 FE428026 971159C8 6DD43632 783F9D00 73D40C28 105030A0 09E3FB95 2C63874A 00434010 37535421 2810A290 C280245F 95A3CFAE 4D219A1B 0150474C 5050D65C 50220946 46286C08 4AD170B0 2A6695C2 C3C8DAA4 D2DD8CAD D4D68664 EDF2458E E6A3A97B 220AB202 800A0028 00A00280 0A002818 5001400A AA5BA52B 8257278E 02396E2A 2522D449 76A27FF5 EA6ED956 4869940E 828E50B8 D32934F9 4571BB89 EF4EC2B8 D2037D6A AE2B0D20 814C4250 0485B319 068066E5 F02D6E00 1925D7F9 8A64906B 3FF1E63F DF1FC8D0 04BA8A33 D93AA02C C71C0FAD 0056D191 91A75752 AC36F07F 1A00ADA9 C527DAE5 9363797C 7CD8E3A0 A00D2D48 95D3E420 9078FE62 8031ACC9 37B0927F 8C5006A6 AF1C92C5 188D1988 6E702801 747056D5 D48C1121 047E0280 24B2FF00 8F67FF00 7DBF9D00 73F40050 0140C280 2588FCA4 52631E4E 0520232F 9A6223A6 003AD002 9A402A0D CC050C68 9E15F32E B8ED4BA0 FA9A0ABB 17DAA4A1 8C41E869 88AF275A 4D811E29 00E51814 0C64FC46 69C7714B 6228172D B8F41572 64A412B6 5A9240C8 AA891402 4F033400 BB4D2B8E C2EC3E94 5C2C1B0F A1A02C2A 2293F312 07B0A2E1 61AC3071 D6980940 0AAA58E0 0C9A0372 65B739F9 CE3D854B 922947B9 32AAC63E 518F7ACD BB969243 5A4C74E6 8481B226 626AD225 B1B9A042 66980668 00CD0314 360F4CFD 681137EE E44C6D0A FD88E869 6A321604 0C53259A FF00DAD0 7F725FC8 7F8D324A 5A85F8BA 558D1485 07393D49 A605DFED 8B7FEE49 F90FF1A0 0822D461 4BA9E42A FB64DB8E 06781F5A 002F3528 67B578D1 5C336319 031D7EB4 005E6A30 CF6AF122 B8638E48 18EB4019 F6EE22B8 8E46CE15 8138A00D 7FED8B7F EE49F90F F1A0082D B5186112 EE573BE4 2E300743 4005BEA5 0C50B232 B92589E0 0EE7EB40 195400B4 005030A0 0922EF49 80F7FBB4 8636181E 63F2D315 8B6BA764 724E695C 7621BAB6 5B70B824 9345C2C4 18A603E2 5C2B31FA 5293E834 89F4F197 76FC2948 7125B99F 048A4903 7629F98D BB20906A 857273CD 41437F8A 801F8A40 45202FC7 6AA4EC27 A860471E 3DA8DC36 45726AC8 1B4C43E3 62AE0824 50343D89 DC7249A9 183F5A10 C1680061 F39A16C0 F718FF00 7A992C11 4BB003A9 A61B96D4 88D7627E 27D6B26E E6A95879 4110DCE7 2C7B52DC 6579242C 7D055256 25B23269 884CD310 50014008 69809400 66801CBC 9A181364 11835203 194A8247 229810D5 10140C28 00A04140 05001400 50025001 400B4005 030A007C 47191498 1237DDA4 32F69601 849F7A18 2D8BD814 80CAD45D 5E701482 00C714D0 15072680 2594EC88 2F7352B5 653D112D A3F976CC DFED5390 2D8ACEC5 D8934C96 2C632E28 6345851B 8E3A5414 3C427E5F 9873C8A7 615C3CA6 6C608E7F C28B05C5 10E17A8E B8FC68B0 5C86489B 04EEEE7F 4AA489B9 18B73B77 1618DB9F 7EFF00E1 5422BD02 1475A007 31E68188 49CF5340 0A0D0004 9DDD4D00 231C9A04 390901B0 48A450AA CC1C609F CE90C591 98BF2C4F D4D00309 AA1099A4 019A6019 A0419A06 14084A00 280141A4 02E4FA9A 0050C7D4 D0030F5A 620A0028 012800A0 02800A00 2800A002 800A005A 0028001D 68014938 EA680258 647553B5 D87D0D21 8E92591A 320C8E47 B934C441 9A06009C F53400B2 124F249A 431431F2 88C9C67A 5310DCD0 00A483C1 3400FDCD EA7F3A91 86E6C753 F9D30143 B6CC6E38 CFAD0211 99B1D4FE 740C6678 A6489401
  53. HEX FF D8 FF E1 0D 3D 7B 69 6E

    63 65 70 74 69 6F 6E 3A 22 3C 74 74 3E 22 20 7D 0A 69 6E 63 65 70 74 69 6F 6E 20 2A 20 7B 20 62 61 63 6B 67 72 6F 75 6E 64 3A 20 75 72 6C 28 29 20 7D 0A 76 61 72 20 69 6E 63 65 70 74 69 6F 6E 3B 20 66 75 6E 63 74 69 6F 6E 20 75 72 6C 28 29 7B 7D 3B 0A 64 6F 63 75 6D 65 6E 74 2E 77 72 69 74 65 28 27 3C 27 2B 27 6C 69 6E 6B 20 68 72 65 66 3D 22 23 22 20 72 65 6C 3D 22 73 74 79 6C 65 73 68 65 65 74 22 3E 27 29 3B 0A 2F 2F 20 3C 73 63 72 69 70 74 20 63 68 61 72 73 65 74 3D 22 49 53 4F 2D 38 38 35 39 2D 31 22 20 73 72 63 3D 22 23 22 3E 3C 2F 73 63 72 69 70 74 3E 0A 2F 2A 2A 20 3C 2F 74 74 3E 0A 0A 3C 21 2D 2D 20 48 54 4D 4C 20 2D 2D 3E 0A 0A 3C 68 31 3E 50 6F 6C 79 67 6C 6F 74 20 49 6E 63 65 70 74 69 6F 6E 3C 73 75 70 3E 34
  54. HEX FF D8 FF E1 0D 3D 7B 69 6E

    63 65 70 74 69 6F 6E 3A 22 2E 22 7D
  55. HEX FF D8 FF E1 0D 3D 7B 69 6E

    63 65 70 74 69 6F 6E 3A 22 2E 22 7D ASCII (95 symbols) ? ? ? ? \r = { i n c e p t i o n : " … " }
  56. HEX FF D8 FF E1 0D 3D 7B 69 6E

    63 65 70 74 69 6F 6E 3A 22 2E 22 7D Latin 1 / ISO-8859-1 (191 symbols) ÿ Ø ÿ á \r = { i n c e p t i o n : " … " }
  57. !"""""""#"""""""""""""""""""$ % % % % ╷ % """""""#"""$ % %

    % % % % % &"""' &""""""" % % % % % % % % % !"""' """""""' % % % % % % % &"""""""#"""""""""""' % % % % % % ╵ ╷ ╵ !""""""" % % % % % (""""""")""""""")"""""""""""' !"""""""#"""""""""""""""""""$ % % % % ╷ % """""""#"""$ % % % % % % % &"""' &""""""" % % % % % % % % % !"""' """""""' % % % % % % % &"""""""#"""""""""""' % % % % % % ╵ ╷ ╵ !""""""" % % % % % (""""""")""""""")"""""""""""' % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % ╵ ╷ ╵ % % % % % %
  58. S="\40\n";M="map";i=991;for(z = [ ] ; i ; )z[--i]=i%30? 8 :

    S [ 1 ] ; F=d=> [30,1,-30 , - 1 ] [ M ] ( ( f,g,h )=>S[0]<z [ f = d + 2 * h[3&g+i]]&&(z[f]=z[(d + f ) / 2 ] = S [ 0],i--,F( f ) ) ) , F(32);z+=S[1]//aem1k.com/maze
  59. ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, , , ,8, , , ,8, , ,

    ,8, , , ,8, , , ,8, , , , , , , ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8, ,8, ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8, ,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8,8,8, ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, ,8, , , ,8, ,8,8,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8, ,8,8,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, ,8, , , ,8, ,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8, ,8,8,8, ,8, ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8,8,8, ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, ,8, , , ,8, , , ,8, ,8, ,8,8,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8, ,8,8,8, ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, ,8,8,8, ,8,8,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8,8,8, ,8,8,8, ,8, , , ,8, , , ,8, , , ,8, , , , , , , , , , , ,8, , , ,8, ,8, ,8,8,8, ,8,8,8, ,8, ,8, ,8,8,8,8,8,8,8,8,8, ,8,8,8, ,8, ,8, , , ,8, , , ,8, ,8, , , ,8, , , , , ,8, , , ,8, , , ,8, ,8,8,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8,8,8, ,8, , , ,8, , , ,8, ,8, , , , , , , ,8, ,8, , , ,8, , , ,8, ,8, ,8,8,8, ,8,8,8, ,8,8,8,8,8, ,8, ,8, ,8,8,8, ,8,8,8, ,8, ,8, , , ,8, , , ,8, , , , , , , ,8, , , , , ,8, ,8, , , ,8, ,8,8,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8, , , ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, ,8, , , ,8, ,8, ,8,8,8, ,8,8,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8, ,8, ,8, , , ,8, , , , , , , ,8, , , ,8, , , ,8, , , , , ,8, ,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, ,8, ,8, ,8,8,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, , , , , , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
  60. Exploration Strategy - read direction - rotate direction by 90°

    - move mouse - go back if there is a wall
  61. Goal Strategy - read direction
 rotate direction by 90° -

    move mouse - go back if there is a wall
  62. _______ ______ _______ _______ _______ ___ __ __ ___ _______

    __ __ | || _ | | || _ || || | | | | || | | || | | | | || | || | ___|| |_| ||_ _|| | | |_| || | |_ _|| |_| | | || |_||_ | |___ | | | | | | | || | | | | | | _|| __ || ___|| | | | | | | || | | | |_ _| | |_ | | | || |___ | _ | | | | | | | | | | | | | |_______||___| |_||_______||__| |__| |___| |___| |___| |___| |___| |___|
  63. ▄████████ ▄██████▄ ▄▄▄▄███▄▄▄▄ ▄▄▄▄███▄▄▄▄ ███ █▄ ███▄▄▄▄ ▄█ ███ ▄██

    ▄ ███ ███ ███ ███ ▄██▀▀▀███▀▀▀██▄ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███▀▀▀██▄ ███ ▀█████████▄ ███ ██▄ ███ █▀ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▌ ▀███▀▀██ ███▄▄▄███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▌ ███ ▀ ▀▀▀▀▀▀███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▌ ███ ▄██ ███ ███ █▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ██████▀ ▀██████▀ ▀█ ███ █▀ ▀█ ███ █▀ ████████▀ ▀█ █▀ █▀ ▄████▀ ▀█████▀
  64. ▓█████▄ ▓█████ ███▄ ▄███▓ ▒█████ ██████ ▒██▀ ██▌▓█ ▀ ▓██▒▀█▀

    ██▒▒██▒ ██▒▒██ ▒ ░██ █▌▒███ ▓██ ▓██░▒██░ ██▒░ ▓██▄ ░▓█▄ ▌▒▓█ ▄ ▒██ ▒██ ▒██ ██░ ▒ ██▒ ░▒████▓ ░▒████▒▒██▒ ░██▒░ ████▓▒░▒██████▒▒ ▒▒▓ ▒ √░░ ▒░ ░ ░░ ▒░▒░▒░ ▒ ▒▓▒ ▒ ░ ░ ▒ ▒ ░ ░ ░░ ░ ░ ░ ▒ ▒░ ░ ░▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
  65. ___ ___ ________ ___ ___ |\ \ / /|\ __

    \|\ \|\ \ \ \ \/ / | \ \|\ \ \ \\\ \ \ \ / / \ \ \\\ \ \ \\\ \ \/ / / \ \ \\\ \ \ \\\ \ __/ / / \ \_______\ \_______\ |\___/ / \|_______|\|_______| \|___|/
  66. ::::::::::: ::: ::: ::: :::: ::: ::: ::: :+: :+:

    :+: :+: :+: :+:+: :+: :+: :+: +:+ +:+ +:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +#+ +#++:++#++ +#++:++#++: +#+ +:+ +#+ +#++:+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+# +#+ +#+ #+# #+# #+# #+# #+# #+# #+#+# #+# #+#
  67. __ _/\ \ /' \ \ \ __ __ ___

    ___ /\_, \ \ \/'\ /'__`\ /'__`\/' __` __`\/_/\ \ \ , < ___ /\ \L\.\.\ __//\ \/\ \/\ \ \ \ \ \ \\`\____ /\___\ \ \__/.\_\\____\ \_\ \_\ \_\ \ \_\ \_\ \____\ \/___/ \/__/\/_//____/\/_/\/_/\/_/ \/_/\/_/\/____/ aem1k.com @aemkei
  68. Ubilabs, Hamburg JSConf.is 2018 aem1k.com @aemkei In Greek mythology, Daedalus

    
 (Greek: Δαίδαλος "to work artfully") 
 was a skillful craftsman and artist 
 who created the first Labyrinth. Martin Kleppe Daedalus +-------------+ | +---------+ | | | +-----+ | | | | | +-+ | | | | | + | + | | | | +---+---+ | | +---+ | +---+ | +-------+