Help
RSS
API
Feed
Maltego
Contact
Domain > altanalyticsllc.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2023-10-28
18.239.225.23
(
ClassC
)
2025-05-02
3.163.115.107
(
ClassC
)
2025-06-14
3.171.171.54
(
ClassC
)
2025-08-29
18.64.236.129
(
ClassC
)
2026-01-09
18.161.6.124
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Fri, 09 Jan 2026 01:17:40 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://altanalyticsllc.com/X-Cache: Redirect from cloudfrontVia: 1.1 e92cc925fc8895560cd0628c67f58828.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P1Alt-Svc: h3:443; ma86400X-Amz-Cf-Id: OplwiT7FO6Zlq990qyp_DWSFBnEAX0iYvCng8_SXUnS-tUeSnm-vmA html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/htmlContent-Length: 80955Connection: keep-aliveDate: Thu, 08 Jan 2026 20:32:48 GMTCache-Control: public, max-age0, s-maxage31536000Server: AmazonS3Accept-Ranges: bytesETag: f3798fbaa91d5da6b985e229e0ad9832Last-Modified: Thu, 04 Sep 2025 21:40:44 GMTX-Cache: Hit from cloudfrontVia: 1.1 1cbc126937aab64e42a05f9bf2f8daee.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO52-P1Alt-Svc: h3:443; ma86400X-Amz-Cf-Id: RjbwLWoS_SXYiT7n7egXub4ZzSa_mGUQxWgjGqbeXPmLGYb7TuYC3QAge: 17092 !DOCTYPE html>html xmlnshttp://www.w3.org/1999/xhtml lang xml:lang>head> meta charsetutf-8/> meta nameviewport contentwidthdevice-width, initial-scale1/> meta http-equivX-UA-Compatible contentIEEdge,chrome1/> meta namegenerator contentdistill /> style typetext/css> /* Hide doc at startup (prevent jankiness while JS renders/transforms) */ body { visibility: hidden; } /style> !--radix_placeholder_import_source--> !--/radix_placeholder_import_source-->style typetext/css>code{white-space: pre;}/style>style typetext/css data-originpandoc>pre > code.sourceCode { white-space: pre; position: relative; }pre > code.sourceCode > span { 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 { display: inline-block; 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 { color: #00769e; background-color: #f1f3f5; }@media screen {pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }}code span { color: #00769e; } /* Normal */code span.al { color: #ad0000; } /* Alert */code span.an { color: #5e5e5e; } /* Annotation */code span.at { color: #657422; } /* Attribute */code span.bn { color: #ad0000; } /* BaseN */code span.bu { } /* BuiltIn */code span.cf { color: #00769e; } /* ControlFlow */code span.ch { color: #20794d; } /* Char */code span.cn { color: #8f5902; } /* Constant */code span.co { color: #5e5e5e; } /* Comment */code span.cv { color: #5e5e5e; font-style: italic; } /* CommentVar */code span.do { color: #5e5e5e; font-style: italic; } /* Documentation */code span.dt { color: #ad0000; } /* DataType */code span.dv { color: #ad0000; } /* DecVal */code span.er { color: #ad0000; } /* Error */code span.ex { } /* Extension */code span.fl { color: #ad0000; } /* Float */code span.fu { color: #4758ab; } /* Function */code span.im { } /* Import */code span.in { color: #5e5e5e; } /* Information */code span.kw { color: #00769e; } /* Keyword */code span.op { color: #5e5e5e; } /* Operator */code span.ot { color: #00769e; } /* Other */code span.pp { color: #ad0000; } /* Preprocessor */code span.sc { color: #5e5e5e; } /* SpecialChar */code span.ss { color: #20794d; } /* SpecialString */code span.st { color: #20794d; } /* String */code span.va { color: #111111; } /* Variable */code span.vs { color: #20794d; } /* VerbatimString */code span.wa { color: #5e5e5e; font-style: italic; } /* Warning *//style> !--radix_placeholder_meta_tags--> title>ALT Analytics: ALT Analytics LLC/title> meta propertydescription itempropdescription contentSpeaks Business, Delivers Technology/> !-- https://developers.facebook.com/docs/sharing/webmasters#markup --> meta propertyog:title contentALT Analytics: ALT Analytics LLC/> meta propertyog:type contentarticle/> meta propertyog:description contentSpeaks Business, Delivers Technology/> meta propertyog:locale contenten_US/> meta propertyog:site_name contentALT Analytics/> !-- https://dev.twitter.com/cards/types/summary --> meta propertytwitter:card contentsummary/> meta propertytwitter:title contentALT Analytics: ALT Analytics LLC/> meta propertytwitter:description contentSpeaks Business, Delivers Technology/> !--/radix_placeholder_meta_tags--> !--radix_placeholder_rmarkdown_metadata--> script typetext/json idradix-rmarkdown-metadata> {type:list,attributes:{names:{type:character,attributes:{},value:title,description,site,listing,output}},value:{type:character,attributes:{},value:ALT Analytics LLC},{type:character,attributes:{},value:Speaks Business, Delivers Technology\n},{type:character,attributes:{},value:distill::distill_website},{type:list,attributes:{names:{type:character,attributes:{},value:posts}},value:{type:character,attributes:{},value:2023-10-18-private-llm-chatbot,2022-11-14-automated-trading-and-investing-using-aws,2022-05-17-setting-up-an-aws-analytics-server-and-api-in-15-minutes}},{type:list,attributes:{names:{type:character,attributes:{},value:distill::distill_article}},value:{type:list,attributes:{names:{type:character,attributes:{},value:includes,toc,css}},value:{type:list,attributes:{names:{type:character,attributes:{},value:in_header}},value:{type:character,attributes:{},value:utils/hero/hero_text_main.html}},{type:logical,attributes:{},value:false},{type:character,attributes:{},value:utils/hero/hero_main.css,utils/styles.css}}}} /script> !--/radix_placeholder_rmarkdown_metadata--> !--radix_placeholder_navigation_in_header--> meta namedistill:offset content/> script typeapplication/javascript> window.headroom_prevent_pin false; window.document.addEventListener(DOMContentLoaded, function (event) { // initialize headroom for banner var header $(header).get(0); var headerHeight header.offsetHeight; var headroom new Headroom(header, { tolerance: 5, onPin : function() { if (window.headroom_prevent_pin) { window.headroom_prevent_pin false; headroom.unpin(); } } }); headroom.init(); if(window.location.hash) headroom.unpin(); $(header).addClass(headroom--transition); // offset scroll location for banner on hash change // (see: https://github.com/WickyNilliams/headroom.js/issues/38) window.addEventListener(hashchange, function(event) { window.scrollTo(0, window.pageYOffset - (headerHeight + 25)); }); // responsive menu $(.distill-site-header).each(function(i, val) { var topnav $(this); var toggle topnav.find(.nav-toggle); toggle.on(click, function() { topnav.toggleClass(responsive); }); }); // nav dropdowns $(.nav-dropbtn).click(function(e) { $(this).next(.nav-dropdown-content).toggleClass(nav-dropdown-active); $(this).parent().siblings(.nav-dropdown) .children(.nav-dropdown-content).removeClass(nav-dropdown-active); }); $(body).click(function(e){ $(.nav-dropdown-content).removeClass(nav-dropdown-active); }); $(.nav-dropdown).click(function(e){ e.stopPropagation(); }); }); /script> style typetext/css> /* Theme (user-documented overrideables for nav appearance) */ .distill-site-nav { color: rgba(255, 255, 255, 0.8); background-color: #0F2E3D; font-size: 15px; font-weight: 300; } .distill-site-nav a { color: inherit; text-decoration: none; } .distill-site-nav a:hover { color: white; } @media print { .distill-site-nav { display: none; } } .distill-site-header { } .distill-site-footer { } /* Site Header */ .distill-site-header { width: 100%; box-sizing: border-box; z-index: 3; } .distill-site-header .nav-left { display: inline-block; margin-left: 8px; } @media screen and (max-width: 768px) { .distill-site-header .nav-left { margin-left: 0; } } .distill-site-header .nav-right { float: right; margin-right: 8px; } .distill-site-header a, .distill-site-header .title { display: inline-block; text-align: center; padding: 14px 10px 14px 10px; } .distill-site-header .title { font-size: 18px; min-width: 150px; } .distill-site-header .logo { padding: 0; } .distill-site-header .logo img { display: none; max-height: 20px; width: auto; margin-bottom: -4px; } .distill-site-header .nav-image img { max-height: 18px; width: auto; display: inline-block; margin-bottom: -3px; } @media screen and (min-width: 1000px) { .distill-site-header .logo img { display: inline-block; } .distill-site-header .nav-left { margin-left: 20px; } .distill-site-header .nav-right { margin-right: 20px; } .distill-site-header .title { padding-left: 12px; } } .distill-site-header .nav-toggle { display: none; } .nav-dropdown { display: inline-block; position: relative; } .nav-dropdown .nav-dropbtn { border: none; outline: none; color: rgba(255, 255, 255, 0.8); padding: 16px 10px; background-color: transparent; font-family: inherit; font-size: inherit; font-weight: inherit; margin: 0; margin-top: 1px; z-index: 2; } .nav-dropdown-content { display: none; position: absolute; background-color: white; min-width: 200px; border: 1px solid rgba(0,0,0,0.15); border-radius: 4px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.1); z-index: 1; margin-top: 2px; white-space: nowrap; padding-top: 4px; padding-bottom: 4px; } .nav-dropdown-content hr { margin-top: 4px; margin-bottom: 4px; border: none; border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .nav-dropdown-active { display: block; } .nav-dropdown-content a, .nav-dropdown-content .nav-dropdown-header { color: black; padding: 6px 24px; text-decoration: none; display: block; text-align: left; } .nav-dropdown-content .nav-dropdown-header { display: block; padding: 5px 24px; padding-bottom: 0; text-transform: uppercase; font-size: 14px; color: #999999; white-space: nowrap; } .nav-dropdown:hover .nav-dropbtn { color: white; } .nav-dropdown-content a:hover { background-color: #ddd; color: black; } .nav-right .nav-dropdown-content { margin-left: -45%; right: 0; } @media screen and (max-width: 768px) { .distill-site-header a, .distill-site-header .nav-dropdown {display: none;} .distill-site-header a.nav-toggle { float: right; display: block; } .distill-site-header .title { margin-left: 0; } .distill-site-header .nav-right { margin-right: 0; } .distill-site-header { overflow: hidden; } .nav-right .nav-dropdown-content { margin-left: 0; } } @media screen and (max-width: 768px) { .distill-site-header.responsive {position: relative; min-height: 500px; } .distill-site-header.responsive a.nav-toggle { position: absolute; right: 0; top: 0; } .distill-site-header.responsive a, .distill-site-header.responsive .nav-dropdown { display: block; text-align: left; } .distill-site-header.responsive .nav-left, .distill-site-header.responsive .nav-right { width: 100%; } .distill-site-header.responsive .nav-dropdown {float: none;} .distill-site-header.responsive .nav-dropdown-content {position: relative;} .distill-site-header.responsive .nav-dropdown .nav-dropbtn { display: block; width: 100%; text-align: left; } } /* Site Footer */ .distill-site-footer { width: 100%; overflow: hidden; box-sizing: border-box; z-index: 3; margin-top: 30px; padding-top: 30px; padding-bottom: 30px; text-align: center; } /* Headroom */ d-title { padding-top: 6rem; } @media print { d-title { padding-top: 4rem; } } .headroom { z-index: 1000; position: fixed; top: 0; left: 0; right: 0; } .headroom--transition { transition: all .4s ease-in-out; } .headroom--unpinned { top: -100px; } .headroom--pinned { top: 0; } /* adjust viewport for navbar height */ /* helps vertically center bootstrap (non-distill) content */ .min-vh-100 { min-height: calc(100vh - 100px) !important; } /style> script srcsite_libs/jquery-3.6.0/jquery-3.6.0.min.js>/script> link hrefsite_libs/font-awesome-6.5.2/css/all.min.css relstylesheet/> link hrefsite_libs/font-awesome-6.5.2/css/v4-shims.min.css relstylesheet/> script srcsite_libs/headroom-0.9.4/headroom.min.js>/script> script srcsite_libs/autocomplete-0.37.1/autocomplete.min.js>/script> script srcsite_libs/fuse-6.4.1/fuse.min.js>/script> script typeapplication/javascript> function getMeta(metaName) { var metas document.getElementsByTagName(meta); for (let i 0; i metas.length; i++) { if (metasi.getAttribute(name) metaName) { return metasi.getAttribute(content); } } return ; } function offsetURL(url) { var offset getMeta(distill:offset); return offset ? offset + / + url : url; } function createFuseIndex() { // create fuse index var options { keys: { name: title, weight: 20 }, { name: categories, weight: 15 }, { name: description, weight: 10 }, { name: contents, weight: 5 }, , ignoreLocation: true, threshold: 0 }; var fuse new window.Fuse(, options); // fetch the main search.json return fetch(offsetURL(search.json)) .then(function(response) { if (response.status 200) { return response.json().then(function(json) { // index main articles json.articles.forEach(function(article) { fuse.add(article); }); // download collections and index their articles return Promise.all(json.collections.map(function(collection) { return fetch(offsetURL(collection)).then(function(response) { if (response.status 200) { return response.json().then(function(articles) { articles.forEach(function(article) { fuse.add(article); }); }) } else { return Promise.reject( new Error(Unexpected status from search index request: + response.status) ); } }); })).then(function() { return fuse; }); }); } else { return Promise.reject( new Error(Unexpected status from search index request: + response.status) ); } }); } window.document.addEventListener(DOMContentLoaded, function (event) { // get search element (bail if we dont have one) var searchEl window.document.getElementById(distill-search); if (!searchEl) return; createFuseIndex() .then(function(fuse) { // make search box visible searchEl.classList.remove(hidden); // initialize autocomplete var options { autoselect: true, hint: false, minLength: 2, }; window.autocomplete(searchEl, options, { source: function(query, callback) { const searchOptions { isCaseSensitive: false, shouldSort: true, minMatchCharLength: 2, limit: 10, }; var results fuse.search(query, searchOptions); callback(results .map(function(result) { return result.item; }) ); }, templates: { suggestion: function(suggestion) { var img suggestion.preview && Object.keys(suggestion.preview).length > 0 ? `img src${offsetURL(suggestion.preview)}/img>` : ; var html ` div classsearch-item> h3>${suggestion.title}/h3> div classsearch-item-description> ${suggestion.description || } /div> div classsearch-item-preview> ${img} /div> /div> `; return html; } } }).on(autocomplete:selected, function(event, suggestion) { window.location.href offsetURL(suggestion.path); }); // remove inline display style on autocompleter (we want to // manage responsive display via css) $(.algolia-autocomplete).css(display, ); }) .catch(function(error) { console.log(error); }); }); /script> style typetext/css> .nav-search { font-size: x-small; } /* Algolioa Autocomplete */ .algolia-autocomplete { display: inline-block; margin-left: 10px; vertical-align: sub; background-color: white; color: black; padding: 6px; padding-top: 8px; padding-bottom: 0; border-radius: 6px; border: 1px #0F2E3D solid; width: 180px; } @media screen and (max-width: 768px) { .distill-site-nav .algolia-autocomplete { display: none; visibility: hidden; } .distill-site-nav.responsive .algolia-autocomplete { display: inline-block; visibility: visible; } .distill-site-nav.responsive .algolia-autocomplete .aa-dropdown-menu { margin-left: 0; width: 400px; max-height: 400px; } } .algolia-autocomplete .aa-input, .algolia-autocomplete .aa-hint { width: 90%; outline: none; border: none; } .algolia-autocomplete .aa-hint { color: #999; } .algolia-autocomplete .aa-dropdown-menu { width: 550px; max-height: 70vh; overflow-x: visible; overflow-y: scroll; padding: 5px; margin-top: 3px; margin-left: -150px; background-color: #fff; border-radius: 5px; border: 1px solid #999; border-top: none; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion { cursor: pointer; padding: 5px 4px; border-bottom: 1px solid #eee; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion:last-of-type { border-bottom: none; margin-bottom: 2px; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item { overflow: hidden; font-size: 0.8em; line-height: 1.4em; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item h3 { font-size: 1rem; margin-block-start: 0; margin-block-end: 5px; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-description { display: inline-block; overflow: hidden; height: 2.8em; width: 80%; margin-right: 4%; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview { display: inline-block; width: 15%; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview img { height: 3em; width: auto; display: none; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion .search-item-preview imgsrc { display: initial; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion.aa-cursor { background-color: #eee; } .algolia-autocomplete .aa-dropdown-menu .aa-suggestion em { font-weight: bold; font-style: normal; } /style> !--/radix_placeholder_navigation_in_header--> !--radix_placeholder_distill--> style typetext/css> body { background-color: white; } .pandoc-table { width: 100%; } .pandoc-table>caption { margin-bottom: 10px; } .pandoc-table th:not(align) { text-align: left; } .pagedtable-footer { font-size: 15px; } d-byline .byline { grid-template-columns: 2fr 2fr; } d-byline .byline h3 { margin-block-start: 1.5em; } d-byline .byline .authors-affiliations h3 { margin-block-start: 0.5em; } .authors-affiliations .orcid-id { width: 16px; height:16px; margin-left: 4px; margin-right: 4px; vertical-align: middle; padding-bottom: 2px; } d-title .dt-tags { margin-top: 1em; grid-column: text; } .dt-tags .dt-tag { text-decoration: none; display: inline-block; color: rgba(0,0,0,0.6); padding: 0em 0.4em; margin-right: 0.5em; margin-bottom: 0.4em; font-size: 70%; border: 1px solid rgba(0,0,0,0.2); border-radius: 3px; text-transform: uppercase; font-weight: 500; } d-article table.gt_table td, d-article table.gt_table th { border-bottom: none; font-size: 100%; } .html-widget { margin-bottom: 2.0em; } .l-screen-inset { padding-right: 16px; } .l-screen .caption { margin-left: 10px; } .shaded { background: rgb(247, 247, 247); padding-top: 20px; padding-bottom: 20px; border-top: 1px solid rgba(0, 0, 0, 0.1); border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .shaded .html-widget { margin-bottom: 0; border: 1px solid rgba(0, 0, 0, 0.1); } .shaded .shaded-content { background: white; } .text-output { margin-top: 0; line-height: 1.5em; } .hidden { display: none !important; } hr.section-separator { border: none; border-top: 1px solid rgba(0, 0, 0, 0.1); margin: 0px; } d-byline { border-top: none; } d-article { padding-top: 2.5rem; padding-bottom: 30px; border-top: none; } d-appendix { padding-top: 30px; } d-article>p>img { width: 100%; } d-article h2 { margin: 1rem 0 1.5rem 0; } d-article h3 { margin-top: 1.5rem; } d-article iframe { border: 1px solid rgba(0, 0, 0, 0.1); margin-bottom: 2.0em; width: 100%; } /* Tweak code blocks */ d-article div.sourceCode code, d-article pre code { font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace; } d-article pre, d-article div.sourceCode, d-article div.sourceCode pre { overflow: auto; } d-article div.sourceCode { background-color: white; } d-article div.sourceCode pre { padding-left: 10px; font-size: 12px; border-left: 2px solid rgba(0,0,0,0.1); } d-article pre { font-size: 12px; color: black; background: none; margin-top: 0; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } d-article pre a { border-bottom: none; } d-article pre a:hover { border-bottom: none; text-decoration: underline; } d-article details { grid-column: text; margin-bottom: 0.8em; } @media(min-width: 768px) { d-article pre, d-article div.sourceCode, d-article div.sourceCode pre { overflow: visible !important; } d-article div.sourceCode pre { padding-left: 18px; font-size: 14px; } /* tweak for Pandoc numbered line within distill */ d-article pre.numberSource code > span { left: -2em; } d-article pre { font-size: 14px; } } figure img.external { background: white; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); padding: 18px; box-sizing: border-box; } /* CSS for d-contents */ .d-contents { grid-column: text; color: rgba(0,0,0,0.8); font-size: 0.9em; padding-bottom: 1em; margin-bottom: 1em; padding-bottom: 0.5em; margin-bottom: 1em; padding-left: 0.25em; justify-self: start; } @media(min-width: 1000px) { .d-contents.d-contents-float { height: 0; grid-column-start: 1; grid-column-end: 4; justify-self: center; padding-right: 3em; padding-left: 2em; } } .d-contents nav h3 { font-size: 18px; margin-top: 0; margin-bottom: 1em; } .d-contents li { list-style-type: none } .d-contents nav > ul { padding-left: 0; } .d-contents ul { padding-left: 1em } .d-contents nav ul li { margin-top: 0.6em; margin-bottom: 0.2em; } .d-contents nav a { font-size: 13px; border-bottom: none; text-decoration: none color: rgba(0, 0, 0, 0.8); } .d-contents nav a:hover { text-decoration: underline solid rgba(0, 0, 0, 0.6) } .d-contents nav > ul > li > a { font-weight: 600; } .d-contents nav > ul > li > ul { font-weight: inherit; } .d-contents nav > ul > li > ul > li { margin-top: 0.2em; } .d-contents nav ul { margin-top: 0; margin-bottom: 0.25em; } .d-article-with-toc h2:nth-child(2) { margin-top: 0; } /* Figure */ .figure { position: relative; margin-bottom: 2.5em; margin-top: 1.5em; } .figure .caption { color: rgba(0, 0, 0, 0.6); font-size: 12px; line-height: 1.5em; } .figure img.external { background: white; border: 1px solid rgba(0, 0, 0, 0.1); box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); padding: 18px; box-sizing: border-box; } .figure .caption a { color: rgba(0, 0, 0, 0.6); } .figure .caption b, .figure .caption strong, { font-weight: 600; color: rgba(0, 0, 0, 1.0); } /* Citations */ d-article .citation { color: inherit; cursor: inherit; } div.hanging-indent{ margin-left: 1em; text-indent: -1em; } /* Citation hover box */ .tippy-boxdata-theme~light-border { background-color: rgba(250, 250, 250, 0.95); } .tippy-content > p { margin-bottom: 0; padding: 2px; } /* Tweak 1000px media break to show more text */ @media(min-width: 1000px) { .base-grid, distill-header, d-title, d-abstract, d-article, d-appendix, distill-appendix, d-byline, d-footnote-list, d-citation-list, distill-footer { 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; grid-column-gap: 16px; } .grid { grid-column-gap: 16px; } d-article { font-size: 1.06rem; line-height: 1.7em; } figure .caption, .figure .caption, figure figcaption { font-size: 13px; } } @media(min-width: 1180px) { .base-grid, distill-header, d-title, d-abstract, d-article, d-appendix, distill-appendix, d-byline, d-footnote-list, d-citation-list, distill-footer { 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; grid-column-gap: 32px; } .grid { grid-column-gap: 32px; } } /* Get the citation styles for the appendix (not auto-injected on render since we do our own rendering of the citation appendix) */ d-appendix .citation-appendix, .d-appendix .citation-appendix { font-size: 11px; line-height: 15px; border-left: 1px solid rgba(0, 0, 0, 0.1); padding-left: 18px; border: 1px solid rgba(0,0,0,0.1); background: rgba(0, 0, 0, 0.02); padding: 10px 18px; border-radius: 3px; color: rgba(150, 150, 150, 1); overflow: hidden; margin-top: -12px; white-space: pre-wrap; word-wrap: break-word; } /* Include appendix styles here so they can be overridden */ d-appendix { contain: layout style; font-size: 0.8em; line-height: 1.7em; margin-top: 60px; margin-bottom: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); color: rgba(0,0,0,0.5); padding-top: 60px; padding-bottom: 48px; } d-appendix h3 { grid-column: page-start / text-start; font-size: 15px; font-weight: 500; margin-top: 1em; margin-bottom: 0; color: rgba(0,0,0,0.65); } d-appendix h3 + * { margin-top: 1em; } d-appendix ol { padding: 0 0 0 15px; } @media (min-width: 768px) { d-appendix ol { padding: 0 0 0 30px; margin-left: -30px; } } d-appendix li { margin-bottom: 1em; } d-appendix a { color: rgba(0, 0, 0, 0.6); } d-appendix > * { grid-column: text; } d-appendix > d-footnote-list, d-appendix > d-citation-list, d-appendix > distill-appendix { grid-column: screen; } /* Include footnote styles here so they can be overridden */ d-footnote-list { contain: layout style; } d-footnote-list > * { grid-column: text; } d-footnote-list a.footnote-backlink { color: rgba(0,0,0,0.3); padding-left: 0.5em; } /* Anchor.js */ .anchorjs-link { /*transition: all .25s linear; */ text-decoration: none; border-bottom: none; } *:hover > .anchorjs-link { margin-left: -1.125em !important; text-decoration: none; border-bottom: none; } /* Social footer */ .social_footer { margin-top: 30px; margin-bottom: 0; color: rgba(0,0,0,0.67); } .disqus-comments { margin-right: 30px; } .disqus-comment-count { border-bottom: 1px solid rgba(0, 0, 0, 0.4); cursor: pointer; } #disqus_thread { margin-top: 30px; } .article-sharing a { border-bottom: none; margin-right: 8px; } .article-sharing a:hover { border-bottom: none; } .sidebar-section.subscribe { font-size: 12px; line-height: 1.6em; } .subscribe p { margin-bottom: 0.5em; } .article-footer .subscribe { font-size: 15px; margin-top: 45px; } .sidebar-section.custom { font-size: 12px; line-height: 1.6em; } .custom p { margin-bottom: 0.5em; } /* Styles for listing layout (hide title) */ .layout-listing d-title, .layout-listing .d-title { display: none; } /* Styles for posts lists (not auto-injected) */ .posts-with-sidebar { padding-left: 45px; padding-right: 45px; } .posts-list .description h2, .posts-list .description p { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; } .posts-list .description h2 { font-weight: 700; border-bottom: none; padding-bottom: 0; } .posts-list h2.post-tag { border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding-bottom: 12px; } .posts-list { margin-top: 60px; margin-bottom: 24px; } .posts-list .post-preview { text-decoration: none; overflow: hidden; display: block; border-bottom: 1px solid rgba(0, 0, 0, 0.1); padding: 24px 0; } .post-preview-last { border-bottom: none !important; } .posts-list .posts-list-caption { grid-column: screen; font-weight: 400; } .posts-list .post-preview h2 { margin: 0 0 6px 0; line-height: 1.2em; font-style: normal; font-size: 24px; } .posts-list .post-preview p { margin: 0 0 12px 0; line-height: 1.4em; font-size: 16px; } .posts-list .post-preview .thumbnail { box-sizing: border-box; margin-bottom: 24px; position: relative; max-width: 500px; } .posts-list .post-preview img { width: 100%; display: block; } .posts-list .metadata { font-size: 12px; line-height: 1.4em; margin-bottom: 18px; } .posts-list .metadata > * { display: inline-block; } .posts-list .metadata .publishedDate { margin-right: 2em; } .posts-list .metadata .dt-authors { display: block; margin-top: 0.3em; margin-right: 2em; } .posts-list .dt-tags { display: block; line-height: 1em; } .posts-list .dt-tags .dt-tag { display: inline-block; color: rgba(0,0,0,0.6); padding: 0.3em 0.4em; margin-right: 0.2em; margin-bottom: 0.4em; font-size: 60%; border: 1px solid rgba(0,0,0,0.2); border-radius: 3px; text-transform: uppercase; font-weight: 500; } .posts-list img { opacity: 1; } .posts-list imgdata-src { opacity: 0; } .posts-more { clear: both; } .posts-sidebar { font-size: 16px; } .posts-sidebar h3 { font-size: 16px; margin-top: 0; margin-bottom: 0.5em; font-weight: 400; text-transform: uppercase; } .sidebar-section { margin-bottom: 30px; } .categories ul { list-style-type: none; margin: 0; padding: 0; } .categories li { color: rgba(0, 0, 0, 0.8); margin-bottom: 0; } .categories li>a { border-bottom: none; } .categories li>a:hover { border-bottom: 1px solid rgba(0, 0, 0, 0.4); } .categories .active { font-weight: 600; } .categories .category-count { color: rgba(0, 0, 0, 0.4); } @media(min-width: 768px) { .posts-list .post-preview h2 { font-size: 26px; } .posts-list .post-preview .thumbnail { float: right; width: 30%; margin-bottom: 0; } .posts-list .post-preview .description { float: left; width: 45%; } .posts-list .post-preview .metadata { float: left; width: 20%; margin-top: 8px; } .posts-list .post-preview p { margin: 0 0 12px 0; line-height: 1.5em; font-size: 16px; } .posts-with-sidebar .posts-list { float: left; width: 75%; } .posts-with-sidebar .posts-sidebar { float: right; width: 20%; margin-top: 60px; padding-top: 24px; padding-bottom: 24px; } } /* Improve display for browsers without grid (IE/Edge 15) */ .downlevel { line-height: 1.6em; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; margin: 0; } .downlevel .d-title { padding-top: 6rem; padding-bottom: 1.5rem; } .downlevel .d-title h1 { font-size: 50px; font-weight: 700; line-height: 1.1em; margin: 0 0 0.5rem; } .downlevel .d-title p { font-weight: 300; font-size: 1.2rem; line-height: 1.55em; margin-top: 0; } .downlevel .d-byline { padding-top: 0.8em; padding-bottom: 0.8em; font-size: 0.8rem; line-height: 1.8em; } .downlevel .section-separator { border: none; border-top: 1px solid rgba(0, 0, 0, 0.1); } .downlevel .d-article { font-size: 1.06rem; line-height: 1.7em; padding-top: 1rem; padding-bottom: 2rem; } .downlevel .d-appendix { padding-left: 0; padding-right: 0; max-width: none; font-size: 0.8em; line-height: 1.7em; margin-bottom: 0; color: rgba(0,0,0,0.5); padding-top: 40px; padding-bottom: 48px; } .downlevel .footnotes ol { padding-left: 13px; } .downlevel .base-grid, .downlevel .distill-header, .downlevel .d-title, .downlevel .d-abstract, .downlevel .d-article, .downlevel .d-appendix, .downlevel .distill-appendix, .downlevel .d-byline, .downlevel .d-footnote-list, .downlevel .d-citation-list, .downlevel .distill-footer, .downlevel .appendix-bottom, .downlevel .posts-container { padding-left: 40px; padding-right: 40px; } @media(min-width: 768px) { .downlevel .base-grid, .downlevel .distill-header, .downlevel .d-title, .downlevel .d-abstract, .downlevel .d-article, .downlevel .d-appendix, .downlevel .distill-appendix, .downlevel .d-byline, .downlevel .d-footnote-list, .downlevel .d-citation-list, .downlevel .distill-footer, .downlevel .appendix-bottom, .downlevel .posts-container { padding-left: 150px; padding-right: 150px; max-width: 900px; } } .downlevel pre code { display: block; border-left: 2px solid rgba(0, 0, 0, .1); padding: 0 0 0 20px; font-size: 14px; } .downlevel code, .downlevel pre { color: black; background: none; font-family: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; word-wrap: normal; line-height: 1.5; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } .downlevel .posts-list .post-preview { color: inherit; } /style> script typeapplication/javascript> function is_downlevel_browser() { if (bowser.isUnsupportedBrowser({ msie: 12, msedge: 16}, window.navigator.userAgent)) { return true; } else { return window.load_distill_framework undefined; } } // show body when load is complete function on_load_complete() { // add anchors if (window.anchors) { window.anchors.options.placement left; window.anchors.add(d-article > h2, d-article > h3, d-article > h4, d-article > h5); } // set body to visible document.body.style.visibility visible; // force redraw for leaflet widgets if (window.HTMLWidgets) { var maps window.HTMLWidgets.findAll(.leaflet); $.each(maps, function(i, el) { var map this.getMap(); map.invalidateSize(); map.eachLayer(function(layer) { if (layer instanceof L.TileLayer) layer.redraw(); }); }); } // trigger shown so htmlwidgets resize $(d-article).trigger(shown); } function init_distill() { init_common(); // create front matter var front_matter $(d-front-matter>/d-front-matter>); $(#distill-front-matter).wrap(front_matter); // create d-title $(.d-title).changeElementType(d-title); // separator var separator hr classsection-separator styleclear: both/>; // prepend separator above appendix $(.d-byline).before(separator); $(.d-article).before(separator); // create d-byline var byline $(d-byline>/d-byline>); $(.d-byline).replaceWith(byline); // create d-article var article $(d-article>/d-article>); $(.d-article).wrap(article).children().unwrap(); // move posts container into article $(.posts-container).appendTo($(d-article)); // create d-appendix $(.d-appendix).changeElementType(d-appendix); // flag indicating that we have appendix items var appendix $(.appendix-bottom).children(h3).length > 0; // replace footnotes with d-footnote> $(.footnote-ref).each(function(i, val) { appendix true; var href $(this).attr(href); var id href.replace(#, ); var fn $(# + id); var fn_p $(# + id + >p); fn_p.find(.footnote-back).remove(); var text fn_p.html(); var dtfn $(d-footnote>/d-footnote>); dtfn.html(text); $(this).replaceWith(dtfn); }); // remove footnotes $(.footnotes).remove(); // move refs into #references-listing $(#references-listing).replaceWith($(#refs)); $(h1.appendix, h2.appendix).each(function(i, val) { $(this).changeElementType(h3); }); $(h3.appendix).each(function(i, val) { var id $(this).attr(id); $(.d-contents ahref# + id + ).parent().remove(); appendix true; $(this).nextUntil($(h1, h2, h3)).addBack().appendTo($(d-appendix)); }); // show d-appendix if we have appendix content $(d-appendix).css(display, appendix ? grid : none); // localize layout chunks to just output $(.layout-chunk).each(function(i, val) { // capture layout var layout $(this).attr(data-layout); // apply layout to markdown level block elements var elements $(this).children().not(details, div.sourceCode, pre, script); elements.each(function(i, el) { var layout_div $(div class + layout + >/div>); if (layout_div.hasClass(shaded)) { var shaded_content $(div classshaded-content>/div>); $(this).wrap(shaded_content); $(this).parent().wrap(layout_div); } else { $(this).wrap(layout_div); } }); // unwrap the layout-chunk div $(this).children().unwrap(); }); // remove code block used to force highlighting css $(.distill-force-highlighting-css).parent().remove(); // remove empty line numbers inserted by pandoc when using a // custom syntax highlighting theme, except when numbering line // in code chunk $(pre:not(.numberLines) code.sourceCode a:empty).remove(); // load distill framework load_distill_framework(); // wait for window.distillRunlevel 4 to do post processing function distill_post_process() { if (!window.distillRunlevel || window.distillRunlevel 4) return; // hide author/affiliations entirely if we have no authors var front_matter JSON.parse($(#distill-front-matter).html()); var have_authors front_matter.authors && front_matter.authors.length > 0; if (!have_authors) $(d-byline).addClass(hidden); // article with toc class $(.d-contents).parent().addClass(d-article-with-toc); // strip links that point to # $(.authors-affiliations).find(ahref#).removeAttr(href); // add orcid ids $(.authors-affiliations).find(.author).each(function(i, el) { var orcid_id front_matter.authorsi.orcidID; var author_name front_matter.authorsi.author if (orcid_id) { var a $(a>/a>); a.attr(href, https://orcid.org/ + orcid_id); var img $(img>/img>); img.addClass(orcid-id); img.attr(alt, author_name ? ORCID ID for + author_name : ORCID ID); 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); a.append(img); $(this).append(a); } }); // hide elements of author/affiliations grid that have no value function hide_byline_column(caption) { $(d-byline).find(h3:contains( + caption + )).parent().css(visibility, hidden); } // affiliations var have_affiliations false; for (var i 0; ifront_matter.authors.length; ++i) { var author front_matter.authorsi; if (author.affiliation ! ) { have_affiliations true; break; } } if (!have_affiliations) $(d-byline).find(h3:contains(Affiliations)).css(visibility, hidden); // published date if (!front_matter.publishedDate) hide_byline_column(Published); // document object identifier var doi $(d-byline).find(h3:contains(DOI)); var doi_p doi.next().empty(); if (!front_matter.doi) { // if we have a citation and valid citationText then link to that if ($(#citation).length > 0 && front_matter.citationText) { doi.html(Citation); $(a href#citation>/a>) .text(front_matter.citationText) .appendTo(doi_p); } else { hide_byline_column(DOI); } } else { $(a>/a>) .attr(href, https://doi.org/ + front_matter.doi) .html(front_matter.doi) .appendTo(doi_p); } // change plural form of authors/affiliations if (front_matter.authors.length 1) { var grid $(.authors-affiliations); grid.children(h3:contains(Authors)).text(Author); grid.children(h3:contains(Affiliations)).text(Affiliation); } // remove d-appendix and d-footnote-list local styles $(d-appendix > style:first-child).remove(); $(d-footnote-list > style:first-child).remove(); // move appendix-bottom entries to the bottom $(.appendix-bottom).appendTo(d-appendix).children().unwrap(); $(.appendix-bottom).remove(); // hoverable references $(span.citationdata-cites).each(function() { const citeChild $(this).children()0 // Do not process if @xyz has been used without escaping and without bibliography activated // https://github.com/rstudio/distill/issues/466 if (citeChild undefined) return true if (citeChild.nodeName D-FOOTNOTE) { var fn citeChild $(this).html(fn.shadowRoot.querySelector(sup)) $(this).id fn.id fn.remove() } var refs $(this).attr(data-cites).split( ); var refHtml refs.map(function(ref) { // Could use CSS.escape too here, we insure backward compatibility in navigator return p> + $(dividref- + ref + ).html() + /p>; }).join(\n); window.tippy(this, { allowHTML: true, content: refHtml, maxWidth: 500, interactive: true, interactiveBorder: 10, theme: light-border, placement: bottom-start }); }); // fix footnotes in tables (#411) // replacing broken distill.pub feature $(table d-footnote).each(function() { // we replace internal showAtNode methode which is triggered when hovering a footnote this.hoverBox.showAtNode function(node) { // ported from https://github.com/distillpub/template/pull/105/files calcOffset function(elem) { let x elem.offsetLeft; let y elem.offsetTop; // Traverse upwards until an `absolute` element is found or `elem` // becomes null. while (elem elem.offsetParent && elem.style.position ! absolute) { x + elem.offsetLeft; y + elem.offsetTop; } return { left: x, top: y }; } // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop const bbox node.getBoundingClientRect(); const offset calcOffset(node); this.show(offset.left + bbox.width, offset.top + bbox.height); } }) // clear polling timer clearInterval(tid); // show body now that everything is ready on_load_complete(); } var tid setInterval(distill_post_process, 50); distill_post_process(); } function init_downlevel() { init_common(); // insert hr after d-title $(.d-title).after($(hr classsection-separator/>)); // check if we have authors var front_matter JSON.parse($(#distill-front-matter).html()); var have_authors front_matter.authors && front_matter.authors.length > 0; // manage byline/border if (!have_authors) $(.d-byline).remove(); $(.d-byline).after($(hr classsection-separator/>)); $(.d-byline a).remove(); // remove toc $(.d-contents).remove(); // move appendix elements $(h1.appendix, h2.appendix).each(function(i, val) { $(this).changeElementType(h3); }); $(h3.appendix).each(function(i, val) { $(this).nextUntil($(h1, h2, h3)).addBack().appendTo($(.d-appendix)); }); // inject headers into references and footnotes var refs_header $(h3>/h3>); refs_header.text(References); $(#refs).prepend(refs_header); var footnotes_header $(h3>/h3); footnotes_header.text(Footnotes); $(.footnotes).children(hr).first().replaceWith(footnotes_header); // move appendix-bottom entries to the bottom $(.appendix-bottom).appendTo(.d-appendix).children().unwrap(); $(.appendix-bottom).remove(); // remove appendix if its empty if ($(.d-appendix).children().length 0) $(.d-appendix).remove(); // prepend separator above appendix $(.d-appendix).before($(hr classsection-separator styleclear: both/>)); // trim code $(pre>code).each(function(i, val) { $(this).html($.trim($(this).html())); }); // move posts-container right before article $(.posts-container).insertBefore($(.d-article)); $(body).addClass(downlevel); on_load_complete(); } function init_common() { // jquery plugin to change element types (function($) { $.fn.changeElementType function(newType) { var attrs {}; $.each(this0.attributes, function(idx, attr) { attrsattr.nodeName attr.nodeValue; }); this.replaceWith(function() { return $( + newType + />, attrs).append($(this).contents()); }); }; })(jQuery); // prevent underline for linked images $(a > img).parent().css({border-bottom : none}); // mark non-body figures created by knitr chunks as 100% width $(.layout-chunk).each(function(i, val) { var figures $(this).find(img, .html-widget); // ignore leaflet img layers (#106) figures figures.filter(:not(imgclass*leaflet)) if ($(this).attr(data-layout) ! l-body) { figures.css(width, 100%); } else { figures.css(max-width, 100%); figures.filter(width).each(function(i, val) { var fig $(this); fig.css(width, fig.attr(width) + px); }); } }); // auto-append index.html to post-preview links in file: protocol // and in rstudio ide preview $(.post-preview).each(function(i, val) { if (window.location.protocol file:) $(this).attr(href, $(this).attr(href) + index.html); }); // get rid of index.html references in header if (window.location.protocol ! file:) { $(.distill-site-header ahref).each(function(i,val) { $(this).attr(href, $(this).attr(href).replace(/^index.html/, ./)); }); } // add class to pandoc style tables $(tr.header).parent(thead).parent(table).addClass(pandoc-table); $(.kable-table).children(table).addClass(pandoc-table); // add figcaption style to table captions $(caption).parent(table).addClass(figcaption); // initialize posts list if (window.init_posts_list) window.init_posts_list(); // implmement disqus comment link $(.disqus-comment-count).click(function() { window.headroom_prevent_pin true; $(#disqus_thread).toggleClass(hidden); if (!$(#disqus_thread).hasClass(hidden)) { var offset $(this).offset(); $(window).resize(); $(html, body).animate({ scrollTop: offset.top - 35 }); } }); } document.addEventListener(DOMContentLoaded, function() { if (is_downlevel_browser()) init_downlevel(); else window.addEventListener(WebComponentsReady, init_distill); }); /script> style typetext/css> /* base variables */ /* Edit the CSS properties in this file to create a custom Distill theme. Only edit values in the right column for each row; values shown are the CSS defaults. To return any property to the default, you may set its value to: unset All rows must end with a semi-colon. */ /* Optional: embed custom fonts here with `@import` */ /* This must remain at the top of this file. */ html { /*-- Main font sizes --*/ --title-size: 50px; --body-size: 1.06rem; --code-size: 14px; --aside-size: 12px; --fig-cap-size: 13px; /*-- Main font colors --*/ --title-color: #000000; --header-color: rgba(0, 0, 0, 0.8); --body-color: rgba(0, 0, 0, 0.8); --aside-color: rgba(0, 0, 0, 0.6); --fig-cap-color: rgba(0, 0, 0, 0.6); /*-- Specify custom fonts ~~~ must be imported above --*/ --heading-font: sans-serif; --mono-font: monospace; --body-font: sans-serif; --navbar-font: sans-serif; /* websites + blogs only */ } /*-- ARTICLE METADATA --*/ d-byline { --heading-size: 0.6rem; --heading-color: rgba(0, 0, 0, 0.5); --body-size: 0.8rem; --body-color: rgba(0, 0, 0, 0.8); } /*-- ARTICLE TABLE OF CONTENTS --*/ .d-contents { --heading-size: 18px; --contents-size: 13px; } /*-- ARTICLE APPENDIX --*/ d-appendix { --heading-size: 15px; --heading-color: rgba(0, 0, 0, 0.65); --text-size: 0.8em; --text-color: rgba(0, 0, 0, 0.5); } /*-- WEBSITE HEADER + FOOTER --*/ /* These properties only apply to Distill sites and blogs */ .distill-site-header { --title-size: 18px; --text-color: rgba(255, 255, 255, 0.8); --text-size: 15px; --hover-color: white; --bkgd-color: #0F2E3D; } .distill-site-footer { --text-color: rgba(255, 255, 255, 0.8); --text-size: 15px; --hover-color: white; --bkgd-color: #0F2E3D; } /*-- Additional custom styles --*/ /* Add any additional CSS rules below */ /style> style typetext/css>/* visited link a:link { color: #0574e3; text-decoration: none; border: none; } /* visited link a:visited { color: #033363; text-decoration: none; border: none; } /* mouse over link a:hover { color: #db0284; } /* selected link a:active { color: #707070; text-decoration: none; } /*----------------NAVBAR ---------------*/ .distill-site-header .nav-dropdown:hover .nav-dropdown-content {display: block;} .distill-site-header { --title-size: 18px; --text-color: #ffffff; /* edited */ --text-size: 16px; --hover-color: #dedede; /* edited */ background-image: linear-gradient(#00052e, #000636 60%, #033769); /* --bkgd-color: #0f7bd4; #00abba edited #595959 gray #2e2e4a dark blue*/ } .nav-dropbtn { color: #ffffff !important; } .nav-dropbtn:hover { color: #dedede !important; } .nav-dropdown-content a:hover { color: #dedede !important; background-color: #044687 !important; } p a:link { color: #178acc; border: none !important; } p a:visited { color: #178acc; /*#0fa394*/ border: none !important; }/style> style typetext/css> /* base style */ /* FONT FAMILIES */ :root { --heading-default: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; --mono-default: Consolas, Monaco, Andale Mono, Ubuntu Mono, monospace; --body-default: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif; } body, .posts-list .post-preview p, .posts-list .description p { font-family: var(--body-font), var(--body-default); } h1, h2, h3, h4, h5, h6, .posts-list .post-preview h2, .posts-list .description h2 { font-family: var(--heading-font), var(--heading-default); } d-article div.sourceCode code, d-article pre code { font-family: var(--mono-font), var(--mono-default); } /*-- TITLE --*/ d-title h1, .posts-list > h1 { color: var(--title-color, black); } d-title h1 { font-size: var(--title-size, 50px); } /*-- HEADERS --*/ d-article h1, d-article h2, d-article h3, d-article h4, d-article h5, d-article h6 { color: var(--header-color, rgba(0, 0, 0, 0.8)); } /*-- BODY --*/ d-article > p, /* only text inside of p> tags */ d-article > ul, /* lists */ d-article > ol { color: var(--body-color, rgba(0, 0, 0, 0.8)); font-size: var(--body-size, 1.06rem); } /*-- CODE --*/ d-article div.sourceCode code, d-article pre code { font-size: var(--code-size, 14px); } /*-- ASIDE --*/ d-article aside { font-size: var(--aside-size, 12px); color: var(--aside-color, rgba(0, 0, 0, 0.6)); } /*-- FIGURE CAPTIONS --*/ figure .caption, figure figcaption, .figure .caption { font-size: var(--fig-cap-size, 13px); color: var(--fig-cap-color, rgba(0, 0, 0, 0.6)); } /*-- METADATA --*/ d-byline h3 { font-size: var(--heading-size, 0.6rem); color: var(--heading-color, rgba(0, 0, 0, 0.5)); } d-byline { font-size: var(--body-size, 0.8rem); color: var(--body-color, rgba(0, 0, 0, 0.8)); } d-byline a, d-article d-byline a { color: var(--body-color, rgba(0, 0, 0, 0.8)); } /*-- TABLE OF CONTENTS --*/ .d-contents nav h3 { font-size: var(--heading-size, 18px); } .d-contents nav a { font-size: var(--contents-size, 13px); } /*-- APPENDIX --*/ d-appendix h3 { font-size: var(--heading-size, 15px); color: var(--heading-color, rgba(0, 0, 0, 0.65)); } d-appendix { font-size: var(--text-size, 0.8em); color: var(--text-color, rgba(0, 0, 0, 0.5)); } d-appendix d-footnote-list a.footnote-backlink { color: var(--text-color, rgba(0, 0, 0, 0.5)); } /*-- WEBSITE HEADER + FOOTER --*/ .distill-site-header .title { font-size: var(--title-size, 18px); font-family: var(--navbar-font), var(--heading-default); } .distill-site-header a, .nav-dropdown .nav-dropbtn { font-family: var(--navbar-font), var(--heading-default); } .nav-dropdown .nav-dropbtn { color: var(--text-color, rgba(255, 255, 255, 0.8)); font-size: var(--text-size, 15px); } .distill-site-header a:hover, .nav-dropdown:hover .nav-dropbtn { color: var(--hover-color, white); } .distill-site-header { font-size: var(--text-size, 15px); color: var(--text-color, rgba(255, 255, 255, 0.8)); background-color: var(--bkgd-color, #0F2E3D); } .distill-site-footer { font-size: var(--text-size, 15px); color: var(--text-color, rgba(255, 255, 255, 0.8)); background-color: var(--bkgd-color, #0F2E3D); } .distill-site-footer a:hover { color: var(--hover-color, white); }/style> !--/radix_placeholder_distill--> script srcsite_libs/header-attrs-2.29/header-attrs.js>/script> script srcsite_libs/popper-2.6.0/popper.min.js>/script> link hrefsite_libs/tippy-6.2.7/tippy.css relstylesheet /> link hrefsite_libs/tippy-6.2.7/tippy-light-border.css relstylesheet /> script srcsite_libs/tippy-6.2.7/tippy.umd.min.js>/script> script srcsite_libs/anchor-4.2.2/anchor.min.js>/script> script srcsite_libs/bowser-1.9.3/bowser.min.js>/script> script srcsite_libs/webcomponents-2.0.0/webcomponents.js>/script> script srcsite_libs/distill-2.2.21/template.v2.js>/script> !--radix_placeholder_site_in_header--> link relapple-touch-icon sizes76x76 href/utils/favicon/apple-touch-icon.png> link relicon typeimage/png sizes32x32 href/utils/favicon/favicon-32x32.png> link relicon typeimage/png sizes16x16 href/utils/favicon/favicon-16x16.png> link relmanifest href/utils/favicon/site.webmanifest> link relmask-icon href/utils/favicon/safari-pinned-tab.svg color#0037b7> link relshortcut icon href/utils/favicon/favicon.ico> meta namemsapplication-TileColor content#da532c> meta namemsapplication-config content/utils/favicon/browserconfig.xml> meta nametheme-color content#ffffff> meta namegoogle-site-verification contentDEk-pKjfb4ICJl32fQnoDnc23qunELk6T3K49utv0VI /> meta namegoogle-site-verification contentb4Z5xNLoBTvx7Wx0cjdNpbVrYdARie-0kDL7Ip3SWY0 /> !--/radix_placeholder_site_in_header--> meta nameimage propertyog:image contenthttps://www.altanalyticsllc.com/utils/images/woven_hero.png> div classhero-image> div classtext-overlay> div classtop-text>ALT Analytics/div> div classbottom-text>Speaks Business, Delivers Technology/div> /div> /div> link relstylesheet hrefutils/hero/hero_main.css typetext/css/> link relstylesheet hrefutils/styles.css typetext/css/>/head>body classlayout-listing>!--radix_placeholder_front_matter-->script iddistill-front-matter typetext/json>{title:ALT Analytics LLC,description:Speaks Business, Delivers Technology,authors:}/script>!--/radix_placeholder_front_matter-->!--radix_placeholder_navigation_before_body-->header classheader header--fixed rolebanner>nav classdistill-site-nav distill-site-header>div classnav-left>a hrefindex.html classtitle>ALT Analytics/a>a hrefindex.html>Home/a>a hrefabout.html>About/a>div classnav-dropdown>button classnav-dropbtn>Services and Use Cases span classdown-arrow>▾/span>/button>div classnav-dropdown-content>a hrefservice_bie.html>Business Intelligence/a>a hrefservice_de.html>Data Engineering/a>a hrefservice_cloud.html>Cloud Architecture/a>a hrefservice_fin.html>Financial Modeling/a>a hrefservice_security.html>Cyber Security/a>a hrefservice_api.html>APIs & Automation/a>a hrefservice_insights.html>Insights & Analysis/a>a hrefservice_pm.html>Product Management/a>a hrefservice_llm.html>Large Language Models/a>a hrefservice_fpa.html>FP&A/a>a hrefservice_web.html>Web Development/a>a hrefservice_trade.html>Trading & Investing/a>a hrefservice_ds.html>Data Science/a>/div>/div>a hreffavs.html>Favorite Posts/a>a hrefhttps://altanalytics.github.io>Exploring Finance/a>a hrefblog.html>Insights/a>input iddistill-search classnav-search hidden typetext placeholderSearch.../>/div>div classnav-right>a hrefhttps://github.com/altanalytics/ aria-labelLink to source>i classfab fa-github aria-hiddentrue>/i>/a>a hrefjavascript:void(0); classnav-toggle>☰/a>/div>/nav>/header>!--/radix_placeholder_navigation_before_body-->!--radix_placeholder_site_before_body-->!--/radix_placeholder_site_before_body-->!--radix_placeholder_article_listing-->script typeapplication/javascript>function init_posts_list() { function load_image(img) { var src $(img).attr(data-src); if (src) { $(img).attr(src, src); $(img).on(load, function() { img.removeAttribute(data-src); }); } } function set_posts_visible(posts, visible) { if (visible) { // show bottom border by default $(posts).removeClass(post-preview-last); // apply limits if need be var max_posts 25; var apply_limits $(.posts-container).hasClass(posts-apply-limit); if (apply_limits && posts.length > max_posts) { posts $(posts).slice(0, max_posts); } else { $(.posts-more a).addClass(hidden); } // apply last style $(posts.slice(-1)0).addClass(post-preview-last); $(posts).removeClass(hidden); $(posts).find(imgdata-src).each(function(i, img) { load_image(img); }); } else { $(posts).addClass(hidden); } } function apply_hash_filter() { // clear active state $(.categories .active).removeClass(active); // mark all posts invisible to start set_posts_visible($(.posts-list).children(a), false); // if we have a hash filter if (window.location.hash && window.location.hash.startsWith(#category:)) { // mark posts that match the category visible var page_category window.location.hash.replace(/^#category:/, ); page_category decodeURIComponent(page_category) var posts $(.post-metadata).map(function(idx, script) { var metadata $.parseJSON($(script).html()); var post null; $.each(metadata.categories, function(idx, category) { category category.replace(/ /g,_); if ((page_category || ).toLowerCase() articles || category page_category) { post $(script).parent().get(); return false; } }); return post; }); set_posts_visible(posts, true); // mark the hash active $(.categories li>ahref + decodeURIComponent(window.location.hash) + ).addClass(active); // update the list_caption var list_caption $(.posts-list-caption); var caption (page_category || ).toLowerCase() articles ? list_caption.attr(data-caption) : (Category: + page_category.replace(/_/g, )); list_caption.text(caption); } else { // no hash filter, make all posts visible (subject to max display) set_posts_visible($(.posts-list).children(), true); // reset list caption var list_caption $(.posts-list-caption); list_caption.text(list_caption.attr(data-caption)); } } // more articles function apply_post_limits(apply) { if (apply) { $(.posts-container).addClass(posts-apply-limit); $(.posts-more a).removeClass(hidden); } else { $(.posts-container).removeClass(posts-apply-limit); $(.posts-more a).addClass(hidden); } } // click handling for tags $(.dt-tag).click(function(ev) { window.location.hash #category: + $(this).text().replace(/ /g, _); return false; }) // hash filter handling apply_hash_filter(); $(window).on(hashchange,function() { apply_post_limits(true); apply_hash_filter(); }); // more articles link $(.posts-more a).click(function(e) { e.preventDefault(); apply_post_limits(false); apply_hash_filter(); return false; });}/script>div classposts-container posts-with-sidebar posts-apply-limit l-screen-inset>div classposts-list>h1 classposts-list-caption data-captionALT Analytics LLC>ALT Analytics LLC/h1>a hrefposts/2023-10-18-private-llm-chatbot/ classpost-preview>script classpost-metadata typetext/json>{categories:Tech}/script>div classmetadata>div classpublishedDate>Oct. 18, 2023/div>div classdt-authors>div classdt-author>Tony Trevisan/div>/div>/div>div classthumbnail>img srcposts/2023-10-18-private-llm-chatbot/Images/Image1.png/>/div>div classdescription>h2>Has Your Company Banned Chat Bots? Propose This Solution.../h2>div classdt-tags>div classdt-tag>Tech/div>/div>p>If you are not leveraging the power of AI, you are at a major disadvantage/p>/div>/a>a hrefposts/2022-11-14-automated-trading-and-investing-using-aws/ classpost-preview>script classpost-metadata typetext/json>{categories:Investing,rameritrade,etrader,Packages}/script>div classmetadata>div classpublishedDate>Nov. 14, 2022/div>div classdt-authors>div classdt-author>Tony Trevisan/div>/div>/div>div classthumbnail>img srcposts/2022-11-14-automated-trading-and-investing-using-aws/images/rstudio_layout.png/>/div>div classdescription>h2>Automated trading and investing using RStudio on AWS/h2>div classdt-tags>div classdt-tag>Investing/div>div classdt-tag>rameritrade/div>div classdt-tag>etrader/div>div classdt-tag>Packages/div>/div>p>Set up a trading server in minutes. R offers multiple packages that connect to trading APIs. Trading scripts can be deployed and fully automated, for 12 months free and $3 a month thereafter./p>/div>/a>a hrefposts/2022-05-17-setting-up-an-aws-analytics-server-and-api-in-15-minutes/ classpost-preview>script classpost-metadata typetext/json>{categories:}/script>div classmetadata>div classpublishedDate>May 17, 2022/div>div classdt-authors>div classdt-author>Tony Trevisan/div>/div>/div>div classthumbnail>img/>/div>div classdescription>h2>Setting up an AWS analytics server and API in minutes/h2>div classdt-tags>/div>p>The steps to stand up an AWS server that can be used to host an analytics dashboardand/or a data feed API/p>/div>/a>/div>div classposts-sidebar>div classsidebar-section categories>h3>Categories/h3>ul>li>a href#category:Articles>Articles/a>span classcategory-count>(3)/span>/li>li>a href#category:etrader>etrader/a>span classcategory-count>(1)/span>/li>li>a href#category:Investing>Investing/a>span classcategory-count>(1)/span>/li>li>a href#category:Packages>Packages/a>span classcategory-count>(1)/span>/li>li>a href#category:rameritrade>rameritrade/a>span classcategory-count>(1)/span>/li>li>a href#category:Tech>Tech/a>span classcategory-count>(1)/span>/li>/ul>/div>/div>div classposts-more>a href#>More articles »/a>/div>/div>!--/radix_placeholder_article_listing-->div classd-title>h1>ALT Analytics LLC/h1>!--radix_placeholder_categories-->!--/radix_placeholder_categories-->p>p>Speaks Business, Delivers Technology/p>/p>/div>div classd-article>p>strong>ALT Analytics LLC/strong> bridges the communication gap between business and technology. Led by Tony Trevisan—a software and data engineer with deep business expertise—ALT Analytics specializes in transforming complex ideas into impactful solutions./p>p>By combining technical proficiency with business acumen, ALT Analytics overcomes the communication breakdowns that often hinder progress. Through rapid prototyping, we minimize the need for prolonged requirements gathering or lengthy documentation, delivering results quickly and efficiently. From building scalable systems and crafting financial models to developing dynamic web platforms, every solution is aligned with your business goals and built on cutting-edge technology./p>p>The result: dynamic tools, streamlined processes, strong>secure environments/strong>, and a robust infrastructure that drives lasting value across your organization./p>p>Contact Tony Trevisan to learn more: a hrefmailto:tony@altanalyticsllc.com>tony@altanalyticsllc.com/a>Discover more at our sister site: a hrefhttps://altanalytics.github.io>Exploring Finance/a>./p>hr />!-- Prelims -->style>@media (max-width: 600px) { table { display: block; border-collapse: collapse; border: none; } thead, tbody, th, td, tr { display: block; } th { text-align: left; }}/style>center>h1>Services and Use Cases/h1>/center>!-- Section 1 of Services -->div styleoverflow-x: auto;>table styleborder-collapse: collapse; border: none;>tr>td styletext-align: center; position: relative;>a hrefservice_bie.html>img srcutils/images/analysis5.avif altBIE stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Business Intelligence/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_de.html>img srcutils/images/data_eng.jpeg altDE stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Data Engineering/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_cloud.html>img srcutils/images/cloud9.png altCloud stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Cloud Architecture/span>/a>/td>/tr>/table>/div>!-- Section 2 of Services -->div styleoverflow-x: auto;>table styleborder-collapse: collapse; border: none;>tr>td styletext-align: center; position: relative;>a hrefservice_fin.html>img srcutils/images/insights1.jpeg altFin stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Financial Modeling/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_security.html>img srcutils/images/security.jpeg altPred stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Cyber Security/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_api.html>img srcutils/images/api5.jpeg altAPI stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>APIs & Automation/span>/a>/td>/tr>/table>/div>!-- Section 3 of Services -->div styleoverflow-x: auto;>table styleborder-collapse: collapse; border: none;>td styletext-align: center; position: relative;>a hrefservice_insights.html>img srcutils/images/analytics_edit.png altinsights stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Insights & Analysis/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_pm.html>img srcutils/images/prod_mgmt.jpeg altPM stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Product Management/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_llm.html>img srcutils/images/LLM2.png altLLM stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Large Language Models/span>/a>/td>/tr>/table>/div>!-- Section 4 of Services -->div styleoverflow-x: auto;>table styleborder-collapse: collapse; border: none;>tr>td styletext-align: center; position: relative;>a hrefservice_fpa.html>img srcutils/images/fpa.jpeg altfpa stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>FP&A/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_web.html>img srcutils/images/web_dev.jpeg altWeb stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Web Development/span>/a>/td>td styletext-align: center; position: relative;>a hrefservice_trade.html>img srcutils/images/trade_invest.jpeg altInvest stylewidth: 200px; height: 150px; object-fit: cover; opacity: 0.65;>span styleposition: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 20px; background-color: rgba(0, 0, 0, 0.7); padding: 10px; box-sizing: border-box; max-width: 200px; width: 100%; text-align: center;>Trading & Investing/span>/a>/td>/tr>/table>/div>hr />center>h1>Featured posts/h1>/center>div classsourceCode idcb1>pre classsourceCode r distill-force-highlighting-css>code classsourceCode r>/code>/pre>/div>!--radix_placeholder_article_footer-->!--/radix_placeholder_article_footer-->/div>div classd-appendix>/div>!--radix_placeholder_site_after_body-->!--/radix_placeholder_site_after_body-->!--radix_placeholder_appendices-->div classappendix-bottom>/div>!--/radix_placeholder_appendices-->!--radix_placeholder_navigation_after_body-->div classdistill-site-nav distill-site-footer>p>Contact Tony Trevisan to learn more about how ALT Analytics can helpyou: ahrefmailto:tony@altanalyticsllc.com>tony@altanalyticsllc.com/a>/p>/div>!--/radix_placeholder_navigation_after_body-->/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]