<?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>138369</bug_id>
          
          <creation_ts>2014-11-04 13:36:47 -0800</creation_ts>
          <short_desc>Rename checkMarkByte() to checkIfEitherInEdenGenOrAlreadyRemembered()</short_desc>
          <delta_ts>2014-11-04 17:20:22 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1046156</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-04 13:36:47 -0800</bug_when>
    <thetext>Write barriers are needed for GC Eden collections so that we can scan pointers pointing from old generation objects to eden generation objects.  The barrier currently checks the mark byte in a cell to see if the cell needs to be added to the GC remembered set.  The cell should only be added to the remembered set if:
1. If the cell is in the young generation.  It has no old to eden pointers by definition.
2. If the cell is already in the remembered set.

The barrier current names this check as checkMarkByte().  We should rename it to checkIfEitherInYoungGenOrAlreadyRemembered() to be clearer about its intent.

Similarly, Jump results of this check are currently named ownerNotMarkedOrAlreadyRemembered.  This can be misinterpreted as the owner is not marked or not already remembered.  We should rename it to ownerIsInEdenGenOrAlreadyRemembered which is clearer about what we&apos;re really checking for.  The cell being &quot;not marked&quot; implies that it is in the eden gen, which is what we really checking for anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046158</commentid>
    <comment_count>1</comment_count>
      <attachid>240945</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-04 13:43:44 -0800</bug_when>
    <thetext>Created attachment 240945
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046193</commentid>
    <comment_count>2</comment_count>
      <attachid>240945</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-04 14:59:56 -0800</bug_when>
    <thetext>Comment on attachment 240945
the patch.

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        1. If the cell is in the young generation.  It has no old to eden pointers by
&gt; +           definition.

Remove the leading &quot;If&quot;, since you prefixed the &quot;:&quot; with &quot;if&quot;.

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        2. If the cell is already in the remembered set.

Remove the leading &quot;If&quot;.

The logic of this paragraph is backwards. You either need to invert the numbered items or invert the statement before the colon.

You need to clarify that #2 is just an optimization strategy, and not a strict requirement. It&apos;s totally fine to add the same object to a set twice -- it&apos;s just redundant, and we have an efficient way to avoid it.

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        The barrier current names this check as checkMarkByte().  We should rename it to

currently

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        Similarly, Jump results of this check are currently named
&gt; +        ownerNotMarkedOrAlreadyRemembered.  This can be misinterpreted as the owner is
&gt; +        not marked or not already remembered.  We should rename it to
&gt; +        ownerIsInEdenGenOrAlreadyRemembered which is clearer about the intent of the
&gt; +        check.  What we are really checking for is that the cell is in the eden gen,
&gt; +        which is implied by being &quot;not marked&quot;.

It&apos;s a good point that the old name has an ambiguous modifier in it. But I think the new name has some ambiguity and verbosity too.

&gt; Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:251
&gt; +    AssemblyHelpers::Jump ownerIsInEdenGenOrAlreadyRemembered = jit.checkIfEitherInEdenGenOrAlreadyRemembered(owner);

How about

    AssemblyHelpers::Jump ownerIsRememberedOrInEden = jit.jumpIfIsRememberedOrInEden(owner);

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:668
&gt; +    // Note: gcData being NotMarked (a value of 1) implies that the cell is in the young GC generation.

I don&apos;t understand this comment, and it seems out of place int he assembler. A better way to comment this is probably to list the set of possible bit patterns next to the declaration of GCData in JSCell.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046234</commentid>
    <comment_count>3</comment_count>
      <attachid>240969</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-04 15:45:40 -0800</bug_when>
    <thetext>Created attachment 240969
take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046236</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-04 15:47:02 -0800</bug_when>
    <thetext>Thanks for the feedback.  I agree, and the suggested changes have been applied.  I also change the LLINT macro name to skipIfIsRememberedOrInEden, which I think reads better than checkIfIsRememberedOrInEden or the original checkMarkByte.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046291</commentid>
    <comment_count>5</comment_count>
      <attachid>240969</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-04 17:03:08 -0800</bug_when>
    <thetext>Comment on attachment 240969
take 2

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

&gt; Source/JavaScriptCore/runtime/JSCell.h:152
&gt; +        MarkedAndRemembered = 2, // The object is in the GC&apos;s remember set.

remembered set

&gt; Source/JavaScriptCore/runtime/JSCell.h:154
&gt; +        // The object being in the GC&apos;s remember set implies that it is also

remembered set

&gt; Source/JavaScriptCore/runtime/JSCell.h:155
&gt; +        // Marked. This is because objects are only added to the remembered sets

remembered set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046299</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-04 17:20:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Source/JavaScriptCore/runtime/JSCell.h:152
&gt; &gt; +        MarkedAndRemembered = 2, // The object is in the GC&apos;s remember set.
&gt; 
&gt; remembered set

