<?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>65438</bug_id>
          
          <creation_ts>2011-07-31 15:21:54 -0700</creation_ts>
          <short_desc>JSC GC is far too conservative about growing the heap size, particularly on desktop platforms</short_desc>
          <delta_ts>2011-08-03 04:17:18 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65605</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>oliver</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444464</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-31 15:21:54 -0700</bug_when>
    <thetext>The JSC GC tried to always bring the heap size down to 512 KB, or 2x the amount of used memory (excluding external fragmentation).  But this leads to some needless GC work, particularly since (a) the GC has some large constant-time work to do like root scanning, and (b) restricting the heap to 512 KB browser-wide is probably unnecessary.  Increasing these limits - within reason - should improve performance while having a negligible effect on overall memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444465</commentid>
    <comment_count>1</comment_count>
      <attachid>102467</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-31 15:25:18 -0700</bug_when>
    <thetext>Created attachment 102467
the patch

This is a 1.6% win on SunSpider and a 5.5% win on V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444467</commentid>
    <comment_count>2</comment_count>
      <attachid>102467</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-07-31 15:42:46 -0700</bug_when>
    <thetext>Comment on attachment 102467
the patch

I don&apos;t like the mac-specificness of this.  I also don&apos;t really like the magic numbers (2 * .., 3 * ...) and the compile time constant for criticalBytes could be problematic on systems with less physical ram</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444470</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-31 15:52:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 102467 [details])
&gt; I don&apos;t like the mac-specificness of this.  I also don&apos;t really like the magic numbers (2 * .., 3 * ...) and the compile time constant for criticalBytes could be problematic on systems with less physical ram

2 * heapsize was there before.  Would you recommend changing these to be named constants?

As for the 128MB: before, if we had a 128MB heap we would have set the watermark at 256MB.  Now we&apos;ll set it at 384MB.  What do you think of this approach: base the GC heap size growth factor on the FastMalloc reserved pages count?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444959</commentid>
    <comment_count>4</comment_count>
      <attachid>102583</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-01 16:04:42 -0700</bug_when>
    <thetext>Created attachment 102583
the patch

This patch is a work-in-progress but it would be a good thing for others to run some tests on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444998</commentid>
    <comment_count>5</comment_count>
      <attachid>102593</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-01 17:00:00 -0700</bug_when>
    <thetext>Created attachment 102593
the patch

This is a 4.1% speed-up in SunSpider and a 7.5% speed-up on V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444999</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 17:03:25 -0700</bug_when>
    <thetext>Attachment 102593 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/heap/Heap.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/heap/Heap.cpp:47:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445001</commentid>
    <comment_count>7</comment_count>
      <attachid>102593</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-01 17:04:24 -0700</bug_when>
    <thetext>Comment on attachment 102593
the patch

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

Would be good if steph could run tests on this, but basically looks good.

&gt; Source/JavaScriptCore/ChangeLog:7
&gt; +2011-07-31  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +        
&gt; +        * heap/Heap.cpp:
&gt; +        (JSC::Heap::collect):
&gt; +

Accidental change log entry?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445002</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-01 17:05:28 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 102593 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102593&amp;action=review
&gt; 
&gt; Would be good if steph could run tests on this, but basically looks good.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:7
&gt; &gt; +2011-07-31  Filip Pizlo  &lt;fpizlo@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +        
&gt; &gt; +        * heap/Heap.cpp:
&gt; &gt; +        (JSC::Heap::collect):
&gt; &gt; +
&gt; 
&gt; Accidental change log entry?

Ooops!  Thanks for catching that.  I&apos;ll repost a new patch shortly with fixes to the style as well...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445013</commentid>
    <comment_count>9</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-01 17:18:55 -0700</bug_when>
    <thetext>I think that the JSGlobalData are exposing too much state here (and already are), I think we should really just pass an enum value indicating whether this global data is for use by WebCore&apos;s main thread, a Worker, the API shared context, or an API allocated context.  The policies used for heap sizes &amp; recursion limits should be encapsulated within JSC.

But I&apos;m not particularly bothered about this right now since we already have ThreadStackType to clean up at some point - we can always revisit this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445018</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-01 17:21:45 -0700</bug_when>
    <thetext>Maciej had some comments on irc, pasting them here - I think his key suggestion is that LARGE_HEAP should be the default, and platforms should opt in to SMALL_HEAP.

[12:05am] othermaciej: olliej_: do we have a &quot;low memory&quot; ifdef of some kind?
[12:05am] othermaciej: would be much better to trigger small vs large heap off of that instead of MAC
[12:05am] othermaciej: it would also be useful to know the memory cost of this patch on something like membuster
[12:05am] gbarra: Given the performance constraints of our current GC, the idea that if a page rapidly generates 16Mb of objects then our heap usage may go up by 16Mb seems reasonable to me.
[12:05am] gbarra: othermaciej: *nod.  I can&apos;t think of one.
[12:06am] othermaciej: in fact LARGE_HEAP is presumably the normal case so it should be SMALL_HEAP that should be the specialized case, since it is dependent on a temporary limitation of some platforms
[12:07am] gbarra: othermaciej: seems reasonable.  I think Filips thought process was that there are more embedded CPUs than there are desktop CPUs, but I think you have a good point.
[12:08am] othermaciej: it&apos;s really not CPU-based, it is platform based
[12:08am] gbarra: *nod.
[12:08am] othermaciej: and most target platforms are not embedded
[12:08am] gbarra: true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445397</commentid>
    <comment_count>11</comment_count>
      <attachid>102673</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-02 12:00:47 -0700</bug_when>
    <thetext>Created attachment 102673
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445496</commentid>
    <comment_count>12</comment_count>
      <attachid>102673</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 13:41:26 -0700</bug_when>
    <thetext>Comment on attachment 102673
the patch

Clearing flags on attachment: 102673

Committed r92224: &lt;http://trac.webkit.org/changeset/92224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445497</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 13:41:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102467</attachid>
            <date>2011-07-31 15:25:18 -0700</date>
            <delta_ts>2011-08-01 16:04:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>biggerheap_patch_1.diff</filename>
            <type>text/plain</type>
            <size>2098</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIwOTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDctMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgR0MgaXMgZmFyIHRvbyBjb25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0aGUgaGVhcCBzaXpl
