From efc332baa35e6994e6d0925782677b8fb199a86d Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Fri, 12 May 2023 10:28:36 +0200 Subject: [PATCH] feat(gateway): improved templates, user friendly errors --- CHANGELOG.md | 4 + gateway/assets/README.md | 23 +- gateway/assets/assets.go | 64 ++-- gateway/assets/build.sh | 14 - gateway/assets/dag-index.html | 67 ---- gateway/assets/dag.html | 33 ++ gateway/assets/directory-index.html | 99 ------ gateway/assets/directory.html | 70 ++++ gateway/assets/error.html | 54 ++++ gateway/assets/header.html | 12 + gateway/assets/icons.css | 381 ++++++++++++++++++++++ gateway/assets/icons.go | 68 ++++ gateway/assets/knownIcons.txt | 65 ---- gateway/assets/src/dag-index.html | 66 ---- gateway/assets/src/directory-index.html | 98 ------ gateway/assets/src/icons.css | 403 ------------------------ gateway/assets/src/style.css | 212 ------------- gateway/assets/style.css | 225 +++++++++++++ gateway/assets/templates.go | 81 +++++ gateway/assets/test/go.mod | 3 - gateway/assets/test/main.go | 136 ++++---- gateway/errors.go | 24 +- gateway/errors_test.go | 14 +- gateway/gateway.go | 4 + gateway/gateway_test.go | 38 +++ gateway/handler.go | 42 +-- gateway/handler_block.go | 4 +- gateway/handler_car.go | 6 +- gateway/handler_codec.go | 26 +- gateway/handler_defaults.go | 18 +- gateway/handler_ipns_record.go | 10 +- gateway/handler_tar.go | 6 +- gateway/handler_unixfs__redirects.go | 8 +- gateway/handler_unixfs_dir.go | 17 +- 34 files changed, 1160 insertions(+), 1235 deletions(-) delete mode 100755 gateway/assets/build.sh delete mode 100644 gateway/assets/dag-index.html create mode 100644 gateway/assets/dag.html delete mode 100644 gateway/assets/directory-index.html create mode 100644 gateway/assets/directory.html create mode 100644 gateway/assets/error.html create mode 100644 gateway/assets/header.html create mode 100644 gateway/assets/icons.css create mode 100644 gateway/assets/icons.go delete mode 100644 gateway/assets/knownIcons.txt delete mode 100644 gateway/assets/src/dag-index.html delete mode 100644 gateway/assets/src/directory-index.html delete mode 100644 gateway/assets/src/icons.css delete mode 100644 gateway/assets/src/style.css create mode 100644 gateway/assets/style.css create mode 100644 gateway/assets/templates.go delete mode 100644 gateway/assets/test/go.mod diff --git a/CHANGELOG.md b/CHANGELOG.md index 57a72bf1f..7d0d92931 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ The following emojis are used to highlight certain changes: ## [Unreleased] +- ✨ The gateway templates were updated to provide better features for users and gateway implementers: + - New human-friendly error messages. + - Updated, higher-definition icons in directory listings. + ## [0.8.0] - 2023-04-05 ### Added diff --git a/gateway/assets/README.md b/gateway/assets/README.md index 25d1a35e8..c58af61ac 100644 --- a/gateway/assets/README.md +++ b/gateway/assets/README.md @@ -1,27 +1,20 @@ # Required Assets for the Gateway -> DAG and Directory HTML for HTTP gateway +> HTTP Gateway Templates. ## Updating -When making updates to the templates, please note the following: - -1. Make your changes to the (human-friendly) source documents in the `src` directory. -2. Before testing or releasing, go to `assets/` and run `go generate .`. +To update the templates, make changes to the files in `html/` and `css/`. ## Testing -1. Make sure you have [Go](https://golang.org/dl/) installed -2. Start the test server, which lives in its own directory: - -```bash -> cd test -> go run . -``` +1. Make sure you have [Go](https://golang.org/dl/) installed. +2. From the `assets/` directory, start the test server: `go run test/main.go`. -This will listen on [`localhost:3000`](http://localhost:3000/) and reload the template every time you refresh the page. Here you have two pages: +This will listen on [`localhost:3000`](http://localhost:3000/) and reload the template every time you refresh the page. Here you have three pages: - [`localhost:3000/dag`](http://localhost:3000/dag) for the DAG template preview; and -- [`localhost:3000/directory`](http://localhost:3000/directory) for the Directory template preview. +- [`localhost:3000/directory`](http://localhost:3000/directory) for the Directory template preview; and +- [`localhost:3000/error?code=500`](http://localhost:3000/error?status=500) for the Error template preview, you can replace `500` by a different status code. -If you get a "no such file or directory" error upon trying `go run .`, make sure you ran `go generate .` to generate the minified artifact that the test is looking for. +Every time you refresh, the template will be reloaded. diff --git a/gateway/assets/assets.go b/gateway/assets/assets.go index 5a478adc7..dc4748b8c 100644 --- a/gateway/assets/assets.go +++ b/gateway/assets/assets.go @@ -1,4 +1,3 @@ -//go:generate ./build.sh package assets import ( @@ -9,8 +8,6 @@ import ( "strconv" "html/template" - "net/url" - "path" "strings" "github.com/cespare/xxhash/v2" @@ -18,8 +15,8 @@ import ( ipfspath "github.com/ipfs/boxo/path" ) -//go:embed dag-index.html directory-index.html knownIcons.txt -var asset embed.FS +//go:embed *.html *.css +var assets embed.FS // AssetHash a non-cryptographic hash of all embedded assets var AssetHash string @@ -27,6 +24,7 @@ var AssetHash string var ( DirectoryTemplate *template.Template DagTemplate *template.Template + ErrorTemplate *template.Template ) func init() { @@ -36,7 +34,7 @@ func init() { func initAssetsHash() { sum := xxhash.New() - err := fs.WalkDir(asset, ".", func(path string, d fs.DirEntry, err error) error { + err := fs.WalkDir(assets, ".", func(path string, d fs.DirEntry, err error) error { if err != nil { return err } @@ -45,7 +43,7 @@ func initAssetsHash() { return nil } - file, err := asset.Open(path) + file, err := assets.Open(path) if err != nil { return err } @@ -61,60 +59,48 @@ func initAssetsHash() { } func initTemplates() { - knownIconsBytes, err := asset.ReadFile("knownIcons.txt") + var err error + + // Directory listing template + DirectoryTemplate, err = BuildTemplate(assets, "directory.html") if err != nil { panic(err) } - knownIcons := make(map[string]struct{}) - for _, ext := range strings.Split(strings.TrimSuffix(string(knownIconsBytes), "\n"), "\n") { - knownIcons[ext] = struct{}{} - } - - // helper to guess the type/icon for it by the extension name - iconFromExt := func(name string) string { - ext := path.Ext(name) - _, ok := knownIcons[ext] - if !ok { - // default blank icon - return "ipfs-_blank" - } - return "ipfs-" + ext[1:] // slice of the first dot - } - - // custom template-escaping function to escape a full path, including '#' and '?' - urlEscape := func(rawUrl string) string { - pathURL := url.URL{Path: rawUrl} - return pathURL.String() - } - // Directory listing template - dirIndexBytes, err := asset.ReadFile("directory-index.html") + // DAG Index template + DagTemplate, err = BuildTemplate(assets, "dag.html") if err != nil { panic(err) } - DirectoryTemplate = template.Must(template.New("dir").Funcs(template.FuncMap{ - "iconFromExt": iconFromExt, - "urlEscape": urlEscape, - }).Parse(string(dirIndexBytes))) - - // DAG Index template - dagIndexBytes, err := asset.ReadFile("dag-index.html") + // Error template + ErrorTemplate, err = BuildTemplate(assets, "error.html") if err != nil { panic(err) } +} - DagTemplate = template.Must(template.New("dir").Parse(string(dagIndexBytes))) +type GlobalData struct { + SupportURL string } type DagTemplateData struct { + GlobalData Path string CID string CodecName string CodecHex string } +type ErrorTemplateData struct { + GlobalData + StatusCode int + StatusText string + Error string +} + type DirectoryTemplateData struct { + GlobalData GatewayURL string DNSLink bool Listing []DirectoryItem diff --git a/gateway/assets/build.sh b/gateway/assets/build.sh deleted file mode 100755 index 531bbfc02..000000000 --- a/gateway/assets/build.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -euo pipefail - -function build() { - rm -f $1 - sed '/ ./base-html.html - (echo "") > ./minified-wrapped-style.html - sed '/<\/title>/ r ./minified-wrapped-style.html' ./base-html.html > ./$1 - rm ./base-html.html && rm ./minified-wrapped-style.html -} - -build "directory-index.html" -build "dag-index.html" diff --git a/gateway/assets/dag-index.html b/gateway/assets/dag-index.html deleted file mode 100644 index 5bba8f5c0..000000000 --- a/gateway/assets/dag-index.html +++ /dev/null @@ -1,67 +0,0 @@ - -{{ $root := . }} - - - - - - - - - - - - - - - - - -{{ .Path }} - - - - -
-
-

CID: {{.CID}}
- Codec: {{.CodecName}} ({{.CodecHex}})

-
-
- - - - - - - -
-

Preview as JSON
(application/json)

-
-

Or download as: -

-

-
-
-
- - diff --git a/gateway/assets/dag.html b/gateway/assets/dag.html new file mode 100644 index 000000000..be739aaee --- /dev/null +++ b/gateway/assets/dag.html @@ -0,0 +1,33 @@ + + + + + + + + {{ .Path }} + + + +
+
+
+
+ CID: {{.CID}} +
+
+ Codec: {{.CodecName}} ({{.CodecHex}}) +
+
+
+

You can download this block as:

+ + +
+
+ + diff --git a/gateway/assets/directory-index.html b/gateway/assets/directory-index.html deleted file mode 100644 index d861cb657..000000000 --- a/gateway/assets/directory-index.html +++ /dev/null @@ -1,99 +0,0 @@ - -{{ $root := . }} - - - - - - - - - - - - - - - - - -{{ .Path }} - - - - -
-
-
- - Index of - {{ range .Breadcrumbs -}} - /{{ if .Path }}{{ .Name }}{{ else }}{{ .Name }}{{ end }} - {{- else }} - {{ .Path }} - {{ end }} - - {{ if .Hash }} -
- {{ .Hash }} -
- {{ end }} -
- {{ if .Size }} -
-  {{ .Size }} -
- {{ end }} -
-
- - {{ if .BackLink }} - - - - - - - {{ end }} - {{ range .Listing }} - - - - - - - {{ end }} -
-
 
-
- .. -
-
 
-
- {{ .Name }} - - {{ if .Hash }} - - {{ .ShortHash }} - - {{ end }} - {{ .Size }}
-
-
- - diff --git a/gateway/assets/directory.html b/gateway/assets/directory.html new file mode 100644 index 000000000..888ecabf5 --- /dev/null +++ b/gateway/assets/directory.html @@ -0,0 +1,70 @@ + +{{ $root := . }} + + + + + + + {{ .Path }} + + + +
+
+
+
+ + Index of + {{ range .Breadcrumbs -}} + /{{ if .Path }}{{ .Name }}{{ else }}{{ .Name }}{{ end }} + {{- else }} + {{ .Path }} + {{ end }} + + {{ if .Hash }} +
+ {{- .Hash -}} +
+ {{ end }} +
+ {{ if .Size }} +
+  {{ .Size }} +
+ {{ end }} +
+
+
+ {{ if .BackLink }} +
+
 
+
+
+ .. +
+
+
+ + {{ end }} + {{ range .Listing }} +
+
 
+
+
+ {{ .Name }} +
+
+ {{ if .Hash }} + + {{- .ShortHash -}} + + {{ end }} +
+
{{ .Size }}
+ {{ end }} +
+
+
+ + diff --git a/gateway/assets/error.html b/gateway/assets/error.html new file mode 100644 index 000000000..0b248a798 --- /dev/null +++ b/gateway/assets/error.html @@ -0,0 +1,54 @@ + + + + + + + + {{ .StatusCode }} {{ .StatusText }} + + + +
+
+
+ {{ .StatusCode }} {{ .StatusText }} +
+
+ {{ if eq .StatusCode 400 }} +

Your request is invalid. Please check the error below for more information.

+ {{ else if eq .StatusCode 404 }} +

The content path you requested cannot be found. There's likely an invalid or missing DAG node.

+ {{ else if eq .StatusCode 406 }} +

This gateway is unable to return the data in the format requested by the client.

+ {{ else if eq .StatusCode 410 }} +

This gateway refuses to return the requested data.

+ {{ else if eq .StatusCode 412 }} +

This gateway is unable to return the requested data under the conditions sent by the client.

+ {{ else if eq .StatusCode 429 }} +

You have made too many requests. Please wait some time and try again.

+ {{ else if eq .StatusCode 451 }} +

This gateway is not allowed to return the requested data due to legal reasons.

+ {{ else if eq .StatusCode 500 }} +

This gateway was unable to return the requested data due to an internal error. Please check the error below for more information.

+ {{ else if eq .StatusCode 502 }} +

The gateway backed was unable to fullfil your request due to an error.

+ {{ else if eq .StatusCode 504 }} +

The gateway backend was unable to fullfil your request due to a timeout.

+ {{ end }} + +
{{ .Error }}
+ +

How you can proceed:

+
    +
  • Check the Discussion Forums for similar errors.
  • +
  • Try diagnosing your request with the diagnostic tools.
  • +
  • Self-host and run an IPFS client that verifies your data.
  • + {{ if or (eq .StatusCode 400) (eq .StatusCode 404) }} +
  • Inspect the CID or DAG.
  • + {{ end }} +
+
+
+ + diff --git a/gateway/assets/header.html b/gateway/assets/header.html new file mode 100644 index 000000000..d1e3579f3 --- /dev/null +++ b/gateway/assets/header.html @@ -0,0 +1,12 @@ + diff --git a/gateway/assets/icons.css b/gateway/assets/icons.css new file mode 100644 index 000000000..6f4dbc8e6 --- /dev/null +++ b/gateway/assets/icons.css @@ -0,0 +1,381 @@ +/* Source - https://github.com/dmhendricks/file-icon-vectors/tree/master */ + +.ipfs-_blank { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='1' x2='36' y2='99' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.068' y1='72.204' x2='58.568' y2='85.705' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23b)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain +} + +.ipfs-aac { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.15' y1='2.887' x2='36.15' y2='101.126' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.012' stop-color='%235b5794'/%3E%3Cstop offset='.182' stop-color='%237b77aa'/%3E%3Cstop offset='.352' stop-color='%239896bf'/%3E%3Cstop offset='.521' stop-color='%23b2b2d2'/%3E%3Cstop offset='.687' stop-color='%23c7c9e2'/%3E%3Cstop offset='.848' stop-color='%23d6d9ec'/%3E%3Cstop offset='1' stop-color='%23dbdff0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill-opacity='0' stroke='%232d3293' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M26.1 91.2h-4.4l-1.8-4.5h-8l-1.7 4.5H5.9l7.8-19.9H18l8.1 19.9zm-7.5-7.9l-2.8-7.4-2.7 7.4h5.5zm27.7 7.9h-4.4l-1.8-4.5h-8l-1.7 4.5h-4.3L34 71.3h4.3l8 19.9zm-7.4-7.9l-2.8-7.4-2.7 7.4h5.5zm22.5.6l3.9 1.2c-.6 2.2-1.6 3.8-3 4.8-1.4 1.1-3.2 1.6-5.3 1.6-2.7 0-4.9-.9-6.6-2.7-1.7-1.8-2.6-4.3-2.6-7.4 0-3.3.9-5.9 2.6-7.7 1.7-1.8 4-2.7 6.8-2.7 2.5 0 4.5.7 6 2.2.9.9 1.6 2.1 2.1 3.7l-4 1c-.2-1-.7-1.8-1.5-2.4-.8-.6-1.7-.9-2.8-.9-1.5 0-2.7.5-3.6 1.6-1 .8-1.4 2.5-1.4 4.9 0 2.5.5 4.3 1.4 5.4.9 1.1 2.1 1.6 3.6 1.6 1.1 0 2-.3 2.8-1 .7-.7 1.2-1.8 1.6-3.2z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='58.321' y1='87.273' x2='50.783' y2='78.839' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.07' stop-color='%23706ca2'/%3E%3Cstop offset='.159' stop-color='%238988b5'/%3E%3Cstop offset='.255' stop-color='%23a3a5c8'/%3E%3Cstop offset='.359' stop-color='%23babfd9'/%3E%3Cstop offset='.471' stop-color='%23ced5e7'/%3E%3Cstop offset='.598' stop-color='%23dee6f2'/%3E%3Cstop offset='.751' stop-color='%23e9f3fa'/%3E%3Cstop offset='1' stop-color='%23ecf8fe'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill-opacity='0' stroke='%232d3293' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='14.776' y1='56.174' x2='57.726' y2='56.174' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23352c7f'/%3E%3Cstop offset='.074' stop-color='%233e3786'/%3E%3Cstop offset='.266' stop-color='%23544f96'/%3E%3Cstop offset='.457' stop-color='%236763a5'/%3E%3Cstop offset='.645' stop-color='%237572b1'/%3E%3Cstop offset='.827' stop-color='%237e7cba'/%3E%3Cstop offset='1' stop-color='%238180bd'/%3E%3C/linearGradient%3E%3Cpath d='M14.8 39.3h6.5l13-10v33l-13-10h-6.5v-13zm26.1 10.2v2.9c.1 0 1.6 0 3.2-.8s3.4-2.7 3.4-5.8c0-3.1-1.7-5-3.4-5.8-1.6-.8-3.1-.8-3.2-.8v2.9h.1c.4 0 1.4.2 2.1.7.8.5 1.4 1.2 1.4 3 0 2-.8 2.6-1.8 3.2-.5.2-1 .4-1.3.4-.2 0-.3 0-.4.1h-.1zm0 5.1v2.9c.1 0 2.8 0 5.8-1.4 2.9-1.4 6-4.6 5.9-10.1.1-5.6-3-8.7-5.9-10.1-2.9-1.4-5.6-1.4-5.8-1.4v2.9h.3c.8.1 3.1.4 4.9 1.6 1.9 1.2 3.5 3.1 3.5 7.1 0 4.6-2.1 6.5-4.3 7.5-1.1.6-2.2.8-3.1 1-.4.1-.8.1-1 .1-.2-.1-.3-.1-.3-.1zm0 5v2.9c.1 0 4.1 0 8.3-2.1 4.2-2 8.5-6.5 8.5-14.6.1-8.1-4.3-12.6-8.5-14.6-4.2-2.1-8.2-2.1-8.3-2.1V32h.6c1.3.1 4.8.6 7.7 2.5 2.9 1.9 5.5 5.1 5.6 11.3-.1 7-3.4 10.2-6.9 12-1.7.9-3.5 1.3-4.9 1.5-.7.1-1.2.2-1.6.2-.3.1-.5.1-.5.1zm0-27.5z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-ai { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='101' x2='36' y2='3.004' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f8b0b8'/%3E%3Cstop offset='.211' stop-color='%23f6acb5'/%3E%3Cstop offset='.37' stop-color='%23f2a3ad'/%3E%3Cstop offset='.512' stop-color='%23ed95a1'/%3E%3Cstop offset='.645' stop-color='%23e78292'/%3E%3Cstop offset='.77' stop-color='%23e06980'/%3E%3Cstop offset='.889' stop-color='%23d7486b'/%3E%3Cstop offset='1' stop-color='%23ce0757'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill-opacity='0' stroke='%23d41c5c' stroke-width='2'/%3E%3Cpath d='M43.3 91.1h-4.4l-1.8-4.5H29l-1.7 4.5H23l7.9-19.8h4.3l8.1 19.8zm-7.5-7.9L33 75.9l-2.7 7.4h5.5zm9.5 7.9V71.2h4.1V91h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='1729.689' y1='-415.956' x2='1753.864' y2='-415.956' gradientTransform='scale(-1 1) rotate(-35.88 1555.712 2555.727)'%3E%3Cstop offset='0' stop-color='%23ee2868'/%3E%3Cstop offset='1' stop-color='%23bc024f'/%3E%3C/linearGradient%3E%3Cpath d='M22 62.3L17.4 59s7.7-15.2 4.7-20.8l16.3-12.6s6.2 1 9.3 6.5l-7 19.1C34.3 50.3 22 62.3 22 62.3zm11.1-19.8c1.3.9 3 .6 3.9-.6.9-1.3.6-3-.6-3.9-1.3-.9-3-.6-3.9.6-1 1.2-.7 3 .6 3.9zm0 0L19.8 60.6m39.3-34.4c-6.2-11.8-19.6-14-19.6-14l-6 8.2c13.4 2.2 19.6 14 19.6 14l6-8.2z' opacity='.73' fill='url(%23b)'/%3E%3Cpath d='M19.9 60.8l13.4-18.2' fill-opacity='0' stroke='%23f8b6bb'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.178' y1='74.159' x2='58.772' y2='87.753' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fffeee'/%3E%3Cstop offset='.265' stop-color='%23fffaec'/%3E%3Cstop offset='.402' stop-color='%23fef2e6'/%3E%3Cstop offset='.51' stop-color='%23fce7dc'/%3E%3Cstop offset='.604' stop-color='%23fad7cf'/%3E%3Cstop offset='.687' stop-color='%23f6c3bf'/%3E%3Cstop offset='.763' stop-color='%23f2abac'/%3E%3Cstop offset='.834' stop-color='%23ee8f97'/%3E%3Cstop offset='.901' stop-color='%23ea6f82'/%3E%3Cstop offset='.962' stop-color='%23e5446d'/%3E%3Cstop offset='1' stop-color='%23e30e60'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill='url(%23c)'/%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill-opacity='0' stroke='%23d41c5c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-aiff { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.15' y1='2.887' x2='36.15' y2='101.126' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.012' stop-color='%235b5794'/%3E%3Cstop offset='.182' stop-color='%237b77aa'/%3E%3Cstop offset='.352' stop-color='%239896bf'/%3E%3Cstop offset='.521' stop-color='%23b2b2d2'/%3E%3Cstop offset='.687' stop-color='%23c7c9e2'/%3E%3Cstop offset='.848' stop-color='%23d6d9ec'/%3E%3Cstop offset='1' stop-color='%23dbdff0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill-opacity='0' stroke='%232d3293' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M25.3 91.2h-4.4l-1.8-4.5h-8l-1.7 4.5H5.1l7.8-19.9h4.3l8.1 19.9zm-7.5-7.9L15 75.9l-2.7 7.4h5.5zm9.5 7.9V71.3h4.1v19.9h-4.1zm8 0V71.3h13.8v3.4h-9.7v4.7h8.4v3.4h-8.4v8.5h-4.1zm17.1 0V71.3h13.8v3.4h-9.7v4.7h8.4v3.4h-8.4v8.5h-4.1z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='58.321' y1='87.273' x2='50.783' y2='78.839' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.07' stop-color='%23706ca2'/%3E%3Cstop offset='.159' stop-color='%238988b5'/%3E%3Cstop offset='.255' stop-color='%23a3a5c8'/%3E%3Cstop offset='.359' stop-color='%23babfd9'/%3E%3Cstop offset='.471' stop-color='%23ced5e7'/%3E%3Cstop offset='.598' stop-color='%23dee6f2'/%3E%3Cstop offset='.751' stop-color='%23e9f3fa'/%3E%3Cstop offset='1' stop-color='%23ecf8fe'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill-opacity='0' stroke='%232d3293' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='14.776' y1='56.174' x2='57.726' y2='56.174' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23352c7f'/%3E%3Cstop offset='.074' stop-color='%233e3786'/%3E%3Cstop offset='.266' stop-color='%23544f96'/%3E%3Cstop offset='.457' stop-color='%236763a5'/%3E%3Cstop offset='.645' stop-color='%237572b1'/%3E%3Cstop offset='.827' stop-color='%237e7cba'/%3E%3Cstop offset='1' stop-color='%238180bd'/%3E%3C/linearGradient%3E%3Cpath d='M14.8 39.3h6.5l13-10v33l-13-10h-6.5v-13zm26.1 10.2v2.9c.1 0 1.6 0 3.2-.8s3.4-2.7 3.4-5.8c0-3.1-1.7-5-3.4-5.8-1.6-.8-3.1-.8-3.2-.8v2.9h.1c.4 0 1.4.2 2.1.7.8.5 1.4 1.2 1.4 3 0 2-.8 2.6-1.8 3.2-.5.2-1 .4-1.3.4-.2 0-.3 0-.4.1h-.1zm0 5.1v2.9c.1 0 2.8 0 5.8-1.4 2.9-1.4 6-4.6 5.9-10.1.1-5.6-3-8.7-5.9-10.1-2.9-1.4-5.6-1.4-5.8-1.4v2.9h.3c.8.1 3.1.4 4.9 1.6 1.9 1.2 3.5 3.1 3.5 7.1 0 4.6-2.1 6.5-4.3 7.5-1.1.6-2.2.8-3.1 1-.4.1-.8.1-1 .1-.2-.1-.3-.1-.3-.1zm0 5v2.9c.1 0 4.1 0 8.3-2.1 4.2-2 8.5-6.5 8.5-14.6.1-8.1-4.3-12.6-8.5-14.6-4.2-2.1-8.2-2.1-8.3-2.1V32h.6c1.3.1 4.8.6 7.7 2.5 2.9 1.9 5.5 5.1 5.6 11.3-.1 7-3.4 10.2-6.9 12-1.7.9-3.5 1.3-4.9 1.5-.7.1-1.2.2-1.6.2-.3.1-.5.1-.5.1zm0-27.5z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-avi { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M33.5 91.1h-4.4l-1.8-4.5h-8l-1.7 4.5h-4.3l7.8-19.8h4.3l8.1 19.8zM26 83.2l-2.8-7.4-2.7 7.4H26zm12.7 7.9l-7.2-19.8h4.4L41 85.9l4.9-14.7h4.3L43 91.1h-4.3zm13.4 0V71.2h4V91h-4z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-bmp { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M7.5 71.2h8c1.6 0 2.8.1 3.5.2.8.1 1.5.4 2.1.8.6.4 1.1 1 1.5 1.7.4.7.6 1.5.6 2.3 0 .9-.3 1.8-.8 2.6s-1.2 1.4-2.1 1.7c1.2.4 2.2 1 2.8 1.8s1 1.8 1 3c0 .9-.2 1.8-.6 2.6s-1 1.5-1.7 2-1.6.8-2.7.9c-.7.1-2.3.1-4.9.1H7.5V71.2zm4 3.3v4.6h2.6c1.6 0 2.5 0 2.9-.1.7-.1 1.2-.3 1.6-.7s.6-.9.6-1.5-.2-1.1-.5-1.5c-.3-.4-.8-.6-1.5-.7-.4 0-1.5-.1-3.4-.1h-2.3zm0 7.9v5.3h3.7c1.5 0 2.4 0 2.8-.1.6-.1 1.1-.4 1.5-.8.4-.4.6-1 .6-1.7 0-.6-.1-1.1-.4-1.5-.3-.4-.7-.7-1.3-.9-.5-.2-1.7-.3-3.6-.3h-3.3zm16.1 8.7V71.2h6l3.6 13.5 3.6-13.5h6V91h-3.7V75.4l-4 15.6h-3.9l-4-15.6V91h-3.6zm23.3 0V71.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3H55v7.5h-4.1zm4-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.4-.1-2.9-.1h-2.1z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-c { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' stroke='%237191a1' stroke-width='2' fill='none'/%3E%3Cpath d='M40.5 83.8l3.9 1.2c-.6 2.2-1.6 3.8-3 4.8-1.4 1.1-3.2 1.6-5.3 1.6-2.7 0-4.8-.9-6.5-2.7S27 84.4 27 81.3c0-3.3.9-5.9 2.6-7.7s4-2.7 6.8-2.7c2.4 0 4.4.7 6 2.2.9.8 1.6 2.1 2 3.7l-4 .9c-.2-1-.7-1.8-1.5-2.4-.7-.6-1.7-.9-2.7-.9-1.5 0-2.7.5-3.6 1.6s-1.4 2.8-1.4 5.1c0 2.5.5 4.3 1.4 5.4s2 1.5 3.4 1.5c1.1 0 2-.3 2.8-1 .8-.7 1.3-1.8 1.7-3.2z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='13.15' y1='22' x2='54.15' y2='22' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 22h41v4h-41v-4z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='19.15' y1='33.75' x2='60.15' y2='33.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 33.7h41v4.1h-41v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='13.15' y1='45.75' x2='54.15' y2='45.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 45.7h41v4.1h-41v-4.1z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='19.15' y1='58' x2='60.15' y2='58' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 58h41v4h-41v-4z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23f)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel' fill='none'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-cpp { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' stroke='%237191a1' stroke-width='2' fill='none'/%3E%3Cpath d='M22.1 83.8L26 85c-.6 2.2-1.6 3.8-3 4.8-1.4 1.1-3.2 1.6-5.3 1.6-2.7 0-4.8-.9-6.5-2.7s-2.6-4.3-2.6-7.4c0-3.3.9-5.9 2.6-7.7s4-2.7 6.8-2.7c2.4 0 4.4.7 6 2.2.9.8 1.6 2.1 2 3.7l-4 .9c-.2-1-.7-1.8-1.5-2.4-.7-.6-1.7-.9-2.7-.9-1.5 0-2.7.5-3.6 1.6s-1.4 2.8-1.4 5.1c0 2.5.5 4.3 1.4 5.4s2.1 1.6 3.5 1.6c1.1 0 2-.3 2.8-1s1.3-1.9 1.6-3.3zm7.4 7.3V71.2H36c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.4-.1-2.9-.1h-2.1zm14.6 16.5V71.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.4-.1-2.9-.1h-2.1z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='13.15' y1='22' x2='54.15' y2='22' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 22h41v4h-41v-4z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='19.15' y1='33.75' x2='60.15' y2='33.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 33.7h41v4.1h-41v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='13.15' y1='45.75' x2='54.15' y2='45.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 45.7h41v4.1h-41v-4.1z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='19.15' y1='58' x2='60.15' y2='58' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 58h41v4h-41v-4z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23f)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel' fill='none'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-css { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' stroke='%237191a1' stroke-width='2' fill='none'/%3E%3Cg opacity='.95'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='21.45' y1='61.55' x2='21.45' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M14.4 44.1v-4.9c1-.1 1.8-.2 2.3-.5.5-.2.9-.7 1.3-1.2.4-.6.6-1.3.8-2.2.1-.7.2-1.8.2-3.4 0-2.7.1-4.5.4-5.6.2-1 .7-1.9 1.3-2.5s1.6-1.1 2.8-1.5c.8-.2 2.1-.4 3.9-.4h1.1v4.9c-1.5 0-2.5.1-2.9.3-.4.2-.7.4-1 .8-.2.3-.3.9-.3 1.8s-.1 2.5-.2 4.9c-.1 1.4-.2 2.5-.5 3.4-.3.8-.7 1.5-1.1 2.1-.4.5-1.1 1.1-2 1.7.8.5 1.5 1 2 1.6s.9 1.4 1.2 2.3.5 2.1.5 3.6c.1 2.3.1 3.7.1 4.4 0 .9.1 1.5.3 1.9.2.4.6.6 1 .8.4.2 1.4.3 2.9.3v4.9h-1.1c-1.8 0-3.3-.1-4.2-.4-1-.3-1.8-.8-2.5-1.5s-1.1-1.5-1.4-2.5c-.2-1-.3-2.6-.3-4.8 0-2.5-.1-4.2-.3-4.9-.3-1.1-.8-1.9-1.4-2.4-.7-.6-1.6-1-2.9-1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='51.7' y1='61.45' x2='51.7' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M58.7 44.1c-1 .1-1.8.2-2.3.5-.5.2-.9.7-1.3 1.2-.4.6-.6 1.3-.8 2.2-.1.7-.2 1.8-.2 3.4 0 2.7-.1 4.5-.4 5.6-.2 1.1-.7 1.9-1.3 2.5-.6.6-1.6 1.1-2.8 1.5-.8.2-2.1.4-3.9.4h-1.1v-4.9c1.5 0 2.4-.1 2.9-.3s.8-.5 1-.8c.2-.3.3-.9.3-1.8 0-.8.1-2.4.2-4.8.1-1.4.3-2.6.6-3.4.3-.9.7-1.6 1.2-2.2s1.1-1.1 1.9-1.6c-1-.7-1.8-1.3-2.2-1.9-.6-.9-1.1-2.1-1.3-3.4-.2-1-.3-3.1-.3-6.3 0-1-.1-1.7-.3-2.1-.2-.3-.5-.6-.9-.8-.4-.2-1.4-.3-3-.3V22h1.1c1.8 0 3.3.1 4.2.4 1 .3 1.8.8 2.5 1.5s1.1 1.5 1.4 2.5c.2 1 .4 2.6.4 4.8 0 2.5.1 4.1.3 4.9.3 1.1.8 1.9 1.4 2.3.6.5 1.6.7 2.8.8l-.1 4.9z' fill='url(%23c)'/%3E%3C/g%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23d)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel' fill='none'/%3E%3Cpath d='M22.1 84.2l3.9 1.2c-.6 2.2-1.6 3.8-3 4.9-1.4 1.1-3.2 1.6-5.3 1.6-2.7 0-4.8-.9-6.6-2.7-1.7-1.8-2.6-4.3-2.6-7.5 0-3.3.9-5.9 2.6-7.8s4-2.8 6.8-2.8c2.5 0 4.4.7 6 2.2.9.9 1.6 2.1 2.1 3.7l-4 1c-.2-1-.7-1.9-1.5-2.5s-1.7-.9-2.7-.9c-1.5 0-2.7.5-3.6 1.6-.9 1.1-1.4 2.8-1.4 5.2 0 2.5.5 4.3 1.4 5.4.9 1.1 2.1 1.6 3.6 1.6 1.1 0 2-.3 2.8-1 .6-.7 1.1-1.8 1.5-3.2zm6.3.8l3.9-.4c.2 1.3.7 2.3 1.4 2.9s1.7.9 2.9.9c1.3 0 2.3-.3 2.9-.8.7-.6 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.9.6-.9 1.4-1.6 2.5-2 1.1-.5 2.4-.7 3.9-.7 2.5 0 4.4.6 5.7 1.7s1.9 2.6 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.5-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.2.3-.5.8-.5 1.3s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4 1.7 1.2 2.2 2 .8 1.9.8 3.2c0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.8-1.3-.9-2.1-2.6-2.4-4.9zm18.7 0l3.9-.4c.2 1.3.7 2.3 1.4 2.9s1.7.9 2.9.9c1.3 0 2.3-.3 2.9-.8.7-.6 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.9.6-.9 1.4-1.6 2.5-2 1.1-.5 2.4-.7 3.9-.7 2.5 0 4.4.6 5.7 1.7s1.9 2.6 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.5-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4 1.7 1.2 2.2 2 .8 1.9.8 3.2c0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.8-1.2-.8-2-2.5-2.3-4.8z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-dat { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.85'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='35.794' y1='38.976' x2='35.794' y2='22.783'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='35.794' y1='39.476' x2='35.794' y2='22.283'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M35.8 22.8c-3.8 0-6.9 3.6-6.9 8.1S32 39 35.8 39s6.9-3.6 6.9-8.1-3.1-8.1-6.9-8.1zm0 13.1c-2.1 0-3.9-2.2-3.9-5s1.7-5 3.9-5c2.1 0 3.9 2.2 3.9 5-.1 2.7-1.8 5-3.9 5z' fill='url(%23b)' stroke='url(%23c)' stroke-miterlimit='10'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='20.25' y1='38.976' x2='20.25' y2='22.783'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='20.25' y1='39.476' x2='20.25' y2='22.283'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M21.8 37.4V24.3c0-.9-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5v13.1c0 .9.7 1.5 1.5 1.5.8.1 1.5-.6 1.5-1.5z' fill='url(%23d)' stroke='url(%23e)' stroke-miterlimit='10'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='20.25' y1='62.649' x2='20.25' y2='46.457'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='20.25' y1='63.149' x2='20.25' y2='45.957'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M20.2 46.5c-3.8 0-6.9 3.6-6.9 8.1s3.1 8.1 6.9 8.1 6.9-3.6 6.9-8.1c.1-4.5-3-8.1-6.9-8.1zm0 13.1c-2.1 0-3.9-2.2-3.9-5s1.7-5 3.9-5 3.9 2.2 3.9 5c0 2.7-1.7 5-3.9 5z' fill='url(%23f)' stroke='url(%23g)' stroke-miterlimit='10'/%3E%3ClinearGradient id='h' gradientUnits='userSpaceOnUse' x1='35.794' y1='62.649' x2='35.794' y2='46.457'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='i' gradientUnits='userSpaceOnUse' x1='35.794' y1='63.149' x2='35.794' y2='45.957'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M37.3 61.1V48c0-.9-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5v13.1c0 .9.7 1.5 1.5 1.5s1.5-.6 1.5-1.5z' fill='url(%23h)' stroke='url(%23i)' stroke-miterlimit='10'/%3E%3ClinearGradient id='j' gradientUnits='userSpaceOnUse' x1='51.751' y1='40.11' x2='51.751' y2='23.918'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='k' gradientUnits='userSpaceOnUse' x1='51.751' y1='40.61' x2='51.751' y2='23.418'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M53.3 38.6V25.5c0-.9-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5v13.1c0 .9.7 1.5 1.5 1.5s1.5-.7 1.5-1.5z' fill='url(%23j)' stroke='url(%23k)' stroke-miterlimit='10'/%3E%3ClinearGradient id='l' gradientUnits='userSpaceOnUse' x1='51.751' y1='63.783' x2='51.751' y2='47.591'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3ClinearGradient id='m' gradientUnits='userSpaceOnUse' x1='51.751' y1='64.283' x2='51.751' y2='47.091'%3E%3Cstop offset='0' stop-color='%23869ba6'/%3E%3Cstop offset='.379' stop-color='%238399a4'/%3E%3Cstop offset='.576' stop-color='%237b929e'/%3E%3Cstop offset='.731' stop-color='%236d8694'/%3E%3Cstop offset='.863' stop-color='%235a7785'/%3E%3Cstop offset='.981' stop-color='%23426373'/%3E%3Cstop offset='.99' stop-color='%23416271'/%3E%3C/linearGradient%3E%3Cpath d='M51.8 47.6c-3.8 0-6.9 3.6-6.9 8.1s3.1 8.1 6.9 8.1 6.9-3.6 6.9-8.1-3.1-8.1-6.9-8.1zm0 13.1c-2.1 0-3.9-2.2-3.9-5s1.7-5 3.9-5 3.9 2.2 3.9 5c-.1 2.8-1.8 5-3.9 5z' fill='url(%23l)' stroke='url(%23m)' stroke-miterlimit='10'/%3E%3C/g%3E%3ClinearGradient id='n' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23n)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M10.3 71.5h7.4c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 2 1.9 3.2s.7 2.9.7 4.7c0 1.6-.2 3.1-.6 4.3-.5 1.5-1.2 2.6-2.1 3.5-.7.7-1.6 1.2-2.8 1.6-.9.3-2.1.4-3.6.4h-7.6V71.5zm4 3.4v13.3h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9s.4-2.1.4-3.7-.1-2.7-.4-3.6-.7-1.5-1.1-1.9-1.1-.8-1.9-.9c-.6-.1-1.7-.2-3.3-.2h-1.8zm34.3 16.6h-4.4L42.4 87h-8l-1.7 4.6h-4.3l7.8-20h4.3l8.1 19.9zm-7.5-7.9l-2.8-7.4-2.7 7.4h5.5zm12.1 7.9V74.9h-5.9v-3.4h15.9v3.4h-5.9v16.7h-4.1z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-dmg { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.95%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='35.75' y1='2.995' x2='35.75' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23efc402'/%3E%3Cstop offset='.038' stop-color='%23f1c829'/%3E%3Cstop offset='.147' stop-color='%23f4d264'/%3E%3Cstop offset='.258' stop-color='%23f7dc8b'/%3E%3Cstop offset='.372' stop-color='%23f9e5ac'/%3E%3Cstop offset='.488' stop-color='%23fbecc7'/%3E%3Cstop offset='.606' stop-color='%23fcf3dd'/%3E%3Cstop offset='.728' stop-color='%23fef9ee'/%3E%3Cstop offset='.856' stop-color='%23fffdf9'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M44.8 1l27 26.7V99h-72V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M44.8 1l27 26.7V99h-72V1h45z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M5 72.2h7.4c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 1.9 1.9 3.2s.7 2.8.7 4.7c0 1.6-.2 3-.6 4.2-.5 1.5-1.2 2.7-2.2 3.6-.7.7-1.6 1.2-2.8 1.6-.9.3-2.1.4-3.6.4H5V72.2zm4 3.4v13.1h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9s.4-2.1.4-3.6-.1-2.7-.4-3.5c-.3-.8-.7-1.5-1.1-1.9-.5-.5-1.1-.8-1.9-.9-.6-.1-1.7-.2-3.3-.2H9zm16.2 16.5V72.2h6.1l3.6 13.5 3.6-13.5h6.1V92h-3.8V76.4l-4 15.6h-3.9l-4-15.6V92h-3.7zm32.7-7.3v-3.3h8.7v7.9c-.8.8-2.1 1.5-3.7 2.1-1.6.6-3.2.9-4.9.9-2.1 0-3.9-.4-5.5-1.3-1.5-.9-2.7-2.1-3.5-3.7-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.2-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.5 1.4 1 2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.8-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 4.9c0 2.4.5 4.1 1.6 5.3 1.1 1.2 2.4 1.8 4.2 1.8.8 0 1.7-.2 2.6-.5.9-.3 1.6-.7 2.2-1.2v-2.5h-4.6z' fill='%23a07802'/%3E%3Cg transform='translate(0 -952.362)'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='12.471' y1='995.277' x2='60.078' y2='995.277'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.721' y1='995.277' x2='60.828' y2='995.277'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3Cpath d='M30 973.4c-.1 0-.2 0-.3.1L13 981.1c-.5.2-.7 1-.3 1.5l5.2 6.1-5.2 6c-.3.4-.2 1.2.3 1.5l5.2 2.4v10.1c0 .4.2.7.6.9l17.1 7.6c.2.1.5.1.8 0l17.2-7.6c.3-.1.6-.5.6-.9v-10.1l5.2-2.4c.5-.2.7-1 .3-1.5l-5.2-6 5.2-6.1c.4-.4.2-1.2-.3-1.5L43 973.5c-.1-.1-.3-.1-.5-.1s-.5.1-.6.3l-5.5 5.9-5.5-5.9c-.3-.2-.6-.4-.9-.3zm-.2 2.1l4.8 5.2-15.3 6.8-4.4-5.2 14.9-6.8zm12.9 0l14.9 6.8-4.4 5.2-15.3-6.8 4.8-5.2zm-6.4 6.5l14.8 6.6-14.8 6.6-14.8-6.6 14.8-6.6zm-16.9 7.8l15.3 6.8-4.8 5.2L15 995l4.4-5.2zm33.8 0l4.4 5.2-14.9 6.8-4.8-5.2 15.3-6.8zm-17.9 8.9v16.1L20 1008v-8.6l9.6 4.4c.4.2.8.1 1.1-.2l4.6-4.9zm1.9 0l4.5 4.9c.3.3.7.4 1.1.2l9.6-4.4v8.6l-15.3 6.8v-16.1z' fill='url(%23SVGID_2_)' stroke='url(%23SVGID_3_)' stroke-width='1.5' stroke-miterlimit='10'/%3E%3C/g%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.344' y1='74.23' x2='58.844' y2='87.73' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23fff'/%3E%3Cstop offset='.234' stop-color='%23fffefb'/%3E%3Cstop offset='.369' stop-color='%23fefaf1'/%3E%3Cstop offset='.481' stop-color='%23fdf5e4'/%3E%3Cstop offset='.579' stop-color='%23fcf0d2'/%3E%3Cstop offset='.669' stop-color='%23fae9bc'/%3E%3Cstop offset='.752' stop-color='%23f9e2a2'/%3E%3Cstop offset='.831' stop-color='%23f7da83'/%3E%3Cstop offset='.905' stop-color='%23f4d15d'/%3E%3Cstop offset='.975' stop-color='%23f1c827'/%3E%3Cstop offset='1' stop-color='%23efc402'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-doc { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.005' x2='36' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23002d44'/%3E%3Cstop offset='.056' stop-color='%23013852'/%3E%3Cstop offset='.16' stop-color='%230a4d6b'/%3E%3Cstop offset='.274' stop-color='%230f5e82'/%3E%3Cstop offset='.398' stop-color='%230f6d96'/%3E%3Cstop offset='.539' stop-color='%230d77a4'/%3E%3Cstop offset='.711' stop-color='%230a7eae'/%3E%3Cstop offset='1' stop-color='%230881b2'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%2301415e' stroke-width='2'/%3E%3Cpath d='M6.6 71.2H14c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 1.9 1.9 3.2.4 1.3.7 2.8.7 4.7 0 1.6-.2 3-.6 4.2-.5 1.4-1.2 2.6-2.1 3.5-.7.7-1.6 1.2-2.8 1.6-.9.3-2.1.4-3.6.4H6.6V71.2zm4 3.4v13.1h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9s.4-2.1.4-3.6-.1-2.7-.4-3.5c-.3-.8-.7-1.5-1.1-1.9s-1.1-.8-1.9-.9c-.6-.1-1.7-.2-3.3-.2h-1.8zM26 81.3c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7s2.7 4.3 2.7 7.6c0 3.2-.9 5.7-2.6 7.5s-4.1 2.7-7.1 2.7-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.2-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.6-2.9 1.6-5.2 0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.2 1.2-1.7 2.9-1.7 5.2zm31.2 2.7l3.9 1.2c-.6 2.2-1.6 3.8-3 4.8s-3.2 1.6-5.3 1.6c-2.7 0-4.8-.9-6.6-2.7s-2.6-4.3-2.6-7.4c0-3.3.9-5.9 2.6-7.7s4-2.7 6.8-2.7c2.5 0 4.4.7 6 2.2.9.8 1.6 2.1 2.1 3.7l-4 .9c-.2-1-.7-1.8-1.5-2.4-.8-.6-1.7-.9-2.7-.9-1.5 0-2.7.5-3.6 1.6s-1.4 2.8-1.4 5.1c0 2.5.5 4.3 1.4 5.4s2 1.5 3.5 1.5c1.1 0 2-.3 2.8-1s1.3-1.8 1.6-3.2z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='18.121' y1='50.468' x2='55.041' y2='87.389' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23006186'/%3E%3Cstop offset='.116' stop-color='%23005f83'/%3E%3Cstop offset='.239' stop-color='%23005a7d'/%3E%3Cstop offset='.369' stop-color='%23005373'/%3E%3Cstop offset='.502' stop-color='%23004865'/%3E%3Cstop offset='.639' stop-color='%23003953'/%3E%3Cstop offset='.779' stop-color='%2300253c'/%3E%3Cstop offset='.918' stop-color='%2300031d'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3Cpath d='M64.4 25.7c-.5 0-1 .2-1.4.3-.5.2-1 .4-1.4.6-.7.4-1.2.8-1.5 1.3-.3.5-.6 1.1-.8 1.7-.9 2.4-2.2 6-4 11.3-1.8 5.1-3.6 10.5-5.6 16H45l-8.7-24.4-7.9 24.4h-4.7c-2.6-7.5-4.6-13.3-6-17.2-1.4-4.1-2.5-7.4-3.5-10.2-.3-.8-.6-1.4-1-1.8-.4-.4-.9-.8-1.4-1.2-.4-.3-.9-.5-1.3-.6-.5-.1-1-.2-1.6-.3v-1.8h17.6v1.8c-1 .1-1.8.2-2.3.4-.5.1-.9.2-1.2.4-.3.1-.5.3-.5.4-.1.1-.1.3-.1.4 0 .2 0 .4.1.6.1.2.1.4.2.7.4 1.2 1.1 3.5 2.3 6.8 1.1 3.4 2.5 7.5 4.2 12.5L36.7 24h4.9l8.7 24.5c1.3-4 2.3-7.2 3.1-9.7.8-2.5 1.4-4.7 1.9-6.4.3-1.1.6-2 .7-2.8.2-.7.3-1.4.3-1.9 0-.3-.2-.6-.5-.8-.3-.2-.7-.4-1.2-.6-.4-.1-1-.3-1.7-.3-.7-.1-1.3-.2-1.8-.2v-2h13.3v1.9z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.069' y1='74.205' x2='58.569' y2='87.705' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23dff1fa'/%3E%3Cstop offset='.3' stop-color='%23dceef7'/%3E%3Cstop offset='.443' stop-color='%23d3e4ef'/%3E%3Cstop offset='.553' stop-color='%23c4d6e3'/%3E%3Cstop offset='.647' stop-color='%23b1c5d5'/%3E%3Cstop offset='.73' stop-color='%239ab0c5'/%3E%3Cstop offset='.805' stop-color='%23819ab3'/%3E%3Cstop offset='.875' stop-color='%2364829f'/%3E%3Cstop offset='.938' stop-color='%23426c8c'/%3E%3Cstop offset='.998' stop-color='%2306577a'/%3E%3Cstop offset='1' stop-color='%23015679'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23c)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%2301415e' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-docx { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.005' x2='36' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23002d44'/%3E%3Cstop offset='.056' stop-color='%23013852'/%3E%3Cstop offset='.16' stop-color='%230a4d6b'/%3E%3Cstop offset='.274' stop-color='%230f5e82'/%3E%3Cstop offset='.398' stop-color='%230f6d96'/%3E%3Cstop offset='.539' stop-color='%230d77a4'/%3E%3Cstop offset='.711' stop-color='%230a7eae'/%3E%3Cstop offset='1' stop-color='%230881b2'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%2301415e' stroke-width='2'/%3E%3Cpath d='M5.4 75.3h5.9c1.3 0 2.3.1 3 .3.9.3 1.7.8 2.4 1.5s1.2 1.5 1.5 2.6c.3 1 .5 2.2.5 3.7 0 1.3-.2 2.4-.5 3.4-.4 1.1-1 2.1-1.7 2.8-.6.5-1.3 1-2.3 1.3-.7.2-1.7.3-2.8.3h-6V75.3zM8.6 78v10.4H11c.9 0 1.5 0 1.9-.2.5-.1 1-.3 1.3-.7s.6-.8.8-1.5c.2-.7.3-1.7.3-2.9s-.1-2.2-.3-2.8c-.2-.7-.5-1.2-.9-1.5s-.9-.6-1.5-.7c-.3-.1-1.2-.1-2.5-.1H8.6zm12.2 5.3c0-1.6.2-3 .7-4 .4-.8.9-1.5 1.5-2.2.6-.6 1.3-1.1 2.1-1.4 1-.4 2.1-.6 3.4-.6 2.3 0 4.2.7 5.6 2.2s2.1 3.4 2.1 6c0 2.5-.7 4.5-2.1 6-1.4 1.4-3.3 2.2-5.6 2.2-2.4 0-4.2-.7-5.6-2.1-1.4-1.6-2.1-3.6-2.1-6.1zm3.3-.1c0 1.8.4 3.1 1.2 4.1.8.9 1.9 1.4 3.2 1.4 1.3 0 2.3-.5 3.2-1.4.8-.9 1.2-2.3 1.2-4.1 0-1.8-.4-3.2-1.2-4s-1.9-1.3-3.2-1.3c-1.3 0-2.4.4-3.2 1.3-.8.8-1.2 2.2-1.2 4zm24.8 2.1l3.1 1c-.5 1.7-1.3 3-2.4 3.8-1.1.8-2.5 1.3-4.2 1.3-2.1 0-3.8-.7-5.2-2.1-1.4-1.4-2-3.4-2-5.9 0-2.6.7-4.7 2.1-6.1 1.4-1.4 3.2-2.2 5.4-2.2 1.9 0 3.5.6 4.7 1.7.7.7 1.3 1.6 1.6 2.9l-3.2.8c-.2-.8-.6-1.5-1.2-1.9-.6-.5-1.3-.7-2.2-.7-1.2 0-2.1.4-2.9 1.3-.7.8-1.1 2.2-1.1 4.1 0 2 .4 3.4 1.1 4.3s1.7 1.3 2.8 1.3c.9 0 1.6-.3 2.2-.8.7-.8 1.2-1.7 1.4-2.8zm4.3 5.8l5.4-8.2-4.9-7.5h3.8l3.2 5.1 3.1-5.1h3.7l-5 7.6 5.4 8.1H64l-3.5-5.4-3.5 5.4h-3.8z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='18.121' y1='50.468' x2='55.041' y2='87.389' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23006186'/%3E%3Cstop offset='.116' stop-color='%23005f83'/%3E%3Cstop offset='.239' stop-color='%23005a7d'/%3E%3Cstop offset='.369' stop-color='%23005373'/%3E%3Cstop offset='.502' stop-color='%23004865'/%3E%3Cstop offset='.639' stop-color='%23003953'/%3E%3Cstop offset='.779' stop-color='%2300253c'/%3E%3Cstop offset='.918' stop-color='%2300031d'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3Cpath d='M64.4 25.7c-.5 0-1 .2-1.4.3-.5.2-1 .4-1.4.6-.7.4-1.2.8-1.5 1.3-.3.5-.6 1.1-.8 1.7-.9 2.4-2.2 6-4 11.3-1.8 5.1-3.6 10.5-5.6 16H45l-8.7-24.4-7.9 24.4h-4.7c-2.6-7.5-4.6-13.3-6-17.2-1.4-4.1-2.5-7.4-3.5-10.2-.3-.8-.6-1.4-1-1.8-.4-.4-.9-.8-1.4-1.2-.4-.3-.9-.5-1.3-.6-.5-.1-1-.2-1.6-.3v-1.8h17.6v1.8c-1 .1-1.8.2-2.3.4-.5.1-.9.2-1.2.4-.3.1-.5.3-.5.4-.1.1-.1.3-.1.4 0 .2 0 .4.1.6.1.2.1.4.2.7.4 1.2 1.1 3.5 2.3 6.8 1.1 3.4 2.5 7.5 4.2 12.5L36.7 24h4.9l8.7 24.5c1.3-4 2.3-7.2 3.1-9.7.8-2.5 1.4-4.7 1.9-6.4.3-1.1.6-2 .7-2.8.2-.7.3-1.4.3-1.9 0-.3-.2-.6-.5-.8-.3-.2-.7-.4-1.2-.6-.4-.1-1-.3-1.7-.3-.7-.1-1.3-.2-1.8-.2v-2h13.3v1.9z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.069' y1='74.205' x2='58.569' y2='87.705' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23dff1fa'/%3E%3Cstop offset='.3' stop-color='%23dceef7'/%3E%3Cstop offset='.443' stop-color='%23d3e4ef'/%3E%3Cstop offset='.553' stop-color='%23c4d6e3'/%3E%3Cstop offset='.647' stop-color='%23b1c5d5'/%3E%3Cstop offset='.73' stop-color='%239ab0c5'/%3E%3Cstop offset='.805' stop-color='%23819ab3'/%3E%3Cstop offset='.875' stop-color='%2364829f'/%3E%3Cstop offset='.938' stop-color='%23426c8c'/%3E%3Cstop offset='.998' stop-color='%2306577a'/%3E%3Cstop offset='1' stop-color='%23015679'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23c)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%2301415e' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-dotx { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.005' x2='36' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23002d44'/%3E%3Cstop offset='.056' stop-color='%23013852'/%3E%3Cstop offset='.16' stop-color='%230a4d6b'/%3E%3Cstop offset='.274' stop-color='%230f5e82'/%3E%3Cstop offset='.398' stop-color='%230f6d96'/%3E%3Cstop offset='.539' stop-color='%230d77a4'/%3E%3Cstop offset='.711' stop-color='%230a7eae'/%3E%3Cstop offset='1' stop-color='%230881b2'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%2301415e' stroke-width='2'/%3E%3Cpath d='M6.7 75.3h5.9c1.3 0 2.3.1 3 .3.9.3 1.7.8 2.4 1.5s1.2 1.5 1.5 2.6c.3 1 .5 2.2.5 3.7 0 1.3-.2 2.4-.5 3.4-.4 1.1-1 2.1-1.7 2.8-.6.5-1.3 1-2.3 1.3-.7.2-1.7.3-2.8.3h-6V75.3zM9.9 78v10.4h2.4c.9 0 1.5 0 1.9-.2.5-.1 1-.3 1.3-.7s.6-.8.8-1.5c.2-.7.3-1.7.3-2.9s-.1-2.2-.3-2.8c-.2-.7-.5-1.2-.9-1.5s-.9-.6-1.5-.7c-.4-.1-1.3-.1-2.6-.1H9.9zm12.2 5.3c0-1.6.2-3 .7-4 .4-.8.9-1.5 1.5-2.2.6-.6 1.3-1.1 2.1-1.4 1-.4 2.1-.6 3.4-.6 2.3 0 4.2.7 5.6 2.2s2.1 3.4 2.1 6c0 2.5-.7 4.5-2.1 6-1.4 1.4-3.3 2.2-5.6 2.2-2.4 0-4.2-.7-5.6-2.1-1.4-1.6-2.1-3.6-2.1-6.1zm3.3-.1c0 1.8.4 3.1 1.2 4.1.8.9 1.9 1.4 3.2 1.4 1.3 0 2.3-.5 3.2-1.4.8-.9 1.2-2.3 1.2-4.1 0-1.8-.4-3.2-1.2-4s-1.9-1.3-3.2-1.3c-1.3 0-2.4.4-3.2 1.3-.8.8-1.2 2.2-1.2 4zm18.2 7.9V78h-4.7v-2.7h12.6V78h-4.7v13.1h-3.2zm8.4 0l5.4-8.2-4.9-7.5h3.8l3.2 5.1 3.1-5.1h3.7l-5 7.6 5.4 8.1h-3.9l-3.5-5.4-3.5 5.4H52z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='18.121' y1='50.468' x2='55.041' y2='87.389' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23006186'/%3E%3Cstop offset='.116' stop-color='%23005f83'/%3E%3Cstop offset='.239' stop-color='%23005a7d'/%3E%3Cstop offset='.369' stop-color='%23005373'/%3E%3Cstop offset='.502' stop-color='%23004865'/%3E%3Cstop offset='.639' stop-color='%23003953'/%3E%3Cstop offset='.779' stop-color='%2300253c'/%3E%3Cstop offset='.918' stop-color='%2300031d'/%3E%3Cstop offset='1'/%3E%3C/linearGradient%3E%3Cpath d='M64.4 25.7c-.5 0-1 .2-1.4.3-.5.2-1 .4-1.4.6-.7.4-1.2.8-1.5 1.3-.3.5-.6 1.1-.8 1.7-.9 2.4-2.2 6-4 11.3-1.8 5.1-3.6 10.5-5.6 16H45l-8.7-24.4-7.9 24.4h-4.7c-2.6-7.5-4.6-13.3-6-17.2-1.4-4.1-2.5-7.4-3.5-10.2-.3-.8-.6-1.4-1-1.8-.4-.4-.9-.8-1.4-1.2-.4-.3-.9-.5-1.3-.6-.5-.1-1-.2-1.6-.3v-1.8h17.6v1.8c-1 .1-1.8.2-2.3.4-.5.1-.9.2-1.2.4-.3.1-.5.3-.5.4-.1.1-.1.3-.1.4 0 .2 0 .4.1.6.1.2.1.4.2.7.4 1.2 1.1 3.5 2.3 6.8 1.1 3.4 2.5 7.5 4.2 12.5L36.7 24h4.9l8.7 24.5c1.3-4 2.3-7.2 3.1-9.7.8-2.5 1.4-4.7 1.9-6.4.3-1.1.6-2 .7-2.8.2-.7.3-1.4.3-1.9 0-.3-.2-.6-.5-.8-.3-.2-.7-.4-1.2-.6-.4-.1-1-.3-1.7-.3-.7-.1-1.3-.2-1.8-.2v-2h13.3v1.9z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.069' y1='74.205' x2='58.569' y2='87.705' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23dff1fa'/%3E%3Cstop offset='.3' stop-color='%23dceef7'/%3E%3Cstop offset='.443' stop-color='%23d3e4ef'/%3E%3Cstop offset='.553' stop-color='%23c4d6e3'/%3E%3Cstop offset='.647' stop-color='%23b1c5d5'/%3E%3Cstop offset='.73' stop-color='%239ab0c5'/%3E%3Cstop offset='.805' stop-color='%23819ab3'/%3E%3Cstop offset='.875' stop-color='%2364829f'/%3E%3Cstop offset='.938' stop-color='%23426c8c'/%3E%3Cstop offset='.998' stop-color='%2306577a'/%3E%3Cstop offset='1' stop-color='%23015679'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23c)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%2301415e' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-dwg { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.018' x2='36.2' y2='101.052' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%2300a6e9'/%3E%3Cstop offset='.002' stop-color='%2300a7e9'/%3E%3Cstop offset='.092' stop-color='%2300b2ec'/%3E%3Cstop offset='.186' stop-color='%2323bdef'/%3E%3Cstop offset='.286' stop-color='%2366c8f2'/%3E%3Cstop offset='.393' stop-color='%2389d3f5'/%3E%3Cstop offset='.507' stop-color='%23a1dbf8'/%3E%3Cstop offset='.633' stop-color='%23b2e2f9'/%3E%3Cstop offset='.781' stop-color='%23bce6fb'/%3E%3Cstop offset='1' stop-color='%23bfe7fb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.7V99H.1V1h45.1z' fill='url(%23a)'/%3E%3Cpath d='M45.2.9l27.1 26.7V99H.1V1h45.1z' fill-opacity='0' stroke='%230096db' stroke-width='2'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='58.773' y1='87.876' x2='49.741' y2='78.845' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23009de1'/%3E%3Cstop offset='.03' stop-color='%2300a3e3'/%3E%3Cstop offset='.095' stop-color='%2300b1e7'/%3E%3Cstop offset='.166' stop-color='%2367c0ec'/%3E%3Cstop offset='.241' stop-color='%2392cef0'/%3E%3Cstop offset='.321' stop-color='%23b4dbf4'/%3E%3Cstop offset='.407' stop-color='%23cee7f8'/%3E%3Cstop offset='.503' stop-color='%23e3f0fb'/%3E%3Cstop offset='.614' stop-color='%23f1f8fd'/%3E%3Cstop offset='.751' stop-color='%23fbfdfe'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.8l27.1 26.7H45.2V.8z' fill='url(%23b)'/%3E%3Cpath d='M45.2.8l27.1 26.7H45.2V.8z' fill-opacity='0' stroke='%230096db' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M6.9 71.6h6.9c1.6 0 2.7.1 3.6.4 1.1.3 2 .9 2.8 1.7.8.8 1.4 1.8 1.8 3s.6 2.6.6 4.4c0 1.5-.2 2.8-.6 3.9-.5 1.3-1.1 2.4-2 3.3-.7.6-1.5 1.1-2.6 1.5-.8.3-1.9.4-3.3.4H6.9V71.6zm3.8 3.1V87h2.8c1.1 0 1.8-.1 2.3-.2.6-.2 1.1-.4 1.5-.8s.7-1 1-1.8c.3-.8.4-2 .4-3.4s-.1-2.5-.4-3.3-.6-1.4-1.1-1.8c-.5-.4-1-.7-1.7-.9-.5-.1-1.6-.2-3.1-.2h-1.7zm17.7 15.4L24 71.6h3.9l2.8 12.7 3.4-12.7h4.5l3.3 12.9 2.9-12.9h3.8L44.1 90h-4l-3.7-13.8L32.7 90h-4.3zm30.7-6.8v-3.1h8.1v7.3c-.8.8-1.9 1.4-3.4 2-1.5.6-3 .9-4.6.9-2 0-3.7-.4-5.1-1.2-1.5-.8-2.5-2-3.3-3.5-.7-1.5-1.1-3.1-1.1-4.9 0-1.9.4-3.6 1.2-5.1.8-1.5 2-2.6 3.6-3.4 1.2-.6 2.7-.9 4.5-.9 2.3 0 4.1.5 5.4 1.4 1.3 1 2.1 2.3 2.5 4l-3.7.7c-.3-.9-.8-1.6-1.5-2.1s-1.6-.8-2.7-.8c-1.6 0-3 .5-3.9 1.5-1 1-1.5 2.6-1.5 4.6 0 2.2.5 3.8 1.5 4.9s2.3 1.6 3.9 1.6c.8 0 1.6-.2 2.4-.5s1.5-.7 2-1.1v-2.3h-4.3z' fill='%23fff'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='36.1' y1='97.426' x2='36.1' y2='37.782' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23009ade'/%3E%3Cstop offset='1' stop-color='%2300bdf2'/%3E%3C/linearGradient%3E%3Cpath d='M1.7 9.5l17.3 13 1.8-2.4L1 5.3V9l.7.5zm36 23.3l5.5-7.1-1.2-.9-6.6-5.1.7.5 8.2-10.7v-5l-10.7 14-7.1-5.5-12.9 16.6 7.1 5.4L1.1 59.9 1 64.2l22.1-27.4-.9-.7 8.1 6.1 5.5-7.1 35.4 26.6V58L37.7 32.8zm-8 5.5l-11.9-9 9.1-11.8 11.9 9-9.1 11.8z' fill='url(%23c)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-dxf { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.018' x2='36.2' y2='101.052' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%2300a6e9'/%3E%3Cstop offset='.002' stop-color='%2300a7e9'/%3E%3Cstop offset='.092' stop-color='%2300b2ec'/%3E%3Cstop offset='.186' stop-color='%2323bdef'/%3E%3Cstop offset='.286' stop-color='%2366c8f2'/%3E%3Cstop offset='.393' stop-color='%2389d3f5'/%3E%3Cstop offset='.507' stop-color='%23a1dbf8'/%3E%3Cstop offset='.633' stop-color='%23b2e2f9'/%3E%3Cstop offset='.781' stop-color='%23bce6fb'/%3E%3Cstop offset='1' stop-color='%23bfe7fb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.7V99H.1V1h45.1z' fill='url(%23a)'/%3E%3Cpath d='M45.2.9l27.1 26.7V99H.1V1h45.1z' fill-opacity='0' stroke='%230096db' stroke-width='2'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='58.773' y1='87.876' x2='49.741' y2='78.845' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23009de1'/%3E%3Cstop offset='.03' stop-color='%2300a3e3'/%3E%3Cstop offset='.095' stop-color='%2300b1e7'/%3E%3Cstop offset='.166' stop-color='%2367c0ec'/%3E%3Cstop offset='.241' stop-color='%2392cef0'/%3E%3Cstop offset='.321' stop-color='%23b4dbf4'/%3E%3Cstop offset='.407' stop-color='%23cee7f8'/%3E%3Cstop offset='.503' stop-color='%23e3f0fb'/%3E%3Cstop offset='.614' stop-color='%23f1f8fd'/%3E%3Cstop offset='.751' stop-color='%23fbfdfe'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.8l27.1 26.7H45.2V.8z' fill='url(%23b)'/%3E%3Cpath d='M45.2.8l27.1 26.7H45.2V.8z' fill-opacity='0' stroke='%230096db' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M11.8 71.6h6.9c1.6 0 2.7.1 3.6.4 1.1.3 2 .9 2.8 1.7.8.8 1.4 1.8 1.8 3s.6 2.6.6 4.4c0 1.5-.2 2.8-.6 3.9-.5 1.3-1.1 2.4-2 3.3-.7.6-1.5 1.1-2.6 1.5-.8.3-1.9.4-3.3.4h-7.1V71.6zm3.8 3.1V87h2.8c1.1 0 1.8-.1 2.3-.2.6-.2 1.1-.4 1.5-.8s.7-1 1-1.8c.3-.8.4-2 .4-3.4s-.1-2.5-.4-3.3-.6-1.4-1.1-1.8c-.5-.4-1-.7-1.7-.9-.5-.1-1.6-.2-3.1-.2h-1.7zm13.2 15.4l6.4-9.6-5.8-8.8h4.4l3.7 5.9 3.7-5.9h4.4l-5.8 9 6.4 9.5h-4.5l-4.1-6.4-4.2 6.4h-4.6zm19.3 0V71.6h12.8v3.1h-9v4.4h7.8v3.1h-7.8V90h-3.8z' fill='%23fff'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='36.1' y1='97.426' x2='36.1' y2='37.782' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23009ade'/%3E%3Cstop offset='1' stop-color='%2300bdf2'/%3E%3C/linearGradient%3E%3Cpath d='M1.7 9.5l17.3 13 1.8-2.4L1 5.3V9l.7.5zm36 23.3l5.5-7.1-1.2-.9-6.6-5.1.7.5 8.2-10.7v-5l-10.7 14-7.1-5.5-12.9 16.6 7.1 5.4L1.1 59.9 1 64.2l22.1-27.4-.9-.7 8.1 6.1 5.5-7.1 35.4 26.6V58L37.7 32.8zm-8 5.5l-11.9-9 9.1-11.8 11.9 9-9.1 11.8z' fill='url(%23c)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-eps { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='101' x2='36' y2='3.004' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f8b0b8'/%3E%3Cstop offset='.211' stop-color='%23f6acb5'/%3E%3Cstop offset='.37' stop-color='%23f2a3ad'/%3E%3Cstop offset='.512' stop-color='%23ed95a1'/%3E%3Cstop offset='.645' stop-color='%23e78292'/%3E%3Cstop offset='.77' stop-color='%23e06980'/%3E%3Cstop offset='.889' stop-color='%23d7486b'/%3E%3Cstop offset='1' stop-color='%23ce0757'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill-opacity='0' stroke='%23d41c5c' stroke-width='2'/%3E%3Cpath d='M10.4 91.1V71.2h15v3.4H14.5V79h10.1v3.3H14.5v5.4h11.3V91H10.4zm18.8 0V71.2h6.5c2.5 0 4.1.1 4.8.3 1.2.3 2.1.9 2.9 1.9s1.2 2.3 1.2 3.9c0 1.2-.2 2.2-.7 3.1-.5.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.7v7.5h-4zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm13.7 10l4-.4c.2 1.3.7 2.3 1.5 2.9.7.6 1.7.9 3 .9s2.3-.3 3-.8c.7-.5 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.3-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.9-2.4-1.9-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.5 2.5-2s2.4-.7 4-.7c2.5 0 4.4.5 5.7 1.6 1.3 1.1 2 2.5 2 4.4l-4.1.2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4c.9.5 1.7 1.2 2.2 2 .5.9.8 1.9.8 3.2 0 1.1-.3 2.2-1 3.2-.6 1-1.6 1.7-2.7 2.2s-2.6.7-4.4.7c-2.6 0-4.5-.6-5.9-1.7-1.3-1-2.1-2.7-2.4-4.9z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='1729.689' y1='-415.956' x2='1753.864' y2='-415.956' gradientTransform='scale(-1 1) rotate(-35.88 1555.712 2555.727)'%3E%3Cstop offset='0' stop-color='%23ee2868'/%3E%3Cstop offset='1' stop-color='%23bc024f'/%3E%3C/linearGradient%3E%3Cpath d='M22 62.3L17.4 59s7.7-15.2 4.7-20.8l16.3-12.6s6.2 1 9.3 6.5l-7 19.1C34.3 50.3 22 62.3 22 62.3zm11.1-19.8c1.3.9 3 .6 3.9-.6.9-1.3.6-3-.6-3.9-1.3-.9-3-.6-3.9.6-1 1.2-.7 3 .6 3.9zm0 0L19.8 60.6m39.3-34.4c-6.2-11.8-19.6-14-19.6-14l-6 8.2c13.4 2.2 19.6 14 19.6 14l6-8.2z' opacity='.73' fill='url(%23b)'/%3E%3Cpath d='M19.9 60.8l13.4-18.2' fill-opacity='0' stroke='%23f8b6bb'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.178' y1='74.159' x2='58.772' y2='87.753' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fffeee'/%3E%3Cstop offset='.265' stop-color='%23fffaec'/%3E%3Cstop offset='.402' stop-color='%23fef2e6'/%3E%3Cstop offset='.51' stop-color='%23fce7dc'/%3E%3Cstop offset='.604' stop-color='%23fad7cf'/%3E%3Cstop offset='.687' stop-color='%23f6c3bf'/%3E%3Cstop offset='.763' stop-color='%23f2abac'/%3E%3Cstop offset='.834' stop-color='%23ee8f97'/%3E%3Cstop offset='.901' stop-color='%23ea6f82'/%3E%3Cstop offset='.962' stop-color='%23e5446d'/%3E%3Cstop offset='1' stop-color='%23e30e60'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill='url(%23c)'/%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill-opacity='0' stroke='%23d41c5c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-exe { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M9.8 91.1V71.2h14.8v3.4H13.9V79h10v3.3h-10v5.4H25V91H9.8zm16.6 0l6.8-10.4-6.2-9.5h4.7l4 6.4 3.9-6.4h4.7l-6.2 9.6L45 91.1h-4.9l-4.4-6.9-4.4 6.9h-4.9zm20.7 0V71.2h14.8v3.4H51.1V79h10v3.3h-10v5.4h11.2V91H47.1z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='34.962' y1='37.847' x2='34.962' y2='88.47' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M55.1 36.3c-.1-1-.3-1.9-.6-2.9l4.7-2.7-5-8.6-4.7 2.7c-1.3-1.4-2.9-2.6-4.6-3.6l1.4-5.1-9.7-2.7-1.4 5.1c-1 0-1.9 0-2.9.1s-1.9.3-2.9.6l-2.7-4.7-8.7 4.9 2.7 4.7c-1.4 1.4-2.6 2.9-3.6 4.6l-5.2-1.4L9.4 37l5.2 1.4c0 1 0 1.9.2 2.9.1 1 .3 1.9.6 2.9l-4.7 2.7 5 8.6 4.7-2.7c1.3 1.4 2.9 2.6 4.6 3.6l-1.4 5.1 9.7 2.7 1.4-5.1c1 0 1.9 0 2.9-.1s1.9-.3 2.9-.6l2.7 4.7 8.7-4.9-2.7-4.7c1.4-1.3 2.6-2.9 3.6-4.6l5.2 1.4 2.7-9.6-5.2-1.4c-.2-1-.2-2-.4-3zM36.1 47c-4.5.6-8.7-2.7-9.3-7.1-.6-4.5 2.7-8.6 7.2-9.2 4.5-.6 8.7 2.7 9.3 7.1.5 4.5-2.7 8.6-7.2 9.2z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23c)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-flv { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='101' x2='36' y2='3.004' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fffeee'/%3E%3Cstop offset='.531' stop-color='%23f9b1b2'/%3E%3Cstop offset='1' stop-color='%23d10407'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1l27.2 26.7V99H-.2V1h45.3z' fill-opacity='0' stroke='%23d10407' stroke-width='2'/%3E%3Cpath d='M12.9 91.1V71.2h13.8v3.4h-9.8v4.7h8.4v3.4h-8.4v8.4h-4zm17.3 0V71.4h4.1v16.3h10.1V91H30.2zm20.1 0l-7.2-19.8h4.4L52.6 86l4.9-14.7h4.3l-7.2 19.8h-4.3z' fill='%23fff'/%3E%3Cg transform='translate(0 -952.362)'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='36.625' y1='974.612' x2='36.625' y2='1015.362'%3E%3Cstop offset='.118' stop-color='%23f9b1b2'/%3E%3Cstop offset='1' stop-color='%23d10407'/%3E%3C/linearGradient%3E%3Cpath d='M36.6 974.6c-11.3 0-20.4 9.1-20.4 20.4 0 11.3 9.1 20.4 20.4 20.4S57 1006.2 57 995c0-11.3-9.1-20.4-20.4-20.4zm3.9 4.8l-3.3 12.3h8.6l-13 18.8 3.3-12.3h-8.6l13-18.8z' fill='url(%23b)'/%3E%3C/g%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.178' y1='74.159' x2='58.772' y2='87.753' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fffeee'/%3E%3Cstop offset='.637' stop-color='%23f9b1b2'/%3E%3Cstop offset='1' stop-color='%23d10407'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill='url(%23c)'/%3E%3Cpath d='M45.1 1l27.2 26.7H45.1V1z' fill-opacity='0' stroke='%23d10407' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-gif { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M23.6 83.8v-3.3h8.7v7.9c-.8.8-2.1 1.5-3.7 2.1s-3.2.9-4.9.9c-2.1 0-3.9-.4-5.5-1.3s-2.7-2.1-3.5-3.7c-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.1-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.5s2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.7-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 4.9c0 2.4.5 4.1 1.6 5.3 1.1 1.2 2.4 1.8 4.1 1.8.8 0 1.7-.2 2.5-.5s1.6-.7 2.2-1.2v-2.5h-4.4zm12.2 7.3V71.2h4V91h-4zm7.9 0V71.2h13.7v3.4h-9.7v4.7H56v3.4h-8.3v8.4h-4z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-h, +.ipfs-hpp { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' stroke='%237191a1' stroke-width='2' fill='none'/%3E%3Cpath d='M27.7 91.1V71.2h4V79h7.9v-7.8h4V91h-4v-8.7h-7.9V91h-4z' fill='%234c6c7b'/%3E%3Cg opacity='.85'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='60.15' y1='42' x2='13.15' y2='42'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='60.525' y1='42' x2='12.775' y2='42'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M60.1 18.5h-47v47h47v-47zm-2.6 44.3H15.8V27.6h41.6v35.2z' fill='url(%23b)' stroke='url(%23c)' stroke-width='.75' stroke-miterlimit='10'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='53.436' y1='34.128' x2='19.864' y2='34.128'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='53.936' y1='34.128' x2='19.364' y2='34.128'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath fill='url(%23d)' stroke='url(%23e)' stroke-miterlimit='10' d='M19.9 31.8h33.6v4.7H19.9z'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.75' y1='40.386' x2='25.25' y2='40.386'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M25.2 39.4h20.5v2H25.2v-2z' fill='url(%23f)'/%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='48.75' y1='46.261' x2='28.25' y2='46.261'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M28.2 45.2h20.5v2H28.2v-2z' fill='url(%23g)'/%3E%3ClinearGradient id='h' gradientUnits='userSpaceOnUse' x1='45.75' y1='52.261' x2='25.25' y2='52.261'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M25.2 51.2h20.5v2H25.2v-2z' fill='url(%23h)'/%3E%3ClinearGradient id='i' gradientUnits='userSpaceOnUse' x1='48.75' y1='58.386' x2='28.25' y2='58.386'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.082' stop-color='%23a0c0cf'/%3E%3Cstop offset='.35' stop-color='%237c9bab'/%3E%3Cstop offset='.602' stop-color='%23628191'/%3E%3Cstop offset='.826' stop-color='%23527281'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M28.2 57.4h20.5v2H28.2v-2z' fill='url(%23i)'/%3E%3C/g%3E%3ClinearGradient id='j' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23j)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel' fill='none'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-html { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.9'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='19.014' y1='60.793' x2='19.014' y2='32.603'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='19.014' y1='62.979' x2='19.014' y2='30.418'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M12 44.7l14-12.1v6.1l-9.5 7.9v.1l9.5 7.9v6.1l-14-12v-4z' fill='url(%23b)' stroke='url(%23c)' stroke-width='2' stroke-miterlimit='10'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='36.686' y1='64.5' x2='36.686' y2='29.5'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='36.688' y1='65.5' x2='36.688' y2='28.5'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M38.4 29.5h3.7l-7.2 35h-3.6l7.1-35z' fill='url(%23d)' stroke='url(%23e)' stroke-width='2' stroke-miterlimit='10'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='54.186' y1='61.052' x2='54.186' y2='32.69'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='54.186' y1='63.238' x2='54.186' y2='30.504'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='.153' stop-color='%239ab9c9'/%3E%3Cstop offset='.529' stop-color='%23708f9f'/%3E%3Cstop offset='.824' stop-color='%23567685'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M47.2 54.8l9.5-7.9v-.1l-9.5-7.9v-6.1l14 12.1V49l-14 12.1v-6.3z' fill='url(%23f)' stroke='url(%23g)' stroke-width='2' stroke-miterlimit='10'/%3E%3C/g%3E%3ClinearGradient id='h' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23h)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M7 91.5V75.8h3.2V82h6.3v-6.2h3.2v15.7h-3.2v-6.9h-6.3v6.9H7zm19.6 0v-13h-4.7v-2.7h12.6v2.7h-4.7v13.1h-3.2zm9.9 0V75.8h4.8l2.9 10.7 2.9-10.7h4.8v15.7h-3V79.1l-3.2 12.4h-3.1l-3.1-12.4v12.4h-3zm18.7 0V75.9h3.2v13h8v2.7H55.2z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-ics { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='35.75' y1='3.096' x2='35.75' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M44.8 1l27 26.7v71.2h-72V1h45z' fill='url(%23a)'/%3E%3Cpath d='M44.8 1l27 26.7v71.2h-72V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='35.85' y1='4.085' x2='35.85' y2='38.441' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ef4136'/%3E%3Cstop offset='1' stop-color='%23be1e2d'/%3E%3C/linearGradient%3E%3Cpath d='M.7 63.6h70.2v34.3H.7V63.6z' fill='url(%23b)'/%3E%3Cpath d='M14.4 90.1V70.3h4v19.8h-4zm20.7-7.3L39 84c-.6 2.2-1.6 3.8-3 4.8-1.4 1.1-3.2 1.6-5.3 1.6-2.7 0-4.8-.9-6.6-2.7-1.7-1.8-2.6-4.3-2.6-7.4 0-3.3.9-5.9 2.6-7.7s4-2.7 6.8-2.7c2.5 0 4.4.7 6 2.1.9.8 1.6 2.1 2.1 3.7l-4 .9c-.2-1-.7-1.8-1.5-2.4-.8-.6-1.7-.9-2.7-.9-1.5 0-2.7.5-3.6 1.6-.9 1.1-1.4 2.8-1.4 5.1 0 2.5.5 4.3 1.4 5.4.9 1.1 2.1 1.6 3.6 1.6 1.1 0 2-.3 2.8-1 .6-.7 1.2-1.8 1.5-3.2zm6.4.8l3.9-.4c.2 1.3.7 2.3 1.4 2.9.7.6 1.7.9 2.9.9 1.3 0 2.3-.3 2.9-.8.7-.5 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2s-.8-.6-1.5-.9c-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.8s1.4-1.5 2.5-2 2.4-.7 3.9-.7c2.5 0 4.4.5 5.7 1.6 1.3 1.1 1.9 2.5 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4c.9.5 1.7 1.2 2.2 2 .5.9.8 1.9.8 3.2 0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.7s-2-2.7-2.3-4.9z' fill='%23fff'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='1025.8' y1='947.945' x2='1025.8' y2='986.7' gradientTransform='matrix(1 0 0 -1 -990 1005.111)'%3E%3Cstop offset='0' stop-color='%23879ca8'/%3E%3Cstop offset='1' stop-color='%234d6a78'/%3E%3C/linearGradient%3E%3Cpath d='M18.2 54.4v-6.2h7.2v6.2h-7.2zm8.8 0v-6.2h8v6.2h-8zm-8.8-7.6v-6.9h7.2v6.9h-7.2zm8.8 0v-6.9h8v6.9h-8zm-8.8-8.3v-6.2h7.2v6.2h-7.2zm18.4 15.9v-6.2h8v6.2h-8zM27 38.5v-6.2h8v6.2h-8zm19.2 15.9v-6.2h7.2v6.2h-7.2zm-9.6-7.6v-6.9h8v6.9h-8zm-8.8-18.7c0 .4-.4.7-.8.7h-1.6c-.4 0-.8-.3-.8-.7v-6.2c0-.4.4-.7.8-.7H27c.4 0 .8.3.8.7v6.2zm18.4 18.7v-6.9h7.2v6.9h-7.2zm-9.6-8.3v-6.2h8v6.2h-8zm9.6 0v-6.2h7.2v6.2h-7.2zm.8-10.4c0 .4-.4.7-.8.7h-1.6c-.4 0-.8-.3-.8-.7v-6.2c0-.4.4-.7.8-.7h1.6c.4 0 .8.3.8.7v6.2zm9.6-1.4c0-1.5-1.4-2.8-3.2-2.8h-3.2v-2.1c0-1.9-1.8-3.5-4-3.5h-1.6c-2.2 0-4 1.6-4 3.5v2.1H31v-2.1c0-1.9-1.8-3.5-4-3.5h-1.6c-2.2 0-4 1.6-4 3.5v2.1h-3.2c-1.7 0-3.2 1.3-3.2 2.8v27.7c0 1.5 1.4 2.8 3.2 2.8h35.1c1.7 0 3.2-1.3 3.2-2.8V26.7z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='44.825' y1='74.224' x2='58.325' y2='87.724' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M44.8 1l27 26.7h-27V1z' fill='url(%23d)'/%3E%3Cpath d='M44.8 1l27 26.7h-27V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-iso { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0,.st6%7Bopacity:.95%7D.st6%7Benable-background:new;fill:%23a07802%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='35.75' y1='2.995' x2='35.75' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23efc402'/%3E%3Cstop offset='.038' stop-color='%23f1c829'/%3E%3Cstop offset='.147' stop-color='%23f4d264'/%3E%3Cstop offset='.258' stop-color='%23f7dc8b'/%3E%3Cstop offset='.372' stop-color='%23f9e5ac'/%3E%3Cstop offset='.488' stop-color='%23fbecc7'/%3E%3Cstop offset='.606' stop-color='%23fcf3dd'/%3E%3Cstop offset='.728' stop-color='%23fef9ee'/%3E%3Cstop offset='.856' stop-color='%23fffdf9'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M44.8 1l27 26.7V99h-72V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M44.8 1l27 26.7V99h-72V1h45z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M13.5 92.1V72.2h4V92h-4zm6.9-6.5l3.9-.4c.2 1.3.7 2.3 1.4 2.9s1.7.9 2.9.9c1.3 0 2.3-.3 2.9-.8.7-.5 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.5 2.5-2s2.4-.7 3.9-.7c2.5 0 4.4.5 5.7 1.6s1.9 2.5 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3 2 .5 3.4.9 4.4 1.4s1.7 1.2 2.2 2 .8 1.9.8 3.2c0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.7-1.2-1-2-2.7-2.3-4.9zm18.9-3.3c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7s1.7-1.4 2.6-1.8c1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7 1.8 1.8 2.7 4.3 2.7 7.6 0 3.2-.9 5.7-2.6 7.5-1.8 1.8-4.1 2.7-7.1 2.7s-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.2-.2c0 2.2.5 4 1.6 5.1s2.4 1.7 4 1.7 2.9-.6 4-1.7 1.6-2.9 1.6-5.2c0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.2 1.2-1.7 2.9-1.7 5.2z' fill='%23a07802'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='35.75' y1='38.633' x2='35.75' y2='83.181' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3Cpath d='M35.8 18.8c-12.4 0-22.5 10-22.5 22.3s10.1 22.3 22.5 22.3 22.5-10 22.5-22.3-10.1-22.3-22.5-22.3zm0 29.9c-4.3 0-7.7-3.5-7.7-7.6 0-4.3 3.5-7.6 7.7-7.6 4.3 0 7.7 3.5 7.7 7.6 0 4.2-3.5 7.6-7.7 7.6z' opacity='.95' fill='url(%23SVGID_2_)'/%3E%3Cpath class='st6' d='M35.8 38.3c-1.6 0-2.8 1.3-2.8 2.8 0 1.6 1.3 2.8 2.8 2.8 1.6 0 2.8-1.3 2.8-2.8-.1-1.6-1.2-2.8-2.8-2.8zm0 3.8c-.5 0-1-.4-1-1 0-.5.4-1 1-1 .5 0 1 .4 1 1 0 .5-.6 1-1 1z'/%3E%3Cpath class='st6' d='M35.8 32.8c-4.7 0-8.4 3.8-8.4 8.3 0 4.7 3.8 8.3 8.4 8.3 4.7 0 8.4-3.8 8.4-8.3 0-4.7-3.7-8.3-8.4-8.3zm0 15.2c-3.9 0-7-3.1-7-6.9s3.1-6.9 7-6.9 7 3.1 7 6.9-3.1 6.9-7 6.9z'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='45.344' y1='74.23' x2='58.844' y2='87.73' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23fff'/%3E%3Cstop offset='.234' stop-color='%23fffefb'/%3E%3Cstop offset='.369' stop-color='%23fefaf1'/%3E%3Cstop offset='.481' stop-color='%23fdf5e4'/%3E%3Cstop offset='.579' stop-color='%23fcf0d2'/%3E%3Cstop offset='.669' stop-color='%23fae9bc'/%3E%3Cstop offset='.752' stop-color='%23f9e2a2'/%3E%3Cstop offset='.831' stop-color='%23f7da83'/%3E%3Cstop offset='.905' stop-color='%23f4d15d'/%3E%3Cstop offset='.975' stop-color='%23f1c827'/%3E%3Cstop offset='1' stop-color='%23efc402'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_3_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-java { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.125' x2='36' y2='100.875' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1.1l27 26.7v71.1H0V1.1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1.1l27 26.7v71.1H0V1.1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.9'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='29.387' y1='28.043' x2='43.019' y2='28.043'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M36.3 23.7c-2.3 1.6-5 3.5-6.4 6.6-2.5 5.3 5 11.2 5.3 11.4.1.1.2.1.3.1.1 0 .2 0 .3-.1.1-.1.2-.3.1-.5 0-.1-2.7-5.3-2.6-9 0-1.3 1.9-2.8 3.8-4.3 1.8-1.4 3.8-3.1 4.9-5 2.6-4.2-.3-8.3-.3-8.3-.1-.2-.3-.2-.5-.1s-.3.3-.2.5c0 0 .6 2.7-1 5.5-.7 1-2.1 2-3.7 3.2z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='35.979' y1='34.176' x2='46.207' y2='34.176'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M46 25.5c.2-.1.2-.3.1-.5s-.3-.3-.5-.2c-.4.2-9.7 3.7-9.7 8 0 3 1.3 4.6 2.2 5.7.4.5.7.8.8 1.2.3 1-.4 2.7-.7 3.3-.1.2 0 .4.1.5.1.1.2.1.3.1.1 0 .2 0 .2-.1.2-.1 3.9-2.8 3.2-5.9-.2-1.2-.8-2.1-1.4-2.9-.8-1.2-1.4-2.1-.5-3.7 1.2-1.9 5.9-5.5 5.9-5.5z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='21.821' y1='44.351' x2='46.715' y2='44.351'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M21.9 43.6c-.2.5-.1.9.2 1.4 1 1.4 4.6 2.2 10 2.2h2.3c8.7-.3 12-3 12.1-3.1.1-.1.2-.3.1-.5s-.3-.3-.5-.2c-3.1.8-8.8 1.1-12.8 1.1-4.5 0-6.7-.3-7.3-.6.3-.4 2-1.1 4.2-1.5.2 0 .4-.2.3-.4 0-.2-.2-.4-.4-.4-1.1-.1-7.5 0-8.2 2z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='46.606' y1='46.149' x2='55.151' y2='46.149'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M51.1 40.8c-1.8 0-3.5.9-3.6.9-.2.1-.3.3-.2.5 0 .2.2.3.4.3 0 0 3.8 0 4.2 2.2.3 1.9-3.6 4.9-5.1 5.9-.2.1-.2.3-.2.5.1.2.2.3.4.3h.1c.4-.1 8.9-2 8-6.9-.6-3-2.5-3.7-4-3.7z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='25.341' y1='49.675' x2='45.284' y2='49.675'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M45.3 50.1c0-.2 0-.3-.2-.4l-2-1.4c-.1-.1-.2-.1-.3-.1 0 0-2.2.6-5.3.9-1.2.1-2.6.2-4 .2-3.1 0-5.1-.4-5.4-.6v-.1c.1-.1.3-.3.5-.4.2-.1.3-.3.3-.5-.1-.2-.3-.3-.5-.3-2 .5-3.1 1.2-3 2.1.1 1.5 3.7 2.3 6.7 2.5h1.4c5 0 11.5-1.6 11.5-1.6.1 0 .2-.2.3-.3z' fill='url(%23f)'/%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='26.776' y1='55.039' x2='44.496' y2='55.039'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M29.9 53.4c.2-.1.2-.3.2-.5-.1-.2-.2-.3-.4-.3-.3 0-2.7.1-2.9 1.7-.1.5.1.9.4 1.2.9 1 3.2 1.6 7.1 1.9h1.4c5 0 8.4-1.6 8.5-1.6.1-.1.2-.2.2-.4s-.1-.3-.2-.4l-2.6-1.6c-.1-.1-.2-.1-.3-.1 0 0-1.7.3-4.1.7-.5.1-1.1.1-1.7.1-2.5 0-5.2-.4-5.7-.7 0 .1 0 0 .1 0z' fill='url(%23g)'/%3E%3ClinearGradient id='h' gradientUnits='userSpaceOnUse' x1='17.847' y1='59.175' x2='52.664' y2='59.175'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M33.4 62.2c11.5 0 17.6-2.1 18.8-3.3.4-.5.5-.9.4-1.2-.1-.7-.7-1.1-.8-1.2-.2-.1-.4-.1-.5.1-.1.2-.1.4 0 .5.1.1.1.2-.1.5-.4.4-5.2 1.8-13.2 2.2-1.1.1-2.2.1-3.4.1-7.1 0-12.4-1-13-1.5.3-.4 2.1-1 4.1-1.3.2 0 .4-.2.3-.5 0-.2-.2-.4-.5-.3H25c-3.2.2-7 .6-7.2 2.3-.1.5.1 1 .4 1.4 1 .9 3.5 2.2 15.2 2.2z' fill='url(%23h)'/%3E%3ClinearGradient id='i' gradientUnits='userSpaceOnUse' x1='25.011' y1='61.909' x2='54.718' y2='61.909'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M54.5 59.2c-.2-.1-.4 0-.5.1 0 0-1.7 1.8-6.9 2.9-2 .4-5.7.6-11.1.6-5.4 0-10.5-.2-10.5-.2-.2 0-.4.1-.4.4 0 .2.1.4.3.5.1 0 5.4 1.3 12.7 1.3 3.5 0 6.9-.3 10.2-.8 6-1.1 6.5-4 6.5-4.2-.1-.3-.2-.5-.3-.6z' fill='url(%23i)'/%3E%3C/g%3E%3Cpath d='M13.3 73.8h3.5v10.9c0 1.4-.1 2.5-.4 3.3-.3 1-1 1.8-1.9 2.4s-2.1.9-3.5.9c-1.7 0-3-.5-4-1.4s-1.4-2.3-1.4-4.2l3.4-.4c0 1 .2 1.7.4 2.1.4.6 1 .9 1.7.9.8 0 1.3-.2 1.7-.7.3-.4.5-1.4.5-2.7V73.8zM36.2 91h-3.8l-1.5-3.9h-7L22.5 91h-3.7l6.8-17.2h3.7L36.2 91zm-6.5-6.8l-2.4-6.4-2.3 6.4h4.7zm11 6.8l-6.2-17.2h3.8l4.4 12.7L47 73.8h3.7L44.5 91h-3.8zm25.7 0h-3.8L61 87.1h-7L52.6 91h-3.7l6.8-17.2h3.7l7 17.2zm-6.5-6.8l-2.4-6.4-2.4 6.4h4.8z' fill='%234c6c7b'/%3E%3ClinearGradient id='j' gradientUnits='userSpaceOnUse' x1='45.085' y1='74.131' x2='58.585' y2='87.631' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1.1l27 26.7H45V1.1z' fill='url(%23j)'/%3E%3Cpath d='M45 1.1l27 26.7H45V1.1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-jpeg, +.ipfs-jpg { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M14 75.3h3.2v10c0 1.3-.1 2.3-.3 3-.3.9-.9 1.7-1.7 2.2-.8.6-1.9.8-3.2.8-1.6 0-2.8-.4-3.6-1.3-.9-.8-1.4-2.1-1.4-3.8l3-.3c0 .9.2 1.5.4 1.9.3.6.9.8 1.6.8.7 0 1.2-.2 1.5-.6.3-.4.4-1.2.4-2.5V75.3zm6.6 15.8V75.3h5.1c1.9 0 3.2.1 3.8.2.9.2 1.7.8 2.3 1.5.6.8.9 1.8.9 3.1 0 1-.2 1.8-.5 2.4-.4.7-.8 1.2-1.3 1.6-.5.4-1.1.6-1.7.7-.8.2-1.9.2-3.3.2h-2.1v5.9h-3.2zM23.8 78v4.5h1.8c1.3 0 2.1-.1 2.5-.2.4-.2.8-.4 1-.8.2-.4.4-.8.4-1.2 0-.6-.2-1-.5-1.4-.3-.4-.8-.6-1.3-.7-.4-.2-1.2-.2-2.4-.2h-1.5zm11.6 13.1V75.3h11.8V78h-8.6v3.5h8v2.7h-8v4.3h8.9v2.7H35.4zm22.1-5.8v-2.7h6.9v6.3c-.7.6-1.6 1.2-2.9 1.7-1.3.5-2.6.7-3.9.7-1.7 0-3.1-.3-4.3-1-1.2-.7-2.2-1.7-2.8-3-.6-1.3-.9-2.7-.9-4.2 0-1.6.3-3.1 1-4.4.7-1.3 1.7-2.3 3-2.9 1-.5 2.3-.8 3.8-.8 2 0 3.5.4 4.6 1.2 1.1.8 1.8 2 2.1 3.4l-3.1.7c-.2-.8-.6-1.4-1.3-1.8-.6-.4-1.4-.7-2.3-.7-1.4 0-2.5.4-3.3 1.3s-1.2 2.2-1.2 3.9c0 1.9.4 3.3 1.3 4.2.8.9 1.9 1.4 3.3 1.4.7 0 1.3-.1 2-.4.7-.3 1.3-.6 1.7-1v-2h-3.7z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-js { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.95'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='21.45' y1='61.55' x2='21.45' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M14.4 44.1v-4.9c1-.1 1.8-.2 2.3-.5.5-.2.9-.7 1.3-1.2.4-.6.6-1.3.8-2.2.1-.7.2-1.8.2-3.4 0-2.7.1-4.5.4-5.6.2-1 .7-1.9 1.3-2.5s1.6-1.1 2.8-1.5c.8-.2 2.1-.4 3.9-.4h1.1v4.9c-1.5 0-2.5.1-2.9.3-.4.2-.7.4-1 .8-.2.3-.3.9-.3 1.8s-.1 2.5-.2 4.9c-.1 1.4-.2 2.5-.5 3.4-.3.8-.7 1.5-1.1 2.1-.4.5-1.1 1.1-2 1.7.8.5 1.5 1 2 1.6s.9 1.4 1.2 2.3.5 2.1.5 3.6c.1 2.3.1 3.7.1 4.4 0 .9.1 1.5.3 1.9.2.4.6.6 1 .8.4.2 1.4.3 2.9.3v4.9h-1.1c-1.8 0-3.3-.1-4.2-.4-1-.3-1.8-.8-2.5-1.5s-1.1-1.5-1.4-2.5c-.2-1-.3-2.6-.3-4.8 0-2.5-.1-4.2-.3-4.9-.3-1.1-.8-1.9-1.4-2.4-.7-.6-1.6-1-2.9-1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='51.7' y1='61.45' x2='51.7' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M58.7 44.1c-1 .1-1.8.2-2.3.5-.5.2-.9.7-1.3 1.2-.4.6-.6 1.3-.8 2.2-.1.7-.2 1.8-.2 3.4 0 2.7-.1 4.5-.4 5.6-.2 1.1-.7 1.9-1.3 2.5-.6.6-1.6 1.1-2.8 1.5-.8.2-2.1.4-3.9.4h-1.1v-4.9c1.5 0 2.4-.1 2.9-.3s.8-.5 1-.8c.2-.3.3-.9.3-1.8 0-.8.1-2.4.2-4.8.1-1.4.3-2.6.6-3.4.3-.9.7-1.6 1.2-2.2s1.1-1.1 1.9-1.6c-1-.7-1.8-1.3-2.2-1.9-.6-.9-1.1-2.1-1.3-3.4-.2-1-.3-3.1-.3-6.3 0-1-.1-1.7-.3-2.1-.2-.3-.5-.6-.9-.8-.4-.2-1.4-.3-3-.3V22h1.1c1.8 0 3.3.1 4.2.4 1 .3 1.8.8 2.5 1.5s1.1 1.5 1.4 2.5c.2 1 .4 2.6.4 4.8 0 2.5.1 4.1.3 4.9.3 1.1.8 1.9 1.4 2.3.6.5 1.6.7 2.8.8l-.1 4.9z' fill='url(%23c)'/%3E%3C/g%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23d)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M28.1 71.5h4v12.7c0 1.7-.1 2.9-.4 3.8-.4 1.2-1.1 2.1-2.1 2.8-1 .7-2.4 1.1-4.1 1.1-2 0-3.5-.6-4.6-1.7s-1.6-2.7-1.6-4.9l3.8-.4c0 1.1.2 2 .5 2.4.4.7 1.1 1.1 2 1.1.9 0 1.5-.3 1.9-.8.4-.5.6-1.6.6-3.2V71.5zM35.5 85l3.9-.4c.2 1.3.7 2.3 1.4 2.9s1.7.9 2.9.9c1.3 0 2.3-.3 2.9-.8.7-.6 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.9.6-.9 1.4-1.6 2.5-2 1.1-.5 2.4-.7 3.9-.7 2.5 0 4.4.6 5.7 1.7s1.9 2.6 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.5-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4 1.7 1.2 2.2 2 .8 1.9.8 3.2c0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.8-1.3-.8-2.1-2.5-2.3-4.8z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-key { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23b)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M9.8 91.9v-20h4v8.9l8.2-8.9h5.4l-7.5 7.8 8 12.2h-5.2l-5.5-9.4-3.3 3.3v6.1H9.8zm20.2 0v-20h14.9v3.4H34v4.4h10.1v3.4H34v5.5h11.2V92H30zm23.9 0v-8.4l-7.3-11.6h4.7l4.7 7.9 4.6-7.9h4.7l-7.4 11.6v8.4h-4z' fill='%234c6c7b'/%3E%3Cg transform='translate(0 -952.362)' opacity='.9'%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='35.444' y1='1014.327' x2='35.444' y2='975.551'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M35.4 978.9c3.1 3.1 4.1 7.5 2.9 11.5l16.5 16.5.4 7.4-9.3-.8v-4.7h-4.7v-4.7h-4.7l-6-6c-3.9 1.2-8.4.2-11.5-2.9-4.5-4.5-4.5-11.8 0-16.3 4.6-4.5 11.9-4.5 16.4 0zm-8.6 3.1a3.32 3.32 0 0 0-4.7 0 3.32 3.32 0 0 0 0 4.7c1.3 1.3 3.4 1.3 4.7 0 1.3-1.3 1.3-3.4 0-4.7z' fill='url(%23c)'/%3E%3C/g%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-less { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.95'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='21.45' y1='61.55' x2='21.45' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M14.4 44.1v-4.9c1-.1 1.8-.2 2.3-.5.5-.2.9-.7 1.3-1.2.4-.6.6-1.3.8-2.2.1-.7.2-1.8.2-3.4 0-2.7.1-4.5.4-5.6.2-1 .7-1.9 1.3-2.5s1.6-1.1 2.8-1.5c.8-.2 2.1-.4 3.9-.4h1.1v4.9c-1.5 0-2.5.1-2.9.3-.4.2-.7.4-1 .8-.2.3-.3.9-.3 1.8s-.1 2.5-.2 4.9c-.1 1.4-.2 2.5-.5 3.4-.3.8-.7 1.5-1.1 2.1-.4.5-1.1 1.1-2 1.7.8.5 1.5 1 2 1.6s.9 1.4 1.2 2.3.5 2.1.5 3.6c.1 2.3.1 3.7.1 4.4 0 .9.1 1.5.3 1.9.2.4.6.6 1 .8.4.2 1.4.3 2.9.3v4.9h-1.1c-1.8 0-3.3-.1-4.2-.4-1-.3-1.8-.8-2.5-1.5s-1.1-1.5-1.4-2.5c-.2-1-.3-2.6-.3-4.8 0-2.5-.1-4.2-.3-4.9-.3-1.1-.8-1.9-1.4-2.4-.7-.6-1.6-1-2.9-1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='51.7' y1='61.45' x2='51.7' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M58.7 44.1c-1 .1-1.8.2-2.3.5-.5.2-.9.7-1.3 1.2-.4.6-.6 1.3-.8 2.2-.1.7-.2 1.8-.2 3.4 0 2.7-.1 4.5-.4 5.6-.2 1.1-.7 1.9-1.3 2.5-.6.6-1.6 1.1-2.8 1.5-.8.2-2.1.4-3.9.4h-1.1v-4.9c1.5 0 2.4-.1 2.9-.3s.8-.5 1-.8c.2-.3.3-.9.3-1.8 0-.8.1-2.4.2-4.8.1-1.4.3-2.6.6-3.4.3-.9.7-1.6 1.2-2.2s1.1-1.1 1.9-1.6c-1-.7-1.8-1.3-2.2-1.9-.6-.9-1.1-2.1-1.3-3.4-.2-1-.3-3.1-.3-6.3 0-1-.1-1.7-.3-2.1-.2-.3-.5-.6-.9-.8-.4-.2-1.4-.3-3-.3V22h1.1c1.8 0 3.3.1 4.2.4 1 .3 1.8.8 2.5 1.5s1.1 1.5 1.4 2.5c.2 1 .4 2.6.4 4.8 0 2.5.1 4.1.3 4.9.3 1.1.8 1.9 1.4 2.3.6.5 1.6.7 2.8.8l-.1 4.9z' fill='url(%23c)'/%3E%3C/g%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23d)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M7.7 91.5V75.2H11v13.6h8.3v2.8H7.7zm14 0V75.1h12.2v2.8H25v3.6h8.3v2.8H25v4.5h9.2v2.8H21.7zm14.5-5.3l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.7 2.4.7c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.1-.9-1.8-2.3-2-4.1zm15.3 0l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.1-1-1.8-2.4-2-4.2z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-logo { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 553 235.3'%3E%3Cdefs%3E%3C/defs%3E%3Cpath fill='%23ffffff' d='M239 63h17.8v105H239V63zm35.6 0h36.3c7.9 0 14.5.9 19.6 2.6s9.2 4.1 12.1 7.1a24.45 24.45 0 0 1 6.2 10.2 40.75 40.75 0 0 1 1.8 12.1 45.69 45.69 0 0 1-1.8 12.9 26.58 26.58 0 0 1-6.2 10.8 30.59 30.59 0 0 1-12.1 7.3c-5.1 1.8-11.5 2.7-19.3 2.7h-19.1V168h-17.5V63zm36.2 51a38.37 38.37 0 0 0 11.1-1.3 16.3 16.3 0 0 0 6.8-3.7 13.34 13.34 0 0 0 3.5-5.8 29.75 29.75 0 0 0 1-7.6 25.68 25.68 0 0 0-1-7.7 12 12 0 0 0-3.6-5.5 17.15 17.15 0 0 0-6.9-3.4 41.58 41.58 0 0 0-10.9-1.2h-18.5V114h18.5zm119.9-51v15.3h-49.2V108h46.3v15.4h-46.3V168h-17.8V63h67zm26.2 72.9c.8 6.9 3.3 11.9 7.4 15s10.4 4.7 18.6 4.7a32.61 32.61 0 0 0 10.1-1.3 20.52 20.52 0 0 0 6.6-3.5 12 12 0 0 0 3.5-5.2 19.08 19.08 0 0 0 1-6.4 16.14 16.14 0 0 0-.7-4.9 12.87 12.87 0 0 0-2.6-4.5 16.59 16.59 0 0 0-5.1-3.6 35 35 0 0 0-8.2-2.4l-13.4-2.5a89.76 89.76 0 0 1-14.1-3.7 33.51 33.51 0 0 1-10.4-5.8 22.28 22.28 0 0 1-6.3-8.8 34.1 34.1 0 0 1-2.1-12.7 26 26 0 0 1 11.3-22.4 36.35 36.35 0 0 1 12.6-5.6 65.89 65.89 0 0 1 15.8-1.8c7.2 0 13.3.8 18.2 2.5a34.46 34.46 0 0 1 11.9 6.5 28.21 28.21 0 0 1 6.9 9.3 42.1 42.1 0 0 1 3.2 11l-16.8 2.6c-1.4-5.9-3.7-10.2-7.1-13.1s-8.7-4.3-16.1-4.3a43.9 43.9 0 0 0-10.5 1.1 19.47 19.47 0 0 0-6.8 3.1 11.63 11.63 0 0 0-3.7 4.6 14.08 14.08 0 0 0-1.1 5.4c0 4.6 1.2 8 3.7 10.3s6.9 4 13.2 5.3l14.5 2.8c11.1 2.1 19.2 5.6 24.4 10.5s7.8 12.1 7.8 21.4a31.37 31.37 0 0 1-2.4 12.3 25.27 25.27 0 0 1-7.4 9.8 36.58 36.58 0 0 1-12.4 6.6 56 56 0 0 1-17.3 2.4c-13.4 0-24-2.8-31.6-8.5s-11.9-14.4-12.6-26.2h18z'/%3E%3Cpath fill='%23469ea2' d='M30.3 164l84 48.5 84-48.5V67l-84-48.5-84 48.5v97z'/%3E%3Cpath fill='%236acad1' d='M105.7 30.1l-61 35.2a18.19 18.19 0 0 1 0 3.3l60.9 35.2a14.55 14.55 0 0 1 17.3 0l60.9-35.2a18.19 18.19 0 0 1 0-3.3L123 30.1a14.55 14.55 0 0 1-17.3 0zm84 48.2l-61 35.6a14.73 14.73 0 0 1-8.6 15l.1 70a15.57 15.57 0 0 1 2.8 1.6l60.9-35.2a14.73 14.73 0 0 1 8.6-15V79.9a20 20 0 0 1-2.8-1.6zm-150.8.4a15.57 15.57 0 0 1-2.8 1.6v70.4a14.38 14.38 0 0 1 8.6 15l60.9 35.2a15.57 15.57 0 0 1 2.8-1.6v-70.4a14.38 14.38 0 0 1-8.6-15L38.9 78.7z'/%3E%3Cpath fill='%23469ea2' d='M114.3 29l75.1 43.4v86.7l-75.1 43.4-75.1-43.4V72.3L114.3 29m0-10.3l-84 48.5v97l84 48.5 84-48.5v-97l-84-48.5z'/%3E%3Cpath fill='%23469ea2' d='M114.9 132h-1.2A15.66 15.66 0 0 1 98 116.3v-1.2a15.66 15.66 0 0 1 15.7-15.7h1.2a15.66 15.66 0 0 1 15.7 15.7v1.2a15.66 15.66 0 0 1-15.7 15.7zm0 64.5h-1.2a15.65 15.65 0 0 0-13.7 8l14.3 8.2 14.3-8.2a15.65 15.65 0 0 0-13.7-8zm83.5-48.5h-.6a15.66 15.66 0 0 0-15.7 15.7v1.2a15.13 15.13 0 0 0 2 7.6l14.3-8.3V148zm-14.3-89a15.4 15.4 0 0 0-2 7.6v1.2a15.66 15.66 0 0 0 15.7 15.7h.6V67.2L184.1 59zm-69.8-40.3L100 26.9a15.73 15.73 0 0 0 13.7 8.1h1.2a15.65 15.65 0 0 0 13.7-8l-14.3-8.3zM44.6 58.9l-14.3 8.3v16.3h.6a15.66 15.66 0 0 0 15.7-15.7v-1.2a16.63 16.63 0 0 0-2-7.7zM30.9 148h-.6v16.2l14.3 8.3a15.4 15.4 0 0 0 2-7.6v-1.2A15.66 15.66 0 0 0 30.9 148z'/%3E%3Cpath fill='%23083b54' fill-opacity='0.15' d='M114.3 213.2v-97.1l-84-48.5v97.1z'/%3E%3Cpath fill='%23083b54' fill-opacity='0.05' d='M198.4 163.8v-97l-84 48.5v97.1z'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-mid { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.15' y1='2.887' x2='36.15' y2='101.126' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.012' stop-color='%235b5794'/%3E%3Cstop offset='.182' stop-color='%237b77aa'/%3E%3Cstop offset='.352' stop-color='%239896bf'/%3E%3Cstop offset='.521' stop-color='%23b2b2d2'/%3E%3Cstop offset='.687' stop-color='%23c7c9e2'/%3E%3Cstop offset='.848' stop-color='%23d6d9ec'/%3E%3Cstop offset='1' stop-color='%23dbdff0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill-opacity='0' stroke='%232d3293' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M12.6 91.2V71.3h6.1l3.6 13.6 3.6-13.6H32v19.9h-3.8V75.5l-4 15.7h-3.9l-4-15.7v15.7h-3.7zm23.3 0V71.3H40v19.9h-4.1zm7.9-19.9h7.4c1.7 0 3 .1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 2 1.9 3.2.4 1.3.7 2.8.7 4.7 0 1.6-.2 3-.6 4.2-.5 1.4-1.2 2.6-2.2 3.5-.7.7-1.7 1.2-2.9 1.6-.9.3-2.1.4-3.6.4h-7.6V71.3zm4.1 3.3v13.2h3c1.1 0 2-.1 2.5-.2.7-.2 1.2-.4 1.6-.8s.8-1 1.1-1.9c.3-.9.4-2.1.4-3.6s-.1-2.7-.4-3.5c-.3-.8-.7-1.5-1.2-1.9-.5-.5-1.1-.8-1.9-.9-.6-.1-1.7-.2-3.3-.2h-1.8z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='58.321' y1='87.273' x2='50.783' y2='78.839' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.07' stop-color='%23706ca2'/%3E%3Cstop offset='.159' stop-color='%238988b5'/%3E%3Cstop offset='.255' stop-color='%23a3a5c8'/%3E%3Cstop offset='.359' stop-color='%23babfd9'/%3E%3Cstop offset='.471' stop-color='%23ced5e7'/%3E%3Cstop offset='.598' stop-color='%23dee6f2'/%3E%3Cstop offset='.751' stop-color='%23e9f3fa'/%3E%3Cstop offset='1' stop-color='%23ecf8fe'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill-opacity='0' stroke='%232d3293' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='14.776' y1='56.174' x2='57.726' y2='56.174' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23352c7f'/%3E%3Cstop offset='.074' stop-color='%233e3786'/%3E%3Cstop offset='.266' stop-color='%23544f96'/%3E%3Cstop offset='.457' stop-color='%236763a5'/%3E%3Cstop offset='.645' stop-color='%237572b1'/%3E%3Cstop offset='.827' stop-color='%237e7cba'/%3E%3Cstop offset='1' stop-color='%238180bd'/%3E%3C/linearGradient%3E%3Cpath d='M14.8 39.3h6.5l13-10v33l-13-10h-6.5v-13zm26.1 10.2v2.9c.1 0 1.6 0 3.2-.8s3.4-2.7 3.4-5.8c0-3.1-1.7-5-3.4-5.8-1.6-.8-3.1-.8-3.2-.8v2.9h.1c.4 0 1.4.2 2.1.7.8.5 1.4 1.2 1.4 3 0 2-.8 2.6-1.8 3.2-.5.2-1 .4-1.3.4-.2 0-.3 0-.4.1h-.1zm0 5.1v2.9c.1 0 2.8 0 5.8-1.4 2.9-1.4 6-4.6 5.9-10.1.1-5.6-3-8.7-5.9-10.1-2.9-1.4-5.6-1.4-5.8-1.4v2.9h.3c.8.1 3.1.4 4.9 1.6 1.9 1.2 3.5 3.1 3.5 7.1 0 4.6-2.1 6.5-4.3 7.5-1.1.6-2.2.8-3.1 1-.4.1-.8.1-1 .1-.2-.1-.3-.1-.3-.1zm0 5v2.9c.1 0 4.1 0 8.3-2.1 4.2-2 8.5-6.5 8.5-14.6.1-8.1-4.3-12.6-8.5-14.6-4.2-2.1-8.2-2.1-8.3-2.1V32h.6c1.3.1 4.8.6 7.7 2.5 2.9 1.9 5.5 5.1 5.6 11.3-.1 7-3.4 10.2-6.9 12-1.7.9-3.5 1.3-4.9 1.5-.7.1-1.2.2-1.6.2-.3.1-.5.1-.5.1zm0-27.5z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-size: contain; +} + +.ipfs-mkv { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M7.5 91.1V71.2h6.1l3.6 13.5 3.6-13.5h6.1V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H7.5zm23.5 0V71.2h4V80l8.2-8.8h5.4L41.1 79l8 12.1h-5.2l-5.5-9.3-3.4 3.3v6h-4zm25.2 0L49 71.3h4.4L58.5 86l4.9-14.7h4.3l-7.2 19.8h-4.3z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-mov { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M6.1 91.1V71.2h6.1l3.6 13.5 3.6-13.5h6.1V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H6.1zm22.6-9.8c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7 1.8 1.8 2.7 4.3 2.7 7.6 0 3.2-.9 5.7-2.6 7.5-1.8 1.8-4.1 2.7-7.1 2.7s-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.1-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.6-2.9 1.6-5.2 0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.1 1.2-1.7 3-1.7 5.2zm23.6 10l-7.2-19.8h4.4L58.7 86l4.9-14.7h4.3l-7.2 19.8h-4.3z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-mp3 { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.15' y1='2.887' x2='36.15' y2='101.126' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.012' stop-color='%235b5794'/%3E%3Cstop offset='.182' stop-color='%237b77aa'/%3E%3Cstop offset='.352' stop-color='%239896bf'/%3E%3Cstop offset='.521' stop-color='%23b2b2d2'/%3E%3Cstop offset='.687' stop-color='%23c7c9e2'/%3E%3Cstop offset='.848' stop-color='%23d6d9ec'/%3E%3Cstop offset='1' stop-color='%23dbdff0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill-opacity='0' stroke='%232d3293' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M9.3 91.2V71.3h6.1L19 84.8l3.6-13.6h6.1v19.9H25V75.5l-4 15.7h-3.9l-4-15.7v15.7H9.3zm23.5 0V71.3h6.5c2.5 0 4.1.1 4.8.3 1.2.3 2.1.9 2.9 1.9s1.2 2.3 1.2 3.9c0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.6v5.6H39c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm13.7 11.3l3.7-.4c.1.9.4 1.7 1 2.2.5.5 1.2.7 1.9.7.8 0 1.5-.3 2-.9.5-.6.8-1.4.8-2.4s-.3-1.7-.8-2.3-1.2-.8-1.9-.8c-.5 0-1.1.1-1.8.3l.4-3.1c1 0 1.8-.2 2.4-.7s.8-1.1.8-1.9c0-.7-.2-1.2-.6-1.6s-.9-.6-1.6-.6c-.7 0-1.2.2-1.7.7-.5.5-.8 1.1-.9 2l-3.6-.6c.2-1.2.6-2.2 1.1-2.9.5-.7 1.2-1.3 2.1-1.7.9-.4 1.9-.6 3-.6 1.9 0 3.4.6 4.6 1.8.9 1 1.4 2.1 1.4 3.3 0 1.7-1 3.1-2.9 4.2 1.2.2 2.1.8 2.8 1.6.7.8 1 1.9 1 3.1 0 1.7-.6 3.2-1.9 4.5-1.3 1.2-2.9 1.8-4.8 1.8-1.8 0-3.3-.5-4.5-1.6-1.1-1.1-1.8-2.4-2-4.1z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='58.321' y1='87.273' x2='50.783' y2='78.839' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.07' stop-color='%23706ca2'/%3E%3Cstop offset='.159' stop-color='%238988b5'/%3E%3Cstop offset='.255' stop-color='%23a3a5c8'/%3E%3Cstop offset='.359' stop-color='%23babfd9'/%3E%3Cstop offset='.471' stop-color='%23ced5e7'/%3E%3Cstop offset='.598' stop-color='%23dee6f2'/%3E%3Cstop offset='.751' stop-color='%23e9f3fa'/%3E%3Cstop offset='1' stop-color='%23ecf8fe'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill-opacity='0' stroke='%232d3293' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='14.776' y1='56.174' x2='57.726' y2='56.174' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23352c7f'/%3E%3Cstop offset='.074' stop-color='%233e3786'/%3E%3Cstop offset='.266' stop-color='%23544f96'/%3E%3Cstop offset='.457' stop-color='%236763a5'/%3E%3Cstop offset='.645' stop-color='%237572b1'/%3E%3Cstop offset='.827' stop-color='%237e7cba'/%3E%3Cstop offset='1' stop-color='%238180bd'/%3E%3C/linearGradient%3E%3Cpath d='M14.8 39.3h6.5l13-10v33l-13-10h-6.5v-13zm26.1 10.2v2.9c.1 0 1.6 0 3.2-.8s3.4-2.7 3.4-5.8c0-3.1-1.7-5-3.4-5.8-1.6-.8-3.1-.8-3.2-.8v2.9h.1c.4 0 1.4.2 2.1.7.8.5 1.4 1.2 1.4 3 0 2-.8 2.6-1.8 3.2-.5.2-1 .4-1.3.4-.2 0-.3 0-.4.1h-.1zm0 5.1v2.9c.1 0 2.8 0 5.8-1.4 2.9-1.4 6-4.6 5.9-10.1.1-5.6-3-8.7-5.9-10.1-2.9-1.4-5.6-1.4-5.8-1.4v2.9h.3c.8.1 3.1.4 4.9 1.6 1.9 1.2 3.5 3.1 3.5 7.1 0 4.6-2.1 6.5-4.3 7.5-1.1.6-2.2.8-3.1 1-.4.1-.8.1-1 .1-.2-.1-.3-.1-.3-.1zm0 5v2.9c.1 0 4.1 0 8.3-2.1 4.2-2 8.5-6.5 8.5-14.6.1-8.1-4.3-12.6-8.5-14.6-4.2-2.1-8.2-2.1-8.3-2.1V32h.6c1.3.1 4.8.6 7.7 2.5 2.9 1.9 5.5 5.1 5.6 11.3-.1 7-3.4 10.2-6.9 12-1.7.9-3.5 1.3-4.9 1.5-.7.1-1.2.2-1.6.2-.3.1-.5.1-.5.1zm0-27.5z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-mp4 { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M8.6 91.1V71.2h6.1l3.6 13.5 3.6-13.5H28V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H8.6zm23.4 0V71.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9s1.2 2.3 1.2 3.9c0 1.2-.2 2.2-.7 3.1s-1 1.5-1.7 2-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5H32zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm21.3 16.5v-4h-8.2v-3.3l8.7-12.6h3.2v12.6h2.5v3.3h-2.5v4h-3.7zm0-7.4V77l-4.6 6.8h4.6z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-mpg { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M6.8 91.1V71.2h6.1l3.6 13.5L20 71.2h6.1V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H6.8zm23.3 0V71.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm23.9 9.2v-3.3h8.7v7.9c-.8.8-2.1 1.5-3.7 2.1s-3.2.9-4.9.9c-2.1 0-3.9-.4-5.5-1.3S50 88 49.2 86.4c-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.2-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.5s2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.8-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 4.9c0 2.4.5 4.1 1.6 5.3 1.1 1.2 2.4 1.8 4.2 1.8.8 0 1.7-.2 2.5-.5.9-.3 1.6-.7 2.2-1.2v-2.5h-4.5z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-ods { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='97' x2='36.2' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='.029' stop-color='%23235427'/%3E%3Cstop offset='.462' stop-color='%234eb056'/%3E%3Cstop offset='.998' stop-color='%2364d66d'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23a)'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='.3' y1='50' x2='72.1' y2='50' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23077265'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23b)' fill-opacity='0' stroke='%23235427' stroke-width='2'/%3E%3Cpath d='M7.2 81.3c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.6-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 2.9 0 5.3.9 7.1 2.7s2.6 4.3 2.6 7.6c0 3.2-.9 5.7-2.6 7.5s-4.1 2.7-7 2.7c-3 0-5.3-.9-7.1-2.7-1.8-1.8-2.7-4.3-2.7-7.4zm4.1-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.5-2.9 1.5-5.2 0-2.3-.5-4-1.5-5.1s-2.3-1.7-4-1.7-3 .6-4 1.7c-1.1 1.2-1.6 3-1.6 5.2zm18.4-9.9h7.4c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 1.9 1.9 3.2.4 1.3.7 2.8.7 4.7 0 1.6-.2 3-.6 4.2-.5 1.4-1.2 2.6-2.1 3.5-.7.7-1.6 1.2-2.8 1.6-.9.3-2.1.4-3.6.4h-7.6V71.2h-.1zm4 3.4v13.1h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9s.4-2.1.4-3.6-.1-2.7-.4-3.5c-.3-.8-.7-1.5-1.1-1.9-.5-.5-1.1-.8-1.9-.9-.6-.1-1.7-.2-3.3-.2l-1.8-.1zm15.1 10l3.9-.4c.2 1.3.7 2.3 1.4 2.9s1.7.9 2.9.9c1.3 0 2.3-.3 2.9-.8.7-.5 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2s-.8-.6-1.5-.9c-.5-.2-1.5-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.5 2.5-2s2.4-.7 3.9-.7c2.5 0 4.4.5 5.7 1.6s1.9 2.5 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2s-1.4-.7-2.6-.7c-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.7.9 3.7 1.3 2 .5 3.4.9 4.4 1.4.9.5 1.7 1.2 2.2 2 .5.8.8 1.9.8 3.2 0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2s-2.6.7-4.3.7c-2.5 0-4.5-.6-5.8-1.7-1.3-1-2.1-2.7-2.4-4.9z' fill='%23fff'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.221' y1='25.779' x2='58.672' y2='12.329' gradientTransform='translate(0 2)'%3E%3Cstop offset='.484' stop-color='%23ccf8d2'/%3E%3Cstop offset='.931' stop-color='%23429b4e'/%3E%3Cstop offset='.998' stop-color='%232d7136'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23c)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23235427' stroke-width='2' stroke-linejoin='bevel'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='53.28' y1='41.06' x2='53.28' y2='48.656'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M47.6 41.1H59v7.6H47.6z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='53.28' y1='52.782' x2='53.28' y2='60.378'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M47.6 52.8H59v7.6H47.6z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='43.855' y1='36.036' x2='43.855' y2='39.975'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M36.6 36h1.6c2.4.2 4.3.8 6.2 1.5 3.6-1.6 8.6-.4 11.8.8-4-.4-8.8 0-11.6 1.6-2.8-2.3-8.1-2.9-13-2.3 1.3-.8 3-1.4 5-1.6z' fill='url(%23f)'/%3E%3ClinearGradient id='g' gradientUnits='userSpaceOnUse' x1='28.139' y1='42.105' x2='28.139' y2='48.602'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M35.5 42.1c-2.9.2-5.3 1.1-6.8 2.4-4.8-2.2-13-1.2-16.1 1.7-.3.2-.6.4-.5.7 2.7-.8 6-1.5 9.4-1.2 3.4.3 5.9 1.4 7.8 2.9 3.5-3.1 8.6-4.9 15.1-4.8-2.4-1-5.7-1.9-8.9-1.7z' fill='url(%23g)'/%3E%3ClinearGradient id='h' gradientUnits='userSpaceOnUse' x1='37.908' y1='52.867' x2='37.908' y2='60.462'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M32.2 52.9h11.4v7.6H32.2z' fill='url(%23h)'/%3E%3ClinearGradient id='i' gradientUnits='userSpaceOnUse' x1='22.435' y1='52.867' x2='22.435' y2='60.462'%3E%3Cstop offset='0' stop-color='%23235427'/%3E%3Cstop offset='1' stop-color='%2344984b'/%3E%3C/linearGradient%3E%3Cpath d='M16.7 52.9h11.4v7.6H16.7z' fill='url(%23i)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-odf, +.ipfs-odt { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.005' x2='36' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23002d44'/%3E%3Cstop offset='.056' stop-color='%23013852'/%3E%3Cstop offset='.16' stop-color='%230a4d6b'/%3E%3Cstop offset='.274' stop-color='%230f5e82'/%3E%3Cstop offset='.398' stop-color='%230f6d96'/%3E%3Cstop offset='.539' stop-color='%230d77a4'/%3E%3Cstop offset='.711' stop-color='%230a7eae'/%3E%3Cstop offset='1' stop-color='%230881b2'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%2301415e' stroke-width='2'/%3E%3Cpath d='M7.5 81.3c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7 1.8 1.8 2.7 4.3 2.7 7.6 0 3.2-.9 5.7-2.6 7.5-1.8 1.8-4.1 2.7-7.1 2.7s-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.2-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.6-2.9 1.6-5.2 0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.2 1.2-1.7 2.9-1.7 5.2zm18.4-9.9h7.4c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8s1.5 1.9 1.9 3.2c.4 1.3.7 2.8.7 4.7 0 1.6-.2 3-.6 4.2-.5 1.4-1.2 2.6-2.1 3.5-.7.7-1.6 1.2-2.8 1.6-.9.3-2.1.4-3.6.4h-7.6V71.2zm4.1 3.4v13.1h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9s.4-2.1.4-3.6-.1-2.7-.4-3.5c-.3-.8-.7-1.5-1.1-1.9s-1.1-.8-1.9-.9c-.6-.1-1.7-.2-3.3-.2h-1.8zm20.7 16.5V74.6H49v-3.4h15.9v3.4H59v16.5h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.069' y1='74.205' x2='58.569' y2='87.705' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23dff1fa'/%3E%3Cstop offset='.3' stop-color='%23dceef7'/%3E%3Cstop offset='.443' stop-color='%23d3e4ef'/%3E%3Cstop offset='.553' stop-color='%23c4d6e3'/%3E%3Cstop offset='.647' stop-color='%23b1c5d5'/%3E%3Cstop offset='.73' stop-color='%239ab0c5'/%3E%3Cstop offset='.805' stop-color='%23819ab3'/%3E%3Cstop offset='.875' stop-color='%2364829f'/%3E%3Cstop offset='.938' stop-color='%23426c8c'/%3E%3Cstop offset='.998' stop-color='%2306577a'/%3E%3Cstop offset='1' stop-color='%23015679'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23b)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%2301415e' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M39.2 34h1.9c2.8.2 5.1.9 7.3 1.8 4.2-1.9 10.3-.4 14 1-4.8-.5-10.5 0-13.8 1.9C45.3 36 39 35.3 33.1 36c1.7-1.1 3.7-1.8 6.1-2zm-1.4 7.3c-3.4.2-6.2 1.3-8.1 2.9-5.7-2.6-15.5-1.5-19.2 2-.3.2-.7.5-.6.8 3.2-1 7.1-1.8 11.2-1.5 4 .3 7 1.7 9.3 3.5 4.1-3.7 10.2-5.8 17.9-5.7-2.7-1.3-6.6-2.3-10.5-2z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-ott { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='3.005' x2='36' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23002d44'/%3E%3Cstop offset='.056' stop-color='%23013852'/%3E%3Cstop offset='.16' stop-color='%230a4d6b'/%3E%3Cstop offset='.274' stop-color='%230f5e82'/%3E%3Cstop offset='.398' stop-color='%230f6d96'/%3E%3Cstop offset='.539' stop-color='%230d77a4'/%3E%3Cstop offset='.711' stop-color='%230a7eae'/%3E%3Cstop offset='1' stop-color='%230881b2'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%2301415e' stroke-width='2'/%3E%3Cpath d='M8.8 81.3c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7 1.8 1.8 2.7 4.3 2.7 7.6 0 3.2-.9 5.7-2.6 7.5-1.8 1.8-4.1 2.7-7.1 2.7s-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.2-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.6-2.9 1.6-5.2 0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.2 1.2-1.7 2.9-1.7 5.2zm22.9 10V74.6H30v-3.4h15.9v3.4H40v16.5h-4.1zm17.1 0V74.6h-5.9v-3.4H63v3.4h-5.9v16.5H53z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.069' y1='74.205' x2='58.569' y2='87.705' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23dff1fa'/%3E%3Cstop offset='.3' stop-color='%23dceef7'/%3E%3Cstop offset='.443' stop-color='%23d3e4ef'/%3E%3Cstop offset='.553' stop-color='%23c4d6e3'/%3E%3Cstop offset='.647' stop-color='%23b1c5d5'/%3E%3Cstop offset='.73' stop-color='%239ab0c5'/%3E%3Cstop offset='.805' stop-color='%23819ab3'/%3E%3Cstop offset='.875' stop-color='%2364829f'/%3E%3Cstop offset='.938' stop-color='%23426c8c'/%3E%3Cstop offset='.998' stop-color='%2306577a'/%3E%3Cstop offset='1' stop-color='%23015679'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23b)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%2301415e' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M39.2 34h1.9c2.8.2 5.1.9 7.3 1.8 4.2-1.9 10.3-.4 14 1-4.8-.5-10.5 0-13.8 1.9C45.3 36 39 35.3 33.1 36c1.7-1.1 3.7-1.8 6.1-2zm-1.4 7.3c-3.4.2-6.2 1.3-8.1 2.9-5.7-2.6-15.5-1.5-19.2 2-.3.2-.7.5-.6.8 3.2-1 7.1-1.8 11.2-1.5 4 .3 7 1.7 9.3 3.5 4.1-3.7 10.2-5.8 17.9-5.7-2.7-1.3-6.6-2.3-10.5-2z'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-pdf { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='.767' x2='36' y2='99.25' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%236e0e10'/%3E%3Cstop offset='.047' stop-color='%237e1416'/%3E%3Cstop offset='.116' stop-color='%2394191c'/%3E%3Cstop offset='.196' stop-color='%23a71d21'/%3E%3Cstop offset='.289' stop-color='%23b61f24'/%3E%3Cstop offset='.403' stop-color='%23c02026'/%3E%3Cstop offset='.563' stop-color='%23c72027'/%3E%3Cstop offset='1' stop-color='%23c82127'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill='url(%23a)'/%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill-opacity='0' stroke='%23951b1f' stroke-width='2'/%3E%3Cpath d='M9.9 91.3v-20h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 2 .8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.3-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3H14v7.5H9.9zM14 74.7v5.7h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.6 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1H14zm14.6-3.4H36c1.7 0 2.9.1 3.8.4 1.2.3 2.2 1 3 1.8.8.9 1.5 2 1.9 3.2.4 1.3.7 2.8.7 4.7 0 1.6-.2 3.1-.6 4.2-.5 1.5-1.2 2.6-2.1 3.5-.7.7-1.7 1.2-2.8 1.6-.9.3-2.1.4-3.6.4h-7.6V71.3zm4 3.4v13.2h3c1.1 0 1.9-.1 2.4-.2.7-.2 1.2-.4 1.6-.8.4-.4.8-1 1.1-1.9.3-.9.4-2.1.4-3.7 0-1.5-.1-2.7-.4-3.5s-.7-1.5-1.1-1.9c-.5-.5-1.1-.8-1.9-.9-.6-.1-1.7-.2-3.3-.2h-1.8zm16.2 16.6v-20h13.7v3.4h-9.7v4.7h8.4v3.4h-8.4v8.5h-4z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.035' y1='72.356' x2='58.535' y2='85.856' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23fddfd8'/%3E%3Cstop offset='.166' stop-color='%23fcdcd4'/%3E%3Cstop offset='.302' stop-color='%23f9d3c9'/%3E%3Cstop offset='.427' stop-color='%23f4c5b7'/%3E%3Cstop offset='.546' stop-color='%23efb1a0'/%3E%3Cstop offset='.661' stop-color='%23e99983'/%3E%3Cstop offset='.772' stop-color='%23e27e66'/%3E%3Cstop offset='.88' stop-color='%23da5c46'/%3E%3Cstop offset='.984' stop-color='%23d22b2a'/%3E%3Cstop offset='1' stop-color='%23d12027'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill='url(%23b)'/%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill-opacity='0' stroke='%238e191c' stroke-width='2' stroke-linejoin='round'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='10.268' y1='31.916' x2='52.274' y2='73.921' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23a50d12'/%3E%3Cstop offset='.432' stop-color='%23a20d12'/%3E%3Cstop offset='.639' stop-color='%239a0c10'/%3E%3Cstop offset='.799' stop-color='%238c090b'/%3E%3Cstop offset='.933' stop-color='%237b0405'/%3E%3Cstop offset='1' stop-color='%23700101'/%3E%3C/linearGradient%3E%3Cpath d='M15.7 54.3c-2.9 3-6.7 5.2-7.8 9.9 7-1.7 11-9.2 14.9-15.9 1.6-2.8 3.8-6.4 5.7-10.2 1.6-3.3 4.2-8.4 4.3-11.3.2-5.5-4.5-12.6-.4-18 2.6-.4 4 .5 3.6 3.2-.8-.8-.5-2.5-2.1-2.5-2.8 2.6-1.2 10.4 0 13.4.7-2.3 1.4-4.8 1.4-7.8 1.2 4.3-.7 7.9-.4 11.3 1 8.7 8.9 13.8 14.9 17.7 5.8-.2 15.3-1.7 17.8 2.5-.6.9-1.8-.7-3.2-1.1-3.1-.7-7.7-.1-11.4-.4 3.5 2.3 7.9 3.7 13.9 3.6-5.5 3.9-13.3-2.6-18.1-3.2-7-.9-14.8 3.4-21.7 3.9 5.6-2.5 12.4-3.7 19.2-5-5.2-3.8-9.7-8.3-12.1-14.8-1.7 5.7-5.5 12.1-9.2 18.4-3.7 6.1-7 12.6-11.7 15.9-2.1 1.5-4.4 1.8-6.8.4.6-5.4 6.7-8.8 9.2-10z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='9.782' y1='30.875' x2='53.239' y2='74.332' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23a50d12'/%3E%3Cstop offset='.432' stop-color='%23a20d12'/%3E%3Cstop offset='.639' stop-color='%239a0c10'/%3E%3Cstop offset='.799' stop-color='%238c090b'/%3E%3Cstop offset='.933' stop-color='%237b0405'/%3E%3Cstop offset='1' stop-color='%23700101'/%3E%3C/linearGradient%3E%3Cpath d='M6.8 65.5l-.3.1v-.2l-.6-.3-.6-.3.1-.6c.8-6.1 7.3-9.5 9.8-10.7l1.1 1.6c-2.6 2.7-5.5 4.5-6.9 7.7 5.4-2.3 8.9-8.8 12.5-14.8 1.6-2.8 3.8-6.4 5.7-10.1 1.6-3.2 4.1-8.4 4.2-10.9v-.3c0-3.4-2.1-7.9-2.1-12.2 0-2.1.5-4.2 1.9-6l.2-.5.4-.1c.4-.1.8-.1 1.2-.1 1 0 1.9.2 2.6.8.7.6 1 1.6 1 2.6 0 .3 0 .7-.1 1.1l-.3 1.9-1.4-1.3c-.7-.7-.8-1.4-1-1.8-.1-.1-.1-.2-.1-.2-.6.8-.9 2.3-.9 4 0 1.5.2 3.1.5 4.6.3-1.3.4-2.6.5-4.1l2-.3c.3 1.1.5 2.3.5 3.3 0 2.8-.8 5.3-.8 7.4v.9c.8 8 8.2 13 14.2 16.8 2.4-.1 5.6-.4 8.6-.4 4 0 7.9.5 9.8 3.4l.3.6-.4.5c-.1.2-.4.4-.6.5l2.3-.1-2.6 1.9c-1.4 1-3 1.4-4.6 1.4-5.3-.1-10.9-4.1-14.2-4.5-.6-.1-1.2-.1-1.8-.1-6.1 0-13.1 3.5-19.6 4l-.5-1.9c5.1-2.3 11.2-3.5 17.2-4.6-3.9-3.1-7.3-6.7-9.6-11.4-2 5.2-5.2 10.7-8.5 16.1-3.7 6.1-7 12.6-12 16.2-1.3.9-2.7 1.5-4.2 1.5-1.1-.5-2-.7-2.9-1.1zM66 47.7h.5c-.5-.2-.8-.4-1.1-.6-.5-.3-.9-.6-1.2-.6-1.1-.3-2.6-.4-4.2-.4h-2.9c2.5 1 5.4 1.6 8.9 1.6zM51.1 45H51h.1zm-2.5-.6c-1.7-1.1-3.5-2.3-5.3-3.6 1.1 1 2.3 1.9 3.5 2.8l1.1.8h.7zm-14.8-18v.4c0 .4-.1.8-.1 1.2l.3-1.1v-.4c0-.3-.1-.6-.1-.9l-.1-.3c-.1.3 0 .7 0 1.1z' fill='url(%23d)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-php { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.014' x2='36.2' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill='url(%23a)'/%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M9.3 90.1V70.2h6.5c2.5 0 4.1.1 4.8.3 1.2.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5H9.3zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm14.7 16.5V70.2h4.1V78h8v-7.8h4.1V90h-4.1v-8.7h-8V90h-4.1zm20.2 0V70.2h6.5c2.5 0 4.1.1 4.8.3 1.2.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1s-1 1.5-1.7 2-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='37.462' y1='43.229' x2='37.462' y2='74.265' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M34.1 50.9c2 .7 5.3.6 7.7.3.4 1-.2 2.2.2 3.3.2.5.9 1 1.9 1.5.2.1.5.1.7.2l.2.2c.4.3 1.3.8 1.5.9.3.1.6.1.9.1h1.1c1.5-.1 3-.5 3.4-1.1.7-1 .3-3.1.2-4.9-.1-1.6-.3-3.7 0-4.9.1-.4.5-.9.7-1.4.9-1.8 1.7-4.8 1.4-7.6-.2-1.3-.8-2.4-1-3.4 2 .2 3.9-.2 5.7 0 1.1.1 1.9.8 2.9.7.2-.5.8-.8.9-1.5.1-.7-.2-1.6-.5-2.1-1.4-.2-2.5 1.1-3.8 1.2-.4 0-1-.1-1.5-.2-1.6-.1-3.8.3-5.2 0-1-.2-1.8-1.3-2.8-1.7-.2-.1-.6 0-.9-.2-.3-.1-.5-.3-.7-.3-1.1-.4-2.2-.8-3.3-1-2-.5-4.8-.5-7.4-.3-.8.1-1.6.5-2.4.3-.6-.1-.7-.5-1.2-.7-1.8-.8-3.6.1-4.8.7-.9.4-1.9 1.1-2.8 1.2-.9.2-2.1 0-2.9 0-1 0-2.2.2-3.3.3-1 .2-2.3.3-2.9.7-1.5.9-1.9 4.8-2.4 7-.2.9-.5 1.7-.7 2.6-.3 1.9-.5 3.9-.5 5.7-.1 3.7-.5 8.9 1.4 10.2.4.3 1.8.7 2.2.5.1 0 .6-.5.7-.7.1-.3-.2-.7-.2-1.2 0-.8-.2-1.9-.2-2.8 0-2.2.4-4.7 1-5.6 0-.1.3-.1.3-.2.1-.2 0-.4.2-.5.4-.4 1.1-.9 1.5-1 1.3-.5 2 .1 2.6.9 1.1 1.4 1.3 3.7 1.4 5.9v1.4c0 .5-.2 1.1-.2 1.4.3.9 1.8 1.3 2.4 1.7 0 .3.1.7.3 1 .3.5.8.9 1.2 1.1 1.6.9 5.6.3 6.4-.7.1-.1.2-.2.2-.4.1-.3.3-.6.3-.8.5-2.2-.2-3.8.1-5.8z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='31.747' y1='69.935' x2='31.747' y2='69.986' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M31.8 32c-.1.1-.1.1 0 0' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.324' y1='74.184' x2='58.871' y2='87.731' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill='url(%23d)'/%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-png { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M8 91.1V71.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3H12v7.5H8zm4-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.4-.1-2.9-.1H12zm14.6 16.5V71.2h3.9l8.2 13.2V71.2h3.7V91h-4l-8.1-12.9V91h-3.7zm29.5-7.3v-3.3h8.7v7.9c-.8.8-2.1 1.5-3.7 2.1-1.6.6-3.2.9-4.9.9-2.1 0-3.9-.4-5.5-1.3S48 88 47.2 86.4c-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.1-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.5s2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.7-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 4.9c0 2.4.5 4.1 1.6 5.3s2.4 1.8 4.1 1.8c.8 0 1.7-.2 2.5-.5s1.6-.7 2.2-1.2v-2.5h-4.4z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-ppt { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='.767' x2='36' y2='99.25' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23cb5528'/%3E%3Cstop offset='.032' stop-color='%23cf5b27'/%3E%3Cstop offset='.162' stop-color='%23db7026'/%3E%3Cstop offset='.305' stop-color='%23e68025'/%3E%3Cstop offset='.468' stop-color='%23ee8c23'/%3E%3Cstop offset='.666' stop-color='%23f49322'/%3E%3Cstop offset='1' stop-color='%23f69622'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill='url(%23a)'/%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill-opacity='0' stroke='%23c15127' stroke-width='2'/%3E%3Cpath d='M10.6 91.3v-20h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 2 .8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.3-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.6v5.7h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.6 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm14.7 16.6v-20h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 2 .8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.3-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.6v5.7h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.6 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm19.1 16.6V74.7h-5.9v-3.4h15.9v3.4h-5.9v16.6h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='12.829' y1='41.747' x2='49.824' y2='78.742' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23d65b25'/%3E%3Cstop offset='.418' stop-color='%23d35a25'/%3E%3Cstop offset='.679' stop-color='%23ca5624'/%3E%3Cstop offset='.897' stop-color='%23bc4f22'/%3E%3Cstop offset='1' stop-color='%23b34b21'/%3E%3C/linearGradient%3E%3Cpath d='M56.5 32c0 2.3-.5 4.4-1.4 6-1 1.7-2.3 3.1-4 4.1-1.8 1.1-3.8 1.9-6 2.4-2.3.5-4.8.7-7.6.7H34v11.6c0 .7.1 1.3.4 1.8s.8.9 1.5 1.2c.4.2 1 .3 1.9.5.9.2 1.6.3 2.2.4V63H17.5v-2.3c.6-.1 1.3-.1 2.3-.2.9-.1 1.6-.2 2-.4.8-.3 1.3-.7 1.5-1.1s.4-1.1.4-1.9V27.9c0-.7-.1-1.3-.4-1.8-.2-.5-.7-.9-1.5-1.2-.5-.2-1.3-.4-2.2-.6-.9-.2-1.6-.3-2-.4v-2.3h22.9c5.4 0 9.4.9 12 2.6 2.6 1.7 4 4.3 4 7.8zM45 33.5c0-3.1-.6-5.4-1.9-7-1.3-1.5-3.5-2.3-6.7-2.3H34v18.1h1.2c3.2 0 5.6-.7 7.3-2.2 1.7-1.3 2.5-3.5 2.5-6.6z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.035' y1='72.355' x2='58.535' y2='85.855' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23fffce3'/%3E%3Cstop offset='.383' stop-color='%23fffae0'/%3E%3Cstop offset='.521' stop-color='%23fdf3d8'/%3E%3Cstop offset='.62' stop-color='%23fbebcc'/%3E%3Cstop offset='.699' stop-color='%23f8dfbb'/%3E%3Cstop offset='.767' stop-color='%23f5d0a6'/%3E%3Cstop offset='.828' stop-color='%23f1bf8d'/%3E%3Cstop offset='.882' stop-color='%23ecaa72'/%3E%3Cstop offset='.933' stop-color='%23e79354'/%3E%3Cstop offset='.977' stop-color='%23e27c34'/%3E%3Cstop offset='1' stop-color='%23df6f26'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill='url(%23c)'/%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill-opacity='0' stroke='%23c15127' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-psd { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='101.001' x2='36' y2='2.517' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23b5d8e9'/%3E%3Cstop offset='.264' stop-color='%23b2d6e8'/%3E%3Cstop offset='.412' stop-color='%23a7d0e3'/%3E%3Cstop offset='.53' stop-color='%2396c6dc'/%3E%3Cstop offset='.633' stop-color='%237db8d2'/%3E%3Cstop offset='.726' stop-color='%235da7c5'/%3E%3Cstop offset='.812' stop-color='%233094b5'/%3E%3Cstop offset='.892' stop-color='%23007fa3'/%3E%3Cstop offset='.966' stop-color='%23006a90'/%3E%3Cstop offset='1' stop-color='%23006086'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.3 26.9v71.6H-.4V1h45.5z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1l27.3 26.9v71.6H-.4V1h45.5z' fill-opacity='0' stroke='%23366c81' stroke-width='2'/%3E%3Cpath d='M9 91.5V71.6h6.6c2.5 0 4.1.1 4.9.3 1.2.3 2.1 1 2.9 2s1.2 2.3 1.2 3.9c0 1.2-.2 2.3-.7 3.1-.5.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.7v7.5H9zm4.1-16.6v5.7h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1s.5-1 .5-1.6c0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zM26.8 85l4-.4c.2 1.3.7 2.3 1.5 2.9.7.6 1.7.9 3 .9s2.3-.3 3-.8 1-1.2 1-1.9c0-.5-.1-.9-.4-1.2s-.8-.6-1.5-.9c-.5-.2-1.6-.5-3.3-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.9-2.4-1.9-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.6 2.5-2 1.1-.5 2.4-.7 4-.7 2.5 0 4.5.5 5.7 1.6 1.3 1.1 2 2.6 2 4.4l-4.1.2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.8 1.3 2 .5 3.5.9 4.4 1.4 1 .5 1.7 1.2 2.2 2 .5.9.8 1.9.8 3.2 0 1.1-.3 2.2-1 3.2s-1.6 1.7-2.7 2.2c-1.2.5-2.6.7-4.4.7-2.6 0-4.5-.6-5.9-1.7-1.4-.9-2.2-2.6-2.5-4.9zm19.9-13.4h7.5c1.7 0 3 .1 3.9.4 1.2.3 2.2 1 3.1 1.8.8.9 1.5 2 1.9 3.2.4 1.3.7 2.8.7 4.7 0 1.6-.2 3.1-.6 4.2-.5 1.5-1.2 2.6-2.2 3.5-.7.7-1.7 1.2-2.9 1.6-.9.3-2.1.4-3.6.4h-7.7V71.6zm4.1 3.3v13.2h3.1c1.1 0 2-.1 2.5-.2.7-.2 1.2-.4 1.7-.8.4-.4.8-1 1.1-1.9.3-.9.4-2.1.4-3.7 0-1.5-.1-2.7-.4-3.5s-.7-1.5-1.2-1.9c-.5-.5-1.1-.8-1.9-.9-.6-.1-1.7-.2-3.4-.2h-1.9z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.199' y1='74.036' x2='58.84' y2='87.677' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ebf3f8'/%3E%3Cstop offset='.357' stop-color='%23e8f2f7'/%3E%3Cstop offset='.494' stop-color='%23dfedf4'/%3E%3Cstop offset='.593' stop-color='%23d0e5f0'/%3E%3Cstop offset='.673' stop-color='%23bbdae9'/%3E%3Cstop offset='.743' stop-color='%23a0cce1'/%3E%3Cstop offset='.805' stop-color='%237fbcd8'/%3E%3Cstop offset='.861' stop-color='%2357abcc'/%3E%3Cstop offset='.913' stop-color='%230b99bf'/%3E%3Cstop offset='.959' stop-color='%230087b1'/%3E%3Cstop offset='1' stop-color='%230076a3'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1l27.3 26.9H45.1V1z' fill='url(%23b)'/%3E%3Cpath d='M45.1 1l27.3 26.9H45.1V1z' fill-opacity='0' stroke='%23346a80' stroke-width='2' stroke-linejoin='bevel'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='517.303' y1='63.152' x2='562.93' y2='63.152' gradientTransform='rotate(180 285.824 51)'%3E%3Cstop offset='0' stop-color='%23449ec0'/%3E%3Cstop offset='.188' stop-color='%233e9cbd'/%3E%3Cstop offset='.377' stop-color='%232894b7'/%3E%3Cstop offset='.567' stop-color='%230089ad'/%3E%3Cstop offset='.758' stop-color='%23007a9f'/%3E%3Cstop offset='.947' stop-color='%2300688f'/%3E%3Cstop offset='1' stop-color='%2300638a'/%3E%3C/linearGradient%3E%3Cpath d='M48.9 58.2c.8.4-.6.4 0 0zm1.4 2.9c1.1 2.4 2.6 4.3 3.7 6.7.8-.9-1.4-2-.7-3.4-1-.8-1-3.7-3-3.3zM31.7 34.5c-1.6 1.5-4.7 2.2-7.6 2-.1.7.6 1 1 1.5 2.7 3.4 5.6 7.5 8.2 11 4.5-.3 6.9 1.6 9.7 2.9-2.3-.6-5.3-2-8.9-1.8 1.5 1.6 2.2 3.7 4.1 5.1 2.2 1.6 5.6.7 8.7 1.6.6.1.6.9 1.1 1 .5-.2-.2-.9-.5-1.3-9.2-14.6-18.6-30.6-31.3-42 14.7 10.1 22.7 26.8 32.4 41.8.1-1.5.9-3.1.8-4.7-.1-1.5-.9-2.8-1.6-4.1-.7-1.3-1.3-2.7-2.3-3.4-.1 2.4.2 4.4.7 6.2-1-2-2.1-4.8-1.3-7.7-4.7-7-9.5-15-15.2-20.8.2 1.5.6 2.8.5 4.6-.7-1.6-.7-3.8-1.3-5.5-2.4-2.4-5.1-4.4-7.9-6.4-.4.5-.3 1.4-.5 2.1-.3-.8-.3-1.9-.5-2.8-1.6-.9-3.3-1.8-5.3-2.6-1.8-.7-3.8-2-6.1-1.1-.1 1.6.5 2.5.7 3.9 1.1 1.1 3 1.3 5.3 1.1-1.3.5-3.4.4-4.6-.2.2 2.1 1.5 3.8 2.4 5.5 2.9 5.1 6.4 10 10.2 14.4 2.9 1 6.7.8 9.1-.3z' fill='url(%23c)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-py { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.014' x2='36.2' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill='url(%23a)'/%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M19.3 90.1V70.2h6.5c2.5 0 4.1.1 4.8.3 1.2.3 2.1.9 2.9 1.9.8 1 1.2 2.3 1.2 3.9 0 1.2-.2 2.2-.7 3.1-.4.8-1 1.5-1.7 2s-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5h-4.1zm4-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3.5-.2 1-.5 1.3-1 .3-.4.5-1 .5-1.5 0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1zm20 16.5v-8.3l-7.4-11.5h4.8l4.7 7.8 4.6-7.8h4.7l-7.4 11.5v8.3h-4z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='31.747' y1='69.935' x2='31.747' y2='69.986' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M31.8 32c-.1.1-.1.1 0 0' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.324' y1='74.184' x2='58.871' y2='87.731' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='35.35' y1='39.849' x2='35.35' y2='83.437' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M38.6 18.6H31c-7.6 0-7.6 5.3-7.6 5.3v3.3h15.1v2.1H23.3c-7.6 0-7.6 5.3-7.6 5.3v5.3c0 5.3 7.6 5.3 7.6 5.3 0-5.3 7.6-5.3 7.6-5.3h7.6c7.6 0 7.6-5.3 7.6-5.3V23.9c.1-5.3-7.5-5.3-7.5-5.3zm-12.2 6.9c-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4.1.7-.6 1.4-1.4 1.4zm20.9 9.9c0 5.3-7.6 5.3-7.6 5.3h-7.5c-7.6 0-7.6 5.3-7.6 5.3v10.7c0 5.3 7.6 5.3 7.6 5.3h7.6c7.6 0 7.6-5.3 7.6-5.3v-3.3H32.2v-2.1h15.2C55 51.3 55 46 55 46v-5.3c-.1-5.3-7.7-5.3-7.7-5.3zm-3 19.7c.8 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4-1.4-.6-1.4-1.4.6-1.4 1.4-1.4z' fill='url(%23d)'/%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-qt { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M35.4 88.5c1 .7 2.1 1.3 3.2 1.7L37.1 93c-.6-.2-1.2-.4-1.8-.7-.1-.1-1-.6-2.7-1.8-1.3.6-2.8.9-4.4.9-3.1 0-5.5-.9-7.2-2.7-1.7-1.8-2.6-4.3-2.6-7.6 0-3.2.9-5.8 2.6-7.6s4.1-2.7 7.1-2.7 5.3.9 7.1 2.7c1.7 1.8 2.6 4.3 2.6 7.6 0 1.7-.2 3.2-.7 4.5-.3 1.1-.9 2-1.7 2.9zm-3.3-2.2c.5-.6.9-1.3 1.2-2.2.3-.9.4-1.8.4-3 0-2.3-.5-4-1.5-5.1-1-1.1-2.4-1.7-4-1.7s-3 .6-4 1.7-1.5 2.8-1.5 5.1.5 4.1 1.5 5.2c1 1.1 2.3 1.7 3.9 1.7.6 0 1.1-.1 1.7-.3-.8-.5-1.7-.9-2.5-1.2l1.1-2.3c1.3.5 2.5 1.2 3.7 2.1zm13.4 4.8V74.6h-5.9v-3.4h15.9v3.4h-5.9v16.5h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-rar { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.98%7D.st4%7Bfill:%23a07802%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36' y1='2.88' x2='36' y2='101.125' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23efc402'/%3E%3Cstop offset='.038' stop-color='%23f1c829'/%3E%3Cstop offset='.147' stop-color='%23f4d264'/%3E%3Cstop offset='.258' stop-color='%23f7dc8b'/%3E%3Cstop offset='.372' stop-color='%23f9e5ac'/%3E%3Cstop offset='.488' stop-color='%23fbecc7'/%3E%3Cstop offset='.606' stop-color='%23fcf3dd'/%3E%3Cstop offset='.728' stop-color='%23fef9ee'/%3E%3Cstop offset='.856' stop-color='%23fffdf9'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M44.9.9l26.8 26.8v71.5H.2V.9h44.7z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M44.9.9l26.8 26.8v71.5H.2V.9h44.7z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2'/%3E%3C/g%3E%3Cpath class='st4' d='M8.1 92.2V72.3h8.5c2.1 0 3.7.2 4.6.5s1.7 1 2.3 1.9c.6.9.9 2 .9 3.1 0 1.5-.4 2.7-1.3 3.7s-2.2 1.6-3.9 1.8c.9.5 1.6 1.1 2.2 1.7.6.6 1.3 1.7 2.3 3.2l2.4 3.9h-4.8l-2.9-4.3c-1-1.5-1.7-2.5-2.1-2.9-.4-.4-.8-.7-1.2-.8-.4-.1-1.1-.2-2-.2h-.8v8.3H8.1zm4-11.5h3c1.9 0 3.1-.1 3.6-.2.5-.2.9-.4 1.1-.8.3-.4.4-.9.4-1.5 0-.7-.2-1.2-.5-1.6-.4-.4-.9-.7-1.5-.8-.3 0-1.3-.1-2.9-.1h-3.1v5z'/%3E%3Cpath class='st4' d='M46.1 92.2h-4.4L40 87.6h-8l-1.6 4.5h-4.3l7.8-19.9h4.2l8 20zm-7.4-7.9L36 76.9l-2.7 7.4h5.4zm9.6 7.9V72.3h8.5c2.1 0 3.7.2 4.6.5s1.7 1 2.3 1.9c.6.9.9 2 .9 3.1 0 1.5-.4 2.7-1.3 3.7s-2.2 1.6-3.9 1.8c.9.5 1.6 1.1 2.2 1.7s1.3 1.7 2.3 3.2l2.4 3.9h-4.8l-2.9-4.3c-1-1.5-1.7-2.5-2.1-2.9-.4-.4-.8-.7-1.2-.8-.4-.1-1.1-.2-2-.2h-.8v8.3h-4.2zm4-11.5h3c1.9 0 3.1-.1 3.6-.2.5-.2.9-.4 1.1-.8.3-.4.4-.9.4-1.5 0-.7-.2-1.2-.5-1.6-.4-.4-.9-.7-1.5-.8-.3 0-1.3-.1-2.9-.1h-3.1v5z'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='44.942' y1='74.326' x2='58.348' y2='87.733' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23fff'/%3E%3Cstop offset='.234' stop-color='%23fffefb'/%3E%3Cstop offset='.369' stop-color='%23fefaf1'/%3E%3Cstop offset='.481' stop-color='%23fdf5e4'/%3E%3Cstop offset='.579' stop-color='%23fcf0d2'/%3E%3Cstop offset='.669' stop-color='%23fae9bc'/%3E%3Cstop offset='.752' stop-color='%23f9e2a2'/%3E%3Cstop offset='.831' stop-color='%23f7da83'/%3E%3Cstop offset='.905' stop-color='%23f4d15d'/%3E%3Cstop offset='.975' stop-color='%23f1c827'/%3E%3Cstop offset='1' stop-color='%23efc402'/%3E%3C/linearGradient%3E%3Cpath d='M44.9.9l26.8 26.8H44.9V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M44.9.9l26.8 26.8H44.9V.9z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='33.617' y1='40.689' x2='33.617' y2='98.148' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3Cpath d='M38 15.8h-8.4v-5H38v5zm0 8.9h-8.4v5H38v-5zm0-20.8h-8.4v5H38v-5zm0 13.8h-8.4v5H38v-5zm0 13.9h-8.4v5H38v-5zm.7 24.6c0 2.8-2.3 5.1-5.1 5.1s-5.1-2.3-5.1-5.1v-.5l1.7-14.6c0-1.9 1.5-3.4 3.4-3.4 1.8 0 3.3 1.5 3.4 3.3l1.6 14.4c.1.4.1.6.1.8zm-1.6-.1c0-1.9-1.6-3.5-3.5-3.5s-3.5 1.6-3.5 3.5 1.6 3.5 3.5 3.5c2-.1 3.5-1.7 3.5-3.5z' opacity='.98' fill='url(%23SVGID_3_)'/%3E%3Cpath d='M32.5 41.6l-2.3-4.5v-2.3l2.3-2.2h2.2l2.3 2.2v2.3l-2.3 4.5h-2.2z' fill='%23fff' opacity='.98'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-rb { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.014' x2='36.2' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill='url(%23a)'/%3E%3Cpath d='M45.2 1l27.1 26.7V99H.1V1h45.1z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M19 90.1V70.2h8.5c2.1 0 3.7.2 4.7.5s1.8 1 2.3 1.9c.6.9.9 2 .9 3.1 0 1.5-.4 2.7-1.3 3.7s-2.2 1.6-4 1.8c.9.5 1.6 1.1 2.2 1.7.6.6 1.3 1.7 2.3 3.2l2.5 3.9h-4.9l-2.9-4.3c-1-1.5-1.8-2.5-2.1-2.9-.4-.4-.8-.7-1.2-.8-.4-.1-1.1-.2-2-.2h-.8v8.3H19zm4.1-11.5h3c1.9 0 3.2-.1 3.6-.2s.9-.4 1.1-.8c.3-.4.4-.9.4-1.5 0-.7-.2-1.2-.5-1.6-.4-.4-.9-.7-1.5-.8-.3 0-1.3-.1-3-.1H23v5zm16.2-8.4h8c1.6 0 2.8.1 3.6.2s1.5.4 2.1.8c.6.4 1.1 1 1.5 1.7.4.7.6 1.5.6 2.3 0 .9-.3 1.8-.8 2.6s-1.2 1.4-2.1 1.7c1.2.4 2.2 1 2.8 1.8.7.8 1 1.8 1 3 0 .9-.2 1.8-.6 2.6s-1 1.5-1.7 2-1.6.8-2.7.9c-.7.1-2.3.1-4.9.1h-6.8V70.2zm4.1 3.3v4.6h2.7c1.6 0 2.6 0 3-.1.7-.1 1.2-.3 1.6-.7.4-.4.6-.9.6-1.5s-.2-1.1-.5-1.5c-.3-.4-.9-.6-1.5-.7-.4 0-1.6-.1-3.5-.1h-2.4zm0 7.9v5.3h3.8c1.5 0 2.4 0 2.8-.1.6-.1 1.1-.4 1.5-.8.4-.4.6-1 .6-1.7 0-.6-.1-1.1-.4-1.5s-.7-.7-1.3-.9c-.6-.2-1.8-.3-3.6-.3h-3.4z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='31.747' y1='69.935' x2='31.747' y2='69.986' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M31.8 32c-.1.1-.1.1 0 0' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='18' y1='60.5' x2='54' y2='60.5' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M54 23.5v36l-9-27 9-9zm-36 36h36l-27-9-9 9zm9-9l27 9-18-18-9 9zm9-9l18 18-9-27-9 9zm-18 9v9l9-9h-9zm18-9h-9v9l9-9zm9-9h-9v9l9-9zm9-9h-9v9l9-9zm-27 18l-9 9h9v-9zm9-9l-9 9h9v-9zm9-9l-9 9h9v-9z' fill='url(%23c)'/%3E%3Cpath d='M54 23.5v36l-9-27 9-9zm-36 36h36l-27-9-9 9zm9-9l27 9-18-18-9 9zm9-9l18 18-9-27-9 9zm-18 9v9l9-9h-9zm18-9h-9v9l9-9zm9-9h-9v9l9-9zm9-9h-9v9l9-9zm-27 18l-9 9h9v-9zm9-9l-9 9h9v-9zm9-9l-9 9h9v-9z' fill-opacity='0' stroke='%23fff'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.324' y1='74.184' x2='58.871' y2='87.731' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill='url(%23d)'/%3E%3Cpath d='M45.2 1l27.1 26.7H45.2V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-rtf { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='2.953' x2='36' y2='100.95' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M11.6 91.1V71.3h8.5c2.1 0 3.7.2 4.7.5 1 .4 1.7 1 2.3 1.9.6.9.9 2 .9 3.1 0 1.5-.4 2.7-1.3 3.7s-2.2 1.6-4 1.8c.9.5 1.6 1.1 2.2 1.7.6.6 1.3 1.7 2.3 3.2l2.4 3.9h-4.8l-2.9-4.3c-1-1.5-1.8-2.5-2.1-2.9s-.8-.7-1.2-.8c-.4-.1-1.1-.2-2-.2h-.8v8.3h-4.2zm4-11.4h3c1.9 0 3.2-.1 3.6-.2.5-.2.9-.4 1.1-.8.3-.4.4-.9.4-1.5 0-.7-.2-1.2-.5-1.6-.4-.4-.9-.7-1.5-.8-.3 0-1.3-.1-3-.1h-3.2v5zm20.7 11.4V74.6h-5.9v-3.4h15.9v3.4h-5.9v16.5h-4.1zm12.6 0V71.3h13.7v3.4H53v4.7h8.4v3.4H53v8.4h-4.1z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='11.84' y1='66.245' x2='60.452' y2='66.245' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 33.7h48.6v4.1H11.8v-4.1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='11.84' y1='42.191' x2='60.452' y2='42.191' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 57.8h48.6v4.1H11.8v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='11.84' y1='53.931' x2='60.452' y2='53.931' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 46h48.6v4.1H11.8V46z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='11.84' y1='78.42' x2='60.452' y2='78.42' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 21.6h48.6v4.1H11.8v-4.1z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.068' y1='74.155' x2='58.568' y2='87.655' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23f)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-sass { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.95'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='21.45' y1='61.55' x2='21.45' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M14.4 44.1v-4.9c1-.1 1.8-.2 2.3-.5.5-.2.9-.7 1.3-1.2.4-.6.6-1.3.8-2.2.1-.7.2-1.8.2-3.4 0-2.7.1-4.5.4-5.6.2-1 .7-1.9 1.3-2.5s1.6-1.1 2.8-1.5c.8-.2 2.1-.4 3.9-.4h1.1v4.9c-1.5 0-2.5.1-2.9.3-.4.2-.7.4-1 .8-.2.3-.3.9-.3 1.8s-.1 2.5-.2 4.9c-.1 1.4-.2 2.5-.5 3.4-.3.8-.7 1.5-1.1 2.1-.4.5-1.1 1.1-2 1.7.8.5 1.5 1 2 1.6s.9 1.4 1.2 2.3.5 2.1.5 3.6c.1 2.3.1 3.7.1 4.4 0 .9.1 1.5.3 1.9.2.4.6.6 1 .8.4.2 1.4.3 2.9.3v4.9h-1.1c-1.8 0-3.3-.1-4.2-.4-1-.3-1.8-.8-2.5-1.5s-1.1-1.5-1.4-2.5c-.2-1-.3-2.6-.3-4.8 0-2.5-.1-4.2-.3-4.9-.3-1.1-.8-1.9-1.4-2.4-.7-.6-1.6-1-2.9-1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='51.7' y1='61.45' x2='51.7' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M58.7 44.1c-1 .1-1.8.2-2.3.5-.5.2-.9.7-1.3 1.2-.4.6-.6 1.3-.8 2.2-.1.7-.2 1.8-.2 3.4 0 2.7-.1 4.5-.4 5.6-.2 1.1-.7 1.9-1.3 2.5-.6.6-1.6 1.1-2.8 1.5-.8.2-2.1.4-3.9.4h-1.1v-4.9c1.5 0 2.4-.1 2.9-.3s.8-.5 1-.8c.2-.3.3-.9.3-1.8 0-.8.1-2.4.2-4.8.1-1.4.3-2.6.6-3.4.3-.9.7-1.6 1.2-2.2s1.1-1.1 1.9-1.6c-1-.7-1.8-1.3-2.2-1.9-.6-.9-1.1-2.1-1.3-3.4-.2-1-.3-3.1-.3-6.3 0-1-.1-1.7-.3-2.1-.2-.3-.5-.6-.9-.8-.4-.2-1.4-.3-3-.3V22h1.1c1.8 0 3.3.1 4.2.4 1 .3 1.8.8 2.5 1.5s1.1 1.5 1.4 2.5c.2 1 .4 2.6.4 4.8 0 2.5.1 4.1.3 4.9.3 1.1.8 1.9 1.4 2.3.6.5 1.6.7 2.8.8l-.1 4.9z' fill='url(%23c)'/%3E%3C/g%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23d)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M5.7 86.2l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8s-2.2.6-3.6.6c-2.1 0-3.7-.5-4.8-1.4s-1.8-2.4-2-4.2zm31 5.3h-3.6l-1.4-3.7h-6.6l-1.4 3.7h-3.5L26.6 75h3.5l6.6 16.5zM30.6 85l-2.3-6.1-2.2 6.1h4.5zm7 1.2l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.1-1-1.8-2.4-2-4.2zm15.4 0l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.2-1-1.8-2.4-2-4.2z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-scss { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='97' x2='36' y2='-1' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cg opacity='.95'%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='21.45' y1='61.55' x2='21.45' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M14.4 44.1v-4.9c1-.1 1.8-.2 2.3-.5.5-.2.9-.7 1.3-1.2.4-.6.6-1.3.8-2.2.1-.7.2-1.8.2-3.4 0-2.7.1-4.5.4-5.6.2-1 .7-1.9 1.3-2.5s1.6-1.1 2.8-1.5c.8-.2 2.1-.4 3.9-.4h1.1v4.9c-1.5 0-2.5.1-2.9.3-.4.2-.7.4-1 .8-.2.3-.3.9-.3 1.8s-.1 2.5-.2 4.9c-.1 1.4-.2 2.5-.5 3.4-.3.8-.7 1.5-1.1 2.1-.4.5-1.1 1.1-2 1.7.8.5 1.5 1 2 1.6s.9 1.4 1.2 2.3.5 2.1.5 3.6c.1 2.3.1 3.7.1 4.4 0 .9.1 1.5.3 1.9.2.4.6.6 1 .8.4.2 1.4.3 2.9.3v4.9h-1.1c-1.8 0-3.3-.1-4.2-.4-1-.3-1.8-.8-2.5-1.5s-1.1-1.5-1.4-2.5c-.2-1-.3-2.6-.3-4.8 0-2.5-.1-4.2-.3-4.9-.3-1.1-.8-1.9-1.4-2.4-.7-.6-1.6-1-2.9-1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='51.7' y1='61.45' x2='51.7' y2='21.95'%3E%3Cstop offset='0' stop-color='%23adccdc'/%3E%3Cstop offset='1' stop-color='%234c6c7b'/%3E%3C/linearGradient%3E%3Cpath d='M58.7 44.1c-1 .1-1.8.2-2.3.5-.5.2-.9.7-1.3 1.2-.4.6-.6 1.3-.8 2.2-.1.7-.2 1.8-.2 3.4 0 2.7-.1 4.5-.4 5.6-.2 1.1-.7 1.9-1.3 2.5-.6.6-1.6 1.1-2.8 1.5-.8.2-2.1.4-3.9.4h-1.1v-4.9c1.5 0 2.4-.1 2.9-.3s.8-.5 1-.8c.2-.3.3-.9.3-1.8 0-.8.1-2.4.2-4.8.1-1.4.3-2.6.6-3.4.3-.9.7-1.6 1.2-2.2s1.1-1.1 1.9-1.6c-1-.7-1.8-1.3-2.2-1.9-.6-.9-1.1-2.1-1.3-3.4-.2-1-.3-3.1-.3-6.3 0-1-.1-1.7-.3-2.1-.2-.3-.5-.6-.9-.8-.4-.2-1.4-.3-3-.3V22h1.1c1.8 0 3.3.1 4.2.4 1 .3 1.8.8 2.5 1.5s1.1 1.5 1.4 2.5c.2 1 .4 2.6.4 4.8 0 2.5.1 4.1.3 4.9.3 1.1.8 1.9 1.4 2.3.6.5 1.6.7 2.8.8l-.1 4.9z' fill='url(%23c)'/%3E%3C/g%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='45.037' y1='25.813' x2='58.537' y2='12.313' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23d)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3Cpath d='M5.7 86.2l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8s-2.2.6-3.6.6c-2.1 0-3.7-.5-4.8-1.4s-1.8-2.4-2-4.2zm26.7-.7l3.2 1c-.5 1.8-1.3 3.1-2.5 4-1.1.9-2.6 1.3-4.4 1.3-2.2 0-4-.7-5.4-2.2-1.4-1.5-2.1-3.5-2.1-6.1 0-2.7.7-4.9 2.1-6.4 1.4-1.5 3.3-2.3 5.6-2.3 2 0 3.6.6 4.9 1.8.7.7 1.3 1.7 1.7 3l-3.3.8c-.2-.9-.6-1.5-1.2-2s-1.4-.7-2.3-.7c-1.2 0-2.2.4-3 1.3-.8.9-1.1 2.3-1.1 4.3 0 2.1.4 3.6 1.1 4.4s1.7 1.3 2.9 1.3c.9 0 1.6-.3 2.3-.8.7-.6 1.2-1.5 1.5-2.7zm5.2.7l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.1-1-1.8-2.4-2-4.2zm15.4 0l3.2-.3c.2 1.1.6 1.9 1.2 2.4s1.4.8 2.4.8c1.1 0 1.9-.2 2.4-.7.5-.5.8-1 .8-1.6 0-.4-.1-.7-.3-1-.2-.3-.6-.5-1.2-.7-.4-.1-1.3-.4-2.7-.7-1.8-.4-3-1-3.8-1.6-1-.9-1.5-2-1.5-3.3 0-.8.2-1.6.7-2.4.5-.7 1.2-1.3 2.1-1.7.9-.4 2-.6 3.2-.6 2.1 0 3.6.5 4.7 1.4 1 .9 1.6 2.1 1.6 3.6l-3.3.1c-.1-.8-.4-1.5-.9-1.8-.5-.4-1.2-.6-2.1-.6-1 0-1.7.2-2.3.6-.4.3-.5.6-.5 1s.2.7.5 1c.4.4 1.4.7 3.1 1.1 1.6.4 2.8.8 3.6 1.2.8.4 1.4 1 1.8 1.7.4.7.7 1.6.7 2.6 0 .9-.3 1.8-.8 2.7-.5.8-1.3 1.4-2.2 1.8-1 .4-2.2.6-3.6.6-2.1 0-3.7-.5-4.8-1.4-1.2-1-1.8-2.4-2-4.2z' fill='%234c6c7b'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-sql { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st3%7Bfill:%23f2f2f2%7D%3C/style%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36' y1='2.953' x2='36' y2='100.95' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M8.7 84.7l3.9-.4c.2 1.3.7 2.3 1.4 2.9.7.6 1.7.9 2.9.9 1.3 0 2.3-.3 2.9-.8.7-.5 1-1.2 1-1.9 0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.5 2.5-2s2.4-.7 3.9-.7c2.5 0 4.4.5 5.7 1.6 1.3 1.1 1.9 2.5 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4 1.7 1.2 2.2 2 .8 1.9.8 3.2c0 1.1-.3 2.2-1 3.2-.6 1-1.5 1.7-2.7 2.2-1.2.5-2.6.7-4.4.7-2.5 0-4.5-.6-5.8-1.7-1.3-1-2.1-2.7-2.3-4.9zm35.8 3.9c1 .7 2.1 1.3 3.2 1.7l-1.5 2.8c-.6-.2-1.2-.4-1.8-.7-.1-.1-1-.6-2.7-1.8-1.3.6-2.8.9-4.4.9-3.1 0-5.5-.9-7.2-2.7-1.7-1.8-2.6-4.3-2.6-7.6 0-3.2.9-5.8 2.6-7.6s4.1-2.7 7.1-2.7 5.3.9 7.1 2.7c1.7 1.8 2.6 4.3 2.6 7.6 0 1.7-.2 3.2-.7 4.5-.3 1-.9 2-1.7 2.9zm-3.3-2.3c.5-.6.9-1.3 1.2-2.2s.4-1.8.4-3c0-2.3-.5-4-1.5-5.1-1-1.1-2.4-1.7-4-1.7-1.7 0-3 .6-4 1.7s-1.5 2.8-1.5 5.1.5 4.1 1.5 5.2c1 1.2 2.3 1.7 3.9 1.7.6 0 1.1-.1 1.7-.3-.8-.5-1.7-.9-2.5-1.2l1.1-2.3c1.2.6 2.5 1.2 3.7 2.1zm9 4.8V71.4h4v16.3h10.1V91H50.2z' fill='%234c6c7b'/%3E%3Cpath class='st3' d='M54 48.1c0 2.5-8.1 4.5-18 4.5s-18-2-18-4.5 8.1-4.5 18-4.5 18 2 18 4.5z'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='28.972' y1='47.222' x2='43.028' y2='61.278' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.212' stop-color='%23b4ccd8'/%3E%3Cstop offset='.639' stop-color='%237da0b1'/%3E%3Cstop offset='1' stop-color='%234f7a8d'/%3E%3C/linearGradient%3E%3Cpath d='M49.5 47.8c0 2.2-6 3.9-13.5 3.9S22.5 50 22.5 47.8s6-3.9 13.5-3.9 13.5 1.7 13.5 3.9z' fill='url(%23SVGID_2_)'/%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='18' y1='45.9' x2='54' y2='45.9' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.212' stop-color='%23b4ccd8'/%3E%3Cstop offset='.639' stop-color='%237da0b1'/%3E%3Cstop offset='1' stop-color='%234f7a8d'/%3E%3C/linearGradient%3E%3Cpath d='M18 48.3v11.2S22.5 64 36 64s18-4.5 18-4.5V48.3s-2.2 3.9-18 4.2c-15.8.3-18-4.2-18-4.2z' fill='url(%23SVGID_3_)'/%3E%3Cpath class='st3' d='M54 32.3c0 2.5-8.1 4.5-18 4.5s-18-2-18-4.5 8.1-4.5 18-4.5 18 2 18 4.5z'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='28.954' y1='63.004' x2='43.01' y2='77.06' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.212' stop-color='%23b4ccd8'/%3E%3Cstop offset='.639' stop-color='%237da0b1'/%3E%3Cstop offset='1' stop-color='%234f7a8d'/%3E%3C/linearGradient%3E%3Cpath d='M49.5 31.9c0 2.2-6 3.9-13.5 3.9s-13.5-1.7-13.5-3.9S28.5 28 36 28c7.5.1 13.5 1.8 13.5 3.9z' fill='url(%23SVGID_4_)'/%3E%3ClinearGradient id='SVGID_5_' gradientUnits='userSpaceOnUse' x1='18' y1='61.6' x2='54' y2='61.6' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.212' stop-color='%23b4ccd8'/%3E%3Cstop offset='.639' stop-color='%237da0b1'/%3E%3Cstop offset='1' stop-color='%234f7a8d'/%3E%3C/linearGradient%3E%3Cpath d='M18 32.6v11.2s4.5 4.5 18 4.5 18-4.5 18-4.5V32.6s-2.2 3.9-18 4.2c-15.8.3-18-4.2-18-4.2z' fill='url(%23SVGID_5_)'/%3E%3Cpath d='M54 16.6c0 2.5-8.1 4.5-18 4.5s-18-2-18-4.5 8.1-4.5 18-4.5 18 2 18 4.5z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_6_' gradientUnits='userSpaceOnUse' x1='28.972' y1='78.722' x2='43.028' y2='92.778' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.265' stop-color='%23b5ccd8'/%3E%3Cstop offset='.798' stop-color='%237fa0b1'/%3E%3Cstop offset='1' stop-color='%236a8fa1'/%3E%3C/linearGradient%3E%3Cpath d='M49.5 16.3c0 2.2-6 3.9-13.5 3.9s-13.5-1.7-13.5-3.9 6-3.9 13.5-3.9 13.5 1.7 13.5 3.9z' fill='url(%23SVGID_6_)'/%3E%3ClinearGradient id='SVGID_7_' gradientUnits='userSpaceOnUse' x1='18' y1='77.4' x2='54' y2='77.4' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23ccdde7'/%3E%3Cstop offset='.265' stop-color='%23b5ccd8'/%3E%3Cstop offset='.798' stop-color='%237fa0b1'/%3E%3Cstop offset='1' stop-color='%236a8fa1'/%3E%3C/linearGradient%3E%3Cpath d='M18 16.8V28s4.5 4.5 18 4.5S54 28 54 28V16.8s-2.2 3.9-18 4.2c-15.8.3-18-4.2-18-4.2z' fill='url(%23SVGID_7_)'/%3E%3ClinearGradient id='SVGID_8_' gradientUnits='userSpaceOnUse' x1='45.068' y1='74.155' x2='58.568' y2='87.655' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23SVGID_8_)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-tga { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M13.3 91.1V74.6H7.4v-3.4h15.9v3.4h-5.9v16.5h-4.1zm21.9-7.3v-3.3h8.7v7.9c-.8.8-2.1 1.5-3.7 2.1s-3.2.9-4.9.9c-2.1 0-3.9-.4-5.5-1.3s-2.7-2.1-3.5-3.7c-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.1-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.5 1.4 1 2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.7-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 4.9c0 2.4.5 4.1 1.6 5.3 1.1 1.2 2.4 1.8 4.1 1.8.8 0 1.7-.2 2.5-.5s1.6-.7 2.2-1.2v-2.5h-4.4zm30.4 7.3h-4.4l-1.7-4.5h-8l-1.6 4.5h-4.3l7.8-19.8h4.3l7.9 19.8zm-7.4-7.9l-2.8-7.4-2.7 7.4h5.5z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-tgz { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.98%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36' y1='2.88' x2='36' y2='101.125' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23efc402'/%3E%3Cstop offset='.038' stop-color='%23f1c829'/%3E%3Cstop offset='.147' stop-color='%23f4d264'/%3E%3Cstop offset='.258' stop-color='%23f7dc8b'/%3E%3Cstop offset='.372' stop-color='%23f9e5ac'/%3E%3Cstop offset='.488' stop-color='%23fbecc7'/%3E%3Cstop offset='.606' stop-color='%23fcf3dd'/%3E%3Cstop offset='.728' stop-color='%23fef9ee'/%3E%3Cstop offset='.856' stop-color='%23fffdf9'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M44.9.9l26.8 26.8v71.5H.2V.9h44.7z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M44.9.9l26.8 26.8v71.5H.2V.9h44.7z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M14.7 92.2V75.6H8.8v-3.4h15.8v3.4h-5.9v16.5h-4zm21.7-7.3v-3.4h8.7v7.9c-.8.8-2.1 1.5-3.7 2.2-1.6.6-3.2.9-4.9.9-2.1 0-3.9-.4-5.4-1.3s-2.7-2.1-3.5-3.7c-.8-1.6-1.2-3.4-1.2-5.3 0-2.1.4-3.9 1.3-5.5s2.1-2.8 3.8-3.7c1.3-.7 2.9-1 4.8-1 2.5 0 4.4.5 5.8 1.6 1.4 1 2.3 2.5 2.7 4.3l-4 .7c-.3-1-.8-1.7-1.6-2.3-.8-.6-1.7-.8-2.9-.8-1.8 0-3.2.6-4.2 1.7s-1.6 2.8-1.6 5c0 2.4.5 4.1 1.6 5.3 1 1.2 2.4 1.8 4.1 1.8.8 0 1.7-.2 2.5-.5s1.6-.7 2.2-1.2v-2.5h-4.5zm10.7 7.3v-3.6l10.5-12.9h-9.3v-3.4h14.6v3.1l-11 13.4h11.3v3.4H47.1z' fill='%23a07802'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='44.942' y1='74.326' x2='58.348' y2='87.733' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23fff'/%3E%3Cstop offset='.234' stop-color='%23fffefb'/%3E%3Cstop offset='.369' stop-color='%23fefaf1'/%3E%3Cstop offset='.481' stop-color='%23fdf5e4'/%3E%3Cstop offset='.579' stop-color='%23fcf0d2'/%3E%3Cstop offset='.669' stop-color='%23fae9bc'/%3E%3Cstop offset='.752' stop-color='%23f9e2a2'/%3E%3Cstop offset='.831' stop-color='%23f7da83'/%3E%3Cstop offset='.905' stop-color='%23f4d15d'/%3E%3Cstop offset='.975' stop-color='%23f1c827'/%3E%3Cstop offset='1' stop-color='%23efc402'/%3E%3C/linearGradient%3E%3Cpath d='M44.9.9l26.8 26.8H44.9V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M44.9.9l26.8 26.8H44.9V.9z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='33.617' y1='40.689' x2='33.617' y2='98.148' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3Cpath d='M38 15.8h-8.4v-5H38v5zm0 8.9h-8.4v5H38v-5zm0-20.8h-8.4v5H38v-5zm0 13.8h-8.4v5H38v-5zm0 13.9h-8.4v5H38v-5zm.7 24.6c0 2.8-2.3 5.1-5.1 5.1s-5.1-2.3-5.1-5.1v-.5l1.7-14.6c0-1.9 1.5-3.4 3.4-3.4 1.8 0 3.3 1.5 3.4 3.3l1.6 14.4c.1.4.1.6.1.8zm-1.6-.1c0-1.9-1.6-3.5-3.5-3.5s-3.5 1.6-3.5 3.5 1.6 3.5 3.5 3.5c2-.1 3.5-1.7 3.5-3.5z' opacity='.98' fill='url(%23SVGID_3_)'/%3E%3Cpath d='M32.5 41.6l-2.3-4.5v-2.3l2.3-2.2h2.2l2.3 2.2v2.3l-2.3 4.5h-2.2z' fill='%23fff' opacity='.98'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-tiff { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='3.005' x2='36.2' y2='101' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23006b69'/%3E%3Cstop offset='.124' stop-color='%2300807f'/%3E%3Cstop offset='.262' stop-color='%23009393'/%3E%3Cstop offset='.41' stop-color='%2300a3a3'/%3E%3Cstop offset='.571' stop-color='%2300b0af'/%3E%3Cstop offset='.752' stop-color='%2308b8b7'/%3E%3Cstop offset='1' stop-color='%2314bbbb'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l26.9 26.7V99H.3V1h44.9z' fill-opacity='0' stroke='%23006e6c' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M18 91.1V78h-4.7v-2.7h12.6V78h-4.7v13.1H18zm9.9 0V75.3h3.2V91h-3.2zm6.2 0V75.3H45V78h-7.7v3.7H44v2.7h-6.6v6.7h-3.3zm13.6 0V75.3h10.9V78h-7.7v3.7h6.6v2.7h-6.6v6.7h-3.2z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='45.214' y1='74.229' x2='58.667' y2='87.682' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23d6ede8'/%3E%3Cstop offset='.297' stop-color='%23d3ebe6'/%3E%3Cstop offset='.44' stop-color='%23c7e3df'/%3E%3Cstop offset='.551' stop-color='%23b7d8d5'/%3E%3Cstop offset='.645' stop-color='%23a0cbc9'/%3E%3Cstop offset='.729' stop-color='%2384bab9'/%3E%3Cstop offset='.804' stop-color='%2362a7a7'/%3E%3Cstop offset='.874' stop-color='%23349394'/%3E%3Cstop offset='.938' stop-color='%23007f7f'/%3E%3Cstop offset='.998' stop-color='%23006b6a'/%3E%3Cstop offset='1' stop-color='%23006b69'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2 1l26.9 26.7H45.2V1z' fill-opacity='0' stroke='%23006e6c' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='36.25' y1='37.353' x2='36.25' y2='85.161' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23008281'/%3E%3Cstop offset='.343' stop-color='%23006a69'/%3E%3Cstop offset='1' stop-color='%23003836'/%3E%3C/linearGradient%3E%3Cpath d='M62.7 56.8c-1.6-.8-4.6-6.6-9.2-7-4-.3-9.1-1.8-11.9-2-3.5-5.8-9.5-15-14.5-19.9l13.8.7C37.2 19.8 27.7 23 27.7 23l6.4-5.3c-8.2-3.3-11.6 4.7-11.6 4.7-8.5-4.7-12.9 3.3-12.9 3.3l8.8.6C8.4 29.1 11.2 39 11.2 39l8.9-8c-1.9 4.4 2.3 7.5 2.3 7.5L25 27.7s9.3 10.6 12.2 21.4c-3.7 1.9-9.5 5-14 5.6-6.2.8-13.5 5-13.5 5v4.9h53.1l-.1-7.8z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-txt { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='2.953' x2='36' y2='100.95' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M16.1 91.1V74.6h-5.9v-3.4h15.9v3.4h-5.9v16.5h-4.1zm10.5 0l6.8-10.4-6.2-9.5H32l4 6.4 3.9-6.4h4.7l-6.2 9.6L45.2 91h-4.9l-4.4-6.9-4.5 6.9h-4.8zm25.3 0V74.6H46v-3.4h15.9v3.4H56v16.5h-4.1z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='11.84' y1='66.245' x2='60.452' y2='66.245' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 33.7h48.6v4.1H11.8v-4.1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='11.84' y1='42.191' x2='60.452' y2='42.191' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 57.8h48.6v4.1H11.8v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='11.84' y1='53.931' x2='60.452' y2='53.931' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 46h48.6v4.1H11.8V46z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='11.84' y1='78.42' x2='60.452' y2='78.42' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M11.8 21.6h48.6v4.1H11.8v-4.1z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.068' y1='74.155' x2='58.568' y2='87.655' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23f)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-wav { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle%3E.st0%7Bopacity:.99%7D%3C/style%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.15' y1='2.887' x2='36.15' y2='101.126' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.012' stop-color='%235b5794'/%3E%3Cstop offset='.182' stop-color='%237b77aa'/%3E%3Cstop offset='.352' stop-color='%239896bf'/%3E%3Cstop offset='.521' stop-color='%23b2b2d2'/%3E%3Cstop offset='.687' stop-color='%23c7c9e2'/%3E%3Cstop offset='.848' stop-color='%23d6d9ec'/%3E%3Cstop offset='1' stop-color='%23dbdff0'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2.9l27.1 26.8v71.4H0V.9h45.2z' fill-opacity='0' stroke='%232d3293' stroke-width='2'/%3E%3C/g%3E%3Cpath d='M10.3 91.2L5.5 71.3h4.2l3 13.7 3.7-13.7h4.8l3.5 13.9 3.1-13.9h4.1L27 91.2h-4.3l-4-14.9-4 14.9h-4.4zm40.2 0h-4.4l-1.8-4.5h-8l-1.7 4.5h-4.3l7.8-19.9h4.3l8.1 19.9zM43 83.3l-2.8-7.4-2.7 7.4H43zm12.7 7.9l-7.2-19.9h4.4L58 86l4.9-14.7h4.3L60 91.2h-4.3z' fill='%23fff'/%3E%3Cg class='st0'%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='58.321' y1='87.273' x2='50.783' y2='78.839' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23595593'/%3E%3Cstop offset='.07' stop-color='%23706ca2'/%3E%3Cstop offset='.159' stop-color='%238988b5'/%3E%3Cstop offset='.255' stop-color='%23a3a5c8'/%3E%3Cstop offset='.359' stop-color='%23babfd9'/%3E%3Cstop offset='.471' stop-color='%23ced5e7'/%3E%3Cstop offset='.598' stop-color='%23dee6f2'/%3E%3Cstop offset='.751' stop-color='%23e9f3fa'/%3E%3Cstop offset='1' stop-color='%23ecf8fe'/%3E%3C/linearGradient%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill='url(%23SVGID_2_)'/%3E%3Cpath d='M45.2.9l27.1 26.8H45.2V.9z' fill-opacity='0' stroke='%232d3293' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/g%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='14.776' y1='56.174' x2='57.726' y2='56.174' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23352c7f'/%3E%3Cstop offset='.074' stop-color='%233e3786'/%3E%3Cstop offset='.266' stop-color='%23544f96'/%3E%3Cstop offset='.457' stop-color='%236763a5'/%3E%3Cstop offset='.645' stop-color='%237572b1'/%3E%3Cstop offset='.827' stop-color='%237e7cba'/%3E%3Cstop offset='1' stop-color='%238180bd'/%3E%3C/linearGradient%3E%3Cpath d='M14.8 39.3h6.5l13-10v33l-13-10h-6.5v-13zm26.1 10.2v2.9c.1 0 1.6 0 3.2-.8s3.4-2.7 3.4-5.8c0-3.1-1.7-5-3.4-5.8-1.6-.8-3.1-.8-3.2-.8v2.9h.1c.4 0 1.4.2 2.1.7.8.5 1.4 1.2 1.4 3 0 2-.8 2.6-1.8 3.2-.5.2-1 .4-1.3.4-.2 0-.3 0-.4.1h-.1zm0 5.1v2.9c.1 0 2.8 0 5.8-1.4 2.9-1.4 6-4.6 5.9-10.1.1-5.6-3-8.7-5.9-10.1-2.9-1.4-5.6-1.4-5.8-1.4v2.9h.3c.8.1 3.1.4 4.9 1.6 1.9 1.2 3.5 3.1 3.5 7.1 0 4.6-2.1 6.5-4.3 7.5-1.1.6-2.2.8-3.1 1-.4.1-.8.1-1 .1-.2-.1-.3-.1-.3-.1zm0 5v2.9c.1 0 4.1 0 8.3-2.1 4.2-2 8.5-6.5 8.5-14.6.1-8.1-4.3-12.6-8.5-14.6-4.2-2.1-8.2-2.1-8.3-2.1V32h.6c1.3.1 4.8.6 7.7 2.5 2.9 1.9 5.5 5.1 5.6 11.3-.1 7-3.4 10.2-6.9 12-1.7.9-3.5 1.3-4.9 1.5-.7.1-1.2.2-1.6.2-.3.1-.5.1-.5.1zm0-27.5z' opacity='.99' fill='url(%23SVGID_3_)'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-wmv { + background-image: url("data:image/svg+xml,%0A%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M9.1 91.1L4.7 72.5h3.9l2.8 12.8 3.4-12.8h4.5l3.3 13 2.9-13h3.8l-4.6 18.6h-4L17 77.2l-3.7 13.9H9.1zm22.1 0V72.5h5.7l3.4 12.7 3.4-12.7h5.7v18.6h-3.5V76.4l-3.7 14.7h-3.7l-3.7-14.7v14.7h-3.6zm26.7 0l-6.7-18.6h4.1l4.8 13.8 4.6-13.8h4L62 91.1h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-xls { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='.765' x2='36' y2='99.265' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%2351842a'/%3E%3Cstop offset='.102' stop-color='%23609631'/%3E%3Cstop offset='.222' stop-color='%236da737'/%3E%3Cstop offset='.355' stop-color='%2377b33b'/%3E%3Cstop offset='.506' stop-color='%237ebb3e'/%3E%3Cstop offset='.69' stop-color='%2383c140'/%3E%3Cstop offset='1' stop-color='%2385c441'/%3E%3C/linearGradient%3E%3Cpath d='M45 .7l27 26.9v71.6H0V.7h45z' fill='url(%23a)'/%3E%3Cpath d='M45 .7l27 26.9v71.6H0V.7h45z' fill-opacity='0' stroke='%23528228' stroke-width='2'/%3E%3Cpath d='M8.4 91.3l6.8-10.4L9 71.4h4.7l4 6.4 3.9-6.4h4.7L20.2 81 27 91.3h-4.9l-4.4-6.9-4.5 6.9H8.4zm20.8 0V71.5h4v16.4h10.1v3.4H29.2zm16-6.5l3.9-.4c.2 1.3.7 2.3 1.4 2.9.7.6 1.7.9 2.9.9 1.3 0 2.3-.3 2.9-.8s1-1.2 1-1.9c0-.5-.1-.9-.4-1.2-.3-.3-.8-.6-1.5-.9-.5-.2-1.6-.5-3.2-.9-2.2-.5-3.7-1.2-4.6-2-1.2-1.1-1.8-2.4-1.8-4 0-1 .3-2 .9-2.8.6-.9 1.4-1.6 2.5-2 1.1-.5 2.4-.7 3.9-.7 2.5 0 4.4.5 5.7 1.6s1.9 2.6 2 4.4l-4 .2c-.2-1-.5-1.8-1.1-2.2-.6-.4-1.4-.7-2.6-.7-1.2 0-2.1.2-2.8.7-.4.3-.6.7-.6 1.2s.2.9.6 1.2c.5.4 1.8.9 3.7 1.3s3.4.9 4.4 1.4 1.7 1.2 2.2 2c.5.9.8 1.9.8 3.2 0 1.1-.3 2.2-1 3.2s-1.5 1.7-2.7 2.2-2.6.7-4.4.7c-2.5 0-4.5-.6-5.8-1.7s-2-2.7-2.3-4.9z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='16.371' y1='37.002' x2='55.488' y2='76.117' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23619530'/%3E%3Cstop offset='.267' stop-color='%2360942f'/%3E%3Cstop offset='.443' stop-color='%235b8e2d'/%3E%3Cstop offset='.594' stop-color='%23538429'/%3E%3Cstop offset='.731' stop-color='%23487723'/%3E%3Cstop offset='.858' stop-color='%233a671b'/%3E%3Cstop offset='.976' stop-color='%2329520f'/%3E%3Cstop offset='1' stop-color='%23244d0b'/%3E%3C/linearGradient%3E%3Cpath d='M57.8 61.4H35.2v-2c2.2-.1 3.5-.3 4.2-.6.6-.3.9-.6.9-1 0-.2-.1-.6-.3-1.1s-.5-1.1-.9-1.7c-.6-1-1.4-2.3-2.4-3.8s-2.1-3.1-3.2-4.8c-3.6 4.2-6 7-6.9 8.4-1 1.4-1.5 2.3-1.5 2.8 0 .2 0 .4.1.6.1.2.3.3.6.5.2.1.7.3 1.3.4.6.1 1.3.2 2.1.3v2H14.8v-2c.7-.1 1.3-.1 1.8-.2.4-.1.9-.2 1.3-.4 1-.5 1.9-1.1 2.7-1.8.8-.7 1.6-1.6 2.4-2.5 1.2-1.4 2.6-2.9 4.1-4.7 1.5-1.7 3.1-3.6 4.8-5.6-1.6-2.4-3.2-4.8-4.8-7-1.6-2.3-3-4.2-4.1-5.8-.6-.8-1.2-1.6-2.1-2.4-.8-.8-1.7-1.4-2.6-1.7-.5-.2-1-.4-1.5-.5-.6-.1-1.2-.2-2-.3v-2h22.6v2c-1.8.1-3.1.2-3.9.5-.8.2-1.3.6-1.3 1.1 0 .2.1.6.2.9.2.4.5 1 1 1.8.4.7 1.1 1.7 1.9 3 .9 1.3 1.9 2.9 3 4.6 3.3-3.9 5.3-6.5 6.2-7.6.8-1.2 1.3-2 1.3-2.4 0-.5-.2-.9-.7-1.1-.5-.3-1.6-.5-3.4-.6v-2h14.4v2c-.7 0-1.2.1-1.6.2-.4.1-.9.3-1.5.5-1.1.5-2 1.1-2.7 1.8-.7.7-1.5 1.5-2.4 2.5-1.3 1.4-2.5 2.8-3.7 4.2-1.2 1.3-2.6 3-4.3 4.9 2.1 3.2 3.9 5.8 5.4 7.9 1.5 2.1 2.9 4.1 4.3 6 .5.8 1.2 1.6 2 2.4.8.8 1.7 1.4 2.6 1.7.4.2.9.3 1.4.4.5.1 1.3.2 2.1.3l.1 1.9z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.034' y1='72.367' x2='58.534' y2='85.867' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23f2f5d5'/%3E%3Cstop offset='.312' stop-color='%23f0f4d2'/%3E%3Cstop offset='.458' stop-color='%23e8eeca'/%3E%3Cstop offset='.569' stop-color='%23dde7bd'/%3E%3Cstop offset='.663' stop-color='%23cfddad'/%3E%3Cstop offset='.745' stop-color='%23bed298'/%3E%3Cstop offset='.82' stop-color='%23a9c481'/%3E%3Cstop offset='.889' stop-color='%2391b566'/%3E%3Cstop offset='.951' stop-color='%2378a647'/%3E%3Cstop offset='1' stop-color='%23619932'/%3E%3C/linearGradient%3E%3Cpath d='M45 .7l27 26.9H45V.7z' fill='url(%23c)'/%3E%3Cpath d='M45 .7l27 26.9H45V.7z' fill-opacity='0' stroke='%23528228' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-xlsx { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='.75' x2='36' y2='99.25' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%2351842a'/%3E%3Cstop offset='.102' stop-color='%23609631'/%3E%3Cstop offset='.222' stop-color='%236da737'/%3E%3Cstop offset='.355' stop-color='%2377b33b'/%3E%3Cstop offset='.506' stop-color='%237ebb3e'/%3E%3Cstop offset='.69' stop-color='%2383c140'/%3E%3Cstop offset='1' stop-color='%2385c441'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill='url(%23a)'/%3E%3Cpath d='M45 .8l27 26.9v71.6H0V.8h45z' fill-opacity='0' stroke='%23528228' stroke-width='2'/%3E%3Cpath d='M7.3 91.3l5.4-8.2-4.9-7.5h3.7l3.2 5 3.1-5h3.7l-4.9 7.6 5.4 8.1h-3.8l-3.5-5.4-3.5 5.4H7.3zm16.3 0V75.7h3.2v12.9h7.9v2.6H23.6zm12.6-5.1l3.1-.3c.2 1 .6 1.8 1.1 2.3.6.5 1.3.7 2.3.7 1 0 1.8-.2 2.3-.6s.8-.9.8-1.5c0-.4-.1-.7-.3-.9s-.6-.5-1.1-.7c-.4-.1-1.2-.4-2.5-.7-1.7-.4-2.9-.9-3.6-1.6-1-.9-1.5-1.9-1.5-3.2 0-.8.2-1.5.7-2.2.5-.7 1.1-1.2 2-1.6.9-.4 1.9-.5 3.1-.5 2 0 3.5.4 4.5 1.3s1.5 2 1.6 3.5l-3.2.1c-.1-.8-.4-1.4-.9-1.7-.4-.4-1.1-.5-2-.5-.9 0-1.6.2-2.2.6-.3.2-.5.6-.5 1s.2.7.5 1c.4.3 1.4.7 2.9 1 1.5.4 2.7.7 3.4 1.1.7.4 1.3.9 1.7 1.6.4.7.6 1.5.6 2.5 0 .9-.3 1.7-.8 2.5-.5.6-1.2 1.2-2.1 1.6-.9.4-2.1.6-3.4.6-2 0-3.5-.5-4.6-1.4-1.1-.9-1.7-2.3-1.9-4zm13.9 5.1l5.4-8.2-4.9-7.5h3.7l3.2 5 3.1-5h3.7l-4.9 7.6 5.4 8.1H61l-3.5-5.4-3.5 5.4h-3.9z' fill='%23fff'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='16.371' y1='36.987' x2='55.488' y2='76.103' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23619530'/%3E%3Cstop offset='.267' stop-color='%2360942f'/%3E%3Cstop offset='.443' stop-color='%235b8e2d'/%3E%3Cstop offset='.594' stop-color='%23538429'/%3E%3Cstop offset='.731' stop-color='%23487723'/%3E%3Cstop offset='.858' stop-color='%233a671b'/%3E%3Cstop offset='.976' stop-color='%2329520f'/%3E%3Cstop offset='1' stop-color='%23244d0b'/%3E%3C/linearGradient%3E%3Cpath d='M57.8 61.4H35.2v-2c2.2-.1 3.5-.3 4.2-.6.6-.3.9-.6.9-1 0-.2-.1-.6-.3-1.1-.2-.5-.5-1.1-.9-1.7-.6-1-1.4-2.3-2.4-3.8s-2.1-3.1-3.2-4.8c-3.6 4.2-6 7-6.9 8.4-1 1.4-1.5 2.3-1.5 2.8 0 .2 0 .4.1.6.1.2.3.3.6.5.2.1.7.3 1.3.4.6.1 1.3.2 2.1.3v2H14.8v-2c.7-.1 1.3-.1 1.8-.2.4-.1.9-.2 1.3-.4 1-.5 1.9-1.1 2.7-1.8s1.6-1.6 2.4-2.5c1.2-1.4 2.6-2.9 4.1-4.7 1.5-1.7 3.1-3.6 4.8-5.6-1.6-2.4-3.2-4.8-4.8-7-1.6-2.3-3-4.2-4.1-5.8-.6-.8-1.2-1.6-2.1-2.4-.8-.8-1.7-1.4-2.6-1.7-.5-.2-1-.4-1.5-.5-.6-.1-1.2-.2-2-.3v-2h22.6v2c-1.8.1-3.1.2-3.9.5-.8.2-1.3.6-1.3 1.1 0 .2.1.6.2.9.2.4.5 1 1 1.8.4.7 1.1 1.7 1.9 3 .9 1.3 1.9 2.9 3 4.6 3.3-3.9 5.3-6.5 6.2-7.6.8-1.2 1.3-2 1.3-2.4 0-.5-.2-.9-.7-1.1-.5-.3-1.6-.5-3.4-.6v-2h14.4v2c-.7 0-1.2.1-1.6.2-.4.1-.9.3-1.5.5-1.1.5-2 1.1-2.7 1.8-.7.7-1.5 1.5-2.4 2.5-1.3 1.4-2.5 2.8-3.7 4.2-1.2 1.3-2.6 3-4.3 4.9 2.1 3.2 3.9 5.8 5.4 7.9 1.5 2.1 2.9 4.1 4.3 6 .5.8 1.2 1.6 2 2.4.8.8 1.7 1.4 2.6 1.7.4.2.9.3 1.4.4.5.1 1.3.2 2.1.3v1.9h.1z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='45.034' y1='72.352' x2='58.534' y2='85.852' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23f2f5d5'/%3E%3Cstop offset='.312' stop-color='%23f0f4d2'/%3E%3Cstop offset='.458' stop-color='%23e8eeca'/%3E%3Cstop offset='.569' stop-color='%23dde7bd'/%3E%3Cstop offset='.663' stop-color='%23cfddad'/%3E%3Cstop offset='.745' stop-color='%23bed298'/%3E%3Cstop offset='.82' stop-color='%23a9c481'/%3E%3Cstop offset='.889' stop-color='%2391b566'/%3E%3Cstop offset='.951' stop-color='%2378a647'/%3E%3Cstop offset='1' stop-color='%23619932'/%3E%3C/linearGradient%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill='url(%23c)'/%3E%3Cpath d='M45 .8l27 26.9H45V.8z' fill-opacity='0' stroke='%23528228' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-xml { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M14.1 91.1v-8.4L6.8 71.2h4.7l4.7 7.8 4.6-7.8h4.6l-7.3 11.5V91h-4zm13.3 0V71.2h6L37 84.7l3.6-13.5h6V91H43V75.4L39 91h-3.9l-4-15.6V91h-3.7zm23.4 0V71.4h4v16.3h10V91h-14z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='13.15' y1='22' x2='54.15' y2='22' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 22h41v4h-41v-4z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='19.15' y1='33.75' x2='60.15' y2='33.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 33.7h41v4.1h-41v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='13.15' y1='45.75' x2='54.15' y2='45.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 45.7h41v4.1h-41v-4.1z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='19.15' y1='58' x2='60.15' y2='58' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 58h41v4h-41v-4z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23f)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-yml { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36.108' y1='3.003' x2='36.108' y2='101.001' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23c8d4db'/%3E%3Cstop offset='.139' stop-color='%23d8e1e6'/%3E%3Cstop offset='.359' stop-color='%23ebf0f3'/%3E%3Cstop offset='.617' stop-color='%23f9fafb'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill='url(%23a)'/%3E%3Cpath d='M45.1 1L72 27.7V99H.2V1h44.9z' fill-opacity='0' stroke='%237191a1' stroke-width='2'/%3E%3Cpath d='M14.1 91.1v-8.4L6.8 71.2h4.7l4.7 7.8 4.6-7.8h4.6l-7.3 11.5V91h-4zm13.3 0V71.2h6L37 84.7l3.6-13.5h6V91H43V75.4L39 91h-3.9l-4-15.6V91h-3.7zm23.4 0V71.4h4v16.3h10V91h-14z' fill='%234c6c7b'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='13.15' y1='22' x2='54.15' y2='22' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 22h41v4h-41v-4z' fill='url(%23b)'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='19.15' y1='33.75' x2='60.15' y2='33.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 33.7h41v4.1h-41v-4.1z' fill='url(%23c)'/%3E%3ClinearGradient id='d' gradientUnits='userSpaceOnUse' x1='13.15' y1='45.75' x2='54.15' y2='45.75' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M13.1 45.7h41v4.1h-41v-4.1z' fill='url(%23d)'/%3E%3ClinearGradient id='e' gradientUnits='userSpaceOnUse' x1='19.15' y1='58' x2='60.15' y2='58' gradientTransform='translate(0 2)'%3E%3Cstop offset='0' stop-color='%237291a1'/%3E%3Cstop offset='1' stop-color='%23cad5db'/%3E%3C/linearGradient%3E%3Cpath d='M19.1 58h41v4h-41v-4z' fill='url(%23e)'/%3E%3ClinearGradient id='f' gradientUnits='userSpaceOnUse' x1='45.122' y1='74.229' x2='58.575' y2='87.683' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.35' stop-color='%23fafbfb'/%3E%3Cstop offset='.532' stop-color='%23edf1f4'/%3E%3Cstop offset='.675' stop-color='%23dde5e9'/%3E%3Cstop offset='.799' stop-color='%23c7d3da'/%3E%3Cstop offset='.908' stop-color='%23adbdc7'/%3E%3Cstop offset='1' stop-color='%2392a5b0'/%3E%3C/linearGradient%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill='url(%23f)'/%3E%3Cpath d='M45.1 1L72 27.7H45.1V1z' fill-opacity='0' stroke='%237191a1' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} + +.ipfs-zip { + background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='36' y1='.994' x2='36' y2='99.001' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='0' stop-color='%23efc402'/%3E%3Cstop offset='.038' stop-color='%23f1c829'/%3E%3Cstop offset='.147' stop-color='%23f4d264'/%3E%3Cstop offset='.258' stop-color='%23f7dc8b'/%3E%3Cstop offset='.372' stop-color='%23f9e5ac'/%3E%3Cstop offset='.488' stop-color='%23fbecc7'/%3E%3Cstop offset='.606' stop-color='%23fcf3dd'/%3E%3Cstop offset='.728' stop-color='%23fef9ee'/%3E%3Cstop offset='.856' stop-color='%23fffdf9'/%3E%3Cstop offset='1' stop-color='%23fff'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill='url(%23a)'/%3E%3Cpath d='M45 1l27 26.7V99H0V1h45z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2'/%3E%3Cpath d='M14.4 92.1v-3.6l10.5-12.9h-9.3v-3.4h14.7v3.1l-11 13.4h11.4V92H14.4zm18.7 0V72.2h4V92h-4zm7.9 0V72.2h6.5c2.5 0 4.1.1 4.8.3 1.1.3 2.1.9 2.9 1.9s1.2 2.3 1.2 3.9c0 1.2-.2 2.2-.7 3.1s-1 1.5-1.7 2-1.4.8-2.1.9c-1 .2-2.4.3-4.2.3h-2.6v7.5H41zm4.1-16.5v5.6h2.2c1.6 0 2.7-.1 3.2-.3s1-.5 1.3-1 .5-1 .5-1.5c0-.7-.2-1.3-.6-1.8-.4-.5-1-.8-1.6-.9-.5-.1-1.5-.1-2.9-.1h-2.1z' fill='%23a07802'/%3E%3ClinearGradient id='b' gradientUnits='userSpaceOnUse' x1='45.068' y1='72.204' x2='58.568' y2='85.704' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23fff'/%3E%3Cstop offset='.234' stop-color='%23fffefb'/%3E%3Cstop offset='.369' stop-color='%23fefaf1'/%3E%3Cstop offset='.481' stop-color='%23fdf5e4'/%3E%3Cstop offset='.579' stop-color='%23fcf0d2'/%3E%3Cstop offset='.669' stop-color='%23fae9bc'/%3E%3Cstop offset='.752' stop-color='%23f9e2a2'/%3E%3Cstop offset='.831' stop-color='%23f7da83'/%3E%3Cstop offset='.905' stop-color='%23f4d15d'/%3E%3Cstop offset='.975' stop-color='%23f1c827'/%3E%3Cstop offset='1' stop-color='%23efc402'/%3E%3C/linearGradient%3E%3Cpath d='M45 1l27 26.7H45V1z' fill='url(%23b)'/%3E%3Cpath d='M45 1l27 26.7H45V1z' fill-opacity='0' stroke='%23ba9c02' stroke-width='2' stroke-linejoin='bevel'/%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='33.6' y1='38.712' x2='33.6' y2='96.031' gradientTransform='matrix(1 0 0 -1 0 100)'%3E%3Cstop offset='.005' stop-color='%23a47d03'/%3E%3Cstop offset='.533' stop-color='%23debe00'/%3E%3Cstop offset='.639' stop-color='%23cfad04'/%3E%3Cstop offset='1' stop-color='%23a07802'/%3E%3C/linearGradient%3E%3Cpath d='M38 15.8h-8.5v-4.9H38v4.9zm0 9h-8.5v4.9H38v-4.9zM38 4h-8.5v4.9H38V4zm0 13.8h-8.5v4.9H38v-4.9zm0 13.9h-8.5v4.9H38v-4.9zm.7 24.5c0 2.8-2.3 5-5.1 5s-5.1-2.3-5.1-5v-.5l1.7-14.6c0-1.9 1.5-3.4 3.4-3.4 1.8 0 3.3 1.5 3.4 3.3l1.6 14.4c.1.3.1.5.1.8zm-1.6-.2c0-1.9-1.6-3.5-3.5-3.5s-3.5 1.6-3.5 3.5 1.6 3.5 3.5 3.5c2 0 3.5-1.6 3.5-3.5z' fill='url(%23c)'/%3E%3Cpath d='M32.5 41.6l-2.3-4.5v-2.3l2.3-2.2h2.2l2.3 2.2v2.3l-2.3 4.5h-2.2z' fill='%23fff'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-size: contain; +} diff --git a/gateway/assets/icons.go b/gateway/assets/icons.go new file mode 100644 index 000000000..8b3928a85 --- /dev/null +++ b/gateway/assets/icons.go @@ -0,0 +1,68 @@ +package assets + +var KnownIcons = map[string]bool{ + ".aac": true, + ".ai": true, + ".aiff": true, + ".avi": true, + ".bmp": true, + ".c": true, + ".cpp": true, + ".css": true, + ".dat": true, + ".dmg": true, + ".doc": true, + ".docx": true, + ".dotx": true, + ".dwg": true, + ".dxf": true, + ".eps": true, + ".exe": true, + ".flv": true, + ".gif": true, + ".h": true, + ".hpp": true, + ".html": true, + ".ics": true, + ".iso": true, + ".java": true, + ".jpg": true, + ".jpeg": true, + ".js": true, + ".key": true, + ".less": true, + ".mid": true, + ".mkv": true, + ".mov": true, + ".mp3": true, + ".mp4": true, + ".mpg": true, + ".odf": true, + ".ods": true, + ".odt": true, + ".ott": true, + ".pdf": true, + ".php": true, + ".png": true, + ".ppt": true, + ".psd": true, + ".py": true, + ".qt": true, + ".rar": true, + ".rb": true, + ".rtf": true, + ".sass": true, + ".scss": true, + ".sql": true, + ".tga": true, + ".tgz": true, + ".tiff": true, + ".txt": true, + ".wav": true, + ".wmv": true, + ".xls": true, + ".xlsx": true, + ".xml": true, + ".yml": true, + ".zip": true, +} diff --git a/gateway/assets/knownIcons.txt b/gateway/assets/knownIcons.txt deleted file mode 100644 index c110530ea..000000000 --- a/gateway/assets/knownIcons.txt +++ /dev/null @@ -1,65 +0,0 @@ -.aac -.aiff -.ai -.avi -.bmp -.c -.cpp -.css -.dat -.dmg -.doc -.dotx -.dwg -.dxf -.eps -.exe -.flv -.gif -.h -.hpp -.html -.ics -.iso -.java -.jpg -.jpeg -.js -.key -.less -.mid -.mkv -.mov -.mp3 -.mp4 -.mpg -.odf -.ods -.odt -.otp -.ots -.ott -.pdf -.php -.png -.ppt -.psd -.py -.qt -.rar -.rb -.rtf -.sass -.scss -.sql -.tga -.tgz -.tiff -.txt -.wav -.wmv -.xls -.xlsx -.xml -.yml -.zip diff --git a/gateway/assets/src/dag-index.html b/gateway/assets/src/dag-index.html deleted file mode 100644 index 7a42ef6be..000000000 --- a/gateway/assets/src/dag-index.html +++ /dev/null @@ -1,66 +0,0 @@ - -{{ $root := . }} - - - - - - - - - - - - - - - - - - - -{{ .Path }} - - - -
-
-

CID: {{.CID}}
- Codec: {{.CodecName}} ({{.CodecHex}})

-
-
- - - - - - - -
-

Preview as JSON
(application/json)

-
-

Or download as: -

-

-
-
-
- - diff --git a/gateway/assets/src/directory-index.html b/gateway/assets/src/directory-index.html deleted file mode 100644 index 109c7afbf..000000000 --- a/gateway/assets/src/directory-index.html +++ /dev/null @@ -1,98 +0,0 @@ - -{{ $root := . }} - - - - - - - - - - - - - - - - - - - -{{ .Path }} - - - -
-
-
- - Index of - {{ range .Breadcrumbs -}} - /{{ if .Path }}{{ .Name }}{{ else }}{{ .Name }}{{ end }} - {{- else }} - {{ .Path }} - {{ end }} - - {{ if .Hash }} -
- {{ .Hash }} -
- {{ end }} -
- {{ if .Size }} -
-  {{ .Size }} -
- {{ end }} -
-
- - {{ if .BackLink }} - - - - - - - {{ end }} - {{ range .Listing }} - - - - - - - {{ end }} -
-
 
-
- .. -
-
 
-
- {{ .Name }} - - {{ if .Hash }} - - {{ .ShortHash }} - - {{ end }} - {{ .Size }}
-
-
- - diff --git a/gateway/assets/src/icons.css b/gateway/assets/src/icons.css deleted file mode 100644 index dcdbd3cd9..000000000 --- a/gateway/assets/src/icons.css +++ /dev/null @@ -1,403 +0,0 @@ -/* Source - fileicons.org */ - -.ipfs-_blank { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWBJREFUeNqEUj1LxEAQnd1MVA4lyIEWx6UIKEGUExGsbC3tLfwJ/hT/g7VlCnubqxXBwg/Q4hQP/LhKL5nZuBsvuGfW5MGyuzM7jzdvVuR5DgYnZ+f99ai7Vt5t9K9unu4HLweI3qWYxI6PDosdy0fhcntxO44CcOBzPA7mfEyuHwf7ntQk4jcnywOxIlfxOCNYaLVgb6cXbkTdhJXq2SIlNMC0xIqhHczDbi8OVzpLSUa0WebRfmigLHqj1EcPZnwf7gbDIrYVRyEinurj6jTBHyI7pqVrFQqEbt6TEmZ9v1NRAJNC1xTYxIQh/MmRUlmFQE3qWOW1nqB2TWk1/3tgJV0waVvkFIEeZbHq4ElyKzAmEXOx6gnEVJuWBzmkRJBRPYGZBDsVaOlpSgVJE2yVaAe/0kx/3azBRO0VsbMFZE3CDSZKweZfYIVg+DZ6v7h9GDVOwZPw/PoxKu/fAgwALbDAXf7DdQkAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-_page { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmhJREFUeNpsUztv01AYPfdhOy/XTZ80VV1VoCqlA2zQqUgwMEErWBALv4GJDfEDmOEHsFTqVCTExAiiSI2QEKJKESVFFBWo04TESRzfy2c7LY/kLtf2d8+555zvM9NaI1ora5svby9OnbUEBxgDlIKiWjXQeLy19/X17sEtcPY2rtHS96/Hu0RvXXLz+cUzM87zShsI29DpHCYt4E6Box4IZzTnbDx7V74GjhOSfwgE0H2638K9h08A3iHGVbjTw7g6YmAyw/BgecHNGGJjvfQhIfmfIFDAXJpjuugi7djIFVI4P0plctgJQ0xnFe5eOO02OwEp2VkhSCnC8WOCdqgwnzFx4/IyppwRVN+XYXsecqZA1pB48ekAnw9/4GZx3L04N/GoTwEjX4cNH5vlPfjtAIYp8cWrQutxrC5Mod3VsXVTMFSqtaE+gl9dhaUxE2tXZiF7nYiiatJ3v5s8R/1yOCNLOuwjkELiTbmC9dJHpIaGASsDkoFQGJQwHWMcHWJYOmUj1OjvQotuytt5nHMLEGkCyx6QU384jwkUAd2sxJbS/QShZtg/8rHzzQOzSaFhxQrA6YgQMQHojCUlgnCAAvKFBoXXaHfArSCZDE0gyWJgFIKmvUFKO4MUNIk2a4+hODtDUVuJ/J732AKS6ZtImdTyAQQB3bZN8l9t75IFh0JMUdVKsohsUPqRgnka0tYgggYpCHkKGTsHI5NOMojB4iTICCepvX53AIEfQta1iUCmoTiBmdEri2RgddKFhuJoqb/af/yw/d3zTNM6UkaOfis62aUgddAbnz+rXuPY+Vnzjt9/CzAAbmLjCrfBiRgAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-aac { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnhJREFUeNp0Uk1PE0EYftruVlvAUkhVEPoBcsEoLRJBY01MPHjCs3cvogcT/4qJJN5NvHhoohcOnPw4YEGIkCh+oLGBKm3Z7nZ3dme2vjOhTcjiJJvZzPvOM8/HG2q325Dr3kLp7Y1ibpIxjs4KhQBZfvV6s7K5Vb0bjeof5ZlcGysP1a51mifODybvzE8mzCbrAoTDIThMoGXZiZ4YSiurf+Z1XeuCqJ7Oj+sK3jQcNAmg8xkGQ71mYejcAB49vpmeuzJccl0+dUj6KIAvfHCPg3N+uAv4vg9BOxcCmfEzuP/genpmeqhEMgude10Jwm+DuUIyUdTlqu2byoMfX/dRermBeExHsTiWNi3+lMpzRwDki8zxCIATmzbevfmClukiP5NFhJgwkjeRTeLShdOoVJqnAgwkgCAZ6+UdLC9twjQZ8pdzioFkZBHY3q6B3l4dJEEEPOCeD4cYVH7Xsf15F+FImC775INAJBJSkVoWo0QY9YqgiR4ZZzRaGBkdwK3bFxGLRZUfB3Rm2x4x9CGtsUxH9QYkKICDFuLxKAozGZwdTqBRs2FbLlXbiPdECMCHadj/AaDXZNFqedCIvnRcS4UpRo7+hC5zUmw8Ope9wUFinvpmZ7NKt2RTmB4hKZo6n8qP4Oq1HBkKlVYAQBrUlziB0XQSif4YmQhksgNIJk9iaLhPaV9b/Um+uJSCdzyDbGZQRSkvjo+n4JNxubGUSsCj+ZCpODYjkGMAND2k7exUsfhkCd+29yguB88Wl7FW/o6tT7/gcXqAgGv7hhx1LWBireHVn79YP6ChQ3njb/eFlfWqGqT3H3ZlGIhGI2i2UO/U/wkwAAmoalcxlNA1AAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ai { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAk5JREFUeNpsU01vElEUPTPzZqBAQaSFQiJYUmlKYhoTF41L3Tbu/Q/+AvsX3Bp/gPsuWLrqyqQ7TUxMtAvF1tYGoXwNw7wv7zwYgtKX3Lw379575p5z77O01ohW+/DVh8zj7aYKhflGdG9ZsGwLNydffgVfr19YHvsEa+Zu/nxndob5StQK+dyzvZzyw/gKlmMj7IygFM+xvNcanp4/t5dAomXHBy2UUBOO2MAl/B9/cPb6PULuoHx0WM0e3GvpUOxD3wZAJWutZqYUYmqpSg5OMgH3YQObL59W0/ullpryR3HegkKEqiWBSGV4R3vQ7sIhScTZFTpHx3A215B5sluVY/WWMg7+ATB/lcLsKpTonHzD+OMFEuTz8ikkt9Kwt9YJZB38cpBdoQAZJdLvCGByfoPB6Xdk90pYy6Xg3c/DaWwArg09DaG5lCsUFN0pckZAojdC8m4auBqaALuSgez7VB1RtDSUWOQvUaBLFUzJBMJ2DwmPgd1Jwm0WoSgJfjDvrTKxtwAIyEkAOQ5hU//Zdg5uowDlUNMnwZLW0sSuUuACYhwQRwFvJxupCjEYUUccOkoaKmdOlZnY1TkgAcXAhxhOwLsDsHoN3u4O5JTDfVCH6I9nfjId3gIgSUATFJk/hVevGtOMwS0XwQ3AzB/FrlKg8Q27I2javVoZrFgwD4qVipAEyMlnaFArzaj/D0DiMXlJAFQyK2r8fnMMRZp4lQ1MaSL5tU/1kqAkMCh2tYI+7+kh70cjPbr4bEZ51jZr8TJnB9PJXpz3V4ABAPOQVJn2Q60GAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-aiff { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAohJREFUeNpkU9tqE1EUXZmZpE3aTBLbJFPTtFURtSCthr7UCyKKFJ/9An3og6Ag/oXfoUj7og9asCBYKT6UIPHaWtpq7NU2aZK5z5wZ9xxMpMwZDuewz9prr32ZiO/7CNaDx3OLt6fOjBqGg/aKRCIInp8+KzfKH7fudnVF58nE16el+/yU2mBFSWZKpWJKVc0OgUBo02K4NDmU6o75Mx+Wdu9IUXFeiOA/pn1xHeYaugVDdzpbp91qGlAKGTx8dC19/Wpxhjnsxj/RRwk85hGJC9d1O6fneWAuoztDYSSLe9OT6SuXB2ccx73Z9uukwDwfls1g0xZIY/Ad/Gnyt/XVfbyYrSDRE8PExHB6/8B6QuaxIwRBFMt0iIAiMx+LCys8jfGJEUik2WpZOD2SQf9oDtVqQwopCAiY66FS/om3b75CVS2MlU7AJ2WiJBCZjZ2dJuRkDJZFwFAR7UCBja3fNfxY2YEoCtRCj9em3Tpds6FpJseGCBxS0GgYGBzqw62p84gnYnAI2CSbSbPhEpFAaE2zODaUAlWWwDoS5DheGqbWpVE/0CmqCY9qkEyINBceb2uADRNQ8bSWAVVzIFKomCQim+0luS4yKYlsHlRyZo7EsSEC23K5vAsXh/H92zZkuRvxeBS5nEx2yp2KqhxPoV5TYS/8CtdApylM9sZQKKSQzyeRTseRV2QoAzIYY8jme5DN9fI0dQoUIjANGydP9VM7PZw9p/AiBpNYrdbw/t0yTJqRtdU9UrfJCUMpSJIgbWzsYe51BcViHzLHeqCRqhZ1YX1tFwNfZBxS9O3NWkAcHqR606k/n/3coKAoV/Y7vQ/OYCZevlrmv3c0GsFh06u3/f4KMABvSWfDHmbK2gAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-avi { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAm1JREFUeNpsU8tu00AUPXZcN0nzTpq2KQ3pAwkIAnWHqCoeexBb+AQ+ABZ8A2s+AIkdm266QUJIFWKBkHg1KpRHi5omJGkbJ3bGHj+4M1EQrTvSyGPPueeec++1EgQBxHp+/9mbyuriRZdxjJaiKBD3W+u1+p9a856max+gDO8ebT+WT20Ezi9NZi/crqadvn2MQBAGfpCOpqNru2937vxPIpY6Onjccx3Twck9MBiSU0ncfHirXFmZX3Md9wqCUwiEVN/zaQfHt0vfbBe5uQyuPVgpl5Zn11ybL4/i/lkICOw5niQRGQShoiqI6Bo43W2ub8n3hRtLZT7gTynk6gkCX9gAOxpAnxhHZDwC1/aI1EViJolu/QhKRMHZ1UX0Gr1USIEn5FPWHy+/wTokkrQOq2vBaHZBN4hmY9Jwfr4An/teiEB45ZZDwDiMhoExT0N+sYDCuUkkplLIlXP4/XEXdo+RUhdhBSSfUwtVTUG8MIHK9QVqI7D/uY6vr2pwmCPrkz+Tk9gwARWQ9WxppbXZhNnpw+ya4A5HZi6L4lIR8WyCcL6sTZiAWjWgAmpxkn5+kqTamK6WkCwmERmLDLvjB0ML9ikWXPLFuozYOap3L8HYN6DHdbS/d5CeTVBndBz87FCBLYkNTyIjBQemnIEsSY5lYrK1+UoWcToLMjEHAyIQ2BCBSx/NVh+ZUhrqmEqBebS3WyhdLg0zt/ugAaIklsSGLHCLa6zDMGhZ2HjyGsnpFPqNHnY2fmHv3R5SMymYbROszSQ2ROAY9qHiofvlxSc5xsKKqqnY3diRE9h4X5d/pzg7lnM4ivsrwADe9Wg/CQJgFAAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-bmp { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmZJREFUeNp0U+1rUlEY/13v9YV0vq2wttI5CdpL9aEGBZUDv0df668I6n+or0UQ/RuuD0EgVDAZrsKF4AR1a6COKW5qXvXec27PuVeda3bgcF6e8/ye5/d7niMZhgExnK9fbTrm5pbBGMZDkgCyq+VyhTUaT6Eo2ZHJePPWXJXRhez3B1yxmM/QdctXUSCgtV4Py4CvY3cky4e1x5DlLCaGbbzjXDcousG5OQe5HPRSCQPK4PpsEM/XH4WvhS4noeu3JwHGGRiULhsMoKZS4I0GtEIB9mgULJGA0+9DPBpBT7sffvf1W/Lg6OgJufw8C0CRGEXWazUwiiyFQjA8bsjVKjaJzovMD/Q5gxyJhG2cvyeXe2cAuADQNGBmBvLaGuTFRaDfh31lBTWi9pumjbK0B4JQul3vOQpM8JdskOLrdCvDcDjAsjtg5TIkoiKLaokMNR2cnZbqNAMycqG7XbHKR2fMzwO/dsxSwu0BiBJsNsv2LwAJAJCI5ux2gXYbqNetcz5PoORI1cDS0n8AxGW7A+zvEYBKZ2ZlcsEtJLbedMjePBaCTQMghx45ulyWkzxMVUQ2RMQhLfFO16YAqCrixPnm6iqKrRb2W23EfF4cUNSrHg90cr7hDyB33MTnSmUKALVs4uIlROjxg+AsPhGVl3fuIl2tIOB0Ya91gkOi9mxhAal0ekork1ic/kGLBORMxy2K1qS9V1ZQbNThIj2EGh+2tsyOnSai8r1UxMNIBB+LRTTULr4Uds0K1tU/uOLxIrmbNz8XXSrnASSpubG9fbKRyVh1n/zSw29t9oC1b47MfwUYAAUsLiWr4QUJAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-c { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcxJREFUeNqEUk1rE0EYfmZnkgoJCaGNCehuJTalhJZSUZB66a0HwXsP/Qn+FM+9+hty0LNYCr2I7UVLIW0Fc0hpQpSS7O7MrO9MspuvVV8YMnk/nn2e5x0WRRFMvP/w6WSz5jbi/9NxfP693Wp3DrJCnMW5d28P7a+IE15lufR8o1ZEStwPhkWHsWbrZ+eNEPxsuubEF6m0TBv2Q4liPofXuzveulttSqW2UwH+GjqC0horpSL2njU89+FyMwjlTlxOJMTa9ZQHzDQIjgwdom9zLzfXPc75kbnOAswBJTlC2XrqQRMLxhi442DgB4UFBhgPpm3B5pgBHNUUxQKAHs8pHf3TEuFMetM9IKr/i2mWMwC0SnuSFTG2YKyppwKYVdGO7TFhzBqGIenVeLCUtfURgErucx5ECKREKBU4d3B718PHz6cICGT/1Qs8qpQtGOdyhtGEARWDQFqQJSeDL98u4VbLaKw9IRAJPwjtoJGlVAoDQ800+fRFTTYXcjlcXN2g++s36p5Lzzlve1iEROa8BGH1EbrSAeqrjxEqicHQt8/YSDHMpaNs7wJAp9vvfb287idboAVkRAa5fBYXP9rxO4Mgf0xvPPdHgAEA8OoGd40i1j0AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-cpp { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfJJREFUeNqEUs9PE0EU/mZ2WgqpXX+QIDFdalVslh8NlAOQaOKFAwfvHvwT/FM8e/U/MOnBmwcj8WD0ACEGghIkbU0baaEthe3OTJ0ZWV26q37JZt68ee/b9733yGAwgMbL12/fz+azbnAPY2Nrt7Zfqz9JMrYZ+J4/e2pOFjiciRvXlgp5GzHonXk2o6S8V6k/TjBrM/xGA4MLyeOSPZ8jkx7D+uqCU3Amy1yIYizB36AlCSkwfjWDR4uu40yMl/s+XwjeWThQQ4Z6QNSnSkYykcDXasP4lmfvOZTSF9q8TDBEFPbN5bOqCglCCCxK0TvvZyIV4CIxbgpC+4gm/PUmFCIE8iJPyME/e8Lon9j4HvyHYLjKSwRCSEUgf9+15mFbx8QS6CZJMzJ9SlBCwX3fJDLG4PX7ykcwkmQmJtpEhWa7g1dvNlSwjwelebz7tAXLolh0p/Fxe9fErK2WDFGEgKjxfNjegX0lDTc/heNuF99/HGEslcKXwyoazWNDdlCr6+DoJgrBzdI0T9rYO6yg2zszMlaKM3Dv5OBzbuyZuzm1B16U4Nzz2f3cFOx0Gq12F9cztpExncsqYoaHpSIKtx0zJdVIFpHQ6py29muNk1uTN829o/6SHEnh80HFaE6NjmLnWxUJy1LyTltB3k8BBgBeEeQTiWRskAAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-css { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAk1JREFUeNpsUktvUlEQ/u5DoCLl/RAKKKUvWmIxjYntQtcu3LvwJ/hTXLt16coFC2PsojEaMKZtCqFaTdGmjbS0CG3By+vei3OOBSGXSU7uzNyZ78z3zRF6vR6YvXzzPrMUCyf68bB9zO+VfpROn5hkOdfPPX/2lH/lfiLidztX5mN2jLGG0rKLENIE8liWpdzwP7HvqJqujmvudFU4bFY8Wk1FZsOBtKppd8YCDNu77CZevd3gflfTUFcUhP0ePLibiIR9rjSBpgwAfe4dVcV6dhtep4PH5msylGYLrzeybErcT85FYiH/CyPAf74gObC2vMhzsiRhPhpC6eQUM+EA1pJzILEnjRSuJsju7MJqsUCSRei6Dp3yXqcdGlHZ/rLPazQWGCn8+6YW4pAkEW0SjzUzanWlCa/LgcR0lNfovTEi6lcIkzesnM/R8RlN0INGp3h4DHoDsE5YRvQyiKiRSMzikRAOS2WoqoZWu41K7RwzlOOAVDMMMHhIGvFlRxJFrKYW0ep0IYgC3SDh4b1lTJjNfENsrazOAMAw680mPuW+8lFno1P4XDigRhOiwQAyJK7TbsNS/PaA7giAIAhYz2yRgBIfsVA8wIetPG6FAqhdNrC5u0f+TUyHgyMTDDToEt/ftQsEvW4EPG5OZcrvw0mlimarTXkPfpXPcNlQoGtjACgpryQXsPNtH/nvRXqBJpoKHMzGNkNB0Odls7LNyAYKpUq1dt1iuvB7fRDp9kr9D1xOFwkpoksXusmXaZWFn0coV89r/b6/AgwAkUENaQaRxswAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-dat { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfVJREFUeNqMU01PE1EUPe/Na0uptmlASg3MoiZgCA3hQ8PHAjbqwsS9C3+CP8W1W/+BSReyYUPwI4QAVkAgUEgIbVIg1FZb2pl5b3zv2cHBjsaTTOa+e989OffcGeK6LhTevFv+OJoZHPHOfrz/sl86KpWfhxnLe7lXL1/oN/MSZqonOXU/k0AA6lfNhEFIrlAsP2PMyPtr1AscLpyg5pbtIHErhqez4+awmc45nI8FEvwNaiQuBHqTcSxMjJhmX0/Osp1xr878FxWEzwMinxAzEA4xFIpnOjedHTKpYbxW4U2CP4j8uWxmUKsghMCgFI2mFe9QgHZj0Ba4yhFF+KvGJToIRLuPC/efnjD6+26wB1Lq/xgbSCBXKeWJG/OTdky8cWTdT3C9RmWSGk2XCLlWo4xTNbfN5qh7PpXM72GjZeHt0gpq9QbmH4whGb+NpU/reDQ7hcWVVXxvXOHxzCQopQEKXKEbL6o1ZIcy+LC5g62DY2zsHeC0fA4zndIrHOjvg2XbAQRSfsuy9XxC2qzi/H5B6/68W0AsGkW0KyJPBLbDO0fg3JX/CUM81i0bD6WKe6j9qOPJ3EMcF0tSNsFA6g6alqW+VtZBUL78Vtk+Oqne7U9rs5qOQCjSheJFBeFIFOfVujSUYu3rIc4uqxWv76cAAwCwbvRb3SgYxQAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-dmg { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAn9JREFUeNpsU01rE1EUPe9lkk47yWTStCmtNhFSWxos2EXVhSsRcasuxYV05V8Qf4DgD/AvCK5EV1oFI7iUBqmCNdDvppq2mWSSzEzy3vPOpFFq+uDNfR/3nnvueXeYUgrBWH1/9/NE7k5BKRnuRcfF2qdnmJq9DeF9tQ+2isuMsxXGWHh/a1mEVsPJSI5fSU3OPEj291IIlN49RXz0KqzEQjIeZS/L5Y/3wPGhDxIM/i/A7fZWgVG0t5EaG0ZUa0JGM8gvPrZmLt58QYwv91mfAqCIE0sAqgumBFITGQzpUYhuF0KfRa7waDyXXXolpVrsh/0tgSLDr5I+wUZo1UHCSkAficPzY6juFSmbRPrC/azjq+fkcO00gAqoU7B0ETKkfWbuCTjTYeq5oESAauexcTScX+ZACWFm0YQSLZKhHdr67+/wW0e0dgjYo3sCEXXybYtBDVSHLp2es3IpsILS24c42lkBg6DzRjgRzCDZ/xr0GNRJwwYiWgzt+hYMawleu0V3wbkT+kUirOc7IGJAz68R/Qak1BAlx3hqASPGBJRXpXOv58dkz3eAgQoOm4hyj57NgZm0MHvpBmK6QdUdg/DAg9cRkhicBSDaKJdeo1bdxmR2DtWDDUxl51HZ+QHTysD3XdQO95Gfv06aeGcAdBrY3Chi8lwO3768QWX7J5q1XWyVSxgajiOXLyBG2hzurRKV9lmt7ISNkkjo6HhNyjoK+2gXRsKE57ZIE2ot10Z1fz0Ue4ABVw3NMjnW14rInh8jTYywoTg3EOFpOM4mXNfH9PQUfGlrAwBOs3I8ljbtuMWhRWzIIPrkn+GcYcgIWEowbZ+0qB334/4IMADESjqbnHbH0gAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-doc { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAppJREFUeNpsU79PFEEU/mZ39vZu77g7DokcP04BBSUmiEKCSCxs7Ei00JAYO2NlTKyMrX+CJhaGwopSQ0dMtFEsbDRBgiZEQIF4IHcg+2t2Z8eZ5QDlnM1mZ9+8973vfe8NEUJArfSNhzPG0VIfeIiDRSDkw1cWVt3N8rhG6SdSO2Gvn8dfuueqZwuNZqk3Jxg7iNcIfBbgXD6ZC8u5qffzX8eoYeyDxC77uygKhcouovgVUQj1H4YB2ovNuD9+tTTU0zMVBmG/+C8AIYh8F361DL/yE5HnADKYlVdg6MDAmW7cuz5WGuw+PsWDYGAvbL8ECFUt4K7/AHd/I9c7BLaxinD2Ld5Zo7g78RLuRhlBS2cpWbGfStfhfwCEpK0nUjCbWuGsLciSOELPhkq/YgdY3l6HsLfRcLYf+pHNbH0JigEPkLAyMsiEJ7NrqQzM1i7wyhoMZqOhvQs6Z0ovXgdAJACRoulEg5HOwrOroKk0zOY2BDtVpTF0CU6kLkQJXa+BNEoG0lMSsBBKQXWNQktmoGcaYeSaQCIVWOvUYQAiWZFQtk5mSMoSzEILtBrTfEcviC5bwVwQmoh96wA0ic5dB57ngeoaTIPCdb34zDITYNLOOIeVSsW+dQC+7+NSWx6jJ4tY/rWNV7PfcGv0tBoPTM7M4eKJVgx2FTE9u4QPS6x+kHzfw/mOAjarW2hJG3hy8zIceweuY+PRtREMdzbjzcd5WBqPB6xeRGUMGRzHjWvMmxQ7tiOF1JBN6FiTd6Sy9RuFbHpX7MMMqOD088Ii+op5OUAO7jyeRGfBwrF8Cg8mXuDL4neMXzgFwhwZz+hf7a9d5yu3Z6DTPjVQIY9k7erO7Y63Lvc8ErEeyq6JaM6efjai4v4IMABI0DEPqPKkigAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-dotx { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAndJREFUeNpsU01rE1EUPTPzJk0y+WhMStW2qdVWxUVEQUF0I+4ELQiC7lz4N9z0T+hG9wrdZKUgLqulhrbSag1CKpT0g7RpYjqZmffle5NEKdMHlzfvvXvPPffcO4aUEno9f3Vt4dTp+BXOe+fB0u/NbVpv7h89NU1j1TCM8H7+xY9wJwPHZMbOjRadLAvE/2gToJTiTPx89k+OlVd/LT+0TPIPpO/SzyQk40xCMxBSZ9Z3CoAx5DOjeHT7SbE0XSpzwa8OWB9jINELolQg8AR0EgUKn1PIlIWpkUt4cPNxkTOU12trs8p95RiAXpqaztqou8q6SKQJJmZSqGwsodFsIJk1kcyLYv7IeafcLx4HUNkFF4jFTExMZ0B9DrfD4HUEusYhWs4GPEJg5wly/tBYRIOeDhpEwlS34xcyajdQr3UwOT2MlJOEBRuGNHWp9AQRVXDfQiFV/U5GBSiQ5p6ngBEa5z3fiIhC6g6IMDBwOdoHPkYnHPVyhN0tF7E4QSpr94CEOKELffq+y9Bq+DCJ7rWBoQQBVbPR2O6G4OlsLASJMtCZfQqm0NP5IVWnamdAkUxbyuIYtD7wWegb0YAzAVMkkI6NwPM9xEwHloyDGAmk7AKS9rAS0FKOdugbYeAHPu7OPEM+MY7q3hIKqTFQHmC3XcONc/fxdfMDrk/ew/edzyhvvTmBAddocVRqH3Frahau56qpZDho7+PnTgXffi/gbHYmLEvPSIQBp5JU62sYz13G609zKBXvoOMdYn2zgm7Xg2MVML/4Eu3uPgxhk2gXmNl8v/i2pcXTP8tKdTEcbWLZqDQXwu/l6pfwbEnSGsT9FWAA4mdHv2/9YJ4AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-dwg { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoFJREFUeNpsU0tPE2EUPfOg006hD4rQh8WgbCSwkKgbF2owujaCiQsXxpX+D6MmbtXEsHCLmIAbE6NLo8YlGIxREIshIqVl+mQ6j8/zFVCb4UtuZua795577rl3FCEE5Bl79vPd5LHYiOP7cH1AUWi85ytmvlas1bJ9E5ryBntH3BpuP/X9i7ovkluuiE8N9SDepaLpCcRCCqa/VDCaMuIjSWP25Upl6n+QDoCz6Yh7KKzh3sI2LuUimPtRRyaqodj0MDloYiITSTi+mH29Wu0AUf9CsZPJoW5czJl48LmCc5kIKo5Al67B9gUGYxrun+5NnMlFZ+GKiQADj2a7AquseLIvjMv5KMaSBu4sWVir+3i8VIVKYSby0UTdFU8Znu8AYBHQgVOJEN5uOXi4UsdawwU0FSf6TaSoyw6DRvukPkgGWpDKy4F8a3jImCrqFDFn6rhKPR4VGnhvOTAY3WLcjifcQAsqRfhUc/Gq1MKNbBh9nIAMDjEppocxs9HCMktfGTCwP/oOBkUKNk/qF3pDYC6Ktk8RfWzyaaoKrqdDaBDwya8W1m0/CPCR3kFy7CcnmWQRUJqcRJFUKtTnPCeR71LwoeYF92CYyVnCFZpCTrRtCv5to2St8SOrKxiPqEEA4fkYT+mI0rdoeUiH1XZVuQPpsIKqw2QmfifTsnOABiWySlH9uU0Hh2MqjsZV5LtpPSoGeN9rKnhBX7ehoOSLIIPfnGONXGMMWN7xUfVldYDbjM3mrh5HCDgS17DhHgDQcIU+XbBxnDTn1x1UuQcJ9iv7l5Q5e1zLGri92EDJFnoAgHtcfr6wbbVXUqq193+0z97n3UJt1+d51n7aHwEGAAHXJoAuZNlzAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-dxf { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAo5JREFUeNpsU0trE1EYPfNMmtdoH2kDNmJbaVFcaBVFpAsREQpFwY0bu3HjQnTj1mVd+ANcuC3qQixmry6E0kWFVIQ+bKy2tbFJm3emyXTujGca+4DkwsedfLnn3POd77uS67rw1vC79ek7fZEzpu3AYUqS9tKQGZPLpa3VXP0uFCmJ/8t9OLC3q/uJbcs5bkIybvdHoMsSbLKENRmvU2WcNnTjRFD7ML1WGSPJHI6sA4KRWMAWVDPxLYex3iCmfpuIh1QsFSyMxQO4GvXHHwOJ6XWSyIck8v6HQsnjAxFc7vTj2VwBg4aG78VdBHQFCk+dbVcxMdwev9gTSEC455sIBOu2KLsoJFzqasP9vjCeDBlYqzn4VXXwarGKZN7Crd5QfLDT/7KpBM84c9fFUFjFp2wdk6smflRsKKqMa7EgfJJ3Ac2OKlit2pEmBTQfngdpnupoU7BUtRGiiTe7fXiRqmK+KuDn6TpvYogmBRJcrOwIJLIWxmM+dOsyLKryQAaJpjJ1/AxrGO3SqdZt7kKZJrzJWBg5piHENuY8vV6e0UOye1TyftvC5l+gZB8SHJTwpSx4q4JeTUKaxhXoR57h7Rn+3iFolJ3xvPhab6HgJG/pJ7jsNP4sUX+jZiCgEsWd/DjH5IrSYpBUAr0yHpzSoXKOP25a6OBhndh0zcX1qIYM2RIbu6i0KiHD5B/GTMHG03kTGpEL7H80wHFOWwhqDZ+SpkBOtCDYJDhZE4gRcKNbYynAqbCMbXpwpVPFbEng0aKJGbYzK1p4wIegLlcEPmdt+DjXbzcsxFlCynRwwVAwW6hjqeg0Zt521SYCWCJvbe0Un29UDx7Hgrs3IEitHXkw3jOv2fl92D8BBgAJeyqBh90ENQAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-eps { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNp0U01vElEUPfMFCEVArdoSqEA0KV246UJdUJM2Lo2JK/9FjXu3utJqTNz4D9worrsQExbFpAFT0TYp0CZ8pIAiyMfMvBnvm2Foa9uX3Lw7c98979x77hNM0wRf7ufPsq7Z2SQYw2QJAkDxQalUZa3WI8hy3gmZr15bu+z8kILBkCeRCJi6bufKMji0NhwiCQR6iitdatTvQ5LyOLLEiWcYukm3m4Zhmbq1BX13FyoxuH7xAlbvpqKRK1fT0PWbRwEmDEyiy1QVg/V1GO02tO1tKLEY2PIy3KEAlmJRDLXb0TeZL+n9g4MHlLJ5HIBuYnSzXq+DlcsQLk/D9Hoh1WrIUjlPcpsYGQzS3LWoaBhvKeXWMQCDA1D9pt8PaXERUjwOjEZQFhZQp9L2yERiqYRCkPt/z58ogTGqHQLE1BLgUmC6XGD5AlipBIFKkbhanKHGYLBDqQ4ZED0OAbfLlo8OIxwGvhVgyTHlA3xkomjH/gegBgDURMv6faDbBZpN+/tHkUApkdTA/PwZAPxntwdUyjYA/+ZMqJHjLgM9iv/6zRt2GgMaIE21aVIjnSm0DGPfmhzyde0UAE2Dj+p7urKCPvkZku9eJILOSMUnkvVhIo7GYIB3xSKYdhoA1erXGVKXpvFxZwdBonnD68PQ7YEwM4O4xwMPxc8RYE87g4FIcz+kvfmnA0YzIJIy77/m0OCqsTkkCTysKPjJG3viLei63Gm3kCO6UWqcMejjxecMPmxsoFKtYop6UNirYL9Wtc5OHqzznIXHq1na7OfMJROcK8a6O7MjW7nfzZdrd7jzT4ABACh3NGsh3GcdAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-exe { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAo1JREFUeNp0k8tPE1EUxr+ZzvRJO62lUAQaKIQ0FVJFjBBdoIkrDDHuXJi4NnHtX+HCjW408Q/QmHTRaCRRohIJifgiiBICTQu29mHfnc7MHc+MlECKdxZz595zf+c737nD6boOYzxJLC6Nhwej7e/24HkO779s7G6mMjcEwfKZ21+/d+em+RbagaFev28qEpZwzKg3ZckqCPH1nfS8hScIdyhBe6JqTG3PfyTTeLrwFhvbKdy9/xi5QglXL0yGJsKDccZY7LDIAwWHpSferWBh+RN8ni4UylVER8MY6PHj0uSpUK0hxzfTmWsUtnoEwO3rer64jEyxim6/Hy67DXaHExvJX3jw7CX8XjfORUdDlOohhU4fAVjILCPbm9V1yIqK2FgYt+ZmsZcv4lH8Nb5upXD7+hVMjIRQa8qeDg8UTYPU5cTcxSk4nS709XTD53ZhpD+IYMAPj+TBz93fZiz5oHV4AP1fGdlyHZIkIZkrI7GyhnK9CZXy+Aig6p1+HQAY003AcF8AVtGGfLWG9XTO4MLZ5cL0WAixoT4zVmPHADSiMo3hzHA/xgeDWFjbNg8H3A7kKnX0koEcPdTu/ylgRGZgOjNv38zoSXC8BZJDRKOlwGEV0VJVGM0y4joAPO1spXbx6sNHeD1uRIYGUCxVSRlDt1fC8rfvcDnsmJ+dOaLgoAs6AVLZPJJ7WdhEkUyT8GJpBflSBcVKDTvpDBw2GzQqQT1OgaZqUOhtFQUTUKnVTVWNpgy51YLVKph7sqKYkA4A1ScEfT66vm5kC3+ofh6Xz59FQ5bpkvE4QW3M5Apoyorhl9ABIKnFgNdTOh2NkJG6WSf9eRBJtmFwLDJmriUzeaOkYvvcXwEGAIVNH6cDA1DkAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-flv { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmtJREFUeNpsUl1PE0EUPbssLYUCXdpaC9gWoSTgAyFigiRGY+KjvuuTr/4A44MP/gx/gMYfwIsan0RjIjGiJIZgSIGFIoXSD0t3Z3dnd70zpITazuZmJzP3nnvumaMEQQCx3jx69SV3a3KWMxetpSgKxP3m242Do43SQy2k/YRydvds67n8a63k+FRSn7l/bdg5tdsAuM3he/5weDC8vLdqPLgIIpba2niux52mg//DqlsYSg3iztO7mczN3DJ3+ByCLgCBH4hOFEF7cDpzPCRyOpaeLGXSc2PL3HbnW3XaRQCPEgWI2MsRVAVqrwbX9bHxbhOKpiJ/bzpDOr2k68V2BtRNzMtqDEqPejY/4zSGjb54BM0mQ8k4xsDoIMauXxnqYOD7PmwScP31d0SS/eAuh1lrolFpIBQNQw2pqJdqsAlIceB1AJCIkkE/FZskXDQVRXw6IYHiE0nBEcaPXSSvJnGwWkQXAE4acAhbxPMJpOdHweoMhc9b2F8zwKizbdlyPLVH7QLg+JKBYzoorxzjz3oRzUoToaEw9KyO8XQW5AE5jrFT6AbAYVVNxCZ0Ka3So+DSTAoDiej5ywTySbls1OEDobhFlMcXxrHw+AbINEjNXgb7y6BndLhk8cRkHHbD7g4gEhiJFxsdhrDqaamBaDKKerGGSKwPI9kR9EZCaNA5ubE7A5s8IFhsrxQkgJhZoa/06xC5xRz2v+3BOjFlbqcGlquxsondT9vY+2pAJdeZR6fI355CgQCN2A4O1w7gkQ7cdLUOAKdhV6uFSv3kd/n8mT68eC8dKWLnY4FsfeZQh7nVVt0/AQYAsf5g+SvepeQAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-gif { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmVJREFUeNp0U0tPE1EU/trplAqlL0laiw40xASByEJIZFGVnSvj1j+gWxNXJq7VrbrwF7h10cSNhMRHojEuACVBKmH6SJQyJeXRxzzv9dyZPiCtN5lMe8853znf953xcc4hztDzZ1+C6fQMHAfd4/MBFG+p6h/n4OAeAoGNToi/eOm+A50LKRaLh6amoty2vVpZdotNXccMEK3LwZxa2bsDSdrAqePv/mLM5tSdMwYBYqyvw9zdhUn/L59P4OGtG8qlZCoH254/DdCdQBCxqZu+ugqnWoW9swN5ehp2NotgIo6bGQWGtaS8+vQ5V9a0u5S+1gfABEilAqdUgm98HDwUQkDT8JXoPPq+BoM5kCYmFT9jryn1+hkAt7heBx8dhbSwACmTAUwTgdlZ/CVKJaLnI1GD8TikZiPSR8Gxib8chH95mZTxgwWHwH7+gFMswqcokIRbjMO2HDCnZ1VvArpjEmnKZc8+cZJJYGsLsMiZ8AgwEqaY6Mb6RQR33JFhGECzCRyfAFXNu9v+RVNRZWIMuDJNuYMAaDycUFGhCOgtuAtFVDA83G5A8TrFDw+F5QMAxAKJJxz2xnW3RPJGbm+rCyjotZetH4DGzaSSeDA3h4Zl4R0JOEZWTpIzF4n/m995bNdqZwB6m0gFft3Ak6vz+KYWwFsGlqIxXItEcDt1ARMEtKdVgZb+fwA0G2C2hXM0ZTZNRcSf0b1pmXi7uYnjI+Lfanm5fRQsK8BIxKcrK7i/uIgP+Tw+FlREqHN5fx/vyU4uHBE6UO4gDWqk/JFaLuMxcXeFk6TuJ90V0HOk1in7J8AAjmgkPfjU+isAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-h { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAbRJREFUeNqMUk1Lw0AQnf0woK0ttVqp0hwqVCl+UBERT94F7x78Cf4Uz179DT14F8WbYHtRkBYRLNqDtdaPZLObuLs1NGlXcWDJZGbey+x7QUEQgIqT07PL5WKhHL5H46J+22q22vsWpbWwdnR4oJ80LNiz2czGUjENhvj4ctIE4Wrj8XmPUlKL9nCYcOFzE9j1OKSTCdjdrtiLdr7KhVgzEvwW6krC92E6k4Kd9bJt57JV5vFK2KfRQRV+RAMkzxglYI1RaDy2dW1rpWRjQo5VGicYIorWVooFvQVCCAjG8Omw1MgG8AM0uSBUDSnCfk/IGCHwf3DCD/7UhOLBrFkDuep/hDUSSCv1iYo4rIfqGwmUSNJjfYbBcQKhZw0aBMA4B48LwBhBt/cON80HmM9NQ6fXg/Wlku4TwmNWDzaQqzHG+0PSKod5cH5Vh2RiAhYKc8DlV1UPSyuFMGygVlMg1/P6BC6DqXQK8jNZDXAYA1f21V34wMXYFaiyVw0rJyzLgs3VMkxOjGtix/V0XWChZ0cI2i/dzvXdfTd0Qf91BMPrhyNzgKfOmxaWypqaDXHfAgwAtCL8XOfF47gAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-hpp { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAehJREFUeNqEUk1v00AUHK/XKf1yZdESVRBXjRSRFqMQVBA5Ic5I3DnwE/gpnLnyG3LgXglx4UDDLZS0RWkDLiRxSusk9u6GXSembmLgWZbX7+2bnZl92mg0goo3b3ffO/ncdvyfjHef6q2Dlvs8Q2ktzr16+SL60jhhZ69bO8X8ClLC7w9XdKJVG8fuM0r1WrJG4gXjgqU1D0MGc2kBTytl+7a9XmWcl1IB/hZKEhccq5aJJ/e3bTu7Wg1CVo7rNLlRhUh4oMnXoDoyhoHGyWmUe+QUbELIa7W8CjAFlMzdzeckCwFN06ATAn8QmDMMMGlMuwWucpoCHNe4jBkAMenjYvRPTyi53JvuwX8AplleAeBcRFrH6rXIxLim9I/pi3QA1RhKaYxdjkN8IwalCMIwWs9ljMkh0wzk+9M7w179C3LZNXxve2h+c3Hu91HeKmD/6zHOLnw83ilB1/V0CeqU3Q81LC/O41b2Btx2N2JVP2riR8eTUxmi0TzBwrKZMsqMoz8MsDh/DWuWhUBKURLKxQIeOMWoptYPnS1c+INZBkwISomOSsmBZS7B+3WOzZvrKGzkMAiGqNy7g+LmRkRfekBnANy2163PZXrSbrQ6vch19Xz8fPDHyL39QzkHBKedXjfu+y3AAGU37INBJto1AAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-html { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmBJREFUeNqEUktPE1EU/mY605a+hhZTBNKRDApNrWIRA4nEBUZdmCgLNi4MK5f+FNdu3bFv1J1EXODCR1JJSMTwpqUP6NiCpe10Zjz3hj5Mm3iSybl37jnf+c53jmDbNpi9eb+6Ftcisea909bWNzNb6dwzSXKkhIt/r14+515qBqmDA8HpqKagh53XaopblpIbe+knDpFAhPab2Dw0TKvRK7lmNODzePBgZlK9oUWSpmVNdpIU8T+jaMsyMaD4MDcZVa+NhJMN00w0n6V2nN3yQgdHWZag+LzYPTomIAtT0THVtPGanmb/BbjwLFkvn2IttYGYplKyDzsHh7gdmyAWfh5zVq0Guhg4RAHFUhmfvq3j134aXo8bd+ITnMFOOovU5jbGRoZwNxFn1cxuAIcDW/sZDjA/c4u+BNxOJyxqaenpI3z88gMfPn9Hv98HQZS6RazW6kjExvFi8TGdDSy/W0Emf4LS6R8sv11BmfzSwkPcm74Jo9Ei0GZgmkw8QCOao8OXcaz/5vSZnPdnp3ApqBBLkWJE0Ci7ASzbIhCLLQ1E0iOkBDh9NpUgiUejo8oNuJwyn0YPABtn51UYFFivG3yBGCNZkuDtc/MW+ZQI3OrYpBaARCKufk3B5XIiWyhiL5ODp8+FfFHH+KiKSqWKUL8fC/NznGlPBmz+24dZjKnD0CJDcMoyW0SqXuMtHBFw7rhIAD1ErNUNafxKBNevapwu65NpEQ4FqXIA+RMd6VwBP3cPSERb6gLIFIq61+UqGWaFdcrVt/lmAuWjAi2aiMFwmOYuIJ/N6M28vwIMAMoNDyg4rcU9AAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ics { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhRJREFUeNqEUkFPE0EU/mZ2dra7bLNpi2AxQFKalkJrohICiYkXPagXrx78Df4K48GDBzmQePLMhUODNxQ5ciEkJVqDtJGmMWrCATRbd2ecoS5u3aovmezsvu9973vfPiKlhI4XL7c2r5YL81LIELEghLA3u/udxmHnPmfGW/Wuv+LpwwdneRYBx7PeWK0wOYYhcXxyckGV1fdbnbuMsXcklqPRJQxFMKz4RxDCtVO4s3xlRjWoB0FYjlQPEEBieChwKCRGMx5uLtaKs1P5ei8IKlGa/YkXMXYtlTEDlsnw/mMXhBJcqxSK6vlcpa4PEpCooUyIqs5M6hG1o2CUwqA091cFcYLf/sjzcX75EiQIojI9779CTYR4jwTBf+r7GAwh0AxCiL6JMT/04vQ79u8aI2O/7Jzg69o6Go8ewycUahtBpADhHKLnK/eVbkMdtROWIv80NQ2sPhncA9Htwn+9hZG0rY6DzFwJl+7dhs0ZstUy8rduwPS/wd/ehmi3kwq4zTHiWUgXp+EuL8FvNvFl5Rn4xAS86iyI2kY3n0Mv48ByrOQmancdi8I0Kcj3U5iuA29xAelKCUHrEIayzltagG2E4IwkFaQgSC6lYI09iN0d8It5uNV5nG5sgJdKYC0G8WoTOZvBISFNEBxnsuzD3GX4vfDsszzqAu0jkJQDedCGbB6AWg54pYbPo+NGVPdTgAEAqQq70PytIL0AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-iso { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjlJREFUeNp0kstrU0EUxr/k5qbJzdPYpGkpsUJoA2q1oLjTdiGiIC5cuXHlxv9BEOrStTvBnQvRrSAIsejCrlqpsURq2hCJNQ+TNLm5uc/x3MmzJh34mDNnvvnNzOE4GGOwx8+t9XQkfn0VE0Y5/7Z+kHm+dvOhtd3P9c/xwNZh7nWaMYtNUmX/Fct/vlN7/8J5aRRgyzm8xzpRDjGE2aVH4VTqdnoUYg/XkEhmy+Cx3DhA5tMzdFolvg5Mx3Fx9SmH0JIg79Zo3j4GADMIokJTKtjbfAKXU4Y/2NvSfyH75TFOxa9Cmr0XnlPFl5ReOQ6wNMDsoFX6AElqQlNV1KsOuNwS/AGFjEUIDhmn5+/DMM16/9igBowAzFKIswPJr6MjlxFP3sV04gaP7RzMPe6xvWM1gNUBM2UKYlBau3QghGphg29J3gDlLLilWNdD3gkvIIDRhD9yGe2mCV0V4HFXuCxT5Dlv8Dz3sIkAs03FalDxBMQSt9BRBMhNncuO7dyU28c9tnf8C/Q0ZtR4GImeQSj8APLRH772BWcgiFODffCv/t8H9tO0v3RjV7VqkeeXLlzDfvYjj88uXhl4JwIsrYxmLY/M1gYclIvGE9jZfNPrSCD3/QgLyeWTADV6wW9AryIcCkB0u1Aq/oCPumlufoF72vIheaLDr4wCLIOqrYnULA14PSoqpSJEAUilZrD77Sv3LK+cI0+Be8cAbbmAOrob0agtD491LYfkoqvnyZLsWRkA/gkwABL4S3L78XYyAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-java { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAjxJREFUeNp8U01v00AUnNiOEyepQyhQobRBSlVIoRCBEPTAjQsSEneE+An8FM5cuXLNoQduIAE3qopKNJAIIppA2jrOR93aa6/N8yZuUxyxkrXr3ffmzczbTQRBgHC83nj3ca28dD36nx6fvnzrNNrdp4oibyUmey9fPBezEgWVFuYLdyvlPGaMY4fl1aRS+9pqP5ElAkmcnknRwuO+Nyt5u/ETYfyj9WrpZnmpxn2/Ok1Swn/GvtnH5k4TLue4kNfxoFoprRQv1TzOb8cAIu3+ZD7oD/Hm7XuxzqRUNDtdkuLiTmW5tFxceBXlnXgQTAORSMt2oGezUJJJrK9dFWdEH7Ik4dB29LiESeUEJXd7/dAT3L+1ivlCHr8NEzutXTBvbJPPSdO/AH5wysChwM/1HzCGlmAzOrKxu2eCud6Z2Jke2MwThpUXL6Nn2ZAVFTlNw70bK0iRnGAq9qwHtOmTRpsx1NsHyKRVnNPnoMoK9kc2BjbD4vk5JGV5NkBoEPM4FFnCteJFWOS4ntHEfphQyKaFTWFLw704AJ26ZFx/ZEEi3YyY0O1Dmr4EKTUHA8hUnS6siI0DEHLYog+b28RCRuNXR/iQUpPUEQ+NVht6Lodnjx+GXYgDSFRnq97Ed2pXSlXhUSeGhxYc5sKlNXM5DGLR2TMwfZVPAIi+otGNWy1fEZUKeo4qc4ysI+F8VksLIJfYcD9QYgB/DNPMptWBlsnBIS86xmDMTBo/PWd0LB6VZfdEbJT3V4ABAA5HIzlv9dtdAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-jpeg, -.ipfs-jpg { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU8luUlEY/s4dmMpkWxRopGJNNbiwhk1tItbGtXHr0hcwmvgOdWld6Bu4coXumtREE3ZKu8FgOlC1kIoXtC3jPfdc/8PUIpzkBM7wf+f/hsts24YczuerGUc0moBlYTAYA+i8sbdXtAzjITRtq39kr73s/Gr9DTUYPOeamwvYnHdrdR0SnDebuCbswJGqpX+Uf92Hqm7hzFAG/4TgNr1uCwEJ0trcBC8U0Kb1/PQkHt9JxSLnL6TB+Y2zAIMOJBGLXmtsbEAYBsx8HnqCGKVScAX8uHf5EpqmGXv18VO6VDEe0PXsKABN8+AAgiabmYFNNJTDQ2RUFc8+Z9G0OPR4PKYwvKari0MAgiY/OQGCAajhMNR4nDZMaInrKBGl70SPMScck1NQG3X/CAWLE3/dAWV5hRRVIJxOWNksrP19sFgMqqAebUGYHMI6teq0A9oTVAhqu2sfbYYjsL7lCZ3683gA70T3TK7/B4BNoO020GwB9TpwfAz8LgMtWn/NkV8EHgoB81c7nYwCyBZlEVkHcqMTKFnkmehJTOPvEfCnKi0fAyADJKfXC/h83TaZTJjaa5lANLpOFqAXtlEAorAwO9u5syT5UxLfU0e3o1FMu1x4u7ODYq02BKAMAVSrSNLrK1MhLPj8mNF0vFm+C1ZvwKBwXXE4AGn1WAASazESwUW3BzUSMeJ2o1Aq4sPurvQYSRLwlhRR6mSaYyi0WlpAJrFRx3ouh5/lMt5lv8BLwXp0M4lSpYL17e2uK5wP6lj/c2ZPn2RI+YT8fDvqoyegVLyfG5kBKaQQOfvF2pLc+ifAABiQH3PEc1i/AAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-js { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUQ5ODY5Q0NGMTE4MTFFMTlDRjlDN0VBQTY3QTk0MTEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUQ5ODY5Q0RGMTE4MTFFMTlDRjlDN0VBQTY3QTk0MTEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRDk4NjlDQUYxMTgxMUUxOUNGOUM3RUFBNjdBOTQxMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFRDk4NjlDQkYxMTgxMUUxOUNGOUM3RUFBNjdBOTQxMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoT8zQ8AAAJdSURBVHjadFNbTxNREP52t7S0bktbKFAvTUVaw60YqkExUTD6oD74qC/yD/wp/gh885XEEI0RAyYQUiMpIBGMkYR6o23abi+73e2uc04v1LROMtnZPTPffvPNHMGyLDB7sbJ2ciUSli3U35smkK9t7x9v7n2dD/g8KUkUwWqeP3vKz23NxJGzgwOx0RC6mSgIo+WKuvP56MeUzy2nJEk8PWsGJVVTuhWbpgmHw47FB7d98Wg4mVWK52o1sxOg3Va3PmFp+Q2PdUquaFUM9/vw+O6cP3bxwm46Xwh1ALR3/vL1e+hGjcc9koScUsTSq3coVDQsXJ3wzo5HEs3clgZNMTVdx1T0Ep7cn6//QRQwMhzA6uZHLD5cIFEFSKIU+G8LK+tb0KsGZKcTJoEyP08AbpcLy6sbPKdQrigdAGaDwWxsDH1uGbliCYIgcM8WFPg8Mq5Pjzdyu4jYbCE44EepXMHuwXe+A8x3KKYxYsjvbUzmlPGpBmYdgI1oYjSMbL4Ao1YXMkcM2Dd2xnbAamPQAqg1GORLZdycmYTdJqFKk2DPR3fmwI4zBDrg9RADqxPAbPBif2WTSB584/3/TGegEOit+DRcvQ4OZJi1LgwIQKVCg2i6nb1I7H3Br3QWqT9pBAP9uDY5xjdSM3RqxeoUkfVnEOW8UkLykERTNXjkM7h3Iw6NNvHw6JjuhAhVrba0+QeALozcI9nQR0VvNxJc/ZmxCNGvIBQcpDG6udA22kyW29HC72wu8yG579ZoiSYuR/ly2+y9CA4NceWLmo717T1i5ULqJNtapL8CDACskxPFZRxLwQAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-key { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlZJREFUeNpsU11PE0EUPbM7u/2AtJUWU6qiiSYYo5EmmPDCD9AH46sx8cEnja/+CB989z+Y+MKPgMiDsYQACcbaWBBogYD92t2Zud7ZlQZsbzKZ3bl3zj3n3IwgItjYeDO3MlWme0bjUth8e8/fO2tHzx3XqUEk50uft+Ndnhdmc3SlfNPkVZT8Cy600DoIISvVfKYtlvfX1p66XmoIYsMZdjJQWvEFbbsC/S5g2QhSkKUK7rx6OzvzqLpsovAhaAxA3DUBQn2TUFsl7KwTfm4Z9DoO5LW7uPXi9Wxpfn7ZKF09vyPxX2iWcNRkKGZz0mQWKoNs8AVB6x1yRY2pYnc2LLofuXTxMgAlmlXIfngCxNxEzM+DPv6NQa2BygLgZyX6JT83ngHTN5GAL0WSoUQkSQnXkyBh/k0GegTAaldM20sTKvet+yyhIZApECamL0jUSe3oFChx3TopM4TeEQP2gc6BgGIwb4KGNXRhCkMGxgg2kJeybRiZM45D8W61qEAknSmpHStBhywu0nFVupSCTAcM4ECwqapv+NQ6LS9JGALoMIIoPYDjZiEL1xHtbyO39AQUDaA7R1AH23DSeSA4hv5RG/VAhxomPYP8sw9A4TaC9iHkjUWmrtGvbyC18BLe3GP0m3WW4I5hEBEnPIStXzyuFIxb4EkMEJ79Qa/xHbKxCdM7xeCwzUZOjgEwnuzt7qLz6T3cySmQP43uzjeIiTJM6io6W19B/NLCKMVGCzkCoLR/0lrfOI2fNy/huKC1FTsK/rbGNeMRC8dHpHByfu+vAAMAL/0jvAVZQl0AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-less { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjZERjZENTJGMTE4MTFFMUIwOEVERjQ5MTZEMkVBREUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjZERjZENTNGMTE4MTFFMUIwOEVERjQ5MTZEMkVBREUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGNkRGNkQ1MEYxMTgxMUUxQjA4RURGNDkxNkQyRUFERSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNkRGNkQ1MUYxMTgxMUUxQjA4RURGNDkxNkQyRUFERSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pl1w97IAAAJhSURBVHjahJNLbxJRFMf/wPAIMIxMkUI7tS0VYqlGDLGhjdKkqyZ24cJFN925de+XcONHaHRj4k7TND6SGo1VWwmp2kSLhlqMDbQ87gzPYcY7k4GgoJ6bmdw598zvnvM/95pUVYVma+svcovx8yMnFZHAMJPJBJfDzq5vpX6+/vD5qo/z7DOMBdo/d26t6jFMJ3iY51jBz4M+LP6wxEw40Gy23qYzB3HO7fpmpZCOmfEfa7Xb4NxOrC4lvbPToe2yKE3K1PdPwNOtHdx79ESfq4qKkijB5/XgevIyHxEC24USmewDqD2ABxubaLRkfW6zMqjWGlh7/ByyAtxYnOPnL0Q2+gGGmKRaw8zUBJaTiS5QOO1FJnuIAM8hciaIWHgi8NcSNt+loVDY8JBXh2ojJAR1HbTSNFMUpV8Dxcjg0nSYBrtBxdLbqI1iheCUh9XXNGurAwCdEkb9QyBSFam9TDfoPZ1LUg1BH28IiwEARTVAQOzcFKRaHZpLoa9avY6L1Gfs0c32t4PU6W2lWsV8LAorw0Cs1nXftYWE3qZGqwWHzYp2zzlgetuolVFvtiDLbRRKFTAWCxx2G/KlMtXFhWPqOzsWHJwBx7rxKv2R7mwFz3lw9/5DLC/M4Us2RwV0g3U58XJnF7dvrsBOoX0Abbej/DFKRMKI30fTVGC32WA2m5H9cQQvhYi0vE/7Wdgczn6ARA9QPBrBszcp/XvpyqxebzQ0Tlsq6llxLhe9bD4cFMr9XdjLHpLv+SLGBYHAYiVu1kNOpAaRTWbCejgiw0zGhFGSK1aw+zXbvfK/BBgAPwADAs5GpGsAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-logo { - background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 553 235.3'%3E%3Cdefs%3E%3C/defs%3E%3Cpath fill='%23ffffff' d='M239 63h17.8v105H239V63zm35.6 0h36.3c7.9 0 14.5.9 19.6 2.6s9.2 4.1 12.1 7.1a24.45 24.45 0 0 1 6.2 10.2 40.75 40.75 0 0 1 1.8 12.1 45.69 45.69 0 0 1-1.8 12.9 26.58 26.58 0 0 1-6.2 10.8 30.59 30.59 0 0 1-12.1 7.3c-5.1 1.8-11.5 2.7-19.3 2.7h-19.1V168h-17.5V63zm36.2 51a38.37 38.37 0 0 0 11.1-1.3 16.3 16.3 0 0 0 6.8-3.7 13.34 13.34 0 0 0 3.5-5.8 29.75 29.75 0 0 0 1-7.6 25.68 25.68 0 0 0-1-7.7 12 12 0 0 0-3.6-5.5 17.15 17.15 0 0 0-6.9-3.4 41.58 41.58 0 0 0-10.9-1.2h-18.5V114h18.5zm119.9-51v15.3h-49.2V108h46.3v15.4h-46.3V168h-17.8V63h67zm26.2 72.9c.8 6.9 3.3 11.9 7.4 15s10.4 4.7 18.6 4.7a32.61 32.61 0 0 0 10.1-1.3 20.52 20.52 0 0 0 6.6-3.5 12 12 0 0 0 3.5-5.2 19.08 19.08 0 0 0 1-6.4 16.14 16.14 0 0 0-.7-4.9 12.87 12.87 0 0 0-2.6-4.5 16.59 16.59 0 0 0-5.1-3.6 35 35 0 0 0-8.2-2.4l-13.4-2.5a89.76 89.76 0 0 1-14.1-3.7 33.51 33.51 0 0 1-10.4-5.8 22.28 22.28 0 0 1-6.3-8.8 34.1 34.1 0 0 1-2.1-12.7 26 26 0 0 1 11.3-22.4 36.35 36.35 0 0 1 12.6-5.6 65.89 65.89 0 0 1 15.8-1.8c7.2 0 13.3.8 18.2 2.5a34.46 34.46 0 0 1 11.9 6.5 28.21 28.21 0 0 1 6.9 9.3 42.1 42.1 0 0 1 3.2 11l-16.8 2.6c-1.4-5.9-3.7-10.2-7.1-13.1s-8.7-4.3-16.1-4.3a43.9 43.9 0 0 0-10.5 1.1 19.47 19.47 0 0 0-6.8 3.1 11.63 11.63 0 0 0-3.7 4.6 14.08 14.08 0 0 0-1.1 5.4c0 4.6 1.2 8 3.7 10.3s6.9 4 13.2 5.3l14.5 2.8c11.1 2.1 19.2 5.6 24.4 10.5s7.8 12.1 7.8 21.4a31.37 31.37 0 0 1-2.4 12.3 25.27 25.27 0 0 1-7.4 9.8 36.58 36.58 0 0 1-12.4 6.6 56 56 0 0 1-17.3 2.4c-13.4 0-24-2.8-31.6-8.5s-11.9-14.4-12.6-26.2h18z'/%3E%3Cpath fill='%23469ea2' d='M30.3 164l84 48.5 84-48.5V67l-84-48.5-84 48.5v97z'/%3E%3Cpath fill='%236acad1' d='M105.7 30.1l-61 35.2a18.19 18.19 0 0 1 0 3.3l60.9 35.2a14.55 14.55 0 0 1 17.3 0l60.9-35.2a18.19 18.19 0 0 1 0-3.3L123 30.1a14.55 14.55 0 0 1-17.3 0zm84 48.2l-61 35.6a14.73 14.73 0 0 1-8.6 15l.1 70a15.57 15.57 0 0 1 2.8 1.6l60.9-35.2a14.73 14.73 0 0 1 8.6-15V79.9a20 20 0 0 1-2.8-1.6zm-150.8.4a15.57 15.57 0 0 1-2.8 1.6v70.4a14.38 14.38 0 0 1 8.6 15l60.9 35.2a15.57 15.57 0 0 1 2.8-1.6v-70.4a14.38 14.38 0 0 1-8.6-15L38.9 78.7z'/%3E%3Cpath fill='%23469ea2' d='M114.3 29l75.1 43.4v86.7l-75.1 43.4-75.1-43.4V72.3L114.3 29m0-10.3l-84 48.5v97l84 48.5 84-48.5v-97l-84-48.5z'/%3E%3Cpath fill='%23469ea2' d='M114.9 132h-1.2A15.66 15.66 0 0 1 98 116.3v-1.2a15.66 15.66 0 0 1 15.7-15.7h1.2a15.66 15.66 0 0 1 15.7 15.7v1.2a15.66 15.66 0 0 1-15.7 15.7zm0 64.5h-1.2a15.65 15.65 0 0 0-13.7 8l14.3 8.2 14.3-8.2a15.65 15.65 0 0 0-13.7-8zm83.5-48.5h-.6a15.66 15.66 0 0 0-15.7 15.7v1.2a15.13 15.13 0 0 0 2 7.6l14.3-8.3V148zm-14.3-89a15.4 15.4 0 0 0-2 7.6v1.2a15.66 15.66 0 0 0 15.7 15.7h.6V67.2L184.1 59zm-69.8-40.3L100 26.9a15.73 15.73 0 0 0 13.7 8.1h1.2a15.65 15.65 0 0 0 13.7-8l-14.3-8.3zM44.6 58.9l-14.3 8.3v16.3h.6a15.66 15.66 0 0 0 15.7-15.7v-1.2a16.63 16.63 0 0 0-2-7.7zM30.9 148h-.6v16.2l14.3 8.3a15.4 15.4 0 0 0 2-7.6v-1.2A15.66 15.66 0 0 0 30.9 148z'/%3E%3Cpath fill='%23083b54' fill-opacity='0.15' d='M114.3 213.2v-97.1l-84-48.5v97.1z'/%3E%3Cpath fill='%23083b54' fill-opacity='0.05' d='M198.4 163.8v-97l-84 48.5v97.1z'/%3E%3C/svg%3E%0A"); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mid { - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mkv { - background-image:url("data:image/svg+xml;charset=utf8,%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M7.5 91.1V71.2h6.1l3.6 13.5 3.6-13.5h6.1V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H7.5zm23.5 0V71.2h4V80l8.2-8.8h5.4L41.1 79l8 12.1h-5.2l-5.5-9.3-3.4 3.3v6h-4zm25.2 0L49 71.3h4.4L58.5 86l4.9-14.7h4.3l-7.2 19.8h-4.3z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mov { - background-image:url("data:image/svg+xml;charset=utf8,%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M6.1 91.1V71.2h6.1l3.6 13.5 3.6-13.5h6.1V91h-3.8V75.4l-4 15.6h-3.9l-4-15.6V91H6.1zm22.6-9.8c0-2 .3-3.7.9-5.1.5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.6-1.8 1.2-.5 2.7-.8 4.3-.8 3 0 5.3.9 7.1 2.7 1.8 1.8 2.7 4.3 2.7 7.6 0 3.2-.9 5.7-2.6 7.5-1.8 1.8-4.1 2.7-7.1 2.7s-5.4-.9-7.1-2.7c-1.8-1.8-2.7-4.3-2.7-7.4zm4.1-.2c0 2.2.5 4 1.6 5.1 1 1.2 2.4 1.7 4 1.7s2.9-.6 4-1.7c1-1.2 1.6-2.9 1.6-5.2 0-2.3-.5-4-1.5-5.1-1-1.1-2.3-1.7-4-1.7s-3 .6-4 1.7c-1.1 1.2-1.7 3-1.7 5.2zm23.6 10l-7.2-19.8h4.4L58.7 86l4.9-14.7h4.3l-7.2 19.8h-4.3z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mp3 { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnxJREFUeNp0U89PE0EU/ra7XWxpSsFYIbVQf9REFBHkYBRIPJh4wrN3DsZ4MPGP8b/wUCIHEw5EY0w04o9ILcREGmwVgaXbbXdnd2bXNxPahGyczebtzrz3ve99740WRRHkWn5cebu4cH6SMY7e0jRAHr9c3WxsVvcemmbys9yT6+uHJ8oaPefypdPDD5Ymh5w26wMkEho8JtDtuEOZFCrvN/4uJZNGH0T59D58X/C27aFNAL3Xthmsww5GCyN4+uzu+OLtQsUPxPQx6ZMAoQjBAw7O+bEVCMMQgqygs+LFs1h+dGd8bna0QmXO9OL6JYgwAvOFZKKoy3V44CgNfv7Yx8oLH+lUEgvzF8Ydhz+n41snAGRG5gUEwClzhHdvttFxfNyYK0EnJozKK5eGcf1qHo1GOxtjwI+pfvm4g/W1qtJgerYE2SXJSIL9+W0jk0mCShAxDXgQKgbNXxZq35vQKCiKQkSUXdc1+gcch1FHGPmKuIgBCdc66qJQHMG9+1NIpUylxxHtuW6gEiTIu+N4yjdWgty0yTmdNjFzcwKjY0MU7MLt+IjoSad16FoIx3b/A0DZ7FYXnsdpAjUMDOjI5zPgfoBsRodhhGhZHfBBU/nGAGRtxWIOg5lT2NtrI5dL0SB5KJzLodloqXaOEatPGztKq5gG3S5DNjuAK5NjKJfPYKI0okBkSdemCiSgS/rkQNLSePtxBj4LSCwfFtE0krqqX7ZVMnu9XlMXy2l7ME0dzA3iANQyY6vWxC61UY41zTyNcYh6/QCNXQvzi5dR39nHVq1BUyuMGAARsF6tbbe4iKD1r7Om5iFBdmW1SsDflLiuB6sX90+AAQDHAW7dW0YnzgAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mp4 { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnBJREFUeNpsk99r01AUx79psrTrujVtbceabnZs4DYRHSoMh6Dgq77rn+AfoA/+If4Bok+C0CfxVRDBh+I2NqZzrpS1DVvbtU3SJPcm8SSlsJlecsn9dT73nO85V/B9H0H78OLdt/LDlQ1uMYybIAgI9n99OWxoe83nkiz9hDDae330JvxL48O51Xxm/enNtKPbVwAh0Ec6kYpXat9Pnl2GBC02HrjM5Y7h4P8+7FtIFVJ49OrxUnl7ucIdfhv+BIDv+fBcj7p/tXMPrs2RXVTw4OX2UnFTrXCbbY7tpMsA13FDSDAOQ4gJEGUJLs0PPh9CkESsPrmxxEz2lra3rnpAt3G6adgdQhBpmeLkFodNmsjpOPoXBrQTDcmFFNS7i3MRDzzPCw/vva8ikU+COQxm14BBhvJcHLGpGPTOAJxxeLbrRgAkYujBdH4G5oWJWXUW19YL4XqunAMFhnq1BqWYgaY1MAHASQOiU96zKzkU76mwehaOvx6h9uMv7KFN3RopL4oTAI4HRh4wSl399xla+00YbR3yrIzM9SzSqgJJnoKcklGrH08CcJjnBtLLCsSEGGpSWJvHtDKNoFippsJ0ulIsDDUCCATMlBQkNuahEyiZTcLsmFBKaQxaOk53TlHeKkM70AjAooCghBOk9sKtIvqtPqS4FBaRnJSRX8tj2DOh3lFB5Qw2ZNFK5LRo6w4sKt2ggAzywidAMN/9uIPSZglBLDO5FF3mRD3wHE9qVRvoHrUpfn+UEQK0/7ShtwboHJ6jdH8RZxSC57hSVETb7e5/2u0FxqPHJow+8iZ4lYY2QGu3idhIxO7Y7p8AAwALCGZKEPBGCgAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-mpg { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnxJREFUeNpsU0tPE1EU/ubRdlqmnUBboa0UeUQDiUGCC1+JmrhxoXt/gBvXJi74If4AV0Y3sNKF0YUaICqoIfjgVShEiGF4tDOdO/fOeOaSKtie5GZu7pzz3e/c7ztKGIaI4vn9p+/P3h4e4a6Pv6EoQBDiy7P5rc1P1Xt6XP8M5ejXo6UJ+dWbuemeTGdpvNdiNe9YvQLe4Bi4PmTpRmyq8m71rp74BxKF2twIHvAo+f/l1T2Yp0zceHizfOZa/xRnfBRhG4CQqAYioBWeXDyA8Di6ei1ceXC1XBwrTXHPH2vW6ccBBBMI6BsSUEQzakGL6xB0tvjyBxRNxdCtc2Xf8R9TyaWTDOg2TjfVdw6hqIoE9B2GxkEDWlLH7s4ette2kSp0oDRezrQwCIIA3oGHr0/mKMmE53qo23W4+w5S+Q5ohob9X3tgHgO8ULQACC7gMx9mKQP30EW6mEHpYi8xcJEdzMucjfkKcrTfmqmiFYBxCF/Id+gayKJwoQjHdrA5v4HK7Cq44KjZNWpagaqp7QACks0H9znW365ia24DzoEDozOJbH8eVtGShXHTwNracnsG7q6LzsEuaAlNPm9h7DSSVjLyCMkppDI+GS2StQWA1RlKo0X56n2X+6QHkmkDakxF9WMVqWyK+s/BrthYfvWz1Ug+zUDcjMPMm0h3pxEjFma3CbIuCud7oMc0LL1ZgmElpGJtW3B+15HIGNITrMYIlOH7i0U41NrInREylYbu4R5qQbQBaAh95fVKZCnpQCnb9DrWZyrRERS6NDeUw+yHaXh7rt4C4B8y+9vkwn7kwKNRpDoa9aiFKBYnF+RcREqQ2e1m3R8BBgAy9kz9ysCE6QAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-odf { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAi5JREFUeNp0UktrU0EU/mbu3FfE1KRRUpWYheALNBURUVy7cy9UkO6KW/+Lbt0IPsFui4gLBbUqFaUuXETUKCYa0jS5yZ2ZO557b5MmTXpgmDPnfOc7jznMGINYPi0de5UvmpORxpjE/kbNqW005DVu8TWw1H758ZfkFgNgJmtyxSPRjJIj0QTW/RDiYGXGb7Dl32/eXrVsd0gSCx9miqC0ooCdp69g5Q/h6OLN0ty5ynIkwzMwUwh2FwMdcbDiCZQXlkqFCpEoPT/wih1YjLInANcD+/Ua9bu3wJlGvrBZCmet2+S6ME5g4oGlZ9A/I70XCDhhDexPNTFmswJBwcnuXkF86VSNZxVu0ukLSGnBcqlnN4HoCQIaIuIv7LUooMOgQ7q75LAAb59B9gCBHSKgqemRr94mMKmD24CfM8nb7THYGQNLpAkUkcb66JyGBFFEWRVL57gFEH5qj8Lxwca2qS3EZaugmzAw24dR/XQgwtsCSBjPIdWbUoE2UJLBnV8Ac/ciWHsK9/glWLnD6K2vgPszsOdOQdfeQ1c/ThKoTgDn9A3KUED/52d45xchZsvorD6Bf/Z60riV3Q9Z/0bbGU1uopYGkfERSQ3VbsMwl0qlqoIARmSoPYXWy0dor79LfBMEEd8jGs/uQ3Yl7PJFNFbuEXiV2riCf88fovXhBbo/vqP3t02/ZYmJFqTkzY160Go9uEMbFK8hR/NrdXtFuUVmnmySVGgO4v4LMAAjRgmO+SJJiQAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ods { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAetJREFUeNqMUj1IHEEU/i7u7Z23e8tGgneGQPw3hZDkkhQiSuwMQREba4uUgpVlCrvEQhurkCoWqcQQ0oTAaYKNqJygGEwgHCSB6Knn7eXcdX/GmdHVPWYFP3gw78173/vmvYkQQsAwNvckq96UnyIEh7/d4t7uUd/8y+85P+bXSX4grkhI6nJYPW7LrXpBK2YxiSoShhu4Buq1NPofDeqdrZ3Z4cl7D4J3UtA5VyVAlmJoru9Af2ZAp1lcCQ3nqgiuKmbY3l/BH+MnHM9GVLP0Ww3KNA33CQoQQnL834Fj74PUGkANEIkCSSsa8gQqgYTIcB0PVsXB318GInRiCVWCkpRFAs+j5gKlA4t29Ggh4d0t04FKt9PQqF4UFgumSEA8ApeaElilWbYRVy/lsns/N1QBkxtENF4jxPxcgcB1CZVOrvMteK5IQDtJJIGh++PcX9iYwWjXK37+vP0WdYk0Ht99jtX8JywWFkQChw4tc+cZcvlF7rMze+ubbxN40fMalRMDP/6twaiUeK7wlZ0TD0a5hLTWxo2d45KKprqHKJslTsy209s2wnMFBTYNZjc/oLt9gPvLOx+hxVJIKS2YW5pCbSyJTGMK775O8VyBwDJd2LTDl/X5i8v3S7NVw9vJb51tITDEUwEGANCx2/rXEEFFAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-odt { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAepJREFUeNqMkz1II1EQx/+7Ca6JkqyYiJ8cKEpAQbBQFDm0sVOsFBS9wt5KOTgEG5twxVlZ+XEnKNiIghYKxx5nwEpIIXaiSAgKGmMi0d23u8+3T7OaZJEMLG9mmPnN/w1vBUopLPNNhRWXHOyDg0nx82TiJtZPlPVoNpftc2cTotcHtxx06kdXpSQ/BvzKESZzIDmAz6y+NojOjpDMZiqRPIgNoFyWM8DrKUV7axO+gcp4g7AzmquAdVNqOgL2z2I4id1B0wgeygOyt/rLL5buLwAIDgA9dY+L+DkuDQOCrkMgBsRglcMOqAGwIstMg8AkGsuZMNUMRMkLqE+QGloglvlA7uIOAKvZajR0qJkUj/XHe0BTIclVKKlrfKsj9qA8gA6wqSJzPaXlr7ky//tdLEUfawsBjExUFGVWbT7AxSa42H2LMfODmvd3wKb7RAMLYwM8nts8xJ/pEe7/3PmP2eGv3D+9usb35W0bINoA7RmjXSHsH0f5Z/mUSZ0Ir2JmsBtD80s8/rGyzWsLFTD5yUQCbfUBHl9d38LvkdDTXIuHVBo0k+bbt06qO+yAPGXwe/cA4wO9PN44jKDG70GougIzi2tQ00ms7/3lpwnBBgjZ37Kkd1Shht5XzBIFl/ufFtniT/lFgAEAU//g6kvdGBMAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-otp { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAcJJREFUeNqMkssvA1EUxr+ZjkdbrfFKVD12ErYSRELY2fkH+BMsLcQaSwsrSzZi47EjJEQkEhYkFlhYSVtFpdqOqpk717l3jKZmiC+5mZlzv/s795wzCuccQncz3YeRBj4KHz0/RrOZe2NsZPP20o255zQ3EAxzEAC+6uzTw13G4TFQAakA/CWtIYbY0KBOrx7IvwDQqlHV1o3YxKTOvyAUvfQCfqmA3e4ikyS/zRAKvOot7eoSHEgZIHrCfQAfBqBaKQQDKScQAExd8emBANg+2U2CvNMkkgSqBmrCxFB8mujeoJBWwEqARcssKTAJEGrmaGrjqK1zvNknH4BtyxKl2VUpRxmj5W+x73q9AEaZrR/ND1EJluIpS3i9JQiA+a+hSq8HwJjTsLrRaWitPTCOlhEZn5N75sM1qigmlN+dB3u++Qao5W4TtbEXXIsiszGL4PA00itTsu6XnQWo0TjMTAJqfMDx/ryBJcaVzSNSH4fW0Q+rkIf5rsjRiid7yyN7uoXS3Zn0egE0NiORAN9bQ017D1Lri7CLlP2EDr3Rf7C/itzV2bfXA/igLDaRixfngFhSCooH2xVPCWBlwKcAAwBX1suA6te+hAAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ots { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAfZJREFUeNqMUk1rE1EUPS8zmabJdDKB2glEwY9ExJYiBUEQpV25qgtBXfgbpEtXuujKf+AfEKRddOdOGHClbYVCvyKWaijT2mhjphk7Sd7Me76ZONp0EsiBYWbOvfe88+69hHOOAE9f3zTVnDKNHvhlsfqPw/rM0ovyWsRFdXJEpDIyRnSlVz0KSkmvabaJeXSJBEhgAJzTDNybmtUnS5Pmg/lrN07H5NM/f13FoMgpXDSuhiIiK3Qi6LUugX7FAbaPPsJqfIHHKCStqRsXVFPQuZgD9BBxjikSiRq41AAkgCQBzVf0+BWEBX7GBm0xgHHUqk1UbBuEcIydzyCZlOI9YEGuDxwduCCitS3Xh3viCZ4jrcq4PJ6DLHd67tjtuAAXib54dCPVEfQ5XIcik/0/2iDeOYz3ceCxrisMi904y0XiMQFfkB7lg6xFHwFxEqUMV0anUNBLWKm8xd3i4zBWOzmASx0UsiW831mA59Xjm+h7HCOygduXHqJatzA7Poey9QnXjTuoVD/j/sRcmDOWLgqnLC5A2wwST+Pn8T629lahSCo291bwu9XA7vcy3m2+gTaUR14thrk9BXasbdiOjSe3nmPpwys0xSi/HpbDd3bIQC6dx/q3ZbRb/j8BEi3Po5cTJpHI9CBNDEa++GyDBN9/BBgAwfDlCVUQaNAAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ott { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdFJREFUeNqMU89r02AYfpJ0iVm7EqhVOxw7dDBEdpiCE1RoEZRddvUgbIex/Rs7eehppyF4LOzQu4MxwYp0HgShIuwwUVSCVtl0s13afl+SzzcpyZYmyF74eN583/s+PO+PSEIIeJZdrtQVI19Cgmk/Ph39bpllXq82g7sgLxVcyKNZpIx8Uj5u5zSjc9Gov8ZihCRC8D+7On4JczevGeTGSEIC4ctKJtB1DTPXi1iCCEkIm1EFlC2Em0iwtWfinXkIzjiO0jljtDC5TtflGIGUQMB+mfja/oPv2Rx9MMjpMdJxOXyXTwkcwIkewfqQ1QtQNB385zcI14FrtQexsSb6SRysZ4Fbf+F6eHwATc9gJGNAm5iCTL5n/LCVRGADNoeaGoHqyaXj5gqQlTODovcwNk5Aj6wXqV8eCo7EDhMonEHpW+dZC7gUG98D3geo7vkb01h9cAvPdt76OGy1xntUd3bjUxAk3+l2sHJ/FgtrT0MUJNfDSm0bjQ/72Hzxxo+NK+h3B7XRNO4UrwymQtMIkdTBU0m+sBOayLsn8Ka78mQDjx/e87HXPkb1+UsfP37+AmZ1fP/suknBb6nefVQXjl06TxMlJfWKNWr+Kv8TYAAkUueexJF47QAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-pdf { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmhJREFUeNp0U0trU0EYPTP35qYxaW6TlDapNKWGbgo2FkF8rARB6rboXusf0F/hyq2U4krFqugqSBeuAyL4SERBstHa0iR9JKZJ7mvu+M0tqZGkH3x8987jzDnnm2FSSqh4ns0VU1ybFzj674Wa3uWiWbfsFQb+jrGj8Xvbm0HlvYVRxhJprpmTlGmum+OMm5uNPZNbtjk3l82ey8++8oW4Jv/H/wdA456g2kvH99FyHNiuAz2dwflbN8YW8zMK5Go/CMfQkAhpGsyQgRCtlpE4jIULyC9fHzu7MPPEl/5ib6WOE0JJNRiHHg6j86mMjw/2gG4bkbY4PW4Yj2j64skA5FTHdaEMPiAJszt1sK0d4suJmY4k0+IDDGRfqmh0u5gejQc+fG8eYCIahRQCEfgQnIuhEkgtONE+dGxYxEDj1DhiEycZ+1YXdUpHCqTMJIYyEES5aXXQsi2kYlGEia5GtHVKn+amPBeCutPgfLALPuVu+xDVPw2EQyFEjHDghbpYNm1yKVVnYjTOerepn4E6XQmLGSPkPkOXWATMSDcjQEkAaqOu6+i/rccALtFL53LI3r0Nq1ZD4/MXZJaWYFer+PXiJc6s3IEgY3+uPYZHTAcAHM+DTE8gnM1CSyaCulv+GrRy8uYyElcu4XfhLVpkpNtn/DGA5Uu0abFH36WnzzCayWAkmYJvWeCkfb9SwY+NDbSoOx4bYqJF8rZqVRRXV/HhzWtUSmWwmWl0RmN4v76OUqGASrmMOkntSHF8MOs954dT08W248wzYsJDOujRBAaqqikTpRo/qqd0/dv97c3Lat9fAQYA4z8bX9nTsb8AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-php { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAhNJREFUeNqMkltrE0EUx//ZbDaXNrvZzdIkbYOXGgxYQlCK2IIY6EufxGdB8Av44AdR8AP44JOPBR+Ego0PClUKTTXQSmkTYtOkmubSJrQ1e3H2yJSEJNIDs3PmP+f89pyZcdm2DcdWvn7LzkxFHmCIra7nm9ulg8yLZ09yXON55Dgjt1PM2iPs0+aW/frdh8bzV2/SvQBnCLiEqcFxLKSSodlrU9leiGPihWePBkgeEZO6ShC2dCAZNuf6ADb+ldQ5PUPx4BCFcgXfdwq4Ph1Dtd5CZi4Nw7SQiMdCXkl6yVIy/QBWgcU+yx/XsLK2cdHndqlK/lZxH/OpJO7fnsWY3z/YAq+g0TmHpoUH2vB5PXi8RD9Fo10aAmDJTgWyIuOupmK38rsPcOvqJO33XWEvwLJsmKxHRVEwf/MKWl/yUMf8mIloWN8rw+sP0D6PHQmYuzGNgCRiMZVA17IQV4OIaTI8buH/AJMFd02Tkp05PO4jnWvc57EDAINt7u1X8Pb9KgI+Lxbv3cFR8xjx6AQ+b+Txs/qL9KePlih2CMBCq92hg2qzt1AoV7H5YxdhdqhHzRbgcpFeqdUplpvQW4FhmAixZ/sws4BoWCM/qmsE5XqE3dDQCrqGAYWdejqZgK6GUD8+IV9VghBFN1RZJv3sT5diBwC15gncggCPJKF0WCPN8dun55jQdVpz3Ynl9leAAQAJhiGatD9AOgAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-png { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmtJREFUeNpsU9tOE1EUXXPp0CAUWmJbC04xBANNTF+kKhG8fID6aqL/gPEj9E0lIf6Dj30HL03wxQtVIC0QKrWxNG1Dk9Z2Oj1zxn1m0oIZTnIyZ8/ee+211z5Hsm0bYg29fLGpxWIJWBYGS5IA8ncKhT9Wvf4Yqprtu+w3q85X7f9QxseD/pmZMZsxN9fnc5JNw0ACGGv6tPSvyvEDKEoWZ5Y8OHHObKpucw4B0t3agnl4CJPs2YkQVu4s61ORaBqMJc8CDBiIRhhVM9bXYdVqYAcH8M3NgS0tQQsFcfdKHEbvlr6WyaR/V6uPKPy7B4DT7lUq4MUipMlJ2MPDUKtVfKZ2nn/5BoNbkONxXeb8LYXe/A9AJLNWCxgdhZJagDI9DZg9qIkEytRSkdqTSFQtGILSbgc8LViM+tc0yPfukzIyOJ359k9YR0eQdB2KmBbpwXoM3Dod1SkD+scpEapCI5DdpsJhIJcjajQZagcjI+5oLe4VkeQnyiZgdIH2X6BJ7dSqQLfrggjw0AQwP+/GegCIHppNoFAgEMO1RZKo7BQgRi3yN05cnwdA0BQMAgF3C6pnbuNg92M9AFT1diSCh6kb+FGvo2MxnBB9ocZxp4Mns1cde213B81e7xwAcl4jkaa0IUSjUdLJwkL0Ej6VSvArCt7l81iku6GrKnYEU89VJlSJRmR0Dax+fI9suYxSo4HlWIw6M3FBlnD9YhiXabyOsOeIqG7TzDeIYo6EDGp+ZPb2kKKqH8h+mkxiI5/D1/19J3bwYPvPWXq2skkiJVxesqt0XzghpKM8nRVV2Lv2q9eLIvSfAAMAaacnllcFBmYAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-ppt { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkhJREFUeNpsU11rE0EUPTM7ySZpmzT9DNamWAtFfSiCigr+AxF9zKtv/hvf/Aki+FEi6ov4ItWHPGiwiBUKoUqqTUJImmR3M7Mz3t0kNe1m4LIwc+65595zlxljEJzdR5uf5nLmsvZx6gSvtd9W9bjhF7jg5dH9nRc/wq8YXaTSJptb0xklx7IZoKUEz1zJ2DUU69/37vFYrDxegJ9U0lC+AoIIVGg9CL+vIObP48KDQn7x0sWiVnJrnEDg7KGk+i/Ac4iUM/R7BsmrSSxtXMfa3X7el8+Kjf3KfUJ+iRJQw4w0Tc8BRyWGRAZY3rBR/VlC+XED2ayDhZyXl03+hNA3TxNQshlGLAnE44zCIL1goXZwiMNvB1i6zbC0KuAsxNITWwgNMYPeLVJiFEO9ArjHAivrAjNzBr4f4vwIgdGD4YUACsZCE8AtYGWT5jCsGQw5wEYJzP/pj5RwYTA1b07eQmfZ8P0sgdaM2FlYwWkMgMpl6NQAO33GKM0wsQWflkh1uqGVmVWblsiDkQyqxwfag35SqcktaEWTUTHYNx4iGU/C29+BvX4Lpu/C7zYgFjegSY63WySsHyXwpYHU00ieu0bAOuJbBTArBkiXKiaAmTzcvRJUV9E8rOgqBwqlY8ASs/AadbRLb8CzeTjVClqft6FdB17tL7yeCbFRBYoLr6vR/PiSEl5BZJaBD0/R2nkOZqfQ2fsKt+0SEQ+GLSIEUvJm+6jbah2+pS2aon+4g/afd4SYJVuA7vvXdC/IHQtSoTnK+yfAAIEaId1m+vudAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-psd { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqxJREFUeNpsU01ME0EYfbtdKKWGtoItRWgJHApCBE2I0YuoiSaaeDJeOJh41YN3TfTixcRwMfEk8eDJGA+Eg0YTTRRMg02KKFooCBbTlkJLS7f7P+u3K9Xo8iWT3Zn55s173/uGM00TVlwZfzJztD92iKO5ouvQGQPHcQDN380vlDPr65fdLj4Oa41i9sFt+ytgN7o7woGOrqgvvpLBaF8vWj1NUAwGTVNRM3mf5vU/zaU+XySQuTqIFXz9hxmGLkoS7r+YxvVnrzGzlgXPDOzUZPT4m3Dt/KlIuH9oUjXYEHZZ/wOgGQZi4TZcGI5hLb+FO++TSOSKcLtcMA0dI0EPrp4+HtnfG5skiUecDGwQE2MjAwiGWlFVNDz+tIyCokJhPKYSX7Gdz2I01hOJdnY9rJ/7UwPGTEiqjtbmJtw4MYx78S/4Wa3h5UoOYwPdIOp2Xi/t18rlFgcDw6o+ydiWVRwOBnCpL0oOAMmNEhLZIgSeoxwGSWcERon/M9DoBknTIdNQNAMnO4PIVGpIFXcwndlA2OtGc4MAxml27p4AIulWSIa9QVadiYSoJxhqBJivKgh5ad3k9gaw6JdlDaqq7q5wINY4F22HaLHSDZQkBW72O9cBYFEviBIURQH7a7MN0uDisUW12ZZcaGlmdq4DwCqeTo1zNtZuW7hUqGIw7MNqSUS2ImNsKEpSdEwt5lGhfQdAkQBEoub3NNrDJfAIeBuRrcrY5xGQ2RFJAjl00I8PCckJUCB9q1URBnk38XEJEuk41tmGwZAf66s1VOh2keqwoUnYpFxHH4iKIixkN3HzVQKP3iQR/5GDKMuYmE3h+fx3MHqh1sMafztHLuiCg0FAk0uFdLqcpGY5QEXbTC/j7mIaVjc18DxufUtBJ/vcggs+3ijVz/0SYABsJHPUtu/OYwAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-py { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlVJREFUeNpsUktvEmEUPTPzTUFmgJK2UqXQFG3pA6OBLrQxamJcaYwuu3Dp0l9iXLvVtRuDpgt3JIYaTVSaxtRHsJq2xEJBHgXmifebMhECXzKZme+ee+65516h2+2Cn2cb2VwyHl12//vP2/zOQaF4uD7GWN69e/LogfNm7kUsPBFaXYwHMeK0OlpQEJApHJTuykzK98dE98O0bLM/UNgr4v32Dj1fwSQRt9dSsfmZcMa0rIv9ODaqYrPVxuPnL1Cu1aEbJu7fvIZUIo4bqeVYRzcyv/8c3SPYpwECt/dmu4ON3Ed4TymI+hQc1ZqoE+F+uQLDsnHlwkKMscJTgl4eJOi9fxZLePNhGx6ZQRRFqH4VjZaGSv0Y6cQcJLpra0ZguIWegqDiw7lYBBZV6xiGk9DQDLzK5bEyF4Hi9VLMsoYI7J6Es5PjeHjnOl5ubqHaaJGBEkzbxplQAKIgDmBHekDTgI+qKKqKLvNApgmEgyquLs1CoFn2Y4cIeLJpkjoCLkWnUSIF3JxISIUsCjAoxhWNJLBIJs3YeXj/08oYZkOKY65HllE/bkMmY504YUd40HUq2JSSyW6iVPmLiXE/ZMYQCU+hXK3h1toqdNN0sEObyKtqtDQ6kXDwcadDS2TBryp4nX2HxXjsJK6bDnZIAZem6Tp5YMMmicn5OC4lztNWtvB9cg+hQABtWjKL2jH/T3GgBcYDXEE6mcDM6SlaJAGMWkivLBC54ZgniZaDHSI4rNSqn7/t1vgkGJPwZXffSeCjk2iUWz9+nSTQN8e6ef8EGAClUi/qoiOc3wAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-qt { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnVJREFUeNpsU8tu00AUPU5sp41NkzRxpfSZqi0VIIQqEEJUZYXECvbwCWxYsuBD+ABUFrDrCnWBQEJdIWigBSr6pqRJ1ebhxrE9M7aZmSrQ4o505fHMnXPPPWdGiaIIYrx89GKpNDdxmXkU3aEoCsT+z8W1Sm21+jCpJctQTvaerj+TX7WbnJ+0cpfuX8mQtn8GgJ4AZtIFY2Hz3foDVRcgyt+cRHcS0IARh+D/8G0PpmVi7smd0dLs+AIjwTVEiANEYYQwCHlEZyJgIQKfoX84g9uPZ0cHZ4YWmE9nuufU0wABCSSImMsWEgqSuoqA/39/swZFTWLy7vQo7dDnfPvWWQa8GuOV3IYLJXmyzDzG2/ChZ3pwbHdQ267BKJoYuj7SF2MQhiF8LuDK/Gf0DKTBKINz1IbTbEMzU1ANDW7LAfEIQKIgBsBFlAx6LYOz6MAcvoDCtAVGGPKlAiIu/F55F33FDA6W93EOAOMaMOl7biKPwRtD8Foetj5sYPfTDtxjl1f3Ubo5jkQieQ4ACSUD2iE4XDpAdbUiW9D7UsiN9WNkZgxajwbd0LGzt3keAJPUc1N5SVeENT0Ao2BKV6QzwlZeRBSKAYhe3aYHcZWn7l1EfjyPypcK9LQGa8qCvW9j9+MvaasQOHaRhGWdhsNLR8hwodYWf6B4tYjDjSOovRqq32rSYq/lytw4A77o1V2ERiAtzY5kkUrrsH+3QF2KY87ArTtQuQ6nAf4x6FCV1D001+vYersBM2vA4y1Rm2D7/Rac/TZIw4d/6MrcGAPf9htN0miJh7Lyuoyvr8rQeP9iVJcrSKgJ+TrFcyYebXTP/RFgAFQobmIOBxbsAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-rar { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnpJREFUeNpsUktPE1EU/u68OgylZXi0hZACQU1LEKKCMcat7jTRnQsXxsQtv4E/4M74P1iriUaNCw1FgxpjCJQKKAU60+m8mJnrmSll4XCTc8+959zz3e88GOcc8aq9evChOHl/lvMoubvWX/z4+BwTlbvw7bXdg8b7h6LE1gGW+O88CRMt4XTlR6/rYxce5Xv3jlHH19fPkBu+gWy5mlcFb3Wn/umeKOEMJF5C7xCFbtA9dRXjFoYKGiTRAlPGUV1aKU9O3VwNQ74A8DQAIZxqAuAhBPIMFYpQVAVB4CPSZjEzv1weH5tbDQN+JQ2Abu488mnzIbAAA3o/VK2PwDJo7r5Fy7ZRuvi4PFS6+qIXdVYD8Jg6BUcuOD8BozSLlRWyicgVKkTMQWwUlFF0Ooe5FIPk57BD7G0SiywyjD8bCDyHsOkeeeR3SUxEkROmU6BfQYFJMHfhWXV8efkUrb13VPMTsrcTQSzxZ/+n0GVA6EGbSGdgG9vo15fg2nFgbO8k70SRdd+mahDT81vUxTZRlJBRMsjq89C0EXCvSf7TIBZ136YZUJEiE7LgJ2dN01BZuE0dkIhxE7KcQTK1QUj+cwAEyrPZ+IydzRoyah+mLy2isbWBweESJEnB9q+1RM9Ub9GQOWkABg8HjRr2d9Yh0hTlBlRsfn+D4vg0BvUC9rZqECUJuk7Tzr1zahCYlB6HJAREPwfbbMBzLBzsbUKVI0qBgQkc+SxgWUYaIAqOpKwKXJ6bgGlaaDV/YvHaFNrtDsKTfVSrJeqIg/bRNwjclFIALeP3saybhu8SC4VBHwnhBXXIKocYRXD9QzBi4Xgchmkd9+L+CTAAMqwy+ZzluBgAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-rb { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAixJREFUeNqEUktvElEU/mag5f2yJhXLwxIt0kiqsVEXujP+A925cu1Pce3WtXVtYuJCF7KtTY0NrVQIpRVKeXTkMcO9F8+9ZVooJJ5kcmbmfOe733fO1YbDIWS8+/g1dycVX7W/xyO3vdsuVKqvnE7HZ230783rlyo7bVBicSGyfjsVwozomVbIPe/c+FmsPHfoRKJd1HT7hXHBZjVbA4aA14NnD9bC2VR8gwuxPi5Sx39Cp+M0XUP0ahhP1jLhW7HFD4zze3b93ILtXYyyVKlR8/5hFbnvO9gtlrGSjOF+OpXkYviWyo8mCS4R6bqO4p86vm3v4fC4DrPfw4unj1XN6JvBaQtjChzUXK43sVU4wNFJA43Tv/B73edQwTmfIhAjCVL6UdPAj1IVFSKhCdAcAI9rnjBiAjtBYEu3GEeh1sKJ0YXR68sVIujzIhzwY8DEBHZqiLRKkicQDfvABxaiQTc4Y/C65pCOXwcjcmlvJgHtlwi4epYifiQWgmoLZwPW6HQG07LgcOgKO0UglAKOTt/E+09fwAiUWU7QAE9xUK3jbvomsispZVHMVEDSZdHo9rCZ/4VIMKAu0XGjpU7d2S8hk0pCELHEzrjKnCQOYJoD+Dxu1RyiwUm5LaMDo9NFt2cqDLvY4oQFp/QpfT/MrmI5FkWebt+NpWto0j2QmQkOjZ9hpwhqjXZzM/+7LU+cc7lRrjXh8/lVLRK5ovLWXglOsiOxdt8/AQYAzv8qbmu6vgEAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-rtf { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe5JREFUeNqEU01PE0EYfnZmd5FSvgLYFuwWt9EgHyEaox68eDJevHvwJ/hTPHv1N/QgZ2NC4g3kUAQKFKGhjVKqRrvbnRlnht262FHfy+y8877PPM8z71pCCKh4/ebt+rJfXEz26Vjf2mnsN5rPKKWbVpx7+eK5Xu2kyMtNTd5d8MdhiJ9BOO7atFI9ajy1UyAqSPIRMR6ZmoNehNHMMB7fX/UWvEKFMbYKE8DfQnAhwRmmJkbx6M6S5+WmK2Evup2c9yUk2nnKA0XVcSiGXAe1k5beP1i+4RFCXqnPywB/AKVzK34RjHNYlgVKCH50w7EBBogbTa/AVM5SgBdn0gc2AMDjPsbFPz2xye9asweS6n+NTbG8BCCfUtLjff2WoVnVpAH6z6hMUtJE3EykYfpF4vUiL3QNS7FMeSAQRBHW3r1Hq91B+VoBQRji4+ExFsvz6Hz7jm7Yw5OH92AcJKW9G4SoHhzhy/lXbB98Qmm2oCXN5WawsV2TACEoJXqwTKOsb3BtR2ucmZxANpPB8JUhyPnHWDaDpfJ1eZFALzJJ4MKO5MEtv4TSXB7V/br8iQLMz+almRZWbvoo5q9qRlxwewCgeXbe3qrVO5ZkUD/9jJGRLPaOm6COi92TU1DbxYe9umRD0DrrtJO+XwIMABWp9nS+FgaoAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-sass { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDNDMTBBM0JGMTE5MTFFMTg3N0NFOTIyMTQ2QzhBNkQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDNDMTBBM0NGMTE5MTFFMTg3N0NFOTIyMTQ2QzhBNkQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowM0MxMEEzOUYxMTkxMUUxODc3Q0U5MjIxNDZDOEE2RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowM0MxMEEzQUYxMTkxMUUxODc3Q0U5MjIxNDZDOEE2RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Po72XUcAAAJcSURBVHjahFJdTxNBFD1bykc/ttvdtttWGgI0bYrUgDZoNYqRJ014kMRXHvwB/hQTH/wFhMREJfFBQxBjhMRIFEQSCAlQxKYGggiU3e3HbnfX2bFt1EU9k9m9mblz5p4zlzFNExYmpue/jmTSZw5PZAl1MAwDT0c7O72wvPdudeNakPNtOZ0tsM7cvzdOc5yN5LDAsTFRAJks/kC2PxFRVe39Si6f4byez62EpAEH/gNN18F53Ri/Ocxf7OtdLMpKT42s/ZPg1cISJp/P0tg0TBzLCoK8D7eHh4RkLLJ4cCz12AjMXwgez8yhqtVo3NbqRKlcxcSL16gZwJ2Ry8KVc8kZO0HdTKlURn+8G6PD2SZhLMQj96WAiMAh2RXFYKI78lcJcx9WYBCycICnpNbojUWpD5Y0C4Zh2D0w6hWc70uQZC+IWfQZrXF0IsHvY+meBd08haAhoVMMQFJKWF7PNZM+klhRyogGhbqxOIXAMOtEwGAqDqVcgbVkkE+5UsEAWavf0az2t0ZqvK2qabh6IU3joizDwTgwej1LdVfJXkdbK8mt2QkayO99A0/0trQ46I1lVcX+UREhnsP34yLp1AD1xibBMuntpzU8mJyi3Tc1O4+l9U06n7x8Q/8PHz1DrrALt8tlr0CrkbJMHTop9Sk5sLa1g8L+ARJdnShKClY3tunN69t5iGLYTlCtakjFY7gxNABdN3B37BaqqoYT8pyX0in4ORbRkIA46YlDRbUTbBZ2Jb/Pw4qiKFnapcpPo9pdbrg8DjAOBsFgELJmsGs7eWkkc5bu/xBgAHkWC6UPADTOAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-scss { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RkM4QjYyNDVGMTE4MTFFMTlBREZCNDNEM0ExMTk0MUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RkM4QjYyNDZGMTE4MTFFMTlBREZCNDNEM0ExMTk0MUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGQzhCNjI0M0YxMTgxMUUxOUFERkI0M0QzQTExOTQxQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGQzhCNjI0NEYxMTgxMUUxOUFERkI0M0QzQTExOTQxQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pkf1yeMAAAJbSURBVHjahFNdTxNBFD0tLULpB91uodVWPmorUIxo0VSiNSExMYYHE33l0Ud/in+C+OSjYgjRGDBRCKJIUkIEWi0WKlja0ul22+5219lJ26gLeiezuXvn7rnnnrlrUFUVms3Mvd2bjIyezRVLBA0zGAzo6jhjm1te+7EU37rFO+w7JlMbtG+ePJ5mOaZmci/nsPl6ONBtw18WDQc9tZq0sp7YjTisXV/NFKRpRvzHpHodDqsF03djzuvDg6vHJWFAprF/Arxe/oins6+YryoqCiUBvNOO+7FrXMjnWc0WyIAOQP0N4Nn8IqqSzPx2swllsYqZl28gK8DDyRvcxKXQvB6gISYpiwgH+jEVi7YAfW4nEqk0PJwDofNejAX7Pae2sPhhHQoF63U5Gai2Bn1epoPWmmaKoug1UBoMrgwHabIVVCx2jdrKFwm67TZ2plldPQGg2cK5HheIUMbaZqKV9In6giDCy3MNYXECgKI2gICxoQAEsQItpNCHWKngMo01arTY/jFIzbutShJuXh1Fm9FImYiM7tTtKOtbO+toN9Nc+fQ5SGUOIVYl7HzPIH2YRZ0y2KZ+sVzBHn2v1mpMGx0DTaR3nzfwfGEJdybGkdo/wEigDyvxLzg4yiESvojZhfd49OAeLJ2degaSLIPOO6vwgiYaaRErTRREEdn8MeJbSVZ5M7nLdNExqFLaQwEfFfACQn1+HBWKSKb3MT4Sgstuh9vVDa+bQ4DORE6o6RlspzMk9TOPfr+fiLJCLFYr3TZSKNcI7+aJwWQmPM+TkqRg49tu65f/JcAAMwMas6WUKd8AAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-sql { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAh5JREFUeNp8kctrE1EUxr+ZyXMkoa1NBROaSkpTBE23PhZ25cql2y5duvAPUdGFS1FxIRRBXZlFQ9GVdDENIhGJxkDsw2mneZnM83ruNZlOmNoDhzlzz3d/9zv3Sowx8Ch/qlYK2XM3cEJsbH0+qjV/rd6/u6aN18b7RMFT+9aosP/Ex+0ae/puw7j36PlKEMAzctKJ3aGFamMHjV0d+wcGitkMrpWWp6hVIciEk2MAOwbUWjosx0UiFoWqJpGMx5DNzODq5aIPoa82AWBg/lyKLMH1PMp/a9XvLXLzG1cuFlBaWpiKxaIPSLY6CaC93ggQjyiQZRkeQSzLRovGaPciWLt5faSWEBoh6KBvOhiaNga0+Y9pwaFxvu7rfp8F5pWDt+qNMp2IijHGwddWCvN+33/CoAOP5nVdT9SdoQ1JkggiQ6Yvr7V60+9z7akA2gfH9cRF8hO5F5Ve4lQAF9uuK+qFsylkzsQxrcaQm04hdWkR83Mzfp9rQ3fAFzu9Ph6+WMfjl6/pGBdb2jbKmx8QlRjWy5vkyhUZBPgOeGNHN9AbDLGUz6He2hVj3Ll9C8/evsdgaMK0HV8bcmDTU0UUBYXcedR+NLGnH0I3jvDk1Rsy46FP4C/1BtrdntCGHNiOAzWZgEKQ5Qt5lIqLojbaXSQTcRy2OwT4SZqk0IYAOgkVWUE+lxX/zb0DpFNpkTzmZmfFtzewhHYcfwUYAMZmVaZQlLFHAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-tga { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnxJREFUeNp0U89PE0EU/ra725K22ILRGipb22pMG6JcSEQTbUIwnozxpBcvepeEP0KPogcT/wlNT17kIKbEmChFUYKGVtL0R2gLtNCl3Z1Z3+zSAlonmezOe/O+973vvZEsy4JYnqdPMu6RkSQYQ29JEkB+PZcrslrtPhQl23VZc8/tr9I1yMHg0EA8HrBM04lVFAhoY38fSSDQVN3pfKV8G7KcxZHl6v1xblqU3eLc3p2VFZjr6+gQgwsnhzGTuq6Nhs6kYZqXjwL0GFhEl3U60OfnwWs1GGtrUKNRsKkpeIIBpKIRtI1J7cX7hXRhc/MOhXw5DkCZGG2zXAajzFIoBMvng1ypIKOqmP30GW3OIEcimovzlxRy5RgAFwDEAIODkCcmIMdiQLsNdWwMZdJlg8pzEUt1aBhKq3XinxKYqF9yQbqRIqsMy+0Gyy47bKgUWXSLtDENE5wdtuqQATm50F1VnPbRGeEw8HXZbiV8fsDvI9ldju9vADAyihLEbrWAZhOoVp3z6iqBUiB1A4nEfwCEsbkL/M4TgE5n5jDx+oTEzp1d8m9tC8H6MaAB0imzx0NU/WKUYE+loEyawDBo2ui6TGfT6ANAxrvx87gYCGCxXEKVJvCWFsG3eh1vN/J4OD6Od4UC8o0G3TX7TGLHwI9iEQmvF9X6Fh7F4/iYy+GcLOMSlfEgGsP0qdNOmX0BiGKpVkV1bw/1nW2b/gCpf1PTcI+Y7eg6ps+G4bG4PR99SjAVo9HE4q+fKNE0vl5awuSohjeijbRefVjAtUgEQRK7Yhi9OKn7nKWZxxlSPWl3QwgnaIrW8QMhD542vUbx/W49m7sq4v4IMABOqi3Ej7bAEAAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-tgz { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnhJREFUeNpsU1trE0EYPbMzSTfdtInFtkkpiaXVWou2FRUEn/so6JugL/oH/Af+B1988if40jcFERQURNBSQdDWlLQN2lsue8neZsZvc7FoOrDszM75znfOmVmmtUYyvry++36yfOeS1qqzDtvH2P76ApPlW3Drb2sHex/uccHWAdbZX30kO2+B3siN3zhTnHuQ66+95i423jzFzOVljBdKOZNHazvVT7e5wF+SZBj9iZJ+3J11mbW2kR8T4LwFli5i4fqTUvnczTUp9RLtDhKgJx0q4dEwWAxrREKICHEsoYYXMXvlcWmquLgmY71yCkG/c0AkARgLMZpnMDMpGNzEYe0dGp6HwvmHpbHC1Wf9MnFCkHQOyYEPzSJwQ2B65Tm5NZG3Fshim6wbMNJn4bpHowMKtIqo2COgR2IcAptwjvcgo6i77igjEmVDqbY8xQJ1VwRULhiBI6+G9Zf3cbTziuzIDkmHSNqECTFgQScEcYuc2NA8TcdYwXD+GkK/TYVN+u72WrIudiAD8o6oAR2RRCmQMjis3CIy1iSpPySCXhFTXeyAgh4BR+JVw8pauLi0Cp4yCX9A90FQhnSBYtnF/k+Q+HYam9itfIZB3QvT8zj8XSW5EhNTs9ivbSLwPUzPLNPJBIMEKnaQYg6aB9+RGR5F5VsNgnNKXMI1NdJGG5WfHzFVLJ7k8c8xUngpVodlDSGbFYj8Y4yMpOG09lHf3yIFPzA3fwHZTAQVtU4JUTeFDrdgDdlI8wAz5Qy2KxswReI7QODZcOr0ZH3q2hIDBI7zq16tuk3FNPxAI4wN+pkoccYoE4YJU5EdUtM4Qst26v26PwIMAKj3P/2YUKgYAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-tiff { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmRJREFUeNp0UktPE1EU/qYzHWstlrYJNcWUElyUJsaNGh9B0g1Lo0v9Ey78EbrVxBhXuHShm25YGBJRQpAYBDEWpaEPEhksdVpbyjzveO4MfZDCTWbauefc736PIziOA77OPH2yJCcSGdg2uksQAKofFou/7VrtASRpvVNynj13f6XOhjg8HAlMTIQdy/LO+v3uYUPTkAHCTb+cK+0pdyGK6+hbvu4/xiyHbncYAwfR19ZgbG/DoO9LsSgeTd9JXoxfyMG2rvQDdBlwIZauQ5ufh12twioU4E+nYU1NIRCNIDs+Bt28mXzx8VNuZ796j9q/DgAwomwqClilAmF0FE4wCInAlkjO4y+r0JgNX2os6XPYS2q/cQyAcQatFjA0BPH6NYipccAwIGUy2CVJFZInkKlyJAqx3T4/IMGmJkeWIWSz5KgI5pdhb3yDXS5DSCYh8rTID8s0wexeVD0GtMd85KkkefFxUfE47M1NokbJkByEQl6tL+ouAI+MUwbFhnYbaJKc/Sqg0x4H4eDRGDA56fUOABA9/GsCpaIHwr8FOhQ823O5RfW66tUGADhNy3RNRDjcN41HLxdQ8J6jYTsOQLfOJBK4f+s2/uoathoNGKT1MtFeVHZxdWTEZfEq/wMKl3rCJOIzTV6ADs2R5ulYDDNkYjp0DhrF+zCVgkw31+v1UxjQZkNV0SADd2o1MIuc9gmY+/kLxb0/UFoHePd9A1qzeUoKpilx9xcLWzgg+u/zeVfuQqkM9bCN1ysrWKXxdtPgvScwUAm58XZ52W16QyPtifRUzi588GbEi1ztHPsvwAC4uC9qhnsZvwAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-txt { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeJJREFUeNp8UrtOG1EQPfsyXiyzBguIJSyChZBBEFCKpKHLo6egpErNn8CHgH8gkZIiTSIXLhJAWCgkoMgRMSiRBSK29z4y9+I1d/HCrFb3MTPnnjkzlpQSynY+fP70fGF2gQuByCz6lfdd9Uurfvrrjes6762eb3tzQ69uFJwPsqOPC+MBEmxxphi4tlU5OGmsOzaBWLc+O9oIIVhScidkyGZ8vH62nHtSKlaI4cse6TjAfSaFBBcco0EWqyvzubmpyQrj/FXk75cQaSEMeMXU8xykPA/Hjd/6/LRcyjEpt2i7HAe4A2TeLZWKUOJaVLxj27j813EHGKCXaAJExu/4BOdiAED08riQD2riOrexyRoYc3CvsAbLGAAjZga7vgZG23WMCdBvoxKJc36TRBlMiaa2JByjNqqD8qkYc1pjDK7abey+/YhrWlfKswhpiCR96aEU9o5+QE3g2ovVWDm2Sc22bBQm8vrVpbkS9r+doPr1EOWZaQ0yFoxg2PcREosEAI4uvZhJpzFMP+cSXRbq+043RManez+tNWKMI6GN0g0Z04HFR+NoNC/0yx717efZOSbzY3AcR4Op2AGA5p/W31r9e0vNgSrh9OwCrpeCkqvZuqTybnpRqx/r2CjvvwADAJC/7lzAzQmwAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-wav { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApFJREFUeNpsU1tPE0EYPXtpKbX0wqUQKVQMFdIXQBNCQBs06KP+B8ODGh+Mf4b/4IsGE54kxhcMBrkp7YOQgBRvSKG73fvsrt8Otoask0xmd+b7zpxzvm8E3/cRjPkniyulW0NFy2JoDkEAguOlpXJ9p3L8MBqVl4O9YHxae8pXuRlcGO7KPLhfTDVUqwUgigJMy4Whm6lEXHjxYf3XnByRN0QB/2KaH7btMlUxoRJAcyqKhdOaht7+DJ49n+2cvTnwynXcsb+kLwJ4rgfmMDDGWqvneXCZS9ND7mov5h9ND85M9y86Dpto5rUkuJ4Py3YDJpy6QGJPayqB+Njf+43XL220t0cwOZkfrNXsBUqZugDA6CbLdAiAwaek1ZU9LmP8Rh6S78GsGxjOp9FdzKJaVZIhBgGASzK21w/wbrnCk8euX+EMAjaaZuPHdwUdHVFYluuGPGCORwwYjg5rqOwccRk+3Ux0IEvntmsNG4ZmUayL/wAwKHUNfZfTKN0ZRaw9Cof8qJ/pMAyHy5KkAMTksSEJtnMenM7EMVMawbejMzJRh67bXEYiIXEAVTW50SEAhzqwfqrBcXx4VOhYm4RsNgHbsJFOyZTsQ1MN+hcohoUlkFiMT+TQFpMwXOjGpXgE+XwGk1N5pFJtKNCequgYGupCRBbCDOp0KBJc4VoP3dyBONW8uydBgBHUThqQKCk3mEZ/LoUG+RBioJO7VarAwEAntjYPiUUW9Hh4b2R7k9j98hN37xWx8fGAt3eIAdVMLn+uUv+b2KReSCZjZJiB9bV9jIz2ofr1BKvvd7G9dRC80lae0HzOt+cWVnrSKDrMJykifwNBpCgE/UAllEXufmDu8Zlffvvm8XSQ90eAAQA0pF7c08o4PAAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-wmv { - background-image:url("data:image/svg+xml;charset=utf8,%3Csvg id='Layer_2' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 100'%3E%3Cstyle/%3E%3ClinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='36.2' y1='101' x2='36.2' y2='3.005' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23e2cde4'/%3E%3Cstop offset='.17' stop-color='%23e0cae2'/%3E%3Cstop offset='.313' stop-color='%23dbc0dd'/%3E%3Cstop offset='.447' stop-color='%23d2b1d4'/%3E%3Cstop offset='.575' stop-color='%23c79dc7'/%3E%3Cstop offset='.698' stop-color='%23ba84b9'/%3E%3Cstop offset='.819' stop-color='%23ab68a9'/%3E%3Cstop offset='.934' stop-color='%239c4598'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill='url(%23SVGID_1_)'/%3E%3Cpath d='M45.2 1l27 26.7V99H.2V1h45z' fill-opacity='0' stroke='%23882383' stroke-width='2'/%3E%3Cpath d='M9.1 91.1L4.7 72.5h3.9l2.8 12.8 3.4-12.8h4.5l3.3 13 2.9-13h3.8l-4.6 18.6h-4L17 77.2l-3.7 13.9H9.1zm22.1 0V72.5h5.7l3.4 12.7 3.4-12.7h5.7v18.6h-3.5V76.4l-3.7 14.7h-3.7l-3.7-14.7v14.7h-3.6zm26.7 0l-6.7-18.6h4.1l4.8 13.8 4.6-13.8h4L62 91.1h-4.1z' fill='%23fff'/%3E%3ClinearGradient id='SVGID_2_' gradientUnits='userSpaceOnUse' x1='18.2' y1='50.023' x2='18.2' y2='50.023' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3ClinearGradient id='SVGID_3_' gradientUnits='userSpaceOnUse' x1='11.511' y1='51.716' x2='65.211' y2='51.716' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='.005' stop-color='%23963491'/%3E%3Cstop offset='1' stop-color='%2370136b'/%3E%3C/linearGradient%3E%3Cpath d='M64.3 55.5c-1.7-.2-3.4-.3-5.1-.3-7.3-.1-13.3 1.6-18.8 3.7S29.6 63.6 23.3 64c-3.4.2-7.3-.6-8.5-2.4-.8-1.3-.8-3.5-1-5.7-.6-5.7-1.6-11.7-2.4-17.3.8-.9 2.1-1.3 3.4-1.7.4 1.1.2 2.7.6 3.8 7.1.7 13.6-.4 20-1.5 6.3-1.1 12.4-2.2 19.4-2.6 3.4-.2 6.9-.2 10.3 0m-9.9 15.3c.5-.2 1.1-.3 1.9-.2.2-3.7.3-7.3.3-11.2-6.2.2-11.9.9-17 2.2.2 4 .4 7.8.3 12 4-1.1 7.7-2.5 12.6-2.7m2-12.1h1.1c.4-.4.2-1.2.2-1.9-1.5-.6-1.8 1-1.3 1.9zm3.9-.2h1.5V38h-1.3c0 .7-.4.9-.2 1.7zm4 0c.5-.1.8 0 1.1.2.4-.3.2-1.2.2-1.9h-1.3v1.7zm-11.5.3h.9c.4-.3.2-1.2.2-1.9-1.4-.4-1.6 1.2-1.1 1.9zm-4 .4c.7.2.8-.3 1.5-.2v-1.7c-1.5-.4-1.7.6-1.5 1.9zm-3.6-1.1c0 .6-.1 1.4.2 1.7.5.1.5-.4 1.1-.2-.2-.6.5-2-.4-1.9-.1.4-.8.1-.9.4zm-31.5.8c.4-.1 1.1.6 1.3 0-.5 0-.1-.8-.2-1.1-.7.2-1.3.3-1.1 1.1zm28.3-.4c-.3.3.2 1.1 0 1.9.6.2.6-.3 1.1-.2-.2-.6.5-2-.4-1.9-.1.3-.4.2-.7.2zm-3.5 2.8c.5-.1.9-.2 1.3-.4.2-.8-.4-.9-.2-1.7h-.9c-.3.3-.1 1.3-.2 2.1zm26.9-1.8c-2.1-.1-3.3-.2-5.5-.2-.5 3.4 0 7.8-.5 11.2 2.4 0 3.6.1 5.8.3M33.4 41.6c.5.2.1 1.2.2 1.7.5-.1 1.1-.2 1.5-.4.6-1.9-.9-2.4-1.7-1.3zm-4.7.6v1.9c.9.2 1.2-.2 1.9-.2-.1-.7.2-1.7-.2-2.1-.5.2-1.3.1-1.7.4zm-5.3.6c.3.5 0 1.6.4 2.1.7.1.8-.4 1.5-.2-.1-.7-.3-1.2-.2-2.1-.8-.2-.9.3-1.7.2zm-7.5 2H17c.2-.9-.4-1.2-.2-2.1-.4.1-1.2-.3-1.3.2.6.2-.1 1.7.4 1.9zm3.4 1c.1 4.1.9 9.3 1.4 13.7 8 .1 13.1-2.7 19.2-4.5-.5-3.9.1-8.7-.7-12.2-6.2 1.6-12.1 3.2-19.9 3zm.5-.8h1.1c.4-.5-.2-1.2 0-2.1h-1.5c.1.7.1 1.6.4 2.1zm-5.4 7.8c.2 0 .3.2.4.4-.4-.7-.7.5-.2.6.1-.2 0-.4.2-.4.3.5-.8.7-.2.8.7-.5 1.3-1.2 2.4-1.5-.1 1.5.4 2.4.4 3.8-.7.5-1.7.7-1.9 1.7 1.2.7 2.5 1.2 4.2 1.3-.7-4.9-1.1-8.8-1.6-13.7-2.2.3-4-.8-5.1-.9.9.8.6 2.5.8 3.6 0-.2 0-.4.2-.4-.1.7.1 1.7-.2 2.1.7.3.5-.2.4.9m44.6 3.2h1.1c.3-.3.2-1.1.2-1.7h-1.3v1.7zm-4-1.4v1.3c.4.4.7-.2 1.5 0v-1.5c-.6 0-1.2 0-1.5.2zm7.6 1.4h1.3v-1.5h-1.3c.1.5 0 1 0 1.5zm-11-1v1.3h1.1c.3-.3.4-1.7-.2-1.7-.1.4-.8.1-.9.4zm-3.6.4c.1.6-.3 1.7.4 1.7 0-.3.5-.2.9-.2-.2-.5.4-1.8-.4-1.7-.1.3-.6.2-.9.2zm-3.4 1v1.5c.7.2.6-.4 1.3-.2-.2-.5.4-1.8-.4-1.7-.1.3-.8.2-.9.4zM15 57c.7-.5 1.3-1.7.2-2.3-.7.4-.8 1.6-.2 2.3zm26.1-1.3c-.1.7.4.8.2 1.5.9 0 1.2-.6 1.1-1.7-.4-.5-.8.1-1.3.2zm-3 2.7c1 0 1.2-.8 1.1-1.9h-.9c-.3.4-.1 1.3-.2 1.9zm-3.6-.4v1.7c.6-.1 1.3-.2 1.5-.8-.6 0 .3-1.6-.6-1.3 0 .4-.7.1-.9.4zM16 60.8c-.4-.7-.2-2-1.3-1.9.2.7.2 2.7 1.3 1.9zm13.8-.9c.5 0 .1.9.2 1.3.8.1 1.2-.2 1.7-.4v-1.7c-.9-.1-1.6.1-1.9.8zm-4.7.6c0 .8-.1 1.7.4 1.9 0-.5.8-.1 1.1-.2.3-.3-.2-1.1 0-1.9-.7-.2-1 .1-1.5.2zM19 62.3v-1.7c-.5 0-.6-.4-1.3-.2-.1 1.1 0 2.1 1.3 1.9zm2.5.2h1.3c.2-.9-.3-1.1-.2-1.9h-1.3c-.1.9.2 1.2.2 1.9z' fill='url(%23SVGID_3_)'/%3E%3ClinearGradient id='SVGID_4_' gradientUnits='userSpaceOnUse' x1='45.269' y1='74.206' x2='58.769' y2='87.706' gradientTransform='matrix(1 0 0 -1 0 102)'%3E%3Cstop offset='0' stop-color='%23f9eff6'/%3E%3Cstop offset='.378' stop-color='%23f8edf5'/%3E%3Cstop offset='.515' stop-color='%23f3e6f1'/%3E%3Cstop offset='.612' stop-color='%23ecdbeb'/%3E%3Cstop offset='.69' stop-color='%23e3cce2'/%3E%3Cstop offset='.757' stop-color='%23d7b8d7'/%3E%3Cstop offset='.817' stop-color='%23caa1c9'/%3E%3Cstop offset='.871' stop-color='%23bc88bb'/%3E%3Cstop offset='.921' stop-color='%23ae6cab'/%3E%3Cstop offset='.965' stop-color='%239f4d9b'/%3E%3Cstop offset='1' stop-color='%23932a8e'/%3E%3C/linearGradient%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill='url(%23SVGID_4_)'/%3E%3Cpath d='M45.2 1l27 26.7h-27V1z' fill-opacity='0' stroke='%23882383' stroke-width='2' stroke-linejoin='bevel'/%3E%3C/svg%3E"); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-xls { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmxJREFUeNpsU0trFEEQ/mamZ3Y2+0zIC2MmITEkUYgERFQErx5E8KTi1b/h79A/4SW3nCNeYggBYZVEMU/y3N3Z7M7OTD/G6lk2ruw20zRdU/XV91VVG0mSQK/3n1a/jky6d6Xs3G8WXS+Pw5N6LXjLLGuna/78oZKerGsYKtrDE16uJGL1L9gEOOcYd2dL1fNwrbL//aXN7J1efPMmkUqEFAk0A0VZNbFEaQCBscIkXj975y3NLq9xye8PBkAniHOFph+j2eC4rsdoB4LsFubGl/Hq8RtvYWpxTQi52o1jvWiGYaRZL0/auDgOkC/Z8BYL2Pqxidp1FZkhoDxpeaXA/Ujuj/4HoOxKKjiOiek7RUShRNQWaNYFQuMafrYCxiw4ozZKfqbYJ0EvRdl1DQyyTs8XCNTA6UELMwvDyLpZWIZNNlNLlQOK2LMJRJ+5AkuZ1S7CFFzJzk56GnUjQWlYkqCoBWFbonEVYcLLA4dNnB624GQsDBWIgfZJEgxkoChzSFWvn4VpQemDm2VwXQsXJwF1h6c+gxlQ5jgSiEUEt0wdIe7tMES+nEG2aCLiJMOIIWIr9e0DEELAMUrwRuchVAyTKimUwO75Jm6VF3Bv7imOaj+xd7UFKVS/BPJF1b/E4tgTrE49J60O5kceoNqowiuuYKa8ghHXA48U9MT2AQgyRvTThE30bQiaSGa4yLMJNFo+Dq/2cHt4CYlwyFf2S6BHwwrMw/avDbR5C1k7h1YQ4KH3Amf+AcZyEbZPv9CItzQD1l9EbtYOjv74v/d3O9RMPTDrsEwGIWN8q2yk7XNYRs9JrRv3V4ABADSGR6eQ0/NQAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-xlsx { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmlJREFUeNpsU8tqFEEUPVXdPY/ueWZIoiYZiSYKYhJc6EbduHOhgijo3t/wH1z6B0JAhOyMILhxo4kJGk1ASTAxwWF0Mpp5dHc9vFUzYwidaoqmq+8959xzbzGtNcx69PTS26ETmQtS9r4Hy/xv7MW7jV+th5yzVcaYPX/++It9u4NAv+CVR6tBUUTqMJsDcRzjZOZM8W9ZLKx+/XDb4e5/kH5In0lpIYWGUaC0YTZnBCAEKoVR3L36oDo7NbsglZwbqD6iQKOXFMcKUVfBkBAoQhlD5xxMDp/HrSv3q1JgYW3z0x0KXzkCYJaRZljru23aHWTzLiamAyytv0O9UYdf5PArqlppBfMUfu4oALErqZBKcUxMFRCHEp0DgW5Lo4N9NIN1dF0XXsVFOUyPJTzo+WBANDidjp8tgHGG3c0DnJ4uIRf4cOCBaW5KjY8xkZL72xpJ9QcFz5bVqHUJGHZL2YtNmKi06YCyiVFb4s/vEKMTAf1p4edOG6mMi1zR6wEpdUwX+vLDtkCzHoK7ptcM6ayLmGajvtex4PliyoIkFRjmUEASelB2rXQRSfjUCT9PlWpmW21iTGzCAyEkUixPRqXhe2V4zKczbdmybgkpJ0cGOuA6Y2MTCsKoi5HsNK7N3MN+uwYaWbxYfoLLkzdxcew6lrYWaZhm8PHHG3zffp1UwJSHz9vvkU8PodbcQYYYS5lxYkxTkGdVDQdV1Js1qPgYD6JIuIE7gsXVefIhIuM05k7dwMbeMmh87a18ufIMaVYyprrJLgje2Nr+1tzYXANnDnr3zRhHj37Vvy2wpXHtNAd5/wQYAD6WMuT2CwoVAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-xml { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAilJREFUeNqMks1PE0EYxh+g3W2t1G0sEqyISynUFJsSOShNwCamiYZED3LgIkcuxoN/iCZePZiYGD2aGD+i0F5KMChxlVaakAK2ykcAt+WzdLu7zkxo3WZL4pu8mXfmeeY3885ug67roPFh5nvc62m9hjoR+5LMp7MrkYf370qVtco+VtCUFpbj+jGR+JbWn76OyQ8ePwsZATQb8R/hanZgINgj9IqeuBFCw1Kt9OMBnNWCs24XwkG/QKYUEiGjVAPQof/rq0783pShET3ULQo8xz0iS5FaANmrHQH2DoqY+DSLSz6RzecWlnD9ymU47LYjd4O5BXqDTG4FM3NpTEkpdJ5rw0AowLRMbhUfp58gTOaD/UHmNQPI6YmvKWRX1zESHUJ/oBs2nmPa+Mgw0ZIM3tZyGoJwygzQNB2jNyJIZX7iB0lpPoM70UGmPX8zCU+rG8NDVxHwdiC5mKsPUFUN/gvtLLf39sFzVqaN3YrC6TjBauqhXhNA1TQoqloV7Da+pjZq1FsXUCamF29j6LvYhf3iISamZ3Fv9DZevouhRzzPfOG+3hpA9U9UyioOlTJ7pFeTCQS6RGzIebyf+oz5pSzWtmSW1EO9phvQ00slBRt/8qR3DoWdXbiczUiTzd52D+tdLmyTB14mx1rMAKVcRpEATjrsuElee/HXGmnFRyBOGD30C/nEDjNgs7CDpsYmnHG3YPegBCvHs9oYfm8nG9dJa5X4K8AAQzQX4KSN3wcAAAAASUVORK5CYII=); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-yml { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdxJREFUeNqMUl1rE0EUPbM7m5Y0Zptu21AwWwhYpfSDFh+kvvRd8N0Hf4I/xWdf/Q158F0QoQ+CVsFKaLSQpt/dpmvztTOzzky6cetOpWcZZvbO3MO5514SxzEU3r57/3GpWllM/tP4sL3TarROXuSo/SWJvX71Uu80Cfhlr/T4UdWFAVfdnmsTUtvdP35OUyQKVnJgXDBTcj9icAsTeLax7j/052qM81UjwW1QJXEhMF0qYnN90fdnvdogYmvJPU0/VBApD4hcDrWRcyikfB17srzgW7b9Rh1vEvxDlI4tVytaBSEEtmWh0xsUMwpwnWjqAlcxogiHd1wiQyCu87iI/+sJtf6+NXsgpd7FWCMB50KvkYMGMbLdZgLlfj+K9K4+FnFQ2x7WntIs50AbmiGwLILt+k+EvzvSNIHzdigdJ/AmXQRhiHv5POSwYmG+cqPVo0HqDxj8uTK2vn1Hfa+JmdIkvtZ/4fOPXU3WPDpFeNWVyUKryCiIGMN4zsH98gym3CIcOTwT+XHdXrdQQHAZotE8kBPpSqPNHtBOr48HUmLOcXRJT9dWNMGYJFby91pHOAvaykSaITg+bwefdhrteDRTMSwyrFCgI88E056Hy+4Ah2cXQZL3R4ABALUe7fqXWFN6AAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} - -.ipfs-zip { - background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAm9JREFUeNpsk0tv00AUhc+MY6dOmgeFJg1FoVVpUWlFC0s2IFF1jxBbhKj4BSxYdscPYcEmQmIDq0gsERIViy4TpD7VFzF1Ho5je2a4thOqNhlp5Mz4zudzzp0wpRTC8fPrk0/TC6+fDtYicLH97T1Kc2vQDcs+rH3eUAxVznn0fn1DRM8E+iOdv5ct3XmZG6yVlNj6solUbgVTt0q5FGtX6vXqC6VklTE+KAO/OODHSIQPRQpsXC+kkEz2ELA0ystv84tLzyucsbWByisAGf+QAS2CCDRRLMJMmxC+i8C4jdLCm/zM7OOKFGptcO6/BTpJ0yeQB0Y+mfKQuZZG0jQgeRbW8Xdomobs9LN8scc+UPHNy4Dwq8IljotIIQEm59/RoSyM1CKkXKZNBm7kIVgyM6wgAnSgRK9vqQfHPiMFDHqyFVsLR9Cm0o4YzoAASrSjCelQfRPb1Vc4qn0EY5L2W9GEaBLcxQgFHpGbkMIDJ69e+wjJ8VXqRgKid0r7ftQdxkRs9SqA2kgAm14SSIQh9uhuLGPMnKJs/5KquL1x0N0RCsizigoDaLqBdHoMiyvrlBsHVx1wphD4BCewoqxGKKDwAgtOy8JufYuk+5golGGaGZwc1sIGoDz3AOPZSVLaHgVwydoJDM1H4DbQODughB3YpOD44HfoHgnu4e7So0uAi0stHLJ3Aud8B9bpHu6vPoSu9TtDl6tUuoFiIYOgu0+158MKmOxomtyD3Qi/3MTR7i8K0EDG1GHO5DE3X4DvNahZlJOwEkOATvdPc2//hx3mXJ5lFJaF8K8bStd0YGfnOJbMGex21x6c+yfAAOlIPDJzr7cLAAAAAElFTkSuQmCC); - background-repeat:no-repeat; - background-size:contain -} diff --git a/gateway/assets/src/style.css b/gateway/assets/src/style.css deleted file mode 100644 index 3e7b8a734..000000000 --- a/gateway/assets/src/style.css +++ /dev/null @@ -1,212 +0,0 @@ -body { - color:#34373f; - font-family:"Helvetica Neue", Helvetica, Arial, sans-serif; - font-size:14px; - line-height:1.43; - margin:0; - word-break:break-all; - -webkit-text-size-adjust:100%; - -ms-text-size-adjust:100%; - -webkit-tap-highlight-color:transparent -} - -a { - color:#117eb3; - text-decoration:none -} - -a:hover { - color:#00b0e9; - text-decoration:underline -} - -a:active, -a:visited { - color:#00b0e9 -} - -strong { - font-weight:700 -} - -table { - border-collapse:collapse; - border-spacing:0; - max-width:100%; - width:100% -} - -table:last-child { - border-bottom-left-radius:3px; - border-bottom-right-radius:3px -} - -tr:first-child td { - border-top:0 -} - -tr:nth-of-type(even) { - background-color:#f7f8fa -} - -td { - border-top:1px solid #d9dbe2; - padding:.65em; - vertical-align:top -} - -#page-header { - align-items:center; - background:#0b3a53; - border-bottom:4px solid #69c4cd; - color:#fff; - display:flex; - font-size:1.12em; - font-weight:500; - justify-content:space-between; - padding:0 1em -} - -#page-header a { - color:#69c4cd -} - -#page-header a:active { - color:#9ad4db -} - -#page-header a:hover { - color:#fff -} - -#page-header-logo { - height:2.25em; - margin:.7em .7em .7em 0; - width:7.15em -} - -#page-header-menu { - align-items:center; - display:flex; - margin:.65em 0 -} - -#page-header-menu div { - margin:0 .6em -} - -#page-header-menu div:last-child { - margin:0 0 0 .6em -} - -#page-header-menu svg { - fill:#69c4cd; - height:1.8em; - margin-top:.125em -} - -#page-header-menu svg:hover { - fill:#fff -} - -.menu-item-narrow { - display:none -} - -#content { - border:1px solid #d9dbe2; - border-radius:4px; - margin:1em -} - -#content-header { - background-color:#edf0f4; - border-bottom:1px solid #d9dbe2; - border-top-left-radius:3px; - border-top-right-radius:3px; - padding:.7em 1em -} - -.type-icon, -.type-icon>* { - width:1.15em -} - -.no-linebreak { - white-space:nowrap -} - -.ipfs-hash { - color:#7f8491; - font-family:monospace -} - -@media only screen and (max-width:500px) { - .menu-item-narrow { - display:inline - } - .menu-item-wide { - display:none - } -} - -@media print { - #page-header { - display:none - } - #content-header, - .ipfs-hash, - body { - color:#000 - } - #content-header { - border-bottom:1px solid #000 - } - #content { - border:1px solid #000 - } - a, - a:visited { - color:#000; - text-decoration:underline - } - a[href]:after { - content:" (" attr(href) ")" - } - tr { - page-break-inside:avoid - } - tr:nth-of-type(even) { - background-color:transparent - } - td { - border-top:1px solid #000 - } -} - -@-ms-viewport { - width:device-width -} - -.d-flex { - display:flex -} - -.flex-wrap { - flex-flow:wrap -} - -.flex-shrink-1 { - flex-shrink:1 -} - -.ml-auto { - margin-left:auto -} - -.table-responsive { - display:block; - width:100%; - overflow-x:auto; - -webkit-overflow-scrolling:touch -} diff --git a/gateway/assets/style.css b/gateway/assets/style.css new file mode 100644 index 000000000..d6990dfbb --- /dev/null +++ b/gateway/assets/style.css @@ -0,0 +1,225 @@ +:root { + --sans-serif: "Plex",system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif; + --monospace: Consolas, monaco, monospace; + --navy: #073a53; + --teal: #6bc4ce; + --turquoise: #47AFB4; + --steel-gray: #3f5667; + --dark-white: #d9dbe2; + --light-white: #edf0f4; + --near-white: #f7f8fa; + --radius: 4px; +} + +body { + color: #34373f; + font-family: var(--sans-serif); + line-height: 1.43; + margin: 0; + word-break: break-all; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; +} + +pre, code { + font-family: var(--monospace); +} + +a { + color: #117eb3; + text-decoration: none; +} + +a:hover { + color: #00b0e9; + text-decoration: underline; +} + +a:active, +a:visited { + color: #00b0e9; +} + +.flex { + display: flex; +} + +.flex-wrap { + flex-flow: wrap; +} + +.flex-shrink { + flex-shrink: 1; +} + +.ml-auto { + margin-left: auto; +} + +.nowrap { + white-space:nowrap +} + +.ipfs-hash { + color: #7f8491; + font-family: var(--monospace); +} + +#header { + align-items: center; + background: var(--navy); + border-bottom: 4px solid var(--teal); + color: #fff; + display: flex; + font-weight: 500; + justify-content: space-between; + padding: 0 1em; +} + +#header a { + color: var(--teal); +} + +#header a:active { + color: #9ad4db; +} + +#header a:hover { + color: #fff; +} + +#header .ipfs-logo { + height:2.25em; + margin:.7em .7em .7em 0; + width:7.15em +} + +#header nav { + align-items: center; + display: flex; + margin: .65em 0; +} + +#header nav a { + margin: 0 .6em; +} + +#header nav a:last-child { + margin: 0 0 0 .6em; +} + +#header nav svg { + fill: var(--teal); + height: 1.8em; + margin-top: .125em; +} + +#header nav svg:hover { + fill: #fff; +} + +main { + border: 1px solid var(--dark-white); + border-radius: var(--radius); + overflow: hidden; + margin: 1em; + font-size: .875em; +} + +main header, +main .container { + padding-left: 1em; + padding-right: 1em; +} + +main header { + padding-top: .7em; + padding-bottom: .7em; + background-color: var(--light-white); +} + +main header, +main section:not(:last-child) { + border-bottom: 1px solid var(--dark-white); +} + +.grid { + display: grid; +} + +.grid > div { + padding: .7em; + border-top: 1px solid var(--dark-white); +} + +.grid.dir { + grid-template-columns: min-content 1fr min-content min-content; +} + +.grid.dir > div:nth-of-type(4n+1) { + padding-left: 1em; +} + +.grid.dir > div:nth-of-type(4n+4) { + padding-right: 1em; +} + +.grid.dir > div:nth-child(-n+4) { + border-top: 0; +} + +.grid.dir > div:nth-of-type(8n+5), +.grid.dir > div:nth-of-type(8n+6), +.grid.dir > div:nth-of-type(8n+7), +.grid.dir > div:nth-of-type(8n+8) { + background-color: var(--near-white); +} + +.type-icon, +.type-icon > * { + width: 1.15em +} + +.terminal { + background: var(--steel-gray); + color: white; + padding: .7em; + border-radius: var(--radius); + word-wrap: break-word; + white-space: break-spaces; +} + +@media print { + #header { + display: none; + } + + #main header, + .ipfs-hash, + body { + color: #000; + } + + #main, + #main header { + border-color: #000; + } + + a, + a:visited { + color: #000; + text-decoration: underline; + } + + a[href]:after { + content:" (" attr(href) ")" + } +} + +@media only screen and (max-width: 500px) { + .dn-mobile { + display: none; + } +} + diff --git a/gateway/assets/templates.go b/gateway/assets/templates.go new file mode 100644 index 000000000..73b4696ae --- /dev/null +++ b/gateway/assets/templates.go @@ -0,0 +1,81 @@ +package assets + +import ( + "bytes" + "html/template" + "io" + "io/fs" + "net/url" + "path" +) + +// custom template-escaping function to escape a full path, including '#' and '?' +func urlEscape(rawUrl string) string { + pathURL := url.URL{Path: rawUrl} + return pathURL.String() +} + +// iconFromExt is a helper to guess the icon for a filename according to its extension. +func iconFromExt(filename string) string { + ext := path.Ext(filename) + if _, ok := KnownIcons[ext]; ok { + return "ipfs-" + ext[1:] // Remove first dot. + } + return "ipfs-_blank" // Default is blank icon. +} + +var funcMap = template.FuncMap{ + "iconFromExt": iconFromExt, + "urlEscape": urlEscape, +} + +func readFile(fs fs.FS, filename string) ([]byte, error) { + f, err := fs.Open(filename) + if err != nil { + return nil, err + } + return io.ReadAll(f) +} + +func loadStyles(fs fs.FS) ([]byte, error) { + iconsBytes, err := readFile(fs, "icons.css") + if err != nil { + return nil, err + } + + stylesBytes, err := readFile(fs, "style.css") + if err != nil { + return nil, err + } + + css := []byte("")...) + css = bytes.ReplaceAll(css, []byte("\t"), []byte{}) + css = bytes.ReplaceAll(css, []byte("\n"), []byte{}) + css = bytes.ReplaceAll(css, []byte("\r"), []byte{}) + return css, nil +} + +func BuildTemplate(fs fs.FS, filename string) (*template.Template, error) { + css, err := loadStyles(fs) + if err != nil { + return nil, err + } + + pageHeader, err := readFile(fs, "header.html") + if err != nil { + return nil, err + } + + templateBytes, err := readFile(fs, filename) + if err != nil { + return nil, err + } + + templateBytes = bytes.Replace(templateBytes, []byte(""), css, 1) + templateBytes = bytes.Replace(templateBytes, []byte("
"), pageHeader, 1) + + return template.New(filename).Funcs(funcMap).Parse(string(templateBytes)) +} diff --git a/gateway/assets/test/go.mod b/gateway/assets/test/go.mod deleted file mode 100644 index 8980d9a71..000000000 --- a/gateway/assets/test/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module gateway-test - -go 1.19 diff --git a/gateway/assets/test/main.go b/gateway/assets/test/main.go index 96d940496..d5e996055 100644 --- a/gateway/assets/test/main.go +++ b/gateway/assets/test/main.go @@ -2,23 +2,24 @@ package main import ( "fmt" - "html/template" "net/http" - "net/url" "os" + "strconv" + + "github.com/ipfs/boxo/gateway/assets" ) const ( - directoryTemplateFile = "../directory-index.html" - dagTemplateFile = "../dag-index.html" - testPath = "/ipfs/QmFooBarQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7/a/b/c" ) -var directoryTestData = DirectoryTemplateData{ +var directoryTestData = assets.DirectoryTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: "http://example.com", + }, GatewayURL: "//localhost:3000", DNSLink: true, - Listing: []DirectoryItem{{ + Listing: []assets.DirectoryItem{{ Size: "25 MiB", Name: "short-film.mov", Path: testPath + "/short-film.mov", @@ -39,7 +40,7 @@ var directoryTestData = DirectoryTemplateData{ }}, Size: "25 MiB", Path: testPath, - Breadcrumbs: []Breadcrumb{{ + Breadcrumbs: []assets.Breadcrumb{{ Name: "ipfs", }, { Name: "QmFooBarQXB2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7", @@ -58,99 +59,72 @@ var directoryTestData = DirectoryTemplateData{ Hash: "QmFooBazBar2mzChmMeKY47C43LxUdg1NDJ5MWcKMKxDu7", } -var dagTestData = DagTemplateData{ +var dagTestData = assets.DagTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: "http://example.com", + }, Path: "/ipfs/baguqeerabn4wonmz6icnk7dfckuizcsf4e4igua2ohdboecku225xxmujepa", CID: "baguqeerabn4wonmz6icnk7dfckuizcsf4e4igua2ohdboecku225xxmujepa", CodecName: "dag-json", CodecHex: "0x129", } +func init() { + // Append all types so we can preview the icons for all file types. + for ext := range assets.KnownIcons { + directoryTestData.Listing = append(directoryTestData.Listing, assets.DirectoryItem{ + Size: "1 MiB", + Name: "file" + ext, + Path: testPath + "/" + "file" + ext, + Hash: "QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR", + ShortHash: "QmbW\u2026sMnR", + }) + } +} + +func runTemplate(w http.ResponseWriter, filename string, data interface{}) { + fs := os.DirFS(".") + tpl, err := assets.BuildTemplate(fs, filename) + if err != nil { + http.Error(w, fmt.Sprintf("failed to parse template file: %s", err), http.StatusInternalServerError) + return + } + err = tpl.Execute(w, data) + if err != nil { + http.Error(w, fmt.Sprintf("failed to execute template: %s", err), http.StatusInternalServerError) + return + } +} + func main() { mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case "/dag": - dagTemplate, err := template.New("dag-index.html").ParseFiles(dagTemplateFile) - if err != nil { - http.Error(w, fmt.Sprintf("failed to parse template file: %s", err), http.StatusInternalServerError) - return - } - err = dagTemplate.Execute(w, &dagTestData) - if err != nil { - http.Error(w, fmt.Sprintf("failed to execute template: %s", err), http.StatusInternalServerError) - return - } + runTemplate(w, "dag.html", dagTestData) case "/directory": - directoryTemplate, err := template.New("directory-index.html").Funcs(template.FuncMap{ - "iconFromExt": func(name string) string { - return "ipfs-_blank" // place-holder - }, - "urlEscape": func(rawUrl string) string { - pathURL := url.URL{Path: rawUrl} - return pathURL.String() - }, - }).ParseFiles(directoryTemplateFile) + runTemplate(w, "directory.html", directoryTestData) + case "/error": + statusCode, err := strconv.Atoi(r.URL.Query().Get("code")) if err != nil { - http.Error(w, fmt.Sprintf("failed to parse template file: %s", err), http.StatusInternalServerError) - return - } - err = directoryTemplate.Execute(w, &directoryTestData) - if err != nil { - http.Error(w, fmt.Sprintf("failed to execute template: %s", err), http.StatusInternalServerError) - return + statusCode = 500 } + runTemplate(w, "error.html", &assets.ErrorTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: "http://example.com", + }, + StatusCode: statusCode, + StatusText: http.StatusText(statusCode), + Error: "this is the verbatim error: lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", + }) case "/": - html := `

Test paths: DAG, Directory.` + html := `

Test paths: DAG, Directory, Error.` _, _ = w.Write([]byte(html)) default: http.Redirect(w, r, "/", http.StatusSeeOther) } }) - if _, err := os.Stat(directoryTemplateFile); err != nil { - wd, _ := os.Getwd() - fmt.Printf("could not open template file %q, relative to %q: %s\n", directoryTemplateFile, wd, err) - os.Exit(1) - } - - if _, err := os.Stat(dagTemplateFile); err != nil { - wd, _ := os.Getwd() - fmt.Printf("could not open template file %q, relative to %q: %s\n", dagTemplateFile, wd, err) - os.Exit(1) - } - - fmt.Printf("listening on localhost:3000\n") + fmt.Printf("listening on http://localhost:3000/\n") _ = http.ListenAndServe("localhost:3000", mux) } - -// Copied from ../assets.go -type DagTemplateData struct { - Path string - CID string - CodecName string - CodecHex string -} - -type DirectoryTemplateData struct { - GatewayURL string - DNSLink bool - Listing []DirectoryItem - Size string - Path string - Breadcrumbs []Breadcrumb - BackLink string - Hash string -} - -type DirectoryItem struct { - Size string - Name string - Path string - Hash string - ShortHash string -} - -type Breadcrumb struct { - Name string - Path string -} diff --git a/gateway/errors.go b/gateway/errors.go index a0ef4db79..c183cf0b6 100644 --- a/gateway/errors.go +++ b/gateway/errors.go @@ -6,8 +6,10 @@ import ( "fmt" "net/http" "strconv" + "strings" "time" + "github.com/ipfs/boxo/gateway/assets" "github.com/ipfs/boxo/path/resolver" "github.com/ipfs/go-cid" ipld "github.com/ipfs/go-ipld-format" @@ -121,7 +123,7 @@ func (e *ErrorResponse) Unwrap() error { return e.Err } -func webError(w http.ResponseWriter, err error, defaultCode int) { +func (i *handler) webError(w http.ResponseWriter, r *http.Request, err error, defaultCode int) { code := defaultCode // Pass Retry-After hint to the client @@ -153,7 +155,21 @@ func webError(w http.ResponseWriter, err error, defaultCode int) { code = gwErr.StatusCode } - http.Error(w, err.Error(), code) + acceptsHTML := strings.Contains(r.Header.Get("Accept"), "text/html") + if acceptsHTML { + w.Header().Set("Content-Type", "text/html") + w.WriteHeader(code) + _ = assets.ErrorTemplate.Execute(w, assets.ErrorTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: i.config.SupportURL, + }, + StatusCode: code, + StatusText: http.StatusText(code), + Error: err.Error(), + }) + } else { + http.Error(w, err.Error(), code) + } } func isErrNotFound(err error) bool { @@ -186,6 +202,6 @@ func isErrNotFound(err error) bool { } } -func webRequestError(w http.ResponseWriter, err *ErrorResponse) { - webError(w, err.Err, err.StatusCode) +func (i *handler) webRequestError(w http.ResponseWriter, r *http.Request, err *ErrorResponse) { + i.webError(w, r, err.Err, err.StatusCode) } diff --git a/gateway/errors_test.go b/gateway/errors_test.go index 05e6ca887..5d4c861c0 100644 --- a/gateway/errors_test.go +++ b/gateway/errors_test.go @@ -39,10 +39,16 @@ func TestErrRetryAfterAs(t *testing.T) { func TestWebError(t *testing.T) { t.Parallel() + // Create a handler to be able to test `webError`. + api, _ := newMockAPI(t) + config := Config{Headers: map[string][]string{}} + handler := NewHandler(config, api).(*handler) + t.Run("429 Too Many Requests", func(t *testing.T) { err := fmt.Errorf("wrapped for testing: %w", NewErrorRetryAfter(ErrTooManyRequests, 0)) w := httptest.NewRecorder() - webError(w, err, http.StatusInternalServerError) + r := httptest.NewRequest(http.MethodGet, "/blah", nil) + handler.webError(w, r, err, http.StatusInternalServerError) assert.Equal(t, http.StatusTooManyRequests, w.Result().StatusCode) assert.Zero(t, len(w.Result().Header.Values("Retry-After"))) }) @@ -50,7 +56,8 @@ func TestWebError(t *testing.T) { t.Run("429 Too Many Requests with Retry-After header", func(t *testing.T) { err := NewErrorRetryAfter(ErrTooManyRequests, 25*time.Second) w := httptest.NewRecorder() - webError(w, err, http.StatusInternalServerError) + r := httptest.NewRequest(http.MethodGet, "/blah", nil) + handler.webError(w, r, err, http.StatusInternalServerError) assert.Equal(t, http.StatusTooManyRequests, w.Result().StatusCode) assert.Equal(t, "25", w.Result().Header.Get("Retry-After")) }) @@ -58,7 +65,8 @@ func TestWebError(t *testing.T) { t.Run("503 Service Unavailable with Retry-After header", func(t *testing.T) { err := NewErrorRetryAfter(ErrServiceUnavailable, 50*time.Second) w := httptest.NewRecorder() - webError(w, err, http.StatusInternalServerError) + r := httptest.NewRequest(http.MethodGet, "/blah", nil) + handler.webError(w, r, err, http.StatusInternalServerError) assert.Equal(t, http.StatusServiceUnavailable, w.Result().StatusCode) assert.Equal(t, "50", w.Result().Header.Get("Retry-After")) }) diff --git a/gateway/gateway.go b/gateway/gateway.go index b6f33da64..e1b390f1b 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -16,6 +16,10 @@ import ( // Config is the configuration used when creating a new gateway handler. type Config struct { Headers map[string][]string + + // SupportURL will be exposed to the templates (directory listing, DAG page, + // and error page) to link the users to the support of this gateway. + SupportURL string } // TODO: Is this what we want for ImmutablePath? diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go index ef14eeeba..758f810d4 100644 --- a/gateway/gateway_test.go +++ b/gateway/gateway_test.go @@ -515,6 +515,44 @@ func TestPretty404(t *testing.T) { } } +func TestBrowserErrorHTML(t *testing.T) { + ts, _, root := newTestServerAndNode(t, nil) + t.Logf("test server url: %s", ts.URL) + + t.Run("plain error if request does not have Accept: text/html", func(t *testing.T) { + t.Parallel() + + req, err := http.NewRequest(http.MethodGet, ts.URL+"/ipfs/"+root.String()+"/nonexisting-link", nil) + assert.Nil(t, err) + + res, err := doWithoutRedirect(req) + assert.Nil(t, err) + assert.Equal(t, http.StatusNotFound, res.StatusCode) + assert.NotContains(t, res.Header.Get("Content-Type"), "text/html") + + body, err := io.ReadAll(res.Body) + assert.Nil(t, err) + assert.NotContains(t, string(body), "") + }) + + t.Run("html error if request has Accept: text/html", func(t *testing.T) { + t.Parallel() + + req, err := http.NewRequest(http.MethodGet, ts.URL+"/ipfs/"+root.String()+"/nonexisting-link", nil) + assert.Nil(t, err) + req.Header.Set("Accept", "text/html") + + res, err := doWithoutRedirect(req) + assert.Nil(t, err) + assert.Equal(t, http.StatusNotFound, res.StatusCode) + assert.Contains(t, res.Header.Get("Content-Type"), "text/html") + + body, err := io.ReadAll(res.Body) + assert.Nil(t, err) + assert.Contains(t, string(body), "") + }) +} + func TestCacheControlImmutable(t *testing.T) { ts, _, root := newTestServerAndNode(t, nil) t.Logf("test server url: %s", ts.URL) diff --git a/gateway/handler.go b/gateway/handler.go index fcb61e416..af4fc78b1 100644 --- a/gateway/handler.go +++ b/gateway/handler.go @@ -196,16 +196,16 @@ func (i *handler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) { logger.Debug("http request received") if err := handleUnsupportedHeaders(r); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return } - if requestHandled := handleProtocolHandlerRedirect(w, r, logger); requestHandled { + if requestHandled := i.handleProtocolHandlerRedirect(w, r, logger); requestHandled { return } if err := handleServiceWorkerRegistration(r); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return } @@ -221,19 +221,19 @@ func (i *handler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) { return } - if requestHandled := handleSuperfluousNamespace(w, r, contentPath); requestHandled { + if requestHandled := i.handleSuperfluousNamespace(w, r, contentPath); requestHandled { return } if err := contentPath.IsValid(); err != nil { - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return } // Detect when explicit Accept header or ?format parameter are present responseFormat, formatParams, err := customResponseFormat(r) if err != nil { - webError(w, fmt.Errorf("error while processing the Accept header: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("error while processing the Accept header: %w", err), http.StatusBadRequest) return } trace.SpanFromContext(r.Context()).SetAttributes(attribute.String("ResponseFormat", responseFormat)) @@ -260,14 +260,14 @@ func (i *handler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) { if err != nil { // Note: webError will replace http.StatusInternalServerError with a more appropriate error (e.g. StatusNotFound, StatusRequestTimeout, StatusServiceUnavailable, etc.) if necessary err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return } } else { immutableContentPath, err = NewImmutablePath(contentPath) if err != nil { err = fmt.Errorf("path was expected to be immutable, but was not %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return } } @@ -283,7 +283,7 @@ func (i *handler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) { if ifNoneMatchResolvedPath != nil { maybeResolvedImPath, err = NewImmutablePath(ifNoneMatchResolvedPath) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return } } @@ -310,7 +310,7 @@ func (i *handler) getOrHeadHandler(w http.ResponseWriter, r *http.Request) { case "application/vnd.ipfs.ipns-record": default: // catch-all for unsuported application/vnd.* err := fmt.Errorf("unsupported format %q", responseFormat) - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return } @@ -592,7 +592,7 @@ func (i *handler) handleIfNoneMatch(w http.ResponseWriter, r *http.Request, resp if err != nil { // Note: webError will replace http.StatusInternalServerError with a more appropriate error (e.g. StatusNotFound, StatusRequestTimeout, StatusServiceUnavailable, etc.) if necessary err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return nil, false } @@ -614,13 +614,13 @@ func (i *handler) handleIfNoneMatch(w http.ResponseWriter, r *http.Request, resp } // handleRequestErrors is used when request type is other than Web+UnixFS -func (i *handler) handleRequestErrors(w http.ResponseWriter, contentPath ipath.Path, err error) bool { +func (i *handler) handleRequestErrors(w http.ResponseWriter, r *http.Request, contentPath ipath.Path, err error) bool { if err == nil { return true } // Note: webError will replace http.StatusInternalServerError with a more appropriate error (e.g. StatusNotFound, StatusRequestTimeout, StatusServiceUnavailable, etc.) if necessary err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } @@ -633,7 +633,7 @@ func (i *handler) handleWebRequestErrors(w http.ResponseWriter, r *http.Request, if errors.Is(err, ErrServiceUnavailable) { err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusServiceUnavailable) + i.webError(w, r, err, http.StatusServiceUnavailable) return ImmutablePath{}, false } @@ -660,7 +660,7 @@ func (i *handler) handleWebRequestErrors(w http.ResponseWriter, r *http.Request, } err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return ImmutablePath{}, false } @@ -699,15 +699,15 @@ func handleUnsupportedHeaders(r *http.Request) (err *ErrorResponse) { // via navigator.registerProtocolHandler Web API // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler // TLDR: redirect /ipfs/?uri=ipfs%3A%2F%2Fcid%3Fquery%3Dval to /ipfs/cid?query=val -func handleProtocolHandlerRedirect(w http.ResponseWriter, r *http.Request, logger *zap.SugaredLogger) (requestHandled bool) { +func (i *handler) handleProtocolHandlerRedirect(w http.ResponseWriter, r *http.Request, logger *zap.SugaredLogger) (requestHandled bool) { if uriParam := r.URL.Query().Get("uri"); uriParam != "" { u, err := url.Parse(uriParam) if err != nil { - webError(w, fmt.Errorf("failed to parse uri query parameter: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("failed to parse uri query parameter: %w", err), http.StatusBadRequest) return true } if u.Scheme != "ipfs" && u.Scheme != "ipns" { - webError(w, fmt.Errorf("uri query parameter scheme must be ipfs or ipns: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("uri query parameter scheme must be ipfs or ipns: %w", err), http.StatusBadRequest) return true } path := u.Path @@ -793,7 +793,7 @@ func handleIpnsB58mhToCidRedirection(w http.ResponseWriter, r *http.Request) boo // 'intended' path is valid. This is in case gremlins were tickled // wrong way and user ended up at /ipfs/ipfs/{cid} or /ipfs/ipns/{id} // like in bafybeien3m7mdn6imm425vc2s22erzyhbvk5n3ofzgikkhmdkh5cuqbpbq :^)) -func handleSuperfluousNamespace(w http.ResponseWriter, r *http.Request, contentPath ipath.Path) (requestHandled bool) { +func (i *handler) handleSuperfluousNamespace(w http.ResponseWriter, r *http.Request, contentPath ipath.Path) (requestHandled bool) { // If the path is valid, there's nothing to do if pathErr := contentPath.IsValid(); pathErr == nil { return false @@ -807,7 +807,7 @@ func handleSuperfluousNamespace(w http.ResponseWriter, r *http.Request, contentP // Attempt to fix the superflous namespace intendedPath := ipath.New(strings.TrimPrefix(r.URL.Path, "/ipfs")) if err := intendedPath.IsValid(); err != nil { - webError(w, fmt.Errorf("invalid ipfs path: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("invalid ipfs path: %w", err), http.StatusBadRequest) return true } intendedURL := intendedPath.String() @@ -827,7 +827,7 @@ func handleSuperfluousNamespace(w http.ResponseWriter, r *http.Request, contentP SuggestedPath: intendedPath.String(), ErrorMsg: fmt.Sprintf("invalid path: %q should be %q", r.URL.Path, intendedPath.String()), }); err != nil { - webError(w, fmt.Errorf("failed to redirect when fixing superfluous namespace: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("failed to redirect when fixing superfluous namespace: %w", err), http.StatusBadRequest) } return true diff --git a/gateway/handler_block.go b/gateway/handler_block.go index afa75267a..b21926a02 100644 --- a/gateway/handler_block.go +++ b/gateway/handler_block.go @@ -16,13 +16,13 @@ func (i *handler) serveRawBlock(ctx context.Context, w http.ResponseWriter, r *h defer span.End() pathMetadata, data, err := i.api.GetBlock(ctx, imPath) - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } defer data.Close() if err := i.setIpfsRootsHeader(w, pathMetadata); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return false } diff --git a/gateway/handler_car.go b/gateway/handler_car.go index f2e7ca006..61033aaf8 100644 --- a/gateway/handler_car.go +++ b/gateway/handler_car.go @@ -26,18 +26,18 @@ func (i *handler) serveCAR(ctx context.Context, w http.ResponseWriter, r *http.R case "1": // noop, we support this default: err := fmt.Errorf("unsupported CAR version: only version=1 is supported") - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return false } pathMetadata, carFile, errCh, err := i.api.GetCAR(ctx, imPath) - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } defer carFile.Close() if err := i.setIpfsRootsHeader(w, pathMetadata); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return false } diff --git a/gateway/handler_codec.go b/gateway/handler_codec.go index 4ffe77df8..587e67d0a 100644 --- a/gateway/handler_codec.go +++ b/gateway/handler_codec.go @@ -62,13 +62,13 @@ func (i *handler) serveCodec(ctx context.Context, w http.ResponseWriter, r *http defer span.End() pathMetadata, data, err := i.api.GetBlock(ctx, imPath) - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } defer data.Close() if err := i.setIpfsRootsHeader(w, pathMetadata); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return false } @@ -90,7 +90,7 @@ func (i *handler) renderCodec(ctx context.Context, w http.ResponseWriter, r *htt if resolvedPath.Remainder() != "" { path := strings.TrimSuffix(resolvedPath.String(), resolvedPath.Remainder()) err := fmt.Errorf("%q of %q could not be returned: reading IPLD Kinds other than Links (CBOR Tag 42) is not implemented: try reading %q instead", resolvedPath.Remainder(), resolvedPath.String(), path) - webError(w, err, http.StatusNotImplemented) + i.webError(w, r, err, http.StatusNotImplemented) return false } @@ -100,7 +100,7 @@ func (i *handler) renderCodec(ctx context.Context, w http.ResponseWriter, r *htt if !ok { // Should not happen unless function is called with wrong parameters. err := fmt.Errorf("content type not found for codec: %v", cidCodec) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } responseContentType = cidContentType @@ -143,9 +143,8 @@ func (i *handler) renderCodec(ctx context.Context, w http.ResponseWriter, r *htt // Let's first get the codecs that can be used with this content type. toCodec, ok := contentTypeToCodec[requestedContentType] if !ok { - // This is never supposed to happen unless function is called with wrong parameters. - err := fmt.Errorf("unsupported content type: %q", requestedContentType) - webError(w, err, http.StatusInternalServerError) + err := fmt.Errorf("converting from %q to %q is not supported", cidCodec.String(), requestedContentType) + i.webError(w, r, err, http.StatusBadRequest) return false } @@ -172,13 +171,16 @@ func (i *handler) serveCodecHTML(ctx context.Context, w http.ResponseWriter, r * cidCodec := mc.Code(resolvedPath.Cid().Prefix().Codec) if err := assets.DagTemplate.Execute(w, assets.DagTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: i.config.SupportURL, + }, Path: contentPath.String(), CID: resolvedPath.Cid().String(), CodecName: cidCodec.String(), CodecHex: fmt.Sprintf("0x%x", uint64(cidCodec)), }); err != nil { err = fmt.Errorf("failed to generate HTML listing for this DAG: try fetching raw block with ?format=raw: %w", err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } @@ -204,20 +206,20 @@ func (i *handler) serveCodecConverted(ctx context.Context, w http.ResponseWriter codec := blockCid.Prefix().Codec decoder, err := multicodec.LookupDecoder(codec) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } node := basicnode.Prototype.Any.NewBuilder() err = decoder(node, blockData) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } encoder, err := multicodec.LookupEncoder(uint64(toCodec)) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } @@ -225,7 +227,7 @@ func (i *handler) serveCodecConverted(ctx context.Context, w http.ResponseWriter var buf bytes.Buffer err = encoder(node.Build(), &buf) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } diff --git a/gateway/handler_defaults.go b/gateway/handler_defaults.go index d56a2a810..3365b1cab 100644 --- a/gateway/handler_defaults.go +++ b/gateway/handler_defaults.go @@ -36,7 +36,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h case http.MethodHead: var data files.Node pathMetadata, data, err = i.api.Head(ctx, maybeResolvedImPath) - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } defer data.Close() @@ -45,7 +45,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h } else if f, ok := data.(files.File); ok { bytesResponse = f } else { - webError(w, fmt.Errorf("unsupported response type"), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("unsupported response type"), http.StatusInternalServerError) return false } case http.MethodGet: @@ -54,7 +54,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h // TODO: Add tests for range parsing ranges, err = parseRange(rangeHeader) if err != nil { - webError(w, fmt.Errorf("invalid range request: %w", err), http.StatusBadRequest) + i.webError(w, r, fmt.Errorf("invalid range request: %w", err), http.StatusBadRequest) return false } } @@ -75,10 +75,10 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h pathMetadata, getResp, err = i.api.Get(ctx, forwardedPath, ranges...) if err != nil { err = fmt.Errorf("failed to resolve %s: %w", debugStr(contentPath.String()), err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) } } else { - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } } @@ -92,13 +92,13 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h default: // This shouldn't be possible to reach which is why it is a 500 rather than 4XX error - webError(w, fmt.Errorf("invalid method: cannot use this HTTP method with the given request"), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("invalid method: cannot use this HTTP method with the given request"), http.StatusInternalServerError) return false } // TODO: check if we have a bug when maybeResolvedImPath is resolved and i.setIpfsRootsHeader works with pathMetadata returned by Get(maybeResolvedImPath) if err := i.setIpfsRootsHeader(w, pathMetadata); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return false } @@ -106,7 +106,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h switch mc.Code(resolvedPath.Cid().Prefix().Codec) { case mc.Json, mc.DagJson, mc.Cbor, mc.DagCbor: if bytesResponse == nil { // This should never happen - webError(w, fmt.Errorf("decoding error: data not usable as a file"), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("decoding error: data not usable as a file"), http.StatusInternalServerError) return false } logger.Debugw("serving codec", "path", contentPath) @@ -128,7 +128,7 @@ func (i *handler) serveDefaults(ctx context.Context, w http.ResponseWriter, r *h return i.serveDirectory(ctx, w, r, resolvedPath, contentPath, isDirectoryHeadRequest, directoryMetadata, ranges, begin, logger) } - webError(w, fmt.Errorf("unsupported UnixFS type"), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("unsupported UnixFS type"), http.StatusInternalServerError) return false } } diff --git a/gateway/handler_ipns_record.go b/gateway/handler_ipns_record.go index 73d9dabd5..6d42836b3 100644 --- a/gateway/handler_ipns_record.go +++ b/gateway/handler_ipns_record.go @@ -24,7 +24,7 @@ func (i *handler) serveIpnsRecord(ctx context.Context, w http.ResponseWriter, r if contentPath.Namespace() != "ipns" { err := fmt.Errorf("%s is not an IPNS link", contentPath.String()) - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return false } @@ -33,25 +33,25 @@ func (i *handler) serveIpnsRecord(ctx context.Context, w http.ResponseWriter, r key = strings.TrimPrefix(key, "/ipns/") if strings.Count(key, "/") != 0 { err := errors.New("cannot find ipns key for subpath") - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return false } c, err := cid.Decode(key) if err != nil { - webError(w, err, http.StatusBadRequest) + i.webError(w, r, err, http.StatusBadRequest) return false } rawRecord, err := i.api.GetIPNSRecord(ctx, c) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } record, err := ipns.UnmarshalIpnsEntry(rawRecord) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } diff --git a/gateway/handler_tar.go b/gateway/handler_tar.go index f397e57b5..27ab8fa40 100644 --- a/gateway/handler_tar.go +++ b/gateway/handler_tar.go @@ -24,13 +24,13 @@ func (i *handler) serveTAR(ctx context.Context, w http.ResponseWriter, r *http.R // Get Unixfs file (or directory) pathMetadata, file, err := i.api.GetAll(ctx, imPath) - if !i.handleRequestErrors(w, contentPath, err) { + if !i.handleRequestErrors(w, r, contentPath, err) { return false } defer file.Close() if err := i.setIpfsRootsHeader(w, pathMetadata); err != nil { - webRequestError(w, err) + i.webRequestError(w, r, err) return false } rootCid := pathMetadata.LastSegment.Cid() @@ -64,7 +64,7 @@ func (i *handler) serveTAR(ctx context.Context, w http.ResponseWriter, r *http.R // Construct the TAR writer tarw, err := files.NewTarWriter(w) if err != nil { - webError(w, fmt.Errorf("could not build tar writer: %w", err), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("could not build tar writer: %w", err), http.StatusInternalServerError) return false } defer tarw.Close() diff --git a/gateway/handler_unixfs__redirects.go b/gateway/handler_unixfs__redirects.go index 3747d85d6..a1eef80f9 100644 --- a/gateway/handler_unixfs__redirects.go +++ b/gateway/handler_unixfs__redirects.go @@ -46,14 +46,14 @@ func (i *handler) serveRedirectsIfPresent(w http.ResponseWriter, r *http.Request imRedirectsPath, err := NewImmutablePath(redirectsPath) if err != nil { err = fmt.Errorf("trouble processing _redirects path %q: %w", redirectsPath, err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return ImmutablePath{}, false, true } foundRedirect, redirectRules, err := i.getRedirectRules(r, imRedirectsPath) if err != nil { err = fmt.Errorf("trouble processing _redirects file at %q: %w", redirectsPath, err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return ImmutablePath{}, false, true } @@ -61,7 +61,7 @@ func (i *handler) serveRedirectsIfPresent(w http.ResponseWriter, r *http.Request redirected, newPath, err := i.handleRedirectsFileRules(w, r, immutableContentPath, contentPath, redirectRules) if err != nil { err = fmt.Errorf("trouble processing _redirects file at %q: %w", redirectsPath, err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return ImmutablePath{}, false, true } @@ -76,7 +76,7 @@ func (i *handler) serveRedirectsIfPresent(w http.ResponseWriter, r *http.Request imPath, err := NewImmutablePath(p) if err != nil { err = fmt.Errorf("could not use _redirects file to %q: %w", p, err) - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return ImmutablePath{}, false, true } return imPath, true, true diff --git a/gateway/handler_unixfs_dir.go b/gateway/handler_unixfs_dir.go index 801503a5c..a227e231d 100644 --- a/gateway/handler_unixfs_dir.go +++ b/gateway/handler_unixfs_dir.go @@ -34,7 +34,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * // the redirects and links would end up as http://example.net/ipns/example.net requestURI, err := url.ParseRequestURI(r.RequestURI) if err != nil { - webError(w, fmt.Errorf("failed to parse request path: %w", err), http.StatusInternalServerError) + i.webError(w, r, fmt.Errorf("failed to parse request path: %w", err), http.StatusInternalServerError) return false } originalURLPath := requestURI.Path @@ -62,7 +62,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * idxPath := ipath.Join(contentPath, "index.html") imIndexPath, err := NewImmutablePath(ipath.Join(resolvedPath, "index.html")) if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } @@ -74,7 +74,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * if err == nil { f, ok := idx.(files.File) if !ok { - webError(w, fmt.Errorf("%q could not be read: %w", imIndexPath, files.ErrNotReader), http.StatusUnprocessableEntity) + i.webError(w, r, fmt.Errorf("%q could not be read: %w", imIndexPath, files.ErrNotReader), http.StatusUnprocessableEntity) return false } idxFile = f @@ -84,7 +84,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * _, getResp, err = i.api.Get(ctx, imIndexPath, ranges...) if err == nil { if getResp.bytes == nil { - webError(w, fmt.Errorf("%q could not be read: %w", imIndexPath, files.ErrNotReader), http.StatusUnprocessableEntity) + i.webError(w, r, fmt.Errorf("%q could not be read: %w", imIndexPath, files.ErrNotReader), http.StatusUnprocessableEntity) return false } idxFile = getResp.bytes @@ -104,7 +104,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * if isErrNotFound(err) { logger.Debugw("no index.html; noop", "path", idxPath) } else if err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false } @@ -134,7 +134,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * var dirListing []assets.DirectoryItem for l := range directoryMetadata.entries { if l.Err != nil { - webError(w, l.Err, http.StatusInternalServerError) + i.webError(w, r, l.Err, http.StatusInternalServerError) return false } @@ -197,6 +197,9 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * // See comment above where originalUrlPath is declared. tplData := assets.DirectoryTemplateData{ + GlobalData: assets.GlobalData{ + SupportURL: i.config.SupportURL, + }, GatewayURL: gwURL, DNSLink: dnslink, Listing: dirListing, @@ -210,7 +213,7 @@ func (i *handler) serveDirectory(ctx context.Context, w http.ResponseWriter, r * logger.Debugw("request processed", "tplDataDNSLink", dnslink, "tplDataSize", size, "tplDataBackLink", backLink, "tplDataHash", hash) if err := assets.DirectoryTemplate.Execute(w, tplData); err != nil { - webError(w, err, http.StatusInternalServerError) + i.webError(w, r, err, http.StatusInternalServerError) return false }