<?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>142059</bug_id>
          
          <creation_ts>2015-02-26 14:49:01 -0800</creation_ts>
          <short_desc>AX: Provide API for assistive tech to ignore DOM key event handlers</short_desc>
          <delta_ts>2015-03-13 12:24:42 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141862</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Doug Russell">d_russell</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bdakin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mario</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072498</commentid>
    <comment_count>0</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-26 14:49:01 -0800</bug_when>
    <thetext>Assistive technology applications on the desktop are heavily dependent on keyboard navigation being reliable. This is greatly hindered by sites that handle key events without updating keyboard selection and then consume the event. It is important for assistive technology apps to allow users to decide to ignore these handlers that are incorrect for their purposes.

This can be fixed by exposing, via a new accessibility attribute, a way to decide, for a given WebCore::Frame, to pre-empt DOM dispatch and instead let accessibility caret browsing take place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072499</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-26 14:49:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/19976512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072502</commentid>
    <comment_count>2</comment_count>
      <attachid>247449</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-26 14:58:17 -0800</bug_when>
    <thetext>Created attachment 247449
Ignore Dom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072505</commentid>
    <comment_count>3</comment_count>
      <attachid>247450</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-26 15:08:05 -0800</bug_when>
    <thetext>Created attachment 247450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072519</commentid>
    <comment_count>4</comment_count>
      <attachid>247450</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-02-26 15:25:01 -0800</bug_when>
    <thetext>Comment on attachment 247450
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.h:986
&gt; +    void setCaretBrowsingEnabled(bool);

these are part of your previous patch right?
we should probably get that other one ingested first or strip out that code for this patch first so that it doesn&apos;t look like we&apos;re reviewing two things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072521</commentid>
    <comment_count>5</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-26 15:27:54 -0800</bug_when>
    <thetext>It is. I wanted to confirm everything would build, etc. I&apos;ll strip all that out once the other commit lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072595</commentid>
    <comment_count>6</comment_count>
      <attachid>247479</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-26 18:06:44 -0800</bug_when>
    <thetext>Created attachment 247479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072923</commentid>
    <comment_count>7</comment_count>
      <attachid>247479</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-02-27 16:41:55 -0800</bug_when>
    <thetext>Comment on attachment 247479
Patch

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

&gt; Source/WebCore/dom/EventDispatcher.cpp:353
&gt; +#if PLATFORM(COCOA) &amp;&amp; !PLATFORM(IOS)

is there a reason we don&apos;t want this for iOS? it seems like it might be useful someday

&gt; Source/WebCore/dom/EventDispatcher.cpp:358
&gt; +    if (!preventDOMDispatch &amp;&amp; !event-&gt;propagationStopped() &amp;&amp; !eventPath.isEmpty())

instead of putting the #define here, i think moving it into the method itself would be a bit cleaner. then you don&apos;t need to make a separate variable to hold the result

&gt; Source/WebCore/page/EventHandler.cpp:3218
&gt; +bool EventHandler::accessibilityWantsToHandleEvent(Event&amp; event, Node&amp; node)

My suggestion for a name is &quot;accessibilityPreventsEventDispatch())

&gt; Source/WebCore/page/EventHandler.cpp:3220
&gt; +    if (!AXObjectCache::accessibilityEnhancedUserInterfaceEnabled())

you might want to check accessibilityEnabled and enhancedUserInterface enabled, in case they mistakenly got out of date

&gt; Source/WebCore/page/EventHandler.cpp:3224
&gt; +    if (eventType != eventNames().keydownEvent &amp;&amp; eventType != eventNames().keypressEvent)

what about keyUp? seems like webapps could get into a bad state if they only got keyUps

&gt; Source/WebCore/page/EventHandler.cpp:3235
&gt; +    Frame* frame = nodeAccessibility-&gt;frame();

i don&apos;t think you need to get an axObject from the node in order to just get back to the frame

I think you can just do node.document()-&gt;frame()

&gt; Source/WebCore/page/EventHandler.cpp:3241
&gt; +        // Tab

instead of adding comments that say what they are which are, can you add a comment explaining why we are snarfing tab and arrow keys

&gt; Source/WebCore/page/Settings.in:48
&gt; +ignoreDOMKeyEventHandlers initial=false

i&apos;m not crazy about the name.
One idea: preventKeyboardEventDispatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072929</commentid>
    <comment_count>8</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-02-27 16:48:11 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 247479 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=247479&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/EventDispatcher.cpp:353
&gt; &gt; +#if PLATFORM(COCOA) &amp;&amp; !PLATFORM(IOS)
&gt; 
&gt; is there a reason we don&apos;t want this for iOS? it seems like it might be
&gt; useful someday

No reason. I just wanted to constrain it to the platforms I had actually tested it on for now. I&apos;ll open it up to iOS.

&gt; 
&gt; &gt; Source/WebCore/dom/EventDispatcher.cpp:358
&gt; &gt; +    if (!preventDOMDispatch &amp;&amp; !event-&gt;propagationStopped() &amp;&amp; !eventPath.isEmpty())
&gt; 
&gt; instead of putting the #define here, i think moving it into the method
&gt; itself would be a bit cleaner. then you don&apos;t need to make a separate
&gt; variable to hold the result

That should be doable.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3218
&gt; &gt; +bool EventHandler::accessibilityWantsToHandleEvent(Event&amp; event, Node&amp; node)
&gt; 
&gt; My suggestion for a name is &quot;accessibilityPreventsEventDispatch())

That works. I&apos;ll make the attribute rename you suggested later to make it all match.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3220
&gt; &gt; +    if (!AXObjectCache::accessibilityEnhancedUserInterfaceEnabled())
&gt; 
&gt; you might want to check accessibilityEnabled and enhancedUserInterface
&gt; enabled, in case they mistakenly got out of date

Will do.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3224
&gt; &gt; +    if (eventType != eventNames().keydownEvent &amp;&amp; eventType != eventNames().keypressEvent)
&gt; 
&gt; what about keyUp? seems like webapps could get into a bad state if they only
&gt; got keyUps

Good point. I imagine that could go weird.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3235
&gt; &gt; +    Frame* frame = nodeAccessibility-&gt;frame();
&gt; 
&gt; i don&apos;t think you need to get an axObject from the node in order to just get
&gt; back to the frame
&gt; 
&gt; I think you can just do node.document()-&gt;frame()

I&apos;ll try that.

&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:3241
&gt; &gt; +        // Tab
&gt; 
&gt; instead of adding comments that say what they are which are, can you add a
&gt; comment explaining why we are snarfing tab and arrow keys

Will do.

&gt; 
&gt; &gt; Source/WebCore/page/Settings.in:48
&gt; &gt; +ignoreDOMKeyEventHandlers initial=false
&gt; 
&gt; i&apos;m not crazy about the name.
&gt; One idea: preventKeyboardEventDispatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073198</commentid>
    <comment_count>9</comment_count>
      <attachid>247638</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-01 14:20:35 -0800</bug_when>
    <thetext>Created attachment 247638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073199</commentid>
    <comment_count>10</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-01 14:26:29 -0800</bug_when>
    <thetext>I investigated how accessibilityEnabled() is used vs accessibilityEnhancedUserInterfaceEnabled() and I think it&apos;s use is appropriate as is. Enabled dictates if the cache is currently producing accessibility objects, where as enhanced dictates if an assistive tech application is actively interacting. In this case event routing and the existence of accessibility objects aren&apos;t meant to be coupled in that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073205</commentid>
    <comment_count>11</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2015-03-01 15:27:29 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; This can be fixed by exposing, via a new accessibility attribute, a way to
&gt; decide, for a given WebCore::Frame, to pre-empt DOM dispatch and instead let
&gt; accessibility caret browsing take place.

This makes me nervous. Are you planning to propose new web API that indicates to an web application when no key handlers are available?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073222</commentid>
    <comment_count>12</comment_count>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-01 17:03:31 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #0)
&gt; &gt; This can be fixed by exposing, via a new accessibility attribute, a way to
&gt; &gt; decide, for a given WebCore::Frame, to pre-empt DOM dispatch and instead let
&gt; &gt; accessibility caret browsing take place.
&gt; 
&gt; This makes me nervous. Are you planning to propose new web API that
&gt; indicates to an web application when no key handlers are available?

If there should be an API to surface this behavior and what that API looks like will need to be informed by actual usage that hasn&apos;t happened yet, so I think that would be premature.

This is primarily (right now) about to deferring to users to decide how keyboard events are processed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073457</commentid>
    <comment_count>13</comment_count>
      <attachid>247638</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-02 14:58:17 -0800</bug_when>
    <thetext>Comment on attachment 247638
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2608
&gt; +#if PLATFORM(COCOA)

doesn&apos;t look like we need to require the COCOA platform here. looks like everything should compile for other platform (but it may not work yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073458</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-03-02 15:00:29 -0800</bug_when>
    <thetext>Antti, could you also take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074401</commentid>
    <comment_count>15</comment_count>
      <attachid>247638</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-03-04 22:04:47 -0800</bug_when>
    <thetext>Comment on attachment 247638
Patch

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

Please add change logs. r- due to the lack of change logs.
See http://www.webkit.org/coding/contributing.html

&gt; Source/WebCore/dom/EventDispatcher.cpp:353
&gt; -    if (!event-&gt;propagationStopped() &amp;&amp; !eventPath.isEmpty())
&gt; +    if (!EventHandler::accessibilityPreventsDOMEventDispatch(*event, *node) &amp;&amp; !event-&gt;propagationStopped() &amp;&amp; !eventPath.isEmpty())

This is an extremely hot code path. We shouldn&apos;t be calling this function on every event dispatch.
Instead, we should be doing this work at where the event is created &amp; dispatched for specific event names.

&gt; Source/WebCore/page/EventHandler.cpp:3225
&gt; +    const AtomicString&amp; eventType = event.type();
&gt; +    if (eventType != eventNames().keydownEvent &amp;&amp; eventType != eventNames().keyupEvent &amp;&amp; eventType != eventNames().keypressEvent)
&gt; +        return false;

Please do this at where keydownEvent, keyupEvent, and keypressEvent are created.

&gt; LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch-expected.txt:6
&gt; +1
&gt; +
&gt; +2
&gt; +
&gt; +2
&gt; +

Please hide these outputs.

&gt; LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

Wrong DOCTYPE.  Use HTML5 style DOCTYPE: &lt;!DOCTYPE html&gt;

&gt; LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html:7
&gt; +&lt;!-- add a keydown handler that ignores all key events--&gt;

This comment doesn&apos;t explain why. Please remove it.

&gt; LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html:41
&gt; +            var webArea = clearSelectionAndFocusOnWebArea();
&gt; +            accessibilityController.enableEnhancedAccessibility(false);
&gt; +            shouldBe(&quot;accessibilityController.enhancedAccessibilityEnabled&quot;, &quot;false&quot;);

Please include &quot;accessibilityController.enableEnhancedAccessibility(false);&quot; in shouldBe as in
shouldBe(&quot;accessibilityController.enableEnhancedAccessibility(false); accessibilityController.enhancedAccessibilityEnabled&quot;, &quot;false&quot;);
so that the expected result reads itself.

Otherwise, the person trying to interpret the test result has to read the test file separately.
Ditto for all other should* in this test.

&gt; LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html:44
&gt; +            

Please don&apos;t add whitespaces in blank lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075765</commentid>
    <comment_count>16</comment_count>
      <attachid>248278</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-09 15:01:05 -0700</bug_when>
    <thetext>Created attachment 248278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076767</commentid>
    <comment_count>17</comment_count>
      <attachid>248278</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-03-12 15:26:17 -0700</bug_when>
    <thetext>Comment on attachment 248278
Patch

It looks like you are allowing keyup to be sent still. You should consider if there are any websites that will be tripped up by this if they are expecting keydown to be sent before keyup. One possible solution to that would be to avoid sending keyup as well, but maybe it&apos;s not going to be an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076816</commentid>
    <comment_count>18</comment_count>
      <attachid>248561</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-12 18:22:35 -0700</bug_when>
    <thetext>Created attachment 248561
Updated to also stop propagation on key up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076848</commentid>
    <comment_count>19</comment_count>
      <attachid>248561</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-03-12 22:13:45 -0700</bug_when>
    <thetext>Comment on attachment 248561
Updated to also stop propagation on key up

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

&gt; Source/WebCore/page/EventHandler.cpp:3252
&gt; +    return false;

It looks like the EWS bot for EFL is failing because of the unused variable outside of the #if PLATFORM(COCOA). Build error:

../../Source/WebCore/page/EventHandler.cpp:3236:6: error: unused parameter &apos;event&apos; [-Werror=unused-parameter]
 bool EventHandler::accessibilityPreventsEventPropogation(KeyboardEvent* event)

You can handle this with:

#else
UNUSED_PARAM(event);
#endif
return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076889</commentid>
    <comment_count>20</comment_count>
      <attachid>248576</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-13 00:45:46 -0700</bug_when>
    <thetext>Created attachment 248576
Update for UNUSED_PARAM(event);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076969</commentid>
    <comment_count>21</comment_count>
      <attachid>248576</attachid>
    <who name="Doug Russell">d_russell</who>
    <bug_when>2015-03-13 11:16:11 -0700</bug_when>
    <thetext>Comment on attachment 248576
Update for UNUSED_PARAM(event);

&gt;Subversion Revision: 181455
&gt;diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
&gt;index c86364bc9a4a0b5db026a46838c5cb7fbc8bbf64..96f9a946e01feed8c4b6543bf783c0b69cb23456 100644
&gt;--- a/Source/WebCore/ChangeLog
&gt;+++ b/Source/WebCore/ChangeLog
&gt;@@ -1,3 +1,34 @@
&gt;+2015-03-12  Doug Russell  &lt;d_russell@apple.com&gt;
&gt;+
&gt;+        AX: Provide API for assistive tech to ignore DOM key event handlers
&gt;+        https://bugs.webkit.org/show_bug.cgi?id=142059
&gt;+
&gt;+        Reviewed by Chris Fleizach, Beth Dakin.
&gt;+
&gt;+        Assistive technology applications on the desktop are heavily dependent on keyboard navigation being reliable. This is greatly hindered by sites that handle key events without updating keyboard selection and then consume the event. It is important for assistive technology apps to allow users to decide to ignore these handlers that are incorrect for their purposes.
&gt;+
&gt;+        This can be fixed by exposing, via a new accessibility attribute, a way to decide, for a given WebCore::Frame, to pre-empt DOM dispatch and instead let accessibility caret browsing take place.
&gt;+
&gt;+        Test: platform/mac/accessibility/prevent-keyboard-event-dispatch.html
&gt;+
&gt;+        * accessibility/AccessibilityObject.cpp:
&gt;+        (WebCore::AccessibilityObject::preventKeyboardDOMEventDispatch):
&gt;+        (WebCore::AccessibilityObject::setPreventKeyboardDOMEventDispatch):
&gt;+        * accessibility/AccessibilityObject.h:
&gt;+        * accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
&gt;+        (-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
&gt;+        (-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
&gt;+        (-[WebAccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
&gt;+        (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
&gt;+        * dom/Element.cpp:
&gt;+        (WebCore::Element::dispatchKeyEvent):
&gt;+        * page/EventHandler.cpp:
&gt;+        (WebCore::EventHandler::keyEvent):
&gt;+        (WebCore::handleKeyboardSelectionMovement):
&gt;+        (WebCore::EventHandler::handleKeyboardSelectionMovementForAccessibility):
&gt;+        * page/EventHandler.h:
&gt;+        * page/Settings.in:
&gt;+
&gt; 2015-03-12  Dan Bernstein  &lt;mitz@apple.com&gt;
&gt; 
&gt;         Finish up &lt;rdar://problem/20086546&gt; [Cocoa] Add an option to treat certificate chains with SHA1-signed certificates as insecure
&gt;diff --git a/Source/WebCore/accessibility/AccessibilityObject.cpp b/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt;index 8b4915ec7ad2cdc364a5fca255bad6512f6cde0b..258bf632fd1e118dcaf679f6ae175e8964ed53ab 100644
&gt;--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt;+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp
&gt;@@ -2605,4 +2605,20 @@ void AccessibilityObject::elementsFromAttribute(Vector&lt;Element*&gt;&amp; elements, cons
&gt;     }
&gt; }
&gt; 
&gt;+#if PLATFORM(COCOA)
&gt;+bool AccessibilityObject::preventKeyboardDOMEventDispatch() const
&gt;+{
&gt;+    Frame* frame = this-&gt;frame();
&gt;+    return frame &amp;&amp; frame-&gt;settings().preventKeyboardDOMEventDispatch();
&gt;+}
&gt;+
&gt;+void AccessibilityObject::setPreventKeyboardDOMEventDispatch(bool on)
&gt;+{
&gt;+    Frame* frame = this-&gt;frame();
&gt;+    if (!frame)
&gt;+        return;
&gt;+    frame-&gt;settings().setPreventKeyboardDOMEventDispatch(on);
&gt;+}
&gt;+#endif
&gt;+
&gt; } // namespace WebCore
&gt;diff --git a/Source/WebCore/accessibility/AccessibilityObject.h b/Source/WebCore/accessibility/AccessibilityObject.h
&gt;index 176fade31c449e8a1b67a7e78c0be83d0825677e..04188ee67a6a08935e3a4b75b193a8938180f63a 100644
&gt;--- a/Source/WebCore/accessibility/AccessibilityObject.h
&gt;+++ b/Source/WebCore/accessibility/AccessibilityObject.h
&gt;@@ -978,6 +978,11 @@ public:
&gt;     // other operations update type operations
&gt;     void updateBackingStore();
&gt;     
&gt;+#if PLATFORM(COCOA)
&gt;+    bool preventKeyboardDOMEventDispatch() const;
&gt;+    void setPreventKeyboardDOMEventDispatch(bool);
&gt;+#endif
&gt;+    
&gt; #if PLATFORM(COCOA) &amp;&amp; !PLATFORM(IOS)
&gt;     bool caretBrowsingEnabled() const;
&gt;     void setCaretBrowsingEnabled(bool);
&gt;diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
&gt;index 74324f007864e3478622303cd6e7e478ce77eb03..801436539ff7cfb2b2d9a2f349a4d90338a90b1d 100644
&gt;--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
&gt;+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
&gt;@@ -464,6 +464,10 @@ using namespace HTMLNames;
&gt; #define NSAccessibilityMathPrescriptsAttribute @&quot;AXMathPrescripts&quot;
&gt; #define NSAccessibilityMathPostscriptsAttribute @&quot;AXMathPostscripts&quot;
&gt; 
&gt;+#ifndef NSAccessibilityPreventKeyboardDOMEventDispatchAttribute
&gt;+#define NSAccessibilityPreventKeyboardDOMEventDispatchAttribute @&quot;AXPreventKeyboardDOMEventDispatch&quot;
&gt;+#endif
&gt;+
&gt; #ifndef NSAccessibilityCaretBrowsingEnabledAttribute
&gt; #define NSAccessibilityCaretBrowsingEnabledAttribute @&quot;AXCaretBrowsingEnabled&quot;
&gt; #endif
&gt;@@ -1359,6 +1363,7 @@ static id textMarkerRangeFromVisiblePositions(AXObjectCache *cache, VisiblePosit
&gt;         [tempArray addObject:NSAccessibilityLoadingProgressAttribute];
&gt;         [tempArray addObject:NSAccessibilityURLAttribute];
&gt;         [tempArray addObject:NSAccessibilityCaretBrowsingEnabledAttribute];
&gt;+        [tempArray addObject:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute];
&gt;         webAreaAttrs = [[NSArray alloc] initWithArray:tempArray];
&gt;         [tempArray release];
&gt;     }
&gt;@@ -2958,6 +2963,9 @@ static NSString* roleValueToNSString(AccessibilityRole value)
&gt;     if ([attributeName isEqualToString:@&quot;AXDRTElementIdAttribute&quot;])
&gt;         return m_object-&gt;getAttribute(idAttr);
&gt;     
&gt;+    if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
&gt;+        return [NSNumber numberWithBool:m_object-&gt;preventKeyboardDOMEventDispatch()];
&gt;+    
&gt;     if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
&gt;         return [NSNumber numberWithBool:m_object-&gt;caretBrowsingEnabled()];
&gt;     
&gt;@@ -3033,6 +3041,9 @@ static NSString* roleValueToNSString(AccessibilityRole value)
&gt;     if ([attributeName isEqualToString:NSAccessibilityGrabbedAttribute])
&gt;         return YES;
&gt;     
&gt;+    if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
&gt;+        return YES;
&gt;+    
&gt;     if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
&gt;         return YES;
&gt;     
&gt;@@ -3352,6 +3363,8 @@ static NSString* roleValueToNSString(AccessibilityRole value)
&gt;             m_object-&gt;setSelectedRows(selectedRows);
&gt;     } else if ([attributeName isEqualToString:NSAccessibilityGrabbedAttribute])
&gt;         m_object-&gt;setARIAGrabbed([number boolValue]);
&gt;+    else if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityPreventKeyboardDOMEventDispatchAttribute])
&gt;+        m_object-&gt;setPreventKeyboardDOMEventDispatch([number boolValue]);
&gt;     else if (m_object-&gt;isWebArea() &amp;&amp; [attributeName isEqualToString:NSAccessibilityCaretBrowsingEnabledAttribute])
&gt;         m_object-&gt;setCaretBrowsingEnabled([number boolValue]);
&gt; }
&gt;diff --git a/Source/WebCore/dom/Element.cpp b/Source/WebCore/dom/Element.cpp
&gt;index 5dd97aae0cd77fb839ad7d6f324feafa0bfef91c..222aebc767f621de094e2f751558c0b4593fe727 100644
&gt;--- a/Source/WebCore/dom/Element.cpp
&gt;+++ b/Source/WebCore/dom/Element.cpp
&gt;@@ -39,6 +39,7 @@
&gt; #include &quot;ElementIterator.h&quot;
&gt; #include &quot;ElementRareData.h&quot;
&gt; #include &quot;EventDispatcher.h&quot;
&gt;+#include &quot;EventHandler.h&quot;
&gt; #include &quot;FlowThreadController.h&quot;
&gt; #include &quot;FocusController.h&quot;
&gt; #include &quot;FocusEvent.h&quot;
&gt;@@ -289,6 +290,10 @@ bool Element::dispatchWheelEvent(const PlatformWheelEvent&amp; event)
&gt; bool Element::dispatchKeyEvent(const PlatformKeyboardEvent&amp; platformEvent)
&gt; {
&gt;     RefPtr&lt;KeyboardEvent&gt; event = KeyboardEvent::create(platformEvent, document().defaultView());
&gt;+    if (Frame* frame = document().frame()) {
&gt;+        if (frame-&gt;eventHandler().accessibilityPreventsEventPropogation(event.get()))
&gt;+            event-&gt;stopPropagation();
&gt;+    }
&gt;     return EventDispatcher::dispatchEvent(this, event) &amp;&amp; !event-&gt;defaultHandled();
&gt; }
&gt; 
&gt;diff --git a/Source/WebCore/page/EventHandler.cpp b/Source/WebCore/page/EventHandler.cpp
&gt;index de15d8208f6ec811c68bebe7a3f819ed31508b69..5647d3b01018a9ea6fb316e3d80daaeffb0490eb 100644
&gt;--- a/Source/WebCore/page/EventHandler.cpp
&gt;+++ b/Source/WebCore/page/EventHandler.cpp
&gt;@@ -3087,6 +3087,9 @@ bool EventHandler::keyEvent(const PlatformKeyboardEvent&amp; initialKeyEvent)
&gt;         keydown-&gt;setTarget(element);
&gt;         keydown-&gt;setDefaultHandled();
&gt;     }
&gt;+    
&gt;+    if (accessibilityPreventsEventPropogation(keydown.get()))
&gt;+        keydown-&gt;stopPropagation();
&gt; 
&gt;     element-&gt;dispatchEvent(keydown, IGNORE_EXCEPTION);
&gt;     // If frame changed as a result of keydown dispatch, then return early to avoid sending a subsequent keypress message to the new frame.
&gt;@@ -3230,6 +3233,27 @@ void EventHandler::handleKeyboardSelectionMovementForAccessibility(KeyboardEvent
&gt;     }
&gt; }
&gt; 
&gt;+bool EventHandler::accessibilityPreventsEventPropogation(KeyboardEvent* event)
&gt;+{
&gt;+#if PLATFORM(COCOA)
&gt;+    if (!AXObjectCache::accessibilityEnhancedUserInterfaceEnabled())
&gt;+        return false;
&gt;+
&gt;+    if (!m_frame.settings().preventKeyboardDOMEventDispatch())
&gt;+        return false;
&gt;+
&gt;+    // Check for key events that are relevant to accessibility: tab and arrows keys that change focus
&gt;+    if (event-&gt;keyIdentifier() == &quot;U+0009&quot;)
&gt;+        return true;
&gt;+    FocusDirection direction = focusDirectionForKey(event-&gt;keyIdentifier());
&gt;+    if (direction != FocusDirectionNone)
&gt;+        return true;
&gt;+#else
&gt;+    UNUSED_PARAM(event);
&gt;+#endif
&gt;+    return false;
&gt;+}
&gt;+
&gt; void EventHandler::defaultKeyboardEventHandler(KeyboardEvent* event)
&gt; {
&gt;     if (event-&gt;type() == eventNames().keydownEvent) {
&gt;diff --git a/Source/WebCore/page/EventHandler.h b/Source/WebCore/page/EventHandler.h
&gt;index 3720f6c1531a20a750da6146a4638cf2949d7d25..5df29d033285d7a59ce8a477c9623ee35a166c95 100644
&gt;--- a/Source/WebCore/page/EventHandler.h
&gt;+++ b/Source/WebCore/page/EventHandler.h
&gt;@@ -239,6 +239,7 @@ public:
&gt;     WEBCORE_EXPORT bool keyEvent(const PlatformKeyboardEvent&amp;);
&gt;     void defaultKeyboardEventHandler(KeyboardEvent*);
&gt; 
&gt;+    bool accessibilityPreventsEventPropogation(KeyboardEvent*);
&gt;     WEBCORE_EXPORT void handleKeyboardSelectionMovementForAccessibility(KeyboardEvent*);
&gt; 
&gt;     bool handleTextInputEvent(const String&amp; text, Event* underlyingEvent = 0, TextEventInputType = TextEventInputKeyboard);
&gt;diff --git a/Source/WebCore/page/Settings.in b/Source/WebCore/page/Settings.in
&gt;index f45314ca92f90cb2973827df415baeef2fe5aa48..22d15de260b08006caf57d0fbb603f6ebd9d6b52 100644
&gt;--- a/Source/WebCore/page/Settings.in
&gt;+++ b/Source/WebCore/page/Settings.in
&gt;@@ -45,6 +45,7 @@ maximumHTMLParserDOMTreeDepth type=unsigned, initial=defaultMaximumHTMLParserDOM
&gt; loadsSiteIconsIgnoringImageLoadingSetting initial=false
&gt; 
&gt; caretBrowsingEnabled initial=false
&gt;+preventKeyboardDOMEventDispatch initial=false
&gt; localStorageEnabled initial=false
&gt; allowUniversalAccessFromFileURLs initial=true
&gt; allowFileAccessFromFileURLs initial=true
&gt;diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt;index d8f85bf758fd0fa27d71a12e472d13ebc3b098ec..d1dec88f01fd49e093e150071769d1f59f6f9c4a 100644
&gt;--- a/LayoutTests/ChangeLog
&gt;+++ b/LayoutTests/ChangeLog
&gt;@@ -1,3 +1,19 @@
&gt;+2015-03-12  Doug Russell  &lt;d_russell@apple.com&gt;
&gt;+
&gt;+        AX: Provide API for assistive tech to ignore DOM key event handlers
&gt;+        https://bugs.webkit.org/show_bug.cgi?id=142059
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        Assistive technology applications on the desktop are heavily dependent on keyboard navigation being reliable. This is greatly hindered by sites that handle key events without updating keyboard selection and then consume the event. It is important for assistive technology apps to allow users to decide to ignore these handlers that are incorrect for their purposes.
&gt;+
&gt;+        This can be fixed by exposing, via a new accessibility attribute, a way to decide, for a given WebCore::Frame, to pre-empt DOM dispatch and instead let accessibility caret browsing take place.
&gt;+
&gt;+        * accessibility/parent-delete-expected.txt:
&gt;+        * platform/mac/accessibility/document-attributes-expected.txt:
&gt;+        * platform/mac/accessibility/prevent-keyboard-event-dispatch-expected.txt: Added.
&gt;+        * platform/mac/accessibility/prevent-keyboard-event-dispatch.html: Added.
&gt;+
&gt; 2015-03-12  Simon Fraser  &lt;simon.fraser@apple.com&gt;
&gt; 
&gt;         These hidpi filter tests pass sometimes.
&gt;diff --git a/LayoutTests/accessibility/parent-delete-expected.txt b/LayoutTests/accessibility/parent-delete-expected.txt
&gt;index 42467546e244b3e95800137d2c05b2b7a47cfbf9..921ab78a11d9c07742eb9ae5b7d83495f4f07b7e 100644
&gt;--- a/LayoutTests/accessibility/parent-delete-expected.txt
&gt;+++ b/LayoutTests/accessibility/parent-delete-expected.txt
&gt;@@ -28,5 +28,6 @@ AXLayoutCount: 2
&gt; AXLoadingProgress: 1
&gt; AXURL: LayoutTests/accessibility/parent-delete.html
&gt; AXCaretBrowsingEnabled: 0
&gt;+AXPreventKeyboardDOMEventDispatch: 0
&gt; AXElementBusy: 0
&gt; 
&gt;diff --git a/LayoutTests/platform/mac/accessibility/document-attributes-expected.txt b/LayoutTests/platform/mac/accessibility/document-attributes-expected.txt
&gt;index 8f4bae1671d8544c5f2167ee4d9410c03d69d732..b1958264df2aa05641c8628109b58325aa8c7321 100644
&gt;--- a/LayoutTests/platform/mac/accessibility/document-attributes-expected.txt
&gt;+++ b/LayoutTests/platform/mac/accessibility/document-attributes-expected.txt
&gt;@@ -27,6 +27,7 @@ AXLayoutCount: 2
&gt; AXLoadingProgress: 1
&gt; AXURL: LayoutTests/platform/mac/accessibility/document-attributes.html
&gt; AXCaretBrowsingEnabled: 0
&gt;+AXPreventKeyboardDOMEventDispatch: 0
&gt; AXElementBusy: 0
&gt; 
&gt; 
&gt;diff --git a/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch-expected.txt b/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch-expected.txt
&gt;new file mode 100644
&gt;index 0000000000000000000000000000000000000000..b4d6b82e9c861e925db19f1f0962219b66f233da
&gt;--- /dev/null
&gt;+++ b/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch-expected.txt
&gt;@@ -0,0 +1,29 @@
&gt;+1
&gt;+
&gt;+2
&gt;+
&gt;+2
&gt;+
&gt;+This tests ignoring javascript key handlers that consume key events.
&gt;+
&gt;+On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
&gt;+
&gt;+
&gt;+PASS webArea.role is &apos;AXRole: AXWebArea&apos;
&gt;+PASS caretBrowsingEnabled(webArea) is false
&gt;+PASS accessibilityController.enhancedAccessibilityEnabled is false
&gt;+PASS preventKeyboardDOMEventDispatch(webArea) is false
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 1&apos;
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 1&apos;
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 1&apos;
&gt;+PASS keycount() is &apos;2&apos;
&gt;+PASS accessibilityController.enhancedAccessibilityEnabled is true
&gt;+PASS preventKeyboardDOMEventDispatch(webArea) is true
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 1&apos;
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 1&apos;
&gt;+PASS elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue is &apos;AXValue: 2&apos;
&gt;+PASS keycount() is &apos;2&apos;
&gt;+PASS successfullyParsed is true
&gt;+
&gt;+TEST COMPLETE
&gt;+
&gt;diff --git a/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html b/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html
&gt;new file mode 100644
&gt;index 0000000000000000000000000000000000000000..8c58f3de51acf3ef1b2a0e7c33b9fdea99514a03
&gt;--- /dev/null
&gt;+++ b/LayoutTests/platform/mac/accessibility/prevent-keyboard-event-dispatch.html
&gt;@@ -0,0 +1,77 @@
&gt;+&lt;!DOCTYPE html&gt;
&gt;+&lt;html&gt;
&gt;+&lt;head&gt;
&gt;+    &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt;+    &lt;script src=&quot;resources/accessibility-helper.js&quot;&gt;&lt;/script&gt;
&gt;+&lt;/head&gt;
&gt;+&lt;body id=&quot;body&quot; onkeydown=&quot;return keydown();&quot;&gt;
&gt;+    &lt;script&gt;
&gt;+    function preventKeyboardDOMEventDispatch(webArea) {
&gt;+        return webArea.boolAttributeValue(&quot;AXPreventKeyboardDOMEventDispatch&quot;);
&gt;+    }
&gt;+    function setPreventKeyboardDOMEventDispatch(webArea, value) {
&gt;+        webArea.setBoolAttributeValue(&quot;AXPreventKeyboardDOMEventDispatch&quot;, value);
&gt;+    }
&gt;+    function keydown(event) {
&gt;+        var element = document.getElementById(&quot;keydowncount&quot;);
&gt;+        element.innerHTML = parseInt(element.innerHTML) + 1;
&gt;+        return false;
&gt;+    }
&gt;+    function keycount() {
&gt;+        return document.getElementById(&quot;keydowncount&quot;).innerHTML;
&gt;+    }
&gt;+    &lt;/script&gt;
&gt;+    &lt;div&gt;
&gt;+        &lt;p&gt;1&lt;/p&gt;
&gt;+        &lt;p&gt;2&lt;/p&gt;
&gt;+        &lt;p id=&quot;keydowncount&quot;&gt;0&lt;p&gt;
&gt;+    &lt;/div&gt;
&gt;+    &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt;+    &lt;script&gt;
&gt;+    description(&quot;This tests ignoring javascript key handlers that consume key events.&quot;);
&gt;+    if (window.testRunner) {
&gt;+
&gt;+        testRunner.dumpAsText();
&gt;+
&gt;+        if (window.accessibilityController &amp;&amp; window.eventSender) {
&gt;+
&gt;+            var webArea = clearSelectionAndFocusOnWebArea();
&gt;+            accessibilityController.enableEnhancedAccessibility(false);
&gt;+            shouldBe(&quot;accessibilityController.enhancedAccessibilityEnabled&quot;, &quot;false&quot;);
&gt;+            setPreventKeyboardDOMEventDispatch(webArea, false);
&gt;+            shouldBe(&quot;preventKeyboardDOMEventDispatch(webArea)&quot;, &quot;false&quot;);
&gt;+
&gt;+            // Arrowing before enabling AX and ignore dom handlers won&apos;t move the caret
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 1&apos;&quot;);
&gt;+            eventSender.keyDown(&quot;rightArrow&quot;);
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 1&apos;&quot;);
&gt;+            eventSender.keyDown(&quot;rightArrow&quot;);
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 1&apos;&quot;);
&gt;+
&gt;+            // Validate that the handler received 2 keys events
&gt;+            shouldBe(&quot;keycount()&quot;, &quot;&apos;2&apos;&quot;);
&gt;+
&gt;+            // Enable enhanced accessibility (necessary for accessibility specific selection handling).
&gt;+            accessibilityController.enableEnhancedAccessibility(true);
&gt;+            shouldBe(&quot;accessibilityController.enhancedAccessibilityEnabled&quot;, &quot;true&quot;);
&gt;+
&gt;+            // Enable IgnoreDOMKeyEventHandlers so that the javascript handler will be skipped
&gt;+            setPreventKeyboardDOMEventDispatch(webArea, true);
&gt;+            shouldBe(&quot;preventKeyboardDOMEventDispatch(webArea)&quot;, &quot;true&quot;);
&gt;+
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 1&apos;&quot;);
&gt;+            eventSender.keyDown(&quot;rightArrow&quot;);
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 1&apos;&quot;);
&gt;+            eventSender.keyDown(&quot;rightArrow&quot;);
&gt;+            shouldBe(&quot;elementAtStartMarkerOfSelectedTextMarkerRange(webArea).stringValue&quot;, &quot;&apos;AXValue: 2&apos;&quot;);
&gt;+
&gt;+            // Validate that the handler didn&apos;t receive any more key events
&gt;+            shouldBe(&quot;keycount()&quot;, &quot;&apos;2&apos;&quot;);
&gt;+
&gt;+            setPreventKeyboardDOMEventDispatch(webArea, false);
&gt;+        }
&gt;+    }
&gt;+    &lt;/script&gt;
&gt;+    &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt;+&lt;/body&gt;
&gt;+&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076988</commentid>
    <comment_count>22</comment_count>
      <attachid>248576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 12:24:33 -0700</bug_when>
    <thetext>Comment on attachment 248576
