Rechtstexte auf Englisch (imprint, privacy), App-Sprache folgt Browsersprache, SW-Cache v8
- Sprache: explizite Wahl per Knopf wird gemerkt (langChoice), sonst navigator.languages (de/en, Rest englisch); alter lang-Schlüssel wird ignoriert - Footer-Links zeigen je nach Sprache auf Impressum/Datenschutz oder Legal notice/Privacy - Rechtstexte mit Sprachumschalter und hreflang; englische Fassung mit Hinweis, dass die deutsche verbindlich ist
This commit is contained in:
1 parent
b955d857bf
commit
a1a58531d8
6 files changed
+286
-2
No files matched your search
+1
-1
@@ -3,7 +3,7 @@ FROM nginx:1.27-alpine
|
|||||||
# Static single-page app — no build step.
|
# Static single-page app — no build step.
|
||||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
COPY security-headers.conf /etc/nginx/security-headers.conf
|
COPY security-headers.conf /etc/nginx/security-headers.conf
|
||||||
COPY index.html clean.js impressum.html datenschutz.html legal.css icon-mono.svg manifest.webmanifest sw.js icon.svg icon-192.png icon-512.png icon-maskable-512.png apple-touch-icon.png /usr/share/nginx/html/
|
COPY index.html clean.js impressum.html datenschutz.html imprint.html privacy.html legal.css icon-mono.svg manifest.webmanifest sw.js icon.svg icon-192.png icon-512.png icon-maskable-512.png apple-touch-icon.png /usr/share/nginx/html/
|
||||||
COPY vendor/ /usr/share/nginx/html/vendor/
|
COPY vendor/ /usr/share/nginx/html/vendor/
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
<title>Datenschutzerklärung — clip2md</title>
|
<title>Datenschutzerklärung — clip2md</title>
|
||||||
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
||||||
<link rel="stylesheet" href="/legal.css" />
|
<link rel="stylesheet" href="/legal.css" />
|
||||||
|
<link rel="alternate" hreflang="de" href="https://clip2md.heidrich-digital.de/datenschutz.html" />
|
||||||
|
<link rel="alternate" hreflang="en" href="https://clip2md.heidrich-digital.de/privacy.html" />
|
||||||
<script>
|
<script>
|
||||||
try { var th = JSON.parse(localStorage.getItem('clip2md:theme')); if (th === 'dark' || (th === null && matchMedia('(prefers-color-scheme: dark)').matches)) document.documentElement.setAttribute('data-theme','dark'); } catch (e) {}
|
try { var th = JSON.parse(localStorage.getItem('clip2md:theme')); if (th === 'dark' || (th === null && matchMedia('(prefers-color-scheme: dark)').matches)) document.documentElement.setAttribute('data-theme','dark'); } catch (e) {}
|
||||||
</script>
|
</script>
|
||||||
@@ -18,6 +20,7 @@
|
|||||||
<nav>
|
<nav>
|
||||||
<a href="/impressum.html">Impressum</a>
|
<a href="/impressum.html">Impressum</a>
|
||||||
<a href="/datenschutz.html" aria-current="page">Datenschutz</a>
|
<a href="/datenschutz.html" aria-current="page">Datenschutz</a>
|
||||||
|
<a class="lang" href="/privacy.html" hreflang="en" lang="en" title="English">EN</a>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -26,6 +29,7 @@
|
|||||||
<h1>Datenschutzerklärung</h1>
|
<h1>Datenschutzerklärung</h1>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
||||||
|
|
||||||
<p class="intro">
|
<p class="intro">
|
||||||
Der Text, den Sie auf dieser Seite einfügen, wird ausschließlich in Ihrem Browser
|
Der Text, den Sie auf dieser Seite einfügen, wird ausschließlich in Ihrem Browser
|
||||||
umgewandelt. Er wird nicht übertragen, nicht gespeichert und nicht ausgewertet. Es gibt
|
umgewandelt. Er wird nicht übertragen, nicht gespeichert und nicht ausgewertet. Es gibt
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
|
<meta name="robots" content="noindex" />
|
||||||
|
<meta name="theme-color" content="#EAEAE3" />
|
||||||
|
<title>Legal notice — clip2md</title>
|
||||||
|
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
||||||
|
<link rel="stylesheet" href="/legal.css" />
|
||||||
|
<link rel="alternate" hreflang="de" href="https://clip2md.heidrich-digital.de/impressum.html" />
|
||||||
|
<link rel="alternate" hreflang="en" href="https://clip2md.heidrich-digital.de/imprint.html" />
|
||||||
|
<script>
|
||||||
|
try { var th = JSON.parse(localStorage.getItem('clip2md:theme')); if (th === 'dark' || (th === null && matchMedia('(prefers-color-scheme: dark)').matches)) document.documentElement.setAttribute('data-theme','dark'); } catch (e) {}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header class="topbar">
|
||||||
|
<a class="brand" href="/"><svg viewBox="0 0 24 24" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="4.5" width="14" height="17" rx="1.5"/><path d="M12 9.5v7.5M8.8 13.8 12 17l3.2-3.2"/></g><rect x="8.6" y="2.4" width="6.8" height="3.8" rx="1" fill="currentColor"/></svg><span>clip<span class="two">2</span>md</span></a>
|
||||||
|
<nav>
|
||||||
|
<a href="/imprint.html" aria-current="page">Legal notice</a>
|
||||||
|
<a href="/privacy.html">Privacy</a>
|
||||||
|
<a class="lang" href="/impressum.html" hreflang="de" lang="de" title="Deutsch">DE</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="legal">
|
||||||
|
<span class="mono-label">Legal</span>
|
||||||
|
<h1>Legal notice</h1>
|
||||||
|
<div class="card">
|
||||||
|
<p class="intro">This is a translation provided for convenience. The German version (<a href="/impressum.html">Impressum</a>) is legally binding.</p>
|
||||||
|
|
||||||
|
<h2>Information pursuant to § 5 DDG (German Digital Services Act)</h2>
|
||||||
|
<table class="legal-table">
|
||||||
|
<tbody>
|
||||||
|
<tr><th>Provider</th><td>Till Heidrich – Content Creation</td></tr>
|
||||||
|
<tr><th>Owner</th><td>Till Heidrich</td></tr>
|
||||||
|
<tr><th>Address</th><td>Rotdornweg 17<br />21255 Tostedt<br />Germany</td></tr>
|
||||||
|
<tr><th>Email</th><td><a href="mailto:info@tillheidrich.de">info@tillheidrich.de</a></td></tr>
|
||||||
|
<tr><th>Phone</th><td><a href="tel:+4915773953819">+49 1577 3953819</a></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>VAT</h2>
|
||||||
|
<p>
|
||||||
|
As a small business within the meaning of § 19 (1) of the German VAT Act (UStG), no VAT is
|
||||||
|
charged and therefore no VAT identification number is held.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Responsible for content pursuant to § 18 (2) MStV</h2>
|
||||||
|
<p>Till Heidrich, address as above.</p>
|
||||||
|
|
||||||
|
<h2>Dispute resolution</h2>
|
||||||
|
<p>
|
||||||
|
The European Commission provides a platform for online dispute resolution:
|
||||||
|
<a href="https://ec.europa.eu/consumers/odr/" rel="nofollow noopener">ec.europa.eu/consumers/odr</a>.
|
||||||
|
We are neither obliged nor willing to take part in dispute resolution proceedings before a
|
||||||
|
consumer arbitration board.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Liability for links</h2>
|
||||||
|
<p>
|
||||||
|
This site contains links to external third-party websites whose content we cannot influence.
|
||||||
|
The respective provider is always responsible for that content. No legal violations were
|
||||||
|
apparent at the time of linking. Should we become aware of any, we will remove such links
|
||||||
|
immediately.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Copyright and licence</h2>
|
||||||
|
<p>
|
||||||
|
The source code of clip2md is released under the MIT licence. The bundled libraries
|
||||||
|
(Turndown, Marked, DOMPurify, Mozilla Readability; MIT or Apache licence) and the typefaces
|
||||||
|
Space Grotesk and Space Mono (SIL Open Font License) are subject to their respective free
|
||||||
|
licences. Texts and design of this site are protected by German copyright law.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="legal-foot">
|
||||||
|
<a href="/">← Back to clip2md</a>
|
||||||
|
<a href="/privacy.html">Privacy policy</a>
|
||||||
|
<a href="https://www.paypal.com/ncp/payment/54FPXDFBMP5TJ" target="_blank" rel="noopener nofollow">Donate</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -62,3 +62,12 @@ table.legal-table td { padding: 0.3rem 0; vertical-align: top; overflow-wrap: an
|
|||||||
}
|
}
|
||||||
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: .001ms !important; animation-duration: .001ms !important; } }
|
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition-duration: .001ms !important; animation-duration: .001ms !important; } }
|
||||||
.card > :first-child { margin-top: 18px; }
|
.card > :first-child { margin-top: 18px; }
|
||||||
|
.topbar nav a.lang { font-family: var(--mono); font-size: 0.72rem; letter-spacing: .06em; border: 1px solid var(--line); margin-left: 4px; }
|
||||||
|
.topbar nav a.lang:hover { color: var(--accent); border-color: var(--accent); background: transparent; }
|
||||||
|
@media (max-width: 560px) {
|
||||||
|
.topbar { gap: 8px; padding-left: 12px; padding-right: 12px; }
|
||||||
|
.brand { font-size: 1.05rem; }
|
||||||
|
.topbar nav { flex-wrap: nowrap; gap: 2px; }
|
||||||
|
.topbar nav a { padding: 0 8px; font-size: 0.8rem; }
|
||||||
|
.topbar nav a.lang { padding: 0 7px; margin-left: 2px; }
|
||||||
|
}
|
||||||
+184
@@ -0,0 +1,184 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||||
|
<meta name="robots" content="noindex" />
|
||||||
|
<meta name="theme-color" content="#EAEAE3" />
|
||||||
|
<title>Privacy policy — clip2md</title>
|
||||||
|
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
||||||
|
<link rel="stylesheet" href="/legal.css" />
|
||||||
|
<link rel="alternate" hreflang="de" href="https://clip2md.heidrich-digital.de/datenschutz.html" />
|
||||||
|
<link rel="alternate" hreflang="en" href="https://clip2md.heidrich-digital.de/privacy.html" />
|
||||||
|
<script>
|
||||||
|
try { var th = JSON.parse(localStorage.getItem('clip2md:theme')); if (th === 'dark' || (th === null && matchMedia('(prefers-color-scheme: dark)').matches)) document.documentElement.setAttribute('data-theme','dark'); } catch (e) {}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header class="topbar">
|
||||||
|
<a class="brand" href="/"><svg viewBox="0 0 24 24" aria-hidden="true"><g fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="4.5" width="14" height="17" rx="1.5"/><path d="M12 9.5v7.5M8.8 13.8 12 17l3.2-3.2"/></g><rect x="8.6" y="2.4" width="6.8" height="3.8" rx="1" fill="currentColor"/></svg><span>clip<span class="two">2</span>md</span></a>
|
||||||
|
<nav>
|
||||||
|
<a href="/imprint.html">Legal notice</a>
|
||||||
|
<a href="/privacy.html" aria-current="page">Privacy</a>
|
||||||
|
<a class="lang" href="/datenschutz.html" hreflang="de" lang="de" title="Deutsch">DE</a>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="legal">
|
||||||
|
<span class="mono-label">Legal</span>
|
||||||
|
<h1>Privacy policy</h1>
|
||||||
|
<div class="card">
|
||||||
|
<p class="intro">This is a translation provided for convenience. The German version (<a href="/datenschutz.html">Datenschutzerklärung</a>) is legally binding.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The text you paste on this site is converted exclusively in your browser. It is not
|
||||||
|
transmitted, stored or analysed. There are no cookies, no analytics, no embedded third-party
|
||||||
|
services and no externally loaded fonts. Only the technical access data that arises whenever a
|
||||||
|
website is requested is collected.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>1. Controller</h2>
|
||||||
|
<p>
|
||||||
|
Till Heidrich – Content Creation<br />
|
||||||
|
Till Heidrich<br />
|
||||||
|
Rotdornweg 17, 21255 Tostedt, Germany<br />
|
||||||
|
Email: <a href="mailto:info@tillheidrich.de">info@tillheidrich.de</a><br />
|
||||||
|
Phone: <a href="tel:+4915773953819">+49 1577 3953819</a>
|
||||||
|
</p>
|
||||||
|
<p>There is no legal requirement to appoint a data protection officer.</p>
|
||||||
|
|
||||||
|
<h2>2. Processing of pasted content</h2>
|
||||||
|
<p>
|
||||||
|
Converting formatted text into Markdown happens entirely client-side, by JavaScript in your
|
||||||
|
browser. Content you paste never leaves your device and is discarded when you close or reload
|
||||||
|
the page. To that extent, we do not process any personal data within the meaning of the GDPR.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Saving the result as a <code>.md</code> file and copying it to the clipboard also happen locally
|
||||||
|
through the corresponding browser interfaces. No data is sent to us.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The “Paste” button reads your device's clipboard. This only happens when you press the button
|
||||||
|
and, depending on the browser, only after you have given permission. As with pasting via the
|
||||||
|
keyboard, the content is converted locally only. On smartphones, “Save” hands the file to your
|
||||||
|
operating system's share sheet; where you pass it on from there is up to you.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Cleaning up pasted web pages and formatting Reddit threads also run entirely in your browser.
|
||||||
|
The optional “Open in Obsidian” button places the text on the clipboard and hands it to the
|
||||||
|
Obsidian app on your device; nothing is transmitted to us or third parties.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>3. Local storage of your settings</h2>
|
||||||
|
<p>
|
||||||
|
So that the site remembers your preferences, it stores values in your browser's local storage
|
||||||
|
(<span class="mono">localStorage</span>), such as your chosen language, light or dark
|
||||||
|
appearance and your conversion settings. These values stay on your device, are not transmitted
|
||||||
|
to us and contain none of the content you paste. They are not cookies. You can delete them at
|
||||||
|
any time in your browser settings.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Only if you switch on “Keep the last 10 clips” in the settings does the site store the most
|
||||||
|
recently edited texts in your browser's local database (<span class="mono">IndexedDB</span>).
|
||||||
|
This feature is off by default. The entries never leave your device, are only visible in this
|
||||||
|
browser and can be deleted individually or all at once in the history; when you switch the
|
||||||
|
feature off, you are asked whether the history should be deleted.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The basis for this purely local storage is your wish for a working user interface; we have no
|
||||||
|
access to it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>4. Offline use (Progressive Web App)</h2>
|
||||||
|
<p>
|
||||||
|
The site registers a service worker that stores the required program files in your browser's
|
||||||
|
cache, so clip2md also works without an internet connection. Only program files of this site
|
||||||
|
are cached, never your content. You can remove the cache via your browser's site data.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>5. Server log files</h2>
|
||||||
|
<p>When this site is requested, the hosting provider automatically stores data in log files:</p>
|
||||||
|
<ul>
|
||||||
|
<li>IP address of the requesting device</li>
|
||||||
|
<li>date and time of access</li>
|
||||||
|
<li>name and URL of the requested file</li>
|
||||||
|
<li>amount of data transferred and whether the request succeeded</li>
|
||||||
|
<li>browser and operating system used</li>
|
||||||
|
<li>where applicable, the previously visited page (referrer)</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
The legal basis is Art. 6 (1) (f) GDPR. Our legitimate interest lies in the technically
|
||||||
|
error-free operation and security of the service. The data is deleted after seven days at the
|
||||||
|
latest and is not combined with other data sources.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>6. Hosting</h2>
|
||||||
|
<p>
|
||||||
|
This site is operated on servers of Hetzner Online GmbH, Industriestr. 25, 91710 Gunzenhausen,
|
||||||
|
Germany. A data processing agreement pursuant to Art. 28 GDPR is in place with the provider.
|
||||||
|
Processing takes place exclusively within the European Union. Data transfer to this site is
|
||||||
|
encrypted via HTTPS.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>7. No cookies, no tracking</h2>
|
||||||
|
<p>
|
||||||
|
This site sets no cookies and uses no analytics, advertising or audience measurement services.
|
||||||
|
No content is loaded from third-party servers, in particular no fonts and no scripts from
|
||||||
|
content delivery networks. A consent banner is therefore not required.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
One exception concerns the optional preview: if the text you paste contains images hosted on
|
||||||
|
third-party servers, your browser loads those images from there when the preview is shown. The
|
||||||
|
respective server learns your IP address in the process. None of your text is transmitted, and
|
||||||
|
the origin is not sent thanks to <span class="mono">Referrer-Policy: no-referrer</span>. If you
|
||||||
|
want to avoid this, keep the preview switched off.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>8. Support via PayPal</h2>
|
||||||
|
<p>
|
||||||
|
The site contains a “Donate” or “Buy me a coffee” link. It is a plain link; when you open
|
||||||
|
clip2md, no content, scripts or cookies are loaded from PayPal and no data is sent to PayPal.
|
||||||
|
Only when you click the link do you leave this site and reach a PayPal payment page.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The provider is PayPal (Europe) S.à r.l. et Cie, S.C.A., 22–24 Boulevard Royal, L-2449
|
||||||
|
Luxembourg. PayPal itself is responsible for processing on its pages; its privacy statement
|
||||||
|
applies:
|
||||||
|
<a href="https://www.paypal.com/de/legalhub/privacy-full" rel="noopener nofollow">paypal.com/de/legalhub/privacy-full</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you pay an amount, PayPal provides us with the details needed to process it, in particular
|
||||||
|
your name, email address, the amount, date and time, and the transaction number. The legal basis
|
||||||
|
is Art. 6 (1) (b) GDPR (processing the payment) and Art. 6 (1) (c) GDPR in conjunction with
|
||||||
|
statutory tax and commercial retention obligations (usually eight to ten years). The data is not
|
||||||
|
used for any other purpose, such as advertising. The payment is voluntary; nothing is provided
|
||||||
|
in return.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>9. Your rights</h2>
|
||||||
|
<p>
|
||||||
|
You have the right of access (Art. 15 GDPR), rectification (Art. 16), erasure (Art. 17),
|
||||||
|
restriction of processing (Art. 18), data portability (Art. 20) and the right to object to
|
||||||
|
processing based on Art. 6 (1) (f) GDPR (Art. 21). To exercise these rights, please contact the
|
||||||
|
address above.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>10. Right to lodge a complaint</h2>
|
||||||
|
<p>
|
||||||
|
You may lodge a complaint with a data protection supervisory authority. The competent authority
|
||||||
|
is the State Commissioner for Data Protection of Lower Saxony (Die Landesbeauftragte für den
|
||||||
|
Datenschutz Niedersachsen), Prinzenstraße 5, 30159 Hannover, Germany.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>11. Last updated</h2>
|
||||||
|
<p>This privacy policy was last updated in September 2026.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="legal-foot">
|
||||||
|
<a href="/">← Back to clip2md</a>
|
||||||
|
<a href="/imprint.html">Legal notice</a>
|
||||||
|
<a href="https://www.paypal.com/ncp/payment/54FPXDFBMP5TJ" target="_blank" rel="noopener nofollow">Donate</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -2,12 +2,14 @@
|
|||||||
Pages (navigations, .html): network first, cache only as offline fallback —
|
Pages (navigations, .html): network first, cache only as offline fallback —
|
||||||
so new or changed pages are never frozen for existing users.
|
so new or changed pages are never frozen for existing users.
|
||||||
Static assets (vendor, fonts, icons): cache first. Bump CACHE on asset changes. */
|
Static assets (vendor, fonts, icons): cache first. Bump CACHE on asset changes. */
|
||||||
var CACHE = 'clip2md-v7';
|
var CACHE = 'clip2md-v8';
|
||||||
var ASSETS = [
|
var ASSETS = [
|
||||||
'/',
|
'/',
|
||||||
'/index.html',
|
'/index.html',
|
||||||
'/impressum.html',
|
'/impressum.html',
|
||||||
'/datenschutz.html',
|
'/datenschutz.html',
|
||||||
|
'/imprint.html',
|
||||||
|
'/privacy.html',
|
||||||
'/legal.css',
|
'/legal.css',
|
||||||
'/icon.svg',
|
'/icon.svg',
|
||||||
'/icon-192.png',
|
'/icon-192.png',
|
||||||
|
|||||||
Reference in new issue
Block a user