<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>72690</bug_id>
          
          <creation_ts>2011-11-17 22:10:09 -0800</creation_ts>
          <short_desc>ChangeLogEntry should be able to parse entries with multiple authors</short_desc>
          <delta_ts>2011-11-21 15:01:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72243</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>505501</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 22:10:09 -0800</bug_when>
    <thetext>It turns out that people list multiple author names in change log entries :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505509</commentid>
    <comment_count>1</comment_count>
      <attachid>115741</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-17 22:24:45 -0800</bug_when>
    <thetext>Created attachment 115741
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505956</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-18 12:05:56 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507127</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-21 12:29:16 -0800</bug_when>
    <thetext>Ping reviewers again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507164</commentid>
    <comment_count>4</comment_count>
      <attachid>115741</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-21 13:09:37 -0800</bug_when>
    <thetext>Comment on attachment 115741
fixes the bug

View in context: https://bugs.webkit.org/attachment.cgi?id=115741&amp;action=review

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:-140
&gt; -        # FIXME: Canonicalize reviewer names; e.g. Andy &quot;First Time Reviewer&quot; Estes
&gt; -        # FIXME: Ignore NOBODY (\w+) and &quot;a spell checker&quot;
&gt; -        reviewer_list = re.split(r&apos;\s*(?:(?:,(?:\s+and\s+|&amp;)?)|(?:and\s+|&amp;)|(?:[/+]))\s*&apos;, reviewer_text)

Did these get fixed?

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:171
&gt; +        self._authors = []
&gt; +        if self._author_text:
&gt; +            authors = ChangeLogEntry._split_contributor_names(self._author_text)
&gt; +            assert(authors and len(authors) &gt;= 1)
&gt; +            for author in authors:
&gt; +                author_match = re.match(r&apos;(?P&lt;name&gt;.+?)\s+&lt;(?P&lt;email&gt;[^&gt;]+)&gt;&apos;, author)
&gt; +                self._authors.append({&apos;name&apos;: author_match.group(&quot;name&quot;), &apos;email&apos;: author_match.group(&quot;email&quot;)})

Any time I find myself initializing an empty array and adding to it, I wonder if I should use a list comprehension.

Furthermore, it seems like this should just be a helper function:
self._authors = self._parse_author_text(self._author_text)

&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:183
&gt; -        return self._author_name
&gt; +        return self._authors[0][&apos;name&apos;]

Do people really put more than one author in the date line?

&gt; Tools/Scripts/webkitpy/common/config/committers.py:612
&gt; +        return self._reviewer_only(self.account_by_email(email)) if email else None