Update for UNUSED_PARAM(event);

Clearing flags on attachment: 248576

Committed r181484: &lt;http://trac.webkit.org/changeset/181484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076989</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 12:24:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247449</attachid>
            <date>2015-02-26 14:58:17 -0800</date>
            <delta_ts>2015-02-26 15:07:59 -0800</delta_ts>
            <desc>Ignore Dom</desc>
            <filename>bug-142059-20150226145802.patch</filename>
            <type>text/plain</type>
            <size>16130</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDE3NmZhZGUzMWM0NDllOGExYjY3
YTdlNzhjMGJlODNkMDgyNTY3N2UuLjJjOGJmYmU3MTQ1MmM4YWJkZjhlNzEzMDMwZjgwMGNiMTgx
MmVmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC05NzksNiArOTc5LDkgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRl
QmFja2luZ1N0b3JlKCk7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJ
T1MpCisgICAgYm9vbCBpZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKGJvb2wpOworICAgIAogICAgIGJvb2wgY2Fy
ZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFi
bGVkKGJvb2wpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCA0ZGRhYWZjNDg1ODM4
OTdiOWFlYmQ5MWM4MDM1ODRhMzAxZTc3ZTM4Li41ZDA2Mzk0YjczMTkyOTIxY2U2ZjcxZjdlNzA5
YTdhNjE5MDcxM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTEwNyw2ICsxMDcsMjAgQEAg
QWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3Np
YmlsaXR5UGxhdGZvcm1JbmNsdWRlc08KICAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOwogfQog
ICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjppZ25vcmVET01LZXlFdmVudEhhbmRsZXJz
KCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVy
biBmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5pZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SWdub3JlRE9NS2V5RXZlbnRIYW5k
bGVycyhib29sIG9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zZXR0aW5ncygpLnNldEln
bm9yZURPTUtleUV2ZW50SGFuZGxlcnMob24pOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QKIHsKICAgICBGcmFtZSogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCA3NDMyNGYwMDc4NjRlMzQ3ODYyMjMwM2NkNmU3ZTQ3OGNlNzdlYjAzLi41NTU1NjQxNGQ1ZWE0
M2I4NjkwYWI4ODhjMzMxNjg0ZmYyOGU4YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQpAQCAtNDY0LDYgKzQ2NCwxMCBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0c0F0dHJpYnV0ZSBAIkFY
TWF0aFByZXNjcmlwdHMiCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0c0F0
dHJpYnV0ZSBAIkFYTWF0aFBvc3RzY3JpcHRzIgogCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUln
bm9yZURPTUtleUV2ZW50SGFuZGxlcnNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJpYnV0ZSBAIkFYSWdub3JlRE9NS2V5RXZlbnRI
YW5kbGVycyIKKyNlbmRpZgorCiAjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdF
bmFibGVkQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFi
bGVkQXR0cmlidXRlIEAiQVhDYXJldEJyb3dzaW5nRW5hYmxlZCIKICNlbmRpZgpAQCAtMTM1OSw2
ICsxMzYzLDcgQEAgc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25z
KEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBWaXNpYmxlUG9zaXQKICAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlXTsKICAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKICAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0Vu
YWJsZWRBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzQXR0cmlidXRlXTsKICAgICAgICAgd2ViQXJl
YUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CiAgICAg
ICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CiAgICAgfQpAQCAtMjk1OCw2ICsyOTYzLDkgQEAgc3Rh
dGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVl
KQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVEVsZW1lbnRJ
ZEF0dHJpYnV0ZSJdKQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJpYnV0ZShpZEF0
dHIpOwogICAgIAorICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUlnbm9yZURPTUtleUV2ZW50SGFuZGxl
cnNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1f
b2JqZWN0LT5pZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKCldOworICAgIAogICAgIGlmIChtX29i
amVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+Y2FyZXRCcm93c2luZ0VuYWJsZWQo
KV07CiAgICAgCkBAIC0zMDMzLDYgKzMwNDEsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1
ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXSkKICAg
ICAgICAgcmV0dXJuIFlFUzsKICAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYm
IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJZ25vcmVET01L
ZXlFdmVudEhhbmRsZXJzQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAKICAg
ICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgCkBAIC0zMzUyLDYgKzMzNjMsOCBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAg
ICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7CiAgICAgfSBlbHNl
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJl
ZEF0dHJpYnV0ZV0pCiAgICAgICAgIG1fb2JqZWN0LT5zZXRBUklBR3JhYmJlZChbbnVtYmVyIGJv
b2xWYWx1ZV0pOworICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SWdub3JlRE9NS2V5RXZlbnRI
YW5kbGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIG1fb2JqZWN0LT5zZXRJZ25vcmVET01LZXlFdmVu
dEhhbmRsZXJzKFtudW1iZXIgYm9vbFZhbHVlXSk7CiAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlz
V2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIG1fb2JqZWN0LT5zZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAyZDkyZjgwOGE4YTM3NGQ1ODQwNGNkMDlhZDA1
ZjRmNzVjY2QyMzVkLi42ZDMzNjAxNDRlM2MwOWQ3MTYwZWI0Mjg1OWFjMGY0NGViZGM4MWExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiRXZlbnRDb250ZXh0Lmgi
CisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAgLTM0
OSw3ICszNTAsMTIgQEAgYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSog
b3JpZ2luLCBQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICBpZiAoaXM8SFRNTElucHV0
RWxlbWVudD4oKm5vZGUpKQogICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9k
ZSkud2lsbERpc3BhdGNoRXZlbnQoKmV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUpOwogCi0gICAg
aWYgKCFldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50UGF0aC5pc0VtcHR5KCkp
CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1MpCisgICAgYm9vbCBwcmV2ZW50
RE9NRGlzcGF0Y2ggPSBFdmVudEhhbmRsZXI6OmFjY2Vzc2liaWxpdHlXYW50c1RvSGFuZGxlRXZl
bnQoKmV2ZW50LCAqbm9kZSk7CisjZWxzZQorICAgIGJvb2wgcHJldmVudERPTURpc3BhdGNoID0g
ZmFsc2U7CisjZW5kaWYKKyAgICBpZiAoIXByZXZlbnRET01EaXNwYXRjaCAmJiAhZXZlbnQtPnBy
b3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVudFBhdGguaXNFbXB0eSgpKQogICAgICAgICBkaXNw
YXRjaEV2ZW50SW5ET00oKmV2ZW50LCBldmVudFBhdGgsIHdpbmRvd0V2ZW50Q29udGV4dCk7CiAK
ICAgICBldmVudC0+c2V0VGFyZ2V0KCZldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygq
bm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE1ZjY4MzE5MmJj
NDIwZWU3NjY1MThiODVkZDllOWY0N2RhN2UwZDcuLmIwYmRlZGY2MzIyNzM2MGExYTQ1YjRmODcy
NzA2YmYzYTViYjgwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMy
MTMsNiArMzIxMyw0MyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVt
ZW50KEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRG
T1JNKElPUykKK2Jvb2wgRXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5V2FudHNUb0hhbmRsZUV2
ZW50KEV2ZW50JiBldmVudCwgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IGV2
ZW50LnR5cGUoKTsKKyAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQgJiYgZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBub2RlLmRvY3Vt
ZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBub2RlQWNjZXNzaWJpbGl0eSA9
IGNhY2hlLT5nZXRPckNyZWF0ZSgmbm9kZSk7CisgICAgaWYgKCFub2RlQWNjZXNzaWJpbGl0eSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEZyYW1lICpmcmFtZSA9IG5vZGVBY2Nl
c3NpYmlsaXR5LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zZXR0aW5ncygp
Lmlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGlmIChpczxLZXlib2FyZEV2ZW50PihldmVudCkpIHsKKyAgICAgICAgS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmRFdmVudCA9IGRvd25jYXN0PEtleWJvYXJkRXZlbnQ+KGV2ZW50KTsKKyAg
ICAgICAgLy8gVGFiCisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIoKSA9
PSAiVSswMDA5IikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAvLyBBcnJvdyBr
ZXlzCisgICAgICAgIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGZvY3VzRGlyZWN0aW9uRm9y
S2V5KGtleWJvYXJkRXZlbnQua2V5SWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKGRpcmVjdGlv
biAhPSBGb2N1c0RpcmVjdGlvbk5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCiAKIHZvaWQgRXZlbnRIYW5kbGVy
OjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2Fy
ZEV2ZW50KiBldmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDM3MjBm
NmMxNTMxYTIwYTc1MGRhNjE0NmE0NjM4Y2YyOTQ5ZDdkMjUuLmRmYzhmMTZjYzg5NjExOThiM2Fj
OWYxMjk5OGY0MmYyZTcyOTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAt
MjM5LDYgKzIzOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgZGVmYXVsdEtleWJvYXJk
RXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAh
UExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29sIGFjY2Vzc2liaWxpdHlXYW50c1RvSGFuZGxl
RXZlbnQoRXZlbnQmLCBOb2RlJik7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZl
bnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0gMCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2
ZW50SW5wdXRLZXlib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA4NmRmMTk4ZGRi
MDY5MmI4YWU2Zjk1MGQyYWQxODVhZGI4MjBiOGQ0Li41NTBkMThiYzI4ZjAzMTg5NmM0ZjkxYzBk
OTBiMGI5MTM5M2M1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTQ1LDYgKzQ1LDcg
QEAgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggdHlwZT11bnNpZ25lZCwgaW5pdGlhbD1k
ZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET00KIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxv
YWRpbmdTZXR0aW5nIGluaXRpYWw9ZmFsc2UKIAogY2FyZXRCcm93c2luZ0VuYWJsZWQgaW5pdGlh
bD1mYWxzZQoraWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyBpbml0aWFsPWZhbHNlCiBsb2NhbFN0
b3JhZ2VFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzIGluaXRpYWw9dHJ1ZQogYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBl
Y3RlZC50eHQKaW5kZXggNDI0Njc1NDZlMjQ0YjNlOTU4MDAxMzdkMmMwNWIyYjdhNDdjZmJmOS4u
M2Y1MzgxOTNlNWMzZTgwYzMwYjA0ZGI4ZjAyMmZiZjFmZTkxMWZhYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0y
OCw1ICsyOCw2IEBAIEFYTGF5b3V0Q291bnQ6IDIKIEFYTG9hZGluZ1Byb2dyZXNzOiAxCiBBWFVS
TDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLmh0bWwKIEFYQ2FyZXRC
cm93c2luZ0VuYWJsZWQ6IDAKK0FYSWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyczogMAogQVhFbGVt
ZW50QnVzeTogMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
CmluZGV4IDhmNGJhZTE2NzFkODU0NGM1ZjIxNjdlZTRkOTQxMGMwM2Q2OWQ3MzIuLmU4YjRjNTVj
NjVlYTNlYjc5ZDBlODZlZmRjMTU0YzFlYmY1NzM5ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0yNyw2ICsyNyw3IEBAIEFYTGF5b3V0Q291bnQ6
IDIKIEFYTG9hZGluZ1Byb2dyZXNzOiAxCiBBWFVSTDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy5odG1sCiBBWENhcmV0QnJvd3NpbmdF
bmFibGVkOiAwCitBWElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnM6IDAKIEFYRWxlbWVudEJ1c3k6
IDAKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVy
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRkYTE0MmExYzUxMTQzYmNjN2JlZTc5OWVhOGI5
ZTdlMDBlMjY1OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2lnbm9yZS1kb20ta2V5LWV2ZW50LWhhbmRsZXJzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI5IEBACisxCisKKzIKKworMgorCitUaGlzIHRlc3RzIGlnbm9yaW5nIGphdmFz
Y3JpcHQga2V5IGhhbmRsZXJzIHRoYXQgY29uc3VtZSBrZXkgZXZlbnRzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyB3ZWJBcmVhLnJvbGUgaXMgJ0FYUm9sZTogQVhXZWJB
cmVhJworUEFTUyBjYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIGlzIGZh
bHNlCitQQVNTIGlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSkgaXMgZmFsc2UKK1BB
U1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEp
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9m
U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6
IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3
ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1Mga2V5Y291bnQoKSBpcyAn
MicKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5h
YmxlZCBpcyB0cnVlCitQQVNTIGlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSkgaXMg
dHJ1ZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uo
d2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0
TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAyJworUEFTUyBrZXljb3Vu
dCgpIGlzICcyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2lnbm9yZS1kb20ta2V5LWV2ZW50LWhhbmRsZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUxZTE1ZjgyY2IyNDEzYmZmNDk2MGExMjQxMzNmOWZlNTc3ZTUyN2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pZ25v
cmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8IS0tIGFkZCBhIGtleWRvd24gaGFuZGxlciB0aGF0IGlnbm9y
ZXMgYWxsIGtleSBldmVudHMtLT4KKzxib2R5IGlkPSJib2R5IiBvbmtleWRvd249InJldHVybiBr
ZXlkb3duKCk7Ij4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGtleWRvd24oZXZlbnQpIHsK
KyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2V5ZG93bmNv
dW50Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gcGFyc2VJbnQoZWxlbWVudC5pbm5l
ckhUTUwpICsgMTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBmdW5jdGlvbiBr
ZXljb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZXlk
b3duY291bnQiKS5pbm5lckhUTUw7CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxkaXY+Cisg
ICAgICAgIDxwPjE8L3A+CisgICAgICAgIDxwPjI8L3A+CisgICAgICAgIDxwIGlkPSJrZXlkb3du
Y291bnQiPjA8cD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlnbm9yaW5nIGphdmFzY3Jp
cHQga2V5IGhhbmRsZXJzIHRoYXQgY29uc3VtZSBrZXkgZXZlbnRzLiIpOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50
U2VuZGVyKSB7CisKKyAgICAgICAgICAgIHZhciB3ZWJBcmVhID0gY2xlYXJTZWxlY3Rpb25BbmRG
b2N1c09uV2ViQXJlYSgpOworICAgICAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5h
YmxlRW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGZhbHNlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIiwgImZh
bHNlIik7CisgICAgICAgICAgICBzZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEs
IGZhbHNlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJpZ25vcmVET01LZXlFdmVudEhhbmRsZXJz
KHdlYkFyZWEpIiwgImZhbHNlIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEFycm93
aW5nIGJlZm9yZSBlbmFibGluZyBBWCBhbmQgaWdub3JlIGRvbSBoYW5kbGVycyB3b24ndCBtb3Zl
IHRoZSBjYXJldAorICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
MSciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFy
ZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBoYW5kbGVyIHJlY2VpdmVkIDIga2V5cyBldmVudHMK
KyAgICAgICAgICAgIHNob3VsZEJlKCJrZXljb3VudCgpIiwgIicyJyIpOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBFbmFibGUgZW5oYW5jZWQgYWNjZXNzaWJpbGl0eSAobmVjZXNzYXJ5
IGZvciBhY2Nlc3NpYmlsaXR5IHNwZWNpZmljIHNlbGVjdGlvbiBoYW5kbGluZykuCisgICAgICAg
ICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHko
dHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5o
YW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIEVuYWJsZSBJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzIHNvIHRoYXQgdGhlIGph
dmFzY3JpcHQgaGFuZGxlciB3aWxsIGJlIHNraXBwZWQKKyAgICAgICAgICAgIHNldElnbm9yZURP
TUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgi
aWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyh3ZWJBcmVhKSIsICJ0cnVlIik7CisKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgi
ZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0
TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogMiciKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVmFsaWRhdGUgdGhh
dCB0aGUgaGFuZGxlciBkaWRuJ3QgcmVjZWl2ZSBhbnkgbW9yZSBrZXkgZXZlbnRzCisgICAgICAg
ICAgICBzaG91bGRCZSgia2V5Y291bnQoKSIsICInMiciKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgc2V0SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyh3ZWJBcmVhLCBmYWxzZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcmVzb3VyY2Vz
L2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzCmluZGV4IGVmNjYwYWQ2
OWJiMDIwZDYzMzE3NjYzNzEyNWQyNTQ1MmFkNjRmMDMuLjFiOGEzYWMxYmJlYjY3YTI1Mzk0YmYw
OGIxMzc5YjlkNWNlNjk5MzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMKQEAgLTIxLDMgKzIxLDExIEBAIGZ1bmN0aW9uIGNhcmV0QnJvd3NpbmdFbmFi
bGVkKHdlYkFyZWEpIHsKIGZ1bmN0aW9uIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEs
IHZhbHVlKSB7CiAgICAgd2ViQXJlYS5zZXRCb29sQXR0cmlidXRlVmFsdWUoIkFYQ2FyZXRCcm93
c2luZ0VuYWJsZWQiLCB2YWx1ZSk7CiB9CisKK2Z1bmN0aW9uIGlnbm9yZURPTUtleUV2ZW50SGFu
ZGxlcnMod2ViQXJlYSkgeworICAgIHJldHVybiB3ZWJBcmVhLmJvb2xBdHRyaWJ1dGVWYWx1ZSgi
QVhJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzIik7Cit9CisKK2Z1bmN0aW9uIHNldElnbm9yZURP
TUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSwgdmFsdWUpIHsKKyAgICB3ZWJBcmVhLnNldEJvb2xB
dHRyaWJ1dGVWYWx1ZSgiQVhJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzIiwgdmFsdWUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247450</attachid>
            <date>2015-02-26 15:08:05 -0800</date>
            <delta_ts>2015-02-26 18:06:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142059-20150226150750.patch</filename>
            <type>text/plain</type>
            <size>52441</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDI2ZWQ1ZTViNmVjNTBm
