Zend Framework

Zend_Mail splits up words in email body

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Major Major
  • Resolution: Not an Issue
  • Affects Version/s: 0.8.0
  • Fix Version/s: None
  • Component/s: Zend_Mail
  • Labels:
    None

Description

Using PHP Version 5.1.6-pl6-gentoo, I tried to use Zend_Mail to send a confirmation email upon a user registration. I use HTML emails, and Zend's default transporter.
But sometimes spaces are inserted in the words, which would not be that bad if it didn't also sometimes break the link that the user must click in order to activate his account.

Edit 2007/03/13: I'll add that this behaviour has occurred when viewing the sent email in Gmail, and Mozilla Thunderbird. So far, my tests using Hotmail and Yahoo Mail have produced intact emails. Something to do with how the mail clients interprete the maximum line lengths, perhaps....

Here is some test code I made for an example:

<?
require_once('Zend.php');

function __autoload($class_name) {
   Zend::loadClass($class_name);
}

define('SITE_NAME', 'MySite');
$email = 'v.marchand@gmail.com';
$username = 'vero';
$fullName = 'Vero. M.';
$url = 'http://www.' . SITE_NAME . '.com/Inscription/Confirmer/key/7b2836967a0829a13c4c910683c82038e582afac';

$body = "
<html>
    <head>
        <style>
            body { font-family: Arial, Helvetica; font-size: 13px; }
        </style>
    </head>
<body>

<p> Bonjour <b>" . $fullName . "</b>,</p>

<p>Merci de vous être enregistré avec <b>" . SITE_NAME . "</b>.</p>

<p>
Votre compte " . $username . " est présentement inactif. Pour être activé, il doit d'abord être validé en deux étapes.<br />
Pour la première étape de validation votre compte, veuillez tout simplement cliquer sur le URL ci-dessous (vous pouvez également le copier dans votre navigateur):
</p>
<a href='" . $url . "'>" . $url . "</a>
<p>Une fois votre adresse email validée, votre compte sera revu par l'équipe " . SITE_NAME . " et activé. </p>

<p>Merci!</p>

<p>L'Équipe " . SITE_NAME . "</p>

</body>
</html>
";

$mail = new Zend_Mail();
$mail->setFrom('v.marchand@gmail.com', SITE_NAME);
$mail->addTo($email, $fullName);
$mail->setSubject('Votre inscription à ' . SITE_NAME);
$mail->setBodyHtml($body);
$mail->send();
?>