LCBwYXJ0aWN1bGFybHkKKyAgICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGUgbWluaW11bSBo
ZWFwIHNpemUgaXMgbm93IDE2TUIgb24gdGhlIE1hYywgYW5kIHVudGlsIGhlYXAgdXNhZ2UKKyAg
ICAgICAgcmVhY2hlcyAxMjhNQiB3ZSBncm93IGl0IGF0IDN4IHRoZSBhbW91bnQgb2YgbWVtb3J5
LiAgQWJvdmUgMTI4TUIKKyAgICAgICAgd2UgcmV2ZXJ0IHRvIDJ4LiAgVGhpcyBpcyBhIDEuNiUg
d2luIG9uIFN1blNwaWRlciBhbmQgYSA1LjUlIHdpbgorICAgICAgICBvbiBWOC4KKworICAgICAg
ICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorCiAyMDEx
LTA3LTMxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIG5v
bi1zcGVjdWxhdGl2ZSBKSVQgZG9lcyBub3Qgb3B0aW1pemUgUHV0QnlWYWwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiA5MjA4NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIHsgCiAKKyNpZiBQTEFURk9STShNQUMpCitj
b25zdCBzaXplX3QgbWluQnl0ZXNQZXJDeWNsZSA9IDE2ICogMTAyNCAqIDEwMjQ7Citjb25zdCBz
aXplX3QgY3JpdGljYWxCeXRlcyA9IDEyOCAqIDEwMjQgKiAxMDI0OworI2Vsc2UKIGNvbnN0IHNp
emVfdCBtaW5CeXRlc1BlckN5Y2xlID0gNTEyICogMTAyNDsKKyNlbmRpZgogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWYWxpZFNoYXJlZEluc3RhbmNlVGhyZWFkU3RhdGUoKQogewpAQCAtNjUxLDcg
KzY1NiwxNiBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAg
Ly8gd2F0ZXIgbWFyayB0byBiZSBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0
aGUgaGVhcC4gVGhlIGV4YWN0CiAgICAgLy8gcHJvcG9ydGlvbiBpcyBhIGJpdCBhcmJpdHJhcnku
IEEgMlggbXVsdGlwbGllciBnaXZlcyBhIDE6MSAoaGVhcCBzaXplIDoKICAgICAvLyBuZXcgYnl0
ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29yayB3ZWxsIGluIGJlbmNo
bWFya3MuCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHNpemVfdCBjdXJyZW50U2l6ZSA9IHNpemUo
KTsKKyAgICBzaXplX3QgcHJvcG9ydGlvbmFsQnl0ZXM7CisgICAgaWYgKGN1cnJlbnRTaXplIDwg
Y3JpdGljYWxCeXRlcykKKyAgICAgICAgcHJvcG9ydGlvbmFsQnl0ZXMgPSAzICogc2l6ZSgpOwor
ICAgIGVsc2UKKyAgICAgICAgcHJvcG9ydGlvbmFsQnl0ZXMgPSAyICogc2l6ZSgpOworI2Vsc2UK
ICAgICBzaXplX3QgcHJvcG9ydGlvbmFsQnl0ZXMgPSAyICogc2l6ZSgpOworI2VuZGlmCiAgICAg
bV9uZXdTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbWluQnl0
ZXNQZXJDeWNsZSkpOwogCiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102583</attachid>
            <date>2011-08-01 16:04:42 -0700</date>
            <delta_ts>2011-08-01 17:00:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>biggerheap_patch_2.diff</filename>
            <type>text/plain</type>
            <size>1171</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIxNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDctMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgR0MgaXMgZmFyIHRvbyBjb25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0aGUgaGVhcCBzaXpl
LCBwYXJ0aWN1bGFybHkKKyAgICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGUgbWluaW11bSBo
ZWFwIHNpemUgaXMgbm93IDE2TUIgb24gdGhlIE1hYy4KKworICAgICAgICAqIGhlYXAvSGVhcC5j
cHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorCiAyMDExLTA4LTAxICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTIwOTIpOiBC
dWlsZCBmYWlscyBvbiA2NCBiaXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiA5MjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFt
ZXNwYWNlIHsgCiAKKyNpZiBQTEFURk9STShNQUMpCitjb25zdCBzaXplX3QgbWluQnl0ZXNQZXJD
eWNsZSA9IDE2ICogMTAyNCAqIDEwMjQ7CisjZWxzZQogY29uc3Qgc2l6ZV90IG1pbkJ5dGVzUGVy
Q3ljbGUgPSA1MTIgKiAxMDI0OworI2VuZGlmCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlk
U2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZSgpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102593</attachid>
            <date>2011-08-01 17:00:00 -0700</date>
            <delta_ts>2011-08-02 12:00:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>biggerheap_patch_3.diff</filename>
            <type>text/plain</type>
            <size>12661</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIxNTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDctMzEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgICogaGVhcC9IZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisKKzIwMTEtMDgtMDEgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0MgR0MgaXMgZmFyIHRvbyBj