NjcxZTZkNmRlMGRjNzAxNDljN2IyNjgzOS4uNWY5YmZhMGEzNzA2NWNjMWRhM2Q4MmQ1OTZiM2I1
OWE1MTg0NjQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAyLTI2ICBEb3Vn
IFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBQcm92aWRlIEFQ
SSBmb3IgYXNzaXN0aXZlIHRlY2ggdG8gaWdub3JlIERPTSBrZXkgZXZlbnQgaGFuZGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy1hcnJvdy1uYXYuaHRtbAorICAg
ICAgICAgICAgICAgcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctYXR0
cmlidXRlLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2Nh
cmV0LWJyb3dzaW5nLXRhYi1zZWxlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxlcnMuaHRtbAorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SWdub3JlRE9NS2V5RXZl
bnRIYW5kbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYXJl
dEJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxp
dHlTZXRUZXN0VmFsdWU6Zm9yQXR0cmlidXRlOl0pOgorICAgICAgICAqIGRvbS9FdmVudERpc3Bh
dGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmFjY2Vzc2liaWxpdHlXYW50c1RvSGFuZGxlRXZlbnQpOgorICAgICAg
ICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwog
MjAxNS0wMi0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2luXSBVc2UgV0VCQ09SRV9FWFBPUlQgaW5zdGVhZCBvZiBEZWZpbml0aW9uIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
aW5kZXggOGI0ZjFhZDg2NDk3MjgyYjk4YjM2YTE3NDhjZGY2OTMyZWYyMmUyZi4uMmM4YmZiZTcx
NDUyYzhhYmRmOGU3MTMwMzBmODAwY2IxODEyZWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTk3OCw2ICs5NzgsMTQg
QEAgcHVibGljOgogICAgIC8vIG90aGVyIG9wZXJhdGlvbnMgdXBkYXRlIHR5cGUgb3BlcmF0aW9u
cwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCisjaWYgUExBVEZPUk0oQ09D
T0EpICYmICFQTEFURk9STShJT1MpCisgICAgYm9vbCBpZ25vcmVET01LZXlFdmVudEhhbmRsZXJz
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKGJvb2wpOwor
ICAgIAorICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNl
dENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworI2VuZGlmCisgICAgCiBwcm90ZWN0ZWQ6CiAg
ICAgQVhJRCBtX2lkOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBtX2NoaWxkcmVu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggYjFhN2U5OTRkYWY0ODA3MTg5YjRkMjU1ZmFkZjQ5
ZDAzMGRkOGJjMC4uNWQwNjM5NGI3MzE5MjkyMWNlNmY3MWY3ZTcwOWE3YTYxOTA3MTNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJFbGVtZW50QW5j
ZXN0b3JJdGVyYXRvci5oIgogI2ltcG9ydCAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2ltcG9y
dCAiUmVuZGVyT2JqZWN0LmgiCisjaW1wb3J0ICJTZXR0aW5ncy5oIgogCiAjaWYgSEFWRShBQ0NF
U1NJQklMSVRZKQogCkBAIC0xMDYsNiArMTA3LDM0IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNP
CiAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKIH0KICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycygpIGNvbnN0Cit7CisgICAgRnJhbWUq
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPnNldHRp
bmdzKCkuaWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycygpOworfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNldElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMoYm9vbCBvbikKK3sKKyAgICBG
cmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBmcmFtZS0+c2V0dGluZ3MoKS5zZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJz
KG9uKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYXJldEJyb3dzaW5nRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1
cm4gZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29s
IG9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zZXR0aW5ncygpLnNldENhcmV0QnJvd3Np
bmdFbmFibGVkKG9uKTsKK30KKwogfSAvLyBXZWJDb3JlCiAKICNlbmRpZiAvLyBIQVZFKEFDQ0VT
U0lCSUxJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDNj
MTIxYzU0ODA3ZDg0ZDUxYzEwNDU4YzdjZmI1ZjQ0YTYyNWRjYTcuLjU1NTU2NDE0ZDVlYTQzYjg2
OTBhYjg4OGMzMzE2ODRmZjI4ZThiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC00NjQsNiArNDY0LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQcmVzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRo
UHJlc2NyaXB0cyIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmli
dXRlIEAiQVhNYXRoUG9zdHNjcmlwdHMiCiAKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SWdub3Jl
RE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlJZ25v
cmVET01LZXlFdmVudEhhbmRsZXJzQXR0cmlidXRlIEAiQVhJZ25vcmVET01LZXlFdmVudEhhbmRs
ZXJzIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJs
ZWRBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRB
dHRyaWJ1dGUgQCJBWENhcmV0QnJvd3NpbmdFbmFibGVkIgorI2VuZGlmCisKIEBpbXBsZW1lbnRh
dGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcgogCiAtICh2b2lkKXVucmVnaXN0ZXJV
bmlxdWVJZEZvclVJRWxlbWVudApAQCAtMTM1NCw2ICsxMzYyLDggQEAgc3RhdGljIGlkIHRleHRN
YXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBWaXNp
YmxlUG9zaXQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExheW91dENvdW50Il07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9n
cmVzc0F0dHJpYnV0ZV07CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVVSTEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJp
YnV0ZV07CiAgICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXldOwogICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwogICAgIH0KQEAg
LTI5NTMsNiArMjk2MywxMiBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmco
QWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCiAgICAgICAgIHJldHVybiBtX29i
amVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1dl
YkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMo
KV07CisgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRy
aWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0
LT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpXTsKKyAgICAKICAgICByZXR1cm4gbmlsOwogfQogCkBA
IC0zMDI1LDYgKzMwNDEsMTIgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5n
KEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SWdub3JlRE9NS2V5RXZlbnRIYW5k
bGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBZRVM7CisgICAgCisgICAgaWYgKG1fb2Jq
ZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4g
WUVTOworICAgIAogICAgIHJldHVybiBOTzsKIH0KIApAQCAtMzM0MSw2ICszMzYzLDE3IEBAIHN0
YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1
ZSkKICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWRSb3dzKTsK
ICAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAgbV9vYmplY3QtPnNldEFSSUFHcmFiYmVk
KFtudW1iZXIgYm9vbFZhbHVlXSk7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgp
ICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJZ25vcmVE
T01LZXlFdmVudEhhbmRsZXJzQXR0cmlidXRlXSkKKyAgICAgICAgbV9vYmplY3QtPnNldElnbm9y
ZURPTUtleUV2ZW50SGFuZGxlcnMoW251bWJlciBib29sVmFsdWVdKTsKKyAgICBlbHNlIGlmICht
X29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKKyAgICAgICAgbV9v
YmplY3QtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKFtudW1iZXIgYm9vbFZhbHVlXSk7Cit9CisK
Ky8vIFVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgc3luY2hyb25vdXNseSBvbiBhY2Nlc3NpYmlsaXR5
IGVsZW1lbnRzIHdpdGhpbiB0ZXN0cy4KKy8vIEZvciB1c2Ugd2l0aCBEdW1wUmVuZGVyVHJlZSBv
bmx5LgorLSAodm9pZClfYWNjZXNzaWJpbGl0eVNldFRlc3RWYWx1ZTooaWQpdmFsdWUgZm9yQXR0
cmlidXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQoreworICAgIFtzZWxmIF9hY2Nlc3NpYmls
aXR5U2V0VmFsdWU6dmFsdWUgZm9yQXR0cmlidXRlOmF0dHJpYnV0ZU5hbWVdOwogfQogCiBzdGF0
aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2aWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCAyZDkyZjgwOGE4YTM3NGQ1ODQwNGNkMDlh
ZDA1ZjRmNzVjY2QyMzVkLi42ZDMzNjAxNDRlM2MwOWQ3MTYwZWI0Mjg1OWFjMGY0NGViZGM4MWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCiAjaW5jbHVkZSAiRXZlbnRDb250ZXh0
LmgiCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNFdmVudC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKQEAg
LTM0OSw3ICszNTAsMTIgQEAgYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9k
ZSogb3JpZ2luLCBQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKICAgICBpZiAoaXM8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpKQogICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
bm9kZSkud2lsbERpc3BhdGNoRXZlbnQoKmV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUpOwogCi0g
ICAgaWYgKCFldmVudC0+cHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50UGF0aC5pc0VtcHR5
KCkpCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1MpCisgICAgYm9vbCBwcmV2
ZW50RE9NRGlzcGF0Y2ggPSBFdmVudEhhbmRsZXI6OmFjY2Vzc2liaWxpdHlXYW50c1RvSGFuZGxl
RXZlbnQoKmV2ZW50LCAqbm9kZSk7CisjZWxzZQorICAgIGJvb2wgcHJldmVudERPTURpc3BhdGNo
ID0gZmFsc2U7CisjZW5kaWYKKyAgICBpZiAoIXByZXZlbnRET01EaXNwYXRjaCAmJiAhZXZlbnQt
PnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVudFBhdGguaXNFbXB0eSgpKQogICAgICAgICBk
aXNwYXRjaEV2ZW50SW5ET00oKmV2ZW50LCBldmVudFBhdGgsIHdpbmRvd0V2ZW50Q29udGV4dCk7
CiAKICAgICBldmVudC0+c2V0VGFyZ2V0KCZldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxl
cygqbm9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE1ZjY4MzE5
MmJjNDIwZWU3NjY1MThiODVkZDllOWY0N2RhN2UwZDcuLmUyYmRjM2MzZGIwN2JlYmIxN2ZhMjg2
OTdmMjMzOWE4OGMwNDEyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAg
LTMyMTMsNiArMzIxMyw0MyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1v
dmVtZW50KEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KKyAgICAKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKElPUykKK2Jvb2wgRXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5V2FudHNUb0hhbmRs
ZUV2ZW50KEV2ZW50JiBldmVudCwgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIUFYT2JqZWN0Q2Fj
aGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9
IGV2ZW50LnR5cGUoKTsKKyAgICBpZiAoZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgJiYgZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBub2RlLmRv
Y3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBub2RlQWNjZXNzaWJpbGl0
eSA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmbm9kZSk7CisgICAgaWYgKCFub2RlQWNjZXNzaWJpbGl0
eSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IG5vZGVB
Y2Nlc3NpYmlsaXR5LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5zZXR0aW5n
cygpLmlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmIChpczxLZXlib2FyZEV2ZW50PihldmVudCkpIHsKKyAgICAgICAgS2V5Ym9h
cmRFdmVudCYga2V5Ym9hcmRFdmVudCA9IGRvd25jYXN0PEtleWJvYXJkRXZlbnQ+KGV2ZW50KTsK
KyAgICAgICAgLy8gVGFiCisgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIo
KSA9PSAiVSswMDA5IikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAvLyBBcnJv
dyBrZXlzCisgICAgICAgIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGZvY3VzRGlyZWN0aW9u
Rm9yS2V5KGtleWJvYXJkRXZlbnQua2V5SWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKGRpcmVj
dGlvbiAhPSBGb2N1c0RpcmVjdGlvbk5vbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCiAKIHZvaWQgRXZlbnRIYW5k
bGVyOjpoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDM3
MjBmNmMxNTMxYTIwYTc1MGRhNjE0NmE0NjM4Y2YyOTQ5ZDdkMjUuLmRmYzhmMTZjYzg5NjExOThi
M2FjOWYxMjk5OGY0MmYyZTcyOTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApA
QCAtMjM5LDYgKzIzOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGtleUV2
ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwogICAgIHZvaWQgZGVmYXVsdEtleWJv
YXJkRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiAhUExBVEZPUk0oSU9TKQorICAgIHN0YXRpYyBib29sIGFjY2Vzc2liaWxpdHlXYW50c1RvSGFu
ZGxlRXZlbnQoRXZlbnQmLCBOb2RlJik7CisjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJk
RXZlbnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0gMCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4
dEV2ZW50SW5wdXRLZXlib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCA4NmRmMTk4
ZGRiMDY5MmI4YWU2Zjk1MGQyYWQxODVhZGI4MjBiOGQ0Li41NTBkMThiYzI4ZjAzMTg5NmM0Zjkx
YzBkOTBiMGI5MTM5M2M1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTQ1LDYgKzQ1
LDcgQEAgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggdHlwZT11bnNpZ25lZCwgaW5pdGlh
bD1kZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET00KIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFn
ZUxvYWRpbmdTZXR0aW5nIGluaXRpYWw9ZmFsc2UKIAogY2FyZXRCcm93c2luZ0VuYWJsZWQgaW5p
dGlhbD1mYWxzZQoraWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyBpbml0aWFsPWZhbHNlCiBsb2Nh
bFN0b3JhZ2VFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzIGluaXRpYWw9dHJ1ZQogYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9
dHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDZiNjBiYTdjOGE0NzZiNmNhZjBmNjNkNDA4ZDJlYWZjZGRkOGE4YzMuLjliZTg0MDRiYjMyZTc5
Y2Y0ZDU4YjBjZWUyYzg5ZWU1NzE3ZDg5NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNS0wMi0yNiAgRG91ZyBS
dXNzZWxsICA8ZF9ydXNzZWxsQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogUHJvdmlkZSBBUEkg
Zm9yIGFzc2lzdGl2ZSB0ZWNoIHRvIGlnbm9yZSBET00ga2V5IGV2ZW50IGhhbmRsZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwNTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoc2V0Qm9vbEF0dHJpYnV0
ZVZhbHVlQ2FsbGJhY2spOgorICAgICAgICAoc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VDYWxsYmFj
ayk6CisgICAgICAgIChyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQ2FsbGJhY2spOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldEJvb2xBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2UpOgorCiAyMDE1LTAyLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVzZSBXRUJDT1JFX0VYUE9SVCBpbnN0ZWFkIG9m
IERlZmluaXRpb24gZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcAppbmRleCBiOTdmN2I2ZjMyMTk4ZGI1OWYzNDQ1NDgxNzgxMGEwZTdlOTFk
NGM0Li5kMmEyNjJlZjBmNDcwNTg0NWNjMzQ0ZGQ1YjZhYjFlNDc1ZmM3MThiIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcApAQCAtNTIzLDYg
KzUyMywyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBib29sQXR0cmlidXRlVmFsdWVDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEJvb2xBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBKU1N0cmluZ1JlZiBhdHRyaWJ1dGUgPSBu
dWxscHRyOworICAgIGJvb2wgdmFsdWUgPSBmYWxzZTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9
PSAyKSB7CisgICAgICAgIGF0dHJpYnV0ZSA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgICAgICB2YWx1ZSA9IEpTVmFsdWVUb0Jvb2xl
YW4oY29udGV4dCwgYXJndW1lbnRzWzFdKTsKKyAgICB9CisgICAgdG9BWEVsZW1lbnQodGhpc09i
amVjdCktPnNldEJvb2xBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBpZiAo
YXR0cmlidXRlKQorICAgICAgICBKU1N0cmluZ1JlbGVhc2UoYXR0cmlidXRlKTsKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IHN0cmluZ0F0dHJpYnV0ZVZhbHVlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewogICAgIEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSA9IDA7CkBAIC03MDMsNiArNzE3LDE3IEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIHRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnRDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2U6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UoY29udGV4dCwgdG9B
WEVsZW1lbnQodGhpc09iamVjdCktPnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodWlFbGVtZW50
KSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlclJhbmdlOjptYWtlSlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKGNv
bnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5zZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgp
KTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpOworICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyUmFuZ2UqIG1hcmtlclJhbmdlID0gMDsKQEAgLTEzNjYsNiArMTM5MSwxMCBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3Ro
ZXJFbGVtZW50KQogfQogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oTUFDKQordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIGJvb2wp
IHsgfQorI2VuZGlmCisKICNpZiAhU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKIAogQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCkBAIC0xMzc4LDYg
KzE0MDcsMTUgQEAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEEKICAgICByZXR1cm4gMDsKIH0KIAor
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpCit7
Cit9CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgo
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopCiB7CiAgICAgcmV0dXJuIDA7CkBAIC0xNjAw
LDYgKzE2MzgsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xh
c3MoKQogICAgICAgICB7ICJ1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSIsIHVpRWxlbWVudEF0dHJp
YnV0ZVZhbHVlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibnVtYmVyQXR0cmlidXRlVmFs
dWUiLCBudW1iZXJBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImJv
b2xBdHRyaWJ1dGVWYWx1ZSIsIGJvb2xBdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgInNldEJvb2xBdHRyaWJ1dGVWYWx1ZSIsIHNldEJvb2xBdHRyaWJ1dGVWYWx1ZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzQXR0cmlidXRlU3VwcG9ydGVkIiwgaXNBdHRy
aWJ1dGVTdXBwb3J0ZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0F0dHJpYnV0ZVNl
dHRhYmxlIiwgaXNBdHRyaWJ1dGVTZXR0YWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQiLCBpc1ByZXNzQWN0aW9uU3VwcG9ydGVkQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKQEAgLTE2MjYsNiArMTY2NSw4IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0SlNDbGFzcygpCiAgICAgICAgIHsgInJlbW92ZVNlbGVjdGlvbiIsIHJlbW92
ZVNlbGVjdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyIiwgbGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXJDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJ0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50IiwgdGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNlbGVjdGVk
VGV4dE1hcmtlclJhbmdlIiwgc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIiwgcmVzZXRTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZSIsIGF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgImluZGV4Rm9yVGV4dE1hcmtlciIsIGluZGV4Rm9yVGV4dE1hcmtlckNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImlzVGV4dE1hcmtlclZhbGlkIiwgaXNUZXh0TWFya2VyVmFs
aWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LApAQCAtMTY1OSw3ICsxNzAwLDYgQEAgSlNDbGFzc1JlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRKU0NsYXNzKCkKICAgICAgICAgeyAiaW5jcmVhc2VUZXh0
U2VsZWN0aW9uIiwgaW5jcmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiZGVjcmVhc2VUZXh0U2VsZWN0aW9uIiwgZGVjcmVhc2VUZXh0U2VsZWN0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiYXNzaXN0aXZlVGVjaG5vbG9neVNpbXVsYXRlZEZvY3Vz
IiwgYXNzaXN0aXZlVGVjaG5vbG9neVNpbXVsYXRlZEZvY3VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAg
ICAgICAgCiAjZW5kaWYKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IDI4YTZkMTM0ZTczNzk4
ZGRiZmVkMGVlYTgyZGVjZWYzZjM5ZDFkNWIuLmExNTAxOWNmYTQ0OGM2YWMxNjYzNTFlY2IzM2M4
NDM3ZTY3ZTZhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1aUVsZW1lbnRB
cnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9yPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+JiBlbGVtZW50cykgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCB1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0
OyAgICAKICAgICBib29sIGJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUp
OworICAgIHZvaWQgc2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwg
Ym9vbCB2YWx1ZSk7CiAgICAgYm9vbCBpc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpOwogICAgIGJvb2wgaXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpOwogICAgIGJvb2wgaXNQcmVzc0FjdGlvblN1cHBvcnRlZCgpOwpAQCAtMjUxLDYgKzI1
Miw4IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOwogICAgIEFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0VGV4dE1hcmtlcigpOwogICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyIGVuZFRleHRNYXJrZXIoKTsKKyAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCk7CisgICAgdm9pZCByZXNldFNlbGVjdGVkVGV4
dE1hcmtlclJhbmdlKCk7CiAgICAgCiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgdGV4dE1hcmtl
clJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggZTczYWJlODkyYzNhYTdkMzNlNWM2MjBlM2U1YjY2MjBjOWJhYmU3ZS4uNDY3M2ExZDJmY2Fk
NGUzNGVkMDk1ZDQ4OTA2YTNjYWZkNDAxMWRkZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTY1LDEyICs2NSwx
NyBAQAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdGFydFRleHRNYXJrZXJGb3JCb3VuZHNQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIEAiQVhTdGFydFRleHRNYXJrZXJGb3JCb3VuZHMiCiAjZW5kaWYK
IAorI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0
ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0
ZSBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiCisjZW5kaWYKKwogdHlwZWRlZiB2b2lkICgq
QVhQb3N0ZWROb3RpZmljYXRpb25DYWxsYmFjaykoaWQgZWxlbWVudCwgTlNTdHJpbmcqIG5vdGlm
aWNhdGlvbiwgdm9pZCogY29udGV4dCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYktpdEFj
Y2Vzc2liaWxpdHlBZGRpdGlvbnMpCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRl
eCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKIC0gKE5TVUludGVnZXIpYWNjZXNzaWJp
bGl0eUluZGV4T2ZDaGlsZDooaWQpY2hpbGQ7CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlB
cnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAqKWF0dHJpYnV0ZTsKKy0gKHZvaWQpX2FjY2Vz
c2liaWxpdHlTZXRUZXN0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcqKWF0
dHJpYnV0ZU5hbWU7CiBAZW5kCiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKQEAgLTU3OCw2ICs1ODMsMTMg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
LCBib29sIHZhbHVlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIFttX2Vs
ZW1lbnQgX2FjY2Vzc2liaWxpdHlTZXRUZXN0VmFsdWU6QCh2YWx1ZSkgZm9yQXR0cmlidXRlOltO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07CisgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmli
dXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwpAQCAtMTU2MCw2ICsxNTcyLDMyIEBAIEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
UmFuZ2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChB
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQoreworICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
VGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKK3sKKyAgICBpZCBzdGFydCA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIi
XTsKKyAgICBpZiAoIXN0YXJ0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNBcnJheSog
dGV4dE1hcmtlcnMgPSBAW3N0YXJ0LCBzdGFydF07CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5n
ZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOworICAg
IGlmICghdGV4dE1hcmtlclJhbmdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCisgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eVNldFRlc3RW
YWx1ZTp0ZXh0TWFya2VyUmFuZ2UgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
VGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9
CisKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAppbmRleCAzZmM3MTM3MTA2
OWRlNzE0NjliZGIwYWQzNTkzZTJjMTE5NWMyYWE0Li4wMjhiYzAyNWMwMjI1ODY0NzQ1MmE1YzVh
NWZhZTVjMzA4MjllYjQxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKQEAgLTIx
MSw1ICsyMTEsMTEgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXIKIAogI2VuZGlmCiAKKyNpZiAh
UExBVEZPUk0oTUFDKSB8fCAhSEFWRShBQ0NFU1NJQklMSVRZKQorUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRl
eHRNYXJrZXJSYW5nZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSgpIHsgfQordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIGJvb2wp
IHsgfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCmluZGV4IDVhYWY1ZGJlZTg4ZWVmMzJmZjQzODQwYjJhMzFmZmU2NTQxMmVkNTAuLjZl
MGY3YmIxYzg3MWU1NzY0MmU1YTE1ZDVlNzhlZTE3OWQyOTUyM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIEpTVmFsdWVSZWYg
dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0
OwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gdWlFbGVtZW50QXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdDsKICAgICBib29sIGJvb2xBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOworICAgIHZvaWQgc2V0Qm9vbEF0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgYm9vbCB2YWx1ZSk7CiAgICAgYm9vbCBp
c0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGJvb2wgaXNB
dHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpOwogICAgIGJvb2wgaXNQcmVz
c0FjdGlvblN1cHBvcnRlZCgpOwpAQCAtMjI5LDYgKzIzMCw4IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IGxpbmVUZXh0TWFya2VyUmFuZ2VG
b3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CiAgICAgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqKTsgICAgCiAgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlclJhbmdlPiB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBzdGFydE1hcmtlciwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIGVuZE1hcmtl
cik7CisgICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBzZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZSgpOworICAgIHZvaWQgcmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSgpOwogICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IHN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAg
ICAgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gZW5kVGV4dE1hcmtlckZvckJvdW5kcyhpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAppbmRleCBkMGJiMzU2MzY0Mzg5ZGE2NTk4OGM0OGM3
OGNhMWY2MDA4YjFjYWRiLi44ZjUxYmE2MjNjMmFkMDhhYzU3YWVkMTY3MGJmOGIxMDI4YTZkYmYw
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwKQEAg
LTYyLDYgKzYyLDcgQEAgaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgewogICAgIG9i
amVjdCB1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsKICAgICBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50IHVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBh
dHRyKTsgIAogICAgIGJvb2xlYW4gYm9vbEF0dHJpYnV0ZVZhbHVlKERPTVN0cmluZyBhdHRyKTsK
KyAgICB2b2lkIHNldEJvb2xBdHRyaWJ1dGVWYWx1ZShET01TdHJpbmcgYXR0ciwgYm9vbGVhbiB2
YWx1ZSk7CiAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVN1cHBvcnRlZChET01TdHJpbmcgYXR0cik7
CiAgICAgYm9vbGVhbiBpc0F0dHJpYnV0ZVNldHRhYmxlKERPTVN0cmluZyBhdHRyKTsKICAgICBi
b29sZWFuIGlzUHJlc3NBY3Rpb25TdXBwb3J0ZWQoKTsKQEAgLTE3NCw2ICsxNzUsOCBAQCBpbnRl
cmZhY2UgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCB7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSBsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciB0ZXh0TWFya2VyKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBlbGVtZW50KTsg
ICAgCiAgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBlbmRNYXJrZXIpOworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Ug
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICB2b2lkIHJlc2V0U2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UoKTsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBzdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7CiAg
ICAgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlIHJhbmdlKTsKICAgICBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlciBlbmRUZXh0TWFya2VyRm9yQm91bmRzKGludCB4LCBpbnQgeSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKQEAgLTIwMSw2ICsyMDQsNSBAQCBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCB7CiAgICAgLy8gTm90aWZpY2F0aW9uIHN1cHBvcnQuCiAgICAgYm9vbGVhbiBh
ZGROb3RpZmljYXRpb25MaXN0ZW5lcihvYmplY3QgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgYm9v
bGVhbiByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOwotICAgIAogfTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZmQ1MjM3N2I4ZTQzZjk3MTAx
OWNlNmUzMjYzMGNiMzllNDgxZjdlOS4uZWQwMmZiNzdlZGNjZjdhNGQ0N2JmMTk4YTExNjdiM2Qy
ZWYwOTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBA
IC02OSwxMiArNjksMTcgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U3RhcnRUZXh0TWFya2Vy
Rm9yQm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYU3RhcnRUZXh0TWFya2VyRm9yQm91
bmRzIgogI2VuZGlmCiAKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2VBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2VBdHRyaWJ1dGUgQCJBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIgorI2VuZGlmCisKIHR5
cGVkZWYgdm9pZCAoKkFYUG9zdGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spKGlkIGVsZW1lbnQsIE5T
U3RyaW5nKiBub3RpZmljYXRpb24sIHZvaWQqIGNvbnRleHQpOwogCiBAaW50ZXJmYWNlIE5TT2Jq
ZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QWRkaXRpb25zKQogLSAoTlNBcnJheSAqKWFjY2Vzc2li
aWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5T
VUludGVnZXIpaW5kZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CiAtIChOU1VJbnRl
Z2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkOwogLSAoTlNVSW50ZWdlcilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGU7Cist
ICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2V0VGVzdFZhbHVlOihpZCl2YWx1ZSBmb3JBdHRyaWJ1dGU6
KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lOwogQGVuZAogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTYy
Myw2ICs2MjgsMTMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRCb29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlLCBib29sIHZhbHVlKQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UworICAgIFttX2VsZW1lbnQgX2FjY2Vzc2liaWxpdHlTZXRUZXN0VmFsdWU6QCh2YWx1ZSkgZm9y
QXR0cmlidXRlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXV07Cisg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTYyMyw2ICsxNjM1LDMyIEBAIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4
dE1hcmtlclJhbmdlCiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CisgICAgCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0
ZV07CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0
TWFya2VyUmFuZ2UpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKCkKK3sKKyAgICBpZCBzdGFydCA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKKyAgICBpZiAoIXN0
YXJ0KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgTlNBcnJheSogdGV4dE1hcmtlcnMgPSBA
W3N0YXJ0LCBzdGFydF07CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRl
eHRNYXJrZXJzIiBmb3JQYXJhbWV0ZXI6dGV4dE1hcmtlcnNdOworICAgIGlmICghdGV4dE1hcmtl
clJhbmdlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCisgICAgW21fZWxlbWVudCBfYWNjZXNzaWJpbGl0eVNldFRlc3RWYWx1ZTp0ZXh0TWFya2Vy
UmFuZ2UgZm9yQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
QXR0cmlidXRlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCit9CiAKIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBy
YW5nZSkKIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlNWEwOGJiNTUxN2JhY2U3ZjRjYzVmZGIwOTY4ZGE0YzdkY2I3YzA0
Li4xYTk5YTI0YmFmYzFjZTIwYzM1OGI2MDY4YTQzZGFmMmVmZDQxMjUwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTUtMDItMjYgIERvdWcgUnVzc2VsbCAgPGRfcnVzc2VsbEBhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IFByb3ZpZGUgQVBJIGZvciBhc3Npc3RpdmUgdGVjaCB0byBpZ25vcmUg
RE9NIGtleSBldmVudCBoYW5kbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWFy
cm93LW5hdi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWFycm93LW5hdi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy1hdHRyaWJ1dGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9j
YXJldC1icm93c2luZy1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGFiLXNlbGVjdGlvbi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJy
b3dzaW5nLXRhYi1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxl
cnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxw
ZXIuanM6IEFkZGVkLgorICAgICAgICAoY2xlYXJTZWxlY3Rpb25BbmRGb2N1c09uV2ViQXJlYSk6
CisgICAgICAgIChlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Up
OgorICAgICAgICAoY2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoc2V0Q2FyZXRCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAoaWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyk6CisgICAg
ICAgIChzZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKToKKwogMjAxNS0wMi0yNSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBjc3Mz
L2ZsZXhib3gvY3Nzd2cvZmxleGJveF9kaXJlY3Rpb24tcm93LXJldmVyc2UuaHRtbCBhZnRlciBy
MTc3Nzc0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxl
dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRl
LWV4cGVjdGVkLnR4dAppbmRleCA2OTQxZDdiNDkzOWI4ZTJkOGE5NDY3M2YxZTVjMjI4NGIxMTUy
YmQxLi4zZjUzODE5M2U1YzNlODBjMzBiMDRkYjhmMDIyZmJmMWZlOTExZmFhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQK
QEAgLTI3LDUgKzI3LDcgQEAgQVhMb2FkZWQ6IDEKIEFYTGF5b3V0Q291bnQ6IDIKIEFYTG9hZGlu
Z1Byb2dyZXNzOiAxCiBBWFVSTDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVs
ZXRlLmh0bWwKK0FYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKK0FYSWdub3JlRE9NS2V5RXZlbnRI
YW5kbGVyczogMAogQVhFbGVtZW50QnVzeTogMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9jYXJldC1icm93c2luZy1hcnJvdy1uYXYtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJv
d3NpbmctYXJyb3ctbmF2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjUwMTE5OGI1Nzc4OWNi
NTRlNWJlZDg2OTJlOGQ0M2E1NWUzZTdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctYXJyb3ctbmF2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitGb28KK0JhcgorQmF6CitUaGlzIHRlc3RzIGNhcmV0
IGJyb3dzaW5nIHdoZW4gYSBrZXlkb3duIGhhbmRsZXIgbW92ZXMgZm9jdXMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdlYkFyZWEucm9sZSBpcyAnQVhSb2xlOiBBWFdl
YkFyZWEnCitQQVNTIGNhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEpIGlzIGZhbHNlCitQQVNT
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQgaXMg
dHJ1ZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uo
d2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZvbycKK1BBU1MgZWxlbWVudEF0U3Rh
cnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiBCYXInCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogQmF6JworUEFTUyBl
bGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZvbycKK1BBU1MgY2FyZXRCcm93c2luZ0VuYWJsZWQod2Vi
QXJlYSkgaXMgdHJ1ZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZvbycKK1BBU1MgZWxl
bWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmlu
Z1ZhbHVlIGlzICdBWFZhbHVlOiBGb28nCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogRm9v
JworUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2Vi
QXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEJhcicKK1BBU1MgZWxlbWVudEF0U3RhcnRN
YXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdB
WFZhbHVlOiBGb28nCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogQmFyJworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWFycm93
LW5hdi5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQt
YnJvd3NpbmctYXJyb3ctbmF2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzViNzI3OTJlMmU2NDNkZjU4NGQy
YWI4NzExN2M0YTRkMzRlZjg4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWFycm93LW5hdi5odG1sCkBAIC0w
LDAgKzEsODQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSIg
b25rZXlkb3duPSJrZXlkb3duKGV2ZW50KSI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rp
b24ga2V5ZG93bihldmVudCkgeworICAgICAgICAgICAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGU7
CisgICAgICAgICAgICB2YXIgY3VycmVudElkID0gcGFyc2VJbnQoZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5pZCk7CisgICAgICAgICAgICBpZiAoaXNOYU4oY3VycmVudElkKSkgeyBjdXJyZW50SWQg
PSAwOyB9CisgICAgICAgICAgICBpZiAoa2V5ID09IDM5KSB7IGN1cnJlbnRJZCsrOyB9CisgICAg
ICAgICAgICBpZiAoY3VycmVudElkIDwgMSkgeyBjdXJyZW50SWQgPSAzOyB9IAorICAgICAgICAg
ICAgZWxzZSBpZiAoY3VycmVudElkID4gMykgeyBjdXJyZW50SWQgPSAxOyB9CisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjdXJyZW50SWQpLmZvY3VzKCk7CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKyAgICA8ZGl2PgorICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+
PGEgaWQ9IjEiIGhyZWY9IiI+Rm9vPC9hPjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaWQ9IjIi
IGhyZWY9IiI+QmFyPC9hPjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaWQ9IjMiIGhyZWY9IiI+
QmF6PC9hPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBj
YXJldCBicm93c2luZyB3aGVuIGEga2V5ZG93biBoYW5kbGVyIG1vdmVzIGZvY3VzLiIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgJiYgd2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisKKyAgICAgICAgICAgIHZhciB3ZWJBcmVhID0gY2xlYXJTZWxl
Y3Rpb25BbmRGb2N1c09uV2ViQXJlYSgpOworCisgICAgICAgICAgICAvLyBFbmFibGUgZW5oYW5j
ZWQgYWNjZXNzaWJpbGl0eSAobmVjZXNzYXJ5IGZvciBhY2Nlc3NpYmlsaXR5IHNwZWNpZmljIHNl
bGVjdGlvbiBoYW5kbGluZykuCisgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5l
bmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgi
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCIsICJ0
cnVlIik7CisKKyAgICAgICAgICAgIC8vIEZvY3VzIGludG8gZmlyc3QgbGluaworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVh
KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRm9vJyIpOworCisgICAgICAgICAgICAvLyBOYXZp
Z2F0aW5nIHdpdGggYXJyb3dzLCB3aXRob3V0IGNhcmV0IGJyb3dzaW5nLCB3aWxsIHB1bGwgc2Vs
ZWN0aW9uIGludG8gdGhlIGRpZmZlcmVudCBsaW5rcworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
a2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0
YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogQmFyJyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmln
aHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
QmF6JyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRm9vJyIpOworCisg
ICAgICAgICAgICAvLyBEbyBpdCBhZ2FpbiB3aXRoIGNhcmV0IGJyb3dzaW5nIG9uCisgICAgICAg
ICAgICBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhLCB0cnVlKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSIsICJ0cnVlIik7CisKKyAg
ICAgICAgICAgIC8vIEFycm93IHRvIHRoZSBzdGFydCBvZiBGb28KKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oImxlZnRBcnJvdyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigibGVmdEFycm93Iik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJsZWZ0
QXJyb3ciKTsKKworICAgICAgICAgICAgLy8gTmF2aWdhdGluZyB3aXRoIGFycm93cywgd2l0aCBj
YXJldCBicm93c2luZywgd2lsbCBtb3ZlIHRoZSBjYXJldCB0aHJvdWdoIHRoZSBjaGFyYWN0ZXJz
IG9mIHRoZSBlbGVtZW50IGJlZm9yZSBtb3ZpbmcgdG8gdGhlIG5leHQgZWxlbWVudAorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJB
cmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRm9vJyIpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1l
bnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogRm9vJyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93
bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFy
a2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhW
YWx1ZTogRm9vJyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJv
dyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogQmFyJyIp
OworCisgICAgICAgICAgICAvLyBVcCAmIGRvd24gYXJyb3dzIHNob3VsZCBtb3ZlIHRocm91Z2gg
dGhlIGxpc3QgaXRlbXMKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInVwQXJyb3ci
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZvbyciKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImRvd25BcnJvdyIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogQmFyJyIpOworCisgICAgICAgICAg
ICBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhLCBmYWxzZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctYXR0
cmlidXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2NhcmV0LWJyb3dzaW5nLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ3
ZTVhZDU5MWQxNmMwOWNlZmYzZGJiNGJhOWU1NmU0ZjdjZGRhOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWF0
dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0cyBzZXR0aW5n
IGNhcmV0IGJyb3dzaW5nIHByZWZlcmVuY2UgdmlhIGF4IGFwaS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgY2FyZXRCcm93c2luZ0VuYWJsZWQod2ViQXJlYSkgaXMgdHJ1
ZQorUEFTUyBjYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWF0dHJp
YnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQt
YnJvd3NpbmctYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzAxMTBjNDM4YzUxN2UyYmVkZTQ5
OTk3YjNkOWExN2JlZTY2NWFhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLWF0dHJpYnV0ZS5odG1sCkBAIC0w
LDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgc2V0dGluZyBjYXJldCBicm93c2lu
ZyBwcmVmZXJlbmNlIHZpYSBheCBhcGkuIik7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwor
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisKKyAgICB2YXIgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKworICAgIHNldENhcmV0QnJvd3NpbmdFbmFi
bGVkKHdlYkFyZWEsIHRydWUpOworICAgIHNob3VsZEJlKCJjYXJldEJyb3dzaW5nRW5hYmxlZCh3
ZWJBcmVhKSIsICJ0cnVlIik7CisKKyAgICBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVh
LCBmYWxzZSk7CisgICAgc2hvdWxkQmUoImNhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEpIiwg
ImZhbHNlIik7CisgIH0KK30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRhYi1zZWxlY3Rpb24tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3Npbmct
dGFiLXNlbGVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEzYjdkOWMxODg0MjQwN2M4
MDMzZDE5M2Y2Mzc0NDZhNzFkMzQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRhYi1zZWxlY3Rpb24tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK2ZvbworQSBwYXJhZ3JhcGggd2l0aCBhIHNpbmds
ZSBsaW5lCisKK2JhcgorVGhpcyB0ZXN0cyBjYXJldCBicm93c2luZyBmb3IgaHRtbCBzZWxlY3Qg
ZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdlYkFyZWEu
cm9sZSBpcyAnQVhSb2xlOiBBWFdlYkFyZWEnCitQQVNTIGNhcmV0QnJvd3NpbmdFbmFibGVkKHdl
YkFyZWEpIGlzIGZhbHNlCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogZm9vJworUEFTUyBl
bGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IGZvbycKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCBpcyB0cnVlCitQQVNTIGNhcmV0QnJvd3NpbmdF
bmFibGVkKHdlYkFyZWEpIGlzIHRydWUKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBmb28n
CitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJB
cmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogYmFyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5nLXRhYi1zZWxlY3Rpb24uaHRt
bCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NhcmV0LWJyb3dzaW5n
LXRhYi1zZWxlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzU4YmY4NGIzNDdiYzdmMTkyMzUyZDAy
ZDc5NjA1ODlmMzNlYzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvY2FyZXQtYnJvd3NpbmctdGFiLXNlbGVjdGlvbi5odG1sCkBAIC0w
LDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
CisgICAgPGEgaHJlZj0iIj5mb288L2E+CisgICAgPHAgaWQ9InBhcjEiPkEgcGFyYWdyYXBoIHdp
dGggYSBzaW5nbGUgbGluZTwvcD4KKyAgICA8YSBocmVmPSIiPmJhcjwvYT4KKyAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIGNhcmV0IGJyb3dzaW5nIGZvciBodG1sIHNlbGVjdCBlbGVtZW50cy4iKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKworICAgICAgICAgICAgdmFyIHdlYkFy
ZWEgPSBjbGVhclNlbGVjdGlvbkFuZEZvY3VzT25XZWJBcmVhKCk7CisKKyAgICAgICAgICAgIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eShmYWxzZSk7
CisKKyAgICAgICAgICAgIC8vIFRhYiAoc2hvdWxkIE5PVCBtb3ZlIHNlbGVjdGlvbiBiZWZvcmUg
ZW5oYW5jZWQgYWNjZXNzaWJpbGl0eSBpcyBlbmFibGVkKS4KKyAgICAgICAgICAgIHNob3VsZEJl
KCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IGZvbyciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmtleURvd24oIlx0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJr
ZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBmb28nIik7CisKKyAgICAgICAgICAgIC8vIEVuYWJsZSBlbmhhbmNlZCBhY2Nlc3NpYmls
aXR5IChuZWNlc3NhcnkgZm9yIGFjY2Vzc2liaWxpdHkgc3BlY2lmaWMgc2VsZWN0aW9uIGhhbmRs
aW5nKS4KKyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2Vk
QWNjZXNzaWJpbGl0eSh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIiwgInRydWUiKTsKKworICAg
ICAgICAgICAgLy8gRW5hYmxlIGNhcmV0IGJyb3dzaW5nIHNvIHRoYXQgdGFiYmluZyB3aWxsIG1v
ZGlmeSBzZWxlY3Rpb24KKyAgICAgICAgICAgIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFy
ZWEsIHRydWUpOworICAgICAgICAgICAgc2hvdWxkQmUoImNhcmV0QnJvd3NpbmdFbmFibGVkKHdl
YkFyZWEpIiwgInRydWUiKTsKKworICAgICAgICAgICAgLy8gVGFiIHRvIG1vdmUgZm9jdXMgdG8g
bmV4dCBsaW5rCisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBm
b28nIik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcdCIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogYmFyJyIpOworCisgICAgICAgICAg
ICBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhLCBmYWxzZSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9k
b2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCA2ZTFjNDQ0YzM5ZDk2OTJhNDM4
MzNhYTQ3MThmOThiM2RmNGQ2ZWVlLi5lOGI0YzU1YzY1ZWEzZWI3OWQwZTg2ZWZkYzE1NGMxZWJm
NTczOWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApA
QCAtMjYsNiArMjYsOCBAQCBBWExvYWRlZDogMQogQVhMYXlvdXRDb3VudDogMgogQVhMb2FkaW5n
UHJvZ3Jlc3M6IDEKIEFYVVJMOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKK0FYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKK0FY
SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyczogMAogQVhFbGVtZW50QnVzeTogMAogCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1kb20t
a2V5LWV2ZW50LWhhbmRsZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1kb20ta2V5LWV2ZW50LWhhbmRsZXJzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NGRhMTQyYTFjNTExNDNiY2M3YmVlNzk5ZWE4YjllN2UwMGUyNjU4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
aWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkg
QEAKKzEKKworMgorCisyCisKK1RoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFu
ZGxlcnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHdlYkFyZWEucm9sZSBpcyAnQVhSb2xlOiBBWFdlYkFyZWEnCitQQVNTIGNh
cmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEpIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQgaXMgZmFsc2UKK1BBU1MgaWdu
b3JlRE9NS2V5RXZlbnRIYW5kbGVycyh3ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBlbGVtZW50QXRT
dGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxl
bWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmlu
Z1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBrZXljb3VudCgpIGlzICcyJworUEFTUyBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIGlzIHRydWUK
K1BBU1MgaWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyh3ZWJBcmVhKSBpcyB0cnVlCitQQVNTIGVs
ZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJwor
UEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJl
YSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDInCitQQVNTIGtleWNvdW50KCkgaXMgJzInCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1r
ZXktZXZlbnQtaGFuZGxlcnMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2lnbm9yZS1kb20ta2V5LWV2ZW50LWhhbmRsZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFl
MTVmODJjYjI0MTNiZmY0OTYwYTEyNDEzM2Y5ZmU1NzdlNTI3ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lnbm9yZS1kb20ta2V5LWV2
ZW50LWhhbmRsZXJzLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzwhLS0gYWRkIGEga2V5ZG93biBoYW5kbGVyIHRoYXQgaWdub3JlcyBhbGwga2V5IGV2
ZW50cy0tPgorPGJvZHkgaWQ9ImJvZHkiIG9ua2V5ZG93bj0icmV0dXJuIGtleWRvd24oKTsiPgor
ICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24ga2V5ZG93bihldmVudCkgeworICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZXlkb3duY291bnQiKTsKKyAgICAg
ICAgZWxlbWVudC5pbm5lckhUTUwgPSBwYXJzZUludChlbGVtZW50LmlubmVySFRNTCkgKyAxOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZ1bmN0aW9uIGtleWNvdW50KCkgewor
ICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtleWRvd25jb3VudCIpLmlu
bmVySFRNTDsKKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPGRpdj4KKyAgICAgICAgPHA+MTwv
cD4KKyAgICAgICAgPHA+MjwvcD4KKyAgICAgICAgPHAgaWQ9ImtleWRvd25jb3VudCI+MDxwPgor
ICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+Cisg
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFuZGxl
cnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMuIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKwor
ICAgICAgICAgICAgdmFyIHdlYkFyZWEgPSBjbGVhclNlbGVjdGlvbkFuZEZvY3VzT25XZWJBcmVh
KCk7CisgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFj
Y2Vzc2liaWxpdHkoZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQiLCAiZmFsc2UiKTsKKyAgICAg
ICAgICAgIHNldElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSwgZmFsc2UpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSkiLCAi
ZmFsc2UiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQXJyb3dpbmcgYmVmb3JlIGVu
YWJsaW5nIEFYIGFuZCBpZ25vcmUgZG9tIGhhbmRsZXJzIHdvbid0IG1vdmUgdGhlIGNhcmV0Cisg
ICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJB
cmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50
QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgdGhlIGhhbmRsZXIgcmVjZWl2ZWQgMiBrZXlzIGV2ZW50cworICAgICAgICAgICAg
c2hvdWxkQmUoImtleWNvdW50KCkiLCAiJzInIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIEVuYWJsZSBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5IChuZWNlc3NhcnkgZm9yIGFjY2Vzc2li
aWxpdHkgc3BlY2lmaWMgc2VsZWN0aW9uIGhhbmRsaW5nKS4KKyAgICAgICAgICAgIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0cnVlKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2li
aWxpdHlFbmFibGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRW5h
YmxlIElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMgc28gdGhhdCB0aGUgamF2YXNjcmlwdCBoYW5k
bGVyIHdpbGwgYmUgc2tpcHBlZAorICAgICAgICAgICAgc2V0SWdub3JlRE9NS2V5RXZlbnRIYW5k
bGVycyh3ZWJBcmVhLCB0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJpZ25vcmVET01LZXlF
dmVudEhhbmRsZXJzKHdlYkFyZWEpIiwgInRydWUiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUo
ImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtl
eURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFy
dE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFy
cm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAyJyIp
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBoYW5kbGVy
IGRpZG4ndCByZWNlaXZlIGFueSBtb3JlIGtleSBldmVudHMKKyAgICAgICAgICAgIHNob3VsZEJl
KCJrZXljb3VudCgpIiwgIicyJyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzZXRJZ25v
cmVET01LZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yZXNv
dXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWI4YTNhYzFiYmViNjdh
MjUzOTRiZjA4YjEzNzliOWQ1Y2U2OTkzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcwpAQCAtMCwwICsxLDMxIEBACitmdW5jdGlvbiBjbGVhclNlbGVjdGlvbkFuZEZvY3VzT25X
ZWJBcmVhKCkgeworICAgIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxl
bWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAgd2ViQXJlYS5yZXNldFNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlKCk7CisgICAgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQod2ViQXJlYSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKCJ3ZWJBcmVhLnJvbGUiLCAiJ0FYUm9sZTogQVhXZWJBcmVhJyIpOworICAg
IHNob3VsZEJlKCJjYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSIsICJmYWxzZSIpOworICAg
IHJldHVybiB3ZWJBcmVhOworfQorCitmdW5jdGlvbiBlbGVtZW50QXRTdGFydE1hcmtlck9mU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkgeworICAgIHZhciByYW5nZSA9IHdlYkFyZWEu
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKTsKKyAgICB2YXIgc3RhcnQgPSB3ZWJBcmVhLnN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgdmFyIGVsZW1lbnQgPSB3
ZWJBcmVhLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCk7CisgICAgcmV0
dXJuIGVsZW1lbnQ7Cit9CisKK2Z1bmN0aW9uIGNhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEp
IHsKKyAgICByZXR1cm4gd2ViQXJlYS5ib29sQXR0cmlidXRlVmFsdWUoIkFYQ2FyZXRCcm93c2lu
Z0VuYWJsZWQiKTsKK30KKworZnVuY3Rpb24gc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQod2ViQXJl
YSwgdmFsdWUpIHsKKyAgICB3ZWJBcmVhLnNldEJvb2xBdHRyaWJ1dGVWYWx1ZSgiQVhDYXJldEJy
b3dzaW5nRW5hYmxlZCIsIHZhbHVlKTsKK30KKworZnVuY3Rpb24gaWdub3JlRE9NS2V5RXZlbnRI
YW5kbGVycyh3ZWJBcmVhKSB7CisgICAgcmV0dXJuIHdlYkFyZWEuYm9vbEF0dHJpYnV0ZVZhbHVl
KCJBWElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMiKTsKK30KKworZnVuY3Rpb24gc2V0SWdub3Jl
RE9NS2V5RXZlbnRIYW5kbGVycyh3ZWJBcmVhLCB2YWx1ZSkgeworICAgIHdlYkFyZWEuc2V0Qm9v
bEF0dHJpYnV0ZVZhbHVlKCJBWElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMiLCB2YWx1ZSk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247479</attachid>
            <date>2015-02-26 18:06:44 -0800</date>
            <delta_ts>2015-03-01 14:20:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142059-20150226180630.patch</filename>
            <type>text/plain</type>
            <size>19959</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVmYjA3MGZhMTVlYjBk
