<?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>158835</bug_id>
          
          <creation_ts>2016-06-16 06:10:02 -0700</creation_ts>
          <short_desc>Templatize JS bindings code generator of functions with variadic parameters</short_desc>
          <delta_ts>2016-09-07 03:05:49 -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>Bindings</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nael Ouedraogo">nael.ouedp</reporter>
          <assigned_to name="Nael Ouedraogo">nael.ouedp</assigned_to>
          <cc>adam.bergkvist</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202906</commentid>
    <comment_count>0</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-16 06:10:02 -0700</bug_when>
    <thetext>Templatize JS bindings code generator of functions with variadic parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202910</commentid>
    <comment_count>1</comment_count>
      <attachid>281454</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-16 06:49:09 -0700</bug_when>
    <thetext>Created attachment 281454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202927</commentid>
    <comment_count>2</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-16 08:38:40 -0700</bug_when>
    <thetext>One possible improvement is to homogenize toNativeArgument() and toDOMArgumentsVariadic() functions. A second improvement is to process both native and DOM arguments with a single function in JS bindings code generator.  

This could be addressed in a follow-up bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204803</commentid>
    <comment_count>3</comment_count>
      <attachid>281905</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-23 03:47:59 -0700</bug_when>
    <thetext>Created attachment 281905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204806</commentid>
    <comment_count>4</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-23 05:49:21 -0700</bug_when>
    <thetext>In the uploaded patch, variadic arguments (native or DOM) are handled by a single template function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204808</commentid>
    <comment_count>5</comment_count>
      <attachid>281905</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-23 06:29:48 -0700</bug_when>
    <thetext>Comment on attachment 281905
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3686
&gt; +            }

Could it be done as a one liner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204809</commentid>
    <comment_count>6</comment_count>
      <attachid>281905</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-23 06:29:50 -0700</bug_when>
    <thetext>Comment on attachment 281905
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3686
&gt; +            }

Could it be done as a one liner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204812</commentid>
    <comment_count>7</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-23 06:42:57 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; https://bugs.webkit.org/attachment.cgi?id=281905&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3686
&gt; &gt; +            }
&gt; 
&gt; Could it be done as a one liner?
Thanks for the review.

I will replace if/else block with a call to ternary operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205543</commentid>
    <comment_count>8</comment_count>
      <attachid>282128</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-27 07:03:15 -0700</bug_when>
    <thetext>Created attachment 282128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205941</commentid>
    <comment_count>9</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-28 00:43:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 281905 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=281905&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3686
&gt; &gt; +            }
&gt; 
&gt; Could it be done as a one liner?

Proposed modification is done in the uploaded patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205946</commentid>
    <comment_count>10</comment_count>
      <attachid>282128</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-28 00:58:53 -0700</bug_when>
    <thetext>Comment on attachment 282128
Patch

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

Sounds good to me. Some proposed improvements below.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:319
&gt; +        if (!TraitsType::nativeValue(&amp;state, jsValue, indexValue))

Would you be able to modify nativeValue to take an ExecState reference as a preliminary patch?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3685
&gt; +            my $domType = IsNativeType($type) ? GetNativeType($interface, $type) : &quot;$type&quot;;

Why &quot;$type&quot; and not $type?

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:5953
&gt; +    auto tail = toArguments&lt;VariadicHelper&lt;JSdouble, double&gt;&gt;(*state, 1);

