<?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>81379</bug_id>
          
          <creation_ts>2012-03-16 11:49:17 -0700</creation_ts>
          <short_desc>NRWT should not take memory used as disk cache into account when deciding how many processes to launch</short_desc>
          <delta_ts>2012-06-19 14:17:17 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>lforschler</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580740</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-03-16 11:49:17 -0700</bug_when>
    <thetext>On OS X:

&gt; run-webkit-tests fast
This machine could support 24 child processes, but only has enough memory for 13.
&gt; purge
&gt; run-webkit-tests fast
This machine could support 24 child processes, but only has enough memory for 23.

&quot;purge&quot; empties purgeable disk cache; this memory shouldn&apos;t be included when measuring how many children NRWT can make, as it will quickly evict itself if and when DRT/WKTR want it.

(please don&apos;t solve this by purging my disk cache :D)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580754</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 11:58:33 -0700</bug_when>
    <thetext>Eric&apos;s memory guessing game strikes again ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580760</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 12:02:38 -0700</bug_when>
    <thetext>I don&apos;t like the memory guessing game.  You&apos;re welcome to change it however you see fit.  It was added to make the Leopard Mac build bots (which only have 3GB of memory) not hang themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580767</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 12:05:52 -0700</bug_when>
    <thetext>See bug 74650, bug 77419, bug 73847 and bug 74021.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580773</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 12:09:14 -0700</bug_when>
    <thetext>A slightly better heuristic would be for us to keep launching child processes while we believe we have enough memory and free cores for doing so.

The question that this bug is really asking, is how to get the idea of &quot;free memory&quot; from Mac OS X, which it turns out is neigh impossible. :)

But checking to see if we have enough memory before we launch each child woudl be more robust than the current solution which checks up-front, and guesses how many max children it should use based on that number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580778</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 12:16:31 -0700</bug_when>
    <thetext>remind me what was wrong with just using total memory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580911</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 13:51:19 -0700</bug_when>
    <thetext>We can look through the bugs to see.  I think the concern was that the OS takes up an appreciable fraction of low-memory systems, so we&apos;d have to use a very large &quot;DRT size&quot; approximation in order to avoid overwhelming those systems, but using a very large &quot;DRT size&quot; would cause us to not run enough processes on systems with a smaller percentage used by the OS?

But using &quot;free&quot; memory doesn&apos;t work, because supposedly OS X tries hard to never have any free memory (since we have idle memory sitting around).  Which is how we ended up using the current &quot;inactive pages&quot;, iirc.

You&apos;d have to look through the bug/commit list to know more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580931</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-16 14:03:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; You&apos;d have to look through the bug/commit list to know more.

I did; it didn&apos;t tell me anything, but what you say makes sense. IIRC, it was something like trying to run 12 DRTs on a machine w/ 3GB of memory or something.

Perhaps instead of playing games w/ free mem, we should just take (total mem - 1 GB) / 512MB and try that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580933</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-16 14:07:18 -0700</bug_when>
    <thetext>You&apos;re welcome to experiment with the heuristic however you like.

I suspect hte first thing that should be to change the &quot;this machine could support...&quot; log to explain how to override that with --child-processes=, so that people have immediate recourse.  I doubt we&apos;ll ever be able to make all users happy with a heuristic here, but getting the 90% is the goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611027</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-26 15:23:10 -0700</bug_when>
    <thetext>I suspect our best long-term approach is dynamically launch  DRTs as needed each 100 tests or so.  We wouldn&apos;t then know how many we would launch up-front, we&apos;d just launch more until we hit the max number of processors or something.  And stop if we ever thought we would run out of memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651969</commentid>
    <comment_count>10</comment_count>
      <attachid>148225</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 19:09:43 -0700</bug_when>
    <thetext>Created attachment 148225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652503</commentid>
    <comment_count>11</comment_count>
      <attachid>148225</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-19 09:00:06 -0700</bug_when>
    <thetext>Comment on attachment 148225
Patch

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

I predict that you&apos;ll find folks who complain about this change. :)  But it&apos;s fine with me.  I don&apos;t believe it&apos;s possible to make everyone happy here.

I might suggesting just changing the int/long thing first and seeing if that makes more people happy. :)

&gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:86
&gt; -            return int(self._executive.run_command([&quot;sysctl&quot;, &quot;-n&quot;, &quot;hw.memsize&quot;]))
&gt; +            return long(self._executive.run_command([&quot;sysctl&quot;, &quot;-n&quot;, &quot;hw.memsize&quot;]))

I wonder if this fix alone would be enough. :)

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:131
&gt; +        overhead = 2048 * 1024 * 1024  # Assume we need 2GB free for the O/S

This is similar to what I originally implemented when I first added this feature.   Didn&apos;t work very well on loaded machines with other things running.  But none of these heuristics work well in all cases.  I&apos;m happy to use whatever heuristics makes the largest % of people happy.  If this is that, then great. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652517</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-19 09:21:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 148225 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148225&amp;action=review
&gt; 
&gt; I predict that you&apos;ll find folks who complain about this change. :)  But it&apos;s fine with me.  I don&apos;t believe it&apos;s possible to make everyone happy here.
&gt; 
&gt; I might suggesting just changing the int/long thing first and seeing if that makes more people happy. :)
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/platforminfo.py:86
&gt; &gt; -            return int(self._executive.run_command([&quot;sysctl&quot;, &quot;-n&quot;, &quot;hw.memsize&quot;]))
&gt; &gt; +            return long(self._executive.run_command([&quot;sysctl&quot;, &quot;-n&quot;, &quot;hw.memsize&quot;]))
&gt; 
&gt; I wonder if this fix alone would be enough. :)
&gt; 

Could be. Thanks for the review. We&apos;ll see how this goes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652626</commentid>
    <comment_count>13</comment_count>
      <attachid>148367</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-19 11:20:18 -0700</bug_when>
    <thetext>Created attachment 148367
patch for landing - update tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652627</commentid>
    <comment_count>14</comment_count>
      <attachid>148367</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-19 11:20:46 -0700</bug_when>
    <thetext>Comment on attachment 148367
patch for landing - update tests

apparently I never ran the unit tests on this ... fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652757</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-19 13:47:24 -0700</bug_when>
    <thetext>Change committed as http://trac.webkit.org/changeset/120738 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148225</attachid>
            <date>2012-06-18 19:09:43 -0700</date>
            <delta_ts>2012-06-19 11:20:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81379-20120618190943.patch</filename>
            <type>text/plain</type>
            <size>10597</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjQ2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWI3MjI2YjZkYzhiYzMzNjIzNjViNjRmN2ViYTMxN2M0
YTM0ZDM0ZS4uYmYyZGFiNzQ0ZDNkYzg3MTE3MDY5MmJiNTA3NDI2NzY1NjA1YjZjOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEyLTA2LTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE5SV1Qgc2hvdWxkIG5vdCB0YWtlIG1lbW9yeSB1c2VkIGFzIGRpc2sgY2FjaGUgaW50
byBhY2NvdW50IHdoZW4gZGVjaWRpbmcgaG93IG1hbnkgcHJvY2Vzc2VzIHRvIGxhdW5jaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgJ2ZyZWUgbWVt
b3J5JyBjYWxjdWxhdGlvbiB3ZSB3ZXJlIHJ1bm5pbmcgb24gdGhlIG1hYyBzZWVtZWQKKyAgICAg
ICAgdG8gdW5kZXJlc3RpbWF0ZSBob3cgbWFueSBjaGlsZHJlbiB3ZSBjYW4gcnVuIGluIHBhcmFs
bGVsLCBhbmQKKyAgICAgICAgaXQgd2FzIGNvbXBsZXguIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhh
dCBjYWxjdWxhdGlvbiB3aXRoIGEKKyAgICAgICAgc2ltcGxlciBvbmUgdGhhdCByZXNlcnZlcyAy
R0IgZm9yIG92ZXJoZWFkIGFuZCBhc3N1bWVzIDI1Nk1CIHBlcgorICAgICAgICBEUlQvV1RSLCBz
byBpZiB3ZSBoYWQgNEdCIG9mIFJBTSB3ZSBjYW4gcnVuIHVwIHRvIDggRFJUcy4KKworICAgICAg
ICBBbHNvLCB0aGVyZSB3YXMgYSBidWcgd2hlcmUgd2Ugd2VyZSB0cnVuY2F0aW5nIHRoZSBtZW1v
cnkKKyAgICAgICAgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lIHRvIDRHQiBieSBjYXN0aW5nIHRv
IGFuIGludCBpbnN0ZWFkIG9mCisgICAgICAgIGEgbG9uZzsgdGhpcyB3YXMgcHJvYmFibHkgdGhl
IHNvdXJjZSBvZiBzb21lIG9mIHRoZSBlYXJsaWVyCisgICAgICAgIHByb2JsZW1zIHdoZW4gdXNp
bmcgdG90YWwgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHRoZSBu
by1sb25nZXItbmVlZGVkIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHdv
cmtlcnMgb24gYmVlZnkgTGlvbiBib3hlcyBmb3IgYm90aCBBcHBsZSBNYWMgYW5kIENocm9taXVt
CisgICAgICAgIE1hYzsgd2Ugc2hvdWxkIG5vdyB1c2UgYWxsIG9mIHRoZSBjb3JlcyBieSBkZWZh
dWx0LgorCisgICAgICAgIFRoZSBtZW1vcnkgY2FsY3VsYXRpb25zIGhhdmUgb25seSBiZWVuIGlt
cGxlbWVudGVkIG9uIHRoZSBtYWM7CisgICAgICAgIGhhdmluZyB0aGUgY2FsY3VsYXRpb24gaW4g
YmFzZS5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpIHdhcyBJTU8KKyAgICAgICAgbWlzbGVhZGlu
ZywgYW5kIHNvIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyB0aGUgY29tcHV0YXRpb24gaW50bworICAg
ICAgICB0aGUgTWFjUG9ydC4gSSBoYXZlIG5vdCBoZWFyZCBvZiB0aGUgIyBvZiB3b3JrZXJzIGJl
aW5nIGFuIGlzc3VlCisgICAgICAgIG9uIGFueSBvdGhlciBwb3J0cywgc28gdGhpcyBzaG91bGQg
YmUgZmluZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0
Zm9ybWluZm8ucHk6CisgICAgICAgIChQbGF0Zm9ybUluZm8uZGlzcGxheV9uYW1lKToKKyAgICAg
ICAgKFBsYXRmb3JtSW5mby50b3RhbF9ieXRlc19tZW1vcnkpOgorICAgICAgICAoUGxhdGZvcm1J
bmZvLl93aW5fdmVyc2lvbl90dXBsZV9mcm9tX2NtZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb191bml0dGVzdC5weToKKyAgICAgICAgKFRl
c3RQbGF0Zm9ybUluZm8udGVzdF90b3RhbF9ieXRlc19tZW1vcnkpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuZGVm
YXVsdF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0Lm9w
ZXJhdGluZ19zeXN0ZW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyk6
CisKIDIwMTItMDYtMTggIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIxMDA1NTgpOiBOUldUIHNob3VsZCB3b3JrIHdpdGhvdXQgU1ZO
IG9yIEdJVApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3BsYXRmb3JtaW5mby5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9w
bGF0Zm9ybWluZm8ucHkKaW5kZXggMzZhZjRmN2ZkNWU2OGYxMDQyZjNhZTUyMjQzYjk4ZTdmYmQ0
YWQxZS4uNzRjZmY1NDEyZWVjN2M1OWFjYjIxNjQ2NDhjZDM3NzhkODVmODM0MyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5
CkBAIC04MSwxOCArODEsOSBAQCBjbGFzcyBQbGF0Zm9ybUluZm8ob2JqZWN0KToKICAgICAgICAg
IyBXaW5kb3dzLTIwMDhTZXJ2ZXJSMi02LjEuNzYwMAogICAgICAgICByZXR1cm4gc2VsZi5fcGxh
dGZvcm1fbW9kdWxlLnBsYXRmb3JtKCkKIAotICAgIGRlZiBmcmVlX2J5dGVzX21lbW9yeShzZWxm
KToKLSAgICAgICAgaWYgc2VsZi5pc19tYWMoKToKLSAgICAgICAgICAgIHZtX3N0YXRfb3V0cHV0
ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsidm1fc3RhdCJdKQotICAgICAgICAgICAg
ZnJlZV9ieXRlcyA9IHNlbGYuX2NvbXB1dGVfYnl0ZXNfZnJvbV92bV9zdGF0X291dHB1dCgiUGFn
ZXMgZnJlZSIsIHZtX3N0YXRfb3V0cHV0KQotICAgICAgICAgICAgIyBQZXIgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NjUwIGluY2x1ZGUgaW5hY3RpdmUgbWVtb3J5
IHNpbmNlIHRoZSBPUyBpcyBsYXp5IGFib3V0IGZyZWVpbmcgbWVtb3J5LgotICAgICAgICAgICAg
ZnJlZV9ieXRlcyArPSBzZWxmLl9jb21wdXRlX2J5dGVzX2Zyb21fdm1fc3RhdF9vdXRwdXQoIlBh
Z2VzIGluYWN0aXZlIiwgdm1fc3RhdF9vdXRwdXQpCi0gICAgICAgICAgICByZXR1cm4gZnJlZV9i
eXRlcwotICAgICAgICByZXR1cm4gTm9uZQotCiAgICAgZGVmIHRvdGFsX2J5dGVzX21lbW9yeShz
ZWxmKToKICAgICAgICAgaWYgc2VsZi5pc19tYWMoKToKLSAgICAgICAgICAgIHJldHVybiBpbnQo
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsic3lzY3RsIiwgIi1uIiwgImh3Lm1lbXNpemUi
XSkpCisgICAgICAgICAgICByZXR1cm4gbG9uZyhzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQo
WyJzeXNjdGwiLCAiLW4iLCAiaHcubWVtc2l6ZSJdKSkKICAgICAgICAgcmV0dXJuIE5vbmUKIAog
ICAgIGRlZiBfZGV0ZXJtaW5lX29zX25hbWUoc2VsZiwgc3lzX3BsYXRmb3JtKToKQEAgLTE0MSwx
NCArMTMyLDMgQEAgY2xhc3MgUGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgIG1hdGNoX29i
amVjdCA9IHJlLnNlYXJjaChyJyg/UDxtYWpvcj5cZClcLig/UDxtaW5vcj5cZClcLig/UDxidWls
ZD5cZCspJywgdmVyX291dHB1dCkKICAgICAgICAgYXNzZXJ0IG1hdGNoX29iamVjdCwgJ2NtZCBy
ZXR1cm5lZCBhbiB1bmV4cGVjdGVkIHZlcnNpb24gc3RyaW5nOiAnICsgdmVyX291dHB1dAogICAg
ICAgICByZXR1cm4gdHVwbGUobWFwKGludCwgbWF0Y2hfb2JqZWN0Lmdyb3VwcygpKSkKLQotICAg
IGRlZiBfY29tcHV0ZV9ieXRlc19mcm9tX3ZtX3N0YXRfb3V0cHV0KHNlbGYsIGxhYmVsX3RleHQs
IHZtX3N0YXRfb3V0cHV0KToKLSAgICAgICAgcGFnZV9zaXplX21hdGNoID0gcmUuc2VhcmNoKHIi
cGFnZSBzaXplIG9mIChcZCspIGJ5dGVzIiwgdm1fc3RhdF9vdXRwdXQpCi0gICAgICAgIGZyZWVf
cGFnZXNfbWF0Y2ggPSByZS5zZWFyY2gociIlczpccysoXGQrKS4iICUgbGFiZWxfdGV4dCwgdm1f
c3RhdF9vdXRwdXQpCi0KLSAgICAgICAgIyBGYWlsIGhhcmQgaWYgdm1zdGF0J3Mgb3V0cHV0IGlz
bid0IHdoYXQgd2UgZXhwZWN0LgotICAgICAgICBhc3NlcnQocGFnZV9zaXplX21hdGNoIGFuZCBm
cmVlX3BhZ2VzX21hdGNoKQotCi0gICAgICAgIGZyZWVfcGFnZV9jb3VudCA9IGludChmcmVlX3Bh
Z2VzX21hdGNoLmdyb3VwKDEpKQotICAgICAgICBwYWdlX3NpemUgPSBpbnQocGFnZV9zaXplX21h
dGNoLmdyb3VwKDEpKQotICAgICAgICByZXR1cm4gZnJlZV9wYWdlX2NvdW50ICogcGFnZV9zaXpl
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZv
cm1pbmZvX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3BsYXRmb3JtaW5mb191bml0dGVzdC5weQppbmRleCA1YTFmODVmYzM5YjI3MWY1NjdlNmQ2ZWE3
NTUwODdhZjQyZWY2ZWRjLi4zOTU4YWZlM2UwNjVhZWY0NzY4MzNlOWJkMjliOTNiN2NlOTBjZWU5
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZv
cm1pbmZvX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9wbGF0Zm9ybWluZm9fdW5pdHRlc3QucHkKQEAgLTE4MCwyMiArMTgwLDYgQEAgY2xhc3Mg
VGVzdFBsYXRmb3JtSW5mbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGluZm8gPSBzZWxm
Lm1ha2VfaW5mbyhmYWtlX3N5cygnZnJlZWJzZDknKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoaW5mby50b3RhbF9ieXRlc19tZW1vcnkoKSwgTm9uZSkKIAotICAgIGRlZiB0ZXN0X2ZyZWVf
Ynl0ZXNfbWVtb3J5KHNlbGYpOgotICAgICAgICB2bXN0YXRfb3V0cHV0ID0gKCJNYWNoIFZpcnR1
YWwgTWVtb3J5IFN0YXRpc3RpY3M6IChwYWdlIHNpemUgb2YgNDA5NiBieXRlcylcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiUGFnZXMgZnJlZTogICAgICAgICAgICAgICAgICAgICAgICAx
LlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICJQYWdlcyBpbmFjdGl2ZTogICAgICAgICAg
ICAgICAgICAgIDEuXG4iKQotICAgICAgICBpbmZvID0gc2VsZi5tYWtlX2luZm8oZmFrZV9zeXMo
J2RhcndpbicpLCBmYWtlX3BsYXRmb3JtKCcxMC42LjMnKSwgZmFrZV9leGVjdXRpdmUodm1zdGF0
X291dHB1dCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGluZm8uZnJlZV9ieXRlc19tZW1v
cnkoKSwgODE5MikKLQotICAgICAgICBpbmZvID0gc2VsZi5tYWtlX2luZm8oZmFrZV9zeXMoJ3dp
bjMyJywgdHVwbGUoWzYsIDEsIDc2MDBdKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGlu
Zm8uZnJlZV9ieXRlc19tZW1vcnkoKSwgTm9uZSkKLQotICAgICAgICBpbmZvID0gc2VsZi5tYWtl
X2luZm8oZmFrZV9zeXMoJ2xpbnV4MicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpbmZv
LmZyZWVfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCi0KLSAgICAgICAgaW5mbyA9IHNlbGYubWFrZV9p
bmZvKGZha2Vfc3lzKCdmcmVlYnNkOScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpbmZv
LmZyZWVfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA2MmZiZGNlZWQ2MTg3MjRhMzE2MDQzNTNlOGRj
OTA5OTc1NDljZjk1Li40Yzk1OTcyOWRlYzBiOWM3ZWNmMzcxM2JhNzNmZDQ5YjRkMTcxNTYzIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CkBAIC0xNTQsMTcgKzE1NCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBkZWZh
dWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIg
b2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcyBwb3J0LiIiIgotICAg
ICAgICBjcHVfY291bnQgPSBzZWxmLl9leGVjdXRpdmUuY3B1X2NvdW50KCkKLSAgICAgICAgIyBN
YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggcmFtIHRvIHN1cHBvcnQgdGhhdCBtYW55IGluc3RhbmNl
czoKLSAgICAgICAgZnJlZV9tZW1vcnkgPSBzZWxmLmhvc3QucGxhdGZvcm0uZnJlZV9ieXRlc19t
ZW1vcnkoKQotICAgICAgICBpZiBmcmVlX21lbW9yeToKLSAgICAgICAgICAgIGJ5dGVzX3Blcl9k
cnQgPSAyMDAgKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgZWFjaCBEUlQgbmVlZHMgMjAwTUIgdG8g
cnVuLgotICAgICAgICAgICAgc3VwcG9ydGFibGVfaW5zdGFuY2VzID0gbWF4KGZyZWVfbWVtb3J5
IC8gYnl0ZXNfcGVyX2RydCwgMSkgICMgQWx3YXlzIHVzZSBvbmUgcHJvY2VzcywgZXZlbiBpZiB3
ZSBkb24ndCBoYXZlIHNwYWNlIGZvciBpdC4KLSAgICAgICAgICAgIGlmIHN1cHBvcnRhYmxlX2lu
c3RhbmNlcyA8IGNwdV9jb3VudDoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGUgUHJpbnRl
ciBpc24ndCBpbml0aWFsaXplZCB3aGVuIHRoaXMgaXMgY2FsbGVkLCBzbyB1c2luZyBfbG9nIHdv
dWxkIGp1c3Qgc2hvdyBhbiB1bml0aWFsaXplZCBsb2dnZXIgZXJyb3IuCi0gICAgICAgICAgICAg
ICAgcHJpbnQgIlRoaXMgbWFjaGluZSBjb3VsZCBzdXBwb3J0ICVzIGNoaWxkIHByb2Nlc3Nlcywg
YnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9yICVzLiIgJSAoY3B1X2NvdW50LCBzdXBwb3J0
YWJsZV9pbnN0YW5jZXMpCi0gICAgICAgICAgICByZXR1cm4gbWluKHN1cHBvcnRhYmxlX2luc3Rh
bmNlcywgY3B1X2NvdW50KQotICAgICAgICByZXR1cm4gY3B1X2NvdW50CisgICAgICAgIHJldHVy
biBzZWxmLl9leGVjdXRpdmUuY3B1X2NvdW50KCkKIAogICAgIGRlZiB3b3JrZXJfc3RhcnR1cF9k
ZWxheV9zZWNzKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVw
IHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4
IGIzYjdiMTQxNWVkYWIxMjgyNzJhZTllMjExNmNlMzhjOTU2Y2YzMTEuLjY5OGRiNzI2NmI4ZTlj
MGNlYWJiYmZkZjMwYjgzYjBmNWIxODdjM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC0xMDEsMTYg
KzEwMSw2IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
ICAgIGRlZiBvcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgogICAgICAgICByZXR1cm4gJ21hYycKIAot
ICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKLSAgICAgICAgIyBGSVhNRTog
QXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB3aGlsZSB3ZSBmaWd1cmUgb3V0IHdoYXQncyBnb2lu
ZwotICAgICAgICAjIG9uIHdpdGggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgzMDc2LCByZWR1Y2UgYnkKLSAgICAgICAgIyBoYWxmIHRoZSAjIG9mIHdvcmtlcnMgd2Ug
cnVuIGJ5IGRlZmF1bHQgb24gYmlnZ2VyIG1hY2hpbmVzLgotICAgICAgICBkZWZhdWx0X2NvdW50
ID0gc3VwZXIoQ2hyb21pdW1NYWNQb3J0LCBzZWxmKS5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcygp
Ci0gICAgICAgIGlmIGRlZmF1bHRfY291bnQgPj0gODoKLSAgICAgICAgICAgIGNwdV9jb3VudCA9
IHNlbGYuX2V4ZWN1dGl2ZS5jcHVfY291bnQoKQotICAgICAgICAgICAgcmV0dXJuIG1heCgxLCBt
aW4oZGVmYXVsdF9jb3VudCwgaW50KGNwdV9jb3VudCAvIDIpKSkKLSAgICAgICAgcmV0dXJuIGRl
ZmF1bHRfY291bnQKLQogICAgICMKICAgICAjIFBST1RFQ1RFRCBNRVRIT0RTCiAgICAgIwpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQppbmRleCA1
NjEyZWRjNmE0NDc5OWE4NjBmOWYyNDg0ZjhkODZiNzljZTg5NGE0Li41MjFjOTI5MWY1MWFiZWVi
ZDMyYTI5MDVkYjlhZTU0OWJmNjVjMmI4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQpAQCAtMTE3LDE4ICsxMTcsMjIgQEAgY2xhc3MgTWFj
UG9ydChBcHBsZVBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbiA9PSAibGlvbiIK
IAogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgIyBGSVhN
RTogVGhlIFByaW50ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28g
dXNpbmcgX2xvZyB3b3VsZCBqdXN0IHNob3cgYW4gdW5pdGlhbGl6ZWQgbG9nZ2VyIGVycm9yLgor
CiAgICAgICAgIGlmIHNlbGYuaXNfc25vd2xlb3BhcmQoKToKLSAgICAgICAgICAgIF9sb2cud2Fy
bigiQ2Fubm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJk
YXI6Ly9wcm9ibGVtLzEwNjIxNTI1LiIpCisgICAgICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJy
LCAiQ2Fubm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJk
YXI6Ly9wcm9ibGVtLzEwNjIxNTI1LiIKICAgICAgICAgICAgIHJldHVybiAxCiAKLSAgICAgICAg
IyBGSVhNRTogQXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB3aGlsZSB3ZSBmaWd1cmUgb3V0IHdo
YXQncyBnb2luZwotICAgICAgICAjIG9uIHdpdGggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzMDc2LCByZWR1Y2UgYnkKLSAgICAgICAgIyBoYWxmIHRoZSAjIG9mIHdv
cmtlcnMgd2UgcnVuIGJ5IGRlZmF1bHQgb24gYmlnZ2VyIG1hY2hpbmVzLgogICAgICAgICBkZWZh
dWx0X2NvdW50ID0gc3VwZXIoTWFjUG9ydCwgc2VsZikuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMo
KQotICAgICAgICBpZiBkZWZhdWx0X2NvdW50ID49IDg6Ci0gICAgICAgICAgICBjcHVfY291bnQg
PSBzZWxmLl9leGVjdXRpdmUuY3B1X2NvdW50KCkKLSAgICAgICAgICAgIHJldHVybiBtYXgoMSwg
bWluKGRlZmF1bHRfY291bnQsIGludChjcHVfY291bnQgLyAyKSkpCi0gICAgICAgIHJldHVybiBk
ZWZhdWx0X2NvdW50CisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggcmFtIHRv
IHN1cHBvcnQgdGhhdCBtYW55IGluc3RhbmNlczoKKyAgICAgICAgdG90YWxfbWVtb3J5ID0gc2Vs
Zi5ob3N0LnBsYXRmb3JtLnRvdGFsX2J5dGVzX21lbW9yeSgpCisgICAgICAgIGJ5dGVzX3Blcl9k
cnQgPSAyNTYgKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgZWFjaCBEUlQgbmVlZHMgMjU2TUIgdG8g
cnVuLgorICAgICAgICBvdmVyaGVhZCA9IDIwNDggKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgd2Ug
bmVlZCAyR0IgZnJlZSBmb3IgdGhlIE8vUworICAgICAgICBzdXBwb3J0YWJsZV9pbnN0YW5jZXMg
PSBtYXgoKHRvdGFsX21lbW9yeSAtIG92ZXJoZWFkKSAvIGJ5dGVzX3Blcl9kcnQsIDEpICAjIEFs
d2F5cyB1c2Ugb25lIHByb2Nlc3MsIGV2ZW4gaWYgd2UgZG9uJ3QgaGF2ZSBzcGFjZSBmb3IgaXQu
CisgICAgICAgIGlmIHN1cHBvcnRhYmxlX2luc3RhbmNlcyA8IGRlZmF1bHRfY291bnQ6CisgICAg
ICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiVGhpcyBtYWNoaW5lIGNvdWxkIHN1cHBvcnQg
JXMgY2hpbGQgcHJvY2Vzc2VzLCBidXQgb25seSBoYXMgZW5vdWdoIG1lbW9yeSBmb3IgJXMuIiAl
IChkZWZhdWx0X2NvdW50LCBzdXBwb3J0YWJsZV9pbnN0YW5jZXMpCisgICAgICAgIHJldHVybiBt
aW4oc3VwcG9ydGFibGVfaW5zdGFuY2VzLCBkZWZhdWx0X2NvdW50KQogCiAgICAgZGVmIF9idWls
ZF9qYXZhX3Rlc3Rfc3VwcG9ydChzZWxmKToKICAgICAgICAgamF2YV90ZXN0c19wYXRoID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAiamF2YSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148367</attachid>
            <date>2012-06-19 11:20:18 -0700</date>
            <delta_ts>2012-06-19 11:20:45 -0700</delta_ts>
            <desc>patch for landing - update tests</desc>
            <filename>bug-81379-20120619112018.patch</filename>
            <type>text/plain</type>
            <size>16301</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI2MGNjODBiOWQ5M2Q2OWM2MzcxZmVmYjgxZDAyZjJm
MGQ2OTg1NS4uODk2Y2JkNDlhMjA0MzM5MWJkZjM1YjA5YTM2NzYyZmVjOTcwMTE3ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUy
IEBACiAyMDEyLTA2LTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIE5SV1Qgc2hvdWxkIG5vdCB0YWtlIG1lbW9yeSB1c2VkIGFzIGRpc2sgY2FjaGUgaW50
byBhY2NvdW50IHdoZW4gZGVjaWRpbmcgaG93IG1hbnkgcHJvY2Vzc2VzIHRvIGxhdW5jaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBUaGUgJ2ZyZWUgbWVtb3J5
JyBjYWxjdWxhdGlvbiB3ZSB3ZXJlIHJ1bm5pbmcgb24gdGhlIG1hYyBzZWVtZWQKKyAgICAgICAg
dG8gdW5kZXJlc3RpbWF0ZSBob3cgbWFueSBjaGlsZHJlbiB3ZSBjYW4gcnVuIGluIHBhcmFsbGVs
LCBhbmQKKyAgICAgICAgaXQgd2FzIGNvbXBsZXguIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhhdCBj
YWxjdWxhdGlvbiB3aXRoIGEKKyAgICAgICAgc2ltcGxlciBvbmUgdGhhdCByZXNlcnZlcyAyR0Ig
Zm9yIG92ZXJoZWFkIGFuZCBhc3N1bWVzIDI1Nk1CIHBlcgorICAgICAgICBEUlQvV1RSLCBzbyBp
ZiB3ZSBoYWQgNEdCIG9mIFJBTSB3ZSBjYW4gcnVuIHVwIHRvIDggRFJUcy4KKworICAgICAgICBB
bHNvLCB0aGVyZSB3YXMgYSBidWcgd2hlcmUgd2Ugd2VyZSB0cnVuY2F0aW5nIHRoZSBtZW1vcnkK
KyAgICAgICAgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lIHRvIDRHQiBieSBjYXN0aW5nIHRvIGFu
IGludCBpbnN0ZWFkIG9mCisgICAgICAgIGEgbG9uZzsgdGhpcyB3YXMgcHJvYmFibHkgdGhlIHNv
dXJjZSBvZiBzb21lIG9mIHRoZSBlYXJsaWVyCisgICAgICAgIHByb2JsZW1zIHdoZW4gdXNpbmcg
dG90YWwgbWVtb3J5LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHRoZSBuby1s
b25nZXItbmVlZGVkIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgbnVtYmVyIG9mIHdvcmtl
cnMgb24gYmVlZnkgTGlvbiBib3hlcyBmb3IgYm90aCBBcHBsZSBNYWMgYW5kIENocm9taXVtCisg
ICAgICAgIE1hYzsgd2Ugc2hvdWxkIG5vdyB1c2UgYWxsIG9mIHRoZSBjb3JlcyBieSBkZWZhdWx0
LgorCisgICAgICAgIFRoZSBtZW1vcnkgY2FsY3VsYXRpb25zIGhhdmUgb25seSBiZWVuIGltcGxl
bWVudGVkIG9uIHRoZSBtYWM7CisgICAgICAgIGhhdmluZyB0aGUgY2FsY3VsYXRpb24gaW4gYmFz
ZS5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpIHdhcyBJTU8KKyAgICAgICAgbWlzbGVhZGluZywg
YW5kIHNvIHRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyB0aGUgY29tcHV0YXRpb24gaW50bworICAgICAg
ICB0aGUgTWFjUG9ydC4gSSBoYXZlIG5vdCBoZWFyZCBvZiB0aGUgIyBvZiB3b3JrZXJzIGJlaW5n
IGFuIGlzc3VlCisgICAgICAgIG9uIGFueSBvdGhlciBwb3J0cywgc28gdGhpcyBzaG91bGQgYmUg
ZmluZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9y
bWluZm8ucHk6CisgICAgICAgIChQbGF0Zm9ybUluZm8udG90YWxfYnl0ZXNfbWVtb3J5KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2su
cHk6CisgICAgICAgIChQbGF0Zm9ybUluZm8udG90YWxfYnl0ZXNfbWVtb3J5KToKKyAgICAgICAg
KFBsYXRmb3JtSW5mby50b3RhbF9ieXRlc19tZW1vcnkpOgorICAgICAgICAoUGxhdGZvcm1JbmZv
Ll93aW5fdmVyc2lvbl90dXBsZV9mcm9tX2NtZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb191bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RQ
bGF0Zm9ybUluZm8udGVzdF90b3RhbF9ieXRlc19tZW1vcnkpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuZGVmYXVs
dF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZV91bml0dGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0LnRlc3RfZGVmYXVs
dF9jaGlsZF9wcm9jZXNzZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0Lm9wZXJh
dGluZ19zeXN0ZW0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5OgorICAgICAgICAoTWFjUG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcyk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3Qu
cHk6CisgICAgICAgIChUZXN0TWFjUG9ydC50ZXN0X2RlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKToK
KworMjAxMi0wNi0xOSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyByZXBvcnRzIHVuZXhwZWN0ZWQgcGFzcyBvZiBwaXhl
bCB0ZXN0cyB3aGVuIHBpeGVsIHRlc3RpbmcgaXMgZGlzYWJsZWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1NDQ2CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvLnB5CmluZGV4IDM2YWY0
ZjdmZDVlNjhmMTA0MmYzYWU1MjI0M2I5OGU3ZmJkNGFkMWUuLjc0Y2ZmNTQxMmVlYzdjNTlhY2Iy
MTY0NjQ4Y2QzNzc4ZDg1ZjgzNDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm8ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mby5weQpAQCAtODEsMTggKzgxLDkgQEAgY2xhc3Mg
UGxhdGZvcm1JbmZvKG9iamVjdCk6CiAgICAgICAgICMgV2luZG93cy0yMDA4U2VydmVyUjItNi4x
Ljc2MDAKICAgICAgICAgcmV0dXJuIHNlbGYuX3BsYXRmb3JtX21vZHVsZS5wbGF0Zm9ybSgpCiAK
LSAgICBkZWYgZnJlZV9ieXRlc19tZW1vcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuaXNfbWFj
KCk6Ci0gICAgICAgICAgICB2bV9zdGF0X291dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29t
bWFuZChbInZtX3N0YXQiXSkKLSAgICAgICAgICAgIGZyZWVfYnl0ZXMgPSBzZWxmLl9jb21wdXRl
X2J5dGVzX2Zyb21fdm1fc3RhdF9vdXRwdXQoIlBhZ2VzIGZyZWUiLCB2bV9zdGF0X291dHB1dCkK
LSAgICAgICAgICAgICMgUGVyIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDY1MCBpbmNsdWRlIGluYWN0aXZlIG1lbW9yeSBzaW5jZSB0aGUgT1MgaXMgbGF6eSBhYm91
dCBmcmVlaW5nIG1lbW9yeS4KLSAgICAgICAgICAgIGZyZWVfYnl0ZXMgKz0gc2VsZi5fY29tcHV0
ZV9ieXRlc19mcm9tX3ZtX3N0YXRfb3V0cHV0KCJQYWdlcyBpbmFjdGl2ZSIsIHZtX3N0YXRfb3V0
cHV0KQotICAgICAgICAgICAgcmV0dXJuIGZyZWVfYnl0ZXMKLSAgICAgICAgcmV0dXJuIE5vbmUK
LQogICAgIGRlZiB0b3RhbF9ieXRlc19tZW1vcnkoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNf
bWFjKCk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChbInN5c2N0bCIsICItbiIsICJody5tZW1zaXplIl0pKQorICAgICAgICAgICAgcmV0dXJuIGxv
bmcoc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsic3lzY3RsIiwgIi1uIiwgImh3Lm1lbXNp
emUiXSkpCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX2RldGVybWluZV9vc19uYW1l
KHNlbGYsIHN5c19wbGF0Zm9ybSk6CkBAIC0xNDEsMTQgKzEzMiwzIEBAIGNsYXNzIFBsYXRmb3Jt
SW5mbyhvYmplY3QpOgogICAgICAgICBtYXRjaF9vYmplY3QgPSByZS5zZWFyY2gocicoP1A8bWFq
b3I+XGQpXC4oP1A8bWlub3I+XGQpXC4oP1A8YnVpbGQ+XGQrKScsIHZlcl9vdXRwdXQpCiAgICAg
ICAgIGFzc2VydCBtYXRjaF9vYmplY3QsICdjbWQgcmV0dXJuZWQgYW4gdW5leHBlY3RlZCB2ZXJz
aW9uIHN0cmluZzogJyArIHZlcl9vdXRwdXQKICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChpbnQs
IG1hdGNoX29iamVjdC5ncm91cHMoKSkpCi0KLSAgICBkZWYgX2NvbXB1dGVfYnl0ZXNfZnJvbV92
bV9zdGF0X291dHB1dChzZWxmLCBsYWJlbF90ZXh0LCB2bV9zdGF0X291dHB1dCk6Ci0gICAgICAg
IHBhZ2Vfc2l6ZV9tYXRjaCA9IHJlLnNlYXJjaChyInBhZ2Ugc2l6ZSBvZiAoXGQrKSBieXRlcyIs
IHZtX3N0YXRfb3V0cHV0KQotICAgICAgICBmcmVlX3BhZ2VzX21hdGNoID0gcmUuc2VhcmNoKHIi
JXM6XHMrKFxkKykuIiAlIGxhYmVsX3RleHQsIHZtX3N0YXRfb3V0cHV0KQotCi0gICAgICAgICMg
RmFpbCBoYXJkIGlmIHZtc3RhdCdzIG91dHB1dCBpc24ndCB3aGF0IHdlIGV4cGVjdC4KLSAgICAg
ICAgYXNzZXJ0KHBhZ2Vfc2l6ZV9tYXRjaCBhbmQgZnJlZV9wYWdlc19tYXRjaCkKLQotICAgICAg
ICBmcmVlX3BhZ2VfY291bnQgPSBpbnQoZnJlZV9wYWdlc19tYXRjaC5ncm91cCgxKSkKLSAgICAg
ICAgcGFnZV9zaXplID0gaW50KHBhZ2Vfc2l6ZV9tYXRjaC5ncm91cCgxKSkKLSAgICAgICAgcmV0
dXJuIGZyZWVfcGFnZV9jb3VudCAqIHBhZ2Vfc2l6ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BsYXRmb3JtaW5mb19tb2NrLnB5CmluZGV4IGQ5
ZTZjMDg5YWUyZmNlNDY5YmM4M2M1MjdhZTE3M2Y2YzhhZTcyZWUuLjM0ZmE5N2ZiNDJmNWVhYjhk
YzllYTNmYzUwYTI4N2QyZTJhNGI3MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGxhdGZvcm1pbmZvX21vY2sucHkKQEAgLTUxLDcgKzUx
LDQgQEAgY2xhc3MgTW9ja1BsYXRmb3JtSW5mbyhvYmplY3QpOgogICAgICAgICByZXR1cm4gIk1v
Y2tQbGF0Zm9ybSAxLjAiCiAKICAgICBkZWYgdG90YWxfYnl0ZXNfbWVtb3J5KHNlbGYpOgotICAg
ICAgICByZXR1cm4gMiAqIDEwMjQgKiAxMDI0ICogMTAyNCAgIyAyR0IgaXMgYSByZWFzb25hYmxl
IGFtb3VudCBvZiByYW0gdG8gbW9jay4KLQotICAgIGRlZiBmcmVlX2J5dGVzX21lbW9yeShzZWxm
KToKLSAgICAgICAgcmV0dXJuIDEgKiAxMDI0ICogMTAyNCAqIDEwMjQgICMgMUdCIGlzIGEgcmVh
c29uYWJsZSBhbW91bnQgb2YgcmFtIHRvIG1vY2sgYXMgZnJlZS4KKyAgICAgICAgcmV0dXJuIDMg
KiAxMDI0ICogMTAyNCAqIDEwMjQgICMgM0dCIGlzIGEgcmVhc29uYWJsZSBhbW91bnQgb2YgcmFt
IHRvIG1vY2suCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcGxhdGZvcm1pbmZvX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3BsYXRmb3JtaW5mb191bml0dGVzdC5weQppbmRleCA1YTFmODVmYzM5YjI3MWY1
NjdlNmQ2ZWE3NTUwODdhZjQyZWY2ZWRjLi44ZmM5NjFiMDg4ZDY0N2MyNWFhOTc1ZGExOWQyNDQ0
NjkxODc3NjA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcGxhdGZvcm1pbmZvX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9wbGF0Zm9ybWluZm9fdW5pdHRlc3QucHkKQEAgLTgyLDEwICs4Miw4IEBA
IGNsYXNzIFRlc3RQbGF0Zm9ybUluZm8odW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgIGlm
IGluZm8uaXNfbWFjKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby50b3RhbF9i
eXRlc19tZW1vcnkoKSA+IDApCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5mby5mcmVl
X2J5dGVzX21lbW9yeSgpID4gMCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGluZm8udG90YWxfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhpbmZvLmZyZWVfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCiAKICAgICBk
ZWYgdGVzdF9vc19uYW1lX2FuZF93cmFwcGVycyhzZWxmKToKICAgICAgICAgaW5mbyA9IHNlbGYu
bWFrZV9pbmZvKGZha2Vfc3lzKCdsaW51eDInKSkKQEAgLTE4MCwyMiArMTc4LDYgQEAgY2xhc3Mg
VGVzdFBsYXRmb3JtSW5mbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGluZm8gPSBzZWxm
Lm1ha2VfaW5mbyhmYWtlX3N5cygnZnJlZWJzZDknKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoaW5mby50b3RhbF9ieXRlc19tZW1vcnkoKSwgTm9uZSkKIAotICAgIGRlZiB0ZXN0X2ZyZWVf
Ynl0ZXNfbWVtb3J5KHNlbGYpOgotICAgICAgICB2bXN0YXRfb3V0cHV0ID0gKCJNYWNoIFZpcnR1
YWwgTWVtb3J5IFN0YXRpc3RpY3M6IChwYWdlIHNpemUgb2YgNDA5NiBieXRlcylcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAiUGFnZXMgZnJlZTogICAgICAgICAgICAgICAgICAgICAgICAx
LlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICJQYWdlcyBpbmFjdGl2ZTogICAgICAgICAg
ICAgICAgICAgIDEuXG4iKQotICAgICAgICBpbmZvID0gc2VsZi5tYWtlX2luZm8oZmFrZV9zeXMo
J2RhcndpbicpLCBmYWtlX3BsYXRmb3JtKCcxMC42LjMnKSwgZmFrZV9leGVjdXRpdmUodm1zdGF0
X291dHB1dCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGluZm8uZnJlZV9ieXRlc19tZW1v
cnkoKSwgODE5MikKLQotICAgICAgICBpbmZvID0gc2VsZi5tYWtlX2luZm8oZmFrZV9zeXMoJ3dp
bjMyJywgdHVwbGUoWzYsIDEsIDc2MDBdKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGlu
Zm8uZnJlZV9ieXRlc19tZW1vcnkoKSwgTm9uZSkKLQotICAgICAgICBpbmZvID0gc2VsZi5tYWtl
X2luZm8oZmFrZV9zeXMoJ2xpbnV4MicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpbmZv
LmZyZWVfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCi0KLSAgICAgICAgaW5mbyA9IHNlbGYubWFrZV9p
bmZvKGZha2Vfc3lzKCdmcmVlYnNkOScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhpbmZv
LmZyZWVfYnl0ZXNfbWVtb3J5KCksIE5vbmUpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f
JzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA2MmZiZGNlZWQ2MTg3MjRhMzE2MDQzNTNlOGRj
OTA5OTc1NDljZjk1Li40Yzk1OTcyOWRlYzBiOWM3ZWNmMzcxM2JhNzNmZDQ5YjRkMTcxNTYzIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
CkBAIC0xNTQsMTcgKzE1NCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBkZWZh
dWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIg
b2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcyBwb3J0LiIiIgotICAg
ICAgICBjcHVfY291bnQgPSBzZWxmLl9leGVjdXRpdmUuY3B1X2NvdW50KCkKLSAgICAgICAgIyBN
YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggcmFtIHRvIHN1cHBvcnQgdGhhdCBtYW55IGluc3RhbmNl
czoKLSAgICAgICAgZnJlZV9tZW1vcnkgPSBzZWxmLmhvc3QucGxhdGZvcm0uZnJlZV9ieXRlc19t
ZW1vcnkoKQotICAgICAgICBpZiBmcmVlX21lbW9yeToKLSAgICAgICAgICAgIGJ5dGVzX3Blcl9k
cnQgPSAyMDAgKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgZWFjaCBEUlQgbmVlZHMgMjAwTUIgdG8g
cnVuLgotICAgICAgICAgICAgc3VwcG9ydGFibGVfaW5zdGFuY2VzID0gbWF4KGZyZWVfbWVtb3J5
IC8gYnl0ZXNfcGVyX2RydCwgMSkgICMgQWx3YXlzIHVzZSBvbmUgcHJvY2VzcywgZXZlbiBpZiB3
ZSBkb24ndCBoYXZlIHNwYWNlIGZvciBpdC4KLSAgICAgICAgICAgIGlmIHN1cHBvcnRhYmxlX2lu
c3RhbmNlcyA8IGNwdV9jb3VudDoKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBUaGUgUHJpbnRl
ciBpc24ndCBpbml0aWFsaXplZCB3aGVuIHRoaXMgaXMgY2FsbGVkLCBzbyB1c2luZyBfbG9nIHdv
dWxkIGp1c3Qgc2hvdyBhbiB1bml0aWFsaXplZCBsb2dnZXIgZXJyb3IuCi0gICAgICAgICAgICAg
ICAgcHJpbnQgIlRoaXMgbWFjaGluZSBjb3VsZCBzdXBwb3J0ICVzIGNoaWxkIHByb2Nlc3Nlcywg
YnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9yICVzLiIgJSAoY3B1X2NvdW50LCBzdXBwb3J0
YWJsZV9pbnN0YW5jZXMpCi0gICAgICAgICAgICByZXR1cm4gbWluKHN1cHBvcnRhYmxlX2luc3Rh
bmNlcywgY3B1X2NvdW50KQotICAgICAgICByZXR1cm4gY3B1X2NvdW50CisgICAgICAgIHJldHVy
biBzZWxmLl9leGVjdXRpdmUuY3B1X2NvdW50KCkKIAogICAgIGRlZiB3b3JrZXJfc3RhcnR1cF9k
ZWxheV9zZWNzKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBJZiB3ZSBzdGFydCB3b3JrZXJzIHVw
IHRvbyBxdWlja2x5LCBEdW1wUmVuZGVyVHJlZSBhcHBlYXJzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5k
ZXggY2ExZjkzNTkzYzU1MWM3YjBkYTU0Y2FlY2MwMTUwM2Q0NTY0MGRlNS4uZjdhZmI3YjIyYzEy
YTM3YmU2MzBjZGJmNmYxOTNlOWI5MjM2MTQ0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtNjAs
MjEgKzYwLDcgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVm
IHRlc3RfZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydCgpCi0gICAgICAgICMgRXZlbiB0aG91Z2ggdGhlIE1vY2tQbGF0Zm9ybUluZm8g
c2hvd3MgMUdCIGZyZWUgbWVtb3J5IChlbm91Z2ggZm9yIDUgRFJUIGluc3RhbmNlcykKLSAgICAg
ICAgIyB3ZSdyZSBzdGlsbCBsaW1pdGVkIGJ5IHRoZSAyIG1vY2sgY29yZXMgd2UgaGF2ZToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKCksIDIp
Ci0gICAgICAgIGJ5dGVzX2Zvcl9kcnQgPSAyMDAgKiAxMDI0ICogMTAyNAotCi0gICAgICAgIHBv
cnQuaG9zdC5wbGF0Zm9ybS5mcmVlX2J5dGVzX21lbW9yeSA9IGxhbWJkYTogYnl0ZXNfZm9yX2Ry
dAotICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiVGhpcyBtYWNoaW5lIGNvdWxkIHN1cHBvcnQg
MiBjaGlsZCBwcm9jZXNzZXMsIGJ1dCBvbmx5IGhhcyBlbm91Z2ggbWVtb3J5IGZvciAxLlxuIgot
ICAgICAgICBjaGlsZF9wcm9jZXNzZXMgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMo
c2VsZiwgcG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcywgKCksIGV4cGVjdGVkX3N0ZG91dD1l
eHBlY3RlZF9zdGRvdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGRfcHJvY2Vzc2Vz
LCAxKQotCi0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIHVzZSBvbmUgcHJvY2Vz
cywgZXZlbiBpZiB3ZSBkb24ndCBoYXZlIHRoZSBtZW1vcnkgZm9yIGl0LgotICAgICAgICBwb3J0
Lmhvc3QucGxhdGZvcm0uZnJlZV9ieXRlc19tZW1vcnkgPSBsYW1iZGE6IGJ5dGVzX2Zvcl9kcnQg
LSAxCi0gICAgICAgIGV4cGVjdGVkX3N0ZG91dCA9ICJUaGlzIG1hY2hpbmUgY291bGQgc3VwcG9y
dCAyIGNoaWxkIHByb2Nlc3NlcywgYnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9yIDEuXG4i
Ci0gICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAoKSwgZXhwZWN0ZWRfc3Rkb3V0
PWV4cGVjdGVkX3N0ZG91dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9wcm9jZXNz
ZXMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWxzKHBvcnQuZGVmYXVsdF9jaGlsZF9w
cm9jZXNzZXMoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdF93ZGlmZl9vdXRwdXRfYXNf
aHRtbChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gIk9VVFBVVCAlcyAlcyAlcyIgJSAoUG9ydC5f
V0RJRkZfREVMLCBQb3J0Ll9XRElGRl9BREQsIFBvcnQuX1dESUZGX0VORCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMu
cHkKaW5kZXggYjNiN2IxNDE1ZWRhYjEyODI3MmFlOWUyMTE2Y2UzOGM5NTZjZjMxMS4uNjk4ZGI3
MjY2YjhlOWMwY2VhYmJiZmRmMzBiODNiMGY1YjE4N2MzYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAg
LTEwMSwxNiArMTAxLDYgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVt
UG9ydCk6CiAgICAgZGVmIG9wZXJhdGluZ19zeXN0ZW0oc2VsZik6CiAgICAgICAgIHJldHVybiAn
bWFjJwogCi0gICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgotICAgICAgICAj
IEZJWE1FOiBBcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIHdoaWxlIHdlIGZpZ3VyZSBvdXQgd2hh
dCdzIGdvaW5nCi0gICAgICAgICMgb24gd2l0aCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODMwNzYsIHJlZHVjZSBieQotICAgICAgICAjIGhhbGYgdGhlICMgb2Ygd29y
a2VycyB3ZSBydW4gYnkgZGVmYXVsdCBvbiBiaWdnZXIgbWFjaGluZXMuCi0gICAgICAgIGRlZmF1
bHRfY291bnQgPSBzdXBlcihDaHJvbWl1bU1hY1BvcnQsIHNlbGYpLmRlZmF1bHRfY2hpbGRfcHJv
Y2Vzc2VzKCkKLSAgICAgICAgaWYgZGVmYXVsdF9jb3VudCA+PSA4OgotICAgICAgICAgICAgY3B1
X2NvdW50ID0gc2VsZi5fZXhlY3V0aXZlLmNwdV9jb3VudCgpCi0gICAgICAgICAgICByZXR1cm4g
bWF4KDEsIG1pbihkZWZhdWx0X2NvdW50LCBpbnQoY3B1X2NvdW50IC8gMikpKQotICAgICAgICBy
ZXR1cm4gZGVmYXVsdF9jb3VudAotCiAgICAgIwogICAgICMgUFJPVEVDVEVEIE1FVEhPRFMKICAg
ICAjCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5
CmluZGV4IDU2MTJlZGM2YTQ0Nzk5YTg2MGY5ZjI0ODRmOGQ4NmI3OWNlODk0YTQuLmEzZWM2YTRi
OTM2NGNkYmRkYjY4NTMwOTIxY2RmYmM1ZTg1Y2Q2YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC0zMSw2ICszMSw3IEBAIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9y
dCBzeXMKIGltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5jcmFzaGxv
Z3MgaW1wb3J0IENyYXNoTG9ncwpAQCAtMTE3LDE4ICsxMTgsMjIgQEAgY2xhc3MgTWFjUG9ydChB
cHBsZVBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbiA9PSAibGlvbiIKIAogICAg
IGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhl
IFByaW50ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28gdXNpbmcg
X2xvZyB3b3VsZCBqdXN0IHNob3cgYW4gdW5pdGlhbGl6ZWQgbG9nZ2VyIGVycm9yLgorCiAgICAg
ICAgIGlmIHNlbGYuaXNfc25vd2xlb3BhcmQoKToKLSAgICAgICAgICAgIF9sb2cud2FybigiQ2Fu
bm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJkYXI6Ly9w
cm9ibGVtLzEwNjIxNTI1LiIpCisgICAgICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiQ2Fu
bm90IHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJkYXI6Ly9w
cm9ibGVtLzEwNjIxNTI1LiIKICAgICAgICAgICAgIHJldHVybiAxCiAKLSAgICAgICAgIyBGSVhN
RTogQXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB3aGlsZSB3ZSBmaWd1cmUgb3V0IHdoYXQncyBn
b2luZwotICAgICAgICAjIG9uIHdpdGggaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzMDc2LCByZWR1Y2UgYnkKLSAgICAgICAgIyBoYWxmIHRoZSAjIG9mIHdvcmtlcnMg
d2UgcnVuIGJ5IGRlZmF1bHQgb24gYmlnZ2VyIG1hY2hpbmVzLgogICAgICAgICBkZWZhdWx0X2Nv
dW50ID0gc3VwZXIoTWFjUG9ydCwgc2VsZikuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKQotICAg
ICAgICBpZiBkZWZhdWx0X2NvdW50ID49IDg6Ci0gICAgICAgICAgICBjcHVfY291bnQgPSBzZWxm
Ll9leGVjdXRpdmUuY3B1X2NvdW50KCkKLSAgICAgICAgICAgIHJldHVybiBtYXgoMSwgbWluKGRl
ZmF1bHRfY291bnQsIGludChjcHVfY291bnQgLyAyKSkpCi0gICAgICAgIHJldHVybiBkZWZhdWx0
X2NvdW50CisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggcmFtIHRvIHN1cHBv
cnQgdGhhdCBtYW55IGluc3RhbmNlczoKKyAgICAgICAgdG90YWxfbWVtb3J5ID0gc2VsZi5ob3N0
LnBsYXRmb3JtLnRvdGFsX2J5dGVzX21lbW9yeSgpCisgICAgICAgIGJ5dGVzX3Blcl9kcnQgPSAy
NTYgKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgZWFjaCBEUlQgbmVlZHMgMjU2TUIgdG8gcnVuLgor
ICAgICAgICBvdmVyaGVhZCA9IDIwNDggKiAxMDI0ICogMTAyNCAgIyBBc3N1bWUgd2UgbmVlZCAy
R0IgZnJlZSBmb3IgdGhlIE8vUworICAgICAgICBzdXBwb3J0YWJsZV9pbnN0YW5jZXMgPSBtYXgo
KHRvdGFsX21lbW9yeSAtIG92ZXJoZWFkKSAvIGJ5dGVzX3Blcl9kcnQsIDEpICAjIEFsd2F5cyB1
c2Ugb25lIHByb2Nlc3MsIGV2ZW4gaWYgd2UgZG9uJ3QgaGF2ZSBzcGFjZSBmb3IgaXQuCisgICAg
ICAgIGlmIHN1cHBvcnRhYmxlX2luc3RhbmNlcyA8IGRlZmF1bHRfY291bnQ6CisgICAgICAgICAg
ICBwcmludCA+PiBzeXMuc3RkZXJyLCAiVGhpcyBtYWNoaW5lIGNvdWxkIHN1cHBvcnQgJXMgY2hp
bGQgcHJvY2Vzc2VzLCBidXQgb25seSBoYXMgZW5vdWdoIG1lbW9yeSBmb3IgJXMuIiAlIChkZWZh
dWx0X2NvdW50LCBzdXBwb3J0YWJsZV9pbnN0YW5jZXMpCisgICAgICAgIHJldHVybiBtaW4oc3Vw
cG9ydGFibGVfaW5zdGFuY2VzLCBkZWZhdWx0X2NvdW50KQogCiAgICAgZGVmIF9idWlsZF9qYXZh
X3Rlc3Rfc3VwcG9ydChzZWxmKToKICAgICAgICAgamF2YV90ZXN0c19wYXRoID0gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAiamF2YSIpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0
LnB5CmluZGV4IGVlMjcwNzhkNDgxMjdiMmM3NTM0YThjMGU5NGIyYzYxY2UwMDI3NjYuLjJlYmYy
NTVhZWEwMWZjM2Y1MTYwMzUxZTY4ZWY2NDBhNzZlNDYxMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBA
IC0xODMsMTAgKzE4MywyMiBAQCBqYXZhLwogICAgICAgICAjIE1vY2tQbGF0Zm9ybUluZm8gb25s
eSBoYXMgMiBtb2NrIGNvcmVzLiAgVGhlIGltcG9ydGFudCBwYXJ0IGlzIHRoYXQgMiA+IDEuCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpLCAy
KQogCisgICAgICAgIGJ5dGVzX2Zvcl9kcnQgPSAyMDAgKiAxMDI0ICogMTAyNAorICAgICAgICBw
b3J0Lmhvc3QucGxhdGZvcm0udG90YWxfYnl0ZXNfbWVtb3J5ID0gbGFtYmRhOiBieXRlc19mb3Jf
ZHJ0CisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGlzIG1hY2hpbmUgY291bGQgc3VwcG9y
dCAyIGNoaWxkIHByb2Nlc3NlcywgYnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9yIDEuXG4i
CisgICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAoKSwgZXhwZWN0ZWRfc3RkZXJy
PWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9wcm9jZXNz
ZXMsIDEpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgdXNlIG9uZSBwcm9j
ZXNzLCBldmVuIGlmIHdlIGRvbid0IGhhdmUgdGhlIG1lbW9yeSBmb3IgaXQuCisgICAgICAgIHBv
cnQuaG9zdC5wbGF0Zm9ybS50b3RhbF9ieXRlc19tZW1vcnkgPSBsYW1iZGE6IGJ5dGVzX2Zvcl9k
cnQgLSAxCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJUaGlzIG1hY2hpbmUgY291bGQgc3Vw
cG9ydCAyIGNoaWxkIHByb2Nlc3NlcywgYnV0IG9ubHkgaGFzIGVub3VnaCBtZW1vcnkgZm9yIDEu
XG4iCisgICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAoKSwgZXhwZWN0ZWRfc3Rk
ZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9wcm9j
ZXNzZXMsIDEpCisKICAgICAgICAgIyBTbm93TGVvcGFyZCBoYXMgYSBDRk5ldHdvcmsgYnVnIHdo
aWNoIGNhdXNlcyBjcmFzaGVzIGlmIHdlIGV4ZWN1dGUgbW9yZSB0aGFuIG9uZSBjb3B5IG9mIERS
VCBhdCBvbmNlLgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSdtYWMt
c25vd2xlb3BhcmQnKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIkNhbm5vdCBydW4gdGVzdHMg
aW4gcGFyYWxsZWwgb24gU25vdyBMZW9wYXJkIGR1ZSB0byByZGFyOi8vcHJvYmxlbS8xMDYyMTUy
NS5cbiIKLSAgICAgICAgY2hpbGRfcHJvY2Vzc2VzID0gT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIHBvcnQuZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMsICgpLCBleHBlY3RlZF9s
b2dzPWV4cGVjdGVkX2xvZ3MpCisgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJDYW5ub3QgcnVu
IHRlc3RzIGluIHBhcmFsbGVsIG9uIFNub3cgTGVvcGFyZCBkdWUgdG8gcmRhcjovL3Byb2JsZW0v
MTA2MjE1MjUuXG4iCisgICAgICAgIGNoaWxkX3Byb2Nlc3NlcyA9IE91dHB1dENhcHR1cmUoKS5h
c3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LmRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzLCAoKSwgZXhw
ZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
aGlsZF9wcm9jZXNzZXMsIDEpCiAKICAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>