These ones, where you aren&apos;t calling foo.lower() aren&apos;t needed.  YOu can just leave them as they were, no?  .get() will return None if passed None in this case, since None is not a key in the dictionary (or shouldn&apos;t be!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507242</commentid>
    <comment_count>5</comment_count>
      <attachid>115741</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-21 14:56:32 -0800</bug_when>
    <thetext>Comment on attachment 115741
fixes the bug

View in context: https://bugs.webkit.org/attachment.cgi?id=115741&amp;action=review

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:-140
&gt;&gt; -        reviewer_list = re.split(r&apos;\s*(?:(?:,(?:\s+and\s+|&amp;)?)|(?:and\s+|&amp;)|(?:[/+]))\s*&apos;, reviewer_text)
&gt; 
&gt; Did these get fixed?

Yup. Done in http://trac.webkit.org/changeset/100233.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:171
&gt;&gt; +                self._authors.append({&apos;name&apos;: author_match.group(&quot;name&quot;), &apos;email&apos;: author_match.group(&quot;email&quot;)})
&gt; 
&gt; Any time I find myself initializing an empty array and adding to it, I wonder if I should use a list comprehension.
&gt; 
&gt; Furthermore, it seems like this should just be a helper function:
&gt; self._authors = self._parse_author_text(self._author_text)

Hm... okay will try.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/changelog.py:183
&gt;&gt; +        return self._authors[0][&apos;name&apos;]
&gt; 
&gt; Do people really put more than one author in the date line?

Yes. e.g. Look for &quot;Zan Dobersek  &lt;zandobersek@gmail.com&gt; and Philippe Normand  &lt;pnormand@igalia.com&gt;&quot;

&gt;&gt; Tools/Scripts/webkitpy/common/config/committers.py:612
&gt;&gt; +        return self._reviewer_only(self.account_by_email(email)) if email else None
&gt; 
&gt; These ones, where you aren&apos;t calling foo.lower() aren&apos;t needed.  YOu can just leave them as they were, no?  .get() will return None if passed None in this case, since None is not a key in the dictionary (or shouldn&apos;t be!)

Good point. Will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507245</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-21 14:59:18 -0800</bug_when>
    <thetext>Thanks for the review, will land now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507251</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-21 15:01:24 -0800</bug_when>
    <thetext>Committed r100961: &lt;http://trac.webkit.org/changeset/100961&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115741</attachid>
            <date>2011-11-17 22:24:45 -0800</date>
            <delta_ts>2011-11-21 14:56:32 -0800</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-72690-20111117222444.patch</filename>
            <type>text/plain</type>
            <size>9353</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwMDcyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDExLTExLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIENoYW5nZUxvZ0VudHJ5IHNob3VsZCBiZSBhYmxlIHRvIHBhcnNlIGVudHJpZXMg
d2l0aCBtdWx0aXBsZSBhdXRob3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MjY5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFN1cHBvcnQgbXVsdGktYXV0aG9yIGNoYW5nZSBsb2cgZW50cmllcyBpbiBD
aGFuZ2VMb2dFbnRyeS4gU3BsaXQgYXV0aG9yIG5hbWVzIHVzaW5nCisgICAgICAgIHRoZSBzYW1l
IGxvZ2ljIGFzIHNwbGl0dGluZyByZXZpZXdlciBuYW1lcy4gX2F1dGhvcnMgbm93IHN0b3JlcyBs
aXN0IG9mIGRpY3Rpb25hcmllcworICAgICAgICB3aXRoICJuYW1lIiBhbmQgImVtYWlsIiBhcyBr
ZXlzLiBVbmxpa2UgcmV2aWV3ZXJzLCB3ZSBjYW4ndCBhbHdheXMgcmVzb2x2ZSBhdXRob3JzIHRv
CisgICAgICAgIGFjY291bnRzIGJlY2F1c2Ugc29tZSBjb250cmlidXRvcnMgYXJlIG5ldmVyIGxp
c3RlZCBpbiBjb21taXR0ZXJzLnB5LiAKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMucHk6IEZpeGVkIGEgYnVnIHRoYXQgKl9i
eV97bmFtZXxlbWFpbH0KKyAgICAgICAgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBhcmd1
bWVudCBpcyBOb25lLgorCiAyMDExLTExLTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxrdWJv
QHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIENsZWFuIHVwIHRoZSB1c2Ugb2YgREFU
QV9ESVIgaW4gdGhlIGJ1aWxkc3lzdGVtCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CShyZXZpc2lvbiAxMDA3MDgpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgaW1wb3J0IHJlCiBpbXBvcnQgdGV4dHdyYXAK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRl
ckxpc3QKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBBY2Nv
dW50CiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNvbmZpZy51cmxzIGFzIGNvbmZpZ191cmxzCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dnaW5nIGltcG9ydCBsb2cK
IApAQCAtNzEsNyArNzIsNyBAQCBkZWYgcGFyc2VfYnVnX2lkX2Zyb21fY2hhbmdlbG9nKG1lc3Nh
Z2UpCiAKIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgIyBlLmcuIDIwMDktMDYt
MDMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgotICAgIGRhdGVfbGluZV9yZWdleHAg
PSByJ14oP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSlccysoP1A8bmFtZT4uKz8pXHMrPCg/UDxl
bWFpbD5bXjw+XSspPiQnCisgICAgZGF0ZV9saW5lX3JlZ2V4cCA9IHInXig/UDxkYXRlPlxkezR9
LVxkezJ9LVxkezJ9KVxzKyg/UDxhdXRob3JzPig/UDxuYW1lPltePF0rPylccys8KD9QPGVtYWls
PltePD5dKyk+Lio/KSQnCiAKICAgICAjIGUuZy4gKiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHA6IEltcGxlbWVudCBGb29CYXJRdXV4LgogICAgIHRvdWNoZWRfZmlsZXNfcmVn
ZXhwID0gcideXHMqXCpccyooP1A8ZmlsZT5bQS1aYS16MC05X1wtXC4vXFxdKylccypcOicKQEAg
LTEzNSw5ICsxMzYsNyBAQCBjbGFzcyBDaGFuZ2VMb2dFbnRyeShvYmplY3QpOgogICAgICAgICBp
ZiBub3QgbGVuKHJldmlld2VyX3RleHQpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUK
IAotICAgICAgICAjIEZJWE1FOiBDYW5vbmljYWxpemUgcmV2aWV3ZXIgbmFtZXM7IGUuZy4gQW5k
eSAiRmlyc3QgVGltZSBSZXZpZXdlciIgRXN0ZXMKLSAgICAgICAgIyBGSVhNRTogSWdub3JlIE5P
Qk9EWSAoXHcrKSBhbmQgImEgc3BlbGwgY2hlY2tlciIKLSAgICAgICAgcmV2aWV3ZXJfbGlzdCA9
IHJlLnNwbGl0KHInXHMqKD86KD86LCg/OlxzK2FuZFxzK3wmKT8pfCg/OmFuZFxzK3wmKXwoPzpb
LytdKSlccyonLCByZXZpZXdlcl90ZXh0KQorICAgICAgICByZXZpZXdlcl9saXN0ID0gQ2hhbmdl
TG9nRW50cnkuX3NwbGl0X2NvbnRyaWJ1dG9yX25hbWVzKHJldmlld2VyX3RleHQpCiAKICAgICAg
ICAgIyBHZXQgcmlkIG9mICJyZXZpZXdlcnMiIGxpa2UgImV2ZW4gdGhvdWdoIHRoaXMgaXMganVz
dCBhLi4uIiBpbiAiUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZywgZXZlbiB0aG91Z2ggdGhpcyBpcyBq
dXN0IGEuLi4iCiAgICAgICAgICMgYW5kICJ3aG8gd3JvdGUgdGhlIG9yaWdpbmFsIGNvZGUiIGlu
ICJOb2FtIFJvc2VudGhhbCwgd2hvIHdyb3RlIHRoZSBvcmlnaW5hbCBjb2RlIgpAQCAtMTQ1LDYg
KzE0NCwxMCBAQCBjbGFzcyBDaGFuZ2VMb2dFbnRyeShvYmplY3QpOgogCiAgICAgICAgIHJldHVy
biByZXZpZXdlcl90ZXh0LCByZXZpZXdlcl9saXN0CiAKKyAgICBAc3RhdGljbWV0aG9kCisgICAg
ZGVmIF9zcGxpdF9jb250cmlidXRvcl9uYW1lcyh0ZXh0KToKKyAgICAgICAgcmV0dXJuIHJlLnNw
bGl0KHInXHMqKD86LCg/OlxzK2FuZFxzK3wmKT98KD86XnxccyspYW5kXHMrfFsvKyZdKVxzKics
IHRleHQpCisKICAgICBkZWYgX2Z1enpfbWF0Y2hfcmV2aWV3ZXJzKHNlbGYsIHJldmlld2Vyc190
ZXh0X2xpc3QpOgogICAgICAgICBpZiBub3QgcmV2aWV3ZXJzX3RleHRfbGlzdDoKICAgICAgICAg
ICAgIHJldHVybiBbXQpAQCAtMTU4LDI0ICsxNjEsMzYgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnko
b2JqZWN0KToKICAgICAgICAgICAgIGxvZygiV0FSTklORzogQ3JlYXRpbmcgaW52YWxpZCBDaGFu
Z2VMb2dFbnRyeTpcbiVzIiAlIHNlbGYuX2NvbnRlbnRzKQogCiAgICAgICAgICMgRklYTUU6IGdy
b3VwKCJuYW1lIikgZG9lcyBub3Qgc2VlbSB0byBiZSBVbmljb2RlPyAgUHJvYmFibHkgZHVlIHRv
IHNlbGYuX2NvbnRlbnRzIG5vdCBiZWluZyB1bmljb2RlLgotICAgICAgICBzZWxmLl9hdXRob3Jf
bmFtZSA9IG1hdGNoLmdyb3VwKCJuYW1lIikgaWYgbWF0Y2ggZWxzZSBOb25lCi0gICAgICAgIHNl
bGYuX2F1dGhvcl9lbWFpbCA9IG1hdGNoLmdyb3VwKCJlbWFpbCIpIGlmIG1hdGNoIGVsc2UgTm9u
ZQorICAgICAgICBzZWxmLl9hdXRob3JfdGV4dCA9IG1hdGNoLmdyb3VwKCJhdXRob3JzIikgaWYg
bWF0Y2ggZWxzZSBOb25lCisgICAgICAgIHNlbGYuX2F1dGhvcnMgPSBbXQorICAgICAgICBpZiBz
ZWxmLl9hdXRob3JfdGV4dDoKKyAgICAgICAgICAgIGF1dGhvcnMgPSBDaGFuZ2VMb2dFbnRyeS5f
c3BsaXRfY29udHJpYnV0b3JfbmFtZXMoc2VsZi5fYXV0aG9yX3RleHQpCisgICAgICAgICAgICBh
c3NlcnQoYXV0aG9ycyBhbmQgbGVuKGF1dGhvcnMpID49IDEpCisgICAgICAgICAgICBmb3IgYXV0
aG9yIGluIGF1dGhvcnM6CisgICAgICAgICAgICAgICAgYXV0aG9yX21hdGNoID0gcmUubWF0Y2go
cicoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5bXj5dKyk+JywgYXV0aG9yKQorICAgICAgICAg
ICAgICAgIHNlbGYuX2F1dGhvcnMuYXBwZW5kKHsnbmFtZSc6IGF1dGhvcl9tYXRjaC5ncm91cCgi
bmFtZSIpLCAnZW1haWwnOiBhdXRob3JfbWF0Y2guZ3JvdXAoImVtYWlsIil9KQogCiAgICAgICAg
IHNlbGYuX3Jldmlld2VyX3RleHQsIHNlbGYuX3Jldmlld2Vyc190ZXh0X2xpc3QgPSBDaGFuZ2VM
b2dFbnRyeS5fcGFyc2VfcmV2aWV3ZXJfdGV4dChzZWxmLl9jb250ZW50cykKICAgICAgICAgc2Vs
Zi5fcmV2aWV3ZXJzID0gc2VsZi5fZnV6el9tYXRjaF9yZXZpZXdlcnMoc2VsZi5fcmV2aWV3ZXJz
X3RleHRfbGlzdCkKLSAgICAgICAgc2VsZi5fYXV0aG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3Qu
Y29udHJpYnV0b3JfYnlfZW1haWwoc2VsZi5fYXV0aG9yX2VtYWlsKSBvciBzZWxmLl9jb21taXR0
ZXJfbGlzdC5jb250cmlidXRvcl9ieV9uYW1lKHNlbGYuX2F1dGhvcl9uYW1lKQorICAgICAgICBz
ZWxmLl9hdXRob3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRvcl9ieV9lbWFpbChz
ZWxmLmF1dGhvcl9lbWFpbCgpKSBvciBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRvcl9i
eV9uYW1lKHNlbGYuYXV0aG9yX25hbWUoKSkKIAogICAgICAgICBzZWxmLl90b3VjaGVkX2ZpbGVz
ID0gcmUuZmluZGFsbChzZWxmLnRvdWNoZWRfZmlsZXNfcmVnZXhwLCBzZWxmLl9jb250ZW50cywg
cmUuTVVMVElMSU5FKQogCisgICAgZGVmIGF1dGhvcl90ZXh0KHNlbGYpOgorICAgICAgICByZXR1
cm4gc2VsZi5fYXV0aG9yX3RleHQKKwogICAgIGRlZiBhdXRob3JfbmFtZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2F1dGhvcl9uYW1lCisgICAgICAgIHJldHVybiBzZWxmLl9hdXRob3Jz
WzBdWyduYW1lJ10KIAogICAgIGRlZiBhdXRob3JfZW1haWwoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9hdXRob3JfZW1haWwKKyAgICAgICAgcmV0dXJuIHNlbGYuX2F1dGhvcnNbMF1bJ2Vt
YWlsJ10KIAogICAgIGRlZiBhdXRob3Ioc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9hdXRo
b3IgICMgTWlnaHQgYmUgTm9uZQogCisgICAgZGVmIGF1dGhvcnMoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZWxmLl9hdXRob3JzCisKICAgICAjIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdvdWxkIGxp
a2UgdG8gbWFwIHJldml3ZXIgbmFtZXMgdG8gcmV2aWV3ZXIgb2JqZWN0cy4KICAgICAjIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1MzMKICAgICBkZWYgcmV2
aWV3ZXJfdGV4dChzZWxmKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDEwMDcwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5n
ZWxvZ191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiwxNCBAQCBjbGFz
cyBDaGFuZ2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5fYXNzZXJ0
X3BhcnNlX3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZIChCdWlsZCBmaXgs
IGZvcmdvdCB0byBzdm4gYWRkIHRoaXMgZmlsZSknLCBOb25lKQogICAgICAgICBzZWxmLl9hc3Nl
cnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9saXN0KCdSZXZpZXdlZCBieSBub2JvZHkgKHRyaXZpYWwg
Zm9sbG93IHVwIGZpeCksIEpvc2VwaCBQZWNvcmFybyBMR1RNLWVkLicsIE5vbmUpCiAKKyAgICBk
ZWYgX2VudHJ5X3dpdGhfYXV0aG9yKHNlbGYsIGF1dGhvcl90ZXh0KToKKyAgICAgICAgcmV0dXJu
IENoYW5nZUxvZ0VudHJ5KCcnJzIwMDktMDgtMTkgIEFVVEhPUl9URVhUCisKKyAgICAgICAgICAg
IFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YQorCisgICAgICAgICAgICAqIFNjcmlwdHMvYnVnemls
bGEtdG9vbDoKKycnJy5yZXBsYWNlKCJBVVRIT1JfVEVYVCIsIGF1dGhvcl90ZXh0KSkKKwogICAg
IGRlZiBfZW50cnlfd2l0aF9yZXZpZXdlcihzZWxmLCByZXZpZXdlcl9saW5lKToKICAgICAgICAg
cmV0dXJuIENoYW5nZUxvZ0VudHJ5KCcnJzIwMDktMDgtMTkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCkBAIC0zNTAsNiArMzU4LDE5IEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6enlfcmV2aWV3ZXJfbWF0
Y2goJ1Jldmlld2VkIGJ5IERhcmluIEFkbGVyIGluIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDc3MzY+LicsIFsnRGFyaW4gQWRsZXIgaW4nXSwgWydEYXJpbiBBZGxl
ciddKQogICAgICAgICBzZWxmLl9hc3NlcnRfZnV6enlfcmV2aWV3ZXJfbWF0Y2goJ1Jldmlld2Vk
IGJ5IEFkYW0gQmFydGguOncnLCBbJ0FkYW0gQmFydGguOncnXSwgWydBZGFtIEJhcnRoJ10pCiAK
KyAgICBkZWYgX2Fzc2VydF9wYXJzZV9hdXRob3JzKHNlbGYsIGF1dGhvcl90ZXh0LCBleHBlY3Rl
ZF9jb250cmlidXRvcnMpOgorICAgICAgICBwYXJzZWRfYXV0aG9ycyA9IFsoYXV0aG9yWyduYW1l
J10sIGF1dGhvclsnZW1haWwnXSkgZm9yIGF1dGhvciBpbiBzZWxmLl9lbnRyeV93aXRoX2F1dGhv
cihhdXRob3JfdGV4dCkuYXV0aG9ycygpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwYXJz
ZWRfYXV0aG9ycywgZXhwZWN0ZWRfY29udHJpYnV0b3JzKQorCisgICAgZGVmIHRlc3RfcGFyc2Vf
YXV0aG9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX2F1dGhvcnModSdBYXJv
biBDb2x3ZWxsICA8YWNvbHdlbGxAY2hyb21pdW0ub3JnPicsIFsodSdBYXJvbiBDb2x3ZWxsJywg
dSdhY29sd2VsbEBjaHJvbWl1bS5vcmcnKV0pCisgICAgICAgIHNlbGYuX2Fzc2VydF9wYXJzZV9h
dXRob3JzKCdFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4sIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+JywKKyAgICAgICAgICAgIFsoJ0VyaWMgU2VpZGVsJywgJ2VyaWNAd2Vi
a2l0Lm9yZycpLCAoJ1J5b3N1a2UgTml3YScsICdybml3YUB3ZWJraXQub3JnJyldKQorICAgICAg
ICBzZWxmLl9hc3NlcnRfcGFyc2VfYXV0aG9ycygnWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPiBhbmQgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+JywK
KyAgICAgICAgICAgIFsoJ1phbiBEb2JlcnNlaycsICd6YW5kb2JlcnNla0BnbWFpbC5jb20nKSwg
KCdQaGlsaXBwZSBOb3JtYW5kJywgJ3Bub3JtYW5kQGlnYWxpYS5jb20nKV0pCisgICAgICAgIHNl
bGYuX2Fzc2VydF9wYXJzZV9hdXRob3JzKCdOZXcgQ29udHJpYnV0b3IgIDxuZXdAd2Via2l0Lm9y
Zz4gYW5kIE5vb2IgIDxub29iQHdlYmtpdC5vcmc+JywKKyAgICAgICAgICAgIFsoJ05ldyBDb250
cmlidXRvcicsICduZXdAd2Via2l0Lm9yZycpLCAoJ05vb2InLCAnbm9vYkB3ZWJraXQub3JnJyld
KQorCiAgICAgZGVmIF9hc3NlcnRfaGFzX3ZhbGlkX3Jldmlld2VyKHNlbGYsIHJldmlld2VyX2xp
bmUsIGV4cGVjdGVkKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbnRyeV93aXRo
X3Jldmlld2VyKHJldmlld2VyX2xpbmUpLmhhc192YWxpZF9yZXZpZXdlcigpLCBleHBlY3RlZCkK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2NvbW1pdHRlcnMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL2Nv
bW1pdHRlcnMucHkJKHJldmlzaW9uIDEwMDcwOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OTQsMTkgKzU5
NCwxOSBAQCBjbGFzcyBDb21taXR0ZXJMaXN0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBjb250
cmlidXRvcldpdGhNaW5EaXN0YW5jZSwgbWluRGlzdGFuY2UKIAogICAgIGRlZiBhY2NvdW50X2J5
X2xvZ2luKHNlbGYsIGxvZ2luKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xvZ2luX3RvX2FjY291
bnRfbWFwKCkuZ2V0KGxvZ2luLmxvd2VyKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9sb2dpbl90
b19hY2NvdW50X21hcCgpLmdldChsb2dpbi5sb3dlcigpKSBpZiBsb2dpbiBlbHNlIE5vbmUKIAog
ICAgIGRlZiBhY2NvdW50X2J5X2VtYWlsKHNlbGYsIGVtYWlsKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2VtYWlsX3RvX2FjY291bnRfbWFwKCkuZ2V0KGVtYWlsLmxvd2VyKCkpCisgICAgICAgIHJl
dHVybiBzZWxmLl9lbWFpbF90b19hY2NvdW50X21hcCgpLmdldChlbWFpbC5sb3dlcigpKSBpZiBl
bWFpbCBlbHNlIE5vbmUKIAogICAgIGRlZiBjb250cmlidXRvcl9ieV9uYW1lKHNlbGYsIG5hbWUp
OgotICAgICAgICByZXR1cm4gc2VsZi5fbmFtZV90b19jb250cmlidXRvcl9tYXAoKS5nZXQobmFt
ZS5sb3dlcigpKQorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZV90b19jb250cmlidXRvcl9tYXAo
KS5nZXQobmFtZS5sb3dlcigpKSBpZiBuYW1lIGVsc2UgTm9uZQogCiAgICAgZGVmIGNvbnRyaWJ1
dG9yX2J5X2VtYWlsKHNlbGYsIGVtYWlsKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRyaWJ1
dG9yX29ubHkoc2VsZi5hY2NvdW50X2J5X2VtYWlsKGVtYWlsKSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2NvbnRyaWJ1dG9yX29ubHkoc2VsZi5hY2NvdW50X2J5X2VtYWlsKGVtYWlsKSkgaWYgZW1h
aWwgZWxzZSBOb25lCiAKICAgICBkZWYgY29tbWl0dGVyX2J5X2VtYWlsKHNlbGYsIGVtYWlsKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdHRlcl9vbmx5KHNlbGYuYWNjb3VudF9ieV9lbWFp
bChlbWFpbCkpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21taXR0ZXJfb25seShzZWxmLmFjY291
bnRfYnlfZW1haWwoZW1haWwpKSBpZiBlbWFpbCBlbHNlIE5vbmUKIAogICAgIGRlZiByZXZpZXdl
cl9ieV9lbWFpbChzZWxmLCBlbWFpbCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZXZpZXdlcl9v
bmx5KHNlbGYuYWNjb3VudF9ieV9lbWFpbChlbWFpbCkpCisgICAgICAgIHJldHVybiBzZWxmLl9y
ZXZpZXdlcl9vbmx5KHNlbGYuYWNjb3VudF9ieV9lbWFpbChlbWFpbCkpIGlmIGVtYWlsIGVsc2Ug
Tm9uZQo=
</data>
<flag name="review"
          id="114729"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>