OTg1YjljZjI4Mzk5YTQwY2NiZjQ4YjNlMy4uY2NkOWI1YzFjNzQ2MjVhZGNiODU2OTFlMDkwM2U0
Njk3NDZlMWE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0IEBACiAyMDE1LTAyLTI2ICBEb3Vn
IFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgogCisgICAgICAgIEFYOiBQcm92aWRlIEFQ
SSBmb3IgYXNzaXN0aXZlIHRlY2ggdG8gaWdub3JlIERPTSBrZXkgZXZlbnQgaGFuZGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2lzdGl2ZSB0
ZWNobm9sb2d5IGFwcGxpY2F0aW9ucyBvbiB0aGUgZGVza3RvcCBhcmUgaGVhdmlseSBkZXBlbmRl
bnQgb24ga2V5Ym9hcmQgbmF2aWdhdGlvbiBiZWluZyByZWxpYWJsZS4gVGhpcyBpcyBncmVhdGx5
IGhpbmRlcmVkIGJ5IHNpdGVzIHRoYXQgaGFuZGxlIGtleSBldmVudHMgd2l0aG91dCB1cGRhdGlu
ZyBrZXlib2FyZCBzZWxlY3Rpb24gYW5kIHRoZW4gY29uc3VtZSB0aGUgZXZlbnQuIEl0IGlzIGlt
cG9ydGFudCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYXBwcyB0byBhbGxvdyB1c2VycyB0byBk
ZWNpZGUgdG8gaWdub3JlIHRoZXNlIGhhbmRsZXJzIHRoYXQgYXJlIGluY29ycmVjdCBmb3IgdGhl
aXIgcHVycG9zZXMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgZXhwb3NpbmcsIHZp
YSBhIG5ldyBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZSwgYSB3YXkgdG8gZGVjaWRlLCBmb3IgYSBn
aXZlbiBXZWJDb3JlOjpGcmFtZSwgdG8gcHJlLWVtcHQgRE9NIGRpc3BhdGNoIGFuZCBpbnN0ZWFk
IGxldCBhY2Nlc3NpYmlsaXR5IGNhcmV0IGJyb3dzaW5nIHRha2UgcGxhY2UuCisKKyAgICAgICAg
VGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFu
ZGxlcnMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlnbm9yZURPTUtleUV2
ZW50SGFuZGxlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBfYWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpd
KToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5
V2FudHNUb0hhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46CisKKzIwMTUtMDItMjYgIERvdWcgUnVzc2VsbCAgPGRf
cnVzc2VsbEBhcHBsZS5jb20+CisKICAgICAgICAgQVg6IEV4cG9zZSBjYXJldCBicm93c2luZyBw
cmVmZXJlbmNlIHRvIGFjY2Vzc2liaWxpdHkgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE4NjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAxNzZmYWRlMzFjNDQ5ZThh
MWI2N2E3ZTc4YzBiZTgzZDA4MjU2NzdlLi4yYzhiZmJlNzE0NTJjOGFiZGY4ZTcxMzAzMGY4MDBj
YjE4MTJlZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaApAQCAtOTc5LDYgKzk3OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZP
Uk0oSU9TKQorICAgIGJvb2wgaWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycygpIGNvbnN0OworICAg
IHZvaWQgc2V0SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyhib29sKTsKKyAgICAKICAgICBib29s
IGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5n
RW5hYmxlZChib29sKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KaW5kZXggNGRkYWFmYzQ4
NTgzODk3YjlhZWJkOTFjODAzNTg0YTMwMWU3N2UzOC4uNWQwNjM5NGI3MzE5MjkyMWNlNmY3MWY3
ZTcwOWE3YTYxOTA3MTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCkBAIC0xMDcsNiArMTA3LDIw
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNj
ZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPCiAgICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsK
IH0KICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aWdub3JlRE9NS2V5RXZlbnRIYW5k
bGVycygpIGNvbnN0Cit7CisgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICBy
ZXR1cm4gZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCkuaWdub3JlRE9NS2V5RXZlbnRIYW5kbGVy
cygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElnbm9yZURPTUtleUV2ZW50
SGFuZGxlcnMoYm9vbCBvbikKK3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwor
ICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+c2V0dGluZ3MoKS5z
ZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKG9uKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggNzQzMjRmMDA3ODY0ZTM0Nzg2MjIzMDNjZDZlN2U0NzhjZTc3ZWIwMy4uNTU1NTY0MTRk
NWVhNDNiODY5MGFiODg4YzMzMTY4NGZmMjhlOGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KQEAgLTQ2NCw2ICs0NjQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aFByZXNjcmlwdHNBdHRyaWJ1dGUg
QCJBWE1hdGhQcmVzY3JpcHRzIgogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUG9zdHNjcmlw
dHNBdHRyaWJ1dGUgQCJBWE1hdGhQb3N0c2NyaXB0cyIKIAorI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnNBdHRyaWJ1dGUgQCJBWElnbm9yZURPTUtleUV2
ZW50SGFuZGxlcnMiCisjZW5kaWYKKwogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dz
aW5nRW5hYmxlZEF0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5n
RW5hYmxlZEF0dHJpYnV0ZSBAIkFYQ2FyZXRCcm93c2luZ0VuYWJsZWQiCiAjZW5kaWYKQEAgLTEz
NTksNiArMTM2Myw3IEBAIHN0YXRpYyBpZCB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9ucyhBWE9iamVjdENhY2hlICpjYWNoZSwgVmlzaWJsZVBvc2l0CiAgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVzc0F0dHJpYnV0ZV07CiAg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07
CiAgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3Np
bmdFbmFibGVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJpYnV0ZV07CiAgICAgICAgIHdl
YkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwog
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwogICAgIH0KQEAgLTI5NTgsNiArMjk2Myw5IEBA
IHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2
YWx1ZSkKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhEUlRFbGVt
ZW50SWRBdHRyaWJ1dGUiXSkKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5nZXRBdHRyaWJ1dGUo
aWRBdHRyKTsKICAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJZ25vcmVET01LZXlFdmVudEhh
bmRsZXJzQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDptX29iamVjdC0+aWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycygpXTsKKyAgICAKICAgICBpZiAo
bV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmNhcmV0QnJvd3NpbmdFbmFi
bGVkKCldOwogICAgIApAQCAtMzAzMyw2ICszMDQxLDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xl
VmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0p
CiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEo
KSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SWdub3Jl
RE9NS2V5RXZlbnRIYW5kbGVyc0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBZRVM7CisgICAg
CiAgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQog
ICAgICAgICByZXR1cm4gWUVTOwogICAgIApAQCAtMzM1Miw2ICszMzYzLDggQEAgc3RhdGljIE5T
U3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAg
ICAgICAgICAgbV9vYmplY3QtPnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0g
ZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdy
YWJiZWRBdHRyaWJ1dGVdKQogICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJl
ciBib29sVmFsdWVdKTsKKyAgICBlbHNlIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUlnbm9yZURPTUtleUV2
ZW50SGFuZGxlcnNBdHRyaWJ1dGVdKQorICAgICAgICBtX29iamVjdC0+c2V0SWdub3JlRE9NS2V5
RXZlbnRIYW5kbGVycyhbbnVtYmVyIGJvb2xWYWx1ZV0pOwogICAgIGVsc2UgaWYgKG1fb2JqZWN0
LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICBtX29iamVjdC0+
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoW251bWJlciBib29sVmFsdWVdKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMmQ5MmY4MDhhOGEzNzRkNTg0MDRjZDA5
YWQwNWY0Zjc1Y2NkMjM1ZC4uNmQzMzYwMTQ0ZTNjMDlkNzE2MGViNDI4NTlhYzBmNDRlYmRjODFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKIAogI2luY2x1ZGUgIkV2ZW50Q29udGV4
dC5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZvY3VzRXZlbnQuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCkBA
IC0zNDksNyArMzUwLDEyIEBAIGJvb2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUqIG9yaWdpbiwgUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpLndpbGxEaXNwYXRjaEV2ZW50KCpldmVudCwgY2xpY2tIYW5kbGluZ1N0YXRlKTsKIAot
ICAgIGlmICghZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVudFBhdGguaXNFbXB0
eSgpKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oSU9TKQorICAgIGJvb2wgcHJl
dmVudERPTURpc3BhdGNoID0gRXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5V2FudHNUb0hhbmRs
ZUV2ZW50KCpldmVudCwgKm5vZGUpOworI2Vsc2UKKyAgICBib29sIHByZXZlbnRET01EaXNwYXRj
aCA9IGZhbHNlOworI2VuZGlmCisgICAgaWYgKCFwcmV2ZW50RE9NRGlzcGF0Y2ggJiYgIWV2ZW50
LT5wcm9wYWdhdGlvblN0b3BwZWQoKSAmJiAhZXZlbnRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
ZGlzcGF0Y2hFdmVudEluRE9NKCpldmVudCwgZXZlbnRQYXRoLCB3aW5kb3dFdmVudENvbnRleHQp
OwogCiAgICAgZXZlbnQtPnNldFRhcmdldCgmZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVs
ZXMoKm5vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhNWY2ODMx
OTJiYzQyMGVlNzY2NTE4Yjg1ZGQ5ZTlmNDdkYTdlMGQ3Li5lMmJkYzNjM2RiMDdiZWJiMTdmYTI4
Njk3ZjIzMzlhODhjMDQxMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zMjEzLDYgKzMyMTMsNDMgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25N
b3ZlbWVudChGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CisgICAgCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShJT1MpCitib29sIEV2ZW50SGFuZGxlcjo6YWNjZXNzaWJpbGl0eVdhbnRzVG9IYW5k
bGVFdmVudChFdmVudCYgZXZlbnQsIE5vZGUmIG5vZGUpCit7CisgICAgaWYgKCFBWE9iamVjdENh
Y2hlOjphY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUg
PSBldmVudC50eXBlKCk7CisgICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50ICYmIGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbm9kZS5k
b2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbm9kZUFjY2Vzc2liaWxp
dHkgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJm5vZGUpOworICAgIGlmICghbm9kZUFjY2Vzc2liaWxp
dHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBGcmFtZSogZnJhbWUgPSBub2Rl
QWNjZXNzaWJpbGl0eS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+c2V0dGlu
Z3MoKS5pZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoaXM8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CisgICAgICAgIEtleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlbnQgPSBkb3duY2FzdDxLZXlib2FyZEV2ZW50PihldmVudCk7
CisgICAgICAgIC8vIFRhYgorICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC5rZXlJZGVudGlmaWVy
KCkgPT0gIlUrMDAwOSIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gQXJy
b3cga2V5cworICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBmb2N1c0RpcmVjdGlv
bkZvcktleShrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIoKSk7CisgICAgICAgIGlmIChkaXJl
Y3Rpb24gIT0gRm9jdXNEaXJlY3Rpb25Ob25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgogCiB2b2lkIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2liaWxpdHkoS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAz
NzIwZjZjMTUzMWEyMGE3NTBkYTYxNDZhNDYzOGNmMjk0OWQ3ZDI1Li5kZmM4ZjE2Y2M4OTYxMTk4
YjNhYzlmMTI5OThmNDJmMmU3Mjk4MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
QEAgLTIzOSw2ICsyMzksOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBrZXlF
dmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKICAgICB2b2lkIGRlZmF1bHRLZXli
b2FyZEV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50Kik7CiAKKyNpZiBQTEFURk9STShDT0NPQSkg
JiYgIVBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMgYm9vbCBhY2Nlc3NpYmlsaXR5V2FudHNUb0hh
bmRsZUV2ZW50KEV2ZW50JiwgTm9kZSYpOworI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBoYW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2Fy
ZEV2ZW50Kik7CiAKICAgICBib29sIGhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYg
dGV4dCwgRXZlbnQqIHVuZGVybHlpbmdFdmVudCA9IDAsIFRleHRFdmVudElucHV0VHlwZSA9IFRl
eHRFdmVudElucHV0S2V5Ym9hcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KaW5kZXggODZkZjE5
OGRkYjA2OTJiOGFlNmY5NTBkMmFkMTg1YWRiODIwYjhkNC4uNTUwZDE4YmMyOGYwMzE4OTZjNGY5
MWMwZDkwYjBiOTEzOTNjNTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCkBAIC00NSw2ICs0
NSw3IEBAIG1heGltdW1IVE1MUGFyc2VyRE9NVHJlZURlcHRoIHR5cGU9dW5zaWduZWQsIGluaXRp
YWw9ZGVmYXVsdE1heGltdW1IVE1MUGFyc2VyRE9NCiBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1h
Z2VMb2FkaW5nU2V0dGluZyBpbml0aWFsPWZhbHNlCiAKIGNhcmV0QnJvd3NpbmdFbmFibGVkIGlu
aXRpYWw9ZmFsc2UKK2lnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMgaW5pdGlhbD1mYWxzZQogbG9j
YWxTdG9yYWdlRW5hYmxlZCBpbml0aWFsPWZhbHNlCiBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyBpbml0aWFsPXRydWUKIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyBpbml0aWFs
PXRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzNDlmN2FlZTUyZDY1OGZlN2I3NTRkNDI0NDZhNzhkZjg1ZDkyMmM5Li5j
ODE3M2M3NDMxNmNkNmRkMDlhODg5ZjRmYThlOTYzMzAzNDkzNzNmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjQgQEAKIDIwMTUtMDItMjYgIERvdWcgUnVzc2VsbCAgPGRfcnVzc2VsbEBhcHBsZS5jb20+CiAK
KyAgICAgICAgQVg6IFByb3ZpZGUgQVBJIGZvciBhc3Npc3RpdmUgdGVjaCB0byBpZ25vcmUgRE9N
IGtleSBldmVudCBoYW5kbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQXNzaXN0aXZlIHRlY2hub2xvZ3kgYXBwbGljYXRpb25zIG9uIHRoZSBkZXNr
dG9wIGFyZSBoZWF2aWx5IGRlcGVuZGVudCBvbiBrZXlib2FyZCBuYXZpZ2F0aW9uIGJlaW5nIHJl
bGlhYmxlLiBUaGlzIGlzIGdyZWF0bHkgaGluZGVyZWQgYnkgc2l0ZXMgdGhhdCBoYW5kbGUga2V5
IGV2ZW50cyB3aXRob3V0IHVwZGF0aW5nIGtleWJvYXJkIHNlbGVjdGlvbiBhbmQgdGhlbiBjb25z
dW1lIHRoZSBldmVudC4gSXQgaXMgaW1wb3J0YW50IGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neSBh
cHBzIHRvIGFsbG93IHVzZXJzIHRvIGRlY2lkZSB0byBpZ25vcmUgdGhlc2UgaGFuZGxlcnMgdGhh
dCBhcmUgaW5jb3JyZWN0IGZvciB0aGVpciBwdXJwb3Nlcy4KKworICAgICAgICBUaGlzIGNhbiBi
ZSBmaXhlZCBieSBleHBvc2luZywgdmlhIGEgbmV3IGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlLCBh
IHdheSB0byBkZWNpZGUsIGZvciBhIGdpdmVuIFdlYkNvcmU6OkZyYW1lLCB0byBwcmUtZW1wdCBE
T00gZGlzcGF0Y2ggYW5kIGluc3RlYWQgbGV0IGFjY2Vzc2liaWxpdHkgY2FyZXQgYnJvd3Npbmcg
dGFrZSBwbGFjZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtZG9tLWtleS1ldmVu
dC1oYW5kbGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanM6CisgICAgICAgIChpZ25vcmVE
T01LZXlFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKHNldElnbm9yZURPTUtleUV2ZW50SGFuZGxl
cnMpOgorCisyMDE1LTAyLTI2ICBEb3VnIFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgor
CiAgICAgICAgIEFYOiBFeHBvc2UgY2FyZXQgYnJvd3NpbmcgcHJlZmVyZW5jZSB0byBhY2Nlc3Np
YmlsaXR5IEFQSQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQxODYyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50
LWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1k
ZWxldGUtZXhwZWN0ZWQudHh0CmluZGV4IDQyNDY3NTQ2ZTI0NGIzZTk1ODAwMTM3ZDJjMDViMmI3
YTQ3Y2ZiZjkuLjNmNTM4MTkzZTVjM2U4MGMzMGIwNGRiOGYwMjJmYmYxZmU5MTFmYWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVk
LnR4dApAQCAtMjgsNSArMjgsNiBAQCBBWExheW91dENvdW50OiAyCiBBWExvYWRpbmdQcm9ncmVz
czogMQogQVhVUkw6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS5odG1s
CiBBWENhcmV0QnJvd3NpbmdFbmFibGVkOiAwCitBWElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnM6
IDAKIEFYRWxlbWVudEJ1c3k6IDAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dAppbmRleCA4ZjRiYWUxNjcxZDg1NDRjNWYyMTY3ZWU0ZDk0MTBjMDNkNjlkNzMy
Li5lOGI0YzU1YzY1ZWEzZWI3OWQwZTg2ZWZkYzE1NGMxZWJmNTczOWVjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMjcsNiArMjcsNyBAQCBBWExh
eW91dENvdW50OiAyCiBBWExvYWRpbmdQcm9ncmVzczogMQogQVhVUkw6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMuaHRtbAogQVhDYXJl
dEJyb3dzaW5nRW5hYmxlZDogMAorQVhJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzOiAwCiBBWEVs
ZW1lbnRCdXN5OiAwCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxlcnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZl
bnQtaGFuZGxlcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0ZGExNDJhMWM1MTE0M2JjYzdi
ZWU3OTllYThiOWU3ZTAwZTI2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyOSBAQAorMQorCisyCisKKzIKKworVGhpcyB0ZXN0cyBpZ25v
cmluZyBqYXZhc2NyaXB0IGtleSBoYW5kbGVycyB0aGF0IGNvbnN1bWUga2V5IGV2ZW50cy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2ViQXJlYS5yb2xlIGlzICdBWFJv
bGU6IEFYV2ViQXJlYScKK1BBU1MgY2FyZXRCcm93c2luZ0VuYWJsZWQod2ViQXJlYSkgaXMgZmFs
c2UKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5h
YmxlZCBpcyBmYWxzZQorUEFTUyBpZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEpIGlz
IGZhbHNlCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3Rh
cnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiAxJworUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGtleWNv
dW50KCkgaXMgJzInCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNz
aWJpbGl0eUVuYWJsZWQgaXMgdHJ1ZQorUEFTUyBpZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKHdl
YkFyZWEpIGlzIHRydWUKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBlbGVt
ZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMicKK1BB
U1Mga2V5Y291bnQoKSBpcyAnMicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9pZ25vcmUtZG9tLWtleS1ldmVudC1oYW5kbGVycy5odG1sIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxl
cnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MWUxNWY4MmNiMjQxM2JmZjQ5NjBhMTI0MTMzZjlmZTU3N2U1
MjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvaWdub3JlLWRvbS1rZXktZXZlbnQtaGFuZGxlcnMuaHRtbApAQCAtMCwwICsxLDcyIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPCEtLSBhZGQgYSBrZXlkb3duIGhhbmRsZXIg
dGhhdCBpZ25vcmVzIGFsbCBrZXkgZXZlbnRzLS0+Cis8Ym9keSBpZD0iYm9keSIgb25rZXlkb3du
PSJyZXR1cm4ga2V5ZG93bigpOyI+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBrZXlkb3du
KGV2ZW50KSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImtleWRvd25jb3VudCIpOworICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IHBhcnNlSW50KGVs
ZW1lbnQuaW5uZXJIVE1MKSArIDE7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
ZnVuY3Rpb24ga2V5Y291bnQoKSB7CisgICAgICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgia2V5ZG93bmNvdW50IikuaW5uZXJIVE1MOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAg
ICA8ZGl2PgorICAgICAgICA8cD4xPC9wPgorICAgICAgICA8cD4yPC9wPgorICAgICAgICA8cCBp
ZD0ia2V5ZG93bmNvdW50Ij4wPHA+CisgICAgPC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBpZ25vcmlu
ZyBqYXZhc2NyaXB0IGtleSBoYW5kbGVycyB0aGF0IGNvbnN1bWUga2V5IGV2ZW50cy4iKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKworICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyICYmIHdp
bmRvdy5ldmVudFNlbmRlcikgeworCisgICAgICAgICAgICB2YXIgd2ViQXJlYSA9IGNsZWFyU2Vs
ZWN0aW9uQW5kRm9jdXNPbldlYkFyZWEoKTsKKyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eShmYWxzZSk7CisgICAgICAgICAgICBz
aG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5h
YmxlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgc2V0SWdub3JlRE9NS2V5RXZlbnRIYW5kbGVy
cyh3ZWJBcmVhLCBmYWxzZSk7CisgICAgICAgICAgICBzaG91bGRCZSgiaWdub3JlRE9NS2V5RXZl
bnRIYW5kbGVycyh3ZWJBcmVhKSIsICJmYWxzZSIpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBBcnJvd2luZyBiZWZvcmUgZW5hYmxpbmcgQVggYW5kIGlnbm9yZSBkb20gaGFuZGxlcnMg
d29uJ3QgbW92ZSB0aGUgY2FyZXQKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFy
dE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFy
cm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgaGFuZGxlciByZWNlaXZlZCAyIGtl
eXMgZXZlbnRzCisgICAgICAgICAgICBzaG91bGRCZSgia2V5Y291bnQoKSIsICInMiciKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gRW5hYmxlIGVuaGFuY2VkIGFjY2Vzc2liaWxpdHkg
KG5lY2Vzc2FyeSBmb3IgYWNjZXNzaWJpbGl0eSBzcGVjaWZpYyBzZWxlY3Rpb24gaGFuZGxpbmcp
LgorICAgICAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5hYmxlRW5oYW5jZWRBY2Nl
c3NpYmlsaXR5KHRydWUpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQiLCAidHJ1ZSIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBFbmFibGUgSWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyBzbyB0
aGF0IHRoZSBqYXZhc2NyaXB0IGhhbmRsZXIgd2lsbCBiZSBza2lwcGVkCisgICAgICAgICAgICBz
ZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEsIHRydWUpOworICAgICAgICAgICAg
c2hvdWxkQmUoImlnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSkiLCAidHJ1ZSIpOwor
CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4
dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3
ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVt
ZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IDInIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFZh
bGlkYXRlIHRoYXQgdGhlIGhhbmRsZXIgZGlkbid0IHJlY2VpdmUgYW55IG1vcmUga2V5IGV2ZW50
cworICAgICAgICAgICAgc2hvdWxkQmUoImtleWNvdW50KCkiLCAiJzInIik7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHNldElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMod2ViQXJlYSwgZmFs
c2UpOworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcwppbmRl
eCBlZjY2MGFkNjliYjAyMGQ2MzMxNzY2MzcxMjVkMjU0NTJhZDY0ZjAzLi4xYjhhM2FjMWJiZWI2
N2EyNTM5NGJmMDhiMTM3OWI5ZDVjZTY5OTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcmVzb3VyY2VzL2Fj
Y2Vzc2liaWxpdHktaGVscGVyLmpzCkBAIC0yMSwzICsyMSwxMSBAQCBmdW5jdGlvbiBjYXJldEJy
b3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSB7CiBmdW5jdGlvbiBzZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZCh3ZWJBcmVhLCB2YWx1ZSkgewogICAgIHdlYkFyZWEuc2V0Qm9vbEF0dHJpYnV0ZVZhbHVlKCJB
WENhcmV0QnJvd3NpbmdFbmFibGVkIiwgdmFsdWUpOwogfQorCitmdW5jdGlvbiBpZ25vcmVET01L
ZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEpIHsKKyAgICByZXR1cm4gd2ViQXJlYS5ib29sQXR0cmli
dXRlVmFsdWUoIkFYSWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyIpOworfQorCitmdW5jdGlvbiBz
ZXRJZ25vcmVET01LZXlFdmVudEhhbmRsZXJzKHdlYkFyZWEsIHZhbHVlKSB7CisgICAgd2ViQXJl
YS5zZXRCb29sQXR0cmlidXRlVmFsdWUoIkFYSWdub3JlRE9NS2V5RXZlbnRIYW5kbGVycyIsIHZh
bHVlKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247638</attachid>
            <date>2015-03-01 14:20:35 -0800</date>
            <delta_ts>2015-03-09 15:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142059-20150301142019.patch</filename>
            <type>text/plain</type>
            <size>15455</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwODY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxNjhmMmI3NTBjOTdkNGRh