Oops.  Thanks for the review.  Fixed and landed in r175593: &lt;http://trac.webkit.org/r175593&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240945</attachid>
            <date>2014-11-04 13:43:44 -0800</date>
            <delta_ts>2014-11-04 15:45:40 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-138369.patch</filename>
            <type>text/plain</type>
            <size>13788</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1NTc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDE0LTExLTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgY2hlY2tNYXJrQnl0ZSgpIHRvIGNoZWNrSWZFaXRoZXJJbkVkZW5HZW5PckFscmVhZHlS
ZW1lbWJlcmVkKCkuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzgzNjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV3JpdGUgYmFycmll
cnMgYXJlIG5lZWRlZCBmb3IgR0MgRWRlbiBjb2xsZWN0aW9ucyBzbyB0aGF0IHdlIGNhbiBzY2Fu
IHBvaW50ZXJzCisgICAgICAgIHBvaW50aW5nIGZyb20gb2xkIGdlbmVyYXRpb24gb2JqZWN0cyB0
byBlZGVuIGdlbmVyYXRpb24gb2JqZWN0cy4gIFRoZSBiYXJyaWVyCisgICAgICAgIGN1cnJlbnRs
eSBjaGVja3MgdGhlIG1hcmsgYnl0ZSBpbiBhIGNlbGwgdG8gc2VlIGlmIHRoZSBjZWxsIG5lZWRz
IHRvIGJlIGFkZGVkCisgICAgICAgIHRvIHRoZSBHQyByZW1lbWJlcmVkIHNldC4gIFRoZSBjZWxs
IHNob3VsZCBvbmx5IGJlIGFkZGVkIHRvIHRoZSByZW1lbWJlcmVkIHNldAorICAgICAgICBpZjoK
KyAgICAgICAgMS4gSWYgdGhlIGNlbGwgaXMgaW4gdGhlIHlvdW5nIGdlbmVyYXRpb24uICBJdCBo
YXMgbm8gb2xkIHRvIGVkZW4gcG9pbnRlcnMgYnkKKyAgICAgICAgICAgZGVmaW5pdGlvbi4KKyAg
ICAgICAgMi4gSWYgdGhlIGNlbGwgaXMgYWxyZWFkeSBpbiB0aGUgcmVtZW1iZXJlZCBzZXQuCisK
KyAgICAgICAgVGhlIGJhcnJpZXIgY3VycmVudCBuYW1lcyB0aGlzIGNoZWNrIGFzIGNoZWNrTWFy
a0J5dGUoKS4gIFdlIHNob3VsZCByZW5hbWUgaXQgdG8KKyAgICAgICAgY2hlY2tJZkVpdGhlcklu
WW91bmdHZW5PckFscmVhZHlSZW1lbWJlcmVkKCkgdG8gYmUgY2xlYXJlciBhYm91dCBpdHMgaW50
ZW50LgorCisgICAgICAgIFNpbWlsYXJseSwgSnVtcCByZXN1bHRzIG9mIHRoaXMgY2hlY2sgYXJl
IGN1cnJlbnRseSBuYW1lZAorICAgICAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVy
ZWQuICBUaGlzIGNhbiBiZSBtaXNpbnRlcnByZXRlZCBhcyB0aGUgb3duZXIgaXMKKyAgICAgICAg
bm90IG1hcmtlZCBvciBub3QgYWxyZWFkeSByZW1lbWJlcmVkLiAgV2Ugc2hvdWxkIHJlbmFtZSBp
dCB0bworICAgICAgICBvd25lcklzSW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZCB3aGljaCBp
cyBjbGVhcmVyIGFib3V0IHRoZSBpbnRlbnQgb2YgdGhlCisgICAgICAgIGNoZWNrLiAgV2hhdCB3
ZSBhcmUgcmVhbGx5IGNoZWNraW5nIGZvciBpcyB0aGF0IHRoZSBjZWxsIGlzIGluIHRoZSBlZGVu
IGdlbiwKKyAgICAgICAgd2hpY2ggaXMgaW1wbGllZCBieSBiZWluZyAibm90IG1hcmtlZCIuCisK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2hlY2tJZkVpdGhlckluRWRlbkdlbk9yQWxyZWFkeVJl
bWVtYmVyZWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNoZWNrTWFya0J5dGUp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorCiAyMDE0
LTExLTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogRW51bSB2YWx1ZSBjb2xsaXNpb25zIGJldHdlZW4gZGlmZmVyZW50IGdl
bmVyYXRvcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2Fs
bEhlbHBlcnMKICNpZiBFTkFCTEUoR0dDKQogc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewotICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBq
aXQuY2hlY2tNYXJrQnl0ZShvd25lcik7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVy
SXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkID0gaml0LmNoZWNrSWZFaXRoZXJJbkVkZW5H
ZW5PckFscmVhZHlSZW1lbWJlcmVkKG93bmVyKTsKIAogICAgIC8vIFdlIG5lZWQgdGhlc2UgZXh0
cmEgc2xvdHMgYmVjYXVzZSBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUgd2lsbCB1c2UgcG9r
ZSBvbiB4ODYuCiAjaWYgQ1BVKFg4NikKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBv
c3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzCiAgICAgaml0LmFkZFB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKHNpemVvZih2b2lkKikgKiAzKSwgTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKICNlbmRpZgogCi0gICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlS
ZW1lbWJlcmVkLmxpbmsoJmppdCk7CisgICAgb3duZXJJc0luRWRlbkdlbk9yQWxyZWFkeVJlbWVt
YmVyZWQubGluaygmaml0KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoR0dDKQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5NDEsOSArNDk0MSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAgICBpZiAoIWlzS25v
d25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3du
ZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tNYXJrQnl0ZShvd25l
ckdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc0luRWRlbkdlbk9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBtX2ppdC5jaGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJl
ZChvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2Ny
YXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQu
bGluaygmbV9qaXQpOworICAgIG93bmVySXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkLmxp
bmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAg
ICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTQ5NTUsOSArNDk1NSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKICAgICBpZiAoIWlzS25vd25DZWxs
KHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RN
YXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tNYXJrQnl0ZShvd25lcik7Cisg
ICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc0luRWRlbkdlbk9yQWxyZWFkeVJlbWVtYmVyZWQg
PSBtX2ppdC5jaGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZChvd25lcik7
CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygmbV9qaXQpOwor
ICAgIG93bmVySXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKIAog
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxs
LmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTc1NTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAzMSw5ICs1MDMxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJl
ZwogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RD
ZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAotICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IG1faml0
LmNoZWNrTWFya0J5dGUob3duZXJHUFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNJ
bkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tJZkVpdGhlckluRWRlbkdl
bk9yQWxyZWFkeVJlbWVtYmVyZWQob3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJC
dWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKKyAgICBvd25lcklzSW5FZGVuR2VuT3JB
bHJlYWR5UmVtZW1iZXJlZC5saW5rKCZtX2ppdCk7CiAKICAgICBpZiAoIWlzS25vd25DZWxsKHZh
bHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC01MDQ1
LDkgKzUwNDUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiAg
ICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwg
PSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CiAgICAgCi0gICAgSklUQ29t
cGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hl
Y2tNYXJrQnl0ZShvd25lcik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc0luRWRlbkdl
bk9yQWxyZWFkeVJlbWVtYmVyZWQgPSBtX2ppdC5jaGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJl
YWR5UmVtZW1iZXJlZChvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25l
ciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVt
YmVyZWQubGluaygmbV9qaXQpOworICAgIG93bmVySXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJl
cmVkLmxpbmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgp
KSkKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNzU1Njkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQ3MiwxNiArNTQ3MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3
cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVh
ZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tNYXJrQnl0ZShvd25lckdQUik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAgb3duZXJJc0luRWRlbkdlbk9yQWxyZWFkeVJlbWVtYmVyZWQgPSBtX2ppdC5j
aGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZChvd25lckdQUik7CiAgICAg
c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsK
LSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygmbV9qaXQpOworICAg
IG93bmVySXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVn
IHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3du
ZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tNYXJrQnl0ZShvd25l
ckdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc0luRWRlbkdlbk9yQWxyZWFkeVJl
bWVtYmVyZWQgPSBtX2ppdC5jaGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJl
ZChvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2Ny
YXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQu
bGluaygmbV9qaXQpOworICAgIG93bmVySXNJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkLmxp
bmsoJm1faml0KTsKIH0KICNlbHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVC
YXJyaWVyKE5vZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2NSwxMiArNjY1LDEz
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBl
SW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lz
dGVySUQgZGVzdCk7CiAKLSAgICBKdW1wIGNoZWNrTWFya0J5dGUoR1BSUmVnIGNlbGwpCisgICAg
Ly8gTm90ZTogZ2NEYXRhIGJlaW5nIE5vdE1hcmtlZCAoYSB2YWx1ZSBvZiAxKSBpbXBsaWVzIHRo
YXQgdGhlIGNlbGwgaXMgaW4gdGhlIHlvdW5nIEdDIGdlbmVyYXRpb24uCisgICAgSnVtcCBjaGVj
a0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZChHUFJSZWcgY2VsbCkKICAgICB7
CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOwogICAg
IH0KIAotICAgIEp1bXAgY2hlY2tNYXJrQnl0ZShKU0NlbGwqIGNlbGwpCisgICAgSnVtcCBjaGVj
a0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZChKU0NlbGwqIGNlbGwpCiAgICAg
ewogICAgICAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
Y2VsbCkgKyBKU0NlbGw6OmdjRGF0YU9mZnNldCgpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDgoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJl
c3MoYWRkcmVzcykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsOSAr
ODI4LDkgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZQogICAgIGlm
IChtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRl
ckJhc2UpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdU
MCwgdGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlS
ZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0ZShyZWdUMCk7CisgICAgSnVtcCBvd25lcklzSW5FZGVu
R2VuT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNoZWNrSWZFaXRoZXJJbkVkZW5HZW5PckFscmVhZHlS
ZW1lbWJlcmVkKHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9u
YWxXcml0ZUJhcnJpZXIsIHJlZ1QwKTsKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVt
YmVyZWQubGluayh0aGlzKTsKKyAgICBvd25lcklzSW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJl
ZC5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVl
IHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmso
dGhpcyk7CkBAIC04NzgsOSArODc4LDkgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5z
aWduZWQgb3duZQogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2UgfHwgbW9kZSA9PSBT
aG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAg
IEp1bXAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkID0gY2hlY2tNYXJrQnl0ZShy
ZWdUMSk7CisgICAgSnVtcCBvd25lcklzSW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZCA9IGNo
ZWNrSWZFaXRoZXJJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkKHJlZ1QxKTsKICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1QxKTsKLSAg
ICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluayh0aGlzKTsKKyAgICBvd25l
cklzSW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1v
ZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhpcyk7CkBAIC05MTksOSArOTE5LDkgQEAg
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lcgogewogI2lmIEVOQUJMRShH
R0MpCiAgICAgaWYgKCFNYXJrZWRCbG9jazo6YmxvY2tGb3Iob3duZXIpLT5pc01hcmtlZChvd25l
cikpIHsKLSAgICAgICAgSnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBj
aGVja01hcmtCeXRlKG93bmVyKTsKKyAgICAgICAgSnVtcCBvd25lcklzSW5FZGVuR2VuT3JBbHJl
YWR5UmVtZW1iZXJlZCA9IGNoZWNrSWZFaXRoZXJJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVk
KG93bmVyKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25VbmNvbmRpdGlvbmFsV3Jp
dGVCYXJyaWVyLCBvd25lcik7Ci0gICAgICAgIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1i
ZXJlZC5saW5rKHRoaXMpOworICAgICAgICBvd25lcklzSW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1i
ZXJlZC5saW5rKHRoaXMpOwogICAgIH0gZWxzZQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIG93bmVyKTsKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQkocmV2aXNpb24gMTc1NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTU2OSw3
ICs1NjksNyBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCiAgICAg
aWYgR0dDCiAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwgdDEpCiAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MiwgLndy
aXRlQmFycmllckRvbmUpCi0gICAgICAgIGNoZWNrTWFya0J5dGUodDIsIHQxLCB0MywgCisgICAg
ICAgIGNoZWNrSWZFaXRoZXJJbkVkZW5HZW5PckFscmVhZHlSZW1lbWJlcmVkKHQyLCB0MSwgdDMs
IAogICAgICAgICAgICAgbWFjcm8oZ2NEYXRhKQogICAgICAgICAgICAgICAgIGJ0Ym56IGdjRGF0
YSwgLndyaXRlQmFycmllckRvbmUKICAgICAgICAgICAgICAgICBwdXNoIGNmciwgUEMKQEAgLTYw
Myw3ICs2MDMsNyBAQCBtYWNybyB3cml0ZUJhcnJpZXJPbkdsb2JhbE9iamVjdCh2YWx1ZU9wCiAg
ICAgCiAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MwogICAgICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDMKLSAgICAgICAgY2hlY2tNYXJrQnl0ZSh0Mywg
dDEsIHQyLAorICAgICAgICBjaGVja0lmRWl0aGVySW5FZGVuR2VuT3JBbHJlYWR5UmVtZW1iZXJl
ZCh0MywgdDEsIHQyLAogICAgICAgICAgICAgbWFjcm8oZ2NEYXRhKQogICAgICAgICAgICAgICAg
IGJ0Ym56IGdjRGF0YSwgLndyaXRlQmFycmllckRvbmUKICAgICAgICAgICAgICAgICBwdXNoIGNm
ciwgUEMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNzU1NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtNDQzLDcgKzQ0Myw3IEBAIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChjZWxsT3BlcmFu
ZCkKICAgICBpZiBHR0MKICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGNlbGxPcGVyYW5k
LCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDEsIHQyLCAud3JpdGVC
YXJyaWVyRG9uZSkKLSAgICAgICAgY2hlY2tNYXJrQnl0ZSh0MiwgdDEsIHQzLCAKKyAgICAgICAg
Y2hlY2tJZkVpdGhlckluRWRlbkdlbk9yQWxyZWFkeVJlbWVtYmVyZWQodDIsIHQxLCB0MywgCiAg
ICAgICAgICAgICBtYWNybyhnY0RhdGEpCiAgICAgICAgICAgICAgICAgYnRibnogZ2NEYXRhLCAu
d3JpdGVCYXJyaWVyRG9uZQogICAgICAgICAgICAgICAgIHB1c2ggUEIsIFBDCkBAIC00NzQsNyAr
NDc0LDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3QodmFsdWVPcAogICAgIAog
ICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0M10sIHQzCi0gICAgICAgIGNoZWNrTWFya0J5dGUodDMsIHQxLCB0
MiwKKyAgICAgICAgY2hlY2tJZkVpdGhlckluRWRlbkdlbk9yQWxyZWFkeVJlbWVtYmVyZWQodDMs
IHQxLCB0MiwKICAgICAgICAgICAgIG1hY3JvKGdjRGF0YSkKICAgICAgICAgICAgICAgICBidGJu
eiBnY0RhdGEsIC53cml0ZUJhcnJpZXJEb25lCiAgICAgICAgICAgICAgICAgcHVzaCBQQiwgUEMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUw
OSw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZShjZWxsQW5kSW5kZXhpbmdUeXBlLCAKICAgICBsb2Fk
YiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCi1tYWNy
byBjaGVja01hcmtCeXRlKGNlbGwsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgY29udGludWF0aW9uKQor
bWFjcm8gY2hlY2tJZkVpdGhlckluRWRlbkdlbk9yQWxyZWFkeVJlbWVtYmVyZWQoY2VsbCwgc2Ny
YXRjaDEsIHNjcmF0Y2gyLCBjb250aW51YXRpb24pCiAgICAgbG9hZGIgSlNDZWxsOjptX2djRGF0
YVtjZWxsXSwgc2NyYXRjaDEKICAgICBjb250aW51YXRpb24oc2NyYXRjaDEpCiBlbmQK
</data>
<flag name="review"
          id="265744"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240969</attachid>
            <date>2014-11-04 15:45:40 -0800</date>
            <delta_ts>2014-11-04 17:03:08 -0800</delta_ts>
            <desc>take 2</desc>
            <filename>bug-138369.patch</filename>
            <type>text/plain</type>
            <size>14384</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc1NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE0LTExLTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgY2hlY2tNYXJrQnl0ZSgpIHRvIGp1bXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKCkuCisg
ICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzgzNjk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV3JpdGUgYmFycmllcnMgYXJlIG5lZWRlZCBm
b3IgR0MgRWRlbiBjb2xsZWN0aW9ucyBzbyB0aGF0IHdlIGNhbiBzY2FuIHBvaW50ZXJzCisgICAg
ICAgIHBvaW50aW5nIGZyb20gb2xkIGdlbmVyYXRpb24gb2JqZWN0cyB0byBlZGVuIGdlbmVyYXRp
b24gb2JqZWN0cy4gIFRoZSBiYXJyaWVyCisgICAgICAgIGN1cnJlbnRseSBjaGVja3MgdGhlIG1h
cmsgYnl0ZSBpbiBhIGNlbGwgdG8gc2VlIGlmIHdlIHNob3VsZCBza2lwIGFkZGluZyB0aGUKKyAg
ICAgICAgY2VsbCB0byB0aGUgR0MgcmVtZW1iZXJlZCBzZXQuICBUaGUgYWRkaXRpb24gc2hvdWxk
IGJlIHNraXBwZWQgaWY6CisKKyAgICAgICAgMS4gVGhlIGNlbGwgaXMgaW4gdGhlIHlvdW5nIGdl
bmVyYXRpb24uICBJdCBoYXMgbm8gb2xkIHRvIGVkZW4gcG9pbnRlcnMgYnkKKyAgICAgICAgICAg
ZGVmaW5pdGlvbi4KKyAgICAgICAgMi4gVGhlIGNlbGwgaXMgYWxyZWFkeSBpbiB0aGUgcmVtZW1i
ZXJlZCBzZXQuICBXaGlsZSBpdCBpcyBvayB0byBhZGQgdGhlIGNlbGwKKyAgICAgICAgICAgdG8g
dGhlIEdDIHJlbWVtYmVyZWQgc2V0IG1vcmUgdGhhbiBvbmNlLCBpdCB3b3VsZCBiZSByZWR1bmRh
bnQuICBIZW5jZSwKKyAgICAgICAgICAgd2Ugc2tpcCB0aGlzIGFzIGFuIG9wdGltaXphdGlvbiB0
byBhdm9pZCBkb2luZyB1bm5lY2Vzc2FyeSB3b3JrLgorCisgICAgICAgIFRoZSBiYXJyaWVyIGN1
cnJlbnRseSBuYW1lcyB0aGlzIGNoZWNrIGFzIGNoZWNrTWFya0J5dGUoKS4gIFdlIHNob3VsZCBy
ZW5hbWUgaXQKKyAgICAgICAgdG8ganVtcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4oKSB0byBiZSBj
bGVhcmVyIGFib3V0IGl0cyBpbnRlbnQuCisKKyAgICAgICAgU2ltaWxhcmx5LCBKdW1wIHJlc3Vs
dHMgb2YgdGhpcyBjaGVjayBhcmUgY3VycmVudGx5IG5hbWVkCisgICAgICAgIG93bmVyTm90TWFy
a2VkT3JBbHJlYWR5UmVtZW1iZXJlZC4gIFRoaXMgY2FuIGJlIG1pc2ludGVycHJldGVkIGFzIHRo
ZSBvd25lciBpcworICAgICAgICBub3QgbWFya2VkIG9yIG5vdCBhbHJlYWR5IHJlbWVtYmVyZWQu
ICBXZSBzaG91bGQgcmVuYW1lIGl0IHRvCisgICAgICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVk
ZW4gd2hpY2ggaXMgY2xlYXJlciBhYm91dCB0aGUgaW50ZW50IG9mIHRoZQorICAgICAgICBjaGVj
ay4gIFdoYXQgd2UgYXJlIHJlYWxseSBjaGVja2luZyBmb3IgaXMgdGhhdCB0aGUgY2VsbCBpcyBp
biB0aGUgZWRlbiBnZW4sCisgICAgICAgIHdoaWNoIGlzIGltcGxpZWQgYnkgaXQgYmVpbmcgIm5v
dCBtYXJrZWQiLgorCisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6b3NyV3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp3
cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Omp1bXBJZklzUmVtZW1iZXJlZE9y
SW5FZGVuKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpjaGVja01hcmtCeXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5oOgorCiAyMDE0LTExLTA0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRW51bSB2YWx1ZSBjb2xs
aXNpb25zIGJldHdlZW4gZGlmZmVyZW50IGdlbmVyYXRvcnMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJl
dmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMKICNpZiBFTkFCTEUoR0dDKQogc3Rh
dGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIs
IEdQUlJlZyBzY3JhdGNoKQogewotICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBvd25lck5vdE1h
cmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBqaXQuY2hlY2tNYXJrQnl0ZShvd25lcik7CisgICAg
QXNzZW1ibHlIZWxwZXJzOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBqaXQuanVt
cElmSXNSZW1lbWJlcmVkT3JJbkVkZW4ob3duZXIpOwogCiAgICAgLy8gV2UgbmVlZCB0aGVzZSBl
eHRyYSBzbG90cyBiZWNhdXNlIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSB3aWxsIHVzZSBw
b2tlIG9uIHg4Ni4KICNpZiBDUFUoWDg2KQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lk
IG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMKICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSAqIDMpLCBNYWNyb0Fzc2VtYmxlcjo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogI2VuZGlmCiAKLSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFk
eVJlbWVtYmVyZWQubGluaygmaml0KTsKKyAgICBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxp
bmsoJmppdCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZp
c2lvbiAxNzU1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQxLDkgKzQ5NDEsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2
YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVyTm90TWFy
a2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IG1faml0LmNoZWNrTWFya0J5dGUob3duZXJHUFIpOwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5q
dW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRlQmFy
cmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBvd25lck5vdE1h
cmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygmbV9qaXQpOworICAgIG93bmVySXNSZW1lbWJl
cmVkT3JJbkVkZW4ubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVz
ZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNDk1NSw5ICs0
OTU1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAogICAgIGlm
ICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBtX2ppdC5jaGVja01hcmtC
eXRlKG93bmVyKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5F
ZGVuID0gbV9qaXQuanVtcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4ob3duZXIpOwogICAgIHN0b3Jl
VG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgb3du
ZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKKyAgICBvd25lcklz
UmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJm1faml0KTsKIAogICAgIGlmICghaXNLbm93bkNlbGwo
dmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1faml0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMTc1NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAzMSw5ICs1MDMxLDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZwogICAgIGlmICghaXNLbm93bkNl
bGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gYnJhbmNoTm90Q2VsbChK
U1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVy
Tm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IG1faml0LmNoZWNrTWFya0J5dGUob3duZXJH
UFIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBt
X2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQUik7CiAgICAgc3RvcmVUb1dy
aXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSAgICBvd25l
ck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygmbV9qaXQpOworICAgIG93bmVySXNS
ZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2
YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNTA0
NSw5ICs1MDQ1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAog
ICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxs
ID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAotICAgIEpJVENv
bXBpbGVyOjpKdW1wIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9IG1faml0LmNo
ZWNrTWFya0J5dGUob3duZXIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJl
cmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lcik7CiAg
ICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsK
LSAgICBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluaygmbV9qaXQpOworICAg
IG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4ubGluaygmbV9qaXQpOwogCiAgICAgaWYgKCFpc0tu
b3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDcyLDE2ICs1NDcyLDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBtX2ppdC5jaGVja01hcmtCeXRl
KG93bmVyR1BSKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5F
ZGVuID0gbV9qaXQuanVtcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4ob3duZXJHUFIpOwogICAgIHN0
b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0g
ICAgb3duZXJOb3RNYXJrZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsoJm1faml0KTsKKyAgICBv
d25lcklzUmVtZW1iZXJlZE9ySW5FZGVuLmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIpCiB7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJOb3RNYXJrZWRP
ckFscmVhZHlSZW1lbWJlcmVkID0gbV9qaXQuY2hlY2tNYXJrQnl0ZShvd25lckdQUik7CisgICAg
SklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IG1faml0Lmp1bXBJ
ZklzUmVtZW1iZXJlZE9ySW5FZGVuKG93bmVyR1BSKTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVy
QnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOwotICAgIG93bmVyTm90TWFya2Vk
T3JBbHJlYWR5UmVtZW1iZXJlZC5saW5rKCZtX2ppdCk7CisgICAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbi5saW5rKCZtX2ppdCk7CiB9CiAjZWxzZQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0b3JlQmFycmllcihOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNzU1NjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjUs
MTIgKzY2NSwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0
dXJlLCBSZWdpc3RlcklEIGRlc3QpOwogCi0gICAgSnVtcCBjaGVja01hcmtCeXRlKEdQUlJlZyBj
ZWxsKQorICAgIEp1bXAganVtcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4oR1BSUmVnIGNlbGwpCiAg
ICAgewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsK
ICAgICB9CiAKLSAgICBKdW1wIGNoZWNrTWFya0J5dGUoSlNDZWxsKiBjZWxsKQorICAgIEp1bXAg
anVtcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4oSlNDZWxsKiBjZWxsKQogICAgIHsKICAgICAgICAg
dWludDhfdCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNlbGwpICsgSlND
ZWxsOjpnY0RhdGFPZmZzZXQoKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNzKGFkZHJlc3Mp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCShyZXZpc2lvbiAxNzU1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI4LDkgKzgyOCw5IEBAIHZv
aWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmUKICAgICBpZiAobW9kZSA9PSBT
aG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQogICAg
ICAgICBvd25lck5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tS
ZWdpc3Rlcik7CiAKLSAgICBKdW1wIG93bmVyTm90TWFya2VkT3JBbHJlYWR5UmVtZW1iZXJlZCA9
IGNoZWNrTWFya0J5dGUocmVnVDApOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRl
biA9IGp1bXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1QwKTsKLSAgICBvd25lck5v
dE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQubGluayh0aGlzKTsKKyAgICBvd25lcklzUmVtZW1i
ZXJlZE9ySW5FZGVuLmxpbmsodGhpcyk7CiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJC
YXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQogICAgICAgICBvd25lck5v
dENlbGwubGluayh0aGlzKTsKQEAgLTg3OCw5ICs4NzgsOSBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRl
QmFycmllcih1bnNpZ25lZCBvd25lCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8
fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxs
ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwogCi0gICAgSnVtcCBvd25lck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBjaGVj
a01hcmtCeXRlKHJlZ1QxKTsKKyAgICBKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBq
dW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihyZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCByZWdUMSk7Ci0gICAgb3duZXJOb3RNYXJr
ZWRPckFscmVhZHlSZW1lbWJlcmVkLmxpbmsodGhpcyk7CisgICAgb3duZXJJc1JlbWVtYmVyZWRP
ckluRWRlbi5saW5rKHRoaXMpOwogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8
fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxs
LmxpbmsodGhpcyk7CkBAIC05MTksOSArOTE5LDkgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJp
ZXIoSlNDZWxsKiBvd25lcgogewogI2lmIEVOQUJMRShHR0MpCiAgICAgaWYgKCFNYXJrZWRCbG9j
azo6YmxvY2tGb3Iob3duZXIpLT5pc01hcmtlZChvd25lcikpIHsKLSAgICAgICAgSnVtcCBvd25l
ck5vdE1hcmtlZE9yQWxyZWFkeVJlbWVtYmVyZWQgPSBjaGVja01hcmtCeXRlKG93bmVyKTsKKyAg
ICAgICAgSnVtcCBvd25lcklzUmVtZW1iZXJlZE9ySW5FZGVuID0ganVtcElmSXNSZW1lbWJlcmVk
T3JJbkVkZW4ob3duZXIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIsIG93bmVyKTsKLSAgICAgICAgb3duZXJOb3RNYXJrZWRPckFscmVh
ZHlSZW1lbWJlcmVkLmxpbmsodGhpcyk7CisgICAgICAgIG93bmVySXNSZW1lbWJlcmVkT3JJbkVk
ZW4ubGluayh0aGlzKTsKICAgICB9IGVsc2UKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBvd25lcik7CiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20JKHJldmlzaW9uIDE3NTU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC01NjksNyAr
NTY5LDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5kKGNlbGxPcGVyYW5kKQogICAgIGlm
IEdHQwogICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oY2VsbE9wZXJhbmQsIHQxKQogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDIsIC53cml0
ZUJhcnJpZXJEb25lKQotICAgICAgICBjaGVja01hcmtCeXRlKHQyLCB0MSwgdDMsIAorICAgICAg
ICBza2lwSWZJc1JlbWVtYmVyZWRPckluRWRlbih0MiwgdDEsIHQzLCAKICAgICAgICAgICAgIG1h
Y3JvKGdjRGF0YSkKICAgICAgICAgICAgICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJpZXJE
b25lCiAgICAgICAgICAgICAgICAgcHVzaCBjZnIsIFBDCkBAIC02MDMsNyArNjAzLDcgQEAgbWFj
cm8gd3JpdGVCYXJyaWVyT25HbG9iYWxPYmplY3QodmFsdWVPcAogICAgIAogICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0M10sIHQzCi0gICAgICAgIGNoZWNrTWFya0J5dGUodDMsIHQxLCB0MiwKKyAgICAgICAg
c2tpcElmSXNSZW1lbWJlcmVkT3JJbkVkZW4odDMsIHQxLCB0MiwKICAgICAgICAgICAgIG1hY3Jv
KGdjRGF0YSkKICAgICAgICAgICAgICAgICBidGJueiBnY0RhdGEsIC53cml0ZUJhcnJpZXJEb25l
CiAgICAgICAgICAgICAgICAgcHVzaCBjZnIsIFBDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MTc1NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ0Myw3ICs0NDMsNyBAQCBtYWNybyB3cml0ZUJh
cnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCiAgICAgaWYgR0dDCiAgICAgICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwgdDEpCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHQxLCB0MiwgLndyaXRlQmFycmllckRvbmUpCi0gICAgICAgIGNoZWNrTWFya0J5
dGUodDIsIHQxLCB0MywgCisgICAgICAgIHNraXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKHQyLCB0
MSwgdDMsIAogICAgICAgICAgICAgbWFjcm8oZ2NEYXRhKQogICAgICAgICAgICAgICAgIGJ0Ym56
IGdjRGF0YSwgLndyaXRlQmFycmllckRvbmUKICAgICAgICAgICAgICAgICBwdXNoIFBCLCBQQwpA
QCAtNDc0LDcgKzQ3NCw3IEBAIG1hY3JvIHdyaXRlQmFycmllck9uR2xvYmFsT2JqZWN0KHZhbHVl
T3AKICAgICAKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAgICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwotICAgICAgICBjaGVja01hcmtCeXRl
KHQzLCB0MSwgdDIsCisgICAgICAgIHNraXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKHQzLCB0MSwg
dDIsCiAgICAgICAgICAgICBtYWNybyhnY0RhdGEpCiAgICAgICAgICAgICAgICAgYnRibnogZ2NE
YXRhLCAud3JpdGVCYXJyaWVyRG9uZQogICAgICAgICAgICAgICAgIHB1c2ggUEIsIFBDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNzU1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTUwOSw3ICs1MDksNyBA
QCBtYWNybyBhcnJheVByb2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgCiAgICAgbG9hZGIgSlND
ZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAotbWFjcm8gY2hl
Y2tNYXJrQnl0ZShjZWxsLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGNvbnRpbnVhdGlvbikKK21hY3Jv
IHNraXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKGNlbGwsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgY29u
dGludWF0aW9uKQogICAgIGxvYWRiIEpTQ2VsbDo6bV9nY0RhdGFbY2VsbF0sIHNjcmF0Y2gxCiAg
ICAgY29udGludWF0aW9uKHNjcmF0Y2gxKQogZW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTc1NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw5ICsxNDcsMTQgQEAg
cHVibGljOgogICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KFZNJiwgU3RydWN0dXJlJiwg
UHJvcGVydHlOYW1lKTsKIAogICAgIGVudW0gR0NEYXRhIDogdWludDhfdCB7Ci0gICAgICAgIE1h
cmtlZCA9IDAsCi0gICAgICAgIE5vdE1hcmtlZCA9IDEsCi0gICAgICAgIE1hcmtlZEFuZFJlbWVt
YmVyZWQgPSAyLAorICAgICAgICBNYXJrZWQgPSAwLCAvLyBUaGUgb2JqZWN0IGhhcyBzdXJ2aXZl
ZCBhIEdDIGFuZCBpcyBpbiB0aGUgb2xkIGdlbi4KKyAgICAgICAgTm90TWFya2VkID0gMSwgLy8g
VGhlIG9iamVjdCBpcyBuZXcgYW5kIGluIHRoZSBlZGVuIGdlbi4KKyAgICAgICAgTWFya2VkQW5k
UmVtZW1iZXJlZCA9IDIsIC8vIFRoZSBvYmplY3QgaXMgaW4gdGhlIEdDJ3MgcmVtZW1iZXIgc2V0
LgorCisgICAgICAgIC8vIFRoZSBvYmplY3QgYmVpbmcgaW4gdGhlIEdDJ3MgcmVtZW1iZXIgc2V0
IGltcGxpZXMgdGhhdCBpdCBpcyBhbHNvCisgICAgICAgIC8vIE1hcmtlZC4gVGhpcyBpcyBiZWNh
dXNlIG9iamVjdHMgYXJlIG9ubHkgYWRkZWQgdG8gdGhlIHJlbWVtYmVyZWQgc2V0cworICAgICAg
ICAvLyBieSB3cml0ZSBiYXJyaWVycywgYW5kIHdyaXRlIGJhcnJpZXJzIGFyZSBvbmx5IGludGVy
ZXN0ZWQgaW4gb2xkIGdlbgorICAgICAgICAvLyBvYmplY3RzIHRoYXQgcG9pbnQgdG8gcG90ZW50
aWFsIGVkZW4gZ2VuIG9iamVjdHMuCiAgICAgfTsKIAogICAgIHZvaWQgc2V0TWFya2VkKCkgeyBt
X2djRGF0YSA9IE1hcmtlZDsgfQo=
</data>
<flag name="review"
          id="265767"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>