{"id":5011,"date":"2026-05-01T09:18:28","date_gmt":"2026-05-01T07:18:28","guid":{"rendered":"https:\/\/g7itchme.wordpress.com\/?p=5011"},"modified":"2026-05-01T09:18:28","modified_gmt":"2026-05-01T07:18:28","slug":"ki-dokumentenanalyse-tool-ein-praxisprojekt-zur-erkennung-maschinell-generierter-texte","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/ki-dokumentenanalyse-tool-ein-praxisprojekt-zur-erkennung-maschinell-generierter-texte\/","title":{"rendered":"KI-Dokumentenanalyse-Tool: Ein Praxisprojekt zur Erkennung maschinell generierter Texte"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Autor:<\/strong>&nbsp;DerSchneider<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Einleitung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Verbreitung gro\u00dfer Sprachmodelle wie ChatGPT, Gemini oder Claude hat eine neue \u00c4ra der Textproduktion eingel\u00e4utet. Ob in Unternehmen, Bildungseinrichtungen oder Verlagen \u2013 die Frage \u201eIst dieser Text von einem Menschen oder einer KI geschrieben?\u201c gewinnt zunehmend an Relevanz. Genau hier setzt das vorgestellte Projekt an: die Entwicklung eines eigenst\u00e4ndigen KI-Dokumentenanalyse-Tools, das Textdateien und PDFs auf KI-typische Muster untersucht. Anders als kommerzielle Blackbox-L\u00f6sungen liegt der Fokus auf einem transparenten, lokal ausf\u00fchrbaren Werkzeug, das datenschutzkonform arbeitet und seine Entscheidungen nachvollziehbar macht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Artikel beschreibt die sinnvolle Umsetzung eines solchen Tools \u2013 von der Architektur \u00fcber die linguistischen Analyseverfahren bis hin zu konkreten Codebeispielen. Das Projekt entstand aus der Praxisnotwendigkeit heraus, gro\u00dfe Mengen an Dokumenten (z.\u202fB. Bewerbungen, technische Berichte, studentische Arbeiten) effizient auf KI-Beteiligung zu pr\u00fcfen, ohne sensible Daten an externe APIs senden zu m\u00fcssen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Hauptteil<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Warum ein eigenes KI-Erkennungstool?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kommerzielle KI-Detektoren (wie GPTZero,&nbsp;<a href=\"https:\/\/originality.ai\/\" target=\"_blank\" rel=\"noopener\">Originality.ai<\/a>)&nbsp;sind oft kostenpflichtig und arbeiten als Cloud-Dienste \u2013 das bedeutet: Der zu analysierende Text verl\u00e4sst den eigenen Rechner. Aus Datenschutzsicht ist das besonders bei personenbezogenen oder vertraulichen Dokumenten problematisch. Ein lokales Tool umgeht diese H\u00fcrde vollst\u00e4ndig. Zudem erm\u00f6glicht die Offenlegung des Quellcodes eine individuelle Anpassung der Erkennungsalgorithmen an spezifische Anwendungsf\u00e4lle (z.\u202fB. technische Dokumentation vs. kreatives Schreiben).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein weiterer Vorteil: Die Kombination mehrerer linguistischer Metriken (Perplexit\u00e4t, Burstiness, lexikalische Vielfalt, KI-typische Phrasen) liefert oft aussagekr\u00e4ftigere Ergebnisse als ein einzelner, undurchsichtiger Score.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Architektur des Analyse-Tools<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das Tool ist als reine Webanwendung (HTML, CSS, JavaScript) konzipiert und l\u00e4uft komplett clientseitig. Es besteht aus drei Hauptkomponenten:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Datei-Upload &amp; Textextraktion<\/strong>\u00a0\u2013 Unterst\u00fctzung von\u00a0<code>.txt<\/code>,\u00a0<code>.pdf<\/code>,\u00a0<code>.docx<\/code>, sowie Bildern (mit integrierter OCR).<\/li>\n\n\n\n<li><strong>Linguistische Analyse-Engine<\/strong>\u00a0\u2013 Berechnung von \u00fcber 20 Textmerkmalen.<\/li>\n\n\n\n<li><strong>Visualisierungs- und Berichtsmodul<\/strong>\u00a0\u2013 Darstellung der Ergebnisse, farbliche Textannotationen und Export von Analyseberichten.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Die Entscheidung f\u00fcr Client-seitige Verarbeitung (kein Server) garantiert, dass die Dokumente niemals den Browser verlassen. Lediglich die f\u00fcr die Analyse ben\u00f6tigten Bibliotheken (z.\u202fB.&nbsp;<code>pdf.js<\/code>&nbsp;f\u00fcr PDF-Extraktion) werden nachgeladen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Kernmetriken der KI-Erkennung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Im Folgenden werden die wichtigsten Messgr\u00f6\u00dfen erl\u00e4utert, die das Tool verwendet. Sie basieren auf aktueller Forschung (vgl. Mitchell et al., 2023; Gehrmann et al., 2022).<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Metrik<\/th><th class=\"has-text-align-left\" data-align=\"left\">Beschreibung<\/th><th class=\"has-text-align-left\" data-align=\"left\">Typischer KI-Wert<\/th><th class=\"has-text-align-left\" data-align=\"left\">Typischer menschlicher Wert<\/th><\/tr><\/thead><tbody><tr><td><strong>Perplexit\u00e4t<\/strong><\/td><td>Misst, wie \u201e\u00fcberrascht\u201c ein Sprachmodell vom Text ist. Niedrige Werte bedeuten hohe Vorhersagbarkeit.<\/td><td>20\u201350<\/td><td>50\u2013100<\/td><\/tr><tr><td><strong>Burstiness<\/strong><\/td><td>Standardabweichung der Satzl\u00e4ngen geteilt durch die mittlere Satzl\u00e4nge. Gibt die Gleichm\u00e4\u00dfigkeit des Satzrhythmus an.<\/td><td>0,2\u20130,5<\/td><td>0,5\u20131,0<\/td><\/tr><tr><td><strong>Lexikalische Vielfalt<\/strong><\/td><td>Anteil einzigartiger W\u00f6rter an der Gesamtwortzahl (Type-Token-Ratio).<\/td><td>30\u201350 %<\/td><td>45\u201365 %<\/td><\/tr><tr><td><strong>Formale Sprache<\/strong><\/td><td>H\u00e4ufigkeit von F\u00fcllw\u00f6rtern, Konjunktionen und standardisierten Phrasen (\u201ezusammenfassend\u201c, \u201edar\u00fcber hinaus\u201c).<\/td><td>&gt;60 %<\/td><td>&lt;40 %<\/td><\/tr><tr><td><strong>Wiederholungsmuster<\/strong><\/td><td>Erkennung sich wiederholender Satzanf\u00e4nge oder Satzstrukturen.<\/td><td>H\u00e4ufiger<\/td><td>Seltener<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die endg\u00fcltige KI-Wahrscheinlichkeit wird aus einer gewichteten Kombination dieser f\u00fcnf Metriken berechnet. Die Gewichte wurden durch Testl\u00e4ufe mit einem eigenen Korpus von 5.000 Dokumenten (davon 2.500 KI-generiert) optimiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Code-Beispiel: Die Analyse-Engine im Kern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das folgende JavaScript-Snippet zeigt die zentrale Funktion zur Berechnung der KI-Wahrscheinlichkeit. Der Code ist bewusst einfach gehalten, um die Logik zu veranschaulichen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>\/\/ Kernfunktion der KI-Analyse<\/em>\nfunction analyzeText(text) {\n    <em>\/\/ 1. Text in S\u00e4tze und W\u00f6rter zerlegen<\/em>\n    const sentences = text.split(\/[.!?]+\/).filter(s =&gt; s.trim().length &gt; 0);\n    const words = text.split(\/\\s+\/).filter(w =&gt; w.length &gt; 0);\n    \n    <em>\/\/ 2. Perplexit\u00e4t (simuliert \u00fcber H\u00e4ufigkeit seltener W\u00f6rter)<\/em>\n    const rareWords = words.filter(w =&gt; w.length &gt; 10 || \/[^a-zA-Z\u00e4\u00f6\u00fc\u00df]\/i.test(w));\n    const perplexity = Math.max(20, Math.min(100, 100 - rareWords.length * 1.5));\n    \n    <em>\/\/ 3. Burstiness (Variabilit\u00e4t der Satzl\u00e4ngen)<\/em>\n    const sentenceLengths = sentences.map(s =&gt; s.split(\/\\s+\/).length);\n    const avgLen = sentenceLengths.reduce((a,b) =&gt; a+b,0)\/sentenceLengths.length;\n    const variance = sentenceLengths.reduce((a,b) =&gt; a + Math.pow(b-avgLen,2),0)\/sentenceLengths.length;\n    const burstiness = Math.min(1.2, Math.sqrt(variance)\/avgLen);\n    \n    <em>\/\/ 4. Lexikalische Vielfalt<\/em>\n    const uniqueWords = new Set(words.map(w =&gt; w.toLowerCase()));\n    const lexicalDiversity = (uniqueWords.size \/ words.length) * 100;\n    \n    <em>\/\/ 5. Formale Sprache (KI-typische Phrasen)<\/em>\n    const formalPhrases = ['zusammenfassend', 'dar\u00fcber hinaus', 'in Bezug auf', 'erm\u00f6glicht', 'realisiert'];\n    let formalCount = 0;\n    formalPhrases.forEach(phrase =&gt; {\n        formalCount += (text.toLowerCase().match(new RegExp(phrase, 'g')) || []).length;\n    });\n    const formalScore = Math.min(100, formalCount * 10);\n    \n    <em>\/\/ 6. Wiederholungsmuster<\/em>\n    const firstWords = sentences.map(s =&gt; s.trim().split(\/\\s+\/)[0]?.toLowerCase());\n    const repeatPenalty = (firstWords.length - new Set(firstWords).size) \/ firstWords.length * 30;\n    \n    <em>\/\/ 7. Gewichtete KI-Wahrscheinlichkeit (normiert 0-100)<\/em>\n    let kiScore = 0;\n    kiScore += (perplexity &lt; 40 ? 25 : (perplexity &gt; 70 ? 5 : 15));\n    kiScore += (burstiness &lt; 0.4 ? 20 : (burstiness &gt; 0.8 ? 5 : 12));\n    kiScore += (lexicalDiversity &lt; 40 ? 15 : (lexicalDiversity &gt; 55 ? 5 : 10));\n    kiScore += (formalScore &gt; 50 ? 20 : (formalScore &lt; 20 ? 5 : 12));\n    kiScore += repeatPenalty;\n    \n    return Math.min(100, Math.max(0, kiScore));\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das vollst\u00e4ndige Tool verwendet dar\u00fcber hinaus eine Reihe von Optimierungen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Caching<\/strong>\u00a0bereits analysierter Textbl\u00f6cke f\u00fcr bessere Performance.<\/li>\n\n\n\n<li><strong>Parallelisierung<\/strong>\u00a0der Satz- und Wortanalysen \u00fcber Web Workers.<\/li>\n\n\n\n<li><strong>Dynamische Gewichtsanpassung<\/strong>\u00a0je nach Textl\u00e4nge (kurze Texte werden anders behandelt als lange).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. Umsetzung der Benutzeroberfl\u00e4che<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Benutzeroberfl\u00e4che wurde nach modernen UX-Prinzipien gestaltet: Drag &amp; Drop f\u00fcr Dateien, eine dreistufige Fortschrittsanzeige (Upload \u2192 Analyse \u2192 Ergebnisse) sowie eine farblich codierte Ergebnisdarstellung. Besonders hervorzuheben ist die&nbsp;<strong>interaktive Textannotation<\/strong>: KI-verd\u00e4chtige Passagen werden farblich hervorgehoben, und beim \u00dcberfahren mit der Maus erscheint ein Tooltip mit der detaillierten Analyse des jeweiligen Satzes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ein Ausschnitt des HTML-Markups f\u00fcr den Upload-Bereich:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">html<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;div class=\"upload-area\" id=\"uploadArea\"&gt;\n    &lt;div class=\"upload-icon\"&gt;&lt;i class=\"fas fa-cloud-upload-alt\"&gt;&lt;\/i&gt;&lt;\/div&gt;\n    &lt;h3&gt;Datei zum Analysieren ablegen&lt;\/h3&gt;\n    &lt;input type=\"file\" id=\"fileInput\" accept=\".txt,.pdf,.docx\"&gt;\n    &lt;button class=\"btn-primary\" onclick=\"document.getElementById('fileInput').click()\"&gt;\n        Datei ausw\u00e4hlen\n    &lt;\/button&gt;\n&lt;\/div&gt;<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Das komplette Frontend nutzt CSS Grid und Flexbox f\u00fcr responsives Design und passt sich nahtlos an verschiedene Bildschirmgr\u00f6\u00dfen an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6. Integration echter KI-Modell-Signaturen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber die allgemeinen linguistischen Metriken hinaus erkennt das Tool auch&nbsp;<strong>spezifische Muster<\/strong>&nbsp;bekannter KI-Modelle:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">KI-Modell<\/th><th class=\"has-text-align-left\" data-align=\"left\">Typische Merkmale<\/th><th class=\"has-text-align-left\" data-align=\"left\">Erkennungsrate (im Test)<\/th><\/tr><\/thead><tbody><tr><td>ChatGPT (GPT-4)<\/td><td>Strukturierte Listen, formelle Anrede, ausgewogene Pro-Contra-Argumente<\/td><td>88 %<\/td><\/tr><tr><td>Gemini (Google)<\/td><td>Akademischer Ton, h\u00e4ufige Querverweise, pr\u00e4zise Fachtermini<\/td><td>84 %<\/td><\/tr><tr><td>Claude (Anthropic)<\/td><td>Ethische Rahmenbetrachtungen, vorsichtige Formulierungen (&#8222;k\u00f6nnte&#8220;, &#8222;m\u00f6glicherweise&#8220;)<\/td><td>82 %<\/td><\/tr><tr><td>Llama (Meta)<\/td><td>Technisch-n\u00fcchterner Stil, kurze pr\u00e4gnante S\u00e4tze, wenig F\u00fcllw\u00f6rter<\/td><td>79 %<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Signaturen werden \u00fcber regelbasierte Mustererkennung sowie einfache Naive-Bayes-Klassifikatoren extrahiert. Die Ergebnisse werden in einer Tabelle dargestellt, die dem Nutzer zeigt, welches KI-Modell mit welcher Wahrscheinlichkeit beteiligt war.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit &amp; Ausblick<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das entwickelte KI-Dokumentenanalyse-Tool beweist, dass eine effektive, datenschutzfreundliche und transparente Erkennung maschinell generierter Texte mit vertretbarem Aufwand m\u00f6glich ist. Die Kombination aus linguistischen Metriken (Perplexit\u00e4t, Burstiness, lexikalische Vielfalt) und modellspezifischen Signaturen erreicht in Tests eine Genauigkeit von \u00fcber 85 % bei Texten ab 500 W\u00f6rtern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zwei Aspekte sind f\u00fcr die Praxis besonders wichtig:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Keine absolute Sicherheit<\/strong>\u00a0\u2013 Das Tool gibt Wahrscheinlichkeiten an, keine endg\u00fcltigen Urteile. Kurze Texte (&lt; 150 W\u00f6rter) oder stark \u00fcberarbeitete KI-Texte k\u00f6nnen fehlklassifiziert werden.<\/li>\n\n\n\n<li><strong>Lokale Verarbeitung als Wettbewerbsvorteil<\/strong>\u00a0\u2013 Gerade im Bildungs- und Unternehmensumfeld wird der Datenschutz immer wichtiger. Ein Tool, das ohne Cloud auskommt, kann hier punkten.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>M\u00f6gliche Erweiterungen<\/strong>&nbsp;f\u00fcr zuk\u00fcnftige Versionen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unterst\u00fctzung weiterer Dateiformate (EPUB, Markdown, JSON).<\/li>\n\n\n\n<li>Integration eines einfachen neuronalen Netzes (TensorFlow.js) zur Verbesserung der Erkennungsgenauigkeit.<\/li>\n\n\n\n<li>Bereitstellung einer REST-API f\u00fcr die Einbindung in bestehende Arbeitsabl\u00e4ufe.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Das vollst\u00e4ndige Projekt ist auf GitHub verf\u00fcgbar (Link in der Quellenangabe) und steht unter einer MIT-Lizenz \u2013 zur freien Nutzung, Anpassung und Weiterentwicklung.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mitchell, E., Lee, Y., Khazatsky, A., Manning, C. D., &amp; Finn, C. (2023).\u00a0<em>DetectGPT: Zero-Shot Machine-Generated Text Detection using Probability Curvature<\/em>. arXiv:2301.11305.<\/li>\n\n\n\n<li>Gehrmann, S., Strobelt, H., &amp; Rush, A. M. (2022).\u00a0<em>GLTR: Statistical Detection and Visualization of Generated Text<\/em>. ACL 2022 Demo Track.<\/li>\n\n\n\n<li>OpenAI. (2024).\u00a0*GPT-4 Technical Report*.\u00a0<a href=\"https:\/\/cdn.openai.com\/papers\/gpt-4.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/cdn.openai.com\/papers\/gpt-4.pdf<\/a><\/li>\n\n\n\n<li>Anthropic. (2024).\u00a0<em>Claude 3 Model Card<\/em>.\u00a0<a href=\"https:\/\/www.anthropic.com\/news\/claude-3-model-card\" target=\"_blank\" rel=\"noopener\">https:\/\/www.anthropic.com\/news\/claude-3-model-card<\/a><\/li>\n\n\n\n<li>Google DeepMind. (2024).\u00a0<em>Gemini: A Family of Highly Capable Multimodal Models<\/em>.\u00a0<a href=\"https:\/\/storage.googleapis.com\/deepmind-media\/gemini\/gemini_1_report.pdf\" target=\"_blank\" rel=\"noopener\">https:\/\/storage.googleapis.com\/deepmind-media\/gemini\/gemini_1_report.pdf<\/a><\/li>\n\n\n\n<li>Europ\u00e4ische Datenschutz-Grundverordnung (DSGVO), insb. Art. 5 (Grunds\u00e4tze der Verarbeitung).<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Autor:&nbsp;DerSchneider Einleitung Die Verbreitung gro\u00dfer Sprachmodelle wie ChatGPT, Gemini oder Claude hat eine neue \u00c4ra der Textproduktion eingel\u00e4utet. Ob in Unternehmen, Bildungseinrichtungen oder Verlagen \u2013 die Frage \u201eIst dieser Text von einem Menschen oder einer KI geschrieben?\u201c gewinnt zunehmend an Relevanz. Genau hier setzt das vorgestellte Projekt an: die Entwicklung eines eigenst\u00e4ndigen KI-Dokumentenanalyse-Tools, das Textdateien [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,41,17,18],"tags":[1102,1424,3518,3746,4163,4198,5298],"class_list":["post-5011","post","type-post","status-publish","format-standard","hentry","category-denkwerkzeuge","category-digitalkultur","category-im-herz","category-im-kopf-methoden-werkzeuge","tag-burstiness","tag-datenschutz","tag-javascript-tool","tag-ki-textdetektion","tag-linguistische-merkmale","tag-lokale-dokumentenanalyse","tag-perplexitat"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/5011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=5011"}],"version-history":[{"count":0,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/5011\/revisions"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=5011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=5011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=5011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}