Here is the email I received on Gmail. Note the broken link, both in display (the space) and in the actual href (after the http:// )

< body>

Bonjour Vero. M.,

Merci de vous être e nregistré avec MySite.

Votre compte vero est pré sentement inactif. Pour être activé, il doit d'abord être validé e n deux étapes.
Pour la première étape de validation votre co mpte, veuillez tout simplement cliquer sur le URL ci-dessous (vous pouvez également le copier dans votre navigateur):
http://www.MySite.com/Inscription/Confirmer/key/7b2836967a0829a13 c4c910683c82038e582afac

Une fois votre adresse email validée, v otre compte sera revu par l'équipe MySite et activé.

Merc i!

L'Équipe MySite

Here is the email content with the full headers, in case it helps:

Delivered-To: v.marchand@gmail.com
Received: by 10.114.25.12 with SMTP id 12cs11848way;
Mon, 12 Mar 2007 08:19:35 -0700 (PDT)
Received: by 10.90.104.14 with SMTP id b14mr4553398agc.1173712775222;
Mon, 12 Mar 2007 08:19:35 -0700 (PDT)
Return-Path: <apache@zeus.opale>
Received: from zeus.opale (modemcable042.27-70-69.static.videotron.ca [69.70.27.42])
by mx.google.com with ESMTP id i5si8402101nzi.2007.03.12.08.19.34;
Mon, 12 Mar 2007 08:19:35 -0700 (PDT)
Received-SPF: neutral (google.com: 69.70.27.42 is neither permitted nor denied by best guess record for domain of apache@zeus.opale)
Received: by zeus.opale (Postfix, from userid 81)
id 8097A105A7; Mon, 12 Mar 2007 11:19:34 -0400 (EDT)
To: "Vero. M." <v.marchand@gmail.com>
Subject: =?iso-8859-1?Q?Votre inscription =E0 MySite?=
From: "MySite" <v.marchand@gmail.com>
To: "Vero. M." <v.marchand@gmail.com>
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Message-Id: <20070312151934.8097A105A7@zeus.opale>
Date: Mon, 12 Mar 2007 11:19:34 -0400 (EDT)

=0A<html>=0A <head>=0A <style>=0A body

Unknown macro: { font-family}
=0A </style>=0A </head>=0A<=

body>=0A=0A<p> Bonjour <b>Vero. M.</b>,</p>=0A=0A<p>Merci de vous =EAtre e=

nregistr=E9 avec <b>MySite</b>.</p>=0A=0A<p>=0AVotre compte vero est pr=E9=

sentement inactif. Pour =EAtre activ=E9, il doit d'abord =EAtre valid=E9 e=

n deux =E9tapes.<br />=0APour la premi=E8re =E9tape de validation votre co=

mpte, veuillez tout simplement cliquer sur le URL ci-dessous (vous pouvez=

=E9galement le copier dans votre navigateur):=0A</p>=0A<a href=3D'http://=

www.MySite.com/Inscription/Confirmer/key/7b2836967a0829a13c4c910683c82038e=

582afac'>http://www.MySite.com/Inscription/Confirmer/key/7b2836967a0829a13=

c4c910683c82038e582afac</a>=0A<p>Une fois votre adresse email valid=E9e, v=

otre compte sera revu par l'=E9quipe MySite et activ=E9. </p>=0A=0A<p>Merc=

i!</p>=0A=0A<p>L'=C9quipe MySite</p>=0A=0A</body>=0A</html>=0A

Any suggestions? Perhaps there is a method I should use or setting I should change, but I'm not sure what exactly.
Thanks for your help.

PS: also you might notice that the "to" recipient is there twice. I think this is a known bug, but I'm bringing it up here too, because it's been slightly bothering me.

Activity

Hide
Véronique M. added a comment -

clarification

Show
Véronique M. added a comment - clarification
Hide
Simon Mundy added a comment -

Your example above looks like there are empty lines between each encoded line - is this how it is on your email source or is that just the way JIRA is displaying it? If there's extra linespaces it may be throwing the mail clients you mentioned.

Show
Simon Mundy added a comment - Your example above looks like there are empty lines between each encoded line - is this how it is on your email source or is that just the way JIRA is displaying it? If there's extra linespaces it may be throwing the mail clients you mentioned.
Hide
Véronique M. added a comment -

Hello,
Thanks for responding. In the above example, the first block is the email as it appears on Gmail. The last block with the full headers is the actual email source.
Note that the broken words match the end of lines (=) in the source. Such as the words "e nregistré", "pré sentement", "votre co mpte", "Merc i", and of course the link.

It clearly has something to do with the maximum line length, but I'm not sure what I can do about it. Surely there is a way to use Zend_Mail without words being split like that (especially if it breaks important links), but I haven't been able to figure out how, so I reported it here.

Show
Véronique M. added a comment - Hello, Thanks for responding. In the above example, the first block is the email as it appears on Gmail. The last block with the full headers is the actual email source. Note that the broken words match the end of lines (=) in the source. Such as the words "e nregistré", "pré sentement", "votre co mpte", "Merc i", and of course the link. It clearly has something to do with the maximum line length, but I'm not sure what I can do about it. Surely there is a way to use Zend_Mail without words being split like that (especially if it breaks important links), but I haven't been able to figure out how, so I reported it here.
Hide
Bill Karwin added a comment -

Assigning to Nico.

Show
Bill Karwin added a comment - Assigning to Nico.
Hide
thing2b added a comment -

I will just confirm that this happens for me as well.
One thing that I will note is that this did not appear for me in any versions 0.7 and before.
It started occurring when I moved to version 0.8 and continues to do it in version 0.9

Show
thing2b added a comment - I will just confirm that this happens for me as well. One thing that I will note is that this did not appear for me in any versions 0.7 and before. It started occurring when I moved to version 0.8 and continues to do it in version 0.9
Hide
Simon Mundy added a comment -

thing2b and Veronique, can you also please confirm which MTA is installed on your machines? Is it Postfix, QMail or Sendmail?

Could you also please send a test email to webmaster at peptolab dot com so I can see the source intact?

Show
Simon Mundy added a comment - thing2b and Veronique, can you also please confirm which MTA is installed on your machines? Is it Postfix, QMail or Sendmail? Could you also please send a test email to webmaster at peptolab dot com so I can see the source intact?
Hide
thing2b added a comment -

I have send a message to Simon Mundy and with the same code sent myself one.
Using version 0.9.0 of Zend Framework.
Sendmail is in my phpinfo().
Postfix, QMail and not in my phpinfo().

$mail = new Zend_Mail();
$mail->setBodyText('Simon Mundy [19/Mar/07 07:29 PM]
thing2b and Veronique, can you also please confirm which MTA is installed on your machines? Is it Postfix, QMail or Sendmail?
Could you also please send a test email to webmaster at peptolab dot com so I can see the source intact?
');
$mail->setFrom( 'test@example.com'  );
$mail->setReturnPath( 'test@example.com'  );
$mail->addTo('cencored@gmail.com', 'Cencored');
$mail->setSubject( '[#ZF-1041] Zend_Mail splits up words in email body - Zend Framework Issue Tracker' );
$mail->send();

And the mail I received at gmail was:

Delivered-To: cencored@gmail.com
Received: by 10.100.111.13 with SMTP id j13cs581656anc;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Received: by 10.35.41.12 with SMTP id t12mr11603001pyj.1174351255333;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Return-Path: <test@example.com>
Received: from luke.cencored.com.au (luke.cencored.com.au [64.49.254.38])
        by mx.google.com with ESMTP id w67si69927pyg.2007.03.19.17.40.54;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Received-SPF: neutral (google.com: 64.49.254.38 is neither permitted nor denied by best guess record for domain of test@example.com)
Received: (qmail 30589 invoked by uid 80); 20 Mar 2007 11:40:53 +1100
Date: 20 Mar 2007 11:40:53 +1100
Message-ID: <20070320004053.30588.qmail@luke.cencored.com.au>
To: "cencored" <cencored@gmail.com>
Subject: [#ZF-1041] Zend_Mail splits up words in email body - Zend Framework Issue Tracker
From: "" <test@example.com>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline


Simon Mundy [19/Mar/07 07:29 PM]=0D=0Athing2b and Veronique, can you also=

 please confirm which MTA is installed on your machines? Is it Postfix, QM=

ail or Sendmail?=0D=0ACould you also please send a test email to webmaster=

 at peptolab dot com so I can see the source intact?=0D=0A

Shown on screen through gmail is:

Simon Mundy [19/Mar/07 07:29 PM]
thing2b and Veronique, can you also
 please confirm which MTA is installed on your machines? Is it Postfix, QM
ail or Sendmail?
Could you also please send a test email to webmaster
 at peptolab dot com so I can see the source intact?

Note the break in the word "QMail"

Show
thing2b added a comment - I have send a message to Simon Mundy and with the same code sent myself one. Using version 0.9.0 of Zend Framework. Sendmail is in my phpinfo(). Postfix, QMail and not in my phpinfo().
$mail = new Zend_Mail();
$mail->setBodyText('Simon Mundy [19/Mar/07 07:29 PM]
thing2b and Veronique, can you also please confirm which MTA is installed on your machines? Is it Postfix, QMail or Sendmail?
Could you also please send a test email to webmaster at peptolab dot com so I can see the source intact?
');
$mail->setFrom( 'test@example.com'  );
$mail->setReturnPath( 'test@example.com'  );
$mail->addTo('cencored@gmail.com', 'Cencored');
$mail->setSubject( '[#ZF-1041] Zend_Mail splits up words in email body - Zend Framework Issue Tracker' );
$mail->send();
And the mail I received at gmail was:
Delivered-To: cencored@gmail.com
Received: by 10.100.111.13 with SMTP id j13cs581656anc;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Received: by 10.35.41.12 with SMTP id t12mr11603001pyj.1174351255333;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Return-Path: <test@example.com>
Received: from luke.cencored.com.au (luke.cencored.com.au [64.49.254.38])
        by mx.google.com with ESMTP id w67si69927pyg.2007.03.19.17.40.54;
        Mon, 19 Mar 2007 17:40:55 -0700 (PDT)
Received-SPF: neutral (google.com: 64.49.254.38 is neither permitted nor denied by best guess record for domain of test@example.com)
Received: (qmail 30589 invoked by uid 80); 20 Mar 2007 11:40:53 +1100
Date: 20 Mar 2007 11:40:53 +1100
Message-ID: <20070320004053.30588.qmail@luke.cencored.com.au>
To: "cencored" <cencored@gmail.com>
Subject: [#ZF-1041] Zend_Mail splits up words in email body - Zend Framework Issue Tracker
From: "" <test@example.com>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline


Simon Mundy [19/Mar/07 07:29 PM]=0D=0Athing2b and Veronique, can you also=

 please confirm which MTA is installed on your machines? Is it Postfix, QM=

ail or Sendmail?=0D=0ACould you also please send a test email to webmaster=

 at peptolab dot com so I can see the source intact?=0D=0A
Shown on screen through gmail is:
Simon Mundy [19/Mar/07 07:29 PM]
thing2b and Veronique, can you also
 please confirm which MTA is installed on your machines? Is it Postfix, QM
ail or Sendmail?
Could you also please send a test email to webmaster
 at peptolab dot com so I can see the source intact?
Note the break in the word "QMail"
Hide
Véronique M. added a comment -

I have sent the same email, with the same code posted earlier (in my first post) but with a CC to Simon and "ZF-1041" prefixing the mail subject.

The email shown in Gmail is the same as I posted before. I tried also with Thunderbird, same thing. On the other hand, the email displayed fine in Yahoo. But I haven't been able to find a way to print the original source in Yahoo mail, though.

According to our sysadmin, we use postfix 2.2.10.

Show
Véronique M. added a comment - I have sent the same email, with the same code posted earlier (in my first post) but with a CC to Simon and "ZF-1041" prefixing the mail subject. The email shown in Gmail is the same as I posted before. I tried also with Thunderbird, same thing. On the other hand, the email displayed fine in Yahoo. But I haven't been able to find a way to print the original source in Yahoo mail, though. According to our sysadmin, we use postfix 2.2.10.
Hide
thing2b added a comment -

I have found a few resources that may help in the solving of this bug. The website:
http://www.nabble.com/Zend_Mail-problem-with-special-chars-and-automatic-line-break-t3128214s16154.html
has an interesting note about something that sounds the same.

The problem was:

 
> Second, a long line with a link gets an automatic line break in the
> middle of the link which makes the link invalid. Also I would like to
> add a couple of empty lines but Zend_Mail always gets rid of them. I
> would rather prefer to handle the line breaks myself to prevent
> Zend_Mail from splitting up words and links in the middle. 

And the bug was stated as:

 
- Finally, the bug: When using the Zend_Mail default transport --  
PHP's own mail() function (sendmail) -- all of the CRLF end-of-line  
sequences that Zend_Mime::encodeQuotedPrintable() correctly generates  
are silently duplicated in the resulting message body. This results  
in the correct 'soft line break' to continue a line, followed by an  
additional CRLF by itself which mail clients interpret as a genuine  
line break. 

And the temporary fix that I am thinking about using in the mean time is:

 
2. If you're only ever going to use the default sendmail transport  
with Zend_Mail, you can change Zend_Mime::encodeQuotedPrintable() so  
that it only generates a single LF end-of-line sequence which will  
not be duplicated by PHP's mail() function (this is the solution  
proposed by Kevin in ZF-264). Change line 74 of Zend_Mime from this:

   const LINEEND = "\r\n";

to this:

   const LINEEND = "\n";

This change will cause problems if you attempt to use the SMTP  
transport because now the end-of-line sequence is wrong. Your  
messages will likely be rejected at some point in the delivery chain. 
Show
thing2b added a comment - I have found a few resources that may help in the solving of this bug. The website: http://www.nabble.com/Zend_Mail-problem-with-special-chars-and-automatic-line-break-t3128214s16154.html has an interesting note about something that sounds the same. The problem was:
 
> Second, a long line with a link gets an automatic line break in the
> middle of the link which makes the link invalid. Also I would like to
> add a couple of empty lines but Zend_Mail always gets rid of them. I
> would rather prefer to handle the line breaks myself to prevent
> Zend_Mail from splitting up words and links in the middle. 
And the bug was stated as:
 
- Finally, the bug: When using the Zend_Mail default transport --  
PHP's own mail() function (sendmail) -- all of the CRLF end-of-line  
sequences that Zend_Mime::encodeQuotedPrintable() correctly generates  
are silently duplicated in the resulting message body. This results  
in the correct 'soft line break' to continue a line, followed by an  
additional CRLF by itself which mail clients interpret as a genuine  
line break. 
And the temporary fix that I am thinking about using in the mean time is:
 
2. If you're only ever going to use the default sendmail transport  
with Zend_Mail, you can change Zend_Mime::encodeQuotedPrintable() so  
that it only generates a single LF end-of-line sequence which will  
not be duplicated by PHP's mail() function (this is the solution  
proposed by Kevin in ZF-264). Change line 74 of Zend_Mime from this:

   const LINEEND = "\r\n";

to this:

   const LINEEND = "\n";

This change will cause problems if you attempt to use the SMTP  
transport because now the end-of-line sequence is wrong. Your  
messages will likely be rejected at some point in the delivery chain. 
Hide
Simon Mundy added a comment -

Why thankyou thing! (Couldn't resist)

Thanks for following up the bugs. Problem is, Zend_Db_Transport_Sendmail does use the default PHP lineending instead of "\r\n". So UNIX defaults to "\n".

It's not an easy one to track insofar as we're seeing different results using the same MTA so I'd like to find some more common threads before we start committing changes.

This bug is still a priority but a fix will only be on the way once we're 100% sure!

Cheers

Show
Simon Mundy added a comment - Why thankyou thing! (Couldn't resist) Thanks for following up the bugs. Problem is, Zend_Db_Transport_Sendmail does use the default PHP lineending instead of "\r\n". So UNIX defaults to "\n". It's not an easy one to track insofar as we're seeing different results using the same MTA so I'd like to find some more common threads before we start committing changes. This bug is still a priority but a fix will only be on the way once we're 100% sure! Cheers
Hide
Tony Brady added a comment -

I have the same problem using the Postfix MTA 2.2.10 on RHEL 4. My work-around for now is not to use the quoted-printable encoding. This is easily done by extending the Zend_Mail class and has the advantage that you don't need to edit the ZF files (e.g. Zend_Mime LINEEND work-around above). All you need to do is change the

$mp->encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE;

line in setBodyText() and setBodyHtml() methods. E.g. (based on ZF-0.7):

/**
 * Fix to Zend_Mail so that mail is not sent out with quoted printable encoding
*/
class MyApp_Mail extends Zend_Mail
{

    /**
     * Sets the text body for the message.
     *
     * @param string $txt
     * @param string $charset
     * @return Zend_Mime_Part
    */
    public function setBodyText($txt, $charset=null)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($txt);
        $mp->encoding = Zend_Mime::ENCODING_8BIT;
        $mp->type = Zend_Mime::TYPE_TEXT;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyText = $mp;
        return $mp;
    }

    /**
     * Sets the HTML body for the message
     *
     * @param string $html
     * @param string $charset
     * @return Zend_Mime_Part
     */
    public function setBodyHtml($html, $charset=null)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($html);
        $mp->encoding = Zend_Mime::ENCODING_8BIT;
        $mp->type = Zend_Mime::TYPE_HTML;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyHtml = $mp;
        return $mp;
    }

}
Show
Tony Brady added a comment - I have the same problem using the Postfix MTA 2.2.10 on RHEL 4. My work-around for now is not to use the quoted-printable encoding. This is easily done by extending the Zend_Mail class and has the advantage that you don't need to edit the ZF files (e.g. Zend_Mime LINEEND work-around above). All you need to do is change the $mp->encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE; line in setBodyText() and setBodyHtml() methods. E.g. (based on ZF-0.7):
/**
 * Fix to Zend_Mail so that mail is not sent out with quoted printable encoding
*/
class MyApp_Mail extends Zend_Mail
{

    /**
     * Sets the text body for the message.
     *
     * @param string $txt
     * @param string $charset
     * @return Zend_Mime_Part
    */
    public function setBodyText($txt, $charset=null)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($txt);
        $mp->encoding = Zend_Mime::ENCODING_8BIT;
        $mp->type = Zend_Mime::TYPE_TEXT;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyText = $mp;
        return $mp;
    }

    /**
     * Sets the HTML body for the message
     *
     * @param string $html
     * @param string $charset
     * @return Zend_Mime_Part
     */
    public function setBodyHtml($html, $charset=null)
    {
        if ($charset === null) {
            $charset = $this->_charset;
        }

        $mp = new Zend_Mime_Part($html);
        $mp->encoding = Zend_Mime::ENCODING_8BIT;
        $mp->type = Zend_Mime::TYPE_HTML;
        $mp->disposition = Zend_Mime::DISPOSITION_INLINE;
        $mp->charset = $charset;

        $this->_bodyHtml = $mp;
        return $mp;
    }

}
Hide
Véronique M. added a comment -

For the record, I am using the workaround posted above and so far I have not had any problems.

Is there any update from the devteam about this? I wonder if there's any reason to use the quoted-printable encoding instead of the 8bit one...

Show
Véronique M. added a comment - For the record, I am using the workaround posted above and so far I have not had any problems. Is there any update from the devteam about this? I wonder if there's any reason to use the quoted-printable encoding instead of the 8bit one...
Hide
Nico Edtinger added a comment -

As Simon has written this bug is not easy to track down. Newlines are handled differently depending on the platform and MTA. As Tony has written one workaround is a different encoding. With the fix to ZF-980 the encoding can be changed with the third parameter in setBodyText() and setBodyHtml().

Show
Nico Edtinger added a comment - As Simon has written this bug is not easy to track down. Newlines are handled differently depending on the platform and MTA. As Tony has written one workaround is a different encoding. With the fix to ZF-980 the encoding can be changed with the third parameter in setBodyText() and setBodyHtml().
Hide
Benjamin Eberlei added a comment -

Since the bug does not depend on Zend_Mail, but on lower layers of Mail transport shouldn't the workaround possiblity through the API just be documented and the bug be closed?

Show
Benjamin Eberlei added a comment - Since the bug does not depend on Zend_Mail, but on lower layers of Mail transport shouldn't the workaround possiblity through the API just be documented and the bug be closed?
Hide
Véronique M. added a comment -

Sorry for the delay in responding. I have no problem with documenting the use of the third parameter and closing the bug, myself.

Show
Véronique M. added a comment - Sorry for the delay in responding. I have no problem with documenting the use of the third parameter and closing the bug, myself.
Hide
Benjamin Eberlei added a comment -

Close as bug/problem in the lower MTA layers, which can be circumvented with using base64 instead of quoted printable encoding.

Show
Benjamin Eberlei added a comment - Close as bug/problem in the lower MTA layers, which can be circumvented with using base64 instead of quoted printable encoding.

People

Vote (8)
Watch (8)

Dates

  • Created:
    Updated:
    Resolved: