her.esy.fun/src/Scratch/en/blog/Haskell-Mandelbrot/index.html
2021-04-18 12:23:24 +02:00

206 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>YBlog - ASCII Haskell Mandelbrot</title>
<meta name="keywords" content="mandelbrot, haskell, ASCII, golfed" />
<link rel="shortcut icon" type="image/x-icon" href="../../../../Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="../../../../Scratch/css/brutalist.css" />
<link rel="stylesheet" type="text/css" href="../../../../Scratch/css/pandoc-solarized.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="../../../../Scratch/en/blog/feed/feed.xml" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="apple-touch-icon" href="../../../../Scratch/img/about/FlatAvatar@2x.png" />
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<!-- IndieAuth -->
<link href="https://twitter.com/yogsototh" rel="me">
<link href="https://github.com/yogsototh" rel="me">
<link href="mailto:yann.esposito@gmail.com" rel="me">
<link rel="pgpkey" href="../../../../pubkey.txt">
</head>
<body lang="en" class="article">
<div id="content">
<div id="header">
<div id="choix">
<span id="choixlang">
<a href="../../../../Scratch/fr/blog/Haskell-Mandelbrot/">French</a>
</span>
<span class="tomenu"><a href="#navigation">↓ Menu ↓</a></span>
<span class="flush"></span>
</div>
</div>
<div id="titre">
<h1>ASCII Haskell Mandelbrot</h1>
</div>
<div class="flush"></div>
<div id="afterheader" class="article">
<div class="corps">
<p>Here is the obfuscated code:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode haskell"><code class="sourceCode haskell"><a class="sourceLine" id="cb1-1" title="1">a<span class="ot">=</span><span class="dv">27</span>;b<span class="ot">=</span><span class="dv">79</span>;c<span class="ot">=</span><span class="dt">C</span>(<span class="op">-</span><span class="fl">2.0</span>,<span class="op">-</span><span class="fl">1.0</span>);d<span class="ot">=</span><span class="dt">C</span>(<span class="fl">1.0</span>,<span class="fl">1.0</span>);e<span class="ot">=</span><span class="dt">C</span>(<span class="op">-</span><span class="fl">2.501</span>,<span class="op">-</span><span class="fl">1.003</span>)</a>
<a class="sourceLine" id="cb1-2" title="2"><span class="kw">newtype</span> <span class="dt">C</span> <span class="ot">=</span> <span class="dt">C</span> (<span class="dt">Double</span>,<span class="dt">Double</span>) <span class="kw">deriving</span> (<span class="dt">Show</span>,<span class="dt">Eq</span>)</a>
<a class="sourceLine" id="cb1-3" title="3"><span class="kw">instance</span> <span class="dt">Num</span> <span class="dt">C</span> <span class="kw">where</span> <span class="dt">C</span>(x,y)<span class="op">*</span><span class="dt">C</span>(z,t)<span class="ot">=</span><span class="dt">C</span>(z<span class="op">*</span>x<span class="op">-</span>y<span class="op">*</span>t,y<span class="op">*</span>z<span class="op">+</span>x<span class="op">*</span>t);<span class="dt">C</span>(x,y)<span class="op">+</span><span class="dt">C</span>(z,t)<span class="ot">=</span><span class="dt">C</span>(x<span class="op">+</span>z,y<span class="op">+</span>t);<span class="fu">abs</span>(<span class="dt">C</span>(x,y))<span class="ot">=</span><span class="dt">C</span>(<span class="fu">sqrt</span>(x<span class="op">*</span>x<span class="op">+</span>y<span class="op">*</span>y),<span class="fl">0.0</span>)</a>
<a class="sourceLine" id="cb1-4" title="4">r(<span class="dt">C</span>(x,y))<span class="ot">=</span>x;i(<span class="dt">C</span>(x,y))<span class="ot">=</span>y</a>
<a class="sourceLine" id="cb1-5" title="5">f c z <span class="dv">0</span><span class="ot">=</span><span class="dv">0</span>;f c z n<span class="ot">=</span><span class="kw">if</span>(r(<span class="fu">abs</span>(z))<span class="op">&gt;</span><span class="dv">2</span>)<span class="kw">then</span> n <span class="kw">else</span> f c ((z<span class="op">*</span>z)<span class="op">+</span>c) (n<span class="op">-</span><span class="dv">1</span>)</a>
<a class="sourceLine" id="cb1-6" title="6">h j k <span class="ot">=</span> <span class="fu">map</span> (\z<span class="ot">-&gt;</span>(f (<span class="dt">C</span> z) (<span class="dt">C</span>(<span class="dv">0</span>,<span class="dv">0</span>)) <span class="dv">32</span>,(<span class="fu">fst</span> z<span class="op">&gt;</span>l <span class="op">-</span> q<span class="op">/</span><span class="dv">2</span>))) [(x,y)<span class="op">|</span>y<span class="ot">&lt;-</span>[p,(p<span class="op">+</span>((o<span class="op">-</span>p)<span class="op">/</span>a))<span class="op">..</span>o],x<span class="ot">&lt;-</span>[m,(m <span class="op">+</span> q)<span class="op">..</span>l]] <span class="kw">where</span> o<span class="ot">=</span>i k;p<span class="ot">=</span>i j;m<span class="ot">=</span>r j;l<span class="ot">=</span>r k;q<span class="ot">=</span>(l<span class="op">-</span>m)<span class="op">/</span>b</a>
<a class="sourceLine" id="cb1-7" title="7">u j k <span class="ot">=</span> <span class="fu">concat</span> <span class="op">$</span> <span class="fu">map</span> v <span class="op">$</span> h j k <span class="kw">where</span> v (i,p)<span class="ot">=</span>(<span class="st">&quot; .,`'°\&quot;:;-+oO0123456789=!%*§&amp;$@#&quot;</span><span class="op">!!</span>i)<span class="op">:</span>rst p;rst <span class="dt">True</span><span class="ot">=</span><span class="st">&quot;\n&quot;</span>;rst <span class="dt">False</span><span class="ot">=</span><span class="st">&quot;&quot;</span></a>
<a class="sourceLine" id="cb1-8" title="8">main <span class="ot">=</span> <span class="fu">putStrLn</span> <span class="op">$</span> im <span class="dv">0</span> <span class="kw">where</span> cl n (<span class="dt">C</span> (x,y))<span class="ot">=</span><span class="kw">let</span> cs<span class="ot">=</span>(<span class="fl">1.1</span><span class="op">**</span>n<span class="op">-</span><span class="dv">1</span>) <span class="kw">in</span> <span class="dt">C</span> ((x<span class="op">+</span>cs<span class="op">*</span>(r e))<span class="op">/</span>cs<span class="op">+</span><span class="dv">1</span>,(y<span class="op">+</span>cs<span class="op">*</span>(i e))<span class="op">/</span>cs<span class="op">+</span><span class="dv">1</span>);bl n<span class="ot">=</span>cl n c;tr n<span class="ot">=</span>cl n d;im n<span class="ot">=</span>u (bl n) (tr n)<span class="op">++</span><span class="st">&quot;\x1b[H\x1b[25A&quot;</span><span class="op">++</span>im (n<span class="op">+</span><span class="dv">1</span>)</a></code></pre></div>
<p>To launch it, youll need to have <a href="http://haskell.org">haskell</a> installed and to run:</p>
<p><code class="zsh">ghc make animandel.hs &amp;&amp; animandel</code></p>
<p>Here is some image after 50 iterations:</p>
<pre>
###@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&WWOOClbUOWW&&$$$$$$$$$$$$$$
##@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&WWUCUb; ,jUOWW&&&$$$$$$$$$$$$
#@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&WWWWWUb ooCWW&&&&&&$$$$$$$$
@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&WWWWWWWWOU uUOWWWW&&&&&&$$$$$
@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&WOUObUOOOUUUCbi rbCUUUOWWWWWOUW&$$$
@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&WWWUcr,iiCb o wUUUUUC;OW&$$
$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&WWWWOUC, j llW&&$
$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&WWWWWWOCCbi bWWW&&
$$$$$$$$$$$$$$$$$&&WWWWWWW&&&WWWWWWWWOUo jUOWW&&
$$$$$$$$$$$$$$&&&WWOwOOWWWOUUOWWWWWOOUbw j.blW&
$$$$$$$$$$$&&&&&WWWObiijbUCl bCiUUUUUCj, bOW&
$$$$$$$$$&&&&&&&WWWOUbw ; oobCbl jUWW&
$$$$$$$&&&&&&&WWWWOcbi ij jUW&&
$$$$$&&WWWWWWWOwUUCbw WW&&
WWWOWWWWWWWWWUUbo UWWW&&
: wbUOWW&&&
WWWOWWWWWWWWWUUbo UWWW&&
$$$$$&&WWWWWWWOwUUCbw WW&&
$$$$$$$&&&&&&&WWWWOcbi ij jUW&&
$$$$$$$$$&&&&&&&WWWOUbw ; oobCbl jUWW&
$$$$$$$$$$$&&&&&WWWObiijbUCl bCiUUUUUCj, bOW&
$$$$$$$$$$$$$$&&&WWOwOOWWWOUUOWWWWWOOUbw j.blW&
$$$$$$$$$$$$$$$$$&&WWWWWWW&&&WWWWWWWWOUo jUOWW&&
$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&&&WWWWWWOCCbi bWWW&&
$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&&&&&WWWWOUC, j llW&&$
@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$&&&&&&WWWUcr,iiCb o wUUUUUC;OW&$$
</pre>
<p>Here is the more readable version. I believe with this far more readable version, no more explanation is needed.</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode haskell"><code class="sourceCode haskell"><a class="sourceLine" id="cb2-1" title="1">nbvert <span class="ot">=</span> <span class="dv">30</span></a>
<a class="sourceLine" id="cb2-2" title="2">nbhor <span class="ot">=</span> <span class="dv">79</span></a>
<a class="sourceLine" id="cb2-3" title="3">zoomfactor <span class="ot">=</span> <span class="fl">1.01</span></a>
<a class="sourceLine" id="cb2-4" title="4">init_bottom_left <span class="ot">=</span> <span class="dt">C</span> (<span class="op">-</span><span class="fl">2.0</span>,<span class="op">-</span><span class="fl">2.0</span>)</a>
<a class="sourceLine" id="cb2-5" title="5">init_top_right <span class="ot">=</span> <span class="dt">C</span> (<span class="fl">3.0</span>,<span class="fl">2.0</span>)</a>
<a class="sourceLine" id="cb2-6" title="6">interrest <span class="ot">=</span> <span class="dt">C</span> (<span class="op">-</span><span class="fl">1.713</span>,<span class="op">-</span><span class="fl">0.000</span>)</a>
<a class="sourceLine" id="cb2-7" title="7"></a>
<a class="sourceLine" id="cb2-8" title="8"><span class="kw">newtype</span> <span class="dt">Complex</span> <span class="ot">=</span> <span class="dt">C</span> (<span class="dt">Float</span>,<span class="dt">Float</span>) <span class="kw">deriving</span> (<span class="dt">Show</span>,<span class="dt">Eq</span>)</a>
<a class="sourceLine" id="cb2-9" title="9"><span class="kw">instance</span> <span class="dt">Num</span> <span class="dt">Complex</span> <span class="kw">where</span></a>
<a class="sourceLine" id="cb2-10" title="10"> <span class="fu">fromInteger</span> n <span class="ot">=</span> <span class="dt">C</span> (<span class="fu">fromIntegral</span> n,<span class="fl">0.0</span>)</a>
<a class="sourceLine" id="cb2-11" title="11"> <span class="dt">C</span> (x,y) <span class="op">*</span> <span class="dt">C</span> (z,t) <span class="ot">=</span> <span class="dt">C</span> (z<span class="op">*</span>x <span class="op">-</span> y<span class="op">*</span>t, y<span class="op">*</span>z <span class="op">+</span> x<span class="op">*</span>t)</a>
<a class="sourceLine" id="cb2-12" title="12"> <span class="dt">C</span> (x,y) <span class="op">+</span> <span class="dt">C</span> (z,t) <span class="ot">=</span> <span class="dt">C</span> (x<span class="op">+</span>z, y<span class="op">+</span>t)</a>
<a class="sourceLine" id="cb2-13" title="13"> <span class="fu">abs</span> (<span class="dt">C</span> (x,y)) <span class="ot">=</span> <span class="dt">C</span> (<span class="fu">sqrt</span> (x<span class="op">*</span>x <span class="op">+</span> y<span class="op">*</span>y),<span class="fl">0.0</span>)</a>
<a class="sourceLine" id="cb2-14" title="14"> <span class="fu">signum</span> (<span class="dt">C</span> (x,y)) <span class="ot">=</span> <span class="dt">C</span> (<span class="fu">signum</span> x , <span class="fl">0.0</span>)</a>
<a class="sourceLine" id="cb2-15" title="15"></a>
<a class="sourceLine" id="cb2-16" title="16"><span class="ot">real ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span></a>
<a class="sourceLine" id="cb2-17" title="17">real (<span class="dt">C</span> (x,y)) <span class="ot">=</span> x</a>
<a class="sourceLine" id="cb2-18" title="18"><span class="ot">im ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span></a>
<a class="sourceLine" id="cb2-19" title="19">im (<span class="dt">C</span> (x,y)) <span class="ot">=</span> y</a>
<a class="sourceLine" id="cb2-20" title="20"></a>
<a class="sourceLine" id="cb2-21" title="21"><span class="ot">cabs ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span></a>
<a class="sourceLine" id="cb2-22" title="22">cabs <span class="ot">=</span> real<span class="op">.</span><span class="fu">abs</span></a>
<a class="sourceLine" id="cb2-23" title="23"></a>
<a class="sourceLine" id="cb2-24" title="24"><span class="ot">f ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Int</span> <span class="ot">-&gt;</span> <span class="dt">Int</span></a>
<a class="sourceLine" id="cb2-25" title="25">f c z <span class="dv">0</span> <span class="ot">=</span> <span class="dv">0</span></a>
<a class="sourceLine" id="cb2-26" title="26">f c z n <span class="ot">=</span> <span class="kw">if</span> (cabs z <span class="op">&gt;</span> <span class="dv">2</span>) <span class="kw">then</span> n <span class="kw">else</span> f c ((z<span class="op">*</span>z)<span class="op">+</span>c) (n<span class="op">-</span><span class="dv">1</span>) </a>
<a class="sourceLine" id="cb2-27" title="27"></a>
<a class="sourceLine" id="cb2-28" title="28">bmandel bottomleft topright <span class="ot">=</span> <span class="fu">map</span> (\z <span class="ot">-&gt;</span> (f (<span class="dt">C</span> z) (<span class="dt">C</span>(<span class="dv">0</span>,<span class="dv">0</span>)) <span class="dv">32</span>, (<span class="fu">fst</span> z <span class="op">&gt;</span> right <span class="op">-</span> hstep<span class="op">/</span><span class="dv">2</span> ))) [(x,y) <span class="op">|</span> y <span class="ot">&lt;-</span> [bottom,(bottom <span class="op">+</span> vstep)<span class="op">..</span>top], x<span class="ot">&lt;-</span>[left,(left <span class="op">+</span> hstep)<span class="op">..</span>right]]</a>
<a class="sourceLine" id="cb2-29" title="29"> <span class="kw">where</span></a>
<a class="sourceLine" id="cb2-30" title="30"> top <span class="ot">=</span> im topright</a>
<a class="sourceLine" id="cb2-31" title="31"> bottom <span class="ot">=</span> im bottomleft</a>
<a class="sourceLine" id="cb2-32" title="32"> left <span class="ot">=</span> real bottomleft</a>
<a class="sourceLine" id="cb2-33" title="33"> right <span class="ot">=</span> real topright</a>
<a class="sourceLine" id="cb2-34" title="34"> vstep<span class="ot">=</span>(top<span class="op">-</span>bottom)<span class="op">/</span>nbvert</a>
<a class="sourceLine" id="cb2-35" title="35"> hstep<span class="ot">=</span>(right<span class="op">-</span>left)<span class="op">/</span>nbhor</a>
<a class="sourceLine" id="cb2-36" title="36"></a>
<a class="sourceLine" id="cb2-37" title="37"><span class="ot">mandel ::</span> (<span class="dt">Complex</span>,<span class="dt">Complex</span>) <span class="ot">-&gt;</span> <span class="dt">String</span></a>
<a class="sourceLine" id="cb2-38" title="38">mandel (bottomleft,topright) <span class="ot">=</span> <span class="fu">concat</span> <span class="op">$</span> <span class="fu">map</span> treat <span class="op">$</span> bmandel bottomleft topright</a>
<a class="sourceLine" id="cb2-39" title="39"> <span class="kw">where</span></a>
<a class="sourceLine" id="cb2-40" title="40"> treat (i,jump) <span class="ot">=</span> <span class="st">&quot; .,:;rcuowijlbCUOW&amp;$@#&quot;</span> <span class="op">!!</span> (<span class="fu">div</span> (i<span class="op">*</span><span class="dv">22</span>) <span class="dv">32</span>)<span class="op">:</span>rst jump</a>
<a class="sourceLine" id="cb2-41" title="41"> rst <span class="dt">True</span> <span class="ot">=</span> <span class="st">&quot;\n&quot;</span></a>
<a class="sourceLine" id="cb2-42" title="42"> rst <span class="dt">False</span> <span class="ot">=</span> <span class="st">&quot;&quot;</span></a>
<a class="sourceLine" id="cb2-43" title="43"></a>
<a class="sourceLine" id="cb2-44" title="44"><span class="ot">cdiv ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span> <span class="ot">-&gt;</span> <span class="dt">Complex</span></a>
<a class="sourceLine" id="cb2-45" title="45">cdiv (<span class="dt">C</span>(x,y)) r <span class="ot">=</span> <span class="dt">C</span>(x<span class="op">/</span>r, y<span class="op">/</span>r) </a>
<a class="sourceLine" id="cb2-46" title="46"><span class="ot">cmul ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span> <span class="ot">-&gt;</span> <span class="dt">Complex</span></a>
<a class="sourceLine" id="cb2-47" title="47">cmul (<span class="dt">C</span>(x,y)) r <span class="ot">=</span> <span class="dt">C</span>(x<span class="op">*</span>r, y<span class="op">*</span>r) </a>
<a class="sourceLine" id="cb2-48" title="48"></a>
<a class="sourceLine" id="cb2-49" title="49"><span class="ot">zoom ::</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Complex</span> <span class="ot">-&gt;</span> <span class="dt">Float</span> <span class="ot">-&gt;</span> (<span class="dt">Complex</span>,<span class="dt">Complex</span>)</a>
<a class="sourceLine" id="cb2-50" title="50">zoom bl tr center magn <span class="ot">=</span> (f bl, f tr)</a>
<a class="sourceLine" id="cb2-51" title="51"> <span class="kw">where</span></a>
<a class="sourceLine" id="cb2-52" title="52"> f point <span class="ot">=</span> ((center <span class="ot">`cmul`</span> magn) <span class="op">+</span> point ) <span class="ot">`cdiv`</span> (magn <span class="op">+</span> <span class="dv">1</span>)</a>
<a class="sourceLine" id="cb2-53" title="53"></a>
<a class="sourceLine" id="cb2-54" title="54">main <span class="ot">=</span> <span class="kw">do</span></a>
<a class="sourceLine" id="cb2-55" title="55"> x <span class="ot">&lt;-</span> <span class="fu">getContents</span></a>
<a class="sourceLine" id="cb2-56" title="56"> <span class="fu">putStrLn</span> <span class="op">$</span> infinitemandel <span class="dv">0</span></a>
<a class="sourceLine" id="cb2-57" title="57"> <span class="kw">where</span></a>
<a class="sourceLine" id="cb2-58" title="58"> window n <span class="ot">=</span> zoom init_bottom_left init_top_right interrest (zoomfactor<span class="op">**</span>n) </a>
<a class="sourceLine" id="cb2-59" title="59"> infinitemandel n <span class="ot">=</span> mandel (window n) <span class="op">++</span> <span class="st">&quot;\x1b[H\x1b[25A&quot;</span> <span class="op">++</span> infinitemandel (n<span class="op">+</span><span class="dv">1</span>)</a></code></pre></div>
</div>
<div id="afterarticle">
<div id="social">
<a href="../../../../Scratch/en/blog/feed/feed.xml" target="_blank" rel="noopener noreferrer nofollow" class="social">RSS</a>
·
<a href="https://twitter.com/home?status=http%3A%2F%2Fyannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/%20via%20@yogsototh" target="_blank" rel="noopener noreferrer nofollow" class="social">Tweet</a>
·
<a href="http://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fyannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/" target="_blank" rel="noopener noreferrer nofollow" class="social">FB</a>
<br />
<a class="message" href="../../../../Scratch/en/blog/Social-link-the-right-way/">These social sharing links preserve your privacy</a>
</div>
<div id="navigation">
<a href="../../../../">Home</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/blog">Blog</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/softwares">Softwares</a>
<span class="sep">¦</span>
<a href="../../../../Scratch/en/about">About</a>
</div>
<div id="totop"><a href="#header">↑ Top ↑</a></div>
<div id="bottom">
<div>
Published on 2011-07-10
</div>
<div>
<a href="https://twitter.com/yogsototh">Follow @yogsototh</a>
</div>
<div>
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US">Yann Esposito©</a>
</div>
<div>
Done with
<a href="http://www.vim.org" target="_blank" rel="noopener noreferrer nofollow"><strike>Vim</strike></a>
<a href="http://spacemacs.org" target="_blank" rel="noopener noreferrer nofollow">spacemacs</a>
<span class="pala">&amp;</span>
<a href="http://nanoc.ws" target="_blank" rel="noopener noreferrer nofollow"><strike>nanoc</strike></a>
<a href="http://jaspervdj.be/hakyll" target="_blank" rel="noopener noreferrer nofollow">Hakyll</a>
</div>
<hr />
<div style="max-width: 100%">
<a href="https://cardanohub.org">
<img src="../../../../Scratch/img/ada-logo.png" class="simple" style="height: 16px;
border-radius: 50%;
vertical-align:middle;
display:inline-block;" />
ADA:
</a>
<code style="display:inline-block;
word-wrap:break-word;
text-align: left;
vertical-align: top;
max-width: 85%;">
DdzFFzCqrhtAvdkmATx5Fm8NPJViDy85ZBw13p4XcNzVzvQg8e3vWLXq23JQWFxPEXK6Kvhaxxe7oJt4VMYHxpA2vtCFiP8fziohN6Yp
</code>
</div>
</div>
</div>
</div>
</div>
</body>
</html>