b25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0aGUgaGVhcCBzaXplLCBwYXJ0aWN1bGFybHkKKyAg
ICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIG1pbmltdW0gaGVhcCBzaXplIGlzIG5vdyAxNk1CIGluc3Rl
YWQgb2YgNTEyS0IsIHByb3ZpZGVkIGFsbCBvZiB0aGUKKyAgICAgICAgZm9sbG93aW5nIGFyZSB0
cnVlOgorICAgICAgICBhKSBFTkFCTEUoTEFSR0VfSEVBUCkgaXMgc2V0LCB3aGljaCBjdXJyZW50
bHkgb25seSBoYXBwZW5zIG9uCisgICAgICAgICAgIFBMQVRGT1JNKE1BQyksIGJ1dCBjb3VsZCBy
ZWFzb25hYmx5IGhhcHBlbiBvbiBhbnkgcGxhdGZvcm0gdGhhdCBpcworICAgICAgICAgICBrbm93
biB0byBoYXZlIGEgZGVjZW50IGFtb3VudCBvZiBSQU0uCisgICAgICAgIGIpIEpTR2xvYmFsRGF0
YSBpcyBpbml0aWFsaXplZCB3aXRoIEhlYXBTaXplID0gTGFyZ2VIZWFwLCB3aGljaAorICAgICAg
ICAgICBjdXJyZW50bHkgb25seSBoYXBwZW5zIHdoZW4gaXQncyB0aGUgSlNET01XaW5kb3dCYXNl
IGluIFdlYkNvcmUgb3IKKyAgICAgICAgICAgaW4gdGhlIGpzYyBjb21tYW5kLWxpbmUgdG9vbC4K
KyAgICAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSA0LjElIHNwZWVkLXVwIG9uIFN1blNwaWRl
ci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBoZWFwL0hlYXAu
Y3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29s
bGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNoYXJlZEluc3RhbmNlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDExLTA3
LTMxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAJKHJldmlzaW9uIDkyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIF9fWk4zSlND
MTJEYXRlSW5zdGFuY2U2c19pbmZvRQogX19aTjNKU0MxMkRhdGVJbnN0YW5jZUMxRVBOU185RXhl
Y1N0YXRlRVBOU185U3RydWN0dXJlRWQKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVudERh
dGFEMkV2CiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTFqc0FycmF5VlB0ckUKLV9fWk4zSlNDMTJK
U0dsb2JhbERhdGExMmNyZWF0ZUxlYWtlZEVOU18xNVRocmVhZFN0YWNrVHlwZUUKK19fWk4zSlND
MTJKU0dsb2JhbERhdGExMmNyZWF0ZUxlYWtlZEVOU18xNVRocmVhZFN0YWNrVHlwZUVOU184SGVh
cFNpemVFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJqc1N0cmluZ1ZQdHJFCiBfX1pOM0pTQzEy
SlNHbG9iYWxEYXRhMTJzdG9wU2FtcGxpbmdFdgogX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEzc3Rh
cnRTYW1wbGluZ0V2CkBAIC0xMzcsNyArMTM3LDcgQEAgX19aTjNKU0MxMkpTR2xvYmFsRGF0YTIy
Y2xlYXJCdWlsdGluU3RydQogI2lmbmRlZiBOREVCVUcKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGEy
M3JlbGVhc2VFeGVjdXRhYmxlTWVtb3J5RXYKICNlbmRpZgotX19aTjNKU0MxMkpTR2xvYmFsRGF0
YTZjcmVhdGVFTlNfMTVUaHJlYWRTdGFja1R5cGVFCitfX1pOM0pTQzEySlNHbG9iYWxEYXRhNmNy
ZWF0ZUVOU18xNVRocmVhZFN0YWNrVHlwZUVOU184SGVhcFNpemVFCiBfX1pOM0pTQzEySlNHbG9i
YWxEYXRhRDFFdgogX19aTjNKU0MxMlJlZ0V4cE9iamVjdDZzX2luZm9FCiBfX1pOM0pTQzEyUmVn
RXhwT2JqZWN0QzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFUE5TXzlTdHJ1Y3R1cmVFUE5TXzZSZWdF
eHBFCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gOTIxNDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAvLyBXZSBjYW4ndCB1c2UgZGVz
dHJ1Y3RvcnMgaW4gdGhlIGZvbGxvd2luZyBjb2RlIGJlY2F1c2UgaXQgdXNlcyBXaW5kb3dzCiAg
ICAgLy8gU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcKICAgICBpbnQgcmVzID0gMDsKLSAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRT
dGFja1R5cGVMYXJnZSkubGVha1JlZigpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
IEpTR2xvYmFsRGF0YTo6Y3JlYXRlKFRocmVhZFN0YWNrVHlwZUxhcmdlLCBMYXJnZUhlYXApLmxl
YWtSZWYoKTsKICAgICBUUlkKICAgICAgICAgcmVzID0ganNjbWFpbihhcmdjLCBhcmd2LCBnbG9i
YWxEYXRhKTsKICAgICBFWENFUFQocmVzID0gMykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiA5MjE0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0MiwxOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogbmFtZXNwYWNlIHsgCiAKLWNvbnN0IHNpemVfdCBtaW5CeXRlc1BlckN5Y2xlID0gNTEy
ICogMTAyNDsKK3N0YXRpYyBzaXplX3QgaGVhcFNpemVGb3JIaW50KEhlYXBTaXplIGhlYXBTaXpl
KSB7CisjaWYgRU5BQkxFKExBUkdFX0hFQVApCisgICAgaWYgKGhlYXBTaXplID09IExhcmdlSGVh
cCkKKyAgICAgICAgcmV0dXJuIDE2ICogMTAyNCAqIDEwMjQ7CisgICAgZWxzZSB7CisgICAgICAg
IEFTU0VSVChoZWFwU2l6ZSA9PSBTbWFsbEhlYXApOworICAgICAgICByZXR1cm4gNTEyICogMTAy
NDsKKyAgICB9CisjZWxzZQorICAgIHJldHVybiA1MTIgKiAxMDI0OworI2VuZGlmCit9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkU2hhcmVkSW5zdGFuY2VUaHJlYWRTdGF0ZSgpCiB7CkBA
IC0yMzAsOCArMjQxLDEwIEBAIGlubGluZSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gUmVjb3Jk
VHkKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLUhlYXA6OkhlYXAoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQotICAgIDogbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3BlcmF0aW9uKQor
SGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQor
ICAgIDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKKyAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShoZWFw
U2l6ZUZvckhpbnQoaGVhcFNpemUpKQorICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3Bl
cmF0aW9uKQogICAgICwgbV9uZXdTcGFjZSh0aGlzKQogICAgICwgbV9leHRyYUNvc3QoMCkKICAg
ICAsIG1fbWFya0xpc3RTZXQoMCkKQEAgLTI0Miw3ICsyNTUsNyBAQCBIZWFwOjpIZWFwKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKICAgICAsIG1faXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAg
ICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiB7Ci0gICAgbV9uZXdTcGFjZS5zZXRIaWdoV2F0
ZXJNYXJrKG1pbkJ5dGVzUGVyQ3ljbGUpOworICAgIG1fbmV3U3BhY2Uuc2V0SGlnaFdhdGVyTWFy
ayhtX21pbkJ5dGVzUGVyQ3ljbGUpOwogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogI2lm
IEVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCiAgICAgbV9udW1iZXJPZkZyZWVCbG9ja3MgPSAw
OwpAQCAtNjUyLDcgKzY2NSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2Vl
cFRvZ2cKICAgICAvLyBwcm9wb3J0aW9uIGlzIGEgYml0IGFyYml0cmFyeS4gQSAyWCBtdWx0aXBs
aWVyIGdpdmVzIGEgMToxIChoZWFwIHNpemUgOgogICAgIC8vIG5ldyBieXRlcyBhbGxvY2F0ZWQp
IHByb3BvcnRpb24sIGFuZCBzZWVtcyB0byB3b3JrIHdlbGwgaW4gYmVuY2htYXJrcy4KICAgICBz
aXplX3QgcHJvcG9ydGlvbmFsQnl0ZXMgPSAyICogc2l6ZSgpOwotICAgIG1fbmV3U3BhY2Uuc2V0
SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1pbkJ5dGVzUGVyQ3ljbGUpKTsK
KyAgICBtX25ld1NwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBt
X21pbkJ5dGVzUGVyQ3ljbGUpKTsKIAogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiA5MjE0NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGVudW0gT3BlcmF0aW9uSW5Qcm9ncmVzcyB7IE5v
T3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBDb2xsZWN0aW9uIH07CiAgICAgCisgICAgLy8gSGVhcCBz
aXplIGhpbnQuCisgICAgZW51bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07Cisg
ICAgCiAgICAgY2xhc3MgSGVhcCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhlYXAp
OwogICAgIHB1YmxpYzoKQEAgLTY3LDcgKzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHdyaXRlQmFycmllcihjb25zdCBKU0NlbGwqLCBKU1ZhbHVlKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTQ2VsbCopOwogCi0g
ICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKik7CisgICAgICAgIEhlYXAoSlNHbG9iYWxEYXRhKiwg
SGVhcFNpemUpOwogICAgICAgICB+SGVhcCgpOwogICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8g
SlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKQEAgLTE1
OCw2ICsxNjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQqIGJsb2Nr
RnJlZWluZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKICNlbmRpZgogCisgICAgICAgIGNv
bnN0IEhlYXBTaXplIG1faGVhcFNpemU7CisgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5dGVz
UGVyQ3ljbGU7CisgICAgICAgIAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzczsKICAgICAgICAgTmV3U3BhY2UgbV9uZXdTcGFjZTsKICAgICAgICAgTWFy
a2VkQmxvY2tTZXQgbV9ibG9ja3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDkyMTQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCkKICAgICBKU0dsb2Jh
bERhdGE6OmpzRnVuY3Rpb25WUHRyID0ganNGdW5jdGlvbi0+dnB0cigpOwogfQogCi1KU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFk
U3RhY2tUeXBlIHRocmVhZFN0YWNrVHlwZSkKK0pTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tU
eXBlLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICA6IGdsb2JhbERhdGFUeXBlKGdsb2JhbERhdGFU
eXBlKQogICAgICwgY2xpZW50RGF0YSgwKQogICAgICwgYXJyYXlDb25zdHJ1Y3RvclRhYmxlKGZh
c3ROZXc8SGFzaFRhYmxlPihKU0M6OmFycmF5Q29uc3RydWN0b3JUYWJsZSkpCkBAIC0xOTAsNyAr
MTkwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwg
bGV4ZXIobmV3IExleGVyKHRoaXMpKQogICAgICwgcGFyc2VyKG5ldyBQYXJzZXIpCiAgICAgLCBp
bnRlcnByZXRlcigwKQotICAgICwgaGVhcCh0aGlzKQorICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6
ZSkKICAgICAsIGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKICAgICAsIGNhY2hlZFVUQ09mZnNldChz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKQogICAgICwgbWF4UmVlbnRy
eURlcHRoKHRocmVhZFN0YWNrVHlwZSA9PSBUaHJlYWRTdGFja1R5cGVTbWFsbCA/IE1heFNtYWxs
VGhyZWFkUmVlbnRyeURlcHRoIDogTWF4TGFyZ2VUaHJlYWRSZWVudHJ5RGVwdGgpCkBAIC0zNTcs
MTkgKzM1NywxOSBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogI2VuZGlmCiB9CiAK
LVBhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUNvbnRleHRHcm91
cChUaHJlYWRTdGFja1R5cGUgdHlwZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2Jh
bERhdGE6OmNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUg
aGVhcFNpemUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEoQVBJQ29u
dGV4dEdyb3VwLCB0eXBlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0dsb2JhbERhdGEo
QVBJQ29udGV4dEdyb3VwLCB0eXBlLCBoZWFwU2l6ZSkpOwogfQogCi1QYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlIHR5cGUpCitQYXNz
UmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBl
IHR5cGUsIEhlYXBTaXplIGhlYXBTaXplKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNH
bG9iYWxEYXRhKERlZmF1bHQsIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xv
YmFsRGF0YShEZWZhdWx0LCB0eXBlLCBoZWFwU2l6ZSkpOwogfQogCi1QYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlIHR5cGUp
CitQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQoVGhy
ZWFkU3RhY2tUeXBlIHR5cGUsIEhlYXBTaXplIGhlYXBTaXplKQogewotICAgIHJldHVybiBjcmVh
dGUodHlwZSk7CisgICAgcmV0dXJuIGNyZWF0ZSh0eXBlLCBoZWFwU2l6ZSk7CiB9CiAKIGJvb2wg
SlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZUV4aXN0cygpCkBAIC0zODEsNyArMzgxLDcgQEAg
SlNHbG9iYWxEYXRhJiBKU0dsb2JhbERhdGE6OnNoYXJlZEluc3RhbgogewogICAgIEpTR2xvYmFs
RGF0YSomIGluc3RhbmNlID0gc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgIGlmICghaW5z
dGFuY2UpIHsKLSAgICAgICAgaW5zdGFuY2UgPSBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQ
SVNoYXJlZCwgVGhyZWFkU3RhY2tUeXBlU21hbGwpKS5sZWFrUmVmKCk7CisgICAgICAgIGluc3Rh
bmNlID0gYWRvcHRSZWYobmV3IEpTR2xvYmFsRGF0YShBUElTaGFyZWQsIFRocmVhZFN0YWNrVHlw
ZVNtYWxsLCBTbWFsbEhlYXApKS5sZWFrUmVmKCk7CiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9U
SFJFQURTKQogICAgICAgICBpbnN0YW5jZS0+bWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMo
KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgJKHJldmlzaW9uIDkyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgLy8gdGhhbiB0aGUgb2xkIHNpbmdsZXRvbiBBUElTaGFyZWQg
SlNHbG9iYWxEYXRhIGNyZWF0ZWQgZm9yIHVzZSBieQogICAgICAgICAvLyB0aGUgb3JpZ2luYWwg
QVBJLgogICAgICAgICBlbnVtIEdsb2JhbERhdGFUeXBlIHsgRGVmYXVsdCwgQVBJQ29udGV4dEdy
b3VwLCBBUElTaGFyZWQgfTsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IENsaWVudERhdGEg
ewogICAgICAgICAgICAgdmlydHVhbCB+Q2xpZW50RGF0YSgpID0gMDsKICAgICAgICAgfTsKQEAg
LTEyMyw5ICsxMjMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgc2hh
cmVkSW5zdGFuY2VFeGlzdHMoKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSYgc2hhcmVk
SW5zdGFuY2UoKTsKIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNy
ZWF0ZShUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2Jh
bERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUNvbnRleHRHcm91cChUaHJlYWRTdGFja1R5cGUp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZShUaHJlYWRT
dGFja1R5cGUsIEhlYXBTaXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SlNHbG9iYWxEYXRhPiBjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9
IFNtYWxsSGVhcCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3Jl
YXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOwog
ICAgICAgICB+SlNHbG9iYWxEYXRhKCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RIUkVB
RFMpCkBAIC0yODEsNyArMjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcmVs
ZWFzZUV4ZWN1dGFibGVNZW1vcnkoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKKyAgICAgICAgSlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAg
dm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRF
UlBSRVRFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9u
IDkyMTQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEyLDYgKzExMTIsMTQgQEAKICNkZWZpbmUgRU5BQkxFX0xBWllfQkxPQ0tf
RlJFRUlORyAxCiAjZW5kaWYKIAorI2lmbmRlZiBFTkFCTEVfTEFSR0VfSEVBUAorI2lmIFBMQVRG
T1JNKE1BQykKKyNkZWZpbmUgRU5BQkxFX0xBUkdFX0hFQVAgMQorI2Vsc2UKKyNkZWZpbmUgRU5B
QkxFX0xBUkdFX0hFQVAgMAorI2VuZGlmCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9Q
QU5fU0NST0xMSU5HKSAmJiBPUyhXSU5ET1dTKQogI2RlZmluZSBFTkFCTEVfUEFOX1NDUk9MTElO
RyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTUyKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgt
MDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0MgR0MgaXMg
ZmFyIHRvbyBjb25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0aGUgaGVhcCBzaXplLCBwYXJ0aWN1
bGFybHkKKyAgICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLCB0aHVzIG5v
IG5ldyB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgIFBhc3MgdGhlIExhcmdlSGVhcCBoaW50IHRv
IEpTR2xvYmFsRGF0YSB3aGVuIGNyZWF0aW5nIHRoZSBKU0MgcnVudGltZQorICAgICAgICBpbnN0
YW5jZSBjb3JyZXNwb25kaW5nIHRvIG5vbi13b3JrZXIgSlMgY29kZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSk6CisKIDIwMTEtMDgtMDEgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2V2ZXJlIHNoYWRvdyByZXBh
aW50IGlzc3VlcyB3aXRoIFNWR1RleHQgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gOTIxNDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgSlNHbG9iYWxEYXRhKiBKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTRwogCiAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IDA7CiAgICAg
aWYgKCFnbG9iYWxEYXRhKSB7Ci0gICAgICAgIGdsb2JhbERhdGEgPSBKU0dsb2JhbERhdGE6OmNy
ZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGVMYXJnZSkucmVsZWFzZVJlZigpOworICAgICAgICBn
bG9iYWxEYXRhID0gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQoVGhyZWFkU3RhY2tUeXBlTGFy
Z2UsIExhcmdlSGVhcCkucmVsZWFzZVJlZigpOwogICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0
Q2hlY2tlci5zZXRUaW1lb3V0SW50ZXJ2YWwoMTAwMDApOyAvLyAxMCBzZWNvbmRzCiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBnbG9iYWxEYXRhLT5leGNsdXNpdmVUaHJlYWQgPSBjdXJyZW50VGhy
ZWFkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102673</attachid>
            <date>2011-08-02 12:00:47 -0700</date>
            <delta_ts>2011-08-02 13:41:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>biggerheap_patch_5.diff</filename>
            <type>text/plain</type>
            <size>12533</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIyMTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTEtMDgtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgR0MgaXMgZmFyIHRvbyBjb25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0aGUgaGVhcCBzaXpl
