UNPKG

skimr

Version:

CLI EDA for CSVs

714 lines (685 loc) 78 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Converting from Rcpp</title> <script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to // be compatible with the behavior of Pandoc < 2.8). document.addEventListener('DOMContentLoaded', function(e) { var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); var i, h, a; for (i = 0; i < hs.length; i++) { h = hs[i]; if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 a = h.attributes; while (a.length > 0) h.removeAttribute(a[0].name); } }); </script> <style type="text/css"> code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} span.underline{text-decoration: underline;} div.column{display: inline-block; vertical-align: top; width: 50%;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} </style> <style type="text/css"> code { white-space: pre; } .sourceCode { overflow: visible; } </style> <style type="text/css" data-origin="pandoc"> pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } div.sourceCode { margin: 1em 0; } pre.sourceCode { margin: 0; } @media screen { div.sourceCode { overflow: auto; } } @media print { pre > code.sourceCode { white-space: pre-wrap; } pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } } pre.numberSource code { counter-reset: source-line 0; } pre.numberSource code > span { position: relative; left: -4em; counter-increment: source-line; } pre.numberSource code > span > a:first-child::before { content: counter(source-line); position: relative; left: -1em; text-align: right; vertical-align: baseline; border: none; display: inline-block; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; padding: 0 4px; width: 4em; color: #aaaaaa; } pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; } div.sourceCode { } @media screen { pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } } code span.al { color: #ff0000; font-weight: bold; } code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } code span.at { color: #7d9029; } code span.bn { color: #40a070; } code span.bu { color: #008000; } code span.cf { color: #007020; font-weight: bold; } code span.ch { color: #4070a0; } code span.cn { color: #880000; } code span.co { color: #60a0b0; font-style: italic; } code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } code span.do { color: #ba2121; font-style: italic; } code span.dt { color: #902000; } code span.dv { color: #40a070; } code span.er { color: #ff0000; font-weight: bold; } code span.ex { } code span.fl { color: #40a070; } code span.fu { color: #06287e; } code span.im { color: #008000; font-weight: bold; } code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } code span.kw { color: #007020; font-weight: bold; } code span.op { color: #666666; } code span.ot { color: #007020; } code span.pp { color: #bc7a00; } code span.sc { color: #4070a0; } code span.ss { color: #bb6688; } code span.st { color: #4070a0; } code span.va { color: #19177c; } code span.vs { color: #4070a0; } code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } </style> <script> // apply pandoc div.sourceCode style to pre.sourceCode instead (function() { var sheets = document.styleSheets; for (var i = 0; i < sheets.length; i++) { if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue; try { var rules = sheets[i].cssRules; } catch (e) { continue; } var j = 0; while (j < rules.length) { var rule = rules[j]; // check if there is a div.sourceCode rule if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") { j++; continue; } var style = rule.style.cssText; // check if color or background-color is set if (rule.style.color === '' && rule.style.backgroundColor === '') { j++; continue; } // replace div.sourceCode by a pre.sourceCode rule sheets[i].deleteRule(j); sheets[i].insertRule('pre.sourceCode{' + style + '}', j); } } })(); </script> <style type="text/css">body { background-color: #fff; margin: 1em auto; max-width: 700px; overflow: visible; padding-left: 2em; padding-right: 2em; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.35; } #TOC { clear: both; margin: 0 0 10px 10px; padding: 4px; width: 400px; border: 1px solid #CCCCCC; border-radius: 5px; background-color: #f6f6f6; font-size: 13px; line-height: 1.3; } #TOC .toctitle { font-weight: bold; font-size: 15px; margin-left: 5px; } #TOC ul { padding-left: 40px; margin-left: -1.5em; margin-top: 5px; margin-bottom: 5px; } #TOC ul ul { margin-left: -2em; } #TOC li { line-height: 16px; } table { margin: 1em auto; border-width: 1px; border-color: #DDDDDD; border-style: outset; border-collapse: collapse; } table th { border-width: 2px; padding: 5px; border-style: inset; } table td { border-width: 1px; border-style: inset; line-height: 18px; padding: 5px 5px; } table, table th, table td { border-left-style: none; border-right-style: none; } table thead, table tr.even { background-color: #f7f7f7; } p { margin: 0.5em 0; } blockquote { background-color: #f6f6f6; padding: 0.25em 0.75em; } hr { border-style: solid; border: none; border-top: 1px solid #777; margin: 28px 0; } dl { margin-left: 0; } dl dd { margin-bottom: 13px; margin-left: 13px; } dl dt { font-weight: bold; } ul { margin-top: 0; } ul li { list-style: circle outside; } ul ul { margin-bottom: 0; } pre, code { background-color: #f7f7f7; border-radius: 3px; color: #333; white-space: pre-wrap; } pre { border-radius: 3px; margin: 5px 0px 10px 0px; padding: 10px; } pre:not([class]) { background-color: #f7f7f7; } code { font-family: Consolas, Monaco, 'Courier New', monospace; font-size: 85%; } p > code, li > code { padding: 2px 0px; } div.figure { text-align: center; } img { background-color: #FFFFFF; padding: 2px; border: 1px solid #DDDDDD; border-radius: 3px; border: 1px solid #CCCCCC; margin: 0 5px; } h1 { margin-top: 0; font-size: 35px; line-height: 40px; } h2 { border-bottom: 4px solid #f7f7f7; padding-top: 10px; padding-bottom: 2px; font-size: 145%; } h3 { border-bottom: 2px solid #f7f7f7; padding-top: 10px; font-size: 120%; } h4 { border-bottom: 1px solid #f7f7f7; margin-left: 8px; font-size: 105%; } h5, h6 { border-bottom: 1px solid #ccc; font-size: 105%; } a { color: #0033dd; text-decoration: none; } a:hover { color: #6666ff; } a:visited { color: #800080; } a:visited:hover { color: #BB00BB; } a[href^="http:"] { text-decoration: underline; } a[href^="https:"] { text-decoration: underline; } code > span.kw { color: #555; font-weight: bold; } code > span.dt { color: #902000; } code > span.dv { color: #40a070; } code > span.bn { color: #d14; } code > span.fl { color: #d14; } code > span.ch { color: #d14; } code > span.st { color: #d14; } code > span.co { color: #888888; font-style: italic; } code > span.ot { color: #007020; } code > span.al { color: #ff0000; font-weight: bold; } code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61717; background-color: #e3d2d2; } </style> </head> <body> <h1 class="title toc-ignore">Converting from Rcpp</h1> <p>In many cases there is no need to convert a package from Rcpp. If the code is already written and you don’t have a very compelling need to use cpp11 I would recommend you continue to use Rcpp. However if you <em>do</em> feel like your project will benefit from using cpp11 this vignette will provide some guidance and doing the conversion.</p> <p>It is also a place to highlight some of the largest differences between Rcpp and cpp11.</p> <div id="class-comparison-table" class="section level2"> <h2>Class comparison table</h2> <table> <colgroup> <col width="25%" /> <col width="25%" /> <col width="25%" /> <col width="25%" /> </colgroup> <thead> <tr class="header"> <th>Rcpp</th> <th>cpp11 (read-only)</th> <th>cpp11 (writable)</th> <th>cpp11 header</th> </tr> </thead> <tbody> <tr class="odd"> <td>NumericVector</td> <td>doubles</td> <td>writable::doubles</td> <td>&lt;cpp11/doubles.hpp&gt;</td> </tr> <tr class="even"> <td>NumericMatrix</td> <td>doubles_matrix&lt;&gt;</td> <td>writable::doubles_matrix&lt;&gt;</td> <td>&lt;cpp11/doubles.hpp&gt;</td> </tr> <tr class="odd"> <td>IntegerVector</td> <td>integers</td> <td>writable::integers</td> <td>&lt;cpp11/integers.hpp&gt;</td> </tr> <tr class="even"> <td>IntegerMatrix</td> <td>integers_matrix&lt;&gt;</td> <td>writable::integers_matrix&lt;&gt;</td> <td>&lt;cpp11/integers.hpp&gt;</td> </tr> <tr class="odd"> <td>CharacterVector</td> <td>strings</td> <td>writable::strings</td> <td>&lt;cpp11/strings.hpp&gt;</td> </tr> <tr class="even"> <td>RawVector</td> <td>raws</td> <td>writable::raws</td> <td>&lt;cpp11/raws.hpp&gt;</td> </tr> <tr class="odd"> <td>List</td> <td>list</td> <td>writable::list</td> <td>&lt;cpp11/list.hpp&gt;</td> </tr> <tr class="even"> <td>RObject</td> <td>sexp</td> <td></td> <td>&lt;cpp11/sexp.hpp&gt;</td> </tr> <tr class="odd"> <td>XPtr</td> <td></td> <td>external_pointer</td> <td>&lt;cpp11/external_pointer.hpp&gt;</td> </tr> <tr class="even"> <td>Environment</td> <td></td> <td>environment</td> <td>&lt;cpp11/environment.hpp&gt;</td> </tr> <tr class="odd"> <td>Function</td> <td></td> <td>function</td> <td>&lt;cpp11/function.hpp&gt;</td> </tr> <tr class="even"> <td>Environment (namespace)</td> <td></td> <td>package</td> <td>&lt;cpp11/function.hpp&gt;</td> </tr> <tr class="odd"> <td>wrap</td> <td></td> <td>as_sexp</td> <td>&lt;cpp11/as.hpp&gt;</td> </tr> <tr class="even"> <td>as</td> <td></td> <td>as_cpp</td> <td>&lt;cpp11/as.hpp&gt;</td> </tr> <tr class="odd"> <td>stop</td> <td>stop</td> <td></td> <td>&lt;cpp11/protect.hpp&gt;</td> </tr> <tr class="even"> <td>checkUserInterrupt</td> <td>check_user_interrupt</td> <td></td> <td>&lt;cpp11/protect.hpp&gt;</td> </tr> </tbody> </table> </div> <div id="incomplete-list-of-rcpp-features-not-included-in-cpp11" class="section level2"> <h2>Incomplete list of Rcpp features not included in cpp11</h2> <ul> <li>None of <a href="https://CRAN.R-project.org/package=Rcpp/vignettes/Rcpp-modules.pdf">Modules</a></li> <li>None of <a href="https://CRAN.R-project.org/package=Rcpp/vignettes/Rcpp-sugar.pdf">Sugar</a></li> <li>Some parts of <a href="https://CRAN.R-project.org/package=Rcpp/vignettes/Rcpp-attributes.pdf">Attributes</a> <ul> <li>No dependencies</li> <li>No random number generator restoration</li> <li>No support for roxygen2 comments</li> <li>No interfaces</li> </ul></li> </ul> </div> <div id="read-only-vs-writable-vectors" class="section level2"> <h2>Read-only vs writable vectors</h2> <p>The largest difference between cpp11 and Rcpp classes is that Rcpp classes modify their data in place, whereas cpp11 classes require copying the data to a writable class for modification.</p> <p>The default classes, e.g. <code>cpp11::doubles</code> are <em>read-only</em> classes that do not permit modification. If you want to modify the data you need to use the classes in the <code>cpp11::writable</code> namespace, e.g. <code>cpp11::writable::doubles</code>.</p> <p>In addition use the <code>writable</code> variants if you need to create a new R vector entirely in C++.</p> </div> <div id="fewer-implicit-conversions" class="section level2"> <h2>Fewer implicit conversions</h2> <p>Rcpp also allows very flexible implicit conversions, e.g. if you pass a <code>REALSXP</code> to a function that takes a <code>Rcpp::IntegerVector()</code> it is implicitly converted to a <code>INTSXP</code>. These conversions are nice for usability, but require (implicit) duplication of the data, with the associated runtime costs.</p> <p>cpp11 throws an error in these cases. If you want the implicit coercions you can add a call to <code>as.integer()</code> or <code>as.double()</code> as appropriate from R when you call the function.</p> </div> <div id="calling-r-functions-from-c" class="section level2"> <h2>Calling R functions from C++</h2> <p>Calling R functions from C++ is similar to using Rcpp.</p> <div class="sourceCode" id="cb1"><pre class="sourceCode cpp"><code class="sourceCode cpp"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a>Rcpp<span class="op">::</span>Function as_tibble<span class="op">(</span><span class="st">&quot;as_tibble&quot;</span><span class="op">,</span> Rcpp<span class="op">::</span>Environment<span class="op">::</span>namespace_env<span class="op">(</span><span class="st">&quot;tibble&quot;</span><span class="op">));</span></span> <span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a>as_tibble<span class="op">(</span>x<span class="op">,</span> Rcpp<span class="op">::</span>Named<span class="op">(</span><span class="st">&quot;.rows&quot;</span><span class="op">,</span> num_rows<span class="op">),</span> Rcpp<span class="op">::</span>Named<span class="op">(</span><span class="st">&quot;.name_repair&quot;</span><span class="op">,</span> name_repair<span class="op">));</span></span></code></pre></div> <div class="sourceCode" id="cb2"><pre class="sourceCode cpp"><code class="sourceCode cpp"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="kw">using</span> <span class="kw">namespace</span> cpp11<span class="op">::</span>literals<span class="op">;</span> <span class="co">// so we can use &quot;&quot;_nm syntax</span></span> <span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a></span> <span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a><span class="kw">auto</span> as_tibble <span class="op">=</span> cpp11<span class="op">::</span>package<span class="op">(</span><span class="st">&quot;tibble&quot;</span><span class="op">)[</span><span class="st">&quot;as_tibble&quot;</span><span class="op">];</span></span> <span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a>as_tibble<span class="op">(</span>x<span class="op">,</span> <span class="st">&quot;.rows&quot;_nm</span> <span class="op">=</span> num_rows<span class="op">,</span> <span class="st">&quot;.name_repair&quot;_nm</span> <span class="op">=</span> name_repair<span class="op">);</span></span></code></pre></div> </div> <div id="appending-behavior" class="section level2"> <h2>Appending behavior</h2> <p>One major difference in Rcpp and cpp11 is how vectors are grown. Rcpp vectors have a <code>push_back()</code> method, but unlike <code>std::vector()</code> no additional space is reserved when pushing. This makes calling <code>push_back()</code> repeatably very expensive, as the entire vector has to be copied each call.</p> <p>In contrast <code>cpp11</code> vectors grow efficiently, reserving extra space. Because of this you can do ~10,000,000 vector appends with cpp11 in approximately the same amount of time that Rcpp does 10,000, as this benchmark demonstrates.</p> <div class="sourceCode" id="cb3"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" tabindex="-1"></a><span class="fu">library</span>(cpp11test)</span> <span id="cb3-2"><a href="#cb3-2" tabindex="-1"></a>grid <span class="ot">&lt;-</span> <span class="fu">expand.grid</span>(<span class="at">len =</span> <span class="dv">10</span> <span class="sc">^</span> (<span class="dv">0</span><span class="sc">:</span><span class="dv">7</span>), <span class="at">pkg =</span> <span class="st">&quot;cpp11&quot;</span>, <span class="at">stringsAsFactors =</span> <span class="cn">FALSE</span>)</span> <span id="cb3-3"><a href="#cb3-3" tabindex="-1"></a>grid <span class="ot">&lt;-</span> <span class="fu">rbind</span>(</span> <span id="cb3-4"><a href="#cb3-4" tabindex="-1"></a> grid,</span> <span id="cb3-5"><a href="#cb3-5" tabindex="-1"></a> <span class="fu">expand.grid</span>(<span class="at">len =</span> <span class="dv">10</span> <span class="sc">^</span> (<span class="dv">0</span><span class="sc">:</span><span class="dv">4</span>), <span class="at">pkg =</span> <span class="st">&quot;rcpp&quot;</span>, <span class="at">stringsAsFactors =</span> <span class="cn">FALSE</span>)</span> <span id="cb3-6"><a href="#cb3-6" tabindex="-1"></a>)</span> <span id="cb3-7"><a href="#cb3-7" tabindex="-1"></a>b_grow <span class="ot">&lt;-</span> bench<span class="sc">::</span><span class="fu">press</span>(<span class="at">.grid =</span> grid,</span> <span id="cb3-8"><a href="#cb3-8" tabindex="-1"></a> {</span> <span id="cb3-9"><a href="#cb3-9" tabindex="-1"></a> fun <span class="ot">=</span> <span class="fu">match.fun</span>(<span class="fu">sprintf</span>(<span class="st">&quot;%sgrow_&quot;</span>, <span class="fu">ifelse</span>(pkg <span class="sc">==</span> <span class="st">&quot;cpp11&quot;</span>, <span class="st">&quot;&quot;</span>, <span class="fu">paste0</span>(pkg, <span class="st">&quot;_&quot;</span>))))</span> <span id="cb3-10"><a href="#cb3-10" tabindex="-1"></a> bench<span class="sc">::</span><span class="fu">mark</span>(</span> <span id="cb3-11"><a href="#cb3-11" tabindex="-1"></a> <span class="fu">fun</span>(len)</span> <span id="cb3-12"><a href="#cb3-12" tabindex="-1"></a> )</span> <span id="cb3-13"><a href="#cb3-13" tabindex="-1"></a> }</span> <span id="cb3-14"><a href="#cb3-14" tabindex="-1"></a>)[<span class="fu">c</span>(<span class="st">&quot;len&quot;</span>, <span class="st">&quot;pkg&quot;</span>, <span class="st">&quot;min&quot;</span>, <span class="st">&quot;mem_alloc&quot;</span>, <span class="st">&quot;n_itr&quot;</span>, <span class="st">&quot;n_gc&quot;</span>)]</span> <span id="cb3-15"><a href="#cb3-15" tabindex="-1"></a><span class="fu">saveRDS</span>(b_grow, <span class="st">&quot;growth.Rds&quot;</span>, <span class="at">version =</span> <span class="dv">2</span>)</span></code></pre></div> <p><svg id="svg_e4ba6a30164e72789ce0f73187246d509300c3b1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="216" height="216" viewBox="0 0 216 216"> <defs> <g> <g id="glyph-0-0"> <path d="M 0.28125 0 L 0.28125 -6.3125 L 5.296875 -6.3125 L 5.296875 0 Z M 4.5 -0.796875 L 4.5 -5.515625 L 1.078125 -5.515625 L 1.078125 -0.796875 Z M 4.5 -0.796875 "></path> </g> <g id="glyph-0-1"> <path d="M 0.84375 -4.359375 L 0.84375 -4.953125 C 1.394531 -5.003906 1.78125 -5.09375 2 -5.21875 C 2.226562 -5.34375 2.394531 -5.644531 2.5 -6.125 L 3.109375 -6.125 L 3.109375 0 L 2.296875 0 L 2.296875 -4.359375 Z M 0.84375 -4.359375 "></path> </g> <g id="glyph-0-2"> <path d="M 2.375 -6.15625 C 3.175781 -6.15625 3.753906 -5.828125 4.109375 -5.171875 C 4.378906 -4.660156 4.515625 -3.960938 4.515625 -3.078125 C 4.515625 -2.242188 4.390625 -1.554688 4.140625 -1.015625 C 3.785156 -0.222656 3.195312 0.171875 2.375 0.171875 C 1.632812 0.171875 1.082031 -0.148438 0.71875 -0.796875 C 0.425781 -1.328125 0.28125 -2.046875 0.28125 -2.953125 C 0.28125 -3.648438 0.367188 -4.25 0.546875 -4.75 C 0.878906 -5.6875 1.488281 -6.15625 2.375 -6.15625 Z M 2.375 -0.53125 C 2.769531 -0.53125 3.085938 -0.707031 3.328125 -1.0625 C 3.566406 -1.425781 3.6875 -2.085938 3.6875 -3.046875 C 3.6875 -3.753906 3.597656 -4.332031 3.421875 -4.78125 C 3.253906 -5.226562 2.921875 -5.453125 2.421875 -5.453125 C 1.972656 -5.453125 1.640625 -5.238281 1.421875 -4.8125 C 1.210938 -4.382812 1.109375 -3.753906 1.109375 -2.921875 C 1.109375 -2.296875 1.175781 -1.789062 1.3125 -1.40625 C 1.519531 -0.820312 1.875 -0.53125 2.375 -0.53125 Z M 2.375 -0.53125 "></path> </g> <g id="glyph-0-3"> <path d="M 1.859375 -4.59375 L 1.15625 -1.34375 C 1.144531 -1.289062 1.132812 -1.242188 1.125 -1.203125 C 1.125 -1.171875 1.125 -1.132812 1.125 -1.09375 C 1.125 -0.957031 1.15625 -0.847656 1.21875 -0.765625 C 1.3125 -0.617188 1.5 -0.546875 1.78125 -0.546875 C 2.195312 -0.546875 2.546875 -0.695312 2.828125 -1 C 3.117188 -1.3125 3.304688 -1.671875 3.390625 -2.078125 L 3.953125 -4.59375 L 4.734375 -4.59375 L 3.75 0 L 3 0 L 3.1875 -0.765625 C 3.125 -0.640625 2.988281 -0.492188 2.78125 -0.328125 C 2.425781 -0.0234375 2.035156 0.125 1.609375 0.125 C 1.472656 0.125 1.332031 0.0976562 1.1875 0.046875 C 1.050781 -0.00390625 0.953125 -0.0625 0.890625 -0.125 L 0.46875 1.8125 L -0.328125 1.8125 L 1.0625 -4.59375 Z M 1.859375 -4.59375 "></path> </g> <g id="glyph-0-4"> <path d="M 1.03125 -1.4375 C 1.050781 -1.1875 1.113281 -0.988281 1.21875 -0.84375 C 1.414062 -0.601562 1.753906 -0.484375 2.234375 -0.484375 C 2.515625 -0.484375 2.765625 -0.539062 2.984375 -0.65625 C 3.203125 -0.78125 3.3125 -0.972656 3.3125 -1.234375 C 3.3125 -1.429688 3.222656 -1.582031 3.046875 -1.6875 C 2.941406 -1.75 2.722656 -1.820312 2.390625 -1.90625 L 1.78125 -2.0625 C 1.382812 -2.164062 1.09375 -2.273438 0.90625 -2.390625 C 0.570312 -2.597656 0.40625 -2.890625 0.40625 -3.265625 C 0.40625 -3.691406 0.5625 -4.039062 0.875 -4.3125 C 1.195312 -4.582031 1.617188 -4.71875 2.140625 -4.71875 C 2.835938 -4.71875 3.335938 -4.515625 3.640625 -4.109375 C 3.835938 -3.847656 3.929688 -3.570312 3.921875 -3.28125 L 3.203125 -3.28125 C 3.179688 -3.457031 3.117188 -3.613281 3.015625 -3.75 C 2.835938 -3.957031 2.53125 -4.0625 2.09375 -4.0625 C 1.800781 -4.0625 1.578125 -4.003906 1.421875 -3.890625 C 1.273438 -3.773438 1.203125 -3.628906 1.203125 -3.453125 C 1.203125 -3.253906 1.300781 -3.09375 1.5 -2.96875 C 1.613281 -2.894531 1.78125 -2.832031 2 -2.78125 L 2.515625 -2.65625 C 3.066406 -2.519531 3.4375 -2.390625 3.625 -2.265625 C 3.925781 -2.066406 4.078125 -1.753906 4.078125 -1.328125 C 4.078125 -0.921875 3.921875 -0.566406 3.609375 -0.265625 C 3.304688 0.0234375 2.832031 0.171875 2.1875 0.171875 C 1.507812 0.171875 1.023438 0.0195312 0.734375 -0.28125 C 0.453125 -0.59375 0.300781 -0.976562 0.28125 -1.4375 Z M 2.171875 -4.71875 Z M 2.171875 -4.71875 "></path> </g> <g id="glyph-0-5"> <path d="M 0.5625 -4.59375 L 1.328125 -4.59375 L 1.328125 -3.953125 C 1.515625 -4.171875 1.679688 -4.332031 1.828125 -4.4375 C 2.085938 -4.613281 2.378906 -4.703125 2.703125 -4.703125 C 3.066406 -4.703125 3.359375 -4.613281 3.578125 -4.4375 C 3.703125 -4.332031 3.816406 -4.179688 3.921875 -3.984375 C 4.097656 -4.222656 4.300781 -4.398438 4.53125 -4.515625 C 4.757812 -4.640625 5.019531 -4.703125 5.3125 -4.703125 C 5.925781 -4.703125 6.347656 -4.476562 6.578125 -4.03125 C 6.691406 -3.789062 6.75 -3.46875 6.75 -3.0625 L 6.75 0 L 5.953125 0 L 5.953125 -3.203125 C 5.953125 -3.503906 5.875 -3.710938 5.71875 -3.828125 C 5.570312 -3.941406 5.382812 -4 5.15625 -4 C 4.851562 -4 4.59375 -3.894531 4.375 -3.6875 C 4.15625 -3.488281 4.046875 -3.148438 4.046875 -2.671875 L 4.046875 0 L 3.265625 0 L 3.265625 -3 C 3.265625 -3.3125 3.226562 -3.539062 3.15625 -3.6875 C 3.039062 -3.894531 2.820312 -4 2.5 -4 C 2.207031 -4 1.941406 -3.882812 1.703125 -3.65625 C 1.460938 -3.4375 1.34375 -3.03125 1.34375 -2.4375 L 1.34375 0 L 0.5625 0 Z M 0.5625 -4.59375 "></path> </g> <g id="glyph-0-6"> <path d="M 2.34375 -4.734375 C 2.863281 -4.734375 3.285156 -4.609375 3.609375 -4.359375 C 3.929688 -4.109375 4.125 -3.671875 4.1875 -3.046875 L 3.4375 -3.046875 C 3.394531 -3.335938 3.289062 -3.578125 3.125 -3.765625 C 2.957031 -3.953125 2.695312 -4.046875 2.34375 -4.046875 C 1.851562 -4.046875 1.5 -3.800781 1.28125 -3.3125 C 1.144531 -3.007812 1.078125 -2.628906 1.078125 -2.171875 C 1.078125 -1.703125 1.171875 -1.3125 1.359375 -1 C 1.554688 -0.6875 1.867188 -0.53125 2.296875 -0.53125 C 2.609375 -0.53125 2.859375 -0.625 3.046875 -0.8125 C 3.234375 -1.007812 3.363281 -1.28125 3.4375 -1.625 L 4.1875 -1.625 C 4.101562 -1.019531 3.890625 -0.570312 3.546875 -0.28125 C 3.203125 0 2.765625 0.140625 2.234375 0.140625 C 1.628906 0.140625 1.144531 -0.078125 0.78125 -0.515625 C 0.425781 -0.960938 0.25 -1.515625 0.25 -2.171875 C 0.25 -2.984375 0.445312 -3.613281 0.84375 -4.0625 C 1.238281 -4.507812 1.738281 -4.734375 2.34375 -4.734375 Z M 2.21875 -4.71875 Z M 2.21875 -4.71875 "></path> </g> <g id="glyph-0-7"> <path d="M 2.515625 -0.515625 C 2.867188 -0.515625 3.164062 -0.664062 3.40625 -0.96875 C 3.644531 -1.269531 3.765625 -1.722656 3.765625 -2.328125 C 3.765625 -2.691406 3.710938 -3.003906 3.609375 -3.265625 C 3.410156 -3.773438 3.046875 -4.03125 2.515625 -4.03125 C 1.972656 -4.03125 1.601562 -3.765625 1.40625 -3.234375 C 1.300781 -2.941406 1.25 -2.578125 1.25 -2.140625 C 1.25 -1.785156 1.300781 -1.484375 1.40625 -1.234375 C 1.601562 -0.753906 1.972656 -0.515625 2.515625 -0.515625 Z M 0.5 -4.578125 L 1.265625 -4.578125 L 1.265625 -3.96875 C 1.410156 -4.175781 1.578125 -4.335938 1.765625 -4.453125 C 2.023438 -4.628906 2.332031 -4.71875 2.6875 -4.71875 C 3.207031 -4.71875 3.648438 -4.515625 4.015625 -4.109375 C 4.378906 -3.710938 4.5625 -3.144531 4.5625 -2.40625 C 4.5625 -1.394531 4.296875 -0.675781 3.765625 -0.25 C 3.429688 0.0195312 3.046875 0.15625 2.609375 0.15625 C 2.265625 0.15625 1.972656 0.078125 1.734375 -0.078125 C 1.597656 -0.160156 1.445312 -0.304688 1.28125 -0.515625 L 1.28125 1.828125 L 0.5 1.828125 Z M 0.5 -4.578125 "></path> </g> <g id="glyph-0-8"> <path d="M 0.59375 -4.59375 L 1.328125 -4.59375 L 1.328125 -3.8125 C 1.378906 -3.957031 1.523438 -4.140625 1.765625 -4.359375 C 2.003906 -4.585938 2.273438 -4.703125 2.578125 -4.703125 C 2.585938 -4.703125 2.609375 -4.695312 2.640625 -4.6875 C 2.679688 -4.6875 2.742188 -4.6875 2.828125 -4.6875 L 2.828125 -3.859375 C 2.773438 -3.867188 2.726562 -3.875 2.6875 -3.875 C 2.65625 -3.882812 2.617188 -3.890625 2.578125 -3.890625 C 2.179688 -3.890625 1.878906 -3.765625 1.671875 -3.515625 C 1.460938 -3.265625 1.359375 -2.972656 1.359375 -2.640625 L 1.359375 0 L 0.59375 0 Z M 0.59375 -4.59375 "></path> </g> <g id="glyph-1-0"> <path d="M 0.203125 0 L 0.203125 -4.421875 L 3.703125 -4.421875 L 3.703125 0 Z M 3.15625 -0.546875 L 3.15625 -3.859375 L 0.75 -3.859375 L 0.75 -0.546875 Z M 3.15625 -0.546875 "></path> </g> <g id="glyph-1-1"> <path d="M 1.671875 -4.296875 C 2.222656 -4.296875 2.625 -4.066406 2.875 -3.609375 C 3.0625 -3.253906 3.15625 -2.769531 3.15625 -2.15625 C 3.15625 -1.570312 3.070312 -1.085938 2.90625 -0.703125 C 2.644531 -0.148438 2.226562 0.125 1.65625 0.125 C 1.144531 0.125 0.765625 -0.101562 0.515625 -0.5625 C 0.296875 -0.9375 0.1875 -1.4375 0.1875 -2.0625 C 0.1875 -2.550781 0.25 -2.972656 0.375 -3.328125 C 0.613281 -3.972656 1.046875 -4.296875 1.671875 -4.296875 Z M 1.65625 -0.375 C 1.9375 -0.375 2.160156 -0.5 2.328125 -0.75 C 2.492188 -1 2.578125 -1.460938 2.578125 -2.140625 C 2.578125 -2.628906 2.515625 -3.03125 2.390625 -3.34375 C 2.273438 -3.65625 2.046875 -3.8125 1.703125 -3.8125 C 1.378906 -3.8125 1.144531 -3.660156 1 -3.359375 C 0.851562 -3.066406 0.78125 -2.628906 0.78125 -2.046875 C 0.78125 -1.609375 0.828125 -1.253906 0.921875 -0.984375 C 1.066406 -0.578125 1.3125 -0.375 1.65625 -0.375 Z M 1.65625 -0.375 "></path> </g> <g id="glyph-1-2"> <path d="M 0.1875 0 C 0.207031 -0.375 0.285156 -0.695312 0.421875 -0.96875 C 0.554688 -1.238281 0.816406 -1.488281 1.203125 -1.71875 L 1.78125 -2.046875 C 2.039062 -2.203125 2.222656 -2.332031 2.328125 -2.4375 C 2.484375 -2.601562 2.5625 -2.789062 2.5625 -3 C 2.5625 -3.25 2.488281 -3.445312 2.34375 -3.59375 C 2.195312 -3.75 2 -3.828125 1.75 -3.828125 C 1.375 -3.828125 1.113281 -3.6875 0.96875 -3.40625 C 0.894531 -3.25 0.851562 -3.039062 0.84375 -2.78125 L 0.296875 -2.78125 C 0.304688 -3.15625 0.375 -3.457031 0.5 -3.6875 C 0.738281 -4.101562 1.15625 -4.3125 1.75 -4.3125 C 2.238281 -4.3125 2.597656 -4.175781 2.828125 -3.90625 C 3.054688 -3.644531 3.171875 -3.351562 3.171875 -3.03125 C 3.171875 -2.6875 3.046875 -2.390625 2.796875 -2.140625 C 2.660156 -2.003906 2.410156 -1.832031 2.046875 -1.625 L 1.640625 -1.40625 C 1.441406 -1.289062 1.285156 -1.1875 1.171875 -1.09375 C 0.972656 -0.914062 0.847656 -0.722656 0.796875 -0.515625 L 3.140625 -0.515625 L 3.140625 0 Z M 0.1875 0 "></path> </g> <g id="glyph-1-3"> <path d="M 2.03125 -1.53125 L 2.03125 -3.46875 L 0.65625 -1.53125 Z M 2.046875 0 L 2.046875 -1.046875 L 0.15625 -1.046875 L 0.15625 -1.578125 L 2.125 -4.3125 L 2.578125 -4.3125 L 2.578125 -1.53125 L 3.21875 -1.53125 L 3.21875 -1.046875 L 2.578125 -1.046875 L 2.578125 0 Z M 2.046875 0 "></path> </g> <g id="glyph-1-4"> <path d="M 1.796875 -4.328125 C 2.273438 -4.328125 2.609375 -4.203125 2.796875 -3.953125 C 2.992188 -3.703125 3.09375 -3.441406 3.09375 -3.171875 L 2.5625 -3.171875 C 2.519531 -3.347656 2.46875 -3.484375 2.40625 -3.578125 C 2.269531 -3.753906 2.070312 -3.84375 1.8125 -3.84375 C 1.507812 -3.84375 1.269531 -3.703125 1.09375 -3.421875 C 0.914062 -3.148438 0.816406 -2.753906 0.796875 -2.234375 C 0.921875 -2.410156 1.078125 -2.546875 1.265625 -2.640625 C 1.429688 -2.710938 1.625 -2.75 1.84375 -2.75 C 2.195312 -2.75 2.507812 -2.632812 2.78125 -2.40625 C 3.050781 -2.175781 3.1875 -1.832031 3.1875 -1.375 C 3.1875 -0.988281 3.054688 -0.644531 2.796875 -0.34375 C 2.546875 -0.0390625 2.1875 0.109375 1.71875 0.109375 C 1.3125 0.109375 0.960938 -0.0390625 0.671875 -0.34375 C 0.378906 -0.65625 0.234375 -1.171875 0.234375 -1.890625 C 0.234375 -2.421875 0.296875 -2.875 0.421875 -3.25 C 0.671875 -3.96875 1.128906 -4.328125 1.796875 -4.328125 Z M 1.765625 -0.375 C 2.046875 -0.375 2.253906 -0.46875 2.390625 -0.65625 C 2.535156 -0.84375 2.609375 -1.066406 2.609375 -1.328125 C 2.609375 -1.554688 2.546875 -1.769531 2.421875 -1.96875 C 2.296875 -2.164062 2.066406 -2.265625 1.734375 -2.265625 C 1.503906 -2.265625 1.300781 -2.1875 1.125 -2.03125 C 0.945312 -1.875 0.859375 -1.640625 0.859375 -1.328125 C 0.859375 -1.054688 0.9375 -0.828125 1.09375 -0.640625 C 1.257812 -0.460938 1.484375 -0.375 1.765625 -0.375 Z M 1.765625 -0.375 "></path> </g> <g id="glyph-2-0"> <path d="M 0.359375 0 L 0.359375 -7.890625 L 6.625 -7.890625 L 6.625 0 Z M 5.625 -0.984375 L 5.625 -6.90625 L 1.34375 -6.90625 L 1.34375 -0.984375 Z M 5.625 -0.984375 "></path> </g> <g id="glyph-2-1"> <path d="M 3.140625 -0.65625 C 3.585938 -0.65625 3.957031 -0.84375 4.25 -1.21875 C 4.550781 -1.59375 4.703125 -2.15625 4.703125 -2.90625 C 4.703125 -3.363281 4.640625 -3.757812 4.515625 -4.09375 C 4.265625 -4.726562 3.804688 -5.046875 3.140625 -5.046875 C 2.460938 -5.046875 2.003906 -4.710938 1.765625 -4.046875 C 1.628906 -3.679688 1.5625 -3.222656 1.5625 -2.671875 C 1.5625 -2.234375 1.628906 -1.859375 1.765625 -1.546875 C 2.015625 -0.953125 2.472656 -0.65625 3.140625 -0.65625 Z M 0.640625 -5.71875 L 1.578125 -5.71875 L 1.578125 -4.96875 C 1.765625 -5.226562 1.972656 -5.425781 2.203125 -5.5625 C 2.535156 -5.78125 2.921875 -5.890625 3.359375 -5.890625 C 4.003906 -5.890625 4.554688 -5.640625 5.015625 -5.140625 C 5.472656 -4.640625 5.703125 -3.925781 5.703125 -3 C 5.703125 -1.75 5.375 -0.851562 4.71875 -0.3125 C 4.300781 0.0195312 3.816406 0.1875 3.265625 0.1875 C 2.828125 0.1875 2.460938 0.09375 2.171875 -0.09375 C 2.003906 -0.195312 1.8125 -0.378906 1.59375 -0.640625 L 1.59375 2.296875 L 0.640625 2.296875 Z M 0.640625 -5.71875 "></path> </g> <g id="glyph-2-2"> <path d="M 0.6875 -7.890625 L 1.609375 -7.890625 L 1.609375 -3.3125 L 4.09375 -5.75 L 5.328125 -5.75 L 3.125 -3.59375 L 5.453125 0 L 4.21875 0 L 2.421875 -2.90625 L 1.609375 -2.15625 L 1.609375 0 L 0.6875 0 Z M 0.6875 -7.890625 "></path> </g> <g id="glyph-2-3"> <path d="M 2.734375 -5.859375 C 3.191406 -5.859375 3.585938 -5.742188 3.921875 -5.515625 C 4.097656 -5.390625 4.285156 -5.207031 4.484375 -4.96875 L 4.484375 -5.703125 L 5.375 -5.703125 L 5.375 -0.46875 C 5.375 0.257812 5.265625 0.835938 5.046875 1.265625 C 4.648438 2.046875 3.894531 2.4375 2.78125 2.4375 C 2.15625 2.4375 1.628906 2.296875 1.203125 2.015625 C 0.785156 1.734375 0.550781 1.300781 0.5 0.71875 L 1.484375 0.71875 C 1.535156 0.96875 1.628906 1.164062 1.765625 1.3125 C 1.984375 1.53125 2.328125 1.640625 2.796875 1.640625 C 3.535156 1.640625 4.019531 1.375 4.25 0.84375 C 4.382812 0.539062 4.445312 -0.00390625 4.4375 -0.796875 C 4.25 -0.503906 4.015625 -0.285156 3.734375 -0.140625 C 3.460938 -0.00390625 3.109375 0.0625 2.671875 0.0625 C 2.046875 0.0625 1.5 -0.15625 1.03125 -0.59375 C 0.5625 -1.03125 0.328125 -1.757812 0.328125 -2.78125 C 0.328125 -3.75 0.5625 -4.503906 1.03125 -5.046875 C 1.5 -5.585938 2.066406 -5.859375 2.734375 -5.859375 Z M 4.484375 -2.90625 C 4.484375 -3.613281 4.332031 -4.140625 4.03125 -4.484375 C 3.738281 -4.828125 3.367188 -5 2.921875 -5 C 2.234375 -5 1.765625 -4.679688 1.515625 -4.046875 C 1.390625 -3.703125 1.328125 -3.253906 1.328125 -2.703125 C 1.328125 -2.054688 1.457031 -1.5625 1.71875 -1.21875 C 1.976562 -0.882812 2.332031 -0.71875 2.78125 -0.71875 C 3.46875 -0.71875 3.957031 -1.03125 4.25 -1.65625 C 4.40625 -2.007812 4.484375 -2.425781 4.484375 -2.90625 Z M 2.859375 -5.890625 Z M 2.859375 -5.890625 "></path> </g> <g id="glyph-3-0"> <path d="M 0.421875 0 L 0.421875 -9.46875 L 7.9375 -9.46875 L 7.9375 0 Z M 6.75 -1.1875 L 6.75 -8.28125 L 1.609375 -8.28125 L 1.609375 -1.1875 Z M 6.75 -1.1875 "></path> </g> <g id="glyph-3-1"> <path d="M 0.890625 -9.46875 L 2.046875 -9.46875 L 2.046875 0 L 0.890625 0 Z M 0.890625 -9.46875 "></path> </g> <g id="glyph-3-2"> <path d="M 3.59375 -0.75 C 4.363281 -0.75 4.890625 -1.039062 5.171875 -1.625 C 5.460938 -2.207031 5.609375 -2.851562 5.609375 -3.5625 C 5.609375 -4.207031 5.503906 -4.734375 5.296875 -5.140625 C 4.960938 -5.773438 4.398438 -6.09375 3.609375 -6.09375 C 2.898438 -6.09375 2.382812 -5.820312 2.0625 -5.28125 C 1.738281 -4.738281 1.578125 -4.082031 1.578125 -3.3125 C 1.578125 -2.582031 1.738281 -1.972656 2.0625 -1.484375 C 2.382812 -0.992188 2.894531 -0.75 3.59375 -0.75 Z M 3.640625 -7.109375 C 4.523438 -7.109375 5.273438 -6.8125 5.890625 -6.21875 C 6.503906 -5.625 6.8125 -4.75 6.8125 -3.59375 C 6.8125 -2.476562 6.539062 -1.554688 6 -0.828125 C 5.457031 -0.109375 4.617188 0.25 3.484375 0.25 C 2.535156 0.25 1.78125 -0.0664062 1.21875 -0.703125 C 0.65625 -1.347656 0.375 -2.210938 0.375 -3.296875 C 0.375 -4.460938 0.664062 -5.390625 1.25 -6.078125 C 1.84375 -6.765625 2.640625 -7.109375 3.640625 -7.109375 Z M 3.59375 -7.078125 Z M 3.59375 -7.078125 "></path> </g> <g id="glyph-3-3"> <path d="M 3.28125 -7.03125 C 3.820312 -7.03125 4.296875 -6.894531 4.703125 -6.625 C 4.921875 -6.476562 5.144531 -6.257812 5.375 -5.96875 L 5.375 -6.84375 L 6.453125 -6.84375 L 6.453125 -0.5625 C 6.453125 0.3125 6.320312 1.003906 6.0625 1.515625 C 5.582031 2.453125 4.671875 2.921875 3.328125 2.921875 C 2.585938 2.921875 1.960938 2.753906 1.453125 2.421875 C 0.953125 2.085938 0.671875 1.566406 0.609375 0.859375 L 1.78125 0.859375 C 1.84375 1.171875 1.957031 1.410156 2.125 1.578125 C 2.382812 1.828125 2.796875 1.953125 3.359375 1.953125 C 4.242188 1.953125 4.828125 1.640625 5.109375 1.015625 C 5.265625 0.648438 5.335938 -0.00390625 5.328125 -0.953125 C 5.097656 -0.609375 4.816406 -0.347656 4.484375 -0.171875 C 4.160156 -0.00390625 3.734375 0.078125 3.203125 0.078125 C 2.453125 0.078125 1.796875 -0.1875 1.234375 -0.71875 C 0.671875 -1.25 0.390625 -2.125 0.390625 -3.34375 C 0.390625 -4.5 0.671875 -5.398438 1.234375 -6.046875 C 1.804688 -6.703125 2.488281 -7.03125 3.28125 -7.03125 Z M 5.375 -3.484375 C 5.375 -4.335938 5.195312 -4.96875 4.84375 -5.375 C 4.488281 -5.789062 4.039062 -6 3.5 -6 C 2.6875 -6 2.128906 -5.617188 1.828125 -4.859375 C 1.660156 -4.441406 1.578125 -3.90625 1.578125 -3.25 C 1.578125 -2.46875 1.734375 -1.875 2.046875 -1.46875 C 2.367188 -1.0625 2.796875 -0.859375 3.328125 -0.859375 C 4.160156 -0.859375 4.75 -1.234375 5.09375 -1.984375 C 5.28125 -2.410156 5.375 -2.910156 5.375 -3.484375 Z M 3.421875 -7.078125 Z M 3.421875 -7.078125 "></path> </g> <g id="glyph-3-4"> <path d="M 0.546875 -4.28125 L 3.78125 -4.28125 L 3.78125 -3.078125 L 0.546875 -3.078125 Z M 0.546875 -4.28125 "></path> </g> <g id="glyph-3-5"> </g> <g id="glyph-3-6"> <path d="M 3.765625 -0.78125 C 4.304688 -0.78125 4.753906 -1.003906 5.109375 -1.453125 C 5.472656 -1.910156 5.65625 -2.59375 5.65625 -3.5 C 5.65625 -4.039062 5.578125 -4.507812 5.421875 -4.90625 C 5.117188 -5.664062 4.566406 -6.046875 3.765625 -6.046875 C 2.960938 -6.046875 2.410156 -5.644531 2.109375 -4.84375 C 1.953125 -4.414062 1.875 -3.867188 1.875 -3.203125 C 1.875 -2.671875 1.953125 -2.21875 2.109375 -1.84375 C 2.410156 -1.132812 2.960938 -0.78125 3.765625 -0.78125 Z M 0.765625 -6.875 L 1.890625 -6.875 L 1.890625 -5.953125 C 2.117188 -6.265625 2.375 -6.507812 2.65625 -6.6875 C 3.039062 -6.945312 3.5 -7.078125 4.03125 -7.078125 C 4.8125 -7.078125 5.472656 -6.773438 6.015625 -6.171875 C 6.566406 -5.578125 6.84375 -4.722656 6.84375 -3.609375 C 6.84375 -2.097656 6.445312 -1.019531 5.65625 -0.375 C 5.15625 0.03125 4.578125 0.234375 3.921875 0.234375 C 3.398438 0.234375 2.960938 0.117188 2.609375 -0.109375 C 2.398438 -0.234375 2.171875 -0.457031 1.921875 -0.78125 L 1.921875 2.75 L 0.765625 2.75 Z M 0.765625 -6.875 "></path> </g> <g id="glyph-3-7"> <path d="M 1.078125 -8.828125 L 2.25 -8.828125 L 2.25 -6.90625 L 3.359375 -6.90625 L 3.359375 -5.953125 L 2.25 -5.953125 L 2.25 -1.453125 C 2.25 -1.210938 2.332031 -1.050781 2.5 -0.96875 C 2.59375 -0.914062 2.742188 -0.890625 2.953125 -0.890625 C 3.003906 -0.890625 3.0625 -0.890625 3.125 -0.890625 C 3.195312 -0.898438 3.273438 -0.910156 3.359375 -0.921875 L 3.359375 0 C 3.222656 0.0390625 3.082031 0.0664062 2.9375 0.078125 C 2.800781 0.0976562 2.644531 0.109375 2.46875 0.109375 C 1.925781 0.109375 1.554688 -0.0234375 1.359375 -0.296875 C 1.171875 -0.578125 1.078125 -0.941406 1.078125 -1.390625 L 1.078125 -5.953125 L 0.140625 -5.953125 L 0.140625 -6.90625 L 1.078125 -6.90625 Z M 1.078125 -8.828125 "></path> </g> <g id="glyph-3-8"> <path d="M 1.140625 -7.953125 C 1.160156 -8.429688 1.242188 -8.785156 1.390625 -9.015625 C 1.660156 -9.410156 2.179688 -9.609375 2.953125 -9.609375 C 3.023438 -9.609375 3.097656 -9.601562 3.171875 -9.59375 C 3.253906 -9.59375 3.347656 -9.585938 3.453125 -9.578125 L 3.453125 -8.515625 C 3.328125 -8.523438 3.238281 -8.53125 3.1875 -8.53125 C 3.132812 -8.539062 3.082031 -8.546875 3.03125 -8.546875 C 2.6875 -8.546875 2.476562 -8.453125 2.40625 -8.265625 C 2.332031 -8.085938 2.296875 -7.625 2.296875 -6.875 L 3.453125 -6.875 L 3.453125 -5.953125 L 2.28125 -5.953125 L 2.28125 0 L 1.140625 0 L 1.140625 -5.953125 L 0.1875 -5.953125 L 0.1875 -6.875 L 1.140625 -6.875 Z M 1.140625 -7.953125 "></path> </g> <g id="glyph-3-9"> <path d="M 1.421875 -6.90625 L 3.265625 -1.28125 L 5.1875 -6.90625 L 6.453125 -6.90625 L 3.859375 0 L 2.625 0 L 0.078125 -6.90625 Z M 1.421875 -6.90625 "></path> </g> <g id="glyph-3-10"> <path d="M 3.71875 -7.0625 C 4.21875 -7.0625 4.695312 -6.945312 5.15625 -6.71875 C 5.613281 -6.488281 5.960938 -6.191406 6.203125 -5.828125 C 6.429688 -5.472656 6.585938 -5.066406 6.671875 -4.609375 C 6.734375 -4.285156 6.765625 -3.773438 6.765625 -3.078125 L 1.703125 -3.078125 C 1.722656 -2.378906 1.890625 -1.816406 2.203125 -1.390625 C 2.515625 -0.972656 2.992188 -0.765625 3.640625 -0.765625 C 4.242188 -0.765625 4.726562 -0.960938 5.09375 -1.359375 C 5.300781 -1.585938 5.445312 -1.859375 5.53125 -2.171875 L 6.671875 -2.171875 C 6.640625 -1.910156 6.539062 -1.625 6.375 -1.3125 C 6.207031 -1 6.015625 -0.742188 5.796875 -0.546875 C 5.453125 -0.203125 5.019531 0.0234375 4.5 0.140625 C 4.21875 0.210938 3.898438 0.25 3.546875 0.25 C 2.679688 0.25 1.953125 -0.0625 1.359375 -0.6875 C 0.765625 -1.3125 0.46875 -2.1875 0.46875 -3.3125 C 0.46875 -4.425781 0.765625 -5.328125 1.359375 -6.015625 C 1.960938 -6.710938 2.75 -7.0625 3.71875 -7.0625 Z M 5.578125 -4 C 5.523438 -4.5 5.414062 -4.898438 5.25 -5.203125 C 4.925781 -5.765625 4.394531 -6.046875 3.65625 -6.046875 C 3.125 -6.046875 2.675781 -5.851562 2.3125 -5.46875 C 1.945312 -5.082031 1.753906 -4.59375 1.734375 -4 Z M 3.609375 -7.078125 Z M 3.609375 -7.078125 "></path> </g> <g id="glyph-3-11"> <path d="M 3.515625 -7.109375 C 4.296875 -7.109375 4.925781 -6.914062 5.40625 -6.53125 C 5.894531 -6.15625 6.191406 -5.503906 6.296875 -4.578125 L 5.15625 -4.578125 C 5.09375 -5.003906 4.9375 -5.359375 4.6875 -5.640625 C 4.445312 -5.921875 4.054688 -6.0625 3.515625 -6.0625 C 2.773438 -6.0625 2.242188 -5.703125 1.921875 -4.984375 C 1.722656 -4.515625 1.625 -3.9375 1.625 -3.25 C 1.625 -2.5625 1.769531 -1.976562 2.0625 -1.5 C 2.351562 -1.03125 2.8125 -0.796875 3.4375 -0.796875 C 3.914062 -0.796875 4.296875 -0.941406 4.578125 -1.234375 C 4.859375 -1.523438 5.050781 -1.925781 5.15625 -2.4375 L 6.296875 -2.4375 C 6.160156 -1.519531 5.832031 -0.847656 5.3125 -0.421875 C 4.800781 -0.00390625 4.144531 0.203125 3.34375 0.203125 C 2.4375 0.203125 1.710938 -0.125 1.171875 -0.78125 C 0.640625 -1.445312 0.375 -2.273438 0.375 -3.265625 C 0.375 -4.472656 0.664062 -5.414062 1.25 -6.09375 C 1.84375 -6.769531 2.597656 -7.109375 3.515625 -7.109375 Z M 3.328125 -7.078125 Z M 3.328125 -7.078125 "></path> </g> <g id="glyph-3-12"> <path d="M 0.890625 -6.90625 L 1.984375 -6.90625 L 1.984375 -5.71875 C 2.078125 -5.945312 2.296875 -6.226562 2.640625 -6.5625 C 2.992188 -6.894531 3.40625 -7.0625 3.875 -7.0625 C 3.894531 -7.0625 3.929688 -7.054688 3.984375 -7.046875 C 4.035156 -7.046875 4.117188 -7.039062 4.234375 -7.03125 L 4.234375 -5.796875 C 4.171875 -5.816406 4.109375 -5.828125 4.046875 -5.828125 C 3.992188 -5.828125 3.929688 -5.828125 3.859375 -5.828125 C 3.273438 -5.828125 2.828125 -5.640625 2.515625 -5.265625 C 2.203125 -4.890625 2.046875 -4.457031 2.046875 -3.96875 L 2.046875 0 L 0.890625 0 Z M 0.890625 -6.90625 "></path> </g> <g id="glyph-3-13"> <path d="M 1.546875 -2.171875 C 1.578125 -1.773438 1.671875 -1.476562 1.828125 -1.28125 C 2.117188 -0.90625 2.628906 -0.71875 3.359375 -0.71875 C 3.785156 -0.71875 4.160156 -0.8125 4.484375 -1 C 4.816406 -1.1875 4.984375 -1.472656 4.984375 -1.859375 C 4.984375 -2.160156 4.847656 -2.390625 4.578125 -2.546875 C 4.410156 -2.640625 4.082031 -2.75 3.59375 -2.875 L 2.671875 -3.09375 C 2.078125 -3.238281 1.640625 -3.40625 1.359375 -3.59375 C 0.867188 -3.90625 0.625 -4.335938 0.625 -4.890625 C 0.625 -5.546875 0.859375 -6.070312 1.328125 -6.46875 C 1.796875 -6.875 2.425781 -7.078125 3.21875 -7.078125 C 4.257812 -7.078125 5.007812 -6.773438 5.46875 -6.171875 C 5.757812 -5.785156 5.898438 -5.367188 5.890625 -4.921875 L 4.796875 -4.921875 C 4.773438 -5.179688 4.679688 -5.421875 4.515625 -5.640625 C 4.253906 -5.941406 3.796875 -6.09375 3.140625 -6.09375 C 2.691406 -6.09375 2.351562 -6.007812 2.125 -5.84375 C 1.90625 -5.675781 1.796875 -5.453125 1.796875 -5.171875 C 1.796875 -4.867188 1.945312 -4.628906 2.25 -4.453125 C 2.414062 -4.347656 2.664062 -4.253906 3 -4.171875 L 3.765625 -3.984375 C 4.597656 -3.785156 5.160156 -3.585938 5.453125 -3.390625 C 5.898438 -3.097656 6.125 -2.632812 6.125 -2 C 6.125 -1.382812 5.890625 -0.851562 5.421875 -0.40625 C 4.953125 0.0390625 4.242188 0.265625 3.296875 0.265625 C 2.265625 0.265625 1.535156 0.03125 1.109375 -0.4375 C 0.679688 -0.90625 0.453125 -1.484375 0.421875 -2.171875 Z M 3.25 -7.078125 Z M 3.25 -7.078125 "></path> </g> <g id="glyph-3-14"> <path d="M 0.84375 -6.875 L 2.03125 -6.875 L 2.03125 0 L 0.84375 0 Z M 0.84375 -9.46875 L 2.03125 -9.46875 L 2.03125 -8.15625 L 0.84375 -8.15625 Z M 0.84375 -9.46875 "></path> </g> <g id="glyph-3-15"> <path d="M 0.328125 -0.921875 L 4.421875 -5.859375 L 0.640625 -5.859375 L 0.640625 -6.90625 L 5.984375 -6.90625 L 5.984375 -5.953125 L 1.921875 -1.03125 L 6.109375 -1.03125 L 6.109375 0 L 0.328125 0 Z M 3.3125 -7.078125 Z M 3.3125 -7.078125 "></path> </g> <g id="glyph-3-16"> <path d="M 0.84375 -6.90625 L 1.953125 -6.90625 L 1.953125 -5.921875 C 2.273438 -6.328125 2.617188 -6.617188 2.984375 -6.796875 C 3.359375 -6.972656 3.765625 -7.0625 4.203125 -7.0625 C 5.179688 -7.0625 5.847656 -6.71875 6.203125 -6.03125 C 6.390625 -5.65625 6.484375 -5.117188 6.484375 -4.421875 L 6.484375 0 L 5.296875 0 L 5.296875 -4.359375 C 5.296875 -4.773438 5.234375 -5.113281 5.109375 -5.375 C 4.898438 -5.800781 4.523438 -6.015625 3.984375 -6.015625 C 3.710938 -6.015625 3.488281 -5.988281 3.3125 -5.9375 C 3 -5.84375 2.71875 -5.648438 2.46875 -5.359375 C 2.28125 -5.128906 2.15625 -4.894531 2.09375 -4.65625 C 2.039062 -4.414062 2.015625 -4.066406 2.015625 -3.609375 L 2.015625 0 L 0.84375 0 Z M 3.578125 -7.078125 Z M 3.578125 -7.078125 "></path> </g> <g id="glyph-3-17"> <path d="M 2.015625 -6.90625 L 2.015625 -2.328125 C 2.015625 -1.972656 2.066406 -1.679688 2.171875 -1.453125 C 2.378906 -1.046875 2.765625 -0.84375 3.328125 -0.84375 C 4.140625 -0.84375 4.691406 -1.203125 4.984375 -1.921875 C 5.140625 -2.304688 5.21875 -2.835938 5.21875 -3.515625 L 5.21875 -6.90625 L 6.375 -6.90625 L 6.375 0 L 5.28125 0 L 5.296875 -1.015625 C 5.148438 -0.753906 4.960938 -0.535156 4.734375 -0.359375 C 4.296875 0.00390625 3.757812 0.1875 3.125 0.1875 C 2.144531 0.1875 1.472656 -0.140625 1.109375 -0.796875 C 0.921875 -1.148438 0.828125 -1.625 0.828125 -2.21875 L 0.828125 -6.90625 Z M 3.609375 -7.078125 Z M 3.609375 -7.078125 "></path> </g> <g id="glyph-3-18"> <path d="M 0.84375 -6.90625 L 2 -6.90625 L 2 -5.921875 C 2.269531 -6.265625 2.519531 -6.515625 2.75 -6.671875 C 3.125 -6.929688 3.554688 -7.0625 4.046875 -7.0625 C 4.597656 -7.0625 5.039062 -6.925781 5.375 -6.65625 C 5.5625 -6.5 5.734375 -6.269531 5.890625 -5.96875 C 6.148438 -6.34375 6.453125 -6.617188 6.796875 -6.796875 C 7.148438 -6.972656 7.539062 -7.0625 7.96875 -7.0625 C 8.90625 -7.0625 9.539062 -6.722656 9.875 -6.046875 C 10.050781 -5.691406 10.140625 -5.207031 10.140625 -4.59375 L 10.140625 0 L 8.9375 0 L 8.9375 -4.796875 C 8.9375 -5.253906 8.820312 -5.566406 8.59375 -5.734375 C 8.363281 -5.910156 8.082031 -6 7.75 -6 C 7.289062 -6 6.894531 -5.847656 6.5625 -5.546875 C 6.238281 -5.242188 6.078125 -4.734375 6.078125 -4.015625 L 6.078125 0 L 4.90625 0 L 4.90625 -4.5 C 4.90625 -4.96875 4.847656 -5.3125 4.734375 -5.53125 C 4.554688 -5.851562 4.226562 -6.015625 3.75 -6.015625 C 3.3125 -6.015625 2.910156 -5.84375 2.546875 -5.5 C 2.191406 -5.164062 2.015625 -4.550781 2.015625 -3.65625 L 2.015625 0 L 0.84375 0 Z M 0.84375 -6.90625 "></path> </g> </g> <clipPath id="clip-0"> <path clip-rule="nonzero" d="M 0 49.789062 L 216 49.789062 L 216 166.207031 L 0 166.207031 Z M 0 49.789062 "></path> </clipPath> <clipPath id="clip-1"> <path clip-rule="nonzero" d="M 36.410156 73.75 L 141.84375 73.75 L 141.84375 143.050781 L 36.410156 143.050781 Z M 36.410156 73.75 "></path> </clipPath> <clipPath id="clip-2"> <path clip-rule="nonzero" d="M 36.410156 131 L 141.84375 131 L 141.84375 133 L 36.410156 133 Z M 36.410156 131 "></path> </clipPath> <clipPath id="clip-3"> <path clip-rule="nonzero" d="M 36.410156 117 L 141.84375 117 L 141.84375 119 L 36.410156 119 Z M 36.410156 117 "></path> </clipPath> <clipPath id="clip-4"> <path clip-rule="nonzero" d="M 36.410156 104 L 141.84375 104 L 141.84375 106 L 36.410156 106 Z M 36.410156 104 "></path> </clipPath> <clipPath id="clip-5"> <path clip-rule="nonzero" d="M 36.410156 90 L 141.84375 90 L 141.84375 92 L 36.410156 92 Z M 36.410156 90 "></path> </clipPath> <clipPath id="clip-6"> <path clip-rule="nonzero" d="M 36.410156 76 L 141.84375 76 L 141.84375 78 L 36.410156 78 Z M 36.410156 76 "></path> </clipPath> <clipPath id="clip-7"> <path clip-rule="nonzero" d="M 40 73.75 L 42 73.75 L 42 143.050781 L 40 143.050781 Z M 40 73.75 "></path> </clipPath> <clipPath id="clip-8"> <path clip-rule="nonzero" d="M 68 73.75 L 70 73.75 L 70 143.050781 L 68 143.050781 Z M 68 73.75 "></path> </clipPath> <clipPath id="clip-9"> <path clip-rule="nonzero" d="M 95 73.75 L 97 73.75 L 97 143.050781 L 95 143.050781 Z M 95 73.75 "></path> </clipPath> <clipPath id="clip-10"> <path clip-rule="nonzero" d="M 122 73.75 L 124 73.75 L 124 143.050781 L 122 143.050781 Z M 122 73.75 "></path> </clipPath> </defs> <rect x="-21.6" y="-21.6" width="259.2" height="259.2" fill="rgb(100%, 100%, 100%)" fill-opacity="1"></rect> <g clip-path="url(#clip-0)"> <path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="1.066978" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 0 166.210938 L 216 166.210938 L 216 49.792969 L 0 49.792969 Z M 0 166.210938 "></path> </g> <g clip-path="url(#clip-1)"> <path fill-rule="nonzero" fill="rgb(92.156863%, 92.156863%, 92.156863%)" fill-opacity="1" d="M 36.410156 143.046875 L 141.84375 143.046875 L 141.84375 73.746094 L 36.410156 73.746094 Z M 36.410156 143.046875 "></path> </g> <g clip-path="url(#clip-2)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.410156 131.988281 L 141.84375 131.988281 "></path> </g> <g clip-path="url(#clip-3)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.410156 118.296875 L 141.84375 118.296875 "></path> </g> <g clip-path="url(#clip-4)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.410156 104.601562 L 141.84375 104.601562 "></path> </g> <g clip-path="url(#clip-5)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.410156 90.910156 L 141.84375 90.910156 "></path> </g> <g clip-path="url(#clip-6)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.410156 77.21875 L 141.84375 77.21875 "></path> </g> <g clip-path="url(#clip-7)"> <path fill="none" stroke-width="1.066978" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" str