<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Hallo Michael,<br>
    <br>
    wie Christian unten schon schreibt, kommt der Fehler vermutlich von
    folgender Zeile:<br>
    <br>
    > COALESCE( SUM(agg.val_by_time) / (MAX(agg.timestamp) -
    MIN(agg.prev_timestamp)), <br>
    die zur Division durch Null führt.<br>
    <br>
    Wenn ich den SQL Code richtig verstehe, wird zunächst in der
    aggregate Tabelle der jüngste Timestamp gesucht, die glatte Minute
    dazu berechnet und eine Minute aufaddiert - nennen wir das mal T1.
    Das ist der Startpunkt für die Aggregation der neuen Daten, die dann
    angehängt werden.<br>
    Die Division durch Null kann eigentlich nur genau an dieser Stelle
    T1 passieren, da T1 dann als prev_timestamp verwendet wird.<br>
    Wenn dann der Sonderfall eintritt, dass die neuen Daten nur einen
    Datenwert für den Minutenslot T1 haben und noch dazu dieser
    Timestamp (der ja in Millisekunden gezählt wird) auch genau auf eine
    glatte Minute fällt, dann wird der Nenner Null. Die
    Wahrscheinlichkeit ist ziemlich klein, es scheint aber zu passieren.<br>
    <br>
    Du solltest das in deinem Datensatz nachvollziehen können.<br>
    Wenn dein Datensatz so aussieht, wird das aggregate nie mehr
    klappen, solange du die Daten nicht manipulierst (z.B. ein paar
    Milisekunden auf den Timestamp addieren).<br>
    <br>
    Löscht man die aggregate Tabelle und berechnet sie neu, kommt man
    über diese Stelle hinweg, weil da ja nicht "angestückelt" wird.<br>
    <br>
    Falls es das nicht ist: Eine andere mögliche Ursache ist folgender
    Teil des SQL Codes:<br>
    "SELECT channel_id, timestamp, value, value * (timestamp -
    @prev_timestamp) AS val_by_time, COALESCE(@prev_timestamp, 0) AS
    prev_timestamp, @prev_timestamp := timestamp"<br>
    da die MariaDB Dokumentation sagt: "It is unsafe to read a
    user-defined variable and set its value in the same statement
    (unless the command is SET), because the order of these actions is
    undefined."<br>
    Genau das passiert nämlich. Wenn die Zweisung @prev_timestamp :=
    timestamp vor der COALESCE(@prev_timestamp, 0) ausgeführt wird,
    ergibt sich ebenfalls das Problem der Division durch Null, falls man
    nur einen Datenwert im Minutenslot hat - dann auch unabhängig von
    der Nahtstelle.<br>
    <br>
    Gruss<br>
    Manfred<br>
    <br>
    <div class="moz-cite-prefix">Am 21.03.2023 um 18:31 schrieb Michael
      Hartmann:<br>
    </div>
    <blockquote type="cite"
      cite="mid:007001d95c1a$eb5806a0$c20813e0$@web.de">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 14 (filtered
        medium)">
      <style>@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}p.m-2024002216697058698msoplaintext, li.m-2024002216697058698msoplaintext, div.m-2024002216697058698msoplaintext
        {mso-style-name:m_-2024002216697058698msoplaintext;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}span.E-MailFormatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}div.WordSection1
        {page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Ich
            habe den von René verlinkten thread durchgelesen. Ja, das
            ist das gleiche Problem wie bei mir. Nur das der Workaround
            den er seinerzeit durchgeführt hat,, nämlich das
            Aggregate-Table zu löschen und neu aufzubauen bei mir nur
            temporär wirkt.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Der
            Fehler kommt nach einiger Zeit wieder.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Leider
            scheint es seither keine Lösung dafür zu geben oder auch nur
            eine konkrete Ursache bekannt zu sein.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Grüße<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Micha<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
            volkszaehler-users
            [<a class="moz-txt-link-freetext" href="mailto:volkszaehler-users-bounces@demo.volkszaehler.org">mailto:volkszaehler-users-bounces@demo.volkszaehler.org</a>] <b>Im
              Auftrag von </b>René W<br>
            <b>Gesendet:</b> Montag, 20. März 2023 15:10<br>
            <b>An:</b> volkszaehler.org - users<br>
            <b>Betreff:</b> Re: [vz-users] Aggregation (minute) schlägt
            fehl<o:p></o:p></span></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <p class="MsoNormal">Ich hatte „damals“ auch schon diese
            nervige Meldung: <o:p></o:p></p>
          <div>
            <p class="MsoNormal"><a
href="https://demo.volkszaehler.org/pipermail/volkszaehler-users/2019-June/013374.html"
                moz-do-not-send="true" class="moz-txt-link-freetext">https://demo.volkszaehler.org/pipermail/volkszaehler-users/2019-June/013374.html</a><o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Vielleicht sind dort ja noch ein paar
              Hinweise. Ich selber nutze VZ nicht mehr dafür.<o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Gruß René<o:p></o:p></p>
          </div>
        </div>
        <div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <div>
            <div>
              <p class="MsoNormal">Michael Hartmann <<a
                  href="mailto:hartmann-micha@web.de"
                  moz-do-not-send="true" class="moz-txt-link-freetext">hartmann-micha@web.de</a>>
                schrieb am Mo. 20. März 2023 um 15:03:<o:p></o:p></p>
            </div>
            <blockquote style="border:none;border-left:solid #CCCCCC
              1.0pt;padding:0cm 0cm 0cm
              6.0pt;margin-left:4.8pt;margin-right:0cm">
              <div>
                <div>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">Hallo Christian,</span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">ich hatte erst an negative
                      Werte gedacht und keine um den
                      „Ausstiegszeitpunkt“ gefunden. Das scheidet aber
                      auch aus, da sich die Werte im Zähler befinden und
                      somit keine Division durch Null hervorrufen
                      können.</span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">Was mich irritiert ist das
                      nach Löschen der aggregierten Daten deren
                      Neuerstellung fehlerfrei durchläuft.</span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">Kann jemand aus der
                      Fehlermeldung erkennen um welchen Kanal
                      (Channel_ID) es gehen könnte?</span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">Grüße</span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D">Micha</span><o:p></o:p></p>
                </div>
              </div>
              <div>
                <div>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                      style="color:#1F497D"> </span><o:p></o:p></p>
                  <div>
                    <div style="border:none;border-top:solid #B5C4DF
                      1.0pt;padding:3.0pt 0cm 0cm 0cm">
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
                          volkszaehler-users [mailto:<a
                            href="mailto:volkszaehler-users-bounces@demo.volkszaehler.org"
                            target="_blank" moz-do-not-send="true"
                            class="moz-txt-link-freetext">volkszaehler-users-bounces@demo.volkszaehler.org</a>]
                          <b>Im Auftrag von </b>Christian Lange<br>
                          <b>Gesendet:</b> Montag, 20. März 2023 11:29<br>
                          <b>An:</b> <a
                            href="mailto:volkszaehler-users@demo.volkszaehler.org"
                            target="_blank" moz-do-not-send="true"
                            class="moz-txt-link-freetext">volkszaehler-users@demo.volkszaehler.org</a><br>
                          <b>Betreff:</b> Re: [vz-users] Aggregation
                          (minute) schlägt fehl</span><o:p></o:p></p>
                    </div>
                  </div>
                  <p class="MsoNormal"
                    style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                  <p>Hi Micha, <o:p></o:p></p>
                  <p>ich hab leider keine Ahnung, wie die Datenbank
                    aussieht (ich nutze selbst eine andere), aber der
                    Fehler sagt aus, dass eine Division durch 0
                    vorliegt. <o:p></o:p></p>
                  <p>Die einzige Zeile in der SQL Query, die mir da ins
                    Auge sticht ist diese hier:<o:p></o:p></p>
                  <p>> COALESCE( SUM(agg.val_by_time) /
                    (MAX(agg.timestamp) - MIN(agg.prev_timestamp)), <o:p></o:p></p>
                  <p>Das Maximum des Timestamps minus dem Minimum des
                    vorherigen Timestamps aus der (on the fly) erzeugten
                    "agg" Tabelle sind zusammen 0. Daher klappt die
                    Division und damit die SQL Query nicht. Die Daten
                    stammen (soweit ich das sehen kann) aus der "data"
                    Tabelle. Vielleicht fällt dir ja da etwas auf in den
                    Daten bei den Timestamps. Den Rest überlasse ich den
                    Experten, die das Tool so im Einsatz haben ;)<o:p></o:p></p>
                  <p>Viel Erfolg,<br>
                    Christian <o:p></o:p></p>
                  <p> <o:p></o:p></p>
                  <p> <o:p></o:p></p>
                  <div>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Am
                      20.03.2023 um 10:37 schrieb Michael Hartmann:<o:p></o:p></p>
                  </div>
                  <blockquote
                    style="margin-top:5.0pt;margin-bottom:5.0pt">
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hallo,<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">ich
                      hole das hier noch einmal vor, da es ziemliche
                      nervt.<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <div style="border:none;border-bottom:solid
                      windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm">
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Via
                        cronjob lasse ich alle 10min eine Aggregation
                        auf die Minute laufen. Bereits vor einigen
                        Wochen ist diese dann plötzlich mit der
                        folgenden Fehlermeldung ausgestiegen:<o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    </div>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">In AbstractMySQLDriver.php line
                        128:</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  An exception occurred while
                        executing 'REPLACE INTO aggregate (channel_id,</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  type, timestamp, value, count)
                        SELECT channel_id, ? AS type, MAX(agg.timest</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  amp) AS timestamp, COALESCE(
                        SUM(agg.val_by_time) / (MAX(agg.timestamp) - M</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  IN(agg.prev_timestamp)),
                        AVG(agg.value)) AS value, COUNT(agg.value) AS
                        coun</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  t FROM ( SELECT channel_id,
                        timestamp, value, value * (timestamp - @prev_ti</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  mestamp) AS val_by_time,
                        COALESCE(@prev_timestamp, 0) AS prev_timestamp,
                        @p</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  rev_timestamp := timestamp FROM
                        data CROSS JOIN (SELECT @prev_timestamp :=</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> 
                        UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(MAX(timestamp)
                        / 1000, "%Y-%m-%d %H:%</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  i:00"), INTERVAL 1 minute)) *
                        1000 FROM aggregate WHERE type = ? AND aggreg</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  ate.channel_id = ?) AS vars WHERE
                        channel_id = ? AND timestamp >= IFNULL((S</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  ELECT
                        UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(MAX(timestamp)
                        / 1000, "%Y-%m-%</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  d %H:%i:00"), INTERVAL 1 minute))
                        * 1000 FROM aggregate WHERE type = ? AND</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  aggregate.channel_id = ? ), 0)
                        AND timestamp < UNIX_TIMESTAMP(DATE_FORMAT(N</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  OW(), "%Y-%m-%d %H:%i:00")) *
                        1000 ) AS agg GROUP BY channel_id, YEAR(FROM_</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  UNIXTIME(timestamp/1000)),
                        DAYOFYEAR(FROM_UNIXTIME(timestamp/1000)), HOUR(F</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  ROM_UNIXTIME(timestamp/1000)),
                        MINUTE(FROM_UNIXTIME(timestamp/1000))' with</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  params [1, 1, "3", "3", 1, "3"]:</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  SQLSTATE[22012]: Division by
                        zero: 1365 Division by 0</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">In Exception.php line 18:</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">  SQLSTATE[22012]: Division by
                        zero: 1365 Division by 0</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US">In PDOStatement.php line 117:</span><o:p></o:p></p>
                    <p class="m-2024002216697058698msoplaintext"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <div style="border:none;border-bottom:solid
                      windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm">
                      <p class="m-2024002216697058698msoplaintext"><span
                          lang="EN-US">  SQLSTATE[22012]: Division by
                          zero: 1365 Division by 0</span><o:p></o:p></p>
                    </div>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
                        lang="EN-US"> </span><o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Die
                      Aggregation auf Stunde und Tag bereitet (bisher)
                      keine Probleme.<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Beim
                      letzten Mal hatte ich die Aggregationstabelle
                      gelöscht und neu aufgebaut. Nach einigen Wochen
                      kommt der Fehler nun wieder.<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Kann
                      mir jemand erklären wo das Problem liegt? Die
                      Fehlermeldung kann ich nicht interpretieren.<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Viele
                      Grüße<o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    <p class="MsoNormal"
                      style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Micha<o:p></o:p></p>
                  </blockquote>
                </div>
              </div>
            </blockquote>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>