<?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>65044</bug_id>
          
          <creation_ts>2011-07-22 13:28:58 -0700</creation_ts>
          <short_desc>[chromium] Layering violations in gesture recognizer</short_desc>
          <delta_ts>2011-08-18 09:05:43 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65225</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>rjkroege</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441128</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-22 13:28:58 -0700</bug_when>
    <thetext>The PlatformGestureRecognizer and its Chromium platform implementation violate WebKit layering conventions. Prior to further extending the gesture recognizer, this needs to be corrected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441796</commentid>
    <comment_count>1</comment_count>
      <attachid>101893</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-25 12:26:52 -0700</bug_when>
    <thetext>Created attachment 101893
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441797</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-25 12:30:43 -0700</bug_when>
    <thetext>Adam, please have a look at this patch. I have refactored to correct the layering violation that you pointed out and that we have previously discussed. I think the changes have made for a better API. Note that I have not fixed any of the pre-existing issues in the code -- I&apos;ll fix them next if this looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441800</commentid>
    <comment_count>3</comment_count>
      <attachid>101894</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-25 12:44:53 -0700</bug_when>
    <thetext>Created attachment 101894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441829</commentid>
    <comment_count>4</comment_count>
      <attachid>101894</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-25 13:36:46 -0700</bug_when>
    <thetext>Comment on attachment 101894
Patch

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

This looks good.  Below are a bunch of nit-picky style issues, but I&apos;d like to see this patch one more time before landing.  Thanks for the patch!

&gt; Source/WebCore/ChangeLog:12
&gt; +    Divided the gesture recognizer up to correct a layering
&gt; +    violation by moving gesture implementation from it to
&gt; +    EventHandler::handleGestureEvent so that the gesture recognizer
&gt; +    could simply be an engine for generating gesture events from
&gt; +    touch events.

Look like you might have trouble with tabs / indent.

&gt; Source/WebCore/page/EventHandler.cpp:2225
&gt; +        // FIXME: refactor for hit testing only once having addressed the above fixme.

Can you make this comment a complete sentence?

&gt; Source/WebCore/page/EventHandler.cpp:2234
&gt; +        }
&gt; +        break;

Do we need this break if we always return true?  (Also, the } should be indented one level less.)

&gt; Source/WebCore/page/EventHandler.cpp:2236
&gt; +        // FIXME: interim implementation pending addressing the fixme above.

Comments should be complete sentences.

&gt; Source/WebCore/page/EventHandler.cpp:2237
&gt; +        PlatformWheelEvent syntheticWheelEvent(gestureEvent.position(), gestureEvent.globalPosition(), gestureEvent.deltaX(), gestureEvent.deltaY(), gestureEvent.deltaX() / 120.0f, gestureEvent.deltaY() / 120.0f, ScrollByPixelWheelEvent, /* isAccepted */ false, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey());

Should 120.0f be a named constant?

&gt; Source/WebCore/page/EventHandler.cpp:2241
&gt; +        }
&gt; +        break;

Same comment.

&gt; Source/WebCore/page/EventHandler.cpp:2248
&gt; +        view-&gt;handleGestureEvent(gestureEvent);

Strange that this case falls through but the other cases return true explicitly.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:37
&gt;  

Can we remove the EventHandler include now?

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:106
&gt; +void InnerGestureRecognizer::constructClickGestureEvent(const PlatformTouchPoint&amp; touchPoint, Gestures* gestures)

construct =&gt; append ?

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:118
&gt; +    Vector&lt;PlatformGestureEvent&gt;* gestures = new Vector&lt;PlatformGestureEvent&gt;();

OwnPtr pls.  We shouldn&apos;t have (hardly) any &quot;naked new&quot; calls.  In this case, new should be wrapped in adoptPtr immediately.

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:130
&gt; +void InnerGestureRecognizer::constructScrollGesture(const PlatformTouchPoint&amp; touchPoint, Gestures *gestures)

construct =&gt; append as well, probably.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:534
&gt; +// FIXME: Opportunity to refactor this with EventHandler::handleGestureEvent

Another comment that should be a complete sentence.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:547
&gt; +        return true;
&gt; +        }
&gt; +        break;

Same comment.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:555
&gt; +    default:
&gt; +        break;

We usually omit the default case and list any non-handled enums explicitly.

&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1999
&gt; +        webView-&gt;resetGestureRecognizer();

Do you mean to intent this line this far?  If so, you might need { } around the if above.

&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:145
&gt; +    m_widget-&gt;handleGestureEvent((*gestureEvents)[i]);

Bad indent

&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:268
&gt; +        return TouchEvent(*static_cast&lt;const WebTouchEvent*&gt;(&amp;inputEvent));
&gt; +        break;

Another example of return-followed-by-break.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:771
&gt; +    bool defaultPrevented(mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleTouchEvent(touchEventBuilder));

Please use the assignment form of the constructor.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:776
&gt; +            mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent((*gestureEvents)[i]);

Another wild intent.

(*gestureEvents)[i] can be written more nicely as gestureEvents-&gt;at(i)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442471</commentid>
    <comment_count>5</comment_count>
      <attachid>101894</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-26 12:55:34 -0700</bug_when>
    <thetext>Comment on attachment 101894
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +    touch events.
&gt; 
&gt; Look like you might have trouble with tabs / indent.

apparently my &quot;clever&quot; script to check spacing is buggy. fixed, p3

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2225
&gt;&gt; +        // FIXME: refactor for hit testing only once having addressed the above fixme.
&gt; 
&gt; Can you make this comment a complete sentence?

done, p3

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2234
&gt;&gt; +        break;
&gt; 
&gt; Do we need this break if we always return true?  (Also, the } should be indented one level less.)

done, p3

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2236
&gt;&gt; +        // FIXME: interim implementation pending addressing the fixme above.
&gt; 
&gt; Comments should be complete sentences.

done, p3

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2237
&gt;&gt; +        PlatformWheelEvent syntheticWheelEvent(gestureEvent.position(), gestureEvent.globalPosition(), gestureEvent.deltaX(), gestureEvent.deltaY(), gestureEvent.deltaX() / 120.0f, gestureEvent.deltaY() / 120.0f, ScrollByPixelWheelEvent, /* isAccepted */ false, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey());
&gt; 
&gt; Should 120.0f be a named constant?

Yes. Done. And I tried to make it more obvious where the constant came from.

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2241
&gt;&gt; +        break;
&gt; 
&gt; Same comment.

done, p3

&gt;&gt; Source/WebCore/page/EventHandler.cpp:2248
&gt;&gt; +        view-&gt;handleGestureEvent(gestureEvent);
&gt; 
&gt; Strange that this case falls through but the other cases return true explicitly.

I needed one outside the switch to make the compiler happy. Added one inside for consistency.

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:37
&gt;&gt;  
&gt; 
&gt; Can we remove the EventHandler include now?

Definitely. Oversight rectified in p3.

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:106
&gt;&gt; +void InnerGestureRecognizer::constructClickGestureEvent(const PlatformTouchPoint&amp; touchPoint, Gestures* gestures)
&gt; 
&gt; construct =&gt; append ?

done in p3.

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:118
&gt;&gt; +    Vector&lt;PlatformGestureEvent&gt;* gestures = new Vector&lt;PlatformGestureEvent&gt;();
&gt; 
&gt; OwnPtr pls.  We shouldn&apos;t have (hardly) any &quot;naked new&quot; calls.  In this case, new should be wrapped in adoptPtr immediately.

done in p3.

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.cpp:130
&gt;&gt; +void InnerGestureRecognizer::constructScrollGesture(const PlatformTouchPoint&amp; touchPoint, Gestures *gestures)
&gt; 
&gt; construct =&gt; append as well, probably.

done in p3

&gt;&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:534
&gt;&gt; +// FIXME: Opportunity to refactor this with EventHandler::handleGestureEvent
&gt; 
&gt; Another comment that should be a complete sentence.

done in p3

&gt;&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:547
&gt;&gt; +        break;
&gt; 
&gt; Same comment.

done, p3

&gt;&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:555
&gt;&gt; +        break;
&gt; 
&gt; We usually omit the default case and list any non-handled enums explicitly.

done, p3

&gt;&gt; Source/WebKit/chromium/src/WebFrameImpl.cpp:1999
&gt;&gt; +        webView-&gt;resetGestureRecognizer();
&gt; 
&gt; Do you mean to intent this line this far?  If so, you might need { } around the if above.

fixed.

&gt;&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:145
&gt;&gt; +    m_widget-&gt;handleGestureEvent((*gestureEvents)[i]);
&gt; 
&gt; Bad indent

fixed, p3

&gt;&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:268
&gt;&gt; +        break;
&gt; 
&gt; Another example of return-followed-by-break.

also fixed. p3

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:771
&gt;&gt; +    bool defaultPrevented(mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleTouchEvent(touchEventBuilder));
&gt; 
&gt; Please use the assignment form of the constructor.

done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:776
&gt;&gt; +            mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent((*gestureEvents)[i]);
&gt; 
&gt; Another wild intent.
&gt; 
&gt; (*gestureEvents)[i] can be written more nicely as gestureEvents-&gt;at(i)

nice. thanks. done in p3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442477</commentid>
    <comment_count>6</comment_count>
      <attachid>102044</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-26 13:01:08 -0700</bug_when>
    <thetext>Created attachment 102044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442527</commentid>
    <comment_count>7</comment_count>
      <attachid>102044</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 14:26:31 -0700</bug_when>
    <thetext>Comment on attachment 102044
Patch

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

This looks great.  The comments below are only about whitespace.  :)

&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.h:52
&gt; +    typedef Vector&lt;PlatformGestureEvent&gt;*  Gestures;

Looks like you&apos;ve got an extra space on this line.

&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:269
&gt;      default:
&gt;          break;

I know this was here already, but the default case should be removed.

&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.h:150
&gt; +
&gt; +    

These lines are extraneous.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:776
&gt; +            mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(gestureEvents-&gt;at(i));

Too much indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442549</commentid>
    <comment_count>8</comment_count>
      <attachid>102044</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-26 14:51:08 -0700</bug_when>
    <thetext>Comment on attachment 102044
Patch

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

&gt;&gt; Source/WebCore/platform/chromium/GestureRecognizerChromium.h:52
&gt;&gt; +    typedef Vector&lt;PlatformGestureEvent&gt;*  Gestures;
&gt; 
&gt; Looks like you&apos;ve got an extra space on this line.

done, p4

&gt;&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.cpp:269
&gt;&gt;          break;
&gt; 
&gt; I know this was here already, but the default case should be removed.

done, p4. Thanks for encouraging always making it better.

&gt;&gt; Source/WebKit/chromium/src/WebPopupMenuImpl.h:150
&gt;&gt; +    
&gt; 
&gt; These lines are extraneous.

done, p4

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:776
&gt;&gt; +            mainFrameImpl()-&gt;frame()-&gt;eventHandler()-&gt;handleGestureEvent(gestureEvents-&gt;at(i));
&gt; 
&gt; Too much indent.

also done, p4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442570</commentid>
    <comment_count>9</comment_count>
      <attachid>102061</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-26 15:21:51 -0700</bug_when>
    <thetext>Created attachment 102061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442578</commentid>
    <comment_count>10</comment_count>
      <attachid>102064</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-26 15:39:02 -0700</bug_when>
    <thetext>Created attachment 102064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442579</commentid>
    <comment_count>11</comment_count>
      <attachid>102064</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 15:41:45 -0700</bug_when>
    <thetext>Comment on attachment 102064
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442692</commentid>
    <comment_count>12</comment_count>
      <attachid>102064</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 18:52:34 -0700</bug_when>
    <thetext>Comment on attachment 102064
Patch

Clearing flags on attachment: 102064

Committed r91809: &lt;http://trac.webkit.org/changeset/91809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442694</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 18:52:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442710</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 19:44:04 -0700</bug_when>
    <thetext>This patch had some trouble building on Chromium-Win.  I&apos;m not entirely sure why:

http://build.webkit.org/builders/Chromium%20Win%20Release/builds/28808/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444044</commentid>
    <comment_count>15</comment_count>
      <attachid>102381</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-29 12:48:01 -0700</bug_when>
    <thetext>Created attachment 102381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444046</commentid>
    <comment_count>16</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-07-29 12:50:45 -0700</bug_when>
    <thetext>Adam: please take another look. Fixed the build on windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444119</commentid>
    <comment_count>17</comment_count>
      <attachid>102381</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 14:41:34 -0700</bug_when>
    <thetext>Comment on attachment 102381
Patch

Clearing flags on attachment: 102381

Committed r92011: &lt;http://trac.webkit.org/changeset/92011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444120</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 14:41:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444173</commentid>
    <comment_count>19</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-07-29 16:35:01 -0700</bug_when>
    <thetext>OK, I rolled out this patch due to Chrome Win Link failure.

http://trac.webkit.org/changeset/92032

webkit-patch rollout didn&apos;t finish on my machine so I manually reopen this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444174</commentid>
    <comment_count>20</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-07-29 16:36:24 -0700</bug_when>
    <thetext>error LNK2019: unresolved external symbol &quot;public: void __thiscall WebCore::ScrollableArea::handleGestureEvent(class WebCore::PlatformGestureEvent const &amp;)&quot; (?handleGestureEvent@ScrollableArea@WebCore@@QAEXABVPlatformGestureEvent@2@@Z) referenced in function &quot;public: bool __thiscall WebCore::EventHandler::handleGestureEvent(class WebCore::PlatformGestureEvent const &amp;)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444175</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-29 16:39:35 -0700</bug_when>
    <thetext>I looked at trying to fix this before the rollout and I couldn&apos;t figure it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444665</commentid>
    <comment_count>22</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-01 05:18:17 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I looked at trying to fix this before the rollout and I couldn&apos;t figure it out.

I&apos;m ashamed that my theoretically corrected patch had the same problem. I&apos;m also most perplexed: the patch passed on the windows layout try bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444792</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-01 12:07:31 -0700</bug_when>
    <thetext>Maybe we should try landing the patch in small pieces to narrow down the problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444906</commentid>
    <comment_count>24</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-01 15:05:57 -0700</bug_when>
    <thetext>I think I understand. The build problem with this patch seems to an example of http://code.google.com/p/chromium/issues/detail?id=85789 -- I changed features.gypi and some .o files which ought to have have been recompiled remained un-clobbered.

My try jobs passed because I had commented out experimental code in the files causing the link errors. This had the side-effect of accidentally forcing sufficient re-compilations. I removed the comments while preparing my final patch and assumed naively that it would not alter the build result. Shucks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444908</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-01 15:08:35 -0700</bug_when>
    <thetext>So, we should re-land and clobber?  Maybe we should put the comments back in so they&apos;ll trigger the re-build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444923</commentid>
    <comment_count>26</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-01 15:25:00 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; So, we should re-land and clobber?  Maybe we should put the comments back in so they&apos;ll trigger the re-build?

Clobbering would seem to be the reliable recommended course based on an irc discussion. I will upload a new patch tomorrow that compiles cleanly on windows and email the gardeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445416</commentid>
    <comment_count>27</comment_count>
      <attachid>102676</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-02 12:21:19 -0700</bug_when>
    <thetext>Created attachment 102676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445421</commentid>
    <comment_count>28</comment_count>
      <attachid>102676</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 12:24:38 -0700</bug_when>
    <thetext>Comment on attachment 102676
Patch

Is this patch going to require a clobber?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445441</commentid>
    <comment_count>29</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-02 12:46:57 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 102676 [details])
&gt; Is this patch going to require a clobber?

yes. I sent email to the gardeners about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445477</commentid>
    <comment_count>30</comment_count>
      <attachid>102676</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 13:09:32 -0700</bug_when>
    <thetext>Comment on attachment 102676
Patch

Ok.  Let&apos;s rock and roll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445533</commentid>
    <comment_count>31</comment_count>
      <attachid>102676</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 14:27:16 -0700</bug_when>
    <thetext>Comment on attachment 102676
Patch

Clearing flags on attachment: 102676

Committed r92234: &lt;http://trac.webkit.org/changeset/92234&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445534</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-02 14:27:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449102</commentid>
    <comment_count>33</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-10 05:37:10 -0700</bug_when>
    <thetext>Could you explain a bit what layering violation this is fixing?



On an unrelated note, I am really, really not a fan of PlatformGestureEvent::TapType.

The reason is the events you added with this patch are fundamentally different from the other GestureEvent. The native gesture and gesture from touch are orthogonal concepts.

On Windows, you get the native gesture events only if you do not handle touch events. So previously the PlatformGestureEvent had nothing to do with the touch integration.

You can quickly get into tricky issues. For example a PlatformGestureEvent for tap and hold would behave differently if it is the real platform event or a fake event originating from touch (one case cancel the touch event, the other does not).

I think we should not mix native gesture events and the one originating from full touch support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449148</commentid>
    <comment_count>34</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-10 07:57:43 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Could you explain a bit what layering violation this is fixing?


The previous version of the gesture recognizer code took a reference to a WebCore::EventHandler object that it used to inject synthetic events. Adam Barth told me that this violated a WebKit convention that WebCore objects (EventHandler) should never get passed to the platform layer (gesture recognizer). Dividing the code into gesture recognition creating gesture events and event handling implementation for gesture events resolved this violation.

&gt; 
&gt; 
&gt; 
&gt; On an unrelated note, I am really, really not a fan of PlatformGestureEvent::TapType.
&gt; 
&gt; The reason is the events you added with this patch are fundamentally different from the other GestureEvent. The native gesture and gesture from touch are orthogonal concepts.
&gt; 
&gt; On Windows, you get the native gesture events only if you do not handle touch events. So previously the PlatformGestureEvent had nothing to do with the touch integration.
&gt; 
&gt; You can quickly get into tricky issues. For example a PlatformGestureEvent for tap and hold would behave differently if it is the real platform event or a fake event originating from touch (one case cancel the touch event, the other does not).
&gt; 
&gt; I think we should not mix native gesture events and the one originating from full touch support.

Shucks. I&apos;m happy to try to fix this. 

To preserve the layering separation from this patch, I need to have some kind of synthetic event that is constructed by the gesture recognizer and then handle these synthetic events.

So, what if I reverted the changes to PlatformGestureEvent and instead have the gesture recognizer create a completely separate alternative kind of event? I could call these &quot;PlatformSyntheticEvents&quot; maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449159</commentid>
    <comment_count>35</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-10 08:22:31 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; Could you explain a bit what layering violation this is fixing?
&gt; 
&gt; 
&gt; The previous version of the gesture recognizer code took a reference to a WebCore::EventHandler object that it used to inject synthetic events. Adam Barth told me that this violated a WebKit convention that WebCore objects (EventHandler) should never get passed to the platform layer (gesture recognizer). Dividing the code into gesture recognition creating gesture events and event handling implementation for gesture events resolved this violation.

Ok, I did not see that at all like that.

For me GestureManager was a WebCore object and happen to have some port specific part to it. I was hoping the code would evolve in such a way that the gesture recognition would become common to the ports.

This patch changed the GestureManager to be a Chromium specificity with a weird handling faking native gestures.

&gt; To preserve the layering separation from this patch, I need to have some kind of synthetic event that is constructed by the gesture recognizer and then handle these synthetic events.
&gt; 
&gt; So, what if I reverted the changes to PlatformGestureEvent and instead have the gesture recognizer create a completely separate alternative kind of event? I could call these &quot;PlatformSyntheticEvents&quot; maybe?

What I was doing for WebKit2 is exposing new functions to event handler (in our case the gesture recognition happen on the UIProcess side): https://bugs.webkit.org/show_bug.cgi?id=65545

Scrolling and zooming are handled differently in some case on mobile (the page is suspended during the scrolling, and gets only one event when the scrolling ends).

I think PlatformSyntheticEvents can do the trick but I do not see the value over having specific functions in EventHandler. For touch interface, we generally also call functions prior to the events in order to highlight what is under the finger. This does not map easily into events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449161</commentid>
    <comment_count>36</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-10 08:26:43 -0700</bug_when>
    <thetext>And some background info about the layer violation problem :)

I am unhappy about the current state of gesture on the web because there are as many implementation as there are browsers which make the life impossible for content authors.

So what happen today is every author target the iOS implementation.

I was hopping to have something in common some day so we can end this mess (following iOS for compatibility).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453076</commentid>
    <comment_count>37</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-18 08:59:15 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Could you explain a bit what layering violation this is fixing?
&gt; 
&gt; 
&gt; 
&gt; On an unrelated note, I am really, really not a fan of PlatformGestureEvent::TapType.
&gt; 
&gt; The reason is the events you added with this patch are fundamentally different from the other GestureEvent. The native gesture and gesture from touch are orthogonal concepts.

I definitely agree that TapType is different. The logical fix would be to create a different object type.

I persuaded myself that using PlatformGestureEvent was OK because PlatformGestureEvent::ScrollStart and ::ScrollEnd align really well with how they&apos;re used for touch-initiated scroll.


&gt; 
&gt; On Windows, you get the native gesture events only if you do not handle touch events. So previously the PlatformGestureEvent had nothing to do with the touch integration.
&gt; 
&gt; You can quickly get into tricky issues. For example a PlatformGestureEvent for tap and hold would behave differently if it is the real platform event or a fake event originating from touch (one case cancel the touch event, the other does not).
&gt; 
&gt; I think we should not mix native gesture events and the one originating from full touch support.

OK. This sounds reasonable. I&apos;ll be sending you a CL that creates a different event-like object. I&apos;ll call it a SyntheticGestureEvent.

I imagine the following mapping:

SGE::OneTouchDown follows a touchPressed. Its position determines the target element for the remaining one-finger gestures. Link highlighting would be initiated here.

SGE::TapRelease dispatches the click after the TouchReleased

SGE::ScrollStart -&gt; as PGE::ScrollStart after a TouchMoved
SGE::ScrollUpdate -&gt; PGE::wheelEvent (updates velocity, etc.) after a TouchMoved
SGE::ScrollStop -&gt; as PGE::ScrollStop (finger has left screen, flick in progress if velocity is sufficient.)after the TouchReleased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453079</commentid>
    <comment_count>38</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-18 09:03:09 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; Could you explain a bit what layering violation this is fixing?
&gt; &gt; 
&gt; &gt; 
&gt; &gt; The previous version of the gesture recognizer code took a reference to a WebCore::EventHandler object that it used to inject synthetic events. Adam Barth told me that this violated a WebKit convention that WebCore objects (EventHandler) should never get passed to the platform layer (gesture recognizer). Dividing the code into gesture recognition creating gesture events and event handling implementation for gesture events resolved this violation.
&gt; 
&gt; Ok, I did not see that at all like that.
&gt; 
&gt; For me GestureManager was a WebCore object and happen to have some port specific part to it. I was hoping the code would evolve in such a way that the gesture recognition would become common to the ports.
&gt; 
&gt; This patch changed the GestureManager to be a Chromium specificity with a weird handling faking native gestures.
&gt; 
&gt; &gt; To preserve the layering separation from this patch, I need to have some kind of synthetic event that is constructed by the gesture recognizer and then handle these synthetic events.
&gt; &gt; 
&gt; &gt; So, what if I reverted the changes to PlatformGestureEvent and instead have the gesture recognizer create a completely separate alternative kind of event? I could call these &quot;PlatformSyntheticEvents&quot; maybe?
&gt; 
&gt; What I was doing for WebKit2 is exposing new functions to event handler (in our case the gesture recognition happen on the UIProcess side): https://bugs.webkit.org/show_bug.cgi?id=65545
&gt; 
&gt; Scrolling and zooming are handled differently in some case on mobile (the page is suspended during the scrolling, and gets only one event when the scrolling ends).
&gt; 
&gt; I think PlatformSyntheticEvents can do the trick but I do not see the value over having specific functions in EventHandler. 

I think that the Synthetic objects enforce a separation between the recognition of gestures and the implementation of the gestures.

&gt; For touch interface, we generally also call functions prior to the events in order to highlight what is under the finger. This does not map easily into events.

Per previous comment: this an be done with the two-phase event sequence. Highlight could be added to handleTouchEvent but doing via a synthetic event can keep the highlight out of the handleTouchEvent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453080</commentid>
    <comment_count>39</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2011-08-18 09:05:43 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; And some background info about the layer violation problem :)
&gt; 
&gt; I am unhappy about the current state of gesture on the web because there are as many implementation as there are browsers which make the life impossible for content authors.
&gt; 
&gt; So what happen today is every author target the iOS implementation.
&gt; 
&gt; I was hopping to have something in common some day so we can end this mess (following iOS for compatibility).

I am planning on adding support to the gesture recognizer to recognize touch sequences that should generate GestureEvents per http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/GestureEventClassReference/GestureEvent/GestureEvent.html#//apple_ref/javascript/cl/GestureEvent

and using these to drive zoom animation.

I can easily modify the gesture recognizer to make it possible to have this feature separate from the existing scroll recognition. Thoughts?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101893</attachid>
            <date>2011-07-25 12:26:52 -0700</date>
            <delta_ts>2011-07-25 12:44:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110725152705.patch</filename>
            <type>text/plain</type>
            <size>40346</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDE1NGYyMWYxNWY2ZGQ2
YmYxY2IzZWY5MzY1M2M0ZDUwNzc2MDkwLi42YWE5NmI3MTkxOTcxY2UwMzU3MTZiYjVjOWVmNzI4
ODUxNWI3M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDctMjUgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICBEaXZpZGVkIHRoZSBnZXN0dXJlIHJlY29nbml6
ZXIgdXAgdG8gY29ycmVjdCBhIGxheWVyaW5nCisgICAgdmlvbGF0aW9uIGJ5IG1vdmluZyBnZXN0
dXJlIGltcGxlbWVudGF0aW9uIGZyb20gaXQgdG8KKyAgICBFdmVudEhhbmRsZXI6OmhhbmRsZUdl
c3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICBjb3VsZCBzaW1w
bHkgYmUgYW4gZW5naW5lIGZvciBnZW5lcmF0aW5nIGdlc3R1cmUgZXZlbnRzIGZyb20KKyAgICB0
b3VjaCBldmVudHMuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgUmVtb3ZlZCBjb25z
dHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgIEV4dGVuZGVkIGZvciBuZXcgZ2VzdHVy
ZSBldmVudHMgYWRkZWQgaW4gdGhpcyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgUmVtb3ZlZCBjYWxsIGludG8gZ2VzdHVyZSBy
ZWNvZ25pemVyLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6Cisg
ICAgUmVtb3ZlZCBjb2RlIHRvIHJlc2V0IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OmRlbHRhWSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6c2hpZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFs
dEtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6bWV0YUtleSk6
CisgICAgQWRkZWQgYWRkaXRpb25hbCBnZXN0dXJlIHR5cGVzIGFuZCBwYXJhbWV0ZXJzLgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgQWRkZWQgc3VwcG9y
dCBmb3IgZGlzcGxhdGNoaW5nIGdlc3R1cmUgYW5kIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubmVyR2VzdHVyZVJlY29nbml6ZXI6OklubmVyR2VzdHVyZVJlY29nbml6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Y29uc3RydWN0Q2xpY2tHZXN0
dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMg
b24gRXZlbnRIYW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUgZ2VzdHVyZQorICAgIGV2ZW50cyBmcm9t
IHRvdWNoIGV2ZW50IHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OklubmVyR2VzdHVyZVJlY29n
bml6ZXI6OmNvbnN0cnVjdFNjcm9sbEdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6dG91Y2hE
b3duKToKKyAgICAgICAgKFdlYkNvcmU6Om5vR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpj
bGljayk6CisgICAgICAgIChXZWJDb3JlOjppc0NsaWNrT3JTY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bTo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICBBZGRlZCBzdXBwb3J0IHRvIGhhbmRs
ZSB0b3VjaCBldmVudHMgYW5kIGdlc3R1cmUgZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBD
b250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExp
c3RCb3g6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94
OjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgSWdub3JlcyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBlcy4K
KwogMjAxMS0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjg4NzU3KTogVGhlIHRodW1iIG9mIGEgdmVydGljYWwgcmFuZ2Ugc2xpZGVy
IGlzIG9mZnNldCB0byB0aGUgcmlnaHQgb24gbm9uLU1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA5Mjk1Yzg2NjIyZWMxYWUyYTAwOGRmMDM0YTdhOWEzNDMyMjFlNTg1
Li5kZTFhNjViMjYwYjVjMjJmMTE2ZDYxMDQyYTJmMzZjNjA5MjYwYjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDAsMTAgKzEwMCw2IEBACiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0jaW5j
bHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw5ICsyMDYsNiBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCi0jaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjIyNywx
MSArMjIyMCwzMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgLy8gdGhhdCBpZiBhIGZy
YW1lIGdldHMgYSBnZXN0dXJlIGJlZ2luIGdlc3R1cmUsIGl0IGdldHMgdGhlIGNvcnJlc3BvbmRp
bmcKICAgICAvLyBlbmQgZ2VzdHVyZSBhcyB3ZWxsLgogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+dmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHJlZmFjdG9yIGZvciBoaXQg
dGVzdGluZyBvbmx5IG9uY2UgaGF2aW5nIGFkZHJlc3NlZCB0aGUgYWJvdmUgZml4bWUuCisgICAg
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRN
b3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlj
a0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtl
eSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1
cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOworICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5k
bGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBk
YXRlVHlwZTogeworICAgICAgICAvLyBGSVhNRTogaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBwZW5k
aW5nIGFkZHJlc3NpbmcgdGhlIGZpeG1lIGFib3ZlLgorICAgICAgICBQbGF0Zm9ybVdoZWVsRXZl
bnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50
LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5k
ZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQg
Ki8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgp
LCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAg
ICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsRW5kVHlwZToKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygp
OworICAgICAgICBpZiAoIXZpZXcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2
aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgdmlldy0+aGFu
ZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7CisgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogI2VuZGlmCkBAIC0zMjg2LDIxICszMzAxLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfQog
ICAgIH0KIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgaWYgKG1fZ2VzdHVy
ZVJlY29nbml6ZXIpCi0gICAgICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7Ci0jZW5kaWYKLQog
ICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKLXZvaWQgRXZlbnRIYW5kbGVyOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKLXsK
LSAgICBpZiAobV9nZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXpl
ci0+cmVzZXQoKTsKLX0KLSNlbmRpZgogCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggOGFiNzQzN2U2YTIxMTY1ODE2MmIwNDlhYzg5MTc2ZjgwNjJhOTgxNC4uZDE3
OGI2YzFlNjZhMzE5ZGM1ODQ0NDY3Y2FiMmQ2N2FmODQzZjRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC04MCwxMCArODAsNiBAQCBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVFdmVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiBleHRlcm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKIGV4
dGVybiBjb25zdCBpbnQgSW1hZ2VEcmFnSHlzdGVyZXNpczsKQEAgLTE2NiwxMCArMTYyLDYgQEAg
cHVibGljOgogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAg
dm9pZCByZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwpAQCAt
NDI5LDkgKzQyMSw2IEBAIHByaXZhdGU6CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5hdGlu
Z1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIGJvb2wgbV90b3VjaFByZXNzZWQ7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOGQyMTZlYTViZTc3
MDRjN2RhODE5ZjQyZDQ1MjllNDkwNmE0ZTAyOS4uYTcxNTQ1MTQyYzMwY2E0YjVkOGI2ODA1OTQ4
YTJjYzMzNTRiMjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjMyLDEwICsy
MzIsNiBAQCB2b2lkIEZyYW1lVmlldzo6cmVzZXQoKQogICAgIG1faXNWaXN1YWxseU5vbkVtcHR5
ID0gZmFsc2U7CiAgICAgbV9maXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRp
bmcgPSB0cnVlOwogICAgIG1fbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvciA9IDA7Ci0KLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5yZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBGcmFtZVZpZXc6
OmlzRnJhbWVWaWV3KCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaAppbmRleCA5OTE1N2UxMDhlYWViMDgwZWMzYmU1MzI2NTA4MTljNWFh
M2EzMjlhLi4xOGI3ZDFhYTJkMWVkZjlhODNkZWYyZjI2NmYyNTA5MDM3OTY4NDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTM3LDYg
KzM3LDggQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNjcm9sbEJlZ2luVHlw
ZSwKICAgICAgICAgU2Nyb2xsRW5kVHlwZSwKKyAgICAgICAgU2Nyb2xsVXBkYXRlVHlwZSwKKyAg
ICAgICAgVGFwVHlwZQogICAgIH07CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCgpCkBAIC00
NSw2ICs0NywyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRl
bHRhWCwgY29uc3QgZmxvYXQgZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAg
ICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQorICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICAgICAgLCBt
X2RlbHRhWChkZWx0YVgpCisgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQorICAgICAgICAsIG1f
c2hpZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAg
ICwgbV9hbHRLZXkoYWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgIHsK
KyAgICB9CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAg
IGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0g
Ly8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCkBAIC01MiwxMSArNjgsMjQgQEAgcHVibGlj
OgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9
CiAKKyAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQorICAgIGZs
b2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9CisgICAgYm9vbCBzaGlmdEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25z
dCB7IHJldHVybiBtX2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0S2V5OyB9CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5
OyB9CisKIHByb3RlY3RlZDoKICAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bvc2l0
aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGltZXN0
YW1wOworICAgIGZsb2F0IG1fZGVsdGFYOworICAgIGZsb2F0IG1fZGVsdGFZOworICAgIGJvb2wg
bV9zaGlmdEtleTsKKyAgICBib29sIG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAg
IGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCmluZGV4
IDJmODA1YmQyNjI3MWRjMTRkMzkwNDUzZTNjOTA2Y2UwYTE0M2I1YzguLjBiODZhOTI3NmZiNmJk
ZWY5YjdjMzc4ODNjNTA5M2Y3N2UwNGNiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTMxLDE4ICszMSwxNSBAQAog
I2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKICNkZWZpbmUgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcl9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50SGFuZGxlcjsKLWNsYXNzIFBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiAKLS8vIEEgR2VzdHVy
ZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50
LgotLy8gSW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVSZWNv
Z25pemVyLCB1cGRhdGVzCi0vLyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlz
cGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRzIHRvIHRoZQotLy8gaW52b2tpbmcgRXZlbnRIYW5kbGVy
IGluc3RhbmNlLgogY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciB7CiBwcm90ZWN0ZWQ6
CiAgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOwpAQCAtNTEsMTIgKzQ4LDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAg
ICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0
byB0aGUgY3VycmVudCBnZXN0dXJlLgotICAgIC8vIFRha2VzIGEgUGxhdGZvcm1Ub3VjaEV2ZW50
IGFuZCB0aGUgRXZlbnRIYW5kbGVyIHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBh
bHNvCi0gICAgLy8gYmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVu
dC4gRmluYWxseSwgfGhhbmRsZWR8Ci0gICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdh
cyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKLSAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRp
YyBldmVudC4KLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIEV2ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCkgPSAw
OworICAgIHR5cGVkZWYgUGFzc093blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4g
UGFzc0dlc3R1cmVzOworCisgICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCBhbmQg
cmV0dXJucyAwIG9yIG1vcmUgcmVzdWx0aW5nIGdlc3R1cmVzLgorICAgIHZpcnR1YWwgUGFzc0dl
c3R1cmVzIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKSA9IDA7CiAKICAgICAvLyBDbGVhcnMgdGhlIEdl
c3R1cmVSZWNvZ25pemVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZyYW1lbGVzc1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZyYW1lbGVzc1Njcm9sbFZpZXcuaAppbmRleCBkNTRmNTQzMmNjNzQxODAyMTA1Yjg2N2RiMjM1
MDBiN2QwODRlOGUxLi5jNmNjMmI1ZjM0YjQyZTY0YzI1NTg1ZDlmNzhjOTVjYjlhNjFlNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNz
U2Nyb2xsVmlldy5oCkBAIC0zNiw4ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQorICAgIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OworI2VuZGlmCiAgICAg
Y2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVu
dDsKKyNlbmRpZgogICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIAogICAgIC8vIEEgRnJh
bWVsZXNzU2Nyb2xsVmlldyBpcyBhIFNjcm9sbFZpZXcgdGhhdCBjYW4gYmUgdXNlZCB0byByZW5k
ZXIgY3VzdG9tCkBAIC02MCw2ICs2NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpID0gMDsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoRXZlbnQmKSA9IDA7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNP
R05JWkVSKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JikgPSAwOworI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJs
ZUFyZWEgcHVibGljIG1ldGhvZHM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwCmluZGV4IDQwZmU4OWY0YWFmNGMyOWQ2YTE0MmQ0ZWVjOTAxMzBjYjFkMzJjY2Uu
LjkyNWEzYjE5NzUxYTc4ZmRiMTAzMjgzNjk0MWFlNTEzNWU3OTEwZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW0uY3BwCkBAIC0zNywxMSArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0
dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wg
aW5TY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOwotc3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1
cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisvLyBGSVhNRTogQ29u
dmVydCB0byBtZXRob2RzLgorc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXpl
ciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVzKik7CitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2du
aXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6
Okdlc3R1cmVzKik7CitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2Vz
dHVyZXMqKTsKK3N0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwg
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVy
ZXMqKTsKK3N0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMq
KTsKIAogLy8gRklYTUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHku
CiBzdGF0aWMgY29uc3QgZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0Zv
ckNsaWNrID0gMC44OwpAQCAtNTIsNyArNTMsNiBAQCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpJ
bm5lckdlc3R1cmVSZWNvZ25pemVyKCkKICAgICA6IG1fZmlyc3RUb3VjaFRpbWUoMC4wKQogICAg
ICwgbV9zdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpCiAgICAgLCBtX2xh
c3RUb3VjaFRpbWUoMC4wKQotICAgICwgbV9ldmVudEhhbmRsZXIoMCkKICAgICAsIG1fY3RybEtl
eShmYWxzZSkKICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICwgbV9zaGlmdEtleShmYWxzZSkK
QEAgLTgwLDcgKzgwLDYgQEAgdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiAg
ICAgbV9maXJzdFRvdWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6Tm9HZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKLSAgICBtX2V2
ZW50SGFuZGxlciA9IDA7CiB9CiAKIElubmVyR2VzdHVyZVJlY29nbml6ZXI6On5Jbm5lckdlc3R1
cmVSZWNvZ25pemVyKCkKQEAgLTEwNCw0NCArMTAzLDM2IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiBwCiAgICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4
ZWxzRm9yQ2xpY2s7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6ZGlzcGF0Y2hT
eW50aGV0aWNDbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQordm9pZCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzKiBnZXN0dXJlcykKIHsKLSAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShwb2ludC5wb3MoKSwgcG9pbnQuc2NyZWVu
UG9zKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUp
OwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKHBvaW50LnBvcygpLCBwb2lu
dC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291
bnQgKi8gMSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xh
c3RUb3VjaFRpbWUpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChwb2ludC5w
b3MoKSwgcG9pbnQuc2NyZWVuUG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21l
dGFLZXksIG1fbGFzdFRvdWNoVGltZSk7Ci0KLSAgICBtX2V2ZW50SGFuZGxlci0+bW91c2VNb3Zl
ZChmYWtlTW91c2VNb3ZlKTsKLSAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGZha2VNb3VzZURvd24pOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1
cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwg
dG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLjBmLCAwLjBmLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAotYm9vbCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wg
aGFuZGxlZCkKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRm
b3JtVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKIHsKLSAgICBtX2V2
ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlcjsKICAgICBtX2N0cmxLZXkgPSBldmVudC5jdHJsS2V5
KCk7CiAgICAgbV9hbHRLZXkgPSBldmVudC5hbHRLZXkoKTsKICAgICBtX3NoaWZ0S2V5ID0gZXZl
bnQuc2hpZnRLZXkoKTsKICAgICBtX21ldGFLZXkgPSBldmVudC5tZXRhS2V5KCk7CiAKKyAgICBW
ZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KiBnZXN0dXJlcyA9IG5ldyBWZWN0b3I8UGxhdGZv
cm1HZXN0dXJlRXZlbnQ+KCk7CiAgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4m
IHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBvaW50cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmIHAgPSBwb2ludHNbaV07CiAgICAgICAgIHVwZGF0ZVZhbHVlcyhldmVudC50aW1lc3RhbXAo
KSwgcCk7CiAKLSAgICAgICAgaWYgKEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZWYgPSBtX2Vk
Z2VGdW5jdGlvbnMuZ2V0KHNpZ25hdHVyZShtX3N0YXRlLCBwLmlkKCksIHAuc3RhdGUoKSwgaGFu
ZGxlZCkpKQotICAgICAgICAgICAgaGFuZGxlZCA9ICgqZWYpKHRoaXMsIHApOworICAgICAgICBp
ZiAoR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2ln
bmF0dXJlKG1fc3RhdGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBkZWZhdWx0UHJldmVudGVkKSkpCisg
ICAgICAgICAgICAoKmVmKSh0aGlzLCBwLCBnZXN0dXJlcyk7CiAgICAgfQotICAgIHJldHVybiBo
YW5kbGVkOworICAgIHJldHVybiBhZG9wdFB0cihnZXN0dXJlcyk7CiB9CiAKLXZvaWQgSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6c2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiB0b3VjaFBvaW50KQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1
Y3RTY3JvbGxHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2Vz
dHVyZXMgKmdlc3R1cmVzKQogewogICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngo
KSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9p
bnQucG9zKCkueSgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKIAotICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRvIGdlc3R1cmUgZXZlbnRzIHdoZW4gdGhleSBoYW5kbGUgc3ViZnJhbWVzLgot
ICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHRvdWNoUG9pbnQucG9z
KCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVggLyBzdGF0
aWNfY2FzdDxmbG9hdD4oMTIwKSwgZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIFNj
cm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBtX3NoaWZ0S2V5
LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5o
YW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgIGdlc3R1cmVzLT5hcHBl
bmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRv
dWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3Mo
KTsKIH0KIApAQCAtMTY2LDI5ICsxNTcsMjkgQEAgdW5zaWduZWQgaW50IElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OnNpZ25hdHVyZShTdGF0ZSBnZXN0dXJlU3RhdGUsIHVuc2lnbmVkIGlkLAogICAg
IHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiAweDcpIDw8IDEgfCAoaGFuZGxlZCA/IDEgPDwgNCA6
IDApIHwgKChpZCAmIDB4ZmZmKSA8PCA1ICkgfCAoZ2VzdHVyZVN0YXRlIDw8IDE3KSk7CiB9CiAK
LXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVj
b2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JikKK3N0YXRpYyBib29sIHRvdWNoRG93
bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVz
KQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpCitib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5yZXNldCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wg
Y2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBw
b2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVzKQogewogICAg
IGlmIChnZXN0dXJlUmVjb2duaXplci0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdlc3R1cmVS
ZWNvZ25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKICAgICAgICAgZ2Vz
dHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVy
ZSk7Ci0gICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5kaXNwYXRjaFN5bnRoZXRpY0NsaWNrKHBv
aW50KTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmNvbnN0cnVjdENsaWNrR2VzdHVyZUV2
ZW50KHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBy
ZXR1cm4gbm9HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLCBwb2ludCk7CisgICAgcmV0dXJuIG5v
R2VzdHVyZShnZXN0dXJlUmVjb2duaXplciwgcG9pbnQsIGdlc3R1cmVzKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQorc3RhdGljIGJvb2wgaXND
bGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpH
ZXN0dXJlcyogZ2VzdHVyZXMpCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xp
Y2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1
YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKQEAgLTE5NiwxNiArMTg3
LDE2IEBAIHN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhCiAgICAgfQogCiAgICAgaWYgKHBvaW50LnN0
YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkICYmICFnZXN0dXJlUmVjb2du
aXplci0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7Ci0gICAgICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5zY3JvbGxWaWFUb3VjaE1vdGlvbihwb2ludCk7CisgICAgICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5jb25zdHJ1Y3RTY3JvbGxHZXN0dXJlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAg
ICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpT
Y3JvbGwpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJl
UmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29s
IGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0
dXJlcyogZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZVJlY29nbml6ZXItPnNjcm9sbFZpYVRvdWNo
TW90aW9uKHBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+Y29uc3RydWN0U2Nyb2xsR2Vz
dHVyZShwb2ludCwgZ2VzdHVyZXMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzIsNCAr
MjIzLDE0IEBAIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06On5HZXN0dXJlUmVjb2duaXplckNo
cm9taXVtKCkKIHsKIH0KIAorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50
ZWQpCit7CisgICAgcmV0dXJuIG1faW5uZXJHZXN0dXJlUmVjb2duaXplci5wcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnQsIGRlZmF1bHRQcmV2ZW50ZWQpOworfQorCit2b2lk
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnJlc2V0KCkKK3sKKyAgICBtX2lubmVyR2VzdHVy
ZVJlY29nbml6ZXIucmVzZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5oCmluZGV4IGExY2FjYTlkZGVmNGI5Yjk2NmIxMTY1ZjVmOGY5NTZmNmIy
N2FlNGMuLjUwZTVlN2Y5MzdjMmVkZjg4MjRiZDA5MThkNTY3MmU1ODFmOTZkMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKKwogY2xhc3MgSW5uZXJHZXN0dXJlUmVj
b2duaXplciB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC00NywxNiArNDksMTcgQEAg
cHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0gICAgdHlwZWRlZiBib29sICgqR2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYpOworICAgIHR5cGVkZWYgVmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2
ZW50PiBHZXN0dXJlczsKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0
aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMqKTsKIAogICAgIH5Jbm5lckdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAgICB2b2lk
IGRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAg
dm9pZCBjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
LCBHZXN0dXJlcyopOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIGJvb2wgaXNJbkNs
aWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBFdmVudEhhbmRsZXIqLCBib29s
IGhhbmRsZWQpOwotICAgIHZvaWQgc2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50Jik7CisgICAgdmlydHVhbCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNz
R2VzdHVyZXMgIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3Vj
aEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICB2b2lkIGNvbnN0cnVjdFNjcm9s
bEdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMqKTsKICAgICB2b2lk
IHNldFN0YXRlKFN0YXRlIHZhbHVlKSB7IG1fc3RhdGUgPSB2YWx1ZTsgfQogICAgIFN0YXRlIHN0
YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogcHJvdGVjdGVkOgpAQCAtNzIsNyArNzUsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgZG91YmxlIG1fZmlyc3RUb3VjaFRpbWU7CiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBkb3VibGUgbV9sYXN0VG91Y2hUaW1lOwotICAgIEV2ZW50SGFuZGxlciogbV9ldmVu
dEhhbmRsZXI7CiAKICAgICBib29sIG1fY3RybEtleTsKICAgICBib29sIG1fYWx0S2V5OwpAQCAt
ODYsMTUgKzg4LDkgQEAgcHVibGljOgogICAgIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsK
ICAgICB2aXJ0dWFsIH5HZXN0dXJlUmVjb2duaXplckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyLnJl
c2V0KCk7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAKLSAgICB2aXJ0dWFs
IGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgdG91Y2hFdmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlKHRvdWNoRXZlbnQsIGV2ZW50SGFuZGxlciwgaGFuZGxlZCk7Ci0g
ICAgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
ICBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYs
IGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CiBwcml2YXRlOgogICAgIElubmVyR2VzdHVyZVJlY29n
bml6ZXIgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCA2Mjhi
OTE5YWEyYWM2ZGU4M2M5NjE4Y2M2MDQxY2ZhYjIyOGFmOTRiLi44YTRiNzUxY2U0ODA2YWJjNTUy
MWMzZmM3NDZiZTUwOGRlNmQ2NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC01OCw2ICs1OCwxNCBAQAog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJh
Y3Rlck5hbWVzLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpA
QCAtMTAzLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVf
UkVDT0dOSVpFUikKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2
aXJ0dWFsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdDsKQEAgLTUwOSw2ICs1MjMsNDEg
QEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICBjb25zdHJ1Y3RSZWxhdGl2ZVdoZWVsRXZlbnQoZXZl
bnQsIHRoaXMsIG1fbGlzdEJveC5nZXQoKSkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK2Jvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisvLyBGSVhNRTogT3Bwb3J0dW5pdHkgdG8gcmVmYWN0b3Ig
dGhpcyB3aXRoIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50Citib29sIFBvcHVwQ29u
dGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmVudCkKK3sKKyAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKKyAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
RG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAg
ICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsKKyAgICAgICAgaGFuZGxl
TW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZTogeworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdl
c3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQu
ZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5z
aGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCks
IGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRo
ZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KTsKQEAgLTc1Miw2ICs4MDEsMjAgQEAgYm9vbCBQb3B1cExpc3RCb3g6OmlzSW50ZXJlc3RlZElu
RXZlbnRGb3JLZXkoaW50IGtleUNvZGUpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKK2Jvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoR0VTVFVSRV9SRUNPR05JWkVSKQorYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZUdlc3R1cmVF
dmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorI2VuZGlmCisKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50KGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZXZl
bnQgaXMgYSBjaGFyYWN0ZXItdHlwZWQgZXZlbnQgb3Igbm90LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgKaW5kZXggNDZjMTIz
MzkwNTJhNDNiOGMwNTczODlkMDA4NGJhN2JkNjBhZjA1ZS4uNmM4ZmI0YjgwNzQxZThlMjEwYmI0
NWE5ZTAzNGY4OWIwMDljN2E0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIyLDEyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50
Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyNl
bmRpZgogCiAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggODViMGY3Y2I3YTAy
Y2ZlMjdkMGZiN2MwNTY5OTE3ZjgyMTE5ZWY0NS4uOGVhNjUzYjJhOGFjMTJkZDczMDMzODdkZDFi
NDNjOWQ1YzQ5YWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JN
YWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2CiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAg
ZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMDk1MmMwZTdiZjhkYzE4NWMyNWQ4NjZmNjJl
Nzg3NTc5YTM4YzJlLi5lZTAwNjUzNDViZTkzYWU5ZTg0ZTIyYWE2Mzc0YzQ3ZmY3NjA2YjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTA3LTI1ICBS
b2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIExheWVyaW5nIHZpb2xhdGlvbnMgaW4gZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgTW92ZWQgZ2VzdHVyZSByZWNvZ25pdGlv
biBoaWdoZXIgdXAgdGhlIGV2ZW50IGRlbGl2ZXJ5IGNvZGUKKyAgICBwYXRoIHNvIHRoYXQgcmVj
b2duaXRpb24gb2YgZ2VzdHVyZXMgaXMgY29tcGxldGVseSBzZXBhcmF0ZWQKKyAgICBmcm9tIGdl
c3R1cmUgaGFuZGxpbmcuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0
ZUZyYW1lVmlldyk6CisgICAgQWRkZWQgY29kZSB0byByZXNldCB0aGUgZ2VzdHVyZSByZWNvZ25p
emVyIHRvIHByZXNlcnZlIHBhcmFsbGVsCisgICAgbGF5b3V0IHRlc3QgZXhlY3V0aW9uLgorICAg
ICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICBTdXBwb3J0IGRpc3BhdGNoaW5n
IHRvdWNoIGFuZCBnZXN0dXJlIGV2ZW50cyB0byBQb3B1cHMuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudUltcGw6OldlYlBvcHVwTWVudUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgIEFkZGVkIGdlc3R1cmUgcmVjb2duaXRpb24gY3Jl
YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKyAgICBB
ZGRlZCByZWNvZ25pdGlvbiBvZiBnZXN0dXJlcyBhbmQgZGlzcGF0Y2ggb2YgZ2VzdHVyZSBldmVu
dHMuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0wNy0yMiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERF
UFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggNDNkYjQ4MzQyZGYzYTJj
MzBiNWU0MDRlYWU2MGVhNWE4MmIwNzkzOC4uYmQ5MTJkYmQ2NTJlZWMwODY1ZjVlMjIxNzBlN2U4
NTZhMDVlZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDksNiAr
NDksNyBAQAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0xJywKICAgICAgICdFTkFCTEVfRklM
VEVSUz0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCisgICAgICAnRU5BQkxFX0dF
U1RVUkVfRVZFTlRTPTEnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVI9MScsCiAg
ICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0xJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmlu
ZGV4IDNjNGFmYjk4YzJkYTE3OTZhZjQwOTQ4NmI4MjI5MDcxMzFiZjgzNTkuLmUwZWFkMzFjODBi
NjcxZjc4NzcxMjg5MzM4N2YzYjY1MjAxNDdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTk5NCw2ICsxOTk0LDEwIEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpjcmVhdGVGcmFtZVZpZXcoKQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAg
ICB2aWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKKyAgICAgICAgd2ViVmlldy0+cmVzZXRHZXN0dXJlUmVjb2duaXplcigpOworI2Vu
ZGlmCiB9CiAKIFdlYkZyYW1lSW1wbCogV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCA3N2Q1YjgyNmI0MzlhY2VmMThhNzgxOTYxOTcwY2JhYjc4ZjBmNWMzLi45ODExMDZi
MmRkMjM1OTEwYjY2ZDViYjZmNzI0MTRlOTMxYzIzMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcApAQCAtNTIsNiArNTIsMTEgQEAKIAog
I2luY2x1ZGUgPHNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oPgogCisjaWYgRU5BQkxFKEdFU1RV
UkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OSw2ICs3NCw5IEBAIFdlYlBv
cHVwTWVudSogV2ViUG9wdXBNZW51OjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiBX
ZWJQb3B1cE1lbnVJbXBsOjpXZWJQb3B1cE1lbnVJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV93aWRnZXQoMCkKKyNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQorICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKKyNlbmRpZgogewogICAgIC8vIHNl
dCB0byBpbXBvc3NpYmxlIHBvaW50IHNvIHdlIGFsd2F5cyBnZXQgdGhlIGZpcnN0IG1vdXNlIHBv
cwogICAgIG1fbGFzdE1vdXNlUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOwpAQCAtMTI1LDYg
KzEzMywyMiBAQCB2b2lkIFdlYlBvcHVwTWVudUltcGw6Ok1vdXNlV2hlZWwoY29uc3QgV2ViTW91
c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICBtX3dpZGdldC0+aGFuZGxlV2hlZWxFdmVudChQbGF0
Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK2Jvb2wgV2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudChjb25zdCBX
ZWJUb3VjaEV2ZW50JiBldmVudCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgImRlbGl2ZXJlZCB0
b3VjaCBldmVudCB0byBhIHBvcHVwIHRoaW5nZXIgZG9vZGxlXG4iKTsKKworICAgIFBsYXRmb3Jt
VG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KTsKKyAg
ICBib29sIGRlZmF1bHRQcmV2ZW50ZWQobV93aWRnZXQtPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hF
dmVudEJ1aWxkZXIpKTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0
cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyht
X2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZl
bnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVkKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkg
PSAwOyBpIDwgZ2VzdHVyZUV2ZW50cy0+c2l6ZSgpOyBpKyspCisgICAgbV93aWRnZXQtPmhhbmRs
ZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVFdmVudHMpW2ldKTsKKyNlbmRpZgorICAgIHJldHVybiBk
ZWZhdWx0UHJldmVudGVkOworfQorI2VuZGlmCisKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIG1fd2lk
Z2V0LT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7
CkBAIC0yMzcsNiArMjYxLDEzIEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6Q2hhcjoKICAgICAgICAgcmV0dXJuIEtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBX
ZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKIAorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hTdGFydDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91
Y2hDYW5jZWw6CisgICAgICAgIHJldHVybiBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBX
ZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQb3B1cE1lbnVJbXBsLmgKaW5kZXggODBlNDY1ZTk1OTVmYTQ1NTI5ODEzYzhmZTk0ZTIx
MWQyNzk5ZDc4NS4uMjkxYTkxMGUyMDY0OTMyMjU2ZTA0MzgzZmZlNjFiMWE0ZThjMzJhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51
LmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw2ICs0
Myw5IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlldzsKIGNsYXNzIEtl
eWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiBjbGFzcyBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFdpZGdldDsKQEAgLTUzLDYgKzU3
LDcgQEAgY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNs
YXNzIFdlYlJhbmdlOwogc3RydWN0IFdlYlJlY3Q7CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogCiBj
bGFzcyBXZWJQb3B1cE1lbnVJbXBsIDogcHVibGljIFdlYlBvcHVwTWVudSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudCwK
QEAgLTk5LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIE1vdXNlVXAoY29uc3QgV2ViTW91
c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50
Jik7CiAgICAgdm9pZCBNb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAg
IGJvb2wgVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgYm9vbCBLZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAKICAgIHByb3RlY3RlZDoKQEAgLTEzNiw2ICsx
NDIsMTIgQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgYSBub24tb3duaW5nIHJlZi4gIFRoZSBw
b3B1cCB3aWxsIG5vdGlmeSB1cyB2aWEgcG9wdXBDbG9zZWQoKQogICAgIC8vIGJlZm9yZSBpdCBp
cyBkZXN0cm95ZWQuCiAgICAgV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlldyogbV93aWRnZXQ7
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCisK
KyAgICAKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDA1YWFiNDNiNDNmOWU2NDZjOTE2ZTQ4MmM0ZjY5
MTY5ZDkyMjI0MmMuLjY1Y2JhODAzOGJkZjRkYTBhMDEyOGZmNGQxN2IxYmYwNzRlOTI2MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEyOSw2ICsx
MjksMTQgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1H
ZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
KyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCisjZW5kaWYKKwogI2lmIFVT
RShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMzQwLDYgKzM0OCw5IEBAIFdlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjZW5kaWYKICAgICAsIG1f
ZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShhZG9wdFB0cihuZXcgRGV2aWNlT3JpZW50YXRp
b25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkg
OiAwKSkpCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3IEdlb2xv
Y2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgpIDog
MCkpKQorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNv
Z25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2Vu
ZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5n
LCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3Vu
ZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtNzU3LDcgKzc2OCwx
NSBAQCBib29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWls
ZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50
KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcik7CisgICAgYm9vbCBkZWZhdWx0UHJl
dmVudGVkKG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRv
dWNoRXZlbnQodG91Y2hFdmVudEJ1aWxkZXIpKTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCisgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4g
PiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKKyAg
ICAgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRs
ZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVFdmVudHMpW2ldKTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYKIApAQCAtMjY3NSw0ICsyNjk0LDEyIEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSwKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dO
SVpFUikKK3ZvaWQgV2ViVmlld0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKQoreworICAg
IG1fZ2VzdHVyZVJlY29nbml6ZXItPnJlc2V0KCk7Cit9CisjZW5kaWYKKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IDI5YTY2ODI5MDNlZjU4Njk3MzhjY2Q2MTYyYTEwM2I4ZTVmZGM3YjMuLmE2NzgwNzhkMjQ0ZDgw
MzBiYzk1ZjJkODU5MzlmYWRlMDMwNjgxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaApAQCAtNjcsNiArNjcsOSBAQCBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBj
bGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgV2lkZ2V0OworI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOwor
I2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzg1LDYgKzM4OCwxMCBAQCBwdWJs
aWM6CiAgICAgLy8gYSBwbHVnaW4gY2FuIHVwZGF0ZSBpdHMgb3duIHpvb20sIHNheSBiZWNhdXNl
IG9mIGl0cyBvd24gVUkuCiAgICAgdm9pZCBmdWxsRnJhbWVQbHVnaW5ab29tTGV2ZWxDaGFuZ2Vk
KGRvdWJsZSB6b29tTGV2ZWwpOwogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAg
ICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91
ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0lt
cGw+OwpAQCAtNTY2LDYgKzU3MywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRD4gbV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEOwog
ICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50UHJveHk7CiAgICAgT3duUHRyPEdlb2xvY2F0aW9uQ2xpZW50UHJveHk+IG1fZ2Vv
bG9jYXRpb25DbGllbnRQcm94eTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisg
ICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJl
Y29nbml6ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101894</attachid>
            <date>2011-07-25 12:44:53 -0700</date>
            <delta_ts>2011-07-26 13:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110725154506.patch</filename>
            <type>text/plain</type>
            <size>40271</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZDE1NGYyMWYxNWY2ZGQ2
YmYxY2IzZWY5MzY1M2M0ZDUwNzc2MDkwLi42YWE5NmI3MTkxOTcxY2UwMzU3MTZiYjVjOWVmNzI4
ODUxNWI3M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDctMjUgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICBEaXZpZGVkIHRoZSBnZXN0dXJlIHJlY29nbml6
ZXIgdXAgdG8gY29ycmVjdCBhIGxheWVyaW5nCisgICAgdmlvbGF0aW9uIGJ5IG1vdmluZyBnZXN0
dXJlIGltcGxlbWVudGF0aW9uIGZyb20gaXQgdG8KKyAgICBFdmVudEhhbmRsZXI6OmhhbmRsZUdl
c3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICBjb3VsZCBzaW1w
bHkgYmUgYW4gZW5naW5lIGZvciBnZW5lcmF0aW5nIGdlc3R1cmUgZXZlbnRzIGZyb20KKyAgICB0
b3VjaCBldmVudHMuCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgUmVtb3ZlZCBjb25z
dHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgIEV4dGVuZGVkIGZvciBuZXcgZ2VzdHVy
ZSBldmVudHMgYWRkZWQgaW4gdGhpcyBwYXRjaC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgUmVtb3ZlZCBjYWxsIGludG8gZ2VzdHVyZSBy
ZWNvZ25pemVyLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6Cisg
ICAgUmVtb3ZlZCBjb2RlIHRvIHJlc2V0IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBw
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OmRlbHRhWSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6c2hpZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFs
dEtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6bWV0YUtleSk6
CisgICAgQWRkZWQgYWRkaXRpb25hbCBnZXN0dXJlIHR5cGVzIGFuZCBwYXJhbWV0ZXJzLgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3Lmg6CisgICAgQWRkZWQgc3VwcG9y
dCBmb3IgZGlzcGxhdGNoaW5nIGdlc3R1cmUgYW5kIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubmVyR2VzdHVyZVJlY29nbml6ZXI6OklubmVyR2VzdHVyZVJlY29nbml6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Y29uc3RydWN0Q2xpY2tHZXN0
dXJlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJv
Y2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMg
b24gRXZlbnRIYW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUgZ2VzdHVyZQorICAgIGV2ZW50cyBmcm9t
IHRvdWNoIGV2ZW50IHN0cmVhbS4KKyAgICAgICAgKFdlYkNvcmU6OklubmVyR2VzdHVyZVJlY29n
bml6ZXI6OmNvbnN0cnVjdFNjcm9sbEdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6dG91Y2hE
b3duKToKKyAgICAgICAgKFdlYkNvcmU6Om5vR2VzdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpj
bGljayk6CisgICAgICAgIChXZWJDb3JlOjppc0NsaWNrT3JTY3JvbGwpOgorICAgICAgICAoV2Vi
Q29yZTo6aW5TY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVJlY29nbml6ZXJDaHJv
bWl1bTo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
ZXN0dXJlUmVjb2duaXplckNocm9taXVtOjpyZXNldCk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcDoKKyAgICBBZGRlZCBzdXBwb3J0IHRvIGhhbmRs
ZSB0b3VjaCBldmVudHMgYW5kIGdlc3R1cmUgZXZlbnRzLgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBD
b250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExp
c3RCb3g6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94
OjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVF
dmVudCk6CisgICAgSWdub3JlcyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBlcy4K
KwogMjAxMS0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04ocjg4NzU3KTogVGhlIHRodW1iIG9mIGEgdmVydGljYWwgcmFuZ2Ugc2xpZGVy
IGlzIG9mZnNldCB0byB0aGUgcmlnaHQgb24gbm9uLU1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA5Mjk1Yzg2NjIyZWMxYWUyYTAwOGRmMDM0YTdhOWEzNDMyMjFlNTg1
Li5kZTFhNjViMjYwYjVjMjJmMTE2ZDYxMDQyYTJmMzZjNjA5MjYwYjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDAsMTAgKzEwMCw2IEBACiAjaW5jbHVkZSAiVG91
Y2hMaXN0LmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0jaW5j
bHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw5ICsyMDYsNiBA
QCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICAsIG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCi0jaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjIyNywx
MSArMjIyMCwzMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAgICAgLy8gdGhhdCBpZiBhIGZy
YW1lIGdldHMgYSBnZXN0dXJlIGJlZ2luIGdlc3R1cmUsIGl0IGdldHMgdGhlIGNvcnJlc3BvbmRp
bmcKICAgICAvLyBlbmQgZ2VzdHVyZSBhcyB3ZWxsLgogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+dmlldygpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0
dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICAgICAgLy8gRklYTUU6IHJlZmFjdG9yIGZvciBoaXQg
dGVzdGluZyBvbmx5IG9uY2UgaGF2aW5nIGFkZHJlc3NlZCB0aGUgYWJvdmUgZml4bWUuCisgICAg
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRN
b3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50
Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlj
a0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtl
eSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1
cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBn
ZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2
ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0
YW1wKCkpOworICAgICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5k
bGVNb3VzZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBk
YXRlVHlwZTogeworICAgICAgICAvLyBGSVhNRTogaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBwZW5k
aW5nIGFkZHJlc3NpbmcgdGhlIGZpeG1lIGFib3ZlLgorICAgICAgICBQbGF0Zm9ybVdoZWVsRXZl
bnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2
ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50
LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5k
ZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQg
Ki8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgp
LCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAg
ICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50OjpTY3JvbGxCZWdpblR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsRW5kVHlwZToKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygp
OworICAgICAgICBpZiAoIXZpZXcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2
aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgdmlldy0+aGFu
ZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7CisgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogI2VuZGlmCkBAIC0zMjg2LDIxICszMzAxLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfQog
ICAgIH0KIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgaWYgKG1fZ2VzdHVy
ZVJlY29nbml6ZXIpCi0gICAgICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZShldmVudCwgdGhpcywgZGVmYXVsdFByZXZlbnRlZCk7Ci0jZW5kaWYKLQog
ICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKLXZvaWQgRXZlbnRIYW5kbGVyOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKLXsK
LSAgICBpZiAobV9nZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXpl
ci0+cmVzZXQoKTsKLX0KLSNlbmRpZgogCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggOGFiNzQzN2U2YTIxMTY1ODE2MmIwNDlhYzg5MTc2ZjgwNjJhOTgxNC4uZDE3
OGI2YzFlNjZhMzE5ZGM1ODQ0NDY3Y2FiMmQ2N2FmODQzZjRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC04MCwxMCArODAsNiBAQCBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVFdmVudDsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiBleHRlcm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKIGV4
dGVybiBjb25zdCBpbnQgSW1hZ2VEcmFnSHlzdGVyZXNpczsKQEAgLTE2NiwxMCArMTYyLDYgQEAg
cHVibGljOgogICAgIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50Jik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAg
dm9pZCByZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwpAQCAt
NDI5LDkgKzQyMSw2IEBAIHByaXZhdGU6CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5hdGlu
Z1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIGJvb2wgbV90b3VjaFByZXNzZWQ7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggOGQyMTZlYTViZTc3
MDRjN2RhODE5ZjQyZDQ1MjllNDkwNmE0ZTAyOS4uYTcxNTQ1MTQyYzMwY2E0YjVkOGI2ODA1OTQ4
YTJjYzMzNTRiMjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjMyLDEwICsy
MzIsNiBAQCB2b2lkIEZyYW1lVmlldzo6cmVzZXQoKQogICAgIG1faXNWaXN1YWxseU5vbkVtcHR5
ID0gZmFsc2U7CiAgICAgbV9maXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRp
bmcgPSB0cnVlOwogICAgIG1fbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvciA9IDA7Ci0KLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5yZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBGcmFtZVZpZXc6
OmlzRnJhbWVWaWV3KCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaAppbmRleCA5OTE1N2UxMDhlYWViMDgwZWMzYmU1MzI2NTA4MTljNWFh
M2EzMjlhLi4xOGI3ZDFhYTJkMWVkZjlhODNkZWYyZjI2NmYyNTA5MDM3OTY4NDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTM3LDYg
KzM3LDggQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFNjcm9sbEJlZ2luVHlw
ZSwKICAgICAgICAgU2Nyb2xsRW5kVHlwZSwKKyAgICAgICAgU2Nyb2xsVXBkYXRlVHlwZSwKKyAg
ICAgICAgVGFwVHlwZQogICAgIH07CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCgpCkBAIC00
NSw2ICs0NywyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRl
bHRhWCwgY29uc3QgZmxvYXQgZGVsdGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJv
b2wgYWx0S2V5LCBib29sIG1ldGFLZXkpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAg
ICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQorICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICAgICAgLCBt
X2RlbHRhWChkZWx0YVgpCisgICAgICAgICwgbV9kZWx0YVkoZGVsdGFZKQorICAgICAgICAsIG1f
c2hpZnRLZXkoc2hpZnRLZXkpCisgICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAg
ICwgbV9hbHRLZXkoYWx0S2V5KQorICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgIHsK
KyAgICB9CisKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAg
IGNvbnN0IEludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0g
Ly8gUGxhdGZvcm1XaW5kb3cgY29vcmRpbmF0ZXMuCkBAIC01MiwxMSArNjgsMjQgQEAgcHVibGlj
OgogCiAgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9
CiAKKyAgICBmbG9hdCBkZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQorICAgIGZs
b2F0IGRlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFZOyB9CisgICAgYm9vbCBzaGlmdEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25z
dCB7IHJldHVybiBtX2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0S2V5OyB9CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5
OyB9CisKIHByb3RlY3RlZDoKICAgICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bvc2l0
aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGltZXN0
YW1wOworICAgIGZsb2F0IG1fZGVsdGFYOworICAgIGZsb2F0IG1fZGVsdGFZOworICAgIGJvb2wg
bV9zaGlmdEtleTsKKyAgICBib29sIG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAg
IGJvb2wgbV9tZXRhS2V5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCmluZGV4
IDJmODA1YmQyNjI3MWRjMTRkMzkwNDUzZTNjOTA2Y2UwYTE0M2I1YzguLjBiODZhOTI3NmZiNmJk
ZWY5YjdjMzc4ODNjNTA5M2Y3N2UwNGNiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTMxLDE4ICszMSwxNSBAQAog
I2lmbmRlZiBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKICNkZWZpbmUgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcl9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50SGFuZGxlcjsKLWNsYXNzIFBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI7CiBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiAKLS8vIEEgR2VzdHVy
ZVJlY29nbml6ZXIgZGV0ZWN0cyBnZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50
LgotLy8gSW4gcmVzcG9uc2UgdG8gYSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVSZWNv
Z25pemVyLCB1cGRhdGVzCi0vLyBpdHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlz
cGF0Y2hlcyBzeW50aGV0aWMgZXZlbnRzIHRvIHRoZQotLy8gaW52b2tpbmcgRXZlbnRIYW5kbGVy
IGluc3RhbmNlLgogY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplciB7CiBwcm90ZWN0ZWQ6
CiAgICAgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcigpOwpAQCAtNTEsMTIgKzQ4LDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBj
cmVhdGUoKTsKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAg
ICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0
byB0aGUgY3VycmVudCBnZXN0dXJlLgotICAgIC8vIFRha2VzIGEgUGxhdGZvcm1Ub3VjaEV2ZW50
IGFuZCB0aGUgRXZlbnRIYW5kbGVyIHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBh
bHNvCi0gICAgLy8gYmUgdGhlIHRhcmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVu
dC4gRmluYWxseSwgfGhhbmRsZWR8Ci0gICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdh
cyBhY3R1YWxseSBoYW5kbGVkIGJ5IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKLSAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRp
YyBldmVudC4KLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIEV2ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCkgPSAw
OworICAgIHR5cGVkZWYgUGFzc093blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4g
UGFzc0dlc3R1cmVzOworCisgICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCBhbmQg
cmV0dXJucyAwIG9yIG1vcmUgcmVzdWx0aW5nIGdlc3R1cmVzLgorICAgIHZpcnR1YWwgUGFzc0dl
c3R1cmVzIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKSA9IDA7CiAKICAgICAvLyBDbGVhcnMgdGhlIEdl
c3R1cmVSZWNvZ25pemVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZyYW1lbGVzc1Njcm9sbFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZyYW1lbGVzc1Njcm9sbFZpZXcuaAppbmRleCBkNTRmNTQzMmNjNzQxODAyMTA1Yjg2N2RiMjM1
MDBiN2QwODRlOGUxLi5jNmNjMmI1ZjM0YjQyZTY0YzI1NTg1ZDlmNzhjOTVjYjlhNjFlNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3Jv
bGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNz
U2Nyb2xsVmlldy5oCkBAIC0zNiw4ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQorICAgIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OworI2VuZGlmCiAgICAg
Y2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVu
dDsKKyNlbmRpZgogICAgIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIAogICAgIC8vIEEgRnJh
bWVsZXNzU2Nyb2xsVmlldyBpcyBhIFNjcm9sbFZpZXcgdGhhdCBjYW4gYmUgdXNlZCB0byByZW5k
ZXIgY3VzdG9tCkBAIC02MCw2ICs2NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUtl
eUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpID0gMDsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoRXZlbnQmKSA9IDA7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNP
R05JWkVSKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50JikgPSAwOworI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJs
ZUFyZWEgcHVibGljIG1ldGhvZHM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwCmluZGV4IDQwZmU4OWY0YWFmNGMyOWQ2YTE0MmQ0ZWVjOTAxMzBjYjFkMzJjY2Uu
LjkyNWEzYjE5NzUxYTc4ZmRiMTAzMjgzNjk0MWFlNTEzNWU3OTEwZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW0uY3BwCkBAIC0zNywxMSArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0
dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wg
aW5TY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOwotc3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1
cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisvLyBGSVhNRTogQ29u
dmVydCB0byBtZXRob2RzLgorc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXpl
ciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVzKik7CitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2du
aXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6
Okdlc3R1cmVzKik7CitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2Vz
dHVyZXMqKTsKK3N0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwg
Y29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVy
ZXMqKTsKK3N0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMq
KTsKIAogLy8gRklYTUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHku
CiBzdGF0aWMgY29uc3QgZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0Zv
ckNsaWNrID0gMC44OwpAQCAtNTIsNyArNTMsNiBAQCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpJ
bm5lckdlc3R1cmVSZWNvZ25pemVyKCkKICAgICA6IG1fZmlyc3RUb3VjaFRpbWUoMC4wKQogICAg
ICwgbV9zdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpCiAgICAgLCBtX2xh
c3RUb3VjaFRpbWUoMC4wKQotICAgICwgbV9ldmVudEhhbmRsZXIoMCkKICAgICAsIG1fY3RybEtl
eShmYWxzZSkKICAgICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICwgbV9zaGlmdEtleShmYWxzZSkK
QEAgLTgwLDcgKzgwLDYgQEAgdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiAg
ICAgbV9maXJzdFRvdWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6Tm9HZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKLSAgICBtX2V2
ZW50SGFuZGxlciA9IDA7CiB9CiAKIElubmVyR2VzdHVyZVJlY29nbml6ZXI6On5Jbm5lckdlc3R1
cmVSZWNvZ25pemVyKCkKQEAgLTEwNCw0NCArMTAzLDM2IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50
JiBwCiAgICAgcmV0dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4
ZWxzRm9yQ2xpY2s7CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6ZGlzcGF0Y2hT
eW50aGV0aWNDbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQordm9pZCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzKiBnZXN0dXJlcykKIHsKLSAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShwb2ludC5wb3MoKSwgcG9pbnQuc2NyZWVu
UG9zKCksIE5vQnV0dG9uLCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9z
aGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUp
OwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKHBvaW50LnBvcygpLCBwb2lu
dC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291
bnQgKi8gMSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xh
c3RUb3VjaFRpbWUpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChwb2ludC5w
b3MoKSwgcG9pbnQuc2NyZWVuUG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwg
LyogY2xpY2tDb3VudCAqLyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21l
dGFLZXksIG1fbGFzdFRvdWNoVGltZSk7Ci0KLSAgICBtX2V2ZW50SGFuZGxlci0+bW91c2VNb3Zl
ZChmYWtlTW91c2VNb3ZlKTsKLSAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGZha2VNb3VzZURvd24pOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChmYWtlTW91c2VVcCk7CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1
cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6VGFwVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwg
dG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91Y2hUaW1lLCAwLjBmLCAwLjBmLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAotYm9vbCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wg
aGFuZGxlZCkKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRm
b3JtVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKIHsKLSAgICBtX2V2
ZW50SGFuZGxlciA9IGV2ZW50SGFuZGxlcjsKICAgICBtX2N0cmxLZXkgPSBldmVudC5jdHJsS2V5
KCk7CiAgICAgbV9hbHRLZXkgPSBldmVudC5hbHRLZXkoKTsKICAgICBtX3NoaWZ0S2V5ID0gZXZl
bnQuc2hpZnRLZXkoKTsKICAgICBtX21ldGFLZXkgPSBldmVudC5tZXRhS2V5KCk7CiAKKyAgICBW
ZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KiBnZXN0dXJlcyA9IG5ldyBWZWN0b3I8UGxhdGZv
cm1HZXN0dXJlRXZlbnQ+KCk7CiAgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4m
IHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBvaW50cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9p
bnQmIHAgPSBwb2ludHNbaV07CiAgICAgICAgIHVwZGF0ZVZhbHVlcyhldmVudC50aW1lc3RhbXAo
KSwgcCk7CiAKLSAgICAgICAgaWYgKEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZWYgPSBtX2Vk
Z2VGdW5jdGlvbnMuZ2V0KHNpZ25hdHVyZShtX3N0YXRlLCBwLmlkKCksIHAuc3RhdGUoKSwgaGFu
ZGxlZCkpKQotICAgICAgICAgICAgaGFuZGxlZCA9ICgqZWYpKHRoaXMsIHApOworICAgICAgICBp
ZiAoR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2ln
bmF0dXJlKG1fc3RhdGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBkZWZhdWx0UHJldmVudGVkKSkpCisg
ICAgICAgICAgICAoKmVmKSh0aGlzLCBwLCBnZXN0dXJlcyk7CiAgICAgfQotICAgIHJldHVybiBo
YW5kbGVkOworICAgIHJldHVybiBhZG9wdFB0cihnZXN0dXJlcyk7CiB9CiAKLXZvaWQgSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6c2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiB0b3VjaFBvaW50KQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1
Y3RTY3JvbGxHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2Vz
dHVyZXMgKmdlc3R1cmVzKQogewogICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngo
KSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngoKSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9p
bnQucG9zKCkueSgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKIAotICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRvIGdlc3R1cmUgZXZlbnRzIHdoZW4gdGhleSBoYW5kbGUgc3ViZnJhbWVzLgot
ICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHRvdWNoUG9pbnQucG9z
KCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVggLyBzdGF0
aWNfY2FzdDxmbG9hdD4oMTIwKSwgZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIFNj
cm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBtX3NoaWZ0S2V5
LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5o
YW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgIGdlc3R1cmVzLT5hcHBl
bmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0
ZVR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRv
dWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXks
IG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3Mo
KTsKIH0KIApAQCAtMTY2LDI5ICsxNTcsMjkgQEAgdW5zaWduZWQgaW50IElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OnNpZ25hdHVyZShTdGF0ZSBnZXN0dXJlU3RhdGUsIHVuc2lnbmVkIGlkLAogICAg
IHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiAweDcpIDw8IDEgfCAoaGFuZGxlZCA/IDEgPDwgNCA6
IDApIHwgKChpZCAmIDB4ZmZmKSA8PCA1ICkgfCAoZ2VzdHVyZVN0YXRlIDw8IDE3KSk7CiB9CiAK
LXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVj
b2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JikKK3N0YXRpYyBib29sIHRvdWNoRG93
bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVz
KQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpCitib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5yZXNldCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wg
Y2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBw
b2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMqIGdlc3R1cmVzKQogewogICAg
IGlmIChnZXN0dXJlUmVjb2duaXplci0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdlc3R1cmVS
ZWNvZ25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKICAgICAgICAgZ2Vz
dHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVy
ZSk7Ci0gICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5kaXNwYXRjaFN5bnRoZXRpY0NsaWNrKHBv
aW50KTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmNvbnN0cnVjdENsaWNrR2VzdHVyZUV2
ZW50KHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBy
ZXR1cm4gbm9HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLCBwb2ludCk7CisgICAgcmV0dXJuIG5v
R2VzdHVyZShnZXN0dXJlUmVjb2duaXplciwgcG9pbnQsIGdlc3R1cmVzKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQorc3RhdGljIGJvb2wgaXND
bGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpH
ZXN0dXJlcyogZ2VzdHVyZXMpCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xp
Y2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1
YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJH
ZXN0dXJlUmVjb2duaXplcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKQEAgLTE5NiwxNiArMTg3
LDE2IEBAIHN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhCiAgICAgfQogCiAgICAgaWYgKHBvaW50LnN0
YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkICYmICFnZXN0dXJlUmVjb2du
aXplci0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7Ci0gICAgICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5zY3JvbGxWaWFUb3VjaE1vdGlvbihwb2ludCk7CisgICAgICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5jb25zdHJ1Y3RTY3JvbGxHZXN0dXJlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAg
ICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpT
Y3JvbGwpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJl
UmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29s
IGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0
dXJlcyogZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZVJlY29nbml6ZXItPnNjcm9sbFZpYVRvdWNo
TW90aW9uKHBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2duaXplci0+Y29uc3RydWN0U2Nyb2xsR2Vz
dHVyZShwb2ludCwgZ2VzdHVyZXMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMzIsNCAr
MjIzLDE0IEBAIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06On5HZXN0dXJlUmVjb2duaXplckNo
cm9taXVtKCkKIHsKIH0KIAorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50
ZWQpCit7CisgICAgcmV0dXJuIG1faW5uZXJHZXN0dXJlUmVjb2duaXplci5wcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnQsIGRlZmF1bHRQcmV2ZW50ZWQpOworfQorCit2b2lk
IEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnJlc2V0KCkKK3sKKyAgICBtX2lubmVyR2VzdHVy
ZVJlY29nbml6ZXIucmVzZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5oCmluZGV4IGExY2FjYTlkZGVmNGI5Yjk2NmIxMTY1ZjVmOGY5NTZmNmIy
N2FlNGMuLjUwZTVlN2Y5MzdjMmVkZjg4MjRiZDA5MThkNTY3MmU1ODFmOTZkMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKKwogY2xhc3MgSW5uZXJHZXN0dXJlUmVj
b2duaXplciB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC00NywxNiArNDksMTcgQEAg
cHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0gICAgdHlwZWRlZiBib29sICgqR2Vz
dHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYpOworICAgIHR5cGVkZWYgVmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2
ZW50PiBHZXN0dXJlczsKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0
aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jiwg
R2VzdHVyZXMqKTsKIAogICAgIH5Jbm5lckdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAgICB2b2lk
IGRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAg
dm9pZCBjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
LCBHZXN0dXJlcyopOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwogICAgIGJvb2wgaXNJbkNs
aWNrVGltZVdpbmRvdygpOwogICAgIGJvb2wgaXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci0gICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50
Rm9yR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBFdmVudEhhbmRsZXIqLCBib29s
IGhhbmRsZWQpOwotICAgIHZvaWQgc2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50Jik7CisgICAgdmlydHVhbCBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNz
R2VzdHVyZXMgIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3Vj
aEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICB2b2lkIGNvbnN0cnVjdFNjcm9s
bEdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMqKTsKICAgICB2b2lk
IHNldFN0YXRlKFN0YXRlIHZhbHVlKSB7IG1fc3RhdGUgPSB2YWx1ZTsgfQogICAgIFN0YXRlIHN0
YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogcHJvdGVjdGVkOgpAQCAtNzIsNyArNzUsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgZG91YmxlIG1fZmlyc3RUb3VjaFRpbWU7CiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBkb3VibGUgbV9sYXN0VG91Y2hUaW1lOwotICAgIEV2ZW50SGFuZGxlciogbV9ldmVu
dEhhbmRsZXI7CiAKICAgICBib29sIG1fY3RybEtleTsKICAgICBib29sIG1fYWx0S2V5OwpAQCAt
ODYsMTUgKzg4LDkgQEAgcHVibGljOgogICAgIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsK
ICAgICB2aXJ0dWFsIH5HZXN0dXJlUmVjb2duaXplckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyLnJl
c2V0KCk7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAKLSAgICB2aXJ0dWFs
IGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgdG91Y2hFdmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlKHRvdWNoRXZlbnQsIGV2ZW50SGFuZGxlciwgaGFuZGxlZCk7Ci0g
ICAgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
ICBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYs
IGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CiBwcml2YXRlOgogICAgIElubmVyR2VzdHVyZVJlY29n
bml6ZXIgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCA2Mjhi
OTE5YWEyYWM2ZGU4M2M5NjE4Y2M2MDQxY2ZhYjIyOGFmOTRiLi44YTRiNzUxY2U0ODA2YWJjNTUy
MWMzZmM3NDZiZTUwOGRlNmQ2NGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC01OCw2ICs1OCwxNCBAQAog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJh
Y3Rlck5hbWVzLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxh
dGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpA
QCAtMTAzLDYgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVf
UkVDT0dOSVpFUikKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBs
YXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2
aXJ0dWFsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdDsKQEAgLTUwOSw2ICs1MjMsNDEg
QEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICBjb25zdHJ1Y3RSZWxhdGl2ZVdoZWVsRXZlbnQoZXZl
bnQsIHRoaXMsIG1fbGlzdEJveC5nZXQoKSkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKK2Jvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1U
b3VjaEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisvLyBGSVhNRTogT3Bwb3J0dW5pdHkgdG8gcmVmYWN0b3Ig
dGhpcyB3aXRoIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50Citib29sIFBvcHVwQ29u
dGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmVudCkKK3sKKyAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKKyAgICBj
YXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
RG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAg
ICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtlTW91c2VNb3ZlKTsKKyAgICAgICAgaGFuZGxl
TW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZTogeworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdl
c3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQu
ZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xs
QnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5z
aGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCks
IGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRo
ZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUtleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KTsKQEAgLTc1Miw2ICs4MDEsMjAgQEAgYm9vbCBQb3B1cExpc3RCb3g6OmlzSW50ZXJlc3RlZElu
RXZlbnRGb3JLZXkoaW50IGtleUNvZGUpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKK2Jvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoR0VTVFVSRV9SRUNPR05JWkVSKQorYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZUdlc3R1cmVF
dmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorI2VuZGlmCisKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50KGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZXZl
bnQgaXMgYSBjaGFyYWN0ZXItdHlwZWQgZXZlbnQgb3Igbm90LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgKaW5kZXggNDZjMTIz
MzkwNTJhNDNiOGMwNTczODlkMDA4NGJhN2JkNjBhZjA1ZS4uNmM4ZmI0YjgwNzQxZThlMjEwYmI0
NWE5ZTAzNGY4OWIwMDljN2E0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIyLDEyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50
Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKTsKKyNl
bmRpZgogCiAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggODViMGY3Y2I3YTAy
Y2ZlMjdkMGZiN2MwNTY5OTE3ZjgyMTE5ZWY0NS4uOGVhNjUzYjJhOGFjMTJkZDczMDMzODdkZDFi
NDNjOWQ1YzQ5YWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQpAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JN
YWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2CiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7Ci0gICAg
ZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1cmUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMDk1MmMwZTdiZjhkYzE4NWMyNWQ4NjZmNjJl
Nzg3NTc5YTM4YzJlLi5lZTAwNjUzNDViZTkzYWU5ZTg0ZTIyYWE2Mzc0YzQ3ZmY3NjA2YjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTA3LTI1ICBS
b2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIExheWVyaW5nIHZpb2xhdGlvbnMgaW4gZ2VzdHVyZSByZWNvZ25pemVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgTW92ZWQgZ2VzdHVyZSByZWNvZ25pdGlv
biBoaWdoZXIgdXAgdGhlIGV2ZW50IGRlbGl2ZXJ5IGNvZGUKKyAgICBwYXRoIHNvIHRoYXQgcmVj
b2duaXRpb24gb2YgZ2VzdHVyZXMgaXMgY29tcGxldGVseSBzZXBhcmF0ZWQKKyAgICBmcm9tIGdl
c3R1cmUgaGFuZGxpbmcuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0
ZUZyYW1lVmlldyk6CisgICAgQWRkZWQgY29kZSB0byByZXNldCB0aGUgZ2VzdHVyZSByZWNvZ25p
emVyIHRvIHByZXNlcnZlIHBhcmFsbGVsCisgICAgbGF5b3V0IHRlc3QgZXhlY3V0aW9uLgorICAg
ICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAgICBTdXBwb3J0IGRpc3BhdGNoaW5n
IHRvdWNoIGFuZCBnZXN0dXJlIGV2ZW50cyB0byBQb3B1cHMuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudUltcGw6OldlYlBvcHVwTWVudUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgIEFkZGVkIGdlc3R1cmUgcmVjb2duaXRpb24gY3Jl
YXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKyAgICBB
ZGRlZCByZWNvZ25pdGlvbiBvZiBnZXN0dXJlcyBhbmQgZGlzcGF0Y2ggb2YgZ2VzdHVyZSBldmVu
dHMuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0wNy0yMiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIERF
UFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggNDNkYjQ4MzQyZGYzYTJj
MzBiNWU0MDRlYWU2MGVhNWE4MmIwNzkzOC4uYmQ5MTJkYmQ2NTJlZWMwODY1ZjVlMjIxNzBlN2U4
NTZhMDVlZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5n
eXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDksNiAr
NDksNyBAQAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0xJywKICAgICAgICdFTkFCTEVfRklM
VEVSUz0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCisgICAgICAnRU5BQkxFX0dF
U1RVUkVfRVZFTlRTPTEnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVI9MScsCiAg
ICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRB
QkFTRT0xJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmlu
ZGV4IDNjNGFmYjk4YzJkYTE3OTZhZjQwOTQ4NmI4MjI5MDcxMzFiZjgzNTkuLmUwZWFkMzFjODBi
NjcxZjc4NzcxMjg5MzM4N2YzYjY1MjAxNDdjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTk5NCw2ICsxOTk0LDEwIEBAIHZvaWQgV2ViRnJh
bWVJbXBsOjpjcmVhdGVGcmFtZVZpZXcoKQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAg
ICB2aWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKKyAgICAgICAgd2ViVmlldy0+cmVzZXRHZXN0dXJlUmVjb2duaXplcigpOworI2Vu
ZGlmCiB9CiAKIFdlYkZyYW1lSW1wbCogV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCA3N2Q1YjgyNmI0MzlhY2VmMThhNzgxOTYxOTcwY2JhYjc4ZjBmNWMzLi4xOGQyMDA4
YmUzMTU0MjA4OGJkMWE3ZWJmMDg4YzZiYjc1MjAzMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcApAQCAtNTIsNiArNTIsMTEgQEAKIAog
I2luY2x1ZGUgPHNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oPgogCisjaWYgRU5BQkxFKEdFU1RV
UkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02OSw2ICs3NCw5IEBAIFdlYlBv
cHVwTWVudSogV2ViUG9wdXBNZW51OjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiBX
ZWJQb3B1cE1lbnVJbXBsOjpXZWJQb3B1cE1lbnVJbXBsKFdlYldpZGdldENsaWVudCogY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV93aWRnZXQoMCkKKyNpZiBFTkFCTEUo
R0VTVFVSRV9SRUNPR05JWkVSKQorICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihXZWJDb3JlOjpQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKKyNlbmRpZgogewogICAgIC8vIHNl
dCB0byBpbXBvc3NpYmxlIHBvaW50IHNvIHdlIGFsd2F5cyBnZXQgdGhlIGZpcnN0IG1vdXNlIHBv
cwogICAgIG1fbGFzdE1vdXNlUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOwpAQCAtMTI1LDYg
KzEzMywyMSBAQCB2b2lkIFdlYlBvcHVwTWVudUltcGw6Ok1vdXNlV2hlZWwoY29uc3QgV2ViTW91
c2VXaGVlbEV2ZW50JiBldmVudCkKICAgICBtX3dpZGdldC0+aGFuZGxlV2hlZWxFdmVudChQbGF0
Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCkpOwogfQogCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK2Jvb2wgV2ViUG9wdXBNZW51SW1wbDo6VG91Y2hFdmVudChjb25zdCBX
ZWJUb3VjaEV2ZW50JiBldmVudCkKK3sKKworICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIg
dG91Y2hFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KTsKKyAgICBib29sIGRlZmF1bHRQcmV2
ZW50ZWQobV93aWRnZXQtPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1aWxkZXIpKTsKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6
UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNvZ25pemVy
LT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBkZWZhdWx0
UHJldmVudGVkKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwgZ2VzdHVyZUV2
ZW50cy0+c2l6ZSgpOyBpKyspCisgICAgbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudCgoKmdl
c3R1cmVFdmVudHMpW2ldKTsKKyNlbmRpZgorICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwor
fQorI2VuZGlmCisKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5RXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVLZXlFdmVu
dChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CkBAIC0yMzcsNiArMjYwLDEz
IEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1
dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKICAgICAg
ICAgcmV0dXJuIEtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4o
JmlucHV0RXZlbnQpKTsKIAorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
OlRvdWNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAg
IHJldHVybiBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlu
cHV0RXZlbnQpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1
cE1lbnVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmgKaW5kZXggODBlNDY1ZTk1OTVmYTQ1NTI5ODEzYzhmZTk0ZTIxMWQyNzk5ZDc4NS4uMjkxYTkx
MGUyMDY0OTMyMjU2ZTA0MzgzZmZlNjFiMWE0ZThjMzJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2Vi
U2l6ZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw2ICs0Myw5IEBAIGNsYXNzIEZyYW1l
OwogY2xhc3MgRnJhbWVsZXNzU2Nyb2xsVmlldzsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFz
cyBQYWdlOworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBj
bGFzcyBSYW5nZTsKIGNsYXNzIFdpZGdldDsKQEAgLTUzLDYgKzU3LDcgQEAgY2xhc3MgV2ViTW91
c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYlJhbmdlOwogc3Ry
dWN0IFdlYlJlY3Q7CitjbGFzcyBXZWJUb3VjaEV2ZW50OwogCiBjbGFzcyBXZWJQb3B1cE1lbnVJ
bXBsIDogcHVibGljIFdlYlBvcHVwTWVudSwKICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgV2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudCwKQEAgLTk5LDYgKzEwNCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIE1vdXNlVXAoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZv
aWQgTW91c2VEb3VibGVDbGljayhjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3Vz
ZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYpOworICAgIGJvb2wgVG91Y2hFdmVudChj
b25zdCBXZWJUb3VjaEV2ZW50Jik7CiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50Jik7CiAKICAgIHByb3RlY3RlZDoKQEAgLTEzNiw2ICsxNDIsMTIgQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgaXMgYSBub24tb3duaW5nIHJlZi4gIFRoZSBwb3B1cCB3aWxsIG5vdGlmeSB1
cyB2aWEgcG9wdXBDbG9zZWQoKQogICAgIC8vIGJlZm9yZSBpdCBpcyBkZXN0cm95ZWQuCiAgICAg
V2ViQ29yZTo6RnJhbWVsZXNzU2Nyb2xsVmlldyogbV93aWRnZXQ7CisKKyNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCisKKyAgICAKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDA1YWFiNDNiNDNmOWU2NDZjOTE2ZTQ4MmM0ZjY5MTY5ZDkyMjI0MmMuLjY1Y2Jh
ODAzOGJkZjRkYTBhMDEyOGZmNGQxN2IxYmYwNzRlOTI2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEyOSw2ICsxMjksMTQgQEAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNl
bmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyLmgiCisjZW5kaWYKKwogI2lmIFVTRShDRykKICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NH
Q29udGV4dC5oPgpAQCAtMzQwLDYgKzM0OCw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChX
ZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25D
bGllbnRQcm94eShhZG9wdFB0cihuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGll
bnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkpCiAgICAgLCBtX2dl
b2xvY2F0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9uQ2xpZW50UHJveHko
Y2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgpIDogMCkpKQorI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgLy8gV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxs
IHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2Ug
bmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtNzU3LDcgKzc2OCwxNSBAQCBib29sIFdlYlZpZXdJ
bXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWls
ZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFp
bkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0
b3VjaEV2ZW50QnVpbGRlcik7CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVu
dEJ1aWxkZXIpKTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1f
Z2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVu
dEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9
IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudCgoKmdl
c3R1cmVFdmVudHMpW2ldKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7
CiB9CiAjZW5kaWYKIApAQCAtMjY3NSw0ICsyNjk0LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNl
dFZpc2liaWxpdHlTdGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwK
ICNlbmRpZgogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK3ZvaWQgV2ViVmll
d0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIG1fZ2VzdHVyZVJlY29nbml6
ZXItPnJlc2V0KCk7Cit9CisjZW5kaWYKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDI5YTY2ODI5MDNlZjU4Njk3
MzhjY2Q2MTYyYTEwM2I4ZTVmZGM3YjMuLmE2NzgwNzhkMjQ0ZDgwMzBiYzk1ZjJkODU5MzlmYWRl
MDMwNjgxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAt
NjcsNiArNjcsOSBAQCBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNz
IFJlbmRlclRoZW1lOwogY2xhc3MgV2lkZ2V0OworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTkla
RVIpCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMzg1LDYgKzM4OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYSBwbHVn
aW4gY2FuIHVwZGF0ZSBpdHMgb3duIHpvb20sIHNheSBiZWNhdXNlIG9mIGl0cyBvd24gVUkuCiAg
ICAgdm9pZCBmdWxsRnJhbWVQbHVnaW5ab29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwp
OwogCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2b2lkIHJlc2V0R2VzdHVy
ZVJlY29nbml6ZXIoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJW
aWV3OyAgLy8gU28gV2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAg
IGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpAQCAtNTY2LDYgKzU3
MywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4g
bV90ZW1wb3JhcnlPbnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEOwogICAgIE93blB0cjxEZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiAg
ICAgT3duUHRyPEdlb2xvY2F0aW9uQ2xpZW50UHJveHk+IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94
eTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102044</attachid>
            <date>2011-07-26 13:01:08 -0700</date>
            <delta_ts>2011-07-26 15:21:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110726160122.patch</filename>
            <type>text/plain</type>
            <size>42558</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMmI5OTViYTE2MzE0NWM0
ZGNhNGE3MWI4ZDM3ZDM2N2FiMzFjOWQ3Li4yNjQ0ZjliMmQyYWU5ZmI3NzkzYmM0NzE1N2IxNjUx
NTM4ZDZkY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDctMjYgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGl2aWRlZCB0aGUgZ2VzdHVyZSByZWNv
Z25pemVyIHVwIHRvIGNvcnJlY3QgYSBsYXllcmluZworICAgICAgICB2aW9sYXRpb24gYnkgbW92
aW5nIGdlc3R1cmUgaW1wbGVtZW50YXRpb24gZnJvbSBpdCB0bworICAgICAgICBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAg
ICAgICAgY291bGQgc2ltcGx5IGJlIGFuIGVuZ2luZSBmb3IgZ2VuZXJhdGluZyBnZXN0dXJlIGV2
ZW50cyBmcm9tCisgICAgICAgIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlZCBjb25zdHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICBFeHRlbmRlZCBmb3IgbmV3IGdlc3R1cmUgZXZlbnRzIGFkZGVkIGluIHRoaXMgcGF0Y2gu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAg
ICAgICBSZW1vdmVkIGNhbGwgaW50byBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIHRvIHJl
c2V0IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmRlbHRh
WSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6c2hpZnRLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFsdEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6bWV0YUtleSk6CisgICAgICAgIEFkZGVkIGFkZGl0
aW9uYWwgZ2VzdHVyZSB0eXBlcyBhbmQgcGFyYW1ldGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
RnJhbWVsZXNzU2Nyb2xsVmlldy5oOgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF0
Y2hpbmcgZ2VzdHVyZSBhbmQgdG91Y2ggZXZlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6SW5uZXJHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVu
dEZvckdlc3R1cmVzKToKKyAgICAgICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMgb24gRXZlbnRI
YW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUgZ2VzdHVyZQorICAgICAgICBldmVudHMgZnJvbSB0b3Vj
aCBldmVudCBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
Ojpjb25zdHJ1Y3RTY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgdG8gaGFuZGxl
IHRvdWNoIGV2ZW50cyBhbmQgZ2VzdHVyZSBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlz
dEJveDo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6
OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgSWdub3JlcyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBl
cy4KKwogMjAxMS0wNy0yNiAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+
CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIENvbGxlY3QgZmxvd2VkIGVsZW1lbnRzIGluIGRpZmZl
cmVudCByZW5kZXIgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCmluZGV4IDBhNWRh
NGMyYjgwNWQ4ZmVmZWJkYmQwNmExZDQ0NzRmZmU5YzNiMDkuLjU3M2VhNjNkZjM4NmNlYmJhMzY3
NzZjYTk2OTk4MTRhYjQ0MzA1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAgV2hlZWxFdmVudDo6V2hlZWxFdmVudChjb25zdCBGbG9hdFBvaW50JiB3aGVl
bFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiByYXdEZWx0YSwKICAgICA6IE1vdXNlUmVsYXRlZEV2
ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5Mb2NhdGlvbiwgcGFnZUxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkK
LSAgICAsIG1fd2hlZWxEZWx0YShJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHdoZWVsVGlja3Mu
eCgpICogMTIwKSwgc3RhdGljX2Nhc3Q8aW50Pih3aGVlbFRpY2tzLnkoKSAqIDEyMCkpKQorICAg
ICwgbV93aGVlbERlbHRhKEludFBvaW50KHN0YXRpY19jYXN0PGludD4od2hlZWxUaWNrcy54KCkg
KiB0aWNrTXVsdGlwbGllciksIHN0YXRpY19jYXN0PGludD4od2hlZWxUaWNrcy55KCkgKiB0aWNr
TXVsdGlwbGllcikpKQogICAgICwgbV9yYXdEZWx0YShyb3VuZGVkSW50UG9pbnQocmF3RGVsdGEp
KQogICAgICwgbV9ncmFudWxhcml0eShncmFudWxhcml0eSkKIHsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVs
dGFZLCBQYXNzUmVmUHRyPEFic3RyYWMKICAgICBtX21ldGFLZXkgPSBtZXRhS2V5OwogICAgIAog
ICAgIC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKLSAgICBtX3doZWVs
RGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVggKiAxMjAsIHJhd0RlbHRhWSAqIDEyMCk7CisgICAg
bV93aGVlbERlbHRhID0gSW50UG9pbnQocmF3RGVsdGFYICogdGlja011bHRpcGxpZXIsIHJhd0Rl
bHRhWSAqIHRpY2tNdWx0aXBsaWVyKTsKICAgICAKICAgICBtX3Jhd0RlbHRhID0gSW50UG9pbnQo
cmF3RGVsdGFYLCByYXdEZWx0YVkpOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBQaXhlbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5oCmluZGV4IDkxOWQwNjlmNTRmOGYyMzc2MmZjNGQwY2MwNWYyZmNhYmJm
Yjg3YTEuLjBmODU5MTJjZTFhNzc3MDJjY2I3ODdkMGVjZDE3MDI3N2Q3MTM4OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuaApAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgLy8gZXh0ZW5zaW9uOiBtb3VzZSB3aGVlbCBldmVudAogICAgIGNsYXNzIFdoZWVsRXZlbnQg
OiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnQgewogICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSB7
IHRpY2tNdWx0aXBsaWVyID0gMTIwIH07CisKICAgICAgICAgZW51bSBHcmFudWxhcml0eSB7IFBp
eGVsLCBMaW5lLCBQYWdlIH07CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2hlZWxFdmVu
dD4gY3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA5Mjk1Yzg2
NjIyZWMxYWUyYTAwOGRmMDM0YTdhOWEzNDMyMjFlNTg1Li44NDZhZmJiNzllMTdkMTUyMWU1OTg0
YzRkOWM4N2MwZjJkZTBkNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0xMDAsMTAgKzEwMCw2IEBACiAjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjZW5kaWYKIAotI2lm
IEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0jaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplci5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKQEAgLTIxMCw5ICsyMDYsNiBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFu
ZGxlcihGcmFtZSogZnJhbWUpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1fdG91
Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
LSAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6Y3Jl
YXRlKCkpCi0jZW5kaWYKIHsKIH0KIApAQCAtMjIyNywxMSArMjIyMCwzMyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiAgICAgLy8gdGhhdCBpZiBhIGZyYW1lIGdldHMgYSBnZXN0dXJlIGJlZ2lu
IGdlc3R1cmUsIGl0IGdldHMgdGhlIGNvcnJlc3BvbmRpbmcKICAgICAvLyBlbmQgZ2VzdHVyZSBh
cyB3ZWxsLgogCi0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOwotICAgIGlm
ICghdmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50
LnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAg
ICAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSB0byBub3QgaGl0IHRlc3QgbXVsdGlw
bGUgdGltZXMgb25jZSBoaXQgdGVzdGluZyBoYXMgYmVlbiBjb3JyZWN0ZWQgYXMgc3VnZ2VzdGVk
IGFib3ZlLgorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZShnZXN0dXJl
RXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIE5vQnV0dG9u
LCBNb3VzZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0
S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2Vz
dHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24oZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCks
IGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJl
c3NlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVy
ZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0
YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNl
RXZlbnQgZmFrZU1vdXNlVXAoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5n
bG9iYWxQb3NpdGlvbigpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNr
Q291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5
KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVy
ZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlKTsK
KyAgICAgICAgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGZha2VNb3VzZURvd24pOworICAgICAgICBo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBl
OiB7CisgICAgICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdoZWVsRXZlbnQ6
OnRpY2tNdWx0aXBsaWVyOworICAgICAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGludGVyaW0g
aW1wbGVtZW50YXRpb24gb25jZSB0aGUgYWJvdmUgZml4bWUgaGFzIGJlZW4gYWRkcmVzc2VkLgor
ICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVu
dC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkg
LyB0aWNrRGl2aXNvciwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpIC8gdGlja0Rpdmlzb3IsIFNjcm9s
bEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJlRXZlbnQu
c2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgp
LCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICAgICAgaGFuZGxlV2hlZWxFdmVudChzeW50
aGV0aWNXaGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgorICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLT52aWV3KCk7CisgICAgICAgIGlmICghdmlldykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOworICAg
ICAgICB2aWV3LT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC0zMjg2LDIx
ICszMzAxLDkgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgfQogICAgIH0KIAotI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCi0gICAgaWYgKG1fZ2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAg
IG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShldmVudCwg
dGhpcywgZGVmYXVsdFByZXZlbnRlZCk7Ci0jZW5kaWYKLQogICAgIHJldHVybiBkZWZhdWx0UHJl
dmVudGVkOwogfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLXZvaWQgRXZlbnRI
YW5kbGVyOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKLXsKLSAgICBpZiAobV9nZXN0dXJlUmVj
b2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cmVzZXQoKTsKLX0KLSNlbmRp
ZgogCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggOGFiNzQzN2U2
YTIxMTY1ODE2MmIwNDlhYzg5MTc2ZjgwNjJhOTgxNC4uZDE3OGI2YzFlNjZhMzE5ZGM1ODQ0NDY3
Y2FiMmQ2N2FmODQzZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC04MCwx
MCArODAsNiBAQCBjbGFzcyBXaWRnZXQ7CiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKICNl
bmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLWNsYXNzIFBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBleHRl
cm4gY29uc3QgaW50IExpbmtEcmFnSHlzdGVyZXNpczsKIGV4dGVybiBjb25zdCBpbnQgSW1hZ2VE
cmFnSHlzdGVyZXNpczsKQEAgLTE2NiwxMCArMTYyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFu
ZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgdm9pZCByZXNldEdlc3R1cmVSZWNv
Z25pemVyKCk7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGJvb2wg
c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgYm9v
bCBzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwpAQCAtNDI5LDkgKzQyMSw2IEBAIHByaXZh
dGU6CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzOwog
ICAgIGJvb2wgbV90b3VjaFByZXNzZWQ7CiAjZW5kaWYKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNP
R05JWkVSKQotICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVS
ZWNvZ25pemVyOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZjU0NmMxMzA4ZjNjMzc4NWFmZmJkMmIxNWZhMWQ5YjNj
MTgzMzk3NS4uMTNkMzY1NDdkMDEzN2MxNGVkYWEzMDYwMGRjMTUwYzhkNzFlODA3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjMyLDEwICsyMzIsNiBAQCB2b2lkIEZyYW1lVmll
dzo6cmVzZXQoKQogICAgIG1faXNWaXN1YWxseU5vbkVtcHR5ID0gZmFsc2U7CiAgICAgbV9maXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRDYWxsYmFja1BlbmRpbmcgPSB0cnVlOwogICAgIG1fbWFp
bnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvciA9IDA7Ci0KLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNP
R05JWkVSKQotICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5yZXNldEdlc3R1cmVSZWNvZ25p
emVyKCk7Ci0jZW5kaWYKIH0KIAogYm9vbCBGcmFtZVZpZXc6OmlzRnJhbWVWaWV3KCkgY29uc3Qg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaAppbmRl
eCA5OTE1N2UxMDhlYWViMDgwZWMzYmU1MzI2NTA4MTljNWFhM2EzMjlhLi4xOGI3ZDFhYTJkMWVk
ZjlhODNkZWYyZjI2NmYyNTA5MDM3OTY4NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKQEAgLTM3LDYgKzM3LDggQEAgcHVibGljOgogICAg
IGVudW0gVHlwZSB7CiAgICAgICAgIFNjcm9sbEJlZ2luVHlwZSwKICAgICAgICAgU2Nyb2xsRW5k
VHlwZSwKKyAgICAgICAgU2Nyb2xsVXBkYXRlVHlwZSwKKyAgICAgICAgVGFwVHlwZQogICAgIH07
CiAKICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudCgpCkBAIC00NSw2ICs0NywyMCBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAorICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KFR5cGUgdHlwZSwgY29u
c3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNv
bnN0IGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IGZsb2F0IGRlbHRhWCwgY29uc3QgZmxvYXQgZGVs
dGFZLCBib29sIHNoaWZ0S2V5LCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIG1ldGFL
ZXkpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlv
bikKKyAgICAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQorICAgICAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICAgICAgLCBtX2RlbHRhWChkZWx0YVgpCisgICAg
ICAgICwgbV9kZWx0YVkoZGVsdGFZKQorICAgICAgICAsIG1fc2hpZnRLZXkoc2hpZnRLZXkpCisg
ICAgICAgICwgbV9jdHJsS2V5KGN0cmxLZXkpCisgICAgICAgICwgbV9hbHRLZXkoYWx0S2V5KQor
ICAgICAgICAsIG1fbWV0YUtleShtZXRhS2V5KQorICAgIHsKKyAgICB9CisKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0gLy8gUGxhdGZvcm1XaW5kb3cgY29v
cmRpbmF0ZXMuCkBAIC01MiwxMSArNjgsMjQgQEAgcHVibGljOgogCiAgICAgZG91YmxlIHRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAKKyAgICBmbG9hdCBkZWx0YVgo
KSBjb25zdCB7IHJldHVybiBtX2RlbHRhWDsgfQorICAgIGZsb2F0IGRlbHRhWSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsdGFZOyB9CisgICAgYm9vbCBzaGlmdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25zdCB7IHJldHVybiBtX2N0cmxLZXk7
IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0S2V5OyB9CisgICAgYm9v
bCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5OyB9CisKIHByb3RlY3RlZDoKICAg
ICBUeXBlIG1fdHlwZTsKICAgICBJbnRQb2ludCBtX3Bvc2l0aW9uOwogICAgIEludFBvaW50IG1f
Z2xvYmFsUG9zaXRpb247CiAgICAgZG91YmxlIG1fdGltZXN0YW1wOworICAgIGZsb2F0IG1fZGVs
dGFYOworICAgIGZsb2F0IG1fZGVsdGFZOworICAgIGJvb2wgbV9zaGlmdEtleTsKKyAgICBib29s
IG1fY3RybEtleTsKKyAgICBib29sIG1fYWx0S2V5OworICAgIGJvb2wgbV9tZXRhS2V5OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDJmODA1YmQyNjI3MWRjMTRkMzkw
NDUzZTNjOTA2Y2UwYTE0M2I1YzguLjBiODZhOTI3NmZiNmJkZWY5YjdjMzc4ODNjNTA5M2Y3N2Uw
NGNiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyLmgKQEAgLTMxLDE4ICszMSwxNSBAQAogI2lmbmRlZiBQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyX2gKICNkZWZpbmUgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCiAKKyNp
bmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEV2ZW50SGFuZGxlcjsKLWNsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CiBjbGFz
cyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiAKLS8vIEEgR2VzdHVyZVJlY29nbml6ZXIgZGV0ZWN0cyBn
ZXN0dXJlcyBvY2N1cnJpbmcgaW4gdGhlIHRvdWNoIGV2ZW50LgotLy8gSW4gcmVzcG9uc2UgdG8g
YSBnaXZlbiB0b3VjaCBldmVudCwgdGhlIEdlc3R1cmVSZWNvZ25pemVyLCB1cGRhdGVzCi0vLyBp
dHMgaW50ZXJuYWwgc3RhdGUgYW5kIG9wdGlvbmFsbHkgZGlzcGF0Y2hlcyBzeW50aGV0aWMgZXZl
bnRzIHRvIHRoZQotLy8gaW52b2tpbmcgRXZlbnRIYW5kbGVyIGluc3RhbmNlLgogY2xhc3MgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplciB7CiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1HZXN0dXJl
UmVjb2duaXplcigpOwpAQCAtNTEsMTIgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFs
IH5QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CiAKLSAgICAvLyBJbnZva2VkIGZvciBlYWNo
IHRvdWNoIGV2ZW50IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byB0aGUgY3VycmVudCBnZXN0dXJl
LgotICAgIC8vIFRha2VzIGEgUGxhdGZvcm1Ub3VjaEV2ZW50IGFuZCB0aGUgRXZlbnRIYW5kbGVy
IHRoYXQgb3JpZ2luYXRlZCBpdCBhbmQgd2hpY2ggd2lsbCBhbHNvCi0gICAgLy8gYmUgdGhlIHRh
cmdldCBvZiBhbnkgZ2VuZXJhdGVkIHN5bnRoZXRpYyBldmVudC4gRmluYWxseSwgfGhhbmRsZWR8
Ci0gICAgLy8gc3BlY2lmaWVzIGlmIHRoZSB8ZXZlbnR8IHdhcyBhY3R1YWxseSBoYW5kbGVkIGJ5
IHxzb3VyY2V8IChieSB0aGUgSmF2YVNjcmlwdCkKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhl
IGV2ZW50IHJlc3VsdGVkIGluIGZpcmluZyBhIHN5bnRoZXRpYyBldmVudC4KLSAgICB2aXJ0dWFs
IGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYsIEV2ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCkgPSAwOworICAgIHR5cGVkZWYgUGFzc093
blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gUGFzc0dlc3R1cmVzOworCisgICAg
Ly8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCBhbmQgcmV0dXJucyAwIG9yIG1vcmUgcmVz
dWx0aW5nIGdlc3R1cmVzLgorICAgIHZpcnR1YWwgUGFzc0dlc3R1cmVzIHByb2Nlc3NUb3VjaEV2
ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgYm9vbCBkZWZhdWx0UHJl
dmVudGVkKSA9IDA7CiAKICAgICAvLyBDbGVhcnMgdGhlIEdlc3R1cmVSZWNvZ25pemVyIHRvIGl0
cyBpbml0aWFsIHN0YXRlLgogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcu
aAppbmRleCBkNTRmNTQzMmNjNzQxODAyMTA1Yjg2N2RiMjM1MDBiN2QwODRlOGUxLi5jNmNjMmI1
ZjM0YjQyZTY0YzI1NTg1ZDlmNzhjOTVjYjlhNjFlNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCkBAIC0zNiw4
ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWVsZXNzU2Ny
b2xsVmlld0NsaWVudDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIGNsYXNz
IFBsYXRmb3JtR2VzdHVyZUV2ZW50OworI2VuZGlmCiAgICAgY2xhc3MgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKKyNlbmRpZgogICAgIGNsYXNz
IFBsYXRmb3JtV2hlZWxFdmVudDsKIAogICAgIC8vIEEgRnJhbWVsZXNzU2Nyb2xsVmlldyBpcyBh
IFNjcm9sbFZpZXcgdGhhdCBjYW4gYmUgdXNlZCB0byByZW5kZXIgY3VzdG9tCkBAIC02MCw2ICs2
NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVN
b3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYpID0gMDsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKSA9
IDA7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jikg
PSAwOworI2VuZGlmCiAKICAgICAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgcHVibGljIG1ldGhvZHM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCmluZGV4IDQwZmU4
OWY0YWFmNGMyOWQ2YTE0MmQ0ZWVjOTAxMzBjYjFkMzJjY2UuLjkwNTgyMDFkOWFhN2E4OWUzZDBl
MDliZmFhNGYzNDVhN2QxMjc0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwCkBAIC0z
MSwxNyArMzEsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmgiCiAKLSNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCBpc0Ns
aWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYpOwotc3RhdGljIGJvb2wgaW5TY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2Vz
dHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLXN0YXRpYyBib29s
IHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50Jik7CisvLyBGSVhNRTogQ29udmVydCB0byBtZXRob2RzLgorc3RhdGljIGJvb2wgY2xpY2so
SW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVy
R2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKK3N0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9s
bChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMpOworc3RhdGljIGJvb2wgaW5TY3JvbGwoSW5u
ZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2Vz
dHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKK3N0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdl
c3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJl
UmVjb2duaXplcjo6R2VzdHVyZXMpOworc3RhdGljIGJvb2wgdG91Y2hEb3duKElubmVyR2VzdHVy
ZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjpHZXN0dXJlcyk7CiAKIC8vIEZJWE1FOiBNYWtlIHRoZXNlIGNvbmZpZ3VyYWJsZSBw
cm9ncmFtbWF0aWNhbGx5Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBtYXhpbXVtVG91Y2hEb3duRHVy
YXRpb25JblNlY29uZHNGb3JDbGljayA9IDAuODsKQEAgLTUyLDcgKzUyLDYgQEAgSW5uZXJHZXN0
dXJlUmVjb2duaXplcjo6SW5uZXJHZXN0dXJlUmVjb2duaXplcigpCiAgICAgOiBtX2ZpcnN0VG91
Y2hUaW1lKDAuMCkKICAgICAsIG1fc3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Tm9HZXN0
dXJlKQogICAgICwgbV9sYXN0VG91Y2hUaW1lKDAuMCkKLSAgICAsIG1fZXZlbnRIYW5kbGVyKDAp
CiAgICAgLCBtX2N0cmxLZXkoZmFsc2UpCiAgICAgLCBtX2FsdEtleShmYWxzZSkKICAgICAsIG1f
c2hpZnRLZXkoZmFsc2UpCkBAIC04MCw3ICs3OSw2IEBAIHZvaWQgSW5uZXJHZXN0dXJlUmVjb2du
aXplcjo6cmVzZXQoKQogICAgIG1fZmlyc3RUb3VjaFRpbWUgPSAwLjA7CiAgICAgbV9zdGF0ZSA9
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVyZTsKICAgICBtX2xhc3RUb3VjaFRpbWUg
PSAwLjA7Ci0gICAgbV9ldmVudEhhbmRsZXIgPSAwOwogfQogCiBJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjp+SW5uZXJHZXN0dXJlUmVjb2duaXplcigpCkBAIC0xMDQsNDQgKzEwMiwzNiBAQCBib29s
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgcAogICAgIHJldHVybiBtYW5oYXR0YW5EaXN0YW5jZSA8IG1heGlt
dW1Ub3VjaE1vdmVJblBpeGVsc0ZvckNsaWNrOwogfQogCi12b2lkIElubmVyR2VzdHVyZVJlY29n
bml6ZXI6OmRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBw
b2ludCkKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kQ2xpY2tHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFr
ZU1vdXNlTW92ZShwb2ludC5wb3MoKSwgcG9pbnQuc2NyZWVuUG9zKCksIE5vQnV0dG9uLCBNb3Vz
ZUV2ZW50TW92ZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBt
X2FsdEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUpOwotICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VEb3duKHBvaW50LnBvcygpLCBwb2ludC5zY3JlZW5Qb3MoKSwgTGVmdEJ1
dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9zaGlmdEtleSwg
bV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUpOwotICAgIFBs
YXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChwb2ludC5wb3MoKSwgcG9pbnQuc2NyZWVuUG9z
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBt
X3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXksIG1fbGFzdFRvdWNoVGlt
ZSk7Ci0KLSAgICBtX2V2ZW50SGFuZGxlci0+bW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlKTsKLSAg
ICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VQcmVzc0V2ZW50KGZha2VNb3VzZURvd24pOwot
ICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChmYWtlTW91c2VVcCk7
CisgICAgZ2VzdHVyZXMtPmFwcGVuZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6VGFwVHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3Mo
KSwgbV9sYXN0VG91Y2hUaW1lLCAwLjBmLCAwLjBmLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1f
YWx0S2V5LCBtX21ldGFLZXkpKTsKIH0KIAotYm9vbCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpw
cm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVu
dCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkKK1BsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9j
ZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQs
IGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKIHsKLSAgICBtX2V2ZW50SGFuZGxlciA9IGV2ZW50SGFu
ZGxlcjsKICAgICBtX2N0cmxLZXkgPSBldmVudC5jdHJsS2V5KCk7CiAgICAgbV9hbHRLZXkgPSBl
dmVudC5hbHRLZXkoKTsKICAgICBtX3NoaWZ0S2V5ID0gZXZlbnQuc2hpZnRLZXkoKTsKICAgICBt
X21ldGFLZXkgPSBldmVudC5tZXRhS2V5KCk7CiAKKyAgICBPd25QdHI8VmVjdG9yPFBsYXRmb3Jt
R2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxQbGF0Zm9ybUdl
c3R1cmVFdmVudD4oKSk7CiAgICAgY29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBv
aW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBvaW50cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHAgPSBwb2ludHNbaV07CiAgICAgICAgIHVwZGF0ZVZhbHVlcyhldmVudC50aW1lc3RhbXAoKSwg
cCk7CiAKLSAgICAgICAgaWYgKEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24gZWYgPSBtX2VkZ2VG
dW5jdGlvbnMuZ2V0KHNpZ25hdHVyZShtX3N0YXRlLCBwLmlkKCksIHAuc3RhdGUoKSwgaGFuZGxl
ZCkpKQotICAgICAgICAgICAgaGFuZGxlZCA9ICgqZWYpKHRoaXMsIHApOworICAgICAgICBpZiAo
R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2lnbmF0
dXJlKG1fc3RhdGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBkZWZhdWx0UHJldmVudGVkKSkpCisgICAg
ICAgICAgICAoKmVmKSh0aGlzLCBwLCBnZXN0dXJlcy5nZXQoKSk7CiAgICAgfQotICAgIHJldHVy
biBoYW5kbGVkOworICAgIHJldHVybiBnZXN0dXJlcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6c2Nyb2xsVmlhVG91Y2hNb3Rpb24oY29uc3QgUGxhdGZvcm1U
b3VjaFBvaW50JiB0b3VjaFBvaW50KQordm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjphcHBl
bmRTY3JvbGxHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgR2Vz
dHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZmxvYXQgZGVsdGFYKHRvdWNoUG9pbnQucG9zKCkueCgp
IC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueCgpKTsKICAgICBmbG9hdCBkZWx0YVkodG91Y2hQb2lu
dC5wb3MoKS55KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi55KCkpOwogCi0gICAgLy8gRklYTUU6
IENvbnZlcnQgdG8gZ2VzdHVyZSBldmVudHMgd2hlbiB0aGV5IGhhbmRsZSBzdWJmcmFtZXMuCi0g
ICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVsRXZlbnQodG91Y2hQb2ludC5wb3Mo
KSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWCAvIHN0YXRp
Y19jYXN0PGZsb2F0PigxMjApLCBkZWx0YVkgLyBzdGF0aWNfY2FzdDxmbG9hdD4oMTIwKSwgU2Ny
b2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIG1fc2hpZnRLZXks
IG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSk7Ci0gICAgbV9ldmVudEhhbmRsZXItPmhh
bmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CisgICAgZ2VzdHVyZXMtPmFwcGVu
ZChQbGF0Zm9ybUdlc3R1cmVFdmVudChQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRl
VHlwZSwgdG91Y2hQb2ludC5wb3MoKSwgdG91Y2hQb2ludC5zY3JlZW5Qb3MoKSwgbV9sYXN0VG91
Y2hUaW1lLCBkZWx0YVgsIGRlbHRhWSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwg
bV9tZXRhS2V5KSk7CiAgICAgbV9maXJzdFRvdWNoUG9zaXRpb24gPSB0b3VjaFBvaW50LnBvcygp
OwogfQogCkBAIC0xNjYsMjkgKzE1NiwyOSBAQCB1bnNpZ25lZCBpbnQgSW5uZXJHZXN0dXJlUmVj
b2duaXplcjo6c2lnbmF0dXJlKFN0YXRlIGdlc3R1cmVTdGF0ZSwgdW5zaWduZWQgaWQsCiAgICAg
cmV0dXJuIDEgKyAoKHRvdWNoVHlwZSAmIDB4NykgPDwgMSB8IChoYW5kbGVkID8gMSA8PCA0IDog
MCkgfCAoKGlkICYgMHhmZmYpIDw8IDUgKSB8IChnZXN0dXJlU3RhdGUgPDwgMTcpKTsKIH0KIAot
c3RhdGljIGJvb2wgdG91Y2hEb3duKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKQorc3RhdGljIGJvb2wgdG91Y2hEb3du
KElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9y
bVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykK
IHsKICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
bm9HZXN0dXJlKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmKQorc3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2VzdHVy
ZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBnZXN0
dXJlUmVjb2duaXplci0+cmVzZXQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBi
b29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQorc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0
dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYgcG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewog
ICAgIGlmIChnZXN0dXJlUmVjb2duaXplci0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdlc3R1
cmVSZWNvZ25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKICAgICAgICAg
Z2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2Vz
dHVyZSk7Ci0gICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5kaXNwYXRjaFN5bnRoZXRpY0NsaWNr
KHBvaW50KTsKKyAgICAgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZENsaWNrR2VzdHVyZUV2
ZW50KHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBy
ZXR1cm4gbm9HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLCBwb2ludCk7CisgICAgcmV0dXJuIG5v
R2VzdHVyZShnZXN0dXJlUmVjb2duaXplciwgcG9pbnQsIGdlc3R1cmVzKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQorc3RhdGljIGJvb2wgaXND
bGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpH
ZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5DbGlj
a1RpbWVXaW5kb3coKSAmJiBnZXN0dXJlUmVjb2duaXplci0+aXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUocG9pbnQpKSB7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwpAQCAtMTk2LDE2ICsxODYs
MTYgQEAgc3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIq
IGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGEKICAgICB9CiAKICAgICBpZiAocG9pbnQuc3Rh
dGUoKSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQgJiYgIWdlc3R1cmVSZWNvZ25p
emVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKLSAgICAgICAgZ2VzdHVyZVJl
Y29nbml6ZXItPnNjcm9sbFZpYVRvdWNoTW90aW9uKHBvaW50KTsKKyAgICAgICAgZ2VzdHVyZVJl
Y29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmUocG9pbnQsIGdlc3R1cmVzKTsKICAgICAgICAg
Z2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlNjcm9s
bCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXN0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQorc3RhdGljIGJvb2wgaW5T
Y3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYgcG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVz
IGdlc3R1cmVzKQogewotICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zY3JvbGxWaWFUb3VjaE1vdGlv
bihwb2ludCk7CisgICAgZ2VzdHVyZVJlY29nbml6ZXItPmFwcGVuZFNjcm9sbEdlc3R1cmUocG9p
bnQsIGdlc3R1cmVzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjMyLDQgKzIyMiwxNCBA
QCBHZXN0dXJlUmVjb2duaXplckNocm9taXVtOjp+R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSgp
CiB7CiB9CiAKK1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQorewor
ICAgIHJldHVybiBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucHJvY2Vzc1RvdWNoRXZlbnRGb3JH
ZXN0dXJlcyh0b3VjaEV2ZW50LCBkZWZhdWx0UHJldmVudGVkKTsKK30KKwordm9pZCBHZXN0dXJl
UmVjb2duaXplckNocm9taXVtOjpyZXNldCgpCit7CisgICAgbV9pbm5lckdlc3R1cmVSZWNvZ25p
emVyLnJlc2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaAppbmRleCBhMWNhY2E5ZGRlZjRiOWI5NjZiMTE2NWY1ZjhmOTU2ZjZiMjdhZTRjLi44
ZDQwYWQwN2UzNmY5YTI2YWFiNTllNWIzNGMwMDE4MzM0YmEwODFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CisKIGNsYXNzIElubmVyR2VzdHVyZVJlY29nbml6ZXIg
ewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewpAQCAtNDcsMTYgKzQ5LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgU2Nyb2xsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKkdlc3R1cmVUcmFu
c2l0aW9uRnVuY3Rpb24pKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmKTsKKyAgICB0eXBlZGVmIFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4qICBH
ZXN0dXJlczsKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShJ
bm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVy
ZXMpOwogCiAgICAgfklubmVyR2VzdHVyZVJlY29nbml6ZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0
Y2hTeW50aGV0aWNDbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICB2b2lkIGFw
cGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVz
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAgICBib29sIGlzSW5DbGlja1RpbWVXaW5k
b3coKTsKICAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91
Y2hQb2ludCYpOwotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgRXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5kbGVkKTsK
LSAgICB2b2lkIHNjcm9sbFZpYVRvdWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYp
OworICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzICBw
cm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJv
b2wgZGVmYXVsdFByZXZlbnRlZCk7CisgICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlKGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICB2b2lkIHNldFN0YXRlKFN0YXRl
IHZhbHVlKSB7IG1fc3RhdGUgPSB2YWx1ZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgeyByZXR1cm4g
bV9zdGF0ZTsgfQogcHJvdGVjdGVkOgpAQCAtNzIsNyArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ZG91YmxlIG1fZmlyc3RUb3VjaFRpbWU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBkb3VibGUg
bV9sYXN0VG91Y2hUaW1lOwotICAgIEV2ZW50SGFuZGxlciogbV9ldmVudEhhbmRsZXI7CiAKICAg
ICBib29sIG1fY3RybEtleTsKICAgICBib29sIG1fYWx0S2V5OwpAQCAtODYsMTUgKzg4LDkgQEAg
cHVibGljOgogICAgIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIH5H
ZXN0dXJlUmVjb2duaXplckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQot
ICAgIHsKLSAgICAgICAgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyLnJlc2V0KCk7Ci0gICAgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAKLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCwg
RXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0
dXJlKHRvdWNoRXZlbnQsIGV2ZW50SGFuZGxlciwgaGFuZGxlZCk7Ci0gICAgfQorICAgIHZpcnR1
YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzICBwcm9jZXNzVG91Y2hF
dmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFBy
ZXZlbnRlZCk7CiBwcml2YXRlOgogICAgIElubmVyR2VzdHVyZVJlY29nbml6ZXIgbV9pbm5lckdl
c3R1cmVSZWNvZ25pemVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCA2MjhiOTE5YWEyYWM2ZGU4M2M5
NjE4Y2M2MDQxY2ZhYjIyOGFmOTRiLi4xOTgzMjczMzU5ZTEzMThiMzUwYTFiZTY4YTQ1MzE4MDFh
M2MzNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC01OCw2ICs1OCwxNCBAQAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0
Zm9ybVRvdWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcg
bmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtMTAzLDYgKzExMSwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVL
ZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3Jt
VG91Y2hFdmVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50Jik7CisjZW5kaWYKIAogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2aXJ0dWFsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3coKSBjb25zdDsKQEAgLTUwOSw2ICs1MjMsNDAgQEAgYm9vbCBQb3B1cENv
bnRhaW5lcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
KQogICAgICAgICBjb25zdHJ1Y3RSZWxhdGl2ZVdoZWVsRXZlbnQoZXZlbnQsIHRoaXMsIG1fbGlz
dEJveC5nZXQoKSkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUG9wdXBD
b250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCisvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIHNoYXJlIGZ1bmN0aW9uYWxp
dHkgd2l0aCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KK2Jvb2wgUG9wdXBDb250
YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQoreworICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgeworICAgIGNh
c2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0Nv
dW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgp
LCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVF
dmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VE
b3duKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24o
KSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2Vz
dHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVu
dC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFt
cCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVu
dC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwg
TW91c2VFdmVudFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAg
IC8vIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVN
b3VzZURvd25FdmVudChmYWtlTW91c2VEb3duKTsKKyAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNl
RXZlbnQoZmFrZU1vdXNlVXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2Fz
ZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgICAgICBQbGF0
Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwg
Z2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdl
c3R1cmVFdmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8q
IGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZl
bnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5
KCkpOworICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6
U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVu
ZFR5cGU6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5k
aWYKKwogYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwpAQCAtNzUyLDYgKzgw
MCwyMCBAQCBib29sIFBvcHVwTGlzdEJveDo6aXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQg
a2V5Q29kZSkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorYm9vbCBQb3B1
cExpc3RCb3g6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCitib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRm
b3JtR2VzdHVyZUV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogc3Rh
dGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBldmVudCkKIHsKICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBldmVudCBpcyBhIGNoYXJhY3Rl
ci10eXBlZCBldmVudCBvciBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAppbmRleCA0NmMxMjMzOTA1MmE0M2I4YzA1NzM4
OWQwMDg0YmE3YmQ2MGFmMDVlLi42YzhmYjRiODA3NDFlOGUyMTBiYjQ1YTllMDM0Zjg5YjAwOWM3
YTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1l
bnVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TWVudUNocm9taXVtLmgKQEAgLTEyMiw2ICsxMjIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50Jik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKKyNlbmRpZgorI2lm
IEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1
cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBQ
b3B1cENvbnRhaW5lciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRleCA4NWIwZjdjYjdhMDJjZmUyN2QwZmI3YzA1Njk5
MTdmODIxMTllZjQ1Li44ZWE2NTNiMmE4YWMxMmRkNzMwMzM4N2RkMWI0M2M5ZDVjNDlhZmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXYKIHsKICAgICBpZiAo
Z2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5U
eXBlKQogICAgICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlCisgICAgZWxzZSBp
ZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5k
VHlwZSkKICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDNhODMxYjM3ZDUzZjFiZWFlNzk1ZWI1NjEwZGRhMjFhMTFmOGRkZjkuLmI2
Y2QzZjRlZmViOTQ1OWY1NjFhNDIwMTU0NjBmMGFhNWE2NWViY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjYgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTGF5ZXJpbmcgdmlv
bGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgZ2VzdHVyZSByZWNvZ25pdGlvbiBoaWdoZXIgdXAg
dGhlIGV2ZW50IGRlbGl2ZXJ5IGNvZGUKKyAgICAgICAgcGF0aCBzbyB0aGF0IHJlY29nbml0aW9u
IG9mIGdlc3R1cmVzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGVkCisgICAgICAgIGZyb20gZ2VzdHVy
ZSBoYW5kbGluZy4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogc3JjL1dl
YkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y3JlYXRlRnJh
bWVWaWV3KToKKyAgICAgICAgQWRkZWQgY29kZSB0byByZXNldCB0aGUgZ2VzdHVyZSByZWNvZ25p
emVyIHRvIHByZXNlcnZlIHBhcmFsbGVsCisgICAgICAgIGxheW91dCB0ZXN0IGV4ZWN1dGlvbi4K
KyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIFN1cHBvcnQgZGlz
cGF0Y2hpbmcgdG91Y2ggYW5kIGdlc3R1cmUgZXZlbnRzIHRvIFBvcHVwcy4KKyAgICAgICAgKFdl
YktpdDo6V2ViUG9wdXBNZW51SW1wbDo6V2ViUG9wdXBNZW51SW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBN
ZW51SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIEFkZGVkIGdlc3R1cmUgcmVj
b2duaXRpb24gY3JlYXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2
ZW50KToKKyAgICAgICAgQWRkZWQgcmVjb2duaXRpb24gb2YgZ2VzdHVyZXMgYW5kIGRpc3BhdGNo
IG9mIGdlc3R1cmUgZXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVzZXRH
ZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEt
MDctMjUgIEFsIFBhdHJpY2sgIDxhcGF0cmlja0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVt
b3ZlZCBzdXBwb3J0IGZvciB0aGUgR0xfbGF0Y2hfQ0hST01JVU0gZXh0ZW5zaW9uIHdoaWNoIENo
cm9taXVtIG5vIGxvbmdlciBzdXBwb3J0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lw
aQppbmRleCA0M2RiNDgzNDJkZjNhMmMzMGI1ZTQwNGVhZTYwZWE1YTgyYjA3OTM4Li5iZDkxMmRi
ZDY1MmVlYzA4NjVmNWUyMjE3MGU3ZTg1NmEwNWVmNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpCkBAIC00OSw2ICs0OSw3IEBACiAgICAgICAnRU5BQkxFX0ZJTEVfU1lTVEVN
PTEnLAogICAgICAgJ0VOQUJMRV9GSUxURVJTPTEnLAogICAgICAgJ0VOQUJMRV9HRU9MT0NBVElP
Tj0xJywKKyAgICAgICdFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MScsCiAgICAgICAnRU5BQkxFX0dF
U1RVUkVfUkVDT0dOSVpFUj0xJywKICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAnLAogICAg
ICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggM2M0YWZiOThjMmRhMTc5NmFmNDA5NDg2YjgyMjkw
NzEzMWJmODM1OS4uMjYyYWIwNmM3NTczOGRjNGI2YjU0YzhhMDkwYzk4YTI4N2ZiYmIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xOTk0LDYg
KzE5OTQsMTAgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldygpCiAKICAgICBp
ZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIHZpZXctPnNldFBhcmVudFZpc2libGUodHJ1ZSk7CisK
KyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHdlYlZpZXctPnJlc2V0R2VzdHVy
ZVJlY29nbml6ZXIoKTsKKyNlbmRpZgogfQogCiBXZWJGcmFtZUltcGwqIFdlYkZyYW1lSW1wbDo6
ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHAKaW5kZXggNzdkNWI4MjZiNDM5YWNlZjE4YTc4MTk2MTk3MGNi
YWI3OGYwZjVjMy4uZmYzNTNlYzRmZGIwYjM3YTYxYjMyNDVlNWMzNWMyZGJiZjA5ODI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKQEAg
LTUyLDYgKzUyLDExIEBACiAKICNpbmNsdWRlIDxza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaD4K
IAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjksNiArNzQsOSBAQCBXZWJQb3B1cE1lbnUqIFdlYlBvcHVwTWVudTo6Y3JlYXRlKFdlYldpZGdl
dENsaWVudCogY2xpZW50KQogV2ViUG9wdXBNZW51SW1wbDo6V2ViUG9wdXBNZW51SW1wbChXZWJX
aWRnZXRDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fd2lk
Z2V0KDApCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICAsIG1fZ2VzdHVyZVJl
Y29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCisj
ZW5kaWYKIHsKICAgICAvLyBzZXQgdG8gaW1wb3NzaWJsZSBwb2ludCBzbyB3ZSBhbHdheXMgZ2V0
IHRoZSBmaXJzdCBtb3VzZSBwb3MKICAgICBtX2xhc3RNb3VzZVBvc2l0aW9uID0gV2ViUG9pbnQo
LTEsIC0xKTsKQEAgLTEyNSw2ICsxMzMsMjEgQEAgdm9pZCBXZWJQb3B1cE1lbnVJbXBsOjpNb3Vz
ZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgbV93aWRnZXQtPmhh
bmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQp
KTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitib29sIFdlYlBvcHVwTWVudUltcGw6
OlRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisKKyAgICBQbGF0Zm9y
bVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVudCk7Cisg
ICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKG1fd2lkZ2V0LT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNo
RXZlbnRCdWlsZGVyKSk7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBPd25Q
dHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMo
bV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2
ZW50QnVpbGRlciwgZGVmYXVsdFByZXZlbnRlZCkpOworICAgIGZvciAodW5zaWduZWQgaW50ICBp
ID0gMDsgaSA8IGdlc3R1cmVFdmVudHMtPnNpemUoKTsgaSsrKQorICAgICAgICBtX3dpZGdldC0+
aGFuZGxlR2VzdHVyZUV2ZW50KCgqZ2VzdHVyZUV2ZW50cylbaV0pOworI2VuZGlmCisgICAgcmV0
dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7Cit9CisjZW5kaWYKKwogYm9vbCBXZWJQb3B1cE1lbnVJbXBs
OjpLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4g
bV93aWRnZXQtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxkZXIoZXZl
bnQpKTsKQEAgLTIzNyw2ICsyNjAsMTEgQEAgYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJ
bnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpDaGFyOgogICAgICAgICByZXR1cm4gS2V5RXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogCisgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpUb3VjaFN0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hNb3ZlOgor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpUb3VjaENhbmNlbDoKKyAgICAgICAgcmV0dXJuIFRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNv
bnN0IFdlYlRvdWNoRXZlbnQqPigmaW5wdXRFdmVudCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBvcHVwTWVudUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVu
dUltcGwuaAppbmRleCA4MGU0NjVlOTU5NWZhNDU1Mjk4MTNjOGZlOTRlMjExZDI3OTlkNzg1Li4y
OTFhOTEwZTIwNjQ5MzIyNTZlMDQzODNmZmU2MWIxYTRlOGMzMmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRl
ICJXZWJTaXplLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDYgKzQzLDkgQEAgY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsK
IGNsYXNzIFBhZ2U7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFBsYXRm
b3JtR2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIFJhbmdlOwogY2xhc3MgV2lkZ2V0OwpAQCAtNTMsNiArNTcsNyBAQCBjbGFzcyBX
ZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViUmFuZ2U7
CiBzdHJ1Y3QgV2ViUmVjdDsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CiAKIGNsYXNzIFdlYlBvcHVw
TWVudUltcGwgOiBwdWJsaWMgV2ViUG9wdXBNZW51LAogICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50LApAQCAtOTksNiArMTA0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgTW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAg
ICAgdm9pZCBNb3VzZURvdWJsZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IE1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9vbCBUb3VjaEV2
ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmKTsKIAogICAgcHJvdGVjdGVkOgpAQCAtMTM2LDYgKzE0MiwxMiBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBpcyBhIG5vbi1vd25pbmcgcmVmLiAgVGhlIHBvcHVwIHdpbGwgbm90
aWZ5IHVzIHZpYSBwb3B1cENsb3NlZCgpCiAgICAgLy8gYmVmb3JlIGl0IGlzIGRlc3Ryb3llZC4K
ICAgICBXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3KiBtX3dpZGdldDsKKworI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKKworICAgIAogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggMGVhOTgyZThmMDAzZTJjNWIxNmVhMzVjZjIyY2U1NjhiNzg5NzVlNi4u
MmNkNzMzNjc3ODFkYzc2ODhlYTVjOWEyMjE2NTEyYjVhYmQ5ZmRhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTI5LDYgKzEyOSwxNCBAQAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lm
IEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5o
IgorI2VuZGlmCisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2luY2x1ZGUgIlBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKKyNlbmRpZgorCiAjaWYgVVNFKENHKQogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ0dDb250ZXh0Lmg+CkBAIC0zNDAsNiArMzQ4LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRh
dGlvbkNsaWVudFByb3h5KGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKSkKICAgICAs
IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eShhZG9wdFB0cihuZXcgR2VvbG9jYXRpb25DbGllbnRQ
cm94eShjbGllbnQgPyBjbGllbnQtPmdlb2xvY2F0aW9uQ2xpZW50KCkgOiAwKSkpCisjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29y
ZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKICAgICAv
LyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5
IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9k
LiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC03NTcsNyArNzY4LDE1IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVu
dEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgIHJldHVy
biBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2
ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsKKyAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWlu
RnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRv
dWNoRXZlbnRCdWlsZGVyKTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAg
T3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRXZl
bnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91
Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVu
dChnZXN0dXJlRXZlbnRzLT5hdChpKSk7CisjZW5kaWYKKworICAgIHJldHVybiBkZWZhdWx0UHJl
dmVudGVkOwogfQogI2VuZGlmCiAKQEAgLTI2NTgsNCArMjY3NywxMiBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUsCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCit2b2lk
IFdlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICBtX2dlc3R1cmVS
ZWNvZ25pemVyLT5yZXNldCgpOworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkNmU1N2M3Mjcy
NDE2YWI2YWRjODljYzVkMDNjNzVlOGM3YjFhY2YzLi40NDhhZWM3YTA4NjI4MzRlMWQ1MjRlYjIx
MmRiNDBiNTFiM2UwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTY3LDYgKzY3LDkgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUmFuZ2U7
CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFdpZGdldDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM4NSw2ICszODgsMTAgQEAgcHVibGljOgogICAgIC8v
IGEgcGx1Z2luIGNhbiB1cGRhdGUgaXRzIG93biB6b29tLCBzYXkgYmVjYXVzZSBvZiBpdHMgb3du
IFVJLgogICAgIHZvaWQgZnVsbEZyYW1lUGx1Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUgem9v
bUxldmVsKTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdm9pZCByZXNl
dEdlc3R1cmVSZWNvZ25pemVyKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0
b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsKQEAgLTU2
NSw2ICs1NzIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q+IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRDsKICAgICBPd25QdHI8
RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5OwogICAgIE93blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9uQ2xp
ZW50UHJveHk7CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102061</attachid>
            <date>2011-07-26 15:21:51 -0700</date>
            <delta_ts>2011-07-26 15:38:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110726182205.patch</filename>
            <type>text/plain</type>
            <size>42539</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTJhZmJlZmZlMDU5NjFl
NjBhMzE2NDkzZmJkN2Q2YjMwNjg2ZTBiLi4zN2JjMTNkOWU0NTM2MzAzNmE2ODMyODFjZGU1YTVj
YTYzNWNhNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDctMjYgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGl2aWRlZCB0aGUgZ2VzdHVyZSByZWNv
Z25pemVyIHVwIHRvIGNvcnJlY3QgYSBsYXllcmluZworICAgICAgICB2aW9sYXRpb24gYnkgbW92
aW5nIGdlc3R1cmUgaW1wbGVtZW50YXRpb24gZnJvbSBpdCB0bworICAgICAgICBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAg
ICAgICAgY291bGQgc2ltcGx5IGJlIGFuIGVuZ2luZSBmb3IgZ2VuZXJhdGluZyBnZXN0dXJlIGV2
ZW50cyBmcm9tCisgICAgICAgIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlZCBjb25zdHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICBFeHRlbmRlZCBmb3IgbmV3IGdlc3R1cmUgZXZlbnRzIGFkZGVkIGluIHRoaXMgcGF0Y2gu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAg
ICAgICBSZW1vdmVkIGNhbGwgaW50byBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIHRvIHJl
c2V0IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmRlbHRh
WSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6c2hpZnRLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFsdEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6bWV0YUtleSk6CisgICAgICAgIEFkZGVkIGFkZGl0
aW9uYWwgZ2VzdHVyZSB0eXBlcyBhbmQgcGFyYW1ldGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
RnJhbWVsZXNzU2Nyb2xsVmlldy5oOgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF0
Y2hpbmcgZ2VzdHVyZSBhbmQgdG91Y2ggZXZlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6SW5uZXJHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVu
dEZvckdlc3R1cmVzKToKKyAgICAgICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMgb24gRXZlbnRI
YW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUgZ2VzdHVyZQorICAgICAgICBldmVudHMgZnJvbSB0b3Vj
aCBldmVudCBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
Ojpjb25zdHJ1Y3RTY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgdG8gaGFuZGxl
IHRvdWNoIGV2ZW50cyBhbmQgZ2VzdHVyZSBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlz
dEJveDo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6
OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgSWdub3JlcyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBl
cy4KKwogMjAxMS0wNy0yNiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzc4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5jcHAKaW5kZXggMGE1ZGE0YzJiODA1ZDhmZWZlYmRiZDA2YTFkNDQ3NGZm
ZTljM2IwOS4uNTczZWE2M2RmMzg2Y2ViYmEzNjc3NmNhOTY5OTgxNGFiNDQzMDUwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJh
d0RlbHRhLAogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnROYW1lcygpLm1vdXNld2hlZWxF
dmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVl
bkxvY2F0aW9uLCBwYWdlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5
LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQotICAgICwgbV93aGVlbERlbHRhKEludFBvaW50
KHN0YXRpY19jYXN0PGludD4od2hlZWxUaWNrcy54KCkgKiAxMjApLCBzdGF0aWNfY2FzdDxpbnQ+
KHdoZWVsVGlja3MueSgpICogMTIwKSkpCisgICAgLCBtX3doZWVsRGVsdGEoSW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50Pih3aGVlbFRpY2tzLngoKSAqIHRpY2tNdWx0aXBsaWVyKSwgc3RhdGljX2Nh
c3Q8aW50Pih3aGVlbFRpY2tzLnkoKSAqIHRpY2tNdWx0aXBsaWVyKSkpCiAgICAgLCBtX3Jhd0Rl
bHRhKHJvdW5kZWRJbnRQb2ludChyYXdEZWx0YSkpCiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51
bGFyaXR5KQogewpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhYwogICAg
IG1fbWV0YUtleSA9IG1ldGFLZXk7CiAgICAgCiAgICAgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5k
b3dzIDEyMCBtdWx0aXBsZQotICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCAq
IDEyMCwgcmF3RGVsdGFZICogMTIwKTsKKyAgICBtX3doZWVsRGVsdGEgPSBJbnRQb2ludChyYXdE
ZWx0YVggKiB0aWNrTXVsdGlwbGllciwgcmF3RGVsdGFZICogdGlja011bHRpcGxpZXIpOwogICAg
IAogICAgIG1fcmF3RGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVgsIHJhd0RlbHRhWSk7CiAgICAg
bV9ncmFudWxhcml0eSA9IFBpeGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggOTE5ZDA2
OWY1NGY4ZjIzNzYyZmM0ZDBjYzA1ZjJmY2FiYmZiODdhMS4uMGY4NTkxMmNlMWE3NzcwMmNjYjc4
N2QwZWNkMTcwMjc3ZDcxMzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zMiw2ICsz
Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBleHRlbnNpb246IG1vdXNlIHdoZWVs
IGV2ZW50CiAgICAgY2xhc3MgV2hlZWxFdmVudCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVudCB7
CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIHsgdGlja011bHRpcGxpZXIgPSAxMjAgfTsKKwog
ICAgICAgICBlbnVtIEdyYW51bGFyaXR5IHsgUGl4ZWwsIExpbmUsIFBhZ2UgfTsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDkyOTVjODY2MjJlYzFhZTJhMDA4ZGYwMzRhN2E5YTM0MzIy
MWU1ODUuLjg0NmFmYmI3OWUxN2QxNTIxZTU5ODRjNGQ5Yzg3YzBmMmRlMGQ1OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMCwxMCArMTAwLDYgQEAKICNpbmNsdWRl
ICJUb3VjaExpc3QuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
LSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjEwLDkgKzIw
Niw2IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKLSNlbmRpZgogewogfQogCkBAIC0y
MjI3LDExICsyMjIwLDMzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAvLyB0aGF0IGlm
IGEgZnJhbWUgZ2V0cyBhIGdlc3R1cmUgYmVnaW4gZ2VzdHVyZSwgaXQgZ2V0cyB0aGUgY29ycmVz
cG9uZGluZwogICAgIC8vIGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgc3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6VGFwVHlwZTogeworICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhp
cyBjb2RlIHRvIG5vdCBoaXQgdGVzdCBtdWx0aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhh
cyBiZWVuIGNvcnJlY3RlZCBhcyBzdWdnZXN0ZWQgYWJvdmUuCisgICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
RG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAg
ICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZl
bnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VN
b3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgY29uc3QgZmxvYXQgdGlj
a0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7CisgICAgICAgIC8v
IEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92
ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBz
eW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQu
Z2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVs
dGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQu
ZGVsdGFZKCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNj
ZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3Ry
bEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwor
ICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
QmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6
CisgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYg
KCF2aWV3KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmlldy0+aGFuZGxlR2Vz
dHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7CisgICAgICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVu
dChnZXN0dXJlRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAjZW5kaWYKQEAgLTMyODYsMjEgKzMzMDEsOSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAg
ICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBpZiAo
bV9nZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKLSNl
bmRpZgotCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAKLSNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQotdm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0R2VzdHVyZVJlY29nbml6
ZXIoKQotewotICAgIGlmIChtX2dlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICBtX2dlc3R1cmVS
ZWNvZ25pemVyLT5yZXNldCgpOwotfQotI2VuZGlmCiAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCA4YWI3NDM3ZTZhMjExNjU4MTYyYjA0OWFjODkxNzZmODA2MmE5
ODE0Li5kMTc4YjZjMWU2NmEzMTlkYzU4NDQ0NjdjYWIyZDY3YWY4NDNmNGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTgwLDEwICs4MCw2IEBAIGNsYXNzIFdpZGdldDsKIGNs
YXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQotY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIGV4dGVybiBjb25zdCBpbnQgTGlua0RyYWdIeXN0ZXJl
c2lzOwogZXh0ZXJuIGNvbnN0IGludCBJbWFnZURyYWdIeXN0ZXJlc2lzOwpAQCAtMTY2LDEwICsx
NjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKLSAgICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5
KCk7CkBAIC00MjksOSArNDIxLDYgQEAgcHJpdmF0ZToKICAgICBUb3VjaFRhcmdldE1hcCBtX29y
aWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKICNl
bmRpZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmNTQ2
YzEzMDhmM2MzNzg1YWZmYmQyYjE1ZmExZDliM2MxODMzOTc1Li4xM2QzNjU0N2QwMTM3YzE0ZWRh
YTMwNjAwZGMxNTBjOGQ3MWU4MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0y
MzIsMTAgKzIzMiw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9pc1Zpc3VhbGx5
Tm9uRW1wdHkgPSBmYWxzZTsKICAgICBtX2ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxi
YWNrUGVuZGluZyA9IHRydWU7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0g
MDsKLQotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgogfQogCiBib29sIEZy
YW1lVmlldzo6aXNGcmFtZVZpZXcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IDk5MTU3ZTEwOGVhZWIwODBlYzNiZTUzMjY1
MDgxOWM1YWEzYTMyOWEuLjE4YjdkMWFhMmQxZWRmOWE4M2RlZjJmMjY2ZjI1MDkwMzc5Njg0N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApA
QCAtMzcsNiArMzcsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2Nyb2xs
QmVnaW5UeXBlLAogICAgICAgICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVU
eXBlLAorICAgICAgICBUYXBUeXBlCiAgICAgfTsKIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50
KCkKQEAgLTQ1LDYgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3Qg
ZmxvYXQgZGVsdGFYLCBjb25zdCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9zaXRpb24pCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAg
ICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKKyAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCisgICAg
ICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkK
KyAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkp
CisgICAgeworICAgIH0KKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogCiAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KQEAgLTUyLDExICs2OCwyNCBA
QCBwdWJsaWM6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
c3RhbXA7IH0KIAorICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9
CisgICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KKyAgICBib29s
IHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBt
X21ldGFLZXk7IH0KKwogcHJvdGVjdGVkOgogICAgIFR5cGUgbV90eXBlOwogICAgIEludFBvaW50
IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBkb3VibGUg
bV90aW1lc3RhbXA7CisgICAgZmxvYXQgbV9kZWx0YVg7CisgICAgZmxvYXQgbV9kZWx0YVk7Cisg
ICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRL
ZXk7CisgICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
LmgKaW5kZXggMmY4MDViZDI2MjcxZGMxNGQzOTA0NTNlM2M5MDZjZTBhMTQzYjVjOC4uMGI4NmE5
Mjc2ZmI2YmRlZjliN2MzNzg4M2M1MDkzZjc3ZTA0Y2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMzEsMTggKzMx
LDE1IEBACiAjaWZuZGVmIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogI2RlZmluZSBQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKIAorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnRIYW5kbGVyOwotY2xhc3MgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIAotLy8g
QSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91
Y2ggZXZlbnQuCi0vLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2Vz
dHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKLS8vIGl0cyBpbnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9u
YWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhlCi0vLyBpbnZva2luZyBFdmVu
dEhhbmRsZXIgaW5zdGFuY2UuCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyIHsKIHBy
b3RlY3RlZDoKICAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CkBAIC01MSwxMiArNDgs
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIo
KTsKIAotICAgIC8vIEludm9rZWQgZm9yIGVhY2ggdG91Y2ggZXZlbnQgdGhhdCBjb3VsZCBjb250
cmlidXRlIHRvIHRoZSBjdXJyZW50IGdlc3R1cmUuCi0gICAgLy8gVGFrZXMgYSBQbGF0Zm9ybVRv
dWNoRXZlbnQgYW5kIHRoZSBFdmVudEhhbmRsZXIgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGlj
aCB3aWxsIGFsc28KLSAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhl
dGljIGV2ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKLSAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxl
dmVudHwgd2FzIGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0
KQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEg
c3ludGhldGljIGV2ZW50LgotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdl
c3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgRXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5k
bGVkKSA9IDA7CisgICAgdHlwZWRlZiBQYXNzT3duUHRyPFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVF
dmVudD4gPiBQYXNzR2VzdHVyZXM7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2
ZW50IGFuZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2VzdHVyZXMuCisgICAgdmlydHVh
bCBQYXNzR2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0gMDsKIAogICAgIC8vIENsZWFy
cyB0aGUgR2VzdHVyZVJlY29nbml6ZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuCiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCmluZGV4IGQ1NGY1NDMyY2M3NDE4MDIxMDVi
ODY3ZGIyMzUwMGI3ZDA4NGU4ZTEuLmM2Y2MyYjVmMzRiNDJlNjRjMjU1ODVkOWY3OGM5NWNiOWE2
MWU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1l
bGVzc1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
cmFtZWxlc3NTY3JvbGxWaWV3LmgKQEAgLTM2LDggKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50OworI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCisgICAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2xhc3MgUGxhdGZvcm1U
b3VjaEV2ZW50OworI2VuZGlmCiAgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogCiAgICAg
Ly8gQSBGcmFtZWxlc3NTY3JvbGxWaWV3IGlzIGEgU2Nyb2xsVmlldyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHJlbmRlciBjdXN0b20KQEAgLTYwLDYgKzY2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShHRVNU
VVJFX1JFQ09HTklaRVIpCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKSA9IDA7CisjZW5kaWYKIAogICAgICAgICAvLyBT
Y3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKICAgICAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDBmZTg5ZjRhYWY0YzI5ZDZhMTQyZDRlZWM5MDEzMGNi
MWQzMmNjZS4uOTA1ODIwMWQ5YWE3YTg5ZTNkMGUwOWJmYWE0ZjM0NWE3ZDEyNzQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIKIAotI2luY2x1
ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCBpblNjcm9s
bChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1z
dGF0aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wgdG91Y2hEb3duKElubmVyR2VzdHVyZVJlY29n
bml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKy8vIEZJWE1FOiBDb252ZXJ0IHRv
IG1ldGhvZHMuCitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMp
Oworc3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyk7CitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMpOwor
c3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyk7CitzdGF0
aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKIAogLy8gRklY
TUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHkuCiBzdGF0aWMgY29u
c3QgZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0ZvckNsaWNrID0gMC44
OwpAQCAtNTIsNyArNTIsNiBAQCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKCkKICAgICA6IG1fZmlyc3RUb3VjaFRpbWUoMC4wKQogICAgICwgbV9zdGF0ZShJ
bm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpCiAgICAgLCBtX2xhc3RUb3VjaFRpbWUo
MC4wKQotICAgICwgbV9ldmVudEhhbmRsZXIoMCkKICAgICAsIG1fY3RybEtleShmYWxzZSkKICAg
ICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICwgbV9zaGlmdEtleShmYWxzZSkKQEAgLTgwLDcgKzc5
LDYgQEAgdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiAgICAgbV9maXJzdFRv
dWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Tm9H
ZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKLSAgICBtX2V2ZW50SGFuZGxlciA9
IDA7CiB9CiAKIElubmVyR2VzdHVyZVJlY29nbml6ZXI6On5Jbm5lckdlc3R1cmVSZWNvZ25pemVy
KCkKQEAgLTEwNCw0NCArMTAyLDM2IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6aXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwCiAgICAgcmV0
dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9yQ2xpY2s7
CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6ZGlzcGF0Y2hTeW50aGV0aWNDbGlj
ayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQordm9pZCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjphcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHRvdWNoUG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQog
ewotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKHBvaW50LnBvcygpLCBwb2lu
dC5zY3JlZW5Qb3MoKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAq
LyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXksIG1fbGFzdFRv
dWNoVGltZSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocG9pbnQucG9z
KCksIHBvaW50LnNjcmVlblBvcygpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFL
ZXksIG1fbGFzdFRvdWNoVGltZSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVw
KHBvaW50LnBvcygpLCBwb2ludC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJl
bGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRL
ZXksIG1fbWV0YUtleSwgbV9sYXN0VG91Y2hUaW1lKTsKLQotICAgIG1fZXZlbnRIYW5kbGVyLT5t
b3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7Ci0gICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRm
b3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlLCB0b3VjaFBvaW50
LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuMGYsIDAu
MGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCi1i
b29sIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxl
ciwgYm9vbCBoYW5kbGVkKQorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQogewot
ICAgIG1fZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyOwogICAgIG1fY3RybEtleSA9IGV2ZW50
LmN0cmxLZXkoKTsKICAgICBtX2FsdEtleSA9IGV2ZW50LmFsdEtleSgpOwogICAgIG1fc2hpZnRL
ZXkgPSBldmVudC5zaGlmdEtleSgpOwogICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkoKTsK
IAorICAgIE93blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PigpKTsKICAgICBjb25zdCBW
ZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0gZXZlbnQudG91Y2hQb2ludHMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBvaW50c1tpXTsKICAgICAgICAgdXBk
YXRlVmFsdWVzKGV2ZW50LnRpbWVzdGFtcCgpLCBwKTsKIAotICAgICAgICBpZiAoR2VzdHVyZVRy
YW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2lnbmF0dXJlKG1fc3Rh
dGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBoYW5kbGVkKSkpCi0gICAgICAgICAgICBoYW5kbGVkID0g
KCplZikodGhpcywgcCk7CisgICAgICAgIGlmIChHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVm
ID0gbV9lZGdlRnVuY3Rpb25zLmdldChzaWduYXR1cmUobV9zdGF0ZSwgcC5pZCgpLCBwLnN0YXRl
KCksIGRlZmF1bHRQcmV2ZW50ZWQpKSkKKyAgICAgICAgICAgICgqZWYpKHRoaXMsIHAsIGdlc3R1
cmVzLmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJuIGdlc3R1
cmVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpzY3JvbGxW
aWFUb3VjaE1vdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQpCit2b2lk
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmUoY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBmbG9h
dCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi54KCkp
OwogICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBv
c2l0aW9uLnkoKSk7CiAKLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBnZXN0dXJlIGV2ZW50cyB3
aGVuIHRoZXkgaGFuZGxlIHN1YmZyYW1lcy4KLSAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhl
dGljV2hlZWxFdmVudCh0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBk
ZWx0YVgsIGRlbHRhWSwgZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIGRlbHRhWSAv
IHN0YXRpY19jYXN0PGZsb2F0PigxMjApLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNB
Y2NlcHRlZCAqLyBmYWxzZSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRh
S2V5KTsKLSAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVl
bEV2ZW50KTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3Vj
aFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVsdGFZLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBtX2ZpcnN0VG91
Y2hQb3NpdGlvbiA9IHRvdWNoUG9pbnQucG9zKCk7CiB9CiAKQEAgLTE2NiwyOSArMTU2LDI5IEBA
IHVuc2lnbmVkIGludCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpzaWduYXR1cmUoU3RhdGUgZ2Vz
dHVyZVN0YXRlLCB1bnNpZ25lZCBpZCwKICAgICByZXR1cm4gMSArICgodG91Y2hUeXBlICYgMHg3
KSA8PCAxIHwgKGhhbmRsZWQgPyAxIDw8IDQgOiAwKSB8ICgoaWQgJiAweGZmZikgPDwgNSApIHwg
KGdlc3R1cmVTdGF0ZSA8PCAxNykpOwogfQogCi1zdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYpCitzdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2Vz
dHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5z
ZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2du
aXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpCitzdGF0
aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6
ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5yZXNldCgpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2du
aXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQp
CitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2du
aXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5uZXJHZXN0dXJlUmVjb2du
aXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5p
c0luQ2xpY2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0
dGFuU3F1YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUo
SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Tm9HZXN0dXJlKTsKLSAgICAgICAgZ2VzdHVyZVJlY29n
bml6ZXItPmRpc3BhdGNoU3ludGhldGljQ2xpY2socG9pbnQpOworICAgICAgICBnZXN0dXJlUmVj
b2duaXplci0+YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVzKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBub0dlc3R1cmUoZ2VzdHVyZVJlY29n
bml6ZXIsIHBvaW50KTsKKyAgICByZXR1cm4gbm9HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLCBw
b2ludCwgZ2VzdHVyZXMpOwogfQogCi1zdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVj
b2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9p
bnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGlm
IChnZXN0dXJlUmVjb2duaXplci0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdlc3R1cmVSZWNv
Z25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKICAgICAgICAgZ2VzdHVy
ZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBlbmRpbmdTeW50
aGV0aWNDbGljayk7CkBAIC0xOTYsMTYgKzE4NiwxNiBAQCBzdGF0aWMgYm9vbCBpc0NsaWNrT3JT
Y3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBs
YQogICAgIH0KIAogICAgIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZCAmJiAhZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJl
KHBvaW50KSkgewotICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2Nyb2xsVmlhVG91Y2hNb3Rp
b24ocG9pbnQpOworICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVy
ZShwb2ludCwgZ2VzdHVyZXMpOwogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUo
SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6U2Nyb2xsKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaW5TY3JvbGwoSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZVJl
Y29nbml6ZXItPnNjcm9sbFZpYVRvdWNoTW90aW9uKHBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2du
aXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZShwb2ludCwgZ2VzdHVyZXMpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzIsNCArMjIyLDE0IEBAIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
On5HZXN0dXJlUmVjb2duaXplckNocm9taXVtKCkKIHsKIH0KIAorUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcjo6UGFzc0dlc3R1cmVzIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50
LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCit7CisgICAgcmV0dXJuIG1faW5uZXJHZXN0dXJlUmVj
b2duaXplci5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnQsIGRlZmF1bHRQ
cmV2ZW50ZWQpOworfQorCit2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnJlc2V0KCkK
K3sKKyAgICBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucmVzZXQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCmluZGV4IGExY2FjYTlkZGVmNGI5
Yjk2NmIxMTY1ZjVmOGY5NTZmNmIyN2FlNGMuLmJlYWM0NjUzZTM5NzRlNDE0N2ZhOTdlYjIwMzVk
MTI5MWZkMzdjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKKwog
Y2xhc3MgSW5uZXJHZXN0dXJlUmVjb2duaXplciB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7
CkBAIC00NywxNiArNDksMTcgQEAgcHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0g
ICAgdHlwZWRlZiBib29sICgqR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJl
UmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworICAgIHR5cGVkZWYgVmVj
dG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PiogR2VzdHVyZXM7CisgICAgdHlwZWRlZiBib29sICgq
R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKIAogICAgIH5Jbm5lckdlc3R1cmVSZWNv
Z25pemVyKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50Jik7CisgICAgdm9pZCBhcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
CiAgICAgYm9vbCBpc0luQ2xpY2tUaW1lV2luZG93KCk7CiAgICAgYm9vbCBpc0luc2lkZU1hbmhh
dHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIEV2
ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCk7Ci0gICAgdm9pZCBzY3JvbGxWaWFUb3VjaE1vdGlv
bihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpOworICAgIHZv
aWQgYXBwZW5kU2Nyb2xsR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJl
cyk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkgeyBtX3N0YXRlID0gdmFsdWU7IH0K
ICAgICBTdGF0ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIHByb3RlY3RlZDoKQEAgLTcy
LDcgKzc1LDYgQEAgcHJvdGVjdGVkOgogICAgIGRvdWJsZSBtX2ZpcnN0VG91Y2hUaW1lOwogICAg
IFN0YXRlIG1fc3RhdGU7CiAgICAgZG91YmxlIG1fbGFzdFRvdWNoVGltZTsKLSAgICBFdmVudEhh
bmRsZXIqIG1fZXZlbnRIYW5kbGVyOwogCiAgICAgYm9vbCBtX2N0cmxLZXk7CiAgICAgYm9vbCBt
X2FsdEtleTsKQEAgLTg2LDE1ICs4OCw5IEBAIHB1YmxpYzoKICAgICBHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtKCk7CiAgICAgdmlydHVhbCB+R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIG1faW5uZXJHZXN0dXJl
UmVjb2duaXplci5yZXNldCgpOwotICAgIH07CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAg
Ci0gICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIEV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyLCBi
b29sIGhhbmRsZWQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbm5lckdlc3R1cmVSZWNvZ25p
emVyLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZSh0b3VjaEV2ZW50LCBldmVudEhhbmRsZXIs
IGhhbmRsZWQpOwotICAgIH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
OlBhc3NHZXN0dXJlcyAgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpOwogcHJpdmF0ZToKICAgICBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyIG1faW5uZXJHZXN0dXJlUmVjb2duaXplcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKaW5kZXggNjI4YjkxOWFhMmFjNmRlODNjOTYxOGNjNjA0MWNmYWIyMjhhZjk0Yi4uMTk4MzI3
MzM1OWUxMzE4YjM1MGExYmU2OGE0NTMxODAxYTNjMzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtNTgs
NiArNTgsMTQgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQor
I2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisjZW5kaWYKKwog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3Bh
Y2UgVW5pY29kZTsKQEAgLTEwMyw2ICsxMTEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50Jik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVF
dmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBTY3Jv
bGxWaWV3CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Q7CkBAIC01
MDksNiArNTIzLDQwIEBAIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgY29uc3RydWN0UmVsYXRpdmVX
aGVlbEV2ZW50KGV2ZW50LCB0aGlzLCBtX2xpc3RCb3guZ2V0KCkpKTsKIH0KIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorLy8gRklYTUU6IFJlZmFjdG9yIHRo
aXMgY29kZSB0byBzaGFyZSBmdW5jdGlvbmFsaXR5IHdpdGggRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQuCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyAgICBzd2l0Y2ggKGdl
c3R1cmVFdmVudC50eXBlKCkpIHsKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBU
eXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24s
IE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRL
ZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0
dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJl
RXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRh
S2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmds
b2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtl
TW91c2VNb3ZlKTsKKyAgICAgICAgaGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7
CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVs
RXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyAxMjAuMGYs
IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJl
RXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFs
dEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICAgICAgaGFuZGxlV2hlZWxFdmVu
dChzeW50aGV0aWNXaGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgUG9wdXBDb250YWluZXI6Omhh
bmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKQEAgLTc1Miw2ICs4MDAsMjAgQEAgYm9vbCBQb3B1cExpc3RCb3g6Omlz
SW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoaW50IGtleUNvZGUpCiAgICAgfQogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorYm9vbCBQb3B1cExpc3RCb3g6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gQ2hlY2sgd2hl
dGhlciB0aGUgZXZlbnQgaXMgYSBjaGFyYWN0ZXItdHlwZWQgZXZlbnQgb3Igbm90LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgK
aW5kZXggNDZjMTIzMzkwNTJhNDNiOGMwNTczODlkMDA4NGJhN2JkNjBhZjA1ZS4uNmM4ZmI0Yjgw
NzQxZThlMjEwYmI0NWE5ZTAzNGY4OWIwMDljN2E0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIy
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXgg
ODViMGY3Y2I3YTAyY2ZlMjdkMGZiN2MwNTY5OTE3ZjgyMTE5ZWY0NS4uOGVhNjUzYjJhOGFjMTJk
ZDczMDMzODdkZDFiNDNjOWQ1YzQ5YWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2CiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0
dXJlKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1
cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzYTgzMWIzN2Q1M2YxYmVh
ZTc5NWViNTYxMGRkYTIxYTExZjhkZGY5Li5iNmNkM2Y0ZWZlYjk0NTlmNTYxYTQyMDE1NDYwZjBh
YTVhNjVlYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDExLTA3LTI2ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIExheWVyaW5nIHZpb2xhdGlvbnMgaW4gZ2VzdHVyZSByZWNvZ25pemVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIGdl
c3R1cmUgcmVjb2duaXRpb24gaGlnaGVyIHVwIHRoZSBldmVudCBkZWxpdmVyeSBjb2RlCisgICAg
ICAgIHBhdGggc28gdGhhdCByZWNvZ25pdGlvbiBvZiBnZXN0dXJlcyBpcyBjb21wbGV0ZWx5IHNl
cGFyYXRlZAorICAgICAgICBmcm9tIGdlc3R1cmUgaGFuZGxpbmcuCisKKyAgICAgICAgKiBmZWF0
dXJlcy5neXBpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldyk6CisgICAgICAgIEFkZGVkIGNvZGUg
dG8gcmVzZXQgdGhlIGdlc3R1cmUgcmVjb2duaXplciB0byBwcmVzZXJ2ZSBwYXJhbGxlbAorICAg
ICAgICBsYXlvdXQgdGVzdCBleGVjdXRpb24uCisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUlt
cGwuY3BwOgorICAgICAgICBTdXBwb3J0IGRpc3BhdGNoaW5nIHRvdWNoIGFuZCBnZXN0dXJlIGV2
ZW50cyB0byBQb3B1cHMuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OldlYlBv
cHVwTWVudUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVu
dCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwp
OgorICAgICAgICBBZGRlZCBnZXN0dXJlIHJlY29nbml0aW9uIGNyZWF0aW9uLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIEFkZGVkIHJlY29nbml0
aW9uIG9mIGdlc3R1cmVzIGFuZCBkaXNwYXRjaCBvZiBnZXN0dXJlIGV2ZW50cy4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTA3LTI1ICBBbCBQYXRyaWNrICA8YXBhdHJpY2tA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlIEdMX2xhdGNo
X0NIUk9NSVVNIGV4dGVuc2lvbiB3aGljaCBDaHJvbWl1bSBubyBsb25nZXIgc3VwcG9ydHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggNDNkYjQ4MzQyZGYzYTJjMzBiNWU0
MDRlYWU2MGVhNWE4MmIwNzkzOC4uYmQ5MTJkYmQ2NTJlZWMwODY1ZjVlMjIxNzBlN2U4NTZhMDVl
ZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDksNiArNDksNyBA
QAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0xJywKICAgICAgICdFTkFCTEVfRklMVEVSUz0x
JywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCisgICAgICAnRU5BQkxFX0dFU1RVUkVf
RVZFTlRTPTEnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVI9MScsCiAgICAgICAn
RU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0x
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDNj
NGFmYjk4YzJkYTE3OTZhZjQwOTQ4NmI4MjI5MDcxMzFiZjgzNTkuLjI2MmFiMDZjNzU3MzhkYzRi
NmI1NGM4YTA5MGM5OGEyODdmYmJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcApAQCAtMTk5NCw2ICsxOTk0LDEwIEBAIHZvaWQgV2ViRnJhbWVJbXBs
OjpjcmVhdGVGcmFtZVZpZXcoKQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICB2aWV3
LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKKyAgICB3ZWJWaWV3LT5yZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7CisjZW5kaWYKIH0KIAog
V2ViRnJhbWVJbXBsKiBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShGcmFtZSogZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDc3
ZDViODI2YjQzOWFjZWYxOGE3ODE5NjE5NzBjYmFiNzhmMGY1YzMuLjhiZmQ0NWNhMjkwYzEzNGZi
NzhiZmQ3ODFjZTM0MTkwNzUyNmUwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC01Miw2ICs1MiwxMSBAQAogCiAjaW5jbHVkZSA8
c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05J
WkVSKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplci5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY5LDYgKzc0LDkgQEAgV2ViUG9wdXBNZW51KiBX
ZWJQb3B1cE1lbnU6OmNyZWF0ZShXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKIFdlYlBvcHVwTWVu
dUltcGw6OldlYlBvcHVwTWVudUltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX3dpZGdldCgwKQorI2lmIEVOQUJMRShHRVNUVVJFX1JF
Q09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgLy8gc2V0IHRvIGltcG9z
c2libGUgcG9pbnQgc28gd2UgYWx3YXlzIGdldCB0aGUgZmlyc3QgbW91c2UgcG9zCiAgICAgbV9s
YXN0TW91c2VQb3NpdGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CkBAIC0xMjUsNiArMTMzLDIxIEBA
IHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZl
bnQmIGV2ZW50KQogICAgIG1fd2lkZ2V0LT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxF
dmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZl
bnQmIGV2ZW50KQoreworCisgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50
QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZChtX3dp
ZGdldC0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcikpOworI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXpl
KCk7IGkrKykKKyAgICAgICAgbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVF
dmVudHMpW2ldKTsKKyNlbmRpZgorICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOworfQorI2Vu
ZGlmCisKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVLZXlFdmVudChQbGF0
Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CkBAIC0yMzcsOCArMjYwLDExIEBAIGJv
b2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50
JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKICAgICAgICAgcmV0
dXJuIEtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0
RXZlbnQpKTsKIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6VG91Y2hTdGFydDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hDYW5jZWw6CisgICAgICAgIHJldHVybiBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBN
ZW51SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5o
CmluZGV4IDgwZTQ2NWU5NTk1ZmE0NTUyOTgxM2M4ZmU5NGUyMTFkMjc5OWQ3ODUuLjVkZDE4YmU4
N2U1NjQwOWI3ODgxOTRhZmI5Mzc0NTI3ZTg4NDMzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlNp
emUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsOSBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lbGVzc1Njcm9sbFZpZXc7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3Mg
UGFnZTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3MgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjsKKyNlbmRpZgogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xh
c3MgUmFuZ2U7CiBjbGFzcyBXaWRnZXQ7CkBAIC01Myw2ICs1Nyw3IEBAIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJSYW5nZTsKIHN0cnVj
dCBXZWJSZWN0OworY2xhc3MgV2ViVG91Y2hFdmVudDsKIAogY2xhc3MgV2ViUG9wdXBNZW51SW1w
bCA6IHB1YmxpYyBXZWJQb3B1cE1lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFdlYkNvcmU6OkZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQsCkBAIC05OSw2ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VX
aGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIFRvdWNoRXZlbnQoY29u
c3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpOwogCiAgICBwcm90ZWN0ZWQ6CkBAIC0xMzYsNiArMTQyLDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGlzIGEgbm9uLW93bmluZyByZWYuICBUaGUgcG9wdXAgd2lsbCBub3RpZnkgdXMg
dmlhIHBvcHVwQ2xvc2VkKCkKICAgICAvLyBiZWZvcmUgaXQgaXMgZGVzdHJveWVkLgogICAgIFdl
YkNvcmU6OkZyYW1lbGVzc1Njcm9sbFZpZXcqIG1fd2lkZ2V0OworCisjaWYgRU5BQkxFKEdFU1RV
UkVfUkVDT0dOSVpFUikKKyAgICBPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
MGVhOTgyZThmMDAzZTJjNWIxNmVhMzVjZjIyY2U1NjhiNzg5NzVlNi4uZTllZjJkYTNlNGIyZGM5
YWMwNzBiYTk3MmYwODEyYjFiMTU2NmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMTI5LDYgKzEyOSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXIuaCIKKyNlbmRpZgorCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9DR0JpdG1hcENvbnRleHQuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+
CkBAIC0zNDAsNiArMzQ4LDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICNlbmRpZgogICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KGFkb3B0UHRyKG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVu
dC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKSkKICAgICAsIG1fZ2VvbG9jYXRpb25D
bGllbnRQcm94eShhZG9wdFB0cihuZXcgR2VvbG9jYXRpb25DbGllbnRQcm94eShjbGllbnQgPyBj
bGllbnQtPmdlb2xvY2F0aW9uQ2xpZW50KCkgOiAwKSkpCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVD
T0dOSVpFUikKKyAgICAsIG1fZ2VzdHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjo6Y3JlYXRlKCkpCisjZW5kaWYKIHsKICAgICAvLyBXZWJLaXQvd2luL1dl
YlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAg
Ly8gS0pTIHNwZWNpZmljIHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhh
dmUgdGhyZWFkaW5nCkBAIC03NTcsNyArNzY4LDE1IEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNo
RXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIFBsYXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVudEJ1aWxkZXIobWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOwotICAgIHJldHVybiBtYWluRnJhbWVJbXBs
KCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRC
dWlsZGVyKTsKKyAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtYWluRnJhbWVJbXBsKCktPmZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVy
KTsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFZlY3RvcjxX
ZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJl
Y29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIs
IGRlZmF1bHRQcmV2ZW50ZWQpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9IDA7IGkgPCBn
ZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2ZW50KGdlc3R1cmVFdmVudHMtPmF0
KGkpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAjZW5kaWYK
IApAQCAtMjY1OCw0ICsyNjc3LDEyIEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFZpc2liaWxpdHlT
dGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSwKICNlbmRpZgogfQog
CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK3ZvaWQgV2ViVmlld0ltcGw6OnJlc2V0
R2VzdHVyZVJlY29nbml6ZXIoKQoreworICAgIG1fZ2VzdHVyZVJlY29nbml6ZXItPnJlc2V0KCk7
Cit9CisjZW5kaWYKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGQ2ZTU3YzcyNzI0MTZhYjZhZGM4OWNjNWQwM2M3
NWU4YzdiMWFjZjMuLjQ0OGFlYzdhMDg2MjgzNGUxZDUyNGViMjEyZGI0MGI1MWIzZTA0ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNjcsNiArNjcsOSBA
QCBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRoZW1l
OwogY2xhc3MgV2lkZ2V0OworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitjbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMzg1LDYgKzM4OCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gYSBwbHVnaW4gY2FuIHVwZGF0
ZSBpdHMgb3duIHpvb20sIHNheSBiZWNhdXNlIG9mIGl0cyBvd24gVUkuCiAgICAgdm9pZCBmdWxs
RnJhbWVQbHVnaW5ab29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpOwogCisjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIo
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJWaWV3OyAgLy8gU28g
V2ViVmlldzo6Q3JlYXRlIGNhbiBjYWxsIG91ciBjb25zdHJ1Y3RvcgogICAgIGZyaWVuZCBjbGFz
cyBXVEY6OlJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+OwpAQCAtNTY1LDYgKzU3MiwxMCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gbV90ZW1wb3JhcnlP
bnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEOwogICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiAgICAgT3duUHRyPEdl
b2xvY2F0aW9uQ2xpZW50UHJveHk+IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eTsKKworI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102064</attachid>
            <date>2011-07-26 15:39:02 -0700</date>
            <delta_ts>2011-07-29 12:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110726183916.patch</filename>
            <type>text/plain</type>
            <size>42675</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTJhZmJlZmZlMDU5NjFl
NjBhMzE2NDkzZmJkN2Q2YjMwNjg2ZTBiLi4zN2JjMTNkOWU0NTM2MzAzNmE2ODMyODFjZGU1YTVj
YTYzNWNhNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDctMjYgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGl2aWRlZCB0aGUgZ2VzdHVyZSByZWNv
Z25pemVyIHVwIHRvIGNvcnJlY3QgYSBsYXllcmluZworICAgICAgICB2aW9sYXRpb24gYnkgbW92
aW5nIGdlc3R1cmUgaW1wbGVtZW50YXRpb24gZnJvbSBpdCB0bworICAgICAgICBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAg
ICAgICAgY291bGQgc2ltcGx5IGJlIGFuIGVuZ2luZSBmb3IgZ2VuZXJhdGluZyBnZXN0dXJlIGV2
ZW50cyBmcm9tCisgICAgICAgIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlZCBjb25zdHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAg
ICAgICBFeHRlbmRlZCBmb3IgbmV3IGdlc3R1cmUgZXZlbnRzIGFkZGVkIGluIHRoaXMgcGF0Y2gu
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAg
ICAgICBSZW1vdmVkIGNhbGwgaW50byBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIHRvIHJl
c2V0IGdlc3R1cmUgcmVjb2duaXplci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1
cmVFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlBsYXRm
b3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50
OjpkZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmRlbHRh
WSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6c2hpZnRLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmFsdEtleSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6bWV0YUtleSk6CisgICAgICAgIEFkZGVkIGFkZGl0
aW9uYWwgZ2VzdHVyZSB0eXBlcyBhbmQgcGFyYW1ldGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9Q
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
RnJhbWVsZXNzU2Nyb2xsVmlldy5oOgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF0
Y2hpbmcgZ2VzdHVyZSBhbmQgdG91Y2ggZXZlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6SW5uZXJHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVu
dEZvckdlc3R1cmVzKToKKyAgICAgICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMgb24gRXZlbnRI
YW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUgZ2VzdHVyZQorICAgICAgICBldmVudHMgZnJvbSB0b3Vj
aCBldmVudCBzdHJlYW0uCisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
Ojpjb25zdHJ1Y3RTY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6
CisgICAgICAgIChXZWJDb3JlOjpub0dlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2sp
OgorICAgICAgICAoV2ViQ29yZTo6aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6
OmluU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bTo6cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgdG8gaGFuZGxl
IHRvdWNoIGV2ZW50cyBhbmQgZ2VzdHVyZSBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpQb3B1
cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENv
bnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlz
dEJveDo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6
OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgSWdub3JlcyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBl
cy4KKwogMjAxMS0wNy0yNiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNzc4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5jcHAKaW5kZXggMGE1ZGE0YzJiODA1ZDhmZWZlYmRiZDA2YTFkNDQ3NGZm
ZTljM2IwOS4uNTczZWE2M2RmMzg2Y2ViYmEzNjc3NmNhOTY5OTgxNGFiNDQzMDUwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XaGVlbEV2ZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXaGVlbEV2ZW50OjpXaGVl
bEV2ZW50KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJh
d0RlbHRhLAogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnROYW1lcygpLm1vdXNld2hlZWxF
dmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVl
bkxvY2F0aW9uLCBwYWdlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5
LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQotICAgICwgbV93aGVlbERlbHRhKEludFBvaW50
KHN0YXRpY19jYXN0PGludD4od2hlZWxUaWNrcy54KCkgKiAxMjApLCBzdGF0aWNfY2FzdDxpbnQ+
KHdoZWVsVGlja3MueSgpICogMTIwKSkpCisgICAgLCBtX3doZWVsRGVsdGEoSW50UG9pbnQoc3Rh
dGljX2Nhc3Q8aW50Pih3aGVlbFRpY2tzLngoKSAqIHRpY2tNdWx0aXBsaWVyKSwgc3RhdGljX2Nh
c3Q8aW50Pih3aGVlbFRpY2tzLnkoKSAqIHRpY2tNdWx0aXBsaWVyKSkpCiAgICAgLCBtX3Jhd0Rl
bHRhKHJvdW5kZWRJbnRQb2ludChyYXdEZWx0YSkpCiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51
bGFyaXR5KQogewpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2
ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhYwogICAg
IG1fbWV0YUtleSA9IG1ldGFLZXk7CiAgICAgCiAgICAgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5k
b3dzIDEyMCBtdWx0aXBsZQotICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCAq
IDEyMCwgcmF3RGVsdGFZICogMTIwKTsKKyAgICBtX3doZWVsRGVsdGEgPSBJbnRQb2ludChyYXdE
ZWx0YVggKiB0aWNrTXVsdGlwbGllciwgcmF3RGVsdGFZICogdGlja011bHRpcGxpZXIpOwogICAg
IAogICAgIG1fcmF3RGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVgsIHJhd0RlbHRhWSk7CiAgICAg
bV9ncmFudWxhcml0eSA9IFBpeGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggOTE5ZDA2
OWY1NGY4ZjIzNzYyZmM0ZDBjYzA1ZjJmY2FiYmZiODdhMS4uMGY4NTkxMmNlMWE3NzcwMmNjYjc4
N2QwZWNkMTcwMjc3ZDcxMzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVs
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zMiw2ICsz
Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBleHRlbnNpb246IG1vdXNlIHdoZWVs
IGV2ZW50CiAgICAgY2xhc3MgV2hlZWxFdmVudCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVudCB7
CiAgICAgcHVibGljOgorICAgICAgICBlbnVtIHsgdGlja011bHRpcGxpZXIgPSAxMjAgfTsKKwog
ICAgICAgICBlbnVtIEdyYW51bGFyaXR5IHsgUGl4ZWwsIExpbmUsIFBhZ2UgfTsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDkyOTVjODY2MjJlYzFhZTJhMDA4ZGYwMzRhN2E5YTM0MzIy
MWU1ODUuLjg0NmFmYmI3OWUxN2QxNTIxZTU5ODRjNGQ5Yzg3YzBmMmRlMGQ1OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMCwxMCArMTAwLDYgQEAKICNpbmNsdWRl
ICJUb3VjaExpc3QuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikK
LSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjEwLDkgKzIw
Niw2IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKLSNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKLSNlbmRpZgogewogfQogCkBAIC0y
MjI3LDExICsyMjIwLDMzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAvLyB0aGF0IGlm
IGEgZnJhbWUgZ2V0cyBhIGdlc3R1cmUgYmVnaW4gZ2VzdHVyZSwgaXQgZ2V0cyB0aGUgY29ycmVz
cG9uZGluZwogICAgIC8vIGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKLSAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgc3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6VGFwVHlwZTogeworICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhp
cyBjb2RlIHRvIG5vdCBoaXQgdGVzdCBtdWx0aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhh
cyBiZWVuIGNvcnJlY3RlZCBhcyBzdWdnZXN0ZWQgYWJvdmUuCisgICAgICAgIFBsYXRmb3JtTW91
c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZl
bnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
RG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdl
c3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZl
bnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3Rh
bXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZl
bnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hp
ZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBn
ZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAg
ICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZl
bnQoZmFrZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VN
b3VzZVVwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgY29uc3QgZmxvYXQgdGlj
a0Rpdmlzb3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7CisgICAgICAgIC8v
IEZJWE1FOiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92
ZSBmaXhtZSBoYXMgYmVlbiBhZGRyZXNzZWQuCisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBz
eW50aGV0aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQu
Z2xvYmFsUG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVs
dGFZKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQu
ZGVsdGFZKCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNj
ZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3Ry
bEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwor
ICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
QmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6
CisgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYg
KCF2aWV3KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmlldy0+aGFuZGxlR2Vz
dHVyZUV2ZW50KGdlc3R1cmVFdmVudCk7CisgICAgICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVu
dChnZXN0dXJlRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAjZW5kaWYKQEAgLTMyODYsMjEgKzMzMDEsOSBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAg
ICAgICB9CiAgICAgfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBpZiAo
bV9nZXN0dXJlUmVjb2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKLSNl
bmRpZgotCiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAKLSNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQotdm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0R2VzdHVyZVJlY29nbml6
ZXIoKQotewotICAgIGlmIChtX2dlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICBtX2dlc3R1cmVS
ZWNvZ25pemVyLT5yZXNldCgpOwotfQotI2VuZGlmCiAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAppbmRleCA4YWI3NDM3ZTZhMjExNjU4MTYyYjA0OWFjODkxNzZmODA2MmE5
ODE0Li5kMTc4YjZjMWU2NmEzMTlkYzU4NDQ0NjdjYWIyZDY3YWY4NDNmNGE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTgwLDEwICs4MCw2IEBAIGNsYXNzIFdpZGdldDsKIGNs
YXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQotY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgotCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIGV4dGVybiBjb25zdCBpbnQgTGlua0RyYWdIeXN0ZXJl
c2lzOwogZXh0ZXJuIGNvbnN0IGludCBJbWFnZURyYWdIeXN0ZXJlc2lzOwpAQCAtMTY2LDEwICsx
NjIsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZv
cm1HZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKLSAgICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5
KCk7CkBAIC00MjksOSArNDIxLDYgQEAgcHJpdmF0ZToKICAgICBUb3VjaFRhcmdldE1hcCBtX29y
aWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKICNl
bmRpZgotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBmNTQ2
YzEzMDhmM2MzNzg1YWZmYmQyYjE1ZmExZDliM2MxODMzOTc1Li4xM2QzNjU0N2QwMTM3YzE0ZWRh
YTMwNjAwZGMxNTBjOGQ3MWU4MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0y
MzIsMTAgKzIzMiw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9pc1Zpc3VhbGx5
Tm9uRW1wdHkgPSBmYWxzZTsKICAgICBtX2ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxi
YWNrUGVuZGluZyA9IHRydWU7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0g
MDsKLQotI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgogfQogCiBib29sIEZy
YW1lVmlldzo6aXNGcmFtZVZpZXcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IDk5MTU3ZTEwOGVhZWIwODBlYzNiZTUzMjY1
MDgxOWM1YWEzYTMyOWEuLjE4YjdkMWFhMmQxZWRmOWE4M2RlZjJmMjY2ZjI1MDkwMzc5Njg0N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApA
QCAtMzcsNiArMzcsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2Nyb2xs
QmVnaW5UeXBlLAogICAgICAgICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVU
eXBlLAorICAgICAgICBUYXBUeXBlCiAgICAgfTsKIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50
KCkKQEAgLTQ1LDYgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3Qg
ZmxvYXQgZGVsdGFYLCBjb25zdCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkK
KyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fZ2xvYmFsUG9zaXRp
b24oZ2xvYmFsUG9zaXRpb24pCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAg
ICAgICAsIG1fZGVsdGFYKGRlbHRhWCkKKyAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCisgICAg
ICAgICwgbV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkK
KyAgICAgICAgLCBtX2FsdEtleShhbHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkp
CisgICAgeworICAgIH0KKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogCiAgICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KQEAgLTUyLDExICs2OCwyNCBA
QCBwdWJsaWM6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
c3RhbXA7IH0KIAorICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9
CisgICAgZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KKyAgICBib29s
IHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3Qg
eyByZXR1cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBt
X21ldGFLZXk7IH0KKwogcHJvdGVjdGVkOgogICAgIFR5cGUgbV90eXBlOwogICAgIEludFBvaW50
IG1fcG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBkb3VibGUg
bV90aW1lc3RhbXA7CisgICAgZmxvYXQgbV9kZWx0YVg7CisgICAgZmxvYXQgbV9kZWx0YVk7Cisg
ICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRL
ZXk7CisgICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
LmgKaW5kZXggMmY4MDViZDI2MjcxZGMxNGQzOTA0NTNlM2M5MDZjZTBhMTQzYjVjOC4uMGI4NmE5
Mjc2ZmI2YmRlZjliN2MzNzg4M2M1MDkzZjc3ZTA0Y2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMzEsMTggKzMx
LDE1IEBACiAjaWZuZGVmIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogI2RlZmluZSBQbGF0
Zm9ybUdlc3R1cmVSZWNvZ25pemVyX2gKIAorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnRIYW5kbGVyOwotY2xhc3MgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIAotLy8g
QSBHZXN0dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91
Y2ggZXZlbnQuCi0vLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2Vz
dHVyZVJlY29nbml6ZXIsIHVwZGF0ZXMKLS8vIGl0cyBpbnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9u
YWxseSBkaXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhlCi0vLyBpbnZva2luZyBFdmVu
dEhhbmRsZXIgaW5zdGFuY2UuCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyIHsKIHBy
b3RlY3RlZDoKICAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CkBAIC01MSwxMiArNDgs
MTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIo
KTsKIAotICAgIC8vIEludm9rZWQgZm9yIGVhY2ggdG91Y2ggZXZlbnQgdGhhdCBjb3VsZCBjb250
cmlidXRlIHRvIHRoZSBjdXJyZW50IGdlc3R1cmUuCi0gICAgLy8gVGFrZXMgYSBQbGF0Zm9ybVRv
dWNoRXZlbnQgYW5kIHRoZSBFdmVudEhhbmRsZXIgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGlj
aCB3aWxsIGFsc28KLSAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhl
dGljIGV2ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKLSAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxl
dmVudHwgd2FzIGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0
KQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEg
c3ludGhldGljIGV2ZW50LgotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdl
c3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgRXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5k
bGVkKSA9IDA7CisgICAgdHlwZWRlZiBQYXNzT3duUHRyPFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVF
dmVudD4gPiBQYXNzR2VzdHVyZXM7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2
ZW50IGFuZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2VzdHVyZXMuCisgICAgdmlydHVh
bCBQYXNzR2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0gMDsKIAogICAgIC8vIENsZWFy
cyB0aGUgR2VzdHVyZVJlY29nbml6ZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuCiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCmluZGV4IGQ1NGY1NDMyY2M3NDE4MDIxMDVi
ODY3ZGIyMzUwMGI3ZDA4NGU4ZTEuLmM2Y2MyYjVmMzRiNDJlNjRjMjU1ODVkOWY3OGM5NWNiOWE2
MWU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1l
bGVzc1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9G
cmFtZWxlc3NTY3JvbGxWaWV3LmgKQEAgLTM2LDggKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50OworI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCisgICAgY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2xhc3MgUGxhdGZvcm1U
b3VjaEV2ZW50OworI2VuZGlmCiAgICAgY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogCiAgICAg
Ly8gQSBGcmFtZWxlc3NTY3JvbGxWaWV3IGlzIGEgU2Nyb2xsVmlldyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIHJlbmRlciBjdXN0b20KQEAgLTYwLDYgKzY2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikgPSAwOworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpID0gMDsKKyNlbmRpZgorI2lmIEVOQUJMRShHRVNU
VVJFX1JFQ09HTklaRVIpCisgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQo
Y29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmKSA9IDA7CisjZW5kaWYKIAogICAgICAgICAvLyBT
Y3JvbGxhYmxlQXJlYSBwdWJsaWMgbWV0aG9kczoKICAgICAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDBmZTg5ZjRhYWY0YzI5ZDZhMTQyZDRlZWM5MDEzMGNi
MWQzMmNjZS4uOTA1ODIwMWQ5YWE3YTg5ZTNkMGUwOWJmYWE0ZjM0NWE3ZDEyNzQ0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVy
ZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaCIKIAotI2luY2x1
ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRv
dWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCBpblNjcm9s
bChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1z
dGF0aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wgdG91Y2hEb3duKElubmVyR2VzdHVyZVJlY29n
bml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKy8vIEZJWE1FOiBDb252ZXJ0IHRv
IG1ldGhvZHMuCitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMp
Oworc3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyk7CitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMpOwor
c3RhdGljIGJvb2wgbm9HZXN0dXJlKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyk7CitzdGF0
aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKIAogLy8gRklY
TUU6IE1ha2UgdGhlc2UgY29uZmlndXJhYmxlIHByb2dyYW1tYXRpY2FsbHkuCiBzdGF0aWMgY29u
c3QgZG91YmxlIG1heGltdW1Ub3VjaERvd25EdXJhdGlvbkluU2Vjb25kc0ZvckNsaWNrID0gMC44
OwpAQCAtNTIsNyArNTIsNiBAQCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKCkKICAgICA6IG1fZmlyc3RUb3VjaFRpbWUoMC4wKQogICAgICwgbV9zdGF0ZShJ
bm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpCiAgICAgLCBtX2xhc3RUb3VjaFRpbWUo
MC4wKQotICAgICwgbV9ldmVudEhhbmRsZXIoMCkKICAgICAsIG1fY3RybEtleShmYWxzZSkKICAg
ICAsIG1fYWx0S2V5KGZhbHNlKQogICAgICwgbV9zaGlmdEtleShmYWxzZSkKQEAgLTgwLDcgKzc5
LDYgQEAgdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpyZXNldCgpCiAgICAgbV9maXJzdFRv
dWNoVGltZSA9IDAuMDsKICAgICBtX3N0YXRlID0gSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Tm9H
ZXN0dXJlOwogICAgIG1fbGFzdFRvdWNoVGltZSA9IDAuMDsKLSAgICBtX2V2ZW50SGFuZGxlciA9
IDA7CiB9CiAKIElubmVyR2VzdHVyZVJlY29nbml6ZXI6On5Jbm5lckdlc3R1cmVSZWNvZ25pemVy
KCkKQEAgLTEwNCw0NCArMTAyLDM2IEBAIGJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6aXNJ
bnNpZGVNYW5oYXR0YW5TcXVhcmUoY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwCiAgICAgcmV0
dXJuIG1hbmhhdHRhbkRpc3RhbmNlIDwgbWF4aW11bVRvdWNoTW92ZUluUGl4ZWxzRm9yQ2xpY2s7
CiB9CiAKLXZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6ZGlzcGF0Y2hTeW50aGV0aWNDbGlj
ayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50KQordm9pZCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjphcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
IHRvdWNoUG9pbnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQog
ewotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKHBvaW50LnBvcygpLCBwb2lu
dC5zY3JlZW5Qb3MoKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAq
LyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXksIG1fbGFzdFRv
dWNoVGltZSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZURvd24ocG9pbnQucG9z
KCksIHBvaW50LnNjcmVlblBvcygpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UHJlc3NlZCwgLyog
Y2xpY2tDb3VudCAqLyAxLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFL
ZXksIG1fbGFzdFRvdWNoVGltZSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVw
KHBvaW50LnBvcygpLCBwb2ludC5zY3JlZW5Qb3MoKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJl
bGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRL
ZXksIG1fbWV0YUtleSwgbV9sYXN0VG91Y2hUaW1lKTsKLQotICAgIG1fZXZlbnRIYW5kbGVyLT5t
b3VzZU1vdmVkKGZha2VNb3VzZU1vdmUpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoZmFrZU1vdXNlRG93bik7Ci0gICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRm
b3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlLCB0b3VjaFBvaW50
LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIDAuMGYsIDAu
MGYsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogfQogCi1i
b29sIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxl
ciwgYm9vbCBoYW5kbGVkKQorUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVz
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQogewot
ICAgIG1fZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyOwogICAgIG1fY3RybEtleSA9IGV2ZW50
LmN0cmxLZXkoKTsKICAgICBtX2FsdEtleSA9IGV2ZW50LmFsdEtleSgpOwogICAgIG1fc2hpZnRL
ZXkgPSBldmVudC5zaGlmdEtleSgpOwogICAgIG1fbWV0YUtleSA9IGV2ZW50Lm1ldGFLZXkoKTsK
IAorICAgIE93blB0cjxWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZXMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PigpKTsKICAgICBjb25zdCBW
ZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgcG9pbnRzID0gZXZlbnQudG91Y2hQb2ludHMoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcCA9IHBvaW50c1tpXTsKICAgICAgICAgdXBk
YXRlVmFsdWVzKGV2ZW50LnRpbWVzdGFtcCgpLCBwKTsKIAotICAgICAgICBpZiAoR2VzdHVyZVRy
YW5zaXRpb25GdW5jdGlvbiBlZiA9IG1fZWRnZUZ1bmN0aW9ucy5nZXQoc2lnbmF0dXJlKG1fc3Rh
dGUsIHAuaWQoKSwgcC5zdGF0ZSgpLCBoYW5kbGVkKSkpCi0gICAgICAgICAgICBoYW5kbGVkID0g
KCplZikodGhpcywgcCk7CisgICAgICAgIGlmIChHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVm
ID0gbV9lZGdlRnVuY3Rpb25zLmdldChzaWduYXR1cmUobV9zdGF0ZSwgcC5pZCgpLCBwLnN0YXRl
KCksIGRlZmF1bHRQcmV2ZW50ZWQpKSkKKyAgICAgICAgICAgICgqZWYpKHRoaXMsIHAsIGdlc3R1
cmVzLmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgcmV0dXJuIGdlc3R1
cmVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpzY3JvbGxW
aWFUb3VjaE1vdGlvbihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQpCit2b2lk
IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZFNjcm9sbEdlc3R1cmUoY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiB0b3VjaFBvaW50LCBHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBmbG9h
dCBkZWx0YVgodG91Y2hQb2ludC5wb3MoKS54KCkgLSBtX2ZpcnN0VG91Y2hQb3NpdGlvbi54KCkp
OwogICAgIGZsb2F0IGRlbHRhWSh0b3VjaFBvaW50LnBvcygpLnkoKSAtIG1fZmlyc3RUb3VjaFBv
c2l0aW9uLnkoKSk7CiAKLSAgICAvLyBGSVhNRTogQ29udmVydCB0byBnZXN0dXJlIGV2ZW50cyB3
aGVuIHRoZXkgaGFuZGxlIHN1YmZyYW1lcy4KLSAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhl
dGljV2hlZWxFdmVudCh0b3VjaFBvaW50LnBvcygpLCB0b3VjaFBvaW50LnNjcmVlblBvcygpLCBk
ZWx0YVgsIGRlbHRhWSwgZGVsdGFYIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIGRlbHRhWSAv
IHN0YXRpY19jYXN0PGZsb2F0PigxMjApLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNB
Y2NlcHRlZCAqLyBmYWxzZSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRh
S2V5KTsKLSAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxlV2hlZWxFdmVudChzeW50aGV0aWNXaGVl
bEV2ZW50KTsKKyAgICBnZXN0dXJlcy0+YXBwZW5kKFBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxVcGRhdGVUeXBlLCB0b3VjaFBvaW50LnBvcygpLCB0b3Vj
aFBvaW50LnNjcmVlblBvcygpLCBtX2xhc3RUb3VjaFRpbWUsIGRlbHRhWCwgZGVsdGFZLCBtX3No
aWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpKTsKICAgICBtX2ZpcnN0VG91
Y2hQb3NpdGlvbiA9IHRvdWNoUG9pbnQucG9zKCk7CiB9CiAKQEAgLTE2NiwyOSArMTU2LDI5IEBA
IHVuc2lnbmVkIGludCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpzaWduYXR1cmUoU3RhdGUgZ2Vz
dHVyZVN0YXRlLCB1bnNpZ25lZCBpZCwKICAgICByZXR1cm4gMSArICgodG91Y2hUeXBlICYgMHg3
KSA8PCAxIHwgKGhhbmRsZWQgPyAxIDw8IDQgOiAwKSB8ICgoaWQgJiAweGZmZikgPDwgNSApIHwg
KGdlc3R1cmVTdGF0ZSA8PCAxNykpOwogfQogCi1zdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYpCitzdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2Vz
dHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5z
ZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpQZW5kaW5nU3ludGhldGljQ2xpY2spOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2du
aXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpCitzdGF0
aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6
ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdl
c3R1cmVzIGdlc3R1cmVzKQogewogICAgIGdlc3R1cmVSZWNvZ25pemVyLT5yZXNldCgpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2du
aXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQp
CitzdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2du
aXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5uZXJHZXN0dXJlUmVjb2du
aXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5p
c0luQ2xpY2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0
dGFuU3F1YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUo
SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6Tm9HZXN0dXJlKTsKLSAgICAgICAgZ2VzdHVyZVJlY29n
bml6ZXItPmRpc3BhdGNoU3ludGhldGljQ2xpY2socG9pbnQpOworICAgICAgICBnZXN0dXJlUmVj
b2duaXplci0+YXBwZW5kQ2xpY2tHZXN0dXJlRXZlbnQocG9pbnQsIGdlc3R1cmVzKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBub0dlc3R1cmUoZ2VzdHVyZVJlY29n
bml6ZXIsIHBvaW50KTsKKyAgICByZXR1cm4gbm9HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLCBw
b2ludCwgZ2VzdHVyZXMpOwogfQogCi1zdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVj
b2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9p
bnQsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGlm
IChnZXN0dXJlUmVjb2duaXplci0+aXNJbkNsaWNrVGltZVdpbmRvdygpICYmIGdlc3R1cmVSZWNv
Z25pemVyLT5pc0luc2lkZU1hbmhhdHRhblNxdWFyZShwb2ludCkpIHsKICAgICAgICAgZ2VzdHVy
ZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBlbmRpbmdTeW50
aGV0aWNDbGljayk7CkBAIC0xOTYsMTYgKzE4NiwxNiBAQCBzdGF0aWMgYm9vbCBpc0NsaWNrT3JT
Y3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBs
YQogICAgIH0KIAogICAgIGlmIChwb2ludC5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZCAmJiAhZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJl
KHBvaW50KSkgewotICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2Nyb2xsVmlhVG91Y2hNb3Rp
b24ocG9pbnQpOworICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+YXBwZW5kU2Nyb2xsR2VzdHVy
ZShwb2ludCwgZ2VzdHVyZXMpOwogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUo
SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6U2Nyb2xsKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgaW5TY3JvbGwoSW5uZXJH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIsIGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgcG9pbnQpCitzdGF0aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVy
KiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgZ2VzdHVyZVJl
Y29nbml6ZXItPnNjcm9sbFZpYVRvdWNoTW90aW9uKHBvaW50KTsKKyAgICBnZXN0dXJlUmVjb2du
aXplci0+YXBwZW5kU2Nyb2xsR2VzdHVyZShwb2ludCwgZ2VzdHVyZXMpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMzIsNCArMjIyLDE0IEBAIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06
On5HZXN0dXJlUmVjb2duaXplckNocm9taXVtKCkKIHsKIH0KIAorUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcjo6UGFzc0dlc3R1cmVzIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXMoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiB0b3VjaEV2ZW50
LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCit7CisgICAgcmV0dXJuIG1faW5uZXJHZXN0dXJlUmVj
b2duaXplci5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnQsIGRlZmF1bHRQ
cmV2ZW50ZWQpOworfQorCit2b2lkIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnJlc2V0KCkK
K3sKKyAgICBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucmVzZXQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCmluZGV4IGExY2FjYTlkZGVmNGI5
Yjk2NmIxMTY1ZjVmOGY5NTZmNmIyN2FlNGMuLmJlYWM0NjUzZTM5NzRlNDE0N2ZhOTdlYjIwMzVk
MTI5MWZkMzdjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKKwog
Y2xhc3MgSW5uZXJHZXN0dXJlUmVjb2duaXplciB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7
CkBAIC00NywxNiArNDksMTcgQEAgcHVibGljOgogICAgICAgICBTY3JvbGwKICAgICB9OwogCi0g
ICAgdHlwZWRlZiBib29sICgqR2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJl
UmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworICAgIHR5cGVkZWYgVmVj
dG9yPFBsYXRmb3JtR2VzdHVyZUV2ZW50PiogR2VzdHVyZXM7CisgICAgdHlwZWRlZiBib29sICgq
R2VzdHVyZVRyYW5zaXRpb25GdW5jdGlvbikoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKIAogICAgIH5Jbm5lckdlc3R1cmVSZWNv
Z25pemVyKCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoU3ludGhldGljQ2xpY2soY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50Jik7CisgICAgdm9pZCBhcHBlbmRDbGlja0dlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJlcyk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
CiAgICAgYm9vbCBpc0luQ2xpY2tUaW1lV2luZG93KCk7CiAgICAgYm9vbCBpc0luc2lkZU1hbmhh
dHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIEV2
ZW50SGFuZGxlciosIGJvb2wgaGFuZGxlZCk7Ci0gICAgdm9pZCBzY3JvbGxWaWFUb3VjaE1vdGlv
bihjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI6OlBhc3NHZXN0dXJlcyAgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpOworICAgIHZv
aWQgYXBwZW5kU2Nyb2xsR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBHZXN0dXJl
cyk7CiAgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSB2YWx1ZSkgeyBtX3N0YXRlID0gdmFsdWU7IH0K
ICAgICBTdGF0ZSBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KIHByb3RlY3RlZDoKQEAgLTcy
LDcgKzc1LDYgQEAgcHJvdGVjdGVkOgogICAgIGRvdWJsZSBtX2ZpcnN0VG91Y2hUaW1lOwogICAg
IFN0YXRlIG1fc3RhdGU7CiAgICAgZG91YmxlIG1fbGFzdFRvdWNoVGltZTsKLSAgICBFdmVudEhh
bmRsZXIqIG1fZXZlbnRIYW5kbGVyOwogCiAgICAgYm9vbCBtX2N0cmxLZXk7CiAgICAgYm9vbCBt
X2FsdEtleTsKQEAgLTg2LDE1ICs4OCw5IEBAIHB1YmxpYzoKICAgICBHZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtKCk7CiAgICAgdmlydHVhbCB+R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bSgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkKLSAgICB7Ci0gICAgICAgIG1faW5uZXJHZXN0dXJl
UmVjb2duaXplci5yZXNldCgpOwotICAgIH07CisgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CiAg
Ci0gICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZShjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIEV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyLCBi
b29sIGhhbmRsZWQpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbm5lckdlc3R1cmVSZWNvZ25p
emVyLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZSh0b3VjaEV2ZW50LCBldmVudEhhbmRsZXIs
IGhhbmRsZWQpOwotICAgIH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6
OlBhc3NHZXN0dXJlcyAgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpOwogcHJpdmF0ZToKICAgICBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyIG1faW5uZXJHZXN0dXJlUmVjb2duaXplcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKaW5kZXggNjI4YjkxOWFhMmFjNmRlODNjOTYxOGNjNjA0MWNmYWIyMjhhZjk0Yi4uMTk4MzI3
MzM1OWUxMzE4YjM1MGExYmU2OGE0NTMxODAxYTNjMzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtNTgs
NiArNTgsMTQgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
dW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQor
I2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisjZW5kaWYKKwog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3Bh
Y2UgVW5pY29kZTsKQEAgLTEwMyw2ICsxMTEsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50Jik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKKyNlbmRpZgorI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVF
dmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBTY3Jv
bGxWaWV3CiAgICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Q7CkBAIC01
MDksNiArNTIzLDQwIEBAIGJvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKICAgICAgICAgY29uc3RydWN0UmVsYXRpdmVX
aGVlbEV2ZW50KGV2ZW50LCB0aGlzLCBtX2xpc3RCb3guZ2V0KCkpKTsKIH0KIAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorLy8gRklYTUU6IFJlZmFjdG9yIHRo
aXMgY29kZSB0byBzaGFyZSBmdW5jdGlvbmFsaXR5IHdpdGggRXZlbnRIYW5kbGVyOjpoYW5kbGVH
ZXN0dXJlRXZlbnQuCitib29sIFBvcHVwQ29udGFpbmVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29u
c3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3sKKyAgICBzd2l0Y2ggKGdl
c3R1cmVFdmVudC50eXBlKCkpIHsKKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpUYXBU
eXBlOiB7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTm9CdXR0b24s
IE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRL
ZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0
dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwg
Z2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVz
c2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJl
RXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRh
S2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VF
dmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmds
b2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRSZWxlYXNlZCwgLyogY2xpY2tD
b3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXko
KSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJl
RXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICAvLyBoYW5kbGVNb3VzZU1vdmVFdmVudChmYWtl
TW91c2VNb3ZlKTsKKyAgICAgICAgaGFuZGxlTW91c2VEb3duRXZlbnQoZmFrZU1vdXNlRG93bik7
CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVwKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHN5bnRoZXRpY1doZWVs
RXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlv
bigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5kZWx0YVkoKSwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWCgpIC8gMTIwLjBmLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCkgLyAxMjAuMGYs
IFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBnZXN0dXJl
RXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFs
dEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpKTsKKyAgICAgICAgaGFuZGxlV2hlZWxFdmVu
dChzeW50aGV0aWNXaGVlbEV2ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZToKKyAgICBjYXNlIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxFbmRUeXBlOgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgUG9wdXBDb250YWluZXI6Omhh
bmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKQEAgLTc1Miw2ICs4MDAsMjAgQEAgYm9vbCBQb3B1cExpc3RCb3g6Omlz
SW50ZXJlc3RlZEluRXZlbnRGb3JLZXkoaW50IGtleUNvZGUpCiAgICAgfQogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUG9wdXBMaXN0Qm94OjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorYm9vbCBQb3B1cExpc3RCb3g6Omhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpCit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGlzQ2hhcmFjdGVyVHlwZUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgLy8gQ2hlY2sgd2hl
dGhlciB0aGUgZXZlbnQgaXMgYSBjaGFyYWN0ZXItdHlwZWQgZXZlbnQgb3Igbm90LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgK
aW5kZXggNDZjMTIzMzkwNTJhNDNiOGMwNTczODlkMDA4NGJhN2JkNjBhZjA1ZS4uNmM4ZmI0Yjgw
NzQxZThlMjEwYmI0NWE5ZTAzNGY4OWIwMDljN2E0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCkBAIC0xMjIsNiArMTIy
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZv
cm1Ub3VjaEV2ZW50Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQor
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJl
RXZlbnQmKTsKKyNlbmRpZgogCiAgICAgLy8gUG9wdXBDb250YWluZXIgbWV0aG9kcwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXgg
ODViMGY3Y2I3YTAyY2ZlMjdkMGZiN2MwNTY5OTE3ZjgyMTE5ZWY0NS4uOGVhNjUzYjJhOGFjMTJk
ZDczMDMzODdkZDFiNDNjOWQ1YzQ5YWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0b3JNYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2CiB7CiAgICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZv
cm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEJlZ2luVHlwZSkKICAgICAgICAgYmVnaW5TY3JvbGxHZXN0
dXJlKCk7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGUpCiAgICAgICAgIGVuZFNjcm9sbEdlc3R1
cmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzYTgzMWIzN2Q1M2YxYmVh
ZTc5NWViNTYxMGRkYTIxYTExZjhkZGY5Li5iNmNkM2Y0ZWZlYjk0NTlmNTYxYTQyMDE1NDYwZjBh
YTVhNjVlYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisy
MDExLTA3LTI2ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbY2hyb21pdW1dIExheWVyaW5nIHZpb2xhdGlvbnMgaW4gZ2VzdHVyZSByZWNvZ25pemVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTA0NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIGdl
c3R1cmUgcmVjb2duaXRpb24gaGlnaGVyIHVwIHRoZSBldmVudCBkZWxpdmVyeSBjb2RlCisgICAg
ICAgIHBhdGggc28gdGhhdCByZWNvZ25pdGlvbiBvZiBnZXN0dXJlcyBpcyBjb21wbGV0ZWx5IHNl
cGFyYXRlZAorICAgICAgICBmcm9tIGdlc3R1cmUgaGFuZGxpbmcuCisKKyAgICAgICAgKiBmZWF0
dXJlcy5neXBpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldyk6CisgICAgICAgIEFkZGVkIGNvZGUg
dG8gcmVzZXQgdGhlIGdlc3R1cmUgcmVjb2duaXplciB0byBwcmVzZXJ2ZSBwYXJhbGxlbAorICAg
ICAgICBsYXlvdXQgdGVzdCBleGVjdXRpb24uCisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUlt
cGwuY3BwOgorICAgICAgICBTdXBwb3J0IGRpc3BhdGNoaW5nIHRvdWNoIGFuZCBnZXN0dXJlIGV2
ZW50cyB0byBQb3B1cHMuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OldlYlBv
cHVwTWVudUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVu
dCk6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwp
OgorICAgICAgICBBZGRlZCBnZXN0dXJlIHJlY29nbml0aW9uIGNyZWF0aW9uLgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIEFkZGVkIHJlY29nbml0
aW9uIG9mIGdlc3R1cmVzIGFuZCBkaXNwYXRjaCBvZiBnZXN0dXJlIGV2ZW50cy4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTA3LTI1ICBBbCBQYXRyaWNrICA8YXBhdHJpY2tA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZWQgc3VwcG9ydCBmb3IgdGhlIEdMX2xhdGNo
X0NIUk9NSVVNIGV4dGVuc2lvbiB3aGljaCBDaHJvbWl1bSBubyBsb25nZXIgc3VwcG9ydHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggNDNkYjQ4MzQyZGYzYTJjMzBiNWU0
MDRlYWU2MGVhNWE4MmIwNzkzOC4uYmQ5MTJkYmQ2NTJlZWMwODY1ZjVlMjIxNzBlN2U4NTZhMDVl
ZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAtNDksNiArNDksNyBA
QAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0xJywKICAgICAgICdFTkFCTEVfRklMVEVSUz0x
JywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049MScsCisgICAgICAnRU5BQkxFX0dFU1RVUkVf
RVZFTlRTPTEnLAogICAgICAgJ0VOQUJMRV9HRVNUVVJFX1JFQ09HTklaRVI9MScsCiAgICAgICAn
RU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAgICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0x
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDNj
NGFmYjk4YzJkYTE3OTZhZjQwOTQ4NmI4MjI5MDcxMzFiZjgzNTkuLjI2MmFiMDZjNzU3MzhkYzRi
NmI1NGM4YTA5MGM5OGEyODdmYmJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcApAQCAtMTk5NCw2ICsxOTk0LDEwIEBAIHZvaWQgV2ViRnJhbWVJbXBs
OjpjcmVhdGVGcmFtZVZpZXcoKQogCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICB2aWV3
LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKKyAgICB3ZWJWaWV3LT5yZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7CisjZW5kaWYKIH0KIAog
V2ViRnJhbWVJbXBsKiBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShGcmFtZSogZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDc3
ZDViODI2YjQzOWFjZWYxOGE3ODE5NjE5NzBjYmFiNzhmMGY1YzMuLmFiMGQ3ZDMzZDc2YTE3NjEw
NjE5ZGY2YWM0YzAxMTczMjMwYzVlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC01Miw2ICs1MiwxMSBAQAogCiAjaW5jbHVkZSA8
c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05J
WkVSKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplci5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY5LDYgKzc0LDkgQEAgV2ViUG9wdXBNZW51KiBX
ZWJQb3B1cE1lbnU6OmNyZWF0ZShXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKIFdlYlBvcHVwTWVu
dUltcGw6OldlYlBvcHVwTWVudUltcGwoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCiAgICAgLCBtX3dpZGdldCgwKQorI2lmIEVOQUJMRShHRVNUVVJFX1JF
Q09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2Vz
dHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgLy8gc2V0IHRvIGltcG9z
c2libGUgcG9pbnQgc28gd2UgYWx3YXlzIGdldCB0aGUgZmlyc3QgbW91c2UgcG9zCiAgICAgbV9s
YXN0TW91c2VQb3NpdGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CkBAIC0xMjUsNiArMTMzLDIxIEBA
IHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZl
bnQmIGV2ZW50KQogICAgIG1fd2lkZ2V0LT5oYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxF
dmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZl
bnQmIGV2ZW50KQoreworCisgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50
QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZChtX3dp
ZGdldC0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcikpOworI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdl
c3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1fZ2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NU
b3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXpl
KCk7IGkrKykKKyAgICAgICAgbV93aWRnZXQtPmhhbmRsZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVF
dmVudHMpW2ldKTsKKyNlbmRpZgorICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOworfQorI2Vu
ZGlmCisKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVLZXlFdmVudChQbGF0
Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CkBAIC0yMzcsOCArMjYwLDE2IEBAIGJv
b2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50
JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKICAgICAgICAgcmV0
dXJuIEtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0
RXZlbnQpKTsKIAotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6VG91Y2hTdGFydDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hDYW5jZWw6CisgICAgICAgIHJldHVybiBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxj
b25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6VW5kZWZpbmVkOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VFbnRlcjoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRleHRNZW51OgorICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBvcHVwTWVudUltcGwuaAppbmRleCA4MGU0NjVlOTU5NWZhNDU1Mjk4MTNjOGZlOTRl
MjExZDI3OTlkNzg1Li41ZGQxOGJlODdlNTY0MDliNzg4MTk0YWZiOTM3NDUyN2U4ODQzM2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1l
bnUuaCIKICNpbmNsdWRlICJXZWJTaXplLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDYg
KzQzLDkgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZWxlc3NTY3JvbGxWaWV3OwogY2xhc3Mg
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpF
UikKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIGNsYXNzIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFJhbmdlOwogY2xhc3MgV2lkZ2V0OwpAQCAtNTMsNiAr
NTcsNyBAQCBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50Owog
Y2xhc3MgV2ViUmFuZ2U7CiBzdHJ1Y3QgV2ViUmVjdDsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CiAK
IGNsYXNzIFdlYlBvcHVwTWVudUltcGwgOiBwdWJsaWMgV2ViUG9wdXBNZW51LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50
LApAQCAtOTksNiArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgTW91c2VVcChjb25zdCBXZWJN
b3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3VzZURvdWJsZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZl
bnQmKTsKICAgICB2b2lkIE1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7Cisg
ICAgYm9vbCBUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICAgICBib29sIEtleUV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAogICAgcHJvdGVjdGVkOgpAQCAtMTM2LDYg
KzE0MiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyBhIG5vbi1vd25pbmcgcmVmLiAgVGhl
IHBvcHVwIHdpbGwgbm90aWZ5IHVzIHZpYSBwb3B1cENsb3NlZCgpCiAgICAgLy8gYmVmb3JlIGl0
IGlzIGRlc3Ryb3llZC4KICAgICBXZWJDb3JlOjpGcmFtZWxlc3NTY3JvbGxWaWV3KiBtX3dpZGdl
dDsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRyPFdlYkNvcmU6
OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDBlYTk4MmU4ZjAwM2UyYzViMTZlYTM1Y2YyMmNlNTY4Yjc4
OTc1ZTYuLmU5ZWYyZGEzZTRiMmRjOWFjMDcwYmE5NzJmMDgxMmIxYjE1NjZmNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTEyOSw2ICsxMjksMTQg
QEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJl
RXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCisjZW5kaWYKKwogI2lmIFVTRShDRykK
ICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRtYXBDb250ZXh0Lmg+CiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMzQwLDYgKzM0OCw5IEBAIFdlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNl
T3JpZW50YXRpb25DbGllbnRQcm94eShhZG9wdFB0cihuZXcgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkp
CiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9u
Q2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgpIDogMCkpKQor
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVy
KFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7
CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNl
cHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlz
IG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAtNzU3LDcgKzc2OCwxNSBAQCBi
b29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRv
dWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAg
ICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
VG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcik7CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVk
ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hF
dmVudCh0b3VjaEV2ZW50QnVpbGRlcik7CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVS
KQorICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2Vz
dHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1
cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBkZWZhdWx0UHJldmVudGVkKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpbnQgIGkgPSAwOyBpIDwgZ2VzdHVyZUV2ZW50cy0+c2l6ZSgpOyBpKyspCisgICAgICAg
IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVF
dmVudChnZXN0dXJlRXZlbnRzLT5hdChpKSk7CisjZW5kaWYKKworICAgIHJldHVybiBkZWZhdWx0
UHJldmVudGVkOwogfQogI2VuZGlmCiAKQEAgLTI2NTgsNCArMjY3NywxMiBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2ViUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmls
aXR5U3RhdGUsCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCit2
b2lkIFdlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKCkKK3sKKyAgICBtX2dlc3R1
cmVSZWNvZ25pemVyLT5yZXNldCgpOworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBkNmU1N2M3
MjcyNDE2YWI2YWRjODljYzVkMDNjNzVlOGM3YjFhY2YzLi40NDhhZWM3YTA4NjI4MzRlMWQ1MjRl
YjIxMmRiNDBiNTFiM2UwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmgKQEAgLTY3LDYgKzY3LDkgQEAgY2xhc3MgUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUmFu
Z2U7CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFdpZGdldDsKKyNpZiBFTkFCTEUoR0VTVFVS
RV9SRUNPR05JWkVSKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM4NSw2ICszODgsMTAgQEAgcHVibGljOgogICAg
IC8vIGEgcGx1Z2luIGNhbiB1cGRhdGUgaXRzIG93biB6b29tLCBzYXkgYmVjYXVzZSBvZiBpdHMg
b3duIFVJLgogICAgIHZvaWQgZnVsbEZyYW1lUGx1Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUg
em9vbUxldmVsKTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdm9pZCBy
ZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3Ry
dWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsKQEAg
LTU2NSw2ICs1NzIsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q+IG1fdGVtcG9yYXJ5T25zY3JlZW5HcmFwaGljc0NvbnRleHQzRDsKICAgICBPd25Q
dHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dFByb3h5OwogICAgIE93blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9u
Q2xpZW50UHJveHk7CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVy
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102381</attachid>
            <date>2011-07-29 12:48:01 -0700</date>
            <delta_ts>2011-08-02 12:21:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110729154817.patch</filename>
            <type>text/plain</type>
            <size>43671</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTMzZTYxNDg1YjRhNTRk
NDQwY2NjMTE0ZGU3MmJjMzI0NGMzODljLi5mMGNlZTdlYjRmMjBlYTQ0NjU5ODUwZjkxMDA5NmI3
Y2U3YmZmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTEtMDctMjkgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGl2aWRlZCB0aGUgZ2VzdHVyZSByZWNv
Z25pemVyIHVwIHRvIGNvcnJlY3QgYSBsYXllcmluZworICAgICAgICB2aW9sYXRpb24gYnkgbW92
aW5nIGdlc3R1cmUgaW1wbGVtZW50YXRpb24gZnJvbSBpdCB0bworICAgICAgICBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAg
ICAgICAgY291bGQgc2ltcGx5IGJlIGFuIGVuZ2luZSBmb3IgZ2VuZXJhdGluZyBnZXN0dXJlIGV2
ZW50cyBmcm9tCisgICAgICAgIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIGRvbS9XaGVlbEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVsRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQpOgorICAgICAgICAqIGRv
bS9XaGVlbEV2ZW50Lmg6CisgICAgICAgIEFkZGVkIHN5bWJvbGljIGNvbnRzdGFudCBmb3IgdGlj
ayBtdWx0aXBsaWVyLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlZCBj
b25zdHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICBFeHRlbmRlZCBmb3IgbmV3
IGdlc3R1cmUgZXZlbnRzIGFkZGVkIGluIHRoaXMgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICBSZW1vdmVkIGNhbGwgaW50
byBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnJlc2V0KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIHRvIHJlc2V0IGdlc3R1cmUgcmVjb2duaXpl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpkZWx0YVgpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmRlbHRhWSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6c2hpZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OmFsdEtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6bWV0YUtleSk6CisgICAgICAgIEFkZGVkIGFkZGl0aW9uYWwgZ2VzdHVyZSB0eXBlcyBh
bmQgcGFyYW1ldGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JXaW46OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAg
ICAgIEFkZGVkIG1pc3NpbmcgbWV0aG9kIG5lZWRlZCB0byBmaXggdGhlIGJ1aWxkIG9uIHdpbmRv
d3MuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oOgor
ICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF0Y2hpbmcgZ2VzdHVyZSBhbmQgdG91Y2gg
ZXZlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6SW5u
ZXJHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVy
Ojpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdl
c3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKToKKyAgICAgICAg
UmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMgb24gRXZlbnRIYW5kbGVyLiBJbnN0ZWFkLCBjcmVhdGUg
Z2VzdHVyZQorICAgICAgICBldmVudHMgZnJvbSB0b3VjaCBldmVudCBzdHJlYW0uCisgICAgICAg
IChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RTY3JvbGxHZXN0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6CisgICAgICAgIChXZWJDb3JlOjpub0dl
c3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6aXND
bGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmluU2Nyb2xsKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2Vz
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6cmVz
ZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6
CisgICAgICAgIEFkZGVkIHN1cHBvcnQgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cyBhbmQgZ2VzdHVy
ZSBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91Y2hF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlVG91Y2hFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmhhbmRsZUdlc3R1cmVFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgSWdub3JlcyB0
aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBlcy4KKwogMjAxMS0wNy0yOCAgTGVhbmRy
byBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4
IHNwZWVjaCBpbnB1dCBpY29uIHJlY3Qgb24gUlRMIGRpcmVjdGlvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5jcHAKaW5kZXggMGE1ZGE0YzJiODA1ZDhmZWZlYmRiZDA2YTFkNDQ3NGZmZTljM2Iw
OS4uNTczZWE2M2RmMzg2Y2ViYmEzNjc3NmNhOTY5OTgxNGFiNDQzMDUwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQCBXaGVlbEV2ZW50OjpXaGVlbEV2ZW50
KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRh
LAogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlbkxvY2F0
aW9uLCBwYWdlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRL
ZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQotICAgICwgbV93aGVlbERlbHRhKEludFBvaW50KHN0YXRp
Y19jYXN0PGludD4od2hlZWxUaWNrcy54KCkgKiAxMjApLCBzdGF0aWNfY2FzdDxpbnQ+KHdoZWVs
VGlja3MueSgpICogMTIwKSkpCisgICAgLCBtX3doZWVsRGVsdGEoSW50UG9pbnQoc3RhdGljX2Nh
c3Q8aW50Pih3aGVlbFRpY2tzLngoKSAqIHRpY2tNdWx0aXBsaWVyKSwgc3RhdGljX2Nhc3Q8aW50
Pih3aGVlbFRpY2tzLnkoKSAqIHRpY2tNdWx0aXBsaWVyKSkpCiAgICAgLCBtX3Jhd0RlbHRhKHJv
dW5kZWRJbnRQb2ludChyYXdEZWx0YSkpCiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5
KQogewpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2ZW50KGlu
dCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJhYwogICAgIG1fbWV0
YUtleSA9IG1ldGFLZXk7CiAgICAgCiAgICAgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5kb3dzIDEy
MCBtdWx0aXBsZQotICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCAqIDEyMCwg
cmF3RGVsdGFZICogMTIwKTsKKyAgICBtX3doZWVsRGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVgg
KiB0aWNrTXVsdGlwbGllciwgcmF3RGVsdGFZICogdGlja011bHRpcGxpZXIpOwogICAgIAogICAg
IG1fcmF3RGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVgsIHJhd0RlbHRhWSk7CiAgICAgbV9ncmFu
dWxhcml0eSA9IFBpeGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggOTE5ZDA2OWY1NGY4
ZjIzNzYyZmM0ZDBjYzA1ZjJmY2FiYmZiODdhMS4uMGY4NTkxMmNlMWE3NzcwMmNjYjc4N2QwZWNk
MTcwMjc3ZDcxMzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC0zMiw2ICszMiw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBleHRlbnNpb246IG1vdXNlIHdoZWVsIGV2ZW50
CiAgICAgY2xhc3MgV2hlZWxFdmVudCA6IHB1YmxpYyBNb3VzZVJlbGF0ZWRFdmVudCB7CiAgICAg
cHVibGljOgorICAgICAgICBlbnVtIHsgdGlja011bHRpcGxpZXIgPSAxMjAgfTsKKwogICAgICAg
ICBlbnVtIEdyYW51bGFyaXR5IHsgUGl4ZWwsIExpbmUsIFBhZ2UgfTsKIAogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDkyOTVjODY2MjJlYzFhZTJhMDA4ZGYwMzRhN2E5YTM0MzIyMWU1ODUu
Ljg0NmFmYmI3OWUxN2QxNTIxZTU5ODRjNGQ5Yzg3YzBmMmRlMGQ1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMCwxMCArMTAwLDYgQEAKICNpbmNsdWRlICJUb3Vj
aExpc3QuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjEwLDkgKzIwNiw2IEBA
IEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lKiBmcmFtZSkKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKLSNpZiBFTkFC
TEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihQbGF0Zm9y
bUdlc3R1cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKLSNlbmRpZgogewogfQogCkBAIC0yMjI3LDEx
ICsyMjIwLDMzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3Qg
UGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAvLyB0aGF0IGlmIGEgZnJh
bWUgZ2V0cyBhIGdlc3R1cmUgYmVnaW4gZ2VzdHVyZSwgaXQgZ2V0cyB0aGUgY29ycmVzcG9uZGlu
ZwogICAgIC8vIGVuZCBnZXN0dXJlIGFzIHdlbGwuCiAKLSAgICBGcmFtZVZpZXcqIHZpZXcgPSBt
X2ZyYW1lLT52aWV3KCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgc3dpdGNoIChnZXN0dXJlRXZlbnQudHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1
cmVFdmVudDo6VGFwVHlwZTogeworICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2Rl
IHRvIG5vdCBoaXQgdGVzdCBtdWx0aXBsZSB0aW1lcyBvbmNlIGhpdCB0ZXN0aW5nIGhhcyBiZWVu
IGNvcnJlY3RlZCBhcyBzdWdnZXN0ZWQgYWJvdmUuCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVu
dCBmYWtlTW91c2VNb3ZlKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xv
YmFsUG9zaXRpb24oKSwgTm9CdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgLyogY2xpY2tDb3VudCAq
LyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXkoKSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2Vz
dHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJlRXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQu
dGltZXN0YW1wKCkpOworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihn
ZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExl
ZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVF
dmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0
S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7
CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VVcChnZXN0dXJlRXZlbnQucG9z
aXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIExlZnRCdXR0b24sIE1vdXNl
RXZlbnRSZWxlYXNlZCwgLyogY2xpY2tDb3VudCAqLyAxLCBnZXN0dXJlRXZlbnQuc2hpZnRLZXko
KSwgZ2VzdHVyZUV2ZW50LmN0cmxLZXkoKSwgZ2VzdHVyZUV2ZW50LmFsdEtleSgpLCBnZXN0dXJl
RXZlbnQubWV0YUtleSgpLCBnZXN0dXJlRXZlbnQudGltZXN0YW1wKCkpOworICAgICAgICBtb3Vz
ZU1vdmVkKGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVNb3VzZVByZXNzRXZlbnQoZmFr
ZU1vdXNlRG93bik7CisgICAgICAgIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGZha2VNb3VzZVVw
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJl
RXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGU6IHsKKyAgICAgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlz
b3IgPSAoZmxvYXQpV2hlZWxFdmVudDo6dGlja011bHRpcGxpZXI7CisgICAgICAgIC8vIEZJWE1F
OiBSZXBsYWNlIHRoaXMgaW50ZXJpbSBpbXBsZW1lbnRhdGlvbiBvbmNlIHRoZSBhYm92ZSBmaXht
ZSBoYXMgYmVlbiBhZGRyZXNzZWQuCisgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50aGV0
aWNXaGVlbEV2ZW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFs
UG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpLCBnZXN0dXJlRXZlbnQuZGVsdGFZKCks
IGdlc3R1cmVFdmVudC5kZWx0YVgoKSAvIHRpY2tEaXZpc29yLCBnZXN0dXJlRXZlbnQuZGVsdGFZ
KCkgLyB0aWNrRGl2aXNvciwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQg
Ki8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgp
LCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAg
ICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5U
eXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAg
ICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICAgICAgaWYgKCF2aWV3
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2
ZW50KGdlc3R1cmVFdmVudCk7CisgICAgICAgIHZpZXctPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0
dXJlRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAjZW5kaWYKQEAgLTMyODYsMjEgKzMzMDEsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICB9
CiAgICAgfQogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBpZiAobV9nZXN0
dXJlUmVjb2duaXplcikKLSAgICAgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNo
RXZlbnRGb3JHZXN0dXJlKGV2ZW50LCB0aGlzLCBkZWZhdWx0UHJldmVudGVkKTsKLSNlbmRpZgot
CiAgICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7CiB9CiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9S
RUNPR05JWkVSKQotdm9pZCBFdmVudEhhbmRsZXI6OnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKQot
ewotICAgIGlmIChtX2dlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICBtX2dlc3R1cmVSZWNvZ25p
emVyLT5yZXNldCgpOwotfQotI2VuZGlmCiAKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAppbmRleCA4YWI3NDM3ZTZhMjExNjU4MTYyYjA0OWFjODkxNzZmODA2MmE5ODE0Li5k
MTc4YjZjMWU2NmEzMTlkYzU4NDQ0NjdjYWIyZDY3YWY4NDNmNGE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTgwLDEwICs4MCw2IEBAIGNsYXNzIFdpZGdldDsKIGNsYXNzIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05J
WkVSKQotY2xhc3MgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKIGV4dGVybiBjb25zdCBpbnQgTGlua0RyYWdIeXN0ZXJlc2lzOwog
ZXh0ZXJuIGNvbnN0IGludCBJbWFnZURyYWdIeXN0ZXJlc2lzOwpAQCAtMTY2LDEwICsxNjIsNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0
dXJlRXZlbnQmKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAg
ICB2b2lkIHJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCk7CkBA
IC00MjksOSArNDIxLDYgQEAgcHJpdmF0ZToKICAgICBUb3VjaFRhcmdldE1hcCBtX29yaWdpbmF0
aW5nVG91Y2hQb2ludFRhcmdldHM7CiAgICAgYm9vbCBtX3RvdWNoUHJlc3NlZDsKICNlbmRpZgot
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgT3duUHRyPFBsYXRmb3JtR2VzdHVy
ZVJlY29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA2MjdlOTZlMTEy
NTFhYzQxMTAyNGNiZTI5NjcyNzg0YTgzZmRjOGNkLi5lOGRmZGY2NDQ1OTU1MmIyMzUxNzE0M2Zk
YWRmNThjYTkwOTMyYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMzIsMTAg
KzIzMiw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9pc1Zpc3VhbGx5Tm9uRW1w
dHkgPSBmYWxzZTsKICAgICBtX2ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dENhbGxiYWNrUGVu
ZGluZyA9IHRydWU7CiAgICAgbV9tYWludGFpblNjcm9sbFBvc2l0aW9uQW5jaG9yID0gMDsKLQot
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPnJlc2V0R2VzdHVyZVJlY29nbml6ZXIoKTsKLSNlbmRpZgogfQogCiBib29sIEZyYW1lVmll
dzo6aXNGcmFtZVZpZXcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUdlc3R1cmVFdmVudC5oCmluZGV4IDk5MTU3ZTEwOGVhZWIwODBlYzNiZTUzMjY1MDgxOWM1
YWEzYTMyOWEuLjE4YjdkMWFhMmQxZWRmOWE4M2RlZjJmMjY2ZjI1MDkwMzc5Njg0N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaApAQCAtMzcs
NiArMzcsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgU2Nyb2xsQmVnaW5U
eXBlLAogICAgICAgICBTY3JvbGxFbmRUeXBlLAorICAgICAgICBTY3JvbGxVcGRhdGVUeXBlLAor
ICAgICAgICBUYXBUeXBlCiAgICAgfTsKIAogICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50KCkKQEAg
LTQ1LDYgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgUGxhdGZvcm1HZXN0
dXJlRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgZmxvYXQg
ZGVsdGFYLCBjb25zdCBmbG9hdCBkZWx0YVksIGJvb2wgc2hpZnRLZXksIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgbWV0YUtleSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAg
ICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xv
YmFsUG9zaXRpb24pCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAgICAgICAs
IG1fZGVsdGFYKGRlbHRhWCkKKyAgICAgICAgLCBtX2RlbHRhWShkZWx0YVkpCisgICAgICAgICwg
bV9zaGlmdEtleShzaGlmdEtleSkKKyAgICAgICAgLCBtX2N0cmxLZXkoY3RybEtleSkKKyAgICAg
ICAgLCBtX2FsdEtleShhbHRLZXkpCisgICAgICAgICwgbV9tZXRhS2V5KG1ldGFLZXkpCisgICAg
eworICAgIH0KKwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAg
ICAgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsg
fSAvLyBQbGF0Zm9ybVdpbmRvdyBjb29yZGluYXRlcy4KQEAgLTUyLDExICs2OCwyNCBAQCBwdWJs
aWM6CiAKICAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7
IH0KIAorICAgIGZsb2F0IGRlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsdGFYOyB9CisgICAg
ZmxvYXQgZGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVk7IH0KKyAgICBib29sIHNoaWZ0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zaGlmdEtleTsgfQorICAgIGJvb2wgY3RybEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3RybEtleTsgfQorICAgIGJvb2wgYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9hbHRLZXk7IH0KKyAgICBib29sIG1ldGFLZXkoKSBjb25zdCB7IHJldHVybiBtX21ldGFL
ZXk7IH0KKwogcHJvdGVjdGVkOgogICAgIFR5cGUgbV90eXBlOwogICAgIEludFBvaW50IG1fcG9z
aXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBkb3VibGUgbV90aW1l
c3RhbXA7CisgICAgZmxvYXQgbV9kZWx0YVg7CisgICAgZmxvYXQgbV9kZWx0YVk7CisgICAgYm9v
bCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5OworICAgIGJvb2wgbV9hbHRLZXk7Cisg
ICAgYm9vbCBtX21ldGFLZXk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKaW5k
ZXggMmY4MDViZDI2MjcxZGMxNGQzOTA0NTNlM2M5MDZjZTBhMTQzYjVjOC4uMGI4NmE5Mjc2ZmI2
YmRlZjliN2MzNzg4M2M1MDkzZjc3ZTA0Y2IzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMzEsMTggKzMxLDE1IEBA
CiAjaWZuZGVmIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUdl
c3R1cmVSZWNvZ25pemVyX2gKIAorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnRIYW5kbGVyOwotY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcjsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIAotLy8gQSBHZXN0
dXJlUmVjb2duaXplciBkZXRlY3RzIGdlc3R1cmVzIG9jY3VycmluZyBpbiB0aGUgdG91Y2ggZXZl
bnQuCi0vLyBJbiByZXNwb25zZSB0byBhIGdpdmVuIHRvdWNoIGV2ZW50LCB0aGUgR2VzdHVyZVJl
Y29nbml6ZXIsIHVwZGF0ZXMKLS8vIGl0cyBpbnRlcm5hbCBzdGF0ZSBhbmQgb3B0aW9uYWxseSBk
aXNwYXRjaGVzIHN5bnRoZXRpYyBldmVudHMgdG8gdGhlCi0vLyBpbnZva2luZyBFdmVudEhhbmRs
ZXIgaW5zdGFuY2UuCiBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyIHsKIHByb3RlY3Rl
ZDoKICAgICBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyKCk7CkBAIC01MSwxMiArNDgsMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+
IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgflBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKTsKIAot
ICAgIC8vIEludm9rZWQgZm9yIGVhY2ggdG91Y2ggZXZlbnQgdGhhdCBjb3VsZCBjb250cmlidXRl
IHRvIHRoZSBjdXJyZW50IGdlc3R1cmUuCi0gICAgLy8gVGFrZXMgYSBQbGF0Zm9ybVRvdWNoRXZl
bnQgYW5kIHRoZSBFdmVudEhhbmRsZXIgdGhhdCBvcmlnaW5hdGVkIGl0IGFuZCB3aGljaCB3aWxs
IGFsc28KLSAgICAvLyBiZSB0aGUgdGFyZ2V0IG9mIGFueSBnZW5lcmF0ZWQgc3ludGhldGljIGV2
ZW50LiBGaW5hbGx5LCB8aGFuZGxlZHwKLSAgICAvLyBzcGVjaWZpZXMgaWYgdGhlIHxldmVudHwg
d2FzIGFjdHVhbGx5IGhhbmRsZWQgYnkgfHNvdXJjZXwgKGJ5IHRoZSBKYXZhU2NyaXB0KQotICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgcmVzdWx0ZWQgaW4gZmlyaW5nIGEgc3ludGhl
dGljIGV2ZW50LgotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiwgRXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5kbGVkKSA9
IDA7CisgICAgdHlwZWRlZiBQYXNzT3duUHRyPFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4g
PiBQYXNzR2VzdHVyZXM7CisKKyAgICAvLyBJbnZva2VkIGZvciBlYWNoIHRvdWNoIGV2ZW50IGFu
ZCByZXR1cm5zIDAgb3IgbW9yZSByZXN1bHRpbmcgZ2VzdHVyZXMuCisgICAgdmlydHVhbCBQYXNz
R2VzdHVyZXMgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNo
RXZlbnQmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpID0gMDsKIAogICAgIC8vIENsZWFycyB0aGUg
R2VzdHVyZVJlY29nbml6ZXIgdG8gaXRzIGluaXRpYWwgc3RhdGUuCiAgICAgdmlydHVhbCB2b2lk
IHJlc2V0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JX
aW4uY3BwCmluZGV4IDQ3YTAwY2IxOTNjMjA1NTg2OWJjMzA5YTUwOGMyMmQzYzE5YmMxMTAuLjFj
NGVmZWFmYWRhMGZhZTRiMTBkZjYxMDlkN2NlNDA2OGVhNDdjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvcldpbi5jcHAKQEAgLTMwNSw2ICszMDUsMTIgQEAg
dm9pZCBTY3JvbGxBbmltYXRvcldpbjo6YW5pbWF0ZVNjcm9sbChQZXJBeGlzRGF0YSogZGF0YSkK
ICAgICBub3RpdHlQb3NpdGlvbkNoYW5nZWQoKTsKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX0VW
RU5UUykKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JXaW46OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5k
ZXggZDU0ZjU0MzJjYzc0MTgwMjEwNWI4NjdkYjIzNTAwYjdkMDg0ZThlMS4uYzZjYzJiNWYzNGI0
MmU2NGMyNTU4NWQ5Zjc4Yzk1Y2I5YTYxZTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtMzYsOCArMzYs
MTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lbGVzc1Njcm9sbFZp
ZXdDbGllbnQ7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBjbGFzcyBQbGF0
Zm9ybUdlc3R1cmVFdmVudDsKKyNlbmRpZgogICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICBjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBQbGF0
Zm9ybVdoZWVsRXZlbnQ7CiAKICAgICAvLyBBIEZyYW1lbGVzc1Njcm9sbFZpZXcgaXMgYSBTY3Jv
bGxWaWV3IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVuZGVyIGN1c3RvbQpAQCAtNjAsNiArNjYsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmKSA9IDA7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgdmlydHVh
bCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikgPSAwOwor
I2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICAgICAgdmlydHVhbCBi
b29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpID0gMDsK
KyNlbmRpZgogCiAgICAgICAgIC8vIFNjcm9sbGFibGVBcmVhIHB1YmxpYyBtZXRob2RzOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAppbmRleCA0MGZlODlmNGFh
ZjRjMjlkNmExNDJkNGVlYzkwMTMwY2IxZDMyY2NlLi45MDU4MjAxZDlhYTdhODllM2QwZTA5YmZh
YTRmMzQ1YTdkMTI3NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmNwcApAQCAtMzEsMTcg
KzMxLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6
ZXJDaHJvbWl1bS5oIgogCi0jaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2du
aXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wgaXNDbGlja09y
U2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQm
KTsKLXN0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQ
bGF0Zm9ybVRvdWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCB0b3Vj
aERvd24oSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYp
OworLy8gRklYTUU6IENvbnZlcnQgdG8gbWV0aG9kcy4KK3N0YXRpYyBib29sIGNsaWNrKElubmVy
R2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1
cmVSZWNvZ25pemVyOjpHZXN0dXJlcyk7CitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5u
ZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2Vz
dHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKK3N0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2Vz
dHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVS
ZWNvZ25pemVyOjpHZXN0dXJlcyk7CitzdGF0aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJl
UmVjb2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29n
bml6ZXI6Okdlc3R1cmVzKTsKK3N0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6R2VzdHVyZXMpOwogCiAvLyBGSVhNRTogTWFrZSB0aGVzZSBjb25maWd1cmFibGUgcHJvZ3Jh
bW1hdGljYWxseS4KIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4aW11bVRvdWNoRG93bkR1cmF0aW9u
SW5TZWNvbmRzRm9yQ2xpY2sgPSAwLjg7CkBAIC01Miw3ICs1Miw2IEBAIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OklubmVyR2VzdHVyZVJlY29nbml6ZXIoKQogICAgIDogbV9maXJzdFRvdWNoVGlt
ZSgwLjApCiAgICAgLCBtX3N0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVyZSkK
ICAgICAsIG1fbGFzdFRvdWNoVGltZSgwLjApCi0gICAgLCBtX2V2ZW50SGFuZGxlcigwKQogICAg
ICwgbV9jdHJsS2V5KGZhbHNlKQogICAgICwgbV9hbHRLZXkoZmFsc2UpCiAgICAgLCBtX3NoaWZ0
S2V5KGZhbHNlKQpAQCAtODAsNyArNzksNiBAQCB2b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6
OnJlc2V0KCkKICAgICBtX2ZpcnN0VG91Y2hUaW1lID0gMC4wOwogICAgIG1fc3RhdGUgPSBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmU7CiAgICAgbV9sYXN0VG91Y2hUaW1lID0gMC4w
OwotICAgIG1fZXZlbnRIYW5kbGVyID0gMDsKIH0KIAogSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6
fklubmVyR2VzdHVyZVJlY29nbml6ZXIoKQpAQCAtMTA0LDQ0ICsxMDIsMzYgQEAgYm9vbCBJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjppc0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9y
bVRvdWNoUG9pbnQmIHAKICAgICByZXR1cm4gbWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhpbXVtVG91
Y2hNb3ZlSW5QaXhlbHNGb3JDbGljazsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVy
OjpkaXNwYXRjaFN5bnRoZXRpY0NsaWNrKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQp
Cit2b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXpl
cjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3Vz
ZU1vdmUocG9pbnQucG9zKCksIHBvaW50LnNjcmVlblBvcygpLCBOb0J1dHRvbiwgTW91c2VFdmVu
dE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRL
ZXksIG1fbWV0YUtleSwgbV9sYXN0VG91Y2hUaW1lKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
ZmFrZU1vdXNlRG93bihwb2ludC5wb3MoKSwgcG9pbnQuc2NyZWVuUG9zKCksIExlZnRCdXR0b24s
IE1vdXNlRXZlbnRQcmVzc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIG1fc2hpZnRLZXksIG1fY3Ry
bEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSwgbV9sYXN0VG91Y2hUaW1lKTsKLSAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZmFrZU1vdXNlVXAocG9pbnQucG9zKCksIHBvaW50LnNjcmVlblBvcygpLCBM
ZWZ0QnV0dG9uLCBNb3VzZUV2ZW50UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9zaGlm
dEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUpOwot
Ci0gICAgbV9ldmVudEhhbmRsZXItPm1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7Ci0gICAgbV9l
dmVudEhhbmRsZXItPmhhbmRsZU1vdXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKLSAgICBt
X2V2ZW50SGFuZGxlci0+aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOworICAg
IGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZl
bnQ6OlRhcFR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1f
bGFzdFRvdWNoVGltZSwgMC4wZiwgMC4wZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtl
eSwgbV9tZXRhS2V5KSk7CiB9CiAKLWJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2
ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyLCBib29sIGhhbmRsZWQpCitQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1Rv
dWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29s
IGRlZmF1bHRQcmV2ZW50ZWQpCiB7Ci0gICAgbV9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7
CiAgICAgbV9jdHJsS2V5ID0gZXZlbnQuY3RybEtleSgpOwogICAgIG1fYWx0S2V5ID0gZXZlbnQu
YWx0S2V5KCk7CiAgICAgbV9zaGlmdEtleSA9IGV2ZW50LnNoaWZ0S2V5KCk7CiAgICAgbV9tZXRh
S2V5ID0gZXZlbnQubWV0YUtleSgpOwogCisgICAgT3duUHRyPFZlY3RvcjxQbGF0Zm9ybUdlc3R1
cmVFdmVudD4gPiBnZXN0dXJlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UGxhdGZvcm1HZXN0dXJl
RXZlbnQ+KCkpOwogICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiBwb2ludHMg
PSBldmVudC50b3VjaFBvaW50cygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2lu
dHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwID0g
cG9pbnRzW2ldOwogICAgICAgICB1cGRhdGVWYWx1ZXMoZXZlbnQudGltZXN0YW1wKCksIHApOwog
Ci0gICAgICAgIGlmIChHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uIGVmID0gbV9lZGdlRnVuY3Rp
b25zLmdldChzaWduYXR1cmUobV9zdGF0ZSwgcC5pZCgpLCBwLnN0YXRlKCksIGhhbmRsZWQpKSkK
LSAgICAgICAgICAgIGhhbmRsZWQgPSAoKmVmKSh0aGlzLCBwKTsKKyAgICAgICAgaWYgKEdlc3R1
cmVUcmFuc2l0aW9uRnVuY3Rpb24gZWYgPSBtX2VkZ2VGdW5jdGlvbnMuZ2V0KHNpZ25hdHVyZSht
X3N0YXRlLCBwLmlkKCksIHAuc3RhdGUoKSwgZGVmYXVsdFByZXZlbnRlZCkpKQorICAgICAgICAg
ICAgKCplZikodGhpcywgcCwgZ2VzdHVyZXMuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gaGFu
ZGxlZDsKKyAgICByZXR1cm4gZ2VzdHVyZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElubmVyR2Vz
dHVyZVJlY29nbml6ZXI6OnNjcm9sbFZpYVRvdWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQ
b2ludCYgdG91Y2hQb2ludCkKK3ZvaWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Ny
b2xsR2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVz
IGdlc3R1cmVzKQogewogICAgIGZsb2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1f
Zmlyc3RUb3VjaFBvc2l0aW9uLngoKSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQucG9z
KCkueSgpIC0gbV9maXJzdFRvdWNoUG9zaXRpb24ueSgpKTsKIAotICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRvIGdlc3R1cmUgZXZlbnRzIHdoZW4gdGhleSBoYW5kbGUgc3ViZnJhbWVzLgotICAgIFBs
YXRmb3JtV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbEV2ZW50KHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVggLyBzdGF0aWNfY2Fz
dDxmbG9hdD4oMTIwKSwgZGVsdGFZIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50LCAvKiBpc0FjY2VwdGVkICovIGZhbHNlLCBtX3NoaWZ0S2V5LCBtX2N0
cmxLZXksIG1fYWx0S2V5LCBtX21ldGFLZXkpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVX
aGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUs
IHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGlt
ZSwgZGVsdGFYLCBkZWx0YVksIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSkpOwogICAgIG1fZmlyc3RUb3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsKIH0K
IApAQCAtMTY2LDI5ICsxNTYsMjkgQEAgdW5zaWduZWQgaW50IElubmVyR2VzdHVyZVJlY29nbml6
ZXI6OnNpZ25hdHVyZShTdGF0ZSBnZXN0dXJlU3RhdGUsIHVuc2lnbmVkIGlkLAogICAgIHJldHVy
biAxICsgKCh0b3VjaFR5cGUgJiAweDcpIDw8IDEgfCAoaGFuZGxlZCA/IDEgPDwgNCA6IDApIHwg
KChpZCAmIDB4ZmZmKSA8PCA1ICkgfCAoZ2VzdHVyZVN0YXRlIDw8IDE3KSk7CiB9CiAKLXN0YXRp
YyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXpl
ciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JikKK3N0YXRpYyBib29sIHRvdWNoRG93bihJbm5l
ckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAg
ICAgZ2VzdHVyZVJlY29nbml6ZXItPnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBl
bmRpbmdTeW50aGV0aWNDbGljayk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIG5vR2Vz
dHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JikKK3N0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5u
ZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVyZVJl
Y29nbml6ZXItPnJlc2V0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBj
bGljayhJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJl
Y29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBv
aW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBp
ZiAoZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5DbGlja1RpbWVXaW5kb3coKSAmJiBnZXN0dXJlUmVj
b2duaXplci0+aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7CiAgICAgICAgIGdlc3R1
cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUp
OwotICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+ZGlzcGF0Y2hTeW50aGV0aWNDbGljayhwb2lu
dCk7CisgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRDbGlja0dlc3R1cmVFdmVudChw
b2ludCwgZ2VzdHVyZXMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJu
IG5vR2VzdHVyZShnZXN0dXJlUmVjb2duaXplciwgcG9pbnQpOworICAgIHJldHVybiBub0dlc3R1
cmUoZ2VzdHVyZVJlY29nbml6ZXIsIHBvaW50LCBnZXN0dXJlcyk7CiB9CiAKLXN0YXRpYyBib29s
IGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXpl
ciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29sIGlzQ2xpY2tP
clNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3Qg
UGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVy
ZXMgZ2VzdHVyZXMpCiB7CiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xpY2tUaW1l
V2luZG93KCkgJiYgZ2VzdHVyZVJlY29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBv
aW50KSkgewogICAgICAgICBnZXN0dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0dXJl
UmVjb2duaXplcjo6UGVuZGluZ1N5bnRoZXRpY0NsaWNrKTsKQEAgLTE5NiwxNiArMTg2LDE2IEBA
IHN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0
dXJlUmVjb2duaXplciwgY29uc3QgUGxhCiAgICAgfQogCiAgICAgaWYgKHBvaW50LnN0YXRlKCkg
PT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkICYmICFnZXN0dXJlUmVjb2duaXplci0+
aXNJbnNpZGVNYW5oYXR0YW5TcXVhcmUocG9pbnQpKSB7Ci0gICAgICAgIGdlc3R1cmVSZWNvZ25p
emVyLT5zY3JvbGxWaWFUb3VjaE1vdGlvbihwb2ludCk7CisgICAgICAgIGdlc3R1cmVSZWNvZ25p
emVyLT5hcHBlbmRTY3JvbGxHZXN0dXJlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIGdlc3R1
cmVSZWNvZ25pemVyLT5zZXRTdGF0ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpTY3JvbGwpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0
aWMgYm9vbCBpblNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXpl
ciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29sIGluU2Nyb2xs
KElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9y
bVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0
dXJlcykKIHsKLSAgICBnZXN0dXJlUmVjb2duaXplci0+c2Nyb2xsVmlhVG91Y2hNb3Rpb24ocG9p
bnQpOworICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0dXJlKHBvaW50LCBn
ZXN0dXJlcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIzMiw0ICsyMjIsMTQgQEAgR2Vz
dHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6fkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKQogewog
fQogCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmIHRvdWNoRXZlbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3sKKyAgICBy
ZXR1cm4gbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVy
ZXModG91Y2hFdmVudCwgZGVmYXVsdFByZXZlbnRlZCk7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29n
bml6ZXJDaHJvbWl1bTo6cmVzZXQoKQoreworICAgIG1faW5uZXJHZXN0dXJlUmVjb2duaXplci5y
ZXNldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVt
LmgKaW5kZXggYTFjYWNhOWRkZWY0YjliOTY2YjExNjVmNWY4Zjk1NmY2YjI3YWU0Yy4uYmVhYzQ2
NTNlMzk3NGU0MTQ3ZmE5N2ViMjAzNWQxMjkxZmQzN2M1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21p
dW0uaApAQCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFBs
YXRmb3JtR2VzdHVyZUV2ZW50OworCiBjbGFzcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyIHsKIHB1
YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTQ3LDE2ICs0OSwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFNjcm9sbAogICAgIH07CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlv
bkZ1bmN0aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBv
aW50Jik7CisgICAgdHlwZWRlZiBWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KiBHZXN0dXJl
czsKKyAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShJbm5lckdl
c3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwog
CiAgICAgfklubmVyR2VzdHVyZVJlY29nbml6ZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTeW50
aGV0aWNDbGljayhjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICB2b2lkIGFwcGVuZENs
aWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAgICBib29sIGlzSW5DbGlja1RpbWVXaW5kb3coKTsK
ICAgICBib29sIGlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYpOwotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50JiwgRXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5kbGVkKTsKLSAgICB2
b2lkIHNjcm9sbFZpYVRvdWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworICAg
IHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzICBwcm9jZXNz
VG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJvb2wgZGVm
YXVsdFByZXZlbnRlZCk7CisgICAgdm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlKGNvbnN0IFBsYXRm
b3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHZhbHVl
KSB7IG1fc3RhdGUgPSB2YWx1ZTsgfQogICAgIFN0YXRlIHN0YXRlKCkgeyByZXR1cm4gbV9zdGF0
ZTsgfQogcHJvdGVjdGVkOgpAQCAtNzIsNyArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgZG91Ymxl
IG1fZmlyc3RUb3VjaFRpbWU7CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBkb3VibGUgbV9sYXN0
VG91Y2hUaW1lOwotICAgIEV2ZW50SGFuZGxlciogbV9ldmVudEhhbmRsZXI7CiAKICAgICBib29s
IG1fY3RybEtleTsKICAgICBib29sIG1fYWx0S2V5OwpAQCAtODYsMTUgKzg4LDkgQEAgcHVibGlj
OgogICAgIEdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIH5HZXN0dXJl
UmVjb2duaXplckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQotICAgIHsK
LSAgICAgICAgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyLnJlc2V0KCk7Ci0gICAgfTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAKLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZl
bnRGb3JHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgRXZlbnRI
YW5kbGVyKiBldmVudEhhbmRsZXIsIGJvb2wgaGFuZGxlZCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2lubmVyR2VzdHVyZVJlY29nbml6ZXIucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKHRv
dWNoRXZlbnQsIGV2ZW50SGFuZGxlciwgaGFuZGxlZCk7Ci0gICAgfQorICAgIHZpcnR1YWwgUGxh
dGZvcm1HZXN0dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzICBwcm9jZXNzVG91Y2hFdmVudEZv
ckdlc3R1cmVzKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRl
ZCk7CiBwcml2YXRlOgogICAgIElubmVyR2VzdHVyZVJlY29nbml6ZXIgbV9pbm5lckdlc3R1cmVS
ZWNvZ25pemVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCA4ODMzMTE4MzRkNDUwMDdiMDFjZGU1NmRm
NTQzOTkxZjFkYzlmNmRhLi40MzhhMjlhNTg2NTk2ZTNkOWIyM2Q4ZmQ2MjM3NmZhYjNkYjE0MDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBN
ZW51Q2hyb21pdW0uY3BwCkBAIC01OCw2ICs1OCwxNCBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKKyNpZiBF
TkFCTEUoR0VTVFVSRV9FVkVOVFMpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybVRv
dWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNw
YWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtMTA1LDYgKzExMywxMiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVu
dChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hF
dmVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7
CisjZW5kaWYKIAogICAgIC8vIFNjcm9sbFZpZXcKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3coKSBjb25zdDsKQEAgLTUxMSw2ICs1MjUsNDAgQEAgYm9vbCBQb3B1cENvbnRhaW5l
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAg
ICAgICBjb25zdHJ1Y3RSZWxhdGl2ZVdoZWVsRXZlbnQoZXZlbnQsIHRoaXMsIG1fbGlzdEJveC5n
ZXQoKSkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUG9wdXBDb250YWlu
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CisvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIHRvIHNoYXJlIGZ1bmN0aW9uYWxpdHkgd2l0
aCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KK2Jvb2wgUG9wdXBDb250YWluZXI6
OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQoreworICAgIHN3aXRjaCAoZ2VzdHVyZUV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGU6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9i
YWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICov
IDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0
dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50
aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVm
dEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2
ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRL
ZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsK
KyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3Np
dGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VF
dmVudFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgp
LCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVF
dmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIC8vIGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGZha2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVNb3VzZURv
d25FdmVudChmYWtlTW91c2VEb3duKTsKKyAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
ZmFrZU1vdXNlVXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnQgc3ludGhldGljV2hlZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2Vz
dHVyZUV2ZW50Lmdsb2JhbFBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVy
ZUV2ZW50LmRlbHRhWSgpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVF
dmVudC5kZWx0YVkoKSAvIDEyMC4wZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNj
ZXB0ZWQgKi8gZmFsc2UsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3Ry
bEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOwor
ICAgICAgICBoYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xs
QmVnaW5UeXBlOgorICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwog
Ym9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBldmVudCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwpAQCAtNzU0LDYgKzgwMiwyMCBA
QCBib29sIFBvcHVwTGlzdEJveDo6aXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29k
ZSkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorYm9vbCBQb3B1cExpc3RC
b3g6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
Citib29sIFBvcHVwTGlzdEJveDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2Vz
dHVyZUV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogc3RhdGljIGJv
b2wgaXNDaGFyYWN0ZXJUeXBlRXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVu
dCkKIHsKICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBldmVudCBpcyBhIGNoYXJhY3Rlci10eXBl
ZCBldmVudCBvciBub3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBNZW51Q2hyb21pdW0uaAppbmRleCA2ZmZhOTdiMWIzYTNiMDM3MmI4NzJkZDk5ZDM4
ZGJiZmZjZjg5NDM4Li44MmQ4NzliZGYwNWUzOTYzZDgzODgyYzdjN2JhYzA5ZTk2OTk1NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNo
cm9taXVtLmgKQEAgLTEyMiw2ICsxMjIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50Jik7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
VG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJM
RShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBQb3B1cENv
bnRhaW5lciBtZXRob2RzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxBbmltYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxBbmltYXRvck1hYy5tbQppbmRleCA4NWIwZjdjYjdhMDJjZmUyN2QwZmI3YzA1Njk5MTdmODIx
MTllZjQ1Li44ZWE2NTNiMmE4YWMxMmRkNzMwMzM4N2RkMWI0M2M5ZDVjNDlhZmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC04
NTksNyArODU5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50
KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXYKIHsKICAgICBpZiAoZ2VzdHVy
ZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlKQog
ICAgICAgICBiZWdpblNjcm9sbEdlc3R1cmUoKTsKLSAgICBlbHNlCisgICAgZWxzZSBpZiAoZ2Vz
dHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSkK
ICAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDI0ZDdkOWY4NDJhZWM3ZDk0NGVlYzU4MDljMDM2OTgxMTJkNTQ0MTYuLjJiYWM0NTgy
MDMzYTNkN2Q1MzVlYTQ0ZWQzODI5YjgwNzU5ZmM0ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDctMjkgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9l
Z2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTGF5ZXJpbmcgdmlvbGF0aW9u
cyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZWQgZ2VzdHVyZSByZWNvZ25pdGlvbiBoaWdoZXIgdXAgdGhlIGV2
ZW50IGRlbGl2ZXJ5IGNvZGUKKyAgICAgICAgcGF0aCBzbyB0aGF0IHJlY29nbml0aW9uIG9mIGdl
c3R1cmVzIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGVkCisgICAgICAgIGZyb20gZ2VzdHVyZSBoYW5k
bGluZy4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisgICAgICAgICogc3JjL1dlYkZyYW1l
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y3JlYXRlRnJhbWVWaWV3
KToKKyAgICAgICAgQWRkZWQgY29kZSB0byByZXNldCB0aGUgZ2VzdHVyZSByZWNvZ25pemVyIHRv
IHByZXNlcnZlIHBhcmFsbGVsCisgICAgICAgIGxheW91dCB0ZXN0IGV4ZWN1dGlvbi4KKyAgICAg
ICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIFN1cHBvcnQgZGlzcGF0Y2hp
bmcgdG91Y2ggYW5kIGdlc3R1cmUgZXZlbnRzIHRvIFBvcHVwcy4KKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6V2ViUG9wdXBNZW51SW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudUltcGw6OlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1w
bC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIEFkZGVkIGdlc3R1cmUgcmVjb2duaXRp
b24gY3JlYXRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KToK
KyAgICAgICAgQWRkZWQgcmVjb2duaXRpb24gb2YgZ2VzdHVyZXMgYW5kIGRpc3BhdGNoIG9mIGdl
c3R1cmUgZXZlbnRzLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVzZXRHZXN0dXJl
UmVjb2duaXplcik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMDctMjgg
IE5hb2tpIFRha2FubyAgPGhvbnRlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBBZGQgZm9ybSgpIGZ1bmN0aW9uIHRvIGFjY2VzcyBwYXJlbnQgV2ViRm9ybUVsZW1lbnQgZnJv
bSBXZWJGb3JtQ29udHJvbEVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2ZlYXR1cmVzLmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkK
aW5kZXggOTZmN2NkMzhmMzhkNDBjNmQ0ZTUyMGIzYzFlY2JkMDBjNmI3MzU0Zi4uYjZkODM2NDM3
NGQ0NWNjZWJjZWI5NGQyMjA5ZTBhNjhkN2Q0Njk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVh
dHVyZXMuZ3lwaQpAQCAtNTAsNiArNTAsNyBAQAogICAgICAgJ0VOQUJMRV9GSUxFX1NZU1RFTT0x
JywKICAgICAgICdFTkFCTEVfRklMVEVSUz0xJywKICAgICAgICdFTkFCTEVfR0VPTE9DQVRJT049
MScsCisgICAgICAnRU5BQkxFX0dFU1RVUkVfRVZFTlRTPTEnLAogICAgICAgJ0VOQUJMRV9HRVNU
VVJFX1JFQ09HTklaRVI9MScsCiAgICAgICAnRU5BQkxFX0lDT05EQVRBQkFTRT0wJywKICAgICAg
ICdFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRT0xJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDNjNGFmYjk4YzJkYTE3OTZhZjQwOTQ4NmI4MjI5MDcx
MzFiZjgzNTkuLjI2MmFiMDZjNzU3MzhkYzRiNmI1NGM4YTA5MGM5OGEyODdmYmJiMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTk5NCw2ICsx
OTk0LDEwIEBAIHZvaWQgV2ViRnJhbWVJbXBsOjpjcmVhdGVGcmFtZVZpZXcoKQogCiAgICAgaWYg
KGlzTWFpbkZyYW1lKQogICAgICAgICB2aWV3LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisj
aWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB3ZWJWaWV3LT5yZXNldEdlc3R1cmVS
ZWNvZ25pemVyKCk7CisjZW5kaWYKIH0KIAogV2ViRnJhbWVJbXBsKiBXZWJGcmFtZUltcGw6OmZy
b21GcmFtZShGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBvcHVwTWVudUltcGwuY3BwCmluZGV4IDYyZGNkNjMzMTg0MWI0OWJlNTJiNTJiYTZiNWI3ZjE4
MGM3NjRjYzMuLmZhYTEwMDZlM2Q1ZDM2YmY0OTFlZmMyNjNiZTIxZGFkZDk2YmE3ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC01
Miw2ICs1MiwxMSBAQAogCiAjaW5jbHVkZSA8c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmg+CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVy
ZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oIgorI2VuZGlm
CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY5
LDYgKzc0LDkgQEAgV2ViUG9wdXBNZW51KiBXZWJQb3B1cE1lbnU6OmNyZWF0ZShXZWJXaWRnZXRD
bGllbnQqIGNsaWVudCkKIFdlYlBvcHVwTWVudUltcGw6OldlYlBvcHVwTWVudUltcGwoV2ViV2lk
Z2V0Q2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3dpZGdl
dCgwKQorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgLCBtX2dlc3R1cmVSZWNv
Z25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQorI2Vu
ZGlmCiB7CiAgICAgLy8gc2V0IHRvIGltcG9zc2libGUgcG9pbnQgc28gd2UgYWx3YXlzIGdldCB0
aGUgZmlyc3QgbW91c2UgcG9zCiAgICAgbV9sYXN0TW91c2VQb3NpdGlvbiA9IFdlYlBvaW50KC0x
LCAtMSk7CkBAIC0xMjUsNiArMTMzLDIxIEBAIHZvaWQgV2ViUG9wdXBNZW51SW1wbDo6TW91c2VX
aGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIGV2ZW50KQogICAgIG1fd2lkZ2V0LT5oYW5k
bGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIobV93aWRnZXQsIGV2ZW50KSk7
CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpU
b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQoreworCisgICAgUGxhdGZvcm1U
b3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50QnVpbGRlcihtX3dpZGdldCwgZXZlbnQpOworICAg
IGJvb2wgZGVmYXVsdFByZXZlbnRlZChtX3dpZGdldC0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2
ZW50QnVpbGRlcikpOworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisgICAgT3duUHRy
PFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlRXZlbnRzKG1f
Z2VzdHVyZVJlY29nbml6ZXItPnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVu
dEJ1aWxkZXIsIGRlZmF1bHRQcmV2ZW50ZWQpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCAgaSA9
IDA7IGkgPCBnZXN0dXJlRXZlbnRzLT5zaXplKCk7IGkrKykKKyAgICAgICAgbV93aWRnZXQtPmhh
bmRsZUdlc3R1cmVFdmVudCgoKmdlc3R1cmVFdmVudHMpW2ldKTsKKyNlbmRpZgorICAgIHJldHVy
biBkZWZhdWx0UHJldmVudGVkOworfQorI2VuZGlmCisKIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6
S2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIG1f
d2lkZ2V0LT5oYW5kbGVLZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50
KSk7CkBAIC0yMzcsOCArMjYwLDE2IEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5w
dXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6Q2hhcjoKICAgICAgICAgcmV0dXJuIEtleUV2ZW50KCpzdGF0aWNfY2FzdDxjb25z
dCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKIAotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hTdGFydDoKKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZToKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNo
RW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hDYW5jZWw6CisgICAgICAgIHJldHVy
biBUb3VjaEV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJUb3VjaEV2ZW50Kj4oJmlucHV0RXZl
bnQpKTsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6TW91c2VFbnRlcjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRleHRN
ZW51OgorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAppbmRleCA4
MGU0NjVlOTU5NWZhNDU1Mjk4MTNjOGZlOTRlMjExZDI3OTlkNzg1Li41ZGQxOGJlODdlNTY0MDli
Nzg4MTk0YWZiOTM3NDUyN2U4ODQzM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUG9wdXBNZW51SW1wbC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2ViUG9p
bnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJTaXplLmgiCisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDYgKzQzLDkgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBG
cmFtZWxlc3NTY3JvbGxWaWV3OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7Cisj
aWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI7CisjZW5kaWYKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFJhbmdl
OwogY2xhc3MgV2lkZ2V0OwpAQCAtNTMsNiArNTcsNyBAQCBjbGFzcyBXZWJNb3VzZUV2ZW50Owog
Y2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViUmFuZ2U7CiBzdHJ1Y3QgV2ViUmVj
dDsKK2NsYXNzIFdlYlRvdWNoRXZlbnQ7CiAKIGNsYXNzIFdlYlBvcHVwTWVudUltcGwgOiBwdWJs
aWMgV2ViUG9wdXBNZW51LAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3Jl
OjpGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50LApAQCAtOTksNiArMTA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgTW91c2VVcChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBNb3VzZURv
dWJsZUNsaWNrKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lkIE1vdXNlV2hlZWwoY29u
c3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7CisgICAgYm9vbCBUb3VjaEV2ZW50KGNvbnN0IFdlYlRv
dWNoRXZlbnQmKTsKICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsK
IAogICAgcHJvdGVjdGVkOgpAQCAtMTM2LDYgKzE0MiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gVGhp
cyBpcyBhIG5vbi1vd25pbmcgcmVmLiAgVGhlIHBvcHVwIHdpbGwgbm90aWZ5IHVzIHZpYSBwb3B1
cENsb3NlZCgpCiAgICAgLy8gYmVmb3JlIGl0IGlzIGRlc3Ryb3llZC4KICAgICBXZWJDb3JlOjpG
cmFtZWxlc3NTY3JvbGxWaWV3KiBtX3dpZGdldDsKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09H
TklaRVIpCisgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI+IG1f
Z2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDExOGI1ZDVj
NWRmNzA1NzFiMjAxNDY3OWU1OGQ1ZDk0YzkxNDFhZTMuLmZiMjE2ZGViN2VlMjg4OWUyMTUxZDdl
MDkwYWYyNjhlNTFjMjRhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTEzMCw2ICsxMzAsMTQgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxF
KEdFU1RVUkVfUkVDT0dOSVpFUikKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVy
LmgiCisjZW5kaWYKKwogI2lmIFVTRShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dCaXRt
YXBDb250ZXh0Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMzQx
LDYgKzM0OSw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGll
bnQpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShhZG9wdFB0
cihuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmlj
ZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkpCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJv
eHkoYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5n
ZW9sb2NhdGlvbkNsaWVudCgpIDogMCkpKQorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CisgICAgLCBtX2dlc3R1cmVSZWNvZ25pemVyKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXI6OmNyZWF0ZSgpKQorI2VuZGlmCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cCBkb2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBz
cGVjaWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVh
ZGluZwpAQCAtNzU4LDcgKzc2OSwxNSBAQCBib29sIFdlYlZpZXdJbXBsOjp0b3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQ
bGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1haW5GcmFtZUltcGwo
KS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcik7
CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGFuZGxlVG91Y2hFdmVudCh0b3VjaEV2ZW50QnVpbGRlcik7CisKKyNp
ZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxWZWN0b3I8V2ViQ29yZTo6
UGxhdGZvcm1HZXN0dXJlRXZlbnQ+ID4gZ2VzdHVyZUV2ZW50cyhtX2dlc3R1cmVSZWNvZ25pemVy
LT5wcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKHRvdWNoRXZlbnRCdWlsZGVyLCBkZWZhdWx0
UHJldmVudGVkKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgIGkgPSAwOyBpIDwgZ2VzdHVyZUV2
ZW50cy0+c2l6ZSgpOyBpKyspCisgICAgICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnRzLT5hdChpKSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiBkZWZhdWx0UHJldmVudGVkOwogfQogI2VuZGlmCiAKQEAgLTI2
NzcsNCArMjY5NiwxMiBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRWaXNpYmlsaXR5U3RhdGUoV2Vi
UGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUsCiAjZW5kaWYKIH0KIAorI2lmIEVO
QUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCit2b2lkIFdlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVS
ZWNvZ25pemVyKCkKK3sKKyAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5yZXNldCgpOworfQorI2Vu
ZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCBkNmU1N2M3MjcyNDE2YWI2YWRjODljYzVkMDNjNzVlOGM3YjFh
Y2YzLi40NDhhZWM3YTA4NjI4MzRlMWQ1MjRlYjIxMmRiNDBiNTFiM2UwNGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTY3LDYgKzY3LDkgQEAgY2xhc3Mg
UG9wdXBNZW51Q2xpZW50OwogY2xhc3MgUmFuZ2U7CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNz
IFdpZGdldDsKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM4
NSw2ICszODgsMTAgQEAgcHVibGljOgogICAgIC8vIGEgcGx1Z2luIGNhbiB1cGRhdGUgaXRzIG93
biB6b29tLCBzYXkgYmVjYXVzZSBvZiBpdHMgb3duIFVJLgogICAgIHZvaWQgZnVsbEZyYW1lUGx1
Z2luWm9vbUxldmVsQ2hhbmdlZChkb3VibGUgem9vbUxldmVsKTsKIAorI2lmIEVOQUJMRShHRVNU
VVJFX1JFQ09HTklaRVIpCisgICAgdm9pZCByZXNldEdlc3R1cmVSZWNvZ25pemVyKCk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViVmlldzsgIC8vIFNvIFdlYlZpZXc6
OkNyZWF0ZSBjYW4gY2FsbCBvdXIgY29uc3RydWN0b3IKICAgICBmcmllbmQgY2xhc3MgV1RGOjpS
ZWZDb3VudGVkPFdlYlZpZXdJbXBsPjsKQEAgLTU2NSw2ICs1NzIsMTAgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IG1fdGVtcG9yYXJ5T25zY3JlZW5H
cmFwaGljc0NvbnRleHQzRDsKICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogICAgIE93blB0cjxHZW9sb2NhdGlv
bkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHk7CisKKyNpZiBFTkFCTEUoR0VT
VFVSRV9SRUNPR05JWkVSKQorICAgIE93blB0cjxXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVSZWNv
Z25pemVyPiBtX2dlc3R1cmVSZWNvZ25pemVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102676</attachid>
            <date>2011-08-02 12:21:19 -0700</date>
            <delta_ts>2011-08-02 14:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65044-20110802152138.patch</filename>
            <type>text/plain</type>
            <size>42880</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyMDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZGM1MjlhMjU5MzJlZWRh
ZWI1ZjIwMTA0NTAyMWEwNzAyZjA3NDQzLi4wZjQ4YzFiYmFkZjU4NGI1NTIyZWIwMTY1ZDg1MjEy
ZGEzZjhhZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMDgtMDIgIFJvYmVy
dCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGl2aWRlZCB0aGUgZ2VzdHVyZSByZWNv
Z25pemVyIHVwIHRvIGNvcnJlY3QgYSBsYXllcmluZworICAgICAgICB2aW9sYXRpb24gYnkgbW92
aW5nIGdlc3R1cmUgaW1wbGVtZW50YXRpb24gZnJvbSBpdCB0bworICAgICAgICBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVFdmVudCBzbyB0aGF0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIKKyAg
ICAgICAgY291bGQgc2ltcGx5IGJlIGFuIGVuZ2luZSBmb3IgZ2VuZXJhdGluZyBnZXN0dXJlIGV2
ZW50cyBmcm9tCisgICAgICAgIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIGRvbS9XaGVlbEV2
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OldoZWVsRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQpOgorICAgICAgICAqIGRv
bS9XaGVlbEV2ZW50Lmg6CisgICAgICAgIEFkZGVkIHN5bWJvbGljIGNvbnRzdGFudCBmb3IgdGlj
ayBtdWx0aXBsaWVyLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlZCBj
b25zdHJ1Y3Rpb24gb2YgZ2VzdHVyZSByZWNvZ25pemVyLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICBFeHRlbmRlZCBmb3IgbmV3
IGdlc3R1cmUgZXZlbnRzIGFkZGVkIGluIHRoaXMgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICBSZW1vdmVkIGNhbGwgaW50
byBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAg
ICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnJlc2V0KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIHRvIHJlc2V0IGdlc3R1cmUgcmVjb2duaXpl
ci4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50OjpkZWx0YVgpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OmRlbHRhWSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUdlc3R1cmVFdmVudDo6c2hpZnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OmN0cmxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1H
ZXN0dXJlRXZlbnQ6OmFsdEtleSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVF
dmVudDo6bWV0YUtleSk6CisgICAgICAgIEFkZGVkIGFkZGl0aW9uYWwgZ2VzdHVyZSB0eXBlcyBh
bmQgcGFyYW1ldGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25p
emVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vRnJhbWVsZXNzU2Nyb2xsVmlldy5o
OgorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF0Y2hpbmcgZ2VzdHVyZSBhbmQgdG91
Y2ggZXZlbnRzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5uZXJHZXN0dXJlUmVjb2duaXplcjo6
SW5uZXJHZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVS
ZWNvZ25pemVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25p
emVyOjpjb25zdHJ1Y3RDbGlja0dlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbm5l
ckdlc3R1cmVSZWNvZ25pemVyOjpwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKToKKyAgICAg
ICAgUmVtb3ZlZCBhbGwgZGVwZWRlbmNpZXMgb24gRXZlbnRIYW5kbGVyLiBJbnN0ZWFkLCBjcmVh
dGUgZ2VzdHVyZQorICAgICAgICBldmVudHMgZnJvbSB0b3VjaCBldmVudCBzdHJlYW0uCisgICAg
ICAgIChXZWJDb3JlOjpJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpjb25zdHJ1Y3RTY3JvbGxHZXN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvdWNoRG93bik6CisgICAgICAgIChXZWJDb3JlOjpu
b0dlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6
aXNDbGlja09yU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmluU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6Okdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW06OnByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6
cmVzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHA6CisgICAgICAgIEFkZGVkIHN1cHBvcnQgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cyBhbmQgZ2Vz
dHVyZSBldmVudHMuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlVG91
Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5lcjo6aGFuZGxlR2VzdHVy
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6aGFuZGxlVG91Y2hFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmhhbmRsZUdlc3R1cmVFdmVudCk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgSWdub3Jl
cyB0aGUgbmV3bHkgYWRkZWQgZ2VzdHVyZSBldmVudCB0eXBlcy4KKwogMjAxMS0wOC0wMiAgTmF0
IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUg
cmVzaXplT25zY3JlZW5Db250ZW50IGZyb20gTFJDLiBJdCBjYW4gYmUgZGVyaXZlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaGVlbEV2ZW50LmNwcAppbmRleCAwYTVkYTRjMmI4MDVkOGZlZmViZGJkMDZhMWQ0NDc0
ZmZlOWMzYjA5Li41NzNlYTYzZGYzODZjZWJiYTM2Nzc2Y2E5Njk5ODE0YWI0NDMwNTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdoZWVsRXZlbnQ6Oldo
ZWVsRXZlbnQoY29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywgY29uc3QgRmxvYXRQb2ludCYg
cmF3RGVsdGEsCiAgICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudE5hbWVzKCkubW91c2V3aGVl
bEV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2Ny
ZWVuTG9jYXRpb24sIHBhZ2VMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxL
ZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCi0gICAgLCBtX3doZWVsRGVsdGEoSW50UG9p
bnQoc3RhdGljX2Nhc3Q8aW50Pih3aGVlbFRpY2tzLngoKSAqIDEyMCksIHN0YXRpY19jYXN0PGlu
dD4od2hlZWxUaWNrcy55KCkgKiAxMjApKSkKKyAgICAsIG1fd2hlZWxEZWx0YShJbnRQb2ludChz
dGF0aWNfY2FzdDxpbnQ+KHdoZWVsVGlja3MueCgpICogdGlja011bHRpcGxpZXIpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHdoZWVsVGlja3MueSgpICogdGlja011bHRpcGxpZXIpKSkKICAgICAsIG1fcmF3
RGVsdGEocm91bmRlZEludFBvaW50KHJhd0RlbHRhKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3Jh
bnVsYXJpdHkpCiB7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2hlZWxFdmVudDo6aW5pdFdoZWVs
RXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxBYnN0cmFjCiAg
ICAgbV9tZXRhS2V5ID0gbWV0YUtleTsKICAgICAKICAgICAvLyBOb3JtYWxpemUgdG8gdGhlIFdp
bmRvd3MgMTIwIG11bHRpcGxlCi0gICAgbV93aGVlbERlbHRhID0gSW50UG9pbnQocmF3RGVsdGFY
ICogMTIwLCByYXdEZWx0YVkgKiAxMjApOworICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJh
d0RlbHRhWCAqIHRpY2tNdWx0aXBsaWVyLCByYXdEZWx0YVkgKiB0aWNrTXVsdGlwbGllcik7CiAg
ICAgCiAgICAgbV9yYXdEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCwgcmF3RGVsdGFZKTsKICAg
ICBtX2dyYW51bGFyaXR5ID0gUGl4ZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAppbmRleCA5MTlk
MDY5ZjU0ZjhmMjM3NjJmYzRkMGNjMDVmMmZjYWJiZmI4N2ExLi4wZjg1OTEyY2UxYTc3NzAyY2Ni
Nzg3ZDBlY2QxNzAyNzdkNzEzODhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKQEAgLTMyLDYg
KzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGV4dGVuc2lvbjogbW91c2Ugd2hl
ZWwgZXZlbnQKICAgICBjbGFzcyBXaGVlbEV2ZW50IDogcHVibGljIE1vdXNlUmVsYXRlZEV2ZW50
IHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0geyB0aWNrTXVsdGlwbGllciA9IDEyMCB9Owor
CiAgICAgICAgIGVudW0gR3JhbnVsYXJpdHkgeyBQaXhlbCwgTGluZSwgUGFnZSB9OwogCiAgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOTI5NWM4NjYyMmVjMWFlMmEwMDhkZjAzNGE3YTlhMzQz
MjIxZTU4NS4uODQ2YWZiYjc5ZTE3ZDE1MjFlNTk4NGM0ZDljODdjMGYyZGUwZDU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTAwLDEwICsxMDAsNiBAQAogI2luY2x1
ZGUgIlRvdWNoTGlzdC5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVS
KQotI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIuaCIKLSNlbmRpZgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yMTAsOSAr
MjA2LDYgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCBtX3RvdWNoUHJlc3NlZChmYWxzZSkKICNlbmRpZgot
I2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgLCBtX2dlc3R1cmVSZWNvZ25pemVy
KFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXI6OmNyZWF0ZSgpKQotI2VuZGlmCiB7CiB9CiAKQEAg
LTIyMjcsMTEgKzIyMjAsMzMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgIC8vIHRoYXQg
aWYgYSBmcmFtZSBnZXRzIGEgZ2VzdHVyZSBiZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRoZSBjb3Jy
ZXNwb25kaW5nCiAgICAgLy8gZW5kIGdlc3R1cmUgYXMgd2VsbC4KIAotICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBzd2l0Y2ggKGdlc3R1cmVFdmVudC50eXBlKCkpIHsKKyAgICBjYXNlIFBsYXRm
b3JtR2VzdHVyZUV2ZW50OjpUYXBUeXBlOiB7CisgICAgICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0
aGlzIGNvZGUgdG8gbm90IGhpdCB0ZXN0IG11bHRpcGxlIHRpbWVzIG9uY2UgaGl0IHRlc3Rpbmcg
aGFzIGJlZW4gY29ycmVjdGVkIGFzIHN1Z2dlc3RlZCBhYm92ZS4KKyAgICAgICAgUGxhdGZvcm1N
b3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVF
dmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlj
a0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtl
eSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1
cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91
c2VEb3duKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRp
b24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFByZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwg
Z2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVF
dmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVz
dGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVF
dmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRv
biwgTW91c2VFdmVudFJlbGVhc2VkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5z
aGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCks
IGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAg
ICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7CisgICAgICAgIGhhbmRsZU1vdXNlUHJlc3NF
dmVudChmYWtlTW91c2VEb3duKTsKKyAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFr
ZU1vdXNlVXApOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9y
bUdlc3R1cmVFdmVudDo6U2Nyb2xsVXBkYXRlVHlwZTogeworICAgICAgICBjb25zdCBmbG9hdCB0
aWNrRGl2aXNvciA9IChmbG9hdClXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsKKyAgICAgICAg
Ly8gRklYTUU6IFJlcGxhY2UgdGhpcyBpbnRlcmltIGltcGxlbWVudGF0aW9uIG9uY2UgdGhlIGFi
b3ZlIGZpeG1lIGhhcyBiZWVuIGFkZHJlc3NlZC4KKyAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50
IHN5bnRoZXRpY1doZWVsRXZlbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVu
dC5nbG9iYWxQb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQuZGVsdGFYKCksIGdlc3R1cmVFdmVudC5k
ZWx0YVkoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWCgpIC8gdGlja0Rpdmlzb3IsIGdlc3R1cmVFdmVu
dC5kZWx0YVkoKSAvIHRpY2tEaXZpc29yLCBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwgLyogaXNB
Y2NlcHRlZCAqLyBmYWxzZSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1cmVFdmVudC5j
dHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1ldGFLZXkoKSk7
CisgICAgICAgIGhhbmRsZVdoZWVsRXZlbnQoc3ludGhldGljV2hlZWxFdmVudCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIFBsYXRmb3JtR2VzdHVyZUV2ZW50OjpTY3Jv
bGxCZWdpblR5cGU6CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlw
ZToKKyAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS0+dmlldygpOworICAgICAgICBp
ZiAoIXZpZXcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB2aWV3LT5oYW5kbGVH
ZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgdmlldy0+aGFuZGxlR2VzdHVyZUV2
ZW50KGdlc3R1cmVFdmVudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtMzI4NiwyMSArMzMwMSw5IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAg
ICAgICAgIH0KICAgICB9CiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQotICAgIGlm
IChtX2dlc3R1cmVSZWNvZ25pemVyKQotICAgICAgICBtX2dlc3R1cmVSZWNvZ25pemVyLT5wcm9j
ZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoZXZlbnQsIHRoaXMsIGRlZmF1bHRQcmV2ZW50ZWQpOwot
I2VuZGlmCi0KICAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KIAotI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCi12b2lkIEV2ZW50SGFuZGxlcjo6cmVzZXRHZXN0dXJlUmVjb2du
aXplcigpCi17Ci0gICAgaWYgKG1fZ2VzdHVyZVJlY29nbml6ZXIpCi0gICAgICAgIG1fZ2VzdHVy
ZVJlY29nbml6ZXItPnJlc2V0KCk7Ci19Ci0jZW5kaWYKIAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCmluZGV4IDhhYjc0MzdlNmEyMTE2NTgxNjJiMDQ5YWM4OTE3NmY4MDYy
YTk4MTQuLmQxNzhiNmMxZTY2YTMxOWRjNTg0NDQ2N2NhYjJkNjdhZjg0M2Y0YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtODAsMTAgKzgwLDYgQEAgY2xhc3MgV2lkZ2V0Owog
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShHRVNUVVJF
X1JFQ09HTklaRVIpCi1jbGFzcyBQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOwotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogZXh0ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3Rl
cmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEltYWdlRHJhZ0h5c3RlcmVzaXM7CkBAIC0xNjYsMTAg
KzE2Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0
Zm9ybUdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05J
WkVSKQotICAgIHZvaWQgcmVzZXRHZXN0dXJlUmVjb2duaXplcigpOwotI2VuZGlmCi0KICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnRGb3JL
ZXkoKTsKQEAgLTQyOSw5ICs0MjEsNiBAQCBwcml2YXRlOgogICAgIFRvdWNoVGFyZ2V0TWFwIG1f
b3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKICAgICBib29sIG1fdG91Y2hQcmVzc2VkOwog
I2VuZGlmCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBPd25QdHI8UGxhdGZv
cm1HZXN0dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKLSNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDEz
Y2NkNTRkNzgzNjgwOTdlZmZhNWNkN2NiNDBhNTc4MWJmNGZmOWMuLmJjMGYwZDA0YjI0OTk3ZmRm
MDZiZWU4MWQzMzMzY2U3YzE5ZGJlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTIzMiwxMCArMjMyLDYgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc2V0KCkKICAgICBtX2lzVmlzdWFs
bHlOb25FbXB0eSA9IGZhbHNlOwogICAgIG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2Fs
bGJhY2tQZW5kaW5nID0gdHJ1ZTsKICAgICBtX21haW50YWluU2Nyb2xsUG9zaXRpb25BbmNob3Ig
PSAwOwotCi0jaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBmcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+cmVzZXRHZXN0dXJlUmVjb2duaXplcigpOwotI2VuZGlmCiB9CiAKIGJvb2wg
RnJhbWVWaWV3Ojppc0ZyYW1lVmlldygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtR2VzdHVyZUV2ZW50LmgKaW5kZXggOTkxNTdlMTA4ZWFlYjA4MGVjM2JlNTMy
NjUwODE5YzVhYTNhMzI5YS4uMThiN2QxYWEyZDFlZGY5YTgzZGVmMmYyNjZmMjUwOTAzNzk2ODQ3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVFdmVudC5o
CkBAIC0zNyw2ICszNyw4IEBAIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewogICAgICAgICBTY3Jv
bGxCZWdpblR5cGUsCiAgICAgICAgIFNjcm9sbEVuZFR5cGUsCisgICAgICAgIFNjcm9sbFVwZGF0
ZVR5cGUsCisgICAgICAgIFRhcFR5cGUKICAgICB9OwogCiAgICAgUGxhdGZvcm1HZXN0dXJlRXZl
bnQoKQpAQCAtNDUsNiArNDcsMjAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBQbGF0
Zm9ybUdlc3R1cmVFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBkb3VibGUgdGltZXN0YW1wLCBjb25z
dCBmbG9hdCBkZWx0YVgsIGNvbnN0IGZsb2F0IGRlbHRhWSwgYm9vbCBzaGlmdEtleSwgYm9vbCBj
dHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBtZXRhS2V5KQorICAgICAgICA6IG1fdHlwZSh0eXBl
KQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCisg
ICAgICAgICwgbV9kZWx0YVgoZGVsdGFYKQorICAgICAgICAsIG1fZGVsdGFZKGRlbHRhWSkKKyAg
ICAgICAgLCBtX3NoaWZ0S2V5KHNoaWZ0S2V5KQorICAgICAgICAsIG1fY3RybEtleShjdHJsS2V5
KQorICAgICAgICAsIG1fYWx0S2V5KGFsdEtleSkKKyAgICAgICAgLCBtX21ldGFLZXkobWV0YUtl
eSkKKyAgICB7CisgICAgfQorCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAKICAgICBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uOyB9IC8vIFBsYXRmb3JtV2luZG93IGNvb3JkaW5hdGVzLgpAQCAtNTIsMTEgKzY4LDI0
IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQogCisgICAgZmxvYXQgZGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YVg7
IH0KKyAgICBmbG9hdCBkZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhWTsgfQorICAgIGJv
b2wgc2hpZnRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NoaWZ0S2V5OyB9CisgICAgYm9vbCBjdHJs
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdHJsS2V5OyB9CisgICAgYm9vbCBhbHRLZXkoKSBjb25z
dCB7IHJldHVybiBtX2FsdEtleTsgfQorICAgIGJvb2wgbWV0YUtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YUtleTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgSW50UG9p
bnQgbV9wb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIGRvdWJs
ZSBtX3RpbWVzdGFtcDsKKyAgICBmbG9hdCBtX2RlbHRhWDsKKyAgICBmbG9hdCBtX2RlbHRhWTsK
KyAgICBib29sIG1fc2hpZnRLZXk7CisgICAgYm9vbCBtX2N0cmxLZXk7CisgICAgYm9vbCBtX2Fs
dEtleTsKKyAgICBib29sIG1fbWV0YUtleTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29n
bml6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtR2VzdHVyZVJlY29nbml6
ZXIuaAppbmRleCAyZjgwNWJkMjYyNzFkYzE0ZDM5MDQ1M2UzYzkwNmNlMGExNDNiNWM4Li4wYjg2
YTkyNzZmYjZiZGVmOWI3YzM3ODgzYzUwOTNmNzdlMDRjYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplci5oCkBAIC0zMSwxOCAr
MzEsMTUgQEAKICNpZm5kZWYgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcl9oCiAjZGVmaW5lIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXJfaAogCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZl
bnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudEhhbmRsZXI7Ci1jbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwogCi0v
LyBBIEdlc3R1cmVSZWNvZ25pemVyIGRldGVjdHMgZ2VzdHVyZXMgb2NjdXJyaW5nIGluIHRoZSB0
b3VjaCBldmVudC4KLS8vIEluIHJlc3BvbnNlIHRvIGEgZ2l2ZW4gdG91Y2ggZXZlbnQsIHRoZSBH
ZXN0dXJlUmVjb2duaXplciwgdXBkYXRlcwotLy8gaXRzIGludGVybmFsIHN0YXRlIGFuZCBvcHRp
b25hbGx5IGRpc3BhdGNoZXMgc3ludGhldGljIGV2ZW50cyB0byB0aGUKLS8vIGludm9raW5nIEV2
ZW50SGFuZGxlciBpbnN0YW5jZS4KIGNsYXNzIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIgewog
cHJvdGVjdGVkOgogICAgIFBsYXRmb3JtR2VzdHVyZVJlY29nbml6ZXIoKTsKQEAgLTUxLDEyICs0
OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplcj4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+UGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cigpOwogCi0gICAgLy8gSW52b2tlZCBmb3IgZWFjaCB0b3VjaCBldmVudCB0aGF0IGNvdWxkIGNv
bnRyaWJ1dGUgdG8gdGhlIGN1cnJlbnQgZ2VzdHVyZS4KLSAgICAvLyBUYWtlcyBhIFBsYXRmb3Jt
VG91Y2hFdmVudCBhbmQgdGhlIEV2ZW50SGFuZGxlciB0aGF0IG9yaWdpbmF0ZWQgaXQgYW5kIHdo
aWNoIHdpbGwgYWxzbwotICAgIC8vIGJlIHRoZSB0YXJnZXQgb2YgYW55IGdlbmVyYXRlZCBzeW50
aGV0aWMgZXZlbnQuIEZpbmFsbHksIHxoYW5kbGVkfAotICAgIC8vIHNwZWNpZmllcyBpZiB0aGUg
fGV2ZW50fCB3YXMgYWN0dWFsbHkgaGFuZGxlZCBieSB8c291cmNlfCAoYnkgdGhlIEphdmFTY3Jp
cHQpCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBldmVudCByZXN1bHRlZCBpbiBmaXJpbmcg
YSBzeW50aGV0aWMgZXZlbnQuCi0gICAgdmlydHVhbCBib29sIHByb2Nlc3NUb3VjaEV2ZW50Rm9y
R2VzdHVyZShjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmLCBFdmVudEhhbmRsZXIqLCBib29sIGhh
bmRsZWQpID0gMDsKKyAgICB0eXBlZGVmIFBhc3NPd25QdHI8VmVjdG9yPFBsYXRmb3JtR2VzdHVy
ZUV2ZW50PiA+IFBhc3NHZXN0dXJlczsKKworICAgIC8vIEludm9rZWQgZm9yIGVhY2ggdG91Y2gg
ZXZlbnQgYW5kIHJldHVybnMgMCBvciBtb3JlIHJlc3VsdGluZyBnZXN0dXJlcy4KKyAgICB2aXJ0
dWFsIFBhc3NHZXN0dXJlcyBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRm
b3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkgPSAwOwogCiAgICAgLy8gQ2xl
YXJzIHRoZSBHZXN0dXJlUmVjb2duaXplciB0byBpdHMgaW5pdGlhbCBzdGF0ZS4KICAgICB2aXJ0
dWFsIHZvaWQgcmVzZXQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9GcmFtZWxlc3NTY3JvbGxWaWV3LmgKaW5kZXggZDU0ZjU0MzJjYzc0MTgwMjEw
NWI4NjdkYjIzNTAwYjdkMDg0ZThlMS4uYzZjYzJiNWYzNGI0MmU2NGMyNTU4NWQ5Zjc4Yzk1Y2I5
YTYxZTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vRnJh
bWVsZXNzU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0ZyYW1lbGVzc1Njcm9sbFZpZXcuaApAQCAtMzYsOCArMzYsMTQgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQ7CisjaWYgRU5BQkxF
KEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBjbGFzcyBQbGF0Zm9ybUdlc3R1cmVFdmVudDsKKyNl
bmRpZgogICAgIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKICAgICBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjbGFzcyBQbGF0Zm9y
bVRvdWNoRXZlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiAKICAg
ICAvLyBBIEZyYW1lbGVzc1Njcm9sbFZpZXcgaXMgYSBTY3JvbGxWaWV3IHRoYXQgY2FuIGJlIHVz
ZWQgdG8gcmVuZGVyIGN1c3RvbQpAQCAtNjAsNiArNjYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKSA9IDA7CisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZVRvdWNoRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikgPSAwOworI2VuZGlmCisjaWYgRU5BQkxFKEdF
U1RVUkVfUkVDT0dOSVpFUikKKyAgICAgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVu
dChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpID0gMDsKKyNlbmRpZgogCiAgICAgICAgIC8v
IFNjcm9sbGFibGVBcmVhIHB1YmxpYyBtZXRob2RzOgogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vR2VzdHVyZVJlY29nbml6ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVj
b2duaXplckNocm9taXVtLmNwcAppbmRleCA0MGZlODlmNGFhZjRjMjlkNmExNDJkNGVlYzkwMTMw
Y2IxZDMyY2NlLi45MDU4MjAxZDlhYTdhODllM2QwZTA5YmZhYTRmMzQ1YTdkMTI3NDQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXpl
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9HZXN0
dXJlUmVjb2duaXplckNocm9taXVtLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oIgogCi0jaW5j
bHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIGJvb2wgY2xpY2soSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBsYXRmb3Jt
VG91Y2hQb2ludCYpOwotc3RhdGljIGJvb2wgaXNDbGlja09yU2Nyb2xsKElubmVyR2VzdHVyZVJl
Y29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsKLXN0YXRpYyBib29sIGluU2Ny
b2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmKTsK
LXN0YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxh
dGZvcm1Ub3VjaFBvaW50Jik7Ci1zdGF0aWMgYm9vbCB0b3VjaERvd24oSW5uZXJHZXN0dXJlUmVj
b2duaXplciosIGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworLy8gRklYTUU6IENvbnZlcnQg
dG8gbWV0aG9kcy4KK3N0YXRpYyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBj
b25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJl
cyk7CitzdGF0aWMgYm9vbCBpc0NsaWNrT3JTY3JvbGwoSW5uZXJHZXN0dXJlUmVjb2duaXplcios
IGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1
cmVzKTsKK3N0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6ZXIqLCBjb25z
dCBQbGF0Zm9ybVRvdWNoUG9pbnQmLCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyk7
CitzdGF0aWMgYm9vbCBub0dlc3R1cmUoSW5uZXJHZXN0dXJlUmVjb2duaXplciosIGNvbnN0IFBs
YXRmb3JtVG91Y2hQb2ludCYsIElubmVyR2VzdHVyZVJlY29nbml6ZXI6Okdlc3R1cmVzKTsKK3N0
YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMpOwogCiAvLyBG
SVhNRTogTWFrZSB0aGVzZSBjb25maWd1cmFibGUgcHJvZ3JhbW1hdGljYWxseS4KIHN0YXRpYyBj
b25zdCBkb3VibGUgbWF4aW11bVRvdWNoRG93bkR1cmF0aW9uSW5TZWNvbmRzRm9yQ2xpY2sgPSAw
Ljg7CkBAIC01Miw3ICs1Miw2IEBAIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OklubmVyR2VzdHVy
ZVJlY29nbml6ZXIoKQogICAgIDogbV9maXJzdFRvdWNoVGltZSgwLjApCiAgICAgLCBtX3N0YXRl
KElubmVyR2VzdHVyZVJlY29nbml6ZXI6Ok5vR2VzdHVyZSkKICAgICAsIG1fbGFzdFRvdWNoVGlt
ZSgwLjApCi0gICAgLCBtX2V2ZW50SGFuZGxlcigwKQogICAgICwgbV9jdHJsS2V5KGZhbHNlKQog
ICAgICwgbV9hbHRLZXkoZmFsc2UpCiAgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQpAQCAtODAsNyAr
NzksNiBAQCB2b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnJlc2V0KCkKICAgICBtX2ZpcnN0
VG91Y2hUaW1lID0gMC4wOwogICAgIG1fc3RhdGUgPSBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpO
b0dlc3R1cmU7CiAgICAgbV9sYXN0VG91Y2hUaW1lID0gMC4wOwotICAgIG1fZXZlbnRIYW5kbGVy
ID0gMDsKIH0KIAogSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6fklubmVyR2VzdHVyZVJlY29nbml6
ZXIoKQpAQCAtMTA0LDQ0ICsxMDIsMzYgQEAgYm9vbCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpp
c0luc2lkZU1hbmhhdHRhblNxdWFyZShjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHAKICAgICBy
ZXR1cm4gbWFuaGF0dGFuRGlzdGFuY2UgPCBtYXhpbXVtVG91Y2hNb3ZlSW5QaXhlbHNGb3JDbGlj
azsKIH0KIAotdm9pZCBJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpkaXNwYXRjaFN5bnRoZXRpY0Ns
aWNrKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCit2b2lkIElubmVyR2VzdHVyZVJl
Y29nbml6ZXI6OmFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hQb2lu
dCYgdG91Y2hQb2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMp
CiB7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUocG9pbnQucG9zKCksIHBv
aW50LnNjcmVlblBvcygpLCBOb0J1dHRvbiwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50
ICovIDEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSwgbV9sYXN0
VG91Y2hUaW1lKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlRG93bihwb2ludC5w
b3MoKSwgcG9pbnQuc2NyZWVuUG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAv
KiBjbGlja0NvdW50ICovIDEsIG1fc2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0
YUtleSwgbV9sYXN0VG91Y2hUaW1lKTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
VXAocG9pbnQucG9zKCksIHBvaW50LnNjcmVlblBvcygpLCBMZWZ0QnV0dG9uLCBNb3VzZUV2ZW50
UmVsZWFzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2Fs
dEtleSwgbV9tZXRhS2V5LCBtX2xhc3RUb3VjaFRpbWUpOwotCi0gICAgbV9ldmVudEhhbmRsZXIt
Pm1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZSk7Ci0gICAgbV9ldmVudEhhbmRsZXItPmhhbmRsZU1v
dXNlUHJlc3NFdmVudChmYWtlTW91c2VEb3duKTsKLSAgICBtX2V2ZW50SGFuZGxlci0+aGFuZGxl
TW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRhcFR5cGUsIHRvdWNoUG9p
bnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgMC4wZiwg
MC4wZiwgbV9zaGlmdEtleSwgbV9jdHJsS2V5LCBtX2FsdEtleSwgbV9tZXRhS2V5KSk7CiB9CiAK
LWJvb2wgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJl
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQsIEV2ZW50SGFuZGxlciogZXZlbnRIYW5k
bGVyLCBib29sIGhhbmRsZWQpCitQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyOjpQYXNzR2VzdHVy
ZXMgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50LCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCiB7
Ci0gICAgbV9ldmVudEhhbmRsZXIgPSBldmVudEhhbmRsZXI7CiAgICAgbV9jdHJsS2V5ID0gZXZl
bnQuY3RybEtleSgpOwogICAgIG1fYWx0S2V5ID0gZXZlbnQuYWx0S2V5KCk7CiAgICAgbV9zaGlm
dEtleSA9IGV2ZW50LnNoaWZ0S2V5KCk7CiAgICAgbV9tZXRhS2V5ID0gZXZlbnQubWV0YUtleSgp
OwogCisgICAgT3duUHRyPFZlY3RvcjxQbGF0Zm9ybUdlc3R1cmVFdmVudD4gPiBnZXN0dXJlcyA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KCkpOwogICAgIGNvbnN0
IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiBwb2ludHMgPSBldmVudC50b3VjaFBvaW50cygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwID0gcG9pbnRzW2ldOwogICAgICAgICB1
cGRhdGVWYWx1ZXMoZXZlbnQudGltZXN0YW1wKCksIHApOwogCi0gICAgICAgIGlmIChHZXN0dXJl
VHJhbnNpdGlvbkZ1bmN0aW9uIGVmID0gbV9lZGdlRnVuY3Rpb25zLmdldChzaWduYXR1cmUobV9z
dGF0ZSwgcC5pZCgpLCBwLnN0YXRlKCksIGhhbmRsZWQpKSkKLSAgICAgICAgICAgIGhhbmRsZWQg
PSAoKmVmKSh0aGlzLCBwKTsKKyAgICAgICAgaWYgKEdlc3R1cmVUcmFuc2l0aW9uRnVuY3Rpb24g
ZWYgPSBtX2VkZ2VGdW5jdGlvbnMuZ2V0KHNpZ25hdHVyZShtX3N0YXRlLCBwLmlkKCksIHAuc3Rh
dGUoKSwgZGVmYXVsdFByZXZlbnRlZCkpKQorICAgICAgICAgICAgKCplZikodGhpcywgcCwgZ2Vz
dHVyZXMuZ2V0KCkpOwogICAgIH0KLSAgICByZXR1cm4gaGFuZGxlZDsKKyAgICByZXR1cm4gZ2Vz
dHVyZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnNjcm9s
bFZpYVRvdWNoTW90aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYgdG91Y2hQb2ludCkKK3Zv
aWQgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6YXBwZW5kU2Nyb2xsR2VzdHVyZShjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmIHRvdWNoUG9pbnQsIEdlc3R1cmVzIGdlc3R1cmVzKQogewogICAgIGZs
b2F0IGRlbHRhWCh0b3VjaFBvaW50LnBvcygpLngoKSAtIG1fZmlyc3RUb3VjaFBvc2l0aW9uLngo
KSk7CiAgICAgZmxvYXQgZGVsdGFZKHRvdWNoUG9pbnQucG9zKCkueSgpIC0gbV9maXJzdFRvdWNo
UG9zaXRpb24ueSgpKTsKIAotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRvIGdlc3R1cmUgZXZlbnRz
IHdoZW4gdGhleSBoYW5kbGUgc3ViZnJhbWVzLgotICAgIFBsYXRmb3JtV2hlZWxFdmVudCBzeW50
aGV0aWNXaGVlbEV2ZW50KHRvdWNoUG9pbnQucG9zKCksIHRvdWNoUG9pbnQuc2NyZWVuUG9zKCks
IGRlbHRhWCwgZGVsdGFZLCBkZWx0YVggLyBzdGF0aWNfY2FzdDxmbG9hdD4oMTIwKSwgZGVsdGFZ
IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEyMCksIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50LCAvKiBp
c0FjY2VwdGVkICovIGZhbHNlLCBtX3NoaWZ0S2V5LCBtX2N0cmxLZXksIG1fYWx0S2V5LCBtX21l
dGFLZXkpOwotICAgIG1fZXZlbnRIYW5kbGVyLT5oYW5kbGVXaGVlbEV2ZW50KHN5bnRoZXRpY1do
ZWVsRXZlbnQpOworICAgIGdlc3R1cmVzLT5hcHBlbmQoUGxhdGZvcm1HZXN0dXJlRXZlbnQoUGxh
dGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbFVwZGF0ZVR5cGUsIHRvdWNoUG9pbnQucG9zKCksIHRv
dWNoUG9pbnQuc2NyZWVuUG9zKCksIG1fbGFzdFRvdWNoVGltZSwgZGVsdGFYLCBkZWx0YVksIG1f
c2hpZnRLZXksIG1fY3RybEtleSwgbV9hbHRLZXksIG1fbWV0YUtleSkpOwogICAgIG1fZmlyc3RU
b3VjaFBvc2l0aW9uID0gdG91Y2hQb2ludC5wb3MoKTsKIH0KIApAQCAtMTY2LDI5ICsxNTYsMjkg
QEAgdW5zaWduZWQgaW50IElubmVyR2VzdHVyZVJlY29nbml6ZXI6OnNpZ25hdHVyZShTdGF0ZSBn
ZXN0dXJlU3RhdGUsIHVuc2lnbmVkIGlkLAogICAgIHJldHVybiAxICsgKCh0b3VjaFR5cGUgJiAw
eDcpIDw8IDEgfCAoaGFuZGxlZCA/IDEgPDwgNCA6IDApIHwgKChpZCAmIDB4ZmZmKSA8PCA1ICkg
fCAoZ2VzdHVyZVN0YXRlIDw8IDE3KSk7CiB9CiAKLXN0YXRpYyBib29sIHRvdWNoRG93bihJbm5l
ckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JikKK3N0YXRpYyBib29sIHRvdWNoRG93bihJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBn
ZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJl
UmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVyZVJlY29nbml6ZXIt
PnNldFN0YXRlKElubmVyR2VzdHVyZVJlY29nbml6ZXI6OlBlbmRpbmdTeW50aGV0aWNDbGljayk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JikKK3N0
YXRpYyBib29sIG5vR2VzdHVyZShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2du
aXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6
R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAgZ2VzdHVyZVJlY29nbml6ZXItPnJlc2V0KCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBjbGljayhJbm5lckdlc3R1cmVSZWNv
Z25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBwb2lu
dCkKK3N0YXRpYyBib29sIGNsaWNrKElubmVyR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNv
Z25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJbm5lckdlc3R1cmVSZWNv
Z25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIt
PmlzSW5DbGlja1RpbWVXaW5kb3coKSAmJiBnZXN0dXJlUmVjb2duaXplci0+aXNJbnNpZGVNYW5o
YXR0YW5TcXVhcmUocG9pbnQpKSB7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0
ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpOb0dlc3R1cmUpOwotICAgICAgICBnZXN0dXJlUmVj
b2duaXplci0+ZGlzcGF0Y2hTeW50aGV0aWNDbGljayhwb2ludCk7CisgICAgICAgIGdlc3R1cmVS
ZWNvZ25pemVyLT5hcHBlbmRDbGlja0dlc3R1cmVFdmVudChwb2ludCwgZ2VzdHVyZXMpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgcmV0dXJuIG5vR2VzdHVyZShnZXN0dXJlUmVj
b2duaXplciwgcG9pbnQpOworICAgIHJldHVybiBub0dlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIs
IHBvaW50LCBnZXN0dXJlcyk7CiB9CiAKLXN0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5l
ckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29sIGlzQ2xpY2tPclNjcm9sbChJbm5lckdlc3R1cmVS
ZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50JiBw
b2ludCwgSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6R2VzdHVyZXMgZ2VzdHVyZXMpCiB7CiAgICAg
aWYgKGdlc3R1cmVSZWNvZ25pemVyLT5pc0luQ2xpY2tUaW1lV2luZG93KCkgJiYgZ2VzdHVyZVJl
Y29nbml6ZXItPmlzSW5zaWRlTWFuaGF0dGFuU3F1YXJlKHBvaW50KSkgewogICAgICAgICBnZXN0
dXJlUmVjb2duaXplci0+c2V0U3RhdGUoSW5uZXJHZXN0dXJlUmVjb2duaXplcjo6UGVuZGluZ1N5
bnRoZXRpY0NsaWNrKTsKQEAgLTE5NiwxNiArMTg2LDE2IEBAIHN0YXRpYyBib29sIGlzQ2xpY2tP
clNjcm9sbChJbm5lckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3Qg
UGxhCiAgICAgfQogCiAgICAgaWYgKHBvaW50LnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaE1vdmVkICYmICFnZXN0dXJlUmVjb2duaXplci0+aXNJbnNpZGVNYW5oYXR0YW5TcXVh
cmUocG9pbnQpKSB7Ci0gICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zY3JvbGxWaWFUb3VjaE1v
dGlvbihwb2ludCk7CisgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5hcHBlbmRTY3JvbGxHZXN0
dXJlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgICAgIGdlc3R1cmVSZWNvZ25pemVyLT5zZXRTdGF0
ZShJbm5lckdlc3R1cmVSZWNvZ25pemVyOjpTY3JvbGwpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBpblNjcm9sbChJbm5l
ckdlc3R1cmVSZWNvZ25pemVyKiBnZXN0dXJlUmVjb2duaXplciwgY29uc3QgUGxhdGZvcm1Ub3Vj
aFBvaW50JiBwb2ludCkKK3N0YXRpYyBib29sIGluU2Nyb2xsKElubmVyR2VzdHVyZVJlY29nbml6
ZXIqIGdlc3R1cmVSZWNvZ25pemVyLCBjb25zdCBQbGF0Zm9ybVRvdWNoUG9pbnQmIHBvaW50LCBJ
bm5lckdlc3R1cmVSZWNvZ25pemVyOjpHZXN0dXJlcyBnZXN0dXJlcykKIHsKLSAgICBnZXN0dXJl
UmVjb2duaXplci0+c2Nyb2xsVmlhVG91Y2hNb3Rpb24ocG9pbnQpOworICAgIGdlc3R1cmVSZWNv
Z25pemVyLT5hcHBlbmRTY3JvbGxHZXN0dXJlKHBvaW50LCBnZXN0dXJlcyk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTIzMiw0ICsyMjIsMTQgQEAgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1
bTo6fkdlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0oKQogewogfQogCitQbGF0Zm9ybUdlc3R1cmVS
ZWNvZ25pemVyOjpQYXNzR2VzdHVyZXMgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6cHJvY2Vz
c1RvdWNoRXZlbnRGb3JHZXN0dXJlcyhjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIHRvdWNoRXZl
bnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3sKKyAgICByZXR1cm4gbV9pbm5lckdlc3R1cmVS
ZWNvZ25pemVyLnByb2Nlc3NUb3VjaEV2ZW50Rm9yR2VzdHVyZXModG91Y2hFdmVudCwgZGVmYXVs
dFByZXZlbnRlZCk7Cit9CisKK3ZvaWQgR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bTo6cmVzZXQo
KQoreworICAgIG1faW5uZXJHZXN0dXJlUmVjb2duaXplci5yZXNldCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9HZXN0dXJlUmVjb2duaXplckNocm9taXVtLmgKaW5kZXggYTFjYWNhOWRkZWY0
YjliOTY2YjExNjVmNWY4Zjk1NmY2YjI3YWU0Yy4uYmVhYzQ2NTNlMzk3NGU0MTQ3ZmE5N2ViMjAz
NWQxMjkxZmQzN2M1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vR2VzdHVyZVJlY29nbml6ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0dlc3R1cmVSZWNvZ25pemVyQ2hyb21pdW0uaApAQCAtMzksNiArMzksOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUV2ZW50Owor
CiBjbGFzcyBJbm5lckdlc3R1cmVSZWNvZ25pemVyIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRl
IHsKQEAgLTQ3LDE2ICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjcm9sbAogICAgIH07CiAK
LSAgICB0eXBlZGVmIGJvb2wgKCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShJbm5lckdlc3R1
cmVSZWNvZ25pemVyKiwgY29uc3QgUGxhdGZvcm1Ub3VjaFBvaW50Jik7CisgICAgdHlwZWRlZiBW
ZWN0b3I8UGxhdGZvcm1HZXN0dXJlRXZlbnQ+KiBHZXN0dXJlczsKKyAgICB0eXBlZGVmIGJvb2wg
KCpHZXN0dXJlVHJhbnNpdGlvbkZ1bmN0aW9uKShJbm5lckdlc3R1cmVSZWNvZ25pemVyKiwgY29u
c3QgUGxhdGZvcm1Ub3VjaFBvaW50JiwgR2VzdHVyZXMpOwogCiAgICAgfklubmVyR2VzdHVyZVJl
Y29nbml6ZXIoKTsKIAotICAgIHZvaWQgZGlzcGF0Y2hTeW50aGV0aWNDbGljayhjb25zdCBQbGF0
Zm9ybVRvdWNoUG9pbnQmKTsKKyAgICB2b2lkIGFwcGVuZENsaWNrR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1cmVzKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KTsKICAgICBib29sIGlzSW5DbGlja1RpbWVXaW5kb3coKTsKICAgICBib29sIGlzSW5zaWRlTWFu
aGF0dGFuU3F1YXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOwotICAgIHZpcnR1YWwgYm9v
bCBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmUoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jiwg
RXZlbnRIYW5kbGVyKiwgYm9vbCBoYW5kbGVkKTsKLSAgICB2b2lkIHNjcm9sbFZpYVRvdWNoTW90
aW9uKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYpOworICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjo6UGFzc0dlc3R1cmVzICBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVz
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CisgICAg
dm9pZCBhcHBlbmRTY3JvbGxHZXN0dXJlKGNvbnN0IFBsYXRmb3JtVG91Y2hQb2ludCYsIEdlc3R1
cmVzKTsKICAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHZhbHVlKSB7IG1fc3RhdGUgPSB2YWx1ZTsg
fQogICAgIFN0YXRlIHN0YXRlKCkgeyByZXR1cm4gbV9zdGF0ZTsgfQogcHJvdGVjdGVkOgpAQCAt
NzIsNyArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgZG91YmxlIG1fZmlyc3RUb3VjaFRpbWU7CiAg
ICAgU3RhdGUgbV9zdGF0ZTsKICAgICBkb3VibGUgbV9sYXN0VG91Y2hUaW1lOwotICAgIEV2ZW50
SGFuZGxlciogbV9ldmVudEhhbmRsZXI7CiAKICAgICBib29sIG1fY3RybEtleTsKICAgICBib29s
IG1fYWx0S2V5OwpAQCAtODYsMTUgKzg4LDkgQEAgcHVibGljOgogICAgIEdlc3R1cmVSZWNvZ25p
emVyQ2hyb21pdW0oKTsKICAgICB2aXJ0dWFsIH5HZXN0dXJlUmVjb2duaXplckNocm9taXVtKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKQotICAgIHsKLSAgICAgICAgbV9pbm5lckdlc3R1
cmVSZWNvZ25pemVyLnJlc2V0KCk7Ci0gICAgfTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsK
ICAKLSAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKGNvbnN0IFBs
YXRmb3JtVG91Y2hFdmVudCYgdG91Y2hFdmVudCwgRXZlbnRIYW5kbGVyKiBldmVudEhhbmRsZXIs
IGJvb2wgaGFuZGxlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lubmVyR2VzdHVyZVJlY29n
bml6ZXIucHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlKHRvdWNoRXZlbnQsIGV2ZW50SGFuZGxl
ciwgaGFuZGxlZCk7Ci0gICAgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1HZXN0dXJlUmVjb2duaXpl
cjo6UGFzc0dlc3R1cmVzICBwcm9jZXNzVG91Y2hFdmVudEZvckdlc3R1cmVzKGNvbnN0IFBsYXRm
b3JtVG91Y2hFdmVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CiBwcml2YXRlOgogICAgIElu
bmVyR2VzdHVyZVJlY29nbml6ZXIgbV9pbm5lckdlc3R1cmVSZWNvZ25pemVyOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcAppbmRleCA4ODMzMTE4MzRkNDUwMDdiMDFjZGU1NmRmNTQzOTkxZjFkYzlmNmRhLi40Mzhh
MjlhNTg2NTk2ZTNkOWIyM2Q4ZmQ2MjM3NmZhYjNkYjE0MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCkBAIC01
OCw2ICs1OCwxNCBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
CisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlRXZlbnQuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVz
cGFjZSBVbmljb2RlOwpAQCAtMTA1LDYgKzExMywxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisjaWYg
RU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlR2VzdHVy
ZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAgIC8vIFNj
cm9sbFZpZXcKICAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdDsKQEAg
LTUxMSw2ICs1MjUsNDAgQEAgYm9vbCBQb3B1cENvbnRhaW5lcjo6aGFuZGxlV2hlZWxFdmVudChj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogICAgICAgICBjb25zdHJ1Y3RSZWxhdGl2
ZVdoZWVsRXZlbnQoZXZlbnQsIHRoaXMsIG1fbGlzdEJveC5nZXQoKSkpOwogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZVRvdWNoRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisvLyBGSVhNRTogUmVmYWN0b3Ig
dGhpcyBjb2RlIHRvIHNoYXJlIGZ1bmN0aW9uYWxpdHkgd2l0aCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUdlc3R1cmVFdmVudC4KK2Jvb2wgUG9wdXBDb250YWluZXI6OmhhbmRsZUdlc3R1cmVFdmVudChj
b25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQoreworICAgIHN3aXRjaCAo
Z2VzdHVyZUV2ZW50LnR5cGUoKSkgeworICAgIGNhc2UgUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlRh
cFR5cGU6IHsKKyAgICAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1vdmUoZ2VzdHVy
ZUV2ZW50LnBvc2l0aW9uKCksIGdlc3R1cmVFdmVudC5nbG9iYWxQb3NpdGlvbigpLCBOb0J1dHRv
biwgTW91c2VFdmVudE1vdmVkLCAvKiBjbGlja0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlm
dEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdl
c3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAg
IFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VEb3duKGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
LCBnZXN0dXJlRXZlbnQuZ2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFBy
ZXNzZWQsIC8qIGNsaWNrQ291bnQgKi8gMSwgZ2VzdHVyZUV2ZW50LnNoaWZ0S2V5KCksIGdlc3R1
cmVFdmVudC5jdHJsS2V5KCksIGdlc3R1cmVFdmVudC5hbHRLZXkoKSwgZ2VzdHVyZUV2ZW50Lm1l
dGFLZXkoKSwgZ2VzdHVyZUV2ZW50LnRpbWVzdGFtcCgpKTsKKyAgICAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGZha2VNb3VzZVVwKGdlc3R1cmVFdmVudC5wb3NpdGlvbigpLCBnZXN0dXJlRXZlbnQu
Z2xvYmFsUG9zaXRpb24oKSwgTGVmdEJ1dHRvbiwgTW91c2VFdmVudFJlbGVhc2VkLCAvKiBjbGlj
a0NvdW50ICovIDEsIGdlc3R1cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtl
eSgpLCBnZXN0dXJlRXZlbnQuYWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCksIGdlc3R1
cmVFdmVudC50aW1lc3RhbXAoKSk7CisgICAgICAgIC8vIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGZh
a2VNb3VzZU1vdmUpOworICAgICAgICBoYW5kbGVNb3VzZURvd25FdmVudChmYWtlTW91c2VEb3du
KTsKKyAgICAgICAgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoZmFrZU1vdXNlVXApOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Ny
b2xsVXBkYXRlVHlwZTogeworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgc3ludGhldGljV2hl
ZWxFdmVudChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZ2VzdHVyZUV2ZW50Lmdsb2JhbFBvc2l0
aW9uKCksIGdlc3R1cmVFdmVudC5kZWx0YVgoKSwgZ2VzdHVyZUV2ZW50LmRlbHRhWSgpLCBnZXN0
dXJlRXZlbnQuZGVsdGFYKCkgLyAxMjAuMGYsIGdlc3R1cmVFdmVudC5kZWx0YVkoKSAvIDEyMC4w
ZiwgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsIC8qIGlzQWNjZXB0ZWQgKi8gZmFsc2UsIGdlc3R1
cmVFdmVudC5zaGlmdEtleSgpLCBnZXN0dXJlRXZlbnQuY3RybEtleSgpLCBnZXN0dXJlRXZlbnQu
YWx0S2V5KCksIGdlc3R1cmVFdmVudC5tZXRhS2V5KCkpOworICAgICAgICBoYW5kbGVXaGVlbEV2
ZW50KHN5bnRoZXRpY1doZWVsRXZlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgY2FzZSBQbGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlOgorICAgIGNhc2Ug
UGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9sbEVuZFR5cGU6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBQb3B1cENvbnRhaW5lcjo6
aGFuZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwpAQCAtNzU0LDYgKzgwMiwyMCBAQCBib29sIFBvcHVwTGlzdEJveDo6
aXNJbnRlcmVzdGVkSW5FdmVudEZvcktleShpbnQga2V5Q29kZSkKICAgICB9CiB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorYm9vbCBQb3B1cExpc3RCb3g6OmhhbmRsZVRvdWNoRXZlbnQo
Y29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5k
aWYKKworI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCitib29sIFBvcHVwTGlzdEJveDo6
aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JikKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgaXNDaGFyYWN0ZXJUeXBlRXZl
bnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICAvLyBDaGVjayB3
aGV0aGVyIHRoZSBldmVudCBpcyBhIGNoYXJhY3Rlci10eXBlZCBldmVudCBvciBub3QuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0u
aAppbmRleCA2ZmZhOTdiMWIzYTNiMDM3MmI4NzJkZDk5ZDM4ZGJiZmZjZjg5NDM4Li44MmQ4Nzli
ZGYwNWUzOTYzZDgzODgyYzdjN2JhYzA5ZTk2OTk1NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmgKQEAgLTEyMiw2ICsx
MjIsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIp
CisgICAgdmlydHVhbCBib29sIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYpOworI2VuZGlmCiAKICAgICAvLyBQb3B1cENvbnRhaW5lciBtZXRob2RzCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQppbmRl
eCA4NWIwZjdjYjdhMDJjZmUyN2QwZmI3YzA1Njk5MTdmODIxMTllZjQ1Li44ZWE2NTNiMmE4YWMx
MmRkNzMwMzM4N2RkMWI0M2M5ZDVjNDlhZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCkBAIC04NTksNyArODU5LDcgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXYKIHsKICAgICBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsQmVnaW5UeXBlKQogICAgICAgICBiZWdpblNjcm9sbEdl
c3R1cmUoKTsKLSAgICBlbHNlCisgICAgZWxzZSBpZiAoZ2VzdHVyZUV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUdlc3R1cmVFdmVudDo6U2Nyb2xsRW5kVHlwZSkKICAgICAgICAgZW5kU2Nyb2xsR2Vz
dHVyZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDcwM2RlMDZiYjE0MGYy
NGI0ODM4MjBhNjNkZjI2MTViYjUzMTllODYuLjdkZWEzZDZjYTY0ZGRlYjI0ZGUyN2I5ZWY3YTEz
MjRkMTE0NDkzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMDgtMDIgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gTGF5ZXJpbmcgdmlvbGF0aW9ucyBpbiBnZXN0dXJlIHJlY29nbml6
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MDQ0
CisKKyAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBn
ZXN0dXJlIHJlY29nbml0aW9uIGhpZ2hlciB1cCB0aGUgZXZlbnQgZGVsaXZlcnkgY29kZQorICAg
ICAgICBwYXRoIHNvIHRoYXQgcmVjb2duaXRpb24gb2YgZ2VzdHVyZXMgaXMgY29tcGxldGVseSBz
ZXBhcmF0ZWQKKyAgICAgICAgZnJvbSBnZXN0dXJlIGhhbmRsaW5nLgorCisgICAgICAgICogZmVh
dHVyZXMuZ3lwaToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVJbXBsOjpjcmVhdGVGcmFtZVZpZXcpOgorICAgICAgICBBZGRlZCBjb2Rl
IHRvIHJlc2V0IHRoZSBnZXN0dXJlIHJlY29nbml6ZXIgdG8gcHJlc2VydmUgcGFyYWxsZWwKKyAg
ICAgICAgbGF5b3V0IHRlc3QgZXhlY3V0aW9uLgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJ
bXBsLmNwcDoKKyAgICAgICAgU3VwcG9ydCBkaXNwYXRjaGluZyB0b3VjaCBhbmQgZ2VzdHVyZSBl
dmVudHMgdG8gUG9wdXBzLgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpXZWJQ
b3B1cE1lbnVJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6VG91Y2hF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OmhhbmRsZUlucHV0RXZl
bnQpOgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBs
KToKKyAgICAgICAgQWRkZWQgZ2VzdHVyZSByZWNvZ25pdGlvbiBjcmVhdGlvbi4KKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICBBZGRlZCByZWNvZ25p
dGlvbiBvZiBnZXN0dXJlcyBhbmQgZGlzcGF0Y2ggb2YgZ2VzdHVyZSBldmVudHMuCisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXNldEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAg
KiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMS0wOC0wMiAgTmF0IER1Y2EgIDxuZHVjYUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgcmVzaXplT25zY3JlZW5Db250
ZW50IGZyb20gTFJDLiBJdCBjYW4gYmUgZGVyaXZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVy
ZXMuZ3lwaQppbmRleCA5NmY3Y2QzOGYzOGQ0MGM2ZDRlNTIwYjNjMWVjYmQwMGM2YjczNTRmLi5i
NmQ4MzY0Mzc0ZDQ1Y2NlYmNlYjk0ZDIyMDllMGE2OGQ3ZDQ2OTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9mZWF0dXJlcy5neXBpCkBAIC01MCw2ICs1MCw3IEBACiAgICAgICAnRU5BQkxFX0ZJTEVf
U1lTVEVNPTEnLAogICAgICAgJ0VOQUJMRV9GSUxURVJTPTEnLAogICAgICAgJ0VOQUJMRV9HRU9M
T0NBVElPTj0xJywKKyAgICAgICdFTkFCTEVfR0VTVFVSRV9FVkVOVFM9MScsCiAgICAgICAnRU5B
QkxFX0dFU1RVUkVfUkVDT0dOSVpFUj0xJywKICAgICAgICdFTkFCTEVfSUNPTkRBVEFCQVNFPTAn
LAogICAgICAgJ0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggNTY0MmEyODdmZmE3MTlkM2M0NDc3YTI2
ZmVhYWFkNmE1Yzg5ZGU0Ni4uNDQ4ZjQ5YWI1OWZiYTVlYWZkY2M0NzEwOWZjNjRkZDVhZGMxMDQ2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0x
OTg4LDYgKzE5ODgsMTAgQEAgdm9pZCBXZWJGcmFtZUltcGw6OmNyZWF0ZUZyYW1lVmlldygpCiAK
ICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIHZpZXctPnNldFBhcmVudFZpc2libGUodHJ1
ZSk7CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHdlYlZpZXctPnJlc2V0
R2VzdHVyZVJlY29nbml6ZXIoKTsKKyNlbmRpZgogfQogCiBXZWJGcmFtZUltcGwqIFdlYkZyYW1l
SW1wbDo6ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKaW5kZXggNjJkY2Q2MzMxODQxYjQ5YmU1MmI1MmJh
NmI1YjdmMTgwYzc2NGNjMy4uZmFhMTAwNmUzZDVkMzZiZjQ5MWVmYzI2M2JlMjFkYWRkOTZiYTdm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5j
cHAKQEAgLTUyLDYgKzUyLDExIEBACiAKICNpbmNsdWRlIDxza2lhL2V4dC9wbGF0Zm9ybV9jYW52
YXMuaD4KIAorI2lmIEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiUGxhdGZv
cm1HZXN0dXJlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVSZWNvZ25pemVyLmgi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNjksNiArNzQsOSBAQCBXZWJQb3B1cE1lbnUqIFdlYlBvcHVwTWVudTo6Y3JlYXRlKFdl
YldpZGdldENsaWVudCogY2xpZW50KQogV2ViUG9wdXBNZW51SW1wbDo6V2ViUG9wdXBNZW51SW1w
bChXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAs
IG1fd2lkZ2V0KDApCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICAsIG1fZ2Vz
dHVyZVJlY29nbml6ZXIoV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2duaXplcjo6Y3JlYXRl
KCkpCisjZW5kaWYKIHsKICAgICAvLyBzZXQgdG8gaW1wb3NzaWJsZSBwb2ludCBzbyB3ZSBhbHdh
eXMgZ2V0IHRoZSBmaXJzdCBtb3VzZSBwb3MKICAgICBtX2xhc3RNb3VzZVBvc2l0aW9uID0gV2Vi
UG9pbnQoLTEsIC0xKTsKQEAgLTEyNSw2ICsxMzMsMjEgQEAgdm9pZCBXZWJQb3B1cE1lbnVJbXBs
OjpNb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgbV93aWRn
ZXQtPmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcihtX3dpZGdldCwg
ZXZlbnQpKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitib29sIFdlYlBvcHVwTWVu
dUltcGw6OlRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgZXZlbnQpCit7CisKKyAgICBQ
bGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHRvdWNoRXZlbnRCdWlsZGVyKG1fd2lkZ2V0LCBldmVu
dCk7CisgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKG1fd2lkZ2V0LT5oYW5kbGVUb3VjaEV2ZW50
KHRvdWNoRXZlbnRCdWlsZGVyKSk7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAg
ICBPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVF
dmVudHMobV9nZXN0dXJlUmVjb2duaXplci0+cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0
b3VjaEV2ZW50QnVpbGRlciwgZGVmYXVsdFByZXZlbnRlZCkpOworICAgIGZvciAodW5zaWduZWQg
aW50ICBpID0gMDsgaSA8IGdlc3R1cmVFdmVudHMtPnNpemUoKTsgaSsrKQorICAgICAgICBtX3dp
ZGdldC0+aGFuZGxlR2VzdHVyZUV2ZW50KCgqZ2VzdHVyZUV2ZW50cylbaV0pOworI2VuZGlmCisg
ICAgcmV0dXJuIGRlZmF1bHRQcmV2ZW50ZWQ7Cit9CisjZW5kaWYKKwogYm9vbCBXZWJQb3B1cE1l
bnVJbXBsOjpLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBy
ZXR1cm4gbV93aWRnZXQtPmhhbmRsZUtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudEJ1aWxk
ZXIoZXZlbnQpKTsKQEAgLTIzNyw4ICsyNjAsMTYgQEAgYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpo
YW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpDaGFyOgogICAgICAgICByZXR1cm4gS2V5RXZlbnQoKnN0YXRpY19j
YXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaFN0YXJ0Ogor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hNb3ZlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNlbDoKKyAgICAg
ICAgcmV0dXJuIFRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQqPigm
aW5wdXRFdmVudCkpOworCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQ6CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUVudGVyOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
Q29udGV4dE1lbnU6CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBN
ZW51SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5o
CmluZGV4IDgwZTQ2NWU5NTk1ZmE0NTUyOTgxM2M4ZmU5NGUyMTFkMjc5OWQ3ODUuLjVkZDE4YmU4
N2U1NjQwOWI3ODgxOTRhZmI5Mzc0NTI3ZTg4NDMzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlNp
emUuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDMsOSBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lbGVzc1Njcm9sbFZpZXc7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3Mg
UGFnZTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQorY2xhc3MgUGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcjsKKyNlbmRpZgogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xh
c3MgUmFuZ2U7CiBjbGFzcyBXaWRnZXQ7CkBAIC01Myw2ICs1Nyw3IEBAIGNsYXNzIFdlYk1vdXNl
RXZlbnQ7CiBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJSYW5nZTsKIHN0cnVj
dCBXZWJSZWN0OworY2xhc3MgV2ViVG91Y2hFdmVudDsKIAogY2xhc3MgV2ViUG9wdXBNZW51SW1w
bCA6IHB1YmxpYyBXZWJQb3B1cE1lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFdlYkNvcmU6OkZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQsCkBAIC05OSw2ICsxMDQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBNb3VzZVVwKGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICB2b2lk
IE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VX
aGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmKTsKKyAgICBib29sIFRvdWNoRXZlbnQoY29u
c3QgV2ViVG91Y2hFdmVudCYpOwogICAgIGJvb2wgS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYpOwogCiAgICBwcm90ZWN0ZWQ6CkBAIC0xMzYsNiArMTQyLDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGlzIGEgbm9uLW93bmluZyByZWYuICBUaGUgcG9wdXAgd2lsbCBub3RpZnkgdXMg
dmlhIHBvcHVwQ2xvc2VkKCkKICAgICAvLyBiZWZvcmUgaXQgaXMgZGVzdHJveWVkLgogICAgIFdl
YkNvcmU6OkZyYW1lbGVzc1Njcm9sbFZpZXcqIG1fd2lkZ2V0OworCisjaWYgRU5BQkxFKEdFU1RV
UkVfUkVDT0dOSVpFUikKKyAgICBPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlUmVjb2du
aXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
ZmI4NzE5YjViYzkzYWIxZjczYmYwNWM0YjE1YTI5M2JlMjkwN2RhMy4uODkwMTY2NTc5NjU0YjBl
NzEyYzFjYjY1OWJlMGYxNTQwZjE0ZDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMTMxLDYgKzEzMSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaWYgRU5BQkxFKEdFU1RVUkVf
RVZFTlRTKQorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKworI2lm
IEVOQUJMRShHRVNUVVJFX1JFQ09HTklaRVIpCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0dXJlUmVj
b2duaXplci5oIgorI2VuZGlmCisKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NHQml0bWFwQ29udGV4dC5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4K
QEAgLTM0Miw2ICszNTAsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVu
dCogY2xpZW50KQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHko
YWRvcHRQdHIobmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50
LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIDogMCkpKQogICAgICwgbV9nZW9sb2NhdGlvbkNs
aWVudFByb3h5KGFkb3B0UHRyKG5ldyBHZW9sb2NhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNs
aWVudC0+Z2VvbG9jYXRpb25DbGllbnQoKSA6IDApKSkKKyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNP
R05JWkVSKQorICAgICwgbV9nZXN0dXJlUmVjb2duaXplcihXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1
cmVSZWNvZ25pemVyOjpjcmVhdGUoKSkKKyNlbmRpZgogewogICAgIC8vIFdlYktpdC93aW4vV2Vi
Vmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAv
LyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2
ZSB0aHJlYWRpbmcKQEAgLTc1OSw3ICs3NzAsMTUgQEAgYm9vbCBXZWJWaWV3SW1wbDo6dG91Y2hF
dmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50QnVpbGRlcihtYWluRnJh
bWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAgcmV0dXJuIG1haW5GcmFtZUltcGwo
KS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1
aWxkZXIpOworICAgIGJvb2wgZGVmYXVsdFByZXZlbnRlZCA9IG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1aWxkZXIp
OworCisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBPd25QdHI8VmVjdG9yPFdl
YkNvcmU6OlBsYXRmb3JtR2VzdHVyZUV2ZW50PiA+IGdlc3R1cmVFdmVudHMobV9nZXN0dXJlUmVj
b2duaXplci0+cHJvY2Vzc1RvdWNoRXZlbnRGb3JHZXN0dXJlcyh0b3VjaEV2ZW50QnVpbGRlciwg
ZGVmYXVsdFByZXZlbnRlZCkpOworICAgIGZvciAodW5zaWduZWQgaW50ICBpID0gMDsgaSA8IGdl
c3R1cmVFdmVudHMtPnNpemUoKTsgaSsrKQorICAgICAgICBtYWluRnJhbWVJbXBsKCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVHZXN0dXJlRXZlbnQoZ2VzdHVyZUV2ZW50cy0+YXQo
aSkpOworI2VuZGlmCisKKyAgICByZXR1cm4gZGVmYXVsdFByZXZlbnRlZDsKIH0KICNlbmRpZgog
CkBAIC0yNjcwLDQgKzI2ODksMTIgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0VmlzaWJpbGl0eVN0
YXRlKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlLAogI2VuZGlmCiB9CiAK
KyNpZiBFTkFCTEUoR0VTVFVSRV9SRUNPR05JWkVSKQordm9pZCBXZWJWaWV3SW1wbDo6cmVzZXRH
ZXN0dXJlUmVjb2duaXplcigpCit7CisgICAgbV9nZXN0dXJlUmVjb2duaXplci0+cmVzZXQoKTsK
K30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZDZlNTdjNzI3MjQxNmFiNmFkYzg5Y2M1ZDAzYzc1
ZThjN2IxYWNmMy4uNDQ4YWVjN2EwODYyODM0ZTFkNTI0ZWIyMTJkYjQwYjUxYjNlMDRmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC02Nyw2ICs2Nyw5IEBA
IGNsYXNzIFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIFJhbmdlOwogY2xhc3MgUmVuZGVyVGhlbWU7
CiBjbGFzcyBXaWRnZXQ7CisjaWYgRU5BQkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKK2NsYXNzIFBs
YXRmb3JtR2VzdHVyZVJlY29nbml6ZXI7CisjZW5kaWYKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0zODUsNiArMzg4LDEwIEBAIHB1YmxpYzoKICAgICAvLyBhIHBsdWdpbiBjYW4gdXBkYXRl
IGl0cyBvd24gem9vbSwgc2F5IGJlY2F1c2Ugb2YgaXRzIG93biBVSS4KICAgICB2b2lkIGZ1bGxG
cmFtZVBsdWdpblpvb21MZXZlbENoYW5nZWQoZG91YmxlIHpvb21MZXZlbCk7CiAKKyNpZiBFTkFC
TEUoR0VTVFVSRV9SRUNPR05JWkVSKQorICAgIHZvaWQgcmVzZXRHZXN0dXJlUmVjb2duaXplcigp
OworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlZpZXc7ICAvLyBTbyBX
ZWJWaWV3OjpDcmVhdGUgY2FuIGNhbGwgb3VyIGNvbnN0cnVjdG9yCiAgICAgZnJpZW5kIGNsYXNz
IFdURjo6UmVmQ291bnRlZDxXZWJWaWV3SW1wbD47CkBAIC01NjUsNiArNTcyLDEwIEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBtX3RlbXBvcmFyeU9u
c2NyZWVuR3JhcGhpY3NDb250ZXh0M0Q7CiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xp
ZW50UHJveHk+IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eTsKICAgICBPd25QdHI8R2Vv
bG9jYXRpb25DbGllbnRQcm94eT4gbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5OworCisjaWYgRU5B
QkxFKEdFU1RVUkVfUkVDT0dOSVpFUikKKyAgICBPd25QdHI8V2ViQ29yZTo6UGxhdGZvcm1HZXN0
dXJlUmVjb2duaXplcj4gbV9nZXN0dXJlUmVjb2duaXplcjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>