PageSourceSearch

https://fizzics.netlify.app/about

html fizzics.netlify.app collected 2026-10-03 10:44:12 UTC 75,994 bytes, 2,939 lines download raw bytes

1<!DOCTYPE html>
2
3<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
4
5<head>
6  <meta charset="utf-8"/>
7<!-- This site is hosted on Netlify. Anyone can build and deploy a site
8     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=33bdcd31-d2cb-49bd-824c-28690047a37d
9     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
10  <meta name="viewport" content="width=device-width, initial-scale=1"/>
11  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
12  <meta name="generator" content="distill" />
13
14  <style type="text/css">
15  /* Hide doc at startup (prevent jankiness while JS renders/transforms) */
16  body {
17    visibility: hidden;
18  }
19  </style>
20
21 <!--radix_placeholder_import_source-->
22 <!--/radix_placeholder_import_source-->
23
24<style type="text/css">code{white-space: pre;}</style>
25<style type="text/css" data-origin="pandoc">
26pre > code.sourceCode { white-space: pre; position: relative; }
27pre > code.sourceCode > span { line-height: 1.25; }
28pre > code.sourceCode > span:empty { height: 1.2em; }
29.sourceCode { overflow: visible; }
30code.sourceCode > span { color: inherit; text-decoration: inherit; }
31div.sourceCode { margin: 1em 0; }
32pre.sourceCode { margin: 0; }
33@media screen {
34div.sourceCode { overflow: auto; }
35}
36@media print {
37pre > code.sourceCode { white-space: pre-wrap; }
38pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
39}
40pre.numberSource code
41  { counter-reset: source-line 0; }
42pre.numberSource code > span
43  { position: relative; left: -4em; counter-increment: source-line; }
44pre.numberSource code > span > a:first-child::before
45  { content: counter(source-line);
46    position: relative; left: -1em; text-align: right; vertical-align: baseline;
47    border: none; display: inline-block;
48    -webkit-touch-callout: none; -webkit-user-select: none;
49    -khtml-user-select: none; -moz-user-select: none;
50    -ms-user-select: none; user-select: none;
51    padding: 0 4px; width: 4em;
52    color: #aaaaaa;
53  }
54pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
55div.sourceCode
56  { color: #00769e; background-color: #f1f3f5; }
57@media screen {
58pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
59}
60code span { color: #00769e; } /* Normal */
61code span.al { color: #ad0000; } /* Alert */
62code span.an { color: #5e5e5e; } /* Annotation */
63code span.at { color: #657422; } /* Attribute */
64code span.bn { color: #ad0000; } /* BaseN */
65code span.bu { } /* BuiltIn */
66code span.cf { color: #00769e; } /* ControlFlow */
67code span.ch { color: #20794d; } /* Char */
68code span.cn { color: #8f5902; } /* Constant */
69code span.co { color: #5e5e5e; } /* Comment */
70code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */
71code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */
72code span.dt { color: #ad0000; } /* DataType */
73code span.dv { color: #ad0000; } /* DecVal */
74code span.er { color: #ad0000; } /* Error */
75code span.ex { } /* Extension */
76code span.fl { color: #ad0000; } /* Float */
77code span.fu { color: #4758ab; } /* Function */
78code span.im { } /* Import */
79code span.in { color: #5e5e5e; } /* Information */
80code span.kw { color: #00769e; } /* Keyword */
81code span.op { color: #5e5e5e; } /* Operator */
82code span.ot { color: #00769e; } /* Other */
83code span.pp { color: #ad0000; } /* Preprocessor */
84code span.sc { color: #5e5e5e; } /* SpecialChar */
85code span.ss { color: #20794d; } /* SpecialString */
86code span.st { color: #20794d; } /* String */
87code span.va { color: #111111; } /* Variable */
88code span.vs { color: #20794d; } /* VerbatimString */
89code span.wa { color: #5e5e5e; font-style: italic; } /* Warning */
90</style>
91
92
93  <!--radix_placeholder_meta_tags-->
94  <title>Euge: About</title>
95
96  <meta property="description" itemprop="description" content=""/>
97
98  <link rel="license" href="https://creativecommons.org/licenses/by/4.0/"/>
99  <link rel="icon" type="image/vnd.microsoft.icon" href="images/favicon.ico"/>
100
101
102  <!--  https://developers.facebook.com/docs/sharing/webmasters#markup -->
103  <meta property="og:title" content="Euge: About"/>
104  <meta property="og:type" content="article"/>
105  <meta property="og:description" content=""/>
106  <meta property="og:locale" content="en_US"/>
107  <meta property="og:site_name" content="Euge"/>
108
109  <!--  https://dev.twitter.com/cards/types/summary -->
110  <meta property="twitter:card" content="summary"/>
111  <meta property="twitter:title" content="Euge: About"/>
112  <meta property="twitter:description" content=""/>
113  <meta property="twitter:site" content="@eugene100hickey"/>
114
115  <!--/radix_placeholder_meta_tags-->
116  <!--radix_placeholder_rmarkdown_metadata-->
117
118  
118<script type="text/json" id="radix-rmarkdown-metadata">
119  {"type":"list","attributes":{"names":{"type":"character","attributes":{},"value":["title","description"]}},"value":[{"type":"character","attributes":{},"value":["About"]},{"type":"character","attributes":{},"value":[""]}]}
120  </script>
120
121  <!--/radix_placeholder_rmarkdown_metadata-->
122  <!--radix_placeholder_navigation_in_header-->
123  <meta name="distill:offset" content=""/>
124
125  
125<script type="application/javascript">
126
127    window.headroom_prevent_pin = false;
128
129    window.document.addEventListener("DOMContentLoaded", function (event) {
130
131      // initialize headroom for banner
132      var header = $('header').get(0);
133      var headerHeight = header.offsetHeight;
134      var headroom = new Headroom(header, {
135        tolerance: 5,
136        onPin : function() {
137          if (window.headroom_prevent_pin) {
138            window.headroom_prevent_pin = false;
139            headroom.unpin();
140          }
141        }
142      });
143      headroom.init();
144      if(window.location.hash)
145        headroom.unpin();
146      $(header).addClass('headroom--transition');
147
148      // offset scroll location for banner on hash change
149      // (see: https://github.com/WickyNilliams/headroom.js/issues/38)
150      window.addEventListener("hashchange", function(event) {
151        window.scrollTo(0, window.pageYOffset - (headerHeight + 25));
152      });
153
154      // responsive menu
155      $('.distill-site-header').each(function(i, val) {
156        var topnav = $(this);
157        var toggle = topnav.find('.nav-toggle');
158        toggle.on('click', function() {
159          topnav.toggleClass('responsive');
160        });
161      });
162
163      // nav dropdowns
164      $('.nav-dropbtn').click(function(e) {
165        $(this).next('.nav-dropdown-content').toggleClass('nav-dropdown-active');
166        $(this).parent().siblings('.nav-dropdown')
167           .children('.nav-dropdown-content').removeClass('nav-dropdown-active');
168      });
169      $("body").click(function(e){
170        $('.nav-dropdown-content').removeClass('nav-dropdown-active');
171      });
172      $(".nav-dropdown").click(function(e){
173        e.stopPropagation();
174      });
175    });
176  </script>
176
177
178  <style type="text/css">
179
180  /* Theme (user-documented overrideables for nav appearance) */
181
182  .distill-site-nav {
183    color: rgba(255, 255, 255, 0.8);
184    background-color: #0F2E3D;
185    font-size: 15px;
186    font-weight: 300;
187  }
188
189  .distill-site-nav a {
190    color: inherit;
191    text-decoration: none;
192  }
193
194  .distill-site-nav a:hover {
195    color: white;
196  }
197
198  @media print {
199    .distill-site-nav {
200      display: none;
201    }
202  }
203
204  .distill-site-header {
205
206  }
207
208  .distill-site-footer {
209
210  }
211
212
213  /* Site Header */
214
215  .distill-site-header {
216    width: 100%;
217    box-sizing: border-box;
218    z-index: 3;
219  }
220
221  .distill-site-header .nav-left {
222    display: inline-block;
223    margin-left: 8px;
224  }
225
226  @media screen and (max-width: 768px) {
227    .distill-site-header .nav-left {
228      margin-left: 0;
229    }
230  }
231
232
233  .distill-site-header .nav-right {
234    float: right;
235    margin-right: 8px;
236  }
237
238  .distill-site-header a,
239  .distill-site-header .title {
240    display: inline-block;
241    text-align: center;
242    padding: 14px 10px 14px 10px;
243  }
244
245  .distill-site-header .title {
246    font-size: 18px;
247    min-width: 150px;
248  }
249
250  .distill-site-header .logo {
251    padding: 0;
252  }
253
254  .distill-site-header .logo img {
255    display: none;
256    max-height: 20px;
257    width: auto;
258    margin-bottom: -4px;
259  }
260
261  .distill-site-header .nav-image img {
262    max-height: 18px;
263    width: auto;
264    display: inline-block;
265    margin-bottom: -3px;
266  }
267
268
269
270  @media screen and (min-width: 1000px) {
271    .distill-site-header .logo img {
272      display: inline-block;
273    }
274    .distill-site-header .nav-left {
275      margin-left: 20px;
276    }
277    .distill-site-header .nav-right {
278      margin-right: 20px;
279    }
280    .distill-site-header .title {
281      padding-left: 12px;
282    }
283  }
284
285
286  .distill-site-header .nav-toggle {
287    display: none;
288  }
289
290  .nav-dropdown {
291    display: inline-block;
292    position: relative;
293  }
294
295  .nav-dropdown .nav-dropbtn {
296    border: none;
297    outline: none;
298    color: rgba(255, 255, 255, 0.8);
299    padding: 16px 10px;
300    background-color: transparent;
301    font-family: inherit;
302    font-size: inherit;
303    font-weight: inherit;
304    margin: 0;
305    margin-top: 1px;
306    z-index: 2;
307  }
308
309  .nav-dropdown-content {
310    display: none;
311    position: absolute;
312    background-color: white;
313    min-width: 200px;
314    border: 1px solid rgba(0,0,0,0.15);
315    border-radius: 4px;
316    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1);
317    z-index: 1;
318    margin-top: 2px;
319    white-space: nowrap;
320    padding-top: 4px;
321    padding-bottom: 4px;
322  }
323
324  .nav-dropdown-content hr {
325    margin-top: 4px;
326    margin-bottom: 4px;
327    border: none;
328    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
329  }
330
331  .nav-dropdown-active {
332    display: block;
333  }
334
335  .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header {
336    color: black;
337    padding: 6px 24px;
338    text-decoration: none;
339    display: block;
340    text-align: left;
341  }
342
343  .nav-dropdown-content .nav-dropdown-header {
344    display: block;
345    padding: 5px 24px;
346    padding-bottom: 0;
347    text-transform: uppercase;
348    font-size: 14px;
349    color: #999999;
350    white-space: nowrap;
351  }
352
353  .nav-dropdown:hover .nav-dropbtn {
354    color: white;
355  }
356
357  .nav-dropdown-content a:hover {
358    background-color: #ddd;
359    color: black;
360  }
361
362  .nav-right .nav-dropdown-content {
363    margin-left: -45%;
364    right: 0;
365  }
366
367  @media screen and (max-width: 768px) {
368    .distill-site-header a, .distill-site-header .nav-dropdown  {display: none;}
369    .distill-site-header a.nav-toggle {
370      float: right;
371      display: block;
372    }
373    .distill-site-header .title {
374      margin-left: 0;
375    }
376    .distill-site-header .nav-right {
377      margin-right: 0;
378    }
379    .distill-site-header {
380      overflow: hidden;
381    }
382    .nav-right .nav-dropdown-content {
383      margin-left: 0;
384    }
385  }
386
387
388  @media screen and (max-width: 768px) {
389    .distill-site-header.responsive {position: relative; min-height: 500px; }
390    .distill-site-header.responsive a.nav-toggle {
391      position: absolute;
392      right: 0;
393      top: 0;
394    }
395    .distill-site-header.responsive a,
396    .distill-site-header.responsive .nav-dropdown {
397      display: block;
398      text-align: left;
399    }
400    .distill-site-header.responsive .nav-left,
401    .distill-site-header.responsive .nav-right {
402      width: 100%;
403    }
404    .distill-site-header.responsive .nav-dropdown {float: none;}
405    .distill-site-header.responsive .nav-dropdown-content {position: relative;}
406    .distill-site-header.responsive .nav-dropdown .nav-dropbtn {
407      display: block;
408      width: 100%;
409      text-align: left;
410    }
411  }
412
413  /* Site Footer */
414
415  .distill-site-footer {
416    width: 100%;
417    overflow: hidden;
418    box-sizing: border-box;
419    z-index: 3;
420    margin-top: 30px;
421    padding-top: 30px;
422    padding-bottom: 30px;
423    text-align: center;
424  }
425
426  /* Headroom */
427
428  d-title {
429    padding-top: 6rem;
430  }
431
432  @media print {
433    d-title {
434      padding-top: 4rem;
435    }
436  }
437
438  .headroom {
439    z-index: 1000;
440    position: fixed;
441    top: 0;
442    left: 0;
443    right: 0;
444  }
445
446  .headroom--transition {
447    transition: all .4s ease-in-out;
448  }
449
450  .headroom--unpinned {
451    top: -100px;
452  }
453
454  .headroom--pinned {
455    top: 0;
456  }
457
458  /* adjust viewport for navbar height */
459  /* helps vertically center bootstrap (non-distill) content */
460  .min-vh-100 {
461    min-height: calc(100vh - 100px) !important;
462  }
463
464  </style>
465
466  
466<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
466
467  <link href="site_libs/font-awesome-6.5.2/css/all.min.css" rel="stylesheet"/>
468  <link href="site_libs/font-awesome-6.5.2/css/v4-shims.min.css" rel="stylesheet"/>
469  
469<script src="site_libs/headroom-0.9.4/headroom.min.js"></script>
469
470  
470<script src="site_libs/autocomplete-0.37.1/autocomplete.min.js"></script>
470
471  
471<script src="site_libs/fuse-6.4.1/fuse.min.js"></script>
471
472
473  
473<script type="application/javascript">
474
475  function getMeta(metaName) {
476    var metas = document.getElementsByTagName('meta');
477    for (let i = 0; i < metas.length; i++) {
478      if (metas[i].getAttribute('name') === metaName) {
479        return metas[i].getAttribute('content');
480      }
481    }
482    return '';
483  }
484
485  function offsetURL(url) {
486    var offset = getMeta('distill:offset');
487    return offset ? offset + '/' + url : url;
488  }
489
490  function createFuseIndex() {
491
492    // create fuse index
493    var options = {
494      keys: [
495        { name: 'title', weight: 20 },
496        { name: 'categories', weight: 15 },
497        { name: 'description', weight: 10 },
498        { name: 'contents', weight: 5 },
499      ],
500      ignoreLocation: true,
501      threshold: 0
502    };
503    var fuse = new window.Fuse([], options);
504
505    // fetch the main search.json
506    return fetch(offsetURL('search.json'))
507      .then(function(response) {
508        if (response.status == 200) {
509          return response.json().then(function(json) {
510            // index main articles
511            json.articles.forEach(function(article) {
512              fuse.add(article);
513            });
514            // download collections and index their articles
515            return Promise.all(json.collections.map(function(collection) {
516              return fetch(offsetURL(collection)).then(function(response) {
517                if (response.status === 200) {
518                  return response.json().then(function(articles) {
519                    articles.forEach(function(article) {
520                      fuse.add(article);
521                    });
522                  })
523                } else {
524                  return Promise.reject(
525                    new Error('Unexpected status from search index request: ' +
526                              response.status)
527                  );
528                }
529              });
530            })).then(function() {
531              return fuse;
532            });
533          });
534
535        } else {
536          return Promise.reject(
537            new Error('Unexpected status from search index request: ' +
538                        response.status)
539          );
540        }
541      });
542  }
543
544  window.document.addEventListener("DOMContentLoaded", function (event) {
545
546    // get search element (bail if we don't have one)
547    var searchEl = window.document.getElementById('distill-search');
548    if (!searchEl)
549      return;
550
551    createFuseIndex()
552      .then(function(fuse) {
553
554        // make search box visible
555        searchEl.classList.remove('hidden');
556
557        // initialize autocomplete
558        var options = {
559          autoselect: true,
560          hint: false,
561          minLength: 2,
562        };
563        window.autocomplete(searchEl, options, [{
564          source: function(query, callback) {
565            const searchOptions = {
566              isCaseSensitive: false,
567              shouldSort: true,
568              minMatchCharLength: 2,
569              limit: 10,
570            };
571            var results = fuse.search(query, searchOptions);
572            callback(results
573              .map(function(result) { return result.item; })
574            );
575          },
576          templates: {
577            suggestion: function(suggestion) {
578              var img = suggestion.preview && Object.keys(suggestion.preview).length > 0
579                ? `<img src="${offsetURL(suggestion.preview)}"</img>`
580                : '';
581              var html = `
582                <div class="search-item">
583                  <h3>${suggestion.title}</h3>
584                  <div class="search-item-description">
585                    ${suggestion.description || ''}
586                  </div>
587                  <div class="search-item-preview">
588                    ${img}
589                  </div>
590                </div>
591              `;
592              return html;
593            }
594          }
595        }]).on('autocomplete:selected', function(event, suggestion) {
596          window.location.href = offsetURL(suggestion.path);
597        });
598        // remove inline display style on autocompleter (we want to
599        // manage responsive display via css)
600        $('.algolia-autocomplete').css("display", "");
601      })
602      .catch(function(error) {
603        console.log(error);
604      });
605
606  });
607
608  </script>
608
609
610  <style type="text/css">
611
612  .nav-search {
613    font-size: x-small;
614  }
615
616  /* Algolioa Autocomplete */
617
618  .algolia-autocomplete {
619    display: inline-block;
620    margin-left: 10px;
621    vertical-align: sub;
622    background-color: white;
623    color: black;
624    padding: 6px;
625    padding-top: 8px;
626    padding-bottom: 0;
627    border-radius: 6px;
628    border: 1px #0F2E3D solid;
629    width: 180px;
630  }
631
632
633  @media screen and (max-width: 768px) {
634    .distill-site-nav .algolia-autocomplete {
635      display: none;
636      visibility: hidden;
637    }
638    .distill-site-nav.responsive .algolia-autocomplete {
639      display: inline-block;
640      visibility: visible;
641    }
642    .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu {
643      margin-left: 0;
644      width: 400px;
645      max-height: 400px;
646    }
647  }
648
649  .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint {
650    width: 90%;
651    outline: none;
652    border: none;
653  }
654
655  .algolia-autocomplete .aa-hint {
656    color: #999;
657  }
658  .algolia-autocomplete .aa-dropdown-menu {
659    width: 550px;
660    max-height: 70vh;
661    overflow-x: visible;
662    overflow-y: scroll;
663    padding: 5px;
664    margin-top: 3px;
665    margin-left: -150px;
666    background-color: #fff;
667    border-radius: 5px;
668    border: 1px solid #999;
669    border-top: none;
670  }
671
672  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion {
673    cursor: pointer;
674    padding: 5px 4px;
675    border-bottom: 1px solid #eee;
676  }
677
678  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type {
679    border-bottom: none;
680    margin-bottom: 2px;
681  }
682
683  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item {
684    overflow: hidden;
685    font-size: 0.8em;
686    line-height: 1.4em;
687  }
688
689  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 {
690    font-size: 1rem;
691    margin-block-start: 0;
692    margin-block-end: 5px;
693  }
694
695  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description {
696    display: inline-block;
697    overflow: hidden;
698    height: 2.8em;
699    width: 80%;
700    margin-right: 4%;
701  }
702
703  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview {
704    display: inline-block;
705    width: 15%;
706  }
707
708  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img {
709    height: 3em;
710    width: auto;
711    display: none;
712  }
713
714  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img[src] {
715    display: initial;
716  }
717
718  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor {
719    background-color: #eee;
720  }
721  .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em {
722    font-weight: bold;
723    font-style: normal;
724  }
725
726  </style>
727
728
729  <!--/radix_placeholder_navigation_in_header-->
730  <!--radix_placeholder_distill-->
731
732  <style type="text/css">
733
734  body {
735    background-color: white;
736  }
737
738  .pandoc-table {
739    width: 100%;
740  }
741
742  .pandoc-table>caption {
743    margin-bottom: 10px;
744  }
745
746  .pandoc-table th:not([align]) {
747    text-align: left;
748  }
749
750  .pagedtable-footer {
751    font-size: 15px;
752  }
753
754  d-byline .byline {
755    grid-template-columns: 2fr 2fr;
756  }
757
758  d-byline .byline h3 {
759    margin-block-start: 1.5em;
760  }
761
762  d-byline .byline .authors-affiliations h3 {
763    margin-block-start: 0.5em;
764  }
765
766  .authors-affiliations .orcid-id {
767    width: 16px;
768    height:16px;
769    margin-left: 4px;
770    margin-right: 4px;
771    vertical-align: middle;
772    padding-bottom: 2px;
773  }
774
775  d-title .dt-tags {
776    margin-top: 1em;
777    grid-column: text;
778  }
779
780  .dt-tags .dt-tag {
781    text-decoration: none;
782    display: inline-block;
783    color: rgba(0,0,0,0.6);
784    padding: 0em 0.4em;
785    margin-right: 0.5em;
786    margin-bottom: 0.4em;
787    font-size: 70%;
788    border: 1px solid rgba(0,0,0,0.2);
789    border-radius: 3px;
790    text-transform: uppercase;
791    font-weight: 500;
792  }
793
794  d-article table.gt_table td,
795  d-article table.gt_table th {
796    border-bottom: none;
797    font-size: 100%;
798  }
799
800  .html-widget {
801    margin-bottom: 2.0em;
802  }
803
804  .l-screen-inset {
805    padding-right: 16px;
806  }
807
808  .l-screen .caption {
809    margin-left: 10px;
810  }
811
812  .shaded {
813    background: rgb(247, 247, 247);
814    padding-top: 20px;
815    padding-bottom: 20px;
816    border-top: 1px solid rgba(0, 0, 0, 0.1);
817    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
818  }
819
820  .shaded .html-widget {
821    margin-bottom: 0;
822    border: 1px solid rgba(0, 0, 0, 0.1);
823  }
824
825  .shaded .shaded-content {
826    background: white;
827  }
828
829  .text-output {
830    margin-top: 0;
831    line-height: 1.5em;
832  }
833
834  .hidden {
835    display: none !important;
836  }
837
838  hr.section-separator {
839    border: none;
840    border-top: 1px solid rgba(0, 0, 0, 0.1);
841    margin: 0px;
842  }
843
844
845  d-byline {
846    border-top: none;
847  }
848
849  d-article {
850    padding-top: 2.5rem;
851    padding-bottom: 30px;
852    border-top: none;
853  }
854
855  d-appendix {
856    padding-top: 30px;
857  }
858
859  d-article>p>img {
860    width: 100%;
861  }
862
863  d-article h2 {
864    margin: 1rem 0 1.5rem 0;
865  }
866
867  d-article h3 {
868    margin-top: 1.5rem;
869  }
870
871  d-article iframe {
872    border: 1px solid rgba(0, 0, 0, 0.1);
873    margin-bottom: 2.0em;
874    width: 100%;
875  }
876
877  /* Tweak code blocks */
878
879  d-article div.sourceCode code,
880  d-article pre code {
881    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
882  }
883
884  d-article pre,
885  d-article div.sourceCode,
886  d-article div.sourceCode pre {
887    overflow: auto;
888  }
889
890  d-article div.sourceCode {
891    background-color: white;
892  }
893
894  d-article div.sourceCode pre {
895    padding-left: 10px;
896    font-size: 12px;
897    border-left: 2px solid rgba(0,0,0,0.1);
898  }
899
900  d-article pre {
901    font-size: 12px;
902    color: black;
903    background: none;
904    margin-top: 0;
905    text-align: left;
906    white-space: pre;
907    word-spacing: normal;
908    word-break: normal;
909    word-wrap: normal;
910    line-height: 1.5;
911
912    -moz-tab-size: 4;
913    -o-tab-size: 4;
914    tab-size: 4;
915
916    -webkit-hyphens: none;
917    -moz-hyphens: none;
918    -ms-hyphens: none;
919    hyphens: none;
920  }
921
922  d-article pre a {
923    border-bottom: none;
924  }
925
926  d-article pre a:hover {
927    border-bottom: none;
928    text-decoration: underline;
929  }
930
931  d-article details {
932    grid-column: text;
933    margin-bottom: 0.8em;
934  }
935
936  @media(min-width: 768px) {
937
938  d-article pre,
939  d-article div.sourceCode,
940  d-article div.sourceCode pre {
941    overflow: visible !important;
942  }
943
944  d-article div.sourceCode pre {
945    padding-left: 18px;
946    font-size: 14px;
947  }
948
949  /* tweak for Pandoc numbered line within distill */
950  d-article pre.numberSource code > span {
951      left: -2em;
952  }
953
954  d-article pre {
955    font-size: 14px;
956  }
957
958  }
959
960  figure img.external {
961    background: white;
962    border: 1px solid rgba(0, 0, 0, 0.1);
963    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
964    padding: 18px;
965    box-sizing: border-box;
966  }
967
968  /* CSS for d-contents */
969
970  .d-contents {
971    grid-column: text;
972    color: rgba(0,0,0,0.8);
973    font-size: 0.9em;
974    padding-bottom: 1em;
975    margin-bottom: 1em;
976    padding-bottom: 0.5em;
977    margin-bottom: 1em;
978    padding-left: 0.25em;
979    justify-self: start;
980  }
981
982  @media(min-width: 1000px) {
983    .d-contents.d-contents-float {
984      height: 0;
985      grid-column-start: 1;
986      grid-column-end: 4;
987      justify-self: center;
988      padding-right: 3em;
989      padding-left: 2em;
990    }
991  }
992
993  .d-contents nav h3 {
994    font-size: 18px;
995    margin-top: 0;
996    margin-bottom: 1em;
997  }
998
999  .d-contents li {
1000    list-style-type: none
1001  }
1002
1003  .d-contents nav > ul {
1004    padding-left: 0;
1005  }
1006
1007  .d-contents ul {
1008    padding-left: 1em
1009  }
1010
1011  .d-contents nav ul li {
1012    margin-top: 0.6em;
1013    margin-bottom: 0.2em;
1014  }
1015
1016  .d-contents nav a {
1017    font-size: 13px;
1018    border-bottom: none;
1019    text-decoration: none
1020    color: rgba(0, 0, 0, 0.8);
1021  }
1022
1023  .d-contents nav a:hover {
1024    text-decoration: underline solid rgba(0, 0, 0, 0.6)
1025  }
1026
1027  .d-contents nav > ul > li > a {
1028    font-weight: 600;
1029  }
1030
1031  .d-contents nav > ul > li > ul {
1032    font-weight: inherit;
1033  }
1034
1035  .d-contents nav > ul > li > ul > li {
1036    margin-top: 0.2em;
1037  }
1038
1039
1040  .d-contents nav ul {
1041    margin-top: 0;
1042    margin-bottom: 0.25em;
1043  }
1044
1045  .d-article-with-toc h2:nth-child(2) {
1046    margin-top: 0;
1047  }
1048
1049
1050  /* Figure */
1051
1052  .figure {
1053    position: relative;
1054    margin-bottom: 2.5em;
1055    margin-top: 1.5em;
1056  }
1057
1058  .figure .caption {
1059    color: rgba(0, 0, 0, 0.6);
1060    font-size: 12px;
1061    line-height: 1.5em;
1062  }
1063
1064  .figure img.external {
1065    background: white;
1066    border: 1px solid rgba(0, 0, 0, 0.1);
1067    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);
1068    padding: 18px;
1069    box-sizing: border-box;
1070  }
1071
1072  .figure .caption a {
1073    color: rgba(0, 0, 0, 0.6);
1074  }
1075
1076  .figure .caption b,
1077  .figure .caption strong, {
1078    font-weight: 600;
1079    color: rgba(0, 0, 0, 1.0);
1080  }
1081
1082  /* Citations */
1083
1084  d-article .citation {
1085    color: inherit;
1086    cursor: inherit;
1087  }
1088
1089  div.hanging-indent{
1090    margin-left: 1em; text-indent: -1em;
1091  }
1092
1093  /* Citation hover box */
1094
1095  .tippy-box[data-theme~=light-border] {
1096    background-color: rgba(250, 250, 250, 0.95);
1097  }
1098
1099  .tippy-content > p {
1100    margin-bottom: 0;
1101    padding: 2px;
1102  }
1103
1104
1105  /* Tweak 1000px media break to show more text */
1106
1107  @media(min-width: 1000px) {
1108    .base-grid,
1109    distill-header,
1110    d-title,
1111    d-abstract,
1112    d-article,
1113    d-appendix,
1114    distill-appendix,
1115    d-byline,
1116    d-footnote-list,
1117    d-citation-list,
1118    distill-footer {
1119      grid-template-columns: [screen-start] 1fr [page-start kicker-start] 80px [middle-start] 50px [text-start kicker-end] 65px 65px 65px 65px 65px 65px 65px 65px [text-end gutter-start] 65px [middle-end] 65px [page-end gutter-end] 1fr [screen-end];
1120      grid-column-gap: 16px;
1121    }
1122
1123    .grid {
1124      grid-column-gap: 16px;
1125    }
1126
1127    d-article {
1128      font-size: 1.06rem;
1129      line-height: 1.7em;
1130    }
1131    figure .caption, .figure .caption, figure figcaption {
1132      font-size: 13px;
1133    }
1134  }
1135
1136  @media(min-width: 1180px) {
1137    .base-grid,
1138    distill-header,
1139    d-title,
1140    d-abstract,
1141    d-article,
1142    d-appendix,
1143    distill-appendix,
1144    d-byline,
1145    d-footnote-list,
1146    d-citation-list,
1147    distill-footer {
1148      grid-template-columns: [screen-start] 1fr [page-start kicker-start] 60px [middle-start] 60px [text-start kicker-end] 60px 60px 60px 60px 60px 60px 60px 60px [text-end gutter-start] 60px [middle-end] 60px [page-end gutter-end] 1fr [screen-end];
1149      grid-column-gap: 32px;
1150    }
1151
1152    .grid {
1153      grid-column-gap: 32px;
1154    }
1155  }
1156
1157
1158  /* Get the citation styles for the appendix (not auto-injected on render since
1159     we do our own rendering of the citation appendix) */
1160
1161  d-appendix .citation-appendix,
1162  .d-appendix .citation-appendix {
1163    font-size: 11px;
1164    line-height: 15px;
1165    border-left: 1px solid rgba(0, 0, 0, 0.1);
1166    padding-left: 18px;
1167    border: 1px solid rgba(0,0,0,0.1);
1168    background: rgba(0, 0, 0, 0.02);
1169    padding: 10px 18px;
1170    border-radius: 3px;
1171    color: rgba(150, 150, 150, 1);
1172    overflow: hidden;
1173    margin-top: -12px;
1174    white-space: pre-wrap;
1175    word-wrap: break-word;
1176  }
1177
1178  /* Include appendix styles here so they can be overridden */
1179
1180  d-appendix {
1181    contain: layout style;
1182    font-size: 0.8em;
1183    line-height: 1.7em;
1184    margin-top: 60px;
1185    margin-bottom: 0;
1186    border-top: 1px solid rgba(0, 0, 0, 0.1);
1187    color: rgba(0,0,0,0.5);
1188    padding-top: 60px;
1189    padding-bottom: 48px;
1190  }
1191
1192  d-appendix h3 {
1193    grid-column: page-start / text-start;
1194    font-size: 15px;
1195    font-weight: 500;
1196    margin-top: 1em;
1197    margin-bottom: 0;
1198    color: rgba(0,0,0,0.65);
1199  }
1200
1201  d-appendix h3 + * {
1202    margin-top: 1em;
1203  }
1204
1205  d-appendix ol {
1206    padding: 0 0 0 15px;
1207  }
1208
1209  @media (min-width: 768px) {
1210    d-appendix ol {
1211      padding: 0 0 0 30px;
1212      margin-left: -30px;
1213    }
1214  }
1215
1216  d-appendix li {
1217    margin-bottom: 1em;
1218  }
1219
1220  d-appendix a {
1221    color: rgba(0, 0, 0, 0.6);
1222  }
1223
1224  d-appendix > * {
1225    grid-column: text;
1226  }
1227
1228  d-appendix > d-footnote-list,
1229  d-appendix > d-citation-list,
1230  d-appendix > distill-appendix {
1231    grid-column: screen;
1232  }
1233
1234  /* Include footnote styles here so they can be overridden */
1235
1236  d-footnote-list {
1237    contain: layout style;
1238  }
1239
1240  d-footnote-list > * {
1241    grid-column: text;
1242  }
1243
1244  d-footnote-list a.footnote-backlink {
1245    color: rgba(0,0,0,0.3);
1246    padding-left: 0.5em;
1247  }
1248
1249
1250
1251  /* Anchor.js */
1252
1253  .anchorjs-link {
1254    /*transition: all .25s linear; */
1255    text-decoration: none;
1256    border-bottom: none;
1257  }
1258  *:hover > .anchorjs-link {
1259    margin-left: -1.125em !important;
1260    text-decoration: none;
1261    border-bottom: none;
1262  }
1263
1264  /* Social footer */
1265
1266  .social_footer {
1267    margin-top: 30px;
1268    margin-bottom: 0;
1269    color: rgba(0,0,0,0.67);
1270  }
1271
1272  .disqus-comments {
1273    margin-right: 30px;
1274  }
1275
1276  .disqus-comment-count {
1277    border-bottom: 1px solid rgba(0, 0, 0, 0.4);
1278    cursor: pointer;
1279  }
1280
1281  #disqus_thread {
1282    margin-top: 30px;
1283  }
1284
1285  .article-sharing a {
1286    border-bottom: none;
1287    margin-right: 8px;
1288  }
1289
1290  .article-sharing a:hover {
1291    border-bottom: none;
1292  }
1293
1294  .sidebar-section.subscribe {
1295    font-size: 12px;
1296    line-height: 1.6em;
1297  }
1298
1299  .subscribe p {
1300    margin-bottom: 0.5em;
1301  }
1302
1303
1304  .article-footer .subscribe {
1305    font-size: 15px;
1306    margin-top: 45px;
1307  }
1308
1309
1310  .sidebar-section.custom {
1311    font-size: 12px;
1312    line-height: 1.6em;
1313  }
1314
1315  .custom p {
1316    margin-bottom: 0.5em;
1317  }
1318
1319  /* Styles for listing layout (hide title) */
1320  .layout-listing d-title, .layout-listing .d-title {
1321    display: none;
1322  }
1323
1324  /* Styles for posts lists (not auto-injected) */
1325
1326
1327  .posts-with-sidebar {
1328    padding-left: 45px;
1329    padding-right: 45px;
1330  }
1331
1332  .posts-list .description h2,
1333  .posts-list .description p {
1334    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
1335  }
1336
1337  .posts-list .description h2 {
1338    font-weight: 700;
1339    border-bottom: none;
1340    padding-bottom: 0;
1341  }
1342
1343  .posts-list h2.post-tag {
1344    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
1345    padding-bottom: 12px;
1346  }
1347  .posts-list {
1348    margin-top: 60px;
1349    margin-bottom: 24px;
1350  }
1351
1352  .posts-list .post-preview {
1353    text-decoration: none;
1354    overflow: hidden;
1355    display: block;
1356    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
1357    padding: 24px 0;
1358  }
1359
1360  .post-preview-last {
1361    border-bottom: none !important;
1362  }
1363
1364  .posts-list .posts-list-caption {
1365    grid-column: screen;
1366    font-weight: 400;
1367  }
1368
1369  .posts-list .post-preview h2 {
1370    margin: 0 0 6px 0;
1371    line-height: 1.2em;
1372    font-style: normal;
1373    font-size: 24px;
1374  }
1375
1376  .posts-list .post-preview p {
1377    margin: 0 0 12px 0;
1378    line-height: 1.4em;
1379    font-size: 16px;
1380  }
1381
1382  .posts-list .post-preview .thumbnail {
1383    box-sizing: border-box;
1384    margin-bottom: 24px;
1385    position: relative;
1386    max-width: 500px;
1387  }
1388  .posts-list .post-preview img {
1389    width: 100%;
1390    display: block;
1391  }
1392
1393  .posts-list .metadata {
1394    font-size: 12px;
1395    line-height: 1.4em;
1396    margin-bottom: 18px;
1397  }
1398
1399  .posts-list .metadata > * {
1400    display: inline-block;
1401  }
1402
1403  .posts-list .metadata .publishedDate {
1404    margin-right: 2em;
1405  }
1406
1407  .posts-list .metadata .dt-authors {
1408    display: block;
1409    margin-top: 0.3em;
1410    margin-right: 2em;
1411  }
1412
1413  .posts-list .dt-tags {
1414    display: block;
1415    line-height: 1em;
1416  }
1417
1418  .posts-list .dt-tags .dt-tag {
1419    display: inline-block;
1420    color: rgba(0,0,0,0.6);
1421    padding: 0.3em 0.4em;
1422    margin-right: 0.2em;
1423    margin-bottom: 0.4em;
1424    font-size: 60%;
1425    border: 1px solid rgba(0,0,0,0.2);
1426    border-radius: 3px;
1427    text-transform: uppercase;
1428    font-weight: 500;
1429  }
1430
1431  .posts-list img {
1432    opacity: 1;
1433  }
1434
1435  .posts-list img[data-src] {
1436    opacity: 0;
1437  }
1438
1439  .posts-more {
1440    clear: both;
1441  }
1442
1443
1444  .posts-sidebar {
1445    font-size: 16px;
1446  }
1447
1448  .posts-sidebar h3 {
1449    font-size: 16px;
1450    margin-top: 0;
1451    margin-bottom: 0.5em;
1452    font-weight: 400;
1453    text-transform: uppercase;
1454  }
1455
1456  .sidebar-section {
1457    margin-bottom: 30px;
1458  }
1459
1460  .categories ul {
1461    list-style-type: none;
1462    margin: 0;
1463    padding: 0;
1464  }
1465
1466  .categories li {
1467    color: rgba(0, 0, 0, 0.8);
1468    margin-bottom: 0;
1469  }
1470
1471  .categories li>a {
1472    border-bottom: none;
1473  }
1474
1475  .categories li>a:hover {
1476    border-bottom: 1px solid rgba(0, 0, 0, 0.4);
1477  }
1478
1479  .categories .active {
1480    font-weight: 600;
1481  }
1482
1483  .categories .category-count {
1484    color: rgba(0, 0, 0, 0.4);
1485  }
1486
1487
1488  @media(min-width: 768px) {
1489    .posts-list .post-preview h2 {
1490      font-size: 26px;
1491    }
1492    .posts-list .post-preview .thumbnail {
1493      float: right;
1494      width: 30%;
1495      margin-bottom: 0;
1496    }
1497    .posts-list .post-preview .description {
1498      float: left;
1499      width: 45%;
1500    }
1501    .posts-list .post-preview .metadata {
1502      float: left;
1503      width: 20%;
1504      margin-top: 8px;
1505    }
1506    .posts-list .post-preview p {
1507      margin: 0 0 12px 0;
1508      line-height: 1.5em;
1509      font-size: 16px;
1510    }
1511    .posts-with-sidebar .posts-list {
1512      float: left;
1513      width: 75%;
1514    }
1515    .posts-with-sidebar .posts-sidebar {
1516      float: right;
1517      width: 20%;
1518      margin-top: 60px;
1519      padding-top: 24px;
1520      padding-bottom: 24px;
1521    }
1522  }
1523
1524
1525  /* Improve display for browsers without grid (IE/Edge <= 15) */
1526
1527  .downlevel {
1528    line-height: 1.6em;
1529    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
1530    margin: 0;
1531  }
1532
1533  .downlevel .d-title {
1534    padding-top: 6rem;
1535    padding-bottom: 1.5rem;
1536  }
1537
1538  .downlevel .d-title h1 {
1539    font-size: 50px;
1540    font-weight: 700;
1541    line-height: 1.1em;
1542    margin: 0 0 0.5rem;
1543  }
1544
1545  .downlevel .d-title p {
1546    font-weight: 300;
1547    font-size: 1.2rem;
1548    line-height: 1.55em;
1549    margin-top: 0;
1550  }
1551
1552  .downlevel .d-byline {
1553    padding-top: 0.8em;
1554    padding-bottom: 0.8em;
1555    font-size: 0.8rem;
1556    line-height: 1.8em;
1557  }
1558
1559  .downlevel .section-separator {
1560    border: none;
1561    border-top: 1px solid rgba(0, 0, 0, 0.1);
1562  }
1563
1564  .downlevel .d-article {
1565    font-size: 1.06rem;
1566    line-height: 1.7em;
1567    padding-top: 1rem;
1568    padding-bottom: 2rem;
1569  }
1570
1571
1572  .downlevel .d-appendix {
1573    padding-left: 0;
1574    padding-right: 0;
1575    max-width: none;
1576    font-size: 0.8em;
1577    line-height: 1.7em;
1578    margin-bottom: 0;
1579    color: rgba(0,0,0,0.5);
1580    padding-top: 40px;
1581    padding-bottom: 48px;
1582  }
1583
1584  .downlevel .footnotes ol {
1585    padding-left: 13px;
1586  }
1587
1588  .downlevel .base-grid,
1589  .downlevel .distill-header,
1590  .downlevel .d-title,
1591  .downlevel .d-abstract,
1592  .downlevel .d-article,
1593  .downlevel .d-appendix,
1594  .downlevel .distill-appendix,
1595  .downlevel .d-byline,
1596  .downlevel .d-footnote-list,
1597  .downlevel .d-citation-list,
1598  .downlevel .distill-footer,
1599  .downlevel .appendix-bottom,
1600  .downlevel .posts-container {
1601    padding-left: 40px;
1602    padding-right: 40px;
1603  }
1604
1605  @media(min-width: 768px) {
1606    .downlevel .base-grid,
1607    .downlevel .distill-header,
1608    .downlevel .d-title,
1609    .downlevel .d-abstract,
1610    .downlevel .d-article,
1611    .downlevel .d-appendix,
1612    .downlevel .distill-appendix,
1613    .downlevel .d-byline,
1614    .downlevel .d-footnote-list,
1615    .downlevel .d-citation-list,
1616    .downlevel .distill-footer,
1617    .downlevel .appendix-bottom,
1618    .downlevel .posts-container {
1619    padding-left: 150px;
1620    padding-right: 150px;
1621    max-width: 900px;
1622  }
1623  }
1624
1625  .downlevel pre code {
1626    display: block;
1627    border-left: 2px solid rgba(0, 0, 0, .1);
1628    padding: 0 0 0 20px;
1629    font-size: 14px;
1630  }
1631
1632  .downlevel code, .downlevel pre {
1633    color: black;
1634    background: none;
1635    font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
1636    text-align: left;
1637    white-space: pre;
1638    word-spacing: normal;
1639    word-break: normal;
1640    word-wrap: normal;
1641    line-height: 1.5;
1642
1643    -moz-tab-size: 4;
1644    -o-tab-size: 4;
1645    tab-size: 4;
1646
1647    -webkit-hyphens: none;
1648    -moz-hyphens: none;
1649    -ms-hyphens: none;
1650    hyphens: none;
1651  }
1652
1653  .downlevel .posts-list .post-preview {
1654    color: inherit;
1655  }
1656
1657
1658
1659  </style>
1660
1661  
1661<script type="application/javascript">
1662
1663  function is_downlevel_browser() {
1664    if (bowser.isUnsupportedBrowser({ msie: "12", msedge: "16"},
1665                                   window.navigator.userAgent)) {
1666      return true;
1667    } else {
1668      return window.load_distill_framework === undefined;
1669    }
1670  }
1671
1672  // show body when load is complete
1673  function on_load_complete() {
1674
1675    // add anchors
1676    if (window.anchors) {
1677      window.anchors.options.placement = 'left';
1678      window.anchors.add('d-article > h2, d-article > h3, d-article > h4, d-article > h5');
1679    }
1680
1681
1682    // set body to visible
1683    document.body.style.visibility = 'visible';
1684
1685    // force redraw for leaflet widgets
1686    if (window.HTMLWidgets) {
1687      var maps = window.HTMLWidgets.findAll(".leaflet");
1688      $.each(maps, function(i, el) {
1689        var map = this.getMap();
1690        map.invalidateSize();
1691        map.eachLayer(function(layer) {
1692          if (layer instanceof L.TileLayer)
1693            layer.redraw();
1694        });
1695      });
1696    }
1697
1698    // trigger 'shown' so htmlwidgets resize
1699    $('d-article').trigger('shown');
1700  }
1701
1702  function init_distill() {
1703
1704    init_common();
1705
1706    // create front matter
1707    var front_matter = $('<d-front-matter></d-front-matter>');
1708    $('#distill-front-matter').wrap(front_matter);
1709
1710    // create d-title
1711    $('.d-title').changeElementType('d-title');
1712
1713    // separator
1714    var separator = '<hr class="section-separator" style="clear: both"/>';
1715    // prepend separator above appendix
1716    $('.d-byline').before(separator);
1717    $('.d-article').before(separator);
1718
1719    // create d-byline
1720    var byline = $('<d-byline></d-byline>');
1721    $('.d-byline').replaceWith(byline);
1722
1723    // create d-article
1724    var article = $('<d-article></d-article>');
1725    $('.d-article').wrap(article).children().unwrap();
1726
1727    // move posts container into article
1728    $('.posts-container').appendTo($('d-article'));
1729
1730    // create d-appendix
1731    $('.d-appendix').changeElementType('d-appendix');
1732
1733    // flag indicating that we have appendix items
1734    var appendix = $('.appendix-bottom').children('h3').length > 0;
1735
1736    // replace footnotes with <d-footnote>
1737    $('.footnote-ref').each(function(i, val) {
1738      appendix = true;
1739      var href = $(this).attr('href');
1740      var id = href.replace('#', '');
1741      var fn = $('#' + id);
1742      var fn_p = $('#' + id + '>p');
1743      fn_p.find('.footnote-back').remove();
1744      var text = fn_p.html();
1745      var dtfn = $('<d-footnote></d-footnote>');
1746      dtfn.html(text);
1747      $(this).replaceWith(dtfn);
1748    });
1749    // remove footnotes
1750    $('.footnotes').remove();
1751
1752    // move refs into #references-listing
1753    $('#references-listing').replaceWith($('#refs'));
1754
1755    $('h1.appendix, h2.appendix').each(function(i, val) {
1756      $(this).changeElementType('h3');
1757    });
1758    $('h3.appendix').each(function(i, val) {
1759      var id = $(this).attr('id');
1760      $('.d-contents a[href="#' + id + '"]').parent().remove();
1761      appendix = true;
1762      $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('d-appendix'));
1763    });
1764
1765    // show d-appendix if we have appendix content
1766    $("d-appendix").css('display', appendix ? 'grid' : 'none');
1767
1768    // localize layout chunks to just output
1769    $('.layout-chunk').each(function(i, val) {
1770
1771      // capture layout
1772      var layout = $(this).attr('data-layout');
1773
1774      // apply layout to markdown level block elements
1775      var elements = $(this).children().not('details, div.sourceCode, pre, script');
1776      elements.each(function(i, el) {
1777        var layout_div = $('<div class="' + layout + '"></div>');
1778        if (layout_div.hasClass('shaded')) {
1779          var shaded_content = $('<div class="shaded-content"></div>');
1780          $(this).wrap(shaded_content);
1781          $(this).parent().wrap(layout_div);
1782        } else {
1783          $(this).wrap(layout_div);
1784        }
1785      });
1786
1787
1788      // unwrap the layout-chunk div
1789      $(this).children().unwrap();
1790    });
1791
1792    // remove code block used to force  highlighting css
1793    $('.distill-force-highlighting-css').parent().remove();
1794
1795    // remove empty line numbers inserted by pandoc when using a
1796    // custom syntax highlighting theme, except when numbering line
1797    // in code chunk
1798    $('pre:not(.numberLines) code.sourceCode a:empty').remove();
1799
1800    // load distill framework
1801    load_distill_framework();
1802
1803    // wait for window.distillRunlevel == 4 to do post processing
1804    function distill_post_process() {
1805
1806      if (!window.distillRunlevel || window.distillRunlevel < 4)
1807        return;
1808
1809      // hide author/affiliations entirely if we have no authors
1810      var front_matter = JSON.parse($("#distill-front-matter").html());
1811      var have_authors = front_matter.authors && front_matter.authors.length > 0;
1812      if (!have_authors)
1813        $('d-byline').addClass('hidden');
1814
1815      // article with toc class
1816      $('.d-contents').parent().addClass('d-article-with-toc');
1817
1818      // strip links that point to #
1819      $('.authors-affiliations').find('a[href="#"]').removeAttr('href');
1820
1821      // add orcid ids
1822      $('.authors-affiliations').find('.author').each(function(i, el) {
1823        var orcid_id = front_matter.authors[i].orcidID;
1824        var author_name = front_matter.authors[i].author
1825        if (orcid_id) {
1826          var a = $('<a></a>');
1827          a.attr('href', 'https://orcid.org/' + orcid_id);
1828          var img = $('<img></img>');
1829          img.addClass('orcid-id');
1830          img.attr('alt', author_name ? 'ORCID ID for ' + author_name : 'ORCID ID');
1831          img.attr('src','data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1N0NEMjA4MDI1MjA2ODExOTk0QzkzNTEzRjZEQTg1NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozM0NDOEJGNEZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozM0NDOEJGM0ZGNTcxMUUxODdBOEVCODg2RjdCQ0QwOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZDN0YxMTc0MDcyMDY4MTE5NUZFRDc5MUM2MUUwNEREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU3Q0QyMDgwMjUyMDY4MTE5OTRDOTM1MTNGNkRBODU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+84NovQAAAR1JREFUeNpiZEADy85ZJgCpeCB2QJM6AMQLo4yOL0AWZETSqACk1gOxAQN+cAGIA4EGPQBxmJA0nwdpjjQ8xqArmczw5tMHXAaALDgP1QMxAGqzAAPxQACqh4ER6uf5MBlkm0X4EGayMfMw/Pr7Bd2gRBZogMFBrv01hisv5jLsv9nLAPIOMnjy8RDDyYctyAbFM2EJbRQw+aAWw/LzVgx7b+cwCHKqMhjJFCBLOzAR6+lXX84xnHjYyqAo5IUizkRCwIENQQckGSDGY4TVgAPEaraQr2a4/24bSuoExcJCfAEJihXkWDj3ZAKy9EJGaEo8T0QSxkjSwORsCAuDQCD+QILmD1A9kECEZgxDaEZhICIzGcIyEyOl2RkgwAAhkmC+eAm0TAAAAABJRU5ErkJggg==');
1832          a.append(img);
1833          $(this).append(a);
1834        }
1835      });
1836
1837      // hide elements of author/affiliations grid that have no value
1838      function hide_byline_column(caption) {
1839        $('d-byline').find('h3:contains("' + caption + '")').parent().css('visibility', 'hidden');
1840      }
1841
1842      // affiliations
1843      var have_affiliations = false;
1844      for (var i = 0; i<front_matter.authors.length; ++i) {
1845        var author = front_matter.authors[i];
1846        if (author.affiliation !== "&nbsp;") {
1847          have_affiliations = true;
1848          break;
1849        }
1850      }
1851      if (!have_affiliations)
1852        $('d-byline').find('h3:contains("Affiliations")').css('visibility', 'hidden');
1853
1854      // published date
1855      if (!front_matter.publishedDate)
1856        hide_byline_column("Published");
1857
1858      // document object identifier
1859      var doi = $('d-byline').find('h3:contains("DOI")');
1860      var doi_p = doi.next().empty();
1861      if (!front_matter.doi) {
1862        // if we have a citation and valid citationText then link to that
1863        if ($('#citation').length > 0 && front_matter.citationText) {
1864          doi.html('Citation');
1865          $('<a href="#citation"></a>')
1866            .text(front_matter.citationText)
1867            .appendTo(doi_p);
1868        } else {
1869          hide_byline_column("DOI");
1870        }
1871      } else {
1872        $('<a></a>')
1873           .attr('href', "https://doi.org/" + front_matter.doi)
1874           .html(front_matter.doi)
1875           .appendTo(doi_p);
1876      }
1877
1878       // change plural form of authors/affiliations
1879      if (front_matter.authors.length === 1) {
1880        var grid = $('.authors-affiliations');
1881        grid.children('h3:contains("Authors")').text('Author');
1882        grid.children('h3:contains("Affiliations")').text('Affiliation');
1883      }
1884
1885      // remove d-appendix and d-footnote-list local styles
1886      $('d-appendix > style:first-child').remove();
1887      $('d-footnote-list > style:first-child').remove();
1888
1889      // move appendix-bottom entries to the bottom
1890      $('.appendix-bottom').appendTo('d-appendix').children().unwrap();
1891      $('.appendix-bottom').remove();
1892
1893      // hoverable references
1894      $('span.citation[data-cites]').each(function() {
1895        const citeChild = $(this).children()[0]
1896        // Do not process if @xyz has been used without escaping and without bibliography activated
1897        // https://github.com/rstudio/distill/issues/466
1898        if (citeChild === undefined) return true
1899
1900        if (citeChild.nodeName == "D-FOOTNOTE") {
1901          var fn = citeChild
1902          $(this).html(fn.shadowRoot.querySelector("sup"))
1903          $(this).id = fn.id
1904          fn.remove()
1905        }
1906        var refs = $(this).attr('data-cites').split(" ");
1907        var refHtml = refs.map(function(ref) {
1908          // Could use CSS.escape too here, we insure backward compatibility in navigator
1909          return "<p>" + $('div[id="ref-' + ref + '"]').html() + "</p>";
1910        }).join("\n");
1911        window.tippy(this, {
1912          allowHTML: true,
1913          content: refHtml,
1914          maxWidth: 500,
1915          interactive: true,
1916          interactiveBorder: 10,
1917          theme: 'light-border',
1918          placement: 'bottom-start'
1919        });
1920      });
1921
1922      // fix footnotes in tables (#411)
1923      // replacing broken distill.pub feature
1924      $('table d-footnote').each(function() {
1925        // we replace internal showAtNode methode which is triggered when hovering a footnote
1926        this.hoverBox.showAtNode = function(node) {
1927          // ported from https://github.com/distillpub/template/pull/105/files
1928          calcOffset = function(elem) {
1929              let x = elem.offsetLeft;
1930              let y = elem.offsetTop;
1931              // Traverse upwards until an `absolute` element is found or `elem`
1932              // becomes null.
1933              while (elem = elem.offsetParent && elem.style.position != 'absolute') {
1934                  x += elem.offsetLeft;
1935                  y += elem.offsetTop;
1936              }
1937
1938              return { left: x, top: y };
1939          }
1940          // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop
1941          const bbox = node.getBoundingClientRect();
1942          const offset = calcOffset(node);
1943          this.show([offset.left + bbox.width, offset.top + bbox.height]);
1944        }
1945      })
1946
1947      // clear polling timer
1948      clearInterval(tid);
1949
1950      // show body now that everything is ready
1951      on_load_complete();
1952    }
1953
1954    var tid = setInterval(distill_post_process, 50);
1955    distill_post_process();
1956
1957  }
1958
1959  function init_downlevel() {
1960
1961    init_common();
1962
1963     // insert hr after d-title
1964    $('.d-title').after($('<hr class="section-separator"/>'));
1965
1966    // check if we have authors
1967    var front_matter = JSON.parse($("#distill-front-matter").html());
1968    var have_authors = front_matter.authors && front_matter.authors.length > 0;
1969
1970    // manage byline/border
1971    if (!have_authors)
1972      $('.d-byline').remove();
1973    $('.d-byline').after($('<hr class="section-separator"/>'));
1974    $('.d-byline a').remove();
1975
1976    // remove toc
1977    $('.d-contents').remove();
1978
1979    // move appendix elements
1980    $('h1.appendix, h2.appendix').each(function(i, val) {
1981      $(this).changeElementType('h3');
1982    });
1983    $('h3.appendix').each(function(i, val) {
1984      $(this).nextUntil($('h1, h2, h3')).addBack().appendTo($('.d-appendix'));
1985    });
1986
1987
1988    // inject headers into references and footnotes
1989    var refs_header = $('<h3></h3>');
1990    refs_header.text('References');
1991    $('#refs').prepend(refs_header);
1992
1993    var footnotes_header = $('<h3></h3');
1994    footnotes_header.text('Footnotes');
1995    $('.footnotes').children('hr').first().replaceWith(footnotes_header);
1996
1997    // move appendix-bottom entries to the bottom
1998    $('.appendix-bottom').appendTo('.d-appendix').children().unwrap();
1999    $('.appendix-bottom').remove();
2000
2001    // remove appendix if it's empty
2002    if ($('.d-appendix').children().length === 0)
2003      $('.d-appendix').remove();
2004
2005    // prepend separator above appendix
2006    $('.d-appendix').before($('<hr class="section-separator" style="clear: both"/>'));
2007
2008    // trim code
2009    $('pre>code').each(function(i, val) {
2010      $(this).html($.trim($(this).html()));
2011    });
2012
2013    // move posts-container right before article
2014    $('.posts-container').insertBefore($('.d-article'));
2015
2016    $('body').addClass('downlevel');
2017
2018    on_load_complete();
2019  }
2020
2021
2022  function init_common() {
2023
2024    // jquery plugin to change element types
2025    (function($) {
2026      $.fn.changeElementType = function(newType) {
2027        var attrs = {};
2028
2029        $.each(this[0].attributes, function(idx, attr) {
2030          attrs[attr.nodeName] = attr.nodeValue;
2031        });
2032
2033        this.replaceWith(function() {
2034          return $("<" + newType + "/>", attrs).append($(this).contents());
2035        });
2036      };
2037    })(jQuery);
2038
2039    // prevent underline for linked images
2040    $('a > img').parent().css({'border-bottom' : 'none'});
2041
2042    // mark non-body figures created by knitr chunks as 100% width
2043    $('.layout-chunk').each(function(i, val) {
2044      var figures = $(this).find('img, .html-widget');
2045      // ignore leaflet img layers (#106)
2046      figures = figures.filter(':not(img[class*="leaflet"])')
2047      if ($(this).attr('data-layout') !== "l-body") {
2048        figures.css('width', '100%');
2049      } else {
2050        figures.css('max-width', '100%');
2051        figures.filter("[width]").each(function(i, val) {
2052          var fig = $(this);
2053          fig.css('width', fig.attr('width') + 'px');
2054        });
2055
2056      }
2057    });
2058
2059    // auto-append index.html to post-preview links in file: protocol
2060    // and in rstudio ide preview
2061    $('.post-preview').each(function(i, val) {
2062      if (window.location.protocol === "file:")
2063        $(this).attr('href', $(this).attr('href') + "index.html");
2064    });
2065
2066    // get rid of index.html references in header
2067    if (window.location.protocol !== "file:") {
2068      $('.distill-site-header a[href]').each(function(i,val) {
2069        $(this).attr('href', $(this).attr('href').replace(/^index[.]html/, "./"));
2070      });
2071    }
2072
2073    // add class to pandoc style tables
2074    $('tr.header').parent('thead').parent('table').addClass('pandoc-table');
2075    $('.kable-table').children('table').addClass('pandoc-table');
2076
2077    // add figcaption style to table captions
2078    $('caption').parent('table').addClass("figcaption");
2079
2080    // initialize posts list
2081    if (window.init_posts_list)
2082      window.init_posts_list();
2083
2084    // implmement disqus comment link
2085    $('.disqus-comment-count').click(function() {
2086      window.headroom_prevent_pin = true;
2087      $('#disqus_thread').toggleClass('hidden');
2088      if (!$('#disqus_thread').hasClass('hidden')) {
2089        var offset = $(this).offset();
2090        $(window).resize();
2091        $('html, body').animate({
2092          scrollTop: offset.top - 35
2093        });
2094      }
2095    });
2096  }
2097
2098  document.addEventListener('DOMContentLoaded', function() {
2099    if (is_downlevel_browser())
2100      init_downlevel();
2101    else
2102      window.addEventListener('WebComponentsReady', init_distill);
2103  });
2104
2105  </script>
2105
2106
2107  <style type="text/css">
2108  /* base variables */
2109
2110  /* Edit the CSS properties in this file to create a custom
2111     Distill theme. Only edit values in the right column
2112     for each row; values shown are the CSS defaults.
2113     To return any property to the default,
2114     you may set its value to: unset
2115     All rows must end with a semi-colon.                      */
2116
2117  /* Optional: embed custom fonts here with `@import`          */
2118  /* This must remain at the top of this file.                 */
2119
2120
2121
2122  html {
2123    /*-- Main font sizes --*/
2124    --title-size:      50px;
2125    --body-size:       1.06rem;
2126    --code-size:       14px;
2127    --aside-size:      12px;
2128    --fig-cap-size:    13px;
2129    /*-- Main font colors --*/
2130    --title-color:     #000000;
2131    --header-color:    rgba(0, 0, 0, 0.8);
2132    --body-color:      rgba(0, 0, 0, 0.8);
2133    --aside-color:     rgba(0, 0, 0, 0.6);
2134    --fig-cap-color:   rgba(0, 0, 0, 0.6);
2135    /*-- Specify custom fonts ~~~ must be imported above   --*/
2136    --heading-font:    sans-serif;
2137    --mono-font:       monospace;
2138    --body-font:       sans-serif;
2139    --navbar-font:     sans-serif;  /* websites + blogs only */
2140  }
2141
2142  /*-- ARTICLE METADATA --*/
2143  d-byline {
2144    --heading-size:    0.6rem;
2145    --heading-color:   rgba(0, 0, 0, 0.5);
2146    --body-size:       0.8rem;
2147    --body-color:      rgba(0, 0, 0, 0.8);
2148  }
2149
2150  /*-- ARTICLE TABLE OF CONTENTS --*/
2151  .d-contents {
2152    --heading-size:    18px;
2153    --contents-size:   13px;
2154  }
2155
2156  /*-- ARTICLE APPENDIX --*/
2157  d-appendix {
2158    --heading-size:    15px;
2159    --heading-color:   rgba(0, 0, 0, 0.65);
2160    --text-size:       0.8em;
2161    --text-color:      rgba(0, 0, 0, 0.5);
2162  }
2163
2164  /*-- WEBSITE HEADER + FOOTER --*/
2165  /* These properties only apply to Distill sites and blogs  */
2166
2167  .distill-site-header {
2168    --title-size:       18px;
2169    --text-color:       rgba(255, 255, 255, 0.8);
2170    --text-size:        15px;
2171    --hover-color:      white;
2172    --bkgd-color:       #0F2E3D;
2173  }
2174
2175  .distill-site-footer {
2176    --text-color:       rgba(255, 255, 255, 0.8);
2177    --text-size:        15px;
2178    --hover-color:      white;
2179    --bkgd-color:       #0F2E3D;
2180  }
2181
2182  /*-- Additional custom styles --*/
2183  /* Add any additional CSS rules below                      */
2184  </style>
2185  <style type="text/css">@import url('https://fonts.googleapis.com/css2?family=Annie+Use+Your+Telescope&family=Fuzzy+Bubbles&family=Shizuru&display=swap');
2186
2187  /* Edit the CSS properties in this file to create a custom
2188     Distill theme. Only edit values in the right column
2189     for each row; values shown are the CSS defaults.
2190     To return any property to the default,
2191     you may set its value to: unset
2192     All rows must end with a semi-colon.                      */
2193
2194  /* Optional: embed custom fonts here with `@import`          */
2195  /* This must remain at the top of this file.                 */
2196
2197
2198    
2199    html {
2200      /*-- Main font sizes --*/
2201      --title-size:      50px;
2202      --text-size:       20px;
2203    /*  --body-size:       1.06rem; */
2204      --code-size:       14px;
2205      --aside-size:      12px;
2206      --fig-cap-size:    13px;
2207      /*-- Main font colors --*/
2208      --title-color:     white;
2209      --header-color:    rgba(0, 0, 0, 0.8);
2210      --body-color:      rgba(0, 0, 0, 0.8);
2211      --aside-color:     rgba(0, 0, 0, 0.6);
2212      --fig-cap-color:   rgba(0, 0, 0, 0.6);
2213      /*-- Specify custom fonts ~~~ must be imported above   --*/
2214      --heading-font:    Atma;
2215      --mono-font:       monospace;
2216      --body-font:       sans-serif;
2217      --navbar-font:     "Annie Use Your Telescope", serif;
2218    }
2219
2220    .distill-site-header {
2221      --title-size:       50px;
2222      --text-color:       #176940;
2223      --text-size:        22px;
2224      --hover-color:      black;
2225      --bkgd-color:       #eeeeee;
2226    }
2227
2228  /*-- Additional custom styles --*/
2229    /* Add any additional CSS rules below                      */
2230    
2231  .distill-site-nav  { /* shdow line under banner */
2232    border-bottom: 2px solid #DECF40;
2233    -webkit-box-shadow: 1px 1px 18px #4d4d4d;
2234    -moz-box-shadow: 1px 1px 18px #4d4d4d;
2235    box-shadow: 1px 1px 18px #4d4d4d;
2236  }
2237
2238  .distill-site-header .logo img { /* logo size */
2239     max-height: 50px;
2240     width: auto;
2241     margin-top: 10px;
2242  }
2243
2244
2245  .posts-list > h1 {
2246    color: black!important; /* prints "Test Blog" */
2247  } 
2248
2249
2250  p a { /* underlines links */
2251    text-decoration: none;
2252    color: black;
2253    border-bottom: 3px solid #9ae28f;
2254    box-shadow: inset 0 -4px 0 #9ae28f;
2255    background: transparent;
2256    transition: background 150ms ease;
2257    font-style: italic;
2258    font-family: menu;
2259    font-stretch: extra-expanded;
2260  }
2261
2262  p a:hover { /* makes links go green on hover */
2263    text-decoration: none;
2264    --bg-opacity: 1;
2265    background-color: #9ae28f;
2266    background-color: rgba(154, 226, 143, var(--bg-opacity));
2267  }
2268
2269
2270  .thumbnail {
2271      padding: 0px!important;
2272      margin: 0px!important;
2273      max-width: 25%!important;
2274      height: 10%!important;
2275      vertical-align: text-top!important;
2276  }</style>
2277  <style type="text/css">
2278  /* base style */
2279
2280  /* FONT FAMILIES */
2281
2282  :root {
2283    --heading-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
2284    --mono-default: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
2285    --body-default: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif;
2286  }
2287
2288  body,
2289  .posts-list .post-preview p,
2290  .posts-list .description p {
2291    font-family: var(--body-font), var(--body-default);
2292  }
2293
2294  h1, h2, h3, h4, h5, h6,
2295  .posts-list .post-preview h2,
2296  .posts-list .description h2 {
2297    font-family: var(--heading-font), var(--heading-default);
2298  }
2299
2300  d-article div.sourceCode code,
2301  d-article pre code {
2302    font-family: var(--mono-font), var(--mono-default);
2303  }
2304
2305
2306  /*-- TITLE --*/
2307  d-title h1,
2308  .posts-list > h1 {
2309    color: var(--title-color, black);
2310  }
2311
2312  d-title h1 {
2313    font-size: var(--title-size, 50px);
2314  }
2315
2316  /*-- HEADERS --*/
2317  d-article h1,
2318  d-article h2,
2319  d-article h3,
2320  d-article h4,
2321  d-article h5,
2322  d-article h6 {
2323    color: var(--header-color, rgba(0, 0, 0, 0.8));
2324  }
2325
2326  /*-- BODY --*/
2327  d-article > p,  /* only text inside of <p> tags */
2328  d-article > ul, /* lists */
2329  d-article > ol {
2330    color: var(--body-color, rgba(0, 0, 0, 0.8));
2331    font-size: var(--body-size, 1.06rem);
2332  }
2333
2334
2335  /*-- CODE --*/
2336  d-article div.sourceCode code,
2337  d-article pre code {
2338    font-size: var(--code-size, 14px);
2339  }
2340
2341  /*-- ASIDE --*/
2342  d-article aside {
2343    font-size: var(--aside-size, 12px);
2344    color: var(--aside-color, rgba(0, 0, 0, 0.6));
2345  }
2346
2347  /*-- FIGURE CAPTIONS --*/
2348  figure .caption,
2349  figure figcaption,
2350  .figure .caption {
2351    font-size: var(--fig-cap-size, 13px);
2352    color: var(--fig-cap-color, rgba(0, 0, 0, 0.6));
2353  }
2354
2355  /*-- METADATA --*/
2356  d-byline h3 {
2357    font-size: var(--heading-size, 0.6rem);
2358    color: var(--heading-color, rgba(0, 0, 0, 0.5));
2359  }
2360
2361  d-byline {
2362    font-size: var(--body-size, 0.8rem);
2363    color: var(--body-color, rgba(0, 0, 0, 0.8));
2364  }
2365
2366  d-byline a,
2367  d-article d-byline a {
2368    color: var(--body-color, rgba(0, 0, 0, 0.8));
2369  }
2370
2371  /*-- TABLE OF CONTENTS --*/
2372  .d-contents nav h3 {
2373    font-size: var(--heading-size, 18px);
2374  }
2375
2376  .d-contents nav a {
2377    font-size: var(--contents-size, 13px);
2378  }
2379
2380  /*-- APPENDIX --*/
2381  d-appendix h3 {
2382    font-size: var(--heading-size, 15px);
2383    color: var(--heading-color, rgba(0, 0, 0, 0.65));
2384  }
2385
2386  d-appendix {
2387    font-size: var(--text-size, 0.8em);
2388    color: var(--text-color, rgba(0, 0, 0, 0.5));
2389  }
2390
2391  d-appendix d-footnote-list a.footnote-backlink {
2392    color: var(--text-color, rgba(0, 0, 0, 0.5));
2393  }
2394
2395  /*-- WEBSITE HEADER + FOOTER --*/
2396  .distill-site-header .title {
2397    font-size: var(--title-size, 18px);
2398    font-family: var(--navbar-font), var(--heading-default);
2399  }
2400
2401  .distill-site-header a,
2402  .nav-dropdown .nav-dropbtn {
2403    font-family: var(--navbar-font), var(--heading-default);
2404  }
2405
2406  .nav-dropdown .nav-dropbtn {
2407    color: var(--text-color, rgba(255, 255, 255, 0.8));
2408    font-size: var(--text-size, 15px);
2409  }
2410
2411  .distill-site-header a:hover,
2412  .nav-dropdown:hover .nav-dropbtn {
2413    color: var(--hover-color, white);
2414  }
2415
2416  .distill-site-header {
2417    font-size: var(--text-size, 15px);
2418    color: var(--text-color, rgba(255, 255, 255, 0.8));
2419    background-color: var(--bkgd-color, #0F2E3D);
2420  }
2421
2422  .distill-site-footer {
2423    font-size: var(--text-size, 15px);
2424    color: var(--text-color, rgba(255, 255, 255, 0.8));
2425    background-color: var(--bkgd-color, #0F2E3D);
2426  }
2427
2428  .distill-site-footer a:hover {
2429    color: var(--hover-color, white);
2430  }</style>
2431  <!--/radix_placeholder_distill-->
2432  
2432<script src="site_libs/header-attrs-2.29/header-attrs.js"></script>
2432
2433  
2433<script src="site_libs/popper-2.6.0/popper.min.js"></script>
2433
2434  <link href="site_libs/tippy-6.2.7/tippy.css" rel="stylesheet" />
2435  <link href="site_libs/tippy-6.2.7/tippy-light-border.css" rel="stylesheet" />
2436  
2436<script src="site_libs/tippy-6.2.7/tippy.umd.min.js"></script>
2436
2437  
2437<script src="site_libs/anchor-4.2.2/anchor.min.js"></script>
2437
2438  
2438<script src="site_libs/bowser-1.9.3/bowser.min.js"></script>
2438
2439  
2439<script src="site_libs/webcomponents-2.0.0/webcomponents.js"></script>
2439
2440  
2440<script src="site_libs/distill-2.2.21/template.v2.js"></script>
2440
2441  <!--radix_placeholder_site_in_header-->
2442  <style type="text/css">
2443  @import url('https://fonts.googleapis.com/css2?family=Annie+Use+Your+Telescope&family=Fuzzy+Bubbles&family=Shizuru&display=swap');
2444
2445  /* Edit the CSS properties in this file to create a custom
2446     Distill theme. Only edit values in the right column
2447     for each row; values shown are the CSS defaults.
2448     To return any property to the default,
2449     you may set its value to: unset
2450     All rows must end with a semi-colon.                      */
2451
2452  /* Optional: embed custom fonts here with `@import`          */
2453  /* This must remain at the top of this file.                 */
2454
2455
2456    
2457    html {
2458      /*-- Main font sizes --*/
2459      --title-size:      50px;
2460      --text-size:       20px;
2461    /*  --body-size:       1.06rem; */
2462      --code-size:       14px;
2463      --aside-size:      12px;
2464      --fig-cap-size:    13px;
2465      /*-- Main font colors --*/
2466      --title-color:     white;
2467      --header-color:    rgba(0, 0, 0, 0.8);
2468      --body-color:      rgba(0, 0, 0, 0.8);
2469      --aside-color:     rgba(0, 0, 0, 0.6);
2470      --fig-cap-color:   rgba(0, 0, 0, 0.6);
2471      /*-- Specify custom fonts ~~~ must be imported above   --*/
2472      --heading-font:    Atma;
2473      --mono-font:       monospace;
2474      --body-font:       sans-serif;
2475      --navbar-font:     "Annie Use Your Telescope", serif;
2476    }
2477
2478    .distill-site-header {
2479      --title-size:       50px;
2480      --text-color:       #176940;
2481      --text-size:        22px;
2482      --hover-color:      black;
2483      --bkgd-color:       #eeeeee;
2484    }
2485
2486  /*-- Additional custom styles --*/
2487    /* Add any additional CSS rules below                      */
2488    
2489  .distill-site-nav  { /* shdow line under banner */
2490    border-bottom: 2px solid #DECF40;
2491    -webkit-box-shadow: 1px 1px 18px #4d4d4d;
2492    -moz-box-shadow: 1px 1px 18px #4d4d4d;
2493    box-shadow: 1px 1px 18px #4d4d4d;
2494  }
2495
2496  .distill-site-header .logo img { /* logo size */
2497     max-height: 50px;
2498     width: auto;
2499     margin-top: 10px;
2500  }
2501
2502
2503  .posts-list > h1 {
2504    color: black!important; /* prints "Test Blog" */
2505  } 
2506
2507
2508  p a { /* underlines links */
2509    text-decoration: none;
2510    color: black;
2511    border-bottom: 3px solid #9ae28f;
2512    box-shadow: inset 0 -4px 0 #9ae28f;
2513    background: transparent;
2514    transition: background 150ms ease;
2515    font-style: italic;
2516    font-family: menu;
2517    font-stretch: extra-expanded;
2518  }
2519
2520  p a:hover { /* makes links go green on hover */
2521    text-decoration: none;
2522    --bg-opacity: 1;
2523    background-color: #9ae28f;
2524    background-color: rgba(154, 226, 143, var(--bg-opacity));
2525  }
2526
2527
2528  .thumbnail {
2529      padding: 0px!important;
2530      margin: 0px!important;
2531      max-width: 25%!important;
2532      height: 10%!important;
2533      vertical-align: text-top!important;
2534  }
2535  </style>
2536  <!--/radix_placeholder_site_in_header-->
2537
2538  <link rel="stylesheet" href="theme.css" type="text/css"/>
2539
2540</head>
2541
2542<body>
2543
2544<!--radix_placeholder_front_matter-->
2545
2546<script id="distill-front-matter" type="text/json">
2547{"title":"About","description":"","authors":[]}
2548</script>
2548
2549
2550<!--/radix_placeholder_front_matter-->
2551<!--radix_placeholder_navigation_before_body-->
2552<header class="header header--fixed" role="banner">
2553<nav class="distill-site-nav distill-site-header">
2554<div class="nav-left">
2555<a class="logo" href="https://www.fizzics.ie/">
2556<img src="images/atlantic.png" alt="Logo"/>
2557</a>
2558<a class='title' href='/'>Euge</a>
2559<a href='/'>Home</a>
2560<a href='/projects'>Projects</a>
2561<a href='/teaching'>Teaching</a>
2562<a href='/talks'>Talks</a>
2563<a href='/publications'>Publications</a>
2564<a href='/resources'>Resources</a>
2565<a href='/about'>About</a>
2566<input id="distill-search" class="nav-search hidden" type="text" placeholder="Search..."/>
2567</div>
2568<div class="nav-right">
2569<a href="https://github.com/eugene100hickey">
2570<i class="fab fa-github" aria-hidden="true"></i>
2571</a>
2572<a href="https://mastodon.social/@eugene100hickey">
2573<i class="fab fa-mastodon" aria-hidden="true"></i>
2574</a>
2575<a href="https://www.linkedin.com/in/eugene100hickey/">
2576<i class="fab fa-linkedin" aria-hidden="true"></i>
2577</a>
2578<a href="https://orcid.org/my-orcid?orcid=0000-0001-9813-9323">
2579<i class="fab fa-orcid" aria-hidden="true"></i>
2580</a>
2581<a href="blog.xml">
2582<i class="fa fa-rss" aria-hidden="true"></i>
2583</a>
2584<a href="javascript:void(0);" class="nav-toggle">&#9776;</a>
2585</div>
2586</nav>
2587</header>
2588<!--/radix_placeholder_navigation_before_body-->
2589<!--radix_placeholder_site_before_body-->
2590<!--/radix_placeholder_site_before_body-->
2591
2592<div class="d-title">
2593<h1>About</h1>
2594
2595<!--radix_placeholder_categories-->
2596<!--/radix_placeholder_categories-->
2597
2598</div>
2599
2600
2601<div class="d-article">
2602<style>
2603d-title {
2604 display:none;
2605}
2606body {
2607  font-size: 18px;
2608  line-height: 1.4;
2609  font-family: var(--body-font), var(--body-default);
2610}
2611
2612@page{
2613  size: letter portrait;
2614  margin: 1in 0.5in 1in 0.25in;
2615}
2616
2617a {
2618  color: #FFB6C1;
2619}
2620
2621*{
2622  box-sizing: border-box;
2623}
2624
2625:root{
2626  --page-width: 8.5in;
2627}
2628
2629
2630#canvas {
2631    max-width: var(--page-width);
2632    margin: auto;
2633}
2634
2635.distill-site-footer {
2636  --text-color:       rgba(0, 0, 0, 1);
2637  --text-size:        15px;
2638  --hover-color:      black;
2639  --bkgd-color:       white;
2640}
2641
2642.profile-photo {
2643  vertical-align: middle;
2644  padding: 1.5rem!important;
2645  box-sizing: border-box;
2646}
2647
2648.profile-photo img {
2649  // border: 1px solid black;
2650  border-radius: 50%!important;
2651  width: 12rem!important;
2652}
2653
2654
2655/* --- github calender --- */
2656
2657:root {
2658  --color-calendar-graph-day-bg: #dddbdb;
2659  --color-calendar-graph-day-L1-bg: #cd669b;
2660  --color-calendar-graph-day-L2-bg: #bd327a;
2661  --color-calendar-graph-day-L3-bg: #ad0059;
2662  --color-calendar-graph-day-L4-bg: #79003e;
2663}
2664
2665rect.ContributionCalendar-day[data-level='0'] {
2666    fill: var(--color-calendar-graph-day-bg);
2667}
2668
2669rect.ContributionCalendar-day[data-level='1'] {
2670    fill: var(--color-calendar-graph-day-L1-bg);
2671}
2672
2673rect.ContributionCalendar-day[data-level='2'] {
2674    fill: var(--color-calendar-graph-day-L2-bg);
2675}
2676
2677rect.ContributionCalendar-day[data-level='3'] {
2678    fill: var(--color-calendar-graph-day-L3-bg);
2679}
2680
2681rect.ContributionCalendar-day[data-level='4'] {
2682    fill: var(--color-calendar-graph-day-L4-bg);
2683}
2684
2685.calendar {
2686    width: 100%;
2687    background-color: white;
2688    font-family: Helvetica, arial;
2689    border: 1px solid #DDDDDD;
2690    border-radius: 3px;
2691    min-height: 243px;
2692    text-align: center;
2693    margin: 0 auto;
2694    padding: 10px;
2695    color: black;
2696}
2697
2698.js-calendar-graph-svg {
2699  width: 100%;
2700}
2701
2702.calendar-graph text.wday,
2703.calendar-graph text.month {
2704    font-size: 10px;
2705    fill: #aaa;
2706}
2707
2708.contrib-legend {
2709    text-align: right;
2710    padding: 0 10px 10px 0;
2711    display: inline-block;
2712    float: right;
2713}
2714
2715.contrib-legend .legend {
2716    display: inline-block;
2717    list-style: none;
2718    margin: 0 5px;
2719    position: relative;
2720    bottom: -1px;
2721    padding: 0;
2722}
2723
2724.contrib-legend .legend li {
2725    display: inline-block;
2726    width: 10px;
2727    height: 10px;
2728}
2729
2730.text-small {
2731    font-size: 12px;
2732    color: #767676;
2733}
2734
2735.calendar-graph {
2736    padding: 5px 0 0;
2737    text-align: center;
2738}
2739
2740.contrib-column {
2741    padding: 15px 0;
2742    text-align: center;
2743    border-left: 1px solid #ddd;
2744    border-top: 1px solid #ddd;
2745    font-size: 11px;
2746}
2747
2748.contrib-column-first {
2749    border-left: 0;
2750}
2751
2752.table-column {
2753    display: table-cell;
2754    width: 5%;
2755    padding-right: 10px;
2756    padding-left: 10px;
2757    vertical-align: top;
2758}
2759
2760.contrib-number {
2761    font-weight: 300;
2762    line-height: 1.3em;
2763    font-size: 24px;
2764    display: block;
2765    color: #333;
2766}
2767
2768.calendar img.spinner {
2769    width: 70px;
2770    margin-top: 50px;
2771    min-height: 70px;
2772}
2773
2774.ContributionCalendar-label {
2775  font-size: 8pt;
2776}
2777
2778.monospace {
2779    text-align: center;
2780    color: #000;
2781    font-family: monospace;
2782}
2783
2784.monospace a {
2785    color: #1D75AB;
2786    text-decoration: none;
2787}
2788
2789.contrib-footer {
2790    font-size: 11px;
2791    padding: 0 10px 12px;
2792    text-align: left;
2793    width: 100%;
2794    box-sizing: border-box;
2795    height: 26px;
2796}
2797
2798.left.text-muted {
2799    float: left;
2800    margin-left: 9px;
2801    color: #767676;
2802}
2803.left.text-muted a {
2804    color: #4078c0;
2805    text-decoration: none;
2806}
2807.left.text-muted a:hover,
2808.monospace a:hover {
2809    text-decoration: underline;
2810}
2811
2812h2.f4.text-normal.mb-3 {
2813    display: none;
2814}
2815
2816.float-left.text-gray {
2817    float: left;
2818}
2819#user-activity-overview{
2820    display:none;
2821}
2822
2823.day-tooltip {
2824    white-space: nowrap;
2825    position: absolute;
2826    z-index: 99999;
2827    padding: 10px;
2828    font-size: 12px;
2829    color: #959da5;
2830    text-align: center;
2831    background: rgba(0,0,0,.85);
2832    border-radius: 3px;
2833    display: none;
2834    pointer-events: none;
2835}
2836.day-tooltip strong {
2837    color: #dfe2e5;
2838}
2839.day-tooltip.is-visible {
2840    display: block;
2841}
2842.day-tooltip:after {
2843    position: absolute;
2844    bottom: -10px;
2845    left: 50%;
2846    width: 5px;
2847    height: 5px;
2848    box-sizing: border-box;
2849    margin: 0 0 0 -5px;
2850    content: " ";
2851    border: 5px solid transparent;
2852    border-top-color: rgba(0,0,0,.85)
2853}
2854
2855
2856.navbar {
2857  display: none; 
2858}
2859#navigation .navbar {
2860 display: block;
2861}
2862</style>
2863<div id="canvas">
2864<p><br>
2865<br></p>
2866<div class="profile-photo">
2867<p><img  src="images/euge.JPG" alt="Profile photo"></p>
2868</div>
2869<p>I lecture in physics at the Technological University Dublin and I’m a part of <a href="https://ml-labs.ie/">ML-Labs</a>. Research-wise, I work in data science, mostly astrophysics or neuroscience. My original background was in materials science, making new inter-metallic compounds based on uranium and looking at their structural and physical properties at temperatures down to 2.2K. I then spent some time as a medical physicist, developing teleradiology systems. But then discovered R programming about 2015 and haven’t looked back since.</p>
2870<p>This blog is an eclectic mix of posts featuring stuff I find interesting. I’ve have a fondness for maps, and specifically coordinate transformations, and especially maps of my home turf of Donegal. Over the years, I’ve spent a lot of time on golf courses, volleyball courts, and tennis courts, so they feature here too. I’m involved in politics. And of course there will be plenty of physics, and not just the astrophysics / neuroscience / bioinformatics stuff.</p>
2871<script
2872  src="https://unpkg.com/github-calendar@latest/dist/github-calendar.min.js">
2873</script>
2873
2874<div class="l-body-outset">
2875<a href="https://github.com/eugene100hickey">
2876<div class="calendar">
2877<p>Loading my github calendar data.</p>
2878</div>
2879<p></a></p>
2880</div>
2881<script>
2882GitHubCalendar(".calendar", "eugene100hickey", { responsive: true });
2883</script>
2883
2884<h2 id="you-can-find-me-at">You can find me at …</h2>
2885<div class="layout-chunk" data-layout="l-body">
2886<table>
2887<colgroup>
2888<col style="width: 27%" />
2889<col style="width: 72%" />
2890</colgroup>
2891<tbody>
2892<tr class="odd">
2893<td style="text-align: left;"><i class="fab fa-twitter"></i></td>
2894<td style="text-align: left;"><a href="https://twitter.com/eugene100hickey">eugene100hickey</a></td>
2895</tr>
2896<tr class="even">
2897<td style="text-align: left;"><i class="fab fa-github"></i></td>
2898<td style="text-align: left;"><a href="https://github.com/eugene100hickey">eugene100hickey</a></td>
2899</tr>
2900<tr class="odd">
2901<td style="text-align: left;"><i class="fas fa-envelope"></i></td>
2902<td style="text-align: left;"><a href="[email protected]">[email protected]</a></td>
2903</tr>
2904<tr class="even">
2905<td style="text-align: left;"><i class="fas fa-map-marker-alt"></i></td>
2906<td style="text-align: left;">Department of Applied Science<br>Technological University Dublin,<br>Tallaght<br>D24FKT9<br>Ireland</td>
2907</tr>
2908</tbody>
2909</table>
2910</div>
2911<iframe src="https://www.google.com/maps/d/u/0/embed?mid=1m4FhES89FKiwadPn0bu8Z2d5F6COe1rU&amp;ehbc=2E312F&amp;zoom=6" width="640" height="480">
2912</iframe>
2913<p>You can also find me at various conferences and events. I’m a regular at the <a href="https://nhsrcommunity.com/">NHSr Community Conferences</a>, involved with <a href="https://2021.whyr.pl/">WhyR!</a> and various <a href="https://www.meetup.com">meetups in Dublin</a> (or other chapters sometimes). And I’m now using <a rel="me" href="https://mastodon.social/@eugene100hickey">Mastodon</a> quite a bit, rather than the other thing.</p>
2914</div>
2915<div class="sourceCode" id="cb1"><pre class="sourceCode r distill-force-highlighting-css"><code class="sourceCode r"></code></pre></div>
2916<!--radix_placeholder_article_footer-->
2917<!--/radix_placeholder_article_footer-->
2918</div>
2919
2920<div class="d-appendix">
2921</div>
2922
2923
2924<!--radix_placeholder_site_after_body-->
2925<!--/radix_placeholder_site_after_body-->
2926<!--radix_placeholder_appendices-->
2927<div class="appendix-bottom">
2928<h3 id="updates-and-corrections">Corrections</h3>
2929<p>If you see mistakes or want to suggest changes, please <a href="https://github.com/eugene100hickey/fizzics/issues/new">create an issue</a> on the source repository.</p>
2930<h3 id="reuse">Reuse</h3>
2931<p>Text and figures are licensed under Creative Commons Attribution <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>. Source code is available at <a href="https://github.com/eugene100hickey/fizzics">https://github.com/eugene100hickey/fizzics</a>, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".</p>
2932</div>
2933<!--/radix_placeholder_appendices-->
2934<!--radix_placeholder_navigation_after_body-->
2935<!--/radix_placeholder_navigation_after_body-->
2936
2937</body>
2938
2939</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.