<?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>157591</bug_id>
          
          <creation_ts>2016-05-11 15:42:25 -0700</creation_ts>
          <short_desc>Protector Ref/RefPtrs should have a specified naming style</short_desc>
          <delta_ts>2020-04-17 20:19:46 -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>WebKit Website</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157610</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=157693</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=157708</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210682</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>jond</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192123</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 15:42:25 -0700</bug_when>
    <thetext>Protector Ref/RefPtrs should have a specified naming style

This came up during patch review of https://bugs.webkit.org/show_bug.cgi?id=157448 but has also come up many times before.

The name for a Ref/RefPtr protector should be &quot;protectedVariableName(variableName)&quot;

Proper naming for a protector should be like the following examples:

RefPtr&lt;Node&gt; protectedThis(this);
Ref&lt;Node&gt; protectedThis(*this);
RefPtr&lt;Node&gt; protectedNode(node);
RefPtr&lt;Connection&gt; protectedOtherConnection(&amp;otherConnection);
RefPtr&lt;Widget&gt; protectedWidget(m_widget);

Improper naming for which there are many examples in WebCore:

RefPtr&lt;Node&gt; protect(this);
RefPtr&lt;Node&gt; protector(this);
RefPtr&lt;Node&gt; self(this);
RefPtr&lt;Element&gt; elementRef(this);
RefPtr&lt;Tree&gt; someWeirdoOtherName(tree);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192124</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 15:43:27 -0700</bug_when>
    <thetext>I have the rules implemented in style checker, and am working on a patch to the website as well.

Once I&apos;m done and post the patch, I will email webkit-dev for comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192131</commentid>
    <comment_count>2</comment_count>
      <attachid>278676</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 16:00:36 -0700</bug_when>
    <thetext>Created attachment 278676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192162</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-11 17:11:54 -0700</bug_when>
    <thetext>http://lxr.mozilla.org/mozilla-central/search?string=kungfudeathgrip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192163</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 17:14:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; http://lxr.mozilla.org/mozilla-central/search?string=kungfudeathgrip

That&apos;s hilarious.

And, no.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192196</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-05-11 20:33:54 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Proper naming for a protector should be like the following examples:
&gt; 
&gt; RefPtr&lt;Node&gt; protectedThis(this);
&gt; Ref&lt;Node&gt; protectedThis(*this);
&gt; RefPtr&lt;Node&gt; protectedNode(node);
&gt; RefPtr&lt;Connection&gt; protectedOtherConnection(&amp;otherConnection);
&gt; RefPtr&lt;Widget&gt; protectedWidget(m_widget);

FWIW I think this is a great idea.

I like &quot;protector&quot; as well, but that name does not indicate the original use of the variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192217</commentid>
    <comment_count>6</comment_count>
      <attachid>278676</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-11 21:50:43 -0700</bug_when>
    <thetext>Comment on attachment 278676
Patch

Lets do this. Hope anyone who doesn’t like this style had a chance to complain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192219</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 21:57:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 278676 [details]
&gt; Patch
&gt; 
&gt; Lets do this. Hope anyone who doesn’t like this style had a chance to
&gt; complain.

Combine the bug with IRC and I&apos;ve only heard positive.

webkit-dev has silence in either direction.

I&apos;ll give potential naysayers overnight to speak up before landing this in the office tomorrow morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192250</commentid>
    <comment_count>8</comment_count>
      <attachid>278676</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-11 23:50:04 -0700</bug_when>
    <thetext>Comment on attachment 278676
Patch

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

&gt; Websites/webkit.org/code-style.md:723
&gt; +RefPtr&lt;Element&gt; protectedElement(&amp;element);

Having to repeat Element/element three times in a single line seems overly redundant.
How about protection(this) or protector(this)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192292</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-12 02:38:15 -0700</bug_when>
    <thetext>I agree with Ryosuke. How is including the variable name to the protector name useful? The variable you are protecting is right there and you never use the protector afterwards. Our coding style generally avoids this sort of redundancy.

The cases where you are protecting multiple things in a single function are (or should be) rare.

I like &apos;protect&apos; since it reads well but &apos;protected&apos; is fine too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192322</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 06:35:55 -0700</bug_when>
    <thetext>Since there&apos;s now stated opposition, I&apos;ll wait until there&apos;s agreement before landing.

---

(In reply to comment #8)
&gt; &gt; Websites/webkit.org/code-style.md:723
&gt; &gt; +RefPtr&lt;Element&gt; protectedElement(&amp;element);
&gt; 
&gt; Having to repeat Element/element three times in a single line seems overly
&gt; redundant.

Repeating Element 3 times only comes up in certain cases, such as when you&apos;re protecting an Element object named element.

While that is common, quite commonly we also see the variable name being protected *not* match the class it is a member of.

A handful of corrections to existing WebCore code would include:
RefPtr&lt;Node&gt; protectedRoot(root);
RefPtr&lt;SharedBuffer&gt; protectedData(data);
RefPtr&lt;Node&gt; protectedOrigin(origin);

I personally do not find the redundancy to be off-putting, but agree that - as a matter of taste - some might. However, it also has value, because...

(In reply to comment #9)
&gt; I agree with Ryosuke. How is including the variable name to the protector
&gt; name useful? The variable you are protecting is right there and you never
&gt; use the protector afterwards. 

While doing a global replace just for the (this) protectors, I found there are many cases where the protector is used later in the function. 

In some of these cases the function could be cleaned up to use the original variable instead, but in others it cannot. Examples include when the protector is captured in a lambda or when the original variable has been WTFMove()&apos;d to somewhere else.

So &quot;you never use the protector afterwards&quot; is a flawed argument against the style.

&gt; The cases where you are protecting multiple things in a single function are
&gt; (or should be) rare.

Again, while doing the global replace just for the (this) protectors, I did come across a non-trivial number of places where there were multiple protectors.

---

If I hadn&apos;t run the new check-webkit-style script against WebCore, I might&apos;ve been inclined to agree with this line of complaint against the proposed style.

But that&apos;s actually why I went ahead and implemented the script just to see how simple things are. I believe there are enough instances of complexity that this new style does make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192327</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-05-12 07:52:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I like &apos;protect&apos; since it reads well but &apos;protected&apos; is fine too.

I would prefer the noun (&quot;protector&quot;) rather than the verb (&quot;protect&quot;) or lone adjective (&quot;protected&quot; on its own).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192333</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 08:42:05 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; I like &apos;protect&apos; since it reads well but &apos;protected&apos; is fine too.
&gt; 
&gt; I would prefer the noun (&quot;protector&quot;) rather than the verb (&quot;protect&quot;) or
&gt; lone adjective (&quot;protected&quot; on its own).

If we *do* decide to not go forward with the &quot;protectedFoo&quot; style, I also strongly prefer &quot;protector&quot;, because it is a noun.

That said I still support the full proposal here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192357</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-12 09:32:25 -0700</bug_when>
    <thetext>Agreeing on a common name (protect/protector/protected/whatever) is a good idea and I&apos;m fine with any choice. The mandatory variable name match seems unnecessary in many/most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192360</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 09:35:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Agreeing on a common name (protect/protector/protected/whatever) is a good
&gt; idea and I&apos;m fine with any choice. The mandatory variable name match seems
&gt; unnecessary in many/most cases.

For the cases (that do exist) where there are multiple protectors, what would you suggest for resolving them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192364</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-12 09:45:33 -0700</bug_when>
    <thetext>To repeat what Brady said:

I originally started using the name protectedXXX when I realized that it was useful to capture the protected variable, not the original raw one, in a lambda defined in the function. A pure protector that only extends the lifetime but is never used was common, but in a way those are the worst kind because they are so hard to reason about. Even when we capture both “this” and “protectedThis” because we want to use the implicit “this-&gt;” to make the lambda look cleaner, it’s much clearer to capture “protectedThis” rather than “protector”.

Once I was using this in the cases where I wanted to capture, I realized that I found the naming scheme clearer in all those other cases, which is why I slightly prefer it.

Another way to put it is that I don’t think we could say it would be good style to use “protector” everywhere; it’s not a good name for a RefPtr that we capture in a lambda. So we’d need to avoid the “protector” name for those cases. And we’d need more than one name then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192367</commentid>
    <comment_count>16</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-12 09:55:09 -0700</bug_when>
    <thetext>I definitely support using more specific name where it is needed or helpful (and not just in this context).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192369</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 10:16:04 -0700</bug_when>
    <thetext>Perhaps I could propose a two point compromise:
-Protectors for &quot;this&quot; should always be called &quot;protectedThis&quot;
-Protectors for other variables can either be called &quot;protector&quot; or &quot;protectedVariableName&quot;, but nothing else.

I would be happy with this proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192452</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-12 13:56:15 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Perhaps I could propose a two point compromise:
&gt; -Protectors for &quot;this&quot; should always be called &quot;protectedThis&quot;
&gt; -Protectors for other variables can either be called &quot;protector&quot; or
&gt; &quot;protectedVariableName&quot;, but nothing else.
&gt; 
&gt; I would be happy with this proposal.

That seems like a nice compromise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192497</commentid>
    <comment_count>19</comment_count>
      <attachid>278769</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 15:25:20 -0700</bug_when>
    <thetext>Created attachment 278769
Updated patch

Made the changes to the regex to treat &quot;this&quot; and non-this differently, as well as combined it down to a single regex.

Also made the changes to the website.

Leaving Darin as the reviewer for now, since the changes are pretty straightforward.

Will be looking to land this relatively soonish unless somebody chimes in as being unhappy with the compromise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192498</commentid>
    <comment_count>20</comment_count>
      <attachid>278770</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 15:28:21 -0700</bug_when>
    <thetext>Created attachment 278770
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192769</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 09:16:51 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/200859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193109</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-14 11:36:08 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Perhaps I could propose a two point compromise:
&gt; -Protectors for &quot;this&quot; should always be called &quot;protectedThis&quot;
&gt; -Protectors for other variables can either be called &quot;protector&quot; or
&gt; &quot;protectedVariableName&quot;, but nothing else.
&gt; 
&gt; I would be happy with this proposal.

My two cents even though this patch has already landed:

I like the rule that says always &quot;protectedVariableName&quot; over &quot;protector&quot; because it&apos;s a simple rule to follow. It may be slightly annoying/redundant to have protectedVariableName in contexts where the &quot;variableName&quot; part isn&apos;t needed. But it will be even more annoying/confusing to see just &quot;protector&quot; when &quot;protectedVariableName&quot; is more appropriate. Having &quot;protectedVariableName&quot; be the only style allowed means we will never run into the latter code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193250</commentid>
    <comment_count>23</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-15 14:04:35 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; I like the rule that says always &quot;protectedVariableName&quot; over &quot;protector&quot;
&gt; because it&apos;s a simple rule to follow.

Me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193272</commentid>
    <comment_count>24</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-15 15:57:42 -0700</bug_when>
    <thetext>Style checker is now demanding bad naming, see https://bugs.webkit.org/show_bug.cgi?id=157694#c9 I don&apos;t think we should keep it like this.

Also I&apos;m not sure expanding the protector &apos;pattern&apos; to cover lambdas with uniform naming is useful in the first place. For that something like &apos;strongFoo&apos;, &apos;strongThis&apos; makes more sense to me (and is already used in a number of places), or just using our usual context dependent descriptive names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193273</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-15 16:02:54 -0700</bug_when>
    <thetext>I’m not sure this guideline fits into the style checker well. Ref and RefPtr are normal types that are used in many normal ways that are not the “protected” idiom. How would the style checker know?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193382</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:32:34 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Style checker is now demanding bad naming, see
&gt; https://bugs.webkit.org/show_bug.cgi?id=157694#c9 I don&apos;t think we should
&gt; keep it like this.

I don&apos;t think anybody ever argued that we should keep bad checks in, and I would love to stay on top of the impl of the rule to see how adept it can be made.

That said, in this case, it&apos;s bad RefPtr use - The method protects the RefCounted argument but doesn&apos;t need to.

The local RefPtr actually causes unneeded Ref churn.

In fact, same thing on line 94 of the same file inside CachedFont::ensureCustomFontData - Local RefPtr that looks like it might serve a use as a protector or &quot;other&quot;, but is actually useless.

&gt; Also I&apos;m not sure expanding the protector &apos;pattern&apos; to cover lambdas with
&gt; uniform naming is useful in the first place. For that something like
&gt; &apos;strongFoo&apos;, &apos;strongThis&apos; makes more sense to me (and is already used in a
&gt; number of places), or just using our usual context dependent descriptive
&gt; names.

Actually, this is exactly where Darin first started using the &quot;protectedThis&quot; pattern, I first started noticing in his reviews, and I grew to agree with him.

I understand that this particular use is subjective and a matter of taste.

But, objectively, &quot;strongThis&quot; and &quot;protectedThis&quot; are dangerous names to conflate, as there&apos;s a very important type of smart pointer called &quot;JSC::Strong&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193383</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:34:42 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #24)
&gt; &gt; Style checker is now demanding bad naming, see
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=157694#c9 I don&apos;t think we should
&gt; &gt; keep it like this.
&gt; 
&gt; I don&apos;t think anybody ever argued that we should keep bad checks in, and I
&gt; would love to stay on top of the impl of the rule to see how adept it can be
&gt; made.
&gt; 
&gt; That said, in this case, it&apos;s bad RefPtr use - The method protects the
&gt; RefCounted argument but doesn&apos;t need to.
&gt; 
&gt; The local RefPtr actually causes unneeded Ref churn.
&gt; 
&gt; In fact, same thing on line 94 of the same file inside
&gt; CachedFont::ensureCustomFontData - Local RefPtr that looks like it might
&gt; serve a use as a protector or &quot;other&quot;, but is actually useless.

I&apos;m chewing on ways that the message for the rule and perhaps the strictness level can be adjusted to suggest that the detected line may actually just be a misuse of RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193384</commentid>
    <comment_count>28</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:37:33 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I’m not sure this guideline fits into the style checker well. Ref and RefPtr
&gt; are normal types that are used in many normal ways that are not the
&gt; “protected” idiom. How would the style checker know?

I agree that parsing line-by-line, as the style checker currently does, it would be difficult to know.

If the style checker was aware of larger scopes the rule could much more effectively be implemented.

Has there ever been discussion/effort to make the style checker leverage clang/llvm somehow? (I&apos;m just pulling this out of thin air, am unsure how feasible it would be)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193386</commentid>
    <comment_count>29</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:41:47 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I’m not sure this guideline fits into the style checker well. Ref and RefPtr
&gt; are normal types that are used in many normal ways that are not the
&gt; “protected” idiom. How would the style checker know?

One way that we could do this today with line-by-line style checking would be to manually check for the known *bad* names. protect, protected, strong, nameRef, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193389</commentid>
    <comment_count>30</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-16 08:45:48 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #24)
&gt; &gt; Style checker is now demanding bad naming, see
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=157694#c9 I don&apos;t think we should
&gt; &gt; keep it like this.
&gt; 
&gt; I don&apos;t think anybody ever argued that we should keep bad checks in, and I
&gt; would love to stay on top of the impl of the rule to see how adept it can be
&gt; made.
&gt; 
&gt; That said, in this case, it&apos;s bad RefPtr use - The method protects the
&gt; RefCounted argument but doesn&apos;t need to.

Never mind - The way the method is constructed, it is valid RefPtr use, as the RefPtr is also used to hold a SharedBuffer::adoptVector;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278676</attachid>
            <date>2016-05-11 16:00:36 -0700</date>
            <delta_ts>2016-05-11 21:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157591-20160511160125.patch</filename>
            <type>text/plain</type>
            <size>9305</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNjk5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWFmNmYxZmYzMjU2Y2JiMTNiNjc3ZTRmOTAwZDAwOTNj
NDIzYzkyYS4uNDUwMTFkZTJmOTJhNGU0NDFkZTBhYmM4ZTVjZTVkNTFmZWFmOTMzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE2LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBQcm90ZWN0b3IgUmVmL1JlZlB0cnMgc2hvdWxkIGhhdmUgYSBzcGVjaWZpZWQgbmFtaW5n
IHN0eWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU3NTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAgICAgKGNoZWNr
X2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6CisgICAgICAgIChDcHBDaGVja2VyKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5w
eToKKyAgICAgICAgKFdlYktpdFN0eWxlVGVzdC50ZXN0X25hbWVzKToKKwogMjAxNi0wNS0xMSAg
Sm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gYWNj
ZXNzaWJpbGl0eS9hcmlhLXJlYWRvbmx5Lmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCBjYjkwMmM3ODFhYTIzZDllNzIy
ODE5NGFkMTk3M2E1NDMzMGRkZTAwLi44OGJkNmI0NDgwYmZkNWNjODhmMmI3ZWNiY2IyZTU3ODU5
MTliOTNlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5w
eQpAQCAtMzMwNiw2ICszMzA2LDMxIEBAIGRlZiBjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVj
bGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBmaWxlX3N0YXRlCiAgICAgIyBS
ZW1vdmUgIm5ldyIgYW5kICJuZXcgKGV4cHIpIiB0byBzaW1wbGlmeSwgdG9vLgogICAgIGxpbmUg
PSBzdWIociduZXdccyooXChbXildKlwpKT8nLCAnJywgbGluZSkKIAorICAgICMgTWFrZSBzdXJl
IFJlZi9SZWZQdHJzIHVzZWQgYXMgcHJvdGVjdG9ycyBhcmUgbmFtZWQgY29ycmVjdGx5LgorICAg
IHJlZl9yZWdleHAgPSByJ15ccypSZWY8KFtcd19dfDo6KSs+ICg/UDxwcm90ZWN0b3JfbmFtZT5b
XHdfXSspXChcKioobV8pPyg/UDxwcm90ZWN0ZWRfbmFtZT5bXHdfXSspXCk7JworICAgIHJlZl9j
aGVjayA9IG1hdGNoKHJlZl9yZWdleHAsIGxpbmUpCisgICAgaWYgcmVmX2NoZWNrOgorICAgICAg
ICBwcm90ZWN0b3JfbmFtZSA9IHJlZl9jaGVjay5ncm91cCgncHJvdGVjdG9yX25hbWUnKQorICAg
ICAgICBwcm90ZWN0ZWRfbmFtZSA9IHJlZl9jaGVjay5ncm91cCgncHJvdGVjdGVkX25hbWUnKQor
ICAgICAgICBjYXBfcHJvdGVjdGVkX25hbWUgPSBwcm90ZWN0ZWRfbmFtZVswXS51cHBlcigpICsg
cHJvdGVjdGVkX25hbWVbMTpdCisgICAgICAgIGV4cGVjdGVkX3Byb3RlY3Rvcl9uYW1lID0gJ3By
b3RlY3RlZCcgKyBjYXBfcHJvdGVjdGVkX25hbWUKKyAgICAgICAgaWYgZXhwZWN0ZWRfcHJvdGVj
dG9yX25hbWUgPT0gcHJvdGVjdG9yX25hbWU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbmFtaW5n
L3Byb3RlY3RlZCcsIDQsICJcJyIgKyBwcm90ZWN0b3JfbmFtZSArICJcJyBpcyBpbmNvcnJlY3Rs
eSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkIFwnIiArIGV4cGVjdGVkX3Byb3RlY3Rvcl9uYW1l
ICsgIlwnLiIpCisKKyAgICByZWZwdHJfcmVnZXhwID0gcideXHMqUmVmUHRyPChbXHdfXXw6Oikr
PiAoP1A8cHJvdGVjdG9yX25hbWU+W1x3X10rKVwoJioobV8pPyg/UDxwcm90ZWN0ZWRfbmFtZT5b
XHdfXSspXCk7JworICAgIHJlZnB0cl9jaGVjayA9IG1hdGNoKHJlZnB0cl9yZWdleHAsIGxpbmUp
CisgICAgaWYgcmVmcHRyX2NoZWNrOgorICAgICAgICBwcm90ZWN0b3JfbmFtZSA9IHJlZnB0cl9j
aGVjay5ncm91cCgncHJvdGVjdG9yX25hbWUnKQorICAgICAgICBwcm90ZWN0ZWRfbmFtZSA9IHJl
ZnB0cl9jaGVjay5ncm91cCgncHJvdGVjdGVkX25hbWUnKQorICAgICAgICBjYXBfcHJvdGVjdGVk
X25hbWUgPSBwcm90ZWN0ZWRfbmFtZVswXS51cHBlcigpICsgcHJvdGVjdGVkX25hbWVbMTpdCisg
ICAgICAgIGV4cGVjdGVkX3Byb3RlY3Rvcl9uYW1lID0gJ3Byb3RlY3RlZCcgKyBjYXBfcHJvdGVj
dGVkX25hbWUKKyAgICAgICAgaWYgZXhwZWN0ZWRfcHJvdGVjdG9yX25hbWUgPT0gcHJvdGVjdG9y
X25hbWU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVy
cm9yKGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3RlZCcsIDQsICJcJyIg
KyBwcm90ZWN0b3JfbmFtZSArICJcJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJl
IG5hbWVkIFwnIiArIGV4cGVjdGVkX3Byb3RlY3Rvcl9uYW1lICsgIlwnLiIpCisKICAgICAjIFJl
bW92ZSBhbGwgdGVtcGxhdGUgcGFyYW1ldGVycyBieSByZW1vdmluZyBtYXRjaGluZyA8IGFuZCA+
LgogICAgICMgTG9vcCB1bnRpbCBubyB0ZW1wbGF0ZXMgYXJlIHJlbW92ZWQgdG8gcmVtb3ZlIG5l
c3RlZCB0ZW1wbGF0ZXMuCiAgICAgd2hpbGUgVHJ1ZToKQEAgLTM4NDYsNiArMzg3MSw3IEBAIGNs
YXNzIENwcENoZWNrZXIob2JqZWN0KToKICAgICAgICAgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9z
dHJpbmcnLAogICAgICAgICAncmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUnLAogICAgICAgICAn
cmVhZGFiaWxpdHkvbmFtaW5nJywKKyAgICAgICAgJ3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0
ZWQnLAogICAgICAgICAncmVhZGFiaWxpdHkvbmFtaW5nL3VuZGVyc2NvcmVzJywKICAgICAgICAg
J3JlYWRhYmlsaXR5L251bGwnLAogICAgICAgICAncmVhZGFiaWxpdHkvc3RyZWFtcycsCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0
LnB5CmluZGV4IDE0ZjBhYTYxMzE2ZGJmOGRjYTI3Y2EwZGJlMjZkNzFlMWEwODkwZjguLjRmNGVl
ODgyNWRkZjIzNDYwNjBlODQ5MjEyZjQ5NmYwOTdlMzU4ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC01MTc5
LDYgKzUxNzksMzcgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCd1bnNpZ25lZCBfZmlsbFJ1bGUgOiAxOycsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ19maWxsUnVsZScgKyBuYW1lX3VuZGVyc2NvcmVfZXJyb3Jf
bWVzc2FnZSkKIAorICAgICAgICAjIFByb3RlY3RpbmcgUmVmUHRyL1JlZiB2YXJpYWJsZSBuYW1l
cy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRoaXMo
dGhpcyk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5v
ZGU+IHByb3RlY3RlZE5vZGUobm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J1JlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKCZub2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3RlY3RlZE5vZGUobm9kZSk7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWROb2RlKCpub2RlKTsnLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZE90aGVyTm9k
ZShvdGhlck5vZGUpOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9k
ZT4gcHJvdGVjdGVkT3RoZXJOb2RlKCZvdGhlck5vZGUpOycsICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkT3RoZXJOb2RlKG90aGVyTm9kZSk7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRPdGhlck5vZGUo
Km90aGVyTm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxXaWRn
ZXQ+IHByb3RlY3RlZFdpZGdldChtX3dpZGdldCk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ1JlZlB0cjxXaWRnZXQ+IHByb3RlY3RlZFdpZGdldCgmbV93aWRnZXQpOycsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8V2lkZ2V0PiBwcm90ZWN0ZWRXaWRnZXQobV93
aWRnZXQpOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8V2lkZ2V0PiBwcm90
ZWN0ZWRXaWRnZXQoKm1fd2lkZ2V0KTsnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdSZWZQdHI8Tm9kZT4gcHJvdGVjdG9yKHRoaXMpOycsICIncHJvdGVjdG9yJyBpcyBpbmNvcnJl
Y3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0ZWRUaGlzJy4gIFtyZWFkYWJp
bGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdS
ZWY8Tm9kZT4gcHJvdGVjdG9yKCp0aGlzKTsnLCAiJ3Byb3RlY3RvcicgaXMgaW5jb3JyZWN0bHkg
bmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkv
bmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRy
PE5vZGU+IHNlbGYodGhpcyk7JywgIidzZWxmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hv
dWxkIGJlIG5hbWVkICdwcm90ZWN0ZWRUaGlzJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVj
dGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gc2VsZigqdGhp
cyk7JywgIidzZWxmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdw
cm90ZWN0ZWRUaGlzJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJvdGVjdGVkVGhpcyhub2RlKTsn
LCAiJ3Byb3RlY3RlZFRoaXMnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFt
ZWQgJ3Byb3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2RlPiBwcm90ZWN0ZWRUaGlzKCZu
b2RlKTsnLCAiJ3Byb3RlY3RlZFRoaXMnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQg
YmUgbmFtZWQgJ3Byb3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRd
IFs0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRUaGlz
KG5vZGUpOycsICIncHJvdGVjdGVkVGhpcycgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3Vs
ZCBiZSBuYW1lZCAncHJvdGVjdGVkTm9kZScuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3Rl
ZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3RlY3RlZFRo
aXMoKm5vZGUpOycsICIncHJvdGVjdGVkVGhpcycgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNo
b3VsZCBiZSBuYW1lZCAncHJvdGVjdGVkTm9kZScuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3Rl
Y3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3Rl
Y3RlZE5vZGUob3RoZXJOb2RlKTsnLCAiJ3Byb3RlY3RlZE5vZGUnIGlzIGluY29ycmVjdGx5IG5h
bWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3Byb3RlY3RlZE90aGVyTm9kZScuICBbcmVhZGFiaWxp
dHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVm
UHRyPE5vZGU+IHByb3RlY3RlZE5vZGUoJm90aGVyTm9kZSk7JywgIidwcm90ZWN0ZWROb2RlJyBp
cyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0ZWRPdGhlck5v
ZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWROb2RlKG90aGVyTm9kZSk7JywgIidwcm90
ZWN0ZWROb2RlJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90
ZWN0ZWRPdGhlck5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWROb2RlKCpvdGhlck5v
ZGUpOycsICIncHJvdGVjdGVkTm9kZScgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBi
ZSBuYW1lZCAncHJvdGVjdGVkT3RoZXJOb2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVj
dGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gbm9kZVJl
Zihub2RlKTsnLCAiJ25vZGVSZWYnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUg
bmFtZWQgJ3Byb3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0
XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBub2RlUmVmKCpub2RlKTsn
LCAiJ25vZGVSZWYnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3By
b3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisKICAg
ICBkZWYgdGVzdF9wYXJhbWV0ZXJfbmFtZXMoc2VsZik6CiAgICAgICAgICMgTGVhdmUgbWVhbmlu
Z2xlc3MgdmFyaWFibGUgbmFtZXMgb3V0IG9mIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KICAgICAg
ICAgbWVhbmluZ2xlc3NfdmFyaWFibGVfbmFtZV9lcnJvcl9tZXNzYWdlID0gJ1RoZSBwYXJhbWV0
ZXIgbmFtZSAiJXMiIGFkZHMgbm8gaW5mb3JtYXRpb24sIHNvIGl0IHNob3VsZCBiZSByZW1vdmVk
LiAgW3JlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lXSBbNV0nCmRpZmYgLS1naXQgYS9XZWJzaXRl
cy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmlu
ZGV4IDAzMGYwMDhkNDlhNDU4MzZjZTI3YTY1ZjU5OTk0OWIwMWFlZWUyODguLmEyYjMxZWMxYjAx
MWY5OTkzYzdlY2MwMjA0YTAxMjJmNmQ1ZTE0YzIgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtp
dC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTYtMDUtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIFByb3RlY3RvciBSZWYvUmVmUHRycyBzaG91bGQgaGF2ZSBhIHNwZWNpZmll
ZCBuYW1pbmcgc3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTc1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGNvZGUtc3R5bGUubWQ6CisKIDIwMTYtMDQtMjYgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBoYXJkLXdyYXBzIGZyb20gdGhl
IGZlYXR1cmUgcG9saWN5IG1hcmtkb3duIHNvIGl0IHJlbmRlcnMgZnVsbCB3aWR0aCBvbiB0aGUg
c2l0ZS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kZS1zdHlsZS5tZCBiL1dl
YnNpdGVzL3dlYmtpdC5vcmcvY29kZS1zdHlsZS5tZAppbmRleCA0NDBmYzkyNGJkMGY5Y2RlZjBk
ZmExMDYyNWY1ZGM4MjE5MWU4NWM3Li5jNzhiOGI3ODI3ODFhZDY4MGNlNWRjNWE2MDliOGVjMTJm
MmEyYjUwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy93ZWJraXQub3JnL2NvZGUtc3R5bGUubWQKKysr
IGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RlLXN0eWxlLm1kCkBAIC03MTMsNiArNzEzLDI2IEBA
IHNldFJlc2l6YWJsZShOb3RSZXNpemFibGUpOwogI2RlZmluZSBfSFRNTF9ET0NVTUVOVF9IXwog
YGBgCiAKK1tdKCNuYW1lcy1wcm90ZWN0b3JzKSBSZWYgYW5kIFJlZlB0ciBvYmplY3RzIG1lYW50
IHRvIHByb3RlY3QgYSBSZWZDb3VudGVkIHZhcmlhYmxlIHNob3VsZCBiZSBuYW1lZCAicHJvdGVj
dGVkIiBjb21iaW5lZCB3aXRoIHRoZSBjYXBpdGFsaXplZCBmb3JtIG9mIHRoZSB2YXJpYWJsZSBu
YW1lLgorCisjIyMjIyMgUmlnaHQ6CisKK2BgYGNwcAorUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRo
aXModGhpcyk7CitSZWY8Tm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CitSZWZQdHI8RWxlbWVu
dD4gcHJvdGVjdGVkRWxlbWVudCgmZWxlbWVudCk7CitSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0ZWRN
YWluV2lkZ2V0KG1fbWFpbldpZGdldCk7CitgYGAKKworIyMjIyMjIFdyb25nOgorCitgYGBjcHAK
K1JlZlB0cjxOb2RlPiBwcm90ZWN0KHRoaXMpOworUmVmUHRyPFdpZGdldD4gc2VsZih0aGlzKTsK
K1JlZlB0cjxOb2RlPiBub2RlUmVmKCZyb290Tm9kZSk7CitSZWY8RWxlbWVudD4gcHJvdGVjdG9y
KCplbGVtZW50KTsKK2BgYAorCiAjIyMgT3RoZXIgUHVuY3R1YXRpb24KIAogW10oI3B1bmN0dWF0
aW9uLW1lbWJlci1pbml0KSBDb25zdHJ1Y3RvcnMgZm9yIEMrKyBjbGFzc2VzIHNob3VsZCBpbml0
aWFsaXplIGFsbCBvZiB0aGVpciBtZW1iZXJzIHVzaW5nIEMrKyBpbml0aWFsaXplciBzeW50YXgu
IEVhY2ggbWVtYmVyIChhbmQgc3VwZXJjbGFzcykgc2hvdWxkIGJlIGluZGVudGVkIG9uIGEgc2Vw
YXJhdGUgbGluZSwgd2l0aCB0aGUgY29sb24gb3IgY29tbWEgcHJlY2VkaW5nIHRoZSBtZW1iZXIg
b24gdGhhdCBsaW5lLgo=
</data>
<flag name="review"
          id="302736"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278769</attachid>
            <date>2016-05-12 15:25:20 -0700</date>
            <delta_ts>2016-05-12 15:28:21 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10037</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmU5
Y2MzLi4yMTAwOTcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDUtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3RlY3RvciBSZWYvUmVmUHRycyBzaG91bGQgaGF2
ZSBhIHNwZWNpZmllZCBuYW1pbmcgc3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
OgorICAgICAgICAoY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKToKKyAgICAg
ICAgKENwcENoZWNrZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoV2ViS2l0U3R5bGVUZXN0LnRlc3RfbmFtZXMp
OgorCiAyMDE2LTA1LTEyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpIGd1YXJkcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCBjYjkw
MmM3Li4yYTNhZjRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weQpAQCAtMzI5MSw2ICszMjkxLDIxIEBAIGRlZiBjaGVja19pZGVudGlmaWVyX25hbWVf
aW5fZGVjbGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBmaWxlX3N0YXRlCiAg
ICAgaWYgbWF0Y2gocidccyoocmV0dXJufGRlbGV0ZSlcYicsIGxpbmUpOgogICAgICAgICByZXR1
cm4KIAorICAgICMgTWFrZSBzdXJlIFJlZi9SZWZQdHJzIHVzZWQgYXMgcHJvdGVjdG9ycyBhcmUg
bmFtZWQgY29ycmVjdGx5LCBhbmQgZG8gdGhpcyBiZWZvcmUgd2Ugc3RhcnQgc3RyaXBwaW5nIHRo
aW5ncyBvZmYgdGhlIGlucHV0LgorICAgIHJlZl9yZWdleHAgPSByJ15ccypSZWYoUHRyKT88KFtc
d19dfDo6KSs+ICg/UDxwcm90ZWN0b3JfbmFtZT5bXHdfXSspXCgoXCp8JikqKG1fKT8oP1A8cHJv
dGVjdGVkX25hbWU+W1x3X10rKVwpOycKKyAgICByZWZfY2hlY2sgPSBtYXRjaChyZWZfcmVnZXhw
LCBsaW5lKQorICAgIGlmIHJlZl9jaGVjazoKKyAgICAgICAgcHJvdGVjdG9yX25hbWUgPSByZWZf
Y2hlY2suZ3JvdXAoJ3Byb3RlY3Rvcl9uYW1lJykKKyAgICAgICAgcHJvdGVjdGVkX25hbWUgPSBy
ZWZfY2hlY2suZ3JvdXAoJ3Byb3RlY3RlZF9uYW1lJykKKyAgICAgICAgY2FwX3Byb3RlY3RlZF9u
YW1lID0gcHJvdGVjdGVkX25hbWVbMF0udXBwZXIoKSArIHByb3RlY3RlZF9uYW1lWzE6XQorICAg
ICAgICBleHBlY3RlZF9wcm90ZWN0b3JfbmFtZSA9ICdwcm90ZWN0ZWQnICsgY2FwX3Byb3RlY3Rl
ZF9uYW1lCisgICAgICAgIGlmIHByb3RlY3RlZF9uYW1lID09ICd0aGlzJyBhbmQgcHJvdGVjdG9y
X25hbWUgIT0gJ3Byb3RlY3RlZFRoaXMnOgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywgNCwgIlwnIiArIHByb3RlY3Rvcl9uYW1l
ICsgIlwnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgXCdwcm90ZWN0
ZWRUaGlzXCcuIikKKyAgICAgICAgZWxpZiBwcm90ZWN0b3JfbmFtZSA9PSBleHBlY3RlZF9wcm90
ZWN0b3JfbmFtZSBvciBwcm90ZWN0b3JfbmFtZSA9PSAncHJvdGVjdG9yJzoKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdy
ZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywgNCwgIlwnIiArIHByb3RlY3Rvcl9uYW1lICsg
IlwnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgXCdwcm90ZWN0b3Jc
JyBvciBcJyIgKyBleHBlY3RlZF9wcm90ZWN0b3JfbmFtZSArICJcJy4iKQorCiAgICAgIyBCYXNp
Y2FsbHksIGEgZGVjbGFyYXRpb24gaXMgYSB0eXBlIG5hbWUgZm9sbG93ZWQgYnkgd2hpdGVzcGFj
ZXMKICAgICAjIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIuIFRoZSB0eXBlIG5hbWUgY2FuIGJl
IGNvbXBsaWNhdGVkCiAgICAgIyBkdWUgdG8gdHlwZSBhZGplY3RpdmVzIGFuZCB0ZW1wbGF0ZXMu
IFdlIHJlbW92ZSB0aGVtIGZpcnN0IHRvCkBAIC0zODQ2LDYgKzM4NjEsNyBAQCBjbGFzcyBDcHBD
aGVja2VyKG9iamVjdCk6CiAgICAgICAgICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nJywK
ICAgICAgICAgJ3JlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lJywKICAgICAgICAgJ3JlYWRhYmls
aXR5L25hbWluZycsCisgICAgICAgICdyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywKICAg
ICAgICAgJ3JlYWRhYmlsaXR5L25hbWluZy91bmRlcnNjb3JlcycsCiAgICAgICAgICdyZWFkYWJp
bGl0eS9udWxsJywKICAgICAgICAgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRl
eCAxNGYwYWE2Li5lNjNhNmE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtNTE3OSw2ICs1MTc5LDUyIEBAIGNs
YXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndW5zaWduZWQgX2ZpbGxSdWxlIDogMTsnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICdfZmlsbFJ1bGUnICsgbmFtZV91bmRlcnNjb3JlX2Vycm9yX21lc3NhZ2UpCiAKKyAgICAg
ICAgIyBWYWxpZCBwcm90ZWN0b3IgUmVmUHRyL1JlZiB2YXJpYWJsZSBuYW1lcy4KKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRoaXModGhpcyk7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3Rl
ZE5vZGUobm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2Rl
PiBwcm90ZWN0ZWROb2RlKCZub2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
UmVmUHRyPE5vZGU+IHByb3RlY3Rvcihub2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3Rvcigmbm9kZSk7JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkTm9kZSgqbm9kZSk7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0b3Iobm9kZSk7Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0b3IoKm5vZGUp
OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJvdGVjdGVk
T3RoZXJOb2RlKG90aGVyTm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1Jl
ZlB0cjxOb2RlPiBwcm90ZWN0ZWRPdGhlck5vZGUoJm90aGVyTm9kZSk7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRPdGhlck5vZGUob3RoZXJOb2Rl
KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3RlY3RlZE90
aGVyTm9kZSgqb3RoZXJOb2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVm
UHRyPFdpZGdldD4gcHJvdGVjdGVkV2lkZ2V0KG1fd2lkZ2V0KTsnLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnUmVmUHRyPFdpZGdldD4gcHJvdGVjdGVkV2lkZ2V0KCZtX3dpZGdldCk7
JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxXaWRnZXQ+IHByb3RlY3RlZFdp
ZGdldChtX3dpZGdldCk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxXaWRn
ZXQ+IHByb3RlY3RlZFdpZGdldCgqbV93aWRnZXQpOycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0b3IobV93aWRnZXQpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0b3IoJm1fd2lkZ2V0KTsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPFdpZGdldD4gcHJvdGVjdG9yKG1f
d2lkZ2V0KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPFdpZGdldD4gcHJv
dGVjdG9yKCptX3dpZGdldCk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0
cjxTb21lTmFtZXNwYWNlOjpOb2RlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8U29tZUNsYXNzOjpJbnRlcm5hbENsYXNzOjpOb2Rl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOycsICcnKQorCisgICAgICAgICMgSW52YWxpZCBwcm90ZWN0
b3IgUmVmUHRyL1JlZiB2YXJpYWJsZSBuYW1lcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
UmVmUHRyPE5vZGU+IHByb3RlY3Rvcih0aGlzKTsnLCAiJ3Byb3RlY3RvcicgaXMgaW5jb3JyZWN0
bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxp
dHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVm
PE5vZGU+IHByb3RlY3RvcigqdGhpcyk7JywgIidwcm90ZWN0b3InIGlzIGluY29ycmVjdGx5IG5h
bWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3Byb3RlY3RlZFRoaXMnLiAgW3JlYWRhYmlsaXR5L25h
bWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxO
b2RlPiBzZWxmKHRoaXMpOycsICInc2VsZicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3Vs
ZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3Rl
ZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHNlbGYoKnRoaXMp
OycsICInc2VsZicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJv
dGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRoaXMobm9kZSk7Jywg
Iidwcm90ZWN0ZWRUaGlzJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVk
ICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJv
dGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJv
dGVjdGVkVGhpcygmbm9kZSk7JywgIidwcm90ZWN0ZWRUaGlzJyBpcyBpbmNvcnJlY3RseSBuYW1l
ZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFty
ZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkVGhpcyhub2RlKTsnLCAiJ3Byb3RlY3RlZFRoaXMnIGlz
IGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3Byb3RlY3Rvcicgb3IgJ3By
b3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRUaGlzKCpub2RlKTsnLCAi
J3Byb3RlY3RlZFRoaXMnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQg
J3Byb3RlY3Rvcicgb3IgJ3Byb3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90
ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2RlPiBwcm90
ZWN0ZWROb2RlKG90aGVyTm9kZSk7JywgIidwcm90ZWN0ZWROb2RlJyBpcyBpbmNvcnJlY3RseSBu
YW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWRPdGhlck5v
ZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKCZvdGhlck5vZGUpOycsICIn
cHJvdGVjdGVkTm9kZScgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAn
cHJvdGVjdG9yJyBvciAncHJvdGVjdGVkT3RoZXJOb2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcv
cHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJv
dGVjdGVkTm9kZShvdGhlck5vZGUpOycsICIncHJvdGVjdGVkTm9kZScgaXMgaW5jb3JyZWN0bHkg
bmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdG9yJyBvciAncHJvdGVjdGVkT3RoZXJO
b2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkTm9kZSgqb3RoZXJOb2RlKTsnLCAiJ3By
b3RlY3RlZE5vZGUnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3By
b3RlY3Rvcicgb3IgJ3Byb3RlY3RlZE90aGVyTm9kZScuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3By
b3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IG5v
ZGVSZWYobm9kZSk7JywgIidub2RlUmVmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxk
IGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJpbGl0eS9u
YW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9k
ZT4gbm9kZVJlZigqbm9kZSk7JywgIidub2RlUmVmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQg
c2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJp
bGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorCisgICAgICAgICMgTGluZXMgdGhhdCBsb29r
IGxpa2UgYSBwcm90ZWN0b3IgdmFyaWFibGUgZGVjbGFyYXRpb24gYnV0IGFyZW4ndC4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIFJlZlB0cjxXaWRnZXQ+IGRvU29tZXRoaW5nV2l0
aCh3aWRnZXQpOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8V2lkZ2V0
PiBjcmVhdGUoKTsnLCAnJykKKwogICAgIGRlZiB0ZXN0X3BhcmFtZXRlcl9uYW1lcyhzZWxmKToK
ICAgICAgICAgIyBMZWF2ZSBtZWFuaW5nbGVzcyB2YXJpYWJsZSBuYW1lcyBvdXQgb2YgZnVuY3Rp
b24gZGVjbGFyYXRpb25zLgogICAgICAgICBtZWFuaW5nbGVzc192YXJpYWJsZV9uYW1lX2Vycm9y
X21lc3NhZ2UgPSAnVGhlIHBhcmFtZXRlciBuYW1lICIlcyIgYWRkcyBubyBpbmZvcm1hdGlvbiwg
c28gaXQgc2hvdWxkIGJlIHJlbW92ZWQuICBbcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWVdIFs1
XScKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXggMDMwZjAwOC4uZDI1Yjc2MiAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNS0xMiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdGVjdG9yIFJlZi9SZWZQdHJzIHNob3VsZCBo
YXZlIGEgc3BlY2lmaWVkIG5hbWluZyBzdHlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogY29kZS1zdHlsZS5tZDoKKwogMjAxNi0wNC0yNiAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGhhcmQtd3Jh
cHMgZnJvbSB0aGUgZmVhdHVyZSBwb2xpY3kgbWFya2Rvd24gc28gaXQgcmVuZGVycyBmdWxsIHdp
ZHRoIG9uIHRoZSBzaXRlLgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RlLXN0
eWxlLm1kIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RlLXN0eWxlLm1kCmluZGV4IDQ0MGZjOTIu
LmFhNzhlODEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kZS1zdHlsZS5tZAor
KysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2NvZGUtc3R5bGUubWQKQEAgLTcxMyw2ICs3MTMsNDIg
QEAgc2V0UmVzaXphYmxlKE5vdFJlc2l6YWJsZSk7CiAjZGVmaW5lIF9IVE1MX0RPQ1VNRU5UX0hf
CiBgYGAKIAorW10oI25hbWVzLXByb3RlY3RvcnMtdGhpcykgUmVmIGFuZCBSZWZQdHIgb2JqZWN0
cyBtZWFudCB0byBwcm90ZWN0IGB0aGlzYCBmcm9tIGRlbGV0aW9uIHNob3VsZCBiZSBuYW1lZCAi
cHJvdGVjdGVkVGhpcyIuCisKKyMjIyMjIyBSaWdodDoKKworYGBgY3BwCitSZWZQdHI8Tm9kZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKK1JlZjxFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
K2BgYAorCisjIyMjIyMgV3Jvbmc6CisKK2BgYGNwcAorUmVmUHRyPE5vZGU+IHByb3RlY3Rvcih0
aGlzKTsKK1JlZlB0cjxXaWRnZXQ+IHNlbGYodGhpcyk7CitSZWY8RWxlbWVudD4gZWxlbWVudFJl
ZigqdGhpcyk7CitgYGAKKworW10oI25hbWVzLXByb3RlY3RvcnMpIFJlZiBhbmQgUmVmUHRyIG9i
amVjdHMgbWVhbnQgdG8gcHJvdGVjdCB2YXJpYWJsZXMgb3RoZXIgdGhhbiBgdGhpc2AgZnJvbSBk
ZWxldGlvbiBzaG91bGQgYmUgbmFtZWQgZWl0aGVyICJwcm90ZWN0b3IiIG9yICJwcm90ZWN0ZWQi
IGNvbWJpbmVkIHdpdGggdGhlIGNhcGl0YWxpemVkIGZvcm0gb2YgdGhlIHZhcmlhYmxlIG5hbWUu
CisKKyMjIyMjIyBSaWdodDoKKworYGBgY3BwCitSZWZQdHI8RWxlbWVudD4gcHJvdGVjdG9yKCZl
bGVtZW50KTsKK1JlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUpOworUmVmUHRyPFdpZGdl
dD4gcHJvdGVjdGVkTWFpbldpZGdldChtX21haW5XaWRnZXQpOworYGBgCisKKyMjIyMjIyBXcm9u
ZzoKKworYGBgY3BwCitSZWZQdHI8Tm9kZT4gbm9kZVJlZigmcm9vdE5vZGUpOworUmVmPEVsZW1l
bnQ+IHByb3RlY3QoKmVsZW1lbnQpOworUmVmUHRyPFdpZGdldD4gcHJvdGVjdGVkKHdpZGdldCk7
CisKK2BgYAorCiAjIyMgT3RoZXIgUHVuY3R1YXRpb24KIAogW10oI3B1bmN0dWF0aW9uLW1lbWJl
ci1pbml0KSBDb25zdHJ1Y3RvcnMgZm9yIEMrKyBjbGFzc2VzIHNob3VsZCBpbml0aWFsaXplIGFs
bCBvZiB0aGVpciBtZW1iZXJzIHVzaW5nIEMrKyBpbml0aWFsaXplciBzeW50YXguIEVhY2ggbWVt
YmVyIChhbmQgc3VwZXJjbGFzcykgc2hvdWxkIGJlIGluZGVudGVkIG9uIGEgc2VwYXJhdGUgbGlu
ZSwgd2l0aCB0aGUgY29sb24gb3IgY29tbWEgcHJlY2VkaW5nIHRoZSBtZW1iZXIgb24gdGhhdCBs
aW5lLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278770</attachid>
            <date>2016-05-12 15:28:21 -0700</date>
            <delta_ts>2016-05-12 15:28:21 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10071</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMmU5
Y2MzLi4yMTAwOTcxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDUtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3RlY3RvciBSZWYvUmVmUHRycyBzaG91bGQgaGF2
ZSBhIHNwZWNpZmllZCBuYW1pbmcgc3R5bGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc1OTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
OgorICAgICAgICAoY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uKToKKyAgICAg
ICAgKENwcENoZWNrZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoV2ViS2l0U3R5bGVUZXN0LnRlc3RfbmFtZXMp
OgorCiAyMDE2LTA1LTEyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmVtb3ZlIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpIGd1YXJkcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQppbmRleCBjYjkw
MmM3Li4yYTNhZjRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NwcC5weQpAQCAtMzI5MSw2ICszMjkxLDIxIEBAIGRlZiBjaGVja19pZGVudGlmaWVyX25hbWVf
aW5fZGVjbGFyYXRpb24oZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBmaWxlX3N0YXRlCiAg
ICAgaWYgbWF0Y2gocidccyoocmV0dXJufGRlbGV0ZSlcYicsIGxpbmUpOgogICAgICAgICByZXR1
cm4KIAorICAgICMgTWFrZSBzdXJlIFJlZi9SZWZQdHJzIHVzZWQgYXMgcHJvdGVjdG9ycyBhcmUg
bmFtZWQgY29ycmVjdGx5LCBhbmQgZG8gdGhpcyBiZWZvcmUgd2Ugc3RhcnQgc3RyaXBwaW5nIHRo
aW5ncyBvZmYgdGhlIGlucHV0LgorICAgIHJlZl9yZWdleHAgPSByJ15ccypSZWYoUHRyKT88KFtc
d19dfDo6KSs+ICg/UDxwcm90ZWN0b3JfbmFtZT5bXHdfXSspXCgoXCp8JikqKG1fKT8oP1A8cHJv
dGVjdGVkX25hbWU+W1x3X10rKVwpOycKKyAgICByZWZfY2hlY2sgPSBtYXRjaChyZWZfcmVnZXhw
LCBsaW5lKQorICAgIGlmIHJlZl9jaGVjazoKKyAgICAgICAgcHJvdGVjdG9yX25hbWUgPSByZWZf
Y2hlY2suZ3JvdXAoJ3Byb3RlY3Rvcl9uYW1lJykKKyAgICAgICAgcHJvdGVjdGVkX25hbWUgPSBy
ZWZfY2hlY2suZ3JvdXAoJ3Byb3RlY3RlZF9uYW1lJykKKyAgICAgICAgY2FwX3Byb3RlY3RlZF9u
YW1lID0gcHJvdGVjdGVkX25hbWVbMF0udXBwZXIoKSArIHByb3RlY3RlZF9uYW1lWzE6XQorICAg
ICAgICBleHBlY3RlZF9wcm90ZWN0b3JfbmFtZSA9ICdwcm90ZWN0ZWQnICsgY2FwX3Byb3RlY3Rl
ZF9uYW1lCisgICAgICAgIGlmIHByb3RlY3RlZF9uYW1lID09ICd0aGlzJyBhbmQgcHJvdGVjdG9y
X25hbWUgIT0gJ3Byb3RlY3RlZFRoaXMnOgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIs
ICdyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywgNCwgIlwnIiArIHByb3RlY3Rvcl9uYW1l
ICsgIlwnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgXCdwcm90ZWN0
ZWRUaGlzXCcuIikKKyAgICAgICAgZWxpZiBwcm90ZWN0b3JfbmFtZSA9PSBleHBlY3RlZF9wcm90
ZWN0b3JfbmFtZSBvciBwcm90ZWN0b3JfbmFtZSA9PSAncHJvdGVjdG9yJzoKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXJyb3IobGluZV9udW1iZXIsICdy
ZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywgNCwgIlwnIiArIHByb3RlY3Rvcl9uYW1lICsg
IlwnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgXCdwcm90ZWN0b3Jc
JyBvciBcJyIgKyBleHBlY3RlZF9wcm90ZWN0b3JfbmFtZSArICJcJy4iKQorCiAgICAgIyBCYXNp
Y2FsbHksIGEgZGVjbGFyYXRpb24gaXMgYSB0eXBlIG5hbWUgZm9sbG93ZWQgYnkgd2hpdGVzcGFj
ZXMKICAgICAjIGZvbGxvd2VkIGJ5IGFuIGlkZW50aWZpZXIuIFRoZSB0eXBlIG5hbWUgY2FuIGJl
IGNvbXBsaWNhdGVkCiAgICAgIyBkdWUgdG8gdHlwZSBhZGplY3RpdmVzIGFuZCB0ZW1wbGF0ZXMu
IFdlIHJlbW92ZSB0aGVtIGZpcnN0IHRvCkBAIC0zODQ2LDYgKzM4NjEsNyBAQCBjbGFzcyBDcHBD
aGVja2VyKG9iamVjdCk6CiAgICAgICAgICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nJywK
ICAgICAgICAgJ3JlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lJywKICAgICAgICAgJ3JlYWRhYmls
aXR5L25hbWluZycsCisgICAgICAgICdyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkJywKICAg
ICAgICAgJ3JlYWRhYmlsaXR5L25hbWluZy91bmRlcnNjb3JlcycsCiAgICAgICAgICdyZWFkYWJp
bGl0eS9udWxsJywKICAgICAgICAgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRl
eCAxNGYwYWE2Li5lNjNhNmE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQpAQCAtNTE3OSw2ICs1MTc5LDUyIEBAIGNs
YXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndW5zaWduZWQgX2ZpbGxSdWxlIDogMTsnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICdfZmlsbFJ1bGUnICsgbmFtZV91bmRlcnNjb3JlX2Vycm9yX21lc3NhZ2UpCiAKKyAgICAg
ICAgIyBWYWxpZCBwcm90ZWN0b3IgUmVmUHRyL1JlZiB2YXJpYWJsZSBuYW1lcy4KKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRoaXModGhpcyk7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3Rl
ZE5vZGUobm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2Rl
PiBwcm90ZWN0ZWROb2RlKCZub2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
UmVmUHRyPE5vZGU+IHByb3RlY3Rvcihub2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3Rvcigmbm9kZSk7JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkTm9kZSgqbm9kZSk7JywgJycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0b3Iobm9kZSk7Jywg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0b3IoKm5vZGUp
OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJvdGVjdGVk
T3RoZXJOb2RlKG90aGVyTm9kZSk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1Jl
ZlB0cjxOb2RlPiBwcm90ZWN0ZWRPdGhlck5vZGUoJm90aGVyTm9kZSk7JywgJycpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRPdGhlck5vZGUob3RoZXJOb2Rl
KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHByb3RlY3RlZE90
aGVyTm9kZSgqb3RoZXJOb2RlKTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVm
UHRyPFdpZGdldD4gcHJvdGVjdGVkV2lkZ2V0KG1fd2lkZ2V0KTsnLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnUmVmUHRyPFdpZGdldD4gcHJvdGVjdGVkV2lkZ2V0KCZtX3dpZGdldCk7
JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxXaWRnZXQ+IHByb3RlY3RlZFdp
ZGdldChtX3dpZGdldCk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxXaWRn
ZXQ+IHByb3RlY3RlZFdpZGdldCgqbV93aWRnZXQpOycsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0b3IobV93aWRnZXQpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0b3IoJm1fd2lkZ2V0KTsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPFdpZGdldD4gcHJvdGVjdG9yKG1f
d2lkZ2V0KTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPFdpZGdldD4gcHJv
dGVjdG9yKCptX3dpZGdldCk7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0
cjxTb21lTmFtZXNwYWNlOjpOb2RlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOycsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8U29tZUNsYXNzOjpJbnRlcm5hbENsYXNzOjpOb2Rl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOycsICcnKQorCisgICAgICAgICMgSW52YWxpZCBwcm90ZWN0
b3IgUmVmUHRyL1JlZiB2YXJpYWJsZSBuYW1lcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
UmVmUHRyPE5vZGU+IHByb3RlY3Rvcih0aGlzKTsnLCAiJ3Byb3RlY3RvcicgaXMgaW5jb3JyZWN0
bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxp
dHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVm
PE5vZGU+IHByb3RlY3RvcigqdGhpcyk7JywgIidwcm90ZWN0b3InIGlzIGluY29ycmVjdGx5IG5h
bWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3Byb3RlY3RlZFRoaXMnLiAgW3JlYWRhYmlsaXR5L25h
bWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxO
b2RlPiBzZWxmKHRoaXMpOycsICInc2VsZicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3Vs
ZCBiZSBuYW1lZCAncHJvdGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3Rl
ZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmPE5vZGU+IHNlbGYoKnRoaXMp
OycsICInc2VsZicgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJv
dGVjdGVkVGhpcycuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3Byb3RlY3RlZF0gWzRdIikKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IHByb3RlY3RlZFRoaXMobm9kZSk7Jywg
Iidwcm90ZWN0ZWRUaGlzJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVk
ICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJv
dGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8Tm9kZT4gcHJv
dGVjdGVkVGhpcygmbm9kZSk7JywgIidwcm90ZWN0ZWRUaGlzJyBpcyBpbmNvcnJlY3RseSBuYW1l
ZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFty
ZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkVGhpcyhub2RlKTsnLCAiJ3Byb3RlY3RlZFRoaXMnIGlz
IGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3Byb3RlY3Rvcicgb3IgJ3By
b3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZjxOb2RlPiBwcm90ZWN0ZWRUaGlzKCpub2RlKTsnLCAi
J3Byb3RlY3RlZFRoaXMnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQg
J3Byb3RlY3Rvcicgb3IgJ3Byb3RlY3RlZE5vZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90
ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2RlPiBwcm90
ZWN0ZWROb2RlKG90aGVyTm9kZSk7JywgIidwcm90ZWN0ZWROb2RlJyBpcyBpbmNvcnJlY3RseSBu
YW1lZC4gSXQgc2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWRPdGhlck5v
ZGUnLiAgW3JlYWRhYmlsaXR5L25hbWluZy9wcm90ZWN0ZWRdIFs0XSIpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ1JlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKCZvdGhlck5vZGUpOycsICIn
cHJvdGVjdGVkTm9kZScgaXMgaW5jb3JyZWN0bHkgbmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAn
cHJvdGVjdG9yJyBvciAncHJvdGVjdGVkT3RoZXJOb2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcv
cHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJv
dGVjdGVkTm9kZShvdGhlck5vZGUpOycsICIncHJvdGVjdGVkTm9kZScgaXMgaW5jb3JyZWN0bHkg
bmFtZWQuIEl0IHNob3VsZCBiZSBuYW1lZCAncHJvdGVjdG9yJyBvciAncHJvdGVjdGVkT3RoZXJO
b2RlJy4gIFtyZWFkYWJpbGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdSZWY8Tm9kZT4gcHJvdGVjdGVkTm9kZSgqb3RoZXJOb2RlKTsnLCAiJ3By
b3RlY3RlZE5vZGUnIGlzIGluY29ycmVjdGx5IG5hbWVkLiBJdCBzaG91bGQgYmUgbmFtZWQgJ3By
b3RlY3Rvcicgb3IgJ3Byb3RlY3RlZE90aGVyTm9kZScuICBbcmVhZGFiaWxpdHkvbmFtaW5nL3By
b3RlY3RlZF0gWzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnUmVmUHRyPE5vZGU+IG5v
ZGVSZWYobm9kZSk7JywgIidub2RlUmVmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQgc2hvdWxk
IGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJpbGl0eS9u
YW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWY8Tm9k
ZT4gbm9kZVJlZigqbm9kZSk7JywgIidub2RlUmVmJyBpcyBpbmNvcnJlY3RseSBuYW1lZC4gSXQg
c2hvdWxkIGJlIG5hbWVkICdwcm90ZWN0b3InIG9yICdwcm90ZWN0ZWROb2RlJy4gIFtyZWFkYWJp
bGl0eS9uYW1pbmcvcHJvdGVjdGVkXSBbNF0iKQorCisgICAgICAgICMgTGluZXMgdGhhdCBsb29r
IGxpa2UgYSBwcm90ZWN0b3IgdmFyaWFibGUgZGVjbGFyYXRpb24gYnV0IGFyZW4ndC4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIFJlZlB0cjxXaWRnZXQ+IGRvU29tZXRoaW5nV2l0
aCh3aWRnZXQpOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdSZWZQdHI8V2lkZ2V0
PiBjcmVhdGUoKTsnLCAnJykKKwogICAgIGRlZiB0ZXN0X3BhcmFtZXRlcl9uYW1lcyhzZWxmKToK
ICAgICAgICAgIyBMZWF2ZSBtZWFuaW5nbGVzcyB2YXJpYWJsZSBuYW1lcyBvdXQgb2YgZnVuY3Rp
b24gZGVjbGFyYXRpb25zLgogICAgICAgICBtZWFuaW5nbGVzc192YXJpYWJsZV9uYW1lX2Vycm9y
X21lc3NhZ2UgPSAnVGhlIHBhcmFtZXRlciBuYW1lICIlcyIgYWRkcyBubyBpbmZvcm1hdGlvbiwg
c28gaXQgc2hvdWxkIGJlIHJlbW92ZWQuICBbcmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWVdIFs1
XScKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9DaGFuZ2VMb2cKaW5kZXggMDMwZjAwOC4uZDI1Yjc2MiAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvd2Via2l0Lm9yZy9DaGFuZ2VMb2cKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNS0xMiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdGVjdG9yIFJlZi9SZWZQdHJzIHNob3VsZCBo
YXZlIGEgc3BlY2lmaWVkIG5hbWluZyBzdHlsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzU5MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgICogY29kZS1zdHlsZS5tZDoKKwogMjAxNi0wNC0yNiAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGhhcmQtd3Jh
cHMgZnJvbSB0aGUgZmVhdHVyZSBwb2xpY3kgbWFya2Rvd24gc28gaXQgcmVuZGVycyBmdWxsIHdp
ZHRoIG9uIHRoZSBzaXRlLgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RlLXN0
eWxlLm1kIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9jb2RlLXN0eWxlLm1kCmluZGV4IDQ0MGZjOTIu
LjAzOWVlNDMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvY29kZS1zdHlsZS5tZAor
KysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2NvZGUtc3R5bGUubWQKQEAgLTcxMyw2ICs3MTMsNDIg
QEAgc2V0UmVzaXphYmxlKE5vdFJlc2l6YWJsZSk7CiAjZGVmaW5lIF9IVE1MX0RPQ1VNRU5UX0hf
CiBgYGAKIAorW10oI25hbWVzLXByb3RlY3RvcnMtdGhpcykgUmVmIGFuZCBSZWZQdHIgb2JqZWN0
cyBtZWFudCB0byBwcm90ZWN0IGB0aGlzYCBmcm9tIGRlbGV0aW9uIHNob3VsZCBiZSBuYW1lZCAi
cHJvdGVjdGVkVGhpcyIuCisKKyMjIyMjIyBSaWdodDoKKworYGBgY3BwCitSZWZQdHI8Tm9kZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKK1JlZjxFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
K2BgYAorCisjIyMjIyMgV3Jvbmc6CisKK2BgYGNwcAorUmVmUHRyPE5vZGU+IHByb3RlY3Rvcih0
aGlzKTsKK1JlZlB0cjxXaWRnZXQ+IHNlbGYodGhpcyk7CitSZWY8RWxlbWVudD4gZWxlbWVudFJl
ZigqdGhpcyk7CitgYGAKKworW10oI25hbWVzLXByb3RlY3RvcnMpIFJlZiBhbmQgUmVmUHRyIG9i
amVjdHMgbWVhbnQgdG8gcHJvdGVjdCB2YXJpYWJsZXMgb3RoZXIgdGhhbiBgdGhpc2AgZnJvbSBk
ZWxldGlvbiBzaG91bGQgYmUgbmFtZWQgZWl0aGVyICJwcm90ZWN0b3IiLCBvciAicHJvdGVjdGVk
IiBjb21iaW5lZCB3aXRoIHRoZSBjYXBpdGFsaXplZCBmb3JtIG9mIHRoZSB2YXJpYWJsZSBuYW1l
LgorCisjIyMjIyMgUmlnaHQ6CisKK2BgYGNwcAorUmVmUHRyPEVsZW1lbnQ+IHByb3RlY3Rvcigm
ZWxlbWVudCk7CitSZWZQdHI8Tm9kZT4gcHJvdGVjdGVkTm9kZShub2RlKTsKK1JlZlB0cjxXaWRn
ZXQ+IHByb3RlY3RlZE1haW5XaWRnZXQobV9tYWluV2lkZ2V0KTsKK2BgYAorCisjIyMjIyMgV3Jv
bmc6CisKK2BgYGNwcAorUmVmUHRyPE5vZGU+IG5vZGVSZWYoJnJvb3ROb2RlKTsKK1JlZjxFbGVt
ZW50PiBwcm90ZWN0KCplbGVtZW50KTsKK1JlZlB0cjxXaWRnZXQ+IHByb3RlY3RlZCh3aWRnZXQp
OworUmVmUHRyPE5vZGU+IHByb3RlY3Rvck5vZGUobm9kZSk7CitgYGAKKwogIyMjIE90aGVyIFB1
bmN0dWF0aW9uCiAKIFtdKCNwdW5jdHVhdGlvbi1tZW1iZXItaW5pdCkgQ29uc3RydWN0b3JzIGZv
ciBDKysgY2xhc3NlcyBzaG91bGQgaW5pdGlhbGl6ZSBhbGwgb2YgdGhlaXIgbWVtYmVycyB1c2lu
ZyBDKysgaW5pdGlhbGl6ZXIgc3ludGF4LiBFYWNoIG1lbWJlciAoYW5kIHN1cGVyY2xhc3MpIHNo
b3VsZCBiZSBpbmRlbnRlZCBvbiBhIHNlcGFyYXRlIGxpbmUsIHdpdGggdGhlIGNvbG9uIG9yIGNv
bW1hIHByZWNlZGluZyB0aGUgbWVtYmVyIG9uIHRoYXQgbGluZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>