<?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>193438</bug_id>
          
          <creation_ts>2019-01-15 00:08:08 -0800</creation_ts>
          <short_desc>[JSC] Use KnownStringUse for GetByVal(Array::String) since AI would offer wider type information and offer non-string type after removing Check(String)</short_desc>
          <delta_ts>2019-01-15 18:18:49 -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>JavaScriptCore</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494555</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 00:08:08 -0800</bug_when>
    <thetext>Let&apos;s consider the following code.

32:&lt;!0:-&gt; GetLocal(Check:Untyped:@1, JS|MustGen|UseAsOther, StringIdent|Other, arg1(B~/FlushedJSValue), R:Stack(6), bc#15, ExitValid)  predicting StringIdent|Other
33:&lt;!0:-&gt; PutByOffset(KnownCell:@29, KnownCell:@29, Check:Untyped:@32, MustGen, id0{y}, 0, inferredType = Bottom, W:NamedProperties(0), ClobbersExit, bc#15, ExitValid)
47:&lt; 1:-&gt; GetByOffset(KnownCell:@29, KnownCell:@29, JS|UseAsOther, StringIdent, id0{y}, 0, inferredType = String, R:NamedProperties(0), Exits, bc#39, ExitValid)  predicting StringIdent
...
49:&lt; 1:-&gt; SetLocal(Cell:@47, IsFlushed, loc11(Q&lt;StringIdent&gt;/FlushedCell), W:Stack(-12), bc#39, exit: bc#44, ExitValid)  predicting StringIdent
...
87:&lt;!0:-&gt;   GetLocal(Check:Untyped:@154, JS|MustGen|UseAsOther, StringIdent, loc11(Q&lt;StringIdent&gt;/FlushedCell), R:Stack(-12), bc#16, ExitValid)  predicting StringIdent
...
173:&lt;!0:-&gt;   Check(String:@87, MustGen, bc#16, ExitValid)
...
89:&lt;!0:-&gt;   GetByVal(KnownCell:@87, Int32:@88, Check:Untyped:@174, JS|MustGen|VarArgs|PureInt, StringIdent, String+NonArray+InBounds+AsIs+Read, Exits, bc#16, ExitValid)  predicting StringIdent

In the first AI phase, PutByOffset and GetByOffset prove that given @32 value is always String by using inferred type.
So, @47 becomes String. And @173 will be removed since @87 is now proven as String (SetLocal and GetLocal).

But, after that, we perform LocalCSE. At that time,

@47 GetByOffset is converted to @32 by using heap location information.
@87 GetLocal is converted to @32 by using stack location information.

And then, after the conversion, we will get the following code.

32:&lt;!0:-&gt; GetLocal(Check:Untyped:@1, JS|MustGen|UseAsOther, StringIdent|Other, arg1(B~/FlushedJSValue), R:Stack(6), bc#15, ExitValid)  predicting StringIdent|Other
...
89:&lt;!0:-&gt;   GetByVal(KnownCell:@32, Int32:@79, Check:Untyped:@174, JS|MustGen|VarArgs|PureInt, StringIdent, String+NonArray+InBounds+AsIs+Read, Exits, bc#16, ExitValid)  predicting StringIdent

Then, the problem is that, GetLocal&apos;s AbstractValue is no longer proven as String. Our CSE weaken the AbstractValue, so that this is now Cell.
Then, DFGSpeculativeJIT.cpp assertion hits in GetByVal compiling code.

    ArrayMode(Array::String, Array::Read).alreadyChecked(m_jit.graph(), node, m_state.forNode(m_graph.child(node, 0)))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494556</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 00:09:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/45581249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494766</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 12:48:50 -0800</bug_when>
    <thetext>The issue is that

1. GetByOffset in AI does not include result type information to HeapLocation (in Clobberize)
2. CSE performs substitution between GetByOffset with a fancy different node that has weaker output type constraint. In this case, GetLocal through PutByOffset.
3. SpeculativeJIT hits assertion since the type constraint is weaken.

Discussed with Saam, the correct fix is including inferred type information into PutByOffset / GetByOffset&apos;s HeapLocation.
The issue itself would be gone once inferred types are removed in bug 190906.
But basically the root cause of this issue is that some nodes do not include its output type information in clobberizing rule and so that CSE will accidentally replace the node with the node which has different output type constraints (if it is weaker, then, we have a bad time).

I&apos;ll review nodes in AI to figure out the potential problems further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494813</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 14:18:54 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; The issue is that
&gt; 
&gt; 1. GetByOffset in AI does not include result type information to
&gt; HeapLocation (in Clobberize)
&gt; 2. CSE performs substitution between GetByOffset with a fancy different node
&gt; that has weaker output type constraint. In this case, GetLocal through
&gt; PutByOffset.
&gt; 3. SpeculativeJIT hits assertion since the type constraint is weaken.
&gt; 
&gt; Discussed with Saam, the correct fix is including inferred type information
&gt; into PutByOffset / GetByOffset&apos;s HeapLocation.
&gt; The issue itself would be gone once inferred types are removed in bug 190906.
&gt; But basically the root cause of this issue is that some nodes do not include
&gt; its output type information in clobberizing rule and so that CSE will
&gt; accidentally replace the node with the node which has different output type
&gt; constraints (if it is weaker, then, we have a bad time).
&gt; 
&gt; I&apos;ll review nodes in AI to figure out the potential problems further.

MultiGetByOffset seems a bit dangerous? Investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494885</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:19:26 -0800</bug_when>
    <thetext>After discussing with Saam, the above problem exists, but we can fix this issue by using KnownStringUse. I&apos;ll upload a patch with this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494887</commentid>
    <comment_count>5</comment_count>
      <attachid>359220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:26:28 -0800</bug_when>
    <thetext>Created attachment 359220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494891</commentid>
    <comment_count>6</comment_count>
      <attachid>359220</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:31:42 -0800</bug_when>
    <thetext>Comment on attachment 359220
Patch

GetArrayLength is expecting KnownCellUse. And it is OK. But in FTL, we emit GetArrayLength from GetByVal to lower CheckInBounds. At that time, it becomes GetArrayLength(KnownStringUse). We should support GetArrayLength(KnownStringUse) too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494895</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:34:30 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; Comment on attachment 359220 [details]
&gt; Patch
&gt; 
&gt; GetArrayLength is expecting KnownCellUse. And it is OK. But in FTL, we emit
&gt; GetArrayLength from GetByVal to lower CheckInBounds. At that time, it
&gt; becomes GetArrayLength(KnownStringUse). We should support
&gt; GetArrayLength(KnownStringUse) too.

Or, just simply converting Edge(KnownStringUse) =&gt; Edge(KnownCellUse). It&apos;s simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494898</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:37:33 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #7)
&gt; (In reply to Yusuke Suzuki from comment #6)
&gt; &gt; Comment on attachment 359220 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; GetArrayLength is expecting KnownCellUse. And it is OK. But in FTL, we emit
&gt; &gt; GetArrayLength from GetByVal to lower CheckInBounds. At that time, it
&gt; &gt; becomes GetArrayLength(KnownStringUse). We should support
&gt; &gt; GetArrayLength(KnownStringUse) too.
&gt; 
&gt; Or, just simply converting Edge(KnownStringUse) =&gt; Edge(KnownCellUse). It&apos;s
&gt; simpler.

No. We do not need to do it since we do not lower GetByVal(Array::String) =&gt; CheckInBounds + GetByVal. Adding an assertion now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494906</commentid>
    <comment_count>9</comment_count>
      <attachid>359226</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:51:31 -0800</bug_when>
    <thetext>Created attachment 359226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494907</commentid>
    <comment_count>10</comment_count>
      <attachid>359227</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 16:54:17 -0800</bug_when>
    <thetext>Created attachment 359227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494911</commentid>
    <comment_count>11</comment_count>
      <attachid>359227</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-15 17:01:39 -0800</bug_when>
    <thetext>Comment on attachment 359227
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:129
&gt; +            RELEASE_ASSERT_NOT_REACHED();

DFG_ASSERT please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494913</commentid>
    <comment_count>12</comment_count>
      <attachid>359227</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-15 17:03:02 -0800</bug_when>
    <thetext>Comment on attachment 359227
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        After the first run removes Check(String), it would happen that AI starts saying the tyep of 1st child is not String.

typo: tyep =&gt; type.

&gt; Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:128
&gt; +            // When we need supporting this, it requires an additional code since base&apos;s useKind is KnownStringUse.

Nit: This should probably be: &quot;When we need to support this, it will require additional code since base&apos;s useKind is KnownStringUse.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494914</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-15 17:03:29 -0800</bug_when>
    <thetext>r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494922</commentid>
    <comment_count>14</comment_count>
      <attachid>359227</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 17:15:47 -0800</bug_when>
    <thetext>Comment on attachment 359227
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        After the first run removes Check(String), it would happen that AI starts saying the tyep of 1st child is not String.
&gt; 
&gt; typo: tyep =&gt; type.

Oops, thanks. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:128
&gt;&gt; +            // When we need supporting this, it requires an additional code since base&apos;s useKind is KnownStringUse.
&gt; 
&gt; Nit: This should probably be: &quot;When we need to support this, it will require additional code since base&apos;s useKind is KnownStringUse.&quot;

Nice. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:129
&gt;&gt; +            RELEASE_ASSERT_NOT_REACHED();
&gt; 
&gt; DFG_ASSERT please.

Fixed. Change this to DFG_CRASH().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494951</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-15 18:18:49 -0800</bug_when>
    <thetext>Fixed in https://trac.webkit.org/changeset/240024/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359220</attachid>
            <date>2019-01-15 16:26:28 -0800</date>
            <delta_ts>2019-01-15 16:51:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193438-20190115162627.patch</filename>
            <type>text/plain</type>
            <size>5550</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTU3ZjU1ZGM5MTVlYmI0ZmE1Mjk0MTM3OGVhOTE5MjA2ZDgxNmRlLi44N2E0NmEwNjIyM2FlMjlj
ZDc1ZGIzYWM3ZTIxNGY3NzU0MTU0M2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxOS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIENTRSBicmVha3MgdGhlIHByZXZpb3VzIHByb3Zl
biBBSSdzIEFic3RyYWN0VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdldEJ5VmFsKEFycmF5OjpTdHJpbmcpIGVtaXRzIENoZWNrKFN0cmluZykg
YmVmb3JlIHRoYXQuIEJ1dCBBSSBjYW4gYnJvYWRlbiB0eXBlIGNvbnN0cmFpbnQgaW4gdGhlIHNl
Y29uZCBydW4uCisgICAgICAgIEFmdGVyIHRoZSBmaXJzdCBydW4gcmVtb3ZlcyBDaGVjayhTdHJp
bmcpLCBpdCB3b3VsZCBoYXBwZW4gdGhhdCBBSSBzdGFydHMgc2F5aW5nIHRoZSB0eWVwIG9mIDFz
dCBjaGlsZCBpcyBub3QgU3RyaW5nLgorICAgICAgICBUbyBjbGFpbSB0aGF0IGl0ICppcyogYSBT
dHJpbmcgdHlwZSwgd2Ugc2hvdWxkIHVzZSBLbm93blN0cmluZ1VzZSBoZXJlLgorCisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6IFN0cmluZ0NoYXJBdCBhbmQgR2V0QnlWYWwoQXJyYXk6OlN0cmluZykgc2hh
cmUgdGhlIHVuZGVybHlpbmcgY29tcGlsZXIgY29kZS4gV2Ugc2hvdWxkCisgICAgICAgIGNoYW5n
ZSBTdHJpbmdVc2UgPT4gS25vd25TdHJpbmdVc2UgZm9yIFN0cmluZ0NoYXJBdCB0b28uIEFuZCBT
dHJpbmdDaGFyQXQgYW5kIFN0cmluZ0NoYXJDb2RlQXQgcG90ZW50aWFsbHkgaGF2ZSB0aGUgc2Ft
ZQorICAgICAgICBwcm9ibGVtLiBUaGlzIHBhdGNoIGZpeGVzIGl0IHRvby4KKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJBdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQ29kZUF0KToKKwogMjAxOS0wMS0xNSAgVG9tYXMg
UG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQ6IEZpeCB0
aGUgLVdmb3JtYXQgY29tcGlsZXIgd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDA1MTEyZGE0ZDZmNTE2MTQwMzE3M2VjY2QyM2RmYzJm
NzA5MTA3OWIuLmU3NzlkZWI0ZDQ4YzExZTE5NDdlNWM0MGRjNjllMWQwZWVjMWM1ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNzgyLDcgKzc4
Miw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8g
Q3VycmVudGx5IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCiAgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkgPT0gQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcs
IEFycmF5OjpSZWFkKSk7CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNo
aWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25TdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC05MDAsNiArOTAwLDEwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0Ogog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNzM4MzZhOGFhZDkwMWU0MzI0YTdlZWE4
ZTQwZTFhZDkzNjhkNTEzNy4uYzYzNDhiYTA0NzliMzJjNzYxNjNiNjgxOGFlZDhmMmI0ZDY0MTU3
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApA
QCAtNjU5MCw3ICs2NTkwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lk
IGNvbXBpbGVTdHJpbmdDaGFyQXQoKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dD
ZWxsKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAwKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93
U3RyaW5nKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAwKSk7CiAgICAgICAgIExWYWx1ZSBpbmRleCA9
IGxvd0ludDMyKG1fZ3JhcGguY2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIExWYWx1ZSBzdG9y
YWdlID0gbG93U3RvcmFnZShtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICAgICAg
CkBAIC02NzA0LDcgKzY3MDQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMQmFz
aWNCbG9jayBpczE2Qml0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKIAotICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93U3Ry
aW5nKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMiht
X25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1f
bm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTRjNDdmYWMyOWJhN2I3YWU2YWVlNWRkMmJlZTBi
ZTQ0OWIyZTE0My4uNTNlZjdlYWE4YjQxNWUxN2ZhZDAzZjU4ZTIzMTdmY2I0NmViNjg5ZCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIENTRSBicmVha3MgdGhlIHByZXZpb3VzIHByb3Zl
biBBSSdzIEFic3RyYWN0VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuZGVyIHRoZSBoZWF2eSBsb2FkIChsaWtlLCBjb21waWxpbmcgV2ViS2l0
KSwgQUkgaW4gdGhpcyBjb2RlIGNhbiBicm9hZGVuIHR5cGUgaW5mb3JtYXRpb24gYWZ0ZXIgdGhl
IDFzdCBydW4uCisgICAgICAgIFRoZW4sIEdldEJ5VmFsKFN0cmluZykgY3Jhc2hlZC4KKworICAg
ICAgICAqIHN0cmVzcy90eXBlLWZvci1nZXQtYnktdmFsLWNhbi1iZS13aWRlbi1hZnRlci1haS5q
czogQWRkZWQuCisgICAgICAgIChIZWxsbyk6CisgICAgICAgIChmb28pOgorCiAyMDE5LTAxLTE1
ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgc2tpcCBKSVQgdGVzdHMgaWYgaXQncyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4tYmUtd2lkZW4tYWZ0ZXItYWkuanMgYi9K
U1Rlc3RzL3N0cmVzcy90eXBlLWZvci1nZXQtYnktdmFsLWNhbi1iZS13aWRlbi1hZnRlci1haS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NDgxOGI3ZjlkN2I4YzU2MDIyNmU4MmMwZTgyYmNmYWM3ZjUzYjM3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4t
YmUtd2lkZW4tYWZ0ZXItYWkuanMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0t
aml0UG9saWN5U2NhbGU9MCIpCisvLyBSdW4gd2l0aCBmb3IgaSBpbiB7MS4uMTAwMH07IGRvIGVj
aG8gJGkgJiYgVk09L3BhdGgvdG8vV2ViS2l0L1dlYktpdEJ1aWxkL0RlYnVnLyAmJiBEWUxEX0ZS
QU1FV09SS19QQVRIPSRWTSAkVk0vanNjIC0tdXNlRG9sbGFyVk09MSAtLWppdFBvbGljeVNjYWxl
PTAgdHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4tYmUtd2lkZW4tYWZ0ZXItYWkuanMgOyBkb25lCisK
K2Z1bmN0aW9uIEhlbGxvKHkpIHsKKyAgdGhpcy55ID0geTsKKyAgdGhpcy54ID0gZm9vKHRoaXMu
eSk7Cit9CitmdW5jdGlvbiBmb28oeikgeworICB0cnkgeworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTsgaSsrKSB7CisgICAgICB6W2ldOworICAgIH0KKyAgfSBjYXRjaCB7CisgIH0KK30KK25l
dyBIZWxsbygnYScpOworbmV3IEhlbGxvKCdhJyk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgIG5ldyBIZWxsbygpOworfQorCisvLyBCdXN5IGxvb3AgdG8gbGV0IHRoZSBjcmFz
aCByZXBvcnRlciBoYXZlIGEgY2hhbmNlIHRvIGNhcHR1cmUgdGhlIGNyYXNoIGxvZyBmb3IgdGhl
IENvbXBpbGVyIHRocmVhZC4KK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Cisg
ICAgJHZtLmZ0bFRydWUoKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359226</attachid>
            <date>2019-01-15 16:51:31 -0800</date>
            <delta_ts>2019-01-15 16:54:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193438-20190115165130.patch</filename>
            <type>text/plain</type>
            <size>7565</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTU3ZjU1ZGM5MTVlYmI0ZmE1Mjk0MTM3OGVhOTE5MjA2ZDgxNmRlLi42MGU3ZWQ1YmFjYzU4YmJl
YzJjOGRjOGMyM2I0ZWI0ZmFjNTJkOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxOS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIENTRSBicmVha3MgdGhlIHByZXZpb3VzIHByb3Zl
biBBSSdzIEFic3RyYWN0VmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzQzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdldEJ5VmFsKEFycmF5OjpTdHJpbmcpIGVtaXRzIENoZWNrKFN0cmluZykg
YmVmb3JlIHRoYXQuIEJ1dCBBSSBjYW4gYnJvYWRlbiB0eXBlIGNvbnN0cmFpbnQgaW4gdGhlIHNl
Y29uZCBydW4uCisgICAgICAgIEFmdGVyIHRoZSBmaXJzdCBydW4gcmVtb3ZlcyBDaGVjayhTdHJp
bmcpLCBpdCB3b3VsZCBoYXBwZW4gdGhhdCBBSSBzdGFydHMgc2F5aW5nIHRoZSB0eWVwIG9mIDFz
dCBjaGlsZCBpcyBub3QgU3RyaW5nLgorICAgICAgICBUbyBjbGFpbSB0aGF0IGl0ICppcyogYSBT
dHJpbmcgdHlwZSwgd2Ugc2hvdWxkIHVzZSBLbm93blN0cmluZ1VzZSBoZXJlLgorCisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6IFN0cmluZ0NoYXJBdCBhbmQgR2V0QnlWYWwoQXJyYXk6OlN0cmluZykgc2hh
cmUgdGhlIHVuZGVybHlpbmcgY29tcGlsZXIgY29kZS4gV2Ugc2hvdWxkCisgICAgICAgIGNoYW5n
ZSBTdHJpbmdVc2UgPT4gS25vd25TdHJpbmdVc2UgZm9yIFN0cmluZ0NoYXJBdCB0b28uIEFuZCBT
dHJpbmdDaGFyQXQgYW5kIFN0cmluZ0NoYXJDb2RlQXQgcG90ZW50aWFsbHkgaGF2ZSB0aGUgc2Ft
ZQorICAgICAgICBwcm9ibGVtLiBUaGlzIHBhdGNoIGZpeGVzIGl0IHRvby4KKyAgICAgICAgKiBk
ZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJp
bmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTdHJp
bmdDaGFyQXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
U3RyaW5nQ2hhckNvZGVBdCk6CisKIDIwMTktMDEtMTUgIFRvbWFzIFBvcGVsYSAgPHRwb3BlbGFA
cmVkaGF0LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkOiBGaXggdGhlIC1XZm9ybWF0IGNvbXBp
bGVyIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCAwNTExMmRhNGQ2ZjUxNjE0MDMxNzNlY2NkMjNkZmMyZjcwOTEwNzliLi5lNzc5ZGVi
NGQ0OGMxMWUxOTQ3ZTVjNDBkYzY5ZTFkMGVlYzFjNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTc4Miw3ICs3ODIsNyBAQCBjbGFzcyBGaXh1
cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBoYXZl
IG5vIGdvb2Qgd2F5IG9mIHJlZmluaW5nIHRoZXNlLgogICAgICAgICAgICAgQVNTRVJUKG5vZGUt
PmFycmF5TW9kZSgpID09IEFycmF5TW9kZShBcnJheTo6U3RyaW5nLCBBcnJheTo6UmVhZCkpOwog
ICAgICAgICAgICAgYmxlc3NBcnJheU9wZXJhdGlvbihub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hp
bGQyKCksIG5vZGUtPmNoaWxkMygpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duU3RyaW5nVXNlPihu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGls
ZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtOTAwLDYgKzkwMCwxMCBA
QCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OkZvcmNlRXhpdDoKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKKyAgICAgICAgICAgICAgICBm
aXhFZGdlPEtub3duU3RyaW5nVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDEpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgZml4RWRnZTxLbm93bkNlbGxVc2U+KG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9k
ZSwgMCkpOwogICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgudmFyQXJn
Q2hpbGQobm9kZSwgMSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FMb3dlcmluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
TG93ZXJpbmdQaGFzZS5jcHAKaW5kZXggZTcyNjE4NDVmMmMyZDM4ZWMxMWFmMGUyYTdiZWUzYTZm
MjNhOTdmYy4uYWQzODk5NDA4NjIyM2U1OTExYTNmNTBjZTQ3YzYwOTEyOWVkNmNlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCkBA
IC0xMjQsMTMgKzEyNCwxNyBAQCBjbGFzcyBTU0FMb3dlcmluZ1BoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgICAg
IG9wID0gR2V0VmVjdG9yTGVuZ3RoOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
QXJyYXk6OlN0cmluZzoKKyAgICAgICAgICAgIC8vIFdoZW4gd2UgbmVlZCBzdXBwb3J0aW5nIHRo
aXMsIGl0IHJlcXVpcmVzIGFuIGFkZGl0aW9uYWwgY29kZSBzaW5jZSBiYXNlJ3MgdXNlS2luZCBp
cyBLbm93blN0cmluZ1VzZS4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKICAgICAgICAgTm9kZSogbGVuZ3RoID0gbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKICAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBvcCwg
bV9ub2RlLT5vcmlnaW4sCi0gICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5h
c1dvcmQoKSksIGJhc2UsIHN0b3JhZ2UpOworICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJy
YXlNb2RlKCkuYXNXb3JkKCkpLCBFZGdlKGJhc2Uubm9kZSgpLCBLbm93bkNlbGxVc2UpLCBzdG9y
YWdlKTsKICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgIG1f
bm9kZUluZGV4LCBTcGVjSW50MzJPbmx5LCBDaGVja0luQm91bmRzLCBtX25vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDczODM2YThh
YWQ5MDFlNDMyNGE3ZWVhOGU0MGUxYWQ5MzY4ZDUxMzcuLmM2MzQ4YmEwNDc5YjMyYzc2MTYzYjY4
MThhZWQ4ZjJiNGQ2NDE1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTY1OTAsNyArNjU5MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgCiAgICAgdm9pZCBjb21waWxlU3RyaW5nQ2hhckF0KCkKICAgICB7Ci0gICAgICAgIExW
YWx1ZSBiYXNlID0gbG93Q2VsbChtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMCkpOworICAgICAgICBM
VmFsdWUgYmFzZSA9IGxvd1N0cmluZyhtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMCkpOwogICAgICAg
ICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMSkpOwogICAg
ICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9ncmFwaC5jaGlsZChtX25vZGUsIDIp
KTsKICAgICAgICAgICAgIApAQCAtNjcwNCw3ICs2NzA0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgTEJhc2ljQmxvY2sgaXMxNkJpdCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAKLSAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFs
dWUgYmFzZSA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGlu
ZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSBzdG9yYWdl
ID0gbG93U3RvcmFnZShtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU0YzQ3ZmFjMjliYTdi
N2FlNmFlZTVkZDJiZWUwYmU0NDliMmUxNDMuLjI0OGRjZGQ0NjlmYmU1ZWEwOTc4YjMzMjFlMDgx
MGRlYWJmZWRjNmEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx5
dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBDU0UgYnJlYWtzIHRo
ZSBwcmV2aW91cyBwcm92ZW4gQUkncyBBYnN0cmFjdFZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0MzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmRlciB0aGUgaGVhdnkgbG9hZCAobGlrZSwg
Y29tcGlsaW5nIFdlYktpdCksIEFJIGluIHRoaXMgY29kZSBjYW4gYnJvYWRlbiB0eXBlIGluZm9y
bWF0aW9uIGFmdGVyIHRoZSAxc3QgcnVuLgorICAgICAgICBUaGVuLCBHZXRCeVZhbChTdHJpbmcp
IGNyYXNoZWQuCisKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLWdldC1ieS12YWwtbG93ZXJpbmcu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAg
ICogc3RyZXNzL3R5cGUtZm9yLWdldC1ieS12YWwtY2FuLWJlLXdpZGVuLWFmdGVyLWFpLmpzOiBB
ZGRlZC4KKyAgICAgICAgKEhlbGxvKToKKyAgICAgICAgKGZvbyk6CisKIDIwMTktMDEtMTUgIFRv
bWFzIFBvcGVsYSAgPHRwb3BlbGFAcmVkaGF0LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBz
a2lwIEpJVCB0ZXN0cyBpZiBpdCdzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zdHJpbmctZ2V0LWJ5LXZhbC1sb3dlcmluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0cmlu
Zy1nZXQtYnktdmFsLWxvd2VyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OTMzZWI3NDFhMDkzMmE3ZDNk
MWM0ZDg0NTNlY2Q4ZWQyMWI3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9z
dHJpbmctZ2V0LWJ5LXZhbC1sb3dlcmluZy5qcwpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25v
SW5saW5lKHNob3VsZEJlKTsKKworZnVuY3Rpb24gdGVzdCh2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWVbMl07Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgIHNob3VsZEJlKHRlc3QoIkhlbGxvIiksICdsJyk7CisgICAgc2hvdWxkQmUo
dGVzdCgiV29ybGQiKSwgJ3InKTsKKyAgICBzaG91bGRCZSh0ZXN0KCJOaWNlIiksICdjJyk7Cit9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90eXBlLWZvci1nZXQtYnktdmFsLWNhbi1iZS13
aWRlbi1hZnRlci1haS5qcyBiL0pTVGVzdHMvc3RyZXNzL3R5cGUtZm9yLWdldC1ieS12YWwtY2Fu
LWJlLXdpZGVuLWFmdGVyLWFpLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ODE4YjdmOWQ3YjhjNTYwMjI2ZTgy
YzBlODJiY2ZhYzdmNTNiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90eXBl
LWZvci1nZXQtYnktdmFsLWNhbi1iZS13aWRlbi1hZnRlci1haS5qcwpAQCAtMCwwICsxLDI1IEBA
CisvL0AgcnVuRGVmYXVsdCgiLS1qaXRQb2xpY3lTY2FsZT0wIikKKy8vIFJ1biB3aXRoIGZvciBp
IGluIHsxLi4xMDAwfTsgZG8gZWNobyAkaSAmJiBWTT0vcGF0aC90by9XZWJLaXQvV2ViS2l0QnVp
bGQvRGVidWcvICYmIERZTERfRlJBTUVXT1JLX1BBVEg9JFZNICRWTS9qc2MgLS11c2VEb2xsYXJW
TT0xIC0taml0UG9saWN5U2NhbGU9MCB0eXBlLWZvci1nZXQtYnktdmFsLWNhbi1iZS13aWRlbi1h
ZnRlci1haS5qcyA7IGRvbmUKKworZnVuY3Rpb24gSGVsbG8oeSkgeworICB0aGlzLnkgPSB5Owor
ICB0aGlzLnggPSBmb28odGhpcy55KTsKK30KK2Z1bmN0aW9uIGZvbyh6KSB7CisgIHRyeSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxOyBpKyspIHsKKyAgICAgIHpbaV07CisgICAgfQorICB9
IGNhdGNoIHsKKyAgfQorfQorbmV3IEhlbGxvKCdhJyk7CituZXcgSGVsbG8oJ2EnKTsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgbmV3IEhlbGxvKCk7Cit9CisKKy8vIEJ1c3kg
bG9vcCB0byBsZXQgdGhlIGNyYXNoIHJlcG9ydGVyIGhhdmUgYSBjaGFuY2UgdG8gY2FwdHVyZSB0
aGUgY3Jhc2ggbG9nIGZvciB0aGUgQ29tcGlsZXIgdGhyZWFkLgorZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDAwOyArK2kpIHsKKyAgICAkdm0uZnRsVHJ1ZSgpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359227</attachid>
            <date>2019-01-15 16:54:17 -0800</date>
            <delta_ts>2019-01-15 17:03:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193438-20190115165415.patch</filename>
            <type>text/plain</type>
            <size>7827</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZTU3ZjU1ZGM5MTVlYmI0ZmE1Mjk0MTM3OGVhOTE5MjA2ZDgxNmRlLi4wNWQ4Yzc1ODhhZDZhNDQ0
OTA3MjQyNGI5M2YyZDVlZGM1MmU3MWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0wMS0xNSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIFVzZSBLbm93blN0cmluZ1VzZSBmb3IgR2V0QnlW
YWwoQXJyYXk6OlN0cmluZykgc2luY2UgQUkgd291bGQgb2ZmZXIgd2lkZXIgdHlwZSBpbmZvcm1h
dGlvbiBhbmQgb2ZmZXIgbm9uLXN0cmluZyB0eXBlIGFmdGVyIHJlbW92aW5nIENoZWNrKFN0cmlu
ZykKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQz
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU1ODEyNDk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0QnlWYWwoQXJyYXk6OlN0cmluZykgZW1p
dHMgQ2hlY2soU3RyaW5nKSBiZWZvcmUgdGhhdC4gQnV0IEFJIGNhbiBicm9hZGVuIHR5cGUgY29u
c3RyYWludCBpbiB0aGUgc2Vjb25kIHJ1bi4KKyAgICAgICAgQWZ0ZXIgdGhlIGZpcnN0IHJ1biBy
ZW1vdmVzIENoZWNrKFN0cmluZyksIGl0IHdvdWxkIGhhcHBlbiB0aGF0IEFJIHN0YXJ0cyBzYXlp
bmcgdGhlIHR5ZXAgb2YgMXN0IGNoaWxkIGlzIG5vdCBTdHJpbmcuCisgICAgICAgIFRvIGNsYWlt
IHRoYXQgaXQgKmlzKiBhIFN0cmluZyB0eXBlLCB3ZSBzaG91bGQgdXNlIEtub3duU3RyaW5nVXNl
IGhlcmUuCisKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKTogU3RyaW5nQ2hhckF0IGFuZCBHZXRCeVZhbChB
cnJheTo6U3RyaW5nKSBzaGFyZSB0aGUgdW5kZXJseWluZyBjb21waWxlciBjb2RlLiBXZSBzaG91
bGQKKyAgICAgICAgY2hhbmdlIFN0cmluZ1VzZSA9PiBLbm93blN0cmluZ1VzZSBmb3IgU3RyaW5n
Q2hhckF0IHRvby4gQW5kIFN0cmluZ0NoYXJBdCBhbmQgU3RyaW5nQ2hhckNvZGVBdCBwb3RlbnRp
YWxseSBoYXZlIHRoZSBzYW1lCisgICAgICAgIHByb2JsZW0uIFRoaXMgcGF0Y2ggZml4ZXMgaXQg
dG9vLgorICAgICAgICAqIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTU0FMb3dlcmluZ1BoYXNlOjpsb3dlckJvdW5kc0NoZWNrKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVN0cmluZ0NoYXJBdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVTdHJpbmdDaGFyQ29kZUF0KToKKwogMjAxOS0wMS0xNSAgVG9tYXMg
UG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQ6IEZpeCB0
aGUgLVdmb3JtYXQgY29tcGlsZXIgd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDA1MTEyZGE0ZDZmNTE2MTQwMzE3M2VjY2QyM2RmYzJm
NzA5MTA3OWIuLmU3NzlkZWI0ZDQ4YzExZTE5NDdlNWM0MGRjNjllMWQwZWVjMWM1ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtNzgyLDcgKzc4
Miw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgLy8g
Q3VycmVudGx5IHdlIGhhdmUgbm8gZ29vZCB3YXkgb2YgcmVmaW5pbmcgdGhlc2UuCiAgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+YXJyYXlNb2RlKCkgPT0gQXJyYXlNb2RlKEFycmF5OjpTdHJpbmcs
IEFycmF5OjpSZWFkKSk7CiAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKG5vZGUtPmNo
aWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICAgICAgZml4
RWRnZTxLbm93bkNlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGZpeEVkZ2U8
S25vd25TdHJpbmdVc2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGZpeEVkZ2U8SW50
MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC05MDAsNiArOTAwLDEwIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBcnJheTo6Rm9yY2VFeGl0Ogog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4obV9ncmFw
aC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVz
ZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAppbmRleCBlNzI2MTg0NWYyYzJkMzhl
YzExYWYwZTJhN2JlZTNhNmYyM2E5N2ZjLi5hZDM4OTk0MDg2MjIzZTU5MTFhM2Y1MGNlNDdjNjA5
MTI5ZWQ2Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxv
d2VyaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93
ZXJpbmdQaGFzZS5jcHAKQEAgLTEyNCwxMyArMTI0LDE3IEBAIGNsYXNzIFNTQUxvd2VyaW5nUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9y
YWdlOgogICAgICAgICAgICAgb3AgPSBHZXRWZWN0b3JMZW5ndGg7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5nOgorICAgICAgICAgICAgLy8gV2hlbiB3ZSBu
ZWVkIHN1cHBvcnRpbmcgdGhpcywgaXQgcmVxdWlyZXMgYW4gYWRkaXRpb25hbCBjb2RlIHNpbmNl
IGJhc2UncyB1c2VLaW5kIGlzIEtub3duU3RyaW5nVXNlLgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBOb2RlKiBsZW5ndGgg
PSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNw
ZWNJbnQzMk9ubHksIG9wLCBtX25vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgIE9wSW5mbyhtX25v
ZGUtPmFycmF5TW9kZSgpLmFzV29yZCgpKSwgYmFzZSwgc3RvcmFnZSk7CisgICAgICAgICAgICBP
cEluZm8obV9ub2RlLT5hcnJheU1vZGUoKS5hc1dvcmQoKSksIEVkZ2UoYmFzZS5ub2RlKCksIEtu
b3duQ2VsbFVzZSksIHN0b3JhZ2UpOwogICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMk9ubHksIENoZWNrSW5Cb3VuZHMs
IG1fbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgaW5kZXgsIEVkZ2UobGVuZ3RoLCBLbm93bklu
dDMyVXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggNzM4MzZhOGFhZDkwMWU0MzI0YTdlZWE4ZTQwZTFhZDkzNjhkNTEzNy4uYzYzNDhi
YTA0NzliMzJjNzYxNjNiNjgxOGFlZDhmMmI0ZDY0MTU3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNjU5MCw3ICs2NTkwLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAKICAgICB2b2lkIGNvbXBpbGVTdHJpbmdDaGFyQXQoKQog
ICAgIHsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fZ3JhcGguY2hpbGQobV9ub2Rl
LCAwKSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93U3RyaW5nKG1fZ3JhcGguY2hpbGQobV9u
b2RlLCAwKSk7CiAgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fZ3JhcGguY2hpbGQo
bV9ub2RlLCAxKSk7CiAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gbG93U3RvcmFnZShtX2dyYXBo
LmNoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICAgICAgCkBAIC02NzA0LDcgKzY3MDQsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMQmFzaWNCbG9jayBpczE2Qml0ID0gbV9vdXQu
bmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3
QmxvY2soKTsKIAotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKICAgICAg
ICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNTRjNDdmYWMyOWJhN2I3YWU2YWVlNWRkMmJlZTBiZTQ0OWIyZTE0My4uY2VjNjkxNTcxODVj
NzIyNDhlY2IzN2M5ZDAzODVhOTRjYWZmM2U3OCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0wMS0xNSAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtK
U0NdIFVzZSBLbm93blN0cmluZ1VzZSBmb3IgR2V0QnlWYWwoQXJyYXk6OlN0cmluZykgc2luY2Ug
QUkgd291bGQgb2ZmZXIgd2lkZXIgdHlwZSBpbmZvcm1hdGlvbiBhbmQgb2ZmZXIgbm9uLXN0cmlu
ZyB0eXBlIGFmdGVyIHJlbW92aW5nIENoZWNrKFN0cmluZykKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQzOAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDU1ODEyNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVW5kZXIgdGhlIGhlYXZ5IGxvYWQgKGxpa2UsIGNvbXBpbGluZyBXZWJLaXQpLCBBSSBp
biB0aGlzIGNvZGUgY2FuIGJyb2FkZW4gdHlwZSBpbmZvcm1hdGlvbiBhZnRlciB0aGUgMXN0IHJ1
bi4KKyAgICAgICAgVGhlbiwgR2V0QnlWYWwoU3RyaW5nKSBjcmFzaGVkLgorCisgICAgICAgICog
c3RyZXNzL3N0cmluZy1nZXQtYnktdmFsLWxvd2VyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy90eXBlLWZvci1nZXQt
YnktdmFsLWNhbi1iZS13aWRlbi1hZnRlci1haS5qczogQWRkZWQuCisgICAgICAgIChIZWxsbyk6
CisgICAgICAgIChmb28pOgorCiAyMDE5LTAxLTE1ICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJl
ZGhhdC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgc2tpcCBKSVQgdGVzdHMgaWYgaXQncyBu
b3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWdldC1ieS12YWwt
bG93ZXJpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctZ2V0LWJ5LXZhbC1sb3dlcmluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NjkzM2ViNzQxYTA5MzJhN2QzZDFjNGQ4NDUzZWNkOGVkMjFiNzI3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RyaW5nLWdldC1ieS12YWwtbG93ZXJp
bmcuanMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7CisKK2Z1
bmN0aW9uIHRlc3QodmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlWzJdOworfQorbm9JbmxpbmUo
dGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRCZSh0
ZXN0KCJIZWxsbyIpLCAnbCcpOworICAgIHNob3VsZEJlKHRlc3QoIldvcmxkIiksICdyJyk7Cisg
ICAgc2hvdWxkQmUodGVzdCgiTmljZSIpLCAnYycpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvdHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4tYmUtd2lkZW4tYWZ0ZXItYWkuanMgYi9KU1Rl
c3RzL3N0cmVzcy90eXBlLWZvci1nZXQtYnktdmFsLWNhbi1iZS13aWRlbi1hZnRlci1haS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NDgxOGI3ZjlkN2I4YzU2MDIyNmU4MmMwZTgyYmNmYWM3ZjUzYjM3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4tYmUt
d2lkZW4tYWZ0ZXItYWkuanMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJ1bkRlZmF1bHQoIi0taml0
UG9saWN5U2NhbGU9MCIpCisvLyBSdW4gd2l0aCBmb3IgaSBpbiB7MS4uMTAwMH07IGRvIGVjaG8g
JGkgJiYgVk09L3BhdGgvdG8vV2ViS2l0L1dlYktpdEJ1aWxkL0RlYnVnLyAmJiBEWUxEX0ZSQU1F
V09SS19QQVRIPSRWTSAkVk0vanNjIC0tdXNlRG9sbGFyVk09MSAtLWppdFBvbGljeVNjYWxlPTAg
dHlwZS1mb3ItZ2V0LWJ5LXZhbC1jYW4tYmUtd2lkZW4tYWZ0ZXItYWkuanMgOyBkb25lCisKK2Z1
bmN0aW9uIEhlbGxvKHkpIHsKKyAgdGhpcy55ID0geTsKKyAgdGhpcy54ID0gZm9vKHRoaXMueSk7
Cit9CitmdW5jdGlvbiBmb28oeikgeworICB0cnkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTsgaSsrKSB7CisgICAgICB6W2ldOworICAgIH0KKyAgfSBjYXRjaCB7CisgIH0KK30KK25ldyBI
ZWxsbygnYScpOworbmV3IEhlbGxvKCdhJyk7Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgIG5ldyBIZWxsbygpOworfQorCisvLyBCdXN5IGxvb3AgdG8gbGV0IHRoZSBjcmFzaCBy
ZXBvcnRlciBoYXZlIGEgY2hhbmNlIHRvIGNhcHR1cmUgdGhlIGNyYXNoIGxvZyBmb3IgdGhlIENv
bXBpbGVyIHRocmVhZC4KK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAg
JHZtLmZ0bFRydWUoKTsKK30K
</data>
<flag name="review"
          id="376031"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>