YWVmZGMwZDc5ODlmZWJjMTE3NDEwMzliLi5lMzNmM2VjNDJiMTFhODY4NTg2Yzk4OWQ2YzRjN2I2
YWMzY2M3NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI2MDUsNCArMjYwNSwyMCBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVt
ZW50cywgY29ucwogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29uc3QKK3sK
KyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFtZSAmJiBm
cmFtZS0+c2V0dGluZ3MoKS5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaChib29sIG9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zZXR0aW5ncygpLnNldFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gob24pOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMTc2ZmFkZTMxYzQ0OWU4YTFiNjdhN2U3OGMwYmU4M2Qw
ODI1Njc3ZS4uMDQxODhlZTY3YTZhMDg5MzVlM2E0Yjc1YjE5M2E4OTM4MTgwZjYzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
QEAgLTk3OCw2ICs5NzgsMTEgQEAgcHVibGljOgogICAgIC8vIG90aGVyIG9wZXJhdGlvbnMgdXBk
YXRlIHR5cGUgb3BlcmF0aW9ucwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAg
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3Bh
dGNoKGJvb2wpOworI2VuZGlmCisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9S
TShJT1MpCiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQg
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDc0MzI0ZjAwNzg2NGUzNDc4NjIyMzAzY2Q2ZTdlNDc4Y2U3N2Vi
MDMuLjgwMTQzNjUzOWZmN2NmYjJiMmQ5YTJmMzQ5YTRkOTAzMzhhOTBiMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC00NjQsNiArNDY0LDEwIEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQcmVzY3Jp
cHRzQXR0cmlidXRlIEAiQVhNYXRoUHJlc2NyaXB0cyIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUG9zdHNjcmlwdHMiCiAKKyNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0ZQor
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoQXR0
cmlidXRlIEAiQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoIgorI2VuZGlmCisKICNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUKICNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUgQCJBWENhcmV0
QnJvd3NpbmdFbmFibGVkIgogI2VuZGlmCkBAIC0xMzU5LDYgKzEzNjMsNyBAQCBzdGF0aWMgaWQg
dGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoQVhPYmplY3RDYWNoZSAqY2FjaGUs
IFZpc2libGVQb3NpdAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07CisgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICB3ZWJBcmVhQXR0cnMgPSBbW05TQXJy
YXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKICAgICAgICAgW3RlbXBBcnJheSBy
ZWxlYXNlXTsKICAgICB9CkBAIC0yOTU4LDYgKzI5NjMsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJv
bGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRlIl0pCiAg
ICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAgCisgICAg
aWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJpYnV0
ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPnBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKV07CisgICAgCiAgICAgaWYgKG1fb2JqZWN0
LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpXTsK
ICAgICAKQEAgLTMwMzMsNiArMzA0MSw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9O
U1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQogICAgICAg
ICByZXR1cm4gWUVTOwogICAgIAorICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2Fy
ZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gWUVTOworICAgIAog
ICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAg
ICAgICAgcmV0dXJuIFlFUzsKICAgICAKQEAgLTMzNTIsNiArMzM2Myw4IEBAIHN0YXRpYyBOU1N0
cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICAg
ICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWRSb3dzKTsKICAgICB9IGVs
c2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlHcmFi
YmVkQXR0cmlidXRlXSkKICAgICAgICAgbV9vYmplY3QtPnNldEFSSUFHcmFiYmVkKFtudW1iZXIg
Ym9vbFZhbHVlXSk7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKKyAgICAgICAgbV9vYmplY3QtPnNldFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goW251bWJlciBib29sVmFsdWVdKTsKICAgICBlbHNlIGlm
IChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAgICAgICAg
bV9vYmplY3QtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKFtudW1iZXIgYm9vbFZhbHVlXSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDJkOTJmODA4YThhMzc0
ZDU4NDA0Y2QwOWFkMDVmNGY3NWNjZDIzNWQuLjY4N2M1ZjAyODA1MzJmZjI3MjE0MjcyOTYwZDBm
Y2Y5M2E4OThmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAKICNpbmNsdWRlICJF
dmVudENvbnRleHQuaCIKKyNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRlICJGb2N1
c0V2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxl
bWVudC5oIgpAQCAtMzQ5LDcgKzM1MCw3IEBAIGJvb2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aEV2ZW50KE5vZGUqIG9yaWdpbiwgUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgaWYg
KGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKSkKICAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm5vZGUpLndpbGxEaXNwYXRjaEV2ZW50KCpldmVudCwgY2xpY2tIYW5kbGluZ1N0
YXRlKTsKIAotICAgIGlmICghZXZlbnQtPnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVudFBh
dGguaXNFbXB0eSgpKQorICAgIGlmICghRXZlbnRIYW5kbGVyOjphY2Nlc3NpYmlsaXR5UHJldmVu
dHNET01FdmVudERpc3BhdGNoKCpldmVudCwgKm5vZGUpICYmICFldmVudC0+cHJvcGFnYXRpb25T
dG9wcGVkKCkgJiYgIWV2ZW50UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIGRpc3BhdGNoRXZlbnRJ
bkRPTSgqZXZlbnQsIGV2ZW50UGF0aCwgd2luZG93RXZlbnRDb250ZXh0KTsKIAogICAgIGV2ZW50
LT5zZXRUYXJnZXQoJmV2ZW50VGFyZ2V0UmVzcGVjdGluZ1RhcmdldFJ1bGVzKCpub2RlKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTVmNjgzMTkyYmM0MjBlZTc2NjUx
OGI4NWRkOWU5ZjQ3ZGE3ZTBkNy4uZmNkOTk0YTQ2YTNhMzY4ZjU2MWQ1MzM2OWMyYTM1OGM5ZjZi
NmJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzIxNCw2ICszMjE0
LDMzIEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnQoRnJhbWUm
IGZyYW1lLCBLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAorYm9vbCBFdmVudEhhbmRsZXI6OmFjY2Vzc2liaWxpdHlQcmV2ZW50c0RPTUV2
ZW50RGlzcGF0Y2goRXZlbnQmIGV2ZW50LCBOb2RlJiBub2RlKQoreworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlcklu
dGVyZmFjZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOworICAgIGlmIChldmVudFR5
cGUgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudFR5cGUgIT0gZXZlbnROYW1l
cygpLmtleXVwRXZlbnQgJiYgZXZlbnRUeXBlICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS5k
b2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnNldHRpbmdzKCku
cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKGlzPEtleWJvYXJkRXZlbnQ+KGV2ZW50KSkgeworICAgICAgICAvLyBD
aGVjayBmb3Iga2V5IGV2ZW50cyB0aGF0IGFyZSByZWxldmFudCB0byBhY2Nlc3NpYmlsaXR5OiB0
YWIgYW5kIGFycm93cyBrZXlzIHRoYXQgY2hhbmdlIGZvY3VzCisgICAgICAgIEtleWJvYXJkRXZl
bnQmIGtleWJvYXJkRXZlbnQgPSBkb3duY2FzdDxLZXlib2FyZEV2ZW50PihldmVudCk7CisgICAg
ICAgIGlmIChrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBm
b2N1c0RpcmVjdGlvbkZvcktleShrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIoKSk7CisgICAg
ICAgIGlmIChkaXJlY3Rpb24gIT0gRm9jdXNEaXJlY3Rpb25Ob25lKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEV2
ZW50SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudEZvckFjY2Vzc2liaWxp
dHkoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5k
ZXggMzcyMGY2YzE1MzFhMjBhNzUwZGE2MTQ2YTQ2MzhjZjI5NDlkN2QyNS4uYzYxNmMyYWY5ZDMx
ZmE0MGRhMWUyY2U2YzUzMjFmOGUxZmZlNDExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCkBAIC0yMzksNiArMjM5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0
S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCopOwogCisgICAgc3RhdGljIGJvb2wg
YWNjZXNzaWJpbGl0eVByZXZlbnRzRE9NRXZlbnREaXNwYXRjaChFdmVudCYsIE5vZGUmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JB
Y2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZlbnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4dElucHV0
RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0gMCwgVGV4
dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5pbgppbmRleCA4NmRmMTk4ZGRiMDY5MmI4YWU2Zjk1MGQyYWQxODVhZGI4MjBiOGQ0Li4x
ZmZjM2RjMTRlZjJhMjUyZDNhZjgyMGYxZTc4ZmE5MWNkNTMxZGY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaW4KQEAgLTQ1LDYgKzQ1LDcgQEAgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGgg
dHlwZT11bnNpZ25lZCwgaW5pdGlhbD1kZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET00KIGxvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nIGluaXRpYWw9ZmFsc2UKIAogY2Fy
ZXRCcm93c2luZ0VuYWJsZWQgaW5pdGlhbD1mYWxzZQorcHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCBpbml0aWFsPWZhbHNlCiBsb2NhbFN0b3JhZ2VFbmFibGVkIGluaXRpYWw9ZmFsc2UK
IGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQogYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKaW5kZXggNDI0Njc1NDZlMjQ0
YjNlOTU4MDAxMzdkMmMwNWIyYjdhNDdjZmJmOS4uOTIxYWI3OGExMWQ5YzA3NzQyZWI5YWU1Yjdk
ODM0OTVmNGYwN2I3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJl
bnQtZGVsZXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Bh
cmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CkBAIC0yOCw1ICsyOCw2IEBAIEFYTGF5b3V0Q291bnQ6
IDIKIEFYTG9hZGluZ1Byb2dyZXNzOiAxCiBBWFVSTDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9wYXJlbnQtZGVsZXRlLmh0bWwKIEFYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKK0FYUHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAogQVhFbGVtZW50QnVzeTogMAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDhmNGJhZTE2NzFkODU0
NGM1ZjIxNjdlZTRkOTQxMGMwM2Q2OWQ3MzIuLmIxOTU4MjY0ZGYyYWEwNTY0MWM4NjI4MTA5YjU4
MzI1YWE4YzczMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0CkBAIC0yNyw2ICsyNyw3IEBAIEFYTGF5b3V0Q291bnQ6IDIKIEFYTG9hZGluZ1Byb2dyZXNz
OiAxCiBBWFVSTDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1l
bnQtYXR0cmlidXRlcy5odG1sCiBBWENhcmV0QnJvd3NpbmdFbmFibGVkOiAwCitBWFByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2g6IDAKIEFYRWxlbWVudEJ1c3k6IDAKIAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJv
YXJkLWV2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI0ZDZiODJlOWM4NjFlOTI1ZGIxOWYxZjA5NjIyMTliNjZmMjMzZGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9wcmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI5IEBACisxCisKKzIKKworMgorCitUaGlzIHRlc3RzIGlnbm9yaW5nIGphdmFzY3JpcHQga2V5
IGhhbmRsZXJzIHRoYXQgY29uc3VtZSBrZXkgZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyB3ZWJBcmVhLnJvbGUgaXMgJ0FYUm9sZTogQVhXZWJBcmVhJworUEFT
UyBjYXJldEJyb3dzaW5nRW5hYmxlZCh3ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIGlzIGZhbHNlCitQQVNT
IHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSkgaXMgZmFsc2UKK1BBU1Mg
ZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0
cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEn
CitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJB
cmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1Mga2V5Y291bnQoKSBpcyAnMicK
K1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxl
ZCBpcyB0cnVlCitQQVNTIHByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSkg
aXMgdHJ1ZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0
YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBp
cyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAyJworUEFTUyBrZXlj
b3VudCgpIGlzICcyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2guaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lODkwZjZkMTExYmQxZmJlYjlkMjU3M2RjZDg3N2E1OWQzYWQyODlj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC5odG1sCkBAIC0wLDAgKzEsNzggQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8IS0tIGFkZCBhIGtleWRvd24gaGFuZGxlciB0
aGF0IGlnbm9yZXMgYWxsIGtleSBldmVudHMtLT4KKzxib2R5IGlkPSJib2R5IiBvbmtleWRvd249
InJldHVybiBrZXlkb3duKCk7Ij4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSkgeworICAgICAgICByZXR1cm4gd2ViQXJl
YS5ib29sQXR0cmlidXRlVmFsdWUoIkFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCIp
OworICAgIH0KKyAgICBmdW5jdGlvbiBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNo
KHdlYkFyZWEsIHZhbHVlKSB7CisgICAgICAgIHdlYkFyZWEuc2V0Qm9vbEF0dHJpYnV0ZVZhbHVl
KCJBWFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2giLCB2YWx1ZSk7CisgICAgfQorICAg
IGZ1bmN0aW9uIGtleWRvd24oZXZlbnQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgia2V5ZG93bmNvdW50Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJI
VE1MID0gcGFyc2VJbnQoZWxlbWVudC5pbm5lckhUTUwpICsgMTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBmdW5jdGlvbiBrZXljb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZXlkb3duY291bnQiKS5pbm5lckhUTUw7CisgICAgfQor
ICAgIDwvc2NyaXB0PgorICAgIDxkaXY+CisgICAgICAgIDxwPjE8L3A+CisgICAgICAgIDxwPjI8
L3A+CisgICAgICAgIDxwIGlkPSJrZXlkb3duY291bnQiPjA8cD4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIGlnbm9yaW5nIGphdmFzY3JpcHQga2V5IGhhbmRsZXJzIHRoYXQgY29uc3VtZSBr
ZXkgZXZlbnRzLiIpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisKKyAgICAgICAgICAgIHZhciB3
ZWJBcmVhID0gY2xlYXJTZWxlY3Rpb25BbmRGb2N1c09uV2ViQXJlYSgpOworICAgICAgICAgICAg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5hYmxlRW5oYW5jZWRBY2Nlc3NpYmlsaXR5KGZhbHNl
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNl
ZEFjY2Vzc2liaWxpdHlFbmFibGVkIiwgImZhbHNlIik7CisgICAgICAgICAgICBzZXRQcmV2ZW50
S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEsIGZhbHNlKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEpIiwgImZhbHNl
Iik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEFycm93aW5nIGJlZm9yZSBlbmFibGlu
ZyBBWCBhbmQgaWdub3JlIGRvbSBoYW5kbGVycyB3b24ndCBtb3ZlIHRoZSBjYXJldAorICAgICAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSku
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCJyaWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3Rh
cnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0
aGF0IHRoZSBoYW5kbGVyIHJlY2VpdmVkIDIga2V5cyBldmVudHMKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJrZXljb3VudCgpIiwgIicyJyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBF
bmFibGUgZW5oYW5jZWQgYWNjZXNzaWJpbGl0eSAobmVjZXNzYXJ5IGZvciBhY2Nlc3NpYmlsaXR5
IHNwZWNpZmljIHNlbGVjdGlvbiBoYW5kbGluZykuCisgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisgICAgICAgICAg
ICBzaG91bGRCZSgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5oYW5jZWRBY2Nlc3NpYmlsaXR5
RW5hYmxlZCIsICJ0cnVlIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEVuYWJsZSBJ
Z25vcmVET01LZXlFdmVudEhhbmRsZXJzIHNvIHRoYXQgdGhlIGphdmFzY3JpcHQgaGFuZGxlciB3
aWxsIGJlIHNraXBwZWQKKyAgICAgICAgICAgIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlz
cGF0Y2god2ViQXJlYSwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSgicHJldmVudEtleWJv
YXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhKSIsICJ0cnVlIik7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFy
ZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRB
dFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogMiciKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVmFsaWRh
dGUgdGhhdCB0aGUgaGFuZGxlciBkaWRuJ3QgcmVjZWl2ZSBhbnkgbW9yZSBrZXkgZXZlbnRzCisg
ICAgICAgICAgICBzaG91bGRCZSgia2V5Y291bnQoKSIsICInMiciKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhLCBm
YWxzZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248278</attachid>
            <date>2015-03-09 15:01:05 -0700</date>
            <delta_ts>2015-03-12 18:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142059-20150309150039.patch</filename>
            <type>text/plain</type>
            <size>17812</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdmYTczNzg3YjM4ODlm