LCBwYXJ0aWN1bGFybHkKKyAgICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG1pbmltdW0gaGVhcCBzaXpl
IGlzIG5vdyAxNk1CIGluc3RlYWQgb2YgNTEyS0IsIHByb3ZpZGVkIGFsbCBvZiB0aGUKKyAgICAg
ICAgZm9sbG93aW5nIGFyZSB0cnVlOgorICAgICAgICBhKSBFTkFCTEUoTEFSR0VfSEVBUCkgaXMg
c2V0LCB3aGljaCBjdXJyZW50bHkgb25seSBoYXBwZW5zIG9uCisgICAgICAgICAgIHg4NiB0YXJn
ZXRzLCBidXQgY291bGQgcmVhc29uYWJseSBoYXBwZW4gb24gYW55IHBsYXRmb3JtIHRoYXQgaXMK
KyAgICAgICAgICAga25vd24gdG8gaGF2ZSBhIGRlY2VudCBhbW91bnQgb2YgUkFNLgorICAgICAg
ICBiKSBKU0dsb2JhbERhdGEgaXMgaW5pdGlhbGl6ZWQgd2l0aCBIZWFwU2l6ZSA9IExhcmdlSGVh
cCwgd2hpY2gKKyAgICAgICAgICAgY3VycmVudGx5IG9ubHkgaGFwcGVucyB3aGVuIGl0J3MgdGhl
IEpTRE9NV2luZG93QmFzZSBpbiBXZWJDb3JlIG9yCisgICAgICAgICAgIGluIHRoZSBqc2MgY29t
bWFuZC1saW5lIHRvb2wuCisgICAgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgNC4xJSBzcGVl
ZC11cCBvbiBTdW5TcGlkZXIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAg
ICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAq
IGpzYy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpjcmVhdGVDb250ZXh0R3JvdXApOgorICAgICAgICAoSlND
OjpKU0dsb2JhbERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6Y3Jl
YXRlTGVha2VkKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpzaGFyZWRJbnN0YW5jZSk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKwogMjAxMS0wOC0wMiAgSmVmZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW92ZSBXVEZfVVNFX0FWRk9VTkRBVElPTiBmcm9tIEphdmFTY3JpcHRDb3JlL3d0Zi9w
bGF0Zm9ybS5oIHRvIFdlYkNvcmUvY29uZmlnLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gOTIyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcg
QEAgX19aTjNKU0MxMkRhdGVJbnN0YW5jZTZzX2luZm9FCiBfX1pOM0pTQzEyRGF0ZUluc3RhbmNl
QzFFUE5TXzlFeGVjU3RhdGVFUE5TXzlTdHJ1Y3R1cmVFZAogX19aTjNKU0MxMkpTR2xvYmFsRGF0
YTEwQ2xpZW50RGF0YUQyRXYKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMWpzQXJyYXlWUHRyRQot
X19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyY3JlYXRlTGVha2VkRU5TXzE1VGhyZWFkU3RhY2tUeXBl
RQorX19aTjNKU0MxMkpTR2xvYmFsRGF0YTEyY3JlYXRlTGVha2VkRU5TXzE1VGhyZWFkU3RhY2tU
eXBlRU5TXzhIZWFwU2l6ZUUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMmpzU3RyaW5nVlB0ckUK
IF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMnN0b3BTYW1wbGluZ0V2CiBfX1pOM0pTQzEySlNHbG9i
YWxEYXRhMTNzdGFydFNhbXBsaW5nRXYKQEAgLTEzNyw3ICsxMzcsNyBAQCBfX1pOM0pTQzEySlNH
bG9iYWxEYXRhMjJjbGVhckJ1aWx0aW5TdHJ1CiAjaWZuZGVmIE5ERUJVRwogX19aTjNKU0MxMkpT
R2xvYmFsRGF0YTIzcmVsZWFzZUV4ZWN1dGFibGVNZW1vcnlFdgogI2VuZGlmCi1fX1pOM0pTQzEy
SlNHbG9iYWxEYXRhNmNyZWF0ZUVOU18xNVRocmVhZFN0YWNrVHlwZUUKK19fWk4zSlNDMTJKU0ds
b2JhbERhdGE2Y3JlYXRlRU5TXzE1VGhyZWFkU3RhY2tUeXBlRU5TXzhIZWFwU2l6ZUUKIF9fWk4z
SlNDMTJKU0dsb2JhbERhdGFEMUV2CiBfX1pOM0pTQzEyUmVnRXhwT2JqZWN0NnNfaW5mb0UKIF9f
Wk4zSlNDMTJSZWdFeHBPYmplY3RDMUVQTlNfMTRKU0dsb2JhbE9iamVjdEVQTlNfOVN0cnVjdHVy
ZUVQTlNfNlJlZ0V4cEUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5MjIxMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIs
NyArMzgyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIC8vIFdlIGNh
bid0IHVzZSBkZXN0cnVjdG9ycyBpbiB0aGUgZm9sbG93aW5nIGNvZGUgYmVjYXVzZSBpdCB1c2Vz
IFdpbmRvd3MKICAgICAvLyBTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5kbGluZwogICAgIGludCBy
ZXMgPSAwOwotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IEpTR2xvYmFsRGF0YTo6Y3Jl
YXRlKFRocmVhZFN0YWNrVHlwZUxhcmdlKS5sZWFrUmVmKCk7CisgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gSlNHbG9iYWxEYXRhOjpjcmVhdGUoVGhyZWFkU3RhY2tUeXBlTGFyZ2UsIExh
cmdlSGVhcCkubGVha1JlZigpOwogICAgIFRSWQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2Ms
IGFyZ3YsIGdsb2JhbERhdGEpOwogICAgIEVYQ0VQVChyZXMgPSAzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDkyMjEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDE1IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgeyAKIAotY29uc3Qgc2l6ZV90IG1pbkJ5dGVzUGVy
Q3ljbGUgPSA1MTIgKiAxMDI0Oworc3RhdGljIHNpemVfdCBoZWFwU2l6ZUZvckhpbnQoSGVhcFNp
emUgaGVhcFNpemUpCit7CisjaWYgRU5BQkxFKExBUkdFX0hFQVApCisgICAgaWYgKGhlYXBTaXpl
ID09IExhcmdlSGVhcCkKKyAgICAgICAgcmV0dXJuIDE2ICogMTAyNCAqIDEwMjQ7CisgICAgQVNT
RVJUKGhlYXBTaXplID09IFNtYWxsSGVhcCk7CisjZW5kaWYKKyAgICByZXR1cm4gNTEyICogMTAy
NDsKK30KIAogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRTaGFyZWRJbnN0YW5jZVRocmVhZFN0
YXRlKCkKIHsKQEAgLTIzMCw4ICsyMzgsMTAgQEAgaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50
U2V0PiBSZWNvcmRUeQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotSGVhcDo6SGVhcChK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCi0gICAgOiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MoTm9P
cGVyYXRpb24pCitIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhcFNpemUg
aGVhcFNpemUpCisgICAgOiBtX2hlYXBTaXplKGhlYXBTaXplKQorICAgICwgbV9taW5CeXRlc1Bl
ckN5Y2xlKGhlYXBTaXplRm9ySGludChoZWFwU2l6ZSkpCisgICAgLCBtX29wZXJhdGlvbkluUHJv
Z3Jlc3MoTm9PcGVyYXRpb24pCiAgICAgLCBtX25ld1NwYWNlKHRoaXMpCiAgICAgLCBtX2V4dHJh
Q29zdCgwKQogICAgICwgbV9tYXJrTGlzdFNldCgwKQpAQCAtMjQyLDcgKzI1Miw3IEBAIEhlYXA6
OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICwgbV9pc1NhZmVUb0NvbGxlY3Qo
ZmFsc2UpCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKIHsKLSAgICBtX25ld1NwYWNl
LnNldEhpZ2hXYXRlck1hcmsobWluQnl0ZXNQZXJDeWNsZSk7CisgICAgbV9uZXdTcGFjZS5zZXRI
aWdoV2F0ZXJNYXJrKG1fbWluQnl0ZXNQZXJDeWNsZSk7CiAgICAgKCptX2FjdGl2aXR5Q2FsbGJh
Y2spKCk7CiAjaWYgRU5BQkxFKExBWllfQkxPQ0tfRlJFRUlORykKICAgICBtX251bWJlck9mRnJl
ZUJsb2NrcyA9IDA7CkBAIC02NTIsNyArNjYyLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVw
VG9nZ2xlIHN3ZWVwVG9nZwogICAgIC8vIHByb3BvcnRpb24gaXMgYSBiaXQgYXJiaXRyYXJ5LiBB
IDJYIG11bHRpcGxpZXIgZ2l2ZXMgYSAxOjEgKGhlYXAgc2l6ZSA6CiAgICAgLy8gbmV3IGJ5dGVz
IGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsgd2VsbCBpbiBiZW5jaG1h
cmtzLgogICAgIHNpemVfdCBwcm9wb3J0aW9uYWxCeXRlcyA9IDIgKiBzaXplKCk7Ci0gICAgbV9u
ZXdTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbWluQnl0ZXNQ
ZXJDeWNsZSkpOworICAgIG1fbmV3U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlv
bmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogCiAgICAgSkFWQVNDUklQVENPUkVfR0Nf
RU5EKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDkyMjEw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw2ICs1Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgZW51bSBPcGVyYXRpb25JblBy
b2dyZXNzIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIENvbGxlY3Rpb24gfTsKICAgICAKKyAg
ICAvLyBIZWFwIHNpemUgaGludC4KKyAgICBlbnVtIEhlYXBTaXplIHsgU21hbGxIZWFwLCBMYXJn
ZUhlYXAgfTsKKyAgICAKICAgICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSGVhcCk7CiAgICAgcHVibGljOgpAQCAtNjcsNyArNzAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCosIEpTVmFs
dWUpOwogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiwgSlND
ZWxsKik7CiAKLSAgICAgICAgSGVhcChKU0dsb2JhbERhdGEqKTsKKyAgICAgICAgSGVhcChKU0ds
b2JhbERhdGEqLCBIZWFwU2l6ZSk7CiAgICAgICAgIH5IZWFwKCk7CiAgICAgICAgIHZvaWQgZGVz
dHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAo
KS4KIApAQCAtMTU4LDYgKzE2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dm9pZCogYmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGhlYXApOwogI2VuZGlmCiAK
KyAgICAgICAgY29uc3QgSGVhcFNpemUgbV9oZWFwU2l6ZTsKKyAgICAgICAgY29uc3Qgc2l6ZV90
IG1fbWluQnl0ZXNQZXJDeWNsZTsKKyAgICAgICAgCiAgICAgICAgIE9wZXJhdGlvbkluUHJvZ3Jl
c3MgbV9vcGVyYXRpb25JblByb2dyZXNzOwogICAgICAgICBOZXdTcGFjZSBtX25ld1NwYWNlOwog
ICAgICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gOTIyMTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKQog
ICAgIEpTR2xvYmFsRGF0YTo6anNGdW5jdGlvblZQdHIgPSBqc0Z1bmN0aW9uLT52cHRyKCk7CiB9
CiAKLUpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFU
eXBlLCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkU3RhY2tUeXBlKQorSlNHbG9iYWxEYXRhOjpKU0ds
b2JhbERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0
aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplIGhlYXBTaXplKQogICAgIDogZ2xvYmFsRGF0YVR5cGUo
Z2xvYmFsRGF0YVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCBhcnJheUNvbnN0cnVj
dG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKSkK
QEAgLTE5MCw3ICsxOTAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgLCBsZXhlcihuZXcgTGV4ZXIodGhpcykpCiAgICAgLCBwYXJzZXIobmV3IFBhcnNl
cikKICAgICAsIGludGVycHJldGVyKDApCi0gICAgLCBoZWFwKHRoaXMpCisgICAgLCBoZWFwKHRo
aXMsIGhlYXBTaXplKQogICAgICwgZHluYW1pY0dsb2JhbE9iamVjdCgwKQogICAgICwgY2FjaGVk
VVRDT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCiAgICAg
LCBtYXhSZWVudHJ5RGVwdGgodGhyZWFkU3RhY2tUeXBlID09IFRocmVhZFN0YWNrVHlwZVNtYWxs
ID8gTWF4U21hbGxUaHJlYWRSZWVudHJ5RGVwdGggOiBNYXhMYXJnZVRocmVhZFJlZW50cnlEZXB0
aCkKQEAgLTM1NywxOSArMzU3LDE5IEBAIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiAj
ZW5kaWYKIH0KIAotUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IEpTR2xvYmFsRGF0YTo6Y3JlYXRl
Q29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSB0eXBlKQorUGFzc1JlZlB0cjxKU0dsb2JhbERh
dGE+IEpTR2xvYmFsRGF0YTo6Y3JlYXRlQ29udGV4dEdyb3VwKFRocmVhZFN0YWNrVHlwZSB0eXBl
LCBIZWFwU2l6ZSBoZWFwU2l6ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTR2xvYmFs
RGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpT
R2xvYmFsRGF0YShBUElDb250ZXh0R3JvdXAsIHR5cGUsIGhlYXBTaXplKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJlYWRTdGFja1R5cGUg
dHlwZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZShUaHJl
YWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBKU0dsb2JhbERhdGEoRGVmYXVsdCwgdHlwZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSlNHbG9iYWxEYXRhKERlZmF1bHQsIHR5cGUsIGhlYXBTaXplKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0ZUxlYWtlZChUaHJlYWRTdGFj
a1R5cGUgdHlwZSkKK1Bhc3NSZWZQdHI8SlNHbG9iYWxEYXRhPiBKU0dsb2JhbERhdGE6OmNyZWF0
ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUgdHlwZSwgSGVhcFNpemUgaGVhcFNpemUpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh0eXBlKTsKKyAgICByZXR1cm4gY3JlYXRlKHR5cGUsIGhlYXBTaXplKTsK
IH0KIAogYm9vbCBKU0dsb2JhbERhdGE6OnNoYXJlZEluc3RhbmNlRXhpc3RzKCkKQEAgLTM4MSw3
ICszODEsNyBAQCBKU0dsb2JhbERhdGEmIEpTR2xvYmFsRGF0YTo6c2hhcmVkSW5zdGFuCiB7CiAg
ICAgSlNHbG9iYWxEYXRhKiYgaW5zdGFuY2UgPSBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAg
ICAgaWYgKCFpbnN0YW5jZSkgewotICAgICAgICBpbnN0YW5jZSA9IGFkb3B0UmVmKG5ldyBKU0ds
b2JhbERhdGEoQVBJU2hhcmVkLCBUaHJlYWRTdGFja1R5cGVTbWFsbCkpLmxlYWtSZWYoKTsKKyAg
ICAgICAgaW5zdGFuY2UgPSBhZG9wdFJlZihuZXcgSlNHbG9iYWxEYXRhKEFQSVNoYXJlZCwgVGhy
ZWFkU3RhY2tUeXBlU21hbGwsIFNtYWxsSGVhcCkpLmxlYWtSZWYoKTsKICNpZiBFTkFCTEUoSlND
X01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIGluc3RhbmNlLT5tYWtlVXNhYmxlRnJvbU11bHRp
cGxlVGhyZWFkcygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gOTIyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzEx
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyB0aGFuIHRoZSBvbGQgc2luZ2xldG9u
IEFQSVNoYXJlZCBKU0dsb2JhbERhdGEgY3JlYXRlZCBmb3IgdXNlIGJ5CiAgICAgICAgIC8vIHRo
ZSBvcmlnaW5hbCBBUEkuCiAgICAgICAgIGVudW0gR2xvYmFsRGF0YVR5cGUgeyBEZWZhdWx0LCBB
UElDb250ZXh0R3JvdXAsIEFQSVNoYXJlZCB9OwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3Qg
Q2xpZW50RGF0YSB7CiAgICAgICAgICAgICB2aXJ0dWFsIH5DbGllbnREYXRhKCkgPSAwOwogICAg
ICAgICB9OwpAQCAtMTIzLDkgKzEyMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgYm9vbCBzaGFyZWRJbnN0YW5jZUV4aXN0cygpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxE
YXRhJiBzaGFyZWRJbnN0YW5jZSgpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gY3JlYXRlKFRocmVhZFN0YWNrVHlwZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZSk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3JlYXRlQ29udGV4dEdyb3VwKFRocmVh
ZFN0YWNrVHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gY3Jl
YXRlKFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUgPSBTbWFsbEhlYXApOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0dsb2JhbERhdGE+IGNyZWF0ZUxlYWtlZChUaHJlYWRTdGFja1R5cGUs
IEhlYXBTaXplID0gU21hbGxIZWFwKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNHbG9i
YWxEYXRhPiBjcmVhdGVDb250ZXh0R3JvdXAoVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSA9IFNt
YWxsSGVhcCk7CiAgICAgICAgIH5KU0dsb2JhbERhdGEoKTsKIAogI2lmIEVOQUJMRShKU0NfTVVM
VElQTEVfVEhSRUFEUykKQEAgLTI4MSw3ICsyODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUpOworICAgICAg
ICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUp
OwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgp
OwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYg
RU5BQkxFKElOVEVSUFJFVEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAkocmV2aXNpb24gOTIyMTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMTIsNiArMTExMiwxNCBAQAogI2RlZmluZSBFTkFCTEVf
TEFaWV9CTE9DS19GUkVFSU5HIDEKICNlbmRpZgogCisjaWZuZGVmIEVOQUJMRV9MQVJHRV9IRUFQ
CisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyNkZWZpbmUgRU5BQkxFX0xBUkdFX0hFQVAg
MQorI2Vsc2UKKyNkZWZpbmUgRU5BQkxFX0xBUkdFX0hFQVAgMAorI2VuZGlmCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9QQU5fU0NST0xMSU5HKSAmJiBPUyhXSU5ET1dTKQogI2RlZmlu
ZSBFTkFCTEVfUEFOX1NDUk9MTElORyAxCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDkyMjEwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTEtMDgtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0MgR0MgaXMgZmFyIHRvbyBjb25zZXJ2YXRpdmUgYWJvdXQgZ3Jvd2luZyB0
aGUgaGVhcCBzaXplLCBwYXJ0aWN1bGFybHkKKyAgICAgICAgb24gZGVza3RvcCBwbGF0Zm9ybXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDM4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdl
IGluIGJlaGF2aW9yLCB0aHVzIG5vIG5ldyB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgIFBhc3Mg
dGhlIExhcmdlSGVhcCBoaW50IHRvIEpTR2xvYmFsRGF0YSB3aGVuIGNyZWF0aW5nIHRoZSBKU0Mg
cnVudGltZQorICAgICAgICBpbnN0YW5jZSBjb3JyZXNwb25kaW5nIHRvIG5vbi13b3JrZXIgSlMg
Y29kZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSk6CisKIDIw
MTEtMDgtMDIgIEplZmYgTWlsbGVyICA8amVmZm1AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUg
V1RGX1VTRV9BVkZPVU5EQVRJT04gZnJvbSBKYXZhU2NyaXB0Q29yZS93dGYvcGxhdGZvcm0uaCB0
byBXZWJDb3JlL2NvbmZpZy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDkyMjEwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcg
KzE3Miw3IEBAIEpTR2xvYmFsRGF0YSogSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0cKIAogICAg
IHN0YXRpYyBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAwOwogICAgIGlmICghZ2xvYmFsRGF0
YSkgewotICAgICAgICBnbG9iYWxEYXRhID0gSlNHbG9iYWxEYXRhOjpjcmVhdGVMZWFrZWQoVGhy
ZWFkU3RhY2tUeXBlTGFyZ2UpLnJlbGVhc2VSZWYoKTsKKyAgICAgICAgZ2xvYmFsRGF0YSA9IEpT
R2xvYmFsRGF0YTo6Y3JlYXRlTGVha2VkKFRocmVhZFN0YWNrVHlwZUxhcmdlLCBMYXJnZUhlYXAp
LnJlbGVhc2VSZWYoKTsKICAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc2V0VGlt
ZW91dEludGVydmFsKDEwMDAwKTsgLy8gMTAgc2Vjb25kcwogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgZ2xvYmFsRGF0YS0+ZXhjbHVzaXZlVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>