A repo for my personal website
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Pushing custom theme content out of submodule

+796
+324
new-site/assets/sass/main.scss
··· 1 + /* Can be forced with data-theme="light" */ 2 + [data-theme="light"], 3 + :root:not([data-theme="dark"]) { 4 + --muted-color: #4b5c4f !important; 5 + --link-color: #275933 !important; 6 + } 7 + 8 + /* Automatically enabled if user has Dark mode enabled */ 9 + @media only screen and (prefers-color-scheme: dark) { 10 + :root:not([data-theme="light"]) { 11 + --muted-color: #8fb197 !important; 12 + --link-color: #4ba862 !important; 13 + } 14 + } 15 + 16 + /* Enabled if forced with data-theme="dark" */ 17 + [data-theme="dark"] { 18 + --muted-color: #8fb197 !important; 19 + --link-color: #4ba862 !important; 20 + } 21 + 22 + :root { 23 + --spacing-hero: 5rem; 24 + --border-radius: 0.3rem !important; 25 + } 26 + 27 + *, 28 + ::after, 29 + ::before { 30 + box-sizing: border-box; 31 + } 32 + 33 + html { 34 + -webkit-tap-highlight-color: transparent; 35 + overflow-y: scroll; 36 + scroll-behavior: smooth; 37 + } 38 + 39 + .hero { 40 + background-color: #38463c; 41 + background-position: center; 42 + background-size: cover; 43 + h1, 44 + a[role='button'].outline.contrast { 45 + color: #edf3ef; 46 + border-color: #edf3ef; 47 + } 48 + .hero-buttons { 49 + margin: 10px 10px 10px 0; 50 + color: var(--mark-color); 51 + } 52 + } 53 + header { 54 + padding: var(--spacing-hero) 0; 55 + } 56 + 57 + .logo { 58 + width: fit-content; 59 + display: flex; 60 + align-items: center; 61 + } 62 + 63 + @media (min-width: 0px) and (max-width: 1200px) { 64 + main { 65 + margin-top: 50px; 66 + } 67 + } 68 + 69 + img { 70 + object-fit: cover; 71 + } 72 + 73 + .text-center { 74 + text-align: center; 75 + } 76 + 77 + .button, 78 + kbd { 79 + margin: 10px; 80 + } 81 + img, 82 + .button { 83 + border-radius: var(--border-radius); 84 + } 85 + 86 + a { 87 + text-decoration: none !important; 88 + color: var(--link-color); 89 + } 90 + 91 + .grid { 92 + article { 93 + padding: calc(var(--spacing) * 1.2) var(--block-spacing-horizontal); 94 + margin: 1rem 0; 95 + } 96 + } 97 + 98 + @media (min-width: 992px) { 99 + .grid-post { 100 + grid-template-columns: repeat(3, 1fr) !important; 101 + } 102 + } 103 + @media (min-width: 992px) { 104 + .grid-main { 105 + grid-template-columns: 2fr 1fr !important; 106 + } 107 + } 108 + 109 + .toc { 110 + padding: 2rem 1.2rem 1rem 1.2rem; 111 + } 112 + 113 + .share-buttons { 114 + background: var(--card-background-color); 115 + padding: 10px; 116 + border-radius: var(--border-radius); 117 + box-shadow: var(--card-box-shadow); 118 + display: flex; 119 + flex-wrap: wrap; 120 + justify-content: center; 121 + gap: 0.65rem; 122 + svg { 123 + color: var(--contrast) !important; 124 + width: 1.875rem; 125 + height: 1.875rem; 126 + } 127 + } 128 + 129 + .searchbox, 130 + .contact-form { 131 + max-width: 700px; 132 + margin: auto; 133 + } 134 + 135 + .search-result { 136 + background: var(--card-background-color); 137 + padding: 20px; 138 + border-radius: var(--border-radius); 139 + box-shadow: var(--card-box-shadow); 140 + margin: 10px 0; 141 + hgroup { 142 + margin: 0; 143 + } 144 + h6 { 145 + width: 100%; 146 + white-space: nowrap; 147 + overflow: hidden; 148 + text-overflow: ellipsis; 149 + } 150 + } 151 + 152 + .cover { 153 + float: left; 154 + margin: 0 20px 0 0; 155 + width: 300px; 156 + max-width: 100%; 157 + pointer-events: none; 158 + } 159 + @media (min-width: 0px) and (max-width: 576px) { 160 + .cover { 161 + float: none; 162 + margin: 10px auto; 163 + } 164 + } 165 + 166 + .post { 167 + &::first-letter { 168 + font-size: 300%; 169 + padding: 0px 5px 0px 0px; 170 + margin: -15px 6px -15px 0; 171 + float: left; 172 + } 173 + } 174 + 175 + .highlight, 176 + code, 177 + pre { 178 + position: relative !important; 179 + } 180 + 181 + .copy-code { 182 + z-index: 99; 183 + cursor: pointer; 184 + display: none; 185 + position: absolute; 186 + top: 4px; 187 + right: 4px; 188 + color: rgba(255, 255, 255, 0.8); 189 + background: rgba(78, 78, 78, 0.8); 190 + border-radius: var(--border-radius); 191 + padding: 0 5px; 192 + font-size: 14px; 193 + user-select: none; 194 + } 195 + 196 + .highlight:hover, 197 + code:hover, 198 + pre:hover { 199 + .copy-code { 200 + display: block; 201 + } 202 + } 203 + 204 + .page-item.active { 205 + font-size: larger; 206 + font-weight: bold; 207 + } 208 + 209 + .archive-posts { 210 + width: 100%; 211 + font-size: 16px; 212 + } 213 + 214 + .archive-year { 215 + margin-top: 40px; 216 + } 217 + 218 + .archive-year:not(:last-of-type) { 219 + border-bottom: 2px solid var(--border); 220 + } 221 + 222 + .archive-year-header { 223 + text-align: center; 224 + } 225 + 226 + .archive-month { 227 + display: flex; 228 + align-items: flex-start; 229 + padding: 10px 0; 230 + } 231 + 232 + .archive-month-header { 233 + margin: 25px 0 25px auto; 234 + width: 200px; 235 + } 236 + 237 + .archive-month:not(:last-of-type) { 238 + border-bottom: 1px solid var(--border); 239 + } 240 + 241 + .archive-entry { 242 + position: relative; 243 + padding: 5px; 244 + margin: 10px 0; 245 + } 246 + 247 + .archive-entry-title { 248 + margin: 5px 0; 249 + font-weight: 400; 250 + } 251 + 252 + .archive-count, 253 + .archive-meta { 254 + color: var(--secondary); 255 + font-size: 14px; 256 + } 257 + 258 + .entry-link { 259 + position: absolute; 260 + left: 0; 261 + right: 0; 262 + top: 0; 263 + bottom: 0; 264 + } 265 + 266 + .anchor, 267 + .hidden { 268 + display: none; 269 + } 270 + 271 + h1, 272 + h2, 273 + h3, 274 + h4, 275 + h5, 276 + h6 { 277 + &:hover { 278 + .anchor { 279 + cursor: pointer; 280 + display: inline-flex; 281 + margin-inline-start: 8px; 282 + font-weight: 500; 283 + user-select: none; 284 + } 285 + } 286 + } 287 + 288 + .min-h-80 { 289 + min-height: 80vh; 290 + } 291 + 292 + kbd, 293 + .grid-post article, 294 + a[role='button'], 295 + .search-result, 296 + .portfolio-post { 297 + transition: 0.3s ease; 298 + &:hover { 299 + animation: hover 0.3s ease; 300 + transform: scale3d(1.05, 1.05, 1.05); 301 + } 302 + } 303 + 304 + #cookie-banner { 305 + position: fixed; 306 + top: 0; 307 + z-index: 100; 308 + top: 3%; 309 + right: 3%; 310 + max-width: 400px; 311 + opacity: 0.9; 312 + } 313 + 314 + @keyframes hover { 315 + 0% { 316 + transform: scale3d(1, 1, 1); 317 + } 318 + 50% { 319 + transform: scale3d(1.08, 1.08, 1.08); 320 + } 321 + 100% { 322 + transform: scale3d(1.05, 1.05, 1.05); 323 + } 324 + }
+67
new-site/layouts/_default/contact.html
··· 1 + {{ define "main" }} 2 + <div class="min-h-80 contact-form"> 3 + <div class="container"> 4 + <hgroup> 5 + {{ partial "breadcrumbs.html" . }} 6 + <h1>{{ .Title }}</h1> 7 + <h2>{{ .Description }}</h2> 8 + </hgroup> 9 + <form name="contact" method="POST" action="{{ .Site.Params.contactFormAction | relURL }}" > 10 + <input name="_redirect" type="hidden" id="name" value="{{"/thanks/" | absURL}}"> 11 + <input name="_formsubmit_id" type="text" hidden> 12 + <div class="grid"> 13 + 14 + <label for="firstname"> 15 + First name 16 + <input type="text" id="firstname" name="firstname" placeholder="First name" required> 17 + </label> 18 + 19 + <label for="lastname"> 20 + Last name 21 + <input type="text" id="lastname" name="lastname" placeholder="Last name"> 22 + </label> 23 + 24 + </div> 25 + 26 + <label for="email">Email address</label> 27 + <input type="email" id="email" name="email" placeholder="Email address" required> 28 + <small>We'll never share your email with anyone else.</small> 29 + 30 + <label for="email">Your message</label> 31 + <textarea name="message" id="message" cols="30" rows="5" style="resize: none;" required></textarea> 32 + <small>Please let me know how I can help you.</small> 33 + 34 + <input type="submit"> 35 + 36 + </form> 37 + </div> 38 + <div class="container"> 39 + <p>Alternatively, you can reach out to me on my socials:</p> 40 + {{ range .Params.Socials }} 41 + <a href="{{ .Link }}" style="text-decoration: none;color: #ccc"><span style="padding-left:2px;"></span> 42 + {{ if eq .Icon "twitter" }} 43 + {{ partial "twitter-icon.html" }} 44 + {{ else if eq .Icon "linkedin" }} 45 + {{ partial "linkedin-icon.html" }} 46 + {{ else if eq .Icon "reddit" }} 47 + {{ partial "reddit-icon.html" }} 48 + {{ else if eq .Icon "facebook" }} 49 + {{ partial "facebook-icon.html" }} 50 + {{ else if eq .Icon "whatsapp" }} 51 + {{ partial "whatsapp-icon.html" }} 52 + {{ else if eq .Icon "telegram" }} 53 + {{ partial "telegram-icon.html" }} 54 + {{ else if eq .Icon "mastodon" }} 55 + {{ partial "mastodon-icon.html" }} 56 + {{ else if eq .Icon "instagram" }} 57 + {{ partial "instagram-icon.html" }} 58 + {{ else if eq .Icon "youtube" }} 59 + {{ partial "youtube-icon.html" }} 60 + {{ else if eq .Icon "twitch" }} 61 + {{ partial "twitch-icon.html" }} 62 + {{ end }} 63 + </span></a> 64 + {{ end }} 65 + </div> 66 + </div> 67 + {{ end }}
+128
new-site/layouts/index.html
··· 1 + {{ define "main" }} 2 + {{- if not (.Site.Params.homepage.disableHeroSection) }} 3 + <section class="hero" style="background-image:linear-gradient(rgba(20,30,38, 0.9), rgba(24,44,54, 0.8)), 4 + url('{{.Site.Params.homepage.heroBackgroundImage}}'); "> 5 + <header class="container"> 6 + <hgroup> 7 + <h1>{{.Site.Params.homepage.heroUpperTitle}}</h1> 8 + <h1>{{.Site.Params.homepage.heroTitle}}</h1> 9 + <h2>{{.Site.Params.homepage.heroDescription}}</h2> 10 + </hgroup> 11 + <div> 12 + <a 13 + class="hero-buttons" 14 + href="{{ .Site.Params.homepage.heroCTAPrimaryUrl | relURL }}" 15 + role="button" 16 + >{{.Site.Params.homepage.heroCTAPrimaryText}}</a 17 + > 18 + <a 19 + href="{{ .Site.Params.homepage.heroCTASecondaryUrl | relURL }}" 20 + role="button" 21 + class="contrast outline" 22 + >{{.Site.Params.homepage.heroCTASecondaryText}}</a 23 + > 24 + </div> 25 + </header> 26 + </section> 27 + {{ end }} 28 + 29 + 30 + {{- if not (.Site.Params.homepage.disableBlogSection) }} 31 + <section> 32 + <hgroup class="text-center"> 33 + <h2>{{.Site.Params.homepage.blogTitle}}</h2> 34 + <h3>{{.Site.Params.homepage.blogDescription}}</h3> 35 + </hgroup> 36 + <div class="container"> 37 + <div class="grid grid-post"> 38 + {{ $paginator := .Paginate (where site.RegularPages "Type" "in" site.Params.mainSections | first 39 + 3) }} {{ range $paginator.Pages }} 40 + <a href="{{ .RelPermalink }}"> 41 + <article class="text-center"> 42 + {{if .Params.Cover.Image}} 43 + <figure> 44 + <img 45 + src="{{.Params.Cover.Image | absURL}}" 46 + width="600" 47 + height="400" 48 + layout="responsive" 49 + ></img> 50 + {{ end }} 51 + </figure> 52 + <hgroup> 53 + <h3>{{ .Title }}</h3> 54 + <hr /> 55 + <p> 56 + {{ .Description | plainify | htmlUnescape | truncate 100 }}{{ if 57 + .Truncated }}...{{ end }} 58 + </p> 59 + </hgroup> 60 + <small> {{- partial "post_meta.html" . -}} </small> 61 + </article> 62 + </a> 63 + {{ end }} 64 + </div> 65 + </div> 66 + <div class="text-center"> 67 + <a href="{{ "/blog" | absLangURL }}"><kbd>{{.Site.Params.homepage.seeMoreText}}</kbd></a> 68 + </div> 69 + </section> 70 + {{ end }} 71 + 72 + {{- if not (.Site.Params.homepage.disableAboutSection) }} 73 + <section> 74 + <hgroup class="text-center"> 75 + <a id="about"><h2>{{.Site.Params.homepage.aboutTitle}}</h2></a> 76 + <h3>{{.Site.Params.homepage.aboutDescription}}</h3> 77 + </hgroup> 78 + <div class="container"> 79 + <div class="grid"> 80 + <div class="container" style="text-align: right;"> 81 + <img 82 + src="{{.Site.Params.homepage.aboutImgUrl}}" 83 + alt="{{.Site.Params.author}}" 84 + width="300" 85 + height="450" 86 + layout="intrinsic" 87 + ></img> 88 + </div> 89 + <div class="container"> 90 + {{ range .Site.Params.homepage.aboutContent }} 91 + <p>{{ . }}</p> 92 + {{ end }} 93 + </div> 94 + </div> 95 + </div> 96 + </section> 97 + {{ end }} 98 + 99 + {{- if not (.Site.Params.homepage.disablePortfolioSection) }} 100 + <section> 101 + <hgroup class="text-center"> 102 + <a id="portfolio"><h2>{{.Site.Params.homepage.portfolioTitle}}</h2></a> 103 + <h3>{{.Site.Params.homepage.portfolioDescription}}</h3> 104 + </hgroup> 105 + <div class="container"> 106 + <div class="grid grid-post"> 107 + {{ range .Site.Params.homepage.portfolio }} 108 + <a class="portfolio-post" href="{{.websiteUrl}}"> 109 + <figure > 110 + <img 111 + src="{{.imageUrl}}" 112 + width="600" 113 + height="400" 114 + layout="responsive" 115 + alt="{{.alt}}" 116 + ></img> 117 + </figure> 118 + <hgroup class="text-center"> 119 + <h4>{{.description}}</h4> 120 + </hgroup> 121 + </a> 122 + {{ end }} 123 + </div> 124 + </div> 125 + </section> 126 + {{ end }} 127 + 128 + {{ end }}
+11
new-site/layouts/partials/author.html
··· 1 + {{- if .Params.ShowAuthor }} 2 + {{- if or .Params.author .Site.Params.author }} 3 + {{- $author := (.Params.author | default .Site.Params.author) }} 4 + {{- $author_type := (printf "%T" $author) }} 5 + {{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }} 6 + {{- (delimit $author ", " ) }} 7 + {{- else }} 8 + {{- $author }} 9 + {{- end }} 10 + {{- end -}} 11 + {{- end -}}
+4
new-site/layouts/partials/comments.html
··· 1 + {{- /* Comments area start */ -}} 2 + {{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}} 3 + {{- template "_internal/disqus.html" }} 4 + {{- /* Comments area end */ -}}
+4
new-site/layouts/partials/facebook-icon.html
··· 1 + <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" width=50> 2 + <path 3 + d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" /> 4 + </svg>
+101
new-site/layouts/partials/footer.html
··· 1 + {{- if not (.Param "hideFooter") }} 2 + <footer class="text-center"> 3 + {{- if .Site.Copyright }} 4 + <span>{{ .Site.Copyright | markdownify }} &copy; 2020-{{ now.Format "2006"}} {{ .Site.Title }}</span> 5 + {{- else }} 6 + <span>&copy; 2020-{{ now.Format "2006"}} <a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></span> 7 + {{- end }} 8 + <div> 9 + <!--<a href="{{ "/legal/privacy" | absLangURL }}">Privacy Policy</a> 10 + <span>&</span> 11 + <a href="{{ "/legal/terms-and-conditions" | absLangURL }}">Terms and Conditions</a>--> 12 + </div> 13 + </footer> 14 + {{- end }} 15 + 16 + {{- partial "extendfooter.html" . }} 17 + 18 + {{- partial "cookie-disclaimer.html" . }} 19 + <script> 20 + let menu = document.getElementById('menu') 21 + if (menu) { 22 + menu.scrollLeft = localStorage.getItem("menu-scroll-position"); 23 + menu.onscroll = function () { 24 + localStorage.setItem("menu-scroll-position", menu.scrollLeft); 25 + } 26 + } 27 + 28 + document.querySelectorAll('a[href^="#"]').forEach(anchor => { 29 + anchor.addEventListener("click", function (e) { 30 + e.preventDefault(); 31 + var id = this.getAttribute("href").substr(1); 32 + if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { 33 + document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({ 34 + behavior: "smooth" 35 + }); 36 + } else { 37 + document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView(); 38 + } 39 + if (id === "top") { 40 + history.replaceState(null, null, " "); 41 + } else { 42 + history.pushState(null, null, `#${id}`); 43 + } 44 + }); 45 + }); 46 + 47 + </script> 48 + 49 + 50 + 51 + 52 + {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }} 53 + <script> 54 + document.querySelectorAll('pre > code').forEach((codeblock) => { 55 + const container = codeblock.parentNode.parentNode; 56 + 57 + const copybutton = document.createElement('kbd'); 58 + copybutton.classList.add('copy-code'); 59 + copybutton.innerText = '{{- i18n "code_copy" | default "copy" }}'; 60 + 61 + function copyingDone() { 62 + copybutton.innerText = '{{- i18n "code_copied" | default "copied!" }}'; 63 + setTimeout(() => { 64 + copybutton.innerText = '{{- i18n "code_copy" | default "copy" }}'; 65 + }, 2000); 66 + } 67 + 68 + copybutton.addEventListener('click', (cb) => { 69 + if ('clipboard' in navigator) { 70 + navigator.clipboard.writeText(codeblock.textContent); 71 + copyingDone(); 72 + return; 73 + } 74 + 75 + const range = document.createRange(); 76 + range.selectNodeContents(codeblock); 77 + const selection = window.getSelection(); 78 + selection.removeAllRanges(); 79 + selection.addRange(range); 80 + try { 81 + document.execCommand('copy'); 82 + copyingDone(); 83 + } catch (e) { }; 84 + selection.removeRange(range); 85 + }); 86 + 87 + if (container.classList.contains("highlight")) { 88 + container.appendChild(copybutton); 89 + } else if (container.parentNode.firstChild == container) { 90 + // td containing LineNos 91 + } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") { 92 + // table containing LineNos and code 93 + codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton); 94 + } else { 95 + // code blocks not having highlight as parent class 96 + codeblock.parentNode.appendChild(copybutton); 97 + } 98 + }); 99 + </script> 100 + 101 + {{- end }}
+100
new-site/layouts/partials/head.html
··· 1 + <meta charset="UTF-8" /> 2 + <title> 3 + {{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ 4 + .Site.Title }} 5 + </title> 6 + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 7 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 + 9 + {{- /* Meta */}} 10 + 11 + <meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}} 12 + {{- .Summary | default (printf "%s - %s" .Title .Site.Title) }}{{- else }} 13 + {{- with .Site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}"> 14 + <meta name="author" content="{{ (partial "author.html" . ) }}"> 15 + <link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}" /> 16 + {{- if .Site.Params.analytics.google.SiteVerificationTag }} 17 + <meta name="google-site-verification" content="{{ .Site.Params.analytics.google.SiteVerificationTag }}" /> 18 + {{- end }} 19 + {{- if .Site.Params.analytics.yandex.SiteVerificationTag }} 20 + <meta name="yandex-verification" content="{{ .Site.Params.analytics.yandex.SiteVerificationTag }}" /> 21 + {{- end }} 22 + {{- if .Site.Params.analytics.bing.SiteVerificationTag }} 23 + <meta name="msvalidate.01" content="{{ .Site.Params.analytics.bing.SiteVerificationTag }}" /> 24 + {{- end }} 25 + 26 + {{ "<!-- custom CSS -->" | safeHTML }} 27 + {{ $customstyles := resources.Get "sass/colors.scss" | resources.ToCSS | minify }} 28 + <link rel="stylesheet" href="{{ $customstyles.Permalink }}" /> 29 + 30 + {{ "<!-- Main Stylesheet -->" | safeHTML }} 31 + {{ $styles := resources.Get "sass/main.scss" | resources.ToCSS | minify }} 32 + <link rel="stylesheet" href="{{ $styles.Permalink }}" /> 33 + 34 + {{ "<!-- Nav Stylesheet -->" | safeHTML }} 35 + {{ $navstyles := resources.Get "sass/nav.scss" | resources.ToCSS | minify }} 36 + <link rel="stylesheet" href="{{ $navstyles.Permalink }}" /> 37 + 38 + {{ "<!-- plugins CSS -->" | safeHTML }} 39 + {{ range site.Params.plugins.css }} 40 + <link rel="stylesheet" href="{{ .link | absURL }} " /> 41 + {{ end }} 42 + 43 + {{- /* Search */}} 44 + {{- if (eq .Layout `search`) -}} 45 + <link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json"> 46 + {{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" .Site.Params.fuseOpts)) }} 47 + {{- $fusejs := resources.Get "js/fuse.js" }} 48 + {{- if not .Site.Params.assets.disableFingerprinting }} 49 + {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }} 50 + <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script> 51 + {{- else }} 52 + {{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }} 53 + <script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script> 54 + {{- end }} 55 + {{- end -}} 56 + 57 + {{- /* Highlight.js */}} 58 + {{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default .Params.disableHLJS ) }} 59 + {{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }} 60 + {{- if not .Site.Params.assets.disableFingerprinting }} 61 + {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }} 62 + <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}" 63 + onload="hljs.initHighlightingOnLoad();"></script> 64 + {{- else }} 65 + {{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }} 66 + <script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script> 67 + {{- end }} 68 + {{- end }} 69 + 70 + {{- /* Favicons */}} 71 + <link rel="icon" href="{{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}"> 72 + <link rel="icon" type="image/png" sizes="16x16" href="{{ .Site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}"> 73 + <link rel="icon" type="image/png" sizes="32x32" href="{{ .Site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}"> 74 + <link rel="apple-touch-icon" href="{{ .Site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}"> 75 + <link rel="mask-icon" href="{{ .Site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}"> 76 + <meta name="theme-color" content="{{ .Site.Params.assets.theme_color | default "#2e2e33" }}"> 77 + <meta name="msapplication-TileColor" content="{{ .Site.Params.assets.msapplication_TileColor | default "#2e2e33" }}"> 78 + 79 + {{- /* Generator */}} 80 + {{ hugo.Generator }} 81 + 82 + {{- /* RSS */}} 83 + {{ range .AlternativeOutputFormats -}} 84 + <link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}"> 85 + {{ end -}} 86 + 87 + {{/* Math Type Setting */}} 88 + {{ if or .Params.math .Site.Params.math }} 89 + {{- partial "math.html" . }} 90 + {{ end }} 91 + 92 + {{- /* Misc */}} 93 + {{- if hugo.IsProduction | or (eq .Site.Params.env "production") }} 94 + {{- template "_internal/google_analytics.html" . }} 95 + {{- template "_internal/twitter_cards.html" . }} 96 + {{- template "partials/templates/opengraph.html" . }} 97 + {{- template "partials/templates/twitter_cards.html" . }} 98 + {{- template "partials/templates/schema_json.html" . }} 99 + 100 + {{- end -}}
+20
new-site/layouts/partials/instagram-icon.html
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width=50 viewBox="0 0 132 132"> 2 + <defs> 3 + <linearGradient id="b"> 4 + <stop offset="0" stop-color="#3771c8"/> 5 + <stop stop-color="#3771c8" offset=".128"/> 6 + <stop offset="1" stop-color="#60f" stop-opacity="0"/> 7 + </linearGradient> 8 + <linearGradient id="a"> 9 + <stop offset="0" stop-color="#fd5"/> 10 + <stop offset=".1" stop-color="#fd5"/> 11 + <stop offset=".5" stop-color="#ff543e"/> 12 + <stop offset="1" stop-color="#c837ab"/> 13 + </linearGradient> 14 + <radialGradient id="c" cx="158.429" cy="578.088" r="65" xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0 -1.98198 1.8439 0 -1031.402 454.004)" fx="158.429" fy="578.088"/> 15 + <radialGradient id="d" cx="147.694" cy="473.455" r="65" xlink:href="#b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.17394 .86872 -3.5818 .71718 1648.348 -458.493)" fx="147.694" fy="473.455"/> 16 + </defs> 17 + <path fill="url(#c)" d="M65.03 0C37.888 0 29.95.028 28.407.156c-5.57.463-9.036 1.34-12.812 3.22-2.91 1.445-5.205 3.12-7.47 5.468C4 13.126 1.5 18.394.595 24.656c-.44 3.04-.568 3.66-.594 19.188-.01 5.176 0 11.988 0 21.125 0 27.12.03 35.05.16 36.59.45 5.42 1.3 8.83 3.1 12.56 3.44 7.14 10.01 12.5 17.75 14.5 2.68.69 5.64 1.07 9.44 1.25 1.61.07 18.02.12 34.44.12 16.42 0 32.84-.02 34.41-.1 4.4-.207 6.955-.55 9.78-1.28 7.79-2.01 14.24-7.29 17.75-14.53 1.765-3.64 2.66-7.18 3.065-12.317.088-1.12.125-18.977.125-36.81 0-17.836-.04-35.66-.128-36.78-.41-5.22-1.305-8.73-3.127-12.44-1.495-3.037-3.155-5.305-5.565-7.624C116.9 4 111.64 1.5 105.372.596 102.335.157 101.73.027 86.19 0H65.03z" transform="translate(1.004 1)"/> 18 + <path fill="url(#d)" d="M65.03 0C37.888 0 29.95.028 28.407.156c-5.57.463-9.036 1.34-12.812 3.22-2.91 1.445-5.205 3.12-7.47 5.468C4 13.126 1.5 18.394.595 24.656c-.44 3.04-.568 3.66-.594 19.188-.01 5.176 0 11.988 0 21.125 0 27.12.03 35.05.16 36.59.45 5.42 1.3 8.83 3.1 12.56 3.44 7.14 10.01 12.5 17.75 14.5 2.68.69 5.64 1.07 9.44 1.25 1.61.07 18.02.12 34.44.12 16.42 0 32.84-.02 34.41-.1 4.4-.207 6.955-.55 9.78-1.28 7.79-2.01 14.24-7.29 17.75-14.53 1.765-3.64 2.66-7.18 3.065-12.317.088-1.12.125-18.977.125-36.81 0-17.836-.04-35.66-.128-36.78-.41-5.22-1.305-8.73-3.127-12.44-1.495-3.037-3.155-5.305-5.565-7.624C116.9 4 111.64 1.5 105.372.596 102.335.157 101.73.027 86.19 0H65.03z" transform="translate(1.004 1)"/> 19 + <path fill="#fff" d="M66.004 18c-13.036 0-14.672.057-19.792.29-5.11.234-8.598 1.043-11.65 2.23-3.157 1.226-5.835 2.866-8.503 5.535-2.67 2.668-4.31 5.346-5.54 8.502-1.19 3.053-2 6.542-2.23 11.65C18.06 51.327 18 52.964 18 66s.058 14.667.29 19.787c.235 5.11 1.044 8.598 2.23 11.65 1.227 3.157 2.867 5.835 5.536 8.503 2.667 2.67 5.345 4.314 8.5 5.54 3.054 1.187 6.543 1.996 11.652 2.23 5.12.233 6.755.29 19.79.29 13.037 0 14.668-.057 19.788-.29 5.11-.234 8.602-1.043 11.656-2.23 3.156-1.226 5.83-2.87 8.497-5.54 2.67-2.668 4.31-5.346 5.54-8.502 1.18-3.053 1.99-6.542 2.23-11.65.23-5.12.29-6.752.29-19.788 0-13.036-.06-14.672-.29-19.792-.24-5.11-1.05-8.598-2.23-11.65-1.23-3.157-2.87-5.835-5.54-8.503-2.67-2.67-5.34-4.31-8.5-5.535-3.06-1.187-6.55-1.996-11.66-2.23-5.12-.233-6.75-.29-19.79-.29zm-4.306 8.65c1.278-.002 2.704 0 4.306 0 12.816 0 14.335.046 19.396.276 4.68.214 7.22.996 8.912 1.653 2.24.87 3.837 1.91 5.516 3.59 1.68 1.68 2.72 3.28 3.592 5.52.657 1.69 1.44 4.23 1.653 8.91.23 5.06.28 6.58.28 19.39s-.05 14.33-.28 19.39c-.214 4.68-.996 7.22-1.653 8.91-.87 2.24-1.912 3.835-3.592 5.514-1.68 1.68-3.275 2.72-5.516 3.59-1.69.66-4.232 1.44-8.912 1.654-5.06.23-6.58.28-19.396.28-12.817 0-14.336-.05-19.396-.28-4.68-.216-7.22-.998-8.913-1.655-2.24-.87-3.84-1.91-5.52-3.59-1.68-1.68-2.72-3.276-3.592-5.517-.657-1.69-1.44-4.23-1.653-8.91-.23-5.06-.276-6.58-.276-19.398s.046-14.33.276-19.39c.214-4.68.996-7.22 1.653-8.912.87-2.24 1.912-3.84 3.592-5.52 1.68-1.68 3.28-2.72 5.52-3.592 1.692-.66 4.233-1.44 8.913-1.655 4.428-.2 6.144-.26 15.09-.27zm29.928 7.97c-3.18 0-5.76 2.577-5.76 5.758 0 3.18 2.58 5.76 5.76 5.76 3.18 0 5.76-2.58 5.76-5.76 0-3.18-2.58-5.76-5.76-5.76zm-25.622 6.73c-13.613 0-24.65 11.037-24.65 24.65 0 13.613 11.037 24.645 24.65 24.645C79.617 90.645 90.65 79.613 90.65 66S79.616 41.35 66.003 41.35zm0 8.65c8.836 0 16 7.163 16 16 0 8.836-7.164 16-16 16-8.837 0-16-7.164-16-16 0-8.837 7.163-16 16-16z"/> 20 + </svg>
+4
new-site/layouts/partials/linkedin-icon.html
··· 1 + <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" width=50> 2 + <path 3 + d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" /> 4 + </svg>
+4
new-site/layouts/partials/mastodon-icon.html
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width=50 viewBox="0 0 216.4144 232.00976"> 2 + <path fill="#2b90d9" d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915"/> 3 + <path fill="#fff" d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675"/> 4 + </svg>
+4
new-site/layouts/partials/reddit-icon.html
··· 1 + <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" width=50> 2 + <path 3 + d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" /> 4 + </svg>
+4
new-site/layouts/partials/telegram-icon.html
··· 1 + <svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" width=50> 2 + <path 3 + d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" /> 4 + </svg>
+9
new-site/layouts/partials/twitch-icon.html
··· 1 + <svg viewBox="0 0 112 128" xmlns="http://www.w3.org/2000/svg" width=50> 2 + <defs></defs> 3 + <g transform="matrix(1, 0, 0, 1, -304.5, -80.75)"> 4 + <g transform="matrix(1.333333, 0, 0, -1.333333, 405.975952, 148.541428)" id="g3365"> 5 + <path id="path3367" style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 0,0 -13.652,-13.651 -21.445,0 -11.699,-11.697 0,11.697 -17.548,0 0,56.544 L 0,42.893 0,0 Z m -72.146,50.692 -3.899,-15.599 0,-70.19 17.55,0 0,-9.751 9.746,0 9.752,9.751 15.596,0 31.196,31.192 0,54.597 -79.941,0 z"></path> 6 + </g> 7 + <path id="path3369" style="fill:#6441a5;fill-opacity:1;fill-rule:evenodd;stroke:none" d="M 348.78 143.346 L 359.179 143.346 L 359.179 112.145 L 348.78 112.145 L 348.78 143.346 Z M 377.375 143.346 L 387.773 143.346 L 387.773 112.145 L 377.375 112.145 L 377.375 143.346 Z"></path> 8 + </g> 9 + </svg>
+4
new-site/layouts/partials/twitter-icon.html
··· 1 + <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" width=50> 2 + <path 3 + d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" /> 4 + </svg>
+4
new-site/layouts/partials/whatsapp-icon.html
··· 1 + <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" width=50> 2 + <path 3 + d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" /> 4 + </svg>
+4
new-site/layouts/partials/youtube-icon.html
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" width=50 viewBox="0 0 159 110"> 2 + <path d="m154 17.5c-1.82-6.73-7.07-12-13.8-13.8-9.04-3.49-96.6-5.2-122 0.1-6.73 1.82-12 7.07-13.8 13.8-4.08 17.9-4.39 56.6 0.1 74.9 1.82 6.73 7.07 12 13.8 13.8 17.9 4.12 103 4.7 122 0 6.73-1.82 12-7.07 13.8-13.8 4.35-19.5 4.66-55.8-0.1-75z" fill="#f00"/> 3 + <path d="m105 55-40.8-23.4v46.8z" fill="#fff"/> 4 + </svg>