M2ZkMzhiYzFhY2Y5Mjk3NmY2ZGZjYzg3MS4uZTUzOTQ2Zjc1OWQ1ZWUxZTUzZjEwYjM4YzJjYzhm
MTRmMzBlNjdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAzLTA5ICBEb3Vn
IFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBQcm92aWRlIEFQ
SSBmb3IgYXNzaXN0aXZlIHRlY2ggdG8gaWdub3JlIERPTSBrZXkgZXZlbnQgaGFuZGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQXNz
aXN0aXZlIHRlY2hub2xvZ3kgYXBwbGljYXRpb25zIG9uIHRoZSBkZXNrdG9wIGFyZSBoZWF2aWx5
IGRlcGVuZGVudCBvbiBrZXlib2FyZCBuYXZpZ2F0aW9uIGJlaW5nIHJlbGlhYmxlLiBUaGlzIGlz
IGdyZWF0bHkgaGluZGVyZWQgYnkgc2l0ZXMgdGhhdCBoYW5kbGUga2V5IGV2ZW50cyB3aXRob3V0
IHVwZGF0aW5nIGtleWJvYXJkIHNlbGVjdGlvbiBhbmQgdGhlbiBjb25zdW1lIHRoZSBldmVudC4g
SXQgaXMgaW1wb3J0YW50IGZvciBhc3Npc3RpdmUgdGVjaG5vbG9neSBhcHBzIHRvIGFsbG93IHVz
ZXJzIHRvIGRlY2lkZSB0byBpZ25vcmUgdGhlc2UgaGFuZGxlcnMgdGhhdCBhcmUgaW5jb3JyZWN0
IGZvciB0aGVpciBwdXJwb3Nlcy4KKworICAgICAgICBUaGlzIGNhbiBiZSBmaXhlZCBieSBleHBv
c2luZywgdmlhIGEgbmV3IGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlLCBhIHdheSB0byBkZWNpZGUs
IGZvciBhIGdpdmVuIFdlYkNvcmU6OkZyYW1lLCB0byBwcmUtZW1wdCBET00gZGlzcGF0Y2ggYW5k
IGluc3RlYWQgbGV0IGFjY2Vzc2liaWxpdHkgY2FyZXQgYnJvd3NpbmcgdGFrZSBwbGFjZS4KKwor
ICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJvYXJk
LWV2ZW50LWRpc3BhdGNoLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpw
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAg
ICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlTmFtZXNdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5SXNBdHRyaWJ1dGVTZXR0YWJsZTpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1
ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjprZXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmFjY2Vz
c2liaWxpdHlTdG9wc0V2ZW50UHJvcG9nYXRpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxNS0wMy0wOSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFdvcmsgYXJvdW5k
IGEgQ29jb2EgZm9udCBwYXJzaW5nIGJ1ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMTY4ZjJiNzUwYzk3ZDRkYWFl
ZmRjMGQ3OTg5ZmViYzExNzQxMDM5Yi4uZTMzZjNlYzQyYjExYTg2ODU4NmM5ODlkNmM0YzdiNmFj
M2NjNzYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCkBAIC0yNjA1LDQgKzI2MDUsMjAgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVu
dHMsIGNvbnMKICAgICB9CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK2Jvb2wgQWNjZXNzaWJp
bGl0eU9iamVjdDo6cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgpIGNvbnN0Cit7Cisg
ICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYgZnJh
bWUtPnNldHRpbmdzKCkucHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCgpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0
Y2goYm9vbCBvbikKK3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBmcmFtZS0+c2V0dGluZ3MoKS5zZXRQcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKG9uKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCmluZGV4IDE3NmZhZGUzMWM0NDllOGExYjY3YTdlNzhjMGJlODNkMDgy
NTY3N2UuLjA0MTg4ZWU2N2E2YTA4OTM1ZTNhNGI3NWIxOTNhODkzODE4MGY2M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBA
IC05NzgsNiArOTc4LDExIEBAIHB1YmxpYzoKICAgICAvLyBvdGhlciBvcGVyYXRpb25zIHVwZGF0
ZSB0eXBlIG9wZXJhdGlvbnMKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGJvb2wgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCgpIGNvbnN0OworICAgIHZvaWQgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRj
aChib29sKTsKKyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0o
SU9TKQogICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNl
dENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQppbmRleCA3NDMyNGYwMDc4NjRlMzQ3ODYyMjMwM2NkNmU3ZTQ3OGNlNzdlYjAz
Li44MDE0MzY1MzlmZjdjZmIyYjJkOWEyZjM0OWE0ZDkwMzM4YTkwYjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNDY0LDYgKzQ2NCwxMCBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUHJlc2NyaXB0
c0F0dHJpYnV0ZSBAIkFYTWF0aFByZXNjcmlwdHMiCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1h
dGhQb3N0c2NyaXB0c0F0dHJpYnV0ZSBAIkFYTWF0aFBvc3RzY3JpcHRzIgogCisjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGUKKyNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJp
YnV0ZSBAIkFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCIKKyNlbmRpZgorCiAjaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlCiAjZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlIEAiQVhDYXJldEJy
b3dzaW5nRW5hYmxlZCIKICNlbmRpZgpAQCAtMTM1OSw2ICsxMzYzLDcgQEAgc3RhdGljIGlkIHRl
eHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBW
aXNpYmxlUG9zaXQKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKICAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdOworICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoQXR0cmlidXRlXTsKICAgICAgICAgd2ViQXJlYUF0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CiAgICAgICAgIFt0ZW1wQXJyYXkgcmVs
ZWFzZV07CiAgICAgfQpAQCAtMjk1OCw2ICsyOTYzLDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xl
VmFsdWVUb05TU3RyaW5nKEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlKQogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSJdKQogICAg
ICAgICByZXR1cm4gbV9vYmplY3QtPmdldEF0dHJpYnV0ZShpZEF0dHIpOwogICAgIAorICAgIGlm
IChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVd
KQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5wcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCldOworICAgIAogICAgIGlmIChtX29iamVjdC0+
aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKV07CiAg
ICAgCkBAIC0zMDMzLDYgKzMwNDEsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNT
dHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAg
cmV0dXJuIFlFUzsKICAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRE
T01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKyAgICAKICAg
ICBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAg
ICAgIHJldHVybiBZRVM7CiAgICAgCkBAIC0zMzUyLDYgKzMzNjMsOCBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgICAg
ICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7CiAgICAgfSBlbHNl
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJl
ZEF0dHJpYnV0ZV0pCiAgICAgICAgIG1fb2JqZWN0LT5zZXRBUklBR3JhYmJlZChbbnVtYmVyIGJv
b2xWYWx1ZV0pOworICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaEF0dHJpYnV0ZV0pCisgICAgICAgIG1fb2JqZWN0LT5zZXRQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoKFtudW1iZXIgYm9vbFZhbHVlXSk7CiAgICAgZWxzZSBpZiAo
bV9vYmplY3QtPmlzV2ViQXJlYSgpICYmIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV0pCiAgICAgICAgIG1f
b2JqZWN0LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGE1ZjY4MzE5MmJjNDIwZWU3NjY1
MThiODVkZDllOWY0N2RhN2UwZDcuLjBhMzgxZmQ0NTA3MjBlNjRiMDgxZDM0MGU0MjYyZGMxNWVh
ZjM3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwNzksNiArMzA3
OSw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAgICAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KGVsZW1l
bnQpOwogICAgICAgICBrZXlkb3duLT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KKyAgICAK
KyAgICBpZiAoYWNjZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9wb2dhdGlvbihrZXlkb3duLmdl
dCgpKSkKKyAgICAgICAga2V5ZG93bi0+c3RvcFByb3BhZ2F0aW9uKCk7CiAKICAgICBlbGVtZW50
LT5kaXNwYXRjaEV2ZW50KGtleWRvd24sIElHTk9SRV9FWENFUFRJT04pOwogICAgIC8vIElmIGZy
YW1lIGNoYW5nZWQgYXMgYSByZXN1bHQgb2Yga2V5ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4g
ZWFybHkgdG8gYXZvaWQgc2VuZGluZyBhIHN1YnNlcXVlbnQga2V5cHJlc3MgbWVzc2FnZSB0byB0
aGUgbmV3IGZyYW1lLgpAQCAtMzIyMiw2ICszMjI1LDI1IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpo
YW5kbGVLZXlib2FyZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2FyZEV2
ZW50CiAgICAgfQogfQogCitib29sIEV2ZW50SGFuZGxlcjo6YWNjZXNzaWJpbGl0eVByZXZlbnRz
RXZlbnRQcm9wb2dhdGlvbihLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJ
bnRlcmZhY2VFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9m
cmFtZS5zZXR0aW5ncygpLnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgZm9yIGtleSBldmVudHMgdGhhdCBhcmUg
cmVsZXZhbnQgdG8gYWNjZXNzaWJpbGl0eTogdGFiIGFuZCBhcnJvd3Mga2V5cyB0aGF0IGNoYW5n
ZSBmb2N1cworICAgIGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBmb2N1c0Rp
cmVjdGlvbkZvcktleShldmVudC0+a2V5SWRlbnRpZmllcigpKTsKKyAgICBpZiAoZGlyZWN0aW9u
ICE9IEZvY3VzRGlyZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRF
dmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggMzcyMGY2YzE1MzFhMjBhNzUwZGE2MTQ2YTQ2MzhjZjI5NDlkN2QyNS4uNWRm
MjlkMDMzMjg1ZDdhNTljZThhNDc3Yzk2MjNlZTM1YTE2NmM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC0yMzksNiArMjM5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wga2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9p
ZCBkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCopOwogCisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5UHJldmVudHNFdmVudFByb3BvZ2F0aW9uKEtleWJvYXJkRXZlbnQqKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRG
b3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZlbnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4dElu
cHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0gMCwg
VGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5pbgppbmRleCBmNDUzMTRjYTkyZjkwY2IyOTczODI3ZGY0MTViYWVlZjJmZTVhYTQ4
Li4yMmQxNWRlMjYwYjA4MDA2Y2FmNTdkMGZiYjYwM2Y2ZWJkOWQ2YjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaW4KQEAgLTQ1LDYgKzQ1LDcgQEAgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVw
dGggdHlwZT11bnNpZ25lZCwgaW5pdGlhbD1kZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET00KIGxv
YWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nIGluaXRpYWw9ZmFsc2UKIAog
Y2FyZXRCcm93c2luZ0VuYWJsZWQgaW5pdGlhbD1mYWxzZQorcHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaCBpbml0aWFsPWZhbHNlCiBsb2NhbFN0b3JhZ2VFbmFibGVkIGluaXRpYWw9ZmFs
c2UKIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQogYWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQwOTY3OGNhNDdkY2M2
NjY3MDYzMDU0NWUyOWJjZGI4MWU2NDFkZWYuLjI4MDkwOWI2NmZmNDRjNmI3ODFiMmYzY2E4YWFk
ZDM3NThhNWEyMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMy0wOSAgRG91ZyBSdXNz
ZWxsICA8ZF9ydXNzZWxsQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogUHJvdmlkZSBBUEkgZm9y
IGFzc2lzdGl2ZSB0ZWNoIHRvIGlnbm9yZSBET00ga2V5IGV2ZW50IGhhbmRsZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwNTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFzc2lzdGl2
ZSB0ZWNobm9sb2d5IGFwcGxpY2F0aW9ucyBvbiB0aGUgZGVza3RvcCBhcmUgaGVhdmlseSBkZXBl
bmRlbnQgb24ga2V5Ym9hcmQgbmF2aWdhdGlvbiBiZWluZyByZWxpYWJsZS4gVGhpcyBpcyBncmVh
dGx5IGhpbmRlcmVkIGJ5IHNpdGVzIHRoYXQgaGFuZGxlIGtleSBldmVudHMgd2l0aG91dCB1cGRh
dGluZyBrZXlib2FyZCBzZWxlY3Rpb24gYW5kIHRoZW4gY29uc3VtZSB0aGUgZXZlbnQuIEl0IGlz
IGltcG9ydGFudCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYXBwcyB0byBhbGxvdyB1c2VycyB0
byBkZWNpZGUgdG8gaWdub3JlIHRoZXNlIGhhbmRsZXJzIHRoYXQgYXJlIGluY29ycmVjdCBmb3Ig
dGhlaXIgcHVycG9zZXMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgZXhwb3Npbmcs
IHZpYSBhIG5ldyBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZSwgYSB3YXkgdG8gZGVjaWRlLCBmb3Ig
YSBnaXZlbiBXZWJDb3JlOjpGcmFtZSwgdG8gcHJlLWVtcHQgRE9NIGRpc3BhdGNoIGFuZCBpbnN0
ZWFkIGxldCBhY2Nlc3NpYmlsaXR5IGNhcmV0IGJyb3dzaW5nIHRha2UgcGxhY2UuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9h
cmQtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNoLmh0bWw6
IEFkZGVkLgorCiAyMDE1LTAzLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgV29yayBhcm91bmQgYSBDb2NvYSBmb250IHBhcnNpbmcgYnVnCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVk
LnR4dAppbmRleCA0MjQ2NzU0NmUyNDRiM2U5NTgwMDEzN2QyYzA1YjJiN2E0N2NmYmY5Li45MjFh
Yjc4YTExZDljMDc3NDJlYjlhZTViN2Q4MzQ5NWY0ZjA3YjdlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTI4LDUg
KzI4LDYgQEAgQVhMYXlvdXRDb3VudDogMgogQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKIEFYVVJMOiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAogQVhDYXJldEJyb3dz
aW5nRW5hYmxlZDogMAorQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBBWEVs
ZW1lbnRCdXN5OiAwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQKaW5kZXggOGY0YmFlMTY3MWQ4NTQ0YzVmMjE2N2VlNGQ5NDEwYzAzZDY5ZDczMi4uYjE5NTgy
NjRkZjJhYTA1NjQxYzg2MjgxMDliNTgzMjVhYThjNzMyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1l
bnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTI3LDYgKzI3LDcgQEAgQVhMYXlvdXRDb3Vu
dDogMgogQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKIEFYVVJMOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKIEFYQ2FyZXRCcm93c2lu
Z0VuYWJsZWQ6IDAKK0FYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAogQVhFbGVt
ZW50QnVzeTogMAogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1l
dmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRkNmI4MmU5Yzg2MWU5MjVk
YjE5ZjFmMDk2MjIxOWI2NmYyMzNkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkgQEAKKzEKKworMgorCisyCisKK1RoaXMgdGVzdHMg
aWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFuZGxlcnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdlYkFyZWEucm9sZSBpcyAn
QVhSb2xlOiBBWFdlYkFyZWEnCitQQVNTIGNhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEpIGlz
IGZhbHNlCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0
eUVuYWJsZWQgaXMgZmFsc2UKK1BBU1MgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3
ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVs
ZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJwor
UEFTUyBrZXljb3VudCgpIGlzICcyJworUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhh
bmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIGlzIHRydWUKK1BBU1MgcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCh3ZWJBcmVhKSBpcyB0cnVlCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2Vy
T2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
KHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBlbGVtZW50QXRTdGFy
dE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMg
J0FYVmFsdWU6IDInCitQQVNTIGtleWNvdW50KCkgaXMgJzInCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRj
aC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1r
ZXlib2FyZC1ldmVudC1kaXNwYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNThmM2RlNTFhY2YzZWYx
YjJhMGU3YzMzYjlmZGVhOTk1MTRhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNo
Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiIG9ua2V5ZG93bj0icmV0dXJuIGtl
eWRvd24oKTsiPgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCh3ZWJBcmVhKSB7CisgICAgICAgIHJldHVybiB3ZWJBcmVhLmJvb2xBdHRy
aWJ1dGVWYWx1ZSgiQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoIik7CisgICAgfQor
ICAgIGZ1bmN0aW9uIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSwg
dmFsdWUpIHsKKyAgICAgICAgd2ViQXJlYS5zZXRCb29sQXR0cmlidXRlVmFsdWUoIkFYUHJldmVu
dEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCIsIHZhbHVlKTsKKyAgICB9CisgICAgZnVuY3Rpb24g
a2V5ZG93bihldmVudCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJrZXlkb3duY291bnQiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBwYXJz
ZUludChlbGVtZW50LmlubmVySFRNTCkgKyAxOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIGZ1bmN0aW9uIGtleWNvdW50KCkgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImtleWRvd25jb3VudCIpLmlubmVySFRNTDsKKyAgICB9CisgICAgPC9zY3Jp
cHQ+CisgICAgPGRpdj4KKyAgICAgICAgPHA+MTwvcD4KKyAgICAgICAgPHA+MjwvcD4KKyAgICAg
ICAgPHAgaWQ9ImtleWRvd25jb3VudCI+MDxwPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
aWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFuZGxlcnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMu
Iik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKworICAgICAgICAgICAgdmFyIHdlYkFyZWEgPSBj
bGVhclNlbGVjdGlvbkFuZEZvY3VzT25XZWJBcmVhKCk7CisgICAgICAgICAgICBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkoZmFsc2UpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJp
bGl0eUVuYWJsZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNldFByZXZlbnRLZXlib2FyZERP
TUV2ZW50RGlzcGF0Y2god2ViQXJlYSwgZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoInBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSkiLCAiZmFsc2UiKTsKKworICAg
ICAgICAgICAgLy8gQXJyb3dpbmcgYmVmb3JlIGVuYWJsaW5nIEFYIGFuZCBpZ25vcmUgZG9tIGhh
bmRsZXJzIHdvbid0IG1vdmUgdGhlIGNhcmV0CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVu
dEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
cmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2Vy
T2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1
ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisKKyAg
ICAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIGhhbmRsZXIgcmVjZWl2ZWQgMiBrZXlzIGV2
ZW50cworICAgICAgICAgICAgc2hvdWxkQmUoImtleWNvdW50KCkiLCAiJzInIik7CisKKyAgICAg
ICAgICAgIC8vIEVuYWJsZSBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5IChuZWNlc3NhcnkgZm9yIGFj
Y2Vzc2liaWxpdHkgc3BlY2lmaWMgc2VsZWN0aW9uIGhhbmRsaW5nKS4KKyAgICAgICAgICAgIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0cnVlKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFj
Y2Vzc2liaWxpdHlFbmFibGVkIiwgInRydWUiKTsKKworICAgICAgICAgICAgLy8gRW5hYmxlIEln
bm9yZURPTUtleUV2ZW50SGFuZGxlcnMgc28gdGhhdCB0aGUgamF2YXNjcmlwdCBoYW5kbGVyIHdp
bGwgYmUgc2tpcHBlZAorICAgICAgICAgICAgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaCh3ZWJBcmVhLCB0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJwcmV2ZW50S2V5Ym9h
cmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEpIiwgInRydWUiKTsKKworICAgICAgICAgICAgc2hv
dWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJB
cmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50
QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJy
aWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJP
ZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiAyJyIpOworCisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBoYW5kbGVyIGRpZG4n
dCByZWNlaXZlIGFueSBtb3JlIGtleSBldmVudHMKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXlj
b3VudCgpIiwgIicyJyIpOworCisgICAgICAgICAgICBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKHdlYkFyZWEsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICA8L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248561</attachid>
            <date>2015-03-12 18:22:35 -0700</date>
            <delta_ts>2015-03-13 00:45:36 -0700</delta_ts>
            <desc>Updated to also stop propagation on key up</desc>
            <filename>bug-142059-20150312182209.patch</filename>
            <type>text/plain</type>
            <size>18991</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg2MzY0YmM5YTRhMGI1
