<?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>144609</bug_id>
          
          <creation_ts>2015-05-04 17:09:49 -0700</creation_ts>
          <short_desc>GC has trouble with pathologically large array allocations</short_desc>
          <delta_ts>2015-05-07 19:14:36 -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>144691</dependson>
          <blocked>144749</blocked>
    
    <blocked>144750</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1091617</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 17:09:49 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091618</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-04 17:10:13 -0700</bug_when>
    <thetext>Consider the following test, if you tweak the size so that we actually allocate the memory.  It causes linear heap growth.


function foo(x) {
    return new Array(x);
}

noInline(foo);

function test(size) {
    var result = foo(size);
    if (result.length != size)
        throw &quot;Error: bad result: &quot; + result;
    var sawThings = false;
    for (var s in result)
        sawThings = true;
    if (sawThings)
        throw &quot;Error: array is in bad state: &quot; + result;
    result[0] = &quot;42.5&quot;;
    if (result[0] != &quot;42.5&quot;)
        throw &quot;Error: array is in wierd state: &quot; + result;
}

for (var i = 0; i &lt; 100000; ++i) {
    test(1000000);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091985</commentid>
    <comment_count>2</comment_count>
      <attachid>252432</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-05 18:53:09 -0700</bug_when>
    <thetext>Created attachment 252432
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092012</commentid>
    <comment_count>3</comment_count>
      <attachid>252432</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-05 19:53:43 -0700</bug_when>
    <thetext>Comment on attachment 252432
the patch

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

r=me

&gt; Source/JavaScriptCore/tests/stress/new-largeish-contiguous-array-with-size.js:23
&gt; +        throw &quot;Error: array is in wierd state: &quot; + result;

I believe the correct spelling here is &quot;weird&quot;.  Can you fix this and the one in new-array-storage-array-with-size.js as well?

&gt; Source/JavaScriptCore/tests/stress/new-largeish-contiguous-array-with-size.js:28
&gt; +for (var i = 0; i &lt; 40000; ++i) {
&gt; +    test(50000);
&gt; +}

Please add a comment above this to indicate that if GC doesn&apos;t clean up adequately, then the heap can grow unreasonably large (in the order of 40000 * 50000 * 8), and would end up much larger than the 100M tested below.  While this purpose can be inferred, it is not clear.  I think a comment will make it explicit and help the reader see right away what the test is trying to check for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092023</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-05 20:41:14 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092062</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-05 22:59:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Landed in http://trac.webkit.org/changeset/183847

It caused assertions on the debug bots. Could you check it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092063</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-05 23:01:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Landed in http://trac.webkit.org/changeset/183847
&gt; 
&gt; It caused assertions on the debug bots. Could you check it?

See: https://bugs.webkit.org/show_bug.cgi?id=144667

Should be fixed in http://trac.webkit.org/changeset/183851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092105</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-06 00:45:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Landed in http://trac.webkit.org/changeset/183847
&gt; &gt; 
&gt; &gt; It caused assertions on the debug bots. Could you check it?
&gt; 
&gt; See: https://bugs.webkit.org/show_bug.cgi?id=144667
&gt; 
&gt; Should be fixed in http://trac.webkit.org/changeset/183851

Yes, it fixed the assertions, thanks.

But unfortunately the new test fails on 32 bit ARM Linux bots:

stress/new-largeish-contiguous-array-with-size.js.default: Exception: Error: heap too big before forced GC: 129308808
stress/new-largeish-contiguous-array-with-size.js.default: ERROR: Unexpected exit code: 3
FAIL: stress/new-largeish-contiguous-array-with-size.js.default

stress/new-largeish-contiguous-array-with-size.js.default: Exception: Error: heap too big before forced GC: 130977916
stress/new-largeish-contiguous-array-with-size.js.default: ERROR: Unexpected exit code: 3
FAIL: stress/new-largeish-contiguous-array-with-size.js.default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092115</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-06 01:43:38 -0700</bug_when>
    <thetext>And there are still 25-30 layout test assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092192</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-06 09:47:23 -0700</bug_when>
    <thetext>E.g. this one: &lt;https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Fworkers%2Fworker-gc2.html&gt;.

Rolling out (Csaba, why didn&apos;t you?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092194</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 09:48:23 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 144691</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092199</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-06 09:52:56 -0700</bug_when>
    <thetext>There are also assorted JSC test failures. Hard to tell if they are all caused by this patch, there was a lot of churn last night.

https://build.webkit.org/builders/Apple%20Yosemite%20Debug%20JSC%20%28Tests%29/builds/1241/steps/jscore-test/logs/stdio

https://build.webkit.org/builders/Apple%20Win%207%20Debug%20%28Tests%29/builds/66067/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092504</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-06 22:09:18 -0700</bug_when>
    <thetext>Man, this bug is turning out to be brutal.  It appears that an old gen block is revived into new space and then deleted.  But because we haven&apos;t done a full collection yet, our running total of blocks includes that block.  Hence the assertion failure.

All of this feels very wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092508</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-06 22:19:21 -0700</bug_when>
    <thetext>Aha!  We are resizing blocks.  This means that our count of the size of old space is wrong, because we will double-count: we will count both the block we deleted and the block we created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092568</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-07 04:32:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Rolling out (Csaba, why didn&apos;t you?)

I was the bad guy for too long and I was fed up with getting angry comments,
so I promised not to roll out others patches even if it broke the whole world.

Patch owners are responsible for their patches, they should respect the EWS
bubbles, watch the bots after landing. I won&apos;t argue with anybody and won&apos;t
ask anybody to respect the policies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092640</commentid>
    <comment_count>15</comment_count>
      <attachid>252599</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-07 10:46:58 -0700</bug_when>
    <thetext>Created attachment 252599
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092643</commentid>
    <comment_count>16</comment_count>
      <attachid>252599</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-07 10:55:44 -0700</bug_when>
    <thetext>Comment on attachment 252599
the patch

I&apos;m OK with this solution. But I also think we should just remove that immediate deallocation feature. That&apos;s just not how garbage collection works, and making it work that way some small percentage of the time doesn&apos;t strike me as valuable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092649</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-07 11:10:32 -0700</bug_when>
    <thetext>*** Bug 144677 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092652</commentid>
    <comment_count>18</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-07 11:14:55 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 252599 [details]
&gt; the patch
&gt; 
&gt; I&apos;m OK with this solution. But I also think we should just remove that
&gt; immediate deallocation feature. That&apos;s just not how garbage collection
&gt; works, and making it work that way some small percentage of the time doesn&apos;t
&gt; strike me as valuable.

I agree. Filed: https://bugs.webkit.org/show_bug.cgi?id=144750</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092990</commentid>
    <comment_count>19</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-07 19:14:36 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183974</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252432</attachid>
            <date>2015-05-05 18:53:09 -0700</date>
            <delta_ts>2015-05-07 10:46:58 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7714</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzODQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R0MgaGFzIHRyb3VibGUgd2l0aCBwYXRob2xvZ2ljYWxseSBsYXJnZSBhcnJheSBhbGxvY2F0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBoZWFw
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMpOiBNYWtl
IHRoaXMgY29kZSBsZXNzIGNvbmZ1c2luZy4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6Y29weUxhdGVyKTogVGhlIGVhcmx5
IHJldHVybiBmb3IgaXNPdmVyc2l6ZSgpIHdhcyB0aGUgYnVnLiBXZSBzdGlsbCBuZWVkIHRvIHJl
cG9ydCB0aGVzZSBieXRlcyBhcyBsaXZlLiBPdGhlcndpc2UgdGhlIEdDIGRvZXNuJ3Qga25vdyB0
aGF0IGl0IG93bnMgdGhpcyBtZW1vcnkuCisgICAgICAgICoganNjLmNwcDogQWRkIHNpemUgbWVh
c3VyaW5nIGhvb2tzIHRvIHdyaXRlIHRoZSBsYXJnZWlzaCB0ZXN0LgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbkdDQW5kU3dlZXApOgor
ICAgICAgICAoZnVuY3Rpb25GdWxsR0MpOgorICAgICAgICAoZnVuY3Rpb25FZGVuR0MpOgorICAg
ICAgICAoZnVuY3Rpb25IZWFwU2l6ZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1hcnJh
eS1zdG9yYWdlLWFycmF5LXdpdGgtc2l6ZS5qczogRml4IHRoaXMgc28gdGhhdCBpdCBhY3R1YWxs
eSBhbGxvY2F0ZXMgQXJyYXlTdG9yYWdlIGFycmF5cyBhbmQgdGVzdHMgdGhlIHRoaW5nIGl0IHdh
cyBzdXBwb3NlZCB0byB0ZXN0LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9uZXctbGFyZ2Vpc2gt
Y29udGlndW91cy1hcnJheS13aXRoLXNpemUuanM6IEFkZGVkLiBUaGlzIHRlc3RzIHdoYXQgdGhl
IG90aGVyIHRlc3QgYWNjaWRlbnRhbGx5IHN0YXJ0ZWQgdGVzdGluZywgYnV0IGRvZXMgc28gd2l0
aG91dCBydW5uaW5nIHlvdXIgc3lzdGVtIG91dCBvZiBtZW1vcnkuCisgICAgICAgIChmb28pOgor
ICAgICAgICAodGVzdCk6CisKIDIwMTUtMDUtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBGVEwgU3dpdGNoU3RyaW5nIHNsb3cgY2FzZSBjcmVhdGVzIGR1cGxp
Y2F0ZSBzd2l0Y2ggY2FzZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAxODM4
MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDQ3LDYgKzQ0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRTd2VlcChF
eGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
RnVsbEdDKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxldGVBbGxDb21waWxlZENvZGUoRXhlY1N0YXRl
Kik7CiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShFeGVjU3RhdGUqKTsKQEAgLTU4NSw2ICs1
ODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2MiLCBmdW5jdGlv
bkdDQW5kU3dlZXAsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZ1bGxHQyIsIGZ1bmN0
aW9uRnVsbEdDLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZGVuR0MiLCBmdW5jdGlv
bkVkZW5HQywgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2NIZWFwU2l6ZSIsIGZ1bmN0
aW9uSGVhcFNpemUsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRlbGV0ZUFsbENvbXBp
bGVkQ29kZSIsIGZ1bmN0aW9uRGVsZXRlQWxsQ29tcGlsZWRDb2RlLCAwKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHVtcENhbGxGcmFtZSIsIGZ1bmN0aW9uRHVt
cENhbGxGcmFtZSwgMCk7CkBAIC04MzEsMjEgKzgzMywyNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uR0NBCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAg
ICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0QWxsR2FyYmFnZSgpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihleGVjLT5oZWFwKCktPnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIGV4ZWMtPmhlYXAoKS0+
Y29sbGVjdChGdWxsQ29sbGVjdGlvbik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMtPmhl
YXAoKS0+c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KEVkZW5D
b2xsZWN0aW9uKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5zaXplQWZ0
ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9ja0hvbGRl
ciBsb2NrKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+
aGVhcCgpLT5zaXplKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbkRlbGV0ZUFsbENvbXBpbGVkQ29kZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTgzODI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxNiwxNSArODE2LDE0
IEBAIHZvaWQgSGVhcDo6dXBkYXRlT2JqZWN0Q291bnRzKGRvdWJsZSBnY1MKICNlbmRpZgogICAg
ICAgICBkYXRhTG9nRigiXG5OdW1iZXIgb2YgbGl2ZSBPYmplY3RzIGFmdGVyIEdDICVsdSwgdG9v
ayAlLjZmIHNlY3NcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZpc2l0Q291bnQpLCBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZ2NTdGFydFRpbWUpOwogICAgIH0K
LQotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pIHsKLSAg
ICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCArPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgp
OwotICAgICAgICBtX3RvdGFsQnl0ZXNDb3BpZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc0NvcGll
ZCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PT0gRnVsbENvbGxlY3Rpb24pOwotICAgICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkID0gbV9zbG90
VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKTsKLSAgICAgICAgbV90b3RhbEJ5dGVzQ29waWVkID0gbV9z
bG90VmlzaXRvci5ieXRlc0NvcGllZCgpOworICAgIAorICAgIGlmIChtX29wZXJhdGlvbkluUHJv
Z3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9
IDA7CisgICAgICAgIG1fdG90YWxCeXRlc0NvcGllZCA9IDA7CiAgICAgfQorCisgICAgbV90b3Rh
bEJ5dGVzVmlzaXRlZCArPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzVmlzaXRlZCgpOworICAgIG1fdG90
YWxCeXRlc0NvcGllZCArPSBtX3Nsb3RWaXNpdG9yLmJ5dGVzQ29waWVkKCk7CiAjaWYgRU5BQkxF
KFBBUkFMTEVMX0dDKQogICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zaGFyZWREYXRhLmNo
aWxkQnl0ZXNWaXNpdGVkKCk7CiAgICAgbV90b3RhbEJ5dGVzQ29waWVkICs9IG1fc2hhcmVkRGF0
YS5jaGlsZEJ5dGVzQ29waWVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvcklubGluZXMuaAkocmV2aXNpb24gMTgzODI0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzOCwxMCArMjM4LDggQEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlMYXRlcihKU0Nl
bAogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVk
U3BhY2U6OmJsb2NrRm9yKHB0cik7Ci0gICAgaWYgKGJsb2NrLT5pc092ZXJzaXplKCkpIHsKKyAg
ICBpZiAoYmxvY2stPmlzT3ZlcnNpemUoKSkKICAgICAgICAgbV9zaGFyZWQubV9jb3BpZWRTcGFj
ZS0+cGluKGJsb2NrKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIEFTU0VSVChoZWFw
KCktPm1fc3RvcmFnZVNwYWNlLmNvbnRhaW5zKGJsb2NrKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXN0b3JhZ2UtYXJyYXktd2l0aC1zaXpl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3
LWFycmF5LXN0b3JhZ2UtYXJyYXktd2l0aC1zaXplLmpzCShyZXZpc2lvbiAxODM4MjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS1zdG9yYWdlLWFycmF5
LXdpdGgtc2l6ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDEyIEBAIGZ1bmN0aW9uIGZv
byh4KSB7CiAKIG5vSW5saW5lKGZvbyk7CiAKKy8vIFdhcm0gdXAgdXAgdG8gY3JlYXRlIGFycmF5
IHN0b3JhZ2UuCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgYXJy
YXkgPSBmb28oMTApOworICAgIGFycmF5Ll9fZGVmaW5lU2V0dGVyX18oMCwgZnVuY3Rpb24odikg
eyB9KTsKK30KKwogZnVuY3Rpb24gdGVzdChzaXplKSB7CiAgICAgdmFyIHJlc3VsdCA9IGZvbyhz
aXplKTsKICAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSBzaXplKQpAQCAtMjIsNSArMjgsNSBAQCBm
dW5jdGlvbiB0ZXN0KHNpemUpIHsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgewotICAgIHRlc3QoMTAwMDAwMCk7CisgICAgdGVzdCgxMCk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1sYXJnZWlzaC1jb250aWd1b3VzLWFycmF5
LXdpdGgtc2l6ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL25ldy1sYXJnZWlzaC1jb250aWd1b3VzLWFycmF5LXdpdGgtc2l6ZS5qcwkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWxhcmdlaXNo
LWNvbnRpZ3VvdXMtYXJyYXktd2l0aC1zaXplLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzggQEAKKy8vIFdlIG9ubHkgbmVlZCBvbmUgcnVuIG9mIHRoaXMgd2l0aCBhbnkgR0Mgb3IgSklU
IHN0cmF0ZWd5LiBUaGlzIHRlc3QgaXMgbm90IHBhcnRpY3VsYXJseSBmYXN0LgorLy8gVW5mb3J0
dW5hdGVseSwgaXQgbmVlZHMgdG8gcnVuIGZvciBhIHdoaWxlIHRvIHRlc3QgdGhlIHRoaW5nIGl0
J3MgdGVzdGluZy4KKy8vQCBzbG93IQorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gZm9vKHgp
IHsKKyAgICByZXR1cm4gbmV3IEFycmF5KHgpOworfQorCitub0lubGluZShmb28pOworCitmdW5j
dGlvbiB0ZXN0KHNpemUpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKHNpemUpOworICAgIGlmIChy
ZXN1bHQubGVuZ3RoICE9IHNpemUpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKKyAgICB2YXIgc2F3VGhpbmdzID0gZmFsc2U7CisgICAgZm9yICh2YXIgcyBp
biByZXN1bHQpCisgICAgICAgIHNhd1RoaW5ncyA9IHRydWU7CisgICAgaWYgKHNhd1RoaW5ncykK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBhcnJheSBpcyBpbiBiYWQgc3RhdGU6ICIgKyByZXN1bHQ7
CisgICAgcmVzdWx0WzBdID0gIjQyLjUiOworICAgIGlmIChyZXN1bHRbMF0gIT0gIjQyLjUiKQor
ICAgICAgICB0aHJvdyAiRXJyb3I6IGFycmF5IGlzIGluIHdpZXJkIHN0YXRlOiAiICsgcmVzdWx0
OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDQwMDAwOyArK2kpIHsKKyAgICB0ZXN0KDUwMDAw
KTsKK30KKworLy8gTGFzdCB0aW1lIEkgdGVzdGVkLCB0aGUgaGVhcCBzaG91bGQgYmUgNTI1MjA5
MTQgYmVmb3JlIGFuZCA1MDEyMDE0NiBhZnRlci4gSSBkb24ndCB3YW50IHRvCisvLyBlbmZvcmNl
IGV4YWN0bHkgdGhhdC4KK3ZhciByZXN1bHQgPSBnY0hlYXBTaXplKCk7CitpZiAocmVzdWx0ID4g
MTAwMDAwMDAwKQorICAgIHRocm93ICJFcnJvcjogaGVhcCB0b28gYmlnIGJlZm9yZSBmb3JjZWQg
R0M6ICIgKyByZXN1bHQ7CitnYygpOworcmVzdWx0ID0gZ2NIZWFwU2l6ZSgpOworaWYgKHJlc3Vs
dCA+IDEwMDAwMDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6IGhlYXAgdG9vIGJpZyBhZnRlciBmb3Jj
ZWQgR0M6ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="277281"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252599</attachid>
            <date>2015-05-07 10:46:58 -0700</date>
            <delta_ts>2015-05-07 10:55:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16902</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzOTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE1LTA1LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R0MgaGFzIHRyb3VibGUgd2l0aCBwYXRob2xvZ2ljYWxseSBsYXJnZSBhcnJheSBhbGxvY2F0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjA5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJ1
ZyB3YXMgdGhhdCBTbG90VmlzaXRvcjo6Y29weUxhdGVyKCkgd291bGQgcmV0dXJuIGVhcmx5IGZv
ciBvdmVyc2l6ZSBibG9ja3MgKHJpZ2h0CisgICAgICAgIGFmdGVyIHBpbm5pbmcgdGhlbSksIGFu
ZCB3b3VsZCBza2lwIHRoZSBhY2NvdW50aW5nLiBUaGUgR0MgY2FsY3VsYXRlcyB0aGUgc2l6ZSBv
ZiB0aGUgaGVhcAorICAgICAgICBpbiB0YW5kZW0gd2l0aCB0aGUgc2NhbiB0byBzYXZlIHRpbWUs
IGFuZCB0aGF0IGFjY291bnRpbmcgd2FzIHBhcnQgb2YgaG93IHRoZSBHQyB3b3VsZAorICAgICAg
ICBrbm93IGhvdyBiaWcgdGhlIGhlYXAgd2FzLiBUaGUgR0Mgd291bGQgdGhlbiB0aGluayB0aGF0
IG92ZXJzaXplIGNvcGllZCBibG9ja3MgdXNlIG5vCisgICAgICAgIG1lbW9yeSwgYW5kIHdvdWxk
IHRoZW4gbWVzcyB1cCBpdHMgc2NoZWR1bGluZyBvZiB0aGUgbmV4dCBHQy4KKyAgICAgICAgCisg
ICAgICAgIEZpeGluZyB0aGlzIGJ1ZyBpcyBoYXJkZXIgdGhhbiBpdCBzZWVtcy4gV2hlbiBydW5u
aW5nIGFuIGVkZW4gR0MsIHdlIGZpZ3VyZSBvdXQgdGhlIGhlYXAKKyAgICAgICAgc2l6ZSBieSBz
dW1taW5nIHRoZSBzaXplIGZyb20gdGhlIGxhc3QgY29sbGVjdGlvbiBhbmQgdGhlIHNpemUgYnkg
d2Fsa2luZyB0aGUgZWRlbiBoZWFwLgorICAgICAgICBCdXQgdGhpcyBicmVha3Mgd2hlbiB3ZSBl
YWdlcmx5IGRlbGV0ZSBvYmplY3RzIHRoYXQgdGhlIGxhc3QgY29sbGVjdGlvbiB0b3VjaGVkLiBX
ZSBjYW4gZG8KKyAgICAgICAgdGhhdCBpbiBvbmUgY29ybmVyIGNhc2U6IGNvcGllZCBibG9jayBy
ZWFsbG9jYXRpb24uIFRoZSBvbGQgYmxvY2sgd2lsbCBiZSBkZWxldGVkIGZyb20gb2xkCisgICAg
ICAgIHNwYWNlIGR1cmluZyB0aGUgcmVhbGxvYyBhbmQgYSBuZXcgYmxvY2sgd2lsbCBiZSBhbGxv
Y2F0ZWQgaW4gbmV3IHNwYWNlLiBJbiBvcmRlciBmb3IgdGhlCisgICAgICAgIEdDIHRvIGtub3cg
dGhhdCB0aGUgc2l6ZSBvZiBvbGQgc3BhY2UgYWN0dWFsbHkgc2hyYW5rLCB3ZSBuZWVkIGEgZmll
bGQgdG8gdGVsbCB1cyBob3cgbXVjaAorICAgICAgICBzdWNoIHNocmlua2FnZSBjb3VsZCBvY2N1
ci4gU2luY2UgdGhpcyBpcyBhIHZlcnkgZGlydHkgY29ybmVyIGNhc2UgYW5kIGl0IG9ubHkgd29y
a3MgZm9yCisgICAgICAgIHZlcnkgcGFydGljdWxhciByZWFzb25zIGFyaXNpbmcgZnJvbSB0aGUg
c3BlY2lhbCBwcm9wZXJ0aWVzIG9mIGNvcGllZCBzcGFjZSAoc2luZ2xlIG93bmVyLAorICAgICAg
ICBhbmQgdGhlIHJlYWxsb2MgaXMgdXNlZCBpbiBwbGFjZXMgd2hlcmUgdGhlIGNvbXBpbGVyIGFs
cmVhZHkga25vd3MgdGhhdCBpdCBjYW5ub3QgcmVnaXN0ZXIKKyAgICAgICAgYWxsb2NhdGUgYSBw
b2ludGVyIHRvIHRoZSBvbGQgYmxvY2spLCBJIG9wdGVkIGZvciBhbiBlcXVhbGx5IGRpcnR5IHNo
cmlua2FnZSBjb3VudGVyCisgICAgICAgIGRldm90ZWQganVzdCB0byB0aGlzIGNhc2UuIEl0J3Mg
Y2FsbGVkIGJ5dGVzUmVtb3ZlZEZyb21PbGRTcGFjZUR1ZVRvUmVhbGxvY2F0aW9uLgorCisgICAg
ICAgICogaGVhcC9Db3BpZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6OkNvcGllZFNwYWNlOjpD
b3BpZWRTcGFjZSk6IEluaXRpYWxpemUgdGhlIGRpcnR5IHNocmlua2FnZSBjb3VudGVyLgorICAg
ICAgICAoSlNDOjpDb3BpZWRTcGFjZTo6dHJ5UmVhbGxvY2F0ZU92ZXJzaXplKTogQnVtcCB0aGUg
ZGlydHkgc2hyaW5rYWdlIGNvdW50ZXIuCisgICAgICAgICogaGVhcC9Db3BpZWRTcGFjZS5oOgor
ICAgICAgICAoSlNDOjpDb3BpZWRTcGFjZTo6dGFrZUJ5dGVzUmVtb3ZlZEZyb21PbGRTcGFjZUR1
ZVRvUmVhbGxvY2F0aW9uKTogU3dhcCBvdXQgdGhlIGNvdW50ZXIuIFVzZWQgYnkgdGhlIEdDIHdo
ZW4gaXQgZG9lcyBpdHMgYWNjb3VudGluZy4KKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAg
ICAgICAoSlNDOjpIZWFwOjp1cGRhdGVPYmplY3RDb3VudHMpOiBVc2UgdGhlIGRpcnR5IHNocmlu
a2FnZSBjb3VudGVyIHRvIGdvb2QgZWZmZWN0LiBBbHNvLCBtYWtlIHRoaXMgY29kZSBsZXNzIGNv
bmZ1c2luZy4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpTbG90VmlzaXRvcjo6Y29weUxhdGVyKTogVGhlIGVhcmx5IHJldHVybiBmb3IgaXNPdmVy
c2l6ZSgpIHdhcyB0aGUgYnVnLiBXZSBzdGlsbCBuZWVkIHRvIHJlcG9ydCB0aGVzZSBieXRlcyBh
cyBsaXZlLiBPdGhlcndpc2UgdGhlIEdDIGRvZXNuJ3Qga25vdyB0aGF0IGl0IG93bnMgdGhpcyBt
ZW1vcnkuCisgICAgICAgICoganNjLmNwcDogQWRkIHNpemUgbWVhc3VyaW5nIGhvb2tzIHRvIHdy
aXRlIHRoZSBsYXJnZWlzaCB0ZXN0LgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChmdW5jdGlvbkdDQW5kU3dlZXApOgorICAgICAgICAoZnVuY3Rpb25G
dWxsR0MpOgorICAgICAgICAoZnVuY3Rpb25FZGVuR0MpOgorICAgICAgICAoZnVuY3Rpb25IZWFw
U2l6ZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL25ldy1hcnJheS1zdG9yYWdlLWFycmF5LXdp
dGgtc2l6ZS5qczogRml4IHRoaXMgc28gdGhhdCBpdCBhY3R1YWxseSBhbGxvY2F0ZXMgQXJyYXlT
dG9yYWdlIGFycmF5cyBhbmQgdGVzdHMgdGhlIHRoaW5nIGl0IHdhcyBzdXBwb3NlZCB0byB0ZXN0
LgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9uZXctbGFyZ2Vpc2gtY29udGlndW91cy1hcnJheS13
aXRoLXNpemUuanM6IEFkZGVkLiBUaGlzIHRlc3RzIHdoYXQgdGhlIG90aGVyIHRlc3QgYWNjaWRl
bnRhbGx5IHN0YXJ0ZWQgdGVzdGluZywgYnV0IGRvZXMgc28gd2l0aG91dCBydW5uaW5nIHlvdXIg
c3lzdGVtIG91dCBvZiBtZW1vcnkuCisgICAgICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisK
IDIwMTUtMDUtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTkzMTcxNDA+IFtYY29kZV0gUmVtb3ZlIHVzYWdlIG9mIEFzcGVuRmFt
aWx5LnhjY29uZmlnIGluIFNvdXJjZS8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxODM4NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQ3LDYgKzQ0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmMKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NBbmRT
d2VlcChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uRnVsbEdDKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25FZGVuR0MoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhlYXBTaXplKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25EZWxldGVBbGxDb21waWxlZENvZGUoRXhl
Y1N0YXRlKik7CiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShFeGVjU3RhdGUqKTsKQEAgLTU4
NSw2ICs1ODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2MiLCBm
dW5jdGlvbkdDQW5kU3dlZXAsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImZ1bGxHQyIs
IGZ1bmN0aW9uRnVsbEdDLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJlZGVuR0MiLCBm
dW5jdGlvbkVkZW5HQywgMCk7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZ2NIZWFwU2l6ZSIs
IGZ1bmN0aW9uSGVhcFNpemUsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRlbGV0ZUFs
bENvbXBpbGVkQ29kZSIsIGZ1bmN0aW9uRGVsZXRlQWxsQ29tcGlsZWRDb2RlLCAwKTsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHVtcENhbGxGcmFtZSIsIGZ1bmN0
aW9uRHVtcENhbGxGcmFtZSwgMCk7CkBAIC04MzEsMjEgKzgzMywyNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR0NBCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhl
Yyk7CiAgICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0QWxsR2FyYmFnZSgpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihleGVjLT5oZWFwKCktPnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpKSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GdWxsR0MoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIGV4ZWMtPmhl
YXAoKS0+Y29sbGVjdChGdWxsQ29sbGVjdGlvbik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4
ZWMtPmhlYXAoKS0+c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVkZW5HQyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0
KEVkZW5Db2xsZWN0aW9uKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYy0+aGVhcCgpLT5z
aXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uSGVhcFNpemUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
ZXhlYy0+aGVhcCgpLT5zaXplKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkRlbGV0ZUFsbENvbXBpbGVkQ29kZShFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuY3BwCShyZXZpc2lvbiAxODM4
NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgQ29waWVkU3BhY2U6OkNvcGllZFNwYWNlKEhlYXAq
IGhlYXApCiAgICAgLCBtX2luQ29weWluZ1BoYXNlKGZhbHNlKQogICAgICwgbV9zaG91bGREb0Nv
cHlQaGFzZShmYWxzZSkKICAgICAsIG1fbnVtYmVyT2ZMb2FuZWRCbG9ja3MoMCkKKyAgICAsIG1f
Ynl0ZXNSZW1vdmVkRnJvbU9sZFNwYWNlRHVlVG9SZWFsbG9jYXRpb24oMCkKIHsKIH0KIApAQCAt
MTU1LDkgKzE1NiwxMCBAQCBDaGVja2VkQm9vbGVhbiBDb3BpZWRTcGFjZTo6dHJ5UmVhbGxvY2F0
CiAKICAgICBDb3BpZWRCbG9jayogb2xkQmxvY2sgPSBDb3BpZWRTcGFjZTo6YmxvY2tGb3Iob2xk
UHRyKTsKICAgICBpZiAob2xkQmxvY2stPmlzT3ZlcnNpemUoKSkgewotICAgICAgICBpZiAob2xk
QmxvY2stPmlzT2xkKCkpCisgICAgICAgIGlmIChvbGRCbG9jay0+aXNPbGQoKSkgeworICAgICAg
ICAgICAgbV9ieXRlc1JlbW92ZWRGcm9tT2xkU3BhY2VEdWVUb1JlYWxsb2NhdGlvbiArPSBvbGRC
bG9jay0+c2l6ZSgpOwogICAgICAgICAgICAgbV9vbGRHZW4ub3ZlcnNpemVCbG9ja3MucmVtb3Zl
KG9sZEJsb2NrKTsKLSAgICAgICAgZWxzZQorICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1f
bmV3R2VuLm92ZXJzaXplQmxvY2tzLnJlbW92ZShvbGRCbG9jayk7CiAgICAgICAgIG1fYmxvY2tT
ZXQucmVtb3ZlKG9sZEJsb2NrKTsKICAgICAgICAgQ29waWVkQmxvY2s6OmRlc3Ryb3kob2xkQmxv
Y2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5oCShyZXZp
c2lvbiAxODM4NzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4NiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENv
cGllZEJsb2NrKiBibG9ja0Zvcih2b2lkKik7CiAKICAgICBIZWFwKiBoZWFwKCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWFwOyB9CisgICAgCisgICAgc2l6ZV90IHRha2VCeXRlc1JlbW92ZWRGcm9tT2xk
U3BhY2VEdWVUb1JlYWxsb2NhdGlvbigpCisgICAgeworICAgICAgICBzaXplX3QgcmVzdWx0ID0g
MDsKKyAgICAgICAgc3RkOjpzd2FwKG1fYnl0ZXNSZW1vdmVkRnJvbU9sZFNwYWNlRHVlVG9SZWFs
bG9jYXRpb24sIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiBwcml2
YXRlOgogICAgIHN0YXRpYyBib29sIGlzT3ZlcnNpemUoc2l6ZV90KTsKQEAgLTEzNSw2ICsxNDIs
OCBAQCBwcml2YXRlOgogICAgIE11dGV4IG1fbG9hbmVkQmxvY2tzTG9jazsgCiAgICAgVGhyZWFk
Q29uZGl0aW9uIG1fbG9hbmVkQmxvY2tzQ29uZGl0aW9uOwogICAgIHNpemVfdCBtX251bWJlck9m
TG9hbmVkQmxvY2tzOworICAgIAorICAgIHNpemVfdCBtX2J5dGVzUmVtb3ZlZEZyb21PbGRTcGFj
ZUR1ZVRvUmVhbGxvY2F0aW9uOwogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX21heEFsbG9j
YXRpb25TaXplID0gQ29waWVkQmxvY2s6OmJsb2NrU2l6ZSAvIDI7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBzX2luaXRpYWxCbG9ja051bSA9IDE2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHJldmlzaW9uIDE4Mzg3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTYsMTUgKzgxNiwxOCBAQCB2b2lkIEhl
YXA6OnVwZGF0ZU9iamVjdENvdW50cyhkb3VibGUgZ2NTCiAjZW5kaWYKICAgICAgICAgZGF0YUxv
Z0YoIlxuTnVtYmVyIG9mIGxpdmUgT2JqZWN0cyBhZnRlciBHQyAlbHUsIHRvb2sgJS42ZiBzZWNz
XG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2aXNpdENvdW50KSwgV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIGdjU3RhcnRUaW1lKTsKICAgICB9Ci0KLSAgICBpZiAo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKSB7Ci0gICAgICAgIG1fdG90
YWxCeXRlc1Zpc2l0ZWQgKz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKTsKLSAgICAgICAg
bV90b3RhbEJ5dGVzQ29waWVkICs9IG1fc2xvdFZpc2l0b3IuYnl0ZXNDb3BpZWQoKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKTsKLSAgICAgICAgbV90b3RhbEJ5dGVzVmlzaXRlZCA9IG1fc2xvdFZpc2l0b3IuYnl0
ZXNWaXNpdGVkKCk7Ci0gICAgICAgIG1fdG90YWxCeXRlc0NvcGllZCA9IG1fc2xvdFZpc2l0b3Iu
Ynl0ZXNDb3BpZWQoKTsKLSAgICB9CisgICAgCisgICAgc2l6ZV90IGJ5dGVzUmVtb3ZlZEZyb21P
bGRTcGFjZUR1ZVRvUmVhbGxvY2F0aW9uID0KKyAgICAgICAgbV9zdG9yYWdlU3BhY2UudGFrZUJ5
dGVzUmVtb3ZlZEZyb21PbGRTcGFjZUR1ZVRvUmVhbGxvY2F0aW9uKCk7CisgICAgCisgICAgaWYg
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBtX3Rv
dGFsQnl0ZXNWaXNpdGVkID0gMDsKKyAgICAgICAgbV90b3RhbEJ5dGVzQ29waWVkID0gMDsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV90b3RhbEJ5dGVzQ29waWVkIC09IGJ5dGVzUmVtb3ZlZEZyb21P
bGRTcGFjZUR1ZVRvUmVhbGxvY2F0aW9uOworICAgIAorICAgIG1fdG90YWxCeXRlc1Zpc2l0ZWQg
Kz0gbV9zbG90VmlzaXRvci5ieXRlc1Zpc2l0ZWQoKTsKKyAgICBtX3RvdGFsQnl0ZXNDb3BpZWQg
Kz0gbV9zbG90VmlzaXRvci5ieXRlc0NvcGllZCgpOwogI2lmIEVOQUJMRShQQVJBTExFTF9HQykK
ICAgICBtX3RvdGFsQnl0ZXNWaXNpdGVkICs9IG1fc2hhcmVkRGF0YS5jaGlsZEJ5dGVzVmlzaXRl
ZCgpOwogICAgIG1fdG90YWxCeXRlc0NvcGllZCArPSBtX3NoYXJlZERhdGEuY2hpbGRCeXRlc0Nv
cGllZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3JJbmxpbmVzLmgJKHJldmlzaW9uIDE4Mzg3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksOCArMjM5LDgg
QEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlMYXRlcihKU0NlbAogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkU3BhY2U6OmJsb2NrRm9yKHB0
cik7CiAgICAgaWYgKGJsb2NrLT5pc092ZXJzaXplKCkpIHsKKyAgICAgICAgQVNTRVJUKGJ5dGVz
ID09IGJsb2NrLT5zaXplKCkpOwogICAgICAgICBtX3NoYXJlZC5tX2NvcGllZFNwYWNlLT5waW4o
YmxvY2spOwotICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKGhlYXAoKS0+bV9z
dG9yYWdlU3BhY2UuY29udGFpbnMoYmxvY2spKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXN0b3JhZ2UtYXJyYXktd2l0aC1zaXplLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbmV3LWFycmF5LXN0
b3JhZ2UtYXJyYXktd2l0aC1zaXplLmpzCShyZXZpc2lvbiAxODM4NzIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL25ldy1hcnJheS1zdG9yYWdlLWFycmF5LXdpdGgtc2l6
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMSwxNSBAQAotLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDYwOQotLy9AIHNraXAKLQogZnVuY3Rpb24gZm9v
KHgpIHsKICAgICByZXR1cm4gbmV3IEFycmF5KHgpOwogfQogCiBub0lubGluZShmb28pOwogCisv
LyBXYXJtIHVwIHVwIHRvIGNyZWF0ZSBhcnJheSBzdG9yYWdlLgorZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gZm9vKDEwKTsKKyAgICBhcnJheS5fX2Rl
ZmluZVNldHRlcl9fKDAsIGZ1bmN0aW9uKHYpIHsgfSk7Cit9CisKIGZ1bmN0aW9uIHRlc3Qoc2l6
ZSkgewogICAgIHZhciByZXN1bHQgPSBmb28oc2l6ZSk7CiAgICAgaWYgKHJlc3VsdC5sZW5ndGgg
IT0gc2l6ZSkKQEAgLTIyLDUgKzI1LDUgQEAgZnVuY3Rpb24gdGVzdChzaXplKSB7CiB9CiAKIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKLSAgICB0ZXN0KDEwMDAwMDApOworICAg
IHRlc3QoMTApOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9u
ZXctbGFyZ2Vpc2gtY29udGlndW91cy1hcnJheS13aXRoLXNpemUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9uZXctbGFyZ2Vpc2gtY29udGlndW91
cy1hcnJheS13aXRoLXNpemUuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL25ldy1sYXJnZWlzaC1jb250aWd1b3VzLWFycmF5LXdpdGgtc2l6ZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvLyBXZSBvbmx5IG5lZWQgb25lIHJ1
biBvZiB0aGlzIHdpdGggYW55IEdDIG9yIEpJVCBzdHJhdGVneS4gVGhpcyB0ZXN0IGlzIG5vdCBw
YXJ0aWN1bGFybHkgZmFzdC4KKy8vIFVuZm9ydHVuYXRlbHksIGl0IG5lZWRzIHRvIHJ1biBmb3Ig
YSB3aGlsZSB0byB0ZXN0IHRoZSB0aGluZyBpdCdzIHRlc3RpbmcuCisvL0Agc2xvdyEKKy8vQCBy
dW5EZWZhdWx0CisKK2Z1bmN0aW9uIGZvbyh4KSB7CisgICAgcmV0dXJuIG5ldyBBcnJheSh4KTsK
K30KKworbm9JbmxpbmUoZm9vKTsKKworZnVuY3Rpb24gdGVzdChzaXplKSB7CisgICAgdmFyIHJl
c3VsdCA9IGZvbyhzaXplKTsKKyAgICBpZiAocmVzdWx0Lmxlbmd0aCAhPSBzaXplKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisgICAgdmFyIHNhd1RoaW5n
cyA9IGZhbHNlOworICAgIGZvciAodmFyIHMgaW4gcmVzdWx0KQorICAgICAgICBzYXdUaGluZ3Mg
PSB0cnVlOworICAgIGlmIChzYXdUaGluZ3MpCisgICAgICAgIHRocm93ICJFcnJvcjogYXJyYXkg
aXMgaW4gYmFkIHN0YXRlOiAiICsgcmVzdWx0OworICAgIHJlc3VsdFswXSA9ICI0Mi41IjsKKyAg
ICBpZiAocmVzdWx0WzBdICE9ICI0Mi41IikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBhcnJheSBp
cyBpbiB3ZWlyZCBzdGF0ZTogIiArIHJlc3VsdDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCA0
MDAwMDsgKytpKSB7CisgICAgLy8gVGhlIHRlc3Qgd2FzIHdyaXR0ZW4gd2hlbiB3ZSBmb3VuZCB0
aGF0IGxhcmdlIGFycmF5IGFsbG9jYXRpb25zIHdlcmVuJ3QgYmVpbmcgYWNjb3VudGVkIGZvcgor
ICAgIC8vIGluIHRoYXQgcGFydCBvZiB0aGUgR0MncyBhY2NvdW50aW5nIHRoYXQgZGV0ZXJtaW5l
ZCB0aGUgR0MgdHJpZ2dlci4gQ29uc2VxdWVudGx5LCB0aGUgR0MKKyAgICAvLyB3b3VsZCBydW4g
dG9vIGluZnJlcXVlbnRseSBpbiB0aGlzIGxvb3AgYW5kIHdlIHdvdWxkIHVzZSBhbiBhYnN1cmQg
YW1vdW50IG9mIG1lbW9yeSB3aGVuIHRoaXMKKyAgICAvLyBsb29wIGV4aXRlZC4KKyAgICB0ZXN0
KDUwMDAwKTsKK30KKworLy8gTGFzdCB0aW1lIEkgdGVzdGVkLCB0aGUgaGVhcCBzaG91bGQgYmUg
NTI1MjA5MTQgYmVmb3JlIGFuZCA1MDEyMDE0NiBhZnRlci4gSSBkb24ndCB3YW50IHRvCisvLyBl
bmZvcmNlIGV4YWN0bHkgdGhhdC4gSWYgeW91IHJlZ3Jlc3MgdGhlIGFjY291bnRpbmcgY29kZSwg
dGhlIEdDIGhlYXAgc2l6ZSBhdCB0aGlzIHBvaW50IHdpbGwKKy8vIGJlIG11Y2ggbW9yZSB0aGFu
IHRoYXQuCit2YXIgcmVzdWx0ID0gZ2NIZWFwU2l6ZSgpOworaWYgKHJlc3VsdCA+IDEwMDAwMDAw
MCkKKyAgICB0aHJvdyAiRXJyb3I6IGhlYXAgdG9vIGJpZyBiZWZvcmUgZm9yY2VkIEdDOiAiICsg
cmVzdWx0OworCisvLyBEbyBhIGZpbmFsIGNoZWNrIGFmdGVyIEdDLCBqdXN0IGZvciBzYW5pdHku
CitnYygpOworcmVzdWx0ID0gZ2NIZWFwU2l6ZSgpOworaWYgKHJlc3VsdCA+IDEwMDAwMDAwMCkK
KyAgICB0aHJvdyAiRXJyb3I6IGhlYXAgdG9vIGJpZyBhZnRlciBmb3JjZWQgR0M6ICIgKyByZXN1
bHQ7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODM5MzIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxNS0wNS0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgorCisgICAgICAgIEdDIGhhcyB0cm91YmxlIHdpdGggcGF0aG9sb2dpY2FsbHkgbGFyZ2UgYXJy
YXkgYWxsb2NhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDYwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIGEgLS1maWx0ZXIgb3B0aW9uIHRoYXQgcmVzdHJpY3RzIHRoZSBz
ZXQgb2YgdGVzdHMgd2UgcnVuLiBJIG5lZWRlZCBpdCB0byBmaXggdGhpcyBidWcKKyAgICAgICAg
YW5kIGl0J3MgYSBmcmVxdWVudGx5IHJlcXVlc3RlZCBmZWF0dXJlLgorCisgICAgICAgICogU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAgICAgIChydW5KU0NTdHJlc3NUZXN0
cyk6CisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czoKKwogMjAxNS0wNS0w
NiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBpT1MgYnVp
bGQgZml4IGF0dGVtcHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRl
c3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3Rz
CShyZXZpc2lvbiAxODM4NzIpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBteSAkcHJvZ3JhbU5hbWUgPSBi
YXNlbmFtZSgkMCk7CiBteSAkYnVpbGRKU0NEZWZhdWx0ID0gJGJ1aWxkSlNDID8gIndpbGwgY2hl
Y2siIDogIndpbGwgbm90IGNoZWNrIjsKIG15ICR0ZXN0YXBpRGVmYXVsdCA9ICRydW5UZXN0QVBJ
ID8gIndpbGwgcnVuIiA6ICJ3aWxsIG5vdCBydW4iOwogbXkgJGpzY1N0cmVzc0RlZmF1bHQgPSAk
cnVuSlNDU3RyZXNzID8gIndpbGwgcnVuIiA6ICIgd2lsbCBub3QgcnVuIjsKK215ICRmaWx0ZXI7
CiBteSAkdXNhZ2UgPSA8PEVPRjsKIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRp
b25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQogICAtLWhlbHAgICAgICAgICAgICAgICAgICAg
ICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCkBAIC04OSw2ICs5MCw3IEBAIFVzYWdlOiAkcHJv
Z3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHQKICAgLS1zaGVsbC1ydW5uZXIgICAgICAgICAg
ICAgICAgVXNlcyB0aGUgc2hlbGwtYmFzZWQgdGVzdCBydW5uZXIgaW5zdGVhZCBvZiB0aGUgZGVm
YXVsdCBtYWtlLWJhc2VkIHJ1bm5lci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW4gZ2VuZXJhbCB0aGUgc2hlbGwgcnVubmVyIGlzIHNsb3dlciB0aGFuIHRoZSBtYWtlIHJ1bm5l
ci4KICAgLS1tYWtlLXJ1bm5lciAgICAgICAgICAgICAgICAgVXNlcyB0aGUgZmFzdGVyIG1ha2Ut
YmFzZWQgcnVubmVyLgorICAtLWZpbHRlciAgICAgICAgICAgICAgICAgICAgICBPbmx5IHJ1biB0
ZXN0cyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi4KIAog
RU9GCiAKQEAgLTEwNiw2ICsxMDgsNyBAQCBHZXRPcHRpb25zKAogICAgICdjaGlsZC1wcm9jZXNz
ZXM9cycgPT4gXCRjaGlsZFByb2Nlc3NlcywKICAgICAnc2hlbGwtcnVubmVyJyA9PiBcJHNoZWxs
UnVubmVyLAogICAgICdtYWtlLXJ1bm5lcicgPT4gXCRtYWtlUnVubmVyLAorICAgICdmaWx0ZXI9
cycgPT4gXCRmaWx0ZXIsCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAKICk7CiAKQEAgLTMxMyw2
ICszMTYsMTEgQEAgc3ViIHJ1bkpTQ1N0cmVzc1Rlc3RzCiAgICAgaWYgKCRtYWtlUnVubmVyKSB7
CiAgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tbWFrZS1ydW5uZXIiKTsKICAg
ICB9CisgICAgCisgICAgaWYgKCRmaWx0ZXIpIHsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJp
dmVyQ21kLCAiLS1maWx0ZXIiKTsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAk
ZmlsdGVyKTsKKyAgICB9CiAKICAgICAjIEVuZCBvcHRpb24gcHJvY2Vzc2luZywgdGhlIHJlc3Qg
b2YgdGhlIGFyZ3VtZW50cyBhcmUgdGVzdHMKICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQs
ICItLSIpOwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAxODM4
NzIpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsNiArMTA1LDcgQEAgJHJlbW90ZVBvcnQgPSBuaWwKICRyZW1vdGVEaXJlY3Rvcnkg
PSBuaWwKICRhcmNoaXRlY3R1cmUgPSBuaWwKICRob3N0T1MgPSBuaWwKKyRmaWx0ZXIgPSBuaWwK
IAogCiBkZWYgdXNhZ2UKQEAgLTEzMCw2ICsxMzEsNyBAQCBkZWYgdXNhZ2UKICAgICBwdXRzICIt
LXJlbW90ZSAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSBhIHJlbW90ZSBob3N0IG9uIHdoaWNo
IHRvIHJ1biB0ZXN0cyBmcm9tIGNvbW1hbmQgbGluZSBhcmd1bWVudC4iCiAgICAgcHV0cyAiLS1y
ZW1vdGUtY29uZmlnLWZpbGUgICAgICAgIFNwZWNpZnkgYSByZW1vdGUgaG9zdCBvbiB3aGljaCB0
byBydW4gdGVzdHMgZnJvbSBKU09OIGZpbGUuIgogICAgIHB1dHMgIi0tY2hpbGQtcHJvY2Vzc2Vz
ICAgICgtYykgICBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzLiIKKyAgICBw
dXRzICItLWZpbHRlciAgICAgICAgICAgICAgICAgICAgT25seSBydW4gdGVzdHMgd2hvc2UgbmFt
ZSBtYXRjaGVzIHRoZSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uIgogICAgIHB1dHMgIi0taGVs
cCAgICAgICAgICAgICAgICgtaCkgICBQcmludCB0aGlzIG1lc3NhZ2UuIgogICAgIGV4aXQgMQog
ZW5kCkBAIC0xNTIsNiArMTU0LDcgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBH
ZXRvcHRMbwogICAgICAgICAgICAgICAgWyctLXJlbW90ZScsIEdldG9wdExvbmc6OlJFUVVJUkVE
X0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1yZW1vdGUtY29uZmlnLWZpbGUnLCBHZXRv
cHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tY2hpbGQtcHJv
Y2Vzc2VzJywgJy1jJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAgICAg
ICAgICAgWyctLWZpbHRlcicsIEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAg
ICAgICAgICAgIFsnLS12ZXJib3NlJywgJy12JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdKS5l
YWNoIHsKICAgICB8IG9wdCwgYXJnIHwKICAgICBjYXNlIG9wdApAQCAtMTkxLDYgKzE5NCw4IEBA
IEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG8KICAgICAgICAgJHJlbW90
ZUNvbmZpZ0ZpbGUgPSBhcmcKICAgICB3aGVuICctLWNoaWxkLXByb2Nlc3NlcycKICAgICAgICAg
JG51bUNoaWxkUHJvY2Vzc2VzID0gYXJnLnRvX2kKKyAgICB3aGVuICctLWZpbHRlcicKKyAgICAg
ICAgJGZpbHRlciA9IFJlZ2V4cC5uZXcoYXJnKQogICAgIHdoZW4gJy0tYXJjaCcKICAgICAgICAg
JGFyY2hpdGVjdHVyZSA9IGFyZwogICAgIHdoZW4gJy0tb3MnCkBAIC01OTQsNyArNTk5LDExIEBA
IGVuZAogCiBkZWYgYWRkUnVuQ29tbWFuZChraW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBl
cnJvckhhbmRsZXIpCiAgICAgJGRpZEFkZFJ1bkNvbW1hbmQgPSB0cnVlCi0gICAgcGxhbiA9IFBs
YW4ubmV3KCRiZW5jaG1hcmtEaXJlY3RvcnksIGNvbW1hbmQsIGJhc2VPdXRwdXROYW1lKGtpbmQp
LCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCisgICAgbmFtZSA9IGJhc2VPdXRwdXROYW1l
KGtpbmQpCisgICAgaWYgJGZpbHRlciBhbmQgbmFtZSAhfiAkZmlsdGVyCisgICAgICAgIHJldHVy
bgorICAgIGVuZAorICAgIHBsYW4gPSBQbGFuLm5ldygkYmVuY2htYXJrRGlyZWN0b3J5LCBjb21t
YW5kLCBuYW1lLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIpCiAgICAgaWYgJG51bUNoaWxk
UHJvY2Vzc2VzID4gMSBhbmQgJHJ1bkNvbW1hbmRPcHRpb25zWzppc1Nsb3ddCiAgICAgICAgICRy
dW5saXN0LnVuc2hpZnQgcGxhbgogICAgIGVsc2UK
</data>
<flag name="review"
          id="277438"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>