<?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>100461</bug_id>
          
          <creation_ts>2012-10-25 22:34:43 -0700</creation_ts>
          <short_desc>Forward OSR calculation is wrong in the presence of multiple SetLocals, or a mix of SetLocals and Phantoms</short_desc>
          <delta_ts>2012-10-26 15:19:30 -0700</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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751552</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-25 22:34:43 -0700</bug_when>
    <thetext>This was broken by the attempt to have the forward OSR exit calculator collect all SetLocals and create recovery overrides for them.  The fix is to not do that, and instead have bytecode ops that decompose into multiple SetLocals explicitly help the forward OSR exit calculator with SetLocal hints.

&lt;rdar://problem/12551946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751569</commentid>
    <comment_count>1</comment_count>
      <attachid>170822</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-25 23:00:23 -0700</bug_when>
    <thetext>Created attachment 170822
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751570</commentid>
    <comment_count>2</comment_count>
      <attachid>170822</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-25 23:01:03 -0700</bug_when>
    <thetext>Comment on attachment 170822
the patch

Clearing cq? because I will probably want to land this with a test.  I would appreciate a review even though I haven&apos;t had a chance to try to write the test, yet.  Doing so will be tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752052</commentid>
    <comment_count>3</comment_count>
      <attachid>170822</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-26 07:52:55 -0700</bug_when>
    <thetext>Comment on attachment 170822
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3118
&gt; +                // First create OSR hints only.
&gt; +                set(baseDst, base);
&gt; +                set(valueDst, value);
&gt; +                
&gt; +                // If we try to hoist structure checks into here, then we&apos;re guaranteed that they will occur
&gt; +                // *after* we have already set up the values for OSR.
&gt; +                
&gt; +                // Then do the real SetLocals.

Don&apos;t we need this for resolve_with_this as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752416</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-26 14:34:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 170822 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170822&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3118
&gt; &gt; +                // First create OSR hints only.
&gt; &gt; +                set(baseDst, base);
&gt; &gt; +                set(valueDst, value);
&gt; &gt; +                
&gt; &gt; +                // If we try to hoist structure checks into here, then we&apos;re guaranteed that they will occur
&gt; &gt; +                // *after* we have already set up the values for OSR.
&gt; &gt; +                
&gt; &gt; +                // Then do the real SetLocals.
&gt; 
&gt; Don&apos;t we need this for resolve_with_this as well?

Ooops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752431</commentid>
    <comment_count>5</comment_count>
      <attachid>171016</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-26 14:40:55 -0700</bug_when>
    <thetext>Created attachment 171016
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752485</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-26 15:19:30 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/132701</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170822</attachid>
            <date>2012-10-25 23:00:23 -0700</date>
            <delta_ts>2012-10-26 14:40:55 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>proper-fix.patch</filename>
            <type>text/plain</type>
            <size>12310</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNTcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTEwLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9yd2FyZCBPU1IgY2FsY3VsYXRpb24gaXMgd3JvbmcgaW4gdGhlIHByZXNlbmNlIG9mIG11bHRp
cGxlIFNldExvY2Fscywgb3IgYSBtaXggb2YgU2V0TG9jYWxzIGFuZCBQaGFudG9tcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIGEgY291
cGxlIG9mIHRoaW5ncy4gRmlyc3QsIGl0IHJlbW92ZXMgdGhlIHBhcnQgb2YgdGhlIGNoYW5nZSBp
biByMTMxODIyIHRoYXQgbWFkZSB0aGUgZm9yd2FyZAorICAgICAgICBPU1IgZXhpdCBjYWxjdWxh
dG9yIGNhcGFibGUgb2YgaGFuZGxpbmcgbXVsdGlwbGUgU2V0TG9jYWxzLiBUaGF0IGNoYW5nZSB3
YXMgd3JvbmcsIGJlY2F1c2UgaXQgd291bGQKKyAgICAgICAgYmxpbmRseSBhc3N1bWUgdGhhdCBh
bGwgU2V0TG9jYWxzIGhhZCB0aGUgc2FtZSBWYWx1ZVJlY292ZXJ5LCBhbmQgd291bGQgaWdub3Jl
IHRoZSBwb3NzaWJpbGl0eSB0aGF0IGlmCisgICAgICAgIHRoZXJlIGlzIG5vIHZhbHVlIHJlY292
ZXJ5IHRoZW4gYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUgb24gdGhlIGZpcnN0IFNldExvY2FsIHdv
dWxkIG5vdCBrbm93IGhvdyB0bworICAgICAgICByZWNvdmVyIHRoZSBzdGF0ZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHNlY29uZCBTZXRMb2NhbC4gVGhlbiwgaXQgaW50cm9kdWNlcyB0aGUgaW52YXJp
YW50IHRoYXQgYW55IGJ5dGVjb2RlCisgICAgICAgIG9wIHRoYXQgZGVjb21wb3NlcyBpbnRvIG11
bHRpcGxlIFNldExvY2FscyBtdXN0IGZpcnN0IGVtaXQgZGVhZCBTZXRMb2NhbHMgYXMgaGludHMg
YW5kIHRoZW4gZW1pdCBhIHNlY29uZAorICAgICAgICBzZXQgb2YgU2V0TG9jYWxzIHRvIGFjdHVh
bGx5IGRvIHRoZSBzZXR0aW5nIG9mIHRoZSBsb2NhbHMuIFRoaXMgbWVhbnMgdGhhdCBpZiBhIEZv
cndhcmRDaGVja1N0cnVjdHVyZSAob3IKKyAgICAgICAgYW55IG90aGVyIGhvaXN0ZWQgZm9yd2Fy
ZCBzcGVjdWxhdGlvbikgaXMgaW5zZXJ0ZWQsIGl0IHdpbGwgYWx3YXlzIGJlIGluc2VydGVkIG9u
IHRoZSBzZWNvbmQgc2V0IG9mCisgICAgICAgIFNldExvY2FscyAoc2luY2UgaG9pc3Rpbmcgb25s
eSB0b3VjaGVzIHRoZSBsaXZlIG9uZXMpLCBhdCB3aGljaCBwb2ludCBPU1Igd2lsbCBhbHJlYWR5
IGtub3cgYWJvdXQgdGhlCisgICAgICAgIG1vdiBoaW50cyBpbXBsaWVkIGJ5IHRoZSBmaXJzdCBz
ZXQgb2YgKGRlYWQpIFNldExvY2Fscy4gVGhpcyBnaXZlcyB1cyB0aGUgYmVoYXZpb3Igd2Ugd2Fu
dGVkLCBuYW1lbHksIHRoYXQKKyAgICAgICAgYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUgYXBwbGll
ZCB0byBhIHZhcmlhbnQgc2V0IGJ5IGEgcmVzb2x2ZV93aXRoX2Jhc2UtbGlrZSBvcGVyYXRpb24g
Y2FuIGNvcnJlY3RseSBkbyBhCisgICAgICAgIGZvcndhcmQgZXhpdCB3aGlsZSBhbHNvIGVuc3Vy
aW5nIHRoYXQgcHJpb3IgdG8gZXhpdGluZyB3ZSBzZXQgdGhlIGFwcHJvcHJpYXRlIGxvY2Fscy4K
KworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRMYXN0T1NSRXhpdFRvRm9yd2FyZCk6CisKIDIwMTItMTAtMjUgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHM6
Om5lZWRzRGVzdHJ1Y3Rpb24gc2hvdWxkIGJlIHNldCB0byB0cnVlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTMy
NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMDgsNiArMzEwOCwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IDA7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSAwOwogICAgICAgICAgICAgaWYgKHBhcnNlUmVz
b2x2ZU9wZXJhdGlvbnMocHJlZGljdGlvbiwgaWRlbnRpZmllciwgb3BlcmF0aW9ucywgcHV0VG9C
YXNlT3BlcmF0aW9uLCAmYmFzZSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0
IGNyZWF0ZSBPU1IgaGludHMgb25seS4KKyAgICAgICAgICAgICAgICBzZXQoYmFzZURzdCwgYmFz
ZSk7CisgICAgICAgICAgICAgICAgc2V0KHZhbHVlRHN0LCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gSWYgd2UgdHJ5IHRvIGhvaXN0IHN0cnVjdHVyZSBjaGVj
a3MgaW50byBoZXJlLCB0aGVuIHdlJ3JlIGd1YXJhbnRlZWQgdGhhdCB0aGV5IHdpbGwgb2NjdXIK
KyAgICAgICAgICAgICAgICAvLyAqYWZ0ZXIqIHdlIGhhdmUgYWxyZWFkeSBzZXQgdXAgdGhlIHZh
bHVlcyBmb3IgT1NSLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRoZW4g
ZG8gdGhlIHJlYWwgU2V0TG9jYWxzLgogICAgICAgICAgICAgICAgIHNldChiYXNlRHN0LCBiYXNl
KTsKICAgICAgICAgICAgICAgICBzZXQodmFsdWVEc3QsIHZhbHVlKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJl
dmlzaW9uIDEzMjU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDkgQEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0
S2luZCBraW5kLCBKU1ZhbHVlUwogICAgICwgbV9raW5kKGtpbmQpCiAgICAgLCBtX2NvdW50KDAp
CiAgICAgLCBtX3N0cmVhbUluZGV4KHN0cmVhbUluZGV4KQorICAgICwgbV9sYXN0U2V0T3BlcmFu
ZChqaXQtPm1fbGFzdFNldE9wZXJhbmQpCiB7CiAgICAgQVNTRVJUKG1fY29kZU9yaWdpbi5pc1Nl
dCgpKTsKLSAgICBtX3NldE9wZXJhbmRzLmFwcGVuZChqaXQtPm1fbGFzdFNldE9wZXJhbmQpOwog
fQogCiBib29sIE9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhD
b2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jaykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMzI1Njkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDkgKzExMCw5IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICB9CiAgICAgCiAgICAg
dW5zaWduZWQgbV9zdHJlYW1JbmRleDsKLSAgICBWZWN0b3I8aW50LCAxPiBtX3NldE9wZXJhbmRz
OworICAgIGludCBtX2xhc3RTZXRPcGVyYW5kOwogICAgIAotICAgIFZlY3RvcjxSZWZQdHI8VmFs
dWVSZWNvdmVyeU92ZXJyaWRlPiwgMT4gbV92YWx1ZVJlY292ZXJ5T3ZlcnJpZGVzOworICAgIFJl
ZlB0cjxWYWx1ZVJlY292ZXJ5T3ZlcnJpZGU+IG1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIGJvb2wgY29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KENv
ZGVCbG9jayogZGZnQ29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxMzI1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMyLDkg
KzczMiw5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAK
ICAgICAvLyAxNSkgTG9hZCB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGJ5dGVjb2RlIG9wZXJhdGlv
biBpbnRvIHJlZ1QwLgogICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhpdC5tX3Nl
dE9wZXJhbmRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcilleGl0Lm1fc2V0T3BlcmFuZHNbaV0p
LCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rlcik7Ci0gICAgICAgIG1faml0LmxvYWQzMihB
c3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKWV4aXQubV9zZXRPcGVyYW5k
c1tpXSksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyMik7CisgICAgaWYgKGV4aXQubV9s
YXN0U2V0T3BlcmFuZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSB7CisgICAg
ICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdp
c3RlcilleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rl
cik7CisgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKWV4aXQubV9sYXN0U2V0T3BlcmFuZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJl
Z2lzdGVyMik7CiAgICAgfQogICAgIAogICAgIC8vIDE2KSBBZGp1c3QgdGhlIGNhbGwgZnJhbWUg
cG9pbnRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwCShyZXZpc2lvbiAxMzI1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgx
LDkgKzY4MSw5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAg
ICAKICAgICAvLyAxNikgTG9hZCB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGJ5dGVjb2RlIG9wZXJh
dGlvbiBpbnRvIHJlZ1QwLgogICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhpdC5t
X3NldE9wZXJhbmRzLnNpemUoKTsgaSsrKQotICAgICAgICBtX2ppdC5sb2FkNjQoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX3NldE9wZXJhbmRzW2ld
KSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotCisgICAgaWYgKGV4aXQubV9sYXN0
U2V0T3BlcmFuZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKQorICAgICAgICBt
X2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVy
KWV4aXQubV9sYXN0U2V0T3BlcmFuZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyKTsK
KyAgICAKICAgICAvLyAxNykgQWRqdXN0IHRoZSBjYWxsIGZyYW1lIHBvaW50ZXIuCiAgICAgCiAg
ICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9u
IDEzMjU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDExIEBAIHZvaWQgY29tcGlsZU9TUkV4
aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRz
OwogICAgIGNvZGVCbG9jay0+dmFyaWFibGVFdmVudFN0cmVhbSgpLnJlY29uc3RydWN0KGNvZGVC
bG9jaywgZXhpdC5tX2NvZGVPcmlnaW4sIGNvZGVCbG9jay0+bWluaWZpZWRERkcoKSwgZXhpdC5t
X3N0cmVhbUluZGV4LCBvcGVyYW5kcyk7CiAgICAgCi0gICAgLy8gVGhlcmUgbWF5IGJlIG92ZXJy
aWRlcywgZm9yIGZvcndhcmQgc3BlY3VsYXRpb25zLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZXhpdC5tX3ZhbHVlUmVjb3ZlcnlPdmVycmlkZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG9w
ZXJhbmRzLnNldE9wZXJhbmQoZXhpdC5tX3ZhbHVlUmVjb3ZlcnlPdmVycmlkZXNbaV0tPm9wZXJh
bmQsIGV4aXQubV92YWx1ZVJlY292ZXJ5T3ZlcnJpZGVzW2ldLT5yZWNvdmVyeSk7Ci0KKyAgICAv
LyBUaGVyZSBtYXkgYmUgYW4gb3ZlcnJpZGUsIGZvciBmb3J3YXJkIHNwZWN1bGF0aW9ucy4KKyAg
ICBpZiAoISFleGl0Lm1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlKSB7CisgICAgICAgIG9wZXJhbmRz
LnNldE9wZXJhbmQoCisgICAgICAgICAgICBleGl0Lm1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlLT5v
cGVyYW5kLCBleGl0Lm1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlLT5yZWNvdmVyeSk7CisgICAgfQog
ICAgIAogICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhp
dC5tX3JlY292ZXJ5SW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTMyNTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MywxOSArMTUzLDM3IEBAIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSkkK
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydExhc3RPU1JFeGl0VG9Gb3J3YXJkKGNvbnN0
IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIGlmICghdmFsdWVSZWNvdmVyeSkgewogICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBwcmVj
ZWRpbmcgbm9kZSB3YXMgYSBTZXRMb2NhbCB3aXRoIHRoZSBzYW1lIGNvZGUgb3JpZ2luLgogICAg
ICAgICBOb2RlKiBzZXRMb2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2td
LT5hdChtX2luZGV4SW5CbG9jayAtIDEpKTsKLSAgICAgICAgQVNTRVJUKHNldExvY2FsLT5vcCgp
ID09IFNldExvY2FsKTsKLSAgICAgICAgQVNTRVJUKHNldExvY2FsLT5jb2RlT3JpZ2luID09IGF0
KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzZXRM
b2NhbCwgc2V0TG9jYWwtPm9wKCkgPT0gU2V0TG9jYWwpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KHNldExvY2FsLCBzZXRMb2NhbC0+Y29kZU9yaWdpbiA9PSBhdChtX2NvbXBpbGVJbmRleCkuY29k
ZU9yaWdpbik7CisgICAgICAgIAorICAgICAgICAvLyBGaW5kIHRoZSBuZXh0IG5vZGUuCisgICAg
ICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jayA9IG1faW5kZXhJbkJsb2NrICsgMTsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IDA7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGlmIChpbmRl
eEluQmxvY2sgPT0gbV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+c2l6ZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbmxpbmUgcmV0dXJuLiBHaXZlIHVwIGFuZCBk
byBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbi4gVGhpcyBpcyBzYWZlCisgICAgICAgICAgICAgICAg
Ly8gYmVjYXVzZSBhbiBpbmxpbmUgcmV0dXJuIGhhcyBpdHMgb3duIGJ5dGVjb2RlIGluZGV4IGFu
ZCBpdCdzIGFsd2F5cyBzYWZlIHRvCisgICAgICAgICAgICAgICAgLy8gcmVleGVjdXRlIHRoYXQg
Ynl0ZWNvZGUuCisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gSnVtcCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZSA9
ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdChpbmRleEluQmxvY2spKTsK
KyAgICAgICAgICAgIGlmIChub2RlLT5jb2RlT3JpZ2luICE9IGF0KG1fY29tcGlsZUluZGV4KS5j
b2RlT3JpZ2luKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaW5kZXhJbkJs
b2NrKys7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFTU0VSVChub2RlLT5jb2RlT3Jp
Z2luICE9IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKKyAgICAgICAgT1NSRXhpdCYg
ZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5sYXN0T1NSRXhpdCgpOworICAgICAgICBleGl0Lm1f
Y29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgIHJldHVybjsKICAgICB9Ci0j
ZW5kaWYKICAgICAKICAgICB1bnNpZ25lZCBzZXRMb2NhbEluZGV4SW5CbG9jayA9IG1faW5kZXhJ
bkJsb2NrICsgMTsKLQotICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+bGFz
dE9TUkV4aXQoKTsKLQorICAgIAogICAgIE5vZGUqIHNldExvY2FsID0gJmF0KG1faml0LmdyYXBo
KCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KHNldExvY2FsSW5kZXhJbkJsb2NrKSk7CiAgICAgYm9v
bCBoYWRJbnQzMlRvRG91YmxlID0gZmFsc2U7CiAgICAgCkBAIC0xNzUsMTMgKzE5MywxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0TGFzdE9TUkV4aXRUCiAgICAgfQogICAgIGlmIChz
ZXRMb2NhbC0+b3AoKSA9PSBGbHVzaCB8fCBzZXRMb2NhbC0+b3AoKSA9PSBQaGFudG9tKQogICAg
ICAgICBzZXRMb2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdCgr
K3NldExvY2FsSW5kZXhJbkJsb2NrKSk7Ci0gICAgCi0gICAgaWYgKCEhdmFsdWVSZWNvdmVyeSkg
ewotICAgICAgICBpZiAoaGFkSW50MzJUb0RvdWJsZSkKLSAgICAgICAgICAgIEFTU0VSVChhdChz
ZXRMb2NhbC0+Y2hpbGQxKCkpLmNoaWxkMSgpID09IG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgQVNTRVJUKHNldExvY2FsLT5jaGlsZDEoKSA9PSBtX2NvbXBpbGVJ
bmRleCk7Ci0gICAgfQorICAgICAgICAKKyAgICBpZiAoaGFkSW50MzJUb0RvdWJsZSkKKyAgICAg
ICAgQVNTRVJUKGF0KHNldExvY2FsLT5jaGlsZDEoKSkuY2hpbGQxKCkgPT0gbV9jb21waWxlSW5k
ZXgpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKHNldExvY2FsLT5jaGlsZDEoKSA9PSBtX2Nv
bXBpbGVJbmRleCk7CiAgICAgQVNTRVJUKHNldExvY2FsLT5vcCgpID09IFNldExvY2FsKTsKICAg
ICBBU1NFUlQoc2V0TG9jYWwtPmNvZGVPcmlnaW4gPT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVP
cmlnaW4pOwogCkBAIC0xOTAsMzQgKzIwNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb252
ZXJ0TGFzdE9TUkV4aXRUCiAgICAgICAgIC8vIFdlJ3JlIGF0IGFuIGlubGluZWQgcmV0dXJuLiBV
c2UgYSBiYWNrd2FyZCBzcGVjdWxhdGlvbiBpbnN0ZWFkLgogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgZXhpdC5tX3NldE9wZXJhbmRzWzBdID0gc2V0TG9jYWwtPmxvY2FsKCk7Ci0gICAg
d2hpbGUgKG5leHROb2RlLT5jb2RlT3JpZ2luID09IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3Jp
Z2luKSB7Ci0gICAgICAgICsrc2V0TG9jYWxJbmRleEluQmxvY2s7Ci0gICAgICAgIE5vZGUqIG5l
eHRTZXRMb2NhbCA9IG5leHROb2RlOwotICAgICAgICBpZiAobmV4dFNldExvY2FsLT5vcCgpID09
IEludDMyVG9Eb3VibGUpCi0gICAgICAgICAgICBuZXh0U2V0TG9jYWwgPSAmYXQobV9qaXQuZ3Jh
cGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQoKytzZXRMb2NhbEluZGV4SW5CbG9jaykpOwotCi0g
ICAgICAgIGlmIChuZXh0U2V0TG9jYWwtPm9wKCkgPT0gRmx1c2ggfHwgbmV4dFNldExvY2FsLT5v
cCgpID09IFBoYW50b20pCi0gICAgICAgICAgICBuZXh0U2V0TG9jYWwgPSAmYXQobV9qaXQuZ3Jh
cGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQoKytzZXRMb2NhbEluZGV4SW5CbG9jaykpOwotCi0g
ICAgICAgIG5leHROb2RlID0gJmF0KG1faml0LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0
KHNldExvY2FsSW5kZXhJbkJsb2NrICsgMSkpOwotICAgICAgICBBU1NFUlQobmV4dE5vZGUtPm9w
KCkgIT0gSnVtcCB8fCBuZXh0Tm9kZS0+Y29kZU9yaWdpbiAhPSBhdChtX2NvbXBpbGVJbmRleCku
Y29kZU9yaWdpbik7Ci0gICAgICAgIEFTU0VSVChuZXh0U2V0TG9jYWwtPm9wKCkgPT0gU2V0TG9j
YWwpOwotICAgICAgICBleGl0Lm1fc2V0T3BlcmFuZHMuYXBwZW5kKG5leHRTZXRMb2NhbC0+bG9j
YWwoKSk7Ci0gICAgfQotCiAgICAgQVNTRVJUKG5leHROb2RlLT5jb2RlT3JpZ2luICE9IGF0KG1f
Y29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKLQorICAgICAgICAKKyAgICBPU1JFeGl0JiBleGl0
ID0gbV9qaXQuY29kZUJsb2NrKCktPmxhc3RPU1JFeGl0KCk7CiAgICAgZXhpdC5tX2NvZGVPcmln
aW4gPSBuZXh0Tm9kZS0+Y29kZU9yaWdpbjsKICAgICAgICAgCi0gICAgaWYgKCF2YWx1ZVJlY292
ZXJ5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZXhpdC5tX3NldE9wZXJhbmRzLnNp
emUoKSA9PSAxKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4aXQubV9zZXRPcGVyYW5k
cy5zaXplKCk7IGkrKykKLSAgICAgICAgZXhpdC5tX3ZhbHVlUmVjb3ZlcnlPdmVycmlkZXMuYXBw
ZW5kKGFkb3B0UmVmKG5ldyBWYWx1ZVJlY292ZXJ5T3ZlcnJpZGUoZXhpdC5tX3NldE9wZXJhbmRz
W2ldLCB2YWx1ZVJlY292ZXJ5KSkpOwotCisgICAgZXhpdC5tX2xhc3RTZXRPcGVyYW5kID0gc2V0
TG9jYWwtPmxvY2FsKCk7CisgICAgZXhpdC5tX3ZhbHVlUmVjb3ZlcnlPdmVycmlkZSA9IGFkb3B0
UmVmKAorICAgICAgICBuZXcgVmFsdWVSZWNvdmVyeU92ZXJyaWRlKHNldExvY2FsLT5sb2NhbCgp
LCB2YWx1ZVJlY292ZXJ5KSk7CiB9CiAKIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIFNwZWN1
bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171016</attachid>
            <date>2012-10-26 14:40:55 -0700</date>
            <delta_ts>2012-10-26 14:42:13 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>proper-fix-2.patch</filename>
            <type>text/plain</type>
            <size>13026</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNTcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDEyLTEwLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9yd2FyZCBPU1IgY2FsY3VsYXRpb24gaXMgd3JvbmcgaW4gdGhlIHByZXNlbmNlIG9mIG11bHRp
cGxlIFNldExvY2Fscywgb3IgYSBtaXggb2YgU2V0TG9jYWxzIGFuZCBQaGFudG9tcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkb2VzIGEgY291
cGxlIG9mIHRoaW5ncy4gRmlyc3QsIGl0IHJlbW92ZXMgdGhlIHBhcnQgb2YgdGhlIGNoYW5nZSBp
biByMTMxODIyIHRoYXQgbWFkZSB0aGUgZm9yd2FyZAorICAgICAgICBPU1IgZXhpdCBjYWxjdWxh
dG9yIGNhcGFibGUgb2YgaGFuZGxpbmcgbXVsdGlwbGUgU2V0TG9jYWxzLiBUaGF0IGNoYW5nZSB3
YXMgd3JvbmcsIGJlY2F1c2UgaXQgd291bGQKKyAgICAgICAgYmxpbmRseSBhc3N1bWUgdGhhdCBh
bGwgU2V0TG9jYWxzIGhhZCB0aGUgc2FtZSBWYWx1ZVJlY292ZXJ5LCBhbmQgd291bGQgaWdub3Jl
IHRoZSBwb3NzaWJpbGl0eSB0aGF0IGlmCisgICAgICAgIHRoZXJlIGlzIG5vIHZhbHVlIHJlY292
ZXJ5IHRoZW4gYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUgb24gdGhlIGZpcnN0IFNldExvY2FsIHdv
dWxkIG5vdCBrbm93IGhvdyB0bworICAgICAgICByZWNvdmVyIHRoZSBzdGF0ZSBhc3NvY2lhdGVk
IHdpdGggdGhlIHNlY29uZCBTZXRMb2NhbC4gVGhlbiwgaXQgaW50cm9kdWNlcyB0aGUgaW52YXJp
YW50IHRoYXQgYW55IGJ5dGVjb2RlCisgICAgICAgIG9wIHRoYXQgZGVjb21wb3NlcyBpbnRvIG11
bHRpcGxlIFNldExvY2FscyBtdXN0IGZpcnN0IGVtaXQgZGVhZCBTZXRMb2NhbHMgYXMgaGludHMg
YW5kIHRoZW4gZW1pdCBhIHNlY29uZAorICAgICAgICBzZXQgb2YgU2V0TG9jYWxzIHRvIGFjdHVh
bGx5IGRvIHRoZSBzZXR0aW5nIG9mIHRoZSBsb2NhbHMuIFRoaXMgbWVhbnMgdGhhdCBpZiBhIEZv
cndhcmRDaGVja1N0cnVjdHVyZSAob3IKKyAgICAgICAgYW55IG90aGVyIGhvaXN0ZWQgZm9yd2Fy
ZCBzcGVjdWxhdGlvbikgaXMgaW5zZXJ0ZWQsIGl0IHdpbGwgYWx3YXlzIGJlIGluc2VydGVkIG9u
IHRoZSBzZWNvbmQgc2V0IG9mCisgICAgICAgIFNldExvY2FscyAoc2luY2UgaG9pc3Rpbmcgb25s
eSB0b3VjaGVzIHRoZSBsaXZlIG9uZXMpLCBhdCB3aGljaCBwb2ludCBPU1Igd2lsbCBhbHJlYWR5
IGtub3cgYWJvdXQgdGhlCisgICAgICAgIG1vdiBoaW50cyBpbXBsaWVkIGJ5IHRoZSBmaXJzdCBz
ZXQgb2YgKGRlYWQpIFNldExvY2Fscy4gVGhpcyBnaXZlcyB1cyB0aGUgYmVoYXZpb3Igd2Ugd2Fu
dGVkLCBuYW1lbHksIHRoYXQKKyAgICAgICAgYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUgYXBwbGll
ZCB0byBhIHZhcmlhbnQgc2V0IGJ5IGEgcmVzb2x2ZV93aXRoX2Jhc2UtbGlrZSBvcGVyYXRpb24g
Y2FuIGNvcnJlY3RseSBkbyBhCisgICAgICAgIGZvcndhcmQgZXhpdCB3aGlsZSBhbHNvIGVuc3Vy
aW5nIHRoYXQgcHJpb3IgdG8gZXhpdGluZyB3ZSBzZXQgdGhlIGFwcHJvcHJpYXRlIGxvY2Fscy4K
KworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JFeGl0KToKKyAgICAgICAgKiBk
ZmcvREZHT1NSRXhpdC5oOgorICAgICAgICAoT1NSRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRMYXN0T1NSRXhpdFRvRm9yd2FyZCk6CisKIDIwMTItMTAtMjUgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHM6
Om5lZWRzRGVzdHJ1Y3Rpb24gc2hvdWxkIGJlIHNldCB0byB0cnVlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTMy
NTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMDgsNiArMzEwOCwxNCBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IDA7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSAwOwogICAgICAgICAgICAgaWYgKHBhcnNlUmVz
b2x2ZU9wZXJhdGlvbnMocHJlZGljdGlvbiwgaWRlbnRpZmllciwgb3BlcmF0aW9ucywgcHV0VG9C
YXNlT3BlcmF0aW9uLCAmYmFzZSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0
IGNyZWF0ZSBPU1IgaGludHMgb25seS4KKyAgICAgICAgICAgICAgICBzZXQoYmFzZURzdCwgYmFz
ZSk7CisgICAgICAgICAgICAgICAgc2V0KHZhbHVlRHN0LCB2YWx1ZSk7CisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gSWYgd2UgdHJ5IHRvIGhvaXN0IHN0cnVjdHVyZSBjaGVj
a3MgaW50byBoZXJlLCB0aGVuIHdlJ3JlIGd1YXJhbnRlZWQgdGhhdCB0aGV5IHdpbGwgb2NjdXIK
KyAgICAgICAgICAgICAgICAvLyAqYWZ0ZXIqIHdlIGhhdmUgYWxyZWFkeSBzZXQgdXAgdGhlIHZh
bHVlcyBmb3IgT1NSLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRoZW4g
ZG8gdGhlIHJlYWwgU2V0TG9jYWxzLgogICAgICAgICAgICAgICAgIHNldChiYXNlRHN0LCBiYXNl
KTsKICAgICAgICAgICAgICAgICBzZXQodmFsdWVEc3QsIHZhbHVlKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC0zMTI4LDYgKzMxMzYsMTQgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSAwOwogICAgICAgICAg
ICAgTm9kZUluZGV4IHZhbHVlID0gMDsKICAgICAgICAgICAgIGlmIChwYXJzZVJlc29sdmVPcGVy
YXRpb25zKHByZWRpY3Rpb24sIGlkZW50aWZpZXIsIG9wZXJhdGlvbnMsIDAsICZiYXNlLCAmdmFs
dWUpKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgY3JlYXRlIE9TUiBoaW50cyBvbmx5Lgor
ICAgICAgICAgICAgICAgIHNldChiYXNlRHN0LCBiYXNlKTsKKyAgICAgICAgICAgICAgICBzZXQo
dmFsdWVEc3QsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSB0cnkgdG8gaG9pc3Qgc3RydWN0dXJlIGNoZWNrcyBpbnRvIGhlcmUsIHRoZW4gd2UncmUg
Z3VhcmFudGVlZCB0aGF0IHRoZXkgd2lsbCBvY2N1cgorICAgICAgICAgICAgICAgIC8vICphZnRl
ciogd2UgaGF2ZSBhbHJlYWR5IHNldCB1cCB0aGUgdmFsdWVzIGZvciBPU1IuCisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGhlbiBkbyB0aGUgcmVhbCBTZXRMb2NhbHMuCiAg
ICAgICAgICAgICAgICAgc2V0KGJhc2VEc3QsIGJhc2UpOwogICAgICAgICAgICAgICAgIHNldCh2
YWx1ZURzdCwgdmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMTMyNTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
OSArNDUsOSBAQCBPU1JFeGl0OjpPU1JFeGl0KEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTCiAgICAg
LCBtX2tpbmQoa2luZCkKICAgICAsIG1fY291bnQoMCkKICAgICAsIG1fc3RyZWFtSW5kZXgoc3Ry
ZWFtSW5kZXgpCisgICAgLCBtX2xhc3RTZXRPcGVyYW5kKGppdC0+bV9sYXN0U2V0T3BlcmFuZCkK
IHsKICAgICBBU1NFUlQobV9jb2RlT3JpZ2luLmlzU2V0KCkpOwotICAgIG1fc2V0T3BlcmFuZHMu
YXBwZW5kKGppdC0+bV9sYXN0U2V0T3BlcmFuZCk7CiB9CiAKIGJvb2wgT1NSRXhpdDo6Y29uc2lk
ZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBD
b2RlQmxvY2sqIHByb2ZpbGVkQ29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmgJKHJldmlzaW9uIDEzMjU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsOSArMTEwLDkgQEAgc3Ry
dWN0IE9TUkV4aXQgewogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBtX3N0cmVhbUluZGV4Owot
ICAgIFZlY3RvcjxpbnQsIDE+IG1fc2V0T3BlcmFuZHM7CisgICAgaW50IG1fbGFzdFNldE9wZXJh
bmQ7CiAgICAgCi0gICAgVmVjdG9yPFJlZlB0cjxWYWx1ZVJlY292ZXJ5T3ZlcnJpZGU+LCAxPiBt
X3ZhbHVlUmVjb3ZlcnlPdmVycmlkZXM7CisgICAgUmVmUHRyPFZhbHVlUmVjb3ZlcnlPdmVycmlk
ZT4gbV92YWx1ZVJlY292ZXJ5T3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENv
ZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDEz
MjU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJf
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzIsOSArNzMyLDkgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIC8vIDE1KSBMb2FkIHRoZSByZXN1
bHQgb2YgdGhlIGxhc3QgYnl0ZWNvZGUgb3BlcmF0aW9uIGludG8gcmVnVDAuCiAgICAgCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGl0Lm1fc2V0T3BlcmFuZHMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVh
bFJlZ2lzdGVyKWV4aXQubV9zZXRPcGVyYW5kc1tpXSksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJl
Z2lzdGVyKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChW
aXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX3NldE9wZXJhbmRzW2ldKSwgR1BSSW5mbzo6Y2FjaGVkUmVz
dWx0UmVnaXN0ZXIyKTsKKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpIHsKKyAgICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5
SGVscGVyczo6cGF5bG9hZEZvcigoVmlydHVhbFJlZ2lzdGVyKWV4aXQubV9sYXN0U2V0T3BlcmFu
ZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9hZDMy
KEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRP
cGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIyKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gMTYpIEFkanVzdCB0aGUgY2FsbCBmcmFtZSBwb2ludGVyLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlz
aW9uIDEzMjU2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODEsOSArNjgxLDkgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIC8vIDE2KSBMb2FkIHRoZSBy
ZXN1bHQgb2YgdGhlIGxhc3QgYnl0ZWNvZGUgb3BlcmF0aW9uIGludG8gcmVnVDAuCiAgICAgCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGl0Lm1fc2V0T3BlcmFuZHMuc2l6ZSgpOyBpKysp
Ci0gICAgICAgIG1faml0LmxvYWQ2NChBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoKFZpcnR1
YWxSZWdpc3RlcilleGl0Lm1fc2V0T3BlcmFuZHNbaV0pLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRS
ZWdpc3Rlcik7Ci0KKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpCisgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwg
R1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOworICAgIAogICAgIC8vIDE3KSBBZGp1c3Qg
dGhlIGNhbGwgZnJhbWUgcG9pbnRlci4KICAgICAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTMyNTY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MCwxMCArNzAsMTEgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
T3BlcmFuZHM8VmFsdWVSZWNvdmVyeT4gb3BlcmFuZHM7CiAgICAgY29kZUJsb2NrLT52YXJpYWJs
ZUV2ZW50U3RyZWFtKCkucmVjb25zdHJ1Y3QoY29kZUJsb2NrLCBleGl0Lm1fY29kZU9yaWdpbiwg
Y29kZUJsb2NrLT5taW5pZmllZERGRygpLCBleGl0Lm1fc3RyZWFtSW5kZXgsIG9wZXJhbmRzKTsK
ICAgICAKLSAgICAvLyBUaGVyZSBtYXkgYmUgb3ZlcnJpZGVzLCBmb3IgZm9yd2FyZCBzcGVjdWxh
dGlvbnMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGl0Lm1fdmFsdWVSZWNvdmVyeU92
ZXJyaWRlcy5zaXplKCk7IGkrKykKLSAgICAgICAgb3BlcmFuZHMuc2V0T3BlcmFuZChleGl0Lm1f
dmFsdWVSZWNvdmVyeU92ZXJyaWRlc1tpXS0+b3BlcmFuZCwgZXhpdC5tX3ZhbHVlUmVjb3ZlcnlP
dmVycmlkZXNbaV0tPnJlY292ZXJ5KTsKLQorICAgIC8vIFRoZXJlIG1heSBiZSBhbiBvdmVycmlk
ZSwgZm9yIGZvcndhcmQgc3BlY3VsYXRpb25zLgorICAgIGlmICghIWV4aXQubV92YWx1ZVJlY292
ZXJ5T3ZlcnJpZGUpIHsKKyAgICAgICAgb3BlcmFuZHMuc2V0T3BlcmFuZCgKKyAgICAgICAgICAg
IGV4aXQubV92YWx1ZVJlY292ZXJ5T3ZlcnJpZGUtPm9wZXJhbmQsIGV4aXQubV92YWx1ZVJlY292
ZXJ5T3ZlcnJpZGUtPnJlY292ZXJ5KTsKKyAgICB9CiAgICAgCiAgICAgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAxMzI1NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDE5ICsxNTMsMzcgQEAgSnVtcFJlcGxh
Y2VtZW50V2F0Y2hwb2ludCogU3BlY3VsYXRpdmVKSQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQoY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNv
dmVyeSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKCF2YWx1ZVJlY292ZXJ5KSB7
CiAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHByZWNlZGluZyBub2RlIHdhcyBhIFNldExvY2Fs
IHdpdGggdGhlIHNhbWUgY29kZSBvcmlnaW4uCiAgICAgICAgIE5vZGUqIHNldExvY2FsID0gJmF0
KG1faml0LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KG1faW5kZXhJbkJsb2NrIC0gMSkp
OwotICAgICAgICBBU1NFUlQoc2V0TG9jYWwtPm9wKCkgPT0gU2V0TG9jYWwpOwotICAgICAgICBB
U1NFUlQoc2V0TG9jYWwtPmNvZGVPcmlnaW4gPT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmln
aW4pOworICAgICAgICBBU1NFUlRfVU5VU0VEKHNldExvY2FsLCBzZXRMb2NhbC0+b3AoKSA9PSBT
ZXRMb2NhbCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc2V0TG9jYWwsIHNldExvY2FsLT5jb2Rl
T3JpZ2luID09IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIEZpbmQgdGhlIG5leHQgbm9kZS4KKyAgICAgICAgdW5zaWduZWQgaW5kZXhJbkJsb2Nr
ID0gbV9pbmRleEluQmxvY2sgKyAxOworICAgICAgICBOb2RlKiBub2RlID0gMDsKKyAgICAgICAg
Zm9yICg7OykgeworICAgICAgICAgICAgaWYgKGluZGV4SW5CbG9jayA9PSBtX2ppdC5ncmFwaCgp
Lm1fYmxvY2tzW21fYmxvY2tdLT5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IGFuIGlubGluZSByZXR1cm4uIEdpdmUgdXAgYW5kIGRvIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9u
LiBUaGlzIGlzIHNhZmUKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGFuIGlubGluZSByZXR1
cm4gaGFzIGl0cyBvd24gYnl0ZWNvZGUgaW5kZXggYW5kIGl0J3MgYWx3YXlzIHNhZmUgdG8KKyAg
ICAgICAgICAgICAgICAvLyByZWV4ZWN1dGUgdGhhdCBieXRlY29kZS4KKyAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBKdW1wKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlID0gJmF0KG1faml0LmdyYXBoKCkubV9ibG9j
a3NbbV9ibG9ja10tPmF0KGluZGV4SW5CbG9jaykpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNv
ZGVPcmlnaW4gIT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBpbmRleEluQmxvY2srKzsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgQVNTRVJUKG5vZGUtPmNvZGVPcmlnaW4gIT0gYXQobV9jb21waWxlSW5kZXgp
LmNvZGVPcmlnaW4pOworICAgICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCkt
Pmxhc3RPU1JFeGl0KCk7CisgICAgICAgIGV4aXQubV9jb2RlT3JpZ2luID0gbm9kZS0+Y29kZU9y
aWdpbjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgogICAgIAogICAgIHVuc2lnbmVk
IHNldExvY2FsSW5kZXhJbkJsb2NrID0gbV9pbmRleEluQmxvY2sgKyAxOwotCi0gICAgT1NSRXhp
dCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5sYXN0T1NSRXhpdCgpOwotCisgICAgCiAgICAg
Tm9kZSogc2V0TG9jYWwgPSAmYXQobV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQo
c2V0TG9jYWxJbmRleEluQmxvY2spKTsKICAgICBib29sIGhhZEludDMyVG9Eb3VibGUgPSBmYWxz
ZTsKICAgICAKQEAgLTE3NSwxMyArMTkzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZl
cnRMYXN0T1NSRXhpdFQKICAgICB9CiAgICAgaWYgKHNldExvY2FsLT5vcCgpID09IEZsdXNoIHx8
IHNldExvY2FsLT5vcCgpID09IFBoYW50b20pCiAgICAgICAgIHNldExvY2FsID0gJmF0KG1faml0
LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KCsrc2V0TG9jYWxJbmRleEluQmxvY2spKTsK
LSAgICAKLSAgICBpZiAoISF2YWx1ZVJlY292ZXJ5KSB7Ci0gICAgICAgIGlmIChoYWRJbnQzMlRv
RG91YmxlKQotICAgICAgICAgICAgQVNTRVJUKGF0KHNldExvY2FsLT5jaGlsZDEoKSkuY2hpbGQx
KCkgPT0gbV9jb21waWxlSW5kZXgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlQo
c2V0TG9jYWwtPmNoaWxkMSgpID09IG1fY29tcGlsZUluZGV4KTsKLSAgICB9CisgICAgICAgIAor
ICAgIGlmIChoYWRJbnQzMlRvRG91YmxlKQorICAgICAgICBBU1NFUlQoYXQoc2V0TG9jYWwtPmNo
aWxkMSgpKS5jaGlsZDEoKSA9PSBtX2NvbXBpbGVJbmRleCk7CisgICAgZWxzZQorICAgICAgICBB
U1NFUlQoc2V0TG9jYWwtPmNoaWxkMSgpID09IG1fY29tcGlsZUluZGV4KTsKICAgICBBU1NFUlQo
c2V0TG9jYWwtPm9wKCkgPT0gU2V0TG9jYWwpOwogICAgIEFTU0VSVChzZXRMb2NhbC0+Y29kZU9y
aWdpbiA9PSBhdChtX2NvbXBpbGVJbmRleCkuY29kZU9yaWdpbik7CiAKQEAgLTE5MCwzNCArMjA2
LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRMYXN0T1NSRXhpdFQKICAgICAgICAg
Ly8gV2UncmUgYXQgYW4gaW5saW5lZCByZXR1cm4uIFVzZSBhIGJhY2t3YXJkIHNwZWN1bGF0aW9u
IGluc3RlYWQuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBleGl0Lm1fc2V0T3BlcmFu
ZHNbMF0gPSBzZXRMb2NhbC0+bG9jYWwoKTsKLSAgICB3aGlsZSAobmV4dE5vZGUtPmNvZGVPcmln
aW4gPT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pIHsKLSAgICAgICAgKytzZXRMb2Nh
bEluZGV4SW5CbG9jazsKLSAgICAgICAgTm9kZSogbmV4dFNldExvY2FsID0gbmV4dE5vZGU7Ci0g
ICAgICAgIGlmIChuZXh0U2V0TG9jYWwtPm9wKCkgPT0gSW50MzJUb0RvdWJsZSkKLSAgICAgICAg
ICAgIG5leHRTZXRMb2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5h
dCgrK3NldExvY2FsSW5kZXhJbkJsb2NrKSk7Ci0KLSAgICAgICAgaWYgKG5leHRTZXRMb2NhbC0+
b3AoKSA9PSBGbHVzaCB8fCBuZXh0U2V0TG9jYWwtPm9wKCkgPT0gUGhhbnRvbSkKLSAgICAgICAg
ICAgIG5leHRTZXRMb2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5h
dCgrK3NldExvY2FsSW5kZXhJbkJsb2NrKSk7Ci0KLSAgICAgICAgbmV4dE5vZGUgPSAmYXQobV9q
aXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQoc2V0TG9jYWxJbmRleEluQmxvY2sgKyAx
KSk7Ci0gICAgICAgIEFTU0VSVChuZXh0Tm9kZS0+b3AoKSAhPSBKdW1wIHx8IG5leHROb2RlLT5j
b2RlT3JpZ2luICE9IGF0KG1fY29tcGlsZUluZGV4KS5jb2RlT3JpZ2luKTsKLSAgICAgICAgQVNT
RVJUKG5leHRTZXRMb2NhbC0+b3AoKSA9PSBTZXRMb2NhbCk7Ci0gICAgICAgIGV4aXQubV9zZXRP
cGVyYW5kcy5hcHBlbmQobmV4dFNldExvY2FsLT5sb2NhbCgpKTsKLSAgICB9Ci0KICAgICBBU1NF
UlQobmV4dE5vZGUtPmNvZGVPcmlnaW4gIT0gYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4p
OwotCisgICAgICAgIAorICAgIE9TUkV4aXQmIGV4aXQgPSBtX2ppdC5jb2RlQmxvY2soKS0+bGFz
dE9TUkV4aXQoKTsKICAgICBleGl0Lm1fY29kZU9yaWdpbiA9IG5leHROb2RlLT5jb2RlT3JpZ2lu
OwogICAgICAgICAKLSAgICBpZiAoIXZhbHVlUmVjb3ZlcnkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEFTU0VSVChleGl0Lm1fc2V0T3BlcmFuZHMuc2l6ZSgpID09IDEpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZXhpdC5tX3NldE9wZXJhbmRzLnNpemUoKTsgaSsrKQotICAgICAgICBl
eGl0Lm1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlcy5hcHBlbmQoYWRvcHRSZWYobmV3IFZhbHVlUmVj
b3ZlcnlPdmVycmlkZShleGl0Lm1fc2V0T3BlcmFuZHNbaV0sIHZhbHVlUmVjb3ZlcnkpKSk7Ci0K
KyAgICBleGl0Lm1fbGFzdFNldE9wZXJhbmQgPSBzZXRMb2NhbC0+bG9jYWwoKTsKKyAgICBleGl0
Lm1fdmFsdWVSZWNvdmVyeU92ZXJyaWRlID0gYWRvcHRSZWYoCisgICAgICAgIG5ldyBWYWx1ZVJl
Y292ZXJ5T3ZlcnJpZGUoc2V0TG9jYWwtPmxvY2FsKCksIHZhbHVlUmVjb3ZlcnkpKTsKIH0KIAog
SnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCogU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxh
dGlvbldhdGNocG9pbnQoRXhpdEtpbmQga2luZCkK
</data>
<flag name="review"
          id="184785"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>