ZGIwMjZhNDY4MzhjNWNiN2ZiYzhiYmY2NC4uOTZmOWE5NDZlMDFmZWVkOGM0YjY1NDNiZjc4M2Mw
YjY5Y2IyMzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAzLTEyICBEb3Vn
IFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBQcm92aWRlIEFQ
SSBmb3IgYXNzaXN0aXZlIHRlY2ggdG8gaWdub3JlIERPTSBrZXkgZXZlbnQgaGFuZGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2lzdGl2ZSB0
ZWNobm9sb2d5IGFwcGxpY2F0aW9ucyBvbiB0aGUgZGVza3RvcCBhcmUgaGVhdmlseSBkZXBlbmRl
bnQgb24ga2V5Ym9hcmQgbmF2aWdhdGlvbiBiZWluZyByZWxpYWJsZS4gVGhpcyBpcyBncmVhdGx5
IGhpbmRlcmVkIGJ5IHNpdGVzIHRoYXQgaGFuZGxlIGtleSBldmVudHMgd2l0aG91dCB1cGRhdGlu
ZyBrZXlib2FyZCBzZWxlY3Rpb24gYW5kIHRoZW4gY29uc3VtZSB0aGUgZXZlbnQuIEl0IGlzIGlt
cG9ydGFudCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYXBwcyB0byBhbGxvdyB1c2VycyB0byBk
ZWNpZGUgdG8gaWdub3JlIHRoZXNlIGhhbmRsZXJzIHRoYXQgYXJlIGluY29ycmVjdCBmb3IgdGhl
aXIgcHVycG9zZXMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgZXhwb3NpbmcsIHZp
YSBhIG5ldyBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZSwgYSB3YXkgdG8gZGVjaWRlLCBmb3IgYSBn
aXZlbiBXZWJDb3JlOjpGcmFtZSwgdG8gcHJlLWVtcHQgRE9NIGRpc3BhdGNoIGFuZCBpbnN0ZWFk
IGxldCBhY2Nlc3NpYmlsaXR5IGNhcmV0IGJyb3dzaW5nIHRha2UgcGxhY2UuCisKKyAgICAgICAg
VGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1k
aXNwYXRjaC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmVudEtl
eWJvYXJkRE9NRXZlbnREaXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0
cmlidXRlOl0pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpc3BhdGNoS2V5RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JB
Y2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuaW46CisKIDIwMTUtMDMtMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBGaW5pc2ggdXAgPHJkYXI6Ly9wcm9ibGVtLzIwMDg2NTQ2PiBb
Q29jb2FdIEFkZCBhbiBvcHRpb24gdG8gdHJlYXQgY2VydGlmaWNhdGUgY2hhaW5zIHdpdGggU0hB
MS1zaWduZWQgY2VydGlmaWNhdGVzIGFzIGluc2VjdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4YjQ5MTVlYzdh
ZDJjZGMzNjRhNWZjYTI1NWJhZDY1MTJmNmNkZTBiLi4yNThiZjYzMmZkMWUxMThkY2FmNjc5ZjZh
ZTE3NWU4OTY0ZWQ1M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI2MDUsNCArMjYwNSwyMCBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW50cywgY29ucwogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29u
c3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sIG9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zZXR0aW5ncygp
LnNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gob24pOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMTc2ZmFkZTMxYzQ0OWU4YTFiNjdhN2U3OGMw
YmU4M2QwODI1Njc3ZS4uMDQxODhlZTY3YTZhMDg5MzVlM2E0Yjc1YjE5M2E4OTM4MTgwZjYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKQEAgLTk3OCw2ICs5NzgsMTEgQEAgcHVibGljOgogICAgIC8vIG90aGVyIG9wZXJhdGlv
bnMgdXBkYXRlIHR5cGUgb3BlcmF0aW9ucwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKGJvb2wpOworI2VuZGlmCisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDc0MzI0ZjAwNzg2NGUzNDc4NjIyMzAzY2Q2ZTdlNDc4
Y2U3N2ViMDMuLjgwMTQzNjUzOWZmN2NmYjJiMmQ5YTJmMzQ5YTRkOTAzMzhhOTBiMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC00NjQsNiArNDY0LDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUHJlc2NyaXB0cyIKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUG9zdHNjcmlwdHMiCiAKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJp
YnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3Bh
dGNoQXR0cmlidXRlIEAiQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoIgorI2VuZGlm
CisKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUK
ICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUgQCJB
WENhcmV0QnJvd3NpbmdFbmFibGVkIgogI2VuZGlmCkBAIC0xMzU5LDYgKzEzNjMsNyBAQCBzdGF0
aWMgaWQgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoQVhPYmplY3RDYWNoZSAq
Y2FjaGUsIFZpc2libGVQb3NpdAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07
CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXli
b2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICB3ZWJBcmVhQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKICAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKICAgICB9CkBAIC0yOTU4LDYgKzI5NjMsOSBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRl
Il0pCiAgICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAg
CisgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0
dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmpl
Y3QtPnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKV07CisgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5jYXJldEJyb3dzaW5nRW5hYmxl
ZCgpXTsKICAgICAKQEAgLTMwMzMsNiArMzA0MSw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZh
bHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQog
ICAgICAgICByZXR1cm4gWUVTOwogICAgIAorICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkg
JiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gWUVTOwor
ICAgIAogICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRl
XSkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAKQEAgLTMzNTIsNiArMzM2Myw4IEBAIHN0YXRp
YyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkK
ICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWRSb3dzKTsKICAg
ICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAgbV9vYmplY3QtPnNldEFSSUFHcmFiYmVkKFtu
dW1iZXIgYm9vbFZhbHVlXSk7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYm
IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKKyAgICAgICAgbV9vYmplY3QtPnNldFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goW251bWJlciBib29sVmFsdWVdKTsKICAgICBl
bHNlIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAg
ICAgICAgbV9vYmplY3QtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKFtudW1iZXIgYm9vbFZhbHVl
XSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNWRkOTdhYWUwY2Q3N2ZiODM5YWQ3ZDZm
MzI0ZmVhZmEwYmZlZjkxYy4uMjIyYWViYzc2N2Y2MjFkZTA5NGUyZjc1MTU1OGMwYjQ1OTNmZTcy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUg
IkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRm9jdXNFdmVudC5oIgpAQCAtMjg5LDYgKzI5MCwxMCBAQCBib29sIEVsZW1lbnQ6
OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogYm9v
bCBFbGVtZW50OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYg
cGxhdGZvcm1FdmVudCkKIHsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4gZXZlbnQgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
KTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAg
IGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuYWNjZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9w
b2dhdGlvbihldmVudC5nZXQoKSkpCisgICAgICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgfQogICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhp
cywgZXZlbnQpICYmICFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRlMTVkODIwOGY2ZWM4MTFjNjhiZWJlN2EzZjgxOWVk
MzE1MDhiNjkuLjY5YTE1NDFjNWI2MGRmOWZjNjYwMTc5ZWM4OWQzMTZmNjI4MGUwZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwODcsNiArMzA4Nyw5IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRp
YWxLZXlFdmVudCkKICAgICAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgICAg
ICBrZXlkb3duLT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAoYWNj
ZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9wb2dhdGlvbihrZXlkb3duLmdldCgpKSkKKyAgICAg
ICAga2V5ZG93bi0+c3RvcFByb3BhZ2F0aW9uKCk7CiAKICAgICBlbGVtZW50LT5kaXNwYXRjaEV2
ZW50KGtleWRvd24sIElHTk9SRV9FWENFUFRJT04pOwogICAgIC8vIElmIGZyYW1lIGNoYW5nZWQg
YXMgYSByZXN1bHQgb2Yga2V5ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gZWFybHkgdG8gYXZv
aWQgc2VuZGluZyBhIHN1YnNlcXVlbnQga2V5cHJlc3MgbWVzc2FnZSB0byB0aGUgbmV3IGZyYW1l
LgpAQCAtMzIzMCw2ICszMjMzLDI1IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2Fy
ZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2FyZEV2ZW50CiAgICAgfQog
fQogCitib29sIEV2ZW50SGFuZGxlcjo6YWNjZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9wb2dh
dGlvbihLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9mcmFtZS5zZXR0aW5n
cygpLnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQ2hlY2sgZm9yIGtleSBldmVudHMgdGhhdCBhcmUgcmVsZXZhbnQgdG8g
YWNjZXNzaWJpbGl0eTogdGFiIGFuZCBhcnJvd3Mga2V5cyB0aGF0IGNoYW5nZSBmb2N1cworICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBmb2N1c0RpcmVjdGlvbkZvcktl
eShldmVudC0+a2V5SWRlbnRpZmllcigpKTsKKyAgICBpZiAoZGlyZWN0aW9uICE9IEZvY3VzRGly
ZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIo
S2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXgg
MzcyMGY2YzE1MzFhMjBhNzUwZGE2MTQ2YTQ2MzhjZjI5NDlkN2QyNS4uNWRmMjlkMDMzMjg1ZDdh
NTljZThhNDc3Yzk2MjNlZTM1YTE2NmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
CkBAIC0yMzksNiArMjM5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wga2V5
RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0S2V5
Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCopOwogCisgICAgYm9vbCBhY2Nlc3NpYmls
aXR5UHJldmVudHNFdmVudFByb3BvZ2F0aW9uKEtleWJvYXJkRXZlbnQqKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmls
aXR5KEtleWJvYXJkRXZlbnQqKTsKIAogICAgIGJvb2wgaGFuZGxlVGV4dElucHV0RXZlbnQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZW50ID0gMCwgVGV4dEV2ZW50SW5w
dXRUeXBlID0gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpp
bmRleCBmNDUzMTRjYTkyZjkwY2IyOTczODI3ZGY0MTViYWVlZjJmZTVhYTQ4Li4yMmQxNWRlMjYw
YjA4MDA2Y2FmNTdkMGZiYjYwM2Y2ZWJkOWQ2YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4K
QEAgLTQ1LDYgKzQ1LDcgQEAgbWF4aW11bUhUTUxQYXJzZXJET01UcmVlRGVwdGggdHlwZT11bnNp
Z25lZCwgaW5pdGlhbD1kZWZhdWx0TWF4aW11bUhUTUxQYXJzZXJET00KIGxvYWRzU2l0ZUljb25z
SWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nIGluaXRpYWw9ZmFsc2UKIAogY2FyZXRCcm93c2lu
Z0VuYWJsZWQgaW5pdGlhbD1mYWxzZQorcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCBp
bml0aWFsPWZhbHNlCiBsb2NhbFN0b3JhZ2VFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQogYWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4Zjg1YmY3NThmZDBmYTI3ZDcxYTEyZTQ3
MmQxM2ViYzNiMDk4ZWMuLmQxZGVjODhmMDFmZDQ5ZTA5M2UxNTAwNzE3NjlkMWY1OWY2ZjljNGEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNS0wMy0xMiAgRG91ZyBSdXNzZWxsICA8ZF9ydXNz
ZWxsQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogUHJvdmlkZSBBUEkgZm9yIGFzc2lzdGl2ZSB0
ZWNoIHRvIGlnbm9yZSBET00ga2V5IGV2ZW50IGhhbmRsZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwNTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3Npc3RpdmUgdGVjaG5vbG9neSBhcHBsaWNh
dGlvbnMgb24gdGhlIGRlc2t0b3AgYXJlIGhlYXZpbHkgZGVwZW5kZW50IG9uIGtleWJvYXJkIG5h
dmlnYXRpb24gYmVpbmcgcmVsaWFibGUuIFRoaXMgaXMgZ3JlYXRseSBoaW5kZXJlZCBieSBzaXRl
cyB0aGF0IGhhbmRsZSBrZXkgZXZlbnRzIHdpdGhvdXQgdXBkYXRpbmcga2V5Ym9hcmQgc2VsZWN0
aW9uIGFuZCB0aGVuIGNvbnN1bWUgdGhlIGV2ZW50LiBJdCBpcyBpbXBvcnRhbnQgZm9yIGFzc2lz
dGl2ZSB0ZWNobm9sb2d5IGFwcHMgdG8gYWxsb3cgdXNlcnMgdG8gZGVjaWRlIHRvIGlnbm9yZSB0
aGVzZSBoYW5kbGVycyB0aGF0IGFyZSBpbmNvcnJlY3QgZm9yIHRoZWlyIHB1cnBvc2VzLgorCisg
ICAgICAgIFRoaXMgY2FuIGJlIGZpeGVkIGJ5IGV4cG9zaW5nLCB2aWEgYSBuZXcgYWNjZXNzaWJp
bGl0eSBhdHRyaWJ1dGUsIGEgd2F5IHRvIGRlY2lkZSwgZm9yIGEgZ2l2ZW4gV2ViQ29yZTo6RnJh
bWUsIHRvIHByZS1lbXB0IERPTSBkaXNwYXRjaCBhbmQgaW5zdGVhZCBsZXQgYWNjZXNzaWJpbGl0
eSBjYXJldCBicm93c2luZyB0YWtlIHBsYWNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9w
YXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNoLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
cHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0x
MiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGVz
ZSBoaWRwaSBmaWx0ZXIgdGVzdHMgcGFzcyBzb21ldGltZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4dAppbmRleCA0MjQ2NzU0
NmUyNDRiM2U5NTgwMDEzN2QyYzA1YjJiN2E0N2NmYmY5Li45MjFhYjc4YTExZDljMDc3NDJlYjlh
ZTViN2Q4MzQ5NWY0ZjA3YjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvcGFyZW50LWRlbGV0ZS1leHBlY3RlZC50eHQKQEAgLTI4LDUgKzI4LDYgQEAgQVhMYXlvdXRD
b3VudDogMgogQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKIEFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3BhcmVudC1kZWxldGUuaHRtbAogQVhDYXJldEJyb3dzaW5nRW5hYmxlZDogMAorQVhQ
cmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoOiAwCiBBWEVsZW1lbnRCdXN5OiAwCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggOGY0YmFlMTY3
MWQ4NTQ0YzVmMjE2N2VlNGQ5NDEwYzAzZDY5ZDczMi4uYjE5NTgyNjRkZjJhYTA1NjQxYzg2Mjgx
MDliNTgzMjVhYThjNzMyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQKQEAgLTI3LDYgKzI3LDcgQEAgQVhMYXlvdXRDb3VudDogMgogQVhMb2FkaW5nUHJv
Z3Jlc3M6IDEKIEFYVVJMOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9k
b2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwKIEFYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKK0FYUHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaDogMAogQVhFbGVtZW50QnVzeTogMAogCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQt
a2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRkNmI4MmU5Yzg2MWU5MjVkYjE5ZjFmMDk2MjIxOWI2NmYy
MzNkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjkgQEAKKzEKKworMgorCisyCisKK1RoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlw
dCBrZXkgaGFuZGxlcnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHdlYkFyZWEucm9sZSBpcyAnQVhSb2xlOiBBWFdlYkFyZWEn
CitQQVNTIGNhcmV0QnJvd3NpbmdFbmFibGVkKHdlYkFyZWEpIGlzIGZhbHNlCitQQVNTIGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQgaXMgZmFsc2UK
K1BBU1MgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhKSBpcyBmYWxzZQor
UEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJl
YSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2Vy
T2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdl
KHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBrZXljb3VudCgpIGlz
ICcyJworUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlF
bmFibGVkIGlzIHRydWUKK1BBU1MgcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJB
cmVhKSBpcyB0cnVlCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVu
dEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1Zh
bHVlIGlzICdBWFZhbHVlOiAxJworUEFTUyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRU
ZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDInCitQQVNT
IGtleWNvdW50KCkgaXMgJzInCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC5odG1sIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNw
YXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNThmM2RlNTFhY2YzZWYxYjJhMGU3YzMzYjlmZGVhOTk1
MTRhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9wcmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNoLmh0bWwKQEAgLTAsMCArMSw3
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgaWQ9ImJvZHkiIG9ua2V5ZG93bj0icmV0dXJuIGtleWRvd24oKTsiPgorICAgIDxz
Y3JpcHQ+CisgICAgZnVuY3Rpb24gcHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJB
cmVhKSB7CisgICAgICAgIHJldHVybiB3ZWJBcmVhLmJvb2xBdHRyaWJ1dGVWYWx1ZSgiQVhQcmV2
ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoIik7CisgICAgfQorICAgIGZ1bmN0aW9uIHNldFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSwgdmFsdWUpIHsKKyAgICAgICAg
d2ViQXJlYS5zZXRCb29sQXR0cmlidXRlVmFsdWUoIkFYUHJldmVudEtleWJvYXJkRE9NRXZlbnRE
aXNwYXRjaCIsIHZhbHVlKTsKKyAgICB9CisgICAgZnVuY3Rpb24ga2V5ZG93bihldmVudCkgewor
ICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZXlkb3duY291
bnQiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBwYXJzZUludChlbGVtZW50LmlubmVy
SFRNTCkgKyAxOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGZ1bmN0aW9uIGtl
eWNvdW50KCkgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtleWRv
d25jb3VudCIpLmlubmVySFRNTDsKKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPGRpdj4KKyAg
ICAgICAgPHA+MTwvcD4KKyAgICAgICAgPHA+MjwvcD4KKyAgICAgICAgPHAgaWQ9ImtleWRvd25j
b3VudCI+MDxwPgorICAgIDwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
IDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlw
dCBrZXkgaGFuZGxlcnMgdGhhdCBjb25zdW1lIGtleSBldmVudHMuIik7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAg
ICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKworICAgICAgICAgICAgdmFyIHdlYkFyZWEgPSBjbGVhclNlbGVjdGlvbkFuZEZv
Y3VzT25XZWJBcmVhKCk7CisgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFi
bGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkoZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoImFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQiLCAiZmFs
c2UiKTsKKyAgICAgICAgICAgIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2Vi
QXJlYSwgZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoInByZXZlbnRLZXlib2FyZERPTUV2
ZW50RGlzcGF0Y2god2ViQXJlYSkiLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgLy8gQXJyb3dp
bmcgYmVmb3JlIGVuYWJsaW5nIEFYIGFuZCBpZ25vcmUgZG9tIGhhbmRsZXJzIHdvbid0IG1vdmUg
dGhlIGNhcmV0CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAx
JyIpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJr
ZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJl
YSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisKKyAgICAgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgdGhlIGhhbmRsZXIgcmVjZWl2ZWQgMiBrZXlzIGV2ZW50cworICAgICAgICAgICAg
c2hvdWxkQmUoImtleWNvdW50KCkiLCAiJzInIik7CisKKyAgICAgICAgICAgIC8vIEVuYWJsZSBl
bmhhbmNlZCBhY2Nlc3NpYmlsaXR5IChuZWNlc3NhcnkgZm9yIGFjY2Vzc2liaWxpdHkgc3BlY2lm
aWMgc2VsZWN0aW9uIGhhbmRsaW5nKS4KKyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0cnVlKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVk
IiwgInRydWUiKTsKKworICAgICAgICAgICAgLy8gRW5hYmxlIElnbm9yZURPTUtleUV2ZW50SGFu
ZGxlcnMgc28gdGhhdCB0aGUgamF2YXNjcmlwdCBoYW5kbGVyIHdpbGwgYmUgc2tpcHBlZAorICAg
ICAgICAgICAgc2V0UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhLCB0cnVl
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNo
KHdlYkFyZWEpIiwgInRydWUiKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0
YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0
QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEn
Iik7CisgICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJyaWdodEFycm93Iik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtl
clJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAyJyIpOworCisgICAgICAg
ICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBoYW5kbGVyIGRpZG4ndCByZWNlaXZlIGFueSBtb3Jl
IGtleSBldmVudHMKKyAgICAgICAgICAgIHNob3VsZEJlKCJrZXljb3VudCgpIiwgIicyJyIpOwor
CisgICAgICAgICAgICBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEs
IGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248576</attachid>
            <date>2015-03-13 00:45:46 -0700</date>
            <delta_ts>2015-03-13 12:24:33 -0700</delta_ts>
            <desc>Update for UNUSED_PARAM(event);</desc>
            <filename>bug-142059-20150313004519.patch</filename>
            <type>text/plain</type>
            <size>19024</size>
            <attacher name="Doug Russell">d_russell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg2MzY0YmM5YTRhMGI1
ZGIwMjZhNDY4MzhjNWNiN2ZiYzhiYmY2NC4uOTZmOWE5NDZlMDFmZWVkOGM0YjY1NDNiZjc4M2Mw
YjY5Y2IyMzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE1LTAzLTEyICBEb3Vn
IFJ1c3NlbGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBQcm92aWRlIEFQ
SSBmb3IgYXNzaXN0aXZlIHRlY2ggdG8gaWdub3JlIERPTSBrZXkgZXZlbnQgaGFuZGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzc2lzdGl2ZSB0
ZWNobm9sb2d5IGFwcGxpY2F0aW9ucyBvbiB0aGUgZGVza3RvcCBhcmUgaGVhdmlseSBkZXBlbmRl
bnQgb24ga2V5Ym9hcmQgbmF2aWdhdGlvbiBiZWluZyByZWxpYWJsZS4gVGhpcyBpcyBncmVhdGx5
IGhpbmRlcmVkIGJ5IHNpdGVzIHRoYXQgaGFuZGxlIGtleSBldmVudHMgd2l0aG91dCB1cGRhdGlu
ZyBrZXlib2FyZCBzZWxlY3Rpb24gYW5kIHRoZW4gY29uc3VtZSB0aGUgZXZlbnQuIEl0IGlzIGlt
cG9ydGFudCBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYXBwcyB0byBhbGxvdyB1c2VycyB0byBk
ZWNpZGUgdG8gaWdub3JlIHRoZXNlIGhhbmRsZXJzIHRoYXQgYXJlIGluY29ycmVjdCBmb3IgdGhl
aXIgcHVycG9zZXMuCisKKyAgICAgICAgVGhpcyBjYW4gYmUgZml4ZWQgYnkgZXhwb3NpbmcsIHZp
YSBhIG5ldyBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZSwgYSB3YXkgdG8gZGVjaWRlLCBmb3IgYSBn
aXZlbiBXZWJDb3JlOjpGcmFtZSwgdG8gcHJlLWVtcHQgRE9NIGRpc3BhdGNoIGFuZCBpbnN0ZWFk
IGxldCBhY2Nlc3NpYmlsaXR5IGNhcmV0IGJyb3dzaW5nIHRha2UgcGxhY2UuCisKKyAgICAgICAg
VGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1k
aXNwYXRjaC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJldmVudEtl
eWJvYXJkRE9NRXZlbnREaXNwYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6XSk6CisgICAgICAgICgtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6Zm9yQXR0
cmlidXRlOl0pOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpc3BhdGNoS2V5RXZlbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6a2V5RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6aGFuZGxlS2V5Ym9hcmRTZWxlY3Rpb25Nb3ZlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JB
Y2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuaW46CisKIDIwMTUtMDMtMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBGaW5pc2ggdXAgPHJkYXI6Ly9wcm9ibGVtLzIwMDg2NTQ2PiBb
Q29jb2FdIEFkZCBhbiBvcHRpb24gdG8gdHJlYXQgY2VydGlmaWNhdGUgY2hhaW5zIHdpdGggU0hB
MS1zaWduZWQgY2VydGlmaWNhdGVzIGFzIGluc2VjdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4YjQ5MTVlYzdh
ZDJjZGMzNjRhNWZjYTI1NWJhZDY1MTJmNmNkZTBiLi4yNThiZjYzMmZkMWUxMThkY2FmNjc5ZjZh
ZTE3NWU4OTY0ZWQ1M2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI2MDUsNCArMjYwNSwyMCBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW50cywgY29ucwogICAgIH0KIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkgY29u
c3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgIHJldHVybiBmcmFt
ZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCk7
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0UHJldmVudEtleWJvYXJkRE9NRXZl
bnREaXNwYXRjaChib29sIG9uKQoreworICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZyYW1lLT5zZXR0aW5ncygp
LnNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gob24pOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMTc2ZmFkZTMxYzQ0OWU4YTFiNjdhN2U3OGMw
YmU4M2QwODI1Njc3ZS4uMDQxODhlZTY3YTZhMDg5MzVlM2E0Yjc1YjE5M2E4OTM4MTgwZjYzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKQEAgLTk3OCw2ICs5NzgsMTEgQEAgcHVibGljOgogICAgIC8vIG90aGVyIG9wZXJhdGlv
bnMgdXBkYXRlIHR5cGUgb3BlcmF0aW9ucwogICAgIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYm9vbCBwcmV2ZW50S2V5Ym9hcmRET01F
dmVudERpc3BhdGNoKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKGJvb2wpOworI2VuZGlmCisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShJT1MpCiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDc0MzI0ZjAwNzg2NGUzNDc4NjIyMzAzY2Q2ZTdlNDc4
Y2U3N2ViMDMuLjgwMTQzNjUzOWZmN2NmYjJiMmQ5YTJmMzQ5YTRkOTAzMzhhOTBiMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC00NjQsNiArNDY0LDEwIEBA
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhQ
cmVzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUHJlc2NyaXB0cyIKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5TWF0aFBvc3RzY3JpcHRzQXR0cmlidXRlIEAiQVhNYXRoUG9zdHNjcmlwdHMiCiAKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0dHJp
YnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3Bh
dGNoQXR0cmlidXRlIEAiQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoIgorI2VuZGlm
CisKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUK
ICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGUgQCJB
WENhcmV0QnJvd3NpbmdFbmFibGVkIgogI2VuZGlmCkBAIC0xMzU5LDYgKzEzNjMsNyBAQCBzdGF0
aWMgaWQgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoQVhPYmplY3RDYWNoZSAq
Y2FjaGUsIFZpc2libGVQb3NpdAogICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlVUkxBdHRyaWJ1dGVdOwogICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDYXJldEJyb3dzaW5nRW5hYmxlZEF0dHJpYnV0ZV07
CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVByZXZlbnRLZXli
b2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdOwogICAgICAgICB3ZWJBcmVhQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKICAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKICAgICB9CkBAIC0yOTU4LDYgKzI5NjMsOSBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRFJURWxlbWVudElkQXR0cmlidXRl
Il0pCiAgICAgICAgIHJldHVybiBtX29iamVjdC0+Z2V0QXR0cmlidXRlKGlkQXR0cik7CiAgICAg
CisgICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaEF0
dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmpl
Y3QtPnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKV07CisgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc1dlYkFyZWEoKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Q2FyZXRCcm93c2luZ0VuYWJsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5jYXJldEJyb3dzaW5nRW5hYmxl
ZCgpXTsKICAgICAKQEAgLTMwMzMsNiArMzA0MSw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZh
bHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQog
ICAgICAgICByZXR1cm4gWUVTOwogICAgIAorICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkg
JiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXZlbnRL
ZXlib2FyZERPTUV2ZW50RGlzcGF0Y2hBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gWUVTOwor
ICAgIAogICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRl
XSkKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAKQEAgLTMzNTIsNiArMzM2Myw4IEBAIHN0YXRp
YyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkK
ICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWRSb3dzKTsKICAg
ICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlXSkKICAgICAgICAgbV9vYmplY3QtPnNldEFSSUFHcmFiYmVkKFtu
dW1iZXIgYm9vbFZhbHVlXSk7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzV2ViQXJlYSgpICYm
IFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQcmV2ZW50S2V5
Ym9hcmRET01FdmVudERpc3BhdGNoQXR0cmlidXRlXSkKKyAgICAgICAgbV9vYmplY3QtPnNldFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goW251bWJlciBib29sVmFsdWVdKTsKICAgICBl
bHNlIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNhcmV0QnJvd3NpbmdFbmFibGVkQXR0cmlidXRlXSkKICAg
ICAgICAgbV9vYmplY3QtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKFtudW1iZXIgYm9vbFZhbHVl
XSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNWRkOTdhYWUwY2Q3N2ZiODM5YWQ3ZDZm
MzI0ZmVhZmEwYmZlZjkxYy4uMjIyYWViYzc2N2Y2MjFkZTA5NGUyZjc1MTU1OGMwYjQ1OTNmZTcy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IkV2ZW50RGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUg
IkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiRm9jdXNFdmVudC5oIgpAQCAtMjg5LDYgKzI5MCwxMCBAQCBib29sIEVsZW1lbnQ6
OmRpc3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogYm9v
bCBFbGVtZW50OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYg
cGxhdGZvcm1FdmVudCkKIHsKICAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4gZXZlbnQgPSBLZXli
b2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
KTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAg
IGlmIChmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuYWNjZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9w
b2dhdGlvbihldmVudC5nZXQoKSkpCisgICAgICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9u
KCk7CisgICAgfQogICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhp
cywgZXZlbnQpICYmICFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRlMTVkODIwOGY2ZWM4MTFjNjhiZWJlN2EzZjgxOWVk
MzE1MDhiNjkuLjU2NDdkM2IwMTAxOGE5ZWE2ZmIzMTZlM2Q4MGRhYWVmZmIwNDkwZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMwODcsNiArMzA4Nyw5IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRp
YWxLZXlFdmVudCkKICAgICAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KGVsZW1lbnQpOwogICAgICAg
ICBrZXlkb3duLT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KKyAgICAKKyAgICBpZiAoYWNj
ZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9wb2dhdGlvbihrZXlkb3duLmdldCgpKSkKKyAgICAg
ICAga2V5ZG93bi0+c3RvcFByb3BhZ2F0aW9uKCk7CiAKICAgICBlbGVtZW50LT5kaXNwYXRjaEV2
ZW50KGtleWRvd24sIElHTk9SRV9FWENFUFRJT04pOwogICAgIC8vIElmIGZyYW1lIGNoYW5nZWQg
YXMgYSByZXN1bHQgb2Yga2V5ZG93biBkaXNwYXRjaCwgdGhlbiByZXR1cm4gZWFybHkgdG8gYXZv
aWQgc2VuZGluZyBhIHN1YnNlcXVlbnQga2V5cHJlc3MgbWVzc2FnZSB0byB0aGUgbmV3IGZyYW1l
LgpAQCAtMzIzMCw2ICszMjMzLDI3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpoYW5kbGVLZXlib2Fy
ZFNlbGVjdGlvbk1vdmVtZW50Rm9yQWNjZXNzaWJpbGl0eShLZXlib2FyZEV2ZW50CiAgICAgfQog
fQogCitib29sIEV2ZW50SGFuZGxlcjo6YWNjZXNzaWJpbGl0eVByZXZlbnRzRXZlbnRQcm9wb2dh
dGlvbihLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBp
ZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9mcmFtZS5zZXR0aW5n
cygpLnByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2goKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gQ2hlY2sgZm9yIGtleSBldmVudHMgdGhhdCBhcmUgcmVsZXZhbnQgdG8g
YWNjZXNzaWJpbGl0eTogdGFiIGFuZCBhcnJvd3Mga2V5cyB0aGF0IGNoYW5nZSBmb2N1cworICAg
IGlmIChldmVudC0+a2V5SWRlbnRpZmllcigpID09ICJVKzAwMDkiKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24gPSBmb2N1c0RpcmVjdGlvbkZvcktl
eShldmVudC0+a2V5SWRlbnRpZmllcigpKTsKKyAgICBpZiAoZGlyZWN0aW9uICE9IEZvY3VzRGly
ZWN0aW9uTm9uZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShldmVudCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMzcyMGY2YzE1MzFhMjBhNzUwZGE2MTQ2
YTQ2MzhjZjI5NDlkN2QyNS4uNWRmMjlkMDMzMjg1ZDdhNTljZThhNDc3Yzk2MjNlZTM1YTE2NmM5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0yMzksNiArMjM5LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wga2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50Jik7CiAgICAgdm9pZCBkZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoS2V5Ym9h
cmRFdmVudCopOwogCisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5UHJldmVudHNFdmVudFByb3BvZ2F0
aW9uKEtleWJvYXJkRXZlbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUtleWJv
YXJkU2VsZWN0aW9uTW92ZW1lbnRGb3JBY2Nlc3NpYmlsaXR5KEtleWJvYXJkRXZlbnQqKTsKIAog
ICAgIGJvb2wgaGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVudCog
dW5kZXJseWluZ0V2ZW50ID0gMCwgVGV4dEV2ZW50SW5wdXRUeXBlID0gVGV4dEV2ZW50SW5wdXRL
ZXlib2FyZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCBmNDUzMTRjYTkyZjkwY2IyOTcz
ODI3ZGY0MTViYWVlZjJmZTVhYTQ4Li4yMmQxNWRlMjYwYjA4MDA2Y2FmNTdkMGZiYjYwM2Y2ZWJk
OWQ2YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTQ1LDYgKzQ1LDcgQEAgbWF4aW11
bUhUTUxQYXJzZXJET01UcmVlRGVwdGggdHlwZT11bnNpZ25lZCwgaW5pdGlhbD1kZWZhdWx0TWF4
aW11bUhUTUxQYXJzZXJET00KIGxvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0
aW5nIGluaXRpYWw9ZmFsc2UKIAogY2FyZXRCcm93c2luZ0VuYWJsZWQgaW5pdGlhbD1mYWxzZQor
cHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCBpbml0aWFsPWZhbHNlCiBsb2NhbFN0b3Jh
Z2VFbmFibGVkIGluaXRpYWw9ZmFsc2UKIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
IGluaXRpYWw9dHJ1ZQogYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIGluaXRpYWw9dHJ1ZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGQ4Zjg1YmY3NThmZDBmYTI3ZDcxYTEyZTQ3MmQxM2ViYzNiMDk4ZWMuLmQxZGVjODhm
MDFmZDQ5ZTA5M2UxNTAwNzE3NjlkMWY1OWY2ZjljNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxNS0wMy0xMiAgRG91ZyBSdXNzZWxsICA8ZF9ydXNzZWxsQGFwcGxlLmNvbT4KKworICAgICAg
ICBBWDogUHJvdmlkZSBBUEkgZm9yIGFzc2lzdGl2ZSB0ZWNoIHRvIGlnbm9yZSBET00ga2V5IGV2
ZW50IGhhbmRsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDIwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBc3Npc3RpdmUgdGVjaG5vbG9neSBhcHBsaWNhdGlvbnMgb24gdGhlIGRlc2t0b3AgYXJl
IGhlYXZpbHkgZGVwZW5kZW50IG9uIGtleWJvYXJkIG5hdmlnYXRpb24gYmVpbmcgcmVsaWFibGUu
IFRoaXMgaXMgZ3JlYXRseSBoaW5kZXJlZCBieSBzaXRlcyB0aGF0IGhhbmRsZSBrZXkgZXZlbnRz
IHdpdGhvdXQgdXBkYXRpbmcga2V5Ym9hcmQgc2VsZWN0aW9uIGFuZCB0aGVuIGNvbnN1bWUgdGhl
IGV2ZW50LiBJdCBpcyBpbXBvcnRhbnQgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IGFwcHMgdG8g
YWxsb3cgdXNlcnMgdG8gZGVjaWRlIHRvIGlnbm9yZSB0aGVzZSBoYW5kbGVycyB0aGF0IGFyZSBp
bmNvcnJlY3QgZm9yIHRoZWlyIHB1cnBvc2VzLgorCisgICAgICAgIFRoaXMgY2FuIGJlIGZpeGVk
IGJ5IGV4cG9zaW5nLCB2aWEgYSBuZXcgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGUsIGEgd2F5IHRv
IGRlY2lkZSwgZm9yIGEgZ2l2ZW4gV2ViQ29yZTo6RnJhbWUsIHRvIHByZS1lbXB0IERPTSBkaXNw
YXRjaCBhbmQgaW5zdGVhZCBsZXQgYWNjZXNzaWJpbGl0eSBjYXJldCBicm93c2luZyB0YWtlIHBs
YWNlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9wYXJlbnQtZGVsZXRlLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9w
cmV2ZW50LWtleWJvYXJkLWV2ZW50LWRpc3BhdGNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1k
aXNwYXRjaC5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGVzZSBoaWRwaSBmaWx0ZXIgdGVzdHMgcGFz
cyBzb21ldGltZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVu
dC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9wYXJlbnQt
ZGVsZXRlLWV4cGVjdGVkLnR4dAppbmRleCA0MjQ2NzU0NmUyNDRiM2U5NTgwMDEzN2QyYzA1YjJi
N2E0N2NmYmY5Li45MjFhYjc4YTExZDljMDc3NDJlYjlhZTViN2Q4MzQ5NWY0ZjA3YjdlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcGFyZW50LWRlbGV0ZS1leHBlY3Rl
ZC50eHQKQEAgLTI4LDUgKzI4LDYgQEAgQVhMYXlvdXRDb3VudDogMgogQVhMb2FkaW5nUHJvZ3Jl
c3M6IDEKIEFYVVJMOiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3BhcmVudC1kZWxldGUuaHRt
bAogQVhDYXJldEJyb3dzaW5nRW5hYmxlZDogMAorQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERp
c3BhdGNoOiAwCiBBWEVsZW1lbnRCdXN5OiAwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2RvY3VtZW50LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQKaW5kZXggOGY0YmFlMTY3MWQ4NTQ0YzVmMjE2N2VlNGQ5NDEwYzAz
ZDY5ZDczMi4uYjE5NTgyNjRkZjJhYTA1NjQxYzg2MjgxMDliNTgzMjVhYThjNzMyMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZG9jdW1lbnQtYXR0
cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvZG9jdW1lbnQtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTI3LDYgKzI3LDcg
QEAgQVhMYXlvdXRDb3VudDogMgogQVhMb2FkaW5nUHJvZ3Jlc3M6IDEKIEFYVVJMOiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVzLmh0bWwK
IEFYQ2FyZXRCcm93c2luZ0VuYWJsZWQ6IDAKK0FYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNw
YXRjaDogMAogQVhFbGVtZW50QnVzeTogMAogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQtZXZlbnQtZGlzcGF0Y2gt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJl
dmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRk
NmI4MmU5Yzg2MWU5MjVkYjE5ZjFmMDk2MjIxOWI2NmYyMzNkYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3ByZXZlbnQta2V5Ym9hcmQt
ZXZlbnQtZGlzcGF0Y2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjkgQEAKKzEKKworMgorCisy
CisKK1RoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFuZGxlcnMgdGhhdCBjb25z
dW1lIGtleSBldmVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdl
YkFyZWEucm9sZSBpcyAnQVhSb2xlOiBBWFdlYkFyZWEnCitQQVNTIGNhcmV0QnJvd3NpbmdFbmFi
bGVkKHdlYkFyZWEpIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuaGFu
Y2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQgaXMgZmFsc2UKK1BBU1MgcHJldmVudEtleWJvYXJkRE9N
RXZlbnREaXNwYXRjaCh3ZWJBcmVhKSBpcyBmYWxzZQorUEFTUyBlbGVtZW50QXRTdGFydE1hcmtl
ck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IDEnCitQQVNTIGVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3Rh
cnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlz
ICdBWFZhbHVlOiAxJworUEFTUyBrZXljb3VudCgpIGlzICcyJworUEFTUyBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIGlzIHRydWUKK1BBU1MgcHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhKSBpcyB0cnVlCitQQVNTIGVsZW1l
bnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdW
YWx1ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVk
VGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiAxJworUEFT
UyBlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSku
c3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IDInCitQQVNTIGtleWNvdW50KCkgaXMgJzInCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcHJldmVudC1rZXlib2Fy
ZC1ldmVudC1kaXNwYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvcHJldmVudC1rZXlib2FyZC1ldmVudC1kaXNwYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhj
NThmM2RlNTFhY2YzZWYxYjJhMGU3YzMzYjlmZGVhOTk1MTRhMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9wcmV2ZW50LWtleWJvYXJk
LWV2ZW50LWRpc3BhdGNoLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiIG9ua2V5
ZG93bj0icmV0dXJuIGtleWRvd24oKTsiPgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gcHJl
dmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhKSB7CisgICAgICAgIHJldHVybiB3
ZWJBcmVhLmJvb2xBdHRyaWJ1dGVWYWx1ZSgiQVhQcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3Bh
dGNoIik7CisgICAgfQorICAgIGZ1bmN0aW9uIHNldFByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlz
cGF0Y2god2ViQXJlYSwgdmFsdWUpIHsKKyAgICAgICAgd2ViQXJlYS5zZXRCb29sQXR0cmlidXRl
VmFsdWUoIkFYUHJldmVudEtleWJvYXJkRE9NRXZlbnREaXNwYXRjaCIsIHZhbHVlKTsKKyAgICB9
CisgICAgZnVuY3Rpb24ga2V5ZG93bihldmVudCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJrZXlkb3duY291bnQiKTsKKyAgICAgICAgZWxlbWVudC5p
bm5lckhUTUwgPSBwYXJzZUludChlbGVtZW50LmlubmVySFRNTCkgKyAxOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIGZ1bmN0aW9uIGtleWNvdW50KCkgeworICAgICAgICByZXR1
cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtleWRvd25jb3VudCIpLmlubmVySFRNTDsKKyAg
ICB9CisgICAgPC9zY3JpcHQ+CisgICAgPGRpdj4KKyAgICAgICAgPHA+MTwvcD4KKyAgICAgICAg
PHA+MjwvcD4KKyAgICAgICAgPHAgaWQ9ImtleWRvd25jb3VudCI+MDxwPgorICAgIDwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgaWdub3JpbmcgamF2YXNjcmlwdCBrZXkgaGFuZGxlcnMgdGhhdCBjb25z
dW1lIGtleSBldmVudHMuIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisKKyAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKworICAgICAgICAgICAg
dmFyIHdlYkFyZWEgPSBjbGVhclNlbGVjdGlvbkFuZEZvY3VzT25XZWJBcmVhKCk7CisgICAgICAg
ICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHko
ZmFsc2UpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVu
aGFuY2VkQWNjZXNzaWJpbGl0eUVuYWJsZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNldFBy
ZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSwgZmFsc2UpOworICAgICAgICAg
ICAgc2hvdWxkQmUoInByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2god2ViQXJlYSkiLCAi
ZmFsc2UiKTsKKworICAgICAgICAgICAgLy8gQXJyb3dpbmcgYmVmb3JlIGVuYWJsaW5nIEFYIGFu
ZCBpZ25vcmUgZG9tIGhhbmRsZXJzIHdvbid0IG1vdmUgdGhlIGNhcmV0CisgICAgICAgICAgICBz
aG91bGRCZSgiZWxlbWVudEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdl
YkFyZWEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIua2V5RG93bigicmlnaHRBcnJvdyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1l
bnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
InJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtl
ck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2ViQXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFs
dWU6IDEnIik7CisKKyAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIGhhbmRsZXIgcmVj
ZWl2ZWQgMiBrZXlzIGV2ZW50cworICAgICAgICAgICAgc2hvdWxkQmUoImtleWNvdW50KCkiLCAi
JzInIik7CisKKyAgICAgICAgICAgIC8vIEVuYWJsZSBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5IChu
ZWNlc3NhcnkgZm9yIGFjY2Vzc2liaWxpdHkgc3BlY2lmaWMgc2VsZWN0aW9uIGhhbmRsaW5nKS4K
KyAgICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNz
aWJpbGl0eSh0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5lbmhhbmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkIiwgInRydWUiKTsKKworICAgICAgICAg
ICAgLy8gRW5hYmxlIElnbm9yZURPTUtleUV2ZW50SGFuZGxlcnMgc28gdGhhdCB0aGUgamF2YXNj
cmlwdCBoYW5kbGVyIHdpbGwgYmUgc2tpcHBlZAorICAgICAgICAgICAgc2V0UHJldmVudEtleWJv
YXJkRE9NRXZlbnREaXNwYXRjaCh3ZWJBcmVhLCB0cnVlKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJwcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEpIiwgInRydWUiKTsKKwor
ICAgICAgICAgICAgc2hvdWxkQmUoImVsZW1lbnRBdFN0YXJ0TWFya2VyT2ZTZWxlY3RlZFRleHRN
YXJrZXJSYW5nZSh3ZWJBcmVhKS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogMSciKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oInJpZ2h0QXJyb3ciKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJlbGVtZW50QXRTdGFydE1hcmtlck9mU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Uod2Vi
QXJlYSkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IDEnIik7CisgICAgICAgICAgICBldmVudFNl
bmRlci5rZXlEb3duKCJyaWdodEFycm93Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZWxlbWVu
dEF0U3RhcnRNYXJrZXJPZlNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKHdlYkFyZWEpLnN0cmluZ1Zh
bHVlIiwgIidBWFZhbHVlOiAyJyIpOworCisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRo
ZSBoYW5kbGVyIGRpZG4ndCByZWNlaXZlIGFueSBtb3JlIGtleSBldmVudHMKKyAgICAgICAgICAg
IHNob3VsZEJlKCJrZXljb3VudCgpIiwgIicyJyIpOworCisgICAgICAgICAgICBzZXRQcmV2ZW50
S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKHdlYkFyZWEsIGZhbHNlKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>