Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/reuixiy/hugo-theme-meme.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Lee <rxrw@me.com>2021-05-23 18:14:22 +0300
committerGitHub <noreply@github.com>2021-05-23 18:14:22 +0300
commit2dc1f8bb184c36329375af3b4bafc445e2c2210d (patch)
tree81aae4d07185277031e54a4d79e480f1a5ad483a
parent97cb67e954e87b7a6dca145fd8b4d7430f2a39f7 (diff)
feat: add Algolia Search support (#329)
updates #222 Co-authored-by: reuixiy <reuixiy@gmail.com>
-rw-r--r--.gitignore1
-rw-r--r--assets/js/algolia-search.js109
-rw-r--r--assets/js/lunr-search.js2
-rw-r--r--assets/scss/base/_responsive.scss2
-rw-r--r--assets/scss/main.scss6
-rw-r--r--config-examples/en/config.toml28
-rw-r--r--config-examples/zh-cn/config.toml30
-rw-r--r--config-examples/zh-tw/config.toml30
-rw-r--r--images/screenshot.pngbin170233 -> 106576 bytes
-rw-r--r--images/tn.pngbin85870 -> 51495 bytes
-rw-r--r--layouts/index.algolia.json5
-rw-r--r--layouts/index.searchindex.json2
-rw-r--r--layouts/partials/menu.html2
-rw-r--r--layouts/partials/pages/post.html2
-rw-r--r--layouts/partials/script.html4
-rw-r--r--layouts/partials/third-party/algolia-search.html4
-rw-r--r--static/icons/android-chrome-512x512.pngbin23287 -> 22194 bytes
-rw-r--r--static/icons/apple-touch-icon.pngbin3714 -> 3586 bytes
-rw-r--r--static/icons/mstile-150x150.pngbin4330 -> 3924 bytes
-rw-r--r--static/icons/safari-pinned-tab.svg78
20 files changed, 211 insertions, 94 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e43b0f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.DS_Store
diff --git a/assets/js/algolia-search.js b/assets/js/algolia-search.js
new file mode 100644
index 0000000..1c67f38
--- /dev/null
+++ b/assets/js/algolia-search.js
@@ -0,0 +1,109 @@
+window.addEventListener("DOMContentLoaded", event => {
+ let origContent = null;
+
+ const search = instantsearch({
+ appId: "{{ .Site.Params.algoliaAppId }}",
+ apiKey: "{{ .Site.Params.algoliaApiKey }}",
+ indexName: "{{ .Site.Params.algoliaIndexName }}",
+ });
+
+ search.addWidget({
+ init: function (opts) {
+ const helper = opts.helper;
+ const input = document.getElementById("search-input");
+
+ input.addEventListener("input", function (e) {
+ helper
+ .setQuery(e.currentTarget.value) // update the parameters
+ .search(); // launch the query
+ });
+ },
+ });
+
+ search.addWidget({
+ render: function (opts) {
+ let term = opts.state.query
+ if (!term) {
+ return
+ }
+
+ const results = opts.results.hits;
+
+ let target = document.querySelector(".main-inner") || document.querySelector("main.home");
+ let replaced = [];
+
+ while (target.firstChild) {
+ replaced.push(target.firstChild);
+ target.removeChild(target.firstChild);
+ }
+
+ if (!origContent) {
+ origContent = replaced;
+ }
+
+ let title = document.createElement("h1");
+
+ title.id = "search-results";
+ title.className = "list-title";
+
+ if (results.length == 0) {
+ title.textContent = "{{ i18n "searchResultsNone" (dict "Term" "{}") }}".replace("{}", term);
+ } else if (results.length == 1) {
+ title.textContent = "{{ i18n "searchResultsTitle" (dict "Count" 1 "Term" "{}") }}".replace("{}", term);
+ } else {
+ title.textContent = "{{ i18n "searchResultsTitle" (dict "Count" 13579 "Term" "{}") }}".replace("{}", term).replace("13579", results.length);
+ }
+
+ target.appendChild(title);
+ document.title = title.textContent;
+
+ let template = document.getElementById("search-result");
+ for (let result of results) {
+ let element = template.content.cloneNode(true);
+ element.querySelector(".summary-title-link").href = element.querySelector(".read-more-link").href = result.url;
+ element.querySelector(".summary-title-link").textContent = result.title;
+ element.querySelector(".summary").textContent = truncateToEndOfSentence(result.summary, 70);
+ target.appendChild(element);
+ }
+ title.scrollIntoView(true);
+
+ {{ if .Site.Params.enableNavToggle }}
+ let navToggleLabel = document.querySelector('.nav-toggle');
+ if (navToggleLabel && navToggleLabel.classList.contains("open")) {
+ document.getElementById(navToggleLabel.getAttribute("for")).click();
+ }
+ {{ end }}
+ },
+ });
+
+ search.start();
+
+ // This matches Hugo's own summary logic:
+ // https://github.com/gohugoio/hugo/blob/b5f39d23b86f9cb83c51da9fe4abb4c19c01c3b7/helpers/content.go#L543
+ function truncateToEndOfSentence(text, minWords)
+ {
+ let match;
+ let result = "";
+ let wordCount = 0;
+ let regexp = /(\S+)(\s*)/g;
+ while (match = regexp.exec(text)) {
+ wordCount++;
+ if (wordCount <= minWords) {
+ result += match[0];
+ }
+ else
+ {
+ let char1 = match[1][match[1].length - 1];
+ let char2 = match[2][0];
+ if (/[.?!"]/.test(char1) || char2 == "\n") {
+ result += match[1];
+ break;
+ }
+ else {
+ result += match[0];
+ }
+ }
+ }
+ return result;
+ }
+}, {once: true});
diff --git a/assets/js/lunr-search.js b/assets/js/lunr-search.js
index 47d5434..0a7b91f 100644
--- a/assets/js/lunr-search.js
+++ b/assets/js/lunr-search.js
@@ -114,7 +114,7 @@ window.addEventListener("DOMContentLoaded", event => {
try {
let results = index.search(term);
- let target = document.querySelector(".main-inner");
+ let target = document.querySelector(".main-inner") || document.querySelector("main.home");
let replaced = [];
while (target.firstChild) {
replaced.push(target.firstChild);
diff --git a/assets/scss/base/_responsive.scss b/assets/scss/base/_responsive.scss
index 35fa0a3..a54e11e 100644
--- a/assets/scss/base/_responsive.scss
+++ b/assets/scss/base/_responsive.scss
@@ -128,7 +128,7 @@
#langs li {
width: auto;
}
- @if ($enableLunrSearch) {
+ @if ($enableSearch) {
.search-item {
grid-column: 1 / -1;
}
diff --git a/assets/scss/main.scss b/assets/scss/main.scss
index 97f0512..d6960b8 100644
--- a/assets/scss/main.scss
+++ b/assets/scss/main.scss
@@ -449,11 +449,11 @@ $fofPoster: url({{ $fofPoster }});
// Lunr search
-{{ if and (eq .Site.Params.headerLayout "flex") .Site.Params.enableLunrSearch }}
- $enableLunrSearch: true;
+{{ if and (eq .Site.Params.headerLayout "flex") (or .Site.Params.enableLunrSearch .Site.Params.enableAlgoliaSearch) }}
+ $enableSearch: true;
@import "components/search";
{{ else }}
- $enableLunrSearch: false;
+ $enableSearch: false;
{{ end }}
diff --git a/config-examples/en/config.toml b/config-examples/en/config.toml
index baf7212..e59bbee 100644
--- a/config-examples/en/config.toml
+++ b/config-examples/en/config.toml
@@ -141,9 +141,17 @@ uglyURLs = false
mediaType = "application/json"
baseName = "search"
+# Search index for Algolia
+[outputFormats.Algolia]
+ mediaType = "application/json"
+ baseName = "algolia"
+ isPlainText = true
+ notAlternative = true
+
# Hugo’s output control
[outputs]
page = ["HTML"]
+ # home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex", "Algolia"]
home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex"]
section = ["HTML"]
taxonomy = ["HTML"]
@@ -1360,13 +1368,31 @@ uglyURLs = false
# Lunr search
# Note: This requires SearchIndex
- # output to be enabled.
+ # output to be enabled.
enableLunrSearch = true
# Note: https://lunrjs.com/
######################################
+ # Algolia search
+
+ # Note: This requires Algolia
+ # output to be enabled.
+ # And you need to upload the
+ # generated algolia.json to
+ # Algolia every time you rebuild
+ # your site.
+
+ enableAlgoliaSearch = false
+
+ algoliaAppId = ""
+ algoliaApiKey = ""
+ algoliaIndexName = ""
+ # Note: https://www.algolia.com/
+
+
+ ######################################
# 404 Page
fofPoster = ""
diff --git a/config-examples/zh-cn/config.toml b/config-examples/zh-cn/config.toml
index e7c7082..bf66768 100644
--- a/config-examples/zh-cn/config.toml
+++ b/config-examples/zh-cn/config.toml
@@ -135,14 +135,21 @@ uglyURLs = false
baseName = "rss"
# lunr.js 的搜索索引
-# [outputFormats.SearchIndex]
-# mediaType = "application/json"
-# baseName = "search"
+[outputFormats.SearchIndex]
+ mediaType = "application/json"
+ baseName = "search"
+
+# Algolia 的搜索索引
+[outputFormats.Algolia]
+ mediaType = "application/json"
+ baseName = "algolia"
+ isPlainText = true
+ notAlternative = true
# Hugo 的输出控制
[outputs]
page = ["HTML"]
- # home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex"]
+ # home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex", "Algolia"]
home = ["HTML", "SectionsAtom", "SectionsRSS"]
section = ["HTML"]
taxonomy = ["HTML"]
@@ -1339,6 +1346,21 @@ uglyURLs = false
######################################
+ # Algolia search
+
+ # 说明:需要开启 `Algolia` 的输出,且需要每
+ # 次将生成的 algolia.json 文件上传到
+ # Algolia
+
+ enableAlgoliaSearch = false
+
+ algoliaAppId = ""
+ algoliaApiKey = ""
+ algoliaIndexName = ""
+ # 说明:https://www.algolia.com/
+
+
+ ######################################
# 404 页面
# 视频封面
diff --git a/config-examples/zh-tw/config.toml b/config-examples/zh-tw/config.toml
index 3651d89..7a66eb0 100644
--- a/config-examples/zh-tw/config.toml
+++ b/config-examples/zh-tw/config.toml
@@ -135,14 +135,21 @@ uglyURLs = false
baseName = "rss"
# lunr.js 的搜尋索引
-# [outputFormats.SearchIndex]
-# mediaType = "application/json"
-# baseName = "search"
+[outputFormats.SearchIndex]
+ mediaType = "application/json"
+ baseName = "search"
+
+# Algolia 的搜尋索引
+[outputFormats.Algolia]
+ mediaType = "application/json"
+ baseName = "algolia"
+ isPlainText = true
+ notAlternative = true
# Hugo 的輸出控制
[outputs]
page = ["HTML"]
- # home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex"]
+ # home = ["HTML", "SectionsAtom", "SectionsRSS", "SearchIndex", "Algolia"]
home = ["HTML", "SectionsAtom", "SectionsRSS"]
section = ["HTML"]
taxonomy = ["HTML"]
@@ -1339,6 +1346,21 @@ uglyURLs = false
######################################
+ # Algolia 搜尋
+
+ # 說明:需要開啟 `Algolia` 的輸出,且需要每
+ # 次將生成的 algolia.json 文件上傳到
+ # Algolia
+
+ enableAlgoliaSearch = false
+
+ algoliaAppId = ""
+ algoliaApiKey = ""
+ algoliaIndexName = ""
+ # 說明:https://www.algolia.com/
+
+
+ ######################################
# 404 頁面
# 影片封面
diff --git a/images/screenshot.png b/images/screenshot.png
index d1bc7fa..415ff02 100644
--- a/images/screenshot.png
+++ b/images/screenshot.png
Binary files differ
diff --git a/images/tn.png b/images/tn.png
index 73ada5e..8bb4f51 100644
--- a/images/tn.png
+++ b/images/tn.png
Binary files differ
diff --git a/layouts/index.algolia.json b/layouts/index.algolia.json
new file mode 100644
index 0000000..d46134d
--- /dev/null
+++ b/layouts/index.algolia.json
@@ -0,0 +1,5 @@
+{{- $.Scratch.Add "index" slice -}}
+{{- range (where .Site.RegularPages "Section" "in" .Site.Params.mainSections) -}}
+ {{- $.Scratch.Add "index" (dict "objectID" .File.UniqueID "date" .Date.UTC.Unix "description" .Description "fuzzywordcount" .FuzzyWordCount "kind" .Kind "lang" .Lang "lastmod" .Lastmod.UTC.Unix "publishdate" .PublishDate.UTC.Unix "relpermalink" .RelPermalink "summary" .Summary "title" .Title "url" .Permalink "wordcount" .WordCount "section" .Section "tags" .Params.tags "categories" .Section "content" .Content)}}
+{{- end -}}
+{{- $.Scratch.Get "index" | jsonify -}}
diff --git a/layouts/index.searchindex.json b/layouts/index.searchindex.json
index df5e9d7..34a740c 100644
--- a/layouts/index.searchindex.json
+++ b/layouts/index.searchindex.json
@@ -1,5 +1,5 @@
[
- {{- range $index, $page := where .Site.Pages "Content" "ne" ("" | safeHTML) -}}
+ {{- range $index, $page := where .Site.RegularPages "Section" "in" .Site.Params.mainSections -}}
{{- if gt $index 0 -}}
,
{{- end -}}
diff --git a/layouts/partials/menu.html b/layouts/partials/menu.html
index 91e9101..cd02605 100644
--- a/layouts/partials/menu.html
+++ b/layouts/partials/menu.html
@@ -29,7 +29,7 @@
{{ end }}
{{ end }}
{{ else if eq .Identifier "search" }}
- {{ if and $.Site.Params.enableLunrSearch (eq $.Site.Params.headerLayout "flex") }}
+ {{ if and (eq $.Site.Params.headerLayout "flex") (or $.Site.Params.enableLunrSearch $.Site.Params.enableAlgoliaSearch) }}
{{- $iconName := (string .Post) -}}
<li class="menu-item search-item">
{{ partial "components/search.html" (dict "$" $ctx "iconName" $iconName) }}
diff --git a/layouts/partials/pages/post.html b/layouts/partials/pages/post.html
index e48bd70..fb68107 100644
--- a/layouts/partials/pages/post.html
+++ b/layouts/partials/pages/post.html
@@ -35,7 +35,7 @@
{{- end -}}
<div class="post-body e-content">
- {{ partial "utils/content.html" . }}
+ {{ partial "utils/content.html" . }}
</div>
{{ partial "components/post-copyright.html" . }}
diff --git a/layouts/partials/script.html b/layouts/partials/script.html
index 9ffb573..c7f6053 100644
--- a/layouts/partials/script.html
+++ b/layouts/partials/script.html
@@ -36,6 +36,10 @@
{{- $scripts = union $scripts (partial "third-party/lunr-search.html" .) -}}
{{- end -}}
+{{- if .Site.Params.enableAlgoliaSearch -}}
+ {{- $scripts = union $scripts (partial "third-party/algolia-search.html" .) -}}
+{{- end -}}
+
{{- $scripts = union $scripts (slice "js/custom.js") -}}
{{- $processedScripts := slice ("" | resources.FromString "dummy.js") -}}
diff --git a/layouts/partials/third-party/algolia-search.html b/layouts/partials/third-party/algolia-search.html
new file mode 100644
index 0000000..9507fdb
--- /dev/null
+++ b/layouts/partials/third-party/algolia-search.html
@@ -0,0 +1,4 @@
+{{- $scripts := slice "https://cdn.jsdelivr.net/npm/instantsearch.js@2/dist/instantsearch.min.js" -}}
+
+{{- $scripts = union $scripts (slice "js/algolia-search.js") -}}
+{{- return $scripts -}}
diff --git a/static/icons/android-chrome-512x512.png b/static/icons/android-chrome-512x512.png
index 44e4c06..b5f6299 100644
--- a/static/icons/android-chrome-512x512.png
+++ b/static/icons/android-chrome-512x512.png
Binary files differ
diff --git a/static/icons/apple-touch-icon.png b/static/icons/apple-touch-icon.png
index 64be0f9..a244fb4 100644
--- a/static/icons/apple-touch-icon.png
+++ b/static/icons/apple-touch-icon.png
Binary files differ
diff --git a/static/icons/mstile-150x150.png b/static/icons/mstile-150x150.png
index ff392eb..95ed2a6 100644
--- a/static/icons/mstile-150x150.png
+++ b/static/icons/mstile-150x150.png
Binary files differ
diff --git a/static/icons/safari-pinned-tab.svg b/static/icons/safari-pinned-tab.svg
index 3471ca8..1a8adb4 100644
--- a/static/icons/safari-pinned-tab.svg
+++ b/static/icons/safari-pinned-tab.svg
@@ -1,77 +1 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
- "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
- width="1000.000000pt" height="1000.000000pt" viewBox="0 0 1000.000000 1000.000000"
- preserveAspectRatio="xMidYMid meet">
-<metadata>
-Created by potrace 1.11, written by Peter Selinger 2001-2013
-</metadata>
-<g transform="translate(0.000000,1000.000000) scale(0.100000,-0.100000)"
-fill="#000000" stroke="none">
-<path d="M2155 8378 c-2 -7 -6 -31 -9 -53 -7 -45 -9 -63 -37 -230 -11 -66 -22
--133 -25 -150 -6 -40 -16 -95 -20 -120 -3 -11 -11 -63 -20 -115 -14 -90 -18
--111 -28 -170 -3 -14 -17 -92 -31 -175 -14 -82 -28 -161 -31 -175 -2 -14 -8
--52 -14 -85 -5 -33 -12 -71 -15 -85 -6 -28 -7 -36 -29 -165 -9 -49 -18 -101
--21 -115 -3 -14 -7 -38 -10 -55 -2 -16 -11 -66 -19 -110 -26 -141 -35 -189
--41 -220 -2 -16 -7 -41 -10 -54 -2 -13 -20 -112 -40 -220 -19 -108 -37 -205
--39 -216 -9 -52 -18 -102 -22 -125 -3 -14 -16 -81 -29 -150 -13 -69 -27 -141
--30 -160 -3 -19 -10 -53 -15 -75 -5 -22 -11 -57 -14 -77 -3 -21 -10 -57 -15
--80 -5 -24 -13 -63 -16 -88 -4 -24 -8 -47 -10 -50 -2 -3 -6 -23 -9 -45 -4 -22
--25 -134 -47 -250 -23 -115 -43 -219 -44 -230 -3 -19 -141 -729 -150 -770 -3
--11 -7 -31 -9 -45 -3 -14 -14 -72 -26 -130 -12 -58 -24 -118 -27 -135 -2 -16
--40 -207 -84 -423 -43 -215 -81 -402 -83 -415 -2 -12 -11 -56 -20 -97 -8 -41
--18 -91 -21 -110 -3 -19 -8 -42 -10 -50 -2 -8 -6 -26 -9 -40 -2 -14 -16 -81
--30 -150 -15 -69 -29 -136 -31 -150 -4 -21 -34 -166 -51 -245 -2 -11 -9 -46
--15 -78 -5 -32 -13 -65 -16 -74 -5 -12 -2 -15 10 -10 49 19 170 26 447 26 272
-0 459 -9 513 -25 15 -5 17 4 18 78 1 84 2 107 13 303 13 226 19 315 31 460 4
-39 8 95 10 125 5 87 15 212 20 245 2 17 6 73 10 125 3 52 8 102 10 110 2 8 7
-51 10 95 4 44 8 94 10 110 6 67 16 162 20 195 2 19 7 67 11 105 4 39 8 81 9
-95 5 45 25 234 30 278 3 23 7 62 10 87 3 25 7 64 10 88 8 72 16 140 20 182 3
-22 7 56 10 75 2 19 7 55 9 80 6 53 34 280 42 331 2 20 7 59 10 85 2 27 7 60 9
-74 2 14 14 99 25 190 11 91 23 176 25 190 2 14 7 48 10 75 3 28 8 61 10 75 2
-14 7 45 10 70 3 25 8 56 10 70 2 14 7 45 10 70 3 25 8 56 10 70 2 14 7 45 10
-70 3 25 10 70 15 100 5 30 12 75 15 100 3 25 10 70 15 100 5 30 12 73 15 95 3
-23 7 50 9 60 2 11 9 56 16 100 7 44 14 87 15 95 2 8 4 18 4 22 1 4 7 5 15 2
-16 -6 235 -527 480 -1144 43 -107 82 -204 87 -215 15 -34 174 -441 244 -625
-37 -96 78 -203 91 -237 13 -35 35 -93 50 -130 14 -38 29 -77 34 -88 23 -52
-400 -1081 477 -1300 19 -55 60 -170 90 -255 69 -193 190 -541 251 -721 l46
--137 313 0 c187 0 313 3 313 9 0 5 9 28 19 52 11 23 36 83 56 132 20 50 45
-109 56 132 10 24 19 45 19 49 0 3 11 29 24 57 14 29 41 92 61 142 21 49 48
-112 60 140 45 98 63 141 89 202 14 35 37 86 50 115 13 29 52 116 86 193 35 77
-80 178 101 223 22 46 39 85 39 87 0 1 27 60 60 129 33 70 60 128 60 131 0 2
-22 50 49 107 27 56 67 141 89 188 22 47 64 137 95 200 30 63 75 158 99 210
-211 443 824 1668 1077 2150 39 74 78 152 87 173 10 24 22 37 32 35 16 -3 18
--10 27 -108 4 -36 8 -76 11 -90 2 -14 6 -54 10 -90 3 -36 7 -75 9 -88 2 -13 7
--53 10 -90 3 -37 8 -80 10 -97 2 -16 6 -57 10 -90 3 -33 8 -78 10 -100 2 -22
-9 -89 15 -150 6 -60 13 -121 15 -135 2 -14 6 -56 10 -95 3 -38 8 -86 10 -105
-3 -19 7 -62 9 -95 3 -33 7 -85 10 -115 8 -75 13 -133 21 -215 3 -38 8 -86 10
--105 3 -19 7 -70 11 -113 3 -43 7 -87 9 -97 2 -10 6 -54 9 -97 6 -70 13 -149
-22 -238 1 -16 6 -68 9 -115 3 -47 8 -97 10 -111 3 -14 7 -63 10 -109 3 -46 7
--95 9 -109 3 -14 7 -66 11 -116 3 -49 8 -108 10 -130 3 -22 7 -69 10 -105 12
--156 15 -189 20 -250 3 -36 7 -85 10 -110 4 -41 8 -94 21 -270 2 -36 6 -87 9
--115 3 -27 7 -81 10 -120 7 -92 13 -154 20 -240 3 -38 7 -95 10 -125 4 -65 14
--187 20 -250 2 -25 7 -85 11 -135 7 -89 11 -142 13 -159 1 -4 11 -6 24 -3 142
-36 1234 36 1409 1 25 -5 27 -3 24 23 -3 15 -14 100 -25 188 -12 88 -24 178
--27 200 -2 22 -7 56 -9 75 -3 19 -7 53 -10 75 -5 41 -11 88 -20 160 -3 22 -8
-56 -11 75 -7 49 -12 96 -19 160 -3 30 -8 66 -10 80 -3 14 -7 48 -10 75 -3 28
--8 64 -10 80 -2 17 -7 53 -10 80 -3 28 -8 64 -10 80 -2 17 -7 53 -10 80 -3 28
--8 64 -10 80 -3 17 -7 53 -10 80 -3 28 -10 84 -15 125 -5 41 -12 98 -15 125
--3 28 -7 66 -10 85 -2 19 -11 94 -20 165 -9 72 -18 146 -20 165 -2 19 -7 58
--10 85 -14 133 -27 235 -30 255 -1 8 -6 47 -9 85 -4 39 -10 90 -13 115 -3 25
--6 56 -8 70 -2 25 -13 117 -20 175 -2 17 -6 59 -10 95 -4 36 -8 76 -11 90 -2
-14 -6 54 -10 90 -3 36 -7 76 -9 90 -4 29 -15 120 -20 170 -3 34 -13 121 -21
-190 -2 19 -7 64 -10 100 -3 36 -7 76 -9 90 -5 30 -11 92 -25 230 -6 58 -13
-121 -15 140 -2 19 -7 62 -10 95 -3 33 -7 74 -9 90 -5 35 -15 130 -21 195 -16
-167 -17 174 -29 275 -3 22 -8 69 -11 105 -4 36 -8 81 -10 100 -2 19 -7 64 -10
-100 -3 36 -8 81 -10 100 -2 19 -7 62 -10 95 -6 67 -10 111 -29 290 -13 118
--17 164 -21 205 -3 25 -7 65 -9 90 -3 25 -8 74 -11 110 -4 36 -8 83 -11 105
--12 110 -46 462 -47 483 0 9 -93 12 -431 12 l-431 0 -321 -637 c-177 -351
--559 -1110 -849 -1688 -1282 -2550 -1248 -2482 -1268 -2481 -21 1 -46 52 -229
-461 -27 61 -59 130 -70 155 -11 25 -28 63 -38 85 -9 22 -26 60 -37 85 -11 25
--49 110 -83 190 -34 80 -68 159 -75 175 -8 17 -28 64 -45 105 -17 41 -38 89
--45 105 -7 17 -55 131 -105 255 -51 124 -98 239 -105 255 -16 36 -125 313
--201 510 -30 77 -59 149 -64 160 -41 88 -468 1261 -648 1780 -50 143 -108 311
--129 372 l-38 113 -493 0 c-385 0 -494 -3 -497 -12z"/>
-</g>
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1333.333" height="1333.333" preserveAspectRatio="xMidYMid meet" version="1.0" viewBox="0 0 1000 1000"><metadata>Created by potrace 1.11, written by Peter Selinger 2001-2013</metadata><g fill="#000" stroke="none"><path d="M2155 8378 c-2 -7 -6 -31 -9 -53 -7 -45 -9 -63 -37 -230 -11 -66 -22 -133 -25 -150 -6 -40 -16 -95 -20 -120 -3 -11 -11 -63 -20 -115 -14 -90 -18 -111 -28 -170 -3 -14 -17 -92 -31 -175 -14 -82 -28 -161 -31 -175 -2 -14 -8 -52 -14 -85 -5 -33 -12 -71 -15 -85 -6 -28 -7 -36 -29 -165 -9 -49 -18 -101 -21 -115 -3 -14 -7 -38 -10 -55 -2 -16 -11 -66 -19 -110 -26 -141 -35 -189 -41 -220 -2 -16 -7 -41 -10 -54 -2 -13 -20 -112 -40 -220 -19 -108 -37 -205 -39 -216 -9 -52 -18 -102 -22 -125 -3 -14 -16 -81 -29 -150 -13 -69 -27 -141 -30 -160 -3 -19 -10 -53 -15 -75 -5 -22 -11 -57 -14 -77 -3 -21 -10 -57 -15 -80 -5 -24 -13 -63 -16 -88 -4 -24 -8 -47 -10 -50 -2 -3 -6 -23 -9 -45 -4 -22 -25 -134 -47 -250 -23 -115 -43 -219 -44 -230 -3 -19 -141 -729 -150 -770 -3 -11 -7 -31 -9 -45 -3 -14 -14 -72 -26 -130 -12 -58 -24 -118 -27 -135 -2 -16 -40 -207 -84 -423 -43 -215 -81 -402 -83 -415 -2 -12 -11 -56 -20 -97 -8 -41 -18 -91 -21 -110 -3 -19 -8 -42 -10 -50 -2 -8 -6 -26 -9 -40 -2 -14 -16 -81 -30 -150 -15 -69 -29 -136 -31 -150 -4 -21 -34 -166 -51 -245 -2 -11 -9 -46 -15 -78 -5 -32 -13 -65 -16 -74 -5 -12 -2 -15 10 -10 49 19 170 26 447 26 272 0 459 -9 513 -25 15 -5 17 4 18 78 1 84 2 107 13 303 13 226 19 315 31 460 4 39 8 95 10 125 5 87 15 212 20 245 2 17 6 73 10 125 3 52 8 102 10 110 2 8 7 51 10 95 4 44 8 94 10 110 6 67 16 162 20 195 2 19 7 67 11 105 4 39 8 81 9 95 5 45 25 234 30 278 3 23 7 62 10 87 3 25 7 64 10 88 8 72 16 140 20 182 3 22 7 56 10 75 2 19 7 55 9 80 6 53 34 280 42 331 2 20 7 59 10 85 2 27 7 60 9 74 2 14 14 99 25 190 11 91 23 176 25 190 2 14 7 48 10 75 3 28 8 61 10 75 2 14 7 45 10 70 3 25 8 56 10 70 2 14 7 45 10 70 3 25 8 56 10 70 2 14 7 45 10 70 3 25 10 70 15 100 5 30 12 75 15 100 3 25 10 70 15 100 5 30 12 73 15 95 3 23 7 50 9 60 2 11 9 56 16 100 7 44 14 87 15 95 2 8 4 18 4 22 1 4 7 5 15 2 16 -6 235 -527 480 -1144 43 -107 82 -204 87 -215 15 -34 174 -441 244 -625 37 -96 78 -203 91 -237 13 -35 35 -93 50 -130 14 -38 29 -77 34 -88 23 -52 400 -1081 477 -1300 19 -55 60 -170 90 -255 69 -193 190 -541 251 -721 l46 -137 313 0 c187 0 313 3 313 9 0 5 9 28 19 52 11 23 36 83 56 132 20 50 45 109 56 132 10 24 19 45 19 49 0 3 11 29 24 57 14 29 41 92 61 142 21 49 48 112 60 140 45 98 63 141 89 202 14 35 37 86 50 115 13 29 52 116 86 193 35 77 80 178 101 223 22 46 39 85 39 87 0 1 27 60 60 129 33 70 60 128 60 131 0 2 22 50 49 107 27 56 67 141 89 188 22 47 64 137 95 200 30 63 75 158 99 210 211 443 824 1668 1077 2150 39 74 78 152 87 173 10 24 22 37 32 35 16 -3 18 -10 27 -108 4 -36 8 -76 11 -90 2 -14 6 -54 10 -90 3 -36 7 -75 9 -88 2 -13 7 -53 10 -90 3 -37 8 -80 10 -97 2 -16 6 -57 10 -90 3 -33 8 -78 10 -100 2 -22 9 -89 15 -150 6 -60 13 -121 15 -135 2 -14 6 -56 10 -95 3 -38 8 -86 10 -105 3 -19 7 -62 9 -95 3 -33 7 -85 10 -115 8 -75 13 -133 21 -215 3 -38 8 -86 10 -105 3 -19 7 -70 11 -113 3 -43 7 -87 9 -97 2 -10 6 -54 9 -97 6 -70 13 -149 22 -238 1 -16 6 -68 9 -115 3 -47 8 -97 10 -111 3 -14 7 -63 10 -109 3 -46 7 -95 9 -109 3 -14 7 -66 11 -116 3 -49 8 -108 10 -130 3 -22 7 -69 10 -105 12 -156 15 -189 20 -250 3 -36 7 -85 10 -110 4 -41 8 -94 21 -270 2 -36 6 -87 9 -115 3 -27 7 -81 10 -120 7 -92 13 -154 20 -240 3 -38 7 -95 10 -125 4 -65 14 -187 20 -250 2 -25 7 -85 11 -135 7 -89 11 -142 13 -159 1 -4 11 -6 24 -3 142 36 1234 36 1409 1 25 -5 27 -3 24 23 -3 15 -14 100 -25 188 -12 88 -24 178 -27 200 -2 22 -7 56 -9 75 -3 19 -7 53 -10 75 -5 41 -11 88 -20 160 -3 22 -8 56 -11 75 -7 49 -12 96 -19 160 -3 30 -8 66 -10 80 -3 14 -7 48 -10 75 -3 28 -8 64 -10 80 -2 17 -7 53 -10 80 -3 28 -8 64 -10 80 -2 17 -7 53 -10 80 -3 28 -8 64 -10 80 -3 17 -7 53 -10 80 -3 28 -10 84 -15 125 -5 41 -12 98 -15 125 -3 28 -7 66 -10 85 -2 19 -11 94 -20 165 -9 72 -18 146 -20 165 -2 19 -7 58 -10 85 -14 133 -27 235 -30 255 -1 8 -6 47 -9 85 -4 39 -10 90 -13 115 -3 25 -6 56 -8 70 -2 25 -13 117 -20 175 -2 17 -6 59 -10 95 -4 36 -8 76 -11 90 -2 14 -6 54 -10 90 -3 36 -7 76 -9 90 -4 29 -15 120 -20 170 -3 34 -13 121 -21 190 -2 19 -7 64 -10 100 -3 36 -7 76 -9 90 -5 30 -11 92 -25 230 -6 58 -13 121 -15 140 -2 19 -7 62 -10 95 -3 33 -7 74 -9 90 -5 35 -15 130 -21 195 -16 167 -17 174 -29 275 -3 22 -8 69 -11 105 -4 36 -8 81 -10 100 -2 19 -7 64 -10 100 -3 36 -8 81 -10 100 -2 19 -7 62 -10 95 -6 67 -10 111 -29 290 -13 118 -17 164 -21 205 -3 25 -7 65 -9 90 -3 25 -8 74 -11 110 -4 36 -8 83 -11 105 -12 110 -46 462 -47 483 0 9 -93 12 -431 12 l-431 0 -321 -637 c-177 -351 -559 -1110 -849 -1688 -1282 -2550 -1248 -2482 -1268 -2481 -21 1 -46 52 -229 461 -27 61 -59 130 -70 155 -11 25 -28 63 -38 85 -9 22 -26 60 -37 85 -11 25 -49 110 -83 190 -34 80 -68 159 -75 175 -8 17 -28 64 -45 105 -17 41 -38 89 -45 105 -7 17 -55 131 -105 255 -51 124 -98 239 -105 255 -16 36 -125 313 -201 510 -30 77 -59 149 -64 160 -41 88 -468 1261 -648 1780 -50 143 -108 311 -129 372 l-38 113 -493 0 c-385 0 -494 -3 -497 -12z" transform="translate(0.000000,1000.000000) scale(0.100000,-0.100000)"/></g></svg> \ No newline at end of file