This code seems odd, since JSdouble probably does not exist.
Maybe replace it by JSC::JSValue for all native types, since it is not used anyway for them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206710</commentid>
    <comment_count>11</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-30 07:03:59 -0700</bug_when>
    <thetext>I just ad(In reply to comment #10)
&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:319
&gt; &gt; +        if (!TraitsType::nativeValue(&amp;state, jsValue, indexValue))
&gt; 
&gt; Would you be able to modify nativeValue to take an ExecState reference as a
&gt; preliminary patch?

Ok. A preliminary patch is proposed in Bug 159298.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3685
&gt; &gt; +            my $domType = IsNativeType($type) ? GetNativeType($interface, $type) : &quot;$type&quot;;
&gt; 
&gt; Why &quot;$type&quot; and not $type?
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:5953
&gt; &gt; +    auto tail = toArguments&lt;VariadicHelper&lt;JSdouble, double&gt;&gt;(*state, 1);
&gt; 
&gt; This code seems odd, since JSdouble probably does not exist.
&gt; Maybe replace it by JSC::JSValue for all native types, since it is not used
&gt; anyway for them?

I will fix this in a new patch once preliminary Bug 159298 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209704</commentid>
    <comment_count>12</comment_count>
      <attachid>283325</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-11 11:05:18 -0700</bug_when>
    <thetext>Created attachment 283325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209710</commentid>
    <comment_count>13</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-11 11:11:15 -0700</bug_when>
    <thetext>Preliminary patch is landed (modification of nativeValue to takes an ExecState reference). Uploaded patch fixed also the two remaining issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210495</commentid>
    <comment_count>14</comment_count>
      <attachid>283325</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-13 09:42:43 -0700</bug_when>
    <thetext>Comment on attachment 283325
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:313
&gt; +    using Result = typename std::pair&lt;Optional&lt;Container&gt;, size_t&gt;;

Annoying that this is repeated in both versions of VariadicHelper. Might be nice to use inheritance instead.

Since a pair or tuple here is a necessary evil, I suppose we should have the index first and then the value, rather than the value first and then the index. Think of it as an item in a numbered list.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:315
&gt; +    static Optional&lt;DOMClass&gt; argumentConverter(JSC::ExecState&amp; state, JSC::JSValue jsValue)

Normally we use a verb phrase for a function or a noun phrase that describes the result. It’s not so common to use a noun phrase that describes the function itself. A better name for this would be convert or unwrap.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:330
&gt; +    using Class     = typename std::remove_reference&lt;decltype(std::declval&lt;JSClass&gt;().wrapped())&gt;::type;
&gt; +    using Item      = std::reference_wrapper&lt;Class&gt;;
&gt; +    using Container = Vector&lt;Item&gt;;
&gt; +    using Result    = typename std::pair&lt;Optional&lt;Container&gt;, size_t&gt;;

We don’t do this kind of vertical alignment formatting in WebKit; style guide specifically forbids it.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:791
&gt; +        return {Nullopt, 0};

In WebKit coding style there is a space inside the { }.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:799
&gt; +            return {Nullopt, i};

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:800
&gt; +        result.uncheckedAppend(*value);

We normally use the value() function instead of * with Optional in WebKit code, not entirely sure why.

This should be WTFMove(*value.value()) because in some cases, such as String, that is more efficient than copying.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:802
&gt; +    return {WTFMove(result), length};

Space here.

&gt; Source/WebCore/bindings/js/JSDOMWrapper.h:88
&gt; +    static constexpr bool isWrappingDOMObject = true;

Terminology here is not consistent. Above we say isSimpleWrapper and isComplexWrapper. This one should be isWrapper. But also this is redundant with isBuiltin; do we really need both?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3709
&gt; +            my $domType = IsNativeType($type) ? GetNativeType($interface, $type) : $type;
&gt; +            my $jsType = IsNativeType($type) ? &quot;JSC::JSValue&quot; : &quot;JS$domType&quot;;

I don’t think the names &quot;domType&quot; and &quot;jsType&quot; are good here even though that’s what’s used int he C++ code. I would probably call these &quot;wrapped type&quot; and &quot;wrapper type&quot;. Also, since this is the only place in the entire file that uses IsNativeType, it seems like we could change it around to be better for this purpose. It would be more consistent with the other code in this file to have a function that implements this algorithm instead of writing it out like this. It seems likely that the algorithm here is only simple right now because of the many types that we don’t handle. For example, if we wanted this to work properly for enumerations or dictionaries this code would likely have to change. So I suggest coming up with some named functions for this instead of writing the code in here. Maybe a single function with two results.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3718
&gt; +            push(@$outputArray, &quot;    if (!$name.first)\n&quot;);
&gt; +            push(@$outputArray, &quot;        return throwArgumentTypeError(*state, $name.second, \&quot;$name\&quot;, \&quot;$interfaceName\&quot;, $quotedFunctionName, \&quot;$type\&quot;);\n&quot;);

Seems a shame that we now generate unreachable code to throw an error that can never happen in a case like this. Or is this reachable? If it is reachable, can we add a test case to show the change in behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224551</commentid>
    <comment_count>15</comment_count>
      <attachid>287389</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-08-30 06:55:11 -0700</bug_when>
    <thetext>Created attachment 287389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224552</commentid>
    <comment_count>16</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-08-30 07:07:46 -0700</bug_when>
    <thetext>Thanks for the review and sorry for the late response.
Coding style mistakes and terminology have been corrected in the uploaded patch. 

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:313
&gt; &gt; +    using Result = typename std::pair&lt;Optional&lt;Container&gt;, size_t&gt;;
&gt; 
&gt; Annoying that this is repeated in both versions of VariadicHelper. Might be
&gt; nice to use inheritance instead.
OK, repeated code has been factorized.

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:800
&gt; &gt; +        result.uncheckedAppend(*value);
&gt; 
&gt; We normally use the value() function instead of * with Optional in WebKit
&gt; code, not entirely sure why.
&gt; 
&gt; This should be WTFMove(*value.value()) because in some cases, such as
&gt; String, that is more efficient than copying.
Actually, value was not necessarily an Optional. Return types of
convert methods have been changed to Optional in uploaded patch so that value() can be used. 

&gt; &gt; Source/WebCore/bindings/js/JSDOMWrapper.h:88
&gt; &gt; +    static constexpr bool isWrappingDOMObject = true;
&gt; 
&gt; Terminology here is not consistent. Above we say isSimpleWrapper and
&gt; isComplexWrapper. This one should be isWrapper. But also this is redundant
&gt; with isBuiltin; do we really need both?
Yes, it can be removed since not essential.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3709
&gt; &gt; +            my $domType = IsNativeType($type) ? GetNativeType($interface, $type) : $type;
&gt; &gt; +            my $jsType = IsNativeType($type) ? &quot;JSC::JSValue&quot; : &quot;JS$domType&quot;;
&gt; 
&gt; I don’t think the names &quot;domType&quot; and &quot;jsType&quot; are good here even though
&gt; that’s what’s used int he C++ code. I would probably call these &quot;wrapped
&gt; type&quot; and &quot;wrapper type&quot;. Also, since this is the only place in the entire
&gt; file that uses IsNativeType, it seems like we could change it around to be
&gt; better for this purpose. It would be more consistent with the other code in
&gt; this file to have a function that implements this algorithm instead of
&gt; writing it out like this. It seems likely that the algorithm here is only
&gt; simple right now because of the many types that we don’t handle. For
&gt; example, if we wanted this to work properly for enumerations or dictionaries
&gt; this code would likely have to change. So I suggest coming up with some
&gt; named functions for this instead of writing the code in here. Maybe a single
&gt; function with two results.
&gt;
A function has been added in the uploaded patch with wrapper/wrapped terminology.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3718
&gt; &gt; +            push(@$outputArray, &quot;    if (!$name.first)\n&quot;);
&gt; &gt; +            push(@$outputArray, &quot;        return throwArgumentTypeError(*state, $name.second, \&quot;$name\&quot;, \&quot;$interfaceName\&quot;, $quotedFunctionName, \&quot;$type\&quot;);\n&quot;);
&gt; 
&gt; Seems a shame that we now generate unreachable code to throw an error that
&gt; can never happen in a case like this. Or is this reachable? If it is
&gt; reachable, can we add a test case to show the change in behavior?
I modified the code to avoid generating this unreachable code for native types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226156</commentid>
    <comment_count>17</comment_count>
      <attachid>287389</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-03 12:46:37 -0700</bug_when>
    <thetext>Comment on attachment 287389
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:321
&gt; +template &lt;typename JSClass, typename DOMClass, typename Enable = void&gt;

We don’t leave a space between &quot;template&quot; and &quot;&lt;&quot;, although we don’t use the style consistently. Probably need to mention it in the style guideline.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:335
&gt; +template &lt;typename JSClass, typename DOMClass&gt;

We don’t leave a space between &quot;template&quot; and &quot;&lt;&quot;, although we don’t use the style consistently. Probably need to mention it in the style guideline.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:353
&gt; +    using Result = typename std::pair&lt;size_t, Optional&lt;Container&gt;&gt;;

Hard to read code that uses pair like this, since the names &quot;first&quot; and &quot;second&quot; aren’t so great. I suppose it wouldn’t be any better with std::tuple, but it could be better if we just used a struct instead because we could then name the members. We made this change a while for HashMap::AddResult and for HashMap::KeyValuePairType; it was a lot more readable to use a struct, and in modern C++ where we are doing anything generic with the pair, the code generated is nearly identical.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:356
&gt; +template &lt;typename VariadicHelper&gt; typename VariadicHelper::Result toArguments(JSC::ExecState&amp;, size_t startIndex = 0);

We don’t leave a space between &quot;template&quot; and &quot;&lt;&quot;, although we don’t use the style consistently. Probably need to mention it in the style guideline.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:801
&gt; +template &lt;typename VariadicHelper&gt; typename VariadicHelper::Result toArguments(JSC::ExecState&amp; state, size_t startIndex)

We don’t leave a space between &quot;template&quot; and &quot;&lt;&quot;, although we don’t use the style consistently. Probably need to mention it in the style guideline.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4582
&gt; +sub GetVariadicType
&gt; +{
&gt; +    my ($interface, $type) = @_;
&gt; +
&gt; +    my $wrappedType = IsNativeType($type) ? GetNativeType($interface, $type) : $type;
&gt; +    my $wrapperType = IsNativeType($type) ? &quot;JSC::JSValue&quot; : &quot;JS$wrappedType&quot;;
&gt; +
&gt; +    return ($wrapperType, $wrappedType);
&gt; +}

Really unfortunate that we have to add this helper. We are trying to do these things in the C++ code whenever possible rather than in the code generator. But I don’t have a good idea for how to avoid this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227108</commentid>
    <comment_count>18</comment_count>
      <attachid>288122</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-09-07 01:49:15 -0700</bug_when>
    <thetext>Created attachment 288122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227128</commentid>
    <comment_count>19</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-09-07 02:42:40 -0700</bug_when>
    <thetext>Code style errors have been fixed in uploaded patch.

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.h:353
&gt; &gt; +    using Result = typename std::pair&lt;size_t, Optional&lt;Container&gt;&gt;;
&gt; 
&gt; Hard to read code that uses pair like this, since the names &quot;first&quot; and
&gt; &quot;second&quot; aren’t so great. I suppose it wouldn’t be any better with
&gt; std::tuple, but it could be better if we just used a struct instead because
&gt; we could then name the members. We made this change a while for
&gt; HashMap::AddResult and for HashMap::KeyValuePairType; it was a lot more
&gt; readable to use a struct, and in modern C++ where we are doing anything
&gt; generic with the pair, the code generated is nearly identical.
&gt; 
Ok, I will fix this in a follow up bug.


Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227132</commentid>
    <comment_count>20</comment_count>
      <attachid>288122</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-07 03:05:42 -0700</bug_when>
    <thetext>Comment on attachment 288122
Patch

Clearing flags on attachment: 288122

Committed r205542: &lt;http://trac.webkit.org/changeset/205542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1227133</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-07 03:05:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281454</attachid>
            <date>2016-06-16 06:49:09 -0700</date>
            <delta_ts>2016-06-23 03:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160616154906.patch</filename>
            <type>text/plain</type>
            <size>13471</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgwZTZiMzVmY2RkNmVl
M2E0ZTMzZGExZDQxNDdhZTFhYjdjNjVjZC4uMGRkODFhNWJkOTZjNDZiN2ZlZjdmNGNlYWFiOTJj
M2FjMmU2YjQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA2LTE2ICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZnVuY3Rpb24gd2l0aCB2
YXJpYWRpYworICAgICAgICBwYXJhbWV0ZXIgZm9yIERPTSBvYmplY3RzLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvRE9NQXJndW1lbnRzVmFyaWFkaWMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueSk6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczUpOgorCiAyMDE2LTA2LTE1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRGVjb3VwbGUgdGhlIHBlcmNlbnQgaGVpZ2h0IGFuZCBwb3Np
dGlvbmVkIGRlc2NlbmRhbnRzIG1hcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDNjNTI5NzFiZDBh
Njg2NzM1ZjQzZjRmZjc5MjIwNWI2ZDNhZTE4MjMuLmJiMjRiNWZmMDgwMjI2MWI4NzAwZGI3NzI2
MTExZTdjODIzMDUxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgUlRD
UGVlckNvbm5lY3Rpb246On5SVENQZWVyQ29ubmVjdGlvbigpCiAgICAgc3RvcCgpOwogfQogCi1S
ZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBzdHJlYW1z
LCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0
aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9y
PHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYgc3RyZWFtcywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6
OkNsb3NlZCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMTIzLDcgKzEy
Myw3IEBAIFJlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlh
U3RyZWFtSWRzOwogICAgIGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRp
YVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLT5pZCgpKTsKKyAgICAgICAgbWVkaWFTdHJlYW1JZHMu
YXBwZW5kKHN0cmVhbS5nZXQoKS5pZCgpKTsKIAogICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IGY4NWVjNjQxYzUxYzRhYzI3MWJjNTJmZjAwNjIy
MjU1MGQ0ZTEyY2EuLjU2YjdiYjI2YTMzMGNiNWY2ODQyZjQyM2ViMTVjMTIwNzNlMzFkMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKQEAgLTY2LDggKzY2LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8UlRDUnRwU2VuZGVyPj4mIGdldFNlbmRlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5z
Y2VpdmVyU2V0LT5nZXRTZW5kZXJzKCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0
cFJlY2VpdmVyPj4mIGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJT
ZXQtPmdldFJlY2VpdmVycygpOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFu
c2NlaXZlcj4+JiBnZXRUcmFuc2NlaXZlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Ry
YW5zY2VpdmVyU2V0LT5saXN0KCk7IH0KKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFJlZlB0cjxSVENS
dHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8
TWVkaWFTdHJlYW0qPiYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVRyYWNrKFJU
Q1J0cFNlbmRlciYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIFRoaXMgZW51bSBpcyBtaXJy
b3JlZCBpbiBSVENSdHBUcmFuc2NlaXZlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5oCmluZGV4IGM2MmRiYjJiOGVlMTA5ZDdmZDhkZjcwNjRjZDgzZTg5MzFhZDc4
ZTkuLjU3NWI0ZWI1Yjg5ZWQ4MDA5NThhMzEyYzIwMzExYjJmNGNlNTgyNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0zMDYsNiArMzA2LDE1IEBAIEF0
b21pY1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7
CiAKIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSlNDbGFzcz4gc3RydWN0IERPTVZhcmlhZGljSGVscGVyIHsKKyAgICB1c2luZyBDbGFz
cyAgICAgICAgICAgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoc3Rk
OjpkZWNsdmFsPEpTQ2xhc3M+KCkud3JhcHBlZCgpKT46OnR5cGU7CisgICAgdXNpbmcgSXRlbSAg
ICAgICAgICAgID0gc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47CisgICAgdXNpbmcgQ29u
dGFpbmVyICAgICAgID0gVmVjdG9yPEl0ZW0+OworICAgIHVzaW5nIENvbnZlcnRlclJlc3VsdCA9
IHR5cGVuYW1lIHN0ZDo6cGFpcjxPcHRpb25hbDxDb250YWluZXI+LCBzaXplX3Q+OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gdHlwZW5hbWUgRE9NVmFyaWFkaWNIZWxwZXI8SlND
bGFzcz46OkNvbnZlcnRlclJlc3VsdCB0b0RPTUFyZ3VtZW50c1ZhcmlhZGljKEpTQzo6RXhlY1N0
YXRlJiwgc2l6ZV90KTsKKwogLy8gSW5saW5lIGZ1bmN0aW9ucyBhbmQgdGVtcGxhdGUgZGVmaW5p
dGlvbnMuCiAKIGlubGluZSBKU0M6OlN0cnVjdHVyZSogRE9NQ29uc3RydWN0b3JPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNzU1LDEzICs3NjQsMzIgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBzaXplX3Qgc3QKIAogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwg
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgVCBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRyYWl0
c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRleFZhbHVlKSkK
KyAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFQ+
KCk7CiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5kZXhWYWx1ZSk7CiAgICAgfQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IHR5cGVu
YW1lIERPTVZhcmlhZGljSGVscGVyPEpTQ2xhc3M+OjpDb252ZXJ0ZXJSZXN1bHQgdG9ET01Bcmd1
bWVudHNWYXJpYWRpYyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHNpemVfdCBzdGFydEluZGV4KQor
eworICAgIHNpemVfdCBsZW5ndGggPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CisgICAgaWYgKHN0
YXJ0SW5kZXggPj0gbGVuZ3RoKQorICAgICAgICByZXR1cm4ge051bGxvcHQsIDB9OworCisgICAg
dHlwZW5hbWUgRE9NVmFyaWFkaWNIZWxwZXI8SlNDbGFzcz46OkNvbnRhaW5lciByZXN1bHQ7Cisg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGF1dG8gKnZhbHVlID0gSlNDbGFzczo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiB7TnVsbG9w
dCwgaX07CisKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgqdmFsdWUpOworICAgIH0K
KyAgICByZXR1cm4ge1dURk1vdmUocmVzdWx0KSwgbGVuZ3RofTsKK30KKwogaW5saW5lIFN0cmlu
ZyBwcm9wZXJ0eU5hbWVUb1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDE1MzFmYWU3
OTFjOTU1OGFkOGIwOGNlZjgyNmFjZDg0MWQ2YzlhNmYuLmE0NDk3ZjEwYTk4Njc0NTFhYWY5NzJl
MjEzMmM5MjRhNGE3M2IxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNjc4LDIzICszNjc4LDE4IEBAIHN1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0g
IldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRp
YykgewotICAgICAgICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgk
aW50ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgICAgICBpZiAoIUlzTmF0aXZlVHlwZSgkdHlwZSkp
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRp
dmVFbGVtZW50VHlwZT4gJG5hbWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgQVNTRVJUKCRhcmd1bWVudEluZGV4IDw9IHN0YXRlLT5hcmd1bWVudENvdW50
KCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRuYW1l
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtICRhcmd1bWVu
dEluZGV4KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBm
b3IgKHVuc2lnbmVkIGkgPSAkYXJndW1lbnRJbmRleCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpOyBpIDwgY291bnQ7ICsraSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCBpLCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0
aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgJG5hbWUudW5jaGVja2VkQXBwZW5kKGl0ZW0pO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpCisgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSB0b0RPTUFyZ3VtZW50c1Zhcmlh
ZGljPEpTJHR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJG5hbWUuZmlyc3QpXG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgJG5hbWUuc2Vjb25kLCBcIiRuYW1lXCIsIFwiJGludGVyZmFj
ZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCokbmFtZS5maXJzdCkiOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRu
YXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVu
dFR5cGU+KHN0YXRlLCAkYXJndW1lbnRJbmRleCk7XG4iKTsKKyAgICAgICAgICAgICAgICBteSAk
bmF0aXZlRWxlbWVudFR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IHRvTmF0
aXZlQXJndW1lbnRzPCRuYXRpdmVFbGVtZW50VHlwZT4oc3RhdGUsICRhcmd1bWVudEluZGV4KTtc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTtcbiIpOworICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAg
ICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAg
ICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAk
dHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNzM2MTY3YTM1NWNkZjNiZGQ3YjJhOGNlNzkyMjBhMzZm
NDM4YjFmMS4uYjVjYjAyZDAwYTk2NGY3YmY3NDAyYzBiZTYwYTQ5NTVjNWM3NTlkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTUzODcsMTYgKzUzODcsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Ci0gICAgQVNTRVJUKDAgPD0gc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291
bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBh
dXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIiwgIkJsb2IiKTsKLSAgICAgICAgYmxvYkFyZ3MudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwot
ICAgIH0KLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOworICAg
IGF1dG8gYmxvYkFyZ3MgPSB0b0RPTUFyZ3VtZW50c1ZhcmlhZGljPEpTQmxvYj4oKnN0YXRlLCAw
KTsKKyAgICBpZiAoIWJsb2JBcmdzLmZpcnN0KQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIGJsb2JBcmdzLnNlY29uZCwgImJsb2JBcmdzIiwgIlRlc3RPYmoi
LCAib3ZlcmxvYWRlZE1ldGhvZCIsICJCbG9iIik7CisgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9k
KFdURk1vdmUoKmJsb2JBcmdzLmZpcnN0KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTkxNCw3ICs1OTA4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKEV4ZWMKICAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFZlY3RvcjxTdHJp
bmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KHN0YXRlLCAxKTsKKyAgICBhdXRv
IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KHN0YXRlLCAxKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1v
dmUoaGVhZCksIFdURk1vdmUodGFpbCkpOwpAQCAtNTkzNCw3ICs1OTI4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91
YmxlTWV0aG9kKEV4ZWMKICAgICBhdXRvIGhlYWQgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFZlY3Rvcjxkb3VibGU+IHRhaWwgPSB0b05hdGl2
ZUFyZ3VtZW50czxkb3VibGU+KHN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSB0b05hdGl2ZUFy
Z3VtZW50czxkb3VibGU+KHN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUo
dGFpbCkpOwpAQCAtNTk1NCwxNiArNTk0OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAog
ICAgIGF1dG8gaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCAwLCAiaGVhZCIsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIs
ICJOb2RlIik7Ci0gICAgVmVjdG9yPE5vZGUqPiB0YWlsOwotICAgIEFTU0VSVCgxIDw9IHN0YXRl
LT5hcmd1bWVudENvdW50KCkpOwotICAgIHRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQg
PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBhdXRv
KiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsK
LSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCBpLCAidGFpbCIsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIs
ICJOb2RlIik7Ci0gICAgICAgIHRhaWwudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwotICAgIH0KLSAg
ICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7CisgICAgYXV0
byB0YWlsID0gdG9ET01Bcmd1bWVudHNWYXJpYWRpYzxKU05vZGU+KCpzdGF0ZSwgMSk7CisgICAg
aWYgKCF0YWlsLmZpcnN0KQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigq
c3RhdGUsIHRhaWwuc2Vjb25kLCAidGFpbCIsICJUZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhv
ZCIsICJOb2RlIik7CisgICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUo
KnRhaWwuZmlyc3QpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5k
ZXggNTkyODkzNTdjOTFkODdkMmI2M2M3MmU5MmVhMWNiYzc4MTg1MWFiMC4uNTE3NGNkMjAxNGMy
YWM1YTk2NWFkMTZmYzAxMWYzMDk3ZDVhMDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhl
Y1N0YXRlKiBzCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Iq
PihzdGF0ZS0+Y2FsbGVlKCkpOwotICAgIFZlY3RvcjxpbnQzMl90PiBsb25nQXJncyA9IHRvTmF0
aXZlQXJndW1lbnRzPGludDMyX3Q+KHN0YXRlLCAwKTsKKyAgICBhdXRvIGxvbmdBcmdzID0gdG9O
YXRpdmVBcmd1bWVudHM8aW50MzJfdD4oc3RhdGUsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNyZWF0ZShsb25nQXJncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281905</attachid>
            <date>2016-06-23 03:47:59 -0700</date>
            <delta_ts>2016-06-27 07:03:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160623124749.patch</filename>
            <type>text/plain</type>
            <size>18172</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YxNmU4NWZiZmU1YTZl
MDA0YTk4ZmRmNTc2ZDUwMWRkMGVlMDFlMi4uMzMyOTkwNjJmZjk0OTU1MzU5M2RmNmI0YjkzN2Vk
MGNhZTQ1ZTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA2LTIzICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZnVuY3Rpb24gd2l0aCB2
YXJpYWRpYyBwYXJhbWV0ZXIgZm9yIERPTSBvYmplY3RzLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZhcmlhZGljSGVscGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1
KToKKwogMjAxNi0wNi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1NvdXBdIENsZWFuIHVwIFNvY2tldFN0cmVhbUhhbmRsZSBzb3VwIGlt
cGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDcyNGI5YzJmNjRkYTIyYmE4ODc5OThj
M2RkOTZhZjI4NWNmOTg1ODcuLmMyZDE5MGEwZDc4YjNkM2U0NjdmOGIzZTQzYTc2ZmZkYjViNDVl
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUlRDUGVlckNvbm5l
Y3Rpb246OmluaXRpYWxpemVXaXRoKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRGljdGlvbmFy
eSYgcnRjCiAgICAgc2V0Q29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uLCBlYyk7CiB9CiAK
LVJlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtKj4mIHN0cmVh
bXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5l
Y3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0
ZTo6Q2xvc2VkKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0xMTUsNyAr
MTE1LDcgQEAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNr
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLAogCiAgICAgVmVjdG9yPFN0cmluZz4gbWVk
aWFTdHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAgICAgIG1l
ZGlhU3RyZWFtSWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOworICAgICAgICBtZWRpYVN0cmVhbUlk
cy5hcHBlbmQoc3RyZWFtLmdldCgpLmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBzZW5kZXIg
PSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNTllODE4MDljMjk0MTlhMmEwMDljNDUxMmQx
NmMwZGE2MThjZmQyOC4uNjFiMmE3NWI3YWJhMmZlNDZiOTNlM2JlNjE4ODczNmVlZDkyZmUxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxSVENSdHBTZW5kZXI+PiYgZ2V0U2VuZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNjZWl2ZXJTZXQtPmdldFNlbmRlcnMoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRD
UnRwUmVjZWl2ZXI+PiYgZ2V0UmVjZWl2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2NlaXZl
clNldC0+Z2V0UmVjZWl2ZXJzKCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRy
YW5zY2VpdmVyPj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dHJhbnNjZWl2ZXJTZXQtPmxpc3QoKTsgfQorICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFkZFRy
YWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3Rv
cjxNZWRpYVN0cmVhbSo+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlVHJhY2so
UlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gVGhpcyBlbnVtIGlzIG1p
cnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgKaW5kZXggYzYyZGJiMmI4ZWUxMDlkN2ZkOGRmNzA2NGNkODNlODkzMWFk
NzhlOS4uYjRhYjAxMzVjNjljYzNhMDdkODY3Yjk2YzEyNDg5YzdlY2M3NDM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI4Myw3ICsyODMsNiBAQCBS
ZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSk7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVHlwZT4gVmVjdG9yPFJlZlB0cjxUPj4g
dG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgVCogKCop
KEpTQzo6SlNWYWx1ZSkpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZl
QXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IHN0
YXJ0SW5kZXggPSAwKTsKIAogYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShKU0M6OkV4ZWNT
dGF0ZSosIE5vZGUqKTsKIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEpTQzo6RXhlY1N0
YXRlKiwgRnJhbWUqKTsKQEAgLTMwNiw2ICszMDUsMzggQEAgQXRvbWljU3RyaW5nIHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lKTsKIAogdGVtcGxhdGU8SlNDOjpO
YXRpdmVGdW5jdGlvbiwgaW50IGxlbmd0aD4gSlNDOjpFbmNvZGVkSlNWYWx1ZSBub25DYWNoaW5n
U3RhdGljRnVuY3Rpb25HZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBOYXRp
dmVWYWx1ZVRyYWl0czsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIERP
TUNsYXNzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgorc3RydWN0IFZhcmlhZGljSGVscGVyIHsK
KyAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8RE9NQ2xhc3M+OworICAgIHVzaW5nIFJlc3Vs
dCA9IHR5cGVuYW1lIHN0ZDo6cGFpcjxPcHRpb25hbDxDb250YWluZXI+LCBzaXplX3Q+OworCisg
ICAgc3RhdGljIE9wdGlvbmFsPERPTUNsYXNzPiBhcmd1bWVudENvbnZlcnRlcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAgICAgICAgdHlwZWRl
ZiBOYXRpdmVWYWx1ZVRyYWl0czxET01DbGFzcz4gVHJhaXRzVHlwZTsKKyAgICAgICAgRE9NQ2xh
c3MgaW5kZXhWYWx1ZTsKKyAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZSgmc3Rh
dGUsIGpzVmFsdWUsIGluZGV4VmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBpbmRleFZhbHVlOworICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KK3N0cnVjdCBWYXJpYWRpY0hlbHBlciA8SlND
bGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPEpTRE9NT2JqZWN0SW5zcGVj
dG9yPEpTQ2xhc3M+Ojppc1dyYXBwaW5nRE9NT2JqZWN0Pjo6dHlwZT4geworICAgIHVzaW5nIENs
YXNzICAgICA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShzdGQ6OmRl
Y2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsKKyAgICB1c2luZyBJdGVtICAgICAg
PSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKKyAgICB1c2luZyBDb250YWluZXIgPSBW
ZWN0b3I8SXRlbT47CisgICAgdXNpbmcgUmVzdWx0ICAgID0gdHlwZW5hbWUgc3RkOjpwYWlyPE9w
dGlvbmFsPENvbnRhaW5lcj4sIHNpemVfdD47CisKKyAgICBzdGF0aWMgYXV0byBhcmd1bWVudENv
bnZlcnRlcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTQ2xhc3M6OnRvV3JhcHBlZChqc1ZhbHVlKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVy
OjpSZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9
IDApOworCiAvLyBJbmxpbmUgZnVuY3Rpb25zIGFuZCB0ZW1wbGF0ZSBkZWZpbml0aW9ucy4KIAog
aW5saW5lIEpTQzo6U3RydWN0dXJlKiBET01Db25zdHJ1Y3Rvck9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCkBAIC02NTcsOCArNjg4LDYgQEAgaW5saW5lIFJlZlB0cjxKU0M6
OlVpbnQzMkFycmF5PiB0b1VpbnQzMkFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4g
SlNDOjoKIGlubGluZSBSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+IHRvRmxvYXQzMkFycmF5KEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2ZVR5cGVkVmlldzxKU0M6OkZs
b2F0MzJBZGFwdG9yPih2YWx1ZSk7IH0KIGlubGluZSBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+
IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gSlNDOjp0b05hdGl2
ZVR5cGVkVmlldzxKU0M6OkZsb2F0NjRBZGFwdG9yPih2YWx1ZSk7IH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBO
YXRpdmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZl
VmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcm
IGluZGV4ZWRWYWx1ZSkKICAgICB7CkBAIC03NDQsMjQgKzc3Myw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBW
ZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBz
dGFydEluZGV4KQotewotICAgIHNpemVfdCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7
Ci0gICAgQVNTRVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKLQotICAgIFZlY3RvcjxUPiByZXN1
bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRl
eCk7Ci0gICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBlOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBU
IGluZGV4VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhlYywg
ZXhlYy0+YXJndW1lbnQoaSksIGluZGV4VmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIFZlY3Rv
cjxUPigpOwotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGluZGV4VmFsdWUpOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBpbmxpbmUgU3RyaW5nIHByb3BlcnR5TmFtZVRv
U3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQoIXBy
b3BlcnR5TmFtZS5pc1N5bWJvbCgpKTsKQEAgLTc3Myw2ICs3ODQsMjQgQEAgaW5saW5lIEF0b21p
Y1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBw
cm9wZXJ0eU5hbWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpKTsKIH0KIAordGVt
cGxhdGUgPHR5cGVuYW1lIFZhcmlhZGljSGVscGVyPiB0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcjo6
UmVzdWx0IHRvQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgc2l6ZV90IHN0YXJ0SW5k
ZXgpCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKKyAgICBp
ZiAoc3RhcnRJbmRleCA+IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIHtOdWxsb3B0LCAwfTsKKwor
ICAgIHR5cGVuYW1lIFZhcmlhZGljSGVscGVyOjpDb250YWluZXIgcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxlbmd0aCAtIHN0YXJ0SW5kZXgpOworCisgICAgZm9y
IChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBhdXRv
IHZhbHVlID0gVmFyaWFkaWNIZWxwZXI6OmFyZ3VtZW50Q29udmVydGVyKHN0YXRlLCBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBy
ZXR1cm4ge051bGxvcHQsIGl9OworICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKCp2YWx1
ZSk7CisgICAgfQorICAgIHJldHVybiB7V1RGTW92ZShyZXN1bHQpLCBsZW5ndGh9OworfQorCiB0
ZW1wbGF0ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBK
U0M6OkVuY29kZWRKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogewogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OkpTRnVu
Y3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGxl
bmd0aCwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbmF0aXZlRnVuY3Rpb24pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggNzE1NjAxZWYyZjRkMjAw
MjAyNjMyMjk2M2EzZjc5NGJmMWJmZTlmYS4uYTFlNjZiN2VhNDI5OTllM2NmYjhiZDBiNDIwNGVl
N2MzMWJiOTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgK
QEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1Np
bXBsZVdyYXBwZXIgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNDb21wbGV4
V3JhcHBlciA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0J1aWx0aW4gPSB0
cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1dyYXBwaW5nRE9NT2JqZWN0ID0gZmFs
c2U7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPgpAQCAtODQsNiArODUsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzU2ltcGxlV3JhcHBlciA9IHRlc3Q8
dHlwZW5hbWUgSlNDbGFzczo6RE9NV3JhcHBlZD4oMCk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzQ29tcGxleFdyYXBwZXIgPSAhaXNTaW1wbGVXcmFwcGVyOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0J1aWx0aW4gPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNXcmFwcGluZ0RPTU9iamVjdCA9IHRydWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IGFmYjZmNzY5OTg5M2E3NjNiNDYzYWQzMGMyMzliMDQ2ZjdjODJiNjYuLjQ2OGMy
ZWNiNWNjZmI0ZmUwODI2OGZmZWQxM2U1YTRiNzI2NmFhYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNjAxLDcgKzM2
MDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICB9IGVsc2UgewogICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOwog
ICAgIH0KLSAgICAKKwogICAgIG15ICRxdW90ZWRGdW5jdGlvbk5hbWU7CiAgICAgaWYgKCEkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsK
ICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKQEAgLTM2Nzcs
MjMgKzM2NzcsMjQgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7Ci0gICAgICAgICAgICBteSAkbmF0aXZlRWxlbWVu
dFR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgIG15
ICRkb21UeXBlOwogICAgICAgICAgICAgaWYgKCFJc05hdGl2ZVR5cGUoJHR5cGUpKSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVu
dFR5cGU+ICRuYW1lO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEFTU0VSVCgkYXJndW1lbnRJbmRleCA8PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmFtZS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHN0YXRlLT5hcmd1bWVudENvdW50KCkgLSAkYXJndW1lbnRJbmRleCk7
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNp
Z25lZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsg
aSA8IGNvdW50OyArK2kpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgYXV0byogaXRlbSA9IEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudChpKSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGlmICghaXRlbSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgaSwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUs
IFwiJHR5cGVcIik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVt
ZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KHN0
YXRlLCAkYXJndW1lbnRJbmRleCk7XG4iKTsKKyAgICAgICAgICAgICAgICAkZG9tVHlwZSA9ICIk
dHlwZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAkZG9tVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSB0
b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKUyRkb21UeXBlLCAkZG9tVHlwZT4+KCpzdGF0ZSwg
JGFyZ3VtZW50SW5kZXgpO1xuIik7CisKKyAgICAgICAgICAgIGlmIChJc05hdGl2ZVR5cGUoJHR5
cGUpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgk
bmFtZSkiOworCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEkbmFt
ZS5maXJzdClcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsICRuYW1lLnNlY29uZCwgXCIkbmFt
ZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7
XG4iKTsKKyAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCokbmFtZS5maXJzdCkiOworCiAg
ICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewogICAg
ICAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZh
Y2UsICR0eXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxM2MxMmI5NmNmZTdiMmYyNjVlMDYxOTFiMGQy
MDhkYThiMTA5YWI3Li41MDRmY2I0NGNiYzk4NjhhZjg2NTIxZTliNjZiYWE4Mjg4OGI0NTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtNTQwNywxNiArNTQwNywxMCBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKEV4ZWNT
dAogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgVmVjdG9yPEJsb2IqPiBibG9iQXJnczsKLSAgICBBU1NFUlQoMCA8PSBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKLSAgICBibG9iQXJncy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHN0YXRlLT5hcmd1bWVudENvdW50KCkgLSAwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAg
ICAgIGF1dG8qIGl0ZW0gPSBKU0Jsb2I6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoaSkpOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIGksICJibG9iQXJncyIsICJUZXN0T2JqIiwgIm92ZXJsb2Fk
ZWRNZXRob2QiLCAiQmxvYiIpOwotICAgICAgICBibG9iQXJncy51bmNoZWNrZWRBcHBlbmQoaXRl
bSk7Ci0gICAgfQotICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGJsb2JBcmdzKSk7
CisgICAgYXV0byBibG9iQXJncyA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTQmxvYiwg
QmxvYj4+KCpzdGF0ZSwgMCk7CisgICAgaWYgKCFibG9iQXJncy5maXJzdCkKKyAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBibG9iQXJncy5zZWNvbmQsICJibG9i
QXJncyIsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOworICAgIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKCpibG9iQXJncy5maXJzdCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5MzQsMTAgKzU5MjgsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWMKICAgICBhdXRvIGhlYWQgPSBzdGF0ZS0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KHN0
YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU1N0
cmluZywgU3RyaW5nPj4oKnN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUo
dGFpbCkpOworICAgIGlmICghdGFpbC5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0YWlsLnNlY29uZCwgInRhaWwiLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY1N0cmluZ01ldGhvZCIsICJET01TdHJpbmciKTsKKyAgICBpbXBsLnZhcmlhZGljU3RyaW5n
TWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUoKnRhaWwuZmlyc3QpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTU0LDEwICs1OTUwLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3Vi
bGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8ZG91YmxlPiB0
YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihzdGF0ZSwgMSk7CisgICAgYXV0byB0YWls
ID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNkb3VibGUsIGRvdWJsZT4+KCpzdGF0ZSwg
MSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC52YXJpYWRpY0Rv
dWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBpZiAoIXRhaWwu
Zmlyc3QpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGFp
bC5zZWNvbmQsICJ0YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNEb3VibGVNZXRob2QiLCAidW5y
ZXN0cmljdGVkIGRvdWJsZSIpOworICAgIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RGTW92
ZShoZWFkKSwgV1RGTW92ZSgqdGFpbC5maXJzdCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTU5NzQsMTYgKzU5NzIsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9k
ZU1ldGhvZChFeGVjU3QKICAgICBhdXRvIGhlYWQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghaGVhZCkpCiAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgImhlYWQiLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKLSAgICBB
U1NFUlQoMSA8PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKLSAgICB0YWlsLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtIDEpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDEsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kp
IHsKLSAgICAgICAgYXV0byogaXRlbSA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7Ci0gICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgInRhaWwiLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwotICAgICAgICB0YWlsLnVuY2hlY2tlZEFwcGVuZChp
dGVtKTsKLSAgICB9Ci0gICAgaW1wbC52YXJpYWRpY05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUo
dGFpbCkpOworICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTTm9k
ZSwgTm9kZT4+KCpzdGF0ZSwgMSk7CisgICAgaWYgKCF0YWlsLmZpcnN0KQorICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRhaWwuc2Vjb25kLCAidGFpbCIsICJU
ZXN0T2JqIiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgaW1wbC52YXJpYWRp
Y05vZGVNZXRob2QoKmhlYWQsIFdURk1vdmUoKnRhaWwuZmlyc3QpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTkyODkzNTdjOTFkODdkMmI2M2M3MmU5MmVh
MWNiYzc4MTg1MWFiMC4uYjFkY2VjNjZjZmVhNGFhNzllOGRlZWFhNDQwNGE0OTg2M2M5MTc4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTIw
LDkgKzEyMCwxMSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogcwogc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3Rh
dGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKLSAgICBWZWN0
b3I8aW50MzJfdD4gbG9uZ0FyZ3MgPSB0b05hdGl2ZUFyZ3VtZW50czxpbnQzMl90PihzdGF0ZSwg
MCk7CisgICAgYXV0byBsb25nQXJncyA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTaW50
MzJfdCwgaW50MzJfdD4+KCpzdGF0ZSwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CisgICAgaWYgKCFsb25nQXJncy5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCBsb25nQXJncy5zZWNvbmQsICJsb25nQXJncyIsICJUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJsb25nIik7CiAgICAgYXV0byBvYmplY3Qg
PSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGxvbmdBcmdzKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282128</attachid>
            <date>2016-06-27 07:03:15 -0700</date>
            <delta_ts>2016-07-11 11:05:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160627160259.patch</filename>
            <type>text/plain</type>
            <size>17930</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNmMzI3OWYwZmU5ZDFj
NWMxZjdkYzIzZWU5MWUzYjAxY2U2OWE3Ny4uMjM2MzNiYTU3NDY2NmIxNTYyOGYyZDQwZjFmZjZi
M2EzNzdmNzlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE2LTA2LTI3ICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZnVuY3Rpb24gd2l0aCB2
YXJpYWRpYyBwYXJhbWV0ZXIgZm9yIERPTSBvYmplY3RzLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZhcmlhZGljSGVscGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOiBEZWxldGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1
KToKKwogMjAxNi0wNi0yNiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW0VGTF0gRml4IGJ1aWxkIHdhcm5pbmcgd2hlbiB1c2luZyBnZW9jbHVlMgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCBkYjFhYTE0NzhhOTU1MWQ4Yzg3MzZjNTQ4NmM0YmUwZTlkODJm
ZWJmLi5kM2E0NDRkM2Y0ODZkYjJjNmI4YjJhZGM0YWU4NDAyYTZkODlmMTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFs
aXplV2l0aChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0YwogICAgIHNl
dENvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8UlRDUnRw
U2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25D
b2RlJiBlYykKK1JlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYgc3RyZWFtcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkgewog
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMTE1LDcgKzExNSw3IEBAIFJlZlB0
cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwog
ICAgIGZvciAoYXV0byBzdHJlYW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5h
cHBlbmQoc3RyZWFtLT5pZCgpKTsKKyAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKHN0cmVh
bS5nZXQoKS5pZCgpKTsKIAogICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5oCmluZGV4IDYyYTM5NGViZmI3MzJlN2FjMjhjMWQzZmI1NjA4ZjI0N2FhMGVlNTMu
LjRkNjBhYjMyMTA2MzY3ZTc1N2ZjNWU0MjZmYWQzMWQzOWNkNTBhMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1lZGlhU3Ry
ZWFtLWJhc2VkIEFQSSAobW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykKICAgICBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZC0+Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8UlRDUnRw
U2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVjdG9yPE1l
ZGlhU3RyZWFtKj4mLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4g
YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBy
ZW1vdmVUcmFjayhSVENSdHBTZW5kZXImLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGlz
IGVudW0gaXMgbWlycm9yZWQgaW4gUlRDUnRwVHJhbnNjZWl2ZXIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAppbmRleCBjNjJkYmIyYjhlZTEwOWQ3ZmQ4ZGY3MDY0
Y2Q4M2U4OTMxYWQ3OGU5Li5iNGFiMDEzNWM2OWNjM2EwN2Q4NjdiOTZjMTI0ODljN2VjYzc0Mzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjgzLDcg
KzI4Myw2IEBAIFJlZlB0cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpK
U1ZhbHVlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUeXBlPiBWZWN0b3I8
UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBUKiAoKikoSlNDOjpKU1ZhbHVlKSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8
VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7Ci10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUq
LCBzaXplX3Qgc3RhcnRJbmRleCA9IDApOwogCiBib29sIHNob3VsZEFsbG93QWNjZXNzVG9Ob2Rl
KEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwogYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUo
SlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwpAQCAtMzA2LDYgKzMwNSwzOCBAQCBBdG9taWNTdHJp
bmcgcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB0ZW1w
bGF0ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBKU0M6OkVuY29kZWRKU1ZhbHVl
IG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlNDbGFzcywg
dHlwZW5hbWUgRE9NQ2xhc3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgVmFyaWFk
aWNIZWxwZXIgeworICAgIHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxET01DbGFzcz47CisgICAg
dXNpbmcgUmVzdWx0ID0gdHlwZW5hbWUgc3RkOjpwYWlyPE9wdGlvbmFsPENvbnRhaW5lcj4sIHNp
emVfdD47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8RE9NQ2xhc3M+IGFyZ3VtZW50Q29udmVydGVy
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAg
ICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBlOworICAg
ICAgICBET01DbGFzcyBpbmRleFZhbHVlOworICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2
ZVZhbHVlKCZzdGF0ZSwganNWYWx1ZSwgaW5kZXhWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7CisgICAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIERPTUNsYXNzPgorc3RydWN0IFZhcmlhZGlj
SGVscGVyIDxKU0NsYXNzLCBET01DbGFzcywgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SlNET01P
YmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzV3JhcHBpbmdET01PYmplY3Q+Ojp0eXBlPiB7Cisg
ICAgdXNpbmcgQ2xhc3MgICAgID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOworICAgIHVzaW5n
IEl0ZW0gICAgICA9IHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q2xhc3M+OworICAgIHVzaW5nIENv
bnRhaW5lciA9IFZlY3RvcjxJdGVtPjsKKyAgICB1c2luZyBSZXN1bHQgICAgPSB0eXBlbmFtZSBz
dGQ6OnBhaXI8T3B0aW9uYWw8Q29udGFpbmVyPiwgc2l6ZV90PjsKKworICAgIHN0YXRpYyBhdXRv
IGFyZ3VtZW50Q29udmVydGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gSlNDbGFzczo6dG9XcmFwcGVkKGpzVmFsdWUpOworICAg
IH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcj4gdHlwZW5hbWUgVmFy
aWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBz
dGFydEluZGV4ID0gMCk7CisKIC8vIElubGluZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRlIGRlZmlu
aXRpb25zLgogCiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIERPTUNvbnN0cnVjdG9yT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTY1Nyw4ICs2ODgsNiBAQCBpbmxpbmUg
UmVmUHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVl
KSB7IHJldHVybiBKU0M6OgogaW5saW5lIFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9h
dDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZlVHlwZWRW
aWV3PEpTQzo6RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQogaW5saW5lIFJlZlB0cjxKU0M6OkZs
b2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBK
U0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6RmxvYXQ2NEFkYXB0b3I+KHZhbHVlKTsgfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7Ci0KIHRlbXBsYXRl
PD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFs
dWUsIFN0cmluZyYgaW5kZXhlZFZhbHVlKQogICAgIHsKQEAgLTc0NCwyNCArNzczLDYgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSogZXhl
Yywgc2l6ZV90IHN0YXJ0SW5kZXgpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKLSAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwotCi0gICAgVmVj
dG9yPFQ+IHJlc3VsdDsKLSAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgg
LSBzdGFydEluZGV4KTsKLSAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IFRyYWl0c1R5
cGU7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIFQgaW5kZXhWYWx1ZTsKLSAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVW
YWx1ZShleGVjLCBleGVjLT5hcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gVmVjdG9yPFQ+KCk7Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5kZXhW
YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGlubGluZSBTdHJpbmcgcHJv
cGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpOwpAQCAtNzczLDYgKzc4NCwyNCBAQCBp
bmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlh
ZGljSGVscGVyOjpSZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXpl
X3Qgc3RhcnRJbmRleCkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3Vu
dCgpOworICAgIGlmIChzdGFydEluZGV4ID4gbGVuZ3RoKQorICAgICAgICByZXR1cm4ge051bGxv
cHQsIDB9OworCisgICAgdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OkNvbnRhaW5lciByZXN1bHQ7
CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSBWYXJpYWRpY0hlbHBlcjo6YXJndW1lbnRDb252ZXJ0ZXIoc3Rh
dGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiB7TnVsbG9wdCwgaX07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoKnZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIHtXVEZNb3ZlKHJlc3VsdCksIGxlbmd0
aH07Cit9CisKIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGlu
dCBsZW5ndGg+IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2Rl
KEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlv
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAppbmRleCA3MTU2
MDFlZjJmNGQyMDAyMDI2MzIyOTYzYTNmNzk0YmYxYmZlOWZhLi5hMWU2NmI3ZWE0Mjk5OWUzY2Zi
OGJkMGI0MjA0ZWU3YzMxYmI5NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXIuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzU2ltcGxlV3JhcHBlciA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0NvbXBsZXhXcmFwcGVyID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
QnVpbHRpbiA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzV3JhcHBpbmdET01P
YmplY3QgPSBmYWxzZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CkBAIC04NCw2
ICs4NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTaW1wbGVXcmFw
cGVyID0gdGVzdDx0eXBlbmFtZSBKU0NsYXNzOjpET01XcmFwcGVkPigwKTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNDb21wbGV4V3JhcHBlciA9ICFpc1NpbXBsZVdyYXBwZXI7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzQnVpbHRpbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc1dyYXBwaW5nRE9NT2JqZWN0ID0gdHJ1ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggMmUyYjU5ZmNlOTFmZjg5NWE0OGZjNmVmNTIzOGYyMjNjYzcw
NmI4ZS4uNWNhYmZhNjVmYWY4OGY1OGQ0N2M2YWNjNjc5OGQyZTEyNWYwNmE1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTM2MDYsNyArMzYwNiw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIH0gZWxz
ZSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRp
b25OYW1lfSI7CiAgICAgfQotICAgIAorCiAgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKICAg
ICBpZiAoISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3Ry
dWN0b3IifSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwpAQCAtMzY4MiwyMyArMzY4MiwxOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAg
ICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKLSAgICAgICAgICAgIG15ICRu
YXRpdmVFbGVtZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwotICAg
ICAgICAgICAgaWYgKCFJc05hdGl2ZVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVCgkYXJn
dW1lbnRJbmRleCA8PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTtcbiIpOwotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgLSAkYXJndW1lbnRJbmRleCk7XG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3Vt
ZW50SW5kZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kp
IHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0
byogaXRlbSA9IEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChp
KSk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlm
ICghaXRlbSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgXCIkbmFtZVwi
LCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVu
Y2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB9XG4iKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUg
PSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KHN0YXRlLCAkYXJndW1lbnRJ
bmRleCk7XG4iKTsKKyAgICAgICAgICAgIG15ICRkb21UeXBlID0gSXNOYXRpdmVUeXBlKCR0eXBl
KSA/IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpIDogIiR0eXBlIjsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gdG9Bcmd1bWVudHM8VmFy
aWFkaWNIZWxwZXI8SlMkZG9tVHlwZSwgJGRvbVR5cGU+Pigqc3RhdGUsICRhcmd1bWVudEluZGV4
KTtcbiIpOworCisgICAgICAgICAgICBpZiAoSXNOYXRpdmVUeXBlKCR0eXBlKSkgewogICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKKworICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJG5hbWUuZmlyc3QpXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkbmFtZS5zZWNvbmQsIFwiJG5hbWVcIiwgXCIkaW50ZXJm
YWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAg
ICAgICAkdmFsdWUgPSAiV1RGTW92ZSgqJG5hbWUuZmlyc3QpIjsKKwogICAgICAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15ICRj
bGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMTNjMTJiOTZjZmU3YjJmMjY1ZTA2MTkxYjBkMjA4ZGE4YjEwOWFiNy4u
NTA0ZmNiNDRjYmM5ODY4YWY4NjUyMWU5YjY2YmFhODI4ODhiNDUxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTU0MDcsMTYgKzU0MDcsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Ci0gICAgQVNTRVJUKDAgPD0gc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSk7Ci0gICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIC0gMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBhdXRvKiBpdGVt
ID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAg
ICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJs
b2IiKTsKLSAgICAgICAgYmxvYkFyZ3MudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwotICAgIH0KLSAg
ICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOworICAgIGF1dG8gYmxv
YkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigqc3RhdGUs
IDApOworICAgIGlmICghYmxvYkFyZ3MuZmlyc3QpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgYmxvYkFyZ3Muc2Vjb25kLCAiYmxvYkFyZ3MiLCAiVGVzdE9i
aiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoV1RGTW92ZSgqYmxvYkFyZ3MuZmlyc3QpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTM0LDEwICs1OTI4LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmlu
Z01ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8
U3RyaW5nPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5nPihzdGF0ZSwgMSk7CisgICAg
YXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNTdHJpbmcsIFN0cmluZz4+
KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC52
YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBp
ZiAoIXRhaWwuZmlyc3QpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpz
dGF0ZSwgdGFpbC5zZWNvbmQsICJ0YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNTdHJpbmdNZXRo
b2QiLCAiRE9NU3RyaW5nIik7CisgICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3Zl
KGhlYWQpLCBXVEZNb3ZlKCp0YWlsLmZpcnN0KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNTk1NCwxMCArNTk1MCwxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3Vi
bGVNZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9IGNvbnZlcnQ8ZG91YmxlPigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPGRvdWJsZT4oc3RhdGUsIDEpOworICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRz
PFZhcmlhZGljSGVscGVyPEpTZG91YmxlLCBkb3VibGU+Pigqc3RhdGUsIDEpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGltcGwudmFyaWFkaWNEb3VibGVNZXRob2QoV1RG
TW92ZShoZWFkKSwgV1RGTW92ZSh0YWlsKSk7CisgICAgaWYgKCF0YWlsLmZpcnN0KQorICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRhaWwuc2Vjb25kLCAidGFp
bCIsICJUZXN0T2JqIiwgInZhcmlhZGljRG91YmxlTWV0aG9kIiwgInVucmVzdHJpY3RlZCBkb3Vi
bGUiKTsKKyAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1v
dmUoKnRhaWwuZmlyc3QpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCkBAIC01OTc0LDE2ICs1OTcyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0
CiAgICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIDAsICJoZWFkIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9k
IiwgIk5vZGUiKTsKLSAgICBWZWN0b3I8Tm9kZSo+IHRhaWw7Ci0gICAgQVNTRVJUKDEgPD0gc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgdGFpbC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0
YXRlLT5hcmd1bWVudENvdW50KCkgLSAxKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxLCBjb3Vu
dCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGF1
dG8qIGl0ZW0gPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkp
OwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIGksICJ0YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9k
IiwgIk5vZGUiKTsKLSAgICAgICAgdGFpbC51bmNoZWNrZWRBcHBlbmQoaXRlbSk7Ci0gICAgfQot
ICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBh
dXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU05vZGUsIE5vZGU+Pigqc3Rh
dGUsIDEpOworICAgIGlmICghdGFpbC5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0YWlsLnNlY29uZCwgInRhaWwiLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOworICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpo
ZWFkLCBXVEZNb3ZlKCp0YWlsLmZpcnN0KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuY3BwCmluZGV4IDU5Mjg5MzU3YzkxZDg3ZDJiNjNjNzJlOTJlYTFjYmM3ODE4NTFhYjAu
LmIxZGNlYzY2Y2ZlYTRhYTc5ZThkZWVhYTQ0MDRhNDk4NjNjOTE3OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTEyMCw5ICsxMjAsMTEgQEAg
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzNChFeGVjU3RhdGUqIHMKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7Ci0gICAgVmVjdG9yPGludDMyX3Q+IGxv
bmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJfdD4oc3RhdGUsIDApOworICAgIGF1dG8g
bG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU2ludDMyX3QsIGludDMyX3Q+
Pigqc3RhdGUsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICgh
bG9uZ0FyZ3MuZmlyc3QpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpz
dGF0ZSwgbG9uZ0FyZ3Muc2Vjb25kLCAibG9uZ0FyZ3MiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiLCBudWxscHRyLCAibG9uZyIpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShsb25nQXJncyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShhc09iamVjdCh0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283325</attachid>
            <date>2016-07-11 11:05:18 -0700</date>
            <delta_ts>2016-08-30 06:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160711200435.patch</filename>
            <type>text/plain</type>
            <size>18181</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTljZDI2ZDNmNTMyM2Zh
NGZiZjI3YTY3MTRhYTE2ODkzNjJmMzgzZi4uNTdlZjc2MzdjODFlODlmN2M0OGE1ZDk3MGEyODgx
YjJlMDM5NGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA3LTExICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZnVuY3Rpb24gd2l0aCB2
YXJpYWRpYyBwYXJhbWV0ZXIgZm9yIERPTSBvYmplY3RzLgorCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlZhcmlhZGljSGVscGVyKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b0FyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1BhaXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJheSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0b05hdGl2ZUFycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToKKwogMjAxNi0wNy0xMSAg
SmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgUGF1c2Ugc21hbGwg
dmlkZW8gZWxlbWVudHMgd2hlbiByZXR1cm5pbmcgdG8gaW5saW5lLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApp
bmRleCBkYjFhYTE0NzhhOTU1MWQ4Yzg3MzZjNTQ4NmM0YmUwZTlkODJmZWJmLi5kM2E0NDRkM2Y0
ODZkYjJjNmI4YjJhZGM0YWU4NDAyYTZkODlmMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjppbml0aWFsaXplV2l0aChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IERpY3Rpb25hcnkmIHJ0YwogICAgIHNldENvbmZpZ3VyYXRpb24o
cnRjQ29uZmlndXJhdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0
IFZlY3RvcjxNZWRpYVN0cmVhbSo+JiBzdHJlYW1zLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0
cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVk
aWFTdHJlYW0+PiYgc3RyZWFtcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2ln
bmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwpAQCAtMTE1LDcgKzExNSw3IEBAIFJlZlB0cjxSVENSdHBTZW5kZXI+
IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFj
aywKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhU3RyZWFtSWRzOwogICAgIGZvciAoYXV0byBz
dHJlYW0gOiBzdHJlYW1zKQotICAgICAgICBtZWRpYVN0cmVhbUlkcy5hcHBlbmQoc3RyZWFtLT5p
ZCgpKTsKKyAgICAgICAgbWVkaWFTdHJlYW1JZHMuYXBwZW5kKHN0cmVhbS5nZXQoKS5pZCgpKTsK
IAogICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4
IDYyYTM5NGViZmI3MzJlN2FjMjhjMWQzZmI1NjA4ZjI0N2FhMGVlNTMuLjRkNjBhYjMyMTA2MzY3
ZTc1N2ZjNWU0MjZmYWQzMWQzOWNkNTBhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTcyLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgbGVnYWN5IE1lZGlhU3RyZWFtLWJhc2VkIEFQSSAo
bW9zdGx5IGltcGxlbWVudGVkIGFzIEpTIGJ1aWx0LWlucykKICAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtPj4gZ2V0UmVtb3RlU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+
Z2V0UmVtb3RlU3RyZWFtcygpOyB9CiAKLSAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFj
ayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtKj4mLCBF
eGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gYWRkVHJhY2soUmVmPE1l
ZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE1l
ZGlhU3RyZWFtPj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVUcmFjayhSVENS
dHBTZW5kZXImLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBUaGlzIGVudW0gaXMgbWlycm9y
ZWQgaW4gUlRDUnRwVHJhbnNjZWl2ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCA0NWQ5Zjk3YzVmZmRlZDM5ZGRlNWEyZmJiMjlmNWFmOGZhODZhZWU1
Li5kNzhiMzVjMGI5NTBhNGNiNzU3Mjc1M2Y5NmYzYTQyNDdjMGY1NjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjgzLDcgKzI4Myw2IEBAIFJlZlB0
cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpKU1ZhbHVlKTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUeXBlPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1Jl
ZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBUKiAoKikoSlND
OjpKU1ZhbHVlKSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJh
eShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBW
ZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJ
bmRleCA9IDApOwogCiBib29sIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRl
KiwgTm9kZSopOwogYm9vbCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUq
LCBGcmFtZSopOwpAQCAtMzA2LDYgKzMwNSwzOCBAQCBBdG9taWNTdHJpbmcgcHJvcGVydHlOYW1l
VG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB0ZW1wbGF0ZTxKU0M6Ok5hdGl2
ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBKU0M6OkVuY29kZWRKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0
aWNGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZh
bHVlVHJhaXRzOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xh
c3MsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1Y3QgVmFyaWFkaWNIZWxwZXIgeworICAg
IHVzaW5nIENvbnRhaW5lciA9IFZlY3RvcjxET01DbGFzcz47CisgICAgdXNpbmcgUmVzdWx0ID0g
dHlwZW5hbWUgc3RkOjpwYWlyPE9wdGlvbmFsPENvbnRhaW5lcj4sIHNpemVfdD47CisKKyAgICBz
dGF0aWMgT3B0aW9uYWw8RE9NQ2xhc3M+IGFyZ3VtZW50Q29udmVydGVyKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCisgICAgeworICAgICAgICB0eXBlZGVmIE5h
dGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBlOworICAgICAgICBET01DbGFzcyBp
bmRleFZhbHVlOworICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKHN0YXRlLCBq
c1ZhbHVlLCBpbmRleFZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4gaW5kZXhWYWx1ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlND
bGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVmFyaWFkaWNIZWxwZXIgPEpTQ2xhc3Ms
IERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxKU0RPTU9iamVjdEluc3BlY3RvcjxK
U0NsYXNzPjo6aXNXcmFwcGluZ0RPTU9iamVjdD46OnR5cGU+IHsKKyAgICB1c2luZyBDbGFzcyAg
ICAgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoc3RkOjpkZWNsdmFs
PEpTQ2xhc3M+KCkud3JhcHBlZCgpKT46OnR5cGU7CisgICAgdXNpbmcgSXRlbSAgICAgID0gc3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9y
PEl0ZW0+OworICAgIHVzaW5nIFJlc3VsdCAgICA9IHR5cGVuYW1lIHN0ZDo6cGFpcjxPcHRpb25h
bDxDb250YWluZXI+LCBzaXplX3Q+OworCisgICAgc3RhdGljIGF1dG8gYXJndW1lbnRDb252ZXJ0
ZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUganNWYWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBKU0NsYXNzOjp0b1dyYXBwZWQoanNWYWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFZhcmlhZGljSGVscGVyPiB0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcjo6UmVz
dWx0IHRvQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiwgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsK
KwogLy8gSW5saW5lIGZ1bmN0aW9ucyBhbmQgdGVtcGxhdGUgZGVmaW5pdGlvbnMuCiAKIGlubGlu
ZSBKU0M6OlN0cnVjdHVyZSogRE9NQ29uc3RydWN0b3JPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQpAQCAtNjU3LDggKzY4OCw2IEBAIGlubGluZSBSZWZQdHI8SlNDOjpVaW50
MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6
CiBpbmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiB0b0Zsb2F0MzJBcnJheShKU0M6OkpT
VmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlNDOjpGbG9hdDMy
QWRhcHRvcj4odmFsdWUpOyB9CiBpbmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zs
b2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBl
ZFZpZXc8SlNDOjpGbG9hdDY0QWRhcHRvcj4odmFsdWUpOyB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZl
VmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVl
KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3RyaW5nJiBpbmRl
eGVkVmFsdWUpCiAgICAgewpAQCAtNzQ0LDI0ICs3NzMsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1Zh
bHVlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9y
PFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBzaXplX3Qgc3RhcnRJ
bmRleCkKLXsKLSAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy5hcmd1bWVudENvdW50KCk7Ci0gICAg
QVNTRVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKLQotICAgIFZlY3RvcjxUPiByZXN1bHQ7Ci0g
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7Ci0g
ICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBlOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBUIGluZGV4
VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhlYywgZXhlYy51
bmNoZWNrZWRBcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gVmVj
dG9yPFQ+KCk7Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5kZXhWYWx1ZSk7Ci0g
ICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGlubGluZSBTdHJpbmcgcHJvcGVydHlOYW1l
VG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVCgh
cHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpOwpAQCAtNzczLDYgKzc4NCwyNCBAQCBpbmxpbmUgQXRv
bWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZS51aWQoKSA/
IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkpOwogfQogCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlhZGljSGVscGVy
OjpSZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXplX3Qgc3RhcnRJ
bmRleCkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOworICAg
IGlmIChzdGFydEluZGV4ID4gbGVuZ3RoKQorICAgICAgICByZXR1cm4ge051bGxvcHQsIDB9Owor
CisgICAgdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI6OkNvbnRhaW5lciByZXN1bHQ7CisgICAgcmVz
dWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJbmRleCk7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGF1
dG8gdmFsdWUgPSBWYXJpYWRpY0hlbHBlcjo6YXJndW1lbnRDb252ZXJ0ZXIoc3RhdGUsIHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IHJldHVybiB7TnVsbG9wdCwgaX07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoKnZh
bHVlKTsKKyAgICB9CisgICAgcmV0dXJuIHtXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aH07Cit9CisK
IHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+
IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
bGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAppbmRleCA3MTU2MDFlZjJmNGQy
MDAyMDI2MzIyOTYzYTNmNzk0YmYxYmZlOWZhLi5hMWU2NmI3ZWE0Mjk5OWUzY2ZiOGJkMGI0MjA0
ZWU3YzMxYmI5NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIu
aApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
U2ltcGxlV3JhcHBlciA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0NvbXBs
ZXhXcmFwcGVyID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQnVpbHRpbiA9
IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzV3JhcHBpbmdET01PYmplY3QgPSBm
YWxzZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+CkBAIC04NCw2ICs4NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNTaW1wbGVXcmFwcGVyID0gdGVz
dDx0eXBlbmFtZSBKU0NsYXNzOjpET01XcmFwcGVkPigwKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNDb21wbGV4V3JhcHBlciA9ICFpc1NpbXBsZVdyYXBwZXI7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzQnVpbHRpbiA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1dyYXBwaW5nRE9NT2JqZWN0ID0gdHJ1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggMWRjYWQ1OTM2NGMyZTc4ODU4YWMxYzdlNWI3ODRjOTMxODUyZTFhMS4uNzkz
NWYzMTNkYTdlNDQ1YzkxZWNmMGMyYTc5ZjViYjgxMzJlYjhiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM2MjksNyAr
MzYyOSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIH0gZWxzZSB7CiAgICAg
ICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7
CiAgICAgfQotICAgIAorCiAgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKICAgICBpZiAoISRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSkg
ewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwpAQCAtMzcw
NSwyMyArMzcwNSwxOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgIH0gZWxz
aWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFkaWMpIHsKLSAgICAgICAgICAgIG15ICRuYXRpdmVFbGVt
ZW50VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwotICAgICAgICAgICAg
aWYgKCFJc05hdGl2ZVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRuYW1lO1xuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVCgkYXJndW1lbnRJbmRl
eCA8PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAkbmFtZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0YXRlLT5h
cmd1bWVudENvdW50KCkgLSAkYXJndW1lbnRJbmRleCk7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5kZXgs
IGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byogaXRlbSA9
IEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSk7XG4iKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghaXRlbSlc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiRpbnRl
cmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tlZEFw
cGVuZChpdGVtKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICB9XG4iKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2
ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xu
Iik7CisgICAgICAgICAgICBteSAkZG9tVHlwZSA9IElzTmF0aXZlVHlwZSgkdHlwZSkgPyBHZXRO
YXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKSA6ICR0eXBlOworICAgICAgICAgICAgbXkgJGpz
VHlwZSA9IElzTmF0aXZlVHlwZSgkdHlwZSkgPyAiSlNDOjpKU1ZhbHVlIiA6ICJKUyRkb21UeXBl
IjsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gdG9B
cmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8JGpzVHlwZSwgJGRvbVR5cGU+Pigqc3RhdGUsICRhcmd1
bWVudEluZGV4KTtcbiIpOworCisgICAgICAgICAgICBpZiAoSXNOYXRpdmVUeXBlKCR0eXBlKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUp
IjsKKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJG5hbWUuZmly
c3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkbmFtZS5zZWNvbmQsIFwiJG5hbWVcIiwg
XCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7
CisgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgqJG5hbWUuZmlyc3QpIjsKKwogICAgICAg
ICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAg
ICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAk
dHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMWFmMzE0YzZkYzVmYTZmMGQ3MTBjYWE2ZTMyMzVkNDNi
ZmYxYTBlNC4uZWZjZjMwYTIzZWEwZmQ5Y2VlNDc5MDY5NGFjYTM3MTg2YjM1ZDJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTU0NjAsMTYgKzU0NjAsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwotICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Ci0gICAgQVNTRVJUKDAgPD0gc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291
bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBh
dXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0
aG9kIiwgIkJsb2IiKTsKLSAgICAgICAgYmxvYkFyZ3MudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwot
ICAgIH0KLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJncykpOworICAg
IGF1dG8gYmxvYkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Jsb2IsIEJsb2I+
Pigqc3RhdGUsIDApOworICAgIGlmICghYmxvYkFyZ3MuZmlyc3QpCisgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgYmxvYkFyZ3Muc2Vjb25kLCAiYmxvYkFyZ3Mi
LCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZSgqYmxvYkFyZ3MuZmlyc3QpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC01OTg3LDEwICs1OTgxLDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJp
YWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBWZWN0b3I8U3RyaW5nPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5nPigqc3RhdGUs
IDEpOworICAgIGF1dG8gdGFpbCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTQzo6SlNW
YWx1ZSwgU3RyaW5nPj4oKnN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUo
dGFpbCkpOworICAgIGlmICghdGFpbC5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0YWlsLnNlY29uZCwgInRhaWwiLCAiVGVzdE9iaiIsICJ2YXJp
YWRpY1N0cmluZ01ldGhvZCIsICJET01TdHJpbmciKTsKKyAgICBpbXBsLnZhcmlhZGljU3RyaW5n
TWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUoKnRhaWwuZmlyc3QpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC02MDA3LDEwICs2MDAzLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3Vi
bGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8ZG91YmxlPiB0
YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPigqc3RhdGUsIDEpOworICAgIGF1dG8gdGFp
bCA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVyPEpTQzo6SlNWYWx1ZSwgZG91YmxlPj4oKnN0
YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbXBsLnZhcmlh
ZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOworICAgIGlmICgh
dGFpbC5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0YWlsLnNlY29uZCwgInRhaWwiLCAiVGVzdE9iaiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIs
ICJ1bnJlc3RyaWN0ZWQgZG91YmxlIik7CisgICAgaW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChX
VEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKCp0YWlsLmZpcnN0KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjAyNywxNiArNjAyNSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIGF1dG8gaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiaGVhZCIsICJUZXN0T2JqIiwg
InZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgVmVjdG9yPE5vZGUqPiB0YWlsOwot
ICAgIEFTU0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwotICAgIHRhaWwucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAidGFpbCIsICJUZXN0T2JqIiwg
InZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgICAgIHRhaWwudW5jaGVja2VkQXBw
ZW5kKGl0ZW0pOwotICAgIH0KLSAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RG
TW92ZSh0YWlsKSk7CisgICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8
SlNOb2RlLCBOb2RlPj4oKnN0YXRlLCAxKTsKKyAgICBpZiAoIXRhaWwuZmlyc3QpCisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGFpbC5zZWNvbmQsICJ0YWls
IiwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAgICBpbXBsLnZh
cmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSgqdGFpbC5maXJzdCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAxZmExZWRhZDc4YmQ0OGY1M2FlYTQ5
ZTA5YjZhMjdiOTI5YTAwZjU0Li4yNjg1YmIwYzQ0YzhkMjZhYTFmNGI5Y2ZlMTQ1NzA4Y2U5ZGI2
YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBA
IC0xMjAsOSArMTIwLDExIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoRXhlY1N0YXRlKiBzCiBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwotICAg
IFZlY3RvcjxpbnQzMl90PiBsb25nQXJncyA9IHRvTmF0aXZlQXJndW1lbnRzPGludDMyX3Q+KCpz
dGF0ZSwgMCk7CisgICAgYXV0byBsb25nQXJncyA9IHRvQXJndW1lbnRzPFZhcmlhZGljSGVscGVy
PEpTQzo6SlNWYWx1ZSwgaW50MzJfdD4+KCpzdGF0ZSwgMCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgaWYgKCFsb25nQXJncy5maXJzdCkKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBsb25nQXJncy5zZWNvbmQsICJsb25nQXJncyIs
ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51bGxwdHIsICJsb25nIik7CiAgICAgYXV0
byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKGxvbmdBcmdzKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlNOZXdseUNyZWF0ZWQoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287389</attachid>
            <date>2016-08-30 06:55:11 -0700</date>
            <delta_ts>2016-09-07 01:49:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160830155259.patch</filename>
            <type>text/plain</type>
            <size>17254</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQwZjE4NzBlNDkxY2Uw
ZjU4MmM3YmIyZTExM2M5ZGY4MjBhMGQ4NS4uYTQ5MWEwYmJjM2EyZTlkMTZhN2YyNmY0ZjMwNmY5
YzcxYTJlZTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA4LTMwICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZW1wbGF0ZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGZ1bmN0aW9uIHdpdGggdmFy
aWFkaWMgcGFyYW1ldGVyIGZvciBET00gb2JqZWN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpWYXJpYWRpY0hlbHBlckJhc2U6OmNvbnZlcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9Bcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6anNGcm96ZW5BcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAg
ICAoR2V0VmFyaWFkaWNUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM1KToKKwogMjAxNi0wOC0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMDUx
NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZGIxYWExNDc4YTk1NTFkOGM4NzM2YzU0ODZjNGJlMGU5
ZDgyZmViZi4uZDNhNDQ0ZDNmNDg2ZGIyYzZiOGIyYWRjNGFlODQwMmE2ZDg5ZjEwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6aW5p
dGlhbGl6ZVdpdGgoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBEaWN0aW9uYXJ5JiBydGMKICAg
ICBzZXRDb25maWd1cmF0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24sIGVjKTsKIH0KIAotUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrLCBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW0qPiYgc3RyZWFtcywgRXhjZXB0
aW9uQ29kZSYgZWMpCitSZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRk
VHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFZlY3RvcjxzdGQ6OnJl
ZmVyZW5jZV93cmFwcGVyPE1lZGlhU3RyZWFtPj4mIHN0cmVhbXMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQp
IHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAgLTExNSw3ICsxMTUsNyBAQCBS
ZWZQdHI8UlRDUnRwU2VuZGVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhY2soUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssCiAKICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYVN0cmVhbUlk
czsKICAgICBmb3IgKGF1dG8gc3RyZWFtIDogc3RyZWFtcykKLSAgICAgICAgbWVkaWFTdHJlYW1J
ZHMuYXBwZW5kKHN0cmVhbS0+aWQoKSk7CisgICAgICAgIG1lZGlhU3RyZWFtSWRzLmFwcGVuZChz
dHJlYW0uZ2V0KCkuaWQoKSk7CiAKICAgICBSVENSdHBTZW5kZXIqIHNlbmRlciA9IG51bGxwdHI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaAppbmRleCA2MmEzOTRlYmZiNzMyZTdhYzI4YzFkM2ZiNTYwOGYyNDdhYTBl
ZTUzLi40ZDYwYWIzMjEwNjM2N2U3NTdmYzVlNDI2ZmFkMzFkMzljZDUwYTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXJ0IG9mIGxlZ2FjeSBNZWRp
YVN0cmVhbS1iYXNlZCBBUEkgKG1vc3RseSBpbXBsZW1lbnRlZCBhcyBKUyBidWlsdC1pbnMpCiAg
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IGdldFJlbW90ZVN0cmVhbXMoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPmdldFJlbW90ZVN0cmVhbXMoKTsgfQogCi0gICAgUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gYWRkVHJhY2soUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFZlY3Rv
cjxNZWRpYVN0cmVhbSo+JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxSVENSdHBTZW5k
ZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpy
ZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8g
VGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNGYxNWY4MmRkYzUyMzQ3Mzc0NTBj
MmY3NGY3Y2QwZjJhMmU3NGIwNS4uZjBhN2FiNTUwYmJmOWRlNjJmMWM1YTA2MmIxZDU3ODdhZTRj
NGRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI4
OSw3ICsyODksNiBAQCBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpT
Qzo6SlNWYWx1ZSk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVHlwZT4gVmVj
dG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0
b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRl
eCA9IDApOwogYm9vbCBoYXNJdGVyYXRvck1ldGhvZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSk7CiAKIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqLCBO
b2RlKik7CkBAIC0zMTcsNiArMzE2LDQ1IEBAIEF0b21pY1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0
b21pY1N0cmluZyhKU0M6OlByb3BlcnR5TmFtZSk7CiAKIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVu
Y3Rpb24sIGludCBsZW5ndGg+IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1
bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVU
cmFpdHM7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcywg
dHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK3N0cnVjdCBWYXJpYWRpY0hlbHBlckJhc2UgeworICAg
IHVzaW5nIEl0ZW0gPSBET01DbGFzczsKKworICAgIHN0YXRpYyBPcHRpb25hbDxJdGVtPiBjb252
ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCisgICAgewor
ICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNzPiBUcmFpdHNUeXBlOwor
ICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOworICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5h
dGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OworICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVmFyaWFk
aWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzLCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwh
SlNET01PYmplY3RJbnNwZWN0b3I8SlNDbGFzcz46OmlzQnVpbHRpbj46OnR5cGU+IHsKKyAgICB1
c2luZyBDbGFzcyA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShzdGQ6
OmRlY2x2YWw8SlNDbGFzcz4oKS53cmFwcGVkKCkpPjo6dHlwZTsKKyAgICB1c2luZyBJdGVtID0g
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDbGFzcz47CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8SXRl
bT4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKQorICAgIHsK
KyAgICAgICAgYXV0byogdmFsdWUgPSBKU0NsYXNzOjp0b1dyYXBwZWQoanNWYWx1ZSk7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPEl0ZW0+KCp2YWx1ZSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgSlNDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+CitzdHJ1Y3QgVmFyaWFkaWNIZWxwZXIgOiBw
dWJsaWMgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3MsIERPTUNsYXNzPiB7CisgICAgdXNpbmcg
SXRlbSA9IHR5cGVuYW1lIFZhcmlhZGljSGVscGVyQmFzZTxKU0NsYXNzLCBET01DbGFzcz46Okl0
ZW07CisgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPEl0ZW0+OworICAgIHVzaW5nIFJlc3Vs
dCA9IHR5cGVuYW1lIHN0ZDo6cGFpcjxzaXplX3QsIE9wdGlvbmFsPENvbnRhaW5lcj4+OworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFZhcmlhZGljSGVscGVyPiB0eXBlbmFtZSBWYXJpYWRpY0hl
bHBlcjo6UmVzdWx0IHRvQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiwgc2l6ZV90IHN0YXJ0SW5k
ZXggPSAwKTsKKwogLy8gSW5saW5lIGZ1bmN0aW9ucyBhbmQgdGVtcGxhdGUgZGVmaW5pdGlvbnMu
CiAKIGlubGluZSBKU0M6OlN0cnVjdHVyZSogRE9NQ29uc3RydWN0b3JPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQpAQCAtNjgyLDggKzcyMCw2IEBAIGlubGluZSBSZWZQdHI8
SlNDOjpVaW50MzJBcnJheT4gdG9VaW50MzJBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0
dXJuIEpTQzo6CiBpbmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQzMkFycmF5PiB0b0Zsb2F0MzJBcnJh
eShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9OYXRpdmVUeXBlZFZpZXc8SlND
OjpGbG9hdDMyQWRhcHRvcj4odmFsdWUpOyB9CiBpbmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQ2NEFy
cmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIEpTQzo6dG9O
YXRpdmVUeXBlZFZpZXc8SlNDOjpGbG9hdDY0QWRhcHRvcj4odmFsdWUpOyB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czsKLQogdGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVmFsdWVUcmFpdHM8U3RyaW5nPiB7CiAgICAgc3RhdGljIGlubGluZSBib29sIG5h
dGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgU3Ry
aW5nJiBpbmRleGVkVmFsdWUpCiAgICAgewpAQCAtNzUxLDI0ICs3ODcsNiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNDOjpKU1ZhbHVlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBzaXpl
X3Qgc3RhcnRJbmRleCkKLXsKLSAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy5hcmd1bWVudENvdW50
KCk7Ci0gICAgQVNTRVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKLQotICAgIFZlY3RvcjxUPiBy
ZXN1bHQ7Ci0gICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoIC0gc3RhcnRJ
bmRleCk7Ci0gICAgdHlwZWRlZiBOYXRpdmVWYWx1ZVRyYWl0czxUPiBUcmFpdHNUeXBlOwotCi0g
ICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAg
ICBUIGluZGV4VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhl
YywgZXhlYy51bmNoZWNrZWRBcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gVmVjdG9yPFQ+KCk7Ci0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5kZXhW
YWx1ZSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGlubGluZSBTdHJpbmcgcHJv
cGVydHlOYW1lVG9TdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpOwpAQCAtNzgwLDYgKzc5OCwyNCBAQCBp
bmxpbmUgQXRvbWljU3RyaW5nIHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKEpTQzo6UHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZS51aWQoKSA/IHByb3BlcnR5TmFtZS51aWQoKSA6IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCkp
OwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5cGVuYW1lIFZhcmlh
ZGljSGVscGVyOjpSZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBzaXpl
X3Qgc3RhcnRJbmRleCkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGUuYXJndW1lbnRDb3Vu
dCgpOworICAgIGlmIChzdGFydEluZGV4ID4gbGVuZ3RoKQorICAgICAgICByZXR1cm4geyAwLCBO
dWxsb3B0IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29udGFpbmVyIHJlc3Vs
dDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGggLSBzdGFydEluZGV4
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0KHN0YXRlLCBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4geyBpLCBOdWxsb3B0IH07CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZSh2YWx1ZS52YWx1ZSgpKSk7CisgICAgfQorICAgIHJldHVybiB7IGxlbmd0aCwgV1RG
TW92ZShyZXN1bHQpIH07Cit9CisKIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVuY3Rpb24gbmF0aXZl
RnVuY3Rpb24sIGludCBsZW5ndGg+IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRp
Y0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZTo6ZW5jb2RlKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBu
YXRpdmVGdW5jdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjYWM4ZmUxYjBkYTcxZWQ2OWUwYWMzMTJjNDU2YmI4
YjZlMzk4OWEzLi42NmY2ZDhkNTQ1Yjk0ZDJjYmU1ZjYyZjQ1M2FmNDZlNGUyMTVkMmJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMzg3MCw3ICszODcwLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAg
fSBlbHNlIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVuY3Rpb25JbXBsZW1l
bnRhdGlvbk5hbWV9IjsKICAgICB9Ci0gICAgCisKICAgICBteSAkcXVvdGVkRnVuY3Rpb25OYW1l
OwogICAgIGlmICghJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
b25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUt
Pm5hbWU7CkBAIC0zOTQ2LDIzICszOTQ2LDE5IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsK
ICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgewotICAgICAgICAgICAg
bXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7
Ci0gICAgICAgICAgICBpZiAoIUlzTmF0aXZlVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5h
bWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
KCRhcmd1bWVudEluZGV4IDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpO1xuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRuYW1lLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtICRhcmd1bWVudEluZGV4KTtcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAk
YXJndW1lbnRJbmRleCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7
ICsraSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgaWYgKCFpdGVtKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCBcIiRu
YW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwi
JHR5cGVcIik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50
VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KCpzdGF0
ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAgICAgICBteSAoJHdyYXBwZXJUeXBlLCAk
d3JhcHBlZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gdG9Bcmd1bWVudHM8
VmFyaWFkaWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGU+Pigqc3RhdGUsICRhcmd1
bWVudEluZGV4KTtcbiIpOworCisgICAgICAgICAgICBpZiAoSXNOYXRpdmVUeXBlKCR0eXBlKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUp
IjsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBpZiAoISRuYW1lLnNlY29uZClcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCAkbmFtZS5maXJzdCwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5j
dGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICR2
YWx1ZSA9ICJXVEZNb3ZlKCokbmFtZS5zZWNvbmQpIjsKKwogICAgICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15ICRjbGFzc05h
bWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAKQEAgLTQ1
NzUsNiArNDU3MSwxNiBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5zaWduZWQgc2hvcnQi
ID0+ICJ1aW50MTZfdCIsCiApOwogCitzdWIgR2V0VmFyaWFkaWNUeXBlCit7CisgICAgbXkgKCRp
bnRlcmZhY2UsICR0eXBlKSA9IEBfOworCisgICAgbXkgJHdyYXBwZWRUeXBlID0gSXNOYXRpdmVU
eXBlKCR0eXBlKSA/IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpIDogJHR5cGU7Cisg
ICAgbXkgJHdyYXBwZXJUeXBlID0gSXNOYXRpdmVUeXBlKCR0eXBlKSA/ICJKU0M6OkpTVmFsdWUi
IDogIkpTJHdyYXBwZWRUeXBlIjsKKworICAgIHJldHVybiAoJHdyYXBwZXJUeXBlLCAkd3JhcHBl
ZFR5cGUpOworfQorCiBzdWIgR2V0TmF0aXZlVHlwZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
dHlwZSkgPSBAXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggM2Y1Zjk5ZjRiMThmYzE2NWUwN2I1YjY4MjJlOTQy
ODI1YzM1OWM5Yi4uZTA4MTg5MTYwNTlhZDk5ZWZjMDUwNDM5ZjI1YzFjNzE2ZTgyNzllMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKQEAgLTU4MTgsMTYgKzU4MTgsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Ci0gICAgQVNTRVJUKDAgPD0g
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAg
ICAgICBhdXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKLSAgICAgICAgYmxvYkFyZ3MudW5jaGVja2VkQXBwZW5k
KGl0ZW0pOwotICAgIH0KLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShibG9iQXJn
cykpOworICAgIGF1dG8gYmxvYkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0Js
b2IsIEJsb2I+Pigqc3RhdGUsIDApOworICAgIGlmICghYmxvYkFyZ3Muc2Vjb25kKQorICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIGJsb2JBcmdzLmZpcnN0LCAi
YmxvYkFyZ3MiLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZSgqYmxvYkFyZ3Muc2Vjb25kKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjI3OSwxMCArNjI3
MywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPFN0cmlu
Zz4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBl
cjxKU0M6OkpTVmFsdWUsIFN0cmluZz4+KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQp
LCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBpbXBsLnZhcmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUo
aGVhZCksIFdURk1vdmUoKnRhaWwuc2Vjb25kKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjI5OSwxMCArNjI5MywxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3Vi
bGVNZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9IGNvbnZlcnQ8ZG91YmxlPigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPGRvdWJsZT4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50
czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIGRvdWJsZT4+KCpzdGF0ZSwgMSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC52YXJpYWRpY0RvdWJsZU1ldGhv
ZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBpbXBsLnZhcmlhZGljRG91Ymxl
TWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUoKnRhaWwuc2Vjb25kKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNjMxOSwxNiArNjMxMywx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAogICAgIGF1dG8gaGVhZCA9IEpTTm9kZTo6dG9X
cmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKICAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiaGVhZCIsICJU
ZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgVmVjdG9yPE5v
ZGUqPiB0YWlsOwotICAgIEFTU0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwotICAg
IHRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgp
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAidGFpbCIs
ICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgICAgIHRh
aWwudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICBpbXBsLnZhcmlhZGljTm9kZU1l
dGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7CisgICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8
VmFyaWFkaWNIZWxwZXI8SlNOb2RlLCBOb2RlPj4oKnN0YXRlLCAxKTsKKyAgICBpZiAoIXRhaWwu
c2Vjb25kKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRh
aWwuZmlyc3QsICJ0YWlsIiwgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUi
KTsKKyAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSgqdGFpbC5zZWNv
bmQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNDhjNGFk
MjViMWU3MGEzMTcyZTJjNmVmMDA1ZmM4NDQ0YzEwOTI5Ny4uMWY2M2ZlNGUzZTk4OWZlMmIwYmRi
MGRhMDNmMmYxMjkyZmRlOTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoRXhlY1N0YXRlKiBz
CiB7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKLSAgICBWZWN0b3I8aW50MzJfdD4gbG9uZ0FyZ3MgPSB0b05hdGl2ZUFyZ3VtZW50czxp
bnQzMl90Pigqc3RhdGUsIDApOworICAgIGF1dG8gbG9uZ0FyZ3MgPSB0b0FyZ3VtZW50czxWYXJp
YWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIGludDMyX3Q+Pigqc3RhdGUsIDApOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288122</attachid>
            <date>2016-09-07 01:49:15 -0700</date>
            <delta_ts>2016-09-07 03:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158835-20160907104650.patch</filename>
            <type>text/plain</type>
            <size>18431</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5MTFjMWUwYTA5ZDVl
NGY0ZGI3Y2IxNzU3NmM4OWZmNzM5OTk0Mi4uZmFlMDljM2FhNDA1NjU5Mjk1MWM2MzVlZTQ0Nzg4
ZjVkNzc3NWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA5LTA3ICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBUZW1w
bGF0aXplIEpTIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9yIG9mIGZ1bmN0aW9ucyB3aXRoIHZhcmlh
ZGljIHBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1ODgzNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkZCB0ZW1wbGF0ZSBmdW5jdGlvbnMgdG8gaGFuZGxlIGZ1bmN0aW9uIHdpdGggdmFyaWFk
aWMgcGFyYW1ldGVyIGZvciBET00gb2JqZWN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWYXJpYWRpY0hlbHBlckJhc2U6OmNvbnZlcnQpOgorICAgICAgICAo
V2ViQ29yZTo6dG9Bcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6anNGcm96ZW5BcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvTmF0aXZlQXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAo
R2V0VmFyaWFkaWNUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM1KToKKwogMjAxNi0wOS0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwNTUyMSwgcjIw
NTUyNiwgYW5kIHIyMDU1MzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGRiMWFhMTQ3OGE5NTUxZDhj
ODczNmM1NDg2YzRiZTBlOWQ4MmZlYmYuLmQzYTQ0NGQzZjQ4NmRiMmM2YjhiMmFkYzRhZTg0MDJh
NmQ4OWYxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmluaXRpYWxpemVXaXRoKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRGlj
dGlvbmFyeSYgcnRjCiAgICAgc2V0Q29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uLCBlYyk7
CiB9CiAKLVJlZlB0cjxSVENSdHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgY29uc3QgVmVjdG9yPE1lZGlhU3RyZWFtKj4m
IHN0cmVhbXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVl
ckNvbm5lY3Rpb246OmFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25z
dCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxNZWRpYVN0cmVhbT4+JiBzdHJlYW1zLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxp
bmdTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0x
MTUsNyArMTE1LDcgQEAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFk
ZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLAogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gbWVkaWFTdHJlYW1JZHM7CiAgICAgZm9yIChhdXRvIHN0cmVhbSA6IHN0cmVhbXMpCi0gICAg
ICAgIG1lZGlhU3RyZWFtSWRzLmFwcGVuZChzdHJlYW0tPmlkKCkpOworICAgICAgICBtZWRpYVN0
cmVhbUlkcy5hcHBlbmQoc3RyZWFtLmdldCgpLmlkKCkpOwogCiAgICAgUlRDUnRwU2VuZGVyKiBz
ZW5kZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNjJhMzk0ZWJmYjczMmU3YWMyOGMx
ZDNmYjU2MDhmMjQ3YWEwZWU1My4uNGQ2MGFiMzIxMDYzNjdlNzU3ZmM1ZTQyNmZhZDMxZDM5Y2Q1
MGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFy
dCBvZiBsZWdhY3kgTWVkaWFTdHJlYW0tYmFzZWQgQVBJIChtb3N0bHkgaW1wbGVtZW50ZWQgYXMg
SlMgYnVpbHQtaW5zKQogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiBnZXRSZW1vdGVT
dHJlYW1zKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5nZXRSZW1vdGVTdHJlYW1zKCk7IH0K
IAotICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBjb25zdCBWZWN0b3I8TWVkaWFTdHJlYW0qPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBS
ZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgY29u
c3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8TWVkaWFTdHJlYW0+PiYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogICAgIC8vIFRoaXMgZW51bSBpcyBtaXJyb3JlZCBpbiBSVENSdHBUcmFuc2NlaXZl
ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IDZhMDE0
MWMyZGUzMmNiMjJhMWM3NTA4NjJiNDdiMWU5OTkzNzNkMTMuLmVjYjY3MjJiNTRiNzdmMzc5NmRk
ZmZjZTVlYTQ5ZDg4YzU3MTUwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5oCkBAIC0yOTYsNyArMjk2LDYgQEAgUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0
b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBKU1R5cGU+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+
IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiwg
c2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsKIGJvb2wgaGFzSXRlcmF0b3JNZXRob2QoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogCiBib29sIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEpT
Qzo6RXhlY1N0YXRlKiwgTm9kZSopOwpAQCAtMzI0LDYgKzMyMyw0NSBAQCBBdG9taWNTdHJpbmcg
cHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcoSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiB0ZW1wbGF0
ZTxKU0M6Ok5hdGl2ZUZ1bmN0aW9uLCBpbnQgbGVuZ3RoPiBKU0M6OkVuY29kZWRKU1ZhbHVlIG5v
bkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IE5hdGl2ZVZhbHVlVHJhaXRzOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBl
bmFtZSBET01DbGFzcywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK3N0cnVjdCBWYXJpYWRpY0hl
bHBlckJhc2UgeworICAgIHVzaW5nIEl0ZW0gPSBET01DbGFzczsKKworICAgIHN0YXRpYyBPcHRp
b25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpz
VmFsdWUpCisgICAgeworICAgICAgICB0eXBlZGVmIE5hdGl2ZVZhbHVlVHJhaXRzPERPTUNsYXNz
PiBUcmFpdHNUeXBlOworICAgICAgICBET01DbGFzcyBpbmRleFZhbHVlOworICAgICAgICBpZiAo
IVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKHN0YXRlLCBqc1ZhbHVlLCBpbmRleFZhbHVlKSkKKyAg
ICAgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4gaW5kZXhWYWx1ZTsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4K
K3N0cnVjdCBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3MsIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFKU0RPTU9iamVjdEluc3BlY3RvcjxKU0NsYXNzPjo6aXNCdWlsdGluPjo6
dHlwZT4geworICAgIHVzaW5nIENsYXNzID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNl
PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxKU0NsYXNzPigpLndyYXBwZWQoKSk+Ojp0eXBlOworICAg
IHVzaW5nIEl0ZW0gPSBzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENsYXNzPjsKKworICAgIHN0YXRp
YyBPcHRpb25hbDxJdGVtPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGpz
VmFsdWUpCisgICAgeworICAgICAgICBhdXRvKiB2YWx1ZSA9IEpTQ2xhc3M6OnRvV3JhcHBlZChq
c1ZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICByZXR1cm4gT3B0aW9uYWw8SXRlbT4oKnZhbHVlKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzLCB0eXBlbmFtZSBET01DbGFzcz4KK3N0cnVjdCBWYXJp
YWRpY0hlbHBlciA6IHB1YmxpYyBWYXJpYWRpY0hlbHBlckJhc2U8SlNDbGFzcywgRE9NQ2xhc3M+
IHsKKyAgICB1c2luZyBJdGVtID0gdHlwZW5hbWUgVmFyaWFkaWNIZWxwZXJCYXNlPEpTQ2xhc3Ms
IERPTUNsYXNzPjo6SXRlbTsKKyAgICB1c2luZyBDb250YWluZXIgPSBWZWN0b3I8SXRlbT47Cisg
ICAgdXNpbmcgUmVzdWx0ID0gdHlwZW5hbWUgc3RkOjpwYWlyPHNpemVfdCwgT3B0aW9uYWw8Q29u
dGFpbmVyPj47Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcj4gdHlwZW5h
bWUgVmFyaWFkaWNIZWxwZXI6OlJlc3VsdCB0b0FyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYsIHNp
emVfdCBzdGFydEluZGV4ID0gMCk7CisKIC8vIElubGluZSBmdW5jdGlvbnMgYW5kIHRlbXBsYXRl
IGRlZmluaXRpb25zLgogCiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTcwNCw4ICs3NDIsNiBAQCBp
bmxpbmUgUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+IHRvVWludDMyQXJyYXkoSlNDOjpKU1ZhbHVl
IHZhbHVlKSB7IHJldHVybiBKU0M6OgogaW5saW5lIFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4g
dG9GbG9hdDMyQXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBKU0M6OnRvTmF0aXZl
VHlwZWRWaWV3PEpTQzo6RmxvYXQzMkFkYXB0b3I+KHZhbHVlKTsgfQogaW5saW5lIFJlZlB0cjxK
U0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJyYXkoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IHJl
dHVybiBKU0M6OnRvTmF0aXZlVHlwZWRWaWV3PEpTQzo6RmxvYXQ2NEFkYXB0b3I+KHZhbHVlKTsg
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7Ci0KIHRl
bXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewogICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVlKQogICAgIHsKQEAgLTc4MSwyNCArODE3LDYg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVj
U3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0
ZSYgZXhlYywgc2l6ZV90IHN0YXJ0SW5kZXgpCi17Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGV4ZWMu
YXJndW1lbnRDb3VudCgpOwotICAgIEFTU0VSVChzdGFydEluZGV4IDw9IGxlbmd0aCk7Ci0KLSAg
ICBWZWN0b3I8VD4gcmVzdWx0OwotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxl
bmd0aCAtIHN0YXJ0SW5kZXgpOwotICAgIHR5cGVkZWYgTmF0aXZlVmFsdWVUcmFpdHM8VD4gVHJh
aXRzVHlwZTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgVCBpbmRleFZhbHVlOwotICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5h
dGl2ZVZhbHVlKGV4ZWMsIGV4ZWMudW5jaGVja2VkQXJndW1lbnQoaSksIGluZGV4VmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxUPigpOwotICAgICAgICByZXN1bHQudW5jaGVja2Vk
QXBwZW5kKGluZGV4VmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiBpbmxp
bmUgU3RyaW5nIHByb3BlcnR5TmFtZVRvU3RyaW5nKEpTQzo6UHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKTsKQEAgLTgxMCw2
ICs4MjgsMjQgQEAgaW5saW5lIEF0b21pY1N0cmluZyBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
ZyhKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgcmV0dXJuIEF0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUudWlkKCkgPyBwcm9wZXJ0eU5hbWUudWlkKCkgOiBwcm9wZXJ0eU5hbWUu
cHVibGljTmFtZSgpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVmFyaWFkaWNIZWxwZXI+IHR5
cGVuYW1lIFZhcmlhZGljSGVscGVyOjpSZXN1bHQgdG9Bcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBzaXplX3Qgc3RhcnRJbmRleCkKK3sKKyAgICBzaXplX3QgbGVuZ3RoID0gc3RhdGUu
YXJndW1lbnRDb3VudCgpOworICAgIGlmIChzdGFydEluZGV4ID4gbGVuZ3RoKQorICAgICAgICBy
ZXR1cm4geyAwLCBOdWxsb3B0IH07CisKKyAgICB0eXBlbmFtZSBWYXJpYWRpY0hlbHBlcjo6Q29u
dGFpbmVyIHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgg
LSBzdGFydEluZGV4KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IFZhcmlhZGljSGVscGVyOjpjb252ZXJ0
KHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICByZXR1cm4geyBpLCBOdWxsb3B0IH07CisgICAgICAgIHJlc3VsdC51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZSh2YWx1ZS52YWx1ZSgpKSk7CisgICAgfQorICAgIHJldHVybiB7
IGxlbmd0aCwgV1RGTW92ZShyZXN1bHQpIH07Cit9CisKIHRlbXBsYXRlPEpTQzo6TmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIGludCBsZW5ndGg+IEpTQzo6RW5jb2RlZEpTVmFsdWUgbm9u
Q2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgcmV0
dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZt
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbGVuZ3RoLCBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpLCBuYXRpdmVGdW5jdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBiNWM2ZTQ4OTA1YzBkYjQwNDg0
MTRlNjM0ODBlODNhYzhkMTg0MDU5Li5iZjhmZmIyYzQ1MDIyMmI1NzIxMGM1Njc3Y2RjMDRlM2Rj
ZDQ3MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtMzg5OSw3ICszODk5LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVy
c0NoZWNrCiAgICAgfSBlbHNlIHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLiR7ZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9Ci0gICAgCisKICAgICBteSAkcXVvdGVk
RnVuY3Rpb25OYW1lOwogICAgIGlmICghJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWU7CkBAIC0zOTc1LDIzICszOTc1LDE5IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0gIldURk1v
dmUoJG5hbWUpIjsKICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgewot
ICAgICAgICAgICAgbXkgJG5hdGl2ZUVsZW1lbnRUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJm
YWNlLCAkdHlwZSk7Ci0gICAgICAgICAgICBpZiAoIUlzTmF0aXZlVHlwZSgkdHlwZSkpIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVt
ZW50VHlwZT4gJG5hbWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgQVNTRVJUKCRhcmd1bWVudEluZGV4IDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRuYW1lLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtICRhcmd1bWVudEluZGV4
KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVu
c2lnbmVkIGkgPSAkYXJndW1lbnRJbmRleCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgp
OyBpIDwgY291bnQ7ICsraSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIs
ICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwk
bmF0aXZlRWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CisgICAgICAg
ICAgICBteSAoJHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGUpID0gR2V0VmFyaWFkaWNUeXBlKCRp
bnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBh
dXRvICRuYW1lID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8JHdyYXBwZXJUeXBlLCAkd3Jh
cHBlZFR5cGU+Pigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOworCisgICAgICAgICAgICBp
ZiAoSXNOYXRpdmVUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
JHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISRuYW1lLnNlY29uZClcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkbmFtZS5maXJzdCwgXCIkbmFt
ZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0
eXBlXCIpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92
ZSgqJG5hbWUuc2Vjb25kKSI7CisKICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklz
RW51bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVy
YXRpb25DbGFzc05hbWUoJGludGVyZmFjZSwgJHR5cGUpOwogCkBAIC00MDU2LDcgKzQwNTIsNyBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgZGVmaW5lZCgkcGFyYW1l
dGVyLT5kZWZhdWx0KSAmJiAhV2lsbENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJhbWV0ZXJW
YWx1ZSgkdHlwZSwgJHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKICAgICAgICAgICAgICAgICAgICAg
bXkgJGRlZmF1bHRWYWx1ZSA9ICRwYXJhbWV0ZXItPmRlZmF1bHQ7Ci0gICAgCisKICAgICAgICAg
ICAgICAgICAgICAgIyBTdHJpbmctcmVsYXRlZCBvcHRpbWl6YXRpb25zLgogICAgICAgICAgICAg
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG15ICR1c2VBdG9taWNTdHJpbmcgPSAkcGFyYW1ldGVyLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQXRvbWljU3RyaW5nIn07CkBAIC00MDczLDcgKzQwNjksNyBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZh
dWx0VmFsdWUgPSAiJG5hdGl2ZVR5cGUoKSIgaWYgJGRlZmF1bHRWYWx1ZSBlcSAiW10iOwogICAg
ICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICJKU1ZhbHVlOjpKU1VuZGVmaW5l
ZCIgaWYgJGRlZmF1bHRWYWx1ZSBlcSAidW5kZWZpbmVkIjsKICAgICAgICAgICAgICAgICAgICAg
fQotICAgIAorCiAgICAgICAgICAgICAgICAgICAgICRvdXRlciA9ICJzdGF0ZS0+YXJndW1lbnQo
JGFyZ3VtZW50SW5kZXgpLmlzVW5kZWZpbmVkKCkgPyAkZGVmYXVsdFZhbHVlIDogIjsKICAgICAg
ICAgICAgICAgICAgICAgJGlubmVyID0gInN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1l
bnRJbmRleCkiOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9u
YWwgJiYgIWRlZmluZWQoJHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKQEAgLTQ2MDQsNiArNDYwMCwx
NiBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAidW5zaWduZWQgc2hvcnQiID0+ICJ1aW50MTZf
dCIsCiApOwogCitzdWIgR2V0VmFyaWFkaWNUeXBlCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0
eXBlKSA9IEBfOworCisgICAgbXkgJHdyYXBwZWRUeXBlID0gSXNOYXRpdmVUeXBlKCR0eXBlKSA/
IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpIDogJHR5cGU7CisgICAgbXkgJHdyYXBw
ZXJUeXBlID0gSXNOYXRpdmVUeXBlKCR0eXBlKSA/ICJKU0M6OkpTVmFsdWUiIDogIkpTJHdyYXBw
ZWRUeXBlIjsKKworICAgIHJldHVybiAoJHdyYXBwZXJUeXBlLCAkd3JhcHBlZFR5cGUpOworfQor
CiBzdWIgR2V0TmF0aXZlVHlwZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkdHlwZSkgPSBAXzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggN2IxNjkyYTlhODQ3ZmRlMjY2ZDkzMTNlNGI1NzE2ZjU3Y2E5NWEzMi4u
ZjU5NzRlMzZhYzI3YTNkZWU4MGM0ODVmMjNlNjgzNGYzOTkzNTRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTY0NzUsMTYgKzY0NzUsMTAgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3QKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwotICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7Ci0gICAgQVNTRVJUKDAgPD0g
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7Ci0gICAgYmxvYkFyZ3MucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewotICAg
ICAgICBhdXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9i
amVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKLSAgICAgICAgYmxvYkFyZ3MudW5j
aGVja2VkQXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RG
TW92ZShibG9iQXJncykpOworICAgIGF1dG8gYmxvYkFyZ3MgPSB0b0FyZ3VtZW50czxWYXJpYWRp
Y0hlbHBlcjxKU0Jsb2IsIEJsb2I+Pigqc3RhdGUsIDApOworICAgIGlmICghYmxvYkFyZ3Muc2Vj
b25kKQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsIGJsb2JBcmdzLmZpcnN0LCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZSgq
YmxvYkFyZ3Muc2Vjb25kKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtNzAxNCwxMCArNzAwOCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhl
YwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdGFp
bCA9IHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oKnN0YXRlLCAxKTsKKyAgICBhdXRvIHRhaWwg
PSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUsIFN0cmluZz4+KCpzdGF0
ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaW1wbC52YXJpYWRp
Y1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKKyAgICBpbXBsLnZh
cmlhZGljU3RyaW5nTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUoKnRhaWwuc2Vjb25kKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtNzAz
NywxMCArNzAzMSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9
IGNvbnZlcnQ8ZG91YmxlPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dO
b25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVj
dG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oKnN0YXRlLCAxKTsK
KyAgICBhdXRvIHRhaWwgPSB0b0FyZ3VtZW50czxWYXJpYWRpY0hlbHBlcjxKU0M6OkpTVmFsdWUs
IGRvdWJsZT4+KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgaW1wbC52YXJpYWRpY0RvdWJsZU1ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwp
KTsKKyAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUo
KnRhaWwuc2Vjb25kKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIApAQCAtNzA2MCwxNiArNzA1NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdAog
ICAgIGF1dG8gaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiaGVhZCIsICJUZXN0T2JqZWN0IiwgInZhcmlh
ZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgVmVjdG9yPE5vZGUqPiB0YWlsOwotICAgIEFT
U0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwotICAgIHRhaWwucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KGkpKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCAidGFpbCIsICJUZXN0
T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7Ci0gICAgICAgIHRhaWwudW5j
aGVja2VkQXBwZW5kKGl0ZW0pOwotICAgIH0KLSAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgq
aGVhZCwgV1RGTW92ZSh0YWlsKSk7CisgICAgYXV0byB0YWlsID0gdG9Bcmd1bWVudHM8VmFyaWFk
aWNIZWxwZXI8SlNOb2RlLCBOb2RlPj4oKnN0YXRlLCAxKTsKKyAgICBpZiAoIXRhaWwuc2Vjb25k
KQorICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIHRhaWwuZmlyc3QsICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9k
IiwgIk5vZGUiKTsKKyAgICBpbXBsLnZhcmlhZGljTm9kZU1ldGhvZCgqaGVhZCwgV1RGTW92ZSgq
dGFpbC5zZWNvbmQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5k
ZXggNWE3NzY2OWU5ZTNhMjY0ZTFiNDc3ZTg3NjBmYWMyNzE0MjdmNDRkNS4uZjZkZmU1NGVlYjQx
NjZlMDcxMTMwM2M5NzUxZjY1NjlkMzRiYmZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoRXhl
Y1N0YXRlKiBzCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4o
c3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7Ci0gICAgVmVjdG9yPGlu
dDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsK
KyAgICBhdXRvIGxvbmdBcmdzID0gdG9Bcmd1bWVudHM8VmFyaWFkaWNIZWxwZXI8SlNDOjpKU1Zh
bHVlLCBpbnQzMl90Pj4oKnN0YXRlLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUo
V1RGTW92ZShsb25